mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-06-27 13:22:06 +02:00
WIP allow to place custom-fields in tabs: cfExclude option to et2-tabs to exclude cfs from the tabs e.g. to place them separate into the template
This commit is contained in:
parent
2e37f9bd34
commit
dedaa29204
@ -42,6 +42,12 @@ export class et2_customfields_list extends et2_valueWidget implements et2_IDetac
|
|||||||
'description': 'Auto filled',
|
'description': 'Auto filled',
|
||||||
'type': 'any'
|
'type': 'any'
|
||||||
},
|
},
|
||||||
|
exclude: {
|
||||||
|
name: 'Fields to exclude',
|
||||||
|
description: 'comma-separated list of fields to exclude',
|
||||||
|
type: 'string',
|
||||||
|
default: undefined,
|
||||||
|
},
|
||||||
'value': {
|
'value': {
|
||||||
'name': 'Custom fields',
|
'name': 'Custom fields',
|
||||||
'description': 'Auto filled',
|
'description': 'Auto filled',
|
||||||
@ -183,12 +189,14 @@ export class et2_customfields_list extends et2_valueWidget implements et2_IDetac
|
|||||||
this.options.tab = Et2Tabs.getTabPanel(this, true);
|
this.options.tab = Et2Tabs.getTabPanel(this, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const exclude : Array<string> = this.options.exclude ? this.options.exclude.split(',') : [];
|
||||||
// filter fields additionally by tab attribute
|
// filter fields additionally by tab attribute
|
||||||
if (typeof this.options.fields === "undefined" || !Object.keys(this.options.fields).length)
|
if (typeof this.options.fields === "undefined" || !Object.keys(this.options.fields).length)
|
||||||
{
|
{
|
||||||
this.options.fields = {};
|
this.options.fields = {};
|
||||||
for(let field_name in this.options.customfields)
|
for(let field_name in this.options.customfields)
|
||||||
{
|
{
|
||||||
|
if (exclude.indexOf(field_name) >= 0) continue;
|
||||||
if (this.options.customfields[field_name].tab === this.options.tab)
|
if (this.options.customfields[field_name].tab === this.options.tab)
|
||||||
{
|
{
|
||||||
this.options.fields[field_name] = true;
|
this.options.fields[field_name] = true;
|
||||||
@ -210,7 +218,11 @@ export class et2_customfields_list extends et2_valueWidget implements et2_IDetac
|
|||||||
{
|
{
|
||||||
for(let field_name in this.options.customfields)
|
for(let field_name in this.options.customfields)
|
||||||
{
|
{
|
||||||
if (default_tab ? this.options.customfields[field_name].tab : this.options.customfields[field_name].tab !== this.options.tab)
|
if (exclude.indexOf(field_name) >= 0)
|
||||||
|
{
|
||||||
|
this.options.fields[field_name] = false;
|
||||||
|
}
|
||||||
|
else if (default_tab ? this.options.customfields[field_name].tab : this.options.customfields[field_name].tab !== this.options.tab)
|
||||||
{
|
{
|
||||||
this.options.fields[field_name] = false;
|
this.options.fields[field_name] = false;
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,7 @@ use EGroupware\Api;
|
|||||||
* - cfTypeFilter: optional type-filter for automatic created custom-fields tabs
|
* - cfTypeFilter: optional type-filter for automatic created custom-fields tabs
|
||||||
* - cfPrivateTab: true: create an extra tab for private custom-fields, false (default): show private ones together with non-private ones
|
* - cfPrivateTab: true: create an extra tab for private custom-fields, false (default): show private ones together with non-private ones
|
||||||
* - cfPrepend: value for prepend tab-attribute for dynamic generated custom-field tabs, default "history"
|
* - cfPrepend: value for prepend tab-attribute for dynamic generated custom-field tabs, default "history"
|
||||||
|
* - cfExclude: custom fields to exclude, comma-separated, to list fields added e.g. manually to the template
|
||||||
*/
|
*/
|
||||||
class Tabbox extends Etemplate\Widget
|
class Tabbox extends Etemplate\Widget
|
||||||
{
|
{
|
||||||
@ -161,9 +162,16 @@ class Tabbox extends Etemplate\Widget
|
|||||||
// check if template still contains a legacy customfield tab
|
// check if template still contains a legacy customfield tab
|
||||||
$have_legacy_cf_tab = $this->haveLegacyCfTab();
|
$have_legacy_cf_tab = $this->haveLegacyCfTab();
|
||||||
|
|
||||||
|
$exclude = self::getElementAttribute($form_name, 'cfExclude') ?? $this->attrs['cfExclude'] ?? null;
|
||||||
|
$exclude = $exclude ? explode(',', $exclude) : [];
|
||||||
|
|
||||||
$tabs = $private_tab = $default_tab = [];
|
$tabs = $private_tab = $default_tab = [];
|
||||||
foreach($cfs as $cf)
|
foreach($cfs as $cf)
|
||||||
{
|
{
|
||||||
|
if (in_array($cf['name'], $exclude))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (!empty($cf['tab']))
|
if (!empty($cf['tab']))
|
||||||
{
|
{
|
||||||
$tab = $tabs[$cf['tab']]['id'] ?? 'cf-tab'.(1+count($tabs));
|
$tab = $tabs[$cf['tab']]['id'] ?? 'cf-tab'.(1+count($tabs));
|
||||||
@ -215,6 +223,13 @@ class Tabbox extends Etemplate\Widget
|
|||||||
$content['cfTypeFilter'] = self::expand_name($type_filter, 0, 0, 0, 0, $content);
|
$content['cfTypeFilter'] = self::expand_name($type_filter, 0, 0, 0, 0, $content);
|
||||||
self::$request->content = $content;
|
self::$request->content = $content;
|
||||||
}
|
}
|
||||||
|
// pass cfExclude attribute via content to all customfields widgets (set in api.cf-tab template)
|
||||||
|
if ($exclude)
|
||||||
|
{
|
||||||
|
$content = self::$request->content;
|
||||||
|
$content['cfExclude'] = implode(',', $exclude);
|
||||||
|
self::$request->content = $content;
|
||||||
|
}
|
||||||
|
|
||||||
// addTabs is default false (= replace tabs), we need a default of true
|
// addTabs is default false (= replace tabs), we need a default of true
|
||||||
$add_tabs =& self::setElementAttribute($this->id, 'addTabs', null);
|
$add_tabs =& self::setElementAttribute($this->id, 'addTabs', null);
|
||||||
|
@ -2,6 +2,6 @@
|
|||||||
<!DOCTYPE overlay PUBLIC "-//EGroupware GmbH//eTemplate 2.0//EN" "https://www.egroupware.org/etemplate2.0.dtd">
|
<!DOCTYPE overlay PUBLIC "-//EGroupware GmbH//eTemplate 2.0//EN" "https://www.egroupware.org/etemplate2.0.dtd">
|
||||||
<overlay>
|
<overlay>
|
||||||
<template id="api.cf-tab" template="" lang="" group="0" version="23.1">
|
<template id="api.cf-tab" template="" lang="" group="0" version="23.1">
|
||||||
<customfields tab="panel" type_filter="@cfTypeFilter"/>
|
<customfields tab="panel" type_filter="@cfTypeFilter" exclude="@cfExclude"/>
|
||||||
</template>
|
</template>
|
||||||
</overlay>
|
</overlay>
|
Loading…
x
Reference in New Issue
Block a user