From 360ad02dc699056639137475fe3127d687fc58f2 Mon Sep 17 00:00:00 2001 From: ThomasDartsch Date: Wed, 7 Aug 2019 14:50:54 +0200 Subject: [PATCH] initial commit --- README.md | 14 +++++ composer.json | 38 ++++++++++++++ .../admin/de/disableadminelements_lang.php | 10 ++++ .../Controller/Admin/NavigationTree.php | 51 +++++++++++++++++++ src/metadata.php | 42 +++++++++++++++ 5 files changed, 155 insertions(+) create mode 100644 README.md create mode 100644 composer.json create mode 100644 src/Application/views/admin/de/disableadminelements_lang.php create mode 100644 src/Modules/Application/Controller/Admin/NavigationTree.php create mode 100644 src/metadata.php diff --git a/README.md b/README.md new file mode 100644 index 0000000..aa75bac --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# DisableAdminElements +Hide unused menu items in the oxid eshop admin + +## Features + +* you can hide any element of the xml files (e.g. menu.xml) like navigation or tab elements +* you only need the id of the element node (e.g. 'tbclorder_downloads' or 'mxwrapping') + + +## Install + +* Run this composer statement in your shop. Adjust this instruction if your installation requires it. + + `composer require d3/disableadminelements --update-no-dev` diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..c09ec23 --- /dev/null +++ b/composer.json @@ -0,0 +1,38 @@ +{ + "name": "d3/disableadminelements", + "description": "Ausblenden von Menuepunkten im Admin", + "type": "oxideshop-module", + "version": "1.0", + "keywords": [ + "oxid", + "modules", + "eShop", + "d3" + ], + "authors": [ + { + "name": "D3 Data Development (Inh. Thomas Dartsch)", + "email": "info@shopmodule.com", + "homepage": "http://www.d3data.de", + "role": "Owner" + } + ], + "homepage": "https://www.oxidmodule.com/", + "license": [ + "GPL-3.0-or-later" + ], + "extra": { + "oxideshop": { + "source-directory": "/src", + "target-directory": "d3/disableadminelements" + } + }, + "require": { + "oxid-esales/oxideshop-metapackage-ce": "~6.0.0 || ~6.1.0" + }, + "autoload": { + "psr-4": { + "D3\\DisableAdminElements\\": "../../../source/modules/d3/disableadminelements" + } + } +} diff --git a/src/Application/views/admin/de/disableadminelements_lang.php b/src/Application/views/admin/de/disableadminelements_lang.php new file mode 100644 index 0000000..d3475e9 --- /dev/null +++ b/src/Application/views/admin/de/disableadminelements_lang.php @@ -0,0 +1,10 @@ + 'UTF-8', + 'SHOP_MODULE_GROUP_d3disableAdminElements_group' => 'Einstellungen', + 'SHOP_MODULE_d3disableAdminElements_elemtentlist' => 'Trage hier alle Idents (id) der auszublendenen Menüpunkte aus der menu.xml ein. z.B. "tbclorder_downloads"', + +); diff --git a/src/Modules/Application/Controller/Admin/NavigationTree.php b/src/Modules/Application/Controller/Admin/NavigationTree.php new file mode 100644 index 0000000..55c10cc --- /dev/null +++ b/src/Modules/Application/Controller/Admin/NavigationTree.php @@ -0,0 +1,51 @@ + + * @link http://www.oxidmodule.com + */ + +namespace D3\DisableAdminElements\Modules\Application\Controller\Admin; + +use OxidEsales\Eshop\Core\Registry; +use DOMXPath; + +class NavigationTree extends NavigationTree_parent +{ + + /** + * clean empty nodes from tree + * + * @param object $dom dom object + * @param string $parentXPath parent xpath + * @param string $childXPath child xpath from parent + */ + protected function _cleanEmptyParents($dom, $parentXPath, $childXPath) + { + parent::_cleanEmptyParents($dom, $parentXPath, $childXPath); + + $xPath = new DomXPath($dom); + $nodeList = $xPath->query($parentXPath); + + foreach ($nodeList as $node) { + $id = $node->getAttribute('id'); + $childList = $xPath->query("{$parentXPath}[@id='$id']/$childXPath"); + + $aListOfDisabledElements = Registry::getConfig()->getShopConfVar( 'd3disableAdminElements_elemtentlist'); + + foreach($childList as $id => $node) { + + if (in_array($node->getAttribute('id'), $aListOfDisabledElements) ) { + $node->parentNode->removeChild($node); + } + } + + } + + } +} \ No newline at end of file diff --git a/src/metadata.php b/src/metadata.php new file mode 100644 index 0000000..d42e8b7 --- /dev/null +++ b/src/metadata.php @@ -0,0 +1,42 @@ + 'disableadminelements', + 'title' => + (class_exists(d3utils::class) ? d3utils::getInstance()->getD3Logo() : 'D³') . ' Ausblenden von ungenutzen Menüpunkten im Admin', + 'description' => array( + 'de' => 'Tragen Sie in den Einstellungen die id der gewünschten Elemente (Menüpunkte, Tabs etc.) aus den menu.xml Dateien ein und das jeweilige Element wird für alle Adminbenutzer ausgeblendet.', + 'en' => '', + ), + 'thumbnail' => 'picture.png', + 'version' => '1.0', + 'author' => 'D³ Data Development (Inh.: Thomas Dartsch)', + 'email' => 'support@shopmodule.com', + 'url' => 'http://www.oxidmodule.com/', + 'extend' => [ + NavigationTree::class => D3NavigationTree::class, + ], + + 'settings' => array( + + array( + 'group' => 'd3disableAdminElements_group', + 'name' => 'd3disableAdminElements_elemtentlist', + 'type' => 'arr', + 'value' => array('tbclorder_downloads', 'tbclarticle_files'), + ), + + ), + +); \ No newline at end of file