(#1) - WebPack bundling of JS and CSS
This commit is contained in:
@@ -5,44 +5,21 @@
|
||||
* admin and the default user.
|
||||
*/
|
||||
|
||||
function rsv_asset_url(string $relative): string {
|
||||
return plugin_dir_url(__FILE__) . '../assets/' . $relative;
|
||||
function rsv_build_url(string $file): string {
|
||||
return plugin_dir_url(__FILE__) . '../build/' . $file;
|
||||
}
|
||||
|
||||
function rsv_asset_file(string $relative): string {
|
||||
return plugin_dir_path(__FILE__) . '../assets/' . $relative;
|
||||
function rsv_build_file(string $file): string {
|
||||
return plugin_dir_path(__FILE__) . '../build/' . $file;
|
||||
}
|
||||
|
||||
function rsv_js(string $handle, string $relative, array $deps = []): void {
|
||||
wp_enqueue_script($handle, rsv_asset_url($relative), $deps, filemtime(rsv_asset_file($relative)));
|
||||
}
|
||||
|
||||
function rsv_css(string $handle, string $relative): void {
|
||||
wp_enqueue_style($handle, rsv_asset_url($relative), [], filemtime(rsv_asset_file($relative)));
|
||||
}
|
||||
|
||||
// --- Shared between frontend and admin ---
|
||||
|
||||
function rsv_enqueue_shared_assets(): void {
|
||||
rsv_js('rsv_calendar', 'js/elements/RsvCalendar.js');
|
||||
rsv_js('rsv_timeline', 'js/elements/RsvTimeline.js');
|
||||
rsv_js('rsv_api', 'js/RsvApi.js');
|
||||
rsv_js('reservation_selector', 'js/elements/RsvReservationSelector.js');
|
||||
rsv_js('rsv_reservation_summary', 'js/elements/RsvReservationSummary.js');
|
||||
rsv_js('rsv_data_source', 'js/datasource/RsvDataSource.js');
|
||||
rsv_js('rsv_reservation_resource', 'js/datasource/RsvReservationResource.js');
|
||||
rsv_js('rsv_form_definition_resource', 'js/datasource/RsvFormDefinitionResource.js');
|
||||
rsv_js('rsv_timetable_resource', 'js/datasource/RsvTimetableResource.js');
|
||||
rsv_js('rsv_timetable_capacity_resource', 'js/datasource/RsvTimetableCapacityResource.js');
|
||||
rsv_js('rsv_timetable_reservation_resource', 'js/datasource/RsvTimetableReservationResource.js');
|
||||
rsv_js('rsv_reservation_client', 'js/datasource/RsvReservationClient.js');
|
||||
|
||||
wp_localize_script('rsv_api', 'ReservairServiceAPI', [
|
||||
function rsv_localize_api(string $handle): void {
|
||||
wp_localize_script($handle, 'ReservairServiceAPI', [
|
||||
'restUrl' => rest_url('reservations/v1'),
|
||||
'nonce' => wp_create_nonce('wp_rest'),
|
||||
]);
|
||||
|
||||
wp_localize_script('rsv_api', 'ReservairStrings', [
|
||||
wp_localize_script($handle, 'ReservairStrings', [
|
||||
'timeline' => [
|
||||
'not_reservable' => 'Tento objekt nelze rezervovat.',
|
||||
'no_blocks' => 'Tento den není dostupný žádný blok. Vyberte jiné datum.',
|
||||
@@ -63,35 +40,20 @@ function rsv_enqueue_shared_assets(): void {
|
||||
'error_generic' => 'Něco se pokazilo. Zkuste to prosím znovu.',
|
||||
],
|
||||
]);
|
||||
|
||||
rsv_css('reservations-styles', 'css/RsvMainStyle.css');
|
||||
rsv_css('rsv-form-summary-styles', 'css/components/RsvFormSummaryStyles.css');
|
||||
rsv_css('rsv-calendar-styles', 'css/components/RsvCalendarStyles.css');
|
||||
rsv_css('rsv-form-styles', 'css/components/RsvFormStyles.css');
|
||||
rsv_css('rsv-time-slot-styles', 'css/components/RsvTimeSlotsStyles.css');
|
||||
}
|
||||
|
||||
// --- Public hooks ---
|
||||
|
||||
function rsv_enqueue_assets(): void {
|
||||
rsv_enqueue_shared_assets();
|
||||
wp_enqueue_script('rsv-client', rsv_build_url('client.js'), [], filemtime(rsv_build_file('client.js')));
|
||||
wp_enqueue_style('rsv-client', rsv_build_url('client.css'), [], filemtime(rsv_build_file('client.css')));
|
||||
|
||||
rsv_js('rsv_timetable_service', 'js/services/RsvTimetableService.js');
|
||||
rsv_js('rsv_form_sender', 'js/forms/RsvFormSender.js');
|
||||
rsv_js('rsv_form_encoder', 'js/forms/RsvFormEncoder.js');
|
||||
rsv_localize_api('rsv-client');
|
||||
}
|
||||
|
||||
function rsv_enqueue_admin_assets(): void {
|
||||
rsv_enqueue_shared_assets();
|
||||
wp_enqueue_script('rsv-admin', rsv_build_url('admin.js'), [], filemtime(rsv_build_file('admin.js')));
|
||||
wp_enqueue_style('rsv-admin', rsv_build_url('admin.css'), [], filemtime(rsv_build_file('admin.css')));
|
||||
|
||||
$admin_js = plugin_dir_path(__FILE__) . '../src/components/admin.js';
|
||||
wp_enqueue_script('admin', plugin_dir_url(__FILE__) . '../src/components/admin.js', [], filemtime($admin_js));
|
||||
|
||||
rsv_js('rsv_inline_form_builder', 'js/forms/RsvInlineFormBuilder.js');
|
||||
rsv_js('datagrid', 'js/elements/RsvDatagrid.js');
|
||||
rsv_js('rsv_form_encoder', 'js/forms/RsvFormEncoder.js');
|
||||
// RsvAdminForm needs the encoder, the localized nonce (rsv_api), and
|
||||
// show_notice() (admin) — declare them as deps so load order is correct.
|
||||
rsv_js('rsv_admin_form', 'js/forms/RsvAdminForm.js', ['rsv_form_encoder', 'rsv_api', 'admin']);
|
||||
rsv_css('rsv-admin-style', 'css/RsvAdminStyle.css');
|
||||
rsv_localize_api('rsv-admin');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user