Trasy a generovani tahaku.
This commit is contained in:
parent
8dfe927deb
commit
cda9e2c3e2
103
app.php
103
app.php
|
@ -334,6 +334,109 @@ route('', '/prochazky/{slug}/', function ($req, $params){
|
|||
|
||||
});
|
||||
|
||||
// TRASY
|
||||
|
||||
$singletons['trasy_form'] = function () {
|
||||
$form = new severak\forms\form(['method'=>'post']);
|
||||
$form->field('name', ['label'=>'Název', 'required'=>true]);
|
||||
$form->field('cheatsheet', ['label'=>'Tahák', 'type'=>'textarea']);
|
||||
$form->field('stop_ids', ['label'=>'ID zastávek']);
|
||||
$form->field('_sbt', ['type'=>'submit', 'label'=>'Uložit']);
|
||||
|
||||
return $form;
|
||||
};
|
||||
|
||||
route('', '/trasy/', function (){
|
||||
return redirect('/trasy/edit/');
|
||||
});
|
||||
|
||||
route('GET', '/trasy/edit/', function ($req){
|
||||
if (!user()) return redirect('/login/');
|
||||
/** @var severak\database\rows $rows */
|
||||
$rows = di('rows');
|
||||
$trasy = $rows->more('trasy', [], ['name'=>'asc'], 999);
|
||||
|
||||
return render('trasy', ['trasy'=>$trasy ]);
|
||||
});
|
||||
|
||||
|
||||
route('', '/trasy/add/', function ($req){
|
||||
if (!user()) return redirect('/login/');
|
||||
/** @var Psr\Http\Message\ServerRequestInterface $req */
|
||||
/** @var severak\database\rows $rows */
|
||||
$rows = di('rows');
|
||||
/** @var severak\forms\form $form */
|
||||
$form = di('trasy_form');
|
||||
|
||||
if ($req->getMethod()=='POST') {
|
||||
$form->fill($req->getParsedBody());
|
||||
if ($form->validate()) {
|
||||
$slug = slugify($form->values['name']);
|
||||
$rows->insert('trasy', [
|
||||
'name'=>$form->values['name'],
|
||||
'cheatsheet'=>$form->values['cheatsheet'],
|
||||
'stop_ids'=>$form->values['stop_ids'],
|
||||
]);
|
||||
return redirect('/trasy/edit/');
|
||||
}
|
||||
}
|
||||
|
||||
return render('form', ['form'=>$form, 'title'=>'Přidat položku']);
|
||||
});
|
||||
|
||||
route('', '/trasy/edit/{id}/', function ($req, $params){
|
||||
if (!user()) return redirect('/login/');
|
||||
/** @var Psr\Http\Message\ServerRequestInterface $req */
|
||||
/** @var severak\database\rows $rows */
|
||||
$rows = di('rows');
|
||||
/** @var severak\forms\form $form */
|
||||
$form = di('trasy_form');
|
||||
|
||||
$item = $rows->one('trasy', $params['id']);
|
||||
if (!$item) return notFound();
|
||||
|
||||
|
||||
$form->fill($item);
|
||||
|
||||
if ($req->getMethod()=='POST') {
|
||||
$form->fill($req->getParsedBody());
|
||||
if ($form->validate()) {
|
||||
$rows->update('trasy', [
|
||||
'name'=>$form->values['name'],
|
||||
'cheatsheet'=>$form->values['cheatsheet'],
|
||||
'stop_ids'=>$form->values['stop_ids'],
|
||||
], $params['id']);
|
||||
return redirect('/trasy/edit/');
|
||||
}
|
||||
}
|
||||
|
||||
return render('form', ['form'=>$form, 'title'=>'Upravit položku']);
|
||||
});
|
||||
|
||||
route('', '/trasy/tahak/{id}/', function ($req, $params){
|
||||
if (!user()) return redirect('/login/');
|
||||
/** @var Psr\Http\Message\ServerRequestInterface $req */
|
||||
/** @var severak\database\rows $rows */
|
||||
$rows = di('rows');
|
||||
|
||||
$Parsedown = new Parsedown();
|
||||
|
||||
$trasa = $rows->one('trasy', $params['id']);
|
||||
if (!$trasa) return notFound();
|
||||
|
||||
$trasa['cheatsheet'] = $Parsedown->text($trasa['cheatsheet']);
|
||||
|
||||
$ids = explode(' ', $trasa['stop_ids']);
|
||||
$zastavky = $rows->more('poi', ['id'=>$ids], [], 999);
|
||||
|
||||
$zastavky = array_map(function ($zastavka) use ($Parsedown) {
|
||||
$zastavka['cheatsheet'] = $Parsedown->text($zastavka['cheatsheet']);
|
||||
return $zastavka;
|
||||
}, $zastavky);
|
||||
|
||||
return render('trasa_tahak', ['trasa'=>$trasa, 'zastavky'=>$zastavky]);
|
||||
});
|
||||
|
||||
|
||||
// OBSLUHA
|
||||
|
||||
|
|
|
@ -46,4 +46,12 @@ CREATE UNIQUE INDEX "users_usename" ON "users" ("username");
|
|||
|
||||
INSERT INTO "users" ("id", "member_id", "username", "password", "name", "note", "is_active", "is_superuser") VALUES (1, NULL, 'severak', '$2y$10$G//hwvWHJYNHFk6JNr3GG.kuzM/dI9UTtU2bxr9EvTTEg0YOc8mj.', 'Severák', '(testovací účet)', 1, 1);
|
||||
|
||||
CREATE TABLE "trasy" (
|
||||
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||
"name" integer NOT NULL,
|
||||
"cheatsheet" text NULL,
|
||||
"stop_ids" integer NULL
|
||||
);
|
||||
|
||||
|
||||
--
|
||||
|
|
|
@ -38,6 +38,10 @@
|
|||
procházky
|
||||
</a>
|
||||
|
||||
<a class="navbar-item" href="/trasy/edit/">
|
||||
trasy
|
||||
</a>
|
||||
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<a class="navbar-link">
|
||||
ostatní
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<tr><th>název</th><th>napsán text</th><th>zveřejněno</th><th></th><th></th></tr>
|
||||
<?php foreach ($pois as $item) { ?>
|
||||
<tr>
|
||||
<td><?=$item['name']; ?><br><small><?=$item['note']; ?></small></td>
|
||||
<td><small>#<?=$item['id']; ?></small> <?=$item['name']; ?></td>
|
||||
<td><small><?=empty($item['description']) ? 'NE' : 'ANO'; ?></small></td>
|
||||
<td><small><?=empty($item['is_public']) ? 'NE' : 'ANO'; ?></small></td>
|
||||
<td><a href="/pois/edit/<?=$item['id']; ?>/" class=""><span class="icon"><i class="fas fa-edit"></i></span></a> </td>
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
<?=render('_header_nomenu', ['title'=>'Procházky']);?>
|
||||
|
||||
<h1 class="title"><?=$trasa['name'];?></h1>
|
||||
<div class="content">
|
||||
<?=$trasa['cheatsheet'];?>
|
||||
</div>
|
||||
|
||||
<?php foreach ($zastavky as $zastavka) { ?>
|
||||
<h2 class="subtitle"><?=$zastavka['name'];?></h2>
|
||||
<div class="content">
|
||||
<?=$zastavka['cheatsheet'];?>
|
||||
</div>
|
||||
<?php } ?>;
|
||||
|
||||
|
||||
<?=render('_footer');?>
|
|
@ -0,0 +1,18 @@
|
|||
<?=render('_header', ['title'=>'Procházky']);?>
|
||||
<h1>Trasy</h1>
|
||||
<?php if (count($trasy)) { ?>
|
||||
<table class="table">
|
||||
<tr><th>název</th><th></th></th></tr>
|
||||
<?php foreach ($trasy as $item) { ?>
|
||||
<tr>
|
||||
<td><?=$item['name']; ?></td>
|
||||
<td><a href="/trasy/tahak/<?=$item['id']; ?>/" class="">tahák</a> </td>
|
||||
<td><a href="/trasy/edit/<?=$item['id']; ?>/" class=""><span class="icon"><i class="fas fa-edit"></i></span></a> </td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</table>
|
||||
<?php } else {
|
||||
echo '<p>(nenalezeny žádné položky)</p><br>';
|
||||
} ?>
|
||||
<a href="/trasy/add/" class="button is-primary">Přidat položku</a>
|
||||
<?=render('_footer');?>
|
Loading…
Reference in New Issue