1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-05-06 15:45:34 +02:00

[ticket/12642] Ensure CPF type specific options are set when editing booleans.

prepare_hidden_fields is expected to return null if the option is not sent
in the request. The boolean method returns false instead, which results in
the options being set as false in hidden fields when accessing the first edit
step.

When checking the "Default value" option, there is also a failure to check
whether the "Field type" option is set to checkbox, thus resulting in this
option getting lost as well.

PHPBB3-12642
This commit is contained in:
Cesar G 2014-11-11 16:48:25 -08:00
parent 101945acf9
commit d43f196fa6

View File

@ -367,29 +367,29 @@ class type_bool extends type_base
*/ */
public function prepare_hidden_fields($step, $key, $action, &$field_data) public function prepare_hidden_fields($step, $key, $action, &$field_data)
{ {
if ($key == 'l_lang_options' && $this->request->is_set('l_lang_options')) if ($key == 'field_default_value')
{ {
return $this->request->variable($key, array(array('')), true); $field_length = $this->request->variable('field_length', 0);
}
else if ($key == 'field_default_value') // Do a simple is set check if using checkbox.
if ($field_length == 2)
{ {
return $this->request->variable($key, $field_data[$key]); return $this->request->is_set($key);
} }
else return $this->request->variable($key, $field_data[$key], true);
}
$default_lang_options = array(
'l_lang_options' => array(0 => array('')),
'lang_options' => array(0 => ''),
);
if (isset($default_lang_options[$key]) && $this->request->is_set($key))
{ {
if (!$this->request->is_set($key)) return $this->request->variable($key, $default_lang_options[$key], true);
{
return false;
}
else if ($key == 'field_ident' && isset($field_data[$key]))
{
return $field_data[$key];
}
else
{
return ($key == 'lang_options') ? $this->request->variable($key, array(''), true) : $this->request->variable($key, '', true);
}
} }
return parent::prepare_hidden_fields($step, $key, $action, $field_data);
} }
/** /**