1 <?php
3 class ConfigManagementListing extends management
4 {
6 private $base = "";
8 private $containerSelector = NULL;
9 private $itemSelector = NULL;
11 private $objectTypeStr = "";
13 function __construct($config, $ui, $parent)
14 {
15 // Set storage points - We do not have any - We just create a fake list which lists all items
16 $this->storagePoints = array("");
17 $this->rebuildListing();
19 $this->containerSelector = new ItemSelector(array(),'/root','/root');
20 $this->itemSelector = new ItemSelector(array(),'','');
22 $this->parent = &$parent;
23 }
25 function save_object()
26 {
27 $this->containerSelector->update();
28 $this->itemSelector->update();
29 }
31 function getSelectedContainer()
32 {
33 return($this->containerSelector->getBase());
34 }
36 function setContainer($dist)
37 {
38 return($this->containerSelector->setBase($dist));
39 }
41 function setItem($rel)
42 {
43 return($this->itemSelector->setBase($rel));
44 }
46 function getSelectedItem()
47 {
48 return($this->itemSelector->getBase());
49 }
52 function setContainers($containers)
53 {
54 $this->containerSelector->setBases($containers);
55 $this->containerSelector->update(TRUE);
56 }
58 function setItems($items)
59 {
60 $this->itemSelector->setBases($items);
61 $this->itemSelector->update(TRUE);
62 }
65 function renderList()
66 {
67 session::set('DEVICE_ITEMS', array());
69 $headpage = $this->getHeadpage();
70 $headpage->update();
71 $smarty = get_smarty();
73 $smarty->assign("CONTAINER", $this->containerSelector->render());
74 $smarty->assign("ITEM", $this->itemSelector->render());
75 $display = $headpage->render();
76 return($this->getHeader().$display);
78 }
81 function setListingTypes($types)
82 {
83 $str = "";
84 foreach($types as $typeData){
85 $str.= "\n<objectType>";
86 foreach($typeData as $key => $value){
87 $str .= "\n\t<{$key}>{$value}</{$key}>";
88 }
89 $str.= "\n</objectType>\n";
91 }
92 $this->objectTypeStr = $str;
93 $this->rebuildListing();
94 }
97 function rebuildListing()
98 {
100 // Handle actions (POSTs and GETs)
101 $str = $this->handleActions($this->detectPostActions());
102 if($str) return($this->getHeader().$str);
105 // Build filter
106 if (session::global_is_set(get_class($this)."_filter")){
107 $filter= session::global_get(get_class($this)."_filter");
108 } else {
109 $filter = new filter(get_template_path("DeviceConfig-filter.xml", true));
110 $filter->setObjectStorage($this->storagePoints);
111 }
112 $this->setFilter($filter);
114 // Load service xml file and fill in placeholders
115 $contents = file_get_contents(get_template_path("DeviceConfig-list.xml", true));
116 $contents = preg_replace("/%TYPES%/", $this->objectTypeStr, $contents);
117 $contents = preg_replace("/%ITEMS%/", "", $contents);
119 $headpage = new listing($contents,TRUE);
120 $headpage->setBase($this->base);
121 $headpage->setFilter($filter);
123 parent::__construct($this->config, $this->ui, "services", $headpage);
125 // Register default actions
126 $this->registerAction("new", "newEntry");
127 $this->registerAction("editEntry", "editEntry");
128 $this->registerAction("open", "openEntry");
129 $this->registerAction("apply", "applyChanges");
130 $this->registerAction("save", "saveChanges");
131 $this->registerAction("cancel", "cancelEdit");
132 $this->registerAction("cancelDelete", "cancelEdit");
133 $this->registerAction("remove", "removeEntryRequested");
134 $this->registerAction("removeConfirmed", "removeEntryConfirmed");
136 $this->registerAction("config-filter","editFilter");
137 $this->registerAction("saveFilter","saveFilter");
138 $this->registerAction("cancelFilter","cancelFilter");
140 }
142 function removeEntryRequested($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="")
143 {
144 $this->parent->removeEntry($target);
145 }
147 function openEntry($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="")
148 {
149 $this->parent->openEntry($target);
150 }
152 function editEntry($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="")
153 {
154 $this->parent->editEntry($target);
155 }
156 }
158 ?>