From a1f4922506a3ed5381ff43cabc17e0c346e61c1c Mon Sep 17 00:00:00 2001 From: Alexandros Sigalas Date: Sun, 12 Sep 2021 15:05:08 +0300 Subject: [PATCH] Added preference_id and preference_app attributes to toolbar widget, to make usage in edit forms opened in framework tabs easier. --- api/js/etemplate/et2_widget_toolbar.js | 38 ++++++++++++++++++------ api/js/etemplate/et2_widget_toolbar.ts | 40 ++++++++++++++++++++------ 2 files changed, 62 insertions(+), 16 deletions(-) diff --git a/api/js/etemplate/et2_widget_toolbar.js b/api/js/etemplate/et2_widget_toolbar.js index 55e761ddf7..a6658449c8 100644 --- a/api/js/etemplate/et2_widget_toolbar.js +++ b/api/js/etemplate/et2_widget_toolbar.js @@ -67,6 +67,12 @@ var et2_toolbar = /** @class */ (function (_super) { .addClass('et2_toolbar ui-widget-header ui-corner-all'); // Set proper id and dom_id for the widget _this.set_id(_this.id); + if (!_this.options.preference_id) { + _this.options.preference_id = _this.dom_id; + } + if (!_this.options.preference_app) { + _this.options.preference_app = _this.egw().app_name(); + } _this.actionbox = jQuery(document.createElement('div')) .addClass("et2_toolbar_more") .attr('id', _this.id + '-' + 'actionbox'); @@ -180,7 +186,7 @@ var et2_toolbar = /** @class */ (function (_super) { if (this.options.is_admin) { this.actionbox.find('.toolbar-admin-pref').click(function (e) { e.stopImmediatePropagation(); - egw.json('EGroupware\\Api\\Etemplate\\Widget\\Toolbar::ajax_get_default_prefs', [egw.app_name(), that.dom_id], function (_prefs) { + egw.json('EGroupware\\Api\\Etemplate\\Widget\\Toolbar::ajax_get_default_prefs', [that.options.preference_app, that.options.preference_id], function (_prefs) { var prefs = []; for (var p in _prefs) { if (_prefs[p] === false) @@ -190,7 +196,7 @@ var et2_toolbar = /** @class */ (function (_super) { }).sendRequest(true); }); } - var pref = (!egwIsMobile()) ? egw.preference(this.dom_id, this.egw().app_name()) : undefined; + var pref = (!egwIsMobile()) ? egw.preference(this.options.preference_id, this.options.preference_app) : undefined; if (pref && !jQuery.isArray(pref)) this.preference = pref; //Set the default actions for the first time @@ -366,7 +372,7 @@ var et2_toolbar = /** @class */ (function (_super) { ui.draggable.appendTo(menulist); if (that.actionlist.find(".ui-draggable").length == 0) { that.preference = {}; - egw.set_preference(that.egw().app_name(), that.dom_id, that.preference); + egw.set_preference(that.options.preference_app, that.options.preference_id, that.preference); } }, tolerance: "touch" @@ -424,7 +430,7 @@ var et2_toolbar = /** @class */ (function (_super) { this.preference[_action] = _state; if (egwIsMobile()) return; - egw.set_preference(this.egw().app_name(), this.dom_id, this.preference); + egw.set_preference(this.options.preference_app, this.options.preference_id, this.preference); }; /** * Make a button based on the given action @@ -623,7 +629,7 @@ var et2_toolbar = /** @class */ (function (_super) { id: child, value: child, label: _actions[key]['children'][child]['caption'], - app: egw.app_name(), + app: self.options.preference_app, icon: _actions[key]['children'][child]['iconUrl'] }); } @@ -633,7 +639,7 @@ var et2_toolbar = /** @class */ (function (_super) { id: key, value: key, label: _actions[key]['caption'], - app: egw.app_name(), + app: self.options.preference_app, icon: _actions[key]['iconUrl'] }); } @@ -654,12 +660,12 @@ var et2_toolbar = /** @class */ (function (_super) { } _value.actions = pref; } - egw.json('EGroupware\\Api\\Etemplate\\Widget\\Toolbar::ajax_setAdminSettings', [_value, self.dom_id, egw.app_name()], function (_result) { + egw.json('EGroupware\\Api\\Etemplate\\Widget\\Toolbar::ajax_setAdminSettings', [_value, self.options.preference_id, self.options.preference_app], function (_result) { egw.message(_result); }).sendRequest(true); } }, - title: egw.lang('admin settings for %1', this.dom_id), + title: egw.lang('admin settings for %1', this.options.preference_id), buttons: buttons, minWidth: 600, minHeight: 300, @@ -686,6 +692,22 @@ var et2_toolbar = /** @class */ (function (_super) { "type": "string", "default": "more", "description": "Define a style for list header (more ...), which can get short 3dots with no caption or bigger button with caption more ..." + }, + "preference_id": { + "name": "Preference id", + "type": "string", + "default": false, + "description": "Define a custom preference id for saving the toolbar preferences." + + "This is useful when you have the same toolbar and you use it in a pop up but also in a tab, which have different dom ids" + + "When not set it defaults to the dom id of the form." + }, + "preference_app": { + "name": "Preference application", + "type": "string", + "default": false, + "description": "Define a custom preference application for saving the toolbar preferences." + + "This is useful when you have the same toolbar and you use it in a pop up but also in a tab, wich have different application names" + + "When not set it defaults to the result of this.egw().app_name();" } }; /** diff --git a/api/js/etemplate/et2_widget_toolbar.ts b/api/js/etemplate/et2_widget_toolbar.ts index fb178d9523..d653da0bcb 100644 --- a/api/js/etemplate/et2_widget_toolbar.ts +++ b/api/js/etemplate/et2_widget_toolbar.ts @@ -48,6 +48,22 @@ class et2_toolbar extends et2_DOMWidget implements et2_IInput "type": "string", "default": "more", "description": "Define a style for list header (more ...), which can get short 3dots with no caption or bigger button with caption more ..." + }, + "preference_id": { + "name": "Preference id", + "type": "string", + "default": false, + "description": "Define a custom preference id for saving the toolbar preferences." + + "This is useful when you have the same toolbar and you use it in a pop up but also in a tab, which have different dom ids" + + "When not set it defaults to the dom id of the form." + }, + "preference_app": { + "name": "Preference application", + "type": "string", + "default": false, + "description": "Define a custom preference application for saving the toolbar preferences." + + "This is useful when you have the same toolbar and you use it in a pop up but also in a tab, wich have different application names" + + "When not set it defaults to the result of this.egw().app_name();" } }; @@ -92,6 +108,13 @@ class et2_toolbar extends et2_DOMWidget implements et2_IInput // Set proper id and dom_id for the widget this.set_id(this.id); + if(!this.options.preference_id){ + this.options.preference_id = this.dom_id; + } + + if(!this.options.preference_app){ + this.options.preference_app = this.egw().app_name(); + } this.actionbox = jQuery(document.createElement('div')) .addClass("et2_toolbar_more") @@ -230,7 +253,7 @@ class et2_toolbar extends et2_DOMWidget implements et2_IInput { this.actionbox.find('.toolbar-admin-pref').click(function(e){ e.stopImmediatePropagation(); - egw.json('EGroupware\\Api\\Etemplate\\Widget\\Toolbar::ajax_get_default_prefs', [egw.app_name(), that.dom_id], function(_prefs){ + egw.json('EGroupware\\Api\\Etemplate\\Widget\\Toolbar::ajax_get_default_prefs', [that.options.preference_app, that.options.preference_id], function(_prefs){ let prefs = []; for (let p in _prefs) { @@ -240,7 +263,8 @@ class et2_toolbar extends et2_DOMWidget implements et2_IInput }).sendRequest(true); }); } - let pref = (!egwIsMobile())? egw.preference(this.dom_id, this.egw().app_name()): undefined; + + let pref = (!egwIsMobile())? egw.preference(this.options.preference_id, this.options.preference_app): undefined; if (pref && !jQuery.isArray(pref)) this.preference = pref; //Set the default actions for the first time @@ -459,7 +483,7 @@ class et2_toolbar extends et2_DOMWidget implements et2_IInput if (that.actionlist.find(".ui-draggable").length == 0) { that.preference = {}; - egw.set_preference(that.egw().app_name(),that.dom_id,that.preference); + egw.set_preference(that.options.preference_app,that.options.preference_id,that.preference); } }, tolerance:"touch" @@ -523,7 +547,7 @@ class et2_toolbar extends et2_DOMWidget implements et2_IInput { this.preference[_action] = _state; if (egwIsMobile()) return; - egw.set_preference(this.egw().app_name(),this.dom_id,this.preference); + egw.set_preference(this.options.preference_app,this.options.preference_id,this.preference); } /** @@ -771,7 +795,7 @@ class et2_toolbar extends et2_DOMWidget implements et2_IInput id:child, value: child, label: _actions[key]['children'][child]['caption'], - app: egw.app_name(), + app: self.options.preference_app, icon: _actions[key]['children'][child]['iconUrl'] }); } @@ -782,7 +806,7 @@ class et2_toolbar extends et2_DOMWidget implements et2_IInput id:key, value: key, label: _actions[key]['caption'], - app: egw.app_name(), + app: self.options.preference_app, icon: _actions[key]['iconUrl'] }); } @@ -806,12 +830,12 @@ class et2_toolbar extends et2_DOMWidget implements et2_IInput _value.actions = pref; } egw.json('EGroupware\\Api\\Etemplate\\Widget\\Toolbar::ajax_setAdminSettings', - [_value, self.dom_id, egw.app_name()],function(_result){ + [_value, self.options.preference_id, self.options.preference_app],function(_result){ egw.message(_result); }).sendRequest(true); } }, - title: egw.lang('admin settings for %1', this.dom_id), + title: egw.lang('admin settings for %1', this.options.preference_id), buttons: buttons, minWidth: 600, minHeight: 300,