From 033c1f4a9fce6f1267b2ae90d0b8c83041aa7025 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Mon, 29 Feb 2016 15:50:24 +0000 Subject: [PATCH] fixing scope of "use strict", so we do not need to remove it when concatinating our scripts like we do now with minjs --- phpgwapi/js/framework/fw_base.js | 11 +++--- phpgwapi/js/framework/fw_browser.js | 19 ++++------ phpgwapi/js/framework/fw_desktop.js | 21 ++++++----- phpgwapi/js/framework/fw_ui.js | 22 +++++------- phpgwapi/js/jsapi/app_base.js | 54 ++++++++++++++-------------- phpgwapi/js/jsapi/egw.js | 7 ++-- phpgwapi/js/jsapi/egw_calendar.js | 8 +++-- phpgwapi/js/jsapi/egw_config.js | 6 ++-- phpgwapi/js/jsapi/egw_core.js | 6 ++-- phpgwapi/js/jsapi/egw_css.js | 6 ++-- phpgwapi/js/jsapi/egw_data.js | 19 +++++++--- phpgwapi/js/jsapi/egw_debug.js | 6 ++-- phpgwapi/js/jsapi/egw_files.js | 14 ++++---- phpgwapi/js/jsapi/egw_images.js | 6 ++-- phpgwapi/js/jsapi/egw_inheritance.js | 4 +-- phpgwapi/js/jsapi/egw_jquery.js | 19 +++++----- phpgwapi/js/jsapi/egw_json.js | 14 +++++--- phpgwapi/js/jsapi/egw_jsonq.js | 4 +-- phpgwapi/js/jsapi/egw_lang.js | 6 ++-- phpgwapi/js/jsapi/egw_message.js | 38 ++++++++++---------- phpgwapi/js/jsapi/egw_preferences.js | 6 ++-- phpgwapi/js/jsapi/egw_ready.js | 12 ++++--- phpgwapi/js/jsapi/egw_store.js | 26 +++++++------- phpgwapi/js/jsapi/egw_tail.js | 7 ++-- phpgwapi/js/jsapi/egw_tooltip.js | 19 ++++++---- phpgwapi/js/jsapi/egw_user.js | 4 +-- phpgwapi/js/jsapi/egw_utils.js | 54 ++++++++++++++-------------- 27 files changed, 219 insertions(+), 199 deletions(-) diff --git a/phpgwapi/js/framework/fw_base.js b/phpgwapi/js/framework/fw_base.js index d0b33fc930..89b358b9af 100644 --- a/phpgwapi/js/framework/fw_base.js +++ b/phpgwapi/js/framework/fw_base.js @@ -7,14 +7,13 @@ * @description Framework base module which creates fw_base object and includes basic framework functionallity */ -"use strict"; /*egw:uses jquery.jquery; 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 * @param {type} _sidemenuId @@ -398,7 +397,7 @@ var fw_base = Class.extend({ this.storeTabsStatus(); } }, - + /** * Store last status of tabs * 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]); } }, - + /** * @param {function} _opened * 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); diff --git a/phpgwapi/js/framework/fw_browser.js b/phpgwapi/js/framework/fw_browser.js index 0de839edaf..c002310078 100644 --- a/phpgwapi/js/framework/fw_browser.js +++ b/phpgwapi/js/framework/fw_browser.js @@ -17,11 +17,9 @@ EGW_BROWSER_TYPE_NONE = 0; EGW_BROWSER_TYPE_IFRAME = 1; 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 {function} _heightCallback @@ -167,13 +165,13 @@ var fw_browser = Class.extend({ this.loadingDeferred.always(function() { if(self.ajaxLoaderDiv) { - + self.ajaxLoaderDiv = egw.loading_prompt(self.app.appName,false); // Remove escape timeout clearTimeout(self.ajaxLoaderDivTimeout); } - - + + }); // 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) this.app.sidemenuEntry.hideAjaxLoader(); // egw_widgetReplace(this.app.appName, this.contentDiv, this.data); - content = { + var content = { html: this.data, js: '' }; @@ -373,7 +371,4 @@ var fw_browser = Class.extend({ { this.browse('about:blank', this.type == EGW_BROWSER_TYPE_IFRAME); } - - - -}); +});}).call(this); diff --git a/phpgwapi/js/framework/fw_desktop.js b/phpgwapi/js/framework/fw_desktop.js index 49b51095f8..c1a7330ff6 100644 --- a/phpgwapi/js/framework/fw_desktop.js +++ b/phpgwapi/js/framework/fw_desktop.js @@ -8,7 +8,6 @@ * @description Create jdots framework */ -"use strict"; /*egw:uses jquery.jquery; framework.fw_base; @@ -17,7 +16,15 @@ egw_fw_classes; egw_inheritance.js; */ -(function(window){ + +/** + * + * @param {DOMWindow} window + */ +(function(window) +{ + "use strict"; + /** * * @type @exp;fw_ui_sidemenu_entry@call;extend @@ -84,12 +91,8 @@ * * @type @exp;fw_ui_sidemenu@call;extend */ - var desktop_ui_sidemenu = fw_ui_sidemenu.extend({ - - /** - * - * @returns {undefined} - */ + var desktop_ui_sidemenu = fw_ui_sidemenu.extend( + { init: function(_baseDiv, _sortCallback) { this._super.apply(this,arguments); @@ -211,7 +214,7 @@ /** * - * @returns {undefined} + * @param {array} apps */ loadApplications: function (apps) { diff --git a/phpgwapi/js/framework/fw_ui.js b/phpgwapi/js/framework/fw_ui.js index 9daab4777a..a42fd75b6c 100644 --- a/phpgwapi/js/framework/fw_ui.js +++ b/phpgwapi/js/framework/fw_ui.js @@ -13,21 +13,14 @@ egw_inheritance.js; */ -/** - * Constants definition - */ - -"use strict"; - /** * ui siemenu entry class * Basic sidebar menu implementation * * @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 * @@ -179,13 +172,14 @@ var fw_ui_sidemenu_entry = Class.extend({ $j(this.headerDiv).remove(); $j(this.contentDiv).remove(); } -}); +});}).call(this); /** * * @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. * @@ -279,7 +273,7 @@ var fw_ui_sidemenu = Class.extend({ this.entries = new Array(); } -}); +});}).call(this); /** * Class: egw_fw_ui_tab @@ -850,12 +844,12 @@ function egw_fw_ui_scrollarea(_contDiv) var self = this; $j(this.scrollDiv).on('mousewheel',function(e, delta) { var noscroll = false; - + // Do not scrolldown/up when we are on selectbox items // seems Firefox does not prevent the mousewheel event over // selectbox items with scrollbars // 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)) { noscroll = true; diff --git a/phpgwapi/js/jsapi/app_base.js b/phpgwapi/js/jsapi/app_base.js index caac4521a8..54b1b9fbd0 100644 --- a/phpgwapi/js/jsapi/app_base.js +++ b/phpgwapi/js/jsapi/app_base.js @@ -11,8 +11,6 @@ * @version $Id$ */ -"use strict"; - /*egw:uses egw_inheritance; /phpgwapi/js/es6-promise.min.js; @@ -65,7 +63,7 @@ window.app = {classes: {}}; * @class AppJS * @augments Class */ -var AppJS = Class.extend( +var AppJS = (function(){ "use strict"; return Class.extend( { /** * 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 * reference or access it through etemplate2. - * + * * @example Store a local reference * // in et2_ready() * if(name == 'index') this.index_et2 = et2.widgetContainer; @@ -383,14 +381,14 @@ var AppJS = Class.extend( return state; }, - + /** * Function to load selected row from nm into a template view - * + * * @param {object} _action - * @param {object} _senders + * @param {object} _senders */ - viewEntry: function(_action, _senders) + viewEntry: function(_action, _senders) { // app id in nm var id = _senders[0].id; @@ -398,21 +396,21 @@ var AppJS = Class.extend( var id_app = ''; var content = {}; var self = this; - - + + if (id){ id_app = id.split('::'); content = egw.dataGetUIDdata(id); if (content.data) content = content.data; } - + /* destroy generated etemplate for view mode in DOM*/ var destroy = function(){ self.viewContainer.remove(); delete self.viewTemplate; delete self.viewContainer; }; - + // view container this.viewContainer = jQuery(document.createElement('div')) .addClass('et2_mobile_view') @@ -430,13 +428,13 @@ var AppJS = Class.extend( "padding":'60px 0 10px 0'}) .attr('id','popupMainDiv') .appendTo('body'); - + // close button var close = jQuery(document.createElement('span')) .addClass('egw_fw_mobile_popup_close loaded') .click(function(){destroy();}) .appendTo(this.viewContainer); - + // edit button var edit = jQuery(document.createElement('span')) .addClass('mobile-view-editBtn') @@ -445,18 +443,18 @@ var AppJS = Class.extend( }) .text(egw.lang('Edit')) .appendTo(this.viewContainer); - + // view template main container (content) this.viewTemplate = jQuery(document.createElement('div')) .attr('id', this.appname+'-view') .addClass('et2_mobile-view-container') .appendTo(this.viewContainer); - + var templateName = _action.data.mobileViewTemplate || 'edit.xet'; var etemplate = new etemplate2 (this.viewTemplate[0], false); var template = egw.webserverUrl+ '/' + this.appname + '/templates/mobile/'+templateName+'?1'; var data = {content:content, readonlys:{'__ALL__':true,'link_to':false}, currentapp:id_app[0]}; - + if(template.indexOf('.xet') > 0) { // File name provided, fetch from server @@ -466,9 +464,9 @@ var AppJS = Class.extend( { // Just template name, it better be loaded already etemplate.load(template,'',data); - } + } }, - + /** * 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 // video tutorials in sidebox. // 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() { 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 // still running under iframe and that gets into conflict with et2 object created for // 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.favorite_popup.group.loadingFinished(); } @@ -1091,7 +1089,7 @@ var AppJS = Class.extend( }).sendRequest(true); } }, - + /** * 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); egw.open_link(url,'_blank','960x580'); }, - + /** * 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 restorePassword = _restorePassword; var selector = _selector || 'body'; - //Clear the + //Clear the jQuery('iframe[src^="chrome-extension"],iframe[src^="about:blank?mvelo"]').remove(); return new Promise(function(_resolve, _reject){ var resolve = _resolve; @@ -1504,7 +1502,7 @@ var AppJS = Class.extend( this.mailvelopeInstallationOffer(); } }, - + /** * 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 @@ -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.', '*.'+this._mailvelopeDomain()), video:"test", control:"true"} ]; - + dialog(content, function(_button){ if (_button == 'install') { @@ -1552,7 +1550,7 @@ var AppJS = Class.extend( // ATM we are not able to trigger mailvelope installation directly // since the installation should be triggered from the extension // 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'); } else if (typeof InstallTrigger != 'undefined' && InstallTrigger.enabled()) @@ -1783,4 +1781,4 @@ var AppJS = Class.extend( }); }); } -}); +});}).call(this); diff --git a/phpgwapi/js/jsapi/egw.js b/phpgwapi/js/jsapi/egw.js index 12ea112822..12167fc8ab 100644 --- a/phpgwapi/js/jsapi/egw.js +++ b/phpgwapi/js/jsapi/egw.js @@ -10,8 +10,6 @@ * @version $Id$ */ -"use strict"; - /*egw:uses egw_core; egw_debug; @@ -37,7 +35,10 @@ app_base; */ -(function(){ +(function() +{ + "use strict"; + var debug = false; var egw_script = document.getElementById('egw_script_id'); var start_time = (new Date).getTime(); diff --git a/phpgwapi/js/jsapi/egw_calendar.js b/phpgwapi/js/jsapi/egw_calendar.js index 7104b6bd72..66872248a3 100644 --- a/phpgwapi/js/jsapi/egw_calendar.js +++ b/phpgwapi/js/jsapi/egw_calendar.js @@ -10,8 +10,6 @@ * @version $Id$ */ -"use strict"; - /*egw:uses jquery.jquery-ui; jquery.jquery-ui-timepicker-addon; @@ -31,6 +29,8 @@ */ egw.extend('calendar', egw.MODULE_WND_LOCAL, function(_app, _wnd) { + "use strict"; + // translate only once 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); }, - + /** * Calculate the start of the week, according to user's preference + * + * @param {string} date */ week_start: function(date) { var d = new Date(date); diff --git a/phpgwapi/js/jsapi/egw_config.js b/phpgwapi/js/jsapi/egw_config.js index af8a90d833..01e5559ac7 100644 --- a/phpgwapi/js/jsapi/egw_config.js +++ b/phpgwapi/js/jsapi/egw_config.js @@ -10,13 +10,13 @@ * @version $Id$ */ -"use strict"; - /*egw:uses egw_core; */ -egw.extend('config', egw.MODULE_GLOBAL, function() { +egw.extend('config', egw.MODULE_GLOBAL, function() +{ + "use strict"; /** * Clientside config diff --git a/phpgwapi/js/jsapi/egw_core.js b/phpgwapi/js/jsapi/egw_core.js index 344ee25b7b..060175f2d6 100644 --- a/phpgwapi/js/jsapi/egw_core.js +++ b/phpgwapi/js/jsapi/egw_core.js @@ -10,13 +10,13 @@ * @version $Id$ */ -"use strict"; - /** * 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. */ -(function() { +(function() +{ + "use strict"; var instanceUid = 0; diff --git a/phpgwapi/js/jsapi/egw_css.js b/phpgwapi/js/jsapi/egw_css.js index 27180d4046..a6260e284b 100644 --- a/phpgwapi/js/jsapi/egw_css.js +++ b/phpgwapi/js/jsapi/egw_css.js @@ -10,8 +10,6 @@ * @version $Id$ */ -"use strict"; - /*egw:uses egw_core; */ @@ -23,7 +21,9 @@ * @param {string} _app application name 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. diff --git a/phpgwapi/js/jsapi/egw_data.js b/phpgwapi/js/jsapi/egw_data.js index ac89668fb1..969076ec61 100644 --- a/phpgwapi/js/jsapi/egw_data.js +++ b/phpgwapi/js/jsapi/egw_data.js @@ -15,9 +15,15 @@ egw_debug; */ -"use strict"; - -egw.extend("data", egw.MODULE_APP_LOCAL, function (_app, _wnd) { +/** + * Module storing and updating row data + * + * @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. @@ -527,6 +533,11 @@ egw.extend("data_storage", egw.MODULE_GLOBAL, function (_app, _wnd) { * using dataFetch() && parseServerResponse(), above. Both update the * GLOBAL data cache though this one is registered globally, and the above * is registered app local. + * + * @param {string} type + * @param {object} res + * @param {object} req + * @returns {Boolean} */ egw.registerJSONPlugin(function(type, res, req) { if ((typeof res.data.uid != 'undefined') && @@ -537,7 +548,7 @@ egw.extend("data_storage", egw.MODULE_GLOBAL, function (_app, _wnd) { return true; } }, egw, 'data',true); - + /** * Uids and timers used for querying data uids, hashed by the first few * bytes of the _execId, stored as an object of the form diff --git a/phpgwapi/js/jsapi/egw_debug.js b/phpgwapi/js/jsapi/egw_debug.js index 155f500d5f..2fe8db0a4f 100644 --- a/phpgwapi/js/jsapi/egw_debug.js +++ b/phpgwapi/js/jsapi/egw_debug.js @@ -10,8 +10,6 @@ * @version $Id$ */ -"use strict"; - /*egw:uses egw_core; */ @@ -25,7 +23,9 @@ * @param {string} _app * @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. diff --git a/phpgwapi/js/jsapi/egw_files.js b/phpgwapi/js/jsapi/egw_files.js index ddc0a177c8..2c70e5d6c9 100644 --- a/phpgwapi/js/jsapi/egw_files.js +++ b/phpgwapi/js/jsapi/egw_files.js @@ -10,8 +10,6 @@ * @version $Id$ */ -"use strict"; - /*egw:uses egw_core; egw_ready; @@ -20,9 +18,13 @@ /** * @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) { + "use strict"; + 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 * * @memberOf egw - * @param string|array _jsFiles (array of) urls to include - * @param function _callback called after JS files are loaded and executed - * @param object _context - * @param string _prefix prefix for _jsFiles + * @param {string|array} _jsFiles (array of) urls to include + * @param {function} _callback called after JS files are loaded and executed + * @param {object} _context + * @param {string} _prefix prefix for _jsFiles */ includeJS: function(_jsFiles, _callback, _context, _prefix) { diff --git a/phpgwapi/js/jsapi/egw_images.js b/phpgwapi/js/jsapi/egw_images.js index ffe7ea55f7..416fe9765d 100644 --- a/phpgwapi/js/jsapi/egw_images.js +++ b/phpgwapi/js/jsapi/egw_images.js @@ -10,13 +10,13 @@ * @version $Id$ */ -"use strict"; - /*egw:uses 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 diff --git a/phpgwapi/js/jsapi/egw_inheritance.js b/phpgwapi/js/jsapi/egw_inheritance.js index c75f872369..55347442ae 100644 --- a/phpgwapi/js/jsapi/egw_inheritance.js +++ b/phpgwapi/js/jsapi/egw_inheritance.js @@ -10,8 +10,6 @@ * @version $Id$ */ -"use strict"; - /** * Usage of the JS inheritance system * ---------------------------------- @@ -71,6 +69,8 @@ */ (function() { + "use strict"; + var initializing = false; /** diff --git a/phpgwapi/js/jsapi/egw_jquery.js b/phpgwapi/js/jsapi/egw_jquery.js index 5d9c6e47d8..da46611be8 100644 --- a/phpgwapi/js/jsapi/egw_jquery.js +++ b/phpgwapi/js/jsapi/egw_jquery.js @@ -9,15 +9,20 @@ * @version $Id$ */ -"use strict" - /*egw:uses egw_core; egw_files; 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 // window @@ -36,10 +41,6 @@ egw.extend('jquery', egw.MODULE_WND_LOCAL, function(_app, _wnd) { }, this); return { - '$j': null - } - + '$j': null + }; }); - - - diff --git a/phpgwapi/js/jsapi/egw_json.js b/phpgwapi/js/jsapi/egw_json.js index 28fc3588ec..e601f4b3e6 100644 --- a/phpgwapi/js/jsapi/egw_json.js +++ b/phpgwapi/js/jsapi/egw_json.js @@ -10,8 +10,6 @@ * @version $Id$ */ -"use strict"; - /*egw:uses jquery.jquery; @@ -21,7 +19,15 @@ 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. @@ -36,7 +42,7 @@ egw.extend('json', egw.MODULE_WND_LOCAL, function(_app, _wnd) { */ if(typeof egw._global_json_handlers == 'undefined') { - egw._global_json_handlers = {} + egw._global_json_handlers = {}; } var global_plugins = egw._global_json_handlers; diff --git a/phpgwapi/js/jsapi/egw_jsonq.js b/phpgwapi/js/jsapi/egw_jsonq.js index 2e936d9008..d12b5c54ce 100644 --- a/phpgwapi/js/jsapi/egw_jsonq.js +++ b/phpgwapi/js/jsapi/egw_jsonq.js @@ -10,8 +10,6 @@ * @version $Id$ */ -"use strict"; - /*egw:uses egw_core; egw_debug; @@ -19,6 +17,8 @@ egw.extend('jsonq', egw.MODULE_GLOBAL, function() { + "use strict"; + /** * Queued json requests (objects with attributes menuaction, parameters, context, callback, sender and callbeforesend) * diff --git a/phpgwapi/js/jsapi/egw_lang.js b/phpgwapi/js/jsapi/egw_lang.js index 1e291c63f9..691acc26fb 100644 --- a/phpgwapi/js/jsapi/egw_lang.js +++ b/phpgwapi/js/jsapi/egw_lang.js @@ -10,8 +10,6 @@ * @version $Id$ */ -"use strict"; - /*egw:uses egw_core; egw_files; @@ -21,7 +19,9 @@ /** * @augments Class */ -egw.extend('lang', egw.MODULE_GLOBAL, function() { +egw.extend('lang', egw.MODULE_GLOBAL, function() +{ + "use strict"; /** * Translations diff --git a/phpgwapi/js/jsapi/egw_message.js b/phpgwapi/js/jsapi/egw_message.js index a1ebf29e9a..ba6b5de4eb 100644 --- a/phpgwapi/js/jsapi/egw_message.js +++ b/phpgwapi/js/jsapi/egw_message.js @@ -9,8 +9,6 @@ * @version $Id$ */ -"use strict"; - /*egw:uses egw_core; */ @@ -24,6 +22,8 @@ */ egw.extend('message', egw.MODULE_WND_LOCAL, function(_app, _wnd) { + "use strict"; + _app; // not used, but required by function signature var message_timer; 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 _msg = _msg.replace(new_line_reg, "\n"); - + var msg_div = jQuery(_wnd.document.createElement('div')) .attr('id','egw_message') .text(_msg) @@ -107,7 +107,7 @@ egw.extend('message', egw.MODULE_WND_LOCAL, function(_app, _wnd) && msg_chkbox && msg_chkbox.is(':checked')) { var discarded = egw.getLocalStorageItem(egw.app_name(),'discardedMsgs'); - + if (!isDiscarded(_msg)) { if (!discarded) @@ -124,7 +124,7 @@ egw.extend('message', egw.MODULE_WND_LOCAL, function(_app, _wnd) $j(this).remove(); }) .css('position', 'absolute'); - + // discard checkbox implementation if (_discard && _type === 'info') { @@ -132,7 +132,7 @@ egw.extend('message', egw.MODULE_WND_LOCAL, function(_app, _wnd) var isDiscarded = function (_msg) { var discarded = JSON.parse(egw.getLocalStorageItem(egw.app_name(),'discardedMsgs')); - + if (jQuery.isArray(discarded)) { for(var i=0; i< discarded.length; i++) @@ -142,14 +142,14 @@ egw.extend('message', egw.MODULE_WND_LOCAL, function(_app, _wnd) } return false; }; - + //discard div container var msg_discard =jQuery(_wnd.document.createElement('div')).addClass('discard'); - + // checkbox var msg_chkbox = jQuery(_wnd.document.createElement('input')) .attr({type:"checkbox",name:"msgChkbox"}) - .click(function(e){e.stopImmediatePropagation();}) + .click(function(e){e.stopImmediatePropagation();}) .appendTo(msg_discard); // Label jQuery(_wnd.document.createElement('label')) @@ -157,13 +157,13 @@ egw.extend('message', egw.MODULE_WND_LOCAL, function(_app, _wnd) .css({"font-weight":"bold"}) .attr({for:'msgChkbox'}) .appendTo(msg_discard); - - if (isDiscarded(_msg)) return; + + if (isDiscarded(_msg)) return; msg_div.append(msg_discard); } - + parent.prepend(msg_div); - + // replace simple a href (NO other attribute, to gard agains XSS!) var matches = a_href_reg.exec(_msg); if (matches) @@ -239,20 +239,20 @@ egw.extend('message', egw.MODULE_WND_LOCAL, function(_app, _wnd) _wnd.document.title = _wnd.document.title.replace(/[.*]$/, '['+_header+']'); }, - + /** * Loading prompt is for building a loading animation and show it to user * while a request is under progress. - * + * * @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 {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} mode defines the animation mode, default mode is spinner - * animation modes: + * @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 + * animation modes: * - spinner: a sphere with a spinning bar inside * - horizental: a horizental bar - * + * * @returns {jquery dom object|null} returns jQuery DOM object or null in case of hiding */ loading_prompt: function(_id,_stat,_msg,_node, _mode) diff --git a/phpgwapi/js/jsapi/egw_preferences.js b/phpgwapi/js/jsapi/egw_preferences.js index 61d5178882..dac3e4072b 100644 --- a/phpgwapi/js/jsapi/egw_preferences.js +++ b/phpgwapi/js/jsapi/egw_preferences.js @@ -10,13 +10,13 @@ * @version $Id$ */ -"use strict"; - /*egw:uses 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 diff --git a/phpgwapi/js/jsapi/egw_ready.js b/phpgwapi/js/jsapi/egw_ready.js index 7b8e8a4843..04cbd08139 100644 --- a/phpgwapi/js/jsapi/egw_ready.js +++ b/phpgwapi/js/jsapi/egw_ready.js @@ -9,8 +9,6 @@ * @version $Id$ */ -"use strict" - /*egw:uses egw_core; egw_utils; @@ -19,8 +17,12 @@ /** * @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; @@ -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 * registered callbacks. The function returns an id that has to be * passed to the "readDone" function once - * + * * @memberOf egw */ readyWaitFor: function() { @@ -181,7 +183,7 @@ egw.extend('ready', egw.MODULE_WND_LOCAL, function(_app, _wnd) { else { setTimeout(function() { - _callback.call(_context) + _callback.call(_context); }, 1); } }, diff --git a/phpgwapi/js/jsapi/egw_store.js b/phpgwapi/js/jsapi/egw_store.js index 1a6a73a5b4..bf4709c1df 100644 --- a/phpgwapi/js/jsapi/egw_store.js +++ b/phpgwapi/js/jsapi/egw_store.js @@ -9,16 +9,12 @@ * @version $Id$ */ - -"use strict"; - /*egw:uses egw_core; egw_ready; egw_debug; */ - /** * Store is a wrapper around browser based, persistant storage. * @@ -28,7 +24,9 @@ * @param {string} _app * @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; @@ -81,12 +79,12 @@ egw.extend('store', egw.MODULE_GLOBAL, function(_app, _wnd) { key = uniqueKey(application, key); return _wnd.sessionStorage.removeItem(key); }, - + /** * Set an item to localStorage - * + * * @param {string} application an application name or a prefix - * @param {string} item + * @param {string} item * @param {any} value * @returns {undefined} returns undefined */ @@ -94,10 +92,10 @@ egw.extend('store', egw.MODULE_GLOBAL, function(_app, _wnd) { item = mapKey (application, item); return localStorage.setItem(item,value); }, - + /** - * Get an item from localStorage - * + * Get an item from localStorage + * * @param {string} application an application name or prefix * @param {stirng} item an item name stored in localStorage * @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); return localStorage.getItem(item); }, - + /** * Remove an item from localStorage - * + * * @param {string} application application name or prefix * @param {string} item an item name to remove - * @return {undefined} returns undefined + * @return {undefined} returns undefined */ removeLocalStorageItem: function (application, item){ item = mapKey(application, item); diff --git a/phpgwapi/js/jsapi/egw_tail.js b/phpgwapi/js/jsapi/egw_tail.js index 445a6f0b2e..52f7fdad56 100644 --- a/phpgwapi/js/jsapi/egw_tail.js +++ b/phpgwapi/js/jsapi/egw_tail.js @@ -7,11 +7,14 @@ * @link http://www.egroupware.org * @author Hadi Nategh (as AT stylite.de) * @author Ralf Becker - * @version $Id: + * @version $Id$ */ -$j(function(){ +jQuery(function() +{ + "use strict"; + var that = this; var log_tail_start=0; diff --git a/phpgwapi/js/jsapi/egw_tooltip.js b/phpgwapi/js/jsapi/egw_tooltip.js index a9811078c4..ba7ecb04fc 100644 --- a/phpgwapi/js/jsapi/egw_tooltip.js +++ b/phpgwapi/js/jsapi/egw_tooltip.js @@ -10,14 +10,19 @@ * @version $Id$ */ -"use strict"; - /*egw:uses jquery.jquery; 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 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. + * + * @param {string} _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. * It is important to remove all tooltips from all elements which are * no longer needed, in order to prevent memory leaks. - * + * * @param _elem is the element to which the tooltip should get bound. It * has to be a jQuery node. * @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. - * + * * @param _elem is the element from which the tooltip should get * 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 _elem.unbind('.tooltip'); } - } + }; }); diff --git a/phpgwapi/js/jsapi/egw_user.js b/phpgwapi/js/jsapi/egw_user.js index 8fcb897521..1ea5695f7d 100644 --- a/phpgwapi/js/jsapi/egw_user.js +++ b/phpgwapi/js/jsapi/egw_user.js @@ -10,14 +10,14 @@ * @version $Id$ */ -"use strict"; - /*egw:uses egw_core; */ egw.extend('user', egw.MODULE_GLOBAL, function() { + "use strict"; + /** * Data about current user * diff --git a/phpgwapi/js/jsapi/egw_utils.js b/phpgwapi/js/jsapi/egw_utils.js index d999d9d6f7..dc7ec5cab2 100644 --- a/phpgwapi/js/jsapi/egw_utils.js +++ b/phpgwapi/js/jsapi/egw_utils.js @@ -10,13 +10,13 @@ * @version $Id$ */ -"use strict"; - /*egw:uses egw_core; */ -egw.extend('utils', egw.MODULE_GLOBAL, function() { +egw.extend('utils', egw.MODULE_GLOBAL, function() +{ + "use strict"; function json_escape_string(input) { @@ -166,19 +166,19 @@ egw.extend('utils', egw.MODULE_GLOBAL, function() { /** * Decode encoded vfs special chars - * - * @param string _path path to decode - * @return string + * + * @param {string} _path path to decode + * @return {string} */ decodePath: function(_path) { return decodeURIComponent(_path); }, - + /** * Encode vfs special chars excluding / - * - * @param string _path path to decode - * @return string + * + * @param {string} _path path to decode + * @return {string} */ encodePath: function(_path) { var components = _path.split('/'); @@ -188,20 +188,18 @@ egw.extend('utils', egw.MODULE_GLOBAL, function() { } return components.join('/'); }, - + /** * Encode vfs special chars removing / - * + * * //'%' => '%25', // % should be encoded, but easily leads to double encoding, therefore better NOT encodig it * '#' => '%23', * '?' => '%3F', * '/' => '', // better remove it completly * - * @param string _path path to decode - * @return string + * @param {string} _comp path to decode + * @return {string} */ - /* - */ encodePathComponent: function(_comp) { 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() * * @return Object [w: width, h: height] - * + * * @author Ryan Wheale * @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) return dim; }, - - + + /** * Store a window's name in egw.store so we can have a list of open windows - * + * * @param {string} appname * @param {Window} popup */ @@ -268,20 +266,20 @@ egw.extend('utils', egw.MODULE_GLOBAL, function() { var open_windows = JSON.parse(this.getSessionItem(_target_app, 'windows')) || {}; open_windows[popup.name] = Date.now(); 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 }, - + /** * Get a list of the names of open popups - * + * * Using the name, you can get a reference to the popup using: * window.open('', name); * 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} regex Optionally filter names by the given regular expression - * + * * @returns {string[]} List of window names */ getOpenWindows: function(appname, regex) { @@ -290,7 +288,7 @@ egw.extend('utils', egw.MODULE_GLOBAL, function() { { return open_windows; } - var list = [] + var list = []; var now = Date.now(); 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 - * + * * @param {String} appname * @param {Window|String} closed Window that was closed, or its name * @returns {undefined} @@ -320,7 +318,7 @@ egw.extend('utils', egw.MODULE_GLOBAL, function() { var closed_window = typeof closed == "string" ? null : closed; window.setTimeout(function() { if(closed_window != null && !closed_window.closed) return; - + var open_windows = JSON.parse(egw().getSessionItem(appname, 'windows')) || {}; delete open_windows[closed_name]; egw.setSessionItem(appname, 'windows', JSON.stringify(open_windows));