From 85c014fcab4c471809476a11569f7128aa5b242a Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Sun, 2 Jun 2019 21:13:38 +0200 Subject: [PATCH] prepare for organigram --- Admin/Install/Navigation.install.json | 131 +++++++++++++--------- Admin/Routes/Web/Backend.php | 11 ++ Controller/BackendController.php | 38 +++++-- Models/PermissionState.php | 1 + Theme/Backend/Lang/Navigation.en.lang.php | 1 + Theme/Backend/organigram.tpl.php | 19 ++++ 6 files changed, 135 insertions(+), 66 deletions(-) create mode 100644 Theme/Backend/organigram.tpl.php diff --git a/Admin/Install/Navigation.install.json b/Admin/Install/Navigation.install.json index 255c7a0..674eac8 100644 --- a/Admin/Install/Navigation.install.json +++ b/Admin/Install/Navigation.install.json @@ -18,17 +18,36 @@ "pid": "/", "type": 2, "subtype": 1, + "name": "Organigram", + "uri": "{/prefix}organization/organigram?{?}", + "target": "self", + "icon": null, + "order": 1, + "from": "Organization", + "permission": { + "permission": 2, + "type": null, + "element": null + }, + "parent": 1004701001, + "children": [] + }, + { + "id": 1004703001, + "pid": "/", + "type": 2, + "subtype": 1, "name": "Units", "uri": "{/prefix}organization/unit/list?{?}", "target": "self", "icon": null, - "order": 1, + "order": 5, "from": "Organization", "permission": { "permission": 2, "type": null, "element": null }, "parent": 1004701001, "children": [ { - "id": 1004702101, + "id": 1004703101, "pid": "/organization/unit", "type": 3, "subtype": 1, @@ -39,62 +58,16 @@ "order": 5, "from": "Organization", "permission": { "permission": 2, "type": null, "element": null }, - "parent": 1004702001, - "children": [] - }, - { - "id": 1004702102, - "pid": "/organization/unit", - "type": 3, - "subtype": 1, - "name": "Create", - "uri": "{/prefix}organization/unit/create?{?}", - "target": "self", - "icon": null, - "order": 25, - "from": "Organization", - "permission": { "permission": 4, "type": null, "element": null }, - "parent": 1004702001, - "children": [] - } - ] - }, - { - "id": 1004703001, - "pid": "/", - "type": 2, - "subtype": 1, - "name": "Departments", - "uri": "{/prefix}organization/department/list?{?}", - "target": "self", - "icon": null, - "order": 5, - "from": "Organization", - "permission": { "permission": 2, "type": null, "element": null }, - "parent": 1004701001, - "children": [ - { - "id": 1004703101, - "pid": "/organization/department", - "type": 3, - "subtype": 1, - "name": "List", - "uri": "{/prefix}organization/department/list?{?}", - "target": "self", - "icon": null, - "order": 5, - "from": "Organization", - "permission": { "permission": 2, "type": null, "element": null }, "parent": 1004703001, "children": [] }, { "id": 1004703102, - "pid": "/organization/department", + "pid": "/organization/unit", "type": 3, "subtype": 1, "name": "Create", - "uri": "{/prefix}organization/department/create?{?}", + "uri": "{/prefix}organization/unit/create?{?}", "target": "self", "icon": null, "order": 25, @@ -110,22 +83,22 @@ "pid": "/", "type": 2, "subtype": 1, - "name": "Positions", - "uri": "{/prefix}organization/position/list?{?}", + "name": "Departments", + "uri": "{/prefix}organization/department/list?{?}", "target": "self", "icon": null, - "order": 20, + "order": 10, "from": "Organization", "permission": { "permission": 2, "type": null, "element": null }, "parent": 1004701001, "children": [ { "id": 1004704101, - "pid": "/organization/position", + "pid": "/organization/department", "type": 3, "subtype": 1, "name": "List", - "uri": "{/prefix}organization/position/list?{?}", + "uri": "{/prefix}organization/department/list?{?}", "target": "self", "icon": null, "order": 5, @@ -136,6 +109,52 @@ }, { "id": 1004704102, + "pid": "/organization/department", + "type": 3, + "subtype": 1, + "name": "Create", + "uri": "{/prefix}organization/department/create?{?}", + "target": "self", + "icon": null, + "order": 25, + "from": "Organization", + "permission": { "permission": 4, "type": null, "element": null }, + "parent": 1004704001, + "children": [] + } + ] + }, + { + "id": 1004705001, + "pid": "/", + "type": 2, + "subtype": 1, + "name": "Positions", + "uri": "{/prefix}organization/position/list?{?}", + "target": "self", + "icon": null, + "order": 20, + "from": "Organization", + "permission": { "permission": 2, "type": null, "element": null }, + "parent": 1004701001, + "children": [ + { + "id": 1004705101, + "pid": "/organization/position", + "type": 3, + "subtype": 1, + "name": "List", + "uri": "{/prefix}organization/position/list?{?}", + "target": "self", + "icon": null, + "order": 5, + "from": "Organization", + "permission": { "permission": 2, "type": null, "element": null }, + "parent": 1004705001, + "children": [] + }, + { + "id": 1004705102, "pid": "/organization/position", "type": 3, "subtype": 1, @@ -146,7 +165,7 @@ "order": 25, "from": "Organization", "permission": { "permission": 4, "type": null, "element": null }, - "parent": 1004704001, + "parent": 1004705001, "children": [] } ] diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php index 1bc20a3..ba1defb 100644 --- a/Admin/Routes/Web/Backend.php +++ b/Admin/Routes/Web/Backend.php @@ -6,6 +6,17 @@ use phpOMS\Account\PermissionType; use phpOMS\Router\RouteVerb; return [ + '^.*/organization/organigram.*$' => [ + [ + 'dest' => '\Modules\Organization\Controller\BackendController:viewOrganigram', + 'verb' => RouteVerb::GET, + 'permission' => [ + 'module' => BackendController::MODULE_NAME, + 'type' => PermissionType::READ, + 'state' => PermissionState::ORGANIGRAM, + ], + ], + ], '^.*/organization/unit/list.*$' => [ [ 'dest' => '\Modules\Organization\Controller\BackendController:viewUnitList', diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 5a9f71f..3d619e8 100644 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -49,7 +49,7 @@ final class BackendController extends Controller $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Organization/Theme/Backend/unit-list'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004702001, $request, $response)); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004703001, $request, $response)); $view->addData('list:elements', UnitMapper::getAll()); @@ -71,11 +71,10 @@ final class BackendController extends Controller $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Organization/Theme/Backend/unit-profile'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004702001, $request, $response)); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004703001, $request, $response)); $selectorView = new \Modules\Organization\Theme\Backend\Components\UnitTagSelector\UnitTagSelectorView($this->app, $request, $response); $view->addData('unit-selector', $selectorView); - $view->addData('unit', UnitMapper::get((int) $request->getData('id'))); $editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app, $request, $response); @@ -84,6 +83,25 @@ final class BackendController extends Controller return $view; } + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return RenderableInterface + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function viewOrganigram(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface + { + $view = new View($this->app, $request, $response); + + $view->setTemplate('/Modules/Organization/Theme/Backend/organigram'); + + return $view; + } + /** * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -99,7 +117,7 @@ final class BackendController extends Controller $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Organization/Theme/Backend/unit-create'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004702001, $request, $response)); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004703001, $request, $response)); $selectorView = new \Modules\Organization\Theme\Backend\Components\UnitTagSelector\UnitTagSelectorView($this->app, $request, $response); $view->addData('unit-selector', $selectorView); @@ -125,7 +143,7 @@ final class BackendController extends Controller $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Organization/Theme/Backend/department-list'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004703001, $request, $response)); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004704001, $request, $response)); $view->addData('list:elements', DepartmentMapper::getAll()); @@ -147,7 +165,7 @@ final class BackendController extends Controller $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Organization/Theme/Backend/department-profile'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004703001, $request, $response)); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004704001, $request, $response)); $selectorView = new \Modules\Organization\Theme\Backend\Components\DepartmentTagSelector\DepartmentTagSelectorView($this->app, $request, $response); $view->addData('department-selector', $selectorView); @@ -178,7 +196,7 @@ final class BackendController extends Controller $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Organization/Theme/Backend/department-create'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004703001, $request, $response)); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004704001, $request, $response)); $selectorView = new \Modules\Organization\Theme\Backend\Components\DepartmentTagSelector\DepartmentTagSelectorView($this->app, $request, $response); $view->addData('department-selector', $selectorView); @@ -207,7 +225,7 @@ final class BackendController extends Controller $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Organization/Theme/Backend/position-list'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004704001, $request, $response)); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004705001, $request, $response)); $view->addData('list:elements', PositionMapper::getAll()); @@ -229,7 +247,7 @@ final class BackendController extends Controller $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Organization/Theme/Backend/position-profile'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004704001, $request, $response)); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004705001, $request, $response)); $selectorView = new \Modules\Organization\Theme\Backend\Components\PositionTagSelector\PositionTagSelectorView($this->app, $request, $response); $view->addData('position-selector', $selectorView); @@ -260,7 +278,7 @@ final class BackendController extends Controller $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Organization/Theme/Backend/position-create'); - $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004704001, $request, $response)); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1004705001, $request, $response)); $selectorView = new \Modules\Organization\Theme\Backend\Components\PositionTagSelector\PositionTagSelectorView($this->app, $request, $response); $view->addData('position-selector', $selectorView); diff --git a/Models/PermissionState.php b/Models/PermissionState.php index 9d95e46..39efefc 100644 --- a/Models/PermissionState.php +++ b/Models/PermissionState.php @@ -29,4 +29,5 @@ abstract class PermissionState extends Enum public const UNIT = 1; public const DEPARTMENT = 2; public const POSITION = 3; + public const ORGANIGRAM = 4; } diff --git a/Theme/Backend/Lang/Navigation.en.lang.php b/Theme/Backend/Lang/Navigation.en.lang.php index 4a18901..77ab833 100644 --- a/Theme/Backend/Lang/Navigation.en.lang.php +++ b/Theme/Backend/Lang/Navigation.en.lang.php @@ -12,6 +12,7 @@ */ return ['Navigation' => [ 'Departments' => 'Departments', + 'Organigram' => 'Organigram', 'Organization' => 'Organization', 'Positions' => 'Positions', 'Units' => 'Units', diff --git a/Theme/Backend/organigram.tpl.php b/Theme/Backend/organigram.tpl.php new file mode 100644 index 0000000..74fa83b --- /dev/null +++ b/Theme/Backend/organigram.tpl.php @@ -0,0 +1,19 @@ + +
asdf +
\ No newline at end of file