mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-21 23:43:17 +01:00
WIP of framework's multitab implementation
This commit is contained in:
parent
b5ef5126c6
commit
4bf65486ef
@ -202,7 +202,7 @@ var AddressbookApp = /** @class */ (function (_super) {
|
|||||||
if (_action.id != 'view') {
|
if (_action.id != 'view') {
|
||||||
extras.crm_list = _action.id.replace('view-', '');
|
extras.crm_list = _action.id.replace('view-', '');
|
||||||
}
|
}
|
||||||
this.egw.open(id, 'addressbook', 'view', extras, '_self', 'addressbook');
|
this.egw.open(id, 'addressbook', 'view', extras, '_tab', 'addressbook');
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* Set link filter for the already open & rendered list
|
* Set link filter for the already open & rendered list
|
||||||
|
@ -228,7 +228,7 @@ class AddressbookApp extends EgwApp
|
|||||||
extras.crm_list = _action.id.replace('view-','');
|
extras.crm_list = _action.id.replace('view-','');
|
||||||
}
|
}
|
||||||
|
|
||||||
this.egw.open(id, 'addressbook', 'view', extras, '_self', 'addressbook');
|
this.egw.open(id, 'addressbook', 'view', extras, '_tab', 'addressbook');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -342,8 +342,9 @@ var etemplate2 = /** @class */ (function () {
|
|||||||
* @param {function} _callback called after template is loaded
|
* @param {function} _callback called after template is loaded
|
||||||
* @param {object} _app local app object
|
* @param {object} _app local app object
|
||||||
* @param {boolean} _no_et2_ready true: do not send et2_ready, used by et2_dialog to not overwrite app.js et2 object
|
* @param {boolean} _no_et2_ready true: do not send et2_ready, used by et2_dialog to not overwrite app.js et2 object
|
||||||
|
* @param {string} _open_target flag of string to distinguishe between tab target and normal app object
|
||||||
*/
|
*/
|
||||||
etemplate2.prototype.load = function (_name, _url, _data, _callback, _app, _no_et2_ready) {
|
etemplate2.prototype.load = function (_name, _url, _data, _callback, _app, _no_et2_ready, _open_target) {
|
||||||
var app = _app || window.app;
|
var app = _app || window.app;
|
||||||
this.name = _name; // store top-level template name to have it available in widgets
|
this.name = _name; // store top-level template name to have it available in widgets
|
||||||
// store template base url, in case initial template is loaded via webdav, to use that for further loads too
|
// store template base url, in case initial template is loaded via webdav, to use that for further loads too
|
||||||
@ -361,7 +362,7 @@ var etemplate2 = /** @class */ (function () {
|
|||||||
var appname = _name.split('.')[0];
|
var appname = _name.split('.')[0];
|
||||||
// if no app object provided and template app is not currentapp (eg. infolog CRM view)
|
// if no app object provided and template app is not currentapp (eg. infolog CRM view)
|
||||||
// create private app object / closure with just classes / prototypes
|
// create private app object / closure with just classes / prototypes
|
||||||
if (!_app && appname && appname != currentapp) {
|
if (!_app && appname && appname != currentapp || _open_target == "_tab") {
|
||||||
app = { classes: window.app.classes };
|
app = { classes: window.app.classes };
|
||||||
}
|
}
|
||||||
// remember used app object, to eg. use: onchange="widget.getInstanceMgr().app_object[app].callback()"
|
// remember used app object, to eg. use: onchange="widget.getInstanceMgr().app_object[app].callback()"
|
||||||
@ -1016,7 +1017,7 @@ var etemplate2 = /** @class */ (function () {
|
|||||||
old.clear();
|
old.clear();
|
||||||
}
|
}
|
||||||
var et2 = new etemplate2(node, data.menuaction);
|
var et2 = new etemplate2(node, data.menuaction);
|
||||||
et2.load(data.name, data.url, data.data);
|
et2.load(data.name, data.url, data.data, null, null, null, data['open-target']);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -436,8 +436,9 @@ export class etemplate2
|
|||||||
* @param {function} _callback called after template is loaded
|
* @param {function} _callback called after template is loaded
|
||||||
* @param {object} _app local app object
|
* @param {object} _app local app object
|
||||||
* @param {boolean} _no_et2_ready true: do not send et2_ready, used by et2_dialog to not overwrite app.js et2 object
|
* @param {boolean} _no_et2_ready true: do not send et2_ready, used by et2_dialog to not overwrite app.js et2 object
|
||||||
|
* @param {string} _open_target flag of string to distinguishe between tab target and normal app object
|
||||||
*/
|
*/
|
||||||
load(_name, _url, _data, _callback?, _app?, _no_et2_ready?)
|
load(_name, _url, _data, _callback?, _app?, _no_et2_ready?, _open_target?)
|
||||||
{
|
{
|
||||||
let app = _app || window.app;
|
let app = _app || window.app;
|
||||||
this.name = _name; // store top-level template name to have it available in widgets
|
this.name = _name; // store top-level template name to have it available in widgets
|
||||||
@ -459,7 +460,7 @@ export class etemplate2
|
|||||||
const appname = _name.split('.')[0];
|
const appname = _name.split('.')[0];
|
||||||
// if no app object provided and template app is not currentapp (eg. infolog CRM view)
|
// if no app object provided and template app is not currentapp (eg. infolog CRM view)
|
||||||
// create private app object / closure with just classes / prototypes
|
// create private app object / closure with just classes / prototypes
|
||||||
if (!_app && appname && appname != currentapp)
|
if (!_app && appname && appname != currentapp || _open_target == "_tab")
|
||||||
{
|
{
|
||||||
app = {classes: window.app.classes};
|
app = {classes: window.app.classes};
|
||||||
}
|
}
|
||||||
@ -1307,7 +1308,7 @@ export class etemplate2
|
|||||||
if (old) old.clear();
|
if (old) old.clear();
|
||||||
}
|
}
|
||||||
const et2 = new etemplate2(node, data.menuaction);
|
const et2 = new etemplate2(node, data.menuaction);
|
||||||
et2.load(data.name, data.url, data.data);
|
et2.load(data.name, data.url, data.data, null, null, null, data['open-target']);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -697,6 +697,19 @@ var fw_base = (function(){ "use strict"; return Class.extend(
|
|||||||
|
|
||||||
if (app)
|
if (app)
|
||||||
{
|
{
|
||||||
|
if (_app == '_tab')
|
||||||
|
{
|
||||||
|
// add target flag
|
||||||
|
_link += '&target=_tab';
|
||||||
|
var appname = app.appName+":"+btoa(_link);
|
||||||
|
this.applications[appname] = app;
|
||||||
|
this.applications[appname]['appName'] = appname;
|
||||||
|
this.applications[appname]['indexUrl'] = _link;
|
||||||
|
this.applications[appname]['tab'] = null;
|
||||||
|
this.applications[appname]['browser'] = null;
|
||||||
|
this.applications[appname]['title'] = 'view';
|
||||||
|
app = this.getApplicationByName(appname);
|
||||||
|
}
|
||||||
this.applicationTabNavigate(app, _link);
|
this.applicationTabNavigate(app, _link);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -315,7 +315,7 @@ egw.extend('open', egw.MODULE_WND_LOCAL, function(_egw, _wnd)
|
|||||||
|
|
||||||
return popup_window;
|
return popup_window;
|
||||||
}
|
}
|
||||||
else if ((typeof _target == 'undefined' || _target == '_self' || typeof this.link_app_list()[_target] != "undefined"))
|
else if ((typeof _target == 'undefined' || _target == '_tab' || _target == '_self' || typeof this.link_app_list()[_target] != "undefined"))
|
||||||
{
|
{
|
||||||
if(_target == '_self')
|
if(_target == '_self')
|
||||||
{
|
{
|
||||||
|
@ -1006,7 +1006,8 @@ abstract class Ajax extends Api\Framework
|
|||||||
// send Api\Preferences, so we dont need to request them in a second ajax request
|
// send Api\Preferences, so we dont need to request them in a second ajax request
|
||||||
$GLOBALS['egw']->framework->response->call('egw.set_preferences',
|
$GLOBALS['egw']->framework->response->call('egw.set_preferences',
|
||||||
(array)$GLOBALS['egw_info']['user']['preferences'][$app], $app);
|
(array)$GLOBALS['egw_info']['user']['preferences'][$app], $app);
|
||||||
|
// flag to indicate target of output e.g. _tab
|
||||||
|
if ($_GET['target']) $GLOBALS['egw']->framework->set_extra('open','target',$_GET['target']);
|
||||||
// call application menuaction
|
// call application menuaction
|
||||||
ob_start();
|
ob_start();
|
||||||
$obj->$method();
|
$obj->$method();
|
||||||
|
Loading…
Reference in New Issue
Block a user