1: | <?php
|
2: | |
3: | |
4: | |
5: | |
6: | |
7: | |
8: | |
9: | |
10: | |
11: | |
12: | |
13: | |
14: | |
15: | |
16: | |
17: | |
18: | |
19: |
|
20: | defined('XOOPS_ROOT_PATH') || exit('Restricted access');
|
21: |
|
22: | xoops_load('XoopsFormElement');
|
23: |
|
24: | |
25: | |
26: | |
27: | |
28: | |
29: | |
30: | |
31: | |
32: | |
33: | |
34: |
|
35: | class XoopsFormSelect extends XoopsFormElement
|
36: | {
|
37: | |
38: | |
39: | |
40: | |
41: | |
42: |
|
43: | public $_options = array();
|
44: |
|
45: | |
46: | |
47: | |
48: | |
49: | |
50: |
|
51: | public $_multiple = false;
|
52: |
|
53: | |
54: | |
55: | |
56: | |
57: | |
58: |
|
59: | public $_size;
|
60: |
|
61: | |
62: | |
63: | |
64: | |
65: | |
66: |
|
67: | public $_value = array();
|
68: |
|
69: | |
70: | |
71: | |
72: | |
73: | |
74: | |
75: | |
76: | |
77: |
|
78: | public function __construct($caption, $name, $value = null, $size = 1, $multiple = false)
|
79: | {
|
80: | $this->setCaption($caption);
|
81: | $this->setName($name);
|
82: | $this->_multiple = $multiple;
|
83: | $this->_size = (int)$size;
|
84: | if (isset($value)) {
|
85: | $this->setValue($value);
|
86: | }
|
87: | }
|
88: |
|
89: | |
90: | |
91: | |
92: | |
93: |
|
94: | public function isMultiple()
|
95: | {
|
96: | return $this->_multiple;
|
97: | }
|
98: |
|
99: | |
100: | |
101: | |
102: | |
103: |
|
104: | public function getSize()
|
105: | {
|
106: | return $this->_size;
|
107: | }
|
108: |
|
109: | |
110: | |
111: | |
112: | |
113: | |
114: |
|
115: | public function getValue($encode = false)
|
116: | {
|
117: | if (!$encode) {
|
118: | return $this->_value;
|
119: | }
|
120: | $value = array();
|
121: | foreach ($this->_value as $val) {
|
122: | $value[] = $val ? htmlspecialchars($val, ENT_QUOTES) : $val;
|
123: | }
|
124: |
|
125: | return $value;
|
126: | }
|
127: |
|
128: | |
129: | |
130: | |
131: | |
132: |
|
133: | public function setValue($value)
|
134: | {
|
135: | if (is_array($value)) {
|
136: | foreach ($value as $v) {
|
137: | $this->_value[] = $v;
|
138: | }
|
139: | } elseif (isset($value)) {
|
140: | $this->_value[] = $value;
|
141: | }
|
142: | }
|
143: |
|
144: | |
145: | |
146: | |
147: | |
148: | |
149: |
|
150: | public function addOption($value, $name = '')
|
151: | {
|
152: | if ($name != '') {
|
153: | $this->_options[$value] = $name;
|
154: | } else {
|
155: | $this->_options[$value] = $value;
|
156: | }
|
157: | }
|
158: |
|
159: | |
160: | |
161: | |
162: | |
163: |
|
164: | public function addOptionArray($options)
|
165: | {
|
166: | if (is_array($options)) {
|
167: | foreach ($options as $k => $v) {
|
168: | $this->addOption($k, $v);
|
169: | }
|
170: | }
|
171: | }
|
172: |
|
173: | |
174: | |
175: | |
176: | |
177: | |
178: | |
179: | |
180: | |
181: |
|
182: | public function getOptions($encode = false)
|
183: | {
|
184: | if (!$encode) {
|
185: | return $this->_options;
|
186: | }
|
187: | $value = array();
|
188: | foreach ($this->_options as $val => $name) {
|
189: | $value[$encode ? htmlspecialchars($val, ENT_QUOTES) : $val] = ($encode > 1) ? htmlspecialchars($name, ENT_QUOTES) : $name;
|
190: | }
|
191: |
|
192: | return $value;
|
193: | }
|
194: |
|
195: | |
196: | |
197: | |
198: | |
199: |
|
200: | public function render()
|
201: | {
|
202: | return XoopsFormRenderer::getInstance()->get()->renderFormSelect($this);
|
203: | }
|
204: |
|
205: | |
206: | |
207: | |
208: | |
209: |
|
210: | public function renderValidationJS()
|
211: | {
|
212: |
|
213: | if (!empty($this->customValidationCode)) {
|
214: | return implode("\n", $this->customValidationCode);
|
215: |
|
216: | } elseif ($this->isRequired()) {
|
217: | $eltname = $this->getName();
|
218: | $eltcaption = $this->getCaption();
|
219: | $eltmsg = empty($eltcaption) ? sprintf(_FORM_ENTER, $eltname) : sprintf(_FORM_ENTER, $eltcaption);
|
220: | $eltmsg = str_replace('"', '\"', stripslashes($eltmsg));
|
221: |
|
222: | return "\nvar hasSelected = false; var selectBox = myform.{$eltname};" . "for (i = 0; i < selectBox.options.length; i++) { if (selectBox.options[i].selected == true && selectBox.options[i].value != '') { hasSelected = true; break; } }" . "if (!hasSelected) { window.alert(\"{$eltmsg}\"); selectBox.focus(); return false; }";
|
223: | }
|
224: |
|
225: | return '';
|
226: | }
|
227: | }
|
228: | |