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,15 @@
|
||||
<?php
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
/**
|
||||
* This file is generated by Webpack, do not edit it directly.
|
||||
*/
|
||||
return [
|
||||
'handle' => 'elementor-v2-editor-responsive',
|
||||
'deps' => [
|
||||
'elementor-v2-editor-v1-adapters',
|
||||
'react',
|
||||
'wp-i18n',
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,2 @@
|
||||
/*! For license information please see editor-responsive.js.LICENSE.txt */
|
||||
!function(){"use strict";var e={react:function(e){e.exports=window.React},"@elementor/editor-v1-adapters":function(e){e.exports=window.elementorV2.editorV1Adapters},"@wordpress/i18n":function(e){e.exports=window.wp.i18n}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};!function(){n.r(r),n.d(r,{getBreakpoints:function(){return i},useActivateBreakpoint:function(){return c},useActiveBreakpoint:function(){return u},useBreakpoints:function(){return d}});var e=n("@elementor/editor-v1-adapters"),t=n("@wordpress/i18n"),o=n("react");function i(){const{breakpoints:e}=window.elementor?.config?.responsive||{};if(!e||0===Object.entries(e).length)return[];const n=[],r=[],o=[{id:"desktop",label:(0,t.__)("Desktop","elementor")}];Object.entries(e).forEach((([e,t])=>{if(!t.is_enabled)return;const i={id:e,label:t.label,width:t.value,type:"min"===t.direction?"min-width":"max-width"};i.width?"min-width"===i.type?n.push(i):"max-width"===i.type&&r.push(i):o.push(i)}));const i=(e,t)=>e.width&&t.width?t.width-e.width:0;return[...n.sort(i),...o,...r.sort(i)]}function d(){return(0,e.__privateUseListenTo)((0,e.v1ReadyEvent)(),i)}function u(){return(0,e.__privateUseListenTo)((0,e.windowEvent)("elementor/device-mode/change"),s)}function s(){const e=window;return e.elementor?.channels?.deviceMode?.request?.("currentMode")||null}function c(){return(0,o.useCallback)((t=>(0,e.__privateRunCommand)("panel/change-device-mode",{device:t})),[])}}(),(window.elementorV2=window.elementorV2||{}).editorResponsive=r}();
|
||||
@@ -0,0 +1,21 @@
|
||||
/*! @elementor/editor-v1-adapters */
|
||||
|
||||
/*! @wordpress/i18n */
|
||||
|
||||
/*! react */
|
||||
|
||||
/*!**************************!*\
|
||||
!*** external ["React"] ***!
|
||||
\**************************/
|
||||
|
||||
/*!******************************!*\
|
||||
!*** external ["wp","i18n"] ***!
|
||||
\******************************/
|
||||
|
||||
/*!***************************************************!*\
|
||||
!*** external ["elementorV2","editorV1Adapters"] ***!
|
||||
\***************************************************/
|
||||
|
||||
/*!******************************************************************!*\
|
||||
!*** ./node_modules/@elementor/editor-responsive/dist/index.mjs ***!
|
||||
\******************************************************************/
|
||||
1
wp-content/plugins/elementor/assets/js/packages/editor-responsive/editor-responsive.min.js
vendored
Normal file
1
wp-content/plugins/elementor/assets/js/packages/editor-responsive/editor-responsive.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
!function(){"use strict";var e={d:function(t,n){for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{getBreakpoints:function(){return r},useActivateBreakpoint:function(){return a},useActiveBreakpoint:function(){return u},useBreakpoints:function(){return d}});var n=window.elementorV2.editorV1Adapters,o=window.wp.i18n,i=window.React;function r(){const{breakpoints:e}=window.elementor?.config?.responsive||{};if(!e||0===Object.entries(e).length)return[];const t=[],n=[],i=[{id:"desktop",label:(0,o.__)("Desktop","elementor")}];Object.entries(e).forEach((([e,o])=>{if(!o.is_enabled)return;const r={id:e,label:o.label,width:o.value,type:"min"===o.direction?"min-width":"max-width"};r.width?"min-width"===r.type?t.push(r):"max-width"===r.type&&n.push(r):i.push(r)}));const r=(e,t)=>e.width&&t.width?t.width-e.width:0;return[...t.sort(r),...i,...n.sort(r)]}function d(){return(0,n.__privateUseListenTo)((0,n.v1ReadyEvent)(),r)}function u(){return(0,n.__privateUseListenTo)((0,n.windowEvent)("elementor/device-mode/change"),c)}function c(){const e=window;return e.elementor?.channels?.deviceMode?.request?.("currentMode")||null}function a(){return(0,i.useCallback)((e=>(0,n.__privateRunCommand)("panel/change-device-mode",{device:e})),[])}(window.elementorV2=window.elementorV2||{}).editorResponsive=t}();
|
||||
@@ -0,0 +1 @@
|
||||
__( 'Desktop', 'elementor' );
|
||||
Reference in New Issue
Block a user