school info tab; first page lifting

parent eba04788
......@@ -30,6 +30,7 @@ return [
['/school/labs/attachment', ['school'], ['get', 'delete']],
['/application-form', ['school'], ['get', 'post'], 'GrEduLabs\ApplicationForm\Acl\Assertion\CanSubmit'],
['/application-form/submit-success', ['school'], ['get']],
['/#forum', ['guest', 'user'], ['get']],
],
],
],
......
......@@ -50,6 +50,10 @@ return [
'label' => 'Σχετικά με τη δράση',
'route' => 'about',
],
'forum' => [
'label' => 'Φόρουμ βοήθειας',
'href' => '/#forum',
],
],
],
......
This diff is collapsed.
{% extends "layout.twig" %}
{% block content %}
<div class="jumbotron">
<div class="jumbotron home">
<h1>Καταγραφή και αναβάθμιση υποδομών πληροφορικής και επικοινωνιών των σχολείων </h1>
<p class="lead text-justify"> Η αναβάθμιση αφορά συγκεκριμένες παρεμβάσεις στις υποδομές
<p class="text-justify">
<img src="{{ base_url() }}/img/minedu_logo.jpg" class="img-responsive pull-left">
<span class="clearfix visible-xs"></span>
Η αναβάθμιση αφορά συγκεκριμένες παρεμβάσεις στις υποδομές
Τεχνολογιών Πληροφορικής και Επικοινωνιών των Σχολείων, στις περιπτώσεις
που κρίνεται απαραίτητη θα υλοποιείται με ανοιχτές τεχνολογίες και με
νέο εξοπλισμό (υλικό και λογισμικό) όπου απαιτείται. </p>
......
......@@ -7,8 +7,8 @@
<meta name="description" content="">
<meta name="author" content="">
<title>GrEduLabs</title>
<link href="{{ base_url }}/css/bootstrap.min.css" rel="stylesheet" rel="stylesheet" type="text/css">
<link href="{{ base_url }}/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="{{ base_url() }}/css/bootstrap.min.css" rel="stylesheet" rel="stylesheet" type="text/css">
<link href="{{ base_url() }}/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="{{ base_url() }}/css/style.css" rel="stylesheet" type="text/css">
<link rel="icon" href="{{ base_url }}/img/favicon.ico">
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
......@@ -35,8 +35,8 @@
</p>
</footer>
</div>
<script src="{{ base_url }}/js/jquery-2.2.0.min.js"></script>
<script src="{{ base_url }}/js/bootstrap.min.js"></script>
<script src="{{ base_url() }}/js/jquery-2.2.0.min.js"></script>
<script src="{{ base_url() }}/js/bootstrap.min.js"></script>
<script type="text/javascript" src="{{ base_url }}/js/utils.js"></script>
{% block inlinejs %}{% endblock %}
</body>
......
......@@ -68,10 +68,19 @@ return function (Slim\App $app) {
$c->get(GrEduLabs\ApplicationForm\Service\ApplicationFormServiceInterface::class)
);
};
$container[GrEduLabs\ApplicationForm\Middleware\SchoolApplicationForm::class] = function ($c) {
return new GrEduLabs\ApplicationForm\Middleware\SchoolApplicationForm(
$c->get('view'),
$c->get(GrEduLabs\ApplicationForm\Service\ApplicationFormServiceInterface::class)
);
};
});
$events('on', 'app.bootstrap', function ($stop, $app, $container) {
$container['view']->getEnvironment()->getLoader()->prependPath(__DIR__ . '/templates');
$container['router']->getNamedRoute('school')
->add(GrEduLabs\ApplicationForm\Middleware\SchoolApplicationForm::class);
$app->group('/application-form', function () {
$this->map(['get', 'post'], '', GrEduLabs\ApplicationForm\Action\ApplicationForm::class)
......
<?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\ApplicationForm\Middleware;
use GrEduLabs\ApplicationForm\Service\ApplicationFormServiceInterface;
use Slim\Http\Request;
use Slim\Http\Response;
use Slim\Views\Twig;
class SchoolApplicationForm
{
/**
*
* @var Twig
*/
protected $view;
/**
*
* @var ApplicationFormServiceInterface
*/
protected $appFormService;
public function __construct(Twig $view, ApplicationFormServiceInterface $appFormService)
{
$this->view = $view;
$this->appFormService = $appFormService;
}
public function __invoke(Request $req, Response $res, callable $next)
{
$school = $req->getAttribute('school');
$appForm = $this->appFormService->findSchoolApplicationForm($school->id);
if ($appForm) {
$appForm['items'] = array_reduce($appForm['items'], function ($aggr, $item) {
$category = $item['itemcategory_id'];
if (!isset($aggr[$category])) {
$aggr[$category] = [
'category' => $item['itemcategory'],
'count' => 0,
];
}
$aggr[$category]['count'] += $item['qty'];
return $aggr;
}, []);
}
$this->view['appForm'] = $appForm;
return $next($req, $res);
}
}
......@@ -14,7 +14,7 @@
<dl class="col-sm-12 col-md-6">
<dt>A/A αίτησης</dt>
<dd>{{ appForm.id }}</dd>
<dt>Ημερ. καταχώρησης</dt>
<dt>Ημερ. υποβολής</dt>
<dd>{{ appForm.submitted|date('d/m/Y') }}<dd>
<dt>Σχολείο</dt>
<dd>{{ school.name }}</dd>
......
This diff is collapsed.
......@@ -28,8 +28,10 @@ return function (Slim\App $app) {
$container[Action\Index::class] = function ($c) {
return new Action\Index(
$c->get('view'),
$c->get(Service\SchoolServiceInterface::class)
$c->get('view'),
$c->get(Service\StaffServiceInterface::class),
$c->get(Service\LabServiceInterface::class),
$c->get(Service\SchoolAssetsInterface::class)
);
};
......
......@@ -66,6 +66,7 @@ class ListAssets
$labs = $this->labService->getLabsBySchoolId($school->id);
return $this->view->render($res, 'schools/assets.twig', [
'school' => $school,
'assets' => $assets,
'item_categories' => array_map(function ($category) {
return ['value' => $category['id'], 'label' => $category['name'] ];
......
......@@ -10,17 +10,49 @@
namespace GrEduLabs\Schools\Action;
use GrEduLabs\Schools\Service\LabServiceInterface;
use GrEduLabs\Schools\Service\SchoolAssetsInterface;
use GrEduLabs\Schools\Service\StaffServiceInterface;
use Slim\Http\Request;
use Slim\Http\Response;
use Slim\Views\Twig;
class Index
{
/**
*
* @var Twig
*/
protected $view;
public function __construct(Twig $view)
{
$this->view = $view;
/**
*
* @var StaffServiceInterface
*/
protected $staffService;
/**
*
* @var LabServiceInterface
*/
protected $labService;
/**
*
* @var SchoolAssetsInterface
*/
protected $assetService;
public function __construct(
Twig $view,
StaffServiceInterface $staffService,
LabServiceInterface $labService,
SchoolAssetsInterface $assetService
) {
$this->view = $view;
$this->staffService = $staffService;
$this->labService = $labService;
$this->assetService = $assetService;
}
public function __invoke(Request $req, Response $res, array $args = [])
......@@ -29,6 +61,29 @@ class Index
return $this->view->render($res, 'schools/index.twig', [
'school' => $school,
'staff' => array_reduce($this->staffService->getTeachersBySchoolId($school->id), function ($aggr, $teacher) {
$name = sprintf('%s %s (%s)', $teacher['name'], $teacher['surname'], $teacher['branch']);
if ($teacher['is_principle']) {
$aggr['principle'] = $name;
} else {
$aggr['teachers'][] = $name;
}
return $aggr;
}, []),
'labs' => $this->labService->getLabsBySchoolId($school->id),
'assets' => array_reduce($this->assetService->getAssetsForSchool($school->id), function ($aggr, $asset) {
$assetType = $asset['itemcategory_id'];
if (!isset($aggr[$assetType])) {
$aggr[$assetType] = [
'category' => $asset['itemcategory'],
'count' => 0,
];
}
$aggr[$assetType]['count'] += $asset['qty'];
return $aggr;
}, []),
]);
}
}
......@@ -56,6 +56,7 @@ class ListAll
$labs = $this->labService->getLabsBySchoolId($school->id);
return $this->view->render($res, 'schools/labs.twig', [
'school' => $school,
'labs' => $labs,
'staff' => array_map(function ($teacher) {
return ['value' => $teacher['id'], 'label' => $teacher['fullname']];
......
......@@ -35,6 +35,7 @@ class ListAll
$staff = $this->staffService->getTeachersBySchoolId($school->id);
return $this->view->render($res, 'schools/staff.twig', [
'school' => $school,
'staff' => $staff,
'branches' => array_map(function ($branch) {
return ['value' => $branch['id'], 'label' => $branch['name']];
......
......@@ -131,7 +131,7 @@
<div id="school">
<h1>
{% block schoolTitle %}
Το σχολείο
{{ school.name }}
{% endblock %}
</h1>
<ul class="nav nav-tabs">
......@@ -149,19 +149,74 @@
<div class="row">
<div class="col-xs-12 school-container">
{% block schoolContent %}
<div id="school-info">
<p>
Σε αυτή την καρτέλα θα καταχωρήσετε πληροφορίες που
αφορούν στο σχολείο σας, όπως τους εκπαιδευτικούς
που θα ασχοληθούν με την υλοποίηση του έργου,
τους χώρους που χρησιμοποιείτε για χρήση ΤΠΕ ή
τους επιπλέον χώρους που θα επιθυμούσατε να
χρησιμοποιήσετε για χρήση ΤΠΕ, τον εξοπλισμό
ΤΠΕ που διαθέτει το σχολείο και τον τρόπο που τον
χρησιμοποιείτε κλπ.
</p>
<div id="school-info">
<p class="col-xs-12">
Σε αυτή την καρτέλα θα καταχωρήσετε πληροφορίες που
αφορούν στο σχολείο σας, όπως τους εκπαιδευτικούς
που θα ασχοληθούν με την υλοποίηση του έργου,
τους χώρους που χρησιμοποιείτε για χρήση ΤΠΕ ή
τους επιπλέον χώρους που θα επιθυμούσατε να
χρησιμοποιήσετε για χρήση ΤΠΕ, τον εξοπλισμό
ΤΠΕ που διαθέτει το σχολείο και τον τρόπο που τον
χρησιμοποιείτε κλπ.
</p>
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h4>Εκπαιδευτικοί</h4>
</div>
<div class="panel-body">
<dl>
<dt>Διευθυντής</dt>
<dd>{{ staff.principle }}</dd>
<dt>Εκπαιδευτικοί</dt>
{% for teacher in staff.teachers %}
<dd>{{ teacher }}</dd>
{% endfor %}
</dl>
</div>
<div class="panel-footer text-center">
<a class="btn btn-sm btn-primary" href="{{ path_for('school.staff') }}#add">Καταχώρηση εκπαιδευτικού</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h4>Καταχωρημένοι χώροι</h4>
</div>
<div class="panel-body">
<ul>
{% for lab in labs %}
<li>{{ lab.name }}</li>
{% endfor %}
</ul>
</div>
<div class="panel-footer text-center">
<a class="btn btn-sm btn-primary" href="{{ path_for('school.labs') }}#add">Καταχώρηση χώρου</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h4>Εξοπλισμός</h4>
</div>
<div class="panel-body">
<dl class="dl-horizontal">
{% for asset in assets %}
<dt>{{ asset.category }}</dt>
<dd>{{ asset.count }}<dd>
{% endfor %}
</dl>
</div>
<div class="panel-footer text-center">
<a class="btn btn-sm btn-primary" href="{{ path_for('school.assets') }}#add">Καταχώρηση εξοπλισμού</a>
</div>
</div>
</div>
</div>
{% endblock %}
</div>
</div>
......
......@@ -32,14 +32,33 @@ body {
}
/* Main marketing message and sign up button */
.jumbotron {
text-align: center;
.home.jumbotron {
background: #fff;
border-bottom: 1px solid #e5e5e5;
}
.jumbotron .btn {
.home.jumbotron img {
margin: 20px;
}
.home.jumbotron .btn {
padding: 14px 24px;
font-size: 21px;
}
.home.jumbotron h1 {
text-align: center;
font-size: 210%;
}
.home.jumbotron p {
font-size: 120%;
}
.home.jumbotron p.lead {
}
.about p {
text-align: justify;
}
/* Supporting marketing content */
.marketing {
......@@ -63,7 +82,7 @@ body {
margin-bottom: 30px;
}
/* Remove the bottom border on the jumbotron for visual effect */
.jumbotron {
.home.jumbotron {
border-bottom: 0;
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment