[ticket/11201] Move custom template variable assignment to type class

PHPBB3-11201
This commit is contained in:
Joas Schilling 2014-01-17 14:56:13 +01:00
parent af5c747f6f
commit 74d36591e1
8 changed files with 89 additions and 55 deletions

View file

@ -611,9 +611,7 @@ class acp_profile
{ {
// Create basic options - only small differences between field types // Create basic options - only small differences between field types
case 1: case 1:
$template_vars = array(
// Build common create options
$template->assign_vars(array(
'S_STEP_ONE' => true, 'S_STEP_ONE' => true,
'S_FIELD_REQUIRED' => ($cp->vars['field_required']) ? true : false, 'S_FIELD_REQUIRED' => ($cp->vars['field_required']) ? true : false,
'S_FIELD_SHOW_NOVALUE'=> ($cp->vars['field_show_novalue']) ? true : false, 'S_FIELD_SHOW_NOVALUE'=> ($cp->vars['field_show_novalue']) ? true : false,
@ -628,50 +626,15 @@ class acp_profile
'FIELD_TYPE' => $user->lang['FIELD_' . strtoupper($cp->profile_types[$field_type])], 'FIELD_TYPE' => $user->lang['FIELD_' . strtoupper($cp->profile_types[$field_type])],
'FIELD_IDENT' => $cp->vars['field_ident'], 'FIELD_IDENT' => $cp->vars['field_ident'],
'LANG_NAME' => $cp->vars['lang_name'], 'LANG_NAME' => $cp->vars['lang_name'],
'LANG_EXPLAIN' => $cp->vars['lang_explain']) 'LANG_EXPLAIN' => $cp->vars['lang_explain'],
); );
// String and Text needs to set default values here... $field_data = $cp->vars;
if ($field_type == FIELD_STRING || $field_type == FIELD_TEXT) $profile_field->display_options($template_vars, $field_data);
{ $cp->vars = $field_data;
$template->assign_vars(array(
'S_TEXT' => ($field_type == FIELD_TEXT) ? true : false,
'S_STRING' => ($field_type == FIELD_STRING) ? true : false,
'L_DEFAULT_VALUE_EXPLAIN' => $user->lang[strtoupper($cp->profile_types[$field_type]) . '_DEFAULT_VALUE_EXPLAIN'],
'LANG_DEFAULT_VALUE' => $cp->vars['lang_default_value'])
);
}
if ($field_type == FIELD_BOOL || $field_type == FIELD_DROPDOWN)
{
// Initialize these array elements if we are creating a new field
if (!sizeof($cp->vars['lang_options']))
{
if ($field_type == FIELD_BOOL)
{
// No options have been defined for a boolean field.
$cp->vars['lang_options'][0] = '';
$cp->vars['lang_options'][1] = '';
}
else
{
// No options have been defined for the dropdown menu
$cp->vars['lang_options'] = array();
}
}
$template->assign_vars(array(
'S_BOOL' => ($field_type == FIELD_BOOL) ? true : false,
'S_DROPDOWN' => ($field_type == FIELD_DROPDOWN) ? true : false,
'L_LANG_OPTIONS_EXPLAIN' => $user->lang[strtoupper($cp->profile_types[$field_type]) . '_ENTRIES_EXPLAIN'],
'LANG_OPTIONS' => ($field_type == FIELD_DROPDOWN) ? implode("\n", $cp->vars['lang_options']) : '',
'FIRST_LANG_OPTION' => ($field_type == FIELD_BOOL) ? $cp->vars['lang_options'][0] : '',
'SECOND_LANG_OPTION' => ($field_type == FIELD_BOOL) ? $cp->vars['lang_options'][1] : '')
);
}
// Build common create options
$template->assign_vars($template_vars);
break; break;
case 2: case 2:

View file

@ -95,4 +95,12 @@ abstract class type_base implements type_interface
return $this->request->variable($key, '', true); return $this->request->variable($key, '', true);
} }
} }
/**
* {@inheritDoc}
*/
public function display_options(&$template_vars, &$field_data)
{
return;
}
} }

View file

@ -326,4 +326,25 @@ class type_bool extends type_base
} }
} }
} }
/**
* {@inheritDoc}
*/
public function display_options(&$template_vars, &$field_data)
{
// Initialize these array elements if we are creating a new field
if (!sizeof($field_data['lang_options']))
{
// No options have been defined for a boolean field.
$field_data['lang_options'][0] = '';
$field_data['lang_options'][1] = '';
}
$template_vars = array_merge($template_vars, array(
'S_BOOL' => true,
'L_LANG_OPTIONS_EXPLAIN' => $this->user->lang['BOOL_ENTRIES_EXPLAIN'],
'FIRST_LANG_OPTION' => $field_data['lang_options'][0],
'SECOND_LANG_OPTION' => $field_data['lang_options'][1],
));
}
} }

View file

@ -314,7 +314,7 @@ class type_date extends type_base
{ {
return 'now'; return 'now';
} }
else if ($this->request->is_set'field_default_value_day')) 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_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_month'] = $this->request->variable('field_default_value_month', 0);

View file

@ -239,4 +239,23 @@ class type_dropdown extends type_base
return parent::get_excluded_options($key, $action, $current_value, $field_data, $step); return parent::get_excluded_options($key, $action, $current_value, $field_data, $step);
} }
/**
* {@inheritDoc}
*/
public function display_options(&$template_vars, &$field_data)
{
// Initialize these array elements if we are creating a new field
if (!sizeof($field_data['lang_options']))
{
// No options have been defined for the dropdown menu
$field_data['lang_options'] = array();
}
$template_vars = array_merge($template_vars, array(
'S_DROPDOWN' => true,
'L_LANG_OPTIONS_EXPLAIN' => $this->user->lang['DROPDOWN_ENTRIES_EXPLAIN'],
'LANG_OPTIONS' => implode("\n", $field_data['lang_options']),
));
}
} }

View file

@ -11,16 +11,6 @@ namespace phpbb\profilefields\type;
interface type_interface interface type_interface
{ {
/*
public function validate(&$value, $validation);
public function prepare_for_storage($value);
public function prepare_for_display($value);
public function prepare_for_edit($value);
*/
/** /**
* Get dropdown options for second step in ACP * Get dropdown options for second step in ACP
* *
@ -154,4 +144,13 @@ interface type_interface
* @return mixed Final value of the option * @return mixed Final value of the option
*/ */
public function prepare_hidden_fields($step, $key, $action, &$field_data); public function prepare_hidden_fields($step, $key, $action, &$field_data);
/**
* Allows assigning of additional template variables
*
* @param array $template_vars Template variables we are going to assign
* @param array $field_data Array with data for this field
* @return null
*/
public function display_options(&$template_vars, &$field_data);
} }

View file

@ -110,4 +110,16 @@ class type_string extends type_string_common
return $options; return $options;
} }
/**
* {@inheritDoc}
*/
public function display_options(&$template_vars, &$field_data)
{
$template_vars = array_merge($template_vars, array(
'S_STRING' => true,
'L_DEFAULT_VALUE_EXPLAIN' => $this->user->lang['STRING_DEFAULT_VALUE_EXPLAIN'],
'LANG_DEFAULT_VALUE' => $field_data['lang_default_value'],
));
}
} }

View file

@ -155,4 +155,16 @@ class type_text extends type_string_common
return parent::prepare_hidden_fields($step, $key, $action, $field_data); return parent::prepare_hidden_fields($step, $key, $action, $field_data);
} }
/**
* {@inheritDoc}
*/
public function display_options(&$template_vars, &$field_data)
{
$template_vars = array_merge($template_vars, array(
'S_TEXT' => true,
'L_DEFAULT_VALUE_EXPLAIN' => $this->user->lang['TEXT_DEFAULT_VALUE_EXPLAIN'],
'LANG_DEFAULT_VALUE' => $field_data['lang_default_value'],
));
}
} }