5 * Advanced aggregation js cdn module.
9 * Implements hook_advagg_current_hooks_hash_array_alter().
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();
16 * Implements hook_js_alter().
18 function advagg_cdn_js_alter(&$javascript) {
20 $cdn_settings = \Drupal::config('advagg_cdn.settings');
21 $cdn = $cdn_settings->get('cdn');
22 $min = $cdn_settings->get('minified') ? '.min' : '';
24 // If AdvAgg in development mode don't serve minified JS.
25 if (\Drupal::config('advagg.settings')->get('cache_level') < 0) {
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',
36 'require' => 'window.jQuery',
39 if ($cdn_settings->get('jquery_ui_js')) {
40 $path = $cdn_settings->get('jquery_ui_version') . '/jquery-ui' . $min . '.js';
42 'core/assets/vendor/jquery.ui/ui/core-min.js' => [
43 'require' => 'window.jQuery.ui',
45 'google' => 'https://ajax.googleapis.com/ajax/libs/jqueryui/' . $path,
46 'microsoft' => 'https://ajax.aspnetcdn.com/ajax/jquery.ui/' . $path,
48 'core/assets/vendor/jquery.ui/ui/effect-blind-min.js' => [
50 'require' => 'window.jQuery.ui',
52 'core/assets/vendor/jquery.ui/ui/effect-bounce-min.js' => [
54 'require' => 'window.jQuery.ui',
56 'core/assets/vendor/jquery.ui/ui/effect-clip-min.js' => [
58 'require' => 'window.jQuery.ui',
60 'core/assets/vendor/jquery.ui/ui/effect-min.js' => [
62 'require' => 'window.jQuery.ui',
64 'core/assets/vendor/jquery.ui/ui/effect-drop-min.js' => [
66 'require' => 'window.jQuery.ui',
68 'core/assets/vendor/jquery.ui/ui/effect-explode-min.js' => [
70 'require' => 'window.jQuery.ui',
72 'core/assets/vendor/jquery.ui/ui/effect-fade-min.js' => [
74 'require' => 'window.jQuery.ui',
76 'core/assets/vendor/jquery.ui/ui/effect-fold-min.js' => [
78 'require' => 'window.jQuery.ui',
80 'core/assets/vendor/jquery.ui/ui/effect-highlight-min.js' => [
82 'require' => 'window.jQuery.ui',
84 'core/assets/vendor/jquery.ui/ui/effect-puff-min.js' => [
86 'require' => 'window.jQuery.ui',
88 'core/assets/vendor/jquery.ui/ui/effect-pulsate-min.js' => [
90 'require' => 'window.jQuery.ui',
92 'core/assets/vendor/jquery.ui/ui/effect-scale-min.js' => [
94 'require' => 'window.jQuery.ui',
96 'core/assets/vendor/jquery.ui/ui/effect-shake-min.js' => [
98 'require' => 'window.jQuery.ui',
100 'core/assets/vendor/jquery.ui/ui/effect-size-min.js' => [
102 'require' => 'window.jQuery.ui',
104 'core/assets/vendor/jquery.ui/ui/effect-slide-min.js' => [
106 'require' => 'window.jQuery.ui',
108 'core/assets/vendor/jquery.ui/ui/effect-transfer-min.js' => [
110 'require' => 'window.jQuery.ui',
112 'core/assets/vendor/jquery.ui/ui/accordion-min.js' => [
114 'require' => 'window.jQuery.ui',
116 'core/assets/vendor/jquery.ui/ui/autocomplete-min.js' => [
118 'require' => 'window.jQuery.ui',
120 'core/assets/vendor/jquery.ui/ui/button-min.js' => [
122 'require' => 'window.jQuery.ui',
124 'core/assets/vendor/jquery.ui/ui/datepicker-min.js' => [
126 'require' => 'window.jQuery.ui',
128 'core/assets/vendor/jquery.ui/ui/dialog-min.js' => [
130 'require' => 'window.jQuery.ui',
132 'core/assets/vendor/jquery.ui/ui/draggable-min.js' => [
134 'require' => 'window.jQuery.ui',
136 'core/assets/vendor/jquery.ui/ui/droppable-min.js' => [
138 'require' => 'window.jQuery.ui',
140 'core/assets/vendor/jquery.ui/ui/menu-min.js' => [
142 'require' => 'window.jQuery.ui',
144 'core/assets/vendor/jquery.ui/ui/mouse-min.js' => [
146 'require' => 'window.jQuery.ui',
148 'core/assets/vendor/jquery.ui/ui/position-min.js' => [
150 'require' => 'window.jQuery.ui',
152 'core/assets/vendor/jquery.ui/ui/progressbar-min.js' => [
154 'require' => 'window.jQuery.ui',
156 'core/assets/vendor/jquery.ui/ui/resizable-min.js' => [
158 'require' => 'window.jQuery.ui',
160 'core/assets/vendor/jquery.ui/ui/selectable-min.js' => [
162 'require' => 'window.jQuery.ui',
164 'core/assets/vendor/jquery.ui/ui/selectmenu-min.js' => [
166 'require' => 'window.jQuery.ui',
168 'core/assets/vendor/jquery.ui/ui/slider-min.js' => [
170 'require' => 'window.jQuery.ui',
172 'core/assets/vendor/jquery.ui/ui/sortable-min.js' => [
174 'require' => 'window.jQuery.ui',
176 'core/assets/vendor/jquery.ui/ui/spinner-min.js' => [
178 'require' => 'window.jQuery.ui',
180 'core/assets/vendor/jquery.ui/ui/tabs-min.js' => [
182 'require' => 'window.jQuery.ui',
184 'core/assets/vendor/jquery.ui/ui/tooltip-min.js' => [
186 'require' => 'window.jQuery.ui',
188 'core/assets/vendor/jquery.ui/ui/widget-min.js' => [
190 'require' => 'window.jQuery.ui',
194 foreach ($targets as $name => $values) {
195 if (isset($javascript[$name])) {
196 if (isset($values['unset'])) {
197 unset($javascript[$name]);
199 elseif (isset($values[$cdn])) {
200 $javascript[$name]['data'] = $values[$cdn];
201 $javascript[$name]['type'] = $values['type'];
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'] = [
209 'type' => 'external',
211 'data' => $targets['core/assets/vendor/jquery.ui/ui/core-min.js'][$cdn],
219 * Implements hook_css_alter().
221 function advagg_cdn_css_alter(&$css) {
223 $cdn_settings = \Drupal::config('advagg_cdn.settings');
224 $cdn = $cdn_settings->get('cdn');
225 $min = $cdn_settings->get('minified') ? '.min' : '';
227 // If AdvAgg in development mode don't serve minified CSS.
228 if (\Drupal::config('advagg.settings')->get('cache_level') < 0) {
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';
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',
241 'core/assets/vendor/jquery.ui/themes/base/theme.css' => [
244 'core/assets/vendor/jquery.ui/themes/base/accordion.css' => [
247 'core/assets/vendor/jquery.ui/themes/base/autocomplete.css' => [
250 'core/assets/vendor/jquery.ui/themes/base/button.css' => [
253 'core/assets/vendor/jquery.ui/themes/base/datepicker.css' => [
256 'core/assets/vendor/jquery.ui/themes/base/dialog.css' => [
259 'core/assets/vendor/jquery.ui/themes/base/menu.css' => [
262 'core/assets/vendor/jquery.ui/themes/base/progressbar.css' => [
265 'core/assets/vendor/jquery.ui/themes/base/resizable.css' => [
268 'core/assets/vendor/jquery.ui/themes/base/selectable.css' => [
271 'core/assets/vendor/jquery.ui/themes/base/selectmenu.css' => [
274 'core/assets/vendor/jquery.ui/themes/base/slider.css' => [
277 'core/assets/vendor/jquery.ui/themes/base/spinner.css' => [
280 'core/assets/vendor/jquery.ui/themes/base/tabs.css' => [
283 'core/assets/vendor/jquery.ui/themes/base/tooltip.css' => [
289 foreach ($targets as $name => $values) {
290 if (isset($css[$name])) {
291 if (isset($values['unset'])) {
294 elseif (isset($values[$cdn])) {
295 $css[$name]['data'] = $values[$cdn];
296 $css[$name]['type'] = $values['type'];