--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/wp-content/plugins/duplicator/inc/javascript.php Mon Dec 03 16:30:36 2012 -0800
@@ -0,0 +1,460 @@
+<script type="text/javascript">
+
+jQuery.noConflict()(function($) {
+ jQuery(document).ready(function() {
+
+ //Unique namespace
+ Duplicator = new Object();
+ Duplicator.DEBUG_AJAX_RESPONSE = false;
+ Duplicator.AJAX_TIMER = null;
+
+ Duplicator.startAjaxTimer = function() {
+ Duplicator.AJAX_TIMER = new Date();
+ }
+
+ Duplicator.endAjaxTimer = function() {
+ var endTime = new Date();
+ Duplicator.AJAX_TIMER = (endTime.getTime() - Duplicator.AJAX_TIMER) /1000;
+ }
+
+ /** **********************************************
+ * METHOD: Duplicator.setStatus
+ * Sets the status of the Duplicator status bar */
+ Duplicator.setStatus = function(msg, img, postmsg) {
+ //Clean Status Bar
+ $("#img-status-error").hide();
+ $("#img-status-progress").hide();
+
+ $('#span-status').html(msg);
+ switch (img) {
+ case 'error' : $("#img-status-error").show('slow'); break;
+ case 'progress' : $("#img-status-progress").show('slow'); break;
+ }
+ $('#span-status-post').html(postmsg);
+ }
+
+
+ /** **********************************************
+ * METHOD: Duplicator.toggleToolbarState
+ * Disables or enables the toolbar
+ * @param state Disabled/Enabled */
+ Duplicator.toggleToolbarState = function(state) {
+ if (state == "DISABLED") {
+ $('#toolbar-table input, div#duplicator-installer').attr("disabled", "true");
+ $('#toolbar-table input, div#duplicator-installer').css("background-color", "#efefef");
+ } else {
+ $('#toolbar-table input, div#duplicator-installer').removeAttr("disabled");
+ $('#toolbar-table input, div#duplicator-installer').css("background-color", "#f9f9f9");
+ }
+ }
+
+
+ /** **********************************************
+ * METHOD: Duplicator.reload
+ * Performs reloading the page and diagnotic handleing */
+ Duplicator.reload = function(data) {
+ if (Duplicator.DEBUG_AJAX_RESPONSE) {
+ Duplicator.showSystemError('debug on', data);
+ } else {
+ Duplicator.toggleToolbarState("ENABLED");
+ window.location.reload();
+ }
+ }
+
+
+ /** **********************************************
+ * METHOD: Duplicator.createPackage
+ * Performs Ajax post to create a new package
+ * Timeout (10000000 = 166 minutes) */
+ Duplicator.createPackage = function(packname) {
+ Duplicator.toggleToolbarState("DISABLED");
+
+ $.ajax({
+ type: "POST",
+ url: ajaxurl,
+ timeout: 10000000,
+ data: "package_name=" + packname +"&action=duplicator_create",
+ beforeSend: function() {Duplicator.startAjaxTimer(); },
+ complete: function() {Duplicator.endAjaxTimer(); },
+ success: function(data) {
+ Duplicator.reload(data);
+ },
+ error: function(data) {
+ Duplicator.showSystemError('Duplicator.createPackage', data);
+ Duplicator.toggleToolbarState("ENABLED");
+ }
+ });
+ }
+
+
+ /** **********************************************
+ * METHOD: Save Settings
+ * Saves the Settings */
+ Duplicator.saveSettings = function() {
+ var q;
+ var email_me = $('#email-me').is(':checked') ? 1 : 0;
+ var dbiconv = $('#dbiconv').is(':checked') ? 1 : 0;
+ var log_level = $("select#log_level").val() ? $("select#log_level").val() : 0;
+ var email_others = $("input#email_others").val();
+ var dir_bypass = $("textarea#dir_bypass").val();
+ var rm_snapshot = $('#rm_snapshot').is(':checked') ? 1 : 0;
+
+ //append semicolon if user forgot
+ if (dir_bypass.length > 1) {
+ var has_semicolon = dir_bypass.charAt(dir_bypass.length - 1) == ";";
+ var dir_bypass = (has_semicolon) ? dir_bypass : dir_bypass + ";";
+ $("textarea#dir_bypass").val(dir_bypass);
+ }
+
+ $.ajax({
+ type: "POST",
+ url: ajaxurl,
+ timeout: 10000000,
+ data:
+ {
+ 'action' : 'duplicator_settings',
+ 'dbhost' : $("input#dbhost").val(),
+ 'dbname' : $("input#dbname").val(),
+ 'dbuser' : $("input#dbuser").val(),
+ 'nurl' : $("input#nurl").val(),
+ 'dbiconv' : dbiconv,
+ 'email-me' : email_me,
+ 'email_others' : email_others,
+ 'max_time' : $("input#max_time").val(),
+ 'max_memory' : $("input#max_memory").val(),
+ 'skip_ext' : $("input#skip_ext").val(),
+ 'dir_bypass' : $("textarea#dir_bypass").val(),
+ 'log_level' : log_level,
+ 'rm_snapshot' : rm_snapshot
+ },
+ beforeSend: function() {Duplicator.startAjaxTimer(); },
+ complete: function() {Duplicator.endAjaxTimer(); },
+ success: function(data) {
+ $('#opts-save-btn').val("<?php _e('Saving', 'wpduplicator') ?>...");
+ window.location.reload();
+ },
+ error: function(data) {
+ Duplicator.showSystemError('Duplicator.saveSettings', data);
+ }
+ });
+ }
+
+
+ /** **********************************************
+ * METHOD: Delete Package
+ * Removes all selected package sets */
+ Duplicator.deletePackage = function (event) {
+ var arr = new Array;
+ var count = 0;
+ $("input[name=delete_confirm]").each(function() {
+ if (this.checked) { arr[count++] = this.id; }
+ });
+ var list = arr.join(',');
+ if (list.length == 0) {
+ alert("<?php _e('Please select at least one package to delete.', 'wpduplicator') ?>");
+ return;
+ }
+
+ var answer = confirm("<?php _e('Are you sure, you want to delete the selected package(s)?', 'wpduplicator') ?>");
+ if (answer){
+ $.ajax({
+ type: "POST",
+ url: ajaxurl,
+ data: "duplicator_delid="+list+"&action=duplicator_delete",
+ beforeSend: function() {Duplicator.startAjaxTimer(); },
+ complete: function() {Duplicator.endAjaxTimer(); },
+ success: function(data) {
+ Duplicator.reload(data);
+ },
+ error: function(data) {
+ Duplicator.showSystemError('Duplicator.deletePackage', data);
+ }
+ });
+ } else {
+ Duplicator.setStatus("<?php _e('Ready to create new package.', 'wpduplicator') ?>");
+ }
+ if (event)
+ event.preventDefault();
+ };
+
+
+ /** **********************************************
+ * ATTACHED EVENT: Submit Main Form
+ * Process Package and Installer */
+ $("#form-duplicator").submit(function (event) {
+ event.preventDefault();
+
+ //Validate length test
+ if ($("input[name=package_name]").val().length <= 0) {
+ Duplicator.setStatus("<?php _e('Please enter a backup name.', 'wpduplicator') ?>", "error");
+ return;
+ }
+
+ //Vatlidate alphanumeric test
+ var newstring = $("input[name=package_name]").val().replace(/ /g, "");
+ $("input[name=package_name]").val(newstring)
+ if ( ! /^[0-9A-Za-z|_]+$/.test($("input[name=package_name]").val())) {
+ Duplicator.setStatus("<?php _e('Alpanumeric characters only on package name', 'wpduplicator') ?>", "error");
+ return;
+ }
+
+ var packname = $("input[name=package_name]").val();
+
+ $.ajax({
+ type: "POST",
+ url: ajaxurl,
+ dataType: "json",
+ timeout: 10000000,
+ data: "duplicator_new="+ packname +"&action=duplicator_system_check",
+ beforeSend: function() {
+ Duplicator.setStatus("<?php _e("Evaluating WordPress Setup. Please Wait", 'wpduplicator') ?>...", 'progress');
+ },
+ success: function(data) {
+ Duplicator.setStatus("<?php _e('Ready to create new package.', 'wpduplicator') ?>");
+ if (data.Success) {
+ Duplicator.showCreateConfirmation(packname);
+ } else {
+ Duplicator.showSystemCheck(data);
+ }
+ },
+ error: function(data) {
+ Duplicator.showSystemError('form-duplicator submit', data);
+ }
+ });
+ });
+
+
+ /* ============================================================================
+ MAIN GRID
+ Actions that revolve around the main grid */
+ $("input#select-all").click(function (event) {
+ var state = $('input#select-all').is(':checked') ? 1 : 0;
+ $("input[name=delete_confirm]").each(function() {
+ this.checked = (state) ? true : false;
+ Duplicator.rowColor(this);
+ });
+ });
+
+ Duplicator.rowColor = function(chk) {
+ if (chk.checked) {
+ $(chk).parent().parent().css("text-decoration", "line-through");
+ } else {
+ $(chk).parent().parent().css("text-decoration", "none");
+ }
+ }
+
+ Duplicator.toggleDetail = function(id) {
+ $('#' + id).toggle();
+ return false;
+ }
+
+
+ Duplicator.downloadFile = function(name, button) {
+ $(button).addClass('dup-button-selected');
+ window.open(name, '_self');
+ return false;
+ }
+
+
+
+ /* ============================================================================
+ DIALOG: WINDOWS
+ Browser Specific. IE9 does not support modal correctly this is a workaround */
+ Duplicator._dlgCreate = function(evt, ui) {
+ if (! $.browser.msie) {
+ $('#' + this.id).dialog('option', 'modal', true);
+ $('#' + this.id).dialog('option', 'draggable', true);
+ } else {
+ $('#' + this.id).dialog('option', 'draggable', false);
+ $('#' + this.id).dialog('option', 'open', function() {$("div#wpwrap").addClass('ie-simulated-overlay');} );
+ }
+ }
+ Duplicator._dlgClose = function(evt, ui) {
+ if ($.browser.msie) {$("div#wpwrap").removeClass('ie-simulated-overlay');}
+ }
+ $("#dialog-options").dialog( {autoOpen:false, height:610, width:750, create:Duplicator._dlgCreate, close:Duplicator._dlgClose });
+ $("#dup-dlg-system-check").dialog({autoOpen:false, height:600, width:700, create:Duplicator._dlgCreate, close:Duplicator._dlgClose, modal: true, buttons: {<?php _e("Cancel", 'wpduplicator') ?>: function() { $(this).dialog("close");}}});
+ $("#dup-dlg-system-error").dialog({autoOpen:false, height:550, width:650, create:Duplicator._dlgCreate, close:Duplicator._dlgClose });
+ $("#dup-dlg-quick-path").dialog({autoOpen:false, height:355, width:800, create:Duplicator._dlgCreate, close:Duplicator._dlgClose });
+ $("#dup-dlg-package-confirm").dialog(
+ {autoOpen:false, height:285, width:625, create:Duplicator._dlgCreate, close:Duplicator._dlgClose,
+ buttons: {
+ "<?php _e('Create Package Set', 'wpduplicator') ?>" : function() {
+ $(this).dialog("close");
+ Duplicator.processCreateConfirmation(true);
+ },
+ Cancel: function() {
+ $(this).dialog("close");
+ Duplicator.processCreateConfirmation(false);
+ }
+ }
+ }
+ );
+
+
+ /* ============================================================================
+ DIALOG: OPTIONS DIALOG
+ Actions that revolve around the options dialog */
+ $("#dup-tabs-opts").tabs();
+ Duplicator.optionsAppendByPassList = function(path) {
+ Duplicator.optionsOpen();
+ $('#dir_bypass').append(path + ";");
+ $('#dup-tabs-opts').tabs('option', 'selected', 0);
+ $('#dir_bypass').animate({ borderColor: "blue", borderWidth: 2 }, 3000);
+ $('#dir_bypass').animate({ borderColor: "#dfdfdf", borderWidth: 1 }, 100);
+ }
+ Duplicator.optionsOpen = function() {$("div#dialog-options").dialog("open");}
+ Duplicator.optionsClose = function() {$('div#dialog-options').dialog('close');}
+
+
+ /* ============================================================================
+ DIALOG: SYSTEM-CHECKS
+ Actions that revolve around the systems check dialog */
+ Duplicator.showSystemCheck = function(data) {
+ //Set Pass/Fail Flags
+ for (key in data) {
+ var html = (data[key] == 'Fail') ? "<div class='dup-sys-fail'>Fail</div>" : "<div class='dup-sys-pass'>Pass</div>";
+ $("#" + key).html(html)
+ }
+
+ $('#system-check-msg').animate({ scrollTop: $('#system-check-msg').attr("scrollHeight") }, 2000)
+ $("#dup-dlg-system-check").dialog("open");
+ Duplicator.setStatus("<?php _e('Ready to create new package.', 'wpduplicator'); ?>");
+ }
+
+ //Performs the ajax request for a system check
+ Duplicator.getSystemCheck = function() {
+ Duplicator.setStatus("<?php _e('Checking System Status. Please Wait!', 'wpduplicator'); ?>", 'progress');
+ $.ajax({
+ type: "POST",
+ url: ajaxurl,
+ dataType: "json",
+ timeout: 10000000,
+ data: "action=duplicator_system_check",
+ beforeSend: function() {Duplicator.startAjaxTimer(); },
+ complete: function() {Duplicator.endAjaxTimer(); },
+ success: function(data) {Duplicator.showSystemCheck(data);},
+ error: function(data) {
+ Duplicator.showSystemError('Duplicator.getSystemCheck', data);
+ }
+ });
+ }
+
+ //Show the size and file count of the directory to be zipped
+ Duplicator.getSystemDirectory = function() {
+ $.ajax({
+ type: "POST",
+ url: ajaxurl,
+ dataType: "json",
+ timeout: 10000000,
+ data: "action=duplicator_system_directory",
+ beforeSend: function() {
+ Duplicator.startAjaxTimer();
+ var html = "<?php _e('Scanning Please Wait', 'wpduplicator'); ?>... " + "<img src='<?php echo DUPLICATOR_PLUGIN_URL ?>img/progress.gif' style='height:7px; width:46px;' />" ;
+ $('#dup-sys-scannow-data, #dup-dlg-package-confirm-scannow-data').html(html);
+ },
+ complete: function() {Duplicator.endAjaxTimer(); },
+ success: function(data) {
+ var size = data.size || "<?php _e('unreadable', 'wpduplicator'); ?>";
+ var count = data.count || "<?php _e('unreadable', 'wpduplicator'); ?>";
+ var folders = data.folders || "<?php _e('unreadable', 'wpduplicator'); ?>";
+ var flag = (data.flag || size.indexOf("-") != -1) ? "<?php _e('*Scan Error', 'wpduplicator'); ?>" : "";
+ var html = size + " " + count + " <?php _e('Files', 'wpduplicator'); ?>, " + folders + " <?php _e('Folders', 'wpduplicator'); ?> " + flag;
+ $('#dup-sys-scannow-data, #dup-dlg-package-confirm-scannow-data').html("<i>" + html + "</i>");
+
+ },
+ error: function(data) {
+ $('#dup-sys-scannow-data, #dup-dlg-package-confirm-scannow-data').html("<?php _e('error scanning directory', 'wpduplicator'); ?>");
+ Duplicator.showSystemError('Duplicator.getSystemDirectory', data);
+ }
+ });
+ }
+
+ //Toggle the system requirment details
+ Duplicator.showSystemDetails = function() {
+ if ($(this).parents('li').children('div.dup-sys-check-data-details').is(":hidden")) {
+ $(this).children('span').addClass('ui-icon-triangle-1-s').removeClass('ui-icon-triangle-1-e');;
+ $(this).parents('li').children('div.dup-sys-check-data-details').show(250);
+ } else {
+ $(this).children('span').addClass('ui-icon-triangle-1-e').removeClass('ui-icon-triangle-1-s');
+ $(this).parents('li').children('div.dup-sys-check-data-details').hide(250);
+ }
+ }
+
+ //Make the system requirments toggle
+ $('#dup-sys-check-data-reqs a').each(function() {
+ $(this).attr('href', 'javascript:void(0)');
+ $(this).click(Duplicator.showSystemDetails);
+ $(this).prepend("<span class='ui-icon ui-icon-triangle-1-e dup-toggle' />");
+ });
+
+ /* ============================================================================
+ DIALOG: QUICK PATH
+ Shows the Quick Path Dialog 'Show Download Links' */
+ Duplicator.showQuickPath = function(db, install, pack) {
+ $("#dup-dlg-quick-path").dialog("open");
+ var msg = <?php printf('"%s:\n" + db + "\n\n%s:\n" + install + "\n\n%s:\n" + pack;',
+ __("DATABASE", 'wpduplicator'),
+ __("PACKAGE", 'wpduplicator'),
+ __("INSTALLER", 'wpduplicator'));
+ ?>
+ $("#dup-dlg-quick-path-data").val(msg);
+
+ return false;
+ }
+
+ Duplicator.selectQuickPath = function() {$('#dup-dlg-quick-path-data').select();}
+ $(".dup-dlg-quick-path-download-link").button({ icons: {primary: "ui-icon-locked"} });
+ $(".dup-dlg-quick-path-database-link").button({ icons: {primary: "ui-icon-script"} });
+ $(".dup-installer-btn").button({ icons: {primary: "ui-icon-disk"} });
+
+
+ /* ============================================================================
+ DIALOG: SYSTEM ERROR
+ Show the Sytem Error Dialog */
+ Duplicator.showSystemError = function(action, xhrData) {
+ Duplicator.endAjaxTimer();
+ var time = Duplicator.AJAX_TIMER || 'not set';
+ var msg = '<?php _e('AJAX Response', 'wpduplicator') ?>' + ' ' + action + '<br/>';
+ msg += "duration: " + time + " secs<br/>code: " + xhrData.status + "<br/>status: " + xhrData.statusText + "<br/>response: " + xhrData.responseText;
+ $("#dup-system-err-msg2").html(msg);
+ $("#dup-dlg-system-error").dialog("open");
+ Duplicator.setStatus("<?php _e('Ready to create new package.', 'wpduplicator'); ?>");
+ }
+
+
+ /* ============================================================================
+ DIALOG: CREATE PACKAGE CONFIRMATION
+ Show the Create package dialog */
+ Duplicator.showCreateConfirmation = function(packname) {
+ $("#dup-dlg-package-confirm-msg").html(packname);
+ $("#dup-dlg-package-confirm").dialog('open');
+ }
+
+ Duplicator.processCreateConfirmation = function(result) {
+ if (result) {
+ var msg = "<?php _e('Creating package may take several minutes. Please Wait... ', 'wpduplicator'); ?>";
+ var postmsg = "<?php printf(" <a href='javascript:void(0)' onclick='Duplicator.openLog()'>[%s]</a>", __('Preview Log', 'wpduplicator'));?>";
+ Duplicator.setStatus(msg, 'progress', postmsg);
+ Duplicator.createPackage($("input[name=package_name]").val());
+ } else {
+ Duplicator.setStatus("<?php _e('Ready to create new package.', 'wpduplicator') ?>");
+ }
+ return result;
+ }
+
+
+ /* ============================================================================
+ MISC ROUTINES */
+ $("div#div-render-blanket").show();
+ Duplicator.newWindow = function(url) {window.open(url);}
+
+ Duplicator.openLog = function() {
+ window.open('<?php echo DUPLICATOR_PLUGIN_URL .'files/log-view.php'; ?>', 'duplicator_logs');
+ }
+
+
+
+ });
+});
+</script>