3 * Bacula(R) - The Network Backup Solution
4 * Baculum - Bacula web interface
6 * Copyright (C) 2013-2017 Kern Sibbald
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.
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.
17 * This notice must be preserved when any source code is
18 * conveyed and/or propagated.
20 * Bacula(R) is a registered trademark of Kern Sibbald.
23 Prado::using('System.Web.UI.ActiveControls.TActiveLabel');
24 Prado::using('System.Web.UI.ActiveControls.TActiveListBox');
25 Prado::using('Application.Web.Portlets.DirectiveTemplate');
27 class DirectiveListBox extends DirectiveTemplate {
29 public function getValue() {
31 $values = $this->Directive->getSelectedIndices();
32 $items = $this->Directive->getItems();
33 for ($i = 0; $i < count($values); $i++) {
34 $value[] = $items[$values[$i]]->getValue();
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();
47 if (is_array($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];
56 $this->Directive->dataSource = array_combine($items, $items);
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;
64 $directive_value = array();
67 $selected_indices = array();
68 for ($i = 0; $i < count($items); $i++) {
69 if (in_array($items[$i], $directive_value)) {
70 $selected_indices[] = $i;
73 if (!empty($directive_value)) {
74 $this->Directive->setSelectedIndices($selected_indices);
76 $this->Directive->dataBind();
77 $validate = $this->getRequired();
78 $this->DirectiveValidator->setVisible($validate);