| @@ -20,8 +20,9 @@ | ||
| 20 | 20 | use FluentCart\App\Models\AttributeGroup; |
| 21 | 21 | use FluentCart\App\Models\ShippingMethod; |
| 22 | 22 | use FluentCart\App\Modules\Tax\TaxModule; |
| 23 | 23 | use FluentCart\App\Modules\FluentPlayer\FluentPlayerBridge; |
| 24 | +use FluentCart\App\Modules\AdminFooter\AdminFooter; | |
| 24 | 25 | use FluentCart\App\Helpers\CurrenciesHelper; |
| 25 | 26 | use FluentCart\App\Services\Filter\TaxFilter; |
| 26 | 27 | use FluentCart\App\Services\Filter\OrderFilter; |
| 27 | 28 | use FluentCart\App\Services\Filter\LicenseFilter; |
| @@ -30,11 +31,13 @@ | ||
| 30 | 31 | use FluentCart\App\Services\Filter\CustomerFilter; |
| 31 | 32 | use FluentCart\App\Services\Filter\CouponFilter; |
| 32 | 33 | use FluentCart\App\Services\Filter\LogFilter; |
| 33 | 34 | use FluentCart\App\Services\Filter\OrderBumpFilter; |
| 35 | +use FluentCart\App\Services\Filter\ReviewFilter; | |
| 34 | 36 | use FluentCart\App\Modules\Shipping\Services\Filter\ShippingClassFilter; |
| 35 | 37 | use FluentCart\App\Modules\Shipping\Services\Filter\ShippingZoneFilter; |
| 36 | 38 | use FluentCart\App\Modules\Integrations\AddOnModule; |
| 39 | +use FluentCart\App\Services\DateTime\DayjsFormatter; | |
| 37 | 40 | use FluentCart\App\Services\Translations\TransStrings; |
| 38 | 41 | use FluentCart\App\Services\Permission\PermissionManager; |
| 39 | 42 | use FluentCart\Database\DataBackfills; |
| 40 | 43 | use FluentCart\App\Modules\PaymentMethods\Core\GatewayManager; |
| @@ -50,8 +53,9 @@ | ||
| 50 | 53 | |
| 51 | 54 | if ($page == 'fluent-cart') { |
| 52 | 55 | |
| 53 | 56 | \FluentCart\App\Events\FirstTimePluginActivation::handle(); |
| 57 | + (new AdminFooter())->register(); | |
| 54 | 58 | add_action('admin_enqueue_scripts', function () { |
| 55 | 59 | Vite::enqueueStyle('fluent_cart_admin_app_css', |
| 56 | 60 | 'styles/tailwind/style.css', |
| 57 | 61 | ); |
| @@ -85,8 +89,9 @@ | ||
| 85 | 89 | $targetKeys = [ |
| 86 | 90 | 'checkout_page_id' => __('Checkout Page', 'fluent-cart'), |
| 87 | 91 | 'cart_page_id' => __('Cart Page', 'fluent-cart'), |
| 88 | 92 | 'receipt_page_id' => __('Receipt Page', 'fluent-cart'), |
| 93 | + 'order_review_page_id' => __('Order Review Page', 'fluent-cart'), | |
| 89 | 94 | 'shop_page_id' => __('Shop Page', 'fluent-cart'), |
| 90 | 95 | 'customer_profile_page_id' => __('Customer Profile Page', 'fluent-cart'), |
| 91 | 96 | ]; |
| 92 | 97 | |
| @@ -477,8 +482,9 @@ | ||
| 477 | 482 | 'product_filter_options' => ProductFilter::getTableFilterOptions(), |
| 478 | 483 | 'license_filter_options' => LicenseFilter::getTableFilterOptions(), |
| 479 | 484 | 'license_site_filter_options' => LicenseSiteFilter::getTableFilterOptions(), |
| 480 | 485 | 'tax_filter_options' => TaxFilter::getTableFilterOptions(), |
| 486 | + 'review_filter_options' => ReviewFilter::getTableFilterOptions(), | |
| 481 | 487 | ]; |
| 482 | 488 | $filterOptions = apply_filters('fluent_cart/admin_filter_options', $filterOptions, []); |
| 483 | 489 | |
| 484 | 490 | // Structured table config keyed by table name (used by Table.js base class) |
| @@ -490,8 +496,9 @@ | ||
| 490 | 496 | 'license_sites' => ['filters' => Arr::get($filterOptions, 'license_site_filter_options', [])], |
| 491 | 497 | 'taxes_table' => ['filters' => Arr::get($filterOptions, 'tax_filter_options', [])], |
| 492 | 498 | 'subscriptions' => ['filters' => Arr::get($filterOptions, 'subscription_filter_options', [])], |
| 493 | 499 | 'shipping_zone_table' => ['filters' => Arr::get($filterOptions, 'shipping_zone_filter_options', [])], |
| 500 | + 'review_table' => ['filters' => Arr::get($filterOptions, 'review_filter_options', [])], | |
| 494 | 501 | // The Order Sources report filters orders, so its advanced-filter UI |
| 495 | 502 | // reuses the Orders filter vocabulary rather than defining its own. |
| 496 | 503 | 'source_report' => ['filters' => Arr::get($filterOptions, 'order_filter_options', [])], |
| 497 | 504 | ]; |
| @@ -589,8 +596,9 @@ | ||
| 589 | 596 | 'is_tax_enabled' => TaxModule::isTaxEnabled(), |
| 590 | 597 | 'eu_vat_county_options' => TaxModule::euVatCountyOptions(), |
| 591 | 598 | 'country_tax_titles' => TaxModule::taxTitleLists(), |
| 592 | 599 | 'site_url' => site_url(), |
| 600 | + 'store_logo' => (new \FluentCart\Api\StoreSettings())->get('store_logo.url', ''), | |
| 593 | 601 | 'modules_settings' => ModuleSettings::getAllSettings(), |
| 594 | 602 | 'purchase_fluent_cart_link' => 'https://fluentcart.com/', |
| 595 | 603 | 'admin_notices' => apply_filters('fluent_cart/admin_notices', []), |
| 596 | 604 | // POSTs data-backfills/run until done; endpoint requires manage_options |
| @@ -596,9 +604,9 @@ | ||
| 596 | 604 | // POSTs data-backfills/run until done; endpoint requires manage_options |
| 597 | 605 | 'has_data_migrations' => $hasDataMigrations, |
| 598 | 606 | 'subscription_intervals' => Helper::getAvailableSubscriptionIntervalOptions(), |
| 599 | 607 | |
| 600 | - 'datei18' => TransStrings::dateTimeStrings(), | |
| 608 | + 'datei18' => DayjsFormatter::localizedStrings(), | |
| 601 | 609 | 'el_strings' => TransStrings::elStrings(), |
| 602 | 610 | 'wp_locale' => get_locale(), |
| 603 | 611 | 'is_full_name_required' => CheckoutFieldsSchema::isFullNameRequired(), |
| 604 | 612 | 'business_details' => [ |