?? window.js
字號:
this.setSize(this.width, this.height);
if (this.doMaximize)
this.maximize();
if (this.doMinimize)
this.minimize();
},
_createHiddenDiv: function(className) {
var objBody = document.body;
var win = document.createElement("div");
win.setAttribute('id', this.element.id+ "_tmp");
win.className = className;
win.style.display = 'none';
win.innerHTML = '';
objBody.insertBefore(win, objBody.firstChild);
return win;
},
_storeLocation: function() {
if (this.storedLocation == null) {
this.storedLocation = {useTop: this.useTop, useLeft: this.useLeft,
top: this.element.getStyle('top'), bottom: this.element.getStyle('bottom'),
left: this.element.getStyle('left'), right: this.element.getStyle('right'),
width: this.width, height: this.height };
}
},
_restoreLocation: function() {
if (this.storedLocation != null) {
this.useLeft = this.storedLocation.useLeft;
this.useTop = this.storedLocation.useTop;
if (this.useLeft && this.useTop && Window.hasEffectLib && Effect.ResizeWindow)
new Effect.ResizeWindow(this, this.storedLocation.top, this.storedLocation.left, this.storedLocation.width, this.storedLocation.height, {duration: Window.resizeEffectDuration});
else {
this.element.setStyle(this.useLeft ? {left: this.storedLocation.left} : {right: this.storedLocation.right});
this.element.setStyle(this.useTop ? {top: this.storedLocation.top} : {bottom: this.storedLocation.bottom});
this.setSize(this.storedLocation.width, this.storedLocation.height);
}
Windows.resetOverflow();
this._removeStoreLocation();
}
},
_removeStoreLocation: function() {
this.storedLocation = null;
},
_saveCookie: function() {
if (this.cookie) {
var value = "";
if (this.useLeft)
value += "l:" + (this.storedLocation ? this.storedLocation.left : this.element.getStyle('left'))
else
value += "r:" + (this.storedLocation ? this.storedLocation.right : this.element.getStyle('right'))
if (this.useTop)
value += ",t:" + (this.storedLocation ? this.storedLocation.top : this.element.getStyle('top'))
else
value += ",b:" + (this.storedLocation ? this.storedLocation.bottom :this.element.getStyle('bottom'))
value += "," + (this.storedLocation ? this.storedLocation.width : this.width);
value += "," + (this.storedLocation ? this.storedLocation.height : this.height);
value += "," + this.isMinimized();
value += "," + this.isMaximized();
WindowUtilities.setCookie(value, this.cookie)
}
},
_createWiredElement: function() {
if (! this.wiredElement) {
if (Prototype.Browser.IE)
this._getWindowBorderSize();
var div = document.createElement("div");
div.className = "wired_frame " + this.options.className + "_wired_frame";
div.style.position = 'absolute';
this.options.parent.insertBefore(div, this.options.parent.firstChild);
this.wiredElement = $(div);
}
if (this.useLeft)
this.wiredElement.setStyle({left: this.element.getStyle('left')});
else
this.wiredElement.setStyle({right: this.element.getStyle('right')});
if (this.useTop)
this.wiredElement.setStyle({top: this.element.getStyle('top')});
else
this.wiredElement.setStyle({bottom: this.element.getStyle('bottom')});
var dim = this.element.getDimensions();
this.wiredElement.setStyle({width: dim.width + "px", height: dim.height +"px"});
this.wiredElement.setStyle({zIndex: Windows.maxZIndex+30});
return this.wiredElement;
},
_hideWiredElement: function() {
if (! this.wiredElement || ! this.currentDrag)
return;
if (this.currentDrag == this.element)
this.currentDrag = null;
else {
if (this.useLeft)
this.element.setStyle({left: this.currentDrag.getStyle('left')});
else
this.element.setStyle({right: this.currentDrag.getStyle('right')});
if (this.useTop)
this.element.setStyle({top: this.currentDrag.getStyle('top')});
else
this.element.setStyle({bottom: this.currentDrag.getStyle('bottom')});
this.currentDrag.hide();
this.currentDrag = null;
if (this.doResize)
this.setSize(this.width, this.height);
}
},
_notify: function(eventName) {
if (this.options[eventName])
this.options[eventName](this);
else
Windows.notify(eventName, this);
}
};
// Windows containers, register all page windows
var Windows = {
windows: [],
modalWindows: [],
observers: [],
focusedWindow: null,
maxZIndex: 0,
overlayShowEffectOptions: {duration: 0.5},
overlayHideEffectOptions: {duration: 0.5},
addObserver: function(observer) {
this.removeObserver(observer);
this.observers.push(observer);
},
removeObserver: function(observer) {
this.observers = this.observers.reject( function(o) { return o==observer });
},
// onDestroy onStartResize onStartMove onResize onMove onEndResize onEndMove onFocus onBlur onBeforeShow onShow onHide onMinimize onMaximize onClose
notify: function(eventName, win) {
this.observers.each( function(o) {if(o[eventName]) o[eventName](eventName, win);});
},
// Gets window from its id
getWindow: function(id) {
return this.windows.detect(function(d) { return d.getId() ==id });
},
// Gets the last focused window
getFocusedWindow: function() {
return this.focusedWindow;
},
updateFocusedWindow: function() {
this.focusedWindow = this.windows.length >=2 ? this.windows[this.windows.length-2] : null;
},
// Registers a new window (called by Windows constructor)
register: function(win) {
this.windows.push(win);
},
// Add a modal window in the stack
addModalWindow: function(win) {
// Disable screen if first modal window
if (this.modalWindows.length == 0) {
WindowUtilities.disableScreen(win.options.className, 'overlay_modal', win.overlayOpacity, win.getId(), win.options.parent);
}
else {
// Move overlay over all windows
if (Window.keepMultiModalWindow) {
$('overlay_modal').style.zIndex = Windows.maxZIndex + 1;
Windows.maxZIndex += 1;
WindowUtilities._hideSelect(this.modalWindows.last().getId());
}
// Hide current modal window
else
this.modalWindows.last().element.hide();
// Fucking IE select issue
WindowUtilities._showSelect(win.getId());
}
this.modalWindows.push(win);
},
removeModalWindow: function(win) {
this.modalWindows.pop();
// No more modal windows
if (this.modalWindows.length == 0)
WindowUtilities.enableScreen();
else {
if (Window.keepMultiModalWindow) {
this.modalWindows.last().toFront();
WindowUtilities._showSelect(this.modalWindows.last().getId());
}
else
this.modalWindows.last().element.show();
}
},
// Registers a new window (called by Windows constructor)
register: function(win) {
this.windows.push(win);
},
// Unregisters a window (called by Windows destructor)
unregister: function(win) {
this.windows = this.windows.reject(function(d) { return d==win });
},
// Closes all windows
closeAll: function() {
this.windows.each( function(w) {Windows.close(w.getId())} );
},
closeAllModalWindows: function() {
WindowUtilities.enableScreen();
this.modalWindows.each( function(win) {if (win) win.close()});
},
// Minimizes a window with its id
minimize: function(id, event) {
var win = this.getWindow(id)
if (win && win.visible)
win.minimize();
Event.stop(event);
},
// Maximizes a window with its id
maximize: function(id, event) {
var win = this.getWindow(id)
if (win && win.visible)
win.maximize();
Event.stop(event);
},
// Closes a window with its id
close: function(id, event) {
var win = this.getWindow(id);
if (win)
win.close();
if (event)
Event.stop(event);
},
blur: function(id) {
var win = this.getWindow(id);
if (!win)
return;
if (win.options.blurClassName)
win.changeClassName(win.options.blurClassName);
if (this.focusedWindow == win)
this.focusedWindow = null;
win._notify("onBlur");
},
focus: function(id) {
var win = this.getWindow(id);
if (!win)
return;
if (this.focusedWindow)
this.blur(this.focusedWindow.getId())
if (win.options.focusClassName)
win.changeClassName(win.options.focusClassName);
this.focusedWindow = win;
win._notify("onFocus");
},
unsetOverflow: function(except) {
this.windows.each(function(d) { d.oldOverflow = d.getContent().getStyle("overflow") || "auto" ; d.getContent().setStyle({overflow: "hidden"}) });
if (except && except.oldOverflow)
except.getContent().setStyle({overflow: except.oldOverflow});
},
resetOverflow: function() {
this.windows.each(function(d) { if (d.oldOverflow) d.getContent().setStyle({overflow: d.oldOverflow}) });
},
updateZindex: function(zindex, win) {
if (zindex > this.maxZIndex) {
this.maxZIndex = zindex;
if (this.focusedWindow)
this.blur(this.focusedWindow.getId())
}
this.focusedWindow = win;
if (this.focusedWindow)
this.focus(this.focusedWindow.getId())
}
};
var Dialog = {
dialogId: null,
onCompleteFunc: null,
callFunc: null,
parameters: null,
confirm: function(content, parameters) {
// Get Ajax return before
if (content && typeof content != "string") {
Dialog._runAjaxRequest(content, parameters, Dialog.confirm);
return
}
content = content || "";
parameters = parameters || {};
var okLabel = parameters.okLabel ? parameters.okLabel : "Ok";
var cancelLabel = parameters.cancelLabel ? parameters.cancelLabel : "Cancel";
// Backward compatibility
parameters = Object.extend(parameters, parameters.windowParameters || {});
parameters.windowParameters = parameters.windowParameters || {};
parameters.className = parameters.className || "alert";
var okButtonClass = "class ='" + (parameters.buttonClass ? parameters.buttonClass + " " : "") + " ok_button'"
var cancelButtonClass = "class ='" + (parameters.buttonClass ? parameters.buttonClass + " " : "") + " cancel_button'"
var content = "\
<div class='" + parameters.className + "_message'>" + content + "</div>\
<div class='" + parameters.className + "_buttons'>\
<input type='button' value='" + okLabel + "' onclick='Dialog.okCallback()' " + okButtonClass + "/>\
<input type='button' value='" + cancelLabel + "' onclick='Dialog.cancelCallback()' " + cancelButtonClass + "/>\
</div>\
";
return this._openDialog(content, parameters)
},
alert: function(content, parameters) {
// Get Ajax return before
if (content && typeof content != "string") {
Dialog._runAjaxRequest(content, parameters, Dialog.alert);
return
}
content = content || "";
parameters = parameters || {};
var okLabel = parameters.okLabel ? parameters.okLabel : "Ok";
// Backward compatibility
parameters = Object.extend(parameters, parameters.windowParameters || {});
parameters.windowParameters = parameters.windowParameters || {};
parameters.className = parameters.className || "alert";
var okButtonClass = "class ='" + (parameters.buttonClass ? parameters.buttonClass + " " : "") + " ok_button'"
var content = "\
<div class='" + parameters.className + "_message'>" + content + "</div>\
<div class='" + parameters.className + "_buttons'>\
<input type='button' value='" + okLabel + "' onclick='Dialog.okCallback()' " + okButtonClass + "/>\
</div>";
return this._openDialog(content, parameters)
},
info: function(content, parameters) {
// Get Ajax return before
if (content && typeof content != "string") {
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -