Viewing File: /usr/local/cpanel/whostmgr/docroot/js2/transfer_session.js
/* global DOM:false, EVENT:false */
/* jshint -W020 */
/* jshint -W030 */
/* jshint -W004 */
/* jshint -W117 */
/* jshint -W098 */
(function() {
var alertFallback = true;
if (typeof console === "undefined" || typeof console.log === "undefined") {
console = {};
if (alertFallback) {
console.log = function(msg) {
alert(msg);
};
} else {
console.log = function() {};
}
}
var quickDiv = function(thisid, thisclass, thisinner) {
var thisDiv = document.createElement("div");
thisDiv.id = thisid;
if (thisclass) {
thisDiv.className = thisclass;
}
if (thisinner) {
thisDiv.innerHTML = thisinner;
}
return thisDiv;
};
var quickButton = function(thisid, thisvalue) {
var thisButton = document.createElement("button");
try {
thisButton.type = "button";
} catch (e) {
}
thisButton.className = "btn btn-primary";
thisButton.id = thisid;
thisButton.name = thisid;
thisButton.title = thisvalue;
var thisButtonHtml = document.createElement("div");
thisButtonHtml.className = "button-text";
thisButton.appendChild(thisButtonHtml);
return thisButton;
};
var createOverviewDiv = function() {
var containerEl = document.getElementById("content"),
overviewContainer = quickDiv("overview", "row"),
overviewColumn = quickDiv("overviewCol", "col-md-6"),
overviewDiv = quickDiv("overviewWell", "well text-info clearfix"),
stateDiv = quickDiv("state", "overview_bar"),
mainspinDiv = quickDiv("mainspin", "overview_bar"),
spinImg = document.createElement("img");
var pauseButton;
spinImg.src = CPANEL.PAGE.spinner16;
spinImg.className = "spinner";
spinImg.id = "main_spinner";
mainspinDiv.appendChild(spinImg);
var controlDiv = quickDiv("control", "overview_bar");
if (CPANEL.PAGE.state === "PAUSED") {
pauseButton = quickButton("pause", LOCALE.maketext("Pause"));
} else if (CPANEL.PAGE.state === "PAUSING") {
pauseButton = quickButton("pause", LOCALE.maketext("Pausing …"));
} else {
pauseButton = quickButton("pause", LOCALE.maketext("Resume"));
}
DOM.addClass(pauseButton, "control_button");
controlDiv.appendChild(pauseButton);
var abortButton;
if (CPANEL.PAGE.state === "RUNNING" || CPANEL.PAGE.state === "PENDING") {
abortButton = quickButton("abort", LOCALE.maketext("Abort"));
} else if (CPANEL.PAGE.state === "ABORTING") {
abortButton = quickButton("abort", LOCALE.maketext("Aborting …"));
} else {
abortButton = quickButton("abort", LOCALE.maketext("Loading …"));
}
DOM.addClass(abortButton, "control_button");
controlDiv.appendChild(abortButton);
overviewContainer.appendChild(overviewColumn);
overviewColumn.appendChild(overviewDiv);
overviewDiv.appendChild(mainspinDiv);
overviewDiv.appendChild(stateDiv);
overviewDiv.appendChild(controlDiv);
containerEl.insertBefore(overviewContainer, containerEl.childNodes[0]);
};
var TransferAlertHandler = function() {
this._currentPrompt;
this._alerts = [];
this._showNextPrompt = function() {
if (this._alerts.length) {
var nextDialogOptions = this._alerts.shift();
this._showPrompt(nextDialogOptions);
}
};
this._showPrompt = function(settings) {
var self = this;
var options = settings.options || {};
var defaultOptions = {
modal: true,
close: true,
fixedcenter: true,
show_status: true,
progress_overlay: false,
hideaftersubmit: true,
width: "500px",
zIndex: 3
};
options = YAHOO.lang.augmentObject(options, defaultOptions);
this._currentPrompt = new CPANEL.ajax.Common_Dialog(settings.dialogID, options);
this._currentPrompt.hideEvent.subscribe(function(o) {
setTimeout(function() {
self._currentPrompt = null;
self._showNextPrompt.call(self);
}, 50);
});
this._currentPrompt.setHeader("<div class='lt'></div><span>" + settings.header + "</span><div class='rt'></div>");
this._currentPrompt.setBody("<p width=400>" + settings.body + "</p>");
if (settings.confirmFunction) {
this._currentPrompt.submitEvent.subscribe(function() {
settings.confirmFunction.call(settings.confirmFunctionContext);
});
}
this._currentPrompt.center();
this._currentPrompt.show();
};
this._addPrompt = function(options) {
this._alerts.push(options);
if (!this._currentPrompt) {
this._showNextPrompt();
}
};
this.alert = function(header, body) {
/* if the state is changing from running to pausing, display message regarding pause delay */
var header = header || LOCALE.maketext("Alert");
var buttons = [];
var options = {
"dialogID": "commonAlert",
"header": header,
"body": body,
"options": {
buttons: [
YAHOO.lang.augmentObject({
text: LOCALE.maketext("OK")
}, CPANEL.ajax.Common_Dialog.default_options.buttons[0])
]
}
};
return this._addPrompt.call(this, options);
};
this.confirm = function(header, body, confirmFunction, confirmFunctionContext) {
/* if the state is changing from running to pausing, display message regarding pause delay */
var header = header || LOCALE.maketext("Confirm");
var buttons = [];
var options = {
"dialogID": "commonConfirm",
"header": header,
"body": body,
"options": {
buttons: []
},
"confirmFunction": confirmFunction,
"confirmFunctionContext": confirmFunctionContext
};
while (options.options.buttons.length < CPANEL.ajax.Common_Dialog.default_options.buttons.length) {
var nIndex = options.options.buttons.length;
options.options.buttons[nIndex] = YAHOO.lang.augmentObject({}, CPANEL.ajax.Common_Dialog.default_options.buttons[nIndex]);
}
return this._addPrompt.call(this, options);
};
};
/**
* Callback function for state change of transfer session
* @method transferSessionStateChanged
* @param {state} new state the _masterProcessorObj was set to
* @param {oldState} old state the _masterProcessorObj was previously set to
*/
var transferSessionStateChanged = function(state, oldState) {
var header;
var body;
var dialogId;
if (state === "PAUSING" && oldState === "RUNNING") {
/* if the state is changing from running to pausing, display message regarding pause delay */
header = LOCALE.maketext("Pausing queue processing …");
body = LOCALE.maketext("The system will not add new items to the queue until you choose to resume. In order to prevent data loss, the system will complete ongoing operations.");
dialogId = "pauseMessage";
} else if (state === "ABORTING" && (oldState === "RUNNING" || oldState === "PAUSED")) {
header = LOCALE.maketext("Abort Session Processing");
body = LOCALE.maketext("The system will abort any transfer processes as soon as possible. In order to prevent data loss, the system will complete ongoing restore operations before the entire session aborts.");
dialogId = "abortMessage";
}
if (dialogId) {
window.AlertHandler.alert(header, body);
}
};
var initFn = function() {
createOverviewDiv();
var appNameEl = ((document.getElementsByTagName("h1"))[0].getElementsByTagName("span"))[0];
window.AlertHandler = new TransferAlertHandler();
var transfer_opts = {
"transfer_session_id": CPANEL.PAGE.transfer_session_id,
"appNameEl": appNameEl,
"action": CPANEL.PAGE.action,
"windowsEl": DOM.get("windows"),
"pauseEl": DOM.get("pause"),
"abortEl": DOM.get("abort"),
"stateEl": DOM.get("state"),
"errorEl": DOM.get("error_messages"),
"errorMessage": DOM.get("errorDetailsMessage"),
"errorContent": DOM.get("errorDetailsWrapper"),
"summaryHeaderEl": DOM.get("summary_header"),
"state": CPANEL.PAGE.state,
"spinnerHTML": "<img src='" + CPANEL.PAGE.spinner16 + "' class='spinner'>"
};
var transferSessionObj = new TransferSession(transfer_opts);
transferSessionObj.add_state_change_listener(window, transferSessionStateChanged);
transferSessionObj.init();
};
EVENT.onDOMReady(initFn);
})();
Back to Directory
File Manager