Files
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

1 line
3.4 KiB
JavaScript

!function(n){"use strict";redux.customizer=redux.customizer||{},n(document).ready(function(){redux.customizer.init()}),redux.customizer.init=function(){var t,e;n("body").addClass(redux.customizer.body_class),n(".accordion-section.redux-section, .accordion-section.redux-panel, .accordion-section-title").on("click",function(){n.redux.initFields()}),n(".accordion-section.redux-section h3, .accordion-section.redux-panel h3").on("click",function(){redux.customizer.resize(n(this).parent())}),void 0===redux.optName?console.log("Redux customizer extension failure"):(n(".control-panel-back, .customize-panel-back").on("click",function(){n(document).find("form#customize-controls").removeAttr("style"),n(document).find(".wp-full-overlay").removeAttr("style"),redux.customizer.width=0}),n(".control-section-back, .customize-section-back").on("click",function(){redux.customizer.resize(n(this).parent().parent().parent())}),redux.customizer&&n("#customize-save-button-wrapper #save").on("click",function(){setTimeout(function(){var e=n(document.getElementById("customize-controls")).serialize(),t=n(".redux-customizer-nonce").data("nonce");n.ajax({type:"post",dataType:"json",url:ajaxurl,data:{action:redux.optName.args.opt_name+"_customizer_save",nonce:t,opt_name:redux.optName.args.opt_name,data:e},error:function(e){!0===redux.optName.args.dev_mode&&console.log(e.responseText)},success:function(e){"success"===e.status?(console.log(e),n(".redux-action_bar .spinner").removeClass("is-active"),redux.optName.options=e.options,redux.optName.errors=e.errors,redux.optName.warnings=e.warnings,redux.optName.sanitize=e.sanitize,null===e.errors&&null===e.warnings||n.redux.notices(),null!==e.sanitize&&n.redux.sanitize()):console.log(e.responseText)}})},1e3)}),redux.optName.args.disable_save_warn=!0,t=redux_change,redux_change=function(e){e=n(e),t.apply(this,arguments),redux.customizer.save(e)},e=n.redux.initFields,n.redux.initFiles=function(){e()})},redux.customizer.resize=function(e){e.attr("data-width")&&(redux.customizer.width=e.attr("data-width"));var t,r=redux.customizer.width;(e=""!==(r=n("body").width()<640?"":r)&&0<(t=n("#"+e.attr("aria-owns"))).length?t:e).hasClass("open")||e.hasClass("current-panel")||e.hasClass("current-section")?""!==r&&(n(document).find("form#customize-controls").attr("style","width:"+r+";"),n(document).find(".wp-full-overlay").attr("style","margin-left:"+r+";")):(t=e.attr("id"),e=n('*[aria-owns="'+t+'"]').parents(".redux-panel:first").attr("id"),(r=n('*[aria-owns="'+e+'"]').attr("data-width"))?(n(document).find("form#customize-controls").attr("style","width:"+r+";"),n(document).find(".wp-full-overlay").attr("style","margin-left:"+r+";")):(n(document).find("form#customize-controls").removeAttr("style"),n(document).find(".wp-full-overlay").removeAttr("style")))},redux.customizer.save=function(e){e=e.hasClass("redux-field")?e:e.parents(".redux-field-container:first");redux.customizer.inputSave(e)},redux.customizer.inputSave=function(e){var t=(t=(e=e.hasClass("redux-field-container")?e:e.parents('[class^="redux-field-container"]')).parent().find(".redux-customizer-input").data("id"))||(e=e.parents(".redux-container-repeater:first")).parent().find(".redux-customizer-input").data("id"),r=e.find(":input").serializeJSON();n.each(r,function(e,t){r=t}),e=e.parent().find(".redux-customizer-input").data("key"),r[e]&&(r=r[e]),e=wp.customize.control(t),JSON.stringify(e.setting._value)!==JSON.stringify(r)&&(e.setting._value=null),e.setting.set(r)}}(jQuery);