- style popup is working now: allows to edit the embeded styles of an eTemplate as well of the apps app.css file

- some bugfixes in the editor
- popups can now directly called by a button and you can pass params via the content array
This commit is contained in:
Ralf Becker 2005-02-22 21:02:26 +00:00
parent 825fefa7ba
commit 8c34e1e04e
11 changed files with 444 additions and 143 deletions

View File

@ -52,7 +52,7 @@
if (isset($content['save']))
{
$msg .= !$this->save() ? lang('Entry saved') : lang('Error: writeing !!!');
$msg .= !$this->save() ? lang('Entry saved') : lang('Error: while saving !!!');
}
elseif (isset($content['read']))
{

View File

@ -215,7 +215,7 @@ As one of the messages contain a %s to be used with sprintf, we have to run them
if (isset($content['save'])) <span>// save the entry ($this->data)</span>
{
$msg .= !$this->save() ? lang('Entry saved') : lang('Error: writeing !!!');
$msg .= !$this->save() ? lang('Entry saved') : lang('Error: while saving !!!');
}
elseif (isset($content['read']))
{

View File

@ -494,6 +494,12 @@ implement only a subset of XUL. Here are the main differences:</p>
<b>Options</b> xml: <b>image, ro_image</b>: Image to use instead of a Button with a label. There will
be no button around the image. If a ro_image is given (separated by a comma in the editors options)
it will be used if the button is set readonly (else the button is no rendered at all) .
<b>onclick</b>: specify some java-script to be called if the button gets pressed/clicked: <br />
a) general javascript: "window.close();"<br />
b) confirmation: "return window.confirm('<message>');" (message get run through lang()!)<br />
c) popups: "window.open(egw::link('/index.php','menuaction=app.class.func&id=$cont[id]'), 'dependent=yes,width=600,height=450,location=no,menubar=no,toolbar=no,scrollbars=yes,status=yes'); return false;"
(egw::link('<url>','<vars>') calls $GLOBALS['phpgw']->link() to allow eGW installtion relative links and to pass the session-id.
You can use $cont[<name>] (note no quotes!) to pass further information to the popup via the content array.)
</td>
</tr>
<tr>
@ -726,26 +732,28 @@ implement only a subset of XUL. Here are the main differences:</p>
<td colspan="5">
<pre>
$content[$id] = array( <span>// I = value set by the app, 0 = value on return / output</span>
'get_rows' => <span>// I method/callback to request the data for the rows eg. 'notes.bo.get_rows'</span>
'filter_label' => <span>// I label for filter (optional)</span>
'filter_help' => <span>// I help-msg for filter (optional)</span>
'no_filter' => True <span>// I disable the 1. filter</span>
'no_filter2' => True <span>// I disable the 2. filter (params are the same as for filter)</span>
'no_cat' => True <span>// I disable the cat-selectbox</span>
'template' => <span>// I template to use for the rows, if not set via options</span>
'header_left' => <span>// I template to show left of the range-value, left-aligned (optional)</span>
'header_right' => <span>// I template to show right of the range-value, right-aligned (optional)</span>
'bottom_too' => True <span>// I show the nextmatch-line (arrows, filters, search, ...) again after the rows</span>
'start' => <span>// IO position in list</span>
'cat_id' => <span>// IO category, if not 'no_cat' => True</span>
'search' => <span>// IO search pattern</span>
'order' => <span>// IO name of the column to sort after (optional for the sortheaders)</span>
'sort' => <span>// IO direction of the sort: 'ASC' or 'DESC'</span>
'col_filter' => <span>// IO array of column-name value pairs (optional for the filterheaders)</span>
'filter' => <span>// IO filter, if not 'no_filter' => True</span>
'filter2' => <span>// IO filter2, if not 'no_filter2' => True</span>
'rows' => <span>// O content set by callback</span>
'total' => <span>// O the total number of entries</span>
'get_rows' => <span>// I method/callback to request the data for the rows eg. 'notes.bo.get_rows'</span>
'filter_label' => <span>// I label for filter (optional)</span>
'filter_help' => <span>// I help-msg for filter (optional)</span>
'no_filter' => True<span>// I disable the 1. filter</span>
'no_filter2' => True<span>// I disable the 2. filter (params are the same as for filter)</span>
'no_cat' => True<span>// I disable the cat-selectbox</span>
'template' => <span>// I template to use for the rows, if not set via options</span>
'header_left' => <span>// I template to show left of the range-value, left-aligned (optional)</span>
'header_right' => <span>// I template to show right of the range-value, right-aligned (optional)</span>
'bottom_too' => True<span>// I show the nextmatch-line (arrows, filters, search, ...) again after the rows</span>
'start' => <span>// IO position in list</span>
'cat_id' => <span>// IO category, if not 'no_cat' => True</span>
'search' => <span>// IO search pattern</span>
'order' => <span>// IO name of the column to sort after (optional for the sortheaders)</span>
'sort' => <span>// IO direction of the sort: 'ASC' or 'DESC'</span>
'col_filter' => <span>// IO array of column-name value pairs (optional for the filterheaders)</span>
'filter' => <span>// IO filter, if not 'no_filter' => True</span>
'filter_no_lang' => True<span>// I set no_lang for filter (=dont translate the options)</span>
'filter2' => <span>// IO filter2, if not 'no_filter2' => True</span>
'filter2_no_lang'=> True<span>// I set no_lang for filter2 (=dont translate the options)</span>
'rows' => <span>// O content set by callback</span>
'total' => <span>// O the total number of entries</span>
);
<span>/*

View File

@ -84,11 +84,12 @@
var $public_functions = array
(
'old_editor' => True,
'old_editor' => True,
'process_edit' => True,
'delete' => True,
'edit' => True,
'widget' => True,
'styles' => True,
);
function editor()
@ -639,7 +640,7 @@
}
$msg = $read_ok ? lang('Template deleted') : lang('Error: Template not found !!!');
if ($content['back'] == 'list_result')
if (($back = $content['back']) == 'list_result')
{
$this->list_result($content['preserv'],$msg);
}
@ -656,7 +657,7 @@
case 'list_result':
$this->$back($content['preserv']);
return;
case 'show':
case 'old_editor':
break;
default:
$back = 'edit';
@ -793,36 +794,70 @@
$this->etemplate->init($content['import']);
$preserv['import'] = $content['import'];
}
elseif (isset($_GET['name']) && !$this->etemplate->read($_GET) ||
$content['save'] && !$this->etemplate->read($content['old_keys']) ||
!$content['save'] && isset($content['name']) && !$this->etemplate->read($content))
elseif ($content['save'])
{
$msg .= lang('Error: Template not found !!!');
$this->etemplate->read($content['old_keys']);
if (isset($content['name']))
if (!$this->etemplate->modified_set || !$this->etemplate->modified)
{
$content['version'] = ''; // trying it without version
if ($this->etemplate->read($content))
$this->etemplate->modified = time();
}
$ok = $this->etemplate->save(trim($content['name']),trim($content['template']),trim($content['lang']),(int) $content['group'],trim($content['version']));
$msg = $ok ? lang('Template saved') : lang('Error: while saveing !!!');
if ($ok) unset($preserv['import']);
}
elseif (isset($_GET['name']) || isset($content['name']))
{
if ($_GET['name'])
{
foreach($this->etemplate->db_key_cols as $var)
{
$msg = lang('only an other Version found !!!');
$content[$var] = $_GET[$var];
}
else
}
if ($content['version'] != '')
{
$save_version = $content['version'];
unset($content['version']);
$this->etemplate->read($content);
$newest_version = $this->etemplate->version;
$content['version'] = $save_version;
}
if (!$this->etemplate->read($content))
{
$msg .= lang('Error: Template not found !!!');
if (isset($content['name']))
{
$result = $this->etemplate->search($content);
if (count($result) > 1)
{
return $this->list_result(array('result' => $result));
}
elseif (!count($result) || !$this->etemplate->read($result[0]))
{
$msg = lang('Error: Template not found !!!');
}
elseif ($content['name'] == $result[0]['name'])
$version_backup = $content['version'];
$content['version'] = ''; // trying it without version
if ($this->etemplate->read($content))
{
$msg = lang('only an other Version found !!!');
}
else
{
$result = $this->etemplate->search($content);
if (count($result) > 1)
{
return $this->list_result(array('result' => $result));
}
elseif (!count($result) || !$this->etemplate->read($result[0]))
{
$msg = lang('Error: Template not found !!!');
$this->etemplate->version = $content['version'] = $version_backup;
}
elseif ($content['name'] == $result[0]['name'])
{
$msg = lang('only an other Version found !!!');
}
}
}
}
elseif ($newest_version != '' && $this->etemplate->version != $newest_version)
{
$msg = lang("newer version '%1' exists !!!",$newest_version);
}
}
if (!is_array($this->extensions))
{
@ -863,16 +898,6 @@
$msg .= $this->etemplate->dump4setup($app);
}
}
elseif ($content['save'] && !$msg)
{
if (!$this->etemplate->modified_set || !$this->etemplate->modified)
{
$this->etemplate->modified = time();
}
$ok = $this->etemplate->save(trim($content['name']),trim($content['template']),trim($content['lang']),(int) $content['group'],trim($content['version']));
$msg = $ok ? lang('Template saved') : lang('Error: while saveing !!!');
if ($ok) unset($preserv['import']);
}
elseif ($content['langfile'])
{
if (empty($app) || !@is_dir(PHPGW_SERVER_ROOT.'/'.$app))
@ -978,12 +1003,12 @@
//echo "<p>editor::change_widget_type($widget[type]=$old[type])</p>\n";
$old_type = $old['type'];
$old_had_children = isset($this->etemplate->widgets_with_children[$old_type]);
if (!isset($this->etemplate->widgets_with_children[$widget['type']]) ||
$old_had_children && ($old_type == 'grid') == ($widget['type'] == 'grid'))
($old_type == 'grid') == ($widget['type'] == 'grid'))
{
if ($this->etemplate->widgets_with_children[$widget['type']] == 3) // box
{
if ($this->etemplate->widgets_with_children[$widget['type']] == 'box') // box
{echo "fix2box";
if ((int) $widget['size'] < 1) // min. 1 child
{
list(,$options) = explode(',',$widget['size'],2);
@ -997,64 +1022,67 @@
}
return; // no change necessary, eg. between different box-types
}
if ($widget['type'] == 'grid')
switch ($this->etemplate->widgets_with_children[$widget['type']])
{
$widget['data'] = array(array());
$widget['cols'] = $widget['rows'] = 0;
case 'grid':
$widget['data'] = array(array());
$widget['cols'] = $widget['rows'] = 0;
if ($old_had_children) // box --> grid: hbox --> 1 row, other boxes --> 1 column
{
list($num) = explode(',',$old['size']);
for ($n = 1; is_array($old[$n]) && $n <= $num; ++$n)
{
soetemplate::add_child($widget,$old[$n]);
$new_line = null;
if ($old_type != 'hbox') soetemplate::add_child($widget,$new_line);
}
$widget['size'] = '';
}
else // 1 row with 1 column/child
{
soetemplate::add_child($widget,soetemplate::empty_cell());
}
break;
if ($old_had_children) // box --> grid: hbox --> 1 row, other boxes --> 1 column
{
list($num) = explode(',',$old['size']);
for ($n = 1; is_array($old[$n]) && $n <= $num; ++$n)
case 'box':
$widget['size'] = 0;
if ($old_type == 'grid')
{
soetemplate::add_child($widget,$old[$n]);
if ($old_type != 'hbox') soetemplate::add_child($widget,null);
}
$widget['size'] = '';
}
else // 1 row with 1 column/child
{
soetemplate::add_child($widget,soetemplate::empty_cell());
}
}
else // a box-type
{
$widget['size'] = 0;
if ($old_type == 'grid')
{
if (preg_match('/,(vertical|horizontal)/',$widget['size'],$matches))
{
$orient = $matches[1];
}
else
{
$orient = $widget['type'] == 'hbox' ? 'horizontal' : 'vertical';
}
if ($orient == 'horizontal') // ==> use first row
{
$row =& $old['data'][1];
for ($n = 0; $n < $old['cols']; ++$n)
if (preg_match('/,(vertical|horizontal)/',$widget['size'],$matches))
{
$cell =& $row[soetemplate::num2chrs($n)];
soetemplate::add_child($widget,$cell);
list($span) = (int)explode(',',$cell['span']);
if ($span == 'all') break;
while ($span-- > 1) ++$n;
$orient = $matches[1];
}
else
{
$orient = $widget['type'] == 'hbox' ? 'horizontal' : 'vertical';
}
if ($orient == 'horizontal') // ==> use first row
{
$row =& $old['data'][1];
for ($n = 0; $n < $old['cols']; ++$n)
{
$cell =& $row[soetemplate::num2chrs($n)];
soetemplate::add_child($widget,$cell);
list($span) = (int)explode(',',$cell['span']);
if ($span == 'all') break;
while ($span-- > 1) ++$n;
}
}
else // vertical ==> use 1 column
{
for ($n = 1; $n <= $old['rows']; ++$n)
{
soetemplate::add_child($widget,$old['data'][$n][soetemplate::num2chrs(0)]);
}
}
}
else // vertical ==> use 1 column
if (!$widget['size']) // minimum one child
{
for ($n = 1; $n <= $old['rows']; ++$n)
{
soetemplate::add_child($widget,$old['data'][$n][soetemplate::num2chrs(0)]);
}
soetemplate::add_child($widget,soetemplate::empty_cell());
}
}
if (!$widget['size']) // minimum one child
{
soetemplate::add_child($widget,soetemplate::empty_cell());
}
break;
}
//_debug_array($widget);
}
@ -1557,22 +1585,21 @@
}
switch ($action)
{
case '':
// initialise the children arrays if type is changed to a widget with children
//echo "<p>$content[path]: $widget[type] --> ".$content['cell']['type']."</p>\n";
if (isset($this->etemplate->widgets_with_children[$content['cell']['type']]) &&
$content['cell']['type'] != $widget['type'])
{
$this->change_widget_type($content['cell'],$widget);
}
break;
case 'goto':
case 'goto2':
$content['cell'] = $widget;
break;
case 'save': case 'apply':
case '':
case 'save': case 'apply':
// initialise the children arrays if type is changed to a widget with children
//echo "<p>$content[path]: $widget[type] --> ".$content['cell']['type']."</p>\n";
if (isset($this->etemplate->widgets_with_children[$content['cell']['type']]))
{
$this->change_widget_type($content['cell'],$widget);
}
if (!$action) break;
// save+apply only
$widget = $content['cell'];
if ($content['cell']['onclick_type'] || $content['cell']['onclick'])
{
@ -1666,8 +1693,6 @@
{
$editor->set_cell_attribute('etemplate.editor.widget.generic','obj',$type_tmpl);
}
$editor->set_cell_attribute('cancel','onclick','window.close();');
if ($parent['type'] == 'grid')
{
$editor->disable_cells('box_menu');
@ -1697,6 +1722,110 @@
),2);
}
/**
* edit dialog for the styles of a templat or app
*
* @param array $content the submitted content of the etemplate::exec function, default null
* @param string $msg msg to display, default ''
*/
function styles($content=null,$msg='')
{
if (!is_array($content))
{
foreach($this->etemplate->db_key_cols as $var)
{
if (isset($_GET[$var])) $content[$var] = $_GET[$var];
}
}
//_debug_array($content);
// security check for content[from]
if ($content['from'] && !preg_match('/^[A-Za-z0-9_-]+\/templates\/[A-Za-z0-9_-]+\/app.css$/',$content['from']))
{
$content['from'] = ''; // someone tried to trick us reading a file we are not suppost to read
}
if (!$this->etemplate->read($content))
{
$msg .= lang('Error: Template not found !!!');
}
if ($content['save'] || $content['apply'])
{
if ($content['from'])
{
$path = PHPGW_SERVER_ROOT.'/'.$content['from'];
if (is_writable(dirname($path)) && file_exists($path))
{
rename($path,str_replace('.css','.old.css',$path));
}
if (file_exists($path) && !is_writable($path))
{
$msg .= lang("Error: webserver is not allowed to write into '%1' !!!",dirname($path));
}
else
{
$fp = fopen($path,'w');
if (!$fp || !fwrite($fp,$content['styles']))
{
$msg .= lang('Error: while saving !!!');
}
@fclose($fp);
}
}
else // the templates own embeded styles;
{
$this->etemplate->style = $content['styles'];
$ok = $this->etemplate->save();
$msg = $ok ? lang('Template saved') : lang('Error: while saveing !!!');
}
$js = "opener.location.href='".$GLOBALS['phpgw']->link('/index.php',array(
'menuaction' => 'etemplate.editor.edit',
)+$this->etemplate->as_array(-1))."';";
}
if ($content['save'] || $content['cancel'])
{
$js .= 'window.close();';
echo "<html><body><script>$js</script></body></html>\n";
$GLOBALS['phpgw']->common->phpgw_exit();
}
$content = array(
'from' => $content['from'],
'java_script' => $js ? '<script>'.$js.'</script>' : '',
'msg' => $msg
);
$tmpl =& new etemplate('etemplate.editor.styles');
if ($content['from'])
{
$path = PHPGW_SERVER_ROOT.'/'.$content['from'];
$content['styles'] = file_exists($path) && is_readable($path) ? implode('',file($path)) : '';
if (!is_writable(dirname($path)) && (!file_exists($path) || !is_writable($path)))
{
$tmpl->set_cell_attribute('styles','readonly',true);
}
}
else
{
$content['styles'] = $this->etemplate->style;
}
// generate list of style-sources
$keys = $this->etemplate->as_array(-1); unset($keys['group']);
$sources[''] = lang('eTemplate').': '.implode(':',$keys);
list($app) = explode('.',$this->etemplate->name);
$app_templates = opendir(PHPGW_SERVER_ROOT.'/'.$app.'/templates');
while (($template = readdir($app_templates)) !== false)
{
$dir = PHPGW_SERVER_ROOT.'/'.$app.'/templates/'.$template;
if ($template[0] == '.' || $template == 'CVS' || !is_dir($dir.'/images')) continue; // not a template-dir
$exists = file_exists($dir.'/app.css');
$writable = is_writable($dir) || $exists && is_writable($dir.'/app.css');
if (!$exists && !$writable) continue; // nothing to show
$rel_path = $app.'/templates/'.$template.'/app.css';
$sources[$rel_path] = lang('file').': '.$rel_path.($exists && !$writable ? ' ('.lang('readonly').')' : '');
}
$GLOBALS['phpgw_info']['flags']['java_script'] = "<script>window.focus();</script>\n";
$GLOBALS['phpgw_info']['flags']['app_header'] = lang('etemplate').' - '.lang('CSS-styles');
$tmpl->exec('etemplate.editor.styles',$content,array('from'=>$sources),'',$keys,2);
}
/**
* search the inc-dirs of etemplate and the app whichs template is edited for extensions / custom widgets
*
@ -1717,7 +1846,8 @@
while ($dir && ($file = readdir($dir)))
{
if (ereg('class\\.([a-zA-Z0-9_]*)_widget.inc.php',$file,$regs) &&
($ext = $this->etemplate->loadExtension($regs[1].'.'.$app,$this->etemplate)))
($regs[1] != 'xslt' || $this->etemplate->xslt) &&
($ext = $this->etemplate->loadExtension($regs[1].'.'.$app,$this->etemplate)))
{
if (is_array($ext))
{
@ -1741,6 +1871,3 @@
return implode(', ',$labels);
}
};

View File

@ -63,16 +63,16 @@
var $db_cols;
/**
* @var array $widgets_with_children widgets that contain other widgets, eg. for tree_walk method
* widget-type is the key, the value specifys how the children are stored: 1=template, 2=grid, 3=box
* widget-type is the key, the value specifys how the children are stored.
*/
var $widgets_with_children = array(
'template' => 1,
'grid' => 2,
'box' => 3,
'vbox' => 3,
'hbox' => 3,
'groupbox' => 3,
'deck' => 3,
'template' => 'template',
'grid' => 'grid',
'box' => 'box',
'vbox' => 'box',
'hbox' => 'box',
'groupbox' => 'box',
'deck' => 'box',
);
/**

View File

@ -794,9 +794,19 @@
list($app) = explode('.',$this->name);
list($img,$ro_img) = explode(',',$cell_options);
$title = strlen($label) <= 1 || $cell['no_lang'] ? $label : lang($label);
if (($onclick = $cell['onclick']) && preg_match('/^return confirm\(["\']{1}?(.*)["\']{1}\);$/',$cell['onclick'],$matches))
if ($cell['onclick'])
{
$onclick = "return confirm('".str_replace('\'','\\\'',$this->html->htmlspecialchars(lang($matches[1])))."');";
$onclick = $this->expand_name($cell['onclick'],$show_c,$show_row,$content['.c'],$content['.row'],$content);
if ($onclick && preg_match("/egw::link\\('([^']+)','([^']+)'\\)/",$onclick,$matches))
{
$url = $GLOBALS['phpgw']->link($matches[1],$matches[2]);
$onclick = preg_replace('/egw::link\(\'([^\']+)\',\'([^\']+)\'\)/','\''.$url.'\'',$onclick);
}
elseif ($onclick && preg_match('/^return confirm\(["\']{1}?(.*)["\']{1}\);$/',$cell['onclick'],$matches))
{
$question = lang($matches[1]).(substr($matches[1],-1) != '?' ? '?' : ''); // add ? if not there, saves extra phrase
$onclick = "return confirm('".str_replace('\'','\\\'',$this->html->htmlspecialchars($question))."');";
}
}
if ($this->java_script() && ($cell['onchange'] != '' || $img && !$readonly) && !$cell['needed']) // use a link instead of a button
{
@ -1171,7 +1181,10 @@
{
$handler = str_replace('%p',$this->no_onclick ? $this->onclick_proxy : $this->name.':'.$path,
$this->onclick_handler);
if ($type == 'select') $html .= '&nbsp;';
if ($type == 'button' || !$label) // add something to click on
{
$html = (substr($html,-1) == "\n" ? substr($html,0,-1) : $html).'&nbsp;';
}
return $this->html->div($html,' ondblclick="'.$handler.'"','clickWidgetToEdit');
}
return $html;

View File

@ -1,5 +1,5 @@
<?php
// eTemplates for Application 'etemplate', generated by soetemplate::dump4setup() 2005-02-20 22:42
// eTemplates for Application 'etemplate', generated by soetemplate::dump4setup() 2005-02-22 21:14
/* $Id$ */
@ -161,11 +161,17 @@ $templ_data[] = array('name' => 'etemplate.editor.show','template' => '','lang'
$templ_data[] = array('name' => 'etemplate.editor.list_result','template' => '','lang' => '','group' => '0','version' => '1.0.0.001','data' => 'a:1:{i:0;a:5:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:1:{s:2:"h1";s:6:",!@msg";}i:1;a:1:{s:1:"A";a:4:{s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";s:7:"no_lang";s:1:"1";s:4:"name";s:3:"msg";}}i:2;a:1:{s:1:"A";a:2:{s:4:"type";s:8:"template";s:4:"name";s:21:"etemplate.editor.keys";}}i:3;a:1:{s:1:"A";a:3:{s:4:"type";s:8:"template";s:4:"span";s:3:"all";s:4:"name";s:33:"etemplate.editor.list_result.list";}}}s:4:"rows";i:3;s:4:"cols";i:1;s:4:"size";s:4:"100%";}}','size' => '100%','style' => '.redItalic { color:red; font-style:italic;}','modified' => '1107711996',);
$templ_data[] = array('name' => 'etemplate.editor.styles','template' => '','lang' => '','group' => '0','version' => '1.0.1.001','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:1:{s:2:"h1";s:6:",!@msg";}i:1;a:1:{s:1:"A";a:4:{s:4:"type";s:5:"label";s:4:"name";s:3:"msg";s:4:"span";s:10:",redItalic";s:7:"no_lang";s:1:"1";}}i:2;a:1:{s:1:"A";a:6:{s:4:"type";s:6:"select";s:5:"label";s:10:"CSS-Styles";s:4:"name";s:4:"from";s:8:"onchange";s:1:"1";s:7:"no_lang";s:1:"1";s:4:"help";s:60:" edit embeded CSS styles or of the applications app.css file";}}i:3;a:1:{s:1:"A";a:3:{s:4:"type";s:8:"textarea";s:4:"size";s:5:"22,70";s:4:"name";s:6:"styles";}}i:4;a:1:{s:1:"A";a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"4";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Save";s:4:"name";s:4:"save";s:4:"help";s:42:"save the changes made and close the window";}i:2;a:4:{s:4:"type";s:6:"button";s:5:"label";s:5:"Apply";s:4:"name";s:5:"apply";s:4:"help";s:24:"applies the changes made";}i:3;a:5:{s:4:"type";s:6:"button";s:5:"label";s:6:"Cancel";s:4:"name";s:6:"cancel";s:4:"help";s:44:"closes the window without saving the changes";s:7:"onclick";s:15:"window.close();";}i:4;a:2:{s:4:"type";s:4:"html";s:4:"name";s:11:"java_script";}}}}s:4:"rows";i:4;s:4:"cols";i:1;}}','size' => '','style' => '','modified' => '1109028002',);
$templ_data[] = array('name' => 'etemplate.editor.keys','template' => '','lang' => '','group' => '0','version' => '1.0.1.001','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:0:{}i:1;a:4:{s:1:"A";a:5:{s:4:"type";s:4:"text";s:4:"size";s:5:"25,80";s:5:"label";s:4:"Name";s:4:"name";s:4:"name";s:4:"help";s:75:"name of the eTemplate, should be in form application.function[.subTemplate]";}s:1:"B";a:5:{s:4:"type";s:4:"text";s:4:"size";s:4:"8,20";s:5:"label";s:8:"Template";s:4:"name";s:8:"template";s:4:"help";s:125:"name of phpgw-template set (e.g. verdilak): \'\' = default (will read pref. template, us \'default\' to read default template \'\')";}s:1:"C";a:5:{s:4:"type";s:4:"text";s:4:"size";s:3:"5,5";s:5:"label";s:4:"Lang";s:4:"name";s:4:"lang";s:4:"help";s:162:"language-short (eg. \'en\' for english) for language-dependent template (\'\' reads your pref. languages or the default, us \'default\' to read the default template \'\')";}s:1:"D";a:5:{s:4:"type";s:4:"text";s:4:"size";s:4:"9,20";s:5:"label";s:7:"Version";s:4:"name";s:7:"version";s:4:"help";s:116:"version-number, should be in the form: major.minor.revision.number (eg. 0.9.13.001 all numbers filled up with zeros)";}}}s:4:"rows";i:1;s:4:"cols";i:4;}}','size' => '','style' => '','modified' => '1108983539',);
$templ_data[] = array('name' => 'etemplate.editor.widget.generic','template' => '','lang' => '','group' => '0','version' => '1.0.1.001','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:6:{i:0;a:6:{s:2:"c1";s:3:"row";s:2:"c2";s:3:"row";s:2:"c3";s:3:"row";s:2:"c4";s:3:"row";s:2:"c5";s:3:"row";s:2:"h5";s:14:",!@type=button";}i:1;a:6:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:7:",,,type";s:5:"label";s:4:"Type";}s:1:"B";a:4:{s:4:"type";s:6:"select";s:4:"name";s:4:"type";s:8:"onchange";s:1:"1";s:4:"help";s:57:"type of the field (select Label if field should be empty)";}s:1:"C";a:4:{s:4:"type";s:5:"label";s:4:"size";s:7:",,,size";s:5:"label";s:7:"Options";s:5:"align";s:6:"center";}s:1:"D";a:4:{s:4:"type";s:4:"text";s:4:"size";s:2:"10";s:4:"name";s:4:"size";s:4:"help";s:187:"Label:[bold][italic] Text:[len][,max] Numbers:[min][,[max][,len]] T.area:[rows][,cols] Radiob.:value H.Rule:[width] Templ.:[IndexInContent] Select:[multiselect] Date:[values: eg. \'Y-m-d\']";}s:1:"E";a:4:{s:4:"type";s:5:"label";s:4:"size";s:7:",,,span";s:5:"label";s:11:"Span, Class";s:5:"align";s:6:"center";}s:1:"F";a:4:{s:4:"type";s:4:"text";s:4:"size";s:2:"10";s:4:"name";s:4:"span";s:4:"help";s:111:"number of colums the field/cell should span or \'all\' for the remaining columns, CSS-class name (for the TD tag)";}}i:2;a:6:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:8:",,,label";s:5:"label";s:5:"Label";}s:1:"B";a:3:{s:4:"type";s:4:"text";s:4:"name";s:5:"label";s:4:"help";s:118:"displayed in front of input or input is inserted for a \'%s\' in the label (label of the Submitbutton or Image-filename)";}s:1:"C";a:6:{s:4:"type";s:8:"checkbox";s:4:"span";s:1:"2";s:5:"label";s:16:"%s NoTranslation";s:5:"align";s:6:"center";s:4:"name";s:7:"no_lang";s:4:"help";s:82:"select if content of field should not be translated (label gets always translated)";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:3:{s:4:"type";s:5:"label";s:5:"label";s:5:"Align";s:5:"align";s:6:"center";}s:1:"F";a:3:{s:4:"type";s:6:"select";s:4:"name";s:5:"align";s:4:"help";s:48:"alignment of label and input-field in table-cell";}}i:3;a:6:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:7:",,,name";s:5:"label";s:4:"Name";}s:1:"B";a:3:{s:4:"type";s:4:"text";s:4:"name";s:4:"name";s:4:"help";s:78:"index/name of returned content (name of the Template, Link / Method for Image)";}s:1:"C";a:7:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"4";s:4:"span";s:1:"4";i:1;a:5:{s:4:"type";s:8:"checkbox";s:5:"label";s:9:"%s needed";s:5:"align";s:6:"center";s:4:"name";s:6:"needed";s:4:"help";s:39:"check if field has to be filled by user";}i:2;a:5:{s:4:"type";s:8:"checkbox";s:5:"label";s:11:"%s readonly";s:5:"align";s:6:"center";s:4:"name";s:8:"readonly";s:4:"help";s:94:"check if content should only be displayed but not altered (the content is not send back then!)";}i:3;a:5:{s:4:"type";s:8:"checkbox";s:5:"label";s:11:"%s disabled";s:5:"align";s:6:"center";s:4:"name";s:8:"disabled";s:4:"help";s:96:"if field is disabled an empty table-cell is displayed, for (temporal) removement of a field/cell";}i:4;a:5:{s:4:"type";s:8:"checkbox";s:5:"label";s:11:"%s onChange";s:5:"align";s:6:"center";s:4:"name";s:8:"onchange";s:4:"help";s:33:"enable JavaScript onChange submit";}}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}i:4;a:6:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:7:",,,help";s:5:"label";s:4:"Help";}s:1:"B";a:5:{s:4:"type";s:4:"text";s:4:"size";s:2:"45";s:4:"span";s:1:"3";s:4:"name";s:4:"help";s:4:"help";s:60:"displayed in statusline of browser if input-field gets focus";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:4:{s:4:"type";s:5:"label";s:4:"size";s:7:",,,blur";s:5:"label";s:8:"blurText";s:5:"align";s:6:"center";}s:1:"F";a:4:{s:4:"type";s:4:"text";s:4:"size";s:2:"10";s:4:"name";s:4:"blur";s:4:"help";s:76:"this text gets displayed if the input-field is empty and has no focus (blur)";}}i:5;a:6:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:7:"onclick";s:5:"label";s:7:"onClick";}s:1:"B";a:3:{s:4:"type";s:6:"select";s:4:"name";s:12:"onclick_type";s:4:"help";s:43:"confirmation necesary or custom java-script";}s:1:"C";a:5:{s:4:"type";s:4:"text";s:4:"size";s:2:"45";s:4:"span";s:3:"all";s:4:"name";s:7:"onclick";s:4:"help";s:67:"confirmation message or custom javascript (returning true or false)";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:5;s:4:"cols";i:6;}}','size' => '','style' => '','modified' => '1108415433',);
$templ_data[] = array('name' => 'etemplate.editor.new','template' => '','lang' => '','group' => '0','version' => '1.0.1.003','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:8:{i:0;a:2:{s:2:"h1";s:6:",!@msg";s:2:"h2";s:6:",!@xml";}i:1;a:1:{s:1:"A";a:4:{s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";s:7:"no_lang";s:1:"1";s:4:"name";s:3:"msg";}}i:2;a:2:{s:1:"A";a:5:{s:4:"type";s:8:"groupbox";s:4:"size";s:1:"1";s:5:"label";s:10:"Export XML";s:4:"span";s:3:"all";i:1;a:2:{s:4:"type";s:4:"html";s:4:"name";s:3:"xml";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:3;a:2:{s:1:"A";a:7:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"4";s:4:"span";s:3:"all";i:1;a:2:{s:4:"type";s:8:"template";s:4:"name";s:21:"etemplate.editor.keys";}i:2;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Read";s:4:"name";s:4:"read";s:4:"help";s:49:"read eTemplate from database (for the keys above)";}i:3;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Save";s:4:"name";s:4:"save";s:4:"help";s:77:"save the eTemplate under the above keys (name, ...), change them for a SaveAs";}i:4;a:5:{s:4:"type";s:6:"button";s:5:"label";s:6:"Delete";s:4:"name";s:6:"delete";s:4:"help";s:30:"Delete the spezified eTemplate";s:7:"onclick";s:49:"return confirm(\'Delete the spezified eTemplate\');";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:4;a:2:{s:1:"A";a:10:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"7";s:4:"span";s:3:"all";i:1;a:5:{s:4:"type";s:6:"button";s:4:"name";s:6:"styles";s:5:"label";s:10:"CSS-Styles";s:4:"help";s:59:"edit embeded CSS styles or of the applications app.css file";s:7:"onclick";s:293:"window.open(egw::link(\'/index.php\',\'menuaction=etemplate.editor.styles&name=$cont[name]&template=$cont[template]&lang=$cont[lang]&version=$cont[version]\'),\'etemplate_editor_styles\',\'dependent=yes,width=600,height=450,location=no,menubar=no,toolbar=no,scrollbars=yes,status=yes\'); return false;";}i:2;a:4:{s:4:"type";s:6:"button";s:5:"label";s:11:"Show values";s:4:"name";s:6:"values";s:4:"help";s:65:"shows / allows you to enter values into the eTemplate for testing";}i:3;a:4:{s:4:"type";s:6:"button";s:5:"label";s:10:"Dump4Setup";s:4:"name";s:4:"dump";s:4:"help";s:88:"writes a \'etemplates.inc.php\' file (for application in Name) in the setup-dir of the app";}i:4;a:4:{s:4:"type";s:6:"button";s:5:"label";s:14:"Write Langfile";s:4:"name";s:8:"langfile";s:4:"help";s:85:"creates an english (\'en\') langfile from label and helptexts (for application in Name)";}i:5;a:4:{s:4:"type";s:6:"button";s:5:"label";s:10:"Export XML";s:4:"name";s:10:"export_xml";s:4:"help";s:43:"export the loaded eTemplate into a xml-file";}i:6;a:3:{s:4:"type";s:4:"file";s:4:"name";s:4:"file";s:4:"help";s:18:"xml-file to import";}i:7;a:4:{s:4:"type";s:6:"button";s:5:"label";s:10:"Import XML";s:4:"name";s:10:"import_xml";s:4:"help";s:35:"import an eTemplate from a xml-file";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:5;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"hrule";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:6;a:2:{s:1:"A";a:3:{s:4:"type";s:4:"html";s:4:"span";s:3:"all";s:4:"name";s:7:"onclick";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:7;a:2:{s:1:"A";a:2:{s:4:"type";s:8:"template";s:4:"size";s:4:"cont";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:7;s:4:"cols";i:2;}}','size' => '','style' => '','modified' => '1108983483',);
$templ_data[] = array('name' => 'etemplate.editor.widget','template' => '','lang' => '','group' => '0','version' => '1.0.1.003','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:9:{i:0;a:4:{s:2:"h2";s:6:",!@msg";s:2:"c1";s:2:"th";s:2:"h6";s:11:",!@grid_row";s:2:"h7";s:14:",!@grid_column";}i:1;a:2:{s:1:"A";a:7:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"4";s:4:"span";s:3:"all";i:1;a:5:{s:4:"type";s:6:"select";s:4:"size";s:7:"Edit...";s:4:"name";s:9:"edit_menu";s:8:"onchange";s:1:"1";s:4:"help";s:33:"delete and cut save the template!";}i:2;a:5:{s:4:"type";s:6:"select";s:4:"size";s:6:"Box...";s:4:"name";s:8:"box_menu";s:8:"onchange";s:1:"1";s:4:"help";s:33:"all operations save the template!";}i:3;a:5:{s:4:"type";s:6:"select";s:4:"size";s:6:"Row...";s:4:"name";s:8:"row_menu";s:8:"onchange";s:1:"1";s:4:"help";s:33:"all operations save the template!";}i:4;a:5:{s:4:"type";s:6:"select";s:4:"size";s:9:"Column...";s:4:"name";s:11:"column_menu";s:8:"onchange";s:1:"1";s:4:"help";s:33:"all operations save the template!";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";s:7:"no_lang";s:1:"1";s:4:"name";s:3:"msg";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:4:"html";s:5:"label";s:4:"Name";s:4:"name";s:11:"java_script";}s:1:"B";a:7:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"5";i:1;a:3:{s:4:"type";s:4:"text";s:4:"name";s:4:"name";s:8:"readonly";s:1:"1";}i:2;a:3:{s:4:"type";s:4:"text";s:4:"name";s:8:"template";s:8:"readonly";s:1:"1";}i:3;a:3:{s:4:"type";s:4:"text";s:4:"name";s:4:"lang";s:8:"readonly";s:1:"1";}i:4;a:5:{s:4:"type";s:4:"text";s:4:"size";s:2:"20";s:5:"label";s:7:"Version";s:4:"name";s:7:"version";s:4:"help";s:56:"increment version to not overwrite the existing template";}i:5;a:5:{s:4:"type";s:5:"label";s:4:"span";s:5:",gray";s:5:"label";s:4:"Path";s:7:"no_lang";s:1:"1";s:4:"name";s:4:"path";}}}i:4;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"Parents";}s:1:"B";a:3:{s:4:"type";s:4:"path";s:4:"name";s:4:"goto";s:4:"help";s:29:"click to edit a parent widget";}}i:5;a:2:{s:1:"A";a:4:{s:4:"type";s:8:"template";s:4:"size";s:4:"cell";s:4:"span";s:3:"all";s:4:"name";s:31:"etemplate.editor.widget.generic";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:6;a:2:{s:1:"A";a:8:{s:4:"type";s:8:"groupbox";s:4:"size";s:12:"4,horizontal";s:5:"label";s:19:"Grid row attributes";s:4:"span";s:3:"all";i:1;a:5:{s:4:"type";s:4:"text";s:5:"label";s:6:"Height";s:4:"name";s:16:"grid_row[height]";s:4:"help";s:29:"height of row (in % or pixel)";s:4:"size";s:1:"5";}i:2;a:5:{s:4:"type";s:4:"text";s:5:"label";s:8:"Disabled";s:4:"name";s:18:"grid_row[disabled]";s:4:"help";s:88:"to disable: [! = not]<value>[=<check>] eg: \'!@data\' disables if content of data is empty";s:4:"size";s:2:"10";}i:3;a:5:{s:4:"type";s:4:"text";s:4:"name";s:15:"grid_row[class]";s:4:"size";s:2:"10";s:5:"label";s:5:"Class";s:4:"help";s:100:"CSS-class name for this row, preset: \'th\' = header, \'row\' = alternating row, \'row_off\'+\'row_on\' rows";}i:4;a:4:{s:4:"type";s:6:"select";s:4:"name";s:16:"grid_row[valign]";s:5:"label";s:6:"Valign";s:4:"help";s:25:"vertical alignment of row";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:7;a:2:{s:1:"A";a:6:{s:4:"type";s:8:"groupbox";s:4:"size";s:12:"2,horizontal";s:5:"label";s:22:"Grid column attributes";s:4:"span";s:3:"all";i:1;a:5:{s:4:"type";s:4:"text";s:5:"label";s:5:"Width";s:4:"name";s:18:"grid_column[width]";s:4:"help";s:31:"width of column (in % or pixel)";s:4:"size";s:1:"5";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"size";s:2:"10";s:5:"label";s:8:"Disabled";s:4:"name";s:21:"grid_column[disabled]";s:4:"help";s:88:"to disable: [! = not]<value>[=<check>] eg: \'!@data\' disables if content of data is empty";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:8;a:2:{s:1:"A";a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"3";s:4:"span";s:3:"all";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Save";s:4:"name";s:4:"save";s:4:"help";s:66:"saves the template with given version number and closes the window";}i:2;a:4:{s:4:"type";s:6:"button";s:5:"label";s:5:"Apply";s:4:"name";s:5:"apply";s:4:"help";s:56:"applies the changes to the given version of the template";}i:3;a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Cancel";s:4:"name";s:6:"cancel";s:4:"help";s:44:"closes the window without saving the changes";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:8;s:4:"cols";i:2;}}','size' => '','style' => '.redItalic { color: red; font-style: italic; }.gray { color: gray; }','modified' => '1108727772',);
$templ_data[] = array('name' => 'etemplate.editor.widget','template' => '','lang' => '','group' => '0','version' => '1.0.1.004','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:9:{i:0;a:4:{s:2:"h2";s:6:",!@msg";s:2:"h6";s:11:",!@grid_row";s:2:"h7";s:14:",!@grid_column";s:2:"c1";s:2:"th";}i:1;a:2:{s:1:"A";a:7:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"4";s:4:"span";s:3:"all";i:1;a:5:{s:4:"type";s:6:"select";s:4:"size";s:7:"Edit...";s:4:"name";s:9:"edit_menu";s:8:"onchange";s:1:"1";s:4:"help";s:33:"delete and cut save the template!";}i:2;a:5:{s:4:"type";s:6:"select";s:4:"size";s:6:"Box...";s:4:"name";s:8:"box_menu";s:8:"onchange";s:1:"1";s:4:"help";s:33:"all operations save the template!";}i:3;a:5:{s:4:"type";s:6:"select";s:4:"size";s:6:"Row...";s:4:"name";s:8:"row_menu";s:8:"onchange";s:1:"1";s:4:"help";s:33:"all operations save the template!";}i:4;a:5:{s:4:"type";s:6:"select";s:4:"size";s:9:"Column...";s:4:"name";s:11:"column_menu";s:8:"onchange";s:1:"1";s:4:"help";s:33:"all operations save the template!";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";s:7:"no_lang";s:1:"1";s:4:"name";s:3:"msg";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:4:"html";s:5:"label";s:4:"Name";s:4:"name";s:11:"java_script";}s:1:"B";a:7:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"5";i:1;a:3:{s:4:"type";s:4:"text";s:4:"name";s:4:"name";s:8:"readonly";s:1:"1";}i:2;a:3:{s:4:"type";s:4:"text";s:4:"name";s:8:"template";s:8:"readonly";s:1:"1";}i:3;a:3:{s:4:"type";s:4:"text";s:4:"name";s:4:"lang";s:8:"readonly";s:1:"1";}i:4;a:5:{s:4:"type";s:4:"text";s:4:"size";s:2:"20";s:5:"label";s:7:"Version";s:4:"name";s:7:"version";s:4:"help";s:56:"increment version to not overwrite the existing template";}i:5;a:5:{s:4:"type";s:5:"label";s:4:"span";s:5:",gray";s:5:"label";s:4:"Path";s:7:"no_lang";s:1:"1";s:4:"name";s:4:"path";}}}i:4;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Path";}s:1:"B";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:4:"path";s:4:"name";s:4:"goto";s:4:"help";s:25:"switch to a parent widget";}i:2;a:6:{s:4:"type";s:4:"path";s:4:"size";s:1:" ";s:4:"name";s:5:"goto2";s:4:"help";s:44:"switch to an other widgets of that container";s:7:"no_lang";s:1:"1";s:5:"label";s:1:" ";}}}i:5;a:2:{s:1:"A";a:4:{s:4:"type";s:8:"template";s:4:"size";s:4:"cell";s:4:"span";s:3:"all";s:4:"name";s:31:"etemplate.editor.widget.generic";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:6;a:2:{s:1:"A";a:8:{s:4:"type";s:8:"groupbox";s:4:"size";s:12:"4,horizontal";s:5:"label";s:19:"Grid row attributes";s:4:"span";s:3:"all";i:1;a:5:{s:4:"type";s:4:"text";s:4:"size";s:1:"5";s:5:"label";s:6:"Height";s:4:"name";s:16:"grid_row[height]";s:4:"help";s:29:"height of row (in % or pixel)";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"size";s:2:"10";s:5:"label";s:8:"Disabled";s:4:"name";s:18:"grid_row[disabled]";s:4:"help";s:88:"to disable: [! = not]<value>[=<check>] eg: \'!@data\' disables if content of data is empty";}i:3;a:5:{s:4:"type";s:4:"text";s:4:"size";s:2:"10";s:5:"label";s:5:"Class";s:4:"name";s:15:"grid_row[class]";s:4:"help";s:100:"CSS-class name for this row, preset: \'th\' = header, \'row\' = alternating row, \'row_off\'+\'row_on\' rows";}i:4;a:4:{s:4:"type";s:6:"select";s:5:"label";s:6:"Valign";s:4:"name";s:16:"grid_row[valign]";s:4:"help";s:25:"vertical alignment of row";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:7;a:2:{s:1:"A";a:6:{s:4:"type";s:8:"groupbox";s:4:"size";s:12:"2,horizontal";s:5:"label";s:22:"Grid column attributes";s:4:"span";s:3:"all";i:1;a:5:{s:4:"type";s:4:"text";s:4:"size";s:1:"5";s:5:"label";s:5:"Width";s:4:"name";s:18:"grid_column[width]";s:4:"help";s:31:"width of column (in % or pixel)";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"size";s:2:"10";s:5:"label";s:8:"Disabled";s:4:"name";s:21:"grid_column[disabled]";s:4:"help";s:88:"to disable: [! = not]<value>[=<check>] eg: \'!@data\' disables if content of data is empty";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:8;a:2:{s:1:"A";a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"3";s:4:"span";s:3:"all";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Save";s:4:"name";s:4:"save";s:4:"help";s:66:"saves the template with given version number and closes the window";}i:2;a:4:{s:4:"type";s:6:"button";s:5:"label";s:5:"Apply";s:4:"name";s:5:"apply";s:4:"help";s:56:"applies the changes to the given version of the template";}i:3;a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Cancel";s:4:"name";s:6:"cancel";s:4:"help";s:44:"closes the window without saving the changes";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:8;s:4:"cols";i:2;}}','size' => '','style' => '.redItalic { color: red; font-style: italic; }.gray { color: gray; }','modified' => '1108739783',);
$templ_data[] = array('name' => 'etemplate.editor.widget','template' => '','lang' => '','group' => '0','version' => '1.0.1.004','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:9:{i:0;a:4:{s:2:"h2";s:6:",!@msg";s:2:"h6";s:11:",!@grid_row";s:2:"h7";s:14:",!@grid_column";s:2:"c1";s:2:"th";}i:1;a:2:{s:1:"A";a:7:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"4";s:4:"span";s:3:"all";i:1;a:5:{s:4:"type";s:6:"select";s:4:"size";s:7:"Edit...";s:4:"name";s:9:"edit_menu";s:8:"onchange";s:1:"1";s:4:"help";s:33:"delete and cut save the template!";}i:2;a:5:{s:4:"type";s:6:"select";s:4:"size";s:6:"Box...";s:4:"name";s:8:"box_menu";s:8:"onchange";s:1:"1";s:4:"help";s:33:"all operations save the template!";}i:3;a:5:{s:4:"type";s:6:"select";s:4:"size";s:6:"Row...";s:4:"name";s:8:"row_menu";s:8:"onchange";s:1:"1";s:4:"help";s:33:"all operations save the template!";}i:4;a:5:{s:4:"type";s:6:"select";s:4:"size";s:9:"Column...";s:4:"name";s:11:"column_menu";s:8:"onchange";s:1:"1";s:4:"help";s:33:"all operations save the template!";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";s:7:"no_lang";s:1:"1";s:4:"name";s:3:"msg";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:4:"html";s:5:"label";s:4:"Name";s:4:"name";s:11:"java_script";}s:1:"B";a:7:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"5";i:1;a:3:{s:4:"type";s:4:"text";s:4:"name";s:4:"name";s:8:"readonly";s:1:"1";}i:2;a:3:{s:4:"type";s:4:"text";s:4:"name";s:8:"template";s:8:"readonly";s:1:"1";}i:3;a:3:{s:4:"type";s:4:"text";s:4:"name";s:4:"lang";s:8:"readonly";s:1:"1";}i:4;a:5:{s:4:"type";s:4:"text";s:4:"size";s:2:"20";s:5:"label";s:7:"Version";s:4:"name";s:7:"version";s:4:"help";s:56:"increment version to not overwrite the existing template";}i:5;a:5:{s:4:"type";s:5:"label";s:4:"span";s:5:",gray";s:5:"label";s:4:"Path";s:7:"no_lang";s:1:"1";s:4:"name";s:4:"path";}}}i:4;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Path";}s:1:"B";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:4:"path";s:4:"name";s:4:"goto";s:4:"help";s:25:"switch to a parent widget";}i:2;a:6:{s:4:"type";s:4:"path";s:4:"size";s:1:" ";s:4:"name";s:5:"goto2";s:4:"help";s:44:"switch to an other widgets of that container";s:7:"no_lang";s:1:"1";s:5:"label";s:1:" ";}}}i:5;a:2:{s:1:"A";a:4:{s:4:"type";s:8:"template";s:4:"size";s:4:"cell";s:4:"span";s:3:"all";s:4:"name";s:31:"etemplate.editor.widget.generic";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:6;a:2:{s:1:"A";a:8:{s:4:"type";s:8:"groupbox";s:4:"size";s:12:"4,horizontal";s:5:"label";s:19:"Grid row attributes";s:4:"span";s:3:"all";i:1;a:5:{s:4:"type";s:4:"text";s:4:"size";s:1:"5";s:5:"label";s:6:"Height";s:4:"name";s:16:"grid_row[height]";s:4:"help";s:29:"height of row (in % or pixel)";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"size";s:2:"10";s:5:"label";s:8:"Disabled";s:4:"name";s:18:"grid_row[disabled]";s:4:"help";s:88:"to disable: [! = not]<value>[=<check>] eg: \'!@data\' disables if content of data is empty";}i:3;a:5:{s:4:"type";s:4:"text";s:4:"size";s:2:"10";s:5:"label";s:5:"Class";s:4:"name";s:15:"grid_row[class]";s:4:"help";s:100:"CSS-class name for this row, preset: \'th\' = header, \'row\' = alternating row, \'row_off\'+\'row_on\' rows";}i:4;a:4:{s:4:"type";s:6:"select";s:5:"label";s:6:"Valign";s:4:"name";s:16:"grid_row[valign]";s:4:"help";s:25:"vertical alignment of row";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:7;a:2:{s:1:"A";a:6:{s:4:"type";s:8:"groupbox";s:4:"size";s:12:"2,horizontal";s:5:"label";s:22:"Grid column attributes";s:4:"span";s:3:"all";i:1;a:5:{s:4:"type";s:4:"text";s:4:"size";s:1:"5";s:5:"label";s:5:"Width";s:4:"name";s:18:"grid_column[width]";s:4:"help";s:31:"width of column (in % or pixel)";}i:2;a:5:{s:4:"type";s:4:"text";s:4:"size";s:2:"10";s:5:"label";s:8:"Disabled";s:4:"name";s:21:"grid_column[disabled]";s:4:"help";s:88:"to disable: [! = not]<value>[=<check>] eg: \'!@data\' disables if content of data is empty";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:8;a:2:{s:1:"A";a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"3";s:4:"span";s:3:"all";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Save";s:4:"name";s:4:"save";s:4:"help";s:66:"saves the template with given version number and closes the window";}i:2;a:4:{s:4:"type";s:6:"button";s:5:"label";s:5:"Apply";s:4:"name";s:5:"apply";s:4:"help";s:56:"applies the changes to the given version of the template";}i:3;a:5:{s:4:"type";s:6:"button";s:5:"label";s:6:"Cancel";s:4:"name";s:6:"cancel";s:4:"help";s:44:"closes the window without saving the changes";s:7:"onclick";s:15:"window.close();";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:8;s:4:"cols";i:2;}}','size' => '','style' => '','modified' => '1108739783',);
$templ_data[] = array('name' => 'etemplate.editor.new','template' => '','lang' => '','group' => '0','version' => '1.0.1.001','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:8:{i:0;a:2:{s:2:"h1";s:6:",!@msg";s:2:"h2";s:6:",!@xml";}i:1;a:1:{s:1:"A";a:4:{s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";s:7:"no_lang";s:1:"1";s:4:"name";s:3:"msg";}}i:2;a:2:{s:1:"A";a:6:{s:4:"type";s:8:"groupbox";s:4:"size";s:1:"2";s:5:"label";s:10:"Export XML";s:4:"span";s:3:"all";i:1;a:2:{s:4:"type";s:4:"html";s:4:"name";s:3:"xml";}i:2;a:1:{s:4:"type";s:5:"label";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:3;a:2:{s:1:"A";a:3:{s:4:"type";s:8:"template";s:4:"span";s:3:"all";s:4:"name";s:21:"etemplate.editor.keys";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:4;a:2:{s:1:"A";a:12:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"9";s:4:"span";s:3:"all";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Read";s:4:"name";s:4:"read";s:4:"help";s:49:"read eTemplate from database (for the keys above)";}i:2;a:4:{s:4:"type";s:6:"button";s:5:"label";s:11:"Show values";s:4:"name";s:6:"values";s:4:"help";s:65:"shows / allows you to enter values into the eTemplate for testing";}i:3;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Save";s:4:"name";s:4:"save";s:4:"help";s:77:"save the eTemplate under the above keys (name, ...), change them for a SaveAs";}i:4;a:5:{s:4:"type";s:6:"button";s:5:"label";s:6:"Delete";s:4:"name";s:6:"delete";s:4:"help";s:36:"Delete the eTemplate spezified above";s:7:"onclick";s:55:"return confirm(\'Delete the eTemplate spezified above\');";}i:5;a:4:{s:4:"type";s:6:"button";s:5:"label";s:10:"Dump4Setup";s:4:"name";s:4:"dump";s:4:"help";s:88:"writes a \'etemplates.inc.php\' file (for application in Name) in the setup-dir of the app";}i:6;a:4:{s:4:"type";s:6:"button";s:5:"label";s:14:"Write Langfile";s:4:"name";s:8:"langfile";s:4:"help";s:85:"creates an english (\'en\') langfile from label and helptexts (for application in Name)";}i:7;a:4:{s:4:"type";s:6:"button";s:5:"label";s:10:"Export XML";s:4:"name";s:10:"export_xml";s:4:"help";s:43:"export the loaded eTemplate into a xml-file";}i:8;a:4:{s:4:"type";s:6:"button";s:5:"label";s:10:"Import XML";s:4:"name";s:10:"import_xml";s:4:"help";s:35:"import an eTemplate from a xml-file";}i:9;a:3:{s:4:"type";s:4:"file";s:4:"name";s:4:"file";s:4:"help";s:18:"xml-file to import";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:5;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"hrule";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:6;a:2:{s:1:"A";a:3:{s:4:"type";s:4:"html";s:4:"span";s:3:"all";s:4:"name";s:7:"onclick";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:7;a:2:{s:1:"A";a:2:{s:4:"type";s:8:"template";s:4:"size";s:4:"cont";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:7;s:4:"cols";i:2;}}','size' => '','style' => '.redItalic { color: red; font-style: italic; }
.clickWidgetToEdit { cursor: pointer; cursor: hand; }

View File

@ -28,6 +28,7 @@ am etemplate de Vormittag
an indexed column speeds up querys using that column (cost space on the disk !!!) etemplate de eine indizierte Spalte beschleunigt Anfragen die diese benutzen (kostet Plattenplatz !!!)
application etemplate de Anwendung
application name needed to write a langfile or dump the etemplates !!! etemplate de Name der Anwendung benötigt um eine Sprachdatei oder eTemplate-Distibutionsdate zu schreiben !!!
applies the changes made etemplate de übernimmt die Änderungen
applies the changes to the given version of the template etemplate de übernimmt die Änderungen in die angegebene Version des Templates
attach etemplate de Anhängen
attach file etemplate de Datei anhängen
@ -88,6 +89,7 @@ delete all selected etemplates, without further inquiry etemplate de l
delete and cut save the template! etemplate de Löschen und Ausschneiden speichern das Template!
delete column etemplate de Spalte löschen
delete index etemplate de Index löschen
delete the spezified etemplate etemplate de löscht das angegebene eTemplate
delete this column etemplate de diese Spalte löschen
delete this etemplate etemplate de dieses eTemplate löschen
delete this row etemplate de diese Zeile löschen
@ -106,6 +108,7 @@ drop a table - this can not be undone etemplate de Tabelle l
drop table etemplate de Tabelle löschen
dump4setup etemplate de Dump4Setup
edit etemplate de Bearbeiten
edit embeded css styles or of the applications app.css file etemplate de bearbeitet die eingebetteten CSS Stile oder die app.css Datei der Anwendung
edit the etemplate spez. above etemplate de das oben spezifizierte eTemplate bearbeiten
edit... etemplate de Bearbeiten...
editable templates - db-tools etemplate de eTemplates - DB-Tools
@ -123,8 +126,7 @@ enter the new version number here (has to be > old_version) etemplate de Neue Ve
entry saved etemplate de Eintrag gespeichert
error: template not found !!! etemplate de Fehler: eTemplate nicht gefunden !!!
error: webserver is not allowed to write into '%1' !!! etemplate de Fehler: der Webserver hat keine Schreibberechtigung in '%1' !!!
error: while saveing !!! etemplate de Fehler: beim Speichern !!!
error: writeing !!! etemplate de Fehler: schreiben !!!
error: while saving !!! etemplate de Fehler: beim Speichern !!!
error: writing file (no write-permission for the webserver) !!! etemplate de Fehler: Datei schreiben (keine Schreibberechtigung für den Webserver) !!!
etemplate common de eTemplate
etemplate '%1' imported, use save to put it in the database etemplate de eTemplate '%1' importiert, benutze Speichern um es in der Datenbank abzulegen
@ -245,13 +247,15 @@ read etemplate de Lesen
read a list of entries. etemplate de Liest eine Liste von Einträgen.
read a single entry by passing the id and fieldlist. etemplate de Liste einen einzelnen Eintrag durch übergabe seiner Id und Feldliste.
read etemplate from database (for the keys above) etemplate de ließt ein eTemplate aus der Datenbank (für die Schlüssel darüber)
readonly etemplate de nur lesen
remove row (can not be undone!!!) etemplate de löscht eine Zeile (NICHT rückgängig zu machen)
remove this link (not the entry itself) etemplate de entfernt diese Verknüpfung (nicht den Eintrag selbst)
returns savely, without deleting etemplate de Abbruch, OHNE zu löschen
right etemplate de Rechts
row... etemplate de Zeile...
save the changes made and close the window etemplate de speichert die Änderungen uns schließt das Fenster
save the etemplate under the above keys (name, ...), change them for a saveas etemplate de Speichert das eTemplate unter den obigen Schlüsseln (name, ...), ändern für ein Speichern unter
saves changes to tables_current.inc.php etemplate de Speichert Änderungen in tables_current.inc.php
saves changes to tables_current.inc.php etemplate de speichert die Änderungen in tables_current.inc.php
saves the template with given version number and closes the window etemplate de speichert das Template unter der angegebenen Versionsnummer und schließt das Fenster
scale etemplate de Scale
scale for float etemplate de Nachkommastellen für Gleitkommawerte

View File

@ -28,6 +28,7 @@ am etemplate en am
an indexed column speeds up querys using that column (cost space on the disk !!!) etemplate en an indexed column speeds up querys using that column (cost space on the disk !!!)
application etemplate en Application
application name needed to write a langfile or dump the etemplates !!! etemplate en Application name needed to write a langfile or dump the eTemplates !!!
applies the changes made etemplate en applies the changes made
applies the changes to the given version of the template etemplate en applies the changes to the given version of the template
attach etemplate en Attach
attach file etemplate en attach file
@ -88,6 +89,7 @@ delete all selected etemplates, without further inquiry etemplate en delete ALL
delete and cut save the template! etemplate en delete and cut save the template!
delete column etemplate en Delete Column
delete index etemplate en Delete Index
delete the spezified etemplate etemplate en Delete the spezified eTemplate
delete this column etemplate en delete this column
delete this etemplate etemplate en delete this eTemplate
delete this row etemplate en delete this row
@ -106,6 +108,7 @@ drop a table - this can not be undone etemplate en Drop a table - this can NOT b
drop table etemplate en Drop Table
dump4setup etemplate en Dump4Setup
edit etemplate en Edit
edit embeded css styles or of the applications app.css file etemplate en edit embeded CSS styles or of the applications app.css file
edit the etemplate spez. above etemplate en edit the eTemplate spez. above
edit... etemplate en Edit...
editable templates - db-tools etemplate en Editable Templates - DB-Tools
@ -123,8 +126,7 @@ enter the new version number here (has to be > old_version) etemplate en enter t
entry saved etemplate en Entry saved
error: template not found !!! etemplate en Error: Template not found !!!
error: webserver is not allowed to write into '%1' !!! etemplate en Error: webserver is not allowed to write into '%1' !!!
error: while saveing !!! etemplate en Error: while saveing !!!
error: writeing !!! etemplate en Error: writeing !!!
error: while saving !!! etemplate en Error: while saving !!!
error: writing file (no write-permission for the webserver) !!! etemplate en Error: writing file (no write-permission for the webserver) !!!
etemplate common en eTemplate
etemplate '%1' imported, use save to put it in the database etemplate en eTemplate '%1' imported, use Save to put it in the database
@ -245,11 +247,13 @@ read etemplate en Read
read a list of entries. etemplate en Read a list of entries.
read a single entry by passing the id and fieldlist. etemplate en Read a single entry by passing the id and fieldlist.
read etemplate from database (for the keys above) etemplate en read eTemplate from database (for the keys above)
readonly etemplate en readonly
remove row (can not be undone!!!) etemplate en remove Row (can NOT be undone!!!)
remove this link (not the entry itself) etemplate en Remove this link (not the entry itself)
returns savely, without deleting etemplate en returns savely, WITHOUT deleting
right etemplate en Right
row... etemplate en Row...
save the changes made and close the window etemplate en Save the changes made and close the window
save the etemplate under the above keys (name, ...), change them for a saveas etemplate en save the eTemplate under the above keys (name, ...), change them for a SaveAs
saves changes to tables_current.inc.php etemplate en saves changes to tables_current.inc.php
saves the template with given version number and closes the window etemplate en saves the template with given version number and closes the window

View File

@ -0,0 +1,5 @@
/* $Id$ */
.redItalic { color: red; font-style: italic; }
.gray { color: gray; }
.clickWidgetToEdit { cursor: pointer; cursor: hand; }
.clickWidgetToEdit:hover { background-color: pink; }

View File

@ -0,0 +1,134 @@
<?xml version="1.0"?>
<!-- $Id$ -->
<overlay>
<template id="etemplate.editor.widget.generic" template="" lang="" group="0" version="1.0.1.001">
<grid>
<columns>
<column/>
<column/>
<column/>
<column/>
<column/>
<column/>
</columns>
<rows>
<row class="row">
<description options=",,,type" value="Type"/>
<menulist>
<menupopup id="type" onchange="1" statustext="type of the field (select Label if field should be empty)"/>
</menulist>
<description options=",,,size" value="Options" align="center"/>
<textbox size="10" id="size" statustext="Label:[bold][italic] Text:[len][,max] Numbers:[min][,[max][,len]] T.area:[rows][,cols] Radiob.:value H.Rule:[width] Templ.:[IndexInContent] Select:[multiselect] Date:[values: eg. 'Y-m-d']"/>
<description options=",,,span" value="Span, Class" align="center"/>
<textbox size="10" id="span" statustext="number of colums the field/cell should span or 'all' for the remaining columns, CSS-class name (for the TD tag)"/>
</row>
<row class="row">
<description options=",,,label" value="Label"/>
<textbox id="label" statustext="displayed in front of input or input is inserted for a '%s' in the label (label of the Submitbutton or Image-filename)"/>
<checkbox span="2" label="%s NoTranslation" align="center" id="no_lang" statustext="select if content of field should not be translated (label gets always translated)"/>
<description value="Align" align="center"/>
<menulist>
<menupopup id="align" statustext="alignment of label and input-field in table-cell"/>
</menulist>
</row>
<row class="row">
<description options=",,,name" value="Name"/>
<textbox id="name" statustext="index/name of returned content (name of the Template, Link / Method for Image)"/>
<hbox span="4">
<checkbox label="%s needed" align="center" id="needed" statustext="check if field has to be filled by user"/>
<checkbox label="%s readonly" align="center" id="readonly" statustext="check if content should only be displayed but not altered (the content is not send back then!)"/>
<checkbox label="%s disabled" align="center" id="disabled" statustext="if field is disabled an empty table-cell is displayed, for (temporal) removement of a field/cell"/>
<checkbox label="%s onChange" align="center" id="onchange" statustext="enable JavaScript onChange submit"/>
</hbox>
</row>
<row class="row">
<description options=",,,help" value="Help"/>
<textbox size="45" span="3" id="help" statustext="displayed in statusline of browser if input-field gets focus"/>
<description options=",,,blur" value="blurText" align="center"/>
<textbox size="10" id="blur" statustext="this text gets displayed if the input-field is empty and has no focus (blur)"/>
</row>
<row class="row" disabled="!@type=button">
<description options="onclick" value="onClick"/>
<menulist>
<menupopup id="onclick_type" statustext="confirmation necesary or custom java-script"/>
</menulist>
<textbox size="45" span="all" id="onclick" statustext="confirmation message or custom javascript (returning true or false)"/>
</row>
</rows>
</grid>
</template>
<template id="etemplate.editor.widget" template="" lang="" group="0" version="1.0.1.005">
<grid>
<columns>
<column/>
<column/>
</columns>
<rows>
<row class="th">
<hbox span="all">
<menulist>
<menupopup options="Edit..." id="edit_menu" onchange="1" statustext="delete and cut save the template!"/>
</menulist>
<menulist>
<menupopup options="Box..." id="box_menu" onchange="1" statustext="all operations save the template!"/>
</menulist>
<menulist>
<menupopup options="Row..." id="row_menu" onchange="1" statustext="all operations save the template!"/>
</menulist>
<menulist>
<menupopup options="Column..." id="column_menu" onchange="1" statustext="all operations save the template!"/>
</menulist>
</hbox>
</row>
<row disabled="!@msg">
<description span="all" class="redItalic" no_lang="1" id="msg"/>
</row>
<row>
<html label="Name" id="java_script"/>
<hbox>
<textbox id="name" readonly="true"/>
<textbox id="template" readonly="true"/>
<textbox id="lang" readonly="true"/>
<textbox size="20" label="Version" id="version" statustext="increment version to not overwrite the existing template"/>
<description class="gray" value="Path" no_lang="1" id="path"/>
</hbox>
</row>
<row>
<description options=",,,goto" value="Path"/>
<hbox>
<path no_lang="1" id="goto" statustext="switch to a parent widget"/>
<path options=" " label=" " no_lang="1" id="goto2" statustext="switch to an other widgets of that container"/>
</hbox>
</row>
<row>
<template content="cell" span="all" id="etemplate.editor.widget.generic"/>
</row>
<row disabled="!@grid_row">
<groupbox span="all" orient="horizontal">
<caption label="Grid row attributes"/>
<textbox size="5" label="Height" id="grid_row[height]" statustext="height of row (in % or pixel)"/>
<textbox size="10" label="Disabled" id="grid_row[disabled]" statustext="to disable: [! = not]&lt;value&gt;[=&lt;check&gt;] eg: '!@data' disables if content of data is empty"/>
<textbox size="10" label="Class" id="grid_row[class]" statustext="CSS-class name for this row, preset: 'th' = header, 'row' = alternating row, 'row_off'+'row_on' rows"/>
<menulist>
<menupopup label="Valign" id="grid_row[valign]" statustext="vertical alignment of row"/>
</menulist>
</groupbox>
</row>
<row disabled="!@grid_column">
<groupbox span="all" orient="horizontal">
<caption label="Grid column attributes"/>
<textbox size="5" label="Width" id="grid_column[width]" statustext="width of column (in % or pixel)"/>
<textbox size="10" label="Disabled" id="grid_column[disabled]" statustext="to disable: [! = not]&lt;value&gt;[=&lt;check&gt;] eg: '!@data' disables if content of data is empty"/>
</groupbox>
</row>
<row>
<hbox span="all">
<button label="Save" id="save" statustext="saves the template with given version number and closes the window"/>
<button label="Apply" id="apply" statustext="applies the changes to the given version of the template"/>
<button label="Cancel" id="cancel" statustext="closes the window without saving the changes"/>
</hbox>
</row>
</rows>
</grid>
</template>
</overlay>