From 6cddfd786b7f64cbe3b3752a325e1dd9eb5d4b07 Mon Sep 17 00:00:00 2001 From: severak Date: Thu, 15 Jul 2021 23:16:59 +0200 Subject: [PATCH] WIP: rozpracovana editace POI. --- app.php | 97 +++++++++++++++++++++++++++++++++++++++++++++++- tpl/_header.php | 4 ++ tpl/poi_list.php | 20 ++++++++++ 3 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 tpl/poi_list.php diff --git a/app.php b/app.php index a10401c..f7203b1 100644 --- a/app.php +++ b/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 diff --git a/tpl/_header.php b/tpl/_header.php index 88899a3..259f3d4 100644 --- a/tpl/_header.php +++ b/tpl/_header.php @@ -30,6 +30,10 @@