1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-01 20:30:39 +02:00

newly added writeParms 'required' and 'pattern' breaking list - quick

fix, requires better approach
This commit is contained in:
SecretR
2013-01-16 12:48:16 +02:00
parent 1d6905ea5d
commit a157c0f3f9

View File

@@ -2267,7 +2267,7 @@ class e_form
if(is_string($parms)) parse_str($parms, $parms);
// Two modes of read-only. 1 = read-only, but only when there is a value, 2 = read-only regardless.
if(vartrue($attributes['readonly']) && (vartrue($value) || vartrue($attributes['readonly'])==2)) // quick fix (maybe 'noedit'=>'readonly'?)
if(vartrue($attributes['readonly']) && (vartrue($value) || vartrue($attributes['readonly'])===2)) // quick fix (maybe 'noedit'=>'readonly'?)
{
if(vartrue($attributes['writeParms'])) // eg. different size thumbnail on the edit page.
{
@@ -2275,15 +2275,37 @@ class e_form
}
return $this->renderValue($key, $value, $attributes).$this->hidden($key, $value); //
}
// FIXME standard - writeParams['__options'] is introduced for list elements, bundle adding to writeParms is non reliable way
$writeParamsOptionable = array('dropdown', 'comma', 'radio', 'lanlist', 'language', 'user');
$writeParamsDisabled = array('layouts', 'templates', 'userclass', 'userclasses');
// FIXME it breaks all list like elements - dropdowns, radio, etc
if(vartrue($required_data[0]) || vartrue($attributes['required'])) // HTML5 'required' attribute
{
$parms['required'] = 1;
// FIXME - another approach, raise standards, remove checks
if(in_array($attributes['type'], $writeParamsOptionable))
{
$parms['__options']['required'] = 1;
}
elseif(!in_array($attributes['type'], $writeParamsDisabled))
{
$parms['required'] = 1;
}
}
// FIXME it breaks all list like elements - dropdowns, radio, etc
if(vartrue($required_data[3]) || vartrue($attributes['pattern'])) // HTML5 'pattern' attribute
{
$parms['pattern'] = vartrue($attributes['pattern'], $required_data[3]) ;
// FIXME - another approach, raise standards, remove checks
if(in_array($attributes['type'], $writeParamsOptionable))
{
$parms['__options']['pattern'] = vartrue($attributes['pattern'], $required_data[3]);
}
elseif(!in_array($attributes['type'], $writeParamsDisabled))
{
$parms['pattern'] = vartrue($attributes['pattern'], $required_data[3]);
}
}
switch($attributes['type'])
@@ -2431,9 +2453,9 @@ class e_form
case 'radio':
// TODO - more options (multi-line, help)
/*$eloptions = vartrue($parms['__options'], array());
$eloptions = vartrue($parms['__options'], array());
if(is_string($eloptions)) parse_str($eloptions, $eloptions);
unset($parms['__options']);*/
unset($parms['__options']);
$ret = vartrue($eloptions['pre']).$this->radio_multi($key, $parms, $value, false).vartrue($eloptions['post']);
break;