]> git.sur5r.net Git - bacula/bacula/blob - gui/baculum/protected/Web/Portlets/DirectiveListBox.php
baculum: Add listbox control and use it for base and device directives
[bacula/bacula] / gui / baculum / protected / Web / Portlets / DirectiveListBox.php
1 <?php
2 /*
3  * Bacula(R) - The Network Backup Solution
4  * Baculum   - Bacula web interface
5  *
6  * Copyright (C) 2013-2017 Kern Sibbald
7  *
8  * The main author of Baculum is Marcin Haba.
9  * The original author of Bacula is Kern Sibbald, with contributions
10  * from many others, a complete list can be found in the file AUTHORS.
11  *
12  * You may use this file and others of this release according to the
13  * license defined in the LICENSE file, which includes the Affero General
14  * Public License, v3.0 ("AGPLv3") and some additional permissions and
15  * terms pursuant to its AGPLv3 Section 7.
16  *
17  * This notice must be preserved when any source code is
18  * conveyed and/or propagated.
19  *
20  * Bacula(R) is a registered trademark of Kern Sibbald.
21  */
22
23 Prado::using('System.Web.UI.ActiveControls.TActiveLabel');
24 Prado::using('System.Web.UI.ActiveControls.TActiveListBox');
25 Prado::using('Application.Web.Portlets.DirectiveTemplate');
26
27 class DirectiveListBox extends DirectiveTemplate {
28
29         public function getValue() {
30                 $value = array();
31                 $values = $this->Directive->getSelectedIndices();
32                 $items = $this->Directive->getItems();
33                 for ($i = 0; $i < count($values); $i++) {
34                         $value[] = $items[$values[$i]]->getValue();
35                 }
36                 return $value;
37         }
38
39         public function createDirective() {
40                 $this->Label->Text = $this->getLabel();
41                 $data = $this->getData();
42                 $resource_names = $this->getResourceNames();
43                 $directive_name = $this->getDirectiveName();
44                 $resource = $this->getResource();
45                 $in_config = $this->getInConfig();
46                 $items = array();
47                 if (is_array($data)) {
48                         $items = $data;
49                 } elseif (is_array($resource_names)) {
50                         if (array_key_exists($directive_name, $resource_names)) {
51                                 $items = $resource_names[$directive_name];
52                         } elseif (array_key_exists($resource, $resource_names)) {
53                                 $items = $resource_names[$resource];
54                         }
55                 }
56                 $this->Directive->dataSource = array_combine($items, $items);
57
58                 $directive_value = $this->getDirectiveValue();
59                 $default_value = $this->getDefaultValue();
60                 if ($in_config === false) {
61                         if ($default_value !== 0) {
62                                 $directive_value = $default_value;
63                         } else {
64                                 $directive_value = array();
65                         }
66                 }
67                 $selected_indices = array();
68                 for ($i = 0; $i < count($items); $i++) {
69                         if (in_array($items[$i], $directive_value)) {
70                                 $selected_indices[] = $i;
71                         }
72                 }
73                 if (!empty($directive_value)) {
74                         $this->Directive->setSelectedIndices($selected_indices);
75                 }
76                 $this->Directive->dataBind();
77                 $validate = $this->getRequired();
78                 $this->DirectiveValidator->setVisible($validate);
79         }
80 }
81 ?>