mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-01-03 04:29:28 +01:00
fix changing entry-type (with automatic submit) did not change custom-field tabs and displayed fields
This commit is contained in:
parent
22388899b1
commit
834e4f7824
@ -151,12 +151,8 @@ export class et2_customfields_list extends et2_valueWidget implements et2_IDetac
|
|||||||
}
|
}
|
||||||
if(this.options.type_filter)
|
if(this.options.type_filter)
|
||||||
{
|
{
|
||||||
const already_filtered = !jQuery.isEmptyObject(this.options.fields);
|
|
||||||
for(let field_name in this.options.customfields)
|
for(let field_name in this.options.customfields)
|
||||||
{
|
{
|
||||||
// Already excluded?
|
|
||||||
if(already_filtered && !this.options.fields[field_name]) continue;
|
|
||||||
|
|
||||||
if(!this.options.customfields[field_name].type2 || this.options.customfields[field_name].type2.length == 0 ||
|
if(!this.options.customfields[field_name].type2 || this.options.customfields[field_name].type2.length == 0 ||
|
||||||
this.options.customfields[field_name].type2 == '0')
|
this.options.customfields[field_name].type2 == '0')
|
||||||
{
|
{
|
||||||
@ -237,10 +233,6 @@ export class et2_customfields_list extends et2_valueWidget implements et2_IDetac
|
|||||||
this.options.fields[field_name] = default_tab[1] !== '-private';
|
this.options.fields[field_name] = default_tab[1] !== '-private';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (this.options.tab && this.options.customfields[field_name].tab === this.options.tab)
|
|
||||||
{
|
|
||||||
this.options.fields[field_name] = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ class Tabbox extends Etemplate\Widget
|
|||||||
*
|
*
|
||||||
* @param string|callable $method_name or function($cname, $expand, $widget)
|
* @param string|callable $method_name or function($cname, $expand, $widget)
|
||||||
* @param array $params =array('') parameter(s) first parameter has to be the cname, second $expand!
|
* @param array $params =array('') parameter(s) first parameter has to be the cname, second $expand!
|
||||||
* @param boolean $respect_disabled =false false (default): ignore disabled, true: method is NOT run for disabled widgets AND their children
|
* @param boolean $respect_disabled false (default): ignore disabled, true: method is NOT run for disabled widgets AND their children
|
||||||
*/
|
*/
|
||||||
public function run($method_name, $params=array(''), $respect_disabled=false)
|
public function run($method_name, $params=array(''), $respect_disabled=false)
|
||||||
{
|
{
|
||||||
@ -141,9 +141,9 @@ class Tabbox extends Etemplate\Widget
|
|||||||
* Method called before eT2 request is sent to client
|
* Method called before eT2 request is sent to client
|
||||||
*
|
*
|
||||||
* @param string $cname
|
* @param string $cname
|
||||||
* @param array $expand values for keys 'c', 'row', 'c_', 'row_', 'cont'
|
* @param array|null $expand values for keys 'c', 'row', 'c_', 'row_', 'cont'
|
||||||
*/
|
*/
|
||||||
public function beforeSendToClient($cname, array $expand=null)
|
public function beforeSendToClient($cname, ?array $expand=null)
|
||||||
{
|
{
|
||||||
[$app] = explode('.', self::$request->template['name']);
|
[$app] = explode('.', self::$request->template['name']);
|
||||||
// no need to run if we have no custom fields
|
// no need to run if we have no custom fields
|
||||||
@ -163,10 +163,10 @@ class Tabbox extends Etemplate\Widget
|
|||||||
{
|
{
|
||||||
$prepend = in_array($prepend, ['true', '1']);
|
$prepend = in_array($prepend, ['true', '1']);
|
||||||
}
|
}
|
||||||
// is adding of CFs disabled --> exit
|
// is adding of CFs disabled --> unset them all
|
||||||
if (!empty($this->attrs['cfDisabled']))
|
if (!empty($this->attrs['cfDisabled']) && $this->attrs['cfDisabled'] !== 'false')
|
||||||
{
|
{
|
||||||
return;
|
$cfs = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if template still contains a legacy customfield tab
|
// check if template still contains a legacy customfield tab
|
||||||
@ -230,27 +230,30 @@ class Tabbox extends Etemplate\Widget
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// filter out previously added custom-field tabs, as they might change due to cfTypeFilter
|
||||||
|
if (($extra_tabs =& self::getElementAttribute($this->id, 'extraTabs')))
|
||||||
|
{
|
||||||
|
$extra_tabs = array_filter($extra_tabs, static function($tab)
|
||||||
|
{
|
||||||
|
return !preg_match('/^cf-(default(-(non-)?private)?|tab\d+)$/', $tab['id']);
|
||||||
|
});
|
||||||
|
}
|
||||||
if ($tabs || $default_tab || $private_tab)
|
if ($tabs || $default_tab || $private_tab)
|
||||||
{
|
{
|
||||||
// pass given cfTypeFilter attribute via content to all customfields widgets (set in api.cf-tab template)
|
// pass given cfTypeFilter attribute via content to all customfields widgets (set in api.cf-tab template)
|
||||||
if ($type_filter)
|
if (($type_filter=implode(',', $type_filter)))
|
||||||
{
|
{
|
||||||
$content = self::$request->content;
|
$content = self::$request->content;
|
||||||
$content['cfTypeFilter'] = implode(',', $type_filter);
|
$content['cfTypeFilter'] = $type_filter;
|
||||||
self::$request->content = $content;
|
self::$request->content = $content;
|
||||||
}
|
}
|
||||||
// pass cfExclude attribute via content to all customfields widgets (set in api.cf-tab template)
|
// pass cfExclude attribute via content to all customfields widgets (set in api.cf-tab template)
|
||||||
if ($exclude)
|
if (($exclude=implode(',', $exclude)))
|
||||||
{
|
{
|
||||||
$content = self::$request->content;
|
$content = self::$request->content;
|
||||||
$content['cfExclude'] = implode(',', $exclude);
|
$content['cfExclude'] = $exclude;
|
||||||
self::$request->content = $content;
|
self::$request->content = $content;
|
||||||
}
|
}
|
||||||
// we must not add tabs again!
|
|
||||||
if (!empty(self::$response))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// 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);
|
||||||
if (!isset($add_tabs)) $add_tabs = true;
|
if (!isset($add_tabs)) $add_tabs = true;
|
||||||
@ -260,7 +263,7 @@ class Tabbox extends Etemplate\Widget
|
|||||||
$extra_tabs = array_merge($extra_tabs ?? [], $default_tab, $private_tab, array_values($tabs));
|
$extra_tabs = array_merge($extra_tabs ?? [], $default_tab, $private_tab, array_values($tabs));
|
||||||
|
|
||||||
// if we have no explicit default cf widget/tab, we need to call customfields::beforeSendToClient() to pass cfs to client-side
|
// if we have no explicit default cf widget/tab, we need to call customfields::beforeSendToClient() to pass cfs to client-side
|
||||||
$cfs = new Customfields('<customfields/>');
|
$cfs = new Customfields("<customfields type_filter=\"$type_filter\" exclude=\"$exclude\"/>");
|
||||||
$cfs->beforeSendToClient($cname, $expand);
|
$cfs->beforeSendToClient($cname, $expand);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user