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

96 lines
13 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: 0.375rem 0; line-height: 1.5; font-size: 0.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: 0.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: 0.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 0.9375rem; }
.redux-banner-slide ul li { color: #6f6f6f; font-size: 0.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: 0.5; text-decoration: none; pointer-events: none; }
@media screen and (max-width: 782px) { .updated.redux-banner-container { padding: 0 !important; } }
@media (min-width: 900px) { .redux-banner-slide-text { padding-left: 2.8125rem; } }
@media (min-width: 782px) { .redux-disconnected .redux-banner-full-container { left: -20px; }
.redux-disconnected.toplevel_page_jetpack .redux-banner-full-container { left: 0; } }
@media (max-width: 782px) { .redux-illo { width: 100%; margin: 0.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; } }
@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; } }
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtYmFubmVyLmNzcyIsInNvdXJjZXMiOlsicmVkdXgtYmFubmVyLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQUFDSSxRQURJLENBQ0osOEJBQThCLENBQUMsRUFDM0IsT0FBTyxFQUFFLFFBQVEsRUFDakIsY0FBYyxFQUFFLFdBQVcsRUFDM0IsV0FBVyxFQUFFLE1BQU0sRUFDbkIsZUFBZSxFQUFFLFFBQVEsR0FDNUI7O0FBTkwsQUFRSSxRQVJJLENBUUosdUJBQXVCLENBQUMsRUFDcEIsT0FBTyxFQUFFLEtBQUssRUFDZCxPQUFPLEVBQUUsVUFBVSxFQUNuQixXQUFXLEVBQUUsR0FBRyxFQUNoQixTQUFTLEVBQUUsU0FBUyxFQUNwQixLQUFLLEVBQUUsT0FBTyxHQUtqQjs7QUFsQkwsQUFlUSxRQWZBLENBUUosdUJBQXVCLENBT25CLENBQUMsQ0FBQyxFQUNFLEtBQUssRUFBRSxPQUFPLEdBQ2pCOztBQWpCVCxBQW9CSSxRQXBCSSxBQW9CSCx1QkFBdUIsQ0FBQyxFQUNyQixPQUFPLEVBQUUsQ0FBQyxFQUNWLE1BQU0sRUFBRSxpQkFBaUIsRUFDekIsVUFBVSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLG1CQUFtQixHQUM1Qzs7QUF4QkwsQUEwQkksUUExQkksQ0EwQkosZUFBZSxDQUFDLEVBQ1osT0FBTyxFQUFFLENBQUMsRUFDVixlQUFlLEVBQUUsSUFBSSxHQUN4Qjs7QUFHTCxBQUFBLGdDQUFnQyxDQUFDLEVBQzdCLGVBQWUsRUFBRSxJQUFJLEdBQ3hCOztBQUVELEFBQUEseUJBQXlCLENBQUMsRUFDdEIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsS0FBSyxFQUFFLENBQUMsRUFDUixHQUFHLEVBQUUsQ0FBQyxFQUNOLElBQUksRUFBRSxPQUFPLEVBQ2IsT0FBTyxFQUFFLElBQUksRUFDYixNQUFNLEVBQUUsTUFBTSxFQUNkLEtBQUssRUFBRSxNQUFNLEVBQ2IsTUFBTSxFQUFFLE9BQU8sR0FDbEI7O0FBRUQsQUFB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 */
/*# sourceMappingURL=redux-banner.css.map */