1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
<?php
# Lifter002: DONE
# Lifter007: TEST
/**
* @author Jan-Hendrik Willms <tleilax+studip@gmail.com>
* @author Marcus Lunzenauer <mlunzena@uos.de>
* @author Martin Gieseking <mgieseki@uos.de>
* @license GPL2 or any later version
*/
class DataFieldSelectboxEntry extends DataFieldEntry
{
protected $template = 'selectbox.php';
/**
* Constructs this datafield
*
* @param DataField $datafield Underlying model
* @param String $rangeID Range id
* @param mixed $value Value
*/
public function __construct(DataField $struct = null, $range_id = '', $value = null)
{
parent::__construct($struct, $range_id, $value);
list($values, $is_assoc) = $this->getParameters();
$this->is_assoc_param = $is_assoc;
$this->type_param = $values;
if ($this->getValue() === null) {
reset($values);
if ($is_assoc) {
$this->setValue((string)key($values));
} else {
$this->setValue(current($values)); // first selectbox entry is default
}
}
}
/**
* Returns the according input elements as html for this datafield
*
* @param String $name Name prefix of the associated input
* @param Array $variables Additional variables
* @return String containing the required html
*/
public function getHTML($name = '', $variables = [])
{
$variables = array_merge([
'multiple' => false,
'type_param' => $this->type_param,
'is_assoc' => $this->is_assoc_param,
], $variables);
return parent::getHTML($name, $variables);
}
/**
* Returns the individual type parameters.
*
* @return array containing the individual type parameters
*/
public function getParameters()
{
$params = explode("\n", rtrim($this->model->typeparam));
$params = array_map('trim', $params);
$ret = [];
$is_assoc = false;
foreach ($params as $i => $p) {
if (mb_strpos($p, '=>') !== false) {
$is_assoc = true;
list($key, $value) = array_map('trim', explode('=>', $p, 2));
$ret[$key] = $value;
} else {
$ret[$i] = $p;
}
}
return [$ret, $is_assoc];
}
/**
* Returns the display/rendered value of this datafield
*
* @param bool $entities Should html entities be encoded (defaults to true)
* @return String containg the rendered value
*/
public function getDisplayValue($entities = true)
{
$value = $this->is_assoc_param
? $this->type_param[$this->getValue()]
: $this->getValue();
return $entities ? htmlReady($value) : $value;
}
}
|