Files

2 lines
12 KiB
JavaScript
Raw Permalink Normal View History

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
/*! elementor - v3.24.0 - 15-10-2024 */
(()=>{var e={64376:(e,t,r)=>{"use strict";var i=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(r(78983)),o=i(r(42081)),s=i(r(58724)),a=i(r(71173)),u=i(r(74910)),l=i(r(46458));function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,i=(0,u.default)(e);if(t){var n=(0,u.default)(this).constructor;r=Reflect.construct(i,arguments,n)}else r=i.apply(this,arguments);return(0,a.default)(this,r)}}var c=function(e){(0,s.default)(_default,e);var t=_createSuper(_default);function _default(){return(0,n.default)(this,_default),t.apply(this,arguments)}return(0,o.default)(_default,[{key:"initialize",value:function initialize(){var e=this;this.show(new l.default),elementor.panel.$el.on({resizestart:function resizestart(){return e.onPanelResizeStart()},resizestop:function resizestop(){return e.onPanelResizeStop()}})}},{key:"onPanelResizeStart",value:function onPanelResizeStart(){this.$el.addClass("ui-resizable-resizing")}},{key:"onPanelResizeStop",value:function onPanelResizeStop(){this.$el.removeClass("ui-resizable-resizing")}}]),_default}(Marionette.Region);t.default=c},46458:(e,t,r)=>{"use strict";var i=r(38003).__,n=r(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(78983)),s=n(r(42081)),a=n(r(58724)),u=n(r(71173)),l=n(r(74910));function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var r,i=(0,l.default)(e);if(t){var n=(0,l.default)(this).constructor;r=Reflect.construct(i,arguments,n)}else r=i.apply(this,arguments);return(0,u.default)(this,r)}}var c=function(e){(0,a.default)(View,e);var t=_createSuper(View);function View(){return(0,o.default)(this,View),t.apply(this,arguments)}return(0,s.default)(View,[{key:"getTemplate",value:function getTemplate(){return"#tmpl-elementor-templates-responsive-bar"}},{key:"id",value:function id(){return"e-responsive-bar"}},{key:"ui",value:function ui(){var e="#"+this.id();return{switcherInput:".e-responsive-bar-switcher__option input",switcherLabel:".e-responsive-bar-switcher__option",switcher:e+"-switcher",sizeInputWidth:e+"__input-width",sizeInputHeight:e+"__input-height",scaleValue:e+"-scale__value",scalePlusButton:e+"-scale__plus",scaleMinusButton:e+"-scale__minus",scaleResetButton:e+"-scale__reset",closeButton:e+"__close-button",breakpointSettingsButton:e+"__settings-button"}}},{key:"events",value:function events(){return{"change @ui.switcherInput":"onBreakpointSelected","input @ui.sizeInputWidth":"onSizeInputChange","input @ui.sizeInputHeight":"onSizeInputChange","click @ui.scalePlusButton":"onScalePlusButtonClick","click @ui.scaleMinusButton":"onScaleMinusButtonClick","click @ui.scaleResetButton":"onScaleResetButtonClick","click @ui.closeButton":"onCloseButtonClick","click @ui.breakpointSettingsButton":"onBreakpointSettingsOpen"}}},{key:"initialize",value:function initialize(){this.listenTo(elementor.channels.deviceMode,"change",this.onDeviceModeChange),this.listenTo(elementor.channels.responsivePreview,"resize",this.onPreviewResize),this.listenTo(elementor.channels.responsivePreview,"open",this.onPreviewOpen),this.listenTo(elementor.channels.deviceMode,"close",this.resetScale)}},{key:"addTipsyToIconButtons",value:function addTipsyToIconButtons(){this.ui.switcherLabel.add(this.ui.closeButton).add(this.ui.breakpointSettingsButton).tipsy({html:!0,gravity:"n",title:function title(){return jQuery(this).data("tooltip")}})}},{key:"restoreLastValidPreviewSize",value:function restoreLastValidPreviewSize(){var e=elementor.channels.responsivePreview.