PluginProbe
Yatra – Travel Booking & Tour Operator Software / 3.0.16
Yatra – Travel Booking & Tour Operator Software v3.0.16
3.0.16 3.0.15 3.0.14 3.0.14.1 3.0.14.2 3.0.12 3.0.13 3.0.11 3.0.10 3.0.9 3.0.8 3.0.7 3.0.6 3.0.5 3.0.5.1 3.0.4 3.0.3 3.0.2.9 3.0.2.7 3.0.2.8 3.0.2.6 trunk 1.0.0 2.0.0 2.0.1 All 84 releases
← All changes | app/Providers/AdminAssetsProvider.php +32 -1 3.0.7 → 3.0.16 View file →
@@ -63,8 +63,11 @@
63 63 'currentUserAvatar' => get_avatar($current_user->ID, 96),
64 64 'siteUrl' => home_url(),
65 65 'adminUrl' => admin_url('admin.php'),
66 66 'pluginUrl' => YATRA_PLUGIN_URL,
67 + // Public URL of the Yatra sitemap (handles plain vs pretty
68 + // permalinks), shown in the SEO settings tab.
69 + 'sitemapUrl' => \Yatra\Sitemap\SitemapRouter::sitemapUrl(),
67 70 // Brand-name and brand-logo helpers are filter-backed (defaults
68 71 // wired in includes/helpers.php). Pro's WhiteLabel module
69 72 // overrides the filters when Agency white-label is active.
70 73 'brandLogoUrl' => function_exists('yatra_get_brand_icon_url') ? yatra_get_brand_icon_url() : '',
@@ -405,9 +408,17 @@
405 408 // Use built assets in production
406 409 $appJs = YATRA_PLUGIN_PATH . 'assets/admin/dist/js/app.js';
407 410
408 411 if (file_exists($appJs)) {
409 - $jsVersion = YATRA_VERSION . '.' . filemtime($appJs) . '.view-icon-fix.' . time() . '.' . microtime(true);
412 + // Version on the plugin version + the bundle's own mtime. That
413 + // already changes on every update or rebuild, which is exactly
414 + // when the cache must be busted.
415 + //
416 + // This previously appended time() . microtime(true), making the
417 + // URL unique on every single request — so the ~3 MB admin bundle
418 + // was re-downloaded on every admin page view and could never be
419 + // cached by the browser.
420 + $jsVersion = YATRA_VERSION . '.' . filemtime($appJs);
410 421
411 422 $localized_data = $this->buildAdminLocalizedData();
412 423
413 424 // Enqueue our script with media library as dependency
@@ -428,10 +439,30 @@
428 439 $jsVersion,
429 440 true
430 441 );
431 442
443 + // The bundle calls the global wp.i18n.__() (it never ships its
444 + // own copy), and scripts/extract-js-pot.mjs writes every admin
445 + // string's `#:` reference as this bundle's path precisely so
446 + // WordPress's md5(handle src) JSON lookup matches. This call is
447 + // the missing last link: it tells WordPress to load
448 + // i18n/languages/yatra-{locale}-{md5}.json (or the copy under
449 + // WP_LANG_DIR/plugins) for the admin UI. Without it, translated
450 + // admin strings never reach the SPA. Mirrors FrontendAssetsProvider.
451 + if (function_exists('wp_set_script_translations')) {
452 + wp_set_script_translations('yatra-admin', 'yatra', YATRA_PLUGIN_PATH . 'i18n/languages');
453 + }
454 +
432 455 // Localize script data
433 456 wp_localize_script('yatra-admin', 'yatraAdmin', $localized_data);
457 +
458 + // Phone dataset for admin displays (flag + dial-code detection of
459 + // stored "+<code><number>" values in booking details).
460 + wp_localize_script('yatra-admin', 'yatraPhoneData', [
461 + 'countries' => \Yatra\Helpers\FormatHelper::getPhoneCountries(),
462 + 'priority' => \Yatra\Helpers\FormatHelper::getPhonePriority(),
463 + 'flagBase' => YATRA_PLUGIN_URL . 'assets/img/flags/',
464 + ]);
434 465
435 466 // Start fetching the ES module as early as possible (helps shorten white/splash time before React runs)
436 467 $app_js_url = YATRA_PLUGIN_URL . 'assets/admin/dist/js/app.js';
437 468 add_action('admin_head', static function () use ($app_js_url, $jsVersion): void {