🏨 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
8.0 KiB
JavaScript
1 line
8.0 KiB
JavaScript
(function(a){a(document).ready(function(){jQuery("#booking-form").on("submit",function(u){var t=jQuery("#eagle_booking_name");var q=jQuery("#eagle_booking_surname");var s=jQuery("#eagle_booking_email");var r=jQuery("#eagle_booking_phone");var v=jQuery("#eagle_booking_terms");if(t.val()===""){t.addClass("empty");u.preventDefault()}if(q.val()===""){q.addClass("empty");u.preventDefault()}if(s.val()===""){s.addClass("empty");u.preventDefault()}if(r.val()===""){r.addClass("empty");u.preventDefault()}if(!v.is(":checked")){v.addClass("empty");u.preventDefault()}a("#booking-form .form-control, #eagle_booking_terms").on("focus",function(){a(this).removeClass("empty")})});jQuery("#room-booking-form, #search-form").on("submit",function(r){var q=jQuery("#eagle_booking_dates");if(q.val()===""){r.preventDefault();a(".datepicker").click()}});var e=a(".checkout-payment-tabs");if(e.length){e.tabs()}var c=a("#wpadminbar");var i=a("header");var j=a(".sticky-sidebar");if(c.length&&c.is(":visible")){var g=c.height()}else{var g=0}if(i.hasClass("fixed")){var f=i.height()}else{var f=10}var l=g+f;if(j.length){var b=new StickySidebar(".sticky-sidebar",{topSpacing:l,bottomSpacing:0,containerSelector:".container",minWidth:991})}var n=new Date(),d=eb_js_settings.eagle_booking_date_format.toUpperCase(),k=a(".datepicker");a(".search-booking-dates").each(function(){var r=Cookies.get("eagle_booking_checkin"),q=Cookies.get("eagle_booking_checkout");a(".search-booking-dates").daterangepicker({autoUpdateInput:false,autoApply:true,alwaysShowCalendars:true,minDate:n}),a(".search-booking-dates").on("apply.daterangepicker",function(w,v){var s=v.startDate.format(d),u=v.endDate.format(d);a(this).val(s+" → "+u),a('input[name="eagle_booking_checkin"]').val(s),a('input[name="eagle_booking_checkout"]').val(u),Cookies.set("eagle_booking_checkin",s,{expires:7}),Cookies.set("eagle_booking_checkout",u,{expires:7});if(a("div").hasClass("search-filters")){m()}if(a("div").hasClass("search-filters")||a("div").hasClass("calendar")){h()}})});function h(){var q=a('input[name="eagle_booking_checkin').val();var v=a('input[name="eagle_booking_checkout').val();var u=moment(q,d);var r=moment(v,d);var s=(new Date(r))-(new Date(u));var t=s/(1000*60*60*24);if(t<0){var t="0"}a("#eagle_booking_nights").val(t)}a("#eagle_booking_slider_range").ionRangeSlider({type:"double",skin:"round",grid:true,min:0,max:1000,from:eb_js_settings.eagle_booking_price_range_min,to:eb_js_settings.eagle_booking_price_range_max,prefix:"$",onChange:function(q){m()},});a("#eagle_booking_slider_range").ionRangeSlider({disable:true,});function o(){var q=jQuery("#eagle_booking_checkbox_services").val();var r=jQuery("#eagle_booking_form_trip_price").val();jQuery.get(eagle_booking_my_vars_final_price.eagle_booking_ajaxurl_final_price,{action:"eagle_booking_final_price_php",eagle_booking_checkbox_services:q,eagle_booking_form_final_price:r},function(s){jQuery("#eagle_booking_final_trip_price span").empty();jQuery("#eagle_booking_final_trip_price span").text(s);jQuery("#eagle_booking_form_final_price").val(s)})}a(".eagle_booking_checkbox_service").change(function(){if(a(this).is(":checked")){var s=a(this).val();var v=a("#eagle_booking_checkbox_services").val();a("#eagle_booking_checkbox_services").val(s+v);var q=a(this).attr("data-id");var r=a("#eagle_booking_checkbox_services_id").val();a("#eagle_booking_checkbox_services_id").val(q+r);o()}else{var s=a(this).val();var v=a("#eagle_booking_checkbox_services").val();var u=v.replace(s,"");a("#eagle_booking_checkbox_services").val(u);var q=a(this).attr("data-id");var r=a("#eagle_booking_checkbox_services_id").val();var t=r.replace(q,"");a("#eagle_booking_checkbox_services_id").val(t);o()}});a(".eagle_booking_search_service").change(function(){if(a(this).is(":checked")){var q=a(this).val();var s=a("#eagle_booking_services").val();a("#eagle_booking_services").val(q+s);m()}else{var q=a(this).val();var s=a("#eagle_booking_services").val();var r=s.replace(q,"");a("#eagle_booking_services").val(r);m()}});a(".eagle_booking_toogle_services_open_content").click(function(){a(".eagle_booking_toogle_services_content").slideToggle("slow",function(){a(".eagle_booking_toogle_services_open_content").css("display","none");a(".eagle_booking_toogle_services_close_content").css("display","block")})});a(".eagle_booking_toogle_services_close_content").click(function(){a(".eagle_booking_toogle_services_content").slideToggle("slow",function(){a(".eagle_booking_toogle_services_close_content").css("display","none");a(".eagle_booking_toogle_services_open_content").css("display","block")})});a(".eagle_booking_checkbox_additional_service").change(function(){if(a(this).is(":checked")){var r=a(this).val();var s=a("#eagle_booking_additional_services").val();a("#eagle_booking_additional_services").val(r+s);m()}else{var r=a(this).val();var s=a("#eagle_booking_additional_services").val();var q=s.replace(r,"");a("#eagle_booking_additional_services").val(q);m()}});a(".eagle_booking_toogle_additional_services_open_content").click(function(){a(".eagle_booking_toogle_additional_services_content").slideToggle("slow",function(){a(".eagle_booking_toogle_additional_services_open_content").css("display","none");a(".eagle_booking_toogle_additional_services_close_content").css("display","block")})});a(".eagle_booking_toogle_additional_services_close_content").click(function(){a(".eagle_booking_toogle_additional_services_content").slideToggle("slow",function(){a(".eagle_booking_toogle_additional_services_close_content").css("display","none");a(".eagle_booking_toogle_additional_services_open_content").css("display","block")})});a(function p(){var s=a(".guests-picker");var q=a(".plus");var r=a(".minus");a(q).on("click",function(){var u=a(this);var t=u.closest(s).find("input");if(t.attr("max")==undefined||parseInt(t.val())<parseInt(t.attr("max"))){t.val(parseInt(t.val(),10)+1,10);m()}else{u.next("disabled",true)}});a(r).on("click",function(){var u=a(this);var t=u.closest(s).find("input");if(t.attr("min")==undefined||parseInt(t.val())>parseInt(t.attr("min"))){t.val(parseInt(t.val(),10)-1,10);m()}else{u.prev("disabled",true)}})});function m(B){var D=a("#eagle_booking_checkin").val();var w=a("#eagle_booking_checkout").val();if(D&&w){var v=a("#eagle_booking_guests").val();var y=a("#eagle_booking_max_price").val();var t=a("#eagle_booking_services").val();var G=a("#eagle_booking_additional_services").val();var u=a("#eagle_booking_results_qnt").val();var F=a(".datepicker");var H=a(".guests-button");var q=a(".eagle_booking_search_service");var x=a("#eagle_booking_slider_range");var r=a("#eagle_booking_search_sorting_filter .eagle_booking_search_sorting_filter_active").attr("data-meta-key");var E=a("#eagle_booking_search_sorting_filter .eagle_booking_search_sorting_filter_active").attr("data-order");var C=a("#eagle_booking_search_filter_layout .eagle_booking_search_filter_layout_active").attr("data-layout");if(typeof C==="undefined"){C=1}var A=B;if(typeof A==="undefined"){A=jQuery(".eagle_booking_btn_pagination_active").text()}var z=a('<div class="wrapper-cell"><div class="image"></div><div class="text"><div class="text-line"> </div><div class="text-line"></div><div class="text-line"></div><div class="text-line"></div></div></div>').hide();a("#eagle_booking_rooms_list").append(z);z.fadeIn("slow");F.prop("disabled",true);q.prop("disabled",true);x.ionRangeSlider({disable:true});H.css({"pointer-events":"none"});var s=null;s=a.ajax({url:eagle_booking_my_vars_sorting.eagle_booking_ajaxurl_sorting,method:"GET",data:{action:"eagle_booking_filters",eagle_booking_paged:A,checkin:D,checkout:w,guests:v,max_price:y,services:t,additional_services:G,eagle_booking_search_sorting_filter_meta_key:r,eagle_booking_search_sorting_filter_order:E,},beforeSend:function(){if(s!=null){s.abort()}},success:function(I){a("#eagle_booking_search_results").remove();a(".alert-simple").remove();a("#eagle_booking_rooms_list").append(I);a("#eagle_booking_search_loader").fadeOut("slow",function(){a(this).remove()});a('[data-toggle="popover"]').popover({html:true,offset:"0 10px"})},error:function(){},complete:function(){F.prop("disabled",false);q.prop("disabled",false);H.css({"pointer-events":"",})}})}else{}}})})(jQuery); |