| @@ -54,9 +54,9 @@ | ||
| 54 | 54 | VikBooking::loadFontAwesome(true); |
| 55 | 55 | |
| 56 | 56 | $document->addStyleSheet(VIKBOOKING_ADMIN_ASSETS_URI . 'vikbooking.css', $internalFilesOptions, array('id' => 'vbo-style')); |
| 57 | 57 | $document->addStyleSheet(VIKBOOKING_ADMIN_ASSETS_URI . 'fonts/vboicomoon.css', $internalFilesOptions, array('id' => 'vbo-icomoon-style')); |
| 58 | - $document->addStyleSheet(VIKBOOKING_ADMIN_ASSETS_URI . 'vikbooking_backendcustom.css', $internalFilesOptions, array('id' => 'vbo-custom-style')); | |
| 58 | + $document->addStyleSheet(VIKBOOKING_ADMIN_ASSETS_URI . 'vikbooking_backendcustom.css', array('version' => filemtime(JPath::clean(VBO_ADMIN_PATH . '/resources/vikbooking_backendcustom.css'))), array('id' => 'vbo-custom-style')); | |
| 59 | 59 | |
| 60 | 60 | VikBooking::getVboApplication()->normalizeBackendStyles(); |
| 61 | 61 | |
| 62 | 62 | $document->addStyleSheet(VIKBOOKING_ADMIN_ASSETS_URI . 'css/system.css', $internalFilesOptions, array('id' => 'vbo-sys-style')); |
| @@ -72,15 +72,8 @@ | ||
| 72 | 72 | */ |
| 73 | 73 | $document->addScript(VIKBOOKING_ADMIN_ASSETS_URI . 'vbocore.js', $internalFilesOptions, array('id' => 'vbo-core-script')); |
| 74 | 74 | |
| 75 | 75 | /** |
| 76 | - * Always prepare AJAX requests to pass a CSRF token. | |
| 77 | - * | |
| 78 | - * @since 1.6.0 | |
| 79 | - */ | |
| 80 | - JHtml::fetch('vbohtml.scripts.ajaxcsrf'); | |
| 81 | - | |
| 82 | - /** | |
| 83 | 76 | * Include the Toast JS class. |
| 84 | 77 | * |
| 85 | 78 | * @since 1.5.0 |
| 86 | 79 | */ |
| @@ -115,8 +108,15 @@ | ||
| 115 | 108 | * |
| 116 | 109 | * @since 1.5.0 |
| 117 | 110 | */ |
| 118 | 111 | VikBooking::loadAppearancePreferenceAssets(); |
| 112 | + | |
| 113 | + /** | |
| 114 | + * Load the Web App Manifest JSON file. | |
| 115 | + * | |
| 116 | + * @since 1.6.5 | |
| 117 | + */ | |
| 118 | + VBOWebappManifest::load(); | |
| 119 | 119 | } |
| 120 | 120 | else |
| 121 | 121 | { |
| 122 | 122 | if (VikBooking::loadBootstrap()) |
| @@ -137,8 +137,15 @@ | ||
| 137 | 137 | VikBooking::loadAppearancePreferenceAssets(); |
| 138 | 138 | |
| 139 | 139 | $document->addStyleSheet(VIKBOOKING_SITE_ASSETS_URI.'vikbooking_custom.css', $internalFilesOptions, array('id' => 'vbo-custom-style')); |
| 140 | 140 | } |
| 141 | + | |
| 142 | + /** | |
| 143 | + * Always prepare AJAX requests to pass a CSRF token. | |
| 144 | + * | |
| 145 | + * @since 1.6.0 | |
| 146 | + */ | |
| 147 | + JHtml::fetch('vbohtml.scripts.ajaxcsrf'); | |
| 141 | 148 | } |
| 142 | 149 | |
| 143 | 150 | /** |
| 144 | 151 | * This method should be called only within the wp-admin section when |
| @@ -174,19 +181,26 @@ | ||
| 174 | 181 | * @since 1.6.0 |
| 175 | 182 | */ |
| 176 | 183 | JHtml::fetch('vbohtml.scripts.ajaxcsrf'); |
| 177 | 184 | |
| 178 | - // build AJAX uri endpoints | |
| 185 | + // build AJAX uri endpoints and CMS | |
| 179 | 186 | $widget_ajax_uri = VikBooking::ajaxUrl('index.php?option=com_vikbooking&task=exec_admin_widget'); |
| 180 | 187 | $assets_ajax_uri = VikBooking::ajaxUrl('index.php?option=com_vikbooking&task=widgets_get_assets'); |
| 181 | 188 | $multitask_ajax_uri = VikBooking::ajaxUrl('index.php?option=com_vikbooking&task=exec_multitask_widgets'); |
| 182 | 189 | $watchdata_ajax_uri = VikBooking::ajaxUrl('index.php?option=com_vikbooking&task=widgets_watch_data'); |
| 183 | 190 | $current_page_uri = htmlspecialchars((string) JUri::getInstance(), ENT_QUOTES); |
| 191 | + $root_uri = htmlspecialchars(JUri::root(), ENT_QUOTES); | |
| 192 | + $current_cms = VBOPlatformDetection::isWordPress() ? 'wordpress' : 'joomla'; | |
| 184 | 193 | |
| 185 | 194 | // check if the notification audio file exists within VCM |
| 186 | 195 | $notif_audio_path = implode(DIRECTORY_SEPARATOR, [VCM_ADMIN_PATH, 'assets', 'css', 'audio', 'new_notification.mp3']); |
| 187 | 196 | $notif_audio_url = is_file($notif_audio_path) ? (VCM_ADMIN_URI . implode('/', ['assets', 'css', 'audio', 'new_notification.mp3'])) : null; |
| 188 | 197 | |
| 198 | + // service worker and push data | |
| 199 | + $service_worker_path = VBOWebappServiceworker::getUri(); | |
| 200 | + $service_worker_scope = VBOWebappServiceworker::getScope(); | |
| 201 | + $push_config = json_encode(VBOWebappPush::getConfig()); | |
| 202 | + | |
| 189 | 203 | // add the necessary script declaration |
| 190 | 204 | $document->addScriptDeclaration( |
| 191 | 205 | <<<JS |
| 192 | 206 | (function($) { |
| @@ -196,16 +210,23 @@ | ||
| 196 | 210 | |
| 197 | 211 | VBOToast.create(VBOToast.POSITION_TOP_RIGHT); |
| 198 | 212 | |
| 199 | 213 | VBOCore.setOptions({ |
| 200 | - widget_ajax_uri: "$widget_ajax_uri", | |
| 201 | - assets_ajax_uri: "$assets_ajax_uri", | |
| 202 | - multitask_ajax_uri: "$multitask_ajax_uri", | |
| 203 | - watchdata_ajax_uri: "$watchdata_ajax_uri", | |
| 204 | - current_page: "wp-admin", | |
| 205 | - current_page_uri: "$current_page_uri", | |
| 206 | - notif_audio_url: "$notif_audio_url", | |
| 214 | + cms: "$current_cms", | |
| 215 | + widget_ajax_uri: "$widget_ajax_uri", | |
| 216 | + assets_ajax_uri: "$assets_ajax_uri", | |
| 217 | + multitask_ajax_uri: "$multitask_ajax_uri", | |
| 218 | + watchdata_ajax_uri: "$watchdata_ajax_uri", | |
| 219 | + current_page: "wp-admin", | |
| 220 | + current_page_uri: "$current_page_uri", | |
| 221 | + root_uri: "$root_uri", | |
| 222 | + notif_audio_url: "$notif_audio_url", | |
| 223 | + service_worker_path: "{$service_worker_path}", | |
| 224 | + service_worker_scope: "{$service_worker_scope}", | |
| 225 | + push: $push_config, | |
| 207 | 226 | }); |
| 227 | + | |
| 228 | + VBOCore.listenServiceWorkerMessages(); | |
| 208 | 229 | |
| 209 | 230 | }); |
| 210 | 231 | })(jQuery); |
| 211 | 232 | JS |