mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-06-26 04:41:41 +02:00
If there is a format error on a tab, make sure that tab is visible so user can see the error
This commit is contained in:
parent
1e6ce9fd6e
commit
c49d305932
@ -764,6 +764,19 @@
|
|||||||
return $this->widget_tree_walk('get_widget_by_name_helper',$name);
|
return $this->widget_tree_walk('get_widget_by_name_helper',$name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns an array of references to widgets of the specified tipe
|
||||||
|
* @param type String
|
||||||
|
*/
|
||||||
|
function &get_widgets_by_type($type) {
|
||||||
|
$extra = array(
|
||||||
|
'type' => $type,
|
||||||
|
'widgets' => array()
|
||||||
|
);
|
||||||
|
$this->widget_tree_walk('get_widgets_by_type_helper', $extra);
|
||||||
|
return $extra['widgets'];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* generated a file-name from an eTemplates, name, template(-set) and lang
|
* generated a file-name from an eTemplates, name, template(-set) and lang
|
||||||
*
|
*
|
||||||
@ -979,4 +992,12 @@
|
|||||||
//echo "<p>path_searched='$extra', widget-path($widget[type]:$widget[name])='$path'</p>\n";
|
//echo "<p>path_searched='$extra', widget-path($widget[type]:$widget[name])='$path'</p>\n";
|
||||||
if ($path == $extra) return $widget;
|
if ($path == $extra) return $widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function &get_widgets_by_type_helper(&$widget, &$extra)
|
||||||
|
{
|
||||||
|
//echo '<br />get_widgets_by_type_helper(' . $widget['name'] . ',' . $extra['type'] . ')<br />';
|
||||||
|
if($widget['type'] == $extra['type']) {
|
||||||
|
$extra['widgets'][] =& $widget;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -450,6 +450,28 @@ foreach($sess as $key => $val)
|
|||||||
$GLOBALS['egw_info']['etemplate']['loop'] |= !$this->canceled && $this->button_pressed &&
|
$GLOBALS['egw_info']['etemplate']['loop'] |= !$this->canceled && $this->button_pressed &&
|
||||||
$this->validation_errors($session_data['ignore_validation']); // set by process_show
|
$this->validation_errors($session_data['ignore_validation']); // set by process_show
|
||||||
|
|
||||||
|
// If a tab has an error on it, change to that tab
|
||||||
|
foreach($GLOBALS['egw_info']['etemplate']['validation_errors'] as $form_name => $msg)
|
||||||
|
{
|
||||||
|
$name = $this->template_name($form_name);
|
||||||
|
if (!$this->get_widget_by_name($name))
|
||||||
|
{
|
||||||
|
foreach($this->get_widgets_by_type('tab') as $widget)
|
||||||
|
{
|
||||||
|
foreach(explode('|',$widget['name']) as $tab)
|
||||||
|
{
|
||||||
|
if (strpos('.',$tab) === false) $tab = $this->name.'.'.$tab;
|
||||||
|
$tab_tpl = new etemplate($tab);
|
||||||
|
if ($tab_tpl->get_widget_by_name($name))
|
||||||
|
{
|
||||||
|
$content[$widget['name']] = $tab;
|
||||||
|
break 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//echo "process_exec($this->name) process_show(content) ="; _debug_array($content);
|
//echo "process_exec($this->name) process_show(content) ="; _debug_array($content);
|
||||||
//echo "process_exec($this->name) session_data[changes] ="; _debug_array($session_data['changes']);
|
//echo "process_exec($this->name) session_data[changes] ="; _debug_array($session_data['changes']);
|
||||||
$content = $this->complete_array_merge($session_data['changes'],$content);
|
$content = $this->complete_array_merge($session_data['changes'],$content);
|
||||||
@ -850,6 +872,27 @@ foreach($sess as $key => $val)
|
|||||||
return $form_name;
|
return $form_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* strip the prefix of a form-element from a form_name
|
||||||
|
* This function removes the prefix of form_name(). It takes a name like base[basesub1][basesub2][name][sub]
|
||||||
|
* and gives basesub1[basesub2][name][sub]
|
||||||
|
*
|
||||||
|
* @param string form_name
|
||||||
|
* @return string name without prefix
|
||||||
|
*/
|
||||||
|
function template_name($form_name)
|
||||||
|
{
|
||||||
|
$parts = explode('[',str_replace(']','',$form_name));
|
||||||
|
|
||||||
|
array_shift($parts); // remove exec
|
||||||
|
|
||||||
|
$name = array_shift($parts);
|
||||||
|
|
||||||
|
if ($parts) $name .= '['.implode('][',$parts).']';
|
||||||
|
|
||||||
|
return $name;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* generates HTML for one widget (input-field / cell)
|
* generates HTML for one widget (input-field / cell)
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user