From 7076343338ae3439f3c86f01144818abe8c31978 Mon Sep 17 00:00:00 2001 From: George Halkiadakis Date: Sun, 12 Mar 2023 07:16:23 +0200 Subject: add container helpers; constuct public directory-tree --- html/app/routes/frontend.php | 135 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 html/app/routes/frontend.php (limited to 'html/app/routes/frontend.php') diff --git a/html/app/routes/frontend.php b/html/app/routes/frontend.php new file mode 100644 index 0000000..1eea46c --- /dev/null +++ b/html/app/routes/frontend.php @@ -0,0 +1,135 @@ + 'nobody knows it (but you got a secret smile;)']); +}); // 404 + + +// Resolve friendly urls +// --- +Route::add('/([0-9a-zA-Z-_]*)', + function($a) { Resolve::url([$a]); } +); +Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', + function($a, $b) { Resolve::url([$a, $b]); } +); +Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', + function($a, $b, $c) { Resolve::url([$a, $b, $c]); } +); + + +// 4-th level paths belong to products +// --- +Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', + function($a, $b, $c, $d) { Product::fromUrl($d, [$a, $b, $c]); } +); + + +/** URL-format Proposal: + * ----------------------------------------------------------------------------- + * + * Page (almost-static content): + * /about/{url} +# Route::add('/about/([0-9a-zA-Z-_\/]*)', function($url) { Page::fromUrl($url); }); + * + * Product: + * /{level-1}/{level-2}/{level-3}/{friendly-url}-{id} +# Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)-([0-9]*)', +# function($category, $subcategory, $group, $label, $id) { +# Product::fromID([$$category, $subcategory, $group, $label], $id); +# } +# ); + * + * Category + * /{category}/[ {subcategory}[ /{group}]] +Route::add('/([0-9a-zA-Z-_]*)', function($a) { Category::url([$a]); }; +Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b) { Category::url([$a, $b]); }); +Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b, $c) { Category::url([$a, $b, $c]); }); + * ----------------------------------------------------------------------------- + */ + + +/* EXAMPLES (use it for brainsrtorming) + * ----------------------------------------------------------------------------- + * + // Typical Use + // --- + Route::add('/art', function() { Art::blah(); }); + Route::add('/art/db', function() { Art::fromDatabase(); }); + Route::add('/art/([0-9]*)', function($id) { Art::getInfo($id); }); + + + // Get-Post route example + // --- + Route::add('/contact-form', function() { + echo '
'; + }, 'get'); + + Route::add('/contact-form', function() { + echo 'Hey! The form has been sent:
'; print_r($_POST); + }, 'post'); + + + // Accept number as parameter + // --- + Route::add('/foo/([0-9]*)/bar', function($var1) { + // echo $var1.' is a number!'; + echo "{$var1} is a number!"; + }); + + + // About pages + // --- + Route::add('/about/([0-9a-zA-Z-_]*)', function($page) { + InfoPage::render('about/'.page); + }); + + + // handle a request like: /foo/123/bar/3254-lefki-zaxari-marata-1kg + // where first-numeric-part of last-uri-section (3254) is the product number + // --- + Route::add('/foo/([0-9]*)/bar/([0-9]*)-([0-9a-zA-Z-_]*)', function($num, $id, $name) { + echo $num .' is some nomber, id = '. $id .' and label = '. $name; + }); + + + // handle a request like: /zaxares-glykantika/lefki-zaxari-year-2022-45678 + // where last-numeric-part of last-uri-section (45678) is the product number + // --- + Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)-([0-9]*)', + function($category, $subcategory, $group, $label, $id) { + Shop::product([$$category, $subcategory, $group, $label], $id); + }); + + + // last chance to resolve (some friendly url) + // --- + Route::add('/([0-9a-zA-Z-_]*)', function($a) { Resolve::uri([$a]); }); + Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b) { Resolve::uri([$a, $b]); }); + Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b, $c) { Resolve::uri([$a, $b, $c]); }); + + + // Product page + // handle a request like: /pantopoleio/zaxares/lefki-zaxari/lefki-zaxari-year-2022-45678 + // where last-numeric-part of last-uri-section (45678) is the product number + // --- + Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)-([0-9]*)', + function($category, $subcategory, $group, $label, $id) { + Shop::product([$$category, $subcategory, $group, $label], $id); + }); +* ------------------------------------------------------------------------------ +*/ -- cgit v1.2.3