forked from Wavyzz/dolibarr
Move Prototype Window Class to its own library
This commit is contained in:
115
htdocs/includes/pwc/window_ext.js
Normal file
115
htdocs/includes/pwc/window_ext.js
Normal file
@@ -0,0 +1,115 @@
|
||||
// Copyright (c) 2006 Sébastien Gruhier (http://xilinus.com, http://itseb.com)
|
||||
// YOU MUST INCLUDE window.js BEFORE
|
||||
//
|
||||
// Object to store hide/show windows status in a cookie
|
||||
// Just add at the end of your HTML file this javascript line: WindowStore.init()
|
||||
WindowStore = {
|
||||
doSetCookie: false,
|
||||
cookieName: "__window_store__",
|
||||
expired: null,
|
||||
|
||||
// Init function with two optional parameters
|
||||
// - cookieName (default = __window_store__)
|
||||
// - expiration date (default 3 years from now)
|
||||
init: function(cookieName, expired) {
|
||||
WindowStore.cookieName = cookieName || WindowStore.cookieName
|
||||
|
||||
if (! expired) {
|
||||
var today = new Date();
|
||||
today.setYear(today.getYear()+1903);
|
||||
WindowStore.expired = today;
|
||||
}
|
||||
else
|
||||
WindowStore.expired = expired;
|
||||
|
||||
Windows.windows.each(function(win) {
|
||||
win.setCookie(win.getId(), WindowStore.expired);
|
||||
});
|
||||
|
||||
// Create observer on show/hide events
|
||||
var myObserver = {
|
||||
onShow: function(eventName, win) {
|
||||
WindowStore._saveCookie();
|
||||
},
|
||||
|
||||
onClose: function(eventName, win) {
|
||||
WindowStore._saveCookie();
|
||||
},
|
||||
|
||||
onHide: function(eventName, win) {
|
||||
WindowStore._saveCookie();
|
||||
}
|
||||
}
|
||||
Windows.addObserver(myObserver);
|
||||
|
||||
WindowStore._restoreWindows();
|
||||
WindowStore._saveCookie();
|
||||
},
|
||||
|
||||
show: function(win) {
|
||||
eval("var cookie = " + WindowUtilities.getCookie(WindowStore.cookieName));
|
||||
if (cookie != null) {
|
||||
if (cookie[win.getId()])
|
||||
win.show();
|
||||
}
|
||||
else
|
||||
win.show();
|
||||
},
|
||||
|
||||
// Function to store windows show/hide status in a cookie
|
||||
_saveCookie: function() {
|
||||
if (!doSetCookie)
|
||||
return;
|
||||
|
||||
var cookieValue = "{";
|
||||
Windows.windows.each(function(win) {
|
||||
if (cookieValue != "{")
|
||||
cookieValue += ","
|
||||
cookieValue += win.getId() + ": " + win.isVisible();
|
||||
});
|
||||
cookieValue += "}"
|
||||
|
||||
WindowUtilities.setCookie(cookieValue, [WindowStore.cookieName, WindowStore.expired]);
|
||||
},
|
||||
|
||||
// Function to restore windows show/hide status from a cookie if exists
|
||||
_restoreWindows: function() {
|
||||
eval("var cookie = " + WindowUtilities.getCookie(WindowStore.cookieName));
|
||||
if (cookie != null) {
|
||||
doSetCookie = false;
|
||||
Windows.windows.each(function(win) {
|
||||
if (cookie[win.getId()])
|
||||
win.show();
|
||||
});
|
||||
}
|
||||
doSetCookie = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Object to set a close key an all windows
|
||||
WindowCloseKey = {
|
||||
keyCode: Event.KEY_ESC,
|
||||
|
||||
init: function(keyCode) {
|
||||
if (keyCode)
|
||||
WindowCloseKey.keyCode = keyCode;
|
||||
|
||||
Event.observe(document, 'keydown', this._closeCurrentWindow.bindAsEventListener(this));
|
||||
},
|
||||
|
||||
_closeCurrentWindow: function(event) {
|
||||
var e = event || window.event
|
||||
var characterCode = e.which || e.keyCode;
|
||||
|
||||
// Check if there is a top window (it means it's an URL content)
|
||||
var win = top.Windows.focusedWindow;
|
||||
if (characterCode == WindowCloseKey.keyCode && win) {
|
||||
if (win.cancelCallback)
|
||||
top.Dialog.cancelCallback();
|
||||
else if (win.okCallback)
|
||||
top.Dialog.okCallback();
|
||||
else
|
||||
top.Windows.close(top.Windows.focusedWindow.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user