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>
This commit is contained in:
Hotel Raxa Dev
2025-07-11 07:43:22 +02:00
commit 5b1e2453c7
9816 changed files with 2784509 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
{
"$schema": "https://schemas.wp.org/trunk/block.json",
"apiVersion": 3,
"name": "core/latest-comments",
"title": "Latest Comments",
"category": "widgets",
"description": "Display a list of your most recent comments.",
"keywords": [ "recent comments" ],
"textdomain": "default",
"attributes": {
"commentsToShow": {
"type": "number",
"default": 5,
"minimum": 1,
"maximum": 100
},
"displayAvatar": {
"type": "boolean",
"default": true
},
"displayDate": {
"type": "boolean",
"default": true
},
"displayExcerpt": {
"type": "boolean",
"default": true
}
},
"supports": {
"align": true,
"color": {
"gradients": true,
"link": true,
"__experimentalDefaultControls": {
"background": true,
"text": true,
"link": true
}
},
"html": false,
"spacing": {
"margin": true,
"padding": true
},
"typography": {
"fontSize": true,
"lineHeight": true,
"__experimentalFontFamily": true,
"__experimentalFontWeight": true,
"__experimentalFontStyle": true,
"__experimentalTextTransform": true,
"__experimentalTextDecoration": true,
"__experimentalLetterSpacing": true,
"__experimentalDefaultControls": {
"fontSize": true
}
},
"interactivity": {
"clientNavigation": true
}
},
"editorStyle": "wp-block-latest-comments-editor",
"style": "wp-block-latest-comments"
}

View File

@@ -0,0 +1,55 @@
ol.wp-block-latest-comments{
box-sizing:border-box;
margin-right:0;
}
:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment)){
line-height:1.1;
}
:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment-excerpt p)){
line-height:1.8;
}
.has-dates :where(.wp-block-latest-comments:not([style*=line-height])),.has-excerpts :where(.wp-block-latest-comments:not([style*=line-height])){
line-height:1.5;
}
.wp-block-latest-comments .wp-block-latest-comments{
padding-right:0;
}
.wp-block-latest-comments__comment{
list-style:none;
margin-bottom:1em;
}
.has-avatars .wp-block-latest-comments__comment{
list-style:none;
min-height:2.25em;
}
.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-excerpt,.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-meta{
margin-right:3.25em;
}
.wp-block-latest-comments__comment-excerpt p{
font-size:.875em;
margin:.36em 0 1.4em;
}
.wp-block-latest-comments__comment-date{
display:block;
font-size:.75em;
}
.wp-block-latest-comments .avatar,.wp-block-latest-comments__comment-avatar{
border-radius:1.5em;
display:block;
float:right;
height:2.5em;
margin-left:.75em;
width:2.5em;
}
.wp-block-latest-comments[class*=-font-size] a,.wp-block-latest-comments[style*=font-size] a{
font-size:inherit;
}

View File

@@ -0,0 +1 @@
ol.wp-block-latest-comments{box-sizing:border-box;margin-right:0}:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment)){line-height:1.1}:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment-excerpt p)){line-height:1.8}.has-dates :where(.wp-block-latest-comments:not([style*=line-height])),.has-excerpts :where(.wp-block-latest-comments:not([style*=line-height])){line-height:1.5}.wp-block-latest-comments .wp-block-latest-comments{padding-right:0}.wp-block-latest-comments__comment{list-style:none;margin-bottom:1em}.has-avatars .wp-block-latest-comments__comment{list-style:none;min-height:2.25em}.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-excerpt,.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-meta{margin-right:3.25em}.wp-block-latest-comments__comment-excerpt p{font-size:.875em;margin:.36em 0 1.4em}.wp-block-latest-comments__comment-date{display:block;font-size:.75em}.wp-block-latest-comments .avatar,.wp-block-latest-comments__comment-avatar{border-radius:1.5em;display:block;float:right;height:2.5em;margin-left:.75em;width:2.5em}.wp-block-latest-comments[class*=-font-size] a,.wp-block-latest-comments[style*=font-size] a{font-size:inherit}

View File

@@ -0,0 +1,55 @@
ol.wp-block-latest-comments{
box-sizing:border-box;
margin-left:0;
}
:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment)){
line-height:1.1;
}
:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment-excerpt p)){
line-height:1.8;
}
.has-dates :where(.wp-block-latest-comments:not([style*=line-height])),.has-excerpts :where(.wp-block-latest-comments:not([style*=line-height])){
line-height:1.5;
}
.wp-block-latest-comments .wp-block-latest-comments{
padding-left:0;
}
.wp-block-latest-comments__comment{
list-style:none;
margin-bottom:1em;
}
.has-avatars .wp-block-latest-comments__comment{
list-style:none;
min-height:2.25em;
}
.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-excerpt,.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-meta{
margin-left:3.25em;
}
.wp-block-latest-comments__comment-excerpt p{
font-size:.875em;
margin:.36em 0 1.4em;
}
.wp-block-latest-comments__comment-date{
display:block;
font-size:.75em;
}
.wp-block-latest-comments .avatar,.wp-block-latest-comments__comment-avatar{
border-radius:1.5em;
display:block;
float:left;
height:2.5em;
margin-right:.75em;
width:2.5em;
}
.wp-block-latest-comments[class*=-font-size] a,.wp-block-latest-comments[style*=font-size] a{
font-size:inherit;
}

View File

@@ -0,0 +1 @@
ol.wp-block-latest-comments{box-sizing:border-box;margin-left:0}:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment)){line-height:1.1}:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment-excerpt p)){line-height:1.8}.has-dates :where(.wp-block-latest-comments:not([style*=line-height])),.has-excerpts :where(.wp-block-latest-comments:not([style*=line-height])){line-height:1.5}.wp-block-latest-comments .wp-block-latest-comments{padding-left:0}.wp-block-latest-comments__comment{list-style:none;margin-bottom:1em}.has-avatars .wp-block-latest-comments__comment{list-style:none;min-height:2.25em}.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-excerpt,.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-meta{margin-left:3.25em}.wp-block-latest-comments__comment-excerpt p{font-size:.875em;margin:.36em 0 1.4em}.wp-block-latest-comments__comment-date{display:block;font-size:.75em}.wp-block-latest-comments .avatar,.wp-block-latest-comments__comment-avatar{border-radius:1.5em;display:block;float:left;height:2.5em;margin-right:.75em;width:2.5em}.wp-block-latest-comments[class*=-font-size] a,.wp-block-latest-comments[style*=font-size] a{font-size:inherit}