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:
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
/**
|
||||
* Silence is golden.
|
||||
*
|
||||
* @package Redux Framework
|
||||
*/
|
||||
|
||||
echo null;
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
wp-content/plugins/eagle-booking/include/redux/inc/welcome/css/redux-banner.min.css
vendored
Normal file
1
wp-content/plugins/eagle-booking/include/redux/inc/welcome/css/redux-banner.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,300 @@
|
||||
.updated {
|
||||
.redux-banner-button-container {
|
||||
padding: 2rem 0 0;
|
||||
flex-direction: row-reverse;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.redux-banner-tos-blurb {
|
||||
display: block;
|
||||
padding: 0.375rem 0;
|
||||
line-height: 1.5;
|
||||
font-size: 0.6875rem;
|
||||
color: #414141;
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
&.redux-banner-container {
|
||||
padding: 0;
|
||||
border: 1px solid #ccd0d4;
|
||||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
|
||||
.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;
|
||||
|
||||
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;
|
||||
box-sizing: border-box;
|
||||
background-color: #24b0a6;
|
||||
}
|
||||
|
||||
.redux-banner-inner-container {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: nowrap;
|
||||
justify-content: left;
|
||||
background: #fff;
|
||||
|
||||
> a:first-child {
|
||||
z-index: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.redux-banner-content-container {
|
||||
position: relative;
|
||||
padding: 2rem;
|
||||
z-index: 0;
|
||||
|
||||
p {
|
||||
color: #6f6f6f;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
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: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.redux-illo {
|
||||
img {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.redux-logo {
|
||||
margin-bottom: 2.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.redux-banner-slide {
|
||||
display: none;
|
||||
|
||||
&.redux-slide-is-active {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: disc;
|
||||
padding: 0 0 0 0.9375rem;
|
||||
|
||||
li {
|
||||
color: #6f6f6f;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.redux-disconnected {
|
||||
.redux-banner-full-container {
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 1.25rem;
|
||||
left: 0;
|
||||
z-index: 999;
|
||||
background: #f1f1f1;
|
||||
text-align: center;
|
||||
|
||||
h4 {
|
||||
line-height: 1.25;
|
||||
font-size: 1.375rem;
|
||||
font-weight: normal;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
.redux-banner-full-container-card {
|
||||
padding: 4rem 4rem 6rem;
|
||||
background: #fff;
|
||||
margin: 1em;
|
||||
|
||||
img {
|
||||
&.redux-logo {
|
||||
width: 160px;
|
||||
}
|
||||
|
||||
&.support-characters {
|
||||
margin-top: 1.5rem;
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.toplevel_page_jetpack {
|
||||
.redux-banner-full-container {
|
||||
position: relative;
|
||||
bottom: 0;
|
||||
box-shadow: 0 0 0 1px #ccd0d4, 0 1px 1px 1px rgba(0, 0, 0, 0.04);
|
||||
display: none;
|
||||
|
||||
.redux-banner-full-container-card {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.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;
|
||||
}
|
||||
|
||||
&.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-banner-full-container-card {
|
||||
padding: 2rem 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
&.toplevel_page_jetpack {
|
||||
.redux-banner-full-container {
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.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: flex;
|
||||
}
|
||||
|
||||
.redux-banner-tos-blurb {
|
||||
margin-left: 1.125rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
wp-content/plugins/eagle-booking/include/redux/inc/welcome/css/redux-welcome.min.css
vendored
Normal file
1
wp-content/plugins/eagle-booking/include/redux/inc/welcome/css/redux-welcome.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
#wpbody-content .wrap{height:auto !important;overflow:initial !important;max-width:initial !important}.about-wrap hr{border:inherit;border-top:1px solid #ccc}.about-wrap #footer-upgrade{display:none}.about-wrap .redux-badge{position:absolute;top:0;background:#00a2e3;padding:20px;color:#efefef;margin:5px 0 0 0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.2);box-shadow:0 1px 3px rgba(0,0,0,0.2)}.about-wrap .redux-badge::before{color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:80px;font-weight:normal;width:165px;height:165px;line-height:165px;text-align:center;position:absolute;top:0;margin:0;vertical-align:middle}.about-wrap .redux-badge .el{background:#00a2e3;display:block !important;font-size:8em;color:#fff;margin-bottom:30px}.about-wrap .redux-badge span{font-weight:600;font-size:14px;text-align:center;position:absolute;bottom:0;background:rgba(50,50,49,0.47);left:0;right:0;padding:8px}.about-wrap .redux-badge small{clear:both;font-weight:600;font-size:14px;text-align:center;position:absolute;bottom:0;background:transparent;left:0;right:0;padding:8px}.about-wrap div.icon{width:0 !important;padding:0;margin:20px 0 !important}.about-wrap figure figcaption::before,.about-wrap figure figcaption::after{position:absolute;top:15px;right:15px;bottom:15px;left:15px;content:"";opacity:0;-webkit-transition:opacity .35s,-webkit-transform .35s;transition:opacity .35s,-webkit-transform .35s;transition:opacity .35s,transform .35s;transition:opacity .35s,transform .35s,-webkit-transform .35s}.about-wrap figure figcaption::before{border-top:1px solid #fff;border-bottom:1px solid #fff;-webkit-transform:scale(0,1);transform:scale(0,1)}.about-wrap figure figcaption::after{border-right:1px solid #fff;border-left:1px solid #fff;-webkit-transform:scale(1,0);transform:scale(1,0)}.about-wrap figure p{padding:10px;text-transform:none;opacity:0;margin-top:0 !important;-webkit-transition:opacity .35s,-webkit-transform .35s;transition:opacity .35s,-webkit-transform .35s;transition:opacity .35s,transform .35s;transition:opacity .35s,transform .35s,-webkit-transform .35s;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}.redux-message .twitter-share-button,p.redux-actions .twitter-share-button{margin-top:-3px;margin-left:3px;vertical-align:middle}.redux-message a.review-us,p.redux-actions a.review-us{opacity:.5;text-decoration:none !important}.redux-message a.button-demo,p.redux-actions a.button-demo{margin-left:15px;color:#a00}.redux-message a.button-demo.active,p.redux-actions a.button-demo.active{color:#d98500}#redux-message{margin:5px 0 15px;margin-top:15px !important;display:block !important;border-color:#00a2e3}#redux-message h4{margin-top:.5em}.redux-product{margin-bottom:15px;border:1px solid #ccc;background:#fff;padding:0 20px;min-width:350px;float:left;margin-right:20px}.redux-product .name{color:#23282d;font-size:32px;font-weight:100;margin:10px 0 0;line-height:1.3;word-wrap:break-word;overflow-wrap:break-word;text-align:left}.redux-product .version{color:#72777c;font-size:13px;font-weight:400;float:none;display:inline-block;margin-left:10px}.redux-product .author{margin:15px 0 25px;color:#72777c;font-size:16px;font-weight:400;line-height:inherit}.redux-product .type{margin-left:5px;background-color:#f0ad4e;display:inline;padding:.2em .5em .2em;font-weight:400;line-height:1;font-size:12px;color:#fff !important;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.redux-product .type.theme{background-color:#0099d5}.hide{display:none !important}@media screen and (max-width:500px){.about-wrap h2 .nav-tab{width:100%;padding:0;height:40px;line-height:40px;text-align:center;margin:10px 0}.about-wrap h2.nav-tab-wrapper{padding:0;width:100%}}
|
||||
@@ -0,0 +1,243 @@
|
||||
$green: #7ad03a;
|
||||
$red: #a00;
|
||||
$orange: #ffba00;
|
||||
$blue: #2ea2cc;
|
||||
|
||||
#wpbody-content .wrap {
|
||||
height: auto !important;
|
||||
overflow: initial !important;
|
||||
max-width: initial !important;
|
||||
}
|
||||
|
||||
.about-wrap {
|
||||
hr {
|
||||
border: inherit;
|
||||
border-top: 1px solid #ccc;
|
||||
}
|
||||
|
||||
#footer-upgrade {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.redux-badge {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
|
||||
background: #00a2e3;
|
||||
padding: 20px;
|
||||
|
||||
color: #efefef;
|
||||
margin: 5px 0 0 0;
|
||||
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
|
||||
|
||||
&::before {
|
||||
color: #fff;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
font-size: 80px;
|
||||
font-weight: normal;
|
||||
width: 165px;
|
||||
height: 165px;
|
||||
line-height: 165px;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
margin: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.el {
|
||||
background: #00a2e3;
|
||||
display: block !important;
|
||||
font-size: 8em;
|
||||
color: #fff;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
span {
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
background: rgba(50, 50, 49, 0.47);
|
||||
left: 0;
|
||||
right: 0;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
small {
|
||||
clear: both;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
background: transparent;
|
||||
left: 0;
|
||||
right: 0;
|
||||
padding: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
div.icon {
|
||||
width: 0 !important;
|
||||
padding: 0;
|
||||
margin: 20px 0 !important;
|
||||
}
|
||||
|
||||
figure {
|
||||
figcaption {
|
||||
&::before,
|
||||
&::after {
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
right: 15px;
|
||||
bottom: 15px;
|
||||
left: 15px;
|
||||
content: "";
|
||||
opacity: 0;
|
||||
-webkit-transition: opacity 0.35s, -webkit-transform 0.35s;
|
||||
transition: opacity 0.35s, transform 0.35s;
|
||||
}
|
||||
|
||||
&::before {
|
||||
border-top: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
transform: scale(0, 1);
|
||||
}
|
||||
|
||||
&::after {
|
||||
border-right: 1px solid #fff;
|
||||
border-left: 1px solid #fff;
|
||||
transform: scale(1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
p {
|
||||
padding: 10px;
|
||||
text-transform: none;
|
||||
opacity: 0;
|
||||
margin-top: 0 !important;
|
||||
-webkit-transition: opacity 0.35s, -webkit-transform 0.35s;
|
||||
transition: opacity 0.35s, transform 0.35s;
|
||||
transform: translate3d(0, 20px, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.redux-message,
|
||||
p.redux-actions {
|
||||
.twitter-share-button {
|
||||
margin-top: -3px;
|
||||
margin-left: 3px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
a {
|
||||
&.review-us {
|
||||
opacity: 0.5;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
&.button-demo {
|
||||
margin-left: 15px;
|
||||
color: #a00;
|
||||
|
||||
&.active {
|
||||
color: #d98500;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#redux-message {
|
||||
margin: 5px 0 15px;
|
||||
margin-top: 15px !important;
|
||||
display: block !important;
|
||||
border-color: #00a2e3;
|
||||
|
||||
h4 {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
.redux-product {
|
||||
margin-bottom: 15px;
|
||||
border: 1px solid #ccc;
|
||||
background: #fff;
|
||||
padding: 0 20px;
|
||||
min-width: 350px;
|
||||
float: left;
|
||||
margin-right: 20px;
|
||||
|
||||
.name {
|
||||
color: #23282d;
|
||||
font-size: 32px;
|
||||
font-weight: 100;
|
||||
margin: 10px 0 0;
|
||||
line-height: 1.3;
|
||||
word-wrap: break-word;
|
||||
overflow-wrap: break-word;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.version {
|
||||
color: #72777c;
|
||||
font-size: 13px;
|
||||
font-weight: 400;
|
||||
float: none;
|
||||
display: inline-block;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.author {
|
||||
margin: 15px 0 25px;
|
||||
color: #72777c;
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
.type {
|
||||
margin-left: 5px;
|
||||
background-color: #f0ad4e;
|
||||
display: inline;
|
||||
padding: 0.2em 0.5em 0.2em;
|
||||
font-weight: 400;
|
||||
line-height: 1;
|
||||
font-size: 12px;
|
||||
color: #fff !important;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: baseline;
|
||||
border-radius: 0.25em;
|
||||
|
||||
&.theme {
|
||||
background-color: #0099d5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hide {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 500px) {
|
||||
.about-wrap h2 {
|
||||
.nav-tab {
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
text-align: center;
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
&.nav-tab-wrapper {
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user