added input-validation:

- needed (= not to be empty) fields are enforced now
- min and max values and format of int and float fields
- validator for text-fields (perl regular expression)
The input-validation is handled completly withing eTemplate, the application dont need to implement any code, just set the right attributes in the template. Validation-errors are displayed in red behind the concerning field, try the template 'etemplate.validation-test' in the editor.
This commit is contained in:
Ralf Becker 2004-04-05 01:33:23 +00:00
parent 219c1db81e
commit ec1cf301b2
8 changed files with 433 additions and 305 deletions

View File

@ -278,7 +278,7 @@ with the content the user put into the fields of the dialog.</p>
even submit the form back to the user if for a address-selection a search for a pattern has to be performed and the matches even submit the form back to the user if for a address-selection a search for a pattern has to be performed and the matches
are shown to the user. In this case the callback is NOT called. The same is true if an int field contains letters or is not are shown to the user. In this case the callback is NOT called. The same is true if an int field contains letters or is not
within the minimum or maximum set. <i>Not all of the is allready working, it will follow in the next days/weeks.</i><br> within the minimum or maximum set. <i>Not all of the is allready working, it will follow in the next days/weeks.</i><br>
For the specialist process_exec uses $GLOBALS['HTTP_POST_VARS'] and ignores HTTP_GET_VARS set as query in the url. For the specialist process_exec uses $_POST and ignores $_GET set as query in the url.
<li>the so_sql function data_merge, copies all values from $content, which are columns in the db-table, in our internal data array. <li>the so_sql function data_merge, copies all values from $content, which are columns in the db-table, in our internal data array.
Values which are not real data, like buttons pressed are not copied (!). Values which are not real data, like buttons pressed are not copied (!).
<li>if $content['save'] is set, the [Save] button has been pressed ('save' is the name NOT the label of the save button), in that <li>if $content['save'] is set, the [Save] button has been pressed ('save' is the name NOT the label of the save button), in that

View File

@ -235,7 +235,6 @@ implement only a subset of XUL. Here are the main differences:</p>
<td> <td>
If checked (xml-attr: needed="1") the etemplates will reprompt the user if he left If checked (xml-attr: needed="1") the etemplates will reprompt the user if he left
the widget / field empty.<br> the widget / field empty.<br>
<i>This is not yet implemented, but should be filled if applicable.</i>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -392,9 +391,10 @@ implement only a subset of XUL. Here are the main differences:</p>
<td> <td>
<b>a single-line input field for text</b><br> <b>a single-line input field for text</b><br>
In the html-UI this is rendered as &lt;input ...><p> In the html-UI this is rendered as &lt;input ...><p>
<b>Options</b> has 2 comma-separated fields:<br> <b>Options</b> has 3 comma-separated fields:<br>
xml: <b>size</b>: the length in chars of the input-field<br> xml: <b>size</b>: the length in chars of the input-field<br>
xml: <b>maxlength</b>: the maximum length of the input xml: <b>maxlength</b>: the maximum length of the input<br>
xml: <b>validator</b>: perl regular expression to validate the input (kommas are allowed in the expression)
</td> </td>
</tr> </tr>
<tr> <tr>
@ -404,11 +404,11 @@ implement only a subset of XUL. Here are the main differences:</p>
<td>int</td> <td>int</td>
<td> <td>
<b>a input-field to enter an integer</b><br> <b>a input-field to enter an integer</b><br>
In the html-UI this is rendered as &lt;input ...>. <i>There are no checks implemented at the moment, In the html-UI this is rendered as &lt;input ...>. <i>The input-validation is done at the moment only on server-side,
but the will come in the near future.</i><p> clientside validation and input-restriction to only numbers is planed.</i><p>
<b>Options</b> has 3 comma-separated fields:<br> <b>Options</b> has 3 comma-separated fields:<br>
xml: <b>min</b>: minimum value, default none<br> xml: <b>min</b>: minimum value, default none, empty values are Ok, as long as <b>needed</b> is not set<br>
xml: <b>max</b>: maximum value, default none<br> xml: <b>max</b>: maximum value, default none, empty values are Ok, as long as <b>needed</b> is not set<br>
xml: <b>size</b>: the length in chars of the input-field, default 5 xml: <b>size</b>: the length in chars of the input-field, default 5
</td> </td>
</tr> </tr>
@ -419,11 +419,11 @@ implement only a subset of XUL. Here are the main differences:</p>
<td>float</td> <td>float</td>
<td> <td>
<b>a input-field to enter a float</b><br> <b>a input-field to enter a float</b><br>
In the html-UI this is rendered as &lt;input ...>. <i>There are no checks implemented at the moment, In the html-UI this is rendered as &lt;input ...>. <i>The input-validation is done at the moment only on server-side,
but the will come in the near future.</i><p> clientside validation and input-restriction to only numbers is planed.</i><p>
<b>Options</b> has 3 comma-separated fields:<br> <b>Options</b> has 3 comma-separated fields:<br>
xml: <b>min</b>: minimum value, default none<br> xml: <b>min</b>: minimum value, default none, empty values are Ok, as long as <b>needed</b> is not set<br>
xml: <b>max</b>: maximum value, default none<br> xml: <b>max</b>: maximum value, default none, empty values are Ok, as long as <b>needed</b> is not set<br>
xml: <b>size</b>: the length in chars of the input-field, default 5 xml: <b>size</b>: the length in chars of the input-field, default 5
</td> </td>
</tr> </tr>

View File

@ -228,6 +228,9 @@
//echo "process_exec($this->name) content ="; _debug_array($content); //echo "process_exec($this->name) content ="; _debug_array($content);
$this->process_show($content,$session_data['to_process'],'exec'); $this->process_show($content,$session_data['to_process'],'exec');
$GLOBALS['phpgw_info']['etemplate']['loop'] |= !$this->canceled &&
count($GLOBALS['phpgw_info']['etemplate']['validation_errors']) > 0; // set by process_show
//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);
@ -606,8 +609,9 @@
{ {
$cell_options = $cell['type'] == 'int' ? 5 : 8; $cell_options = $cell['type'] == 'int' ? 5 : 8;
} }
$cell_options .= ',,'.($cell['type'] == 'int' ? '/^-?[0-9]*$/' : '/^-?[0-9]*[,.]?[0-9]*$/');
// fall-through // fall-through
case 'text': // size: [length][,maxLength] case 'text': // size: [length][,maxLength[,preg]]
if ($readonly) if ($readonly)
{ {
$html .= $this->html->bold(htmlspecialchars($value)); $html .= $this->html->bold(htmlspecialchars($value));
@ -616,20 +620,36 @@
{ {
$html .= $this->html->input($form_name,$value,'', $html .= $this->html->input($form_name,$value,'',
$options.$this->html->formatOptions($cell_options,'SIZE,MAXLENGTH')); $options.$this->html->formatOptions($cell_options,'SIZE,MAXLENGTH'));
$GLOBALS['phpgw_info']['etemplate']['to_process'][$form_name] = $cell['type']; $cell_options = explode(',',$cell_options,3);
$GLOBALS['phpgw_info']['etemplate']['to_process'][$form_name] = array(
'type' => $cell['type'],
'maxlength' => $cell_options[1],
'needed' => $cell['needed'],
'preg' => $cell_options[2],
'min' => $min, // int and float only
'max' => $max,
);
} }
break; break;
case 'textarea': // Multiline Text Input, size: [rows][,cols] case 'textarea': // Multiline Text Input, size: [rows][,cols]
$html .= $this->html->textarea($form_name,$value, $html .= $this->html->textarea($form_name,$value,
$options.$this->html->formatOptions($cell_options,'ROWS,COLS')); $options.$this->html->formatOptions($cell_options,'ROWS,COLS'));
if (!$readonly) if (!$readonly)
$GLOBALS['phpgw_info']['etemplate']['to_process'][$form_name] = $cell['type']; {
$GLOBALS['phpgw_info']['etemplate']['to_process'][$form_name] = array(
'type' => $cell['type'],
'needed' => $cell['needed'],
);
}
break; break;
case 'htmlarea': // Multiline formatted Text Input, size: [inline styles for the widget] case 'htmlarea': // Multiline formatted Text Input, size: [inline styles for the widget]
if (!$readonly) if (!$readonly)
{ {
$html .= $this->html->htmlarea($form_name,$value,$cell_options); $html .= $this->html->htmlarea($form_name,$value,$cell_options);
$GLOBALS['phpgw_info']['etemplate']['to_process'][$form_name] = $cell['type']; $GLOBALS['phpgw_info']['etemplate']['to_process'][$form_name] = array(
'type' => $cell['type'],
'needed' => $cell['needed'],
);
} }
else else
{ {
@ -682,6 +702,7 @@
} }
break; break;
case 'button': case 'button':
case 'cancel': // cancel button
list($app) = explode('.',$this->name); list($app) = explode('.',$this->name);
list($img,$ro_img) = explode(',',$cell_options); list($img,$ro_img) = explode(',',$cell_options);
$title = strlen($label) <= 1 || $cell['no_lang'] ? $label : lang($label); $title = strlen($label) <= 1 || $cell['no_lang'] ? $label : lang($label);
@ -710,7 +731,13 @@
} }
$extra_label = False; $extra_label = False;
if (!$readonly) if (!$readonly)
{
$GLOBALS['phpgw_info']['etemplate']['to_process'][$form_name] = $cell['type']; $GLOBALS['phpgw_info']['etemplate']['to_process'][$form_name] = $cell['type'];
if (strtolower($name) == 'cancel')
{
$GLOBALS['phpgw_info']['etemplate']['to_process'][$form_name] = 'cancel';
}
}
break; break;
case 'hrule': case 'hrule':
$html .= $this->html->hr($cell_options); $html .= $this->html->hr($cell_options);
@ -972,6 +999,11 @@
return $this->html->a_href($html,$extra_link,'',$help != '' ? $options : ''); return $this->html->a_href($html,$extra_link,'',$help != '' ? $options : '');
} }
} }
// if necessary show validation-error behind field
if (isset($GLOBALS['phpgw_info']['etemplate']['validation_errors'][$form_name]))
{
$html .= ' <font color="red">'.$GLOBALS['phpgw_info']['etemplate']['validation_errors'][$form_name].'</font>';
}
return $html; return $html;
} }
@ -999,6 +1031,8 @@
} }
$content_in = $cname ? array($cname => $content) : $content; $content_in = $cname ? array($cname => $content) : $content;
$content = array(); $content = array();
$GLOBALS['phpgw_info']['etemplate']['validation_errors'] = array();
$this->canceled = False;
foreach($to_process as $form_name => $type) foreach($to_process as $form_name => $type)
{ {
@ -1034,14 +1068,62 @@
} }
$this->set_array($content,$form_name,$value); $this->set_array($content,$form_name,$value);
break; break;
case 'int':
case 'float':
case 'text': case 'text':
case 'textarea': case 'textarea':
if (isset($value)) if (isset($value))
{ {
$value = stripslashes($value); $value = stripslashes($value);
} }
if ($value === '' && $attr['needed'])
{
$GLOBALS['phpgw_info']['etemplate']['validation_errors'][$form_name] = lang('Field must not be empty !!!',$value);
}
if ((int) $attr['maxlength'] > 0 && strlen($value) > (int) $attr['maxlength'])
{
$value = substr($value,0,(int) $attr['maxlength']);
}
if ($attr['preg'] && !preg_match($attr['preg'],$value))
{
switch($type)
{
case 'int':
$GLOBALS['phpgw_info']['etemplate']['validation_errors'][$form_name] = lang("'%1' is not a valid integer !!!",$value);
break;
case 'float':
$GLOBALS['phpgw_info']['etemplate']['validation_errors'][$form_name] = lang("'%1' is not a valid floatingpoint number !!!",$value);
break;
default:
$GLOBALS['phpgw_info']['etemplate']['validation_errors'][$form_name] = lang("'%1' has an invalid format !!!",$value);
break;
}
}
elseif ($type == 'int' || $type == 'float') // cast int and float and check range
{
if ($value !== '' || $attr['needed']) // empty values are Ok if needed is not set
{
$value = $type == 'int' ? (int) $value : (float) str_replace(',','.',$value); // allow for german (and maybe other) format
if (!empty($attr['min']) && $value < $attr['min'])
{
$GLOBALS['phpgw_info']['etemplate']['validation_errors'][$form_name] = lang("Value has to be at least '%1' !!!",$attr['min']);
$value = $type == 'int' ? (int) $attr['min'] : (float) $attr['min'];
}
if (!empty($attr['max']) && $value > $attr['max'])
{
$GLOBALS['phpgw_info']['etemplate']['validation_errors'][$form_name] = lang("Value has to be at maximum '%1' !!!",$attr['max']);
$value = $type == 'int' ? (int) $attr['max'] : (float) $attr['max'];
}
}
}
$this->set_array($content,$form_name,$value); $this->set_array($content,$form_name,$value);
break; break;
case 'cancel': // cancel button ==> dont care for validation errors
if ($value)
{
$this->canceled = True;
}
case 'button': case 'button':
if ($value) if ($value)
{ {
@ -1068,8 +1150,7 @@
$name = array_shift($parts); $name = array_shift($parts);
$index = count($parts) ? '['.implode('][',$parts).']' : ''; $index = count($parts) ? '['.implode('][',$parts).']' : '';
$value = array(); $value = array();
$parts = array('tmp_name','type','size','name'); foreach(array('tmp_name','type','size','name') as $part)
while (list(,$part) = each($parts))
{ {
$value[$part] = is_array($_FILES[$name]) ? $this->get_array($_FILES[$name],$part.$index) : False; $value[$part] = is_array($_FILES[$name]) ? $this->get_array($_FILES[$name],$part.$index) : False;
} }
@ -1093,8 +1174,13 @@
if (is_int($this->debug) && $this->debug >= 2 || $this->debug == $this->name && $this->name) if (is_int($this->debug) && $this->debug >= 2 || $this->debug == $this->name && $this->name)
{ {
echo "<p>process_show($this->name) end: content ="; _debug_array($content); echo "<p>process_show($this->name) end: content ="; _debug_array($content);
if (count($GLOBALS['phpgw_info']['etemplate']['validation_errors']))
{
echo "<p>validation_errors = "; _debug_array($GLOBALS['phpgw_info']['etemplate']['validation_errors']);
} }
} }
return count($GLOBALS['phpgw_info']['etemplate']['validation_errors']);
}
/*! /*!
@function java_script @function java_script

View File

@ -49,7 +49,7 @@
), ),
'text' => array( 'text' => array(
'.name' => 'textbox', '.name' => 'textbox',
'size' => 'size,maxlength' 'size' => 'size,maxlength,validator'
), ),
'textarea' => array( 'textarea' => array(
'.name' => 'textbox', '.name' => 'textbox',

View File

@ -1,11 +1,15 @@
<?php <?php
// eTemplates for Application 'etemplate', generated by etemplate.dump() 2004-02-06 01:57 // eTemplates for Application 'etemplate', generated by etemplate.dump() 2004-04-05 03:44
/* $Id$ */ /* $Id$ */
$templ_data[] = array('name' => 'etemplate.editor.values','template' => '','lang' => '','group' => '0','version' => '0.9.13.002','data' => 'a:3:{i:0;a:2:{s:2:\"c1\";s:3:\"nmh\";s:2:\"c2\";s:3:\"nmr\";}i:1;a:2:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:3:\"Key\";}s:1:\"B\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:5:\"Value\";}}i:2;a:2:{s:1:\"A\";a:3:{s:4:\"type\";s:4:\"text\";s:4:\"name\";s:8:\"$col$row\";s:8:\"readonly\";s:1:\"1\";}s:1:\"B\";a:2:{s:4:\"type\";s:4:\"text\";s:4:\"name\";s:8:\"$col$row\";}}}','size' => '','style' => '','modified' => '1081094454',);
$templ_data[] = array('name' => 'etemplate.nextmatch_widget.header_only','template' => '','lang' => '','group' => '0','version' => '0.9.15.002','data' => 'a:3:{i:0;a:2:{s:1:\"A\";s:3:\"50%\";s:1:\"B\";s:3:\"50%\";}i:1;a:2:{s:1:\"A\";a:2:{s:4:\"type\";s:8:\"template\";s:4:\"name\";s:12:\"@header_left\";}s:1:\"B\";a:3:{s:4:\"type\";s:8:\"template\";s:5:\"align\";s:5:\"right\";s:4:\"name\";s:13:\"@header_right\";}}i:2;a:2:{s:1:\"A\";a:5:{s:4:\"type\";s:8:\"template\";s:4:\"size\";s:4:\"rows\";s:4:\"span\";s:3:\"all\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:9:\"@template\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}}}','size' => '100%','style' => '.activ_sortcolumn { color: red; font-weight: bold; } $templ_data[] = array('name' => 'etemplate.nextmatch_widget.header_only','template' => '','lang' => '','group' => '0','version' => '0.9.15.002','data' => 'a:3:{i:0;a:2:{s:1:\"A\";s:3:\"50%\";s:1:\"B\";s:3:\"50%\";}i:1;a:2:{s:1:\"A\";a:2:{s:4:\"type\";s:8:\"template\";s:4:\"name\";s:12:\"@header_left\";}s:1:\"B\";a:3:{s:4:\"type\";s:8:\"template\";s:5:\"align\";s:5:\"right\";s:4:\"name\";s:13:\"@header_right\";}}i:2;a:2:{s:1:\"A\";a:5:{s:4:\"type\";s:8:\"template\";s:4:\"size\";s:4:\"rows\";s:4:\"span\";s:3:\"all\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:9:\"@template\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}}}','size' => '100%','style' => '.activ_sortcolumn { color: red; font-weight: bold; }
.inactiv_sortcolumn { color: green; font-weight: normal; }','modified' => '1075985789',); .inactiv_sortcolumn { color: green; font-weight: normal; }','modified' => '1075985789',);
$templ_data[] = array('name' => 'etemplate.validation-test','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:5:{i:0;a:0:{}i:1;a:1:{s:1:\"A\";a:4:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:15:\"10,10,/^[A-Z]+/\";s:5:\"label\";s:52:\"Text (<= 10 chars, has to start with capital letter)\";s:4:\"name\";s:4:\"text\";}}i:2;a:1:{s:1:\"A\";a:5:{s:4:\"type\";s:3:\"int\";s:4:\"size\";s:5:\"-15,5\";s:5:\"label\";s:23:\"Integer (-15 <= x <= 5)\";s:4:\"name\";s:7:\"integer\";s:6:\"needed\";s:1:\"1\";}}i:3;a:1:{s:1:\"A\";a:4:{s:4:\"type\";s:5:\"float\";s:4:\"size\";s:8:\"-1.5,3.5\";s:5:\"label\";s:32:\"Floatingpoint (-1.5 <= x <= 3.5)\";s:4:\"name\";s:5:\"float\";}}i:4;a:1:{s:1:\"A\";a:4:{s:4:\"type\";s:4:\"hbox\";s:4:\"size\";s:1:\"2\";i:1;a:3:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:4:\"Save\";s:4:\"name\";s:4:\"save\";}i:2;a:3:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:6:\"Cancel\";s:4:\"name\";s:6:\"cancel\";}}}}','size' => ',,0,,0,0','style' => '','modified' => '1081128620',);
$templ_data[] = array('name' => 'etemplate.datefield','template' => '','lang' => '','group' => '0','version' => '0.9.15.001','data' => 'a:2:{i:0;a:0:{}i:1;a:3:{s:1:\"A\";a:4:{s:4:\"type\";s:3:\"int\";s:4:\"size\";s:4:\"1,31\";s:4:\"name\";s:1:\"d\";s:4:\"help\";s:3:\"Day\";}s:1:\"B\";a:4:{s:4:\"type\";s:3:\"int\";s:4:\"size\";s:4:\"1,12\";s:4:\"name\";s:1:\"m\";s:4:\"help\";s:5:\"Month\";}s:1:\"C\";a:4:{s:4:\"type\";s:3:\"int\";s:4:\"size\";s:4:\"1900\";s:4:\"name\";s:1:\"Y\";s:4:\"help\";s:4:\"Year\";}}}','size' => '','style' => '','modified' => '1032907904',); $templ_data[] = array('name' => 'etemplate.datefield','template' => '','lang' => '','group' => '0','version' => '0.9.15.001','data' => 'a:2:{i:0;a:0:{}i:1;a:3:{s:1:\"A\";a:4:{s:4:\"type\";s:3:\"int\";s:4:\"size\";s:4:\"1,31\";s:4:\"name\";s:1:\"d\";s:4:\"help\";s:3:\"Day\";}s:1:\"B\";a:4:{s:4:\"type\";s:3:\"int\";s:4:\"size\";s:4:\"1,12\";s:4:\"name\";s:1:\"m\";s:4:\"help\";s:5:\"Month\";}s:1:\"C\";a:4:{s:4:\"type\";s:3:\"int\";s:4:\"size\";s:4:\"1900\";s:4:\"name\";s:1:\"Y\";s:4:\"help\";s:4:\"Year\";}}}','size' => '','style' => '','modified' => '1032907904',);
$templ_data[] = array('name' => 'etemplate.datefield','template' => '','lang' => '','group' => '0','version' => '0.9.15.002','data' => 'a:2:{i:0;a:0:{}i:1;a:5:{s:1:\"A\";a:4:{s:4:\"type\";s:3:\"int\";s:4:\"size\";s:4:\"1,,6\";s:4:\"name\";s:2:\"f1\";s:4:\"help\";s:5:\"@help\";}s:1:\"B\";a:3:{s:4:\"type\";s:5:\"label\";s:4:\"size\";s:1:\"b\";s:4:\"name\";s:3:\"sep\";}s:1:\"C\";a:4:{s:4:\"type\";s:3:\"int\";s:4:\"size\";s:4:\"1,,6\";s:4:\"name\";s:2:\"f2\";s:4:\"help\";s:5:\"@help\";}s:1:\"D\";a:3:{s:4:\"type\";s:5:\"label\";s:4:\"size\";s:1:\"b\";s:4:\"name\";s:3:\"sep\";}s:1:\"E\";a:4:{s:4:\"type\";s:3:\"int\";s:4:\"size\";s:4:\"1,,6\";s:4:\"name\";s:2:\"f3\";s:4:\"help\";s:5:\"@help\";}}}','size' => ',,,,0','style' => '','modified' => '1032907904',); $templ_data[] = array('name' => 'etemplate.datefield','template' => '','lang' => '','group' => '0','version' => '0.9.15.002','data' => 'a:2:{i:0;a:0:{}i:1;a:5:{s:1:\"A\";a:4:{s:4:\"type\";s:3:\"int\";s:4:\"size\";s:4:\"1,,6\";s:4:\"name\";s:2:\"f1\";s:4:\"help\";s:5:\"@help\";}s:1:\"B\";a:3:{s:4:\"type\";s:5:\"label\";s:4:\"size\";s:1:\"b\";s:4:\"name\";s:3:\"sep\";}s:1:\"C\";a:4:{s:4:\"type\";s:3:\"int\";s:4:\"size\";s:4:\"1,,6\";s:4:\"name\";s:2:\"f2\";s:4:\"help\";s:5:\"@help\";}s:1:\"D\";a:3:{s:4:\"type\";s:5:\"label\";s:4:\"size\";s:1:\"b\";s:4:\"name\";s:3:\"sep\";}s:1:\"E\";a:4:{s:4:\"type\";s:3:\"int\";s:4:\"size\";s:4:\"1,,6\";s:4:\"name\";s:2:\"f3\";s:4:\"help\";s:5:\"@help\";}}}','size' => ',,,,0','style' => '','modified' => '1032907904',);

View File

@ -1,285 +1,291 @@
%1 (%2 new) messages writen for application '%3' and languages '%4' etemplate de %1 (%2 neue) Texte für die Anwendung '%3' und die Sprache '%4' geschrieben %1 (%2 new) messages writen for application '%3' and languages '%4' de %1 (%2 neue) Texte für die Anwendung '%3' und die Sprache '%4' geschrieben
%1 etemplates deleted etemplate de %1 eTemplates gelöscht %1 etemplates deleted de %1 eTemplates gelöscht
%1 etemplates for application '%2' dumped to '%3' etemplate de %1 eTemplates für die Anwendung '%2' nach '%3' geschrieben %1 etemplates for application '%2' dumped to '%3' de %1 eTemplates für die Anwendung '%2' nach '%3' geschrieben
%1 etemplates found etemplate de %1 eTemplates gefunden %1 etemplates found de %1 eTemplates gefunden
%1 matches on search criteria etemplate de %1 Treffer bei der Suche %1 matches on search criteria de %1 Treffer bei der Suche
%1 new etemplates imported for application '%2' etemplate de %1 neue eTemplates importiert für die Anwendung '%2' %1 new etemplates imported for application '%2' de %1 neue eTemplates importiert für die Anwendung '%2'
%s disabled etemplate de %s deaktiviert %s disabled de %s deaktiviert
%s needed etemplate de %s benötigt %s needed de %s benötigt
%s notranslation etemplate de %s nicht übersetzen %s notranslation de %s nicht übersetzen
%s onchange etemplate de %s onChange %s onchange de %s onChange
%s readonly etemplate de %s Schreibschutz %s readonly de %s Schreibschutz
a pattern to be searched for etemplate de ein Muster nach dem gesucht werden soll '%1' has an invalid format !!! etemplate de '%1' hat ein ungültiges Format !!!
add a new column (after the existing ones) etemplate de Neue Spalte hinzufügen (hinter den bestehenden) '%1' is not a valid floatingpoint number !!! etemplate de '%1' ist keine gültige Kommazahl !!!
add a new multi-column index etemplate de Fügt einen mehrspaltigen Index hinzu '%1' is not a valid integer !!! etemplate de '%1' ist keine gültige Ganzzahl !!!
add column etemplate de Spalte zufügen a pattern to be searched for de ein Muster nach dem gesucht werden soll
add index etemplate de Index zufügen add a new column (after the existing ones) de Neue Spalte hinzufügen (hinter den bestehenden)
add table etemplate de Tabelle zufügen add a new multi-column index de Fügt einen mehrspaltigen Index hinzu
align etemplate de Ausrichtung add column de Spalte zufügen
alignment of label and input-field in table-cell etemplate de Ausrichtung der Beschriftung und des Eingabefeldes in der Tabellenzelle add index de Index zufügen
alignment of the v/hbox containing table-cell etemplate de Ausrichtung der die V/HBox enthaltenden Tabellenzelle add table de Tabelle zufügen
am etemplate de Vormittag align de Ausrichtung
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 !!!) alignment of label and input-field in table-cell de Ausrichtung der Beschriftung und des Eingabefeldes in der Tabellenzelle
application etemplate de Anwendung alignment of the v/hbox containing table-cell de Ausrichtung der die V/HBox enthaltenden Tabellenzelle
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 !!! am de Vormittag
attach etemplate de Anhängen an indexed column speeds up querys using that column (cost space on the disk !!!) de eine indizierte Spalte beschleunigt Anfragen die diese benutzen (kostet Plattenplatz !!!)
attach file etemplate de Datei anhängen application de Anwendung
blurtext etemplate de blurText application name needed to write a langfile or dump the etemplates !!! de Name der Anwendung benötigt um eine Sprachdatei oder eTemplate-Distibutionsdate zu schreiben !!!
border etemplate de Rand attach de Anhängen
border-line-thickness for the table-tag etemplate de Randbreite (border) für die Tabelle attach file de Datei anhängen
can not have special sql-value null etemplate de darf nicht den speziellen SQL Wert NULL annehmen blurtext de blurText
cancel etemplate de Abbruch border de Rand
category etemplate de Kategorie border-line-thickness for the table-tag de Randbreite (border) für die Tabelle
cellpadding for the table-tag etemplate de Innenabstand (cellpadding) der Tabelle can not have special sql-value null de darf nicht den speziellen SQL Wert NULL annehmen
cells etemplate de Zellen cancel de Abbruch
cellspacing for the table-tag etemplate de Zellenabstand (cellspacing) der Tabelle category de Kategorie
center etemplate de Zentriert cellpadding for the table-tag de Innenabstand (cellpadding) der Tabelle
check if content should only be displayed but not altered (the content is not send back then!) etemplate de abhaken wenn der Inhalt nur angezeigt aber nicht geändert werden soll (der Inhalt wird dann nicht zurückgesendet!) cells de Zellen
check if field has to be filled by user etemplate de abhaken wenn das Eingabefeld vom Benutzer zwingend ausgefüllt werden muss cellspacing for the table-tag de Zellenabstand (cellspacing) der Tabelle
checkbox etemplate de Checkbox center de Zentriert
class etemplate de Class check if content should only be displayed but not altered (the content is not send back then!) de abhaken wenn der Inhalt nur angezeigt aber nicht geändert werden soll (der Inhalt wird dann nicht zurückgesendet!)
class, valign etemplate de Class, Valign check if field has to be filled by user de abhaken wenn das Eingabefeld vom Benutzer zwingend ausgefüllt werden muss
click here to attach the file etemplate de hier clicken um die Datei anzuhängen checkbox de Checkbox
click here to create the link etemplate de hier clicken um die Verknüpfung anzulegen class de Class
click here to start the search etemplate de hier clicken um die Suche zu starten class, valign de Class, Valign
click here to upload the file etemplate de hier clicken um die Datei hochzuladen click here to attach the file de hier clicken um die Datei anzuhängen
click to order after that criteria etemplate de anclicken um nach diesem Kriterium zu sortieren click here to create the link de hier clicken um die Verknüpfung anzulegen
columnname etemplate de Spaltenname click here to start the search de hier clicken um die Suche zu starten
comment etemplate de Kommentar click here to upload the file de hier clicken um die Datei hochzuladen
create a new table for the application etemplate de Neue Tabelle für die Anwendung anlegen click to order after that criteria de anclicken um nach diesem Kriterium zu sortieren
creates an english ('en') langfile from label and helptexts (for application in name) etemplate de erzeugt eine englische ('en') Sprachdatei aus den Beschriftungen und Hilfetexten (für die Anwendung in Name) columnname de Spaltenname
css class for the table-tag etemplate de CSS class der Tabelle comment de Kommentar
css-class name for this row, preset: 'nmh' = nextmatch header, 'nmr' = alternating nm row, 'nmr0'+'nmr1' nm rows etemplate de Name der CSS class dieser Zeile, vorbelegt sind: 'th' = Kopfzeile, 'row' = zeilenweise wechselnde Farbe bzw. 'row_on', 'row_off' create a new table for the application de Neue Tabelle für die Anwendung anlegen
css-styles etemplate de CSS Stile creates an english ('en') langfile from label and helptexts (for application in name) de erzeugt eine englische ('en') Sprachdatei aus den Beschriftungen und Hilfetexten (für die Anwendung in Name)
date+time etemplate de Datum+Uhrzeit css class for the table-tag de CSS class der Tabelle
datum etemplate de Datum css-class name for this row, preset: 'nmh' = nextmatch header, 'nmr' = alternating nm row, 'nmr0'+'nmr1' nm rows de Name der CSS class dieser Zeile, vorbelegt sind: 'th' = Kopfzeile, 'row' = zeilenweise wechselnde Farbe bzw. 'row_on', 'row_off'
day etemplate de Tag css-styles de CSS Stile
db ensures that every row has a unique value in that column etemplate de die Datenbank stelt sicher das alle Zeilen einen einmaligen Wert in dieser Spalte haben date+time de Datum+Uhrzeit
db-specific index options (comma-sep.), eg. mysql(fulltext) or mysql(100) for the indexed length of a col etemplate de DB-spezifische Index-Optionen (Komma-getrennt), zB. mysql(FULLTEXT) oder mysql(100) für die indizierte Länge der Spalte datum de Datum
db-tools etemplate de DB-Tools day de Tag
deck etemplate de Deck (intern) db ensures that every row has a unique value in that column de die Datenbank stelt sicher das alle Zeilen einen einmaligen Wert in dieser Spalte haben
default etemplate de Vorgabe db-specific index options (comma-sep.), eg. mysql(fulltext) or mysql(100) for the indexed length of a col de DB-spezifische Index-Optionen (Komma-getrennt), zB. mysql(FULLTEXT) oder mysql(100) für die indizierte Länge der Spalte
delete etemplate de Löschen db-tools de DB-Tools
delete a single entry by passing the id. etemplate de Löscht einen einzelnen Eintrag über seine Id. deck de Deck (intern)
delete all selected etemplates, without further inquiry etemplate de löscht ALLE ausgewählten eTemplates OHNE weitere Rückfrage default de Vorgabe
delete column etemplate de Spalte löschen delete de Löschen
delete index etemplate de Index löschen delete a single entry by passing the id. de Löscht einen einzelnen Eintrag über seine Id.
delete this etemplate etemplate de dieses eTemplate löschen delete all selected etemplates, without further inquiry de löscht ALLE ausgewählten eTemplates OHNE weitere Rückfrage
delete whole column (can not be undone!!!) etemplate de ganze Zeile löschen (kann NICHT rückgängig gemacht werden) delete column de Spalte löschen
deletes the above spez. etemplate from the database, can not be undone etemplate de löscht das oben spezifiziert eTemplate aus der Datenbank, kann NICHT rückgängig gemacht werden delete index de Index löschen
deletes the etemplate spez. above etemplate de löscht das oben spezifizierte eTemplate delete this etemplate de dieses eTemplate löschen
deletes this column etemplate de Löscht diese Spalte delete whole column (can not be undone!!!) de ganze Zeile löschen (kann NICHT rückgängig gemacht werden)
deletes this index etemplate de Löscht diesen Index deletes the above spez. etemplate from the database, can not be undone de löscht das oben spezifiziert eTemplate aus der Datenbank, kann NICHT rückgängig gemacht werden
discard changes etemplate de verwirft Änderungen deletes the etemplate spez. above de löscht das oben spezifizierte eTemplate
displayed in front of input or input is inserted for a '%s' in the label (label of the submitbutton or image-filename) etemplate de wird vor dem Eingabefeld angezeigt oder das Feld wird für ein '%s' eingefügt (Beschriftung einer Schaltfläche oder Dateiname eine Grafik) deletes this column de Löscht diese Spalte
displayed in statusline of browser if input-field gets focus etemplate de wird in der Statuszeile des Browsers angezeit, wenn das Eingabefeld angesprochen wird deletes this index de Löscht diesen Index
do you want to save the changes you made in table %s? etemplate de Wollen Sie die Änderungen in der Tabelle '%s' speichern? discard changes de verwirft Änderungen
documentation etemplate de Dokumentation displayed in front of input or input is inserted for a '%s' in the label (label of the submitbutton or image-filename) de wird vor dem Eingabefeld angezeigt oder das Feld wird für ein '%s' eingefügt (Beschriftung einer Schaltfläche oder Dateiname eine Grafik)
drop a table - this can not be undone etemplate de Tabelle löschen (drop) - NICHT rückgänig zu machen displayed in statusline of browser if input-field gets focus de wird in der Statuszeile des Browsers angezeit, wenn das Eingabefeld angesprochen wird
drop table etemplate de Tabelle löschen do you want to save the changes you made in table %s? de Wollen Sie die Änderungen in der Tabelle '%s' speichern?
dump4setup etemplate de Dump4Setup documentation de Dokumentation
edit etemplate de Bearbeiten drop a table - this can not be undone de Tabelle löschen (drop) - NICHT rückgänig zu machen
edit the etemplate spez. above etemplate de das oben spezifizierte eTemplate bearbeiten drop table de Tabelle löschen
editable templates - db-tools etemplate de eTemplates - DB-Tools dump4setup de Dump4Setup
editable templates - delete template etemplate de eTemplates - Löschen edit de Bearbeiten
editable templates - editor etemplate de eTemplates - Bearbeiten edit the etemplate spez. above de das oben spezifizierte eTemplate bearbeiten
editable templates - search etemplate de eTemplates - Suchen editable templates - db-tools de eTemplates - DB-Tools
editable templates - show template etemplate de eTemplates - Anzeigen editable templates - delete template de eTemplates - Löschen
embeded css styles, eg. '.red { background: red; }' (note the '.' before the class-name) or '@import url(...)' (class names are global for the whole page!) etemplate de eingebette CSS Stile, zb. '.red { background: red; }' (man beachte den '.' vor der CSS class) or '@import url(...)' (Angaben gelten für die gesamte Seite!) editable templates - editor de eTemplates - Bearbeiten
enable javascript onchange submit etemplate de JavaScript absenden bei Änderung (onChange) aktivieren editable templates - search de eTemplates - Suchen
enter '' for an empty default, nothing mean no default etemplate de '' für einen leeren Vorgabewert eingeben, nichts bedeutet keine Vorgabe editable templates - show template de eTemplates - Anzeigen
enter a search pattern etemplate de Suchmuster eingeben embeded css styles, eg. '.red { background: red; }' (note the '.' before the class-name) or '@import url(...)' (class names are global for the whole page!) de eingebette CSS Stile, zb. '.red { background: red; }' (man beachte den '.' vor der CSS class) or '@import url(...)' (Angaben gelten für die gesamte Seite!)
enter filename to upload and attach, use [browse...] to search for it etemplate de Dateinamen zum Hochland oder Anhängen eingeben, [Browse ...] zum Suchen verwenden enable javascript onchange submit de JavaScript absenden bei Änderung (onChange) aktivieren
enter the new version number here (> old_version), empty for no update-file etemplate de Neue Versionsnummer eingeben (größer als alte), leer wenn keine Update-Datei erzeugt werden soll enter '' for an empty default, nothing mean no default de '' für einen leeren Vorgabewert eingeben, nichts bedeutet keine Vorgabe
enter the new version number here (has to be > old_version) etemplate de Neue Versionsnummer eingeben (muss größer als die alte sein) enter a search pattern de Suchmuster eingeben
entry saved etemplate de Eintrag gespeichert enter filename to upload and attach, use [browse...] to search for it de Dateinamen zum Hochland oder Anhängen eingeben, [Browse ...] zum Suchen verwenden
error: template not found !!! etemplate de Fehler: eTemplate nicht gefunden !!! enter the new version number here (> old_version), empty for no update-file de Neue Versionsnummer eingeben (größer als alte), leer wenn keine Update-Datei erzeugt werden soll
error: webserver is not allowed to write into '%1' !!! etemplate de Fehler: der Webserver hat keine Schreibberechtigung in '%1' !!! enter the new version number here (has to be > old_version) de Neue Versionsnummer eingeben (muss größer als die alte sein)
error: while saveing !!! etemplate de Fehler: beim Speichern !!! entry saved de Eintrag gespeichert
error: writeing !!! etemplate de Fehler: schreiben !!! error: template not found !!! de Fehler: eTemplate nicht gefunden !!!
error: writing file (no write-permission for the webserver) !!! etemplate de Fehler: Datei schreiben (keine Schreibberechtigung für den Webserver) !!! error: webserver is not allowed to write into '%1' !!! de Fehler: der Webserver hat keine Schreibberechtigung in '%1' !!!
etemplate common de eTemplate error: while saveing !!! de Fehler: beim Speichern !!!
etemplate '%1' imported, use save to put it in the database etemplate de eTemplate '%1' importiert, benutze Speichern um es in der Datenbank abzulegen error: writeing !!! de Fehler: schreiben !!!
etemplate '%1' written to '%2' etemplate de eTemplate '%1' wurde nach '%2' geschrieben error: writing file (no write-permission for the webserver) !!! de Fehler: Datei schreiben (keine Schreibberechtigung für den Webserver) !!!
etemplate editor etemplate de eTemplate Editor etemplate de eTemplate
etemplate referenz etemplate de eTemplate Handbuch etemplate '%1' imported, use save to put it in the database de eTemplate '%1' importiert, benutze Speichern um es in der Datenbank abzulegen
etemplate tutorial etemplate de eTemplate Einführung etemplate '%1' written to '%2' de eTemplate '%1' wurde nach '%2' geschrieben
exchange this row with the one above etemplate de diese Zeile mit der darüber austauschen etemplate editor de eTemplate Editor
exchange this two columns etemplate de diese beiden Spalten austauschen etemplate referenz de eTemplate Handbuch
export the loaded etemplate into a xml-file etemplate de das geladene eTemplate als XML Datei (.xet) exportieren etemplate tutorial de eTemplate Einführung
export xml etemplate de XML Export exchange this row with the one above de diese Zeile mit der darüber austauschen
extensions loaded: etemplate de Erweiterungen geladen: exchange this two columns de diese beiden Spalten austauschen
file etemplate de Datei export the loaded etemplate into a xml-file de das geladene eTemplate als XML Datei (.xet) exportieren
file contains more than one etemplate, last one is shown !!! etemplate de Datei enthält mehr als ein eTemplate, das letzte wird angezeigt !!! export xml de XML Export
file writen etemplate de Datei geschrieben extensions loaded: de Erweiterungen geladen:
fileupload etemplate de DateiUpload field must not be empty !!! etemplate de Das Feld darf nicht leer sein !!!
first etemplate de Zuerst file de Datei
floating point etemplate de Gleitkommawert file contains more than one etemplate, last one is shown !!! de Datei enthält mehr als ein eTemplate, das letzte wird angezeigt !!!
foreign key etemplate de Foreign Key file writen de Datei geschrieben
formatted text (html) etemplate de Formatierter Text (HTML) fileupload de DateiUpload
go to the first entry etemplate de gehe zum ersten Eintrag first de Zuerst
go to the last entry etemplate de gege zum letzten Eintrag floating point de Gleitkommawert
go to the next page of entries etemplate de gehe zur nächsten Seite foreign key de Foreign Key
go to the previous page of entries etemplate de gehe zur vorherigen Seite formatted text (html) de Formatierter Text (HTML)
hbox etemplate de HBox go to the first entry de gehe zum ersten Eintrag
height etemplate de Höhe go to the last entry de gege zum letzten Eintrag
height of row (in % or pixel), disable row: [! = not]<value>[=<check>] eg: '!@data' disable row if content of data is empty etemplate de Höhe der Zeile (in % oder Pixel), Zeile ausschalten: [! = nicht]<wert>=[<prüfung>]: eg. '!@data' schaltet Zeile aus, wenn Inhalt von data leer ist go to the next page of entries de gehe zur nächsten Seite
height of the table in % or pixels for the table-tag and (optional) div etemplate de Höhe der Tabelle in % oder Punkten go to the previous page of entries de gehe zur vorherigen Seite
height, disabled etemplate de Höhe, Deaktiviert hbox de HBox
help etemplate de Hilfe height de Höhe
horizontal rule etemplate de Waagrechte Linie height of row (in % or pixel), disable row: [! = not]<value>[=<check>] eg: '!@data' disable row if content of data is empty de Höhe der Zeile (in % oder Pixel), Zeile ausschalten: [! = nicht]<wert>=[<prüfung>]: eg. '!@data' schaltet Zeile aus, wenn Inhalt von data leer ist
hour etemplate de Stunde height of the table in % or pixels for the table-tag and (optional) div de Höhe der Tabelle in % oder Punkten
html etemplate de HTML height, disabled de Höhe, Deaktiviert
if field is disabled an empty table-cell is displayed, for (temporal) removement of a field/cell etemplate de wenn eine Feld deaktiviert ist, wird eine leere Tabellenzelle angezeigt, zum (zeitweisen) Entfernen eines Feldes help de Hilfe
image etemplate de Grafik horizontal rule de Waagrechte Linie
import etemplate de Import hour de Stunde
import an etemplate from a xml-file etemplate de Importiert ein eTemplate aus einer XML Datei html de HTML
import table-definitions from existing db-table etemplate de Importiert die Tabellen-Definition aus einer bestehenden Datenbank-Tabelle if field is disabled an empty table-cell is displayed, for (temporal) removement of a field/cell de wenn eine Feld deaktiviert ist, wird eine leere Tabellenzelle angezeigt, zum (zeitweisen) Entfernen eines Feldes
import xml etemplate de XML Import image de Grafik
index/name of returned content (name of the template, link / method for image) etemplate de Index / Name des zurückgelieferten Inhalts (Name des eTemplates oder Link/Methode für Grafik) import de Import
indexed etemplate de Indiziert import an etemplate from a xml-file de Importiert ein eTemplate aus einer XML Datei
indexoptions etemplate de Indexoptionen import table-definitions from existing db-table de Importiert die Tabellen-Definition aus einer bestehenden Datenbank-Tabelle
insert new column behind this one etemplate de Neue Spalte hinter dieser einfügen import xml de XML Import
insert new column in front of all etemplate de Neue Spalte vor dieser einfüben index/name of returned content (name of the template, link / method for image) de Index / Name des zurückgelieferten Inhalts (Name des eTemplates oder Link/Methode für Grafik)
insert new row after this one etemplate de Neue Zeile nach dieser einfügen indexed de Indiziert
insert new row in front of first line etemplate de Neue Zeile vor dieser einfügen indexoptions de Indexoptionen
integer etemplate de Ganzzahl insert new column behind this one de Neue Spalte hinter dieser einfügen
key etemplate de Schlüssel insert new column in front of all de Neue Spalte vor dieser einfüben
label etemplate de Beschriftung insert new row after this one de Neue Zeile nach dieser einfügen
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'] etemplate de Beschriftung:[bold][italic] Text:[len][,max] Zahlen:[min][,[max][,len]] mehrz.Text:[Zeilen][,Spalten] Radiok.:Wert Templ.:[IndexInContent] Auswahl:[mehrzeilig] Datum:[Format: zB. 'Y-m-d'] insert new row in front of first line de Neue Zeile vor dieser einfügen
lang etemplate de Sprache integer de Ganzzahl
language-short (eg. 'en' for english) for language-dependent template ('' reads your pref. languages or the default, us 'default' to read the default template '') etemplate de Kürzel der Sprache (zb. 'en' für Englisch) für sprachabhänige Template ('' ließt die bevorzugte Sprache, benutze 'default' für das standard Template '') key de Schlüssel
last etemplate de Letzte label de Beschriftung
left etemplate de Links 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'] de Beschriftung:[bold][italic] Text:[len][,max] Zahlen:[min][,[max][,len]] mehrz.Text:[Zeilen][,Spalten] Radiok.:Wert Templ.:[IndexInContent] Auswahl:[mehrzeilig] Datum:[Format: zB. 'Y-m-d']
length for char+varchar, precisions int: 2, 4, 8 and float: 4, 8 etemplate de Länge für char+varchar, Genauigkeit für int: 2, 4, 8 und float: 4, 8 lang de Sprache
link etemplate de Verknüpfung language-short (eg. 'en' for english) for language-dependent template ('' reads your pref. languages or the default, us 'default' to read the default template '') de Kürzel der Sprache (zb. 'en' für Englisch) für sprachabhänige Template ('' ließt die bevorzugte Sprache, benutze 'default' für das standard Template '')
linklist etemplate de VerknüpfungListe last de Letzte
linkstring etemplate de VerküpfungZeichenkette left de Links
linkto etemplate de VerküpfungZu length for char+varchar, precisions int: 2, 4, 8 and float: 4, 8 de Länge für char+varchar, Genauigkeit für int: 2, 4, 8 und float: 4, 8
load this template into the editor etemplate de lädt diese Template zum Bearbeiten link de Verknüpfung
minute etemplate de Minute linklist de VerknüpfungListe
month etemplate de Monat linkstring de VerküpfungZeichenkette
multicolumn indices etemplate de Mehrspaltige Indices linkto de VerküpfungZu
name etemplate de Name load this template into the editor de lädt diese Template zum Bearbeiten
name of other table where column is a key from etemplate de Name der anderen Tabelle von der diese Spalte ein Schlüssel ist minute de Minute
name of phpgw-template set (e.g. verdilak): '' = default (will read pref. template, us 'default' to read default template '') etemplate de Name des phpGW layouts (zb. verdilak): '' = Standard (ließt das bevorzugte Layout, benutze 'default' um das standard Layout '' zu lesen) month de Monat
name of table to add etemplate de Name der zuzufügenden Tabelle multicolumn indices de Mehrspaltige Indices
name of the etemplate, should be in form application.function[.subtemplate] etemplate de Name des eTemplate, in der Form anwendung.funktion[.subTemplate] name de Name
need to be unique in the table and no reseved word from sql, best prefix all with a common 2-digit short for the app, eg. 'et_' etemplate de muss für die Tabelle einmalig sein und darf ein reserviertes Wort von SQL sein, am besten alle mit einem gemeinsammen Kürzel der Anwendung beginnen: zb. 'et_' name of other table where column is a key from de Name der anderen Tabelle von der diese Spalte ein Schlüssel ist
new search etemplate de Neue Suche name of phpgw-template set (e.g. verdilak): '' = default (will read pref. template, us 'default' to read default template '') de Name des phpGW layouts (zb. verdilak): '' = Standard (ließt das bevorzugte Layout, benutze 'default' um das standard Layout '' zu lesen)
new table created etemplate de Neue Tabelle erzeugt name of table to add de Name der zuzufügenden Tabelle
newer version '%1' exists !!! etemplate de Neuere Version '%1' existiert !!! name of the etemplate, should be in form application.function[.subtemplate] de Name des eTemplate, in der Form anwendung.funktion[.subTemplate]
nextmatch etemplate de Nextmatch need to be unique in the table and no reseved word from sql, best prefix all with a common 2-digit short for the app, eg. 'et_' de muss für die Tabelle einmalig sein und darf ein reserviertes Wort von SQL sein, am besten alle mit einem gemeinsammen Kürzel der Anwendung beginnen: zb. 'et_'
nextmatch filterheader etemplate de Nextmatch Filterkopf new search de Neue Suche
nextmatch sortheader etemplate de Nextmatch Sortierkopf new table created de Neue Tabelle erzeugt
no file etemplate de keine Datei newer version '%1' exists !!! de Neuere Version '%1' existiert !!!
no filename given or selected via browse... etemplate de kein Dateiname angegeben oder mit [Browse...] ausgewählt nextmatch de Nextmatch
not null etemplate de NOT NULL nextmatch filterheader de Nextmatch Filterkopf
nothing found - try again !!! etemplate de Nichts gefunden - nochmal versuchen !!! nextmatch sortheader de Nextmatch Sortierkopf
nothing matched search criteria !!! etemplate de Nicht gefunden bei diesem Suchkriterium !!! no file de keine Datei
number of colums the field/cell should span or 'all' for the remaining columns, css-class name (for the td tag) etemplate de Anzahl der Spalten die ein Feld überspannt oder 'all' für die übrigen Spalten, CSS class Name (für das TD-tag) no filename given or selected via browse... de kein Dateiname angegeben oder mit [Browse...] ausgewählt
number of rows/cols in a v/hbox, cellpadding, cellspacing etemplate de Anzahl Zeilen/Spalten der V/HBox, Innenabstand (Cellpadding), Zellenabstand (Cellspacing) not null de NOT NULL
of etemplate de von nothing found - try again !!! de Nichts gefunden - nochmal versuchen !!!
only an other version found !!! etemplate de nur eine andere Version gefunden !!! nothing matched search criteria !!! de Nicht gefunden bei diesem Suchkriterium !!!
optional note about the link etemplate de optionale Notiz zur Verknüpfung number of colums the field/cell should span or 'all' for the remaining columns, css-class name (for the td tag) de Anzahl der Spalten die ein Feld überspannt oder 'all' für die übrigen Spalten, CSS class Name (für das TD-tag)
options etemplate de Optionen number of rows/cols in a v/hbox, cellpadding, cellspacing de Anzahl Zeilen/Spalten der V/HBox, Innenabstand (Cellpadding), Zellenabstand (Cellspacing)
overflow etemplate de Überbreite of de von
padding etemplate de Innenabstand only an other version found !!! de nur eine andere Version gefunden !!!
please enter table-name first !!! etemplate de Bitte geben Sie zuerst einen Tabellennamen an !!! optional note about the link de optionale Notiz zur Verknüpfung
pm etemplate de Nachmittag options de Optionen
precision etemplate de Genauigkeit overflow de Überbreite
primary key etemplate de Primary Key padding de Innenabstand
primary key for the table, gets automaticaly indexed etemplate de Hauptindex (Primary Key) der Tabelle, wird automatisch indiziert please enter table-name first !!! de Bitte geben Sie zuerst einen Tabellennamen an !!!
radiobutton etemplate de Radioknopf pm de Nachmittag
read etemplate de Lesen precision de Genauigkeit
read a list of entries. etemplate de Liest eine Liste von Einträgen. primary key de Primary Key
read a single entry by passing the id and fieldlist. etemplate de Liste einen einzelnen Eintrag durch übergabe seiner Id und Feldliste. primary key for the table, gets automaticaly indexed de Hauptindex (Primary Key) der Tabelle, wird automatisch indiziert
read etemplate from database (for the keys above) etemplate de ließt ein eTemplate aus der Datenbank (für die Schlüssel darüber) radiobutton de Radioknopf
remove row (can not be undone!!!) etemplate de löscht eine Zeile (NICHT rückgängig zu machen) read de Lesen
remove this link (not the entry itself) etemplate de entfernt diese Verknüpfung (nicht den Eintrag selbst) read a list of entries. de Liest eine Liste von Einträgen.
returns savely, without deleting etemplate de Abbruch, OHNE zu löschen read a single entry by passing the id and fieldlist. de Liste einen einzelnen Eintrag durch übergabe seiner Id und Feldliste.
right etemplate de Rechts read etemplate from database (for the keys above) de ließt ein eTemplate aus der Datenbank (für die Schlüssel darüber)
save etemplate de Speichern remove row (can not be undone!!!) de löscht eine Zeile (NICHT rückgängig zu machen)
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 remove this link (not the entry itself) de entfernt diese Verknüpfung (nicht den Eintrag selbst)
saves changes to tables_current.inc.php etemplate de Speichert Änderungen in tables_current.inc.php returns savely, without deleting de Abbruch, OHNE zu löschen
scale etemplate de Scale right de Rechts
scale for float etemplate de Nachkommastellen für Gleitkommawerte save de Speichern
search etemplate de Suchen save the etemplate under the above keys (name, ...), change them for a saveas de Speichert das eTemplate unter den obigen Schlüsseln (name, ...), ändern für ein Speichern unter
select a category etemplate de eine Kategorie auswählen saves changes to tables_current.inc.php de Speichert Änderungen in tables_current.inc.php
select a primary contact, to show in the list etemplate de einen Hauptkontakt auswählen, der in der Auflistung mit angezeigt wird scale de Scale
select access etemplate de Zugriff auswählen scale for float de Nachkommastellen für Gleitkommawerte
select account etemplate de Benutzer auswählen search de Suchen
select an app first !!! etemplate de Bitte wählen Sie zuerst ein Anwendung aus !!! select a category de eine Kategorie auswählen
select an app to search in etemplate de Anwendung zum Durchsuchen auswählen select a primary contact, to show in the list de einen Hauptkontakt auswählen, der in der Auflistung mit angezeigt wird
select an application etemplate de Anwendung auswählen select access de Zugriff auswählen
select an application, (*) = uninstalled etemplate de Anwendung auswählen, (*) = nicht installiert select account de Benutzer auswählen
select an entry to link with etemplate de Eintrag zum Verküpfen auswählen select an app first !!! de Bitte wählen Sie zuerst ein Anwendung aus !!!
select an table of the application etemplate de Tabelle der Anwendung auswählen select an app to search in de Anwendung zum Durchsuchen auswählen
select application etemplate de Anwendung auswählen select an application de Anwendung auswählen
select category etemplate de Kategorie auswählen select an application, (*) = uninstalled de Anwendung auswählen, (*) = nicht installiert
select country etemplate de Land auswählen select an entry to link with de Eintrag zum Verküpfen auswählen
select day etemplate de Tag auswählen select an table of the application de Tabelle der Anwendung auswählen
select if content of field should not be translated (label gets always translated) etemplate de abhaken wenn Inhalt des Feldes nicht übersetzt werden soll (Beschriftung wird immer übersetzt) select application de Anwendung auswählen
select month etemplate de Monat auswählen select category de Kategorie auswählen
select number etemplate de Zahl auswählen select country de Land auswählen
select one ... etemplate de Eine auswählen ... select day de Tag auswählen
select percentage etemplate de Prozente auswählen select if content of field should not be translated (label gets always translated) de abhaken wenn Inhalt des Feldes nicht übersetzt werden soll (Beschriftung wird immer übersetzt)
select priority etemplate de Priorität auswählen select month de Monat auswählen
select state etemplate de US-State auswählen select number de Zahl auswählen
select the indexed columns in their desired order etemplate de Zu indizierende Spalten in der gewünchten Reihenfolge auswählen select one ... de Eine auswählen ...
select this etemplate to delete it etemplate de dieses eTemplate zum Löschen auswählen select percentage de Prozente auswählen
select which values to show etemplate de auswählen welche Werte angezeigt werden select priority de Priorität auswählen
select year etemplate de Jahr auswählen select state de US-State auswählen
selectbox etemplate de Auswahlbox select the indexed columns in their desired order de Zu indizierende Spalten in der gewünchten Reihenfolge auswählen
sets today as date etemplate de setzt heutiges Datum select this etemplate to delete it de dieses eTemplate zum Löschen auswählen
show etemplate de Anzeigen select which values to show de auswählen welche Werte angezeigt werden
show (no save) etemplate de Anzeigen (nicht speichern) select year de Jahr auswählen
show values etemplate de Werte anzeigen selectbox de Auswahlbox
showing etemplate de zeigt sets today as date de setzt heutiges Datum
shows / allows you to enter values into the etemplate for testing etemplate de zeigt den Inhalt / Werte an und erlaubt welche zum Testen des eTemplates einzugeben show de Anzeigen
shows/displays etemplate for testing, does not save it before etemplate de zeigt eTemplate zum Testen an, speichert es NICHT davor show (no save) de Anzeigen (nicht speichern)
spacing etemplate de Zellenabstand show values de Werte anzeigen
span, class etemplate de Span, Class showing de zeigt
stack etemplate de Stapel shows / allows you to enter values into the etemplate for testing de zeigt den Inhalt / Werte an und erlaubt welche zum Testen des eTemplates einzugeben
start a new search, cancel this link etemplate de neue Suche Starten, diese Verknüpfung abbrechen shows/displays etemplate for testing, does not save it before de zeigt eTemplate zum Testen an, speichert es NICHT davor
start new search for the above pattern etemplate de neue Suche für das obige Muster starten spacing de Zellenabstand
submitbutton etemplate de Schaltfläche span, class de Span, Class
table unchanged, no write necessary !!! etemplate de Tabelle nicht geändert, kein schreiben notwendig !!! stack de Stapel
tablename etemplate de Tabellenname start a new search, cancel this link de neue Suche Starten, diese Verknüpfung abbrechen
tabs etemplate de Karteikarten start new search for the above pattern de neue Suche für das obige Muster starten
template etemplate de Template submitbutton de Schaltfläche
template deleted etemplate de Template gelöscht table unchanged, no write necessary !!! de Tabelle nicht geändert, kein schreiben notwendig !!!
template saved etemplate de Template gespeichert tablename de Tabellenname
text etemplate de Textfeld tabs de Karteikarten
textarea etemplate de mehrzeiliges Textfeld template de Template
this text gets displayed if the input-field is empty and has no focus (blur) etemplate de dieser Text wird im Eingabefeld angezeigt, wenn es leer ist und nicht im Fokus ist (engl. blur) template deleted de Template gelöscht
time etemplate de Uhrzeit template saved de Template gespeichert
to start the db-tools etemplate de startet die DB-Tools text de Textfeld
to start the etemplate editor etemplate de startet den eTemplate Editor textarea de mehrzeiliges Textfeld
to start the search etemplate de startet die Suche this text gets displayed if the input-field is empty and has no focus (blur) de dieser Text wird im Eingabefeld angezeigt, wenn es leer ist und nicht im Fokus ist (engl. blur)
today etemplate de Heute time de Uhrzeit
type etemplate de Typ to start the db-tools de startet die DB-Tools
type of the column etemplate de Typ der Spalte to start the etemplate editor de startet den eTemplate Editor
type of the field (select label if field should be empty) etemplate de Type des Feldes (Beschriftung auswählen wenn Feld leer sein soll) to start the search de startet die Suche
unique etemplate de Unique today de Heute
unlink etemplate de Lösen type de Typ
update a single entry by passing the fields. etemplate de Aktualisert einen einzelnen Eintrag über seine Felder. type of the column de Typ der Spalte
update from version '%s' to etemplate de Update von Version '%s' auf type of the field (select label if field should be empty) de Type des Feldes (Beschriftung auswählen wenn Feld leer sein soll)
upload etemplate de Hochladen unique de Unique
value etemplate de Wert unlink de Lösen
vbox etemplate de VBox update a single entry by passing the fields. de Aktualisert einen einzelnen Eintrag über seine Felder.
version etemplate de Version update from version '%s' to de Update von Version '%s' auf
version-number, should be in the form: major.minor.revision.number (eg. 0.9.13.001 all numbers filled up with zeros) etemplate de Versionsnummer, in der Form major.minor.revision.number (zB. 0.9.15.001 alle Zahlen mit Nullen aufgefüllt) upload de Hochladen
view this linked entry in its application etemplate de Zeige diesen Eintrag in seiner Anwendung an value de Wert
what happens with overflowing content: visible (default), hidden, scroll, auto (browser decides) etemplate de was passiert mit überbreitem Inhalt: sichtbar (standard), versteckt, rollend, automatich (der Browser entscheidet) value has to be at least '%1' !!! etemplate de Der Wert muss mindestens '%1' betragen !!!
width etemplate de Breite value has to be at maximum '%1' !!! etemplate de Der Wert darf höchstens '%1' betragen !!!
width of col (in % or pixel), disable col: [! = not]<value>[=<check>] eg: '!@data' disable col if content of data is empty etemplate de Breite der Spalte (in % oder Punkten), deaktiviert Spalten: [! = nicht]<wert>[=<test>] zB.: '!@data' deaktiviert Spalte wenn data leer ist vbox de VBox
width of the table in % or pixels for the table-tag and (optional) div etemplate de Breite der Tabelle in % oder Punkten version de Version
width, disabled etemplate de Breite, Deaktiviert version-number, should be in the form: major.minor.revision.number (eg. 0.9.13.001 all numbers filled up with zeros) de Versionsnummer, in der Form major.minor.revision.number (zB. 0.9.15.001 alle Zahlen mit Nullen aufgefüllt)
write <app>/setup/tables_current.inc.php etemplate de schreibt <app>/setup/tables_current.inc.php view this linked entry in its application de Zeige diesen Eintrag in seiner Anwendung an
write langfile etemplate de Sprachdatei what happens with overflowing content: visible (default), hidden, scroll, auto (browser decides) de was passiert mit überbreitem Inhalt: sichtbar (standard), versteckt, rollend, automatich (der Browser entscheidet)
write tables etemplate de Tabelle Schreiben width de Breite
writes a 'etemplates.inc.php' file (for application in name) in the setup-dir of the app etemplate de schreibt ein Distributionsfile 'etemplates.inc.php' (für die Anwendung in Name) in das setup Verzeichnis der Anwendung width of col (in % or pixel), disable col: [! = not]<value>[=<check>] eg: '!@data' disable col if content of data is empty de Breite der Spalte (in % oder Punkten), deaktiviert Spalten: [! = nicht]<wert>[=<test>] zB.: '!@data' deaktiviert Spalte wenn data leer ist
xml-file to import etemplate de XML Datei zum Importieren width of the table in % or pixels for the table-tag and (optional) div de Breite der Tabelle in % oder Punkten
xslt template etemplate de XSLT Template width, disabled de Breite, Deaktiviert
year etemplate de Jahr write <app>/setup/tables_current.inc.php de schreibt <app>/setup/tables_current.inc.php
write langfile de Sprachdatei
write tables de Tabelle Schreiben
writes a 'etemplates.inc.php' file (for application in name) in the setup-dir of the app de schreibt ein Distributionsfile 'etemplates.inc.php' (für die Anwendung in Name) in das setup Verzeichnis der Anwendung
xml-file to import de XML Datei zum Importieren
xslt template de XSLT Template
year de Jahr

View File

@ -9,6 +9,9 @@
%s notranslation en %s NoTranslation %s notranslation en %s NoTranslation
%s onchange en %s onChange %s onchange en %s onChange
%s readonly en %s readonly %s readonly en %s readonly
'%1' has an invalid format !!! etemplate en '%1' has an invalid format !!!
'%1' is not a valid floatingpoint number !!! etemplate en '%1' is not a valid floatingpoint number !!!
'%1' is not a valid integer !!! etemplate en '%1' is not a valid integer !!!
a pattern to be searched for en a pattern to be searched for a pattern to be searched for en a pattern to be searched for
add a new column (after the existing ones) en Add a new column (after the existing ones) add a new column (after the existing ones) en Add a new column (after the existing ones)
add a new multi-column index en Add a new multi-column index add a new multi-column index en Add a new multi-column index
@ -109,6 +112,7 @@ exchange this two columns en exchange this two columns
export the loaded etemplate into a xml-file en export the loaded eTemplate into a xml-file export the loaded etemplate into a xml-file en export the loaded eTemplate into a xml-file
export xml en Export XML export xml en Export XML
extensions loaded: en Extensions loaded: extensions loaded: en Extensions loaded:
field must not be empty !!! etemplate en Field must not be empty !!!
file en File file en File
file contains more than one etemplate, last one is shown !!! en File contains more than one eTemplate, last one is shown !!! file contains more than one etemplate, last one is shown !!! en File contains more than one eTemplate, last one is shown !!!
file writen en File writen file writen en File writen
@ -267,6 +271,8 @@ update a single entry by passing the fields. en Update a single entry by passin
update from version '%s' to en Update from Version '%s' to update from version '%s' to en Update from Version '%s' to
upload en Upload upload en Upload
value en Value value en Value
value has to be at least '%1' !!! etemplate en Value has to be at least '%1' !!!
value has to be at maximum '%1' !!! etemplate en Value has to be at maximum '%1' !!!
vbox en VBox vbox en VBox
version en Version version en Version
version-number, should be in the form: major.minor.revision.number (eg. 0.9.13.001 all numbers filled up with zeros) en version-number, should be in the form: major.minor.revision.number (eg. 0.9.13.001 all numbers filled up with zeros) version-number, should be in the form: major.minor.revision.number (eg. 0.9.13.001 all numbers filled up with zeros) en version-number, should be in the form: major.minor.revision.number (eg. 0.9.13.001 all numbers filled up with zeros)

View File

@ -0,0 +1,26 @@
<?xml version="1.0"?>
<!-- $Id$ -->
<overlay>
<grid id="etemplate.validation-test" template="" lang="" group="" version="" border="0" spacing="0" padding="0">
<columns>
<column/>
</columns>
<rows>
<row>
<textbox size="10" maxlength="10" validator="/^[A-Z]+/" label="Text (&lt;= 10 chars, has to start with capital letter)" id="text"/>
</row>
<row>
<int options="-15,5" label="Integer (-15 &lt;= x &lt;= 5)" id="integer" needed="1"/>
</row>
<row>
<textbox type="float" min="-1.5" max="3.5" label="Floatingpoint (-1.5 &lt;= x &lt;= 3.5)" id="float"/>
</row>
<row>
<hbox>
<button label="Save" id="save"/>
<button label="Cancel" id="cancel"/>
</hbox>
</row>
</rows>
</grid>
</overlay>