fixing scope of "use strict", so we do not need to remove it when concatinating our scripts like we do now with minjs

This commit is contained in:
Ralf Becker 2016-02-29 15:50:24 +00:00
parent bbf6ca54ac
commit 033c1f4a9f
27 changed files with 219 additions and 199 deletions

View File

@ -7,14 +7,13 @@
* @description Framework base module which creates fw_base object and includes basic framework functionallity * @description Framework base module which creates fw_base object and includes basic framework functionallity
*/ */
"use strict";
/*egw:uses /*egw:uses
jquery.jquery; jquery.jquery;
egw_inheritance.js; egw_inheritance.js;
*/ */
var fw_base = Class.extend({ var fw_base = (function(){ "use strict"; return Class.extend(
{
/** /**
* Framework base class constructor sets up basic initialization * Framework base class constructor sets up basic initialization
* @param {type} _sidemenuId * @param {type} _sidemenuId
@ -398,7 +397,7 @@ var fw_base = Class.extend({
this.storeTabsStatus(); this.storeTabsStatus();
} }
}, },
/** /**
* Store last status of tabs * Store last status of tabs
* tab status being used in order to open all previous opened * tab status being used in order to open all previous opened
@ -419,7 +418,7 @@ var fw_base = Class.extend({
egw.jsonq("home.jdots_framework.ajax_tab_changed_state", [data]); egw.jsonq("home.jdots_framework.ajax_tab_changed_state", [data]);
} }
}, },
/** /**
* @param {function} _opened * @param {function} _opened
* Sends sidemenu entry category open/close information to the server using an AJAX request * Sends sidemenu entry category open/close information to the server using an AJAX request
@ -1043,4 +1042,4 @@ var fw_base = Class.extend({
} }
} }
} }
}); });}).call(this);

View File

@ -17,11 +17,9 @@
EGW_BROWSER_TYPE_NONE = 0; EGW_BROWSER_TYPE_NONE = 0;
EGW_BROWSER_TYPE_IFRAME = 1; EGW_BROWSER_TYPE_IFRAME = 1;
EGW_BROWSER_TYPE_DIV = 2; EGW_BROWSER_TYPE_DIV = 2;
"use strict";
var fw_browser = Class.extend({
var fw_browser = (function(){ "use strict"; return Class.extend(
{
/** /**
* @param {string} _app * @param {string} _app
* @param {function} _heightCallback * @param {function} _heightCallback
@ -167,13 +165,13 @@ var fw_browser = Class.extend({
this.loadingDeferred.always(function() { this.loadingDeferred.always(function() {
if(self.ajaxLoaderDiv) if(self.ajaxLoaderDiv)
{ {
self.ajaxLoaderDiv = egw.loading_prompt(self.app.appName,false); self.ajaxLoaderDiv = egw.loading_prompt(self.app.appName,false);
// Remove escape timeout // Remove escape timeout
clearTimeout(self.ajaxLoaderDivTimeout); clearTimeout(self.ajaxLoaderDivTimeout);
} }
}); });
// Check whether the given url is a pseudo url which should be executed // Check whether the given url is a pseudo url which should be executed
@ -323,7 +321,7 @@ var fw_browser = Class.extend({
if (this.app.sidemenuEntry) if (this.app.sidemenuEntry)
this.app.sidemenuEntry.hideAjaxLoader(); this.app.sidemenuEntry.hideAjaxLoader();
// egw_widgetReplace(this.app.appName, this.contentDiv, this.data); // egw_widgetReplace(this.app.appName, this.contentDiv, this.data);
content = { var content = {
html: this.data, html: this.data,
js: '' js: ''
}; };
@ -373,7 +371,4 @@ var fw_browser = Class.extend({
{ {
this.browse('about:blank', this.type == EGW_BROWSER_TYPE_IFRAME); this.browse('about:blank', this.type == EGW_BROWSER_TYPE_IFRAME);
} }
});}).call(this);
});

View File

@ -8,7 +8,6 @@
* @description Create jdots framework * @description Create jdots framework
*/ */
"use strict";
/*egw:uses /*egw:uses
jquery.jquery; jquery.jquery;
framework.fw_base; framework.fw_base;
@ -17,7 +16,15 @@
egw_fw_classes; egw_fw_classes;
egw_inheritance.js; egw_inheritance.js;
*/ */
(function(window){
/**
*
* @param {DOMWindow} window
*/
(function(window)
{
"use strict";
/** /**
* *
* @type @exp;fw_ui_sidemenu_entry@call;extend * @type @exp;fw_ui_sidemenu_entry@call;extend
@ -84,12 +91,8 @@
* *
* @type @exp;fw_ui_sidemenu@call;extend * @type @exp;fw_ui_sidemenu@call;extend
*/ */
var desktop_ui_sidemenu = fw_ui_sidemenu.extend({ var desktop_ui_sidemenu = fw_ui_sidemenu.extend(
{
/**
*
* @returns {undefined}
*/
init: function(_baseDiv, _sortCallback) init: function(_baseDiv, _sortCallback)
{ {
this._super.apply(this,arguments); this._super.apply(this,arguments);
@ -211,7 +214,7 @@
/** /**
* *
* @returns {undefined} * @param {array} apps
*/ */
loadApplications: function (apps) loadApplications: function (apps)
{ {

View File

@ -13,21 +13,14 @@
egw_inheritance.js; egw_inheritance.js;
*/ */
/**
* Constants definition
*/
"use strict";
/** /**
* ui siemenu entry class * ui siemenu entry class
* Basic sidebar menu implementation * Basic sidebar menu implementation
* *
* @type @exp;Class@call;extend * @type @exp;Class@call;extend
*/ */
var fw_ui_sidemenu_entry = Class.extend({ var fw_ui_sidemenu_entry = (function(){ "use strict"; return Class.extend(
{
/** /**
* Framework ui sidemenu entry class constructor * Framework ui sidemenu entry class constructor
* *
@ -179,13 +172,14 @@ var fw_ui_sidemenu_entry = Class.extend({
$j(this.headerDiv).remove(); $j(this.headerDiv).remove();
$j(this.contentDiv).remove(); $j(this.contentDiv).remove();
} }
}); });}).call(this);
/** /**
* *
* @type @exp;Class@call;extend * @type @exp;Class@call;extend
*/ */
var fw_ui_sidemenu = Class.extend({ var fw_ui_sidemenu = (function(){ "use strict"; return Class.extend(
{
/** /**
* The constructor of the egw_fw_ui_sidemenu. * The constructor of the egw_fw_ui_sidemenu.
* *
@ -279,7 +273,7 @@ var fw_ui_sidemenu = Class.extend({
this.entries = new Array(); this.entries = new Array();
} }
}); });}).call(this);
/** /**
* Class: egw_fw_ui_tab * Class: egw_fw_ui_tab
@ -850,12 +844,12 @@ function egw_fw_ui_scrollarea(_contDiv)
var self = this; var self = this;
$j(this.scrollDiv).on('mousewheel',function(e, delta) { $j(this.scrollDiv).on('mousewheel',function(e, delta) {
var noscroll = false; var noscroll = false;
// Do not scrolldown/up when we are on selectbox items // Do not scrolldown/up when we are on selectbox items
// seems Firefox does not prevent the mousewheel event over // seems Firefox does not prevent the mousewheel event over
// selectbox items with scrollbars // selectbox items with scrollbars
// Do not scroll on video tutorials as well // Do not scroll on video tutorials as well
if (e.target.tagName == "OPTION" || e.target.tagName == "SELECT" || if (e.target.tagName == "OPTION" || e.target.tagName == "SELECT" ||
e.target.getAttribute('class') && e.target.getAttribute('class').match(/egw_tutorial/ig)) e.target.getAttribute('class') && e.target.getAttribute('class').match(/egw_tutorial/ig))
{ {
noscroll = true; noscroll = true;

View File

@ -11,8 +11,6 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
egw_inheritance; egw_inheritance;
/phpgwapi/js/es6-promise.min.js; /phpgwapi/js/es6-promise.min.js;
@ -65,7 +63,7 @@ window.app = {classes: {}};
* @class AppJS * @class AppJS
* @augments Class * @augments Class
*/ */
var AppJS = Class.extend( var AppJS = (function(){ "use strict"; return Class.extend(
{ {
/** /**
* Internal application name - override this * Internal application name - override this
@ -83,7 +81,7 @@ var AppJS = Class.extend(
* *
* If you need a reference to a certain template you can either store a local * If you need a reference to a certain template you can either store a local
* reference or access it through etemplate2. * reference or access it through etemplate2.
* *
* @example <caption>Store a local reference</caption> * @example <caption>Store a local reference</caption>
* // in et2_ready() * // in et2_ready()
* if(name == 'index') this.index_et2 = et2.widgetContainer; * if(name == 'index') this.index_et2 = et2.widgetContainer;
@ -383,14 +381,14 @@ var AppJS = Class.extend(
return state; return state;
}, },
/** /**
* Function to load selected row from nm into a template view * Function to load selected row from nm into a template view
* *
* @param {object} _action * @param {object} _action
* @param {object} _senders * @param {object} _senders
*/ */
viewEntry: function(_action, _senders) viewEntry: function(_action, _senders)
{ {
// app id in nm // app id in nm
var id = _senders[0].id; var id = _senders[0].id;
@ -398,21 +396,21 @@ var AppJS = Class.extend(
var id_app = ''; var id_app = '';
var content = {}; var content = {};
var self = this; var self = this;
if (id){ if (id){
id_app = id.split('::'); id_app = id.split('::');
content = egw.dataGetUIDdata(id); content = egw.dataGetUIDdata(id);
if (content.data) content = content.data; if (content.data) content = content.data;
} }
/* destroy generated etemplate for view mode in DOM*/ /* destroy generated etemplate for view mode in DOM*/
var destroy = function(){ var destroy = function(){
self.viewContainer.remove(); self.viewContainer.remove();
delete self.viewTemplate; delete self.viewTemplate;
delete self.viewContainer; delete self.viewContainer;
}; };
// view container // view container
this.viewContainer = jQuery(document.createElement('div')) this.viewContainer = jQuery(document.createElement('div'))
.addClass('et2_mobile_view') .addClass('et2_mobile_view')
@ -430,13 +428,13 @@ var AppJS = Class.extend(
"padding":'60px 0 10px 0'}) "padding":'60px 0 10px 0'})
.attr('id','popupMainDiv') .attr('id','popupMainDiv')
.appendTo('body'); .appendTo('body');
// close button // close button
var close = jQuery(document.createElement('span')) var close = jQuery(document.createElement('span'))
.addClass('egw_fw_mobile_popup_close loaded') .addClass('egw_fw_mobile_popup_close loaded')
.click(function(){destroy();}) .click(function(){destroy();})
.appendTo(this.viewContainer); .appendTo(this.viewContainer);
// edit button // edit button
var edit = jQuery(document.createElement('span')) var edit = jQuery(document.createElement('span'))
.addClass('mobile-view-editBtn') .addClass('mobile-view-editBtn')
@ -445,18 +443,18 @@ var AppJS = Class.extend(
}) })
.text(egw.lang('Edit')) .text(egw.lang('Edit'))
.appendTo(this.viewContainer); .appendTo(this.viewContainer);
// view template main container (content) // view template main container (content)
this.viewTemplate = jQuery(document.createElement('div')) this.viewTemplate = jQuery(document.createElement('div'))
.attr('id', this.appname+'-view') .attr('id', this.appname+'-view')
.addClass('et2_mobile-view-container') .addClass('et2_mobile-view-container')
.appendTo(this.viewContainer); .appendTo(this.viewContainer);
var templateName = _action.data.mobileViewTemplate || 'edit.xet'; var templateName = _action.data.mobileViewTemplate || 'edit.xet';
var etemplate = new etemplate2 (this.viewTemplate[0], false); var etemplate = new etemplate2 (this.viewTemplate[0], false);
var template = egw.webserverUrl+ '/' + this.appname + '/templates/mobile/'+templateName+'?1'; var template = egw.webserverUrl+ '/' + this.appname + '/templates/mobile/'+templateName+'?1';
var data = {content:content, readonlys:{'__ALL__':true,'link_to':false}, currentapp:id_app[0]}; var data = {content:content, readonlys:{'__ALL__':true,'link_to':false}, currentapp:id_app[0]};
if(template.indexOf('.xet') > 0) if(template.indexOf('.xet') > 0)
{ {
// File name provided, fetch from server // File name provided, fetch from server
@ -466,9 +464,9 @@ var AppJS = Class.extend(
{ {
// Just template name, it better be loaded already // Just template name, it better be loaded already
etemplate.load(template,'',data); etemplate.load(template,'',data);
} }
}, },
/** /**
* Initializes actions and handlers on sidebox (delete) * Initializes actions and handlers on sidebox (delete)
* *
@ -696,7 +694,7 @@ var AppJS = Class.extend(
// still running under iframe and that gets into conflict with et2 object created for // still running under iframe and that gets into conflict with et2 object created for
// video tutorials in sidebox. // video tutorials in sidebox.
// TODO: this.appname != 'calendar' should be removed after we released new calendar // TODO: this.appname != 'calendar' should be removed after we released new calendar
).appendTo(this.et2 && this.appname != 'calendar' ? this.et2.getDOMNode() : $j('body')); ).appendTo(this.et2 && this.appname != 'calendar' ? this.et2.getDOMNode() : $j('body'));
$j(".ui-icon-circle-plus",this.favorite_popup).prev().andSelf().click(function() { $j(".ui-icon-circle-plus",this.favorite_popup).prev().andSelf().click(function() {
var details = $j("#"+self.appname+"_favorites_popup_state",self.favorite_popup) var details = $j("#"+self.appname+"_favorites_popup_state",self.favorite_popup)
@ -719,7 +717,7 @@ var AppJS = Class.extend(
// Ugly hack to exclude calendar from using this.et2 since calendar in 14.3 // Ugly hack to exclude calendar from using this.et2 since calendar in 14.3
// still running under iframe and that gets into conflict with et2 object created for // still running under iframe and that gets into conflict with et2 object created for
// video tutorials in sidebox. // video tutorials in sidebox.
// TODO: this.appname != 'calendar' should be removed after we released new calendar // TODO: this.appname != 'calendar' should be removed after we released new calendar
},(this.et2 && this.appname != 'calendar'? this.et2:null)); },(this.et2 && this.appname != 'calendar'? this.et2:null));
this.favorite_popup.group.loadingFinished(); this.favorite_popup.group.loadingFinished();
} }
@ -1091,7 +1089,7 @@ var AppJS = Class.extend(
}).sendRequest(true); }).sendRequest(true);
} }
}, },
/** /**
* Get json data for videos from the given url * Get json data for videos from the given url
* *
@ -1187,7 +1185,7 @@ var AppJS = Class.extend(
var url = egw.link('/index.php', 'menuaction=home.home_tutorial_ui.popup&tuid='+_tuid); var url = egw.link('/index.php', 'menuaction=home.home_tutorial_ui.popup&tuid='+_tuid);
egw.open_link(url,'_blank','960x580'); egw.open_link(url,'_blank','960x580');
}, },
/** /**
* Check if Mailvelope is available, open (or create) "egroupware" keyring and call callback with it * Check if Mailvelope is available, open (or create) "egroupware" keyring and call callback with it
* *
@ -1409,7 +1407,7 @@ var AppJS = Class.extend(
var self = this; var self = this;
var restorePassword = _restorePassword; var restorePassword = _restorePassword;
var selector = _selector || 'body'; var selector = _selector || 'body';
//Clear the //Clear the
jQuery('iframe[src^="chrome-extension"],iframe[src^="about:blank?mvelo"]').remove(); jQuery('iframe[src^="chrome-extension"],iframe[src^="about:blank?mvelo"]').remove();
return new Promise(function(_resolve, _reject){ return new Promise(function(_resolve, _reject){
var resolve = _resolve; var resolve = _resolve;
@ -1504,7 +1502,7 @@ var AppJS = Class.extend(
this.mailvelopeInstallationOffer(); this.mailvelopeInstallationOffer();
} }
}, },
/** /**
* Create a dialog and offers installation option for installing mailvelope plugin * Create a dialog and offers installation option for installing mailvelope plugin
* plus it offers a video tutorials to get the user morte familiar with mailvelope * plus it offers a video tutorials to get the user morte familiar with mailvelope
@ -1543,7 +1541,7 @@ var AppJS = Class.extend(
{domain:this.egw.lang('Add your domain as "%1" in options to list of email providers and enable API.', {domain:this.egw.lang('Add your domain as "%1" in options to list of email providers and enable API.',
'*.'+this._mailvelopeDomain()), video:"test", control:"true"} '*.'+this._mailvelopeDomain()), video:"test", control:"true"}
]; ];
dialog(content, function(_button){ dialog(content, function(_button){
if (_button == 'install') if (_button == 'install')
{ {
@ -1552,7 +1550,7 @@ var AppJS = Class.extend(
// ATM we are not able to trigger mailvelope installation directly // ATM we are not able to trigger mailvelope installation directly
// since the installation should be triggered from the extension // since the installation should be triggered from the extension
// owner validate website (mailvelope.com), therefore, we just redirect // owner validate website (mailvelope.com), therefore, we just redirect
// user to chrome webstore to install mailvelope from there. // user to chrome webstore to install mailvelope from there.
window.open('https://chrome.google.com/webstore/detail/mailvelope/kajibbejlbohfaggdiogboambcijhkke'); window.open('https://chrome.google.com/webstore/detail/mailvelope/kajibbejlbohfaggdiogboambcijhkke');
} }
else if (typeof InstallTrigger != 'undefined' && InstallTrigger.enabled()) else if (typeof InstallTrigger != 'undefined' && InstallTrigger.enabled())
@ -1783,4 +1781,4 @@ var AppJS = Class.extend(
}); });
}); });
} }
}); });}).call(this);

View File

@ -10,8 +10,6 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
egw_core; egw_core;
egw_debug; egw_debug;
@ -37,7 +35,10 @@
app_base; app_base;
*/ */
(function(){ (function()
{
"use strict";
var debug = false; var debug = false;
var egw_script = document.getElementById('egw_script_id'); var egw_script = document.getElementById('egw_script_id');
var start_time = (new Date).getTime(); var start_time = (new Date).getTime();

View File

@ -10,8 +10,6 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
jquery.jquery-ui; jquery.jquery-ui;
jquery.jquery-ui-timepicker-addon; jquery.jquery-ui-timepicker-addon;
@ -31,6 +29,8 @@
*/ */
egw.extend('calendar', egw.MODULE_WND_LOCAL, function(_app, _wnd) egw.extend('calendar', egw.MODULE_WND_LOCAL, function(_app, _wnd)
{ {
"use strict";
// translate only once // translate only once
var calendar_translated = false,timepicker_translated = false; var calendar_translated = false,timepicker_translated = false;
@ -272,9 +272,11 @@ egw.extend('calendar', egw.MODULE_WND_LOCAL, function(_app, _wnd)
{ {
return dateTimeFormat(_php_format); return dateTimeFormat(_php_format);
}, },
/** /**
* Calculate the start of the week, according to user's preference * Calculate the start of the week, according to user's preference
*
* @param {string} date
*/ */
week_start: function(date) { week_start: function(date) {
var d = new Date(date); var d = new Date(date);

View File

@ -10,13 +10,13 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
egw_core; egw_core;
*/ */
egw.extend('config', egw.MODULE_GLOBAL, function() { egw.extend('config', egw.MODULE_GLOBAL, function()
{
"use strict";
/** /**
* Clientside config * Clientside config

View File

@ -10,13 +10,13 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/** /**
* This code setups the egw namespace and adds the "extend" function, which is * This code setups the egw namespace and adds the "extend" function, which is
* used by extension modules to inject their content into the egw object. * used by extension modules to inject their content into the egw object.
*/ */
(function() { (function()
{
"use strict";
var instanceUid = 0; var instanceUid = 0;

View File

@ -10,8 +10,6 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
egw_core; egw_core;
*/ */
@ -23,7 +21,9 @@
* @param {string} _app application name object is instanciated for * @param {string} _app application name object is instanciated for
* @param {object} _wnd window object is instanciated for * @param {object} _wnd window object is instanciated for
*/ */
egw.extend('css', egw.MODULE_WND_LOCAL, function(_app, _wnd) { egw.extend('css', egw.MODULE_WND_LOCAL, function(_app, _wnd)
{
"use strict";
/** /**
* Assoziative array which stores the current css rule for a given selector. * Assoziative array which stores the current css rule for a given selector.

View File

@ -15,9 +15,15 @@
egw_debug; egw_debug;
*/ */
"use strict"; /**
* Module storing and updating row data
egw.extend("data", egw.MODULE_APP_LOCAL, function (_app, _wnd) { *
* @param {string} _app application name object is instanciated for
* @param {object} _wnd window object is instanciated for
*/
egw.extend("data", egw.MODULE_APP_LOCAL, function (_app, _wnd)
{
"use strict";
/** /**
* How many UIDs we'll tell the server we know about. No need to pass the whole list around. * How many UIDs we'll tell the server we know about. No need to pass the whole list around.
@ -527,6 +533,11 @@ egw.extend("data_storage", egw.MODULE_GLOBAL, function (_app, _wnd) {
* using dataFetch() && parseServerResponse(), above. Both update the * using dataFetch() && parseServerResponse(), above. Both update the
* GLOBAL data cache though this one is registered globally, and the above * GLOBAL data cache though this one is registered globally, and the above
* is registered app local. * is registered app local.
*
* @param {string} type
* @param {object} res
* @param {object} req
* @returns {Boolean}
*/ */
egw.registerJSONPlugin(function(type, res, req) { egw.registerJSONPlugin(function(type, res, req) {
if ((typeof res.data.uid != 'undefined') && if ((typeof res.data.uid != 'undefined') &&
@ -537,7 +548,7 @@ egw.extend("data_storage", egw.MODULE_GLOBAL, function (_app, _wnd) {
return true; return true;
} }
}, egw, 'data',true); }, egw, 'data',true);
/** /**
* Uids and timers used for querying data uids, hashed by the first few * Uids and timers used for querying data uids, hashed by the first few
* bytes of the _execId, stored as an object of the form * bytes of the _execId, stored as an object of the form

View File

@ -10,8 +10,6 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
egw_core; egw_core;
*/ */
@ -25,7 +23,9 @@
* @param {string} _app * @param {string} _app
* @param {object} _wnd * @param {object} _wnd
*/ */
egw.extend('debug', egw.MODULE_GLOBAL, function(_app, _wnd) { egw.extend('debug', egw.MODULE_GLOBAL, function(_app, _wnd)
{
"use strict";
/** /**
* DEBUGLEVEL specifies which messages are printed to the console. * DEBUGLEVEL specifies which messages are printed to the console.

View File

@ -10,8 +10,6 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
egw_core; egw_core;
egw_ready; egw_ready;
@ -20,9 +18,13 @@
/** /**
* @augments Class * @augments Class
* @param {string} _app application name object is instanciated for
* @param {object} _wnd window object is instanciated for
*/ */
egw.extend('files', egw.MODULE_WND_LOCAL, function(_app, _wnd) egw.extend('files', egw.MODULE_WND_LOCAL, function(_app, _wnd)
{ {
"use strict";
var egw = this; var egw = this;
/** /**
@ -128,10 +130,10 @@ egw.extend('files', egw.MODULE_WND_LOCAL, function(_app, _wnd)
* Load and execute javascript file(s) in order * Load and execute javascript file(s) in order
* *
* @memberOf egw * @memberOf egw
* @param string|array _jsFiles (array of) urls to include * @param {string|array} _jsFiles (array of) urls to include
* @param function _callback called after JS files are loaded and executed * @param {function} _callback called after JS files are loaded and executed
* @param object _context * @param {object} _context
* @param string _prefix prefix for _jsFiles * @param {string} _prefix prefix for _jsFiles
*/ */
includeJS: function(_jsFiles, _callback, _context, _prefix) includeJS: function(_jsFiles, _callback, _context, _prefix)
{ {

View File

@ -10,13 +10,13 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
egw_core; egw_core;
*/ */
egw.extend('images', egw.MODULE_GLOBAL, function() { egw.extend('images', egw.MODULE_GLOBAL, function()
{
"use strict";
/** /**
* Map to serverside available images for users template-set * Map to serverside available images for users template-set

View File

@ -10,8 +10,6 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/** /**
* Usage of the JS inheritance system * Usage of the JS inheritance system
* ---------------------------------- * ----------------------------------
@ -71,6 +69,8 @@
*/ */
(function() (function()
{ {
"use strict";
var initializing = false; var initializing = false;
/** /**

View File

@ -9,15 +9,20 @@
* @version $Id$ * @version $Id$
*/ */
"use strict"
/*egw:uses /*egw:uses
egw_core; egw_core;
egw_files; egw_files;
egw_ready; egw_ready;
*/ */
egw.extend('jquery', egw.MODULE_WND_LOCAL, function(_app, _wnd) { /**
* NOT USED
* @param {string} _app application name object is instanciated for
* @param {object} _wnd window object is instanciated for
*/
egw.extend('jquery', egw.MODULE_WND_LOCAL, function(_app, _wnd)
{
"use strict";
// Get the reference to the "files" and the "ready" module for the current // Get the reference to the "files" and the "ready" module for the current
// window // window
@ -36,10 +41,6 @@ egw.extend('jquery', egw.MODULE_WND_LOCAL, function(_app, _wnd) {
}, this); }, this);
return { return {
'$j': null '$j': null
} };
}); });

View File

@ -10,8 +10,6 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
jquery.jquery; jquery.jquery;
@ -21,7 +19,15 @@
egw_debug; egw_debug;
*/ */
egw.extend('json', egw.MODULE_WND_LOCAL, function(_app, _wnd) { /**
* Module sending json requests
*
* @param {string} _app application name object is instanciated for
* @param {object} _wnd window object is instanciated for
*/
egw.extend('json', egw.MODULE_WND_LOCAL, function(_app, _wnd)
{
"use strict";
/** /**
* Object which contains all registered handlers for JS responses. * Object which contains all registered handlers for JS responses.
@ -36,7 +42,7 @@ egw.extend('json', egw.MODULE_WND_LOCAL, function(_app, _wnd) {
*/ */
if(typeof egw._global_json_handlers == 'undefined') if(typeof egw._global_json_handlers == 'undefined')
{ {
egw._global_json_handlers = {} egw._global_json_handlers = {};
} }
var global_plugins = egw._global_json_handlers; var global_plugins = egw._global_json_handlers;

View File

@ -10,8 +10,6 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
egw_core; egw_core;
egw_debug; egw_debug;
@ -19,6 +17,8 @@
egw.extend('jsonq', egw.MODULE_GLOBAL, function() egw.extend('jsonq', egw.MODULE_GLOBAL, function()
{ {
"use strict";
/** /**
* Queued json requests (objects with attributes menuaction, parameters, context, callback, sender and callbeforesend) * Queued json requests (objects with attributes menuaction, parameters, context, callback, sender and callbeforesend)
* *

View File

@ -10,8 +10,6 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
egw_core; egw_core;
egw_files; egw_files;
@ -21,7 +19,9 @@
/** /**
* @augments Class * @augments Class
*/ */
egw.extend('lang', egw.MODULE_GLOBAL, function() { egw.extend('lang', egw.MODULE_GLOBAL, function()
{
"use strict";
/** /**
* Translations * Translations

View File

@ -9,8 +9,6 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
egw_core; egw_core;
*/ */
@ -24,6 +22,8 @@
*/ */
egw.extend('message', egw.MODULE_WND_LOCAL, function(_app, _wnd) egw.extend('message', egw.MODULE_WND_LOCAL, function(_app, _wnd)
{ {
"use strict";
_app; // not used, but required by function signature _app; // not used, but required by function signature
var message_timer; var message_timer;
var error_reg_exp; var error_reg_exp;
@ -96,7 +96,7 @@ egw.extend('message', egw.MODULE_WND_LOCAL, function(_app, _wnd)
{ {
// replace p and br-tags with newlines // replace p and br-tags with newlines
_msg = _msg.replace(new_line_reg, "\n"); _msg = _msg.replace(new_line_reg, "\n");
var msg_div = jQuery(_wnd.document.createElement('div')) var msg_div = jQuery(_wnd.document.createElement('div'))
.attr('id','egw_message') .attr('id','egw_message')
.text(_msg) .text(_msg)
@ -107,7 +107,7 @@ egw.extend('message', egw.MODULE_WND_LOCAL, function(_app, _wnd)
&& msg_chkbox && msg_chkbox.is(':checked')) && msg_chkbox && msg_chkbox.is(':checked'))
{ {
var discarded = egw.getLocalStorageItem(egw.app_name(),'discardedMsgs'); var discarded = egw.getLocalStorageItem(egw.app_name(),'discardedMsgs');
if (!isDiscarded(_msg)) if (!isDiscarded(_msg))
{ {
if (!discarded) if (!discarded)
@ -124,7 +124,7 @@ egw.extend('message', egw.MODULE_WND_LOCAL, function(_app, _wnd)
$j(this).remove(); $j(this).remove();
}) })
.css('position', 'absolute'); .css('position', 'absolute');
// discard checkbox implementation // discard checkbox implementation
if (_discard && _type === 'info') if (_discard && _type === 'info')
{ {
@ -132,7 +132,7 @@ egw.extend('message', egw.MODULE_WND_LOCAL, function(_app, _wnd)
var isDiscarded = function (_msg) var isDiscarded = function (_msg)
{ {
var discarded = JSON.parse(egw.getLocalStorageItem(egw.app_name(),'discardedMsgs')); var discarded = JSON.parse(egw.getLocalStorageItem(egw.app_name(),'discardedMsgs'));
if (jQuery.isArray(discarded)) if (jQuery.isArray(discarded))
{ {
for(var i=0; i< discarded.length; i++) for(var i=0; i< discarded.length; i++)
@ -142,14 +142,14 @@ egw.extend('message', egw.MODULE_WND_LOCAL, function(_app, _wnd)
} }
return false; return false;
}; };
//discard div container //discard div container
var msg_discard =jQuery(_wnd.document.createElement('div')).addClass('discard'); var msg_discard =jQuery(_wnd.document.createElement('div')).addClass('discard');
// checkbox // checkbox
var msg_chkbox = jQuery(_wnd.document.createElement('input')) var msg_chkbox = jQuery(_wnd.document.createElement('input'))
.attr({type:"checkbox",name:"msgChkbox"}) .attr({type:"checkbox",name:"msgChkbox"})
.click(function(e){e.stopImmediatePropagation();}) .click(function(e){e.stopImmediatePropagation();})
.appendTo(msg_discard); .appendTo(msg_discard);
// Label // Label
jQuery(_wnd.document.createElement('label')) jQuery(_wnd.document.createElement('label'))
@ -157,13 +157,13 @@ egw.extend('message', egw.MODULE_WND_LOCAL, function(_app, _wnd)
.css({"font-weight":"bold"}) .css({"font-weight":"bold"})
.attr({for:'msgChkbox'}) .attr({for:'msgChkbox'})
.appendTo(msg_discard); .appendTo(msg_discard);
if (isDiscarded(_msg)) return; if (isDiscarded(_msg)) return;
msg_div.append(msg_discard); msg_div.append(msg_discard);
} }
parent.prepend(msg_div); parent.prepend(msg_div);
// replace simple a href (NO other attribute, to gard agains XSS!) // replace simple a href (NO other attribute, to gard agains XSS!)
var matches = a_href_reg.exec(_msg); var matches = a_href_reg.exec(_msg);
if (matches) if (matches)
@ -239,20 +239,20 @@ egw.extend('message', egw.MODULE_WND_LOCAL, function(_app, _wnd)
_wnd.document.title = _wnd.document.title.replace(/[.*]$/, '['+_header+']'); _wnd.document.title = _wnd.document.title.replace(/[.*]$/, '['+_header+']');
}, },
/** /**
* Loading prompt is for building a loading animation and show it to user * Loading prompt is for building a loading animation and show it to user
* while a request is under progress. * while a request is under progress.
* *
* @param {string} _id a unique id to be able to distinguish loading-prompts * @param {string} _id a unique id to be able to distinguish loading-prompts
* @param {boolean} _stat true to show the loading and false to remove it * @param {boolean} _stat true to show the loading and false to remove it
* @param {string} _msg a message to show while loading * @param {string} _msg a message to show while loading
* @param {string|jQuery node} _node DOM selector id or jquery DOM object, default is body * @param {string|jQuery _node} _node DOM selector id or jquery DOM object, default is body
* @param {string} mode defines the animation mode, default mode is spinner * @param {string} _mode defines the animation mode, default mode is spinner
* animation modes: * animation modes:
* - spinner: a sphere with a spinning bar inside * - spinner: a sphere with a spinning bar inside
* - horizental: a horizental bar * - horizental: a horizental bar
* *
* @returns {jquery dom object|null} returns jQuery DOM object or null in case of hiding * @returns {jquery dom object|null} returns jQuery DOM object or null in case of hiding
*/ */
loading_prompt: function(_id,_stat,_msg,_node, _mode) loading_prompt: function(_id,_stat,_msg,_node, _mode)

View File

@ -10,13 +10,13 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
egw_core; egw_core;
*/ */
egw.extend('preferences', egw.MODULE_GLOBAL, function() { egw.extend('preferences', egw.MODULE_GLOBAL, function()
{
"use strict";
/** /**
* Object holding the prefences as 2-dim. associative array, use * Object holding the prefences as 2-dim. associative array, use

View File

@ -9,8 +9,6 @@
* @version $Id$ * @version $Id$
*/ */
"use strict"
/*egw:uses /*egw:uses
egw_core; egw_core;
egw_utils; egw_utils;
@ -19,8 +17,12 @@
/** /**
* @augments Class * @augments Class
* @param {string} _app application name object is instanciated for
* @param {object} _wnd window object is instanciated for
*/ */
egw.extend('ready', egw.MODULE_WND_LOCAL, function(_app, _wnd) { egw.extend('ready', egw.MODULE_WND_LOCAL, function(_app, _wnd)
{
"use strict";
var egw = this; var egw = this;
@ -139,7 +141,7 @@ egw.extend('ready', egw.MODULE_WND_LOCAL, function(_app, _wnd) {
* to be marked as "done" before the ready function will call its * to be marked as "done" before the ready function will call its
* registered callbacks. The function returns an id that has to be * registered callbacks. The function returns an id that has to be
* passed to the "readDone" function once * passed to the "readDone" function once
* *
* @memberOf egw * @memberOf egw
*/ */
readyWaitFor: function() { readyWaitFor: function() {
@ -181,7 +183,7 @@ egw.extend('ready', egw.MODULE_WND_LOCAL, function(_app, _wnd) {
else else
{ {
setTimeout(function() { setTimeout(function() {
_callback.call(_context) _callback.call(_context);
}, 1); }, 1);
} }
}, },

View File

@ -9,16 +9,12 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
egw_core; egw_core;
egw_ready; egw_ready;
egw_debug; egw_debug;
*/ */
/** /**
* Store is a wrapper around browser based, persistant storage. * Store is a wrapper around browser based, persistant storage.
* *
@ -28,7 +24,9 @@
* @param {string} _app * @param {string} _app
* @param {DOMWindow} _wnd * @param {DOMWindow} _wnd
*/ */
egw.extend('store', egw.MODULE_GLOBAL, function(_app, _wnd) { egw.extend('store', egw.MODULE_GLOBAL, function(_app, _wnd)
{
"use strict";
var egw = this; var egw = this;
@ -81,12 +79,12 @@ egw.extend('store', egw.MODULE_GLOBAL, function(_app, _wnd) {
key = uniqueKey(application, key); key = uniqueKey(application, key);
return _wnd.sessionStorage.removeItem(key); return _wnd.sessionStorage.removeItem(key);
}, },
/** /**
* Set an item to localStorage * Set an item to localStorage
* *
* @param {string} application an application name or a prefix * @param {string} application an application name or a prefix
* @param {string} item * @param {string} item
* @param {any} value * @param {any} value
* @returns {undefined} returns undefined * @returns {undefined} returns undefined
*/ */
@ -94,10 +92,10 @@ egw.extend('store', egw.MODULE_GLOBAL, function(_app, _wnd) {
item = mapKey (application, item); item = mapKey (application, item);
return localStorage.setItem(item,value); return localStorage.setItem(item,value);
}, },
/** /**
* Get an item from localStorage * Get an item from localStorage
* *
* @param {string} application an application name or prefix * @param {string} application an application name or prefix
* @param {stirng} item an item name stored in localStorage * @param {stirng} item an item name stored in localStorage
* @return {string|null} reutrns requested item value otherwise null * @return {string|null} reutrns requested item value otherwise null
@ -106,13 +104,13 @@ egw.extend('store', egw.MODULE_GLOBAL, function(_app, _wnd) {
item = mapKey(application, item); item = mapKey(application, item);
return localStorage.getItem(item); return localStorage.getItem(item);
}, },
/** /**
* Remove an item from localStorage * Remove an item from localStorage
* *
* @param {string} application application name or prefix * @param {string} application application name or prefix
* @param {string} item an item name to remove * @param {string} item an item name to remove
* @return {undefined} returns undefined * @return {undefined} returns undefined
*/ */
removeLocalStorageItem: function (application, item){ removeLocalStorageItem: function (application, item){
item = mapKey(application, item); item = mapKey(application, item);

View File

@ -7,11 +7,14 @@
* @link http://www.egroupware.org * @link http://www.egroupware.org
* @author Hadi Nategh (as AT stylite.de) * @author Hadi Nategh (as AT stylite.de)
* @author Ralf Becker <RalfBecker@outdoor-training.de> * @author Ralf Becker <RalfBecker@outdoor-training.de>
* @version $Id: * @version $Id$
*/ */
$j(function(){ jQuery(function()
{
"use strict";
var that = this; var that = this;
var log_tail_start=0; var log_tail_start=0;

View File

@ -10,14 +10,19 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
jquery.jquery; jquery.jquery;
egw_core; egw_core;
*/ */
egw.extend('tooltip', egw.MODULE_WND_LOCAL, function(_app, _wnd) { /**
*
* @param {string} _app application name object is instanciated for
* @param {object} _wnd window object is instanciated for
*/
egw.extend('tooltip', egw.MODULE_WND_LOCAL, function(_app, _wnd)
{
"use strict";
var tooltip_div = null; var tooltip_div = null;
var current_elem = null; var current_elem = null;
@ -96,6 +101,8 @@ egw.extend('tooltip', egw.MODULE_WND_LOCAL, function(_app, _wnd) {
/** /**
* Creates the tooltip_div with the given text. * Creates the tooltip_div with the given text.
*
* @param {string} _html
*/ */
function prepare(_html) function prepare(_html)
{ {
@ -141,7 +148,7 @@ egw.extend('tooltip', egw.MODULE_WND_LOCAL, function(_app, _wnd) {
* Binds a tooltip to the given DOM-Node with the given html. * Binds a tooltip to the given DOM-Node with the given html.
* It is important to remove all tooltips from all elements which are * It is important to remove all tooltips from all elements which are
* no longer needed, in order to prevent memory leaks. * no longer needed, in order to prevent memory leaks.
* *
* @param _elem is the element to which the tooltip should get bound. It * @param _elem is the element to which the tooltip should get bound. It
* has to be a jQuery node. * has to be a jQuery node.
* @param _html is the html code which should be shown as tooltip. * @param _html is the html code which should be shown as tooltip.
@ -198,7 +205,7 @@ egw.extend('tooltip', egw.MODULE_WND_LOCAL, function(_app, _wnd) {
/** /**
* Unbinds the tooltip from the given DOM-Node. * Unbinds the tooltip from the given DOM-Node.
* *
* @param _elem is the element from which the tooltip should get * @param _elem is the element from which the tooltip should get
* removed. _elem has to be a jQuery node. * removed. _elem has to be a jQuery node.
*/ */
@ -212,7 +219,7 @@ egw.extend('tooltip', egw.MODULE_WND_LOCAL, function(_app, _wnd) {
// Unbind all "tooltip" events from the given element // Unbind all "tooltip" events from the given element
_elem.unbind('.tooltip'); _elem.unbind('.tooltip');
} }
} };
}); });

View File

@ -10,14 +10,14 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
egw_core; egw_core;
*/ */
egw.extend('user', egw.MODULE_GLOBAL, function() egw.extend('user', egw.MODULE_GLOBAL, function()
{ {
"use strict";
/** /**
* Data about current user * Data about current user
* *

View File

@ -10,13 +10,13 @@
* @version $Id$ * @version $Id$
*/ */
"use strict";
/*egw:uses /*egw:uses
egw_core; egw_core;
*/ */
egw.extend('utils', egw.MODULE_GLOBAL, function() { egw.extend('utils', egw.MODULE_GLOBAL, function()
{
"use strict";
function json_escape_string(input) function json_escape_string(input)
{ {
@ -166,19 +166,19 @@ egw.extend('utils', egw.MODULE_GLOBAL, function() {
/** /**
* Decode encoded vfs special chars * Decode encoded vfs special chars
* *
* @param string _path path to decode * @param {string} _path path to decode
* @return string * @return {string}
*/ */
decodePath: function(_path) { decodePath: function(_path) {
return decodeURIComponent(_path); return decodeURIComponent(_path);
}, },
/** /**
* Encode vfs special chars excluding / * Encode vfs special chars excluding /
* *
* @param string _path path to decode * @param {string} _path path to decode
* @return string * @return {string}
*/ */
encodePath: function(_path) { encodePath: function(_path) {
var components = _path.split('/'); var components = _path.split('/');
@ -188,20 +188,18 @@ egw.extend('utils', egw.MODULE_GLOBAL, function() {
} }
return components.join('/'); return components.join('/');
}, },
/** /**
* Encode vfs special chars removing / * Encode vfs special chars removing /
* *
* //'%' => '%25', // % should be encoded, but easily leads to double encoding, therefore better NOT encodig it * //'%' => '%25', // % should be encoded, but easily leads to double encoding, therefore better NOT encodig it
* '#' => '%23', * '#' => '%23',
* '?' => '%3F', * '?' => '%3F',
* '/' => '', // better remove it completly * '/' => '', // better remove it completly
* *
* @param string _path path to decode * @param {string} _comp path to decode
* @return string * @return {string}
*/ */
/*
*/
encodePathComponent: function(_comp) { encodePathComponent: function(_comp) {
return _comp.replace(/#/g,'%23').replace(/\?/g,'%3F').replace(/\//g,''); return _comp.replace(/#/g,'%23').replace(/\?/g,'%3F').replace(/\//g,'');
}, },
@ -214,7 +212,7 @@ egw.extend('utils', egw.MODULE_GLOBAL, function() {
* @param boolOuter Pass true to get outerWidth() / outerHeight() instead of width() / height() * @param boolOuter Pass true to get outerWidth() / outerHeight() instead of width() / height()
* *
* @return Object [w: width, h: height] * @return Object [w: width, h: height]
* *
* @author Ryan Wheale * @author Ryan Wheale
* @see http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/ * @see http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/
*/ */
@ -248,11 +246,11 @@ egw.extend('utils', egw.MODULE_GLOBAL, function() {
//$.log(”w: ” + dim.w + ”, h:” + dim.h) //$.log(”w: ” + dim.w + ”, h:” + dim.h)
return dim; return dim;
}, },
/** /**
* Store a window's name in egw.store so we can have a list of open windows * Store a window's name in egw.store so we can have a list of open windows
* *
* @param {string} appname * @param {string} appname
* @param {Window} popup * @param {Window} popup
*/ */
@ -268,20 +266,20 @@ egw.extend('utils', egw.MODULE_GLOBAL, function() {
var open_windows = JSON.parse(this.getSessionItem(_target_app, 'windows')) || {}; var open_windows = JSON.parse(this.getSessionItem(_target_app, 'windows')) || {};
open_windows[popup.name] = Date.now(); open_windows[popup.name] = Date.now();
this.setSessionItem(_target_app, 'windows', JSON.stringify(open_windows)); this.setSessionItem(_target_app, 'windows', JSON.stringify(open_windows));
// We don't want to start the timer on the popup here, because this is the function that updates the timeout, so it would set a timer each time. Timer is started in egw.js // We don't want to start the timer on the popup here, because this is the function that updates the timeout, so it would set a timer each time. Timer is started in egw.js
}, },
/** /**
* Get a list of the names of open popups * Get a list of the names of open popups
* *
* Using the name, you can get a reference to the popup using: * Using the name, you can get a reference to the popup using:
* window.open('', name); * window.open('', name);
* Popups that were not given a name when they were opened are not tracked. * Popups that were not given a name when they were opened are not tracked.
* *
* @param {string} appname Application that owns/opened the popup * @param {string} appname Application that owns/opened the popup
* @param {string} regex Optionally filter names by the given regular expression * @param {string} regex Optionally filter names by the given regular expression
* *
* @returns {string[]} List of window names * @returns {string[]} List of window names
*/ */
getOpenWindows: function(appname, regex) { getOpenWindows: function(appname, regex) {
@ -290,7 +288,7 @@ egw.extend('utils', egw.MODULE_GLOBAL, function() {
{ {
return open_windows; return open_windows;
} }
var list = [] var list = [];
var now = Date.now(); var now = Date.now();
for(var i in open_windows) for(var i in open_windows)
{ {
@ -310,7 +308,7 @@ egw.extend('utils', egw.MODULE_GLOBAL, function() {
/** /**
* Notify egw of closing a named window, which removes it from the list * Notify egw of closing a named window, which removes it from the list
* *
* @param {String} appname * @param {String} appname
* @param {Window|String} closed Window that was closed, or its name * @param {Window|String} closed Window that was closed, or its name
* @returns {undefined} * @returns {undefined}
@ -320,7 +318,7 @@ egw.extend('utils', egw.MODULE_GLOBAL, function() {
var closed_window = typeof closed == "string" ? null : closed; var closed_window = typeof closed == "string" ? null : closed;
window.setTimeout(function() { window.setTimeout(function() {
if(closed_window != null && !closed_window.closed) return; if(closed_window != null && !closed_window.closed) return;
var open_windows = JSON.parse(egw().getSessionItem(appname, 'windows')) || {}; var open_windows = JSON.parse(egw().getSessionItem(appname, 'windows')) || {};
delete open_windows[closed_name]; delete open_windows[closed_name];
egw.setSessionItem(appname, 'windows', JSON.stringify(open_windows)); egw.setSessionItem(appname, 'windows', JSON.stringify(open_windows));