diff --git a/config/app.config.php b/config/app.config.php
index 7f82d2bbd90619be48ede6becdd2d8d6b6e730f9..981b47fe44e114b0d3303dafec8e5032242ac3e3 100644
--- a/config/app.config.php
+++ b/config/app.config.php
@@ -29,6 +29,7 @@ return [
'module/university_form/bootstrap.php',
'module/teacher_form/bootstrap.php',
'module/enable_db_login/bootstrap.php',
+ 'module/admin/bootstrap.php',
],
'cache_config' => 'data/cache/config/settings.php',
];
diff --git a/config/settings/nav.global.php b/config/settings/nav.global.php
index e00917b8f95a564241ba63f2c68ce6658bc8c437..c8b514bf7f863238fbf783a6a49a796343e4f054 100644
--- a/config/settings/nav.global.php
+++ b/config/settings/nav.global.php
@@ -79,5 +79,11 @@ return [
],
],
+ 'admin' => [
+ 'adminhome' => [
+ 'label' => 'ΞΟΟΞΉΞΊΞ� ΟΡλίδα διαΟΡιΟΞΉΟΟΞ�',
+ 'route' => 'admin',
+ ],
+ ]
],
];
diff --git a/module/admin/README.md b/module/admin/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..addcf055f3bf990e854dff3e88b978d39cad6fc1
--- /dev/null
+++ b/module/admin/README.md
@@ -0,0 +1,20 @@
+# Ξ₯ΟΞΏΟΟΟΟΞ·ΞΌΞ± διαΟΡιΟΞΉΟΟΞ�
+
+Ξ Ξ±ΟΞΟΡι ΟΟΟΟΞ²Ξ±ΟΞ· ΟΞ΅ διαΟΡιΟΞΉΟΟΞΉΞΊΞΟ Ξ»Ξ΅ΞΉΟΞΏΟ
ΟΞ³Ξ―Ξ΅Ο. ΞΟΟΟΞΏΞ½ ΞΏ ΟΟΞ�ΟΟΞ·Ο ΟΞΉΟΟΞΏΟοιΡίΟΞ±ΞΉ
+ΞΌΞ΅ ΟΟλο admin ΡμΟΞ±Ξ½Ξ―ΞΆΞ΅ΟΞ±ΞΉ ΟΞΏ ΞΌΞ΅Ξ½ΞΏΟ Ξ΄ΞΉΞ±ΟΡιΟΞΉΟΟΞΉΞΊΟΞ½ λΡιΟΞΏΟ
ΟΞ³ΞΉΟΞ½.
+
+## Routes
+
+ΞΞΉΞ±ΞΈΞΟΞΉΞΌΞ± routes (paths) ΞΊΞ±ΞΉ λΡιΟΞΏΟ
ΟΞ³Ξ―Ξ΅Ο.
+
+- admin (/admin): Ξ±ΟΟΞΉΞΊΞ� ΟΡλίδα διαΟΡιΟΞΉΟΟΞ�
+
+## ΞδηγίΡΟ
+
+ΞΞΉΞ± Ξ½Ξ± Ρίναι ΟΟΞΏΟΞ²Ξ¬ΟΞΉΞΌΞΏ, ΟΟΞΟΡι:
+
+- Ξ½Ξ± ΟΟΞΏΟΞΈΞΟΞ΅ΟΞ΅ ΟΞ·Ξ½ ΟΞ±ΟΞ±ΞΊΞ¬ΟΟ Ξ³ΟΞ±ΞΌΞΌΞ� ΟΟΞΏ `acl.global.php` Ξ� `acl.local.php`,
+ΟΟΞΏ acl.guards.routes
+```
+ ['/admin', ['admin'], ['get']],
+```
diff --git a/module/admin/bootstrap.php b/module/admin/bootstrap.php
new file mode 100644
index 0000000000000000000000000000000000000000..eeb963704d002db069518a56214f26d72b4d6123
--- /dev/null
+++ b/module/admin/bootstrap.php
@@ -0,0 +1,46 @@
+<?php
+
+use Slim\App;
+use Slim\Container;
+use Slim\Http\Request;
+use Slim\Http\Response;
+
+/**
+ * gredu_labs.
+ *
+ * @link https://github.com/eellak/gredu_labs for the canonical source repository
+ *
+ * @copyright Copyright (c) 2008-2015 Greek Free/Open Source Software Society (https://gfoss.ellak.gr/)
+ * @license GNU GPLv3 http://www.gnu.org/licenses/gpl-3.0-standalone.html
+ */
+return function (App $app) {
+ $container = $app->getContainer();
+ $events = $container['events'];
+
+ $events('on', 'app.autoload', function ($autoloader) {
+ $autoloader->addPsr4('GrEduLabs\\Admin\\', __DIR__ . '/src/');
+ });
+
+ $events('on', 'app.services', function (Container $container) {
+// $nav = $container['settings']->get('navigation');
+// $nav['admin'] = [
+// 'adminhome' => [
+// 'label' => 'ΞΞΉΞ±ΟΡιΟΞΉΟΟΞ�Ο',
+// 'route' => 'admin',
+// 'icon' => 'user-secret',
+// ],
+// ];
+// $container['settings']->set('navigation', $nav);
+
+ $container[GrEduLabs\Admin\Action\Index::class] = function ($c) {
+ return new GrEduLabs\Admin\Action\Index($c['view']);
+ };
+ });
+
+ $events('on', 'app.bootstrap', function (App $app, Container $c) {
+ $view = $c->get('view');
+ $view->getEnvironment()->getLoader()->prependPath(__DIR__ . '/templates');
+ $app->get('/admin', GrEduLabs\Admin\Action\Index::class)
+ ->setName('admin');
+ });
+};
diff --git a/module/admin/src/Action/Index.php b/module/admin/src/Action/Index.php
new file mode 100644
index 0000000000000000000000000000000000000000..3bee08ff8f780d1e354eb5f2c4a89fa589dfa6c4
--- /dev/null
+++ b/module/admin/src/Action/Index.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * gredu_labs.
+ *
+ * @link https://github.com/eellak/gredu_labs for the canonical source repository
+ *
+ * @copyright Copyright (c) 2008-2015 Greek Free/Open Source Software Society (https://gfoss.ellak.gr/)
+ * @license GNU GPLv3 http://www.gnu.org/licenses/gpl-3.0-standalone.html
+ */
+
+namespace GrEduLabs\Admin\Action;
+
+use Slim\Http\Request;
+use Slim\Http\Response;
+use Slim\Views\Twig;
+
+class Index {
+
+ /**
+ * @var Twig
+ */
+ protected $view;
+
+ /**
+ * Constructor.
+ *
+ * @param Twig $view
+ */
+ public function __construct(Twig $view) {
+ $this->view = $view;
+ }
+
+ public function __invoke(Request $req, Response $res) {
+ return $this->view->render($res, 'admin/index.twig');
+ }
+
+}
diff --git a/module/admin/templates/admin/index.twig b/module/admin/templates/admin/index.twig
new file mode 100644
index 0000000000000000000000000000000000000000..731cc003bbd3ee977832ce403754356c958d2901
--- /dev/null
+++ b/module/admin/templates/admin/index.twig
@@ -0,0 +1,19 @@
+{% extends "layout.twig" %}
+
+{% block content %}
+ <div id="adminarea">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h4>ΣΡλίδα διαΟΡιΟΞΉΟΟΞ�</h4>
+ </div>
+ <div class="panel-body">
+ <p>ΞΞΉΞ±ΞΈΞΟΞΉΞΌΞ΅Ο Ξ΄ΞΉΞ±ΟΡιΟΞΉΟΟΞΉΞΊΞΟ Ξ»Ξ΅ΞΉΟΞΏΟ
ΟΞ³Ξ―Ξ΅Ο</p>
+ </div>
+ <div class="panel-footer text-center">
+ <a class="btn btn-sm btn-default" href="{{ path_for('index') }}"><span class="fa fa-home"></span> ΞΟΟΞΉΞΊΞ�</a>
+ <a class="btn btn-sm btn-primary" href="{{ path_for('admin') }}"><span class="fa fa-user-secret"></span> ΞΞΉΞ±ΟΡιΟΞΉΟΟΞ�Ο</a>
+ <a class="btn btn-sm btn-default" href="{{ path_for('user.logout') }}"><span class="fa fa-lock"></span> ΞΟΞΏΟΟνδΡΟΞ·</a>
+ </div>
+ </div>
+ </div>
+{% endblock %}
diff --git a/module/application/templates/navigation/main.twig b/module/application/templates/navigation/main.twig
index fe41fe8f4aad368ba7d568199854e33cab37484c..c73b05620cd014a142099964930df5d1e1a2be97 100644
--- a/module/application/templates/navigation/main.twig
+++ b/module/application/templates/navigation/main.twig
@@ -1,5 +1,5 @@
{% macro li(page) %}
-
+
<li role="presentation" class="{% if page.active %}active {% endif %}{{ page.class|default('') }}">
<a href="{{ page.href }}" {% if page.id %}id="{{ page.id }}"{% endif %} title="{{ page.label|striptags|e }}"
{% if page.target %}target="{{ page.target }}"{% endif %}>
@@ -24,14 +24,24 @@
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
- {% for page in nav('main') %}
- {{ macros.li(page)}}
- {% endfor %}
+ {% for page in nav('main') %}
+ {{ macros.li(page)}}
+ {% endfor %}
+ {% if not nav('admin') is empty %}
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="fa fa-user-secret"></span> ΞΞΉΞ±ΟΡιΟΞΉΟΟΞ�Ο <span class="caret"></span></a>
+ <ul class="dropdown-menu">
+ {% for page in nav('admin') %}
+ {{ macros.li(page)}}
+ {% endfor %}
+ </ul>
+ </li>
+ {% endif %}
</ul>
<ul class="nav navbar-nav navbar-right">
- {% for page in nav('authentication') %}
- {{ macros.li(page)}}
- {% endfor %}
+ {% for page in nav('authentication') %}
+ {{ macros.li(page)}}
+ {% endfor %}
</ul>
</div>
</div>