4
4
5
5
namespace Bolt \Redactor ;
6
6
7
+ use Bolt \Configuration \Config ;
8
+ use Bolt \Entity \Content ;
7
9
use Bolt \Extension \ExtensionRegistry ;
10
+ use Bolt \Storage \Query ;
8
11
use Symfony \Component \Routing \Generator \UrlGeneratorInterface ;
9
12
use Symfony \Component \Security \Csrf \CsrfTokenManagerInterface ;
10
13
@@ -19,18 +22,31 @@ class RedactorConfig
19
22
/** @var CsrfTokenManagerInterface */
20
23
private $ csrfTokenManager ;
21
24
22
- public function __construct (ExtensionRegistry $ registry , UrlGeneratorInterface $ urlGenerator , CsrfTokenManagerInterface $ csrfTokenManager )
23
- {
25
+ /** @var Config */
26
+ private $ boltConfig ;
27
+
28
+ /** @var Query */
29
+ private $ query ;
30
+
31
+ public function __construct (
32
+ ExtensionRegistry $ registry ,
33
+ UrlGeneratorInterface $ urlGenerator ,
34
+ CsrfTokenManagerInterface $ csrfTokenManager ,
35
+ Config $ boltConfig ,
36
+ Query $ query
37
+ ) {
24
38
$ this ->registry = $ registry ;
25
39
$ this ->urlGenerator = $ urlGenerator ;
26
40
$ this ->csrfTokenManager = $ csrfTokenManager ;
41
+ $ this ->boltConfig = $ boltConfig ;
42
+ $ this ->query = $ query ;
27
43
}
28
44
29
45
public function getConfig (): array
30
46
{
31
47
$ extension = $ this ->registry ->getExtension (Extension::class);
32
48
33
- return array_merge ($ this ->getDefaults (), $ extension ->getConfig ()['default ' ]);
49
+ return array_merge ($ this ->getDefaults (), $ extension ->getConfig ()['default ' ], $ this -> getLinks () );
34
50
}
35
51
36
52
public function getPlugins (): array
@@ -96,4 +112,40 @@ public function getDefaultPlugins()
96
112
'widget ' => ['widget/widget.min.js ' ],
97
113
];
98
114
}
115
+
116
+ private function getLinks (): array
117
+ {
118
+ $ amount = 100 ;
119
+ $ params = [
120
+ 'status ' => 'published ' ,
121
+ 'returnmultiple ' => true ,
122
+ 'order ' => '-modifiedAt ' ,
123
+ ];
124
+ $ contentTypes = $ this ->boltConfig ->get ('contenttypes ' )->where ('viewless ' , false )->keys ()->implode (', ' );
125
+
126
+ $ records = $ this ->query ->getContentForTwig ($ contentTypes , $ params )->setMaxPerPage ($ amount );
127
+
128
+ $ links = [
129
+ '___ ' => [
130
+ 'name ' => '(Choose an existing Record) ' ,
131
+ 'url ' => '' ,
132
+ ],
133
+ ];
134
+
135
+ /** @var Content $record */
136
+ foreach ($ records as $ record ) {
137
+ $ extras = $ record ->getExtras ();
138
+
139
+ $ links [$ extras ['title ' ]] = [
140
+ 'name ' => sprintf ('%s [%s № %s] ' , $ extras ['title ' ], $ extras ['name ' ], $ record ->getId ()),
141
+ 'url ' => $ extras ['link ' ],
142
+ ];
143
+ }
144
+
145
+ ksort ($ links , SORT_STRING | SORT_FLAG_CASE );
146
+
147
+ return [
148
+ 'definedlinks ' => array_values ($ links ),
149
+ ];
150
+ }
99
151
}
0 commit comments