🏨 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
5.3 KiB
CSS
1 line
5.3 KiB
CSS
.updated .redux-banner-button-container{padding:2rem 0 0;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}.updated .redux-banner-tos-blurb{display:block;padding:.375rem 0;line-height:1.5;font-size:.6875rem;color:#414141}.updated .redux-banner-tos-blurb a{color:inherit}.updated.redux-banner-container{padding:0;border:1px solid #ccd0d4;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.04);box-shadow:0 1px 1px rgba(0,0,0,0.04)}.updated .notice-dismiss{z-index:1;text-decoration:none}.redux-connection-banner-dismiss{text-decoration:none}.redux-banner-svg-dismiss{position:absolute;right:0;top:0;fill:#a2a2a2;padding:1rem;height:1.5rem;width:1.5rem;cursor:pointer}.redux-tos-blurb{font-size:.6875rem;margin-left:1.125rem}.redux-tos-blurb a{cursor:pointer;color:inherit;text-decoration:underline}.redux-dismiss{cursor:pointer}.redux-banner-button-container .redux-spinner{width:100%}.redux-banner-container{display:block;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#24b0a6}.redux-banner-inner-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:left;-webkit-justify-content:left;-ms-flex-pack:left;justify-content:left;background:#fff}.redux-banner-inner-container>a:first-child{z-index:1}.redux-banner-content-container{position:relative;padding:2rem;z-index:0}.redux-banner-content-container p{color:#6f6f6f;font-size:.875rem}.redux-banner-content-container h2{margin-top:0;line-height:1.6;display:block;margin-bottom:1.5rem}.redux-banner-content-logo{width:150px;margin-bottom:20px !important}.redux-banner-content-icon{margin:0 0 0 1.5rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.redux-illo img{display:block;margin:0 auto}.redux-illo .redux-logo{margin-bottom:2.25rem}.redux-banner-slide{display:none}.redux-banner-slide.redux-slide-is-active{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.redux-banner-slide ul{list-style:disc;padding:0 0 0 .9375rem}.redux-banner-slide ul li{color:#6f6f6f;font-size:.75rem}.redux-disconnected .redux-banner-full-container{-webkit-box-sizing:border-box;box-sizing:border-box;position:absolute;top:0;right:0;bottom:1.25rem;left:0;z-index:999;background:#f1f1f1;text-align:center}.redux-disconnected .redux-banner-full-container h4{line-height:1.25;font-size:1.375rem;font-weight:normal;margin:1em 0}.redux-disconnected .redux-banner-full-container .redux-banner-full-container-card{padding:4rem 4rem 6rem;background:#fff;margin:1em}.redux-disconnected .redux-banner-full-container .redux-banner-full-container-card img.redux-logo{width:160px}.redux-disconnected .redux-banner-full-container .redux-banner-full-container-card img.support-characters{margin-top:1.5rem;width:50%}.redux-disconnected.toplevel_page_jetpack .redux-banner-full-container{position:relative;bottom:0;-webkit-box-shadow:0 0 0 1px #ccd0d4,0 1px 1px 1px rgba(0,0,0,0.04);box-shadow:0 0 0 1px #ccd0d4,0 1px 1px 1px rgba(0,0,0,0.04);display:none}.redux-disconnected.toplevel_page_jetpack .redux-banner-full-container .redux-banner-full-container-card{margin:0}.redux-disconnected.toplevel_page_jetpack .jp-jetpack-connect__container .redux-banner-full-container{display:block}img.redux-banner-logo{width:50px;height:auto;margin-bottom:10px}.redux-connection-banner-action.disabled{color:currentColor;cursor:not-allowed;opacity:.5;text-decoration:none;pointer-events:none}@media(min-width:600px){.updated .redux-banner-button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.updated .redux-banner-tos-blurb{margin-left:1.125rem}}@media(min-width:782px){.redux-disconnected .redux-banner-full-container{left:-20px}.redux-disconnected.toplevel_page_jetpack .redux-banner-full-container{left:0}}@media(min-width:900px){.redux-banner-slide-text{padding-left:2.8125rem}}@media screen and (max-width:782px){.updated.redux-banner-container{padding:0 !important}}@media(max-width:782px){.redux-illo{width:100%;margin:.5rem 0;display:block}.redux-banner-slide.redux-slide-is-active{display:block}.redux-disconnected.toplevel_page_jetpack .redux-banner-full-container{top:32px}}@media(max-width:530px){.redux-banner-hide-phone-and-smaller{display:none !important}.redux-banner-content-logo{margin-left:0 !important;margin-bottom:40px !important}.redux-illo .redux-logo{margin-left:0}.redux-disconnected .redux-banner-full-container{top:42px}.redux-disconnected .redux-banner-full-container .redux-banner-full-container-card{padding:2rem 2rem}.redux-disconnected.toplevel_page_jetpack .redux-banner-full-container{top:0}.redux-disconnected.toplevel_page_jetpack .jp-jetpack-connect__container .redux-banner-full-container .redux-banner-full-step-header h2{margin:0}} |