WIP: rozpracovana editace POI.
This commit is contained in:
parent
69830e4859
commit
6cddfd786b
97
app.php
97
app.php
|
@ -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
|
||||
|
|
|
@ -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í
|
||||
|
|
|
@ -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');?>
|
Loading…
Reference in New Issue