mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-11-25 03:19:08 +01:00
LSformElement :: select_list / select_box : permit to put possible values in labelled group
This commit is contained in:
parent
a2218dc59a
commit
772cd8b0da
13 changed files with 2655 additions and 2027 deletions
|
@ -19,6 +19,16 @@
|
|||
'filter' => '[Filtre de recherche des LSobject]',
|
||||
'scope' => '[Scope de la recherche]',
|
||||
'basedn' => '[Basedn de la recherche]'
|
||||
),
|
||||
array (
|
||||
'label' => '[LSformat du nom du groupe de valeurs]',
|
||||
'possible_values' => array (
|
||||
'[LSformat de la valeur clé]' => '[LSformat du nom d'affichage]',
|
||||
...
|
||||
'OTHER_OBJECT' => array (
|
||||
...
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
'sort' => [Booléen],
|
||||
|
@ -44,6 +54,13 @@
|
|||
des paramètres de configuration de la recherche de ces &LSobjects; et les
|
||||
valeurs associées, les valeurs des paramètres.</para>
|
||||
|
||||
<para>Il est possible de regrouper des valeurs de l'attribut en plaçant leur
|
||||
déclaration dans un sous-tableau. Ce sous-tableau devra contenir la clé
|
||||
<literal>label</literal> dont la valeur associé sera le &LSformat; du nom du groupe
|
||||
de valeurs. Ce &LSformat; est composé à partir des valeurs de l'objet courant
|
||||
(attributs, dn, ...). Une seconde clé <literal>possible_values</literal> regroupera
|
||||
les valeurs possibles du groupe. Comme pour le tableau principal, la clé <literal>
|
||||
OTHER_OBJECT</literal> permet d'imcorporer une liste d'&LSobject;.</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>object_type</term>
|
||||
|
|
|
@ -306,21 +306,27 @@ $GLOBALS['LSobjects']['LSpeople'] = array (
|
|||
'html_type' => 'select_list',
|
||||
'html_options' => array (
|
||||
'possible_values' => array(
|
||||
'OTHER_OBJECT' => array(
|
||||
'object_type' => 'LSgroup', // Nom de l'objet à lister
|
||||
'display_name_format' => '%{cn} (%{gidNumber})', // Spécifie le attributs à lister pour le choix,
|
||||
// si non définie => utilisation du 'display_name_format'
|
||||
// de la définition de l'objet
|
||||
'0' => 'No group',
|
||||
array (
|
||||
'label' => 'LDAP Groups',
|
||||
'possible_values' => array (
|
||||
'OTHER_OBJECT' => array (
|
||||
'object_type' => 'LSgroup', // Nom de l'objet à lister
|
||||
'display_name_format' => '%{cn} (%{gidNumber})', // Spécifie le attributs à lister pour le choix,
|
||||
// si non définie => utilisation du 'display_name_format'
|
||||
// de la définition de l'objet
|
||||
|
||||
'value_attribute' => 'gidNumber', // Spécifie le attributs dont la valeur sera retournée par
|
||||
/*'filter' => // le formulaire spécifie les filtres de recherche pour
|
||||
array ( // l'établissement de la liste d'objets :
|
||||
array( // Premier filtre
|
||||
'filter' => 'cn=*a*',
|
||||
//'basedn' => 'o=company',
|
||||
'scope' => 'sub',
|
||||
)
|
||||
)*/
|
||||
'value_attribute' => 'gidNumber', // Spécifie le attributs dont la valeur sera retournée par
|
||||
/*'filter' => // le formulaire spécifie les filtres de recherche pour
|
||||
array ( // l'établissement de la liste d'objets :
|
||||
array( // Premier filtre
|
||||
'filter' => 'cn=*a*',
|
||||
//'basedn' => 'o=company',
|
||||
'scope' => 'sub',
|
||||
)
|
||||
)*/
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
|
|
10
public_html/css/default/LSformElement_select_box.css
Normal file
10
public_html/css/default/LSformElement_select_box.css
Normal file
|
@ -0,0 +1,10 @@
|
|||
span.LSformElement_selectbox_sub_values_label {
|
||||
font-style: Italic;
|
||||
font-weight: bold;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
ul.LSformElement_selectbox_sub_values {
|
||||
list-style-type: none;
|
||||
padding-left: 1em;
|
||||
}
|
|
@ -60,7 +60,7 @@ class LSattr_html_select_list extends LSattr_html{
|
|||
|
||||
if ($element) {
|
||||
// Mise en place de la regle de verification des donnees
|
||||
$form -> addRule($this -> name, 'inarray', array('msg'=> 'Valeur incorrect','params' => array('possible_values' => array_keys($possible_values))) );
|
||||
$form -> addRule($this -> name, 'LSformElement_select_validValue', array('msg'=> _('Invalid value'),'params' => array('possible_values' => $possible_values)) );
|
||||
}
|
||||
return $element;
|
||||
}
|
||||
|
@ -76,61 +76,128 @@ class LSattr_html_select_list extends LSattr_html{
|
|||
function getPossibleValues() {
|
||||
$retInfos = array();
|
||||
if (is_array($this -> config['html_options']['possible_values'])) {
|
||||
foreach($this -> config['html_options']['possible_values'] as $val_name => $val) {
|
||||
if($val_name==='OTHER_OBJECT') {
|
||||
if ((!isset($val['object_type'])) || (!isset($val['value_attribute']))) {
|
||||
LSerror :: addErrorCode('LSattr_html_select_list_01',$this -> name);
|
||||
break;
|
||||
}
|
||||
if (!LSsession :: loadLSclass('LSsearch')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$param=array(
|
||||
'filter' => (isset($val['filter'])?$val['filter']:null),
|
||||
'basedn' => (isset($val['basedn'])?$val['basedn']:null),
|
||||
'scope' => (isset($val['scope'])?$val['scope']:null),
|
||||
'displayFormat' => (isset($val['display_name_format'])?$val['display_name_format']:null),
|
||||
);
|
||||
|
||||
|
||||
|
||||
if ($val['value_attribute']!='dn') {
|
||||
$param['attributes'][] = $val['value_attribute'];
|
||||
}
|
||||
|
||||
$LSsearch = new LSsearch($val['object_type'],'LSattr_html_select_list',$param,true);
|
||||
$LSsearch -> run();
|
||||
if(($val['value_attribute']=='dn')||($val['value_attribute']=='%{dn}')) {
|
||||
$retInfos = $LSsearch -> listObjectsName();
|
||||
}
|
||||
else {
|
||||
$list = $LSsearch -> getSearchEntries();
|
||||
foreach($list as $entry) {
|
||||
$key = $entry -> get($val['value_attribute']);
|
||||
if(is_array($key)) {
|
||||
$key = $key[0];
|
||||
}
|
||||
$retInfos[$key]=$entry -> displayName;
|
||||
}
|
||||
}
|
||||
foreach($this -> config['html_options']['possible_values'] as $val_key => $val_label) {
|
||||
if($val_key==='OTHER_OBJECT') {
|
||||
$objInfos=$this -> getLSobjectPossibleValues($val_label);
|
||||
$retInfos=self :: _array_merge($retInfos,$objInfos);
|
||||
}
|
||||
elseif (is_array($val_label)) {
|
||||
if (!isset($val_label['possible_values']) || !is_array($val_label['possible_values']) || !isset($val_label['label']))
|
||||
continue;
|
||||
$subRetInfos=array();
|
||||
foreach($val_label['possible_values'] as $vk => $vl) {
|
||||
if ($vk==='OTHER_OBJECT') {
|
||||
$objInfos=$this -> getLSobjectPossibleValues($vl);
|
||||
$subRetInfos=self :: _array_merge($subRetInfos,$objInfos);
|
||||
}
|
||||
else {
|
||||
$vk=$this->attribute->ldapObject->getFData($vk);
|
||||
$vl=$this->attribute->ldapObject->getFData(__($vl));
|
||||
$subRetInfos[$vk]=$vl;
|
||||
}
|
||||
}
|
||||
$this -> _sort($subRetInfos);
|
||||
$retInfos[] = array (
|
||||
'label' => $this->attribute->ldapObject->getFData(__($val_label['label'])),
|
||||
'possible_values' => $subRetInfos
|
||||
);
|
||||
}
|
||||
else {
|
||||
$val_name=$this->attribute->ldapObject->getFData($val_name);
|
||||
$val=$this->attribute->ldapObject->getFData(__($val));
|
||||
$retInfos[$val_name]=$val;
|
||||
$val_key=$this->attribute->ldapObject->getFData($val_key);
|
||||
$val_label=$this->attribute->ldapObject->getFData(__($val_label));
|
||||
$retInfos[$val_key]=$val_label;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($this -> config['html_options']['sort']) || $this -> config['html_options']['sort']) {
|
||||
uasort($retInfos,array($this,'_sortTwoValues'));
|
||||
}
|
||||
$this -> _sort($retInfos);
|
||||
|
||||
return $retInfos;
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Merge arrays preserving keys (string or numeric)
|
||||
*
|
||||
* As array_merge PHP function, this function merge arrays but
|
||||
* this method permit to preverve key even if it's numeric key.
|
||||
*
|
||||
* @retval array Merged array
|
||||
**/
|
||||
private function _array_merge() {
|
||||
$ret=array();
|
||||
foreach(func_get_args() as $a) {
|
||||
foreach($a as $k => $v) {
|
||||
$ret[$k]=$v;
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply sort feature on possible values if this feature is enabled
|
||||
*
|
||||
* @param[in] &$retInfos array Possible values array reference to sort
|
||||
*
|
||||
* @retval void
|
||||
**/
|
||||
private function _sort(&$retInfos) {
|
||||
if (!isset($this -> config['html_options']['sort']) || $this -> config['html_options']['sort']) {
|
||||
uasort($retInfos,array($this,'_sortTwoValues'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne un tableau des valeurs possibles d'un type d'objet
|
||||
*
|
||||
* @author Benjamin Renard <brenard@easter-eggs.com>
|
||||
*
|
||||
* @retval array Tableau associatif des valeurs possible de la liste avec en clé
|
||||
* la valeur des balises option et en valeur ce qui sera affiché.
|
||||
*/
|
||||
private function getLSobjectPossibleValues($conf) {
|
||||
$retInfos = array();
|
||||
|
||||
if ((!isset($conf['object_type'])) || (!isset($conf['value_attribute']))) {
|
||||
LSerror :: addErrorCode('LSattr_html_select_list_01',$this -> name);
|
||||
break;
|
||||
}
|
||||
if (!LSsession :: loadLSclass('LSsearch')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$param=array(
|
||||
'filter' => (isset($conf['filter'])?$conf['filter']:null),
|
||||
'basedn' => (isset($conf['basedn'])?$conf['basedn']:null),
|
||||
'scope' => (isset($conf['scope'])?$conf['scope']:null),
|
||||
'displayFormat' => (isset($conf['display_name_format'])?$conf['display_name_format']:null),
|
||||
);
|
||||
|
||||
if ($conf['value_attribute']!='dn') {
|
||||
$param['attributes'][] = $conf['value_attribute'];
|
||||
}
|
||||
|
||||
$LSsearch = new LSsearch($conf['object_type'],'LSattr_html_select_list',$param,true);
|
||||
$LSsearch -> run();
|
||||
if(($conf['value_attribute']=='dn')||($conf['value_attribute']=='%{dn}')) {
|
||||
$retInfos = $LSsearch -> listObjectsName();
|
||||
}
|
||||
else {
|
||||
$list = $LSsearch -> getSearchEntries();
|
||||
foreach($list as $entry) {
|
||||
$key = $entry -> get($conf['value_attribute']);
|
||||
if(is_array($key)) {
|
||||
$key = $key[0];
|
||||
}
|
||||
$retInfos[$key]=$entry -> displayName;
|
||||
}
|
||||
}
|
||||
|
||||
$this -> _sort($retInfos);
|
||||
|
||||
return $retInfos;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function use with uasort to sort two values
|
||||
*
|
||||
* @param[in] $va string One value
|
||||
|
@ -145,8 +212,25 @@ class LSattr_html_select_list extends LSattr_html{
|
|||
else {
|
||||
$dir=1;
|
||||
}
|
||||
if ($va == $vb) return 0;
|
||||
$val = strcoll(strtolower($va), strtolower($vb));
|
||||
|
||||
if (is_array($va)) {
|
||||
$nva=$va['label'];
|
||||
}
|
||||
else {
|
||||
$nva=$va;
|
||||
}
|
||||
|
||||
if (is_array($vb)) {
|
||||
$nvb=$vb['label'];
|
||||
}
|
||||
else {
|
||||
$nvb=$vb;
|
||||
}
|
||||
|
||||
if ($nva == $nvb) return 0;
|
||||
|
||||
$val = strcoll(strtolower($nva), strtolower($nvb));
|
||||
|
||||
return $val*$dir;
|
||||
}
|
||||
|
||||
|
@ -158,4 +242,3 @@ class LSattr_html_select_list extends LSattr_html{
|
|||
LSerror :: defineError('LSattr_html_select_list_01',
|
||||
_("LSattr_html_select_list : Configuration data are missing to generate the select list of the attribute %{attr}.")
|
||||
);
|
||||
?>
|
||||
|
|
|
@ -36,9 +36,9 @@ class LSformElement_select extends LSformElement {
|
|||
var $fieldTemplate = 'LSformElement_select.tpl';
|
||||
|
||||
/**
|
||||
* Retourn les infos d'affichage de l'élément
|
||||
* Return display data of this element
|
||||
*
|
||||
* Cette méthode retourne les informations d'affichage de l'élement
|
||||
* This method return display data of this element
|
||||
*
|
||||
* @retval array
|
||||
*/
|
||||
|
@ -60,6 +60,80 @@ class LSformElement_select extends LSformElement {
|
|||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a value is valid
|
||||
*
|
||||
* This method check if a value is correct, that mean if it's one
|
||||
* of the possible values.
|
||||
*
|
||||
* @param[in] $value The value to check
|
||||
* @param[in] $possible_values (Optional) The possible values
|
||||
*
|
||||
* @retval string or False The value's label or False if this value is incorrect
|
||||
*/
|
||||
public function isValidValue($value,$possible_values=False) {
|
||||
if (!$possible_values)
|
||||
$possible_values=$this -> params['text_possible_values'];
|
||||
|
||||
$ret=False;
|
||||
if (is_array($possible_values) && isset($value)) {
|
||||
foreach($possible_values as $key => $name) {
|
||||
if (is_array($name)) {
|
||||
if (!is_array($name['possible_values'])) continue;
|
||||
foreach($name['possible_values'] as $k => $v) {
|
||||
if ($k==$value) {
|
||||
$ret=$v;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ($ret) break;
|
||||
}
|
||||
elseif ($key==$value) {
|
||||
$ret=$name;
|
||||
break;
|
||||
}
|
||||
if ($ret) break;
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
/**
|
||||
* LSformElement_select_checkIsValidValue template function
|
||||
*
|
||||
* This function permit to check during template processing
|
||||
* if a value is valid. This function get as parameters
|
||||
* (in $params) :
|
||||
* - $value : the value to check
|
||||
* - $possible_values : the possible values of the element
|
||||
* As return, this function assign two template variables :
|
||||
* - LSformElement_select_isValidValue :
|
||||
* Boolean defining if the value is valid
|
||||
* - LSformElement_select_isValidValue_label :
|
||||
* The value's label
|
||||
*
|
||||
* @param[in] $params The template function parameters
|
||||
* @param[in] $template Smarty object
|
||||
*
|
||||
* @retval void
|
||||
**/
|
||||
function LSformElement_select_checkIsValidValue($params,$template) {
|
||||
extract($params);
|
||||
|
||||
$ret = LSformElement_select :: isValidValue($value,$possible_values);
|
||||
|
||||
if ($ret===False) {
|
||||
$label='';
|
||||
$ret=false;
|
||||
}
|
||||
else {
|
||||
$label=$ret;
|
||||
$ret=true;
|
||||
}
|
||||
|
||||
$template -> assign('LSformElement_select_isValidValue',$ret);
|
||||
$template -> assign('LSformElement_select_isValidValue_label',$label);
|
||||
}
|
||||
LStemplate :: registerFunction('LSformElement_select_checkIsValidValue','LSformElement_select_checkIsValidValue');
|
||||
|
|
|
@ -36,4 +36,18 @@ class LSformElement_select_box extends LSformElement_select {
|
|||
var $template = 'LSformElement_select_box.tpl';
|
||||
var $fieldTemplate = 'LSformElement_select_box.tpl';
|
||||
|
||||
/**
|
||||
* Return display data of this element
|
||||
*
|
||||
* This method return display data of this element
|
||||
*
|
||||
* @retval array
|
||||
*/
|
||||
function getDisplay(){
|
||||
if (!$this -> isFreeze()) {
|
||||
LSsession :: addCssFile('LSformElement_select_box.css');
|
||||
}
|
||||
return parent :: getDisplay();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
/*******************************************************************************
|
||||
* Copyright (C) 2007 Easter-eggs
|
||||
* http://ldapsaisie.labs.libre-entreprise.org
|
||||
*
|
||||
* Author: See AUTHORS file in top-level directory.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License version 2
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* Rule to validate LSformRule_LSformElement_select valid values
|
||||
*
|
||||
* @author Benjamin Renard <brenard@easter-eggs.com>
|
||||
*/
|
||||
class LSformRule_LSformElement_select_validValue extends LSformRule {
|
||||
|
||||
/**
|
||||
* Validate value
|
||||
*
|
||||
* @param string $values The value to validate
|
||||
* @param array $options Validation options
|
||||
* @param object $formElement The related formElement object
|
||||
*
|
||||
* @return boolean true if the value is valide, false if not
|
||||
*/
|
||||
function validate($value,$option,$formElement) {
|
||||
$ret = $formElement -> isValidValue($value);
|
||||
if ($ret===False) return False;
|
||||
return True;
|
||||
}
|
||||
|
||||
}
|
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
@ -146,9 +146,18 @@ if (loadDir('../'.LS_OBJECTS_DIR) && loadDir('../'.LS_LOCAL_DIR.LS_OBJECTS_DIR))
|
|||
add($attr['html_options']['mail']['msg']);
|
||||
|
||||
// LSattr_html_select_list
|
||||
if ($attr['html_type']=='select_list' && is_array($attr['html_options']['possible_values']) && !$withoutselectlist) {
|
||||
if (($attr['html_type']=='select_list' || $attr['html_type']=='select_box') && is_array($attr['html_options']['possible_values']) && !$withoutselectlist) {
|
||||
foreach($attr['html_options']['possible_values'] as $pkey => $pname) {
|
||||
if ($pkey != 'OTHER_OBJECT') {
|
||||
if (is_array($pname)) {
|
||||
add($pname['label']);
|
||||
if (is_array($pname['possible_values'])) {
|
||||
foreach($pname['possible_values'] as $pk => $pn) {
|
||||
if ($pk == 'OTHER_OBJECT') continue;
|
||||
add($pn);
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif ($pkey != 'OTHER_OBJECT') {
|
||||
add($pname);
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,8 +1,9 @@
|
|||
<ul class='LSform' id='{$attr_name}'>
|
||||
{if $freeze}
|
||||
{foreach from=$values item=value}
|
||||
{if $possible_values.$value}
|
||||
<li>{$possible_values.$value}</li>
|
||||
{LSformElement_select_checkIsValidValue value=$value possible_values=$possible_values}
|
||||
{if $LSformElement_select_isValidValue}
|
||||
<li>{$LSformElement_select_isValidValue_label}</li>
|
||||
{else}
|
||||
<li class='LSform-errors'>{getFData format=$unrecognized_value_label_format data=$value}</li>
|
||||
{/if}
|
||||
|
@ -12,7 +13,17 @@
|
|||
{else}
|
||||
<li>
|
||||
<select name='{$attr_name}[]' {if $multiple}multiple{/if} class='LSformElement_select'>
|
||||
{html_options options=$possible_values selected=$values}
|
||||
{foreach from=$possible_values key=key item=label}
|
||||
{if is_array($label)}
|
||||
{if count($label.possible_values)>0}
|
||||
<optgroup label="{$label.label}">
|
||||
{html_options options=$label.possible_values selected=$values}
|
||||
</optgroup>
|
||||
{/if}
|
||||
{else}
|
||||
<option value="{$key}" {if in_array($key,$values)}selected{/if}>{$label}</option>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</select>
|
||||
</li>
|
||||
{/if}
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
<ul class='LSform' id='{$attr_name}'>
|
||||
{if $freeze}
|
||||
{foreach from=$values item=value}
|
||||
{if array_key_exists($value,$possible_values)}
|
||||
<li>{$possible_values.$value}</li>
|
||||
{LSformElement_select_checkIsValidValue value=$value possible_values=$possible_values}
|
||||
{if $LSformElement_select_isValidValue}
|
||||
<li>{$LSformElement_select_isValidValue_label}</li>
|
||||
{else}
|
||||
<li class='LSform-errors'>{getFData format=$unrecognized_value_label_format data=$value}</li>
|
||||
{/if}
|
||||
|
@ -11,9 +12,24 @@
|
|||
{/foreach}
|
||||
{else}
|
||||
{foreach from=$possible_values item=label key=value name=LSformElement_selectbox}
|
||||
<li>
|
||||
<input type='{if $multiple}checkbox{else}radio{/if}' name='{$attr_name}[]' class='LSformElement_selectbox' id='LSformElement_selectbox_{$attr_name}_{$smarty.foreach.LSformElement_selectbox.index}' value="{$value}" {if in_array($value,$values)}checked{/if}/> <label for='LSformElement_selectbox_{$attr_name}_{$smarty.foreach.LSformElement_selectbox.index}'>{tr msg=$label}</label>
|
||||
</li>
|
||||
{if is_array($label)}
|
||||
{if count($label.possible_values)>0}
|
||||
<li>
|
||||
<span class='LSformElement_selectbox_sub_values_label'>{$label.label} :</span>
|
||||
<ul class='LSformElement_selectbox_sub_values'>
|
||||
{foreach from=$label.possible_values item=l key=v name=LSformElement_selectbox_sub_values}
|
||||
<li>
|
||||
<input type='{if $multiple}checkbox{else}radio{/if}' name='{$attr_name}[]' class='LSformElement_selectbox' id='LSformElement_selectbox_{$attr_name}_{$smarty.foreach.LSformElement_selectbox.index}_{$smarty.foreach.LSformElement_selectbox_sub_values.index}' value="{$v}" {if in_array($v,$values)}checked{/if}/> <label for='LSformElement_selectbox_{$attr_name}_{$smarty.foreach.LSformElement_selectbox.index}_{$smarty.foreach.LSformElement_selectbox_sub_values.index}'>{tr msg=$l}</label>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</li>
|
||||
{/if}
|
||||
{else}
|
||||
<li>
|
||||
<input type='{if $multiple}checkbox{else}radio{/if}' name='{$attr_name}[]' class='LSformElement_selectbox' id='LSformElement_selectbox_{$attr_name}_{$smarty.foreach.LSformElement_selectbox.index}' value="{$value}" {if in_array($value,$values)}checked{/if}/> <label for='LSformElement_selectbox_{$attr_name}_{$smarty.foreach.LSformElement_selectbox.index}'>{tr msg=$label}</label>
|
||||
</li>
|
||||
{/if}
|
||||
{/foreach}
|
||||
{/if}
|
||||
</ul>
|
||||
|
|
Loading…
Reference in a new issue