[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Smarty plugin 4 * 5 * @package Smarty 6 * @subpackage PluginsFunction 7 */ 8 9 /** 10 * Smarty {html_options} function plugin 11 * 12 * Type: function<br> 13 * Name: html_options<br> 14 * Purpose: Prints the list of <option> tags generated from 15 * the passed parameters<br> 16 * Params: 17 * <pre> 18 * - name (optional) - string default "select" 19 * - values (required) - if no options supplied) - array 20 * - options (required) - if no values supplied) - associative array 21 * - selected (optional) - string default not set 22 * - output (required) - if not options supplied) - array 23 * - id (optional) - string default not set 24 * - class (optional) - string default not set 25 * </pre> 26 * 27 * @link http://www.smarty.net/manual/en/language.function.html.options.php {html_image} 28 * (Smarty online manual) 29 * @author Monte Ohrt <monte at ohrt dot com> 30 * @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de> 31 * @param array $params parameters 32 * @param Smarty_Internal_Template $template template object 33 * @return string 34 * @uses smarty_function_escape_special_chars() 35 */ 36 function smarty_function_html_options($params, $template) 37 { 38 require_once (SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); 39 40 $name = null; 41 $values = null; 42 $options = null; 43 $selected = null; 44 $output = null; 45 $id = null; 46 $class = null; 47 48 $extra = ''; 49 50 foreach ($params as $_key => $_val) { 51 switch ($_key) { 52 case 'name': 53 case 'class': 54 case 'id': 55 $$_key = (string) $_val; 56 break; 57 58 case 'options': 59 $options = (array) $_val; 60 break; 61 62 case 'values': 63 case 'output': 64 $$_key = array_values((array) $_val); 65 break; 66 67 case 'selected': 68 if (is_array($_val)) { 69 $selected = array(); 70 foreach ($_val as $_sel) { 71 if (is_object($_sel)) { 72 if (method_exists($_sel, "__toString")) { 73 $_sel = smarty_function_escape_special_chars((string) $_sel->__toString()); 74 } else { 75 trigger_error("html_options: selected attribute contains an object of class '". get_class($_sel) ."' without __toString() method", E_USER_NOTICE); 76 continue; 77 } 78 } else { 79 $_sel = smarty_function_escape_special_chars((string) $_sel); 80 } 81 $selected[$_sel] = true; 82 } 83 } elseif (is_object($_val)) { 84 if (method_exists($_val, "__toString")) { 85 $selected = smarty_function_escape_special_chars((string) $_val->__toString()); 86 } else { 87 trigger_error("html_options: selected attribute is an object of class '". get_class($_val) ."' without __toString() method", E_USER_NOTICE); 88 } 89 } else { 90 $selected = smarty_function_escape_special_chars((string) $_val); 91 } 92 break; 93 94 default: 95 if (!is_array($_val)) { 96 $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"'; 97 } else { 98 trigger_error("html_options: extra attribute '$_key' cannot be an array", E_USER_NOTICE); 99 } 100 break; 101 } 102 } 103 104 if (!isset($options) && !isset($values)) { 105 /* raise error here? */ 106 return ''; 107 } 108 109 $_html_result = ''; 110 $_idx = 0; 111 112 if (isset($options)) { 113 foreach ($options as $_key => $_val) { 114 $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx); 115 } 116 } else { 117 foreach ($values as $_i => $_key) { 118 $_val = isset($output[$_i]) ? $output[$_i] : ''; 119 $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx); 120 } 121 } 122 123 if (!empty($name)) { 124 $_html_class = !empty($class) ? ' class="'.$class.'"' : ''; 125 $_html_id = !empty($id) ? ' id="'.$id.'"' : ''; 126 $_html_result = '<select name="' . $name . '"' . $_html_class . $_html_id . $extra . '>' . "\n" . $_html_result . '</select>' . "\n"; 127 } 128 129 return $_html_result; 130 } 131 132 function smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, &$idx) 133 { 134 if (!is_array($value)) { 135 $_key = smarty_function_escape_special_chars($key); 136 $_html_result = '<option value="' . $_key . '"'; 137 if (is_array($selected)) { 138 if (isset($selected[$_key])) { 139 $_html_result .= ' selected="selected"'; 140 } 141 } elseif ($_key === $selected) { 142 $_html_result .= ' selected="selected"'; 143 } 144 $_html_class = !empty($class) ? ' class="'.$class.' option"' : ''; 145 $_html_id = !empty($id) ? ' id="'.$id.'-'.$idx.'"' : ''; 146 if (is_object($value)) { 147 if (method_exists($value, "__toString")) { 148 $value = smarty_function_escape_special_chars((string) $value->__toString()); 149 } else { 150 trigger_error("html_options: value is an object of class '". get_class($value) ."' without __toString() method", E_USER_NOTICE); 151 return ''; 152 } 153 } 154 $_html_result .= $_html_class . $_html_id . '>' . $value . '</option>' . "\n"; 155 $idx++; 156 } else { 157 $_idx = 0; 158 $_html_result = smarty_function_html_options_optgroup($key, $value, $selected, !empty($id) ? ($id.'-'.$idx) : null, $class, $_idx); 159 $idx++; 160 } 161 return $_html_result; 162 } 163 164 function smarty_function_html_options_optgroup($key, $values, $selected, $id, $class, &$idx) 165 { 166 $optgroup_html = '<optgroup label="' . smarty_function_escape_special_chars($key) . '">' . "\n"; 167 foreach ($values as $key => $value) { 168 $optgroup_html .= smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, $idx); 169 } 170 $optgroup_html .= "</optgroup>\n"; 171 return $optgroup_html; 172 } 173 174 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |