From 8f0e051e3492c6abc0c9895c01d1cec0449c068d Mon Sep 17 00:00:00 2001 From: hickert Date: Mon, 25 Oct 2010 13:09:20 +0000 Subject: [PATCH] Fixed problems with the item selection git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@20141 594d385d-05f5-0310-b6e9-bd551577e9d8 --- .../class_ConfigManagementDataModel.inc | 15 +++ .../class_ConfigManagementListing.inc | 92 ++++++++++++++++-- .../class_newConfigManagement.inc | 96 ++++++++++++------- 3 files changed, 159 insertions(+), 44 deletions(-) diff --git a/gosa-core/plugins/admin/newConfigManagement/class_ConfigManagementDataModel.inc b/gosa-core/plugins/admin/newConfigManagement/class_ConfigManagementDataModel.inc index 2113c46a1..a4cc53143 100644 --- a/gosa-core/plugins/admin/newConfigManagement/class_ConfigManagementDataModel.inc +++ b/gosa-core/plugins/admin/newConfigManagement/class_ConfigManagementDataModel.inc @@ -98,6 +98,21 @@ class ConfigManagementDataModel } return($res); } + + + function getItemById($id) + { + $path = NULL; + if(isset($this->idToPath[$id])){ + $path = $this->idToPath[$id]; + }else{ + return(NULL); + } + if(isset($this->data['linear'][$path])){ + return($this->data['linear'][$path]); + } + return(NULL); + } } ?> diff --git a/gosa-core/plugins/admin/newConfigManagement/class_ConfigManagementListing.inc b/gosa-core/plugins/admin/newConfigManagement/class_ConfigManagementListing.inc index 6f6d48f44..c1d4c93e4 100644 --- a/gosa-core/plugins/admin/newConfigManagement/class_ConfigManagementListing.inc +++ b/gosa-core/plugins/admin/newConfigManagement/class_ConfigManagementListing.inc @@ -7,7 +7,6 @@ class ConfigManagementListing extends management private $containerSelector = NULL; private $itemSelector = NULL; - private $objectTypeStr = ""; function __construct($config, $ui, $parent) @@ -64,17 +63,13 @@ class ConfigManagementListing extends management function renderList() { - session::set('DEVICE_ITEMS', array()); - $headpage = $this->getHeadpage(); $headpage->update(); $smarty = get_smarty(); - $smarty->assign("CONTAINER", $this->containerSelector->render()); $smarty->assign("ITEM", $this->itemSelector->render()); $display = $headpage->render(); return($this->getHeader().$display); - } @@ -90,18 +85,81 @@ class ConfigManagementListing extends management } $this->objectTypeStr = $str; - $this->rebuildListing(); } - - function rebuildListing() + + function execute() { + // Ensure that html posts and gets are kept even if we see a 'Entry islocked' dialog. + $vars = array('/^act$/','/^listing/','/^PID$/','/^FILTER_PID$/'); + session::set('LOCK_VARS_TO_USE',$vars); + + pathNavigator::registerPlugin($this); + + /* Display the copy & paste dialog, if it is currently open */ + $ret = $this->copyPasteHandler("",array()); + if($ret){ + return($this->getHeader().$ret); + } + + // Update filter + if ($this->filter) { + $this->filter->update(); + session::global_set(get_class($this)."_filter", $this->filter); + session::set('autocomplete', $this->filter); + } // Handle actions (POSTs and GETs) $str = $this->handleActions($this->detectPostActions()); if($str) return($this->getHeader().$str); + $items = $this->parent->getItemsToBeDisplayed(); + session::set('CONFIG_ITEM', $items); + + // Open single dialog objects + if(is_object($this->dialogObject)){ + if(method_exists($this->dialogObject,'save_object')) $this->dialogObject->save_object(); + if(method_exists($this->dialogObject,'execute')){ + $display = $this->dialogObject->execute(); + $display.= $this->_getTabFooter(); + return($this->getHeader().$display); + } + } + + // Display tab object. + if($this->tabObject instanceOf tabs || $this->tabObject instanceOf multi_plug){ +# $this->tabObject->save_object(); + $display = $this->tabObject->execute(); + $display.= $this->_getTabFooter(); + return($this->getHeader().$display); + } + // Set current restore base for snapshot handling. + if(is_object($this->snapHandler)){ + $bases = array(); + foreach($this->storagePoints as $sp){ + $bases[] = $sp.$this->headpage->getBase(); + } + + // No bases specified? Try base + if(!count($bases)) $bases[] = $this->headpage->getBase(); + + $this->snapHandler->setSnapshotBases($bases); + } + + // Create statistic table entry + stats::log('management', $class = get_class($this), $this->getAclCategories(), $action = 'view', + $amount = 1, $duration = (microtime(TRUE) - $this->initTime)); + + // Display list + $this->rebuildListing(); + $str = $this->renderList(); + return($str); + } + + + function rebuildListing() + { // Build filter if (session::global_is_set(get_class($this)."_filter")){ $filter= session::global_get(get_class($this)."_filter"); @@ -125,7 +183,7 @@ class ConfigManagementListing extends management // Register default actions $this->registerAction("new", "newEntry"); $this->registerAction("editEntry", "editEntry"); - $this->registerAction("open", "openEntry"); + $this->registerAction("edit", "openEntry"); $this->registerAction("apply", "applyChanges"); $this->registerAction("save", "saveChanges"); $this->registerAction("cancel", "cancelEdit"); @@ -153,6 +211,22 @@ class ConfigManagementListing extends management { $this->parent->editEntry($target); } + + + + + + + + + + + + + + + + } ?> diff --git a/gosa-core/plugins/admin/newConfigManagement/class_newConfigManagement.inc b/gosa-core/plugins/admin/newConfigManagement/class_newConfigManagement.inc index 73349b40f..de2289dfc 100644 --- a/gosa-core/plugins/admin/newConfigManagement/class_newConfigManagement.inc +++ b/gosa-core/plugins/admin/newConfigManagement/class_newConfigManagement.inc @@ -66,30 +66,9 @@ class newConfigManagement extends plugin $this->listing->save_object(); // Get the selected distribution and release from the listing widget. - $this->selectedContainer = $this->listing->getSelectedContainer(); - $this->selectedItem = $this->listing->getSelectedItem(); - - // Get a list of all available distributions and releases. - $distList = $this->getDistList(); - $releaseList = $this->getItemList(); - - // Ensure that we've valid values selected. - if(!isset($releaseList[$this->selectedItem])){ - if(count($releaseList)){ - $this->selectedItem = key($releaseList); - }else{ - $this->selectedItem = ""; - } - } - - // Update list of items within the selected container. - $this->updateItemList($this->selectedContainer); - - // Transfer checked values back to the listing class. - $this->listing->setContainer($this->selectedContainer); - $this->listing->setItem($this->selectedItem); - $this->listing->setContainers($this->getDistList()); - $this->listing->setItems($this->getItemList()); + $cont = $this->listing->getSelectedContainer(); + $item = $this->listing->getSelectedItem(); + $this->setCurrentContainer($cont, $item); } @@ -128,21 +107,57 @@ class newConfigManagement extends plugin } + + function setCurrentContainer($cont, $item) + { + $this->selectedContainer = $cont; + $this->selectedItem = $item; + + // Get a list of all available distributions and releases. + $distList = $this->getDistList(); + $releaseList = $this->getItemList(); + + // Ensure that we've valid values selected. + if(!isset($releaseList[$this->selectedItem])){ + if(count($releaseList)){ + $this->selectedItem = key($releaseList); + }else{ + $this->selectedItem = ""; + } + } + + // Update list of items within the selected container. + $this->updateItemList($this->selectedContainer); + + // Transfer checked values back to the listing class. + $this->listing->setContainer($this->selectedContainer); + $this->listing->setItem($this->selectedItem); + $this->listing->setContainers($this->getDistList()); + $this->listing->setItems($this->getItemList()); + } + + /*! \brief Generate the HTML content for this plugin. * Actually renders the listing widget.. */ function execute() { - // Get the selected release and store it in a session variable // to allow the configFilter to access it and display the // packages and items. - $path = $this->selectedContainer.$this->selectedItem; - $item = $this->dataModel->getItemByPath($path); - session::set('CONFIG_ITEM', $item); + $res = $this->listing->execute(); $this->listing->setListingTypes($this->getListingTypes()); - return($this->listing->execute()); + return($res); + } + + + function getItemsToBeDisplayed() + { + + $path = $this->selectedContainer.$this->selectedItem; + $item = $this->dataModel->getItemByPath($path); + return($item); } @@ -250,21 +265,32 @@ class newConfigManagement extends plugin - function editEntry($id) + function editEntry($ids) { - print_a($id); + foreach($ids as $id){ + echo "
Edit {$id}"; + } } - function removeEntry($id) + function removeEntry($ids) { - print_a($id); + foreach($ids as $id){ + echo "
Remove {$id}"; + } } - function openEntry($id) + function openEntry($ids) { - print_a($id); + foreach($ids as $id){ + $item = $this->dataModel->getItemById($id); + if($item){ + if(in_array($item['type'], array('Distribution', 'Release', 'Component'))){ + $this->setCurrentContainer($item['path'], $this->selectedContainer); + } + } + } } -- 2.30.2