🏨 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>
1 line
1.6 KiB
JavaScript
1 line
1.6 KiB
JavaScript
!function(c){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.select=redux.field_objects.select||{},redux.field_objects.select.init=function(e){e=c.redux.getSelector(e,"select"),c(e).each(function(){var d={},n=c(this),e=n;(e=n.hasClass("redux-field-container")?e:n.parents(".redux-field-container:first")).is(":hidden")||e.hasClass("redux-field-init")&&(e.removeClass("redux-field-init"),n.find("select.redux-select-item").each(function(){var t,s,a,e,i;c(this).hasClass("font-icons")&&(d=c.extend({},{templateResult:redux.field_objects.select.addIcon,templateSelection:redux.field_objects.select.addIcon,escapeMarkup:function(e){return e}},d)),c(this).data("ajax")&&(t=c(this).data("action"),s=c(this).data("nonce"),a=c(this).data("wp-data"),e=c(this).data("min-input-length"),i={},c(this).data("args")&&(i=JSON.stringify(c(this).data("args"))),d={minimumInputLength:e="true"===e?1:e,ajax:{url:ajaxurl,dataType:"json",delay:250,data:function(e){return{nonce:s,data:a,q:e.term,page:e.page||1,action:t,data_args:i}},processResults:function(e,t){return t.page=t.page||1,!0===e.success?{results:e.data}:!1===e.success?(alert(e.data),{results:e.data}):void 0},cache:!0}}),c(this).select2(d),n.find(".select2-search__field").width("auto"),c(this).hasClass("select2-sortable")&&(d={bindOrder:"sortableStop",sortableOptions:{axis:"x",placeholder:!1}},c(this).select2Sortable(d)),c(this).on("select2:select",function(){redux_change(c(c(this))),c(this).select2SortableOrder()})}))})},redux.field_objects.select.addIcon=function(e){if(e.hasOwnProperty("id"))return'<span class="elusive"><i class="'+e.id+'"></i> '+e.text+"</span>"}}(jQuery); |