diff --git a/application/bootstrap.php b/application/bootstrap.php index b3e6461d2eb3776ce842f1c7ab88e39cd94993bc..1926774c7fe5c0348e243fe75e5f76ec501c22f6 100644 --- a/application/bootstrap.php +++ b/application/bootstrap.php @@ -302,3 +302,28 @@ Route::set('tchr:profile', 'teacher/profile(/<action>(/<id>))', array('action' = 'controller' => 'profile', 'action' => 'show' )); + +/* --------------- Администрирование ---------------- */ +Route::set('admin:log', 'admin/log(/<action>(/<id>))', array('action' => '(user|kohana)', 'id' => '[0-9]+')) + ->defaults(array( + 'directory' => 'admin', + 'controller' => 'log', + 'action' => 'all' + )); + +Route::set('admin:requests', 'admin/requests(/<action>(/<id>))', array('action' => '(errors|remark|restore)', 'id' => '[0-9]+')) + ->defaults(array( + 'directory' => 'admin', + 'controller' => 'request', + 'action' => 'all' + )); + +Route::set('admin:process', 'admin/<controller>(/<action>(/<id>))', + array( + 'controller' => '(students|teachers|disciplines|semestr)', + 'id' => '[0-9]+' + )) + ->defaults(array( + 'directory' => 'admin', + 'action' => 'index' + )); \ No newline at end of file diff --git a/application/classes/Controller/Admin/Index.php b/application/classes/Controller/Admin/Index.php new file mode 100644 index 0000000000000000000000000000000000000000..aaf788af789b84504015735603237d2a5cf6a8fb --- /dev/null +++ b/application/classes/Controller/Admin/Index.php @@ -0,0 +1,21 @@ +<?php defined('SYSPATH') or die('No direct script access.'); + +class Controller_Teacher_Index extends Controller_UserEnvi { + + public function action_index() + { + $twig = Twig::factory('teacher/index'); + + // ??? + + $twig->User = $this->UserInfo; + $this->response->body($twig); + } + + public function action_settings() { + $twig = Twig::factory('settings'); + $twig->User = $this->UserInfo; + $this->response->body($twig); + } +} + \ No newline at end of file diff --git a/application/views/admin/base.twig b/application/views/admin/base.twig new file mode 100644 index 0000000000000000000000000000000000000000..b812dc5dae0b792265967500d17161fcf0999045 --- /dev/null +++ b/application/views/admin/base.twig @@ -0,0 +1,71 @@ +{% macro message(type, title, message) %} +<div class="{{ type }}"> + <div class="{{ type }}_top"> + <div class="{{ type }}_top_title">{{ title }}</div> + </div> + <div class="{{ type }}_content"> + {{ message }} + </div> +</div> +{% endmacro %} + +{% import 'admin/base' as admin %} +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> + <title>{% block title %}{% endblock %} | {{ System.Title }}</title> + {{ HTML.style('media/css/admin/base.css')|raw }} + {{ HTML.style('media/css/admin/macro.css')|raw }} + {{ HTML.script('media/js/jquery-1.11.1.min.js')|raw }} + {% block media %}{% endblock %} +</head> +<body> +<div id="wrap"> + <div class="header_wrapper"> + <div class="header"> + <div class="top_logo"> + {{ HTML.anchor('/', System.Title, {'title': 'Перейти РЅР° главную'})|raw }} + </div> + <div class="top_name_faculty"> + Панель администратора + </div> + <div class="top_user"> + {{ User.FirstName }} {{ User.LastName }} + {{ HTML.anchor('admin/logout', 'Выход РёР· панели администратора', {'title': 'Вернуться РЅР° сайт'})|raw }} + </div> + </div> + </div> + + <div class="layout_wrapper"> + <div class="layout"> + <div class="menu_wrapper"> + {% include 'admin/menu.structure' %} + {% include 'admin/menu.process' %} + {% include 'admin/menu.accounts' %} + {% include 'admin/menu.system' %} + </div> + <div class="main"> + <div class="main_top"> + <div class="main_top_tittle">{% block main_top_title %}Добро пожаловать РІ панель администратора!{% endblock %}</div> + </div> + + <div class="main_content"> + {% block main_content %} + {{ admin.message('error', 'Внутренняя ошибка сервера', 'РЇ - сообщение') }} + {{ admin.message('tips', 'Внутренняя подсказка сервера', 'РЇ - сообщение') }} + {{ admin.message('warning', 'Внутреннее предупреждение сервера', 'РЇ - сообщение') }} + {{ admin.message('success', 'Внутренний успех сервера', 'РЇ - сообщение') }} + + {% endblock %} + </div> + </div> + </div> + </div> + + <div id="footer_fixBug"></div> + <div class="footer"> + <a href='http://vk.com/itlab_mmcs'>IT-лаборатория мехмата ЮФУ © 2014</a> + </div> +</div> +</body> +</html> diff --git a/application/views/admin/menu.accounts.twig b/application/views/admin/menu.accounts.twig new file mode 100644 index 0000000000000000000000000000000000000000..21c8a9d47f1c06e1345cd9759fa11367f4bc6b62 --- /dev/null +++ b/application/views/admin/menu.accounts.twig @@ -0,0 +1,12 @@ +<div class="menu"> + <div class="menu_top"> + <div class="menu_top_title">Учетные записи</div> + </div> + <div class="menu_content"> + <ul> + {{ HTML.anchor('admin/users', '<li>Управление пользователями</li>')|raw }} + {{ HTML.anchor('admin/requests/remark', '<li>Запросы РЅР° исправление <b>(1)</b></li>')|raw }} + {{ HTML.anchor('admin/requests/restore', '<li>Восстановление доступа <b>(1)</b></li>')|raw }} + </ul> + </div> +</div> \ No newline at end of file diff --git a/application/views/admin/menu.process.twig b/application/views/admin/menu.process.twig new file mode 100644 index 0000000000000000000000000000000000000000..32cae6af37e183656223659733931ea4259bc547 --- /dev/null +++ b/application/views/admin/menu.process.twig @@ -0,0 +1,13 @@ +<div class="menu"> + <div class="menu_top"> + <div class="menu_top_title">Учебный процесс</div> + </div> + <div class="menu_content"> + <ul> + {{ HTML.anchor('admin/semester', '<li>Управление семестром</li>')|raw }} + {{ HTML.anchor('admin/disciplines', '<li>Управление дисциплинами</li>')|raw }} + {{ HTML.anchor('admin/teachers', '<li>Управление преподавателями</li>')|raw }} + {{ HTML.anchor('admin/students', '<li>Управление студентами</li>')|raw }} + </ul> + </div> +</div> \ No newline at end of file diff --git a/application/views/admin/menu.structure.twig b/application/views/admin/menu.structure.twig new file mode 100644 index 0000000000000000000000000000000000000000..41e8e46b6f1a19afdec02ae353609b23db85ff0f --- /dev/null +++ b/application/views/admin/menu.structure.twig @@ -0,0 +1,11 @@ +<div class="menu"> + <div class="menu_top"> + <div class="menu_top_title">Структура ЮФУ</div> + </div> + <div class="menu_content"> + <ul> + {{ HTML.anchor('admin/structure', '<li>Подразделения ЮФУ</li>')|raw }} + {{ HTML.anchor('admin/specializations', '<li>Направления подготовки</li>')|raw }} + </ul> + </div> +</div> \ No newline at end of file diff --git a/application/views/admin/menu.system.twig b/application/views/admin/menu.system.twig new file mode 100644 index 0000000000000000000000000000000000000000..11e0714391abf1529328a3652fafb083dd300643 --- /dev/null +++ b/application/views/admin/menu.system.twig @@ -0,0 +1,14 @@ +<div class="menu"> + <div class="menu_top"> + <div class="menu_top_title">Система</div> + </div> + <div class="menu_content"> + <ul> + {{ HTML.anchor('admin/log/user', '<li>Рстория действий</li>')|raw }} + {{ HTML.anchor('admin/log/kohana', '<li>Log-файлы Kohana</li>')|raw }} + {{ HTML.anchor('admin/requests/errors', '<li>Сообщения РѕР± ошибках <b>(100500)</b></li>')|raw }} + {{ HTML.anchor('admin/stats', '<li>Статистика использования</li>')|raw }} + {{ HTML.anchor('admin/sysinfo', '<li>Рнформация Рѕ системе</li>')|raw }} + </ul> + </div> +</div> \ No newline at end of file diff --git a/media/css/admin/base.css b/media/css/admin/base.css new file mode 100644 index 0000000000000000000000000000000000000000..5b827d26db8c2fa34d5549dbcd1cedbcc3b75ff3 --- /dev/null +++ b/media/css/admin/base.css @@ -0,0 +1,237 @@ +*{ + font-family: Arial, Tahoma, Lucida Grande, Sans-Serif, Lucida Sans;; +} +body { + padding: 0; + margin: 0; + background-color: #f1f1f1; + min-width: 1150px; +} +div { + height: auto; + overflow: hidden +} + +/*-----------------------------------HEAD-------------------------------------------------*/ +.header_wrapper { + background-color: #ffffff; + width: 100%; + box-shadow: 0px 0px 12px #ccc; + -webkit-box-shadow: 0px 0px 12px #ccc; + -moz-box-shadow: 0px 0px 12px #ccc; + +} + +.header { + padding: 10px 20px; +} + +.top_logo { + display: inline; + float: left; + margin-right: 30px; + font-size: 11pt; + color: #757575; +} + +.top_name_faculty { + display: inline; + float: left; + font-size: 11pt; + color: #757575; +} + +.top_user { + display: inline; + float: right; + text-align: right; + font-size: 10pt; + color: #0183ce; +} + +/*------------------------------------------------------------------------------------*/ + + + +/*------------------------------------MAIN--------------------------------------------*/ +.layout_wrapper +{ + margin: 35px auto; + width: 1115px; +} + +.layout +{ + margin: 0 auto; +} + +.menu_wrapper +{ + vertical-align: top; + display: inline-block; + margin-right: 30px; +} + +/*------------------------------------MENU--------------------------------------------*/ + +.menu +{ + margin-bottom: 30px; + width: 230px; + border-radius: 5px; + background-color: #ffffff; + box-shadow: 0 0 0 1px #ddd,0 3px 4px -3px #ddd; +} + +.menu_top { + display: inline; + position: absolute; + margin: -15px 0px 0px -5px; + padding: 5px 50px 5px 20px; + width: 150px; + background-color: #2bbd19; +} + +.menu_top_title { + font-size: 11pt; + color: #ffffff; +} + +.menu_content { + width: 100%; + padding-top: 20px; +} + +.menu a +{ + color: #113c32; + font-size: 10pt; + text-decoration: none; +} + +.menu ul, .menu ul li +{ + margin: 0; + padding: 0; + list-style: none; +} + +.menu ul +{ + margin: 5px 0; +} + +.menu ul li +{ + padding: 5px; + text-align: center; +} + +.menu ul li:hover +{ + background-color: #eeeeee; + text-align: center; +} + +/*------------------------------------MAIN--------------------------------------------*/ +.main { + display: inline-block; + width: 850px; + border-radius: 5px; + background-color: #ffffff; + box-shadow: 0 0 0 1px #ddd,0 3px 4px -3px #ddd; +} + +.main_top { + display: inline; + position: absolute; + margin: -15px 0px 0px -5px; + padding: 5px 50px 5px 20px; + min-width: 150px; + background-color: #3399CC; +} + +.main_top_tittle { + font-size: 15pt; + color: #ffffff; +} + +.main_content { + width: 100%; + padding-top: 25px; + padding-bottom: 20px; + font-size: 12pt; +} + + + +/*------------------------------------------------------------------------------------*/ + + + + +/*-------------------------------------FOOTER-----------------------------------------*/ + + + +.footer { + box-shadow: 0 0 0 1px #ddd,0 3px 4px -3px #ddd; + border-top: 1px solid #ccc; + background-color: #ffffff; + text-align: center; + height: 50px; + width: 100%; +} + + + +/*--------------------------FUCKING MAGIC!-----------------------------*/ +#wrap { + position: relative; + height: 100%; + width: 100%; +} + +html>body #wrap +{ + height: auto; + min-height: 100%; +} +html,body +{ + height: 100%; + padding:0; + margin:0; +} +#footer_fixBug { + height: 30px; +} + +.footer +{ + box-shadow: 0 0 0 1px #ddd,0 3px 4px -3px #ddd; + border-top: 1px solid #ccc; + background-color: #eeeeee; + text-align: center; + font-size: 11px; + text-decoration: none; + color: #757575; + height: 30px; + position: absolute; + margin: 0px; + padding: 10px; + left: 0; + bottom: 0; + width: 100%; +} + +/*------------------------------------------------------------------------------------*/ + + + + + + + + + diff --git a/media/css/admin/macro.css b/media/css/admin/macro.css new file mode 100644 index 0000000000000000000000000000000000000000..95575df6f30362785cf5cbf5100f8669212e099b --- /dev/null +++ b/media/css/admin/macro.css @@ -0,0 +1,115 @@ +/*------------------------------ WARNING -------------------------------------*/ +.warning +{ + border-radius: 5px; + background-color: #ffffff; + border: 1px solid #ffb100; + margin: 15px 10px; +} + +.warning_top { + display: inline; + position: absolute; + margin: -15px 0px 0px 10px; + padding: 5px; + background-color: #fff; +} + +.warning_top_title { + font-size: 11pt; + color: #d36000; +} + +.warning_content { + width: 100%; + font-size: 10pt; + padding: 15px; + padding-top: 20px; +} + +/*------------------------------- ERROR --------------------------------------*/ +.error +{ + border-radius: 5px; + background-color: #ffffff; + border: 1px solid #ff3d00; + margin: 15px 10px; +} + +.error_top { + display: inline; + position: absolute; + margin: -15px 0px 0px 10px; + padding: 5px; + background-color: #fff; +} + +.error_top_title { + font-size: 11pt; + color: #ff0700; +} + +.error_content { + width: 100%; + font-size: 10pt; + padding: 15px; + padding-top: 20px; +} + +/*------------------------------- SUCCESS ------------------------------------*/ +.success +{ + border-radius: 5px; + background-color: #ffffff; + border: 1px solid #009900; + margin: 15px 10px; +} + +.success_top { + display: inline; + position: absolute; + margin: -15px 0px 0px 10px; + padding: 5px; + background-color: #fff; +} + +.success_top_title { + font-size: 11pt; + color: #009900; +} + +.success_content { + width: 100%; + font-size: 10pt; + padding: 15px; + padding-top: 20px; +} + +/*------------------------------ TIPS ----------------------------------------*/ +.tips +{ + border-radius: 5px; + background-color: #ffffff; + border: 1px solid #0072c2; + margin: 15px 10px; +} + +.tips_top { + display: inline; + position: absolute; + margin: -15px 0px 0px 10px; + padding: 5px; + background-color: #fff; +} + +.tips_top_title { + color: #0072c2; + font-size: 11pt; +} + +.tips_content { + width: 100%; + font-size: 10pt; + padding: 15px; + padding-top: 20px; +} \ No newline at end of file