libretime/htmlUI/localizer/form_function.php

143 lines
5.7 KiB
PHP

<?php
/**
* Add elements/rules/groups to an given HTML_QuickForm object
*
* @param HTML_Quickform $form
* @param array $mask
* array defining form elements
* @param string $sid
* side where the validation should happen ('client', 'server')
*/
function parseArr2Form(&$form, $mask, $side='client')
{
foreach($mask as $k=>$v) {
## add elements ########################
if ($v['type'] == 'radio') {
foreach ($v['options'] as $rk => $rv) {
$radio[] =& $form->createElement($v['type'], NULL, NULL, $rv, $rk, $v['attributes']);
}
$form->addGroup($radio, $v['element'], tra($v['label']));
unset($radio);
} elseif ($v['type'] == 'select') {
$elem[$v['element']] =& $form->createElement($v['type'], $v['element'], tra($v['label']), $v['options'], $v['attributes']);
$elem[$v['element']]->setMultiple($v['multiple']);
if (isset($v['selected'])) {
$elem[$v['element']]->setSelected($v['selected']);
}
if (!$v['groupit']) {
$form->addElement($elem[$v['element']]);
}
} elseif ($v['type'] == 'date') {
$elem[$v['element']] =& $form->createElement($v['type'], $v['element'], tra($v['label']), $v['options'], $v['attributes']);
if (!$v['groupit']) {
$form->addElement($elem[$v['element']]);
}
} elseif (($v['type'] == 'checkbox') || ($v['type'] == 'static')) {
$elem[$v['element']] =& $form->createElement($v['type'], $v['element'], tra($v['label']), $v['text'], $v['attributes']);
if (!$v['groupit']) {
$form->addElement($elem[$v['element']]);
}
} elseif (isset($v['type'])) {
$elem[$v['element']] =& $form->createElement($v['type'], $v['element'], tra($v['label']),
($v[type]=='text' || $v['type']=='file' || $v['type']=='password') ? array_merge(array('size'=>UI_INPUT_STANDARD_SIZE, 'maxlength'=>UI_INPUT_STANDARD_MAXLENGTH), $v['attributes']) :
($v['type']=='textarea' ? array_merge(array('rows'=>UI_TEXTAREA_STANDART_ROWS, 'cols'=>UI_TEXTAREA_STANDART_COLS), $v['attributes']) :
($v['type']=='button' || $v['type']=='submit' || $v['type']=='reset' ? array_merge(array('class'=>UI_BUTTON_STYLE), $v['attributes']) : $v['attributes']))
);
if (!$v['groupit']) {
$form->addElement($elem[$v['element']]);
}
}
// add required rule ###################
if ($v['required']) {
$form->addRule($v['element'], isset($v['requiredmsg']) ? tra($v['requiredmsg']) : tra('Missing value for $1', tra($v['label'])), 'required', NULL, $side);
}
// add constant value ##################
if (isset($v['constant'])) {
$form->setConstants(array($v['element']=>$v['constant']));
}
// add default value ###################
if (isset($v['default'])) {
$form->setDefaults(array($v['element']=>$v['default']));
}
// add other rules #####################
if ($v['rule']) {
$form->addRule($v['element'], isset($v['rulemsg']) ? tra($v['rulemsg']) : tra('$1 must be $2', tra($v['element']), tra($v['rule'])), $v['rule'] ,$v['format'], $side);
}
// add group ###########################
if (is_array($v['group'])) {
foreach($v['group'] as $val) {
$groupthose[] =& $elem[$val];
}
$form->addGroup($groupthose, $v['name'], tra($v['label']), $v['seperator'], $v['appendName']);
if ($v['rule']) {
$form->addRule($v['name'], isset($v['rulemsg']) ? tra($v['rulemsg']) : tra('$1 must be $2', tra($v['name'])), $v['rule'], $v['format'], $side);
}
if ($v['grouprule']) {
$form->addGroupRule($v['name'], $v['arg1'], $v['grouprule'], $v['format'], $v['howmany'], $side, $v['reset']);
}
unset($groupthose);
}
## check error on type file ##########
if ($v['type']=='file') {
if ($_POST[$v['element']]['error']) {
$form->setElementError($v['element'], isset($v['requiredmsg']) ? tra($v['requiredmsg']) : tra('Missing value for $1', tra($v['label'])));
}
}
}
$form->validate();
}
function addLanguageFormArr()
{
return array(
array(
'element' => 'action',
'type' => 'hidden',
'constant' => 'do_add_language'
),
array(
'element' => 'Id',
'type' => 'text',
'label' => 'Id',
'required' => TRUE
),
array(
'element' => 'Name',
'type' => 'text',
'label' => 'English name',
'required' => TRUE
),
array(
'element' => 'NativeName',
'type' => 'text',
'label' => 'Native Name',
'required' => TRUE
),
array(
'element' => 'Submit',
'type' => 'submit',
'label' => 'Submit',
'groupit' => TRUE
),
array(
'element' => 'Cancel',
'type' => 'button',
'label' => 'Cancel',
'attributes' => array('onClick' => 'location.href="?action=list_languages"'),
'groupit' => TRUE
),
array(
'group' => array('Cancel', 'Submit')
)
);
}
function tra($str)
{
return $str;
}
?>