🏨 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>
141 lines
4.3 KiB
JavaScript
141 lines
4.3 KiB
JavaScript
/**
|
|
* SWFUpload fallback
|
|
*
|
|
* @since 4.9.0
|
|
*/
|
|
|
|
var SWFUpload;
|
|
|
|
( function () {
|
|
function noop() {}
|
|
|
|
if (SWFUpload == undefined) {
|
|
SWFUpload = function (settings) {
|
|
this.initSWFUpload(settings);
|
|
};
|
|
}
|
|
|
|
SWFUpload.prototype.initSWFUpload = function ( settings ) {
|
|
function fallback() {
|
|
var $ = window.jQuery;
|
|
var $placeholder = settings.button_placeholder_id ? $( '#' + settings.button_placeholder_id ) : $( settings.button_placeholder );
|
|
|
|
if ( ! $placeholder.length ) {
|
|
return;
|
|
}
|
|
|
|
var $form = $placeholder.closest( 'form' );
|
|
|
|
if ( ! $form.length ) {
|
|
$form = $( '<form enctype="multipart/form-data" method="post">' );
|
|
$form.attr( 'action', settings.upload_url );
|
|
$form.insertAfter( $placeholder ).append( $placeholder );
|
|
}
|
|
|
|
$placeholder.replaceWith(
|
|
$( '<div>' )
|
|
.append(
|
|
$( '<input type="file" multiple />' ).attr({
|
|
name: settings.file_post_name || 'async-upload',
|
|
accepts: settings.file_types || '*.*'
|
|
})
|
|
).append(
|
|
$( '<input type="submit" name="html-upload" class="button" value="Upload" />' )
|
|
)
|
|
);
|
|
}
|
|
|
|
try {
|
|
// Try the built-in fallback.
|
|
if ( typeof settings.swfupload_load_failed_handler === 'function' && settings.custom_settings ) {
|
|
|
|
window.swfu = {
|
|
customSettings: settings.custom_settings
|
|
};
|
|
|
|
settings.swfupload_load_failed_handler();
|
|
} else {
|
|
fallback();
|
|
}
|
|
} catch ( ex ) {
|
|
fallback();
|
|
}
|
|
};
|
|
|
|
SWFUpload.instances = {};
|
|
SWFUpload.movieCount = 0;
|
|
SWFUpload.version = "0";
|
|
SWFUpload.QUEUE_ERROR = {};
|
|
SWFUpload.UPLOAD_ERROR = {};
|
|
SWFUpload.FILE_STATUS = {};
|
|
SWFUpload.BUTTON_ACTION = {};
|
|
SWFUpload.CURSOR = {};
|
|
SWFUpload.WINDOW_MODE = {};
|
|
|
|
SWFUpload.completeURL = noop;
|
|
SWFUpload.prototype.initSettings = noop;
|
|
SWFUpload.prototype.loadFlash = noop;
|
|
SWFUpload.prototype.getFlashHTML = noop;
|
|
SWFUpload.prototype.getFlashVars = noop;
|
|
SWFUpload.prototype.getMovieElement = noop;
|
|
SWFUpload.prototype.buildParamString = noop;
|
|
SWFUpload.prototype.destroy = noop;
|
|
SWFUpload.prototype.displayDebugInfo = noop;
|
|
SWFUpload.prototype.addSetting = noop;
|
|
SWFUpload.prototype.getSetting = noop;
|
|
SWFUpload.prototype.callFlash = noop;
|
|
SWFUpload.prototype.selectFile = noop;
|
|
SWFUpload.prototype.selectFiles = noop;
|
|
SWFUpload.prototype.startUpload = noop;
|
|
SWFUpload.prototype.cancelUpload = noop;
|
|
SWFUpload.prototype.stopUpload = noop;
|
|
SWFUpload.prototype.getStats = noop;
|
|
SWFUpload.prototype.setStats = noop;
|
|
SWFUpload.prototype.getFile = noop;
|
|
SWFUpload.prototype.addFileParam = noop;
|
|
SWFUpload.prototype.removeFileParam = noop;
|
|
SWFUpload.prototype.setUploadURL = noop;
|
|
SWFUpload.prototype.setPostParams = noop;
|
|
SWFUpload.prototype.addPostParam = noop;
|
|
SWFUpload.prototype.removePostParam = noop;
|
|
SWFUpload.prototype.setFileTypes = noop;
|
|
SWFUpload.prototype.setFileSizeLimit = noop;
|
|
SWFUpload.prototype.setFileUploadLimit = noop;
|
|
SWFUpload.prototype.setFileQueueLimit = noop;
|
|
SWFUpload.prototype.setFilePostName = noop;
|
|
SWFUpload.prototype.setUseQueryString = noop;
|
|
SWFUpload.prototype.setRequeueOnError = noop;
|
|
SWFUpload.prototype.setHTTPSuccess = noop;
|
|
SWFUpload.prototype.setAssumeSuccessTimeout = noop;
|
|
SWFUpload.prototype.setDebugEnabled = noop;
|
|
SWFUpload.prototype.setButtonImageURL = noop;
|
|
SWFUpload.prototype.setButtonDimensions = noop;
|
|
SWFUpload.prototype.setButtonText = noop;
|
|
SWFUpload.prototype.setButtonTextPadding = noop;
|
|
SWFUpload.prototype.setButtonTextStyle = noop;
|
|
SWFUpload.prototype.setButtonDisabled = noop;
|
|
SWFUpload.prototype.setButtonAction = noop;
|
|
SWFUpload.prototype.setButtonCursor = noop;
|
|
SWFUpload.prototype.queueEvent = noop;
|
|
SWFUpload.prototype.executeNextEvent = noop;
|
|
SWFUpload.prototype.unescapeFilePostParams = noop;
|
|
SWFUpload.prototype.testExternalInterface = noop;
|
|
SWFUpload.prototype.flashReady = noop;
|
|
SWFUpload.prototype.cleanUp = noop;
|
|
SWFUpload.prototype.fileDialogStart = noop;
|
|
SWFUpload.prototype.fileQueued = noop;
|
|
SWFUpload.prototype.fileQueueError = noop;
|
|
SWFUpload.prototype.fileDialogComplete = noop;
|
|
SWFUpload.prototype.uploadStart = noop;
|
|
SWFUpload.prototype.returnUploadStart = noop;
|
|
SWFUpload.prototype.uploadProgress = noop;
|
|
SWFUpload.prototype.uploadError = noop;
|
|
SWFUpload.prototype.uploadSuccess = noop;
|
|
SWFUpload.prototype.uploadComplete = noop;
|
|
SWFUpload.prototype.debug = noop;
|
|
SWFUpload.prototype.debugMessage = noop;
|
|
SWFUpload.Console = {
|
|
writeLine: noop
|
|
};
|
|
}() );
|