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
|
// 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);
|
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
|
procházky
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
<a class="navbar-item" href="/trasy/edit/">
|
||||||
|
trasy
|
||||||
|
</a>
|
||||||
|
|
||||||
<div class="navbar-item has-dropdown is-hoverable">
|
<div class="navbar-item has-dropdown is-hoverable">
|
||||||
<a class="navbar-link">
|
<a class="navbar-link">
|
||||||
ostatní
|
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>
|
<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) { ?>
|
<?php foreach ($pois as $item) { ?>
|
||||||
<tr>
|
<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['description']) ? 'NE' : 'ANO'; ?></small></td>
|
||||||
<td><small><?=empty($item['is_public']) ? '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>
|
<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