mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-01-03 12:39:25 +01:00
Better fix for tabs not being validated - handle it at the top level
This commit is contained in:
parent
6fcab842b0
commit
c5a9952930
@ -277,6 +277,11 @@ class etemplate_widget
|
|||||||
$class_name = 'etemplate_widget';
|
$class_name = 'etemplate_widget';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!$xml)
|
||||||
|
{
|
||||||
|
$xml = "<$type id='$id'/>";
|
||||||
|
}
|
||||||
//error_log(__METHOD__."('$type', ..., '$id') using $class_name");
|
//error_log(__METHOD__."('$type', ..., '$id') using $class_name");
|
||||||
|
|
||||||
// currently only overlays can contain templates, other widgets can only reference to templates via id
|
// currently only overlays can contain templates, other widgets can only reference to templates via id
|
||||||
@ -380,6 +385,19 @@ class etemplate_widget
|
|||||||
}
|
}
|
||||||
foreach($this->children as $child)
|
foreach($this->children as $child)
|
||||||
{
|
{
|
||||||
|
// If type has something that can be expanded, we need to expand it so the correct method is run
|
||||||
|
if(strpos($child->attrs['type'], '@') !== false || strpos($child->attrs['type'], '$') !== false)
|
||||||
|
{
|
||||||
|
$type = self::expand_name($child->attrs['type'],$expand['c'], $expand['row'], $expand['c_'], $expand['row_'], $expand['cont']);
|
||||||
|
$id = self::expand_name($child->id,$expand['c'], $expand['row'], $expand['c_'], $expand['row_'], $expand['cont']);
|
||||||
|
$attrs = $child->attrs;
|
||||||
|
unset($attrs['type']);
|
||||||
|
$expanded_child = self::factory($type, false,$id);
|
||||||
|
$expanded_child->id = $id;
|
||||||
|
$expanded_child->type = $type;
|
||||||
|
$expanded_child->attrs = $attrs + array('type' => $type);
|
||||||
|
$child = $expanded_child;
|
||||||
|
}
|
||||||
$child->run($method_name, $params, $respect_disabled);
|
$child->run($method_name, $params, $respect_disabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -791,6 +809,7 @@ class etemplate_widget
|
|||||||
public function &setElementAttribute($name,$attr,$val)
|
public function &setElementAttribute($name,$attr,$val)
|
||||||
{
|
{
|
||||||
$ref =& self::$request->modifications[$name][$attr];
|
$ref =& self::$request->modifications[$name][$attr];
|
||||||
|
$this->attrs[$attr] = $val;
|
||||||
if (!is_null($val)) $ref = $val;
|
if (!is_null($val)) $ref = $val;
|
||||||
|
|
||||||
//error_log(__METHOD__."('$name', '$attr', ".array2string($val).')');
|
//error_log(__METHOD__."('$name', '$attr', ".array2string($val).')');
|
||||||
|
@ -14,8 +14,35 @@
|
|||||||
/**
|
/**
|
||||||
* 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
|
||||||
*/
|
*/
|
||||||
class etemplate_widget_tabbox extends etemplate_widget_box
|
class etemplate_widget_tabbox extends etemplate_widget
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Fill additional tabs
|
||||||
|
*
|
||||||
|
* @param string $cname
|
||||||
|
*/
|
||||||
|
public function beforeSendToClient($cname)
|
||||||
|
{
|
||||||
|
if($this->attrs['tabs'])
|
||||||
|
{
|
||||||
|
$this->children[1]->children = array();
|
||||||
|
foreach($this->attrs['tabs'] as $tab)
|
||||||
|
{
|
||||||
|
if($tab['id'])
|
||||||
|
{
|
||||||
|
$template= clone etemplate_widget_template::instance($tab['template']);
|
||||||
|
$template->attrs['content'] = $tab['id'];
|
||||||
|
$this->children[1]->children[] = $template;
|
||||||
|
unset($template);
|
||||||
|
/* This doesn't work for some reason
|
||||||
|
$tab_valid =& self::get_array($validated, $tab['id'], true);
|
||||||
|
$tab_valid = $content[$tab['id']];
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validate input - just pass through, tabs doesn't care
|
* Validate input - just pass through, tabs doesn't care
|
||||||
*
|
*
|
||||||
@ -41,16 +68,19 @@ class etemplate_widget_tabbox extends etemplate_widget_box
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Make sure additional tabs are processed
|
// Make sure additional tabs are processed
|
||||||
|
$this->children[1]->children = array();
|
||||||
foreach($this->attrs['tabs'] as $tab)
|
foreach($this->attrs['tabs'] as $tab)
|
||||||
{
|
{
|
||||||
if($tab['id'] && $content[$tab['id']])
|
if($tab['id'] && $content[$tab['id']])
|
||||||
{
|
{
|
||||||
|
$template= clone etemplate_widget_template::instance($tab['template']);
|
||||||
|
$template->attrs['content'] = $tab['id'];
|
||||||
|
$this->children[1]->children[] = $template;
|
||||||
|
unset($template);
|
||||||
/* This doesn't work for some reason
|
/* This doesn't work for some reason
|
||||||
$template = etemplate_widget_template::instance($tab['template']);
|
|
||||||
$template->run('validate', array($tab['id'], $expand, $content, &$validated), true);
|
|
||||||
*/
|
|
||||||
$tab_valid =& self::get_array($validated, $tab['id'], true);
|
$tab_valid =& self::get_array($validated, $tab['id'], true);
|
||||||
$tab_valid = $content[$tab['id']];
|
$tab_valid = $content[$tab['id']];
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$valid = $value;
|
$valid = $value;
|
||||||
|
Loading…
Reference in New Issue
Block a user