WIP: rozpracovana editace POI.

This commit is contained in:
severak 2021-07-15 23:16:59 +02:00
parent 69830e4859
commit 6cddfd786b
3 changed files with 120 additions and 1 deletions

97
app.php
View File

@ -20,7 +20,7 @@ route('', '/', function (){
$rows = di('rows');
$Parsedown = new Parsedown();
$pois = $rows->more('poi');
$pois = $rows->more('poi', [], [], 999);
$geojson = ['type'=>'FeatureCollection', 'features'=>[]];
foreach ($pois as $poi) {
$geojson['features'][] = [
@ -108,6 +108,101 @@ route('', '/zmena-hesla/', function ($req){
return render('form', ['form'=>$form, 'title'=>'Změnit heslo']);
});
$singletons['poi_form'] = function () {
$form = new severak\forms\form();
$form->field('name', ['label'=>'Název']);
$form->field('description', ['label'=>'Popis', 'type'=>'textarea']);
$form->field('cheatsheet', ['label'=>'Tahák', 'type'=>'textarea']);
$form->field('internal', ['label'=>'Poznámka', 'type'=>'textarea']);
$form->field('is_public', ['label'=>'Zveřejněno?', 'type'=>'checkbox']);
$form->field('lan', ['type'=>'hidden']);
$form->field('lot', ['type'=>'hidden']);
$form->field('_sbt', ['label'=>'Uložit?', 'type'=>'submit']);
return $form;
};
// správa POI
route('GET', '/pois/', function ($req){
return redirect('/pois/edit/');
});
route('GET', '/pois/edit/', function ($req){
if (!user()) return redirect('/login/');
/** @var severak\database\rows $rows */
$rows = di('rows');
$page = $_GET['page'] ?? 1;
$pois = $rows->page('poi', [], ['name'=>'asc'], $page, 30);
$pages = $rows->pages;
return render('poi_list', ['pois'=>$pois, 'pages'=>$pages, 'page'=>$page]);
});
route('', '/pois/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('poi_form');
if ($req->getMethod()=='POST') {
$form->fill($req->getParsedBody());
if ($form->validate()) {
$rows->insert('poi', [
'name'=>$form->values['name'],
'description'=>$form->values['description'],
'cheatsheet'=>$form->values['cheatsheet'],
'internal'=>$form->values['internal'],
'slug'=>slugify($form->values['name']),
'is_public'=>$form->values['is_public'] ?? 0,
]);
return redirect('/pois/edit/');
}
}
return render('form', ['form'=>$form, 'title'=>'Přidat položku']);
});
route('', '/pois/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('poi_form');
$item = $rows->one('poi', $params['id']);
if (!$item) return notFound();
$form->fill($item);
if ($req->getMethod()=='POST') {
$form->fill($req->getParsedBody());
if ($form->validate()) {
/*$rows->update('items', [
'name'=>$form->values['name'],
'price'=>$form->values['price'],
'note'=>$form->values['note'],
'ord'=>$form->values['ord'],
'amount'=>$form->values['amount'],
'is_amount_tracked'=>$form->values['is_amount_tracked'],
], $params['id']);
return redirect('/sklad/');*/
}
}
return render('form', ['form'=>$form, 'title'=>'Upravit položku']);
});
// TODO - tohle nechceme přes GET
route('', '/sklad/smazat/{id}/', function ($req, $params){
if (!user()) return redirect('/login/');
/** @var severak\database\rows $rows */
$rows = di('rows');
$rows->update('items', ['is_active'=>0], ['id'=>$params['id'] ]);
return redirect('/sklad/');
});
// OBSLUHA

View File

@ -30,6 +30,10 @@
<div class="navbar-start">
<?php if (user()) { ?>
<a class="navbar-item" href="/pois/edit/">
body zájmu
</a>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link">
ostatní

20
tpl/poi_list.php Normal file
View File

@ -0,0 +1,20 @@
<?=render('_header', ['title'=>'Body zájmu']);?>
<h1>Body zájmu</h1>
<?php if (count($pois)) { ?>
<table class="table">
<tr><th>název</th><th></th><th></th></tr>
<?php foreach ($pois as $item) { ?>
<tr>
<td><?=$item['name']; ?><br><small><?=$item['note']; ?></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/delete/<?=$item['id']; ?>/" class="delete" onclick="return confirm('Opravdu chcete položku smazat?')">smazat</a> </td>
</tr>
<?php } ?>
</table>
<?=render('_pagination', ['page'=>$page, 'pages'=>$pages]); ?>
<?php } else {
echo '<p>(nenalezeny žádné položky)</p><br>';
} ?>
<a href="/pois/add/" class="button is-primary">Přidat položku</a>
<?=render('_footer');?>