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:
159
wp-content/plugins/elementor/includes/controls/base-units.php
Normal file
159
wp-content/plugins/elementor/includes/controls/base-units.php
Normal file
@@ -0,0 +1,159 @@
|
||||
<?php
|
||||
namespace Elementor;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
/**
|
||||
* Elementor control base units.
|
||||
*
|
||||
* An abstract class for creating new unit controls in the panel.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @abstract
|
||||
*/
|
||||
abstract class Control_Base_Units extends Control_Base_Multiple {
|
||||
|
||||
/**
|
||||
* Get units control default value.
|
||||
*
|
||||
* Retrieve the default value of the units control. Used to return the default
|
||||
* values while initializing the units control.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @access public
|
||||
*
|
||||
* @return array Control default value.
|
||||
*/
|
||||
public function get_default_value() {
|
||||
return [
|
||||
'unit' => 'px',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get units control default settings.
|
||||
*
|
||||
* Retrieve the default settings of the units control. Used to return the default
|
||||
* settings while initializing the units control.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @access protected
|
||||
*
|
||||
* @return array Control default settings.
|
||||
*/
|
||||
protected function get_default_settings() {
|
||||
return [
|
||||
'size_units' => [ 'px' ],
|
||||
'range' => [
|
||||
'px' => [
|
||||
'min' => 0,
|
||||
'max' => 100,
|
||||
'step' => 1,
|
||||
],
|
||||
'em' => [
|
||||
'min' => 0.1,
|
||||
'max' => 10,
|
||||
'step' => 0.1,
|
||||
],
|
||||
'rem' => [
|
||||
'min' => 0.1,
|
||||
'max' => 10,
|
||||
'step' => 0.1,
|
||||
],
|
||||
'%' => [
|
||||
'min' => 0,
|
||||
'max' => 100,
|
||||
'step' => 1,
|
||||
],
|
||||
'deg' => [
|
||||
'min' => 0,
|
||||
'max' => 360,
|
||||
'step' => 1,
|
||||
],
|
||||
'grad' => [
|
||||
'min' => 0,
|
||||
'max' => 400,
|
||||
'step' => 1,
|
||||
],
|
||||
'rad' => [
|
||||
'min' => 0,
|
||||
'max' => 6.2832,
|
||||
'step' => 0.0001,
|
||||
],
|
||||
'turn' => [
|
||||
'min' => 0,
|
||||
'max' => 1,
|
||||
'step' => 0.01,
|
||||
],
|
||||
'vh' => [
|
||||
'min' => 0,
|
||||
'max' => 100,
|
||||
'step' => 1,
|
||||
],
|
||||
'vw' => [
|
||||
'min' => 0,
|
||||
'max' => 100,
|
||||
'step' => 1,
|
||||
],
|
||||
's' => [
|
||||
'min' => 0,
|
||||
'max' => 3,
|
||||
'step' => 0.1,
|
||||
],
|
||||
'ms' => [
|
||||
'min' => 0,
|
||||
'max' => 3000,
|
||||
'step' => 100,
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Print units control settings.
|
||||
*
|
||||
* Used to generate the units control template in the editor.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @access protected
|
||||
*/
|
||||
protected function print_units_template() {
|
||||
?>
|
||||
<# if ( data.size_units && data.size_units.length > 1 ) { #>
|
||||
<div class="e-units-wrapper">
|
||||
<div class="e-units-switcher">
|
||||
<span></span>
|
||||
<i class="eicon-edit" aria-hidden="true"></i>
|
||||
<i class="eicon-angle-right" aria-hidden="true"></i>
|
||||
<span class="elementor-screen-only"><?php echo esc_html__( 'Switch units', 'elementor' ); ?></span>
|
||||
</div>
|
||||
<div class="e-units-choices">
|
||||
<# _.each( data.size_units, function( unit ) { #>
|
||||
<input id="elementor-choose-{{ data._cid + data.name + unit }}" type="radio" name="elementor-choose-{{ data.name + data._cid }}" data-setting="unit" value="{{ unit }}">
|
||||
<label class="elementor-units-choices-label" for="elementor-choose-{{ data._cid + data.name + unit }}" data-choose="{{{ unit }}}">
|
||||
<# if ( 'custom' === unit ) { #>
|
||||
<i class="eicon-edit" aria-hidden="true"></i>
|
||||
<span class="elementor-screen-only"><?php echo esc_html__( 'Custom unit', 'elementor' ); ?></span>
|
||||
<# } else { #>
|
||||
<span>{{{ unit }}}</span>
|
||||
<# } #>
|
||||
</label>
|
||||
<# } ); #>
|
||||
</div>
|
||||
</div>
|
||||
<# } #>
|
||||
<?php
|
||||
}
|
||||
|
||||
public function get_style_value( $css_property, $control_value, array $control_data ) {
|
||||
$return_value = parent::get_style_value( $css_property, $control_value, $control_data );
|
||||
|
||||
if ( 'UNIT' === $css_property && 'custom' === $return_value ) {
|
||||
$return_value = '__EMPTY__';
|
||||
}
|
||||
|
||||
return $return_value;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user