Hotel Raxa Dev 5b1e2453c7 Hotel Raxa - Advanced Booking System Implementation
🏨 Hotel Booking Enhancements:
- Implemented Eagle Booking Advanced Pricing add-on
- Added Booking.com-style rate management system
- Created professional calendar interface for pricing
- Integrated deals and discounts functionality

💰 Advanced Pricing Features:
- Dynamic pricing models (per room, per person, per adult)
- Base rates, adult rates, and child rates management
- Length of stay discounts and early bird deals
- Mobile rates and secret deals implementation
- Seasonal promotions and flash sales

📅 Availability Management:
- Real-time availability tracking
- Stop sell and restriction controls
- Closed to arrival/departure functionality
- Minimum/maximum stay requirements
- Automatic sold-out management

💳 Payment Integration:
- Maintained Redsys payment gateway integration
- Seamless integration with existing Eagle Booking
- No modifications to core Eagle Booking plugin

🛠️ Technical Implementation:
- Custom database tables for advanced pricing
- WordPress hooks and filters integration
- AJAX-powered admin interface
- Data migration from existing Eagle Booking
- Professional calendar view for revenue management

📊 Admin Interface:
- Booking.com-style management dashboard
- Visual rate and availability calendar
- Bulk operations for date ranges
- Statistics and analytics dashboard
- Modal dialogs for quick editing

🔧 Code Quality:
- WordPress coding standards compliance
- Secure database operations with prepared statements
- Proper input validation and sanitization
- Error handling and logging
- Responsive admin interface

🤖 Generated with Claude Code (https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-11 07:43:22 +02:00

136 lines
4.9 KiB
PHP

<?php
/* --------------------------------------------------------------------------
* Enqueue Styles
* @since 1.0.0
---------------------------------------------------------------------------*/
function eb_enqueue_styles() {
$styles = array(
'daterangepicker' => 'daterangepicker.css',
'rangeslider' => 'ion.rangeslider.min.css',
'intlTelInput' => 'intlTelInput.min.css',
'countrySelect' => 'countrySelect.min.css',
'eb-swiper' => 'swiper.css',
'owl-carousel' => 'owl.carousel.min.css',
'magnific-popup' => 'magnific-popup.css',
'eb-main' => 'eb.css',
'eb-responsive' => 'eb-responsive.css',
);
// Enqueue all required CSS
foreach ( $styles as $id => $style ) {
wp_enqueue_style( $id, EB_URL .'assets/css/'. $style, false, EB_VERSION );
}
// Enqueue Icon Fonts
wp_enqueue_style( 'fontawesome', EB_URL .'assets/fonts/css/fontawesome.min.css', false, EB_VERSION );
wp_enqueue_style( 'flaticon', EB_URL. 'assets/fonts/flaticon/flaticon.css', false, EB_VERSION );
wp_enqueue_style( 'ionicons', EB_URL. 'assets/fonts/css/ionicons.min.css', false, EB_VERSION );
wp_enqueue_style( 'simpleicons', EB_URL. 'assets/fonts/css/simple-line-icons.css', false, EB_VERSION );
}
add_action( 'wp_enqueue_scripts', 'eb_enqueue_styles' );
/* --------------------------------------------------------------------------
* Enqueue Scripts
* @since 1.0.0
---------------------------------------------------------------------------*/
function eb_enqueue_scripts() {
// JS libraries
$scripts = array(
'sticky-sidebar' => 'sticky-sidebar.min.js',
'moment' => 'moment.js',
'cookies' => 'js.cookie.js',
'daterangepicker' => 'daterangepicker.js',
'rangeslider' => 'ion.rangeslider.min.js',
'intlTelInput' => 'intlTelInput.min.js',
'countrySelect' => 'countrySelect.min.js',
'owl' => 'owl.carousel.min.js',
'swiper' => 'swiper.js',
'magnific-popup' => 'jquery.magnific-popup.min.js',
'dragscroll' => 'dragscroll.min.js',
'parallax' => 'parallax.min.js',
'eb-main' => 'eb.js',
);
// Pre-Packed JS libraries
wp_enqueue_script('jquery');
wp_enqueue_script('jquery-ui-tabs');
// Enque Js Files
foreach ( $scripts as $id => $script ) {
wp_enqueue_script($id, EB_URL .'assets/js/'. $script, array( 'jquery' ), EB_VERSION, true );
}
// Localize JS Settings
wp_localize_script( 'eb-main', 'eb_js_settings', eb_get_js_settings() );
// Localize AJAX in array
wp_localize_script(
'eb-main', 'eb_frontend_ajax',
array(
'eb_search_filters_ajax' => admin_url( 'admin-ajax.php' ),
// Used for static Ajax requests
'eb_ajax_nonce' => wp_create_nonce( 'eb_nonce' ),
)
);
}
add_action( 'wp_enqueue_scripts', 'eb_enqueue_scripts' );
/* --------------------------------------------------------------------------
* Enqueue Admin Scripts
* @since 1.0.0
---------------------------------------------------------------------------*/
function eb_enqueue_admin_scripts() {
wp_enqueue_script( 'moment-admin', EB_URL .'assets/js/moment.js', array( 'jquery' ), EB_VERSION, true );
wp_enqueue_script( 'daterangepicker', EB_URL .'assets/js/daterangepicker.js', array( 'jquery' ), EB_VERSION, true );
wp_enqueue_script( 'eb-admin-main', EB_URL .'assets/js/admin/eb-admin.js', array( 'jquery' ), EB_VERSION, true );
// Localize JS Settings
wp_localize_script( 'eb-admin-main', 'eb_js_settings', eb_get_js_settings() );
// Localize AJAX in array
wp_localize_script(
'eb-admin-main', 'eb_admin_ajax',
array(
// Calendar Nonce
'eb_admin_calendar_ajax' => admin_url( 'admin-ajax.php' ),
// Remove delete booking
'eb_admin_delete_booking_ajax' => admin_url( 'admin-ajax.php' ),
// Used for static Ajax requests
'eb_admin_ajax_nonce' => wp_create_nonce( 'eb_admin_nonce' ),
)
);
}
add_action( 'admin_enqueue_scripts', 'eb_enqueue_admin_scripts' );
/* --------------------------------------------------------------------------
* Enqueue Admin Styles
* @since 1.0.0
---------------------------------------------------------------------------*/
function eb_enqueue_admin_style() {
wp_enqueue_style( 'eb-admin-style', plugin_dir_url( __DIR__ ). 'assets/css/admin/eb-admin.css', false, EB_VERSION );
wp_enqueue_style( 'eb-admin-calendar', plugin_dir_url( __DIR__ ). 'assets/css/daterangepicker.css', false, EB_VERSION );
wp_enqueue_style( 'eb-fontawesome', plugin_dir_url( __DIR__ ). 'assets/fonts/css/fontawesome.min.css', false, EB_VERSION );
}
add_action( 'admin_enqueue_scripts', 'eb_enqueue_admin_style' );