160 lines
3.5 KiB
PHP
Raw Normal View History

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
<?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;
}
}