Further modules included.
[yaffs-website] / web / modules / contrib / advagg / advagg_cdn / advagg_cdn.module
1 <?php
2
3 /**
4  * @file
5  * Advanced aggregation js cdn module.
6  */
7
8 /**
9  * Implements hook_advagg_current_hooks_hash_array_alter().
10  */
11 function advagg_cdn_minify_advagg_current_hooks_hash_array_alter(&$aggregate_settings) {
12   $aggregate_settings['variables']['advagg_cdn'] = \Drupal::config('advagg_cdn.settings')->get();
13 }
14
15 /**
16  * Implements hook_js_alter().
17  */
18 function advagg_cdn_js_alter(&$javascript) {
19   // Setup variables.
20   $cdn_settings = \Drupal::config('advagg_cdn.settings');
21   $cdn = $cdn_settings->get('cdn');
22   $min = $cdn_settings->get('minified') ? '.min' : '';
23
24   // If AdvAgg in development mode don't serve minified JS.
25   if (\Drupal::config('advagg.settings')->get('cache_level') < 0) {
26     $min = '';
27   }
28
29   $targets = [];
30   if ($cdn_settings->get('jquery')) {
31     $path = 'jquery/' . $cdn_settings->get('jquery_version') . '/jquery' . $min . '.js';
32     $targets['core/assets/vendor/jquery/jquery.min.js'] = [
33       'google' => 'https://ajax.googleapis.com/ajax/libs/' . $path,
34       'microsoft' => 'http://ajax.aspnetcdn.com/ajax/jQuery/jquery-' . $cdn_settings->get('jquery_version') . $min . '.js',
35       'type' => 'external',
36       'require' => 'window.jQuery',
37     ];
38   }
39   if ($cdn_settings->get('jquery_ui_js')) {
40     $path = $cdn_settings->get('jquery_ui_version') . '/jquery-ui' . $min . '.js';
41     $targets += [
42       'core/assets/vendor/jquery.ui/ui/core-min.js' => [
43         'require' => 'window.jQuery.ui',
44         'type' => 'external',
45         'google' => 'https://ajax.googleapis.com/ajax/libs/jqueryui/' . $path,
46         'microsoft' => 'https://ajax.aspnetcdn.com/ajax/jquery.ui/' . $path,
47       ],
48       'core/assets/vendor/jquery.ui/ui/effect-blind-min.js' => [
49         'unset' => TRUE,
50         'require' => 'window.jQuery.ui',
51       ],
52       'core/assets/vendor/jquery.ui/ui/effect-bounce-min.js' => [
53         'unset' => TRUE,
54         'require' => 'window.jQuery.ui',
55       ],
56       'core/assets/vendor/jquery.ui/ui/effect-clip-min.js' => [
57         'unset' => TRUE,
58         'require' => 'window.jQuery.ui',
59       ],
60       'core/assets/vendor/jquery.ui/ui/effect-min.js' => [
61         'unset' => TRUE,
62         'require' => 'window.jQuery.ui',
63       ],
64       'core/assets/vendor/jquery.ui/ui/effect-drop-min.js' => [
65         'unset' => TRUE,
66         'require' => 'window.jQuery.ui',
67       ],
68       'core/assets/vendor/jquery.ui/ui/effect-explode-min.js' => [
69         'unset' => TRUE,
70         'require' => 'window.jQuery.ui',
71       ],
72       'core/assets/vendor/jquery.ui/ui/effect-fade-min.js' => [
73         'unset' => TRUE,
74         'require' => 'window.jQuery.ui',
75       ],
76       'core/assets/vendor/jquery.ui/ui/effect-fold-min.js' => [
77         'unset' => TRUE,
78         'require' => 'window.jQuery.ui',
79       ],
80       'core/assets/vendor/jquery.ui/ui/effect-highlight-min.js' => [
81         'unset' => TRUE,
82         'require' => 'window.jQuery.ui',
83       ],
84       'core/assets/vendor/jquery.ui/ui/effect-puff-min.js' => [
85         'unset' => TRUE,
86         'require' => 'window.jQuery.ui',
87       ],
88       'core/assets/vendor/jquery.ui/ui/effect-pulsate-min.js' => [
89         'unset' => TRUE,
90         'require' => 'window.jQuery.ui',
91       ],
92       'core/assets/vendor/jquery.ui/ui/effect-scale-min.js' => [
93         'unset' => TRUE,
94         'require' => 'window.jQuery.ui',
95       ],
96       'core/assets/vendor/jquery.ui/ui/effect-shake-min.js' => [
97         'unset' => TRUE,
98         'require' => 'window.jQuery.ui',
99       ],
100       'core/assets/vendor/jquery.ui/ui/effect-size-min.js' => [
101         'unset' => TRUE,
102         'require' => 'window.jQuery.ui',
103       ],
104       'core/assets/vendor/jquery.ui/ui/effect-slide-min.js' => [
105         'unset' => TRUE,
106         'require' => 'window.jQuery.ui',
107       ],
108       'core/assets/vendor/jquery.ui/ui/effect-transfer-min.js' => [
109         'unset' => TRUE,
110         'require' => 'window.jQuery.ui',
111       ],
112       'core/assets/vendor/jquery.ui/ui/accordion-min.js' => [
113         'unset' => TRUE,
114         'require' => 'window.jQuery.ui',
115       ],
116       'core/assets/vendor/jquery.ui/ui/autocomplete-min.js' => [
117         'unset' => TRUE,
118         'require' => 'window.jQuery.ui',
119       ],
120       'core/assets/vendor/jquery.ui/ui/button-min.js' => [
121         'unset' => TRUE,
122         'require' => 'window.jQuery.ui',
123       ],
124       'core/assets/vendor/jquery.ui/ui/datepicker-min.js' => [
125         'unset' => TRUE,
126         'require' => 'window.jQuery.ui',
127       ],
128       'core/assets/vendor/jquery.ui/ui/dialog-min.js' => [
129         'unset' => TRUE,
130         'require' => 'window.jQuery.ui',
131       ],
132       'core/assets/vendor/jquery.ui/ui/draggable-min.js' => [
133         'unset' => TRUE,
134         'require' => 'window.jQuery.ui',
135       ],
136       'core/assets/vendor/jquery.ui/ui/droppable-min.js' => [
137         'unset' => TRUE,
138         'require' => 'window.jQuery.ui',
139       ],
140       'core/assets/vendor/jquery.ui/ui/menu-min.js' => [
141         'unset' => TRUE,
142         'require' => 'window.jQuery.ui',
143       ],
144       'core/assets/vendor/jquery.ui/ui/mouse-min.js' => [
145         'unset' => TRUE,
146         'require' => 'window.jQuery.ui',
147       ],
148       'core/assets/vendor/jquery.ui/ui/position-min.js' => [
149         'unset' => TRUE,
150         'require' => 'window.jQuery.ui',
151       ],
152       'core/assets/vendor/jquery.ui/ui/progressbar-min.js' => [
153         'unset' => TRUE,
154         'require' => 'window.jQuery.ui',
155       ],
156       'core/assets/vendor/jquery.ui/ui/resizable-min.js' => [
157         'unset' => TRUE,
158         'require' => 'window.jQuery.ui',
159       ],
160       'core/assets/vendor/jquery.ui/ui/selectable-min.js' => [
161         'unset' => TRUE,
162         'require' => 'window.jQuery.ui',
163       ],
164       'core/assets/vendor/jquery.ui/ui/selectmenu-min.js' => [
165         'unset' => TRUE,
166         'require' => 'window.jQuery.ui',
167       ],
168       'core/assets/vendor/jquery.ui/ui/slider-min.js' => [
169         'unset' => TRUE,
170         'require' => 'window.jQuery.ui',
171       ],
172       'core/assets/vendor/jquery.ui/ui/sortable-min.js' => [
173         'unset' => TRUE,
174         'require' => 'window.jQuery.ui',
175       ],
176       'core/assets/vendor/jquery.ui/ui/spinner-min.js' => [
177         'unset' => TRUE,
178         'require' => 'window.jQuery.ui',
179       ],
180       'core/assets/vendor/jquery.ui/ui/tabs-min.js' => [
181         'unset' => TRUE,
182         'require' => 'window.jQuery.ui',
183       ],
184       'core/assets/vendor/jquery.ui/ui/tooltip-min.js' => [
185         'unset' => TRUE,
186         'require' => 'window.jQuery.ui',
187       ],
188       'core/assets/vendor/jquery.ui/ui/widget-min.js' => [
189         'unset' => TRUE,
190         'require' => 'window.jQuery.ui',
191       ],
192     ];
193   }
194   foreach ($targets as $name => $values) {
195     if (isset($javascript[$name])) {
196       if (isset($values['unset'])) {
197         unset($javascript[$name]);
198       }
199       elseif (isset($values[$cdn])) {
200         $javascript[$name]['data'] = $values[$cdn];
201         $javascript[$name]['type'] = $values['type'];
202       }
203       // Ensure full jQuery.ui is loaded if required since it is merged on CDN.
204       if ($values['require'] == 'window.jQuery.ui' && !isset($javascript['core/assets/vendor/jquery.ui/ui/core-min.js'])) {
205         $javascript['core/assets/vendor/jquery.ui/ui/core-min.js'] = [
206           'minified' => TRUE,
207           'weight' => -19.5,
208           'group' => -100,
209           'type' => 'external',
210           'scope' => 'footer',
211           'data' => $targets['core/assets/vendor/jquery.ui/ui/core-min.js'][$cdn],
212         ];
213       }
214     }
215   }
216 }
217
218 /**
219  * Implements hook_css_alter().
220  */
221 function advagg_cdn_css_alter(&$css) {
222   // Setup variables.
223   $cdn_settings = \Drupal::config('advagg_cdn.settings');
224   $cdn = $cdn_settings->get('cdn');
225   $min = $cdn_settings->get('minified') ? '.min' : '';
226
227   // If AdvAgg in development mode don't serve minified CSS.
228   if (\Drupal::config('advagg.settings')->get('cache_level') < 0) {
229     $min = '';
230   }
231
232   $targets = [];
233   if ($cdn_settings->get('jquery_ui_css')) {
234     $path = $cdn_settings->get('jquery_ui_version') . '/themes/' . $cdn_settings->get('jquery_ui_theme') . '/jquery-ui' . $min . '.css';
235     $targets += [
236       'core/assets/vendor/jquery.ui/themes/base/core.css' => [
237         'google' => 'https://ajax.googleapis.com/ajax/libs/jqueryui/' . $path,
238         'microsoft' => 'https://ajax.aspnetcdn.com/ajax/jquery.ui/' . $path,
239         'type' => 'external',
240       ],
241       'core/assets/vendor/jquery.ui/themes/base/theme.css' => [
242         'unset' => TRUE,
243       ],
244       'core/assets/vendor/jquery.ui/themes/base/accordion.css' => [
245         'unset' => TRUE,
246       ],
247       'core/assets/vendor/jquery.ui/themes/base/autocomplete.css' => [
248         'unset' => TRUE,
249       ],
250       'core/assets/vendor/jquery.ui/themes/base/button.css' => [
251         'unset' => TRUE,
252       ],
253       'core/assets/vendor/jquery.ui/themes/base/datepicker.css' => [
254         'unset' => TRUE,
255       ],
256       'core/assets/vendor/jquery.ui/themes/base/dialog.css' => [
257         'unset' => TRUE,
258       ],
259       'core/assets/vendor/jquery.ui/themes/base/menu.css' => [
260         'unset' => TRUE,
261       ],
262       'core/assets/vendor/jquery.ui/themes/base/progressbar.css' => [
263         'unset' => TRUE,
264       ],
265       'core/assets/vendor/jquery.ui/themes/base/resizable.css' => [
266         'unset' => TRUE,
267       ],
268       'core/assets/vendor/jquery.ui/themes/base/selectable.css' => [
269         'unset' => TRUE,
270       ],
271       'core/assets/vendor/jquery.ui/themes/base/selectmenu.css' => [
272         'unset' => TRUE,
273       ],
274       'core/assets/vendor/jquery.ui/themes/base/slider.css' => [
275         'unset' => TRUE,
276       ],
277       'core/assets/vendor/jquery.ui/themes/base/spinner.css' => [
278         'unset' => TRUE,
279       ],
280       'core/assets/vendor/jquery.ui/themes/base/tabs.css' => [
281         'unset' => TRUE,
282       ],
283       'core/assets/vendor/jquery.ui/themes/base/tooltip.css' => [
284         'unset' => TRUE,
285       ],
286     ];
287   }
288
289   foreach ($targets as $name => $values) {
290     if (isset($css[$name])) {
291       if (isset($values['unset'])) {
292         unset($css[$name]);
293       }
294       elseif (isset($values[$cdn])) {
295         $css[$name]['data'] = $values[$cdn];
296         $css[$name]['type'] = $values['type'];
297       }
298     }
299   }
300 }