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>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
?>
|
||||
<script type="text/template" id="tmpl-elementor-panel-history-page">
|
||||
<div id="elementor-panel-elements-navigation" class="elementor-panel-navigation">
|
||||
<button class="elementor-component-tab elementor-panel-navigation-tab" data-tab="actions"><?php echo esc_html__( 'Actions', 'elementor' ); ?></button>
|
||||
<button class="elementor-component-tab elementor-panel-navigation-tab" data-tab="revisions"><?php echo esc_html__( 'Revisions', 'elementor' ); ?></button>
|
||||
</div>
|
||||
<div id="elementor-panel-history-content"></div>
|
||||
</script>
|
||||
|
||||
<script type="text/template" id="tmpl-elementor-panel-history-tab">
|
||||
<div id="elementor-history-list"></div>
|
||||
<div class="elementor-history-revisions-message"><?php echo esc_html__( 'Switch to Revisions tab for older versions', 'elementor' ); ?></div>
|
||||
</script>
|
||||
|
||||
<script type="text/template" id="tmpl-elementor-panel-history-no-items">
|
||||
<img class="elementor-nerd-box-icon" src="<?php
|
||||
// PHPCS - Safe Elementor SVG
|
||||
echo ELEMENTOR_ASSETS_URL . 'images/information.svg'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>" loading="lazy" alt="<?php echo esc_attr__( 'Elementor', 'elementor' ); ?>" />
|
||||
<div class="elementor-nerd-box-title"><?php echo esc_html__( 'No History Yet', 'elementor' ); ?></div>
|
||||
<div class="elementor-nerd-box-message"><?php echo esc_html__( 'Once you start working, you\'ll be able to redo / undo any action you make in the editor.', 'elementor' ); ?></div>
|
||||
</script>
|
||||
|
||||
<script type="text/template" id="tmpl-elementor-panel-history-item">
|
||||
<div class="elementor-history-item__details">
|
||||
<span class="elementor-history-item__title">{{{ title }}}</span>
|
||||
<span class="elementor-history-item__subtitle">{{{ subTitle }}}</span>
|
||||
<span class="elementor-history-item__action">{{{ action }}}</span>
|
||||
</div>
|
||||
<div class="elementor-history-item__icon">
|
||||
<span class="eicon" aria-hidden="true"></span>
|
||||
</div>
|
||||
</script>
|
||||
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
?>
|
||||
<script type="text/template" id="tmpl-elementor-panel-revisions">
|
||||
<div class="elementor-panel-box">
|
||||
<div class="elementor-panel-revisions-buttons">
|
||||
<button class="elementor-button e-btn-txt e-revision-discard" disabled>
|
||||
<?php echo esc_html__( 'Discard', 'elementor' ); ?>
|
||||
</button>
|
||||
<button class="elementor-button e-revision-save" disabled>
|
||||
<?php echo esc_html__( 'Apply', 'elementor' ); ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="elementor-panel-box">
|
||||
<div id="elementor-revisions-list" class="elementor-panel-box-content"></div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/template" id="tmpl-elementor-panel-revisions-no-revisions">
|
||||
<#
|
||||
var no_revisions_1 = '<?php echo esc_html__( 'Revision history lets you save your previous versions of your work, and restore them any time.', 'elementor' ); ?>',
|
||||
no_revisions_2 = '<?php echo esc_html__( 'Start designing your page and you will be able to see the entire revision history here.', 'elementor' ); ?>',
|
||||
revisions_disabled_1 = '<?php echo esc_html__( 'It looks like the post revision feature is unavailable in your website.', 'elementor' ); ?>',
|
||||
revisions_disabled_2 = '<?php printf(
|
||||
/* translators: %1$s Link open tag, %2$s: Link close tag. */
|
||||
esc_html__( 'Learn more about %1$sWordPress revisions%2$s', 'elementor' ),
|
||||
'<a target="_blank" href="https://go.elementor.com/wordpress-revisions/">',
|
||||
'</a>'
|
||||
); ?>';
|
||||
#>
|
||||
<img class="elementor-nerd-box-icon" src="<?php
|
||||
// PHPCS - Safe Elementor SVG
|
||||
echo ELEMENTOR_ASSETS_URL . 'images/information.svg' // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>" loading="lazy" alt="<?php echo esc_attr__( 'Elementor', 'elementor' ); ?>" />
|
||||
<div class="elementor-nerd-box-title"><?php echo esc_html__( 'No Revisions Saved Yet', 'elementor' ); ?></div>
|
||||
<div class="elementor-nerd-box-message">{{{ elementor.config.document.revisions.enabled ? no_revisions_1 : revisions_disabled_1 }}}</div>
|
||||
<div class="elementor-nerd-box-message">{{{ elementor.config.document.revisions.enabled ? no_revisions_2 : revisions_disabled_2 }}}</div>
|
||||
</script>
|
||||
|
||||
<script type="text/template" id="tmpl-elementor-panel-revisions-loading">
|
||||
<i class="eicon-loading eicon-animation-spin" aria-hidden="true"></i>
|
||||
</script>
|
||||
|
||||
<script type="text/template" id="tmpl-elementor-panel-revisions-revision-item">
|
||||
<button class="elementor-revision-item__wrapper {{ type }}">
|
||||
<div class="elementor-revision-item__gravatar">{{{ gravatar }}}</div>
|
||||
<div class="elementor-revision-item__details">
|
||||
<div class="elementor-revision-date" title="{{{ new Date( timestamp * 1000 ) }}}">{{{ date }}}</div>
|
||||
<div class="elementor-revision-meta">
|
||||
<span>{{{ typeLabel }}}</span>
|
||||
<?php echo esc_html__( 'By', 'elementor' ); ?> {{{ author }}}
|
||||
<span>(#{{{ id }}})</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="elementor-revision-item__tools">
|
||||
<i class="elementor-revision-item__tools-spinner eicon-loading eicon-animation-spin" aria-hidden="true"></i>
|
||||
|
||||
<# if ( 'current' === type ) { #>
|
||||
<i class="elementor-revision-item__tools-current eicon-check" aria-hidden="true"></i>
|
||||
<span class="elementor-screen-only"><?php echo esc_html__( 'Published', 'elementor' ); ?></span>
|
||||
<# } #>
|
||||
|
||||
<!-- <# if ( 'revision' === type ) { #>-->
|
||||
<!-- <i class="eicon-undo" aria-hidden="true"></i>-->
|
||||
<!-- <span class="elementor-screen-only">--><?php //echo esc_html__( 'Restore', 'elementor' ); ?><!--</span>-->
|
||||
<!-- <# } #>-->
|
||||
|
||||
</div>
|
||||
</button>
|
||||
</script>
|
||||
Reference in New Issue
Block a user