From a5583debbd1fd4f82f4f654003c8b890c4cead2a Mon Sep 17 00:00:00 2001 From: ro Date: Thu, 14 Mar 2024 16:58:11 -0600 Subject: [PATCH] page rendering, part 1 to complete page rendering, the default theme needed to be converted to use blade templating. rather than update the theme kit as a seperate progress, it will be integrated into this codebase so themes can be developed and tested in app. the basics for the theme kit are in place, so now conversion of the defualt theme can be completed. once the that is done, it can then be used to complete the rendering engine to export HTML files --- .gitignore | 4 +- .../Controllers/Theming/ThemeController.php | 114 ++++ app/Providers/FipamoServiceProvider.php | 9 +- app/Services/RenderService.php | 44 +- app/Services/SortingService.php | 4 +- app/Services/ThemeService.php | 5 + config/view.php | 1 + content/themes/fipamo-default-v2/archive.twig | 37 ++ .../fipamo-default-v2/assets/css/color.css | 9 + .../fipamo-default-v2/assets/css/frame.css | 202 ++++++ .../fipamo-default-v2/assets/css/start.css | 3 + .../assets/css/typography.css | 29 + .../assets/images/global/default-avi-2.png} | Bin .../assets/images/global/default-avi.png | Bin 0 -> 24313 bytes .../assets/images/global/default-bg.jpg | Bin .../assets/images/global/sprite.svg | 0 .../assets/images/global/the-logo.svg | 33 + .../fipamo-default-v2/assets/scripts/Base.js | 27 + .../assets/scripts/ThemeStart.js | 9 + .../themes/fipamo-default-v2/base.blade.php | 103 +++ .../error.twig | 0 content/themes/fipamo-default-v2/frame.twig | 110 ++++ content/themes/fipamo-default-v2/index.twig | 57 ++ content/themes/fipamo-default-v2/page.twig | 57 ++ content/themes/fipamo-default-v2/tags.twig | 23 + .../theme.json | 0 content/themes/fipamo-default/archive.twig | 45 -- .../themes/fipamo-default/assets/css/base.css | 600 ------------------ .../fipamo-default/assets/css/base.css.map | 1 - .../assets/images/global/the-logo.svg | 33 - .../assets/scripts/ThemeStart.js | 2 - .../assets/scripts/ThemeStart.js.map | 1 - content/themes/fipamo-default/frame.twig | 112 ---- content/themes/fipamo-default/index.twig | 51 -- .../themes/fipamo-default/page-custom.twig | 60 -- content/themes/fipamo-default/page.twig | 62 -- content/themes/fipamo-default/tags.twig | 30 - routes/web.php | 7 + 38 files changed, 881 insertions(+), 1003 deletions(-) create mode 100644 app/Http/Controllers/Theming/ThemeController.php create mode 100644 content/themes/fipamo-default-v2/archive.twig create mode 100644 content/themes/fipamo-default-v2/assets/css/color.css create mode 100644 content/themes/fipamo-default-v2/assets/css/frame.css create mode 100644 content/themes/fipamo-default-v2/assets/css/start.css create mode 100644 content/themes/fipamo-default-v2/assets/css/typography.css rename content/themes/{fipamo-default/assets/images/global/default-avi.png => fipamo-default-v2/assets/images/global/default-avi-2.png} (100%) create mode 100644 content/themes/fipamo-default-v2/assets/images/global/default-avi.png rename content/themes/{fipamo-default => fipamo-default-v2}/assets/images/global/default-bg.jpg (100%) rename content/themes/{fipamo-default => fipamo-default-v2}/assets/images/global/sprite.svg (100%) create mode 100644 content/themes/fipamo-default-v2/assets/images/global/the-logo.svg create mode 100644 content/themes/fipamo-default-v2/assets/scripts/Base.js create mode 100644 content/themes/fipamo-default-v2/assets/scripts/ThemeStart.js create mode 100644 content/themes/fipamo-default-v2/base.blade.php rename content/themes/{fipamo-default => fipamo-default-v2}/error.twig (100%) create mode 100644 content/themes/fipamo-default-v2/frame.twig create mode 100644 content/themes/fipamo-default-v2/index.twig create mode 100644 content/themes/fipamo-default-v2/page.twig create mode 100644 content/themes/fipamo-default-v2/tags.twig rename content/themes/{fipamo-default => fipamo-default-v2}/theme.json (100%) delete mode 100644 content/themes/fipamo-default/archive.twig delete mode 100644 content/themes/fipamo-default/assets/css/base.css delete mode 100644 content/themes/fipamo-default/assets/css/base.css.map delete mode 100644 content/themes/fipamo-default/assets/images/global/the-logo.svg delete mode 100644 content/themes/fipamo-default/assets/scripts/ThemeStart.js delete mode 100644 content/themes/fipamo-default/assets/scripts/ThemeStart.js.map delete mode 100644 content/themes/fipamo-default/frame.twig delete mode 100644 content/themes/fipamo-default/index.twig delete mode 100644 content/themes/fipamo-default/page-custom.twig delete mode 100644 content/themes/fipamo-default/page.twig delete mode 100644 content/themes/fipamo-default/tags.twig diff --git a/.gitignore b/.gitignore index c8528f7..2e891b4 100644 --- a/.gitignore +++ b/.gitignore @@ -48,8 +48,8 @@ public/assets/images/* content/* !content/themes content/themes/* -!content/themes/fipamo-default -!content/themes/fipamo-default/* +!content/themes/fipamo-default-v2 +!content/themes/fipamo-default-v2/* *.DS_Store *.codekit3 diff --git a/app/Http/Controllers/Theming/ThemeController.php b/app/Http/Controllers/Theming/ThemeController.php new file mode 100644 index 0000000..26cbdf2 --- /dev/null +++ b/app/Http/Controllers/Theming/ThemeController.php @@ -0,0 +1,114 @@ +pages = $pageRepository; + $this->auth = $authService; + $this->themes = $themeService; + $this->sort = $sortService; + $theme = $this->themes->getCurrentTheme(); + $themeTestImagePath = '../public/theme/images/global/'; + $themeTestCSSPath = '../public/theme/css/theme/'; + $themeTestScriptsPath = '../public/theme/scripts/theme/'; + //TODO: Create assset service class to handle moving theme assets around + //move assets to public for testing + foreach ( + new \DirectoryIterator('../content/themes/' . $theme . '/assets/images/global/') as $file + ) { + if ($file->isDot()) { + continue; + } + //make theme directory if not present + if (!is_dir($themeTestImagePath)) { + mkdir($themeTestImagePath, 0755, true); + } + + if (!is_file($themeTestImagePath . $file->getFileName())) { + copy( + '../content/themes/' . + $theme . + '/assets/images/global/' . + $file->getFileName(), + $themeTestImagePath . $file->getFileName() + ); + } else { + //image is already there, so chill + } + //print $file->getFilename() . "\n"; + } + //clear test theme css and script directories + $styles = glob($themeTestCSSPath . '*'); // get all file names + foreach ($styles as $file) { // iterate files + if (is_file($file)) { + unlink($file); // delete file + } + } + $scripts = glob($themeTestScriptsPath . '*'); // get all file names + foreach ($scripts as $file) { // iterate files + if (is_file($file)) { + unlink($file); // delete file + } + } + + // + + //copy theme assets to public + $newcss = glob('../content/themes/' . $theme . '/assets/css/*'); + if (!is_dir($themeTestCSSPath)) { + mkdir($themeTestCSSPath, 0755, true); + } + foreach ($newcss as $file) { // iterate files + if (is_file($file)) { + $path = explode('/', $file); + copy($file, $themeTestCSSPath . $path[6]); + } + } + $newjs = glob('../content/themes/' . $theme . '/assets/scripts/*'); + if (!is_dir($themeTestScriptsPath)) { + mkdir($themeTestScriptsPath, 0755, true); + } + foreach ($newjs as $file) { // iterate files + if (is_file($file)) { + $path = explode('/', $file); + copy($file, $themeTestScriptsPath . $path[6]); + } + } + } + + public function getView($view) + { + if ($this->auth::status()) { + $page = $this->pages->getById('09E5A362-BA31-4AE2-9DEE-C93DFBE005C3')->first(); + $options = $this->sort->page($page); + return view('fipamo-default-v2.base', [ + "debug" => "true", + "theme" => 'fipamo-default-v2', + "status" => $this->auth::status(), + "title" => "THEME PAGE", + "page" => $page, + "info" => $options['info'], + ]); + } else { + return redirect('dashboard/start'); + } + } +} diff --git a/app/Providers/FipamoServiceProvider.php b/app/Providers/FipamoServiceProvider.php index 82af3a8..5ef4250 100644 --- a/app/Providers/FipamoServiceProvider.php +++ b/app/Providers/FipamoServiceProvider.php @@ -57,7 +57,14 @@ class FipamoServiceProvider extends ServiceProvider }); $this->app->bind(RenderService::class, function ($app) { - return new RenderService(); + return new RenderService( + new SortingService( + new SettingsService(new DocService()), + new ContentService(), + new StringService(), + ), + new SettingsService(new DocService()) + ); }); $this->app->bind(SortingService::class, function ($app) { diff --git a/app/Services/RenderService.php b/app/Services/RenderService.php index cb6c9ab..bd2a344 100644 --- a/app/Services/RenderService.php +++ b/app/Services/RenderService.php @@ -4,7 +4,49 @@ namespace App\Services; class RenderService { - public function __construct() + private $sort; + private $settings; + private $pageInfo; + private $menu; + private $background; + + public function __construct(SortingService $sortingService, SettingsService $settingsService) { + $this->sort = $sortingService; + $this->settings = $settingsService; + } + + public function tag() + { + $list = $this->sort->tags(); + foreach ($list as $item) { + $template = 'tags.twig'; + $pageOptions = [ + 'title' => 'Pages Tagged as ' . $item['tag_name'], + 'background' => $this->pageInfo['image'], + 'tag_list' => $item['pages'], + 'info' => $this->pageInfo, + 'menu' => $this->menu, + 'media' => [['file' => $this->pageInfo['image'], 'type' => trim(pathinfo($this->pageInfo['image'], PATHINFO_EXTENSION))]], + ]; + + $html = $this->twig->render($template, $pageOptions); + + $location = '../public/tags/' . $item['slug'] . '.html'; + + //if tags folder doesn't exist, make it + if (!is_dir('../public/tags')) { + mkdir('../public/tags', 0755, true); + } else { + } + + if (!is_file($location)) { + file_put_contents($location, $html); + } else { + ($new = fopen($location, 'w')) or die('Unable to open file!'); + fwrite($new, $html); + fclose($new); + } + } } } diff --git a/app/Services/SortingService.php b/app/Services/SortingService.php index 3239ac5..5ca31b2 100644 --- a/app/Services/SortingService.php +++ b/app/Services/SortingService.php @@ -223,7 +223,7 @@ class SortingService 'files' => $page['docs'], ]; } - var_dump($pageOptions); - //return $pageOptions; + //var_dump($pageOptions); + return $pageOptions; } } diff --git a/app/Services/ThemeService.php b/app/Services/ThemeService.php index 8ebef01..6145915 100644 --- a/app/Services/ThemeService.php +++ b/app/Services/ThemeService.php @@ -19,6 +19,11 @@ class ThemeService } } + public function getCurrentTheme() + { + return $this->settings->getGlobal()['theme']; + } + public function getThemes() { return $this->themes; diff --git a/config/view.php b/config/view.php index 22b8a18..538724c 100644 --- a/config/view.php +++ b/config/view.php @@ -15,6 +15,7 @@ return [ 'paths' => [ resource_path('views'), + realpath(base_path('content/themes')), ], /* diff --git a/content/themes/fipamo-default-v2/archive.twig b/content/themes/fipamo-default-v2/archive.twig new file mode 100644 index 0000000..7b97a40 --- /dev/null +++ b/content/themes/fipamo-default-v2/archive.twig @@ -0,0 +1,37 @@ +{% extends "frame.twig" %} + +{% block title %} + {{ title }} +{% endblock %} + +{% block mainContent %} +
+

{{ title }}

+ +
+ {% for item in archives %} +
+

{{ item.year }}

+ {% for data in item.year_data %} +
+

{{ data.full_month }}

+ {% for page in data.pages %} + {% if dynamicRender is defined %} + {% if dynamicRender == 'true' %} + {{ page.title }}
+ {% else %} + {{ page.title }}
+ {% endif %} + + {% else %} + {{ page.title }}
+ {% endif %} + {% endfor %} +
+ + {% endfor %} +
+ {% endfor %} +
+
+{% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default-v2/assets/css/color.css b/content/themes/fipamo-default-v2/assets/css/color.css new file mode 100644 index 0000000..8719c4f --- /dev/null +++ b/content/themes/fipamo-default-v2/assets/css/color.css @@ -0,0 +1,9 @@ +/* BASE COLORS */ +:root { + --primary: #1d3040; + --secondary: #fc6399; + --tertiary: #f5ab35; + --highlight: #63fcc6ff; + --white: #ebe5d4; + --black: #32302f; +} diff --git a/content/themes/fipamo-default-v2/assets/css/frame.css b/content/themes/fipamo-default-v2/assets/css/frame.css new file mode 100644 index 0000000..a4e5743 --- /dev/null +++ b/content/themes/fipamo-default-v2/assets/css/frame.css @@ -0,0 +1,202 @@ +html { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + overflow: hidden; + font: 400 1.2em/1.4em var(--base-type); +} + +html body { + background: var(--white); + margin: 0; + padding: 0; + perspective: 1px; + transform-style: preserve-3d; + height: 100%; + width: 100%; + overflow-y: scroll; + overflow-x: hidden; +} + +/* GLOBALS */ + +a { + color: var(--primary); + text-decoration: none; + border-bottom: 1px solid var(--secondary); + transition: all 0.2s linear; +} + +a:hover { + border-bottom: 1px solid var(--highlight); +} + +sup { + background: var(--black); + color: var(--white); + padding: 3px; + border-radius: 3px; +} + +pre, +code { + background: var(--black); + color: var(--highlight); + border-radius: 3px; + padding: 3px; +} + +/* HEADER */ + +header { + background: var(--primary); + height: 90%; + width: 100%; + border-top: var(--white) 3px solid; +} + +/* HEADER -> Slideshow */ + +header > div[role="slide-show"] { + width: 100%; + height: 90%; + position: absolute; +} + +header > div[role="slide-show"] > div[role="slide"] { + transition: all 0.7s linear; + width: 100%; + height: 100%; + position: absolute; +} + +.hide { + opacity: 0; +} + +.show { + opacity: 1; +} + +header > div[role="slide-show"] > div[role="slide"] > video { + width: 100%; + height: 100%; + object-fit: cover; +} + +/* HEADER -> Navigation */ + +nav { + width: 97%; + margin: 10px auto; + display: grid; + grid-template-columns: 50% 50%; + z-index: 1000; + position: relative; + color: var(--primary); +} + +nav img { + width: 50px; + border-bottom: none; +} + +nav div[role="nav-right"] { + margin-left: auto; + margin-right: 0; +} + +nav a[role="home-link"] { + border-bottom: none; +} + +nav a[role="menu-link"] { + background: var(--secondary); + margin-bottom: 14px; + padding: 3px; + border-radius: 2px; + display: inline-block; + font-size: 0.8em; + border-bottom: none; +} + +/* MAIN CONTENT */ +main { + z-index: 2; + background: var(--white); + line-height: 30px; + font-weight: lighter; + width: 100%; + color: var(--black); +} + +main > article { + position: relative; + background: var(--white); + vertical-align: top; + color: var(--black); + padding: 0 15%; +} + +main > article > div[role="archives"] { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + column-gap: 10px; + margin-bottom: 20px; +} + +main article div[role="archives"] h1, +main article div[role="archives"] h2, +main article div[role="archives"] h3 { + color: var(--primary); +} + +main > section { + background: var(--primary); + display: grid; + grid-template-columns: 50% 50%; + padding: 0 15%; + max-width: 1000px; + color: var(--secondary); +} + +main > section > div { + padding-bottom: 20px; +} + +main > section[role="page-meta"] > div a { + color: var(--white); +} + +/* FOOTER */ +footer { + background: var(--highlight); + padding: 30px 15%; + color: var(--primary); +} + +/* RESPONSIVE */ + +@media only screen and (max-width: 640px) { + main > article { + padding: 0 10%; + } + + main > section { + padding: 0 10%; + } + + footer { + background: var(--highlight); + padding: 30px 10%; + } +} + +@media only screen and (max-width: 480px) { + main > section { + display: inline-grid; + grid-template-columns: 50%; + width: 100%; + } +} diff --git a/content/themes/fipamo-default-v2/assets/css/start.css b/content/themes/fipamo-default-v2/assets/css/start.css new file mode 100644 index 0000000..500b0fe --- /dev/null +++ b/content/themes/fipamo-default-v2/assets/css/start.css @@ -0,0 +1,3 @@ +@import url("color.css"); +@import url("typography.css"); +@import url("frame.css"); diff --git a/content/themes/fipamo-default-v2/assets/css/typography.css b/content/themes/fipamo-default-v2/assets/css/typography.css new file mode 100644 index 0000000..cd88d74 --- /dev/null +++ b/content/themes/fipamo-default-v2/assets/css/typography.css @@ -0,0 +1,29 @@ +:root { + --base-type: helvetica, arial, sans-serif; + --mono-type: "Lucida Console", monaco, monospace; +} + +h1, +h2, +h3 { + color: var(--white); +} + +h1 { + font-size: 2em; + font-weight: 700; +} + +h2 { + font-size: 1.8em; + font-weight: 600; +} + +h3 { + font-size: 1.5em; + font-weight: 500; +} + +main > article > h1 { + color: var(--primary); +} diff --git a/content/themes/fipamo-default/assets/images/global/default-avi.png b/content/themes/fipamo-default-v2/assets/images/global/default-avi-2.png similarity index 100% rename from content/themes/fipamo-default/assets/images/global/default-avi.png rename to content/themes/fipamo-default-v2/assets/images/global/default-avi-2.png diff --git a/content/themes/fipamo-default-v2/assets/images/global/default-avi.png b/content/themes/fipamo-default-v2/assets/images/global/default-avi.png new file mode 100644 index 0000000000000000000000000000000000000000..99ee4bba4fe342dd7d22b3f50db01c1526b3696d GIT binary patch literal 24313 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%0A{&KRKt+LHhMZ1Vhr>EB`0A7 z|H|>qMZj|Tuc~q+jh+u{(ZEnTpM(O8=uZKS)~FmPt-cb1G`Psi{3|xd%Zva6CEUB* zOeLIT!ALL|GKiO%wU8OyS!^UfvIAH-BK2%a@l_Nu7q(#uHd3vCd2mU%cpakE$P`Zv z#{BP`UkId{1+)|jvo<=BA=i`NPD0VaHXk%1^DP-)jT;L9s5wYsjy6+fETTi?E0lB?TPjYgh-ATU1nFQ z8>)vP!jl6}!wx=j$3t%P-*?ZnXL4vky#}egJ7?Ngu&}Xc`=ldA%J#2KES7sTkqG?s zMV%DiVN(#OwSAYJjz_x`@h-%NCx>l5(oo(onc?U6vQ?oOTLV$1p9tAaxZvfVC8=lj z#wFiaTFbyB%}M0}4P6ku_8(v0Q$$0w0+i9dY=SvT%_yP6h1=(vwf|VU3L~EP2 z_>RTwgh^KHl?cz4`UcSwwt9h*a!>Wy?K+W$vc7XnRpsT3{rQcynWP^cbACQUWHs(d zt*maOUlvC^nhE_`h;_0=?Yf(vrLhXJvu*57C` z)r}0@?a@UJ=0~)!*2fa~CnXBU^BVMa9`eI020%};Ub7YrCCaX~w>gL;)*xSkPW+cm zTO<#yi7l&d!*IUj>)@@8YSx+~ToiA_R~@fW@IxSO-(lFw=_`H1Enr;)&mk^WoJN|i zQrBFZW4pu#(0|7R>)eRB={ylY_FtHpRPmM)3sXMjfz19pX$EcdOVXgmijtfLe~7SS z#Z0%(gSL~>d!8YNqHOoTsfVH;U(-{FmoUEv?cP?zP5z10H}NsRVqr^G&M8Y#os-!3 zXc={Nl9$xnbN7hWwf(-`QjXs`CEQxox;tWh0@|DU6CSzSxMP9cEkm)&4Km)qyD%K# z8Xaq(tmGa#y)scJ82Sirttv{)aKqpFJmNGM`u%m*t3uJbws+?POy-JffBr_rJ&_Vc zsWAy&Cz@-OU1wfo`?WIk89zA*H#}e^&j}Z@k~G8LeMQ-&VaFxSV-uNz!GFnIWS0Cr zopPtC`|&e!FWiz|luoNrDPW8p|C@uH$EAl<(0UqG#w5uh^==ocYN8h5xFGLPu1Z6h z5P+PXfJ?q)9F@vK%?>5Y_w_v!;=V*StI%5PxjPHwYRnD`o^&)8cChcSxhx|~NlvEd z>n_yV6e3zC-Z1cqhi?hW-0yt2X<7c{<^7Nw=H)SxD9}GN=F7Qh)ivg(jN3udOgHpZ zdY48emOM8~PgmK{ZC$7yNBT1JXkeo&C3DBNU{3{k%Yl7i_QPOnx6_MjW)T5}r>;!8 z=S(m7xLJ}&ROEMc>}%FSk7PCU`@Q6lfy9|=)b?#6Y#;Ak_p|8PXDT5~U!HlA>&QDc z_?cz6t91~k*2?(P7*yElc@~{z3YKj}FK@V+>7kO|Owl)hK8BCaR2-H!yA=I&Dkeb2 zuaL*JEqz%r$uRuTs=HqVvC!9Fi;|DS>)=y$V0D`*1XIKBdu%_**50D>(&MJQ%7-^c zsdU<osb6j~5Ej;;rbQj3Q24nct z`^9xT&E+->W;I5-jQgM1?-3o>=3`e9G&eV} z6CjigeON+3AdCI?zX0fVgDELir9jCN*SVUbv;z>?j+sV7^IY%mzZHViGIXU&6$n)F zr5yK{j9Z;P)&&O9er*)8yMGv;ZQJ(Hf_`wJ%%gyg{_DR-q9$3l1#K*rKI}fdzuVZg z@n!l{b-6xENI0dc??c08F){OtBx7~U+&EqGb6G$T(oQe(?T`Y~PB+ag|Iq4I@B|69 zpQ#o0A8E}aXtcr90?$YRzfj>*o;M3(>S@O2647Da@N(M+`I)(cNvpH|qBo84VUA~J zd~Vw6B7Y)v-^_S+qZYZgh^jblo@$x1vTb<|G{4p{)FOH2F$nN8L(2|6(w@lv=mO`?9uzmsqDP9 z>RtIS@F_7JWnF+w62Qj_4eFCCbR*nV7bx!QR*4CcdT_gqL>;qUv#$vE&{fS*&|)iqRmp2EtxcGWqT|>*%QBm6=9XwdnvybE<}}ZcNTd#+#p| zg7HV?2|-yo((hixO1zk}V75xu?C0u+pnf+|1PJ6N1tDnh@r!WX5-zA#{%ohVQd@q; z*dmrj=uu4;TL!u9qbYuC8t(^x&g<~0(P1aBokD6Pwg?6$;+*vXDFE);A3J*dU3== zfnScE!AxoQ7+W$6eMrh`gAsamCdP+~r_)7`ES)V(YfMO!dHehM^@F1sluY-)*Gp|a?wFzZrzL4kOuL)5IOtFQoqAtyE6W{_h3Gc}(Q6jm1~M1T7=+j*7cT)BD5oHOKV|Zl zU_o+v{{7x^FZ@OgSyaF&g|6M&86S>Ge@5fT^%`h?0lNH3LvveTxF32Ha;GQpCor(Q zFVgZ3Cxco}8uU@~-T9rEM&fKYAy;M0n3W4CuaWN~0r&3sT@Z?A0*ps6DFb7`!qb~b z*tIQ*OkiH@Fktqii_tS-3qD$!^nR2e(lA=1^ARZ6HinsBga z*fOi!F1Rd4=n4nFGlj|2* z9}13bjmx%TnZ$JK?aZ6u+kCEHF9maMyY0-2=pYpROL(7QR9~fyoV>nXabHbLn0W$8 zq3r!um&UwB!g%<^bQ4XTKhhGqxa`F1x?`k^`XB_4ooPEs28!%(KNGIB*OA9$k>i;d z-gRkIo5UW{P6-?E0Moe?KD*tR83JQeF3|;C>uZ#Ms__xE4g~%L*0~2d$|cI*qOv)j zC=HPcPDzl%V?wJ>?LD6HYb~S{-Bb`ioEbu$LXoH^wFW?NqZm~TyF`TuZurog?83gTiohlFaD3kp#-7!e74|!m# z+#2aKvtN#@G)DbjJzQs4lR>jhLJJBZQly8_q)8DXgeJX-f{3Ve6pSZ+<4vKAU%E-kI4mXO6&bIa;H6JR5AS zkLCln#tYZzr{Ev-^+PF5BZs?YLe^!wG?y|SGi9OzmW{U+YCii3D$z7}`D4BCv4oDv zZBb+*yFl{dz&Bzs`4EzR5_)`VQ{s%k|w;F8!v>;1c5bl{3aiUpl$@{HXmY&G% zSyf#$!dboiK`uW7QVIeGSLU9Wu201fUj)so9(SSECcQbZHJvUHPm|m-sg@n93PhyH zKNaSMLX{cam1w?hR^$icai;;g$I%ld1!A{L*TZUDYF(yhl9b9v$e2G@nuKaEKOJ!c z!JVs^Mt*0;p0`p^AZHalcxdp&zxtAbu1=@G#H=_M>;@hM+C0|*x|1uNux>z=fTf2? zH^iT^TlOefwJk>l%vuaZpd8z*vIV-(ZlF0FXsPl9T>h-}XS*c*ExRWzACVUg3v9W( zoxUH9eC=3XWaM(cS$AEk(`l&h)6$A0tHd_#JKLY=r~w9oL^Jeqb%Wa_yR7Xy!mMRl+I6UY45B-q1 zv+UPd*6vhOC2223IEFc!*Bh>)TC;to*!{OAJW4+llsF69|THY_?qUjoth!0!M z{Q_P}sq-omy?0kK!xr4@c>R3C^28q27B9Ro6WN+xy;;eoJtjr>iu!Ro=j{}yS@UzG zc7=V)(HRy%a0;bzAcE@6#<$~KhJ~c-H zG{Qk*TAEuoOLE!+QCBLPhmLU zc_4I5wb+OQ%=+iRPiy`MI~!{===On%qD2o8JQPL&ZntC_$D>cxfo5w*j-Sijj^xUV5FBr+rb_=J< z0Qqw(cK=?E-{)bv{q%3;wlbmtCM1+cN{kmyt?aZVA z)EaC-;oz6VTwp*w22~DMFvCZ4$57h6JcPcCY0y#o5s(K@gIxMNGk!FV-MIOyx1MrYy2!Gb16zXo2ei_W`6+4* z|KQOzxc`2L|8njuZ*OVNlgpi( zG@NRMcINFPUcFL$c7s2&cd`u@i9wYyLt{X|<&19fUgW|49I@sSU3sSFT;4HQTK>*K zsLi+K&EJWi?*1O9>U}I&6wBlWY8y#%Uu65_O3QtJ%B!P zBh&6`crB$Ek#`+8PgK+7wUSc#+IRursZYj4yi4GQ{XD;A|7|wRHeQD0WB=rf=w#(* z6uo+V?zjMWhL|g!UfI!9`vS3#S+>bn#a4Nvcq1MC#!)(>CjT_EsJR3E-OK4ZUrxq_ z%7c34(jcWeq|DVLhNh>u%@ApHL0^4ub$<-)<;g`>3 zMJT8HW0i8?Rh-82tNc00`qzmUafo!`+Ofh#a<8*wU^7KXzP-829rvm{uDIpl^EgrR zT~pY<+?|EOecaJbC&_X&>KJ10W!K4`#8fi6lq)~{49L~ZUyXX-@jMp%S8`UwvP=Khr z3Y8?W_j6-=HP5()mI6rz_x_{F-(l9I!cEtM&e6=Db)n-|AW@9gFQHS)>%Jf?eS4+d zTBBPW=NfM~hw;}1zdMWRT@WB=!eBl~-ykU#!<~R?)4?^*R1fcBmC0+I%-8IP zY0B@;%dj~c>QfbfThw1=uWI5Y-dR-)Pt4y&9(056*qASmKmu(+0iOZ;EC7 z46-5$L~0hKO{_Na{)C3id}GYb)eET(252HxZSLRIf2A^YDS8If6Cezvl1)u6a^t7X zwfE@R_X6w4XS9H5l&{D3DuL@ewM9YB zxeN36t$XCmt#)}M12idyD$C||s;2y|mZte?jGm5heG|N|kH{780H6dKEJ5~@ChTCR zMNn%Hqf%zL@Ip*;_+I$S5}QUbEAIR7O=sn5o8}_ty-?Pt8v~o7cPiPRA7+LlMEQxg z;36M>nvI25ihC1kYcBOshn;|ZykV+78=oE^e0&Qd_ExldO!OkitqZfH1_>vE_R&T9>xZMTDno-Cx(06Rz{t z1sQ88`-!nIe0Tkqm5saS&ioa@P(6HU{MYZ;aN(Rd38vHNel<_eh$MIH`Bs%*TbpDt zF^fMZM%kd2z~3E{c*V1@#2xKv5}_4`IZdYr+;J(H@RH9EgLHsw3R>~nYiyiL z`retKz~3%RuH$?{NMyxBVE+6-8{m&mM|gH7n@Tvd#Mc-0ewGiZ=;dMa^&ihQiA@Q2 zTt`7wCC27D;`k}a`8S@O%Hz=i|FiLJ%`MFSr(f2#X0D%c1Zma%B6nv@!ZWov!O71S zu*%TMO+wD|x5~Z(i6f+l9ex>(!ZaQOG*Fe=I1@{+QDCOjcKNX}vX9xUcNPI!|kyIR!>WR|v&gMZS zCijj$1r)obXwf~FnT4;XLX)fKLA9o6J9DtR_`$=2j7BDa$`)nKRIY2F&+V@hMjg6o zV}{=k057yu!SC2a-7&bu%+BO*#Lzdv@vWkw%ED^<@YxGlMIKL7kVx>T9}qfb;{jax zl~rb#BDYwAJpoT>SK?VG*?LUaJHwjl+=s+!E-5KUFQ-R_x8N&EoNpS|?1N2LBZcLQ z47BI2MNX66)vx3A)3yEaYWTZ$+O0GWa@(r!+I@389Bw{aZRAOD*A2)n@HaelpweHY-Kc3E zL?yGe4xt9@RJ{iWwXH9>-f13c3V3$8Khyl!OsgN!ODb1KWJ8)dSWYRE95tH++ zI^G12@#313!FC~NXG8LWZ!AsZ9p*Es@l$6CQZR(*2AXgz1fPs(ZSNZjP4=9qG(12d zS_r9xrRETOn+wg?RWA0WsOCv_cWdc$og(xEc`6B6-k+^5Y#7g5dv4(kjC4A8K(CEf z+b*oG68kV)XKipo_`Gg>lDX_0~DP+2etgF~ZEu z9gIewC2}tJSocqDLo=OBgl*`&jL^=4AW9S4<@hEw#Xd`}1EazVKm=^N`y8R>Qbgm! zc0Lc8_hy<{9vHa(xm9-mZ!1ruz&C+YH%F-@4kjh|jlIBCuW2c6uAjFjnj#@DPaXKm z+V`G!u$HLpzh|aQ0E<0Wl-^=z(Z_s42dk;;(vpXuYHD^d-JGo}p ze1!o??M99pX8A-aW_A8#gGs6IBMRQ~QizD|faOU(mfe<;oVBpFu6F;Yn$Oiz^@AfH zBMMg%Y4|VoE8AJzFMm(ze%rV-FhFQ1^CAT^68L~R(Q7abpXU8B>GKJTr0y3OvUJ@@ zS&k?n#6n4L?KuQ7dZf2aBt&xabDGA6%lo^Me2z}7U0b!FPkEv*ijOTGr4mE1pxNw; zXZqTgwovJ^zh>1#?elj>eC6HeTpS)-N}GsBOrN)jKzMj~IGO* z_THBqRv$gR;#uG={N!++WrTqp`R_xV6#O%2y`{wvvpTu)TR3ftVs$%{zukVn5X~rC zt?TQL2>wuQ{OUJLm~cqTk|B0S&RDLnNM^K0c-H)n0i|0VyD}>`V{z)=cnOG{w_M+T z_AE0EsAnkgDP+Rkw5OXDyd>-wb~LvvP`@Se|32A8^6|}9Gn~C++gjjqT zZtq#RNo#u3_eybuV5d9Lbt@!AM~~hnpQt(QQkVP5*O(*V3b;svexZ zI^AQ{t2XQ5>G>sY@$li>SFK!UXTS9D(~S!3605SpTV$9JO?|CR3!-_2`k9=p7T12( z-!&7z9&jAU_-p{59kAqRb~GGcu%(?wWIMoQ$Vfq-2#<&e%G)d>BTf4^5S@iq{%Mcq z(2dEBbv!~(FL+H;`O(?i?&I&xF`I73``vCoGBlOHmT0f6cP$BK2o&YMZG3cn2Q(wW z^#>bBYr#eHF-L@uek5Hz$I5g674>r9&^BE#LbpkNMaymP#z?R%MtVf`9I~EqqPqtMWChj+WLD0%Cnu=E~?Lr}v*l+0%NE zn+@@J8C~Tfr?Y33oFZ5KJ8pbtjHx)9^nX#27dn_c zgSmx+0m^~-SyD#U>sBThEEJ^NC9v~Z9&EoB((>q43K~!fl6de*!S`aKqEH|rg?dd~ z?qx=u8o5H@0KXZa=~5!0$PV8Zskr&fN#iToaGmn*>&LSLzs#ZC;;8#^r_@TOMj#B( ziPS?oZ=e1k?{ki4HT|he;SsN8kz%M73!w3pffIU{{>i_X9kXd&yoGT_9)b`d$om=j zwOyre>v51Xvy>!o70g9rIe!LG4li}ZxchneK#9&J6WxkbfyWZ#-AwL2n|!qJqqQ$< zZn0DWDIAxEgpfeJ!S6+VD-r>Hy1wqqac1T!hL0PvH$Mgul)t#aU{@uZH4z3g8%M{{m^=fX9%>>BOUJJV z9{JgP!>8uqf0kQ}ZwDmk_9Py!h;JgZ^>1{_M^wBS8$4tq43{+=_forR&3mF~#fLG@ zF2DyTKKyx~g&zhNkia!Cy^)Edve2cl8xSEHXNEGaUx5JxM!>%5O72*H5+nkPqRiiF zzpV1j9_qB8WEgyho#Srvb75%FP9qDQ<3B6CGqhPHF)GP6ND%50?s+zM479iqy5{|NECwFlG*bGJ>|>zM2`d>! z#yp9WUikt0Pop`XJ#PtURNsZbuEQ}BDxDk+)I2clCSY4zGXKTTc!6RjcJie@sYv5h zv`}~Bb>J%MOs2n$%fb_I%|VPsfo>TIf?-5WeuS<{@g3`)PVhEv&Og1*2jAc@!3L?q zEbS_a@&P$w*n;1qSHP^=y;Vqw8L49C7M6Fvy;0 z{IUV5hU>xVMcjoN4s2jX*%Fi{M4(GfL)A#^hmc-PK1Wzyd6gdmx-n~N>IADpPpjoL8)WURd{CAlkR+8O^{LWYZIDKQ}{qNzCEF=+*C zsS_CaZ|naPHQbrZjfe{ zcx+T1D|rYC6<0|>+d9F$K{O~K#-w!|5t!S{_4s#z;gBbpkqdsDW_FfDqf0+3QQek# znjU?MsCURG;#F(B!DE!tK!En(1ko}oHAof#Ep|^lZ>}#I^T01Xr-Tg#os67 z?um$8Ww9i2mLjRVnev%cW?a}n!iOh7f9puiJOjOfE`ipYpQt6DWi(@y3Dx6$yM-p1 zVxXq44`uM!+>C|oz%d;0>%NyM9(-n-Wluh8|01_O7wvS;Vg^h6>w>eoPakv?&c#*g z^rA2f<_cOy``((-R_ouloGX5W{?D{qnr^|;vU(qwtpYjt!v6eT4+zemm!FkVqpzas zcnvk}r;P3Cyr`-aOyb_w=hUK%7_s`0D^qJZlNDyUiPuA-s0Up6OV)k(3D#u@_*j@& K8NW7ki~b)U_XREh literal 0 HcmV?d00001 diff --git a/content/themes/fipamo-default/assets/images/global/default-bg.jpg b/content/themes/fipamo-default-v2/assets/images/global/default-bg.jpg similarity index 100% rename from content/themes/fipamo-default/assets/images/global/default-bg.jpg rename to content/themes/fipamo-default-v2/assets/images/global/default-bg.jpg diff --git a/content/themes/fipamo-default/assets/images/global/sprite.svg b/content/themes/fipamo-default-v2/assets/images/global/sprite.svg similarity index 100% rename from content/themes/fipamo-default/assets/images/global/sprite.svg rename to content/themes/fipamo-default-v2/assets/images/global/sprite.svg diff --git a/content/themes/fipamo-default-v2/assets/images/global/the-logo.svg b/content/themes/fipamo-default-v2/assets/images/global/the-logo.svg new file mode 100644 index 0000000..824cdc4 --- /dev/null +++ b/content/themes/fipamo-default-v2/assets/images/global/the-logo.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/themes/fipamo-default-v2/assets/scripts/Base.js b/content/themes/fipamo-default-v2/assets/scripts/Base.js new file mode 100644 index 0000000..d5fc1ad --- /dev/null +++ b/content/themes/fipamo-default-v2/assets/scripts/Base.js @@ -0,0 +1,27 @@ +export default class Base { + //-------------------------- + // constructor + //-------------------------- + constructor() { + this.currentSlide = 0; + this.slides = document.querySelectorAll('[role="slide"]'); + //alert('FRESH'); + this.start(); + } + start() { + if (this.slides.length > 1) { + this.slideInterval = setInterval(() => { + this.slides[this.currentSlide].className = 'hide'; + this.currentSlide = (this.currentSlide + 1) % this.slides.length; + this.slides[this.currentSlide].className = 'show'; + }, 3000); + } + } + //-------------------------- + // methods + //-------------------------- + + //-------------------------- + // event handlers + //-------------------------- +} diff --git a/content/themes/fipamo-default-v2/assets/scripts/ThemeStart.js b/content/themes/fipamo-default-v2/assets/scripts/ThemeStart.js new file mode 100644 index 0000000..6f275a3 --- /dev/null +++ b/content/themes/fipamo-default-v2/assets/scripts/ThemeStart.js @@ -0,0 +1,9 @@ +import Base from "./Base.js"; + +document.addEventListener( + "DOMContentLoaded", + function () { + var base = new Base(); + }, + false +); diff --git a/content/themes/fipamo-default-v2/base.blade.php b/content/themes/fipamo-default-v2/base.blade.php new file mode 100644 index 0000000..1caa6f8 --- /dev/null +++ b/content/themes/fipamo-default-v2/base.blade.php @@ -0,0 +1,103 @@ + +@php + if(isset($debug)) + { + $assetPath = '/theme/'; + }else{ + $assetPath = '/assets/'; + } +@endphp + + + + + @yield('title') + + + + + + + + + + + +
+
+ @if(count($page['media'])>1) + @foreach($page['media'] as $item) + @if($item['type'] == "mp4") +
+ +
+ @else +
+ @endif + @endforeach + @else + @if($page['media'] != '') + @if($page['media']['type'] == "mp4") +
+ +
+ @else +
+ @endif + @endif + @endif +
+ +
+
+ CONTAINTER BOY BOY +
+ +
+
+ @if(isset($dynamicRender)) + @if($dynamicRender == 'true') + Archives
+ @else + Archives
+ @endif + @else + Archives
+ @endif + © 2020 By Fipamo +
+
+ + + diff --git a/content/themes/fipamo-default/error.twig b/content/themes/fipamo-default-v2/error.twig similarity index 100% rename from content/themes/fipamo-default/error.twig rename to content/themes/fipamo-default-v2/error.twig diff --git a/content/themes/fipamo-default-v2/frame.twig b/content/themes/fipamo-default-v2/frame.twig new file mode 100644 index 0000000..afc700b --- /dev/null +++ b/content/themes/fipamo-default-v2/frame.twig @@ -0,0 +1,110 @@ + + +{% if debug is defined %} + {% set assetPath = theme~'/assets/' %} +{% else %} + {% set assetPath = '/assets/' %} +{% endif %} + + + + + {% block title %} + {{ title }} + {% endblock %} + + + + + + + + + + + + + +
+
+ {% if media|length > 1 %} + {% for item in media %} + {% if item.type == "mp4" %} +
+ +
+ {% else %} +
+ {% endif %} + {% endfor %} + {% else %} + {% if media[0] != '' %} + {% if media[0].type == "mp4" %} +
+ +
+ {% else %} +
+ {% endif %} + {% else %} + {% endif %} + {% endif %} +
+ +
+
+ {% apply spaceless %} + {% block mainContent %}{% endblock %} + {% endapply %} +
+ +
+
+ {% if dynamicRender is defined %} + {% if dynamicRender == 'true' %} + Archives
+ {% else %} + Archives
+ {% endif %} + {% else %} + Archives
+ {% endif %} + © 2022 Fipamo +
+
+ + + \ No newline at end of file diff --git a/content/themes/fipamo-default-v2/index.twig b/content/themes/fipamo-default-v2/index.twig new file mode 100644 index 0000000..ec2156f --- /dev/null +++ b/content/themes/fipamo-default-v2/index.twig @@ -0,0 +1,57 @@ +{% extends "frame.twig" %} + +{% block title %} + {{ title }} +{% endblock %} + +{% block mainContent %} +
+

{{ title }}

+

{{ content | raw }}

+
+
+
+

RECENT

+ {% for item in recent %} + {% if dynamicRender is defined %} + {% if dynamicRender == 'true' %} + + {{ item.title }} +
+ {% else %} + + {{ item.title }} +
+ {% endif %} + + {% else %} + + {{ item.title }} +
+ {% endif %} + {% endfor %} + +
+
+

FEATURED

+ {% for item in featured %} + {% if dynamicRender is defined %} + {% if dynamicRender == 'true' %} + + {{ item.title }} +
+ {% else %} + + {{ item.title }} +
+ {% endif %} + + {% else %} + + {{ item.title }} +
+ {% endif %} + {% endfor %} +
+
+{% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default-v2/page.twig b/content/themes/fipamo-default-v2/page.twig new file mode 100644 index 0000000..30e6fa9 --- /dev/null +++ b/content/themes/fipamo-default-v2/page.twig @@ -0,0 +1,57 @@ +{% extends "frame.twig" %} + +{% block title %} + {{ title }} +{% endblock %} + +{% block mainContent %} +
+

{{ title }}

+

{{ content | raw }}

+
+
+
+

Files

+ {% for doc in files %} + {% if doc.type != "mp3" %} + {% set path = doc.file|split('/') %} + {{ path[6] }} + + {% endif %} + {% endfor %} +
+
+

Sounds

+ {% for doc in files %} + {% if doc.type == "mp3" %} + + {% endif %} + {% endfor %} +
+
+

Info

+ {{ meta['who'] }} + dropped this + {{ meta['when'] }}
+ +
+
+

Tags

+ {% for tag in meta['tags'] %} + {% if dynamicRender is defined %} + {% if dynamicRender == 'true' %} + {{ tag.label }} + {% else %} + {{ tag.label }} + {% endif %} + {% else %} + {{ tag.label }} + {% endif %} + {% endfor %} +
+
+ + {% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default-v2/tags.twig b/content/themes/fipamo-default-v2/tags.twig new file mode 100644 index 0000000..57a52c1 --- /dev/null +++ b/content/themes/fipamo-default-v2/tags.twig @@ -0,0 +1,23 @@ +{% extends "frame.twig" %} + +{% block title %} + {{ title }} +{% endblock %} + +{% block mainContent %} +
+

{{ title }}

+ {% for tag in tag_list %} + {% if dynamicRender is defined %} + {% if dynamicRender == 'true' %} + {{ tag.title }}
+ {% else %} + {{ tag.title }}
+ {% endif %} + + {% else %} + {{ tag.title }}
+ {% endif %} + {% endfor %} +
+{% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default/theme.json b/content/themes/fipamo-default-v2/theme.json similarity index 100% rename from content/themes/fipamo-default/theme.json rename to content/themes/fipamo-default-v2/theme.json diff --git a/content/themes/fipamo-default/archive.twig b/content/themes/fipamo-default/archive.twig deleted file mode 100644 index 681596e..0000000 --- a/content/themes/fipamo-default/archive.twig +++ /dev/null @@ -1,45 +0,0 @@ -{% extends "frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - - {% block mainContent %} -
-
- {{title}} -
-
-
-
- {% for item in archives %} -
- - {{item.year}} - - {% for data in item.year_data %} -
- - {{data.full_month}} - - {% for page in data.pages %} - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - {{page.title}}
- {% else %} - {{page.title}}
- {% endif %} - - {% else %} - {{page.title}}
- {% endif %} - {% endfor %} -
- - {% endfor %} -
- {% endfor %} - -
-
- {% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default/assets/css/base.css b/content/themes/fipamo-default/assets/css/base.css deleted file mode 100644 index 2242b2b..0000000 --- a/content/themes/fipamo-default/assets/css/base.css +++ /dev/null @@ -1,600 +0,0 @@ -h1, h2, h3 { - color: #ebe5d4; -} - -h1 { - font-size: 2em; - font-weight: 400; -} - -h2 { - font-size: 1.75em; - font-weight: 400; -} - -h3 { - font-size: 1.5em; - font-weight: 300; -} - -html { - line-height: 1.15; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; -} - -body { - margin: 0; -} - -article, -aside, -footer, -header, -nav, -section { - display: block; -} - -h1 { - font-size: 2em; - margin: 0.67em 0; - line-height: 1em; -} - -figcaption, -figure, -main { - display: block; -} - -figure { - margin: 1em 40px; -} - -hr { - box-sizing: content-box; - height: 0; - overflow: visible; -} - -pre { - font-family: monospace, monospace; - font-size: 1em; -} - -a { - background-color: transparent; - -webkit-text-decoration-skip: objects; -} - -a:active, -a:hover { - outline-width: 0; -} - -abbr[title] { - border-bottom: none; - text-decoration: underline; - text-decoration: underline dotted; -} - -b, -strong { - font-weight: inherit; - font-weight: bolder; -} - -kbd, -samp { - font-family: monospace, monospace; - font-size: 1em; -} - -dfn { - font-style: italic; -} - -mark { - background-color: #ff0; - color: #000; -} - -small { - font-size: 80%; -} - -sub, -sup { - font-size: 60%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.55em; - background: #151d26; - color: #151d26; - border-radius: 2px; - padding: 0 2px 0 2px; - margin: 0 2px 0 0; -} - -audio, -video { - display: inline-block; -} - -audio:not([controls]) { - display: none; - height: 0; -} - -img { - border-style: none; -} - -svg:not(:root) { - overflow: hidden; -} - -button, -input, -optgroup, -select, -textarea { - font-family: sans-serif; - font-size: 100%; - line-height: 1.15; - margin: 0; -} - -button, -input { - overflow: visible; -} - -button, -select { - text-transform: none; -} - -button, html [type=button], -[type=reset], -[type=submit] { - -webkit-appearance: button; -} - -[type=button]::-moz-focus-inner, -[type=reset]::-moz-focus-inner, -[type=submit]::-moz-focus-inner, -button::-moz-focus-inner { - border-style: none; - padding: 0; -} - -[type=button]:-moz-focusring, -[type=reset]:-moz-focusring, -[type=submit]:-moz-focusring, -button:-moz-focusring { - outline: 1px dotted ButtonText; -} - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -legend { - box-sizing: border-box; - color: inherit; - display: table; - max-width: 100%; - padding: 0; - white-space: normal; -} - -progress { - display: inline-block; - vertical-align: baseline; -} - -textarea { - overflow: auto; -} - -[type=checkbox], -[type=radio] { - box-sizing: border-box; - padding: 0; -} - -[type=number]::-webkit-inner-spin-button, -[type=number]::-webkit-outer-spin-button { - height: auto; -} - -[type=search] { - -webkit-appearance: textfield; - outline-offset: -2px; -} - -[type=search]::-webkit-search-cancel-button, -[type=search]::-webkit-search-decoration { - -webkit-appearance: none; -} - -::-webkit-file-upload-button { - -webkit-appearance: button; - font: inherit; -} - -details, -menu { - display: block; -} - -summary { - display: list-item; -} - -canvas { - display: inline-block; -} - -template { - display: none; -} - -[hidden] { - display: none; -} - -form { - display: inline-block; -} -form a { - color: #151d26; -} -form p { - background: #e8c33e; - color: #151d26; - padding: 5px; - display: block; - border-radius: 5px; - text-align: left; -} - -input[type=email], input[type=password], input[type=text] { - border: 0; - border-radius: 5px; - padding: 5px; - margin: 10px 5px 0 0; - font: 18px Helvetica, Arial, sans-serif; - display: inline-block; - background: #151d26; - color: #e8c33e; -} - -textarea { - border: 0; - border-radius: 3px; - color: #ebe5d4; - font: 15px Helvetica, Arial, sans-serif; - background: #151d26; -} - -button, input[type=submit] { - background: #7ED07E; - color: #151d26; - font: 20px Helvetica, Arial, sans-serif; - border-radius: 5px; - position: relative; - cursor: pointer; - border: 0; - padding: 10px 0 5px 0; - transition: all 0.3s linear; -} - -select { - font: 14px Helvetica, Arial, sans-serif; - border: 1px solid #FC6399; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - color: #151d26; -} - -::-webkit-input-placeholder { - font: 25px Helvetica, Arial, sans-serif; - color: #ebe5d4; -} - -:-moz-placeholder { - /* Firefox 18- */ - font: 25px Helvetica, Arial, sans-serif; - color: #ebe5d4; -} - -::-moz-placeholder { - /* Firefox 19+ */ - font: 15px Helvetica, Arial, sans-serif; - color: #ebe5d4; -} - -:-ms-input-placeholder { - font: 25px Helvetica, Arial, sans-serif; - color: #ebe5d4; -} - -html { - margin: 0; - padding: 0; - width: 100%; - height: 100%; - overflow: hidden; - font: 400 1.2em/1.4em Helvetica, Arial, sans-serif; -} -html body { - background: #ebe5d4; - margin: 0; - padding: 0; - perspective: 1px; - transform-style: preserve-3d; - height: 100%; - width: 100%; - overflow-y: scroll; - overflow-x: hidden; -} -html body a { - color: #151d26; - text-decoration: none; - border-bottom: 1px solid #7ED07E; -} -html body a:hover { - border-bottom: 1px solid #FC6399; -} -html body code { - background: #32302f; - color: #7ED07E; - border-radius: 3px; - padding: 3px; -} -html body pre { - background: #32302f; - color: #7ED07E; - border-radius: 3px; - padding: 3px; -} -html body code { - color: #FC6399; - background: none; -} -html body svg.icons { - width: 25px; - fill: #ebe5d4; -} -html body header { - background: #151d26; - height: 90%; - width: 100%; - border-top: #ebe5d4 3px solid; -} -html body header #media { - width: 100%; - height: 90%; - position: absolute; -} -html body header #media .slide { - transition: all 0.7s linear; - width: 100%; - height: 100%; - position: absolute; -} -html body header #media .hide { - opacity: 0; -} -html body header #media .show { - opacity: 1; -} -html body header #media video { - width: 100%; - height: 100%; - object-fit: cover; -} -html body header nav { - width: 97%; - margin: 10px auto; - z-index: 1000; - position: relative; - color: #151d26; -} -html body header nav .left, html body header nav .right { - width: 50%; - display: inline-block; - vertical-align: top; -} -html body header nav .left a.logo-link { - border-bottom: none; - margin: 0 0 20px 0; - display: block; -} -html body header nav .left a.logo-link #logo { - width: 50px; - border-bottom: none; -} -html body header nav .right { - text-align: right; -} -html body header nav .right a.menu-link { - background: #FC6399; - margin-bottom: 4px; - padding: 3px; - border-radius: 2px; - display: inline-block; - font-size: 0.8em; - border-bottom: none; -} -html body header nav .right a.menu-link:hover { - background: #FC6399; -} -html body .container { - z-index: 2; - background: #ebe5d4; - line-height: 30px; - font-weight: lighter; - width: 100%; - color: #32302f; -} -html body .container article { - position: relative; - width: 80%; - height: 80%; - max-width: 840px; - background: #ebe5d4; - vertical-align: top; - color: #32302f; - margin: 0 auto; -} -html body .container article .index, html body .container article .page { - padding: 0 0 15px 0; -} -html body .container article .index img, html body .container article .page img { - display: block; - width: 100%; -} -html body .container article .index h1, html body .container article .index h2, html body .container article .page h1, html body .container article .page h2 { - color: #151d26; -} -html body .container article .index p, html body .container article .page p { - font: 300 1.25em/1.6em Helvetica, Arial, sans-serif; -} -html body .container article .index .page_files .page_doc a, html body .container article .page .page_files .page_doc a { - background: #32302f; - border-radius: 3px; - color: #ebe5d4; - padding: 3px; - margin: 0 5px 0 0; -} -html body .container article .index .meta, html body .container article .page .meta { - font: 500 0.8em/1.3em Helvetica, Arial, sans-serif; - padding: 5px 0 0 0; - border-top: 1px solid #151d26; - background: #ebe5d4; -} -html body .container article .index .meta a, html body .container article .page .meta a { - font-size: 0.8em; - font-weight: 400; -} -html body .container article .index .archive-item, html body .container article .page .archive-item { - padding: 15px 0 20px 0; -} -html body .container article .index .archive-item span.year, html body .container article .page .archive-item span.year { - font-size: 1.5em; - font-weight: 500; - padding: 5px; - display: block; - color: #151d26; -} -html body .container article .index .archive-item .archive-month, html body .container article .page .archive-item .archive-month { - display: inline-block; - vertical-align: top; - width: 30%; - padding: 5px; -} -html body .container article .index .archive-item .archive-month span.month, html body .container article .page .archive-item .archive-month span.month { - color: #FC6399; - font-size: 1.5em; - font-weight: 300; - padding: 5px; - display: block; -} -html body .container section { - padding: 0 0 20px 0; - background: #151d26; -} -html body .container section a { - color: #ebe5d4; -} -html body .container section .index-lists, html body .container section .page-title { - max-width: 840px; - width: 80%; - margin: 0 auto; - padding: 20px 0 0 0; -} -html body .container section .index-lists span, html body .container section .page-title span { - font-size: 2em; - color: #FC6399; - font-weight: 400; - width: 80%; - margin: 0 auto; - padding: 20px 0 0 0; -} -html body .container section .index-lists .recent, html body .container section .index-lists .featured, html body .container section .page-title .recent, html body .container section .page-title .featured { - display: inline-block; - width: 50%; - vertical-align: top; -} -html body .container section .index-lists label, html body .container section .page-title label { - background: #32302f; - color: #ebe5d4; - font-size: 1.5em; - line-height: 1.3; -} -html body footer { - background: #ebe5d4; - padding: 10px; - color: #151d26; - font-size: 0.8em; - font-weight: 600; - height: 100px; -} -html body footer .inner { - margin: 20px auto; - width: 80%; - max-width: 840px; -} -html body footer .inner a { - color: #FC6399; -} -html body header nav { - width: 98%; -} -html body header span { - font-size: 2.5em; -} -html body header .container article .index .archive-item .archive-month, html body header .container article .page .archive-item .archive-month { - width: 45%; -} -html body header nav { - width: 96%; -} -html body header .container article .index, html body header .container article .page { - margin: 0; -} -html body header .container article .index p, html body header .container article .page p { - font: 300 1em/1.6em Helvetica, Arial, sans-serif; -} -html body header .container section .index-lists .recent, html body header .container section .index-lists .featured { - width: 100% !important; -} -html body header nav { - width: 95%; -} -html body .container article .index, html body .container article .page { - margin: 0; -} -html body .container article .index p, html body .container article .page p { - font: 300 0.9em/1.7em Helvetica, Arial, sans-serif; -} -html body .container article .index .archive-item .archive-month, html body .container article .page .archive-item .archive-month { - width: 95%; -} - -/*# sourceMappingURL=base.css.map */ diff --git a/content/themes/fipamo-default/assets/css/base.css.map b/content/themes/fipamo-default/assets/css/base.css.map deleted file mode 100644 index 361940b..0000000 --- a/content/themes/fipamo-default/assets/css/base.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sourceRoot":"","sources":["../../../styles/_typography.sass","../../../styles/_normalize.sass","../../../styles/_colors.sass","../../../styles/_forms.sass","../../../styles/_structure.sass"],"names":[],"mappings":"AAGA;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AChBJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAMI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;;;AACJ;EACI;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;AAAA;EAEI;EACA;;;AAGJ;AAAA;EAEI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA,YCnFM;EDoFN,OCpFM;EDqFN;EACA;EACA;;;AAEJ;AAAA;EAEI;;;AAGA;EACI;EACA;;;AAER;EACI;;;AAGA;EACI;;;AAER;AAAA;AAAA;AAAA;AAAA;EAKI;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;AAAA;AAAA;AAAA;EAII;EACA;;;AAEJ;AAAA;AAAA;AAAA;EAII;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AEpMJ;EACI;;AACA;EACI,ODHE;;ACIN;EACI,YDHI;ECIJ,ODNE;ECOF;EACA;EACA;EACA;;;AAER;EACI;EACA;EACA;EACA;EACA;EACA;EACA,YDnBM;ECoBN,ODlBQ;;;ACoBZ;EACI;EACA;EACA,ODrBK;ECsBL;EACA,YD3BM;;;AC6BV;EACI,YD3BS;EC4BT,OD/BM;ECgCN;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA,OD9CM;;;ACgDV;EACI;EACA,OD9CK;;;ACgDT;AACI;EACA;EACA,ODnDK;;;ACqDT;AACI;EACA;EACA,ODxDK;;;AC0DT;EACI;EACA,OD5DK;;;AEJT;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE,YFLK;EEML;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE,OFpBI;EEqBJ;EACA;;AAEA;EACE;;AAEJ;EACE,YFvBG;EEwBH,OF1BO;EE2BP;EACA;;AAEF;EACE,YF7BG;EE8BH,OFhCO;EEiCP;EACA;;AACF;EACE,OFtCO;EEuCP;;AAEF;EACE;EACA,MFxCG;;AE0CL;EACE,YF/CI;EEgDJ;EACA;EACA;;AACA;EACE;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;;AACF;EACE;;AACF;EACE;;AACF;EACE;EACA;EACA;;AACJ;EACE;EACA;EACA;EACA;EACA,OFzEE;;AE0EF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AACA;EACE;EACA;;AACN;EACE;;AACA;EACE,YFxFC;EEyFD;EACA;EACA;EACA;EACA;EACA;;AACA;EACE,YFhGD;;AEkGT;EACE;EACA,YFjGG;EEkGH;EACA;EACA;EAEA,OFrGG;;AEsGH;EACE;EACA;EACA;EACA;EAEA,YF7GC;EE8GD;EACA,OF9GC;EE+GD;;AAGA;EACE;;AACA;EACE;EACA;;AACF;EACE,OF7HF;;AE8HA;EACE;;AAIE;EACE,YF/HP;EEgIO;EACA,OFlIP;EEmIO;EACA;;AACN;EACE;EACA;EACA;EACA,YFzIH;;AE0IG;EACE;EACA;;AAEJ;EACE;;AACA;EACE;EACA;EACA;EACA;EACA,OFzJJ;;AE0JE;EACE;EACA;EACA;EACA;;AACA;EACE,OF/JH;EEgKG;EACA;EACA;EACA;;AACV;EACE;EACA,YFvKE;;AEwKF;EACE,OFrKD;;AEsKD;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA,OFjLC;EEkLD;EACA;EACA;EACA;;AACF;EACE;EACA;EACA;;AACF;EACE,YFvLH;EEwLG,OFzLH;EE0LG;EACA;;AAER;EACE,YF9LG;EE+LH;EACA,OFpMI;EEqMJ;EACA;EACA;;AACA;EACE;EACA;EACA;;AACA;EACE,OF5MG;;AEkNP;EACE;;AACF;EACE;;AAKM;EACE;;AAIV;EACE;;AAGE;EACE;;AACA;EACE;;AAGF;EACE;;AAIR;EACE;;AAGA;EACE;;AACA;EACE;;AAEA;EACE","file":"base.css"} \ No newline at end of file diff --git a/content/themes/fipamo-default/assets/images/global/the-logo.svg b/content/themes/fipamo-default/assets/images/global/the-logo.svg deleted file mode 100644 index f8d21b5..0000000 --- a/content/themes/fipamo-default/assets/images/global/the-logo.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - diff --git a/content/themes/fipamo-default/assets/scripts/ThemeStart.js b/content/themes/fipamo-default/assets/scripts/ThemeStart.js deleted file mode 100644 index 6da9e18..0000000 --- a/content/themes/fipamo-default/assets/scripts/ThemeStart.js +++ /dev/null @@ -1,2 +0,0 @@ -(()=>{class e{constructor(){this.currentSlide=0,this.slides=document.querySelectorAll("#media .slide"),this.start()}start(){this.slides.length>1&&(this.slideInterval=setInterval((()=>{this.slides[this.currentSlide].className="slide hide",this.currentSlide=(this.currentSlide+1)%this.slides.length,this.slides[this.currentSlide].className="slide show"}),3e3))}}document.addEventListener("DOMContentLoaded",(function(){new e}),!1)})(); -//# sourceMappingURL=ThemeStart.js.map diff --git a/content/themes/fipamo-default/assets/scripts/ThemeStart.js.map b/content/themes/fipamo-default/assets/scripts/ThemeStart.js.map deleted file mode 100644 index eebae8e..0000000 --- a/content/themes/fipamo-default/assets/scripts/ThemeStart.js.map +++ /dev/null @@ -1 +0,0 @@ -{"mappings":"4BAKIA,KAAKC,aAAe,EACpBD,KAAKE,OAASC,SAASC,iBAAiB,iBACxCJ,KAAKK,QAEPA,QACML,KAAKE,OAAOI,OAAS,IACvBN,KAAKO,cAAgBC,aAAW,KAC9BR,KAAKE,OAAOF,KAAKC,cAAcQ,UAAY,aAC3CT,KAAKC,cAAgBD,KAAKC,aAAe,GAAKD,KAAKE,OAAOI,OAC1DN,KAAKE,OAAOF,KAAKC,cAAcQ,UAAY,eAC1C,OCbTN,SAASO,iBACP,oBACA,WACa,IAAIC,KAEjB","sources":["src/themes/theme-fipamo-default/com/Base.js","src/themes/theme-fipamo-default/com/ThemeStart.js"],"sourcesContent":["export default class Base {\n //--------------------------\n // constructor\n //--------------------------\n constructor() {\n this.currentSlide = 0;\n this.slides = document.querySelectorAll(\"#media .slide\");\n this.start();\n }\n start() {\n if (this.slides.length > 1) {\n this.slideInterval = setInterval(() => {\n this.slides[this.currentSlide].className = \"slide hide\";\n this.currentSlide = (this.currentSlide + 1) % this.slides.length;\n this.slides[this.currentSlide].className = \"slide show\";\n }, 3000);\n }\n }\n //--------------------------\n // methods\n //--------------------------\n\n //--------------------------\n // event handlers\n //--------------------------\n}\n","import Base from \"./Base.js\";\n\ndocument.addEventListener(\n \"DOMContentLoaded\",\n function () {\n var base = new Base();\n },\n false\n);\n"],"names":["this","currentSlide","slides","document","querySelectorAll","start","length","slideInterval","setInterval","className","addEventListener","$b8d4b81eabebe07b$export$2e2bcd8739ae039"],"version":3,"file":"ThemeStart.js.map"} \ No newline at end of file diff --git a/content/themes/fipamo-default/frame.twig b/content/themes/fipamo-default/frame.twig deleted file mode 100644 index d38ce9e..0000000 --- a/content/themes/fipamo-default/frame.twig +++ /dev/null @@ -1,112 +0,0 @@ - - -{% if debug is defined %} - {% set assetPath = '/src/themes/theme-'~theme~'/'~theme~'/assets/' %} -{% else %} - {% set assetPath = '/assets/' %} -{% endif %} - - - - - {% block title %} - {{ title }} - {% endblock %} - - - - - - - - - - - - -
-
- {% if media|length > 1 %} - {% for item in media %} - {% if item.type == "mp4"%} -
- -
- {% else %} -
- {% endif %} - {% endfor %} - {% else %} - {% if media[0] != '' %} - {% if media[0].type == "mp4"%} -
- -
- {% else %} -
- {% endif %} - {% else %} - {% endif %} - {% endif %} -
- -
-
- {% apply spaceless %} - {% block mainContent %}{% endblock %} - {% endapply %} - -
- -
-
- {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - Archives
- {% else %} - Archives
- {% endif %} - {% else %} - Archives
- {% endif %} - © 2020 By Fipamo -
-
- - - diff --git a/content/themes/fipamo-default/index.twig b/content/themes/fipamo-default/index.twig deleted file mode 100644 index 11cba2f..0000000 --- a/content/themes/fipamo-default/index.twig +++ /dev/null @@ -1,51 +0,0 @@ -{% extends "frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - - {% block mainContent %} -
-
-

{{title}}

-

{{ content | raw }}

- -
-
-
-
-
- RECENT
- {% for item in recent %} - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - {{item.title}}
- {% else %} - {{item.title}}
- {% endif %} - - {% else %} - {{item.title}}
- {% endif %} - {% endfor %} - -
- - -
-
- {% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default/page-custom.twig b/content/themes/fipamo-default/page-custom.twig deleted file mode 100644 index 387ddf0..0000000 --- a/content/themes/fipamo-default/page-custom.twig +++ /dev/null @@ -1,60 +0,0 @@ -{% extends "frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - - {% block mainContent %} -
-
- {{title}}
- This is a custom temlate -
-
-
-
-

{{content | raw}}

-
-
-
- Files
- {% for doc in files %} - {% if doc.type != "mp3" %} - {% set path = doc.file|split('/') %} - {{path[6]}} - - {% endif %} - {% endfor %} -
-
- Sounds
- {% for doc in files %} - {% if doc.type == "mp3" %} - - {% endif %} - {% endfor %} -
- -
-
- {{meta['who']}} dropped this {{ meta['when'] }}
- tags: - {% for tag in meta['tags'] %} - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - {{ tag.label }} - {% else %} - {{ tag.label }} - {% endif %} - {% else %} - {{ tag.label }} - {% endif %} - {% endfor %} - -
-
-
- {% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default/page.twig b/content/themes/fipamo-default/page.twig deleted file mode 100644 index 896e694..0000000 --- a/content/themes/fipamo-default/page.twig +++ /dev/null @@ -1,62 +0,0 @@ -{% extends "frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - -{% block mainContent %} -
-
- {{title}} -
-
-
-
-

{{content | raw}}

-
-
-
- Files
- {% for doc in files %} - {% if doc.type != "mp3" %} - {% set path = doc.file|split('/') %} - {{path[6]}} - - {% endif %} - {% endfor %} -
-
- Sounds
- {% for doc in files %} - {% if doc.type == "mp3" %} - - {% endif %} - {% endfor %} -
- -
-
- {{meta['who']}} - dropped this - {{ meta['when'] }}
- tags: - - {% for tag in meta['tags'] %} - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - {{ tag.label }} - {% else %} - {{ tag.label }} - {% endif %} - {% else %} - {{ tag.label }} - {% endif %} - {% endfor %} - -
-
-
-{% endblock %} diff --git a/content/themes/fipamo-default/tags.twig b/content/themes/fipamo-default/tags.twig deleted file mode 100644 index baa6694..0000000 --- a/content/themes/fipamo-default/tags.twig +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "frame.twig" %} - -{% block title %} - {{ title }} -{% endblock %} - - {% block mainContent %} -
-
- {{title}} -
-
-
-
- {% for tag in tag_list %} - {% if dynamicRender is defined %} - {% if dynamicRender == 'true' %} - {{tag.title}}
- {% else %} - {{tag.title}}
- {% endif %} - - {% else %} - {{tag.title}}
- {% endif %} - {% endfor %} - -
-
- {% endblock %} \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index bacd4e7..d03de29 100644 --- a/routes/web.php +++ b/routes/web.php @@ -3,6 +3,7 @@ use Illuminate\Support\Facades\Route; use App\Http\Controllers\Dash\IndexController; use App\Http\Controllers\Dash\AuthController; +use App\Http\Controllers\Theming\ThemeController; /* |-------------------------------------------------------------------------- @@ -32,3 +33,9 @@ Route::group(['prefix' => 'dashboard', 'middleware' => 'member.check'], function Route::get("/page/{mode}/{uuid}", [IndexController::class, 'page']); Route::get("/logout", [AuthController::class, 'exit']); }); + +//theming + +Route::group(['prefix' => 'theme', 'middleware' => 'member.check'], function () { + Route::get("/view/{view?}", [ThemeController::class, 'getView']); +});