1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-08-11 03:04:09 +02:00

[ticket/11201] Move preparation of hidden fields to type class

PHPBB3-11201
This commit is contained in:
Joas Schilling
2014-01-17 14:41:01 +01:00
parent 67f477fc8f
commit af5c747f6f
6 changed files with 106 additions and 43 deletions

View File

@@ -75,4 +75,24 @@ abstract class type_base implements type_interface
return $current_value;
}
/**
* {@inheritDoc}
*/
public function prepare_hidden_fields($step, $key, $action, &$field_data)
{
if (!$this->request->is_set($key))
{
// Do not set this variable, we will use the default value
return null;
}
else if ($key == 'field_ident' && isset($field_data[$key]))
{
return $field_data[$key];
}
else
{
return $this->request->variable($key, '', true);
}
}
}

View File

@@ -296,4 +296,34 @@ class type_bool extends type_base
return parent::get_excluded_options($key, $action, $current_value, $field_data, $step);
}
/**
* {@inheritDoc}
*/
public function prepare_hidden_fields($step, $key, $action, &$field_data)
{
if ($key == 'l_lang_options' && $this->request->is_set('l_lang_options'))
{
return $this->request->variable($key, array(array('')), true);
}
else if ($key == 'field_default_value')
{
return $this->request->variable($key, $field_data[$key]);
}
else
{
if (!$this->request->is_set($key))
{
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);
}
}
}
}

View File

@@ -300,4 +300,29 @@ class type_date extends type_base
return parent::get_excluded_options($key, $action, $current_value, $field_data, $step);
}
/**
* {@inheritDoc}
*/
public function prepare_hidden_fields($step, $key, $action, &$field_data)
{
if ($key == 'field_default_value')
{
$always_now = $this->request->variable('always_now', 0);
if ($always_now)
{
return 'now';
}
else if ($this->request->is_set'field_default_value_day'))
{
$field_data['field_default_value_day'] = $this->request->variable('field_default_value_day', 0);
$field_data['field_default_value_month'] = $this->request->variable('field_default_value_month', 0);
$field_data['field_default_value_year'] = $this->request->variable('field_default_value_year', 0);
return sprintf('%2d-%2d-%4d', $field_data['field_default_value_day'], $field_data['field_default_value_month'], $field_data['field_default_value_year']);
}
}
return parent::prepare_hidden_fields($step, $key, $action, $field_data);
}
}

View File

@@ -143,4 +143,15 @@ interface type_interface
* @return mixed Final value of the option
*/
public function get_excluded_options($key, $action, $current_value, &$field_data, $step);
/**
* Allows manipulating the intended variables if needed
*
* @param string $key Name of the option
* @param int $step Step on which the option is hidden
* @param string $action Currently performed action (create|edit)
* @param array $field_data Array with data for this field
* @return mixed Final value of the option
*/
public function prepare_hidden_fields($step, $key, $action, &$field_data);
}

View File

@@ -140,4 +140,19 @@ class type_text extends type_string_common
return parent::get_excluded_options($key, $action, $current_value, $field_data, $step);
}
/**
* {@inheritDoc}
*/
public function prepare_hidden_fields($step, $key, $action, &$field_data)
{
if ($key == 'field_length' && $this->request->is_set('rows'))
{
$field_data['rows'] = $this->request->variable('rows', 0);
$field_data['columns'] = $this->request->variable('columns', 0);
return $field_data['rows'] . '|' . $field_data['columns'];
}
return parent::prepare_hidden_fields($step, $key, $action, $field_data);
}
}