Code

Updated Device Stuff
authorhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Tue, 28 Sep 2010 09:29:33 +0000 (09:29 +0000)
committerhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Tue, 28 Sep 2010 09:29:33 +0000 (09:29 +0000)
-Added management list (which doesn't work right now)

git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@19825 594d385d-05f5-0310-b6e9-bd551577e9d8

gosa-plugins/goto/admin/systems/goto/Config/DeviceConfig-filter.xml [new file with mode: 0644]
gosa-plugins/goto/admin/systems/goto/Config/DeviceConfig-list.tpl [new file with mode: 0644]
gosa-plugins/goto/admin/systems/goto/Config/DeviceConfig-list.xml [new file with mode: 0644]
gosa-plugins/goto/admin/systems/goto/Config/class_DeviceConfig.inc

diff --git a/gosa-plugins/goto/admin/systems/goto/Config/DeviceConfig-filter.xml b/gosa-plugins/goto/admin/systems/goto/Config/DeviceConfig-filter.xml
new file mode 100644 (file)
index 0000000..2ad58eb
--- /dev/null
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<filterdef>
+  <definition>
+    <initial>true</initial>
+    <category>server</category>
+    <category>workstation</category>
+    <category>terminal</category>
+    <category>opsi</category>
+    <category>incoming</category>
+    <category>phone</category>
+    <category>printer</category>
+    <category>winworkstation</category>
+    <category>component</category>
+    <category>Device</category>
+    <scope>auto</scope>
+    <default>default</default>
+    <attribute>dn</attribute>
+    <attribute>objectClass</attribute>
+    <attribute>cn</attribute>
+    <attribute>description</attribute>
+    <attribute>gotoMode</attribute>
+    <attribute>FAIstate</attribute>
+    <attribute>FAIclass</attribute>
+    <attribute>macAddress</attribute>
+    <attribute>gotoLastUser</attribute>
+    <attribute>state</attribute>
+  </definition>
+
+  <search>
+    <tag>default</tag>
+    <label>Default filter</label>
+    <query>
+      <backend>SYSTEMS</backend>
+      <filter>(&amp;
+                (|(objectClass=goServer)
+                  (objectClass=gotoWorkstation)
+                  (objectClass=device)
+                  (objectClass=gotoTerminal)
+                  (objectClass=goFonHardware)
+                  (objectClass=ieee802Device)
+                  (objectClass=gotoPrinter)
+                  (objectClass=sambaSamAccount)
+                )
+                (cn=$)
+              )
+      </filter>
+    </query>
+    <autocomplete>
+      <attribute>cn</attribute>
+      <frequency>0.5</frequency>
+      <characters>3</characters>
+    </autocomplete>
+  </search>
+
+  <search>
+    <tag>all</tag>
+    <label>All systems</label>
+    <query>
+      <backend>SYSTEMS</backend>
+      <filter>(&amp;
+                (|(objectClass=goServer)
+                  (objectClass=gotoWorkstation)
+                  (objectClass=gotoTerminal)
+                  (objectClass=goFonHardware)
+                  (objectClass=ieee802Device)
+                  (objectClass=gotoPrinter)
+                  (objectClass=sambaSamAccount)
+                  (&amp;(objectClass=goHard)(ou:dn:=%systemIncomingRDN))
+                )
+                (cn=$)
+              )
+      </filter>
+    </query>
+    <query>
+      <backend>OPSIHOSTS</backend>
+      <filter>cn=$</filter>
+    </query>
+    <autocomplete>
+      <attribute>cn</attribute>
+      <frequency>0.5</frequency>
+      <characters>3</characters>
+    </autocomplete>
+  </search>
+
+
+  <search>
+    <tag>onlyOpsi</tag>
+    <label>Opsi</label>
+    <query>
+      <backend>OPSIHOSTS</backend>
+      <filter>cn=$</filter>
+    </query>
+    <autocomplete>
+      <attribute>cn</attribute>
+      <frequency>0.5</frequency>
+      <characters>3</characters>
+    </autocomplete>
+  </search>
+
+  <search>
+    <tag>incoming</tag>
+    <label>Incoming objects</label>
+    <query>
+      <backend>SYSTEMS</backend>
+      <filter>(&amp;(objectClass=goHard)(ou:dn:=%systemIncomingRDN)(cn=$))</filter>
+    </query>
+    <autocomplete>
+      <attribute>cn</attribute>
+      <frequency>0.5</frequency>
+      <characters>3</characters>
+    </autocomplete>
+  </search>
+
+</filterdef>
diff --git a/gosa-plugins/goto/admin/systems/goto/Config/DeviceConfig-list.tpl b/gosa-plugins/goto/admin/systems/goto/Config/DeviceConfig-list.tpl
new file mode 100644 (file)
index 0000000..8823cdf
--- /dev/null
@@ -0,0 +1,26 @@
+<div id="mainlist">
+
+  <div class="mainlist-header">
+   <p>{$HEADLINE}&nbsp;{$SIZELIMIT}</p>
+   <div class="mainlist-nav">
+    <table summary="{$HEADLINE}">
+     <tr>
+      <td>{$ROOT}</td>
+      <td>{$BACK}</td>
+      <td>{$HOME}</td>
+      <td>{$RELOAD}</td>
+      <td class="left-border">{t}Base{/t} {$RELEASE}</td>
+      <td class="left-border">{$ACTIONS}</td>
+      <td class="left-border">{$FILTER}</td>
+     </tr>
+    </table>
+   </div>
+  </div>
+
+  {$LIST}
+</div>
+
+<div class="clear"></div>
+
+<input type="hidden" name="ignore">
+
diff --git a/gosa-plugins/goto/admin/systems/goto/Config/DeviceConfig-list.xml b/gosa-plugins/goto/admin/systems/goto/Config/DeviceConfig-list.xml
new file mode 100644 (file)
index 0000000..917521b
--- /dev/null
@@ -0,0 +1,497 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<list>
+  <definition>
+    <departmentBrowser>true</departmentBrowser>
+    <departmentRootVisible>false</departmentRootVisible>
+    <baseMode>true</baseMode>
+    <multiSelect>true</multiSelect>
+    <template>goto/Config/DeviceConfig-list.tpl</template>
+    <label>List of systems</label>
+    <defaultSortColumn>1</defaultSortColumn>
+
+    <objectType>
+      <label>Device</label>
+      <objectClass>device</objectClass>
+      <category>Device</category>
+      <class>Device</class>
+      <image>images/lists/edit.png</image>
+    </objectType>
+
+    <objectType>
+      <label>Opsi host</label>
+      <objectClass>FAKE_OC_OpsiHost</objectClass>
+      <category>opsi</category>
+      <class>opsiGeneric</class>
+      <image>plugins/systems/images/select_winstation.png</image>
+    </objectType>
+
+    <objectType>
+      <label>New workstation</label>
+      <objectClass>FAKE_OC_NewWorkstation</objectClass>
+      <category>workstation</category>
+      <class>workgeneric</class>
+      <image>plugins/systems/images/select_workstation.png[new]</image>
+    </objectType>
+
+    <objectType>
+      <label>Locked server</label>
+      <objectClass>goServer__IS_LOCKED</objectClass>
+      <category>server</category>
+      <class>servgeneric</class>
+      <image>plugins/systems/images/select_server.png[locked]</image>
+    </objectType>
+
+    <objectType>
+      <label>Locked workstation</label>
+      <objectClass>gotoWorkstation__IS_LOCKED</objectClass>
+      <category>workstation</category>
+      <class>workgeneric</class>
+      <image>plugins/systems/images/select_workstation.png[locked]</image>
+    </objectType>
+
+    <objectType>
+      <label>Locked terminal</label>
+      <objectClass>gotoTerminal__IS_LOCKED</objectClass>
+      <category>terminal</category>
+      <class>termgeneric</class>
+      <image>plugins/systems/images/select_terminal.png[locked]</image>
+    </objectType>
+
+
+    <objectType>
+      <label>New terminal</label>
+      <objectClass>FAKE_OC_NewTerminal</objectClass>
+      <category>terminal</category>
+      <class>termgeneric</class>
+      <image>plugins/systems/images/select_terminal.png[new]</image>
+    </objectType>
+
+    <objectType>
+      <label>New unknown device</label>
+      <objectClass>FAKE_OC_ArpNewDevice</objectClass>
+      <category>incoming</category>
+      <class>ArpNewDevice</class>
+      <image>images/lists/element.png[new]</image>
+    </objectType>
+
+    <objectType>
+      <label>New device</label>
+      <objectClass>FAKE_OC_NewDevice</objectClass>
+      <category>incoming</category>
+      <class>systemManagement</class>
+      <image>images/lists/element.png[new]</image>
+    </objectType>
+
+    <objectType>
+      <label>Workstation template</label>
+      <objectClass>FAKE_OC_WorkstationTemplate</objectClass>
+      <category>workstation</category>
+      <class>workgeneric</class>
+      <image>plugins/systems/images/select_default.png</image>
+    </objectType>
+
+    <objectType>
+      <label>Terminal template</label>
+      <objectClass>FAKE_OC_TerminalTemplate</objectClass>
+      <category>terminal</category>
+      <class>termgeneric</class>
+      <image>plugins/systems/images/select_default.png</image>
+    </objectType>
+
+    <objectType>
+      <label>Windows workstation</label>
+      <objectClass>FAKE_OC_winstation</objectClass>
+      <category>winworkstation</category>
+      <class>wingeneric</class>
+      <image>plugins/systems/images/select_winstation.png</image>
+    </objectType>
+
+    <objectType>
+      <label>Server</label>
+      <objectClass>goServer</objectClass>
+      <category>server</category>
+      <class>servgeneric</class>
+      <image>plugins/systems/images/select_server.png</image>
+    </objectType>
+
+    <objectType>
+      <label>Workstation</label>
+      <objectClass>gotoWorkstation</objectClass>
+      <category>workstation</category>
+      <class>workgeneric</class>
+      <image>plugins/systems/images/select_workstation.png</image>
+    </objectType>
+
+    <objectType>
+      <label>Terminal</label>
+      <objectClass>gotoTerminal</objectClass>
+      <category>terminal</category>
+      <class>termgeneric</class>
+      <image>plugins/systems/images/select_terminal.png</image>
+    </objectType>
+
+    <objectType>
+      <label>Printer</label>
+      <objectClass>gotoPrinter</objectClass>
+      <category>printer</category>
+      <class>printgeneric</class>
+      <image>plugins/systems/images/select_printer.png</image>
+    </objectType>
+
+    <objectType>
+      <label>Phone</label>
+      <objectClass>goFonHardware</objectClass>
+      <category>phone</category>
+      <class>phoneGeneric</class>
+      <image>plugins/systems/images/select_phone.png</image>
+    </objectType>
+
+    <objectType>
+      <label>Component</label>
+      <objectClass>ieee802Device</objectClass>
+      <category>component</category>
+      <class>componentGeneric</class>
+      <image>plugins/systems/images/select_component.png</image>
+    </objectType>
+
+  </definition>
+
+  <table>
+    <layout>|20px;c|||80px|170px;r|</layout>
+
+    <department>
+      <value>%{filter:objectType(dn,objectClass)}</value>
+    </department>
+
+    <department>
+      <value>%{filter:departmentLink(row,dn,description)}</value>
+      <span>2</span>
+    </department>
+
+    <column>
+      <value>%{filter:objectType(dn,objectClass)}</value>
+    </column>
+
+    <column>
+      <label>Name</label>
+      <sortAttribute>cn</sortAttribute>
+      <sortType>string</sortType>
+      <value>%{filter:filterLink(row,dn,"%s",cn,pid)}</value>
+      <export>true</export>
+    </column>
+
+    <column>
+      <label>Description</label>
+      <sortAttribute>description</sortAttribute>
+      <sortType>string</sortType>
+      <value>%{filter:filterSystemDescription(row,dn,pid,state,description)}</value>
+      <export>true</export>
+    </column>
+
+    <column>
+      <label>Release</label>
+      <sortAttribute>description</sortAttribute>
+      <sortType>string</sortType>
+      <value>%{filter:systemRelease(row,dn,"%s",objectClass,FAIclass)}</value>
+      <export>true</export>
+    </column>
+
+    <column>
+      <label>Actions</label>
+      <value>%{filter:actions(dn,row,objectClass)}</value>
+    </column>
+
+  </table>
+
+  <actionmenu>
+
+    <action>
+     <type>sub</type>
+     <image>images/lists/element.png[new]</image>
+     <label>Create</label>
+
+     <action>
+      <name>new_device</name>
+      <type>entry</type>
+      <image>images/lists/edit.png</image>
+      <label>Device</label>
+      <depends>Device</depends>
+     </action>
+
+     <action>
+      <name>new_goServer</name>
+      <type>entry</type>
+      <image>plugins/systems/images/select_server.png[new]</image>
+      <label>Server</label>
+      <depends>servgeneric</depends>
+     </action>
+
+     <action>
+      <name>new_gotoWorkstation</name>
+      <type>entry</type>
+      <image>plugins/systems/images/select_workstation.png[new]</image>
+      <label>Workstation</label>
+      <depends>workgeneric</depends>
+     </action>
+
+     <action>
+      <name>new_gotoTerminal</name>
+      <type>entry</type>
+      <image>plugins/systems/images/select_terminal.png[new]</image>
+      <label>Terminal</label>
+      <depends>termgeneric</depends>
+     </action>
+
+     <action>
+      <name>new_gotoPrinter</name>
+      <type>entry</type>
+      <image>plugins/systems/images/select_printer.png[new]</image>
+      <label>Network printer</label>
+      <depends>printgeneric</depends>
+     </action>
+
+     <action>
+      <name>new_goFonHardware</name>
+      <type>entry</type>
+      <image>plugins/systems/images/select_phone.png[new]</image>
+      <label>Phone</label>
+      <depends>phoneGeneric</depends>
+     </action>
+
+     <action>
+      <name>new_ieee802Device</name>
+      <type>entry</type>
+      <image>plugins/systems/images/select_component.png[new]</image>
+      <label>Network device</label>
+      <depends>componentGeneric</depends>
+     </action>
+
+     <action>
+      <name>new_FAKE_OC_OpsiHost</name>
+      <type>entry</type>
+      <image>plugins/systems/images/select_winstation.png[new]</image>
+      <label>Opsi client</label>
+      <depends>opsi</depends>
+     </action>
+    </action>
+
+    <action>
+      <type>separator</type>
+    </action>
+
+    <action>
+     <type>sub</type>
+     <image>images/rocket.png</image>
+     <label>Trigger action</label>
+
+      <action>
+        <name>T_DaemonEvent_halt</name>
+        <depends>DaemonEvent_halt</depends>
+        <type>entry</type>
+        <image>images/lists/reload.png</image>
+        <label>Halt </label>
+      </action>
+
+      <action>
+        <name>T_DaemonEvent_reboot</name>
+        <depends>DaemonEvent_reboot</depends>
+        <type>entry</type>
+        <image>images/lists/reload.png</image>
+        <label>Reboot</label>
+      </action>
+
+      <action>
+        <name>T_DaemonEvent_wakeup</name>
+        <depends>DaemonEvent_wakeup</depends>
+        <type>entry</type>
+        <image>images/lists/on.png</image>
+        <label>Wakeup</label>
+      </action>
+
+      <action>
+        <name>T_DaemonEvent_update</name>
+        <depends>DaemonEvent_update</depends>
+        <type>entry</type>
+        <image>plugins/goto/images/update.png</image>
+        <label>Update</label>
+      </action>
+
+      <action>
+        <name>T_DaemonEvent_lock</name>
+        <depends>DaemonEvent_lock</depends>
+        <type>entry</type>
+        <image>images/lists/locked.png</image>
+        <label>Lock</label>
+      </action>
+
+      <action>
+        <name>T_DaemonEvent_activate</name>
+        <depends>DaemonEvent_activate</depends>
+        <type>entry</type>
+        <image>images/lists/unlocked.png</image>
+        <label>Activate</label>
+      </action>
+
+      <action>
+        <name>T_DaemonEvent_reinstall</name>
+        <depends>DaemonEvent_reinstall</depends>
+        <type>entry</type>
+        <image>plugins/goto/images/reinstall.png</image>
+        <label>Reinstall</label>
+      </action>
+
+
+    </action>
+
+
+
+    <action>
+     <type>sub</type>
+     <image>plugins/systems/images/clock.png</image>
+     <label>Schedule action</label>
+
+      <action>
+        <name>S_DaemonEvent_halt</name>
+        <depends>DaemonEvent_halt</depends>
+        <type>entry</type>
+        <image>images/lists/off.png</image>
+        <label>Halt</label>
+      </action>
+
+      <action>
+        <name>S_DaemonEvent_reboot</name>
+        <depends>DaemonEvent_reboot</depends>
+        <type>entry</type>
+        <image>images/lists/reload.png</image>
+        <label>Reboot</label>
+      </action>
+
+      <action>
+        <name>S_DaemonEvent_wakeup</name>
+        <depends>DaemonEvent_wakeup</depends>
+        <type>entry</type>
+        <image>images/lists/on.png</image>
+        <label>Wakeup</label>
+      </action>
+
+      <action>
+        <name>S_DaemonEvent_update</name>
+        <depends>DaemonEvent_update</depends>
+        <type>entry</type>
+        <image>plugins/goto/images/update.png</image>
+        <label>Update</label>
+      </action>
+
+      <action>
+        <name>S_DaemonEvent_lock</name>
+        <depends>DaemonEvent_lock</depends>
+        <type>entry</type>
+        <image>images/lists/locked.png</image>
+        <label>Lock</label>
+      </action>
+
+      <action>
+        <name>S_DaemonEvent_activate</name>
+        <depends>DaemonEvent_activate</depends>
+        <type>entry</type>
+        <image>images/lists/unlocked.png</image>
+        <label>Activate</label>
+      </action>
+
+      <action>
+        <name>S_DaemonEvent_reinstall</name>
+        <depends>DaemonEvent_reinstall</depends>
+        <type>entry</type>
+        <image>plugins/goto/images/reinstall.png</image>
+        <label>Reinstall</label>
+      </action>
+
+    </action>
+
+    <action>
+      <type>separator</type>
+    </action>
+
+    <action>
+      <name>activateMultiple</name>
+      <depends>DaemonEvent_activate</depends>
+      <type>entry</type>
+      <image>images/lists/unlocked.png</image>
+      <label>Activate systems</label>
+    </action>
+
+    <action>
+      <name>remove</name>
+      <type>entry</type>
+      <image>images/lists/trash.png</image>
+      <label>Remove</label>
+    </action>
+
+    <action>
+      <type>exporter</type>
+    </action>
+
+    <action>
+      <type>separator</type>
+    </action>
+
+    <action>
+      <type>copypaste</type>
+    </action>
+
+    <action>
+      <type>snapshot</type>
+    </action>
+
+  </actionmenu>
+
+  <actiontriggers snapshot="true" copypaste="true">
+
+    <action>
+      <name>setPassword</name>
+      <type>entry</type>
+      <objectclass>FAKE_OC_PWD_changeAble</objectclass>
+      <image>images/lists/key.png</image>
+      <label>Change password</label>
+    </action>
+
+
+    <action>
+      <name>createISO</name>
+      <type>entry</type>
+      <objectclass>gotoWorkstation</objectclass>
+      <objectclass>FAIobject</objectclass>
+      <image>plugins/systems/images/cdrom.png</image>
+      <acl>workstation/workgeneric[createFAICD:w]</acl>
+      <label>Create ISO</label>
+    </action>
+
+    <action>
+      <name>cp</name>
+      <type>copypaste</type>
+    </action>
+
+    <action>
+      <name>edit</name>
+      <type>entry</type>
+      <image>images/lists/edit.png</image>
+      <label>Edit role</label>
+    </action>
+
+    <action>
+      <name>snapshot</name>
+      <type>snapshot</type>
+    </action>
+
+    <action>
+      <name>remove</name>
+      <type>entry</type>
+      <image>images/lists/trash.png</image>
+      <acl>%acl[d]</acl>
+      <label>Remove system</label>
+    </action>
+
+  </actiontriggers>
+
+</list>
index f080e1f3259426cfc6e8d7f950041647551ef913..7ae103d7762b0a03b9aad652a48d9066301b27b7 100644 (file)
@@ -2,7 +2,7 @@
 
 /*! \brief  A GOsa plugin which generates a device configuration dialog  
  */
-class DeviceConfig extends plugin
+class DeviceConfig extends management
 {
     private $TemplateEngine = NULL;
     private $idToName = array();
@@ -11,7 +11,10 @@ class DeviceConfig extends plugin
     private $currentItem = array();
 
     private $navigationList = NULL;
-    
+    public $pl_notify;
+    public $read_only;
+
+    private $itemContainerSelector = NULL;
 
     /*! \brief  Constructs the device configuration plugin 
      *  @param  Config  The GOsa configuration object.
@@ -24,6 +27,10 @@ class DeviceConfig extends plugin
         $this->TemplateEngine->setTemplate('puppet.tpl');
         $this->config = $config;
 
+        // Set storage points - We do not have any - We just create a fake list which lists all items
+        $this->storagePoints = array("");
+        $this->itemContainerSelector = new releaseSelector(array('cn=root'=>''), 'cn=root', 'cn=root');
+
         $this->navigationList= new sortableListing();
         $this->navigationList->setDeleteable(true);
         $this->navigationList->setEditable(true);
@@ -33,7 +40,6 @@ class DeviceConfig extends plugin
         $this->navigationList->setAcl("rwcdm");
         $this->navigationList->sortingEnabled(FALSE);
 
-
         // CREATE Dummy entry 
 
         $str = '{
@@ -130,9 +136,107 @@ class DeviceConfig extends plugin
                 );
 
         $this->setCurrentItem('root');
+        $this->rebuildListing();
+    }
+
+
+    /*! \brief   Overridden render method of class mangement.
+     *            this allows us to add a release selection box.
+     */
+    function renderList()
+    {
+        $this->rebuildListing();
+        $filter = $this->getFilter();
+        $headpage = $this->getHeadpage();
+        $this->itemContainerSelector->update();
+        $headpage->setBase('test');
+        $headpage->update();
+        $smarty = get_smarty();
+        $smarty->assign("RELEASE", $this->itemContainerSelector->render());
+        $display = $headpage->render();
+        return($this->getHeader().$display);
+    }
+
+
+    function getContainerList($array = NULL, $base = "")
+    {
+        $array = ($array == NULL)?$this->currentItemValues['root']: $array;
+        $ret = array('cn=root' => '');
+        $name = $array['name'];
+        $ret["cn={$name}{$base}"] = $array['type'];
+        if(count($array['children'])){
+            $base = ",cn={$name}{$base}";
+            foreach($array['children'] as $subItem){
+                $ret = array_merge($ret, $this->getContainerList($subItem, $base));
+            }
+        }
+        return($ret);    
+    }
+    
+
+    function rebuildListing()
+    {
+        // Collect item container list to be able to render the fake-base selector
+        $this->itemContainerSelector->setBases($this->getContainerList());
+        $this->itemContainerSelector->update(true);
+
+#        print_a($this->getContainerList());
+
+        // Build filter
+        if (session::global_is_set(get_class($this)."_filter")){
+            $filter= session::global_get(get_class($this)."_filter");
+        } else {
+            $filter = new filter(get_template_path("goto/Config/DeviceConfig-filter.xml", true));
+            $filter->setObjectStorage($this->storagePoints);
+        }
+        $this->setFilter($filter);
+
+
+        // Load service xml file and fill in placeholders
+        $contents =file_get_contents(get_template_path("goto/Config/DeviceConfig-list.xml", true));
+#       $template = "
+#           <action>
+#           <name>instantNew_%s</name>
+#           <type>entry</type>
+#           <label>%s</label>
+#           </action>";
+#       $serviceList = "";
+#
+#       // Sort entries by alphabet
+#       $list = array();
+#       $services = $this->getAllUnusedServices();
+#       foreach($services as $name => $desc){
+#           $list[_($desc).$name] = $name;
+#       }
+#       ksort($list);
+#
+#       // Create menu entries -> create -> services[]
+#       foreach($list as $name){
+#           $desc = $services[$name];
+#           $serviceList.= sprintf($template, $name,_($desc));
+#       }
+#
+#       if(!empty($serviceList)){
+#           $serviceList = "
+#               <action>
+#               <type>sub</type>
+#               <image>images/lists/element.png[new]</image>
+#               <label>Create</label>
+#               {$serviceList}
+#           </action>
+#               ";
+#
+#       }
+#
+#       $contents = preg_replace("/%SERVICES%/",$serviceList, $contents);
+        $headpage = new listing($contents,TRUE);
+        $headpage->setFilter($filter);
+
+        parent::__construct($this->config, $this->ui, "services", $headpage);
     }
 
 
+
     /*! \brief      Prepares an item list which can then be used in 
      *               sortableListings to display the items of this configuration.
      *  @return     Array   Containing 'data' and 'lData' for a sortableListing.
@@ -219,10 +323,12 @@ class DeviceConfig extends plugin
     }
 
 
+
+
     /*! \brief  Renders the HTML content for the device-config plugin. 
      *  @return String  The generated HTML code. 
      */
-    function execute()
+    function _execute()
     {
         $smarty = get_smarty();
 
@@ -277,5 +383,22 @@ class DeviceConfig extends plugin
             $this->setCurrentItem($item['name']);
         }
     }
+
+       /*! \brief    Forward plugin acls
+     */
+    function set_acl_base($base)
+    {
+        $this->acl_base = $base;
+    }
+
+
+    /*! \brief    Forward plugin acls
+     */
+    function set_acl_category($category)
+    {
+        $this->acl_category = $category;
+    }
+
+    function save(){}
 }
 ?>