phpBB

Development Wiki

Difference between revisions of "Build cfg template"

From phpBB Development Wiki

m (Some visual cleanup)
Line 1: Line 1:
Function: '''build_cfg_template();'''
+
'''build_cfg_template();''' –– Build configuration template for the ACP.
 +
 
 +
{{stub}}
  
 
==Description==
 
==Description==
<code>function build_cfg_template($tpl_type, $key, &$new, $config_key, $vars)</code>
+
<pre>string build_cfg_template( $tpl_type , $key , &$new , $config_key , $vars)</pre>
This function is used in the ACP to build a configuration page and cuts down on all the INPUT fields you have to make in the template.  It allows you to create a simple array of all the fields you need to set, along with limits, validation, etc...
+
This function is used in the ACP to build a configuration page and cuts down on all the INPUT fields you have to make in the template.  It allows you to create a simple array of all the fields you need to set, along with limits, validation, etc...<br>
  
This is done by building a $[[Build_cfg_template#display_vars_array|display_vars array]] and then looping through it and passing the data to the function.
+
This is done by building a $[[Build_cfg_template#display_vars_array|display_vars array]], looping through it and passing the data to the function.
  
 
==Parameters==
 
==Parameters==
'''tpl_type'''<br>
+
{|border="1" cellspacing="0" cellpadding="3"
'''key'''<br>
+
! Parameter
'''new'''<br>
+
! Usage
'''config_key'''<br>
+
|-
'''vars'''<br>
+
| '''tpl_type'''
 +
|
 +
|-
 +
| '''key'''
 +
|
 +
|-
 +
|'''new'''
 +
|
 +
|-
 +
|'''config_key'''
 +
|
 +
|-
 +
|'''vars'''
 +
|
 +
|}
 +
 
 +
==Return Values==
 +
HTML string for output within the template.
  
 
==display_vars array==
 
==display_vars array==
Line 76: Line 95:
  
 
==Examples==
 
==Examples==
 +
===Example #1===
 
<php>$display_vars = array(
 
<php>$display_vars = array(
     'title' => 'ACP_FOO',
+
     'title' => 'ACP_FOO',
     'vars' => array(
+
     'vars' => array(
 
         'legend1'      => 'GENERAL_FOO',
 
         'legend1'      => 'GENERAL_FOO',
 
         'foo1'          => array('lang' => 'ALLOW_BAR',  'validate' => 'bool',    'type' => 'radio:yes_no',  'explain' => false),
 
         'foo1'          => array('lang' => 'ALLOW_BAR',  'validate' => 'bool',    'type' => 'radio:yes_no',  'explain' => false),
Line 102: Line 122:
 
     {
 
     {
 
         $template->assign_block_vars('options', array(
 
         $template->assign_block_vars('options', array(
             'S_LEGEND' => true,
+
             'S_LEGEND'     => true,
             'LEGEND' => (isset($user->lang[$vars])) ? $user->lang[$vars] : $vars)
+
             'LEGEND'       => (isset($user->lang[$vars])) ? $user->lang[$vars] : $vars)
 
         );
 
         );
  
Line 129: Line 149:
  
 
     $template->assign_block_vars('options', array(
 
     $template->assign_block_vars('options', array(
         'KEY' => $config_key,
+
         'KEY'           => $config_key,
         'TITLE' => (isset($user->lang[$vars['lang']])) ? $user->lang[$vars['lang']] : $vars['lang'],
+
         'TITLE'         => (isset($user->lang[$vars['lang']])) ? $user->lang[$vars['lang']] : $vars['lang'],
         'S_EXPLAIN' => $vars['explain'],
+
         'S_EXPLAIN'     => $vars['explain'],
         'TITLE_EXPLAIN' => $l_explain,
+
         'TITLE_EXPLAIN' => $l_explain,
         'CONTENT' => $content,
+
         'CONTENT'       => $content,
        )
+
    ));
    );
+
  
 
     unset($display_vars['vars'][$config_key]);
 
     unset($display_vars['vars'][$config_key]);
Line 142: Line 161:
 
'''Template'''<br>
 
'''Template'''<br>
 
<php><!-- BEGIN options -->
 
<php><!-- BEGIN options -->
<!-- IF options.S_LEGEND -->
+
    <!-- IF options.S_LEGEND -->
<!-- IF not options.S_FIRST_ROW -->
+
        <!-- IF not options.S_FIRST_ROW -->
</fieldset>
+
            </fieldset>
<!-- ENDIF -->
+
        <!-- ENDIF -->
<fieldset>
+
        <fieldset>
<legend>{options.LEGEND}</legend>
+
            <legend>{options.LEGEND}</legend>
<!-- ELSE -->
+
    <!-- ELSE -->
  
<dl>
+
        <dl>
<dt><label for="{options.KEY}">{options.TITLE}:</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
+
            <dt><label for="{options.KEY}">{options.TITLE}:</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
<dd>{options.CONTENT}</dd>
+
            <dd>{options.CONTENT}</dd>
</dl>
+
        </dl>
  
<!-- ENDIF -->
+
    <!-- ENDIF -->
 
<!-- END options --></php>
 
<!-- END options --></php>
 +
<br>
 +
 +
==See Also==
 +
* [[Creating modules]]
 +
* [[ACP]]
 +
<br><br>
 +
 
[[Category:API]]
 
[[Category:API]]
 
[[Category:Concepts]]
 
[[Category:Concepts]]

Revision as of 23:27, 22 September 2008

build_cfg_template(); –– Build configuration template for the ACP.

This article is a stub. You can help in improving Olympus Documentation by expanding it.


Description

string build_cfg_template( $tpl_type , $key , &$new , $config_key , $vars)

This function is used in the ACP to build a configuration page and cuts down on all the INPUT fields you have to make in the template. It allows you to create a simple array of all the fields you need to set, along with limits, validation, etc...

This is done by building a $display_vars array, looping through it and passing the data to the function.

Parameters

Parameter Usage
tpl_type
key
new
config_key
vars

Return Values

HTML string for output within the template.

display_vars array

title
ACP title

lang
Include a different lang file

vars array
Used to build form

Key Description Valid Type
lang Text label
validate Expected data type
  • bool
  • int
  • lang
  • string
  • wpath
type Type of field
  • dimension
  • custom
  • password
  • radio
  • select
  • string
  • text
  • textarea
  • false
explain Show explain text
  • false
  • true
method A function inside your acp class to create screen output, generally used for optional elements <OPTION name=foo>FOO_LABEL</OPTION>
function A function not inside your acp class to create screen output, generally used for optional elements <OPTION name=foo>FOO_LABEL</OPTION>
params Input parameters to use with the function or method
append Any text that follows the form field

Examples

Example #1

$display_vars = array(
    
'title' => 'ACP_FOO',
    
'vars'  => array(
        
'legend1'       => 'GENERAL_FOO',
        
'foo1'           => array('lang' => 'ALLOW_BAR',  'validate' => 'bool',    'type' => 'radio:yes_no',   'explain' => false),
        
'foo2'           => array('lang' => 'MAX_BAR',    'validate' => 'int:0',   'type' => 'text:5:4',       'explain' => true),
        
'foo3'           => array('lang' => 'BAR_TYPE',   'validate' => 'string',  'type' => 'custom',     'method' => 'bar_type''explain' => true),
    ),
);

$this->new_config $config;
$cfg_array = (isset($_REQUEST['config'])) ? request_var('config', array('' => '')) : $this->new_config;
$error = array();

validate_config_vars($display_vars['vars'], $cfg_array$error);

foreach (
$display_vars['vars'] as $config_key => $vars)
{
    if (!
is_array($vars) && strpos($config_key'legend') === false)
    {
        continue;
    }

    if (
strpos($config_key'legend') !== false)
    {
        
$template->assign_block_vars('options', array(
            
'S_LEGEND'      => true,
            
'LEGEND'        => (isset($user->lang[$vars])) ? $user->lang[$vars] : $vars)
        );

        continue;
    }

    
$type explode(':'$vars['type']);

    
$l_explain '';
    if (
$vars['explain'] && isset($vars['lang_explain']))
    {
        
$l_explain = (isset($user->lang[$vars['lang_explain']])) ? $user->lang[$vars['lang_explain']] : $vars['lang_explain'];
    }
    else if (
$vars['explain'])
    {
        
$l_explain = (isset($user->lang[$vars['lang'] . '_EXPLAIN'])) ? $user->lang[$vars['lang'] . '_EXPLAIN'] : '';
    }

    
$content build_cfg_template($type$config_key$this->new_config$config_key$vars);

    if (empty(
$content))
    {
        continue;
    }

    
$template->assign_block_vars('options', array(
        
'KEY'           => $config_key,
        
'TITLE'         => (isset($user->lang[$vars['lang']])) ? $user->lang[$vars['lang']] : $vars['lang'],
        
'S_EXPLAIN'     => $vars['explain'],
        
'TITLE_EXPLAIN' => $l_explain,
        
'CONTENT'       => $content,
    ));

    unset(
$display_vars['vars'][$config_key]);
}

Template

<!-- BEGIN options -->
    <!-- IF 
options.S_LEGEND -->
        <!-- IF 
not options.S_FIRST_ROW -->
            </
fieldset>
        <!-- ENDIF -->
        <
fieldset>
            <
legend>{options.LEGEND}</legend>
    <!-- ELSE -->

        <
dl>
            <
dt><label for="{options.KEY}">{options.TITLE}:</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
            <
dd>{options.CONTENT}</dd>
        </
dl>

    <!-- ENDIF -->
<!-- 
END options -->


See Also