WIP allow cfs in extra tabs

This commit is contained in:
ralf 2024-03-20 22:52:51 +02:00
parent 335f618736
commit 8b59c76150
2 changed files with 40 additions and 2 deletions

View File

@ -139,7 +139,7 @@ class admin_customfields
$this->use_private = !empty($_GET['use_private']) && $_GET['use_private'] !== 'undefined' || !empty($content['use_private']); $this->use_private = !empty($_GET['use_private']) && $_GET['use_private'] !== 'undefined' || !empty($content['use_private']);
// Read fields, constructor doesn't always know appname // Read fields, constructor doesn't always know appname
$this->fields = Api\Storage\Customfields::get($this->appname,true); $this->fields = Api\Storage\Customfields::get($this->appname,true, null, null, null);
$this->tmpl = new Etemplate(); $this->tmpl = new Etemplate();
$this->tmpl->read('admin.customfields'); $this->tmpl->read('admin.customfields');
@ -349,7 +349,7 @@ class admin_customfields
$this->use_readonly = !isset($_GET['use_readonly']) || (boolean)$_GET['use_readonly'] || !empty($content['use_readonly']); $this->use_readonly = !isset($_GET['use_readonly']) || (boolean)$_GET['use_readonly'] || !empty($content['use_readonly']);
// Read fields, constructor doesn't always know appname // Read fields, constructor doesn't always know appname
$this->fields = Api\Storage\Customfields::get($this->appname,true); $this->fields = Api\Storage\Customfields::get($this->appname,true, null, null, null);
// Update based on info returned from template // Update based on info returned from template
if (is_array($content)) if (is_array($content))

View File

@ -14,6 +14,7 @@
namespace EGroupware\Api\Etemplate\Widget; namespace EGroupware\Api\Etemplate\Widget;
use EGroupware\Api\Etemplate; use EGroupware\Api\Etemplate;
use EGroupware\Api;
/** /**
* eTemplate Tabs widget stacks multiple sub-templates and lets you switch between them * eTemplate Tabs widget stacks multiple sub-templates and lets you switch between them
@ -129,4 +130,41 @@ class Tabbox extends Etemplate\Widget
if (true) $valid = $value; if (true) $valid = $value;
} }
} }
/**
* Method called before eT2 request is sent to client
*
* @param string $cname
* @param array $expand values for keys 'c', 'row', 'c_', 'row_', 'cont'
*/
public function beforeSendToClient($cname, array $expand=null)
{
[$app] = explode('.', self::$request->template['name']);
if (empty($app) || !($cfs = Api\Storage\Customfields::get($app, false, null, null, true)))
{
return;
}
$tabs = [];
$content = self::$request->content;
foreach($cfs as $cf)
{
if (!empty($cf['tab']))
{
$tab = $tabs[$cf['tab']]['id'] ?? 'cf-tab'.(1+count($tabs));
if (!isset($tabs[$cf['tab']]))
{
$tabs[$cf['tab']] = array(
'id' => $tab,
'template' => 'api.cf-tab',
'label' => $cf['tab'],
);
}
}
}
if ($tabs)
{
self::$request->content = $content;
self::setElementAttribute($this->id, 'extraTabs', array_values($tabs));
}
}
} }