61 lines
1.7 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\Modules\FloatingButtons\Classes\Render;
use Elementor\Modules\FloatingButtons\Base\Widget_Floating_Bars_Base;
/**
* Class Floating_Bars_Render_Base.
*
* This is the base class that will hold shared functionality that will be needed by all the various widget versions.
*
* @since 3.23.0
*/
abstract class Floating_Bars_Render_Base {
protected Widget_Floating_Bars_Base $widget;
protected array $settings;
abstract public function render(): void;
public function __construct( Widget_Floating_Bars_Base $widget ) {
$this->widget = $widget;
$this->settings = $widget->get_settings_for_display();
}
protected function add_layout_render_attribute( $layout_classnames ) {
$this->widget->add_render_attribute( 'layout', [
'class' => $layout_classnames,
'id' => $this->settings['advanced_custom_css_id'],
'data-document-id' => get_the_ID(),
'role' => 'alertdialog',
] );
}
public static function get_layout_classnames( Widget_Floating_Bars_Base $widget, array $settings ): string {
$layout_classnames = 'e-floating-bars e-' . $widget->get_name();
$vertical_position = $settings['advanced_vertical_position'];
$is_sticky = $settings['advanced_toggle_sticky'];
$has_close_button = $settings['floating_bar_close_switch'];
$layout_classnames .= ' has-vertical-position-' . $vertical_position;
if ( 'yes' === $has_close_button ) {
$layout_classnames .= ' has-close-button';
}
if ( 'yes' === $is_sticky ) {
$layout_classnames .= ' is-sticky';
}
return $layout_classnames;
}
protected function build_layout_render_attribute(): void {
$layout_classnames = static::get_layout_classnames( $this->widget, $this->settings );
$this->add_layout_render_attribute( $layout_classnames );
}
}