From 38c59f9039a979f9a7de61215e37f8d31c1335c8 Mon Sep 17 00:00:00 2001 From: trendschau Date: Tue, 29 Aug 2023 21:36:21 +0200 Subject: [PATCH] Finish image resize and grayscale in assets --- content/00-welcome/05-todos.txt | 2 +- content/02-blog/index.txt | 1 + content/02-blog/index.yaml | 20 ++ data/navigation/navi-draft.txt | 2 +- data/navigation/navi-extended.txt | 6 + data/navigation/navi-live.txt | 1 - ...creenshot-2023-08-03-at-15-23-44-setup.png | Bin 0 -> 30740 bytes ...creenshot-2023-08-03-at-15-23-44-setup.png | Bin 0 -> 47857 bytes ...creenshot-2023-08-03-at-15-23-44-setup.png | Bin 0 -> 7131 bytes media/tmp/1528492471.svg | 57 ----- system/typemill/Assets.php | 196 ++++++------------ .../typemill/Extensions/TwigMetaExtension.php | 32 +++ system/typemill/Models/Media.php | 126 ++++++++++- system/typemill/Models/Storage.php | 31 +++ system/typemill/system.php | 2 + 15 files changed, 282 insertions(+), 194 deletions(-) create mode 100644 content/02-blog/index.txt create mode 100644 content/02-blog/index.yaml delete mode 100644 data/navigation/navi-live.txt create mode 100644 media/live/screenshot-2023-08-03-at-15-23-44-setup.png create mode 100644 media/original/screenshot-2023-08-03-at-15-23-44-setup.png create mode 100644 media/thumbs/screenshot-2023-08-03-at-15-23-44-setup.png delete mode 100644 media/tmp/1528492471.svg create mode 100644 system/typemill/Extensions/TwigMetaExtension.php diff --git a/content/00-welcome/05-todos.txt b/content/00-welcome/05-todos.txt index 7b4b3ad..922e67e 100644 --- a/content/00-welcome/05-todos.txt +++ b/content/00-welcome/05-todos.txt @@ -1 +1 @@ -["# ToDos Version 2","[TOC]","## System settings","* DONE: Migrate from backend to frontend with vue and api\n* DONE: Redesign\n* DONE: License feature\n* DONE: Enhance with plugins","[:contactform :]","----","## Visual Editor","* DONE: Refactor and redesign\n* DONE: Fix toc component in new block\n* DONE: Fix hr component in new block\n* DONE: finish shortcode component\n* DONE: Fix inline formats\n* DONE: fix lenght of page\n* DONE: Fix design of new block at the end (background color)\n* DONE: Move Block\n* DONE: Fix headline design\n* DONE: Fix save on two enter\n* DONE: fix quote design\n* DONE: Fix toc preview\n* DONE: disable enable \n* DONE: Add load sign (from navigation)\n* DONE: File is not published from tmp to media\/files if you save the block.\n* ToDo: Customfields not styled yet.\n* ToDo: Warn if open another block\n* ToDo: finish youtube component","## Raw Editor","* DONE: Refactor and redesign\n* DONE: Integrate highlighting","## Navigation","* DONE: Refactor and redesign\n* DONE: fix status in navigation\n* DONE: refresh navigation after changes\n* ToDo: fix error messages\n* ToDo: Wrong frontend navigation if unpublished pages","## Publish Controller","* DONE: Refactor and redesign\n* DONE: Create \n* DONE: publish\n* DONE: unpublish\n* DONE: discard\n* DONE: delete\n* DONE: save draft\n* DONE: switch to raw","## Meta Tabs","* DONE: Refactor and redesign\n* DONE: Enhance with plugins","## Medialib","* DONE: Refactor and redesign","## Posts","* DONE: Refactor and redesign","## Plugins","* Asset Class in progress","## Frontend","* DONE: Refactor\n* DONE: Test restrictions","## Other big tasks","* DONE: System setup\n* DONE: Recover Password","## Medium tasks","* DONE: Merge processAssets modell\n* DONE: Table of content duplicated for published pages\n* DONE: Session handling: csrf fail and session start error if restrictions are active\n* DONE: Image and files for meta","## Open tasks","* DONE: Sitemap and ping\n* DONE: Version check\n* DONE: Proxy support\n* DONE: SVG checker: https:\/\/github.com\/TribalSystems\/SVG-Sanitizer\n* DONE: Backend form builder\n* Handle formdata centrally ???\n* Image generation on the fly\n* Markdown secure rendering\n* Responsive design\n* Captcha integration\n* Fix error api systemnavi\n* Reference feature\n* Typemill Utilities\n* Clear cache\n* Show security Log\n* User search only for +10 users","## Cleanups:","* DONE: Events\n* Error messages\n* Translations","## Info: Select userroles","* Userroles for file restriction: in vue-blox-components loaded via api\n* Userroles for userfields: in php model user getUserFields()\n* Userroles for meta: in php controller apiAuthorMeta getMeta()\n* Plugins and themes: in php model extension getThemeDefinitions()","## Info: License Check","* On activation in apiControllerExtension. It checks the license in yaml.\n* In plugin php code with setPremiumLicense\n* In static plugins, it checks manual premium list and method setPremiumLicense and more "] \ No newline at end of file +["# ToDos Version 2","[TOC]","## System settings","* DONE: Migrate from backend to frontend with vue and api\n* DONE: Redesign\n* DONE: License feature\n* DONE: Enhance with plugins","[:contactform :]","----","## Visual Editor","* DONE: Refactor and redesign\n* DONE: Fix toc component in new block\n* DONE: Fix hr component in new block\n* DONE: finish shortcode component\n* DONE: Fix inline formats\n* DONE: fix lenght of page\n* DONE: Fix design of new block at the end (background color)\n* DONE: Move Block\n* DONE: Fix headline design\n* DONE: Fix save on two enter\n* DONE: fix quote design\n* DONE: Fix toc preview\n* DONE: disable enable \n* DONE: Add load sign (from navigation)\n* DONE: File is not published from tmp to media\/files if you save the block.\n* ToDo: Customfields not styled yet.\n* ToDo: Warn if open another block\n* ToDo: finish youtube component","## Raw Editor","* DONE: Refactor and redesign\n* DONE: Integrate highlighting","## Navigation","* DONE: Refactor and redesign\n* DONE: fix status in navigation\n* DONE: refresh navigation after changes\n* ToDo: fix error messages\n* ToDo: Wrong frontend navigation if unpublished pages","## Publish Controller","* DONE: Refactor and redesign\n* DONE: Create \n* DONE: publish\n* DONE: unpublish\n* DONE: discard\n* DONE: delete\n* DONE: save draft\n* DONE: switch to raw","## Meta Tabs","* DONE: Refactor and redesign\n* DONE: Enhance with plugins","## Medialib","* DONE: Refactor and redesign","## Posts","* DONE: Refactor and redesign","## Plugins","* Asset Class in progress","## Frontend","* DONE: Refactor\n* DONE: Test restrictions","## Other big tasks","* DONE: System setup\n* DONE: Recover Password","## Medium tasks","* DONE: Merge processAssets modell\n* DONE: Table of content duplicated for published pages\n* DONE: Session handling: csrf fail and session start error if restrictions are active\n* DONE: Image and files for meta","## Open tasks","* * * DONE: Sitemap and ping\n* DONE: Version check\n* DONE: Proxy support\n* DONE: SVG checker: https:\/\/github.com\/TribalSystems\/SVG-Sanitizer\n* DONE: Backend form builder\n* Handle formdata centrally ???\n* DONE: Image generation on the fly\n* Markdown secure rendering\n* Responsive design\n* Captcha integration\n* Fix error api systemnavi\n* Bug: Delete folder in base level\n* Reference feature\n* Typemill Utilities\n* Clear cache\n* Show security Log\n* User search only for +10 users","## Cleanups:","* DONE: Events\n* Error messages\n* Translations","## Info: Select userroles","* Userroles for file restriction: in vue-blox-components loaded via api\n* Userroles for userfields: in php model user getUserFields()\n* Userroles for meta: in php controller apiAuthorMeta getMeta()\n* Plugins and themes: in php model extension getThemeDefinitions()","## Info: License Check","* On activation in apiControllerExtension. It checks the license in yaml.\n* In plugin php code with setPremiumLicense\n* In static plugins, it checks manual premium list and method setPremiumLicense and more ","## Plugins","* MAKER: Rebuild search\n* MAKER: Rebuild contactform with shortcode"] \ No newline at end of file diff --git a/content/02-blog/index.txt b/content/02-blog/index.txt new file mode 100644 index 0000000..8ce9f8f --- /dev/null +++ b/content/02-blog/index.txt @@ -0,0 +1 @@ +["# blog","Content"] \ No newline at end of file diff --git a/content/02-blog/index.yaml b/content/02-blog/index.yaml new file mode 100644 index 0000000..be1e822 --- /dev/null +++ b/content/02-blog/index.yaml @@ -0,0 +1,20 @@ +meta: + navtitle: blog + title: blog + description: Content + heroimage: null + heroimagealt: null + owner: Sebastian + author: null + allowedrole: null + alloweduser: null + manualdate: null + modified: '2023-08-25' + created: '2023-08-25' + time: 20-03-01 + reference: null + referencetype: null + hide: false + noindex: false + contains: posts + glossary: null diff --git a/data/navigation/navi-draft.txt b/data/navigation/navi-draft.txt index 1ac3b01..ae5a16f 100644 --- a/data/navigation/navi-draft.txt +++ b/data/navigation/navi-draft.txt @@ -1 +1 @@ -a:2:{i:0;O:8:"stdClass":22:{s:12:"originalName";s:10:"00-welcome";s:11:"elementType";s:6:"folder";s:8:"contains";s:5:"pages";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"00";s:4:"name";s:7:"welcome";s:4:"slug";s:7:"welcome";s:4:"path";s:11:"/00-welcome";s:15:"pathWithoutType";s:17:"/00-welcome/index";s:9:"urlRelWoF";s:8:"/welcome";s:6:"urlRel";s:17:"/typemill/welcome";s:6:"urlAbs";s:33:"http://localhost/typemill/welcome";s:3:"key";i:0;s:7:"keyPath";i:0;s:12:"keyPathArray";a:1:{i:0;s:1:"0";}s:7:"chapter";i:1;s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:13:"folderContent";a:6:{i:0;O:8:"stdClass":20:{s:12:"originalName";s:24:"00-setup-your-website.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"00";s:4:"name";s:18:"setup your website";s:4:"slug";s:18:"setup-your-website";s:4:"path";s:36:"/00-welcome/00-setup-your-website.md";s:15:"pathWithoutType";s:33:"/00-welcome/00-setup-your-website";s:3:"key";i:0;s:7:"keyPath";s:3:"0.0";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"0";}s:7:"chapter";s:3:"1.1";s:9:"urlRelWoF";s:27:"/welcome/setup-your-website";s:6:"urlRel";s:36:"/typemill/welcome/setup-your-website";s:6:"urlAbs";s:52:"http://localhost/typemill/welcome/setup-your-website";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:1;O:8:"stdClass":20:{s:12:"originalName";s:19:"01-manage-access.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"01";s:4:"name";s:13:"manage access";s:4:"slug";s:13:"manage-access";s:4:"path";s:31:"/00-welcome/01-manage-access.md";s:15:"pathWithoutType";s:28:"/00-welcome/01-manage-access";s:3:"key";i:1;s:7:"keyPath";s:3:"0.1";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"1";}s:7:"chapter";s:3:"1.2";s:9:"urlRelWoF";s:22:"/welcome/manage-access";s:6:"urlRel";s:31:"/typemill/welcome/manage-access";s:6:"urlAbs";s:47:"http://localhost/typemill/welcome/manage-access";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:2;O:8:"stdClass":20:{s:12:"originalName";s:19:"02-write-content.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"02";s:4:"name";s:13:"write content";s:4:"slug";s:13:"write-content";s:4:"path";s:31:"/00-welcome/02-write-content.md";s:15:"pathWithoutType";s:28:"/00-welcome/02-write-content";s:3:"key";i:2;s:7:"keyPath";s:3:"0.2";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"2";}s:7:"chapter";s:3:"1.3";s:9:"urlRelWoF";s:22:"/welcome/write-content";s:6:"urlRel";s:31:"/typemill/welcome/write-content";s:6:"urlAbs";s:47:"http://localhost/typemill/welcome/write-content";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:3;O:8:"stdClass":20:{s:12:"originalName";s:14:"03-get-help.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"03";s:4:"name";s:8:"get help";s:4:"slug";s:8:"get-help";s:4:"path";s:26:"/00-welcome/03-get-help.md";s:15:"pathWithoutType";s:23:"/00-welcome/03-get-help";s:3:"key";i:3;s:7:"keyPath";s:3:"0.3";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"3";}s:7:"chapter";s:3:"1.4";s:9:"urlRelWoF";s:17:"/welcome/get-help";s:6:"urlRel";s:26:"/typemill/welcome/get-help";s:6:"urlAbs";s:42:"http://localhost/typemill/welcome/get-help";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:4;O:8:"stdClass":20:{s:12:"originalName";s:19:"04-markdown-test.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"04";s:4:"name";s:13:"markdown test";s:4:"slug";s:13:"markdown-test";s:4:"path";s:31:"/00-welcome/04-markdown-test.md";s:15:"pathWithoutType";s:28:"/00-welcome/04-markdown-test";s:3:"key";i:4;s:7:"keyPath";s:3:"0.4";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"4";}s:7:"chapter";s:3:"1.5";s:9:"urlRelWoF";s:22:"/welcome/markdown-test";s:6:"urlRel";s:31:"/typemill/welcome/markdown-test";s:6:"urlAbs";s:47:"http://localhost/typemill/welcome/markdown-test";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:5;O:8:"stdClass":20:{s:12:"originalName";s:14:"05-todos.txtmd";s:11:"elementType";s:4:"file";s:6:"status";s:8:"modified";s:8:"fileType";s:3:"txt";s:5:"order";s:2:"05";s:4:"name";s:6:"To Dos";s:4:"slug";s:5:"todos";s:4:"path";s:26:"/00-welcome/05-todos.txtmd";s:15:"pathWithoutType";s:20:"/00-welcome/05-todos";s:3:"key";i:5;s:7:"keyPath";s:3:"0.5";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"5";}s:7:"chapter";s:3:"1.6";s:9:"urlRelWoF";s:14:"/welcome/todos";s:6:"urlRel";s:23:"/typemill/welcome/todos";s:6:"urlAbs";s:39:"http://localhost/typemill/welcome/todos";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}}s:7:"noindex";b:0;}i:1;O:8:"stdClass":22:{s:12:"originalName";s:16:"01-cyanine-theme";s:11:"elementType";s:6:"folder";s:8:"contains";s:5:"pages";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"01";s:4:"name";s:13:"cyanine theme";s:4:"slug";s:13:"cyanine-theme";s:4:"path";s:17:"/01-cyanine-theme";s:15:"pathWithoutType";s:23:"/01-cyanine-theme/index";s:9:"urlRelWoF";s:14:"/cyanine-theme";s:6:"urlRel";s:23:"/typemill/cyanine-theme";s:6:"urlAbs";s:39:"http://localhost/typemill/cyanine-theme";s:3:"key";i:1;s:7:"keyPath";i:1;s:12:"keyPathArray";a:1:{i:0;s:1:"1";}s:7:"chapter";i:2;s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:13:"folderContent";a:4:{i:0;O:8:"stdClass":20:{s:12:"originalName";s:17:"00-landingpage.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"00";s:4:"name";s:11:"landingpage";s:4:"slug";s:11:"landingpage";s:4:"path";s:35:"/01-cyanine-theme/00-landingpage.md";s:15:"pathWithoutType";s:32:"/01-cyanine-theme/00-landingpage";s:3:"key";i:0;s:7:"keyPath";s:3:"1.0";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"0";}s:7:"chapter";s:3:"2.1";s:9:"urlRelWoF";s:26:"/cyanine-theme/landingpage";s:6:"urlRel";s:35:"/typemill/cyanine-theme/landingpage";s:6:"urlAbs";s:51:"http://localhost/typemill/cyanine-theme/landingpage";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:1;}i:1;O:8:"stdClass":20:{s:12:"originalName";s:22:"01-colors-and-fonts.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"01";s:4:"name";s:16:"colors and fonts";s:4:"slug";s:16:"colors-and-fonts";s:4:"path";s:40:"/01-cyanine-theme/01-colors-and-fonts.md";s:15:"pathWithoutType";s:37:"/01-cyanine-theme/01-colors-and-fonts";s:3:"key";i:1;s:7:"keyPath";s:3:"1.1";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"1";}s:7:"chapter";s:3:"2.2";s:9:"urlRelWoF";s:31:"/cyanine-theme/colors-and-fonts";s:6:"urlRel";s:40:"/typemill/cyanine-theme/colors-and-fonts";s:6:"urlAbs";s:56:"http://localhost/typemill/cyanine-theme/colors-and-fonts";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:2;O:8:"stdClass":20:{s:12:"originalName";s:12:"02-footer.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"02";s:4:"name";s:6:"footer";s:4:"slug";s:6:"footer";s:4:"path";s:30:"/01-cyanine-theme/02-footer.md";s:15:"pathWithoutType";s:27:"/01-cyanine-theme/02-footer";s:3:"key";i:2;s:7:"keyPath";s:3:"1.2";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"2";}s:7:"chapter";s:3:"2.3";s:9:"urlRelWoF";s:21:"/cyanine-theme/footer";s:6:"urlRel";s:30:"/typemill/cyanine-theme/footer";s:6:"urlAbs";s:46:"http://localhost/typemill/cyanine-theme/footer";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:3;O:8:"stdClass":20:{s:12:"originalName";s:22:"03-content-elements.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"03";s:4:"name";s:16:"content elements";s:4:"slug";s:16:"content-elements";s:4:"path";s:40:"/01-cyanine-theme/03-content-elements.md";s:15:"pathWithoutType";s:37:"/01-cyanine-theme/03-content-elements";s:3:"key";i:3;s:7:"keyPath";s:3:"1.3";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"3";}s:7:"chapter";s:3:"2.4";s:9:"urlRelWoF";s:31:"/cyanine-theme/content-elements";s:6:"urlRel";s:40:"/typemill/cyanine-theme/content-elements";s:6:"urlAbs";s:56:"http://localhost/typemill/cyanine-theme/content-elements";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}}s:7:"noindex";b:0;}} \ No newline at end of file +a:3:{i:0;O:8:"stdClass":22:{s:12:"originalName";s:10:"00-welcome";s:11:"elementType";s:6:"folder";s:8:"contains";s:5:"pages";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"00";s:4:"name";s:7:"welcome";s:4:"slug";s:7:"welcome";s:4:"path";s:11:"/00-welcome";s:15:"pathWithoutType";s:17:"/00-welcome/index";s:9:"urlRelWoF";s:8:"/welcome";s:6:"urlRel";s:17:"/typemill/welcome";s:6:"urlAbs";s:33:"http://localhost/typemill/welcome";s:3:"key";i:0;s:7:"keyPath";i:0;s:12:"keyPathArray";a:1:{i:0;s:1:"0";}s:7:"chapter";i:1;s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:13:"folderContent";a:6:{i:0;O:8:"stdClass":20:{s:12:"originalName";s:24:"00-setup-your-website.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"00";s:4:"name";s:18:"setup your website";s:4:"slug";s:18:"setup-your-website";s:4:"path";s:36:"/00-welcome/00-setup-your-website.md";s:15:"pathWithoutType";s:33:"/00-welcome/00-setup-your-website";s:3:"key";i:0;s:7:"keyPath";s:3:"0.0";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"0";}s:7:"chapter";s:3:"1.1";s:9:"urlRelWoF";s:27:"/welcome/setup-your-website";s:6:"urlRel";s:36:"/typemill/welcome/setup-your-website";s:6:"urlAbs";s:52:"http://localhost/typemill/welcome/setup-your-website";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:1;O:8:"stdClass":20:{s:12:"originalName";s:19:"01-manage-access.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"01";s:4:"name";s:13:"manage access";s:4:"slug";s:13:"manage-access";s:4:"path";s:31:"/00-welcome/01-manage-access.md";s:15:"pathWithoutType";s:28:"/00-welcome/01-manage-access";s:3:"key";i:1;s:7:"keyPath";s:3:"0.1";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"1";}s:7:"chapter";s:3:"1.2";s:9:"urlRelWoF";s:22:"/welcome/manage-access";s:6:"urlRel";s:31:"/typemill/welcome/manage-access";s:6:"urlAbs";s:47:"http://localhost/typemill/welcome/manage-access";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:2;O:8:"stdClass":20:{s:12:"originalName";s:19:"02-write-content.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"02";s:4:"name";s:13:"write content";s:4:"slug";s:13:"write-content";s:4:"path";s:31:"/00-welcome/02-write-content.md";s:15:"pathWithoutType";s:28:"/00-welcome/02-write-content";s:3:"key";i:2;s:7:"keyPath";s:3:"0.2";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"2";}s:7:"chapter";s:3:"1.3";s:9:"urlRelWoF";s:22:"/welcome/write-content";s:6:"urlRel";s:31:"/typemill/welcome/write-content";s:6:"urlAbs";s:47:"http://localhost/typemill/welcome/write-content";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:3;O:8:"stdClass":20:{s:12:"originalName";s:14:"03-get-help.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"03";s:4:"name";s:8:"get help";s:4:"slug";s:8:"get-help";s:4:"path";s:26:"/00-welcome/03-get-help.md";s:15:"pathWithoutType";s:23:"/00-welcome/03-get-help";s:3:"key";i:3;s:7:"keyPath";s:3:"0.3";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"3";}s:7:"chapter";s:3:"1.4";s:9:"urlRelWoF";s:17:"/welcome/get-help";s:6:"urlRel";s:26:"/typemill/welcome/get-help";s:6:"urlAbs";s:42:"http://localhost/typemill/welcome/get-help";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:4;O:8:"stdClass":20:{s:12:"originalName";s:19:"04-markdown-test.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"04";s:4:"name";s:13:"markdown test";s:4:"slug";s:13:"markdown-test";s:4:"path";s:31:"/00-welcome/04-markdown-test.md";s:15:"pathWithoutType";s:28:"/00-welcome/04-markdown-test";s:3:"key";i:4;s:7:"keyPath";s:3:"0.4";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"4";}s:7:"chapter";s:3:"1.5";s:9:"urlRelWoF";s:22:"/welcome/markdown-test";s:6:"urlRel";s:31:"/typemill/welcome/markdown-test";s:6:"urlAbs";s:47:"http://localhost/typemill/welcome/markdown-test";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:5;O:8:"stdClass":20:{s:12:"originalName";s:14:"05-todos.txtmd";s:11:"elementType";s:4:"file";s:6:"status";s:8:"modified";s:8:"fileType";s:3:"txt";s:5:"order";s:2:"05";s:4:"name";s:6:"To Dos";s:4:"slug";s:5:"todos";s:4:"path";s:26:"/00-welcome/05-todos.txtmd";s:15:"pathWithoutType";s:20:"/00-welcome/05-todos";s:3:"key";i:5;s:7:"keyPath";s:3:"0.5";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"5";}s:7:"chapter";s:3:"1.6";s:9:"urlRelWoF";s:14:"/welcome/todos";s:6:"urlRel";s:23:"/typemill/welcome/todos";s:6:"urlAbs";s:39:"http://localhost/typemill/welcome/todos";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}}s:7:"noindex";b:0;}i:1;O:8:"stdClass":22:{s:12:"originalName";s:16:"01-cyanine-theme";s:11:"elementType";s:6:"folder";s:8:"contains";s:5:"pages";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"01";s:4:"name";s:13:"cyanine theme";s:4:"slug";s:13:"cyanine-theme";s:4:"path";s:17:"/01-cyanine-theme";s:15:"pathWithoutType";s:23:"/01-cyanine-theme/index";s:9:"urlRelWoF";s:14:"/cyanine-theme";s:6:"urlRel";s:23:"/typemill/cyanine-theme";s:6:"urlAbs";s:39:"http://localhost/typemill/cyanine-theme";s:3:"key";i:1;s:7:"keyPath";i:1;s:12:"keyPathArray";a:1:{i:0;s:1:"1";}s:7:"chapter";i:2;s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:13:"folderContent";a:4:{i:0;O:8:"stdClass":20:{s:12:"originalName";s:17:"00-landingpage.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"00";s:4:"name";s:11:"landingpage";s:4:"slug";s:11:"landingpage";s:4:"path";s:35:"/01-cyanine-theme/00-landingpage.md";s:15:"pathWithoutType";s:32:"/01-cyanine-theme/00-landingpage";s:3:"key";i:0;s:7:"keyPath";s:3:"1.0";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"0";}s:7:"chapter";s:3:"2.1";s:9:"urlRelWoF";s:26:"/cyanine-theme/landingpage";s:6:"urlRel";s:35:"/typemill/cyanine-theme/landingpage";s:6:"urlAbs";s:51:"http://localhost/typemill/cyanine-theme/landingpage";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:1;}i:1;O:8:"stdClass":20:{s:12:"originalName";s:22:"01-colors-and-fonts.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"01";s:4:"name";s:16:"colors and fonts";s:4:"slug";s:16:"colors-and-fonts";s:4:"path";s:40:"/01-cyanine-theme/01-colors-and-fonts.md";s:15:"pathWithoutType";s:37:"/01-cyanine-theme/01-colors-and-fonts";s:3:"key";i:1;s:7:"keyPath";s:3:"1.1";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"1";}s:7:"chapter";s:3:"2.2";s:9:"urlRelWoF";s:31:"/cyanine-theme/colors-and-fonts";s:6:"urlRel";s:40:"/typemill/cyanine-theme/colors-and-fonts";s:6:"urlAbs";s:56:"http://localhost/typemill/cyanine-theme/colors-and-fonts";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:2;O:8:"stdClass":20:{s:12:"originalName";s:12:"02-footer.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"02";s:4:"name";s:6:"footer";s:4:"slug";s:6:"footer";s:4:"path";s:30:"/01-cyanine-theme/02-footer.md";s:15:"pathWithoutType";s:27:"/01-cyanine-theme/02-footer";s:3:"key";i:2;s:7:"keyPath";s:3:"1.2";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"2";}s:7:"chapter";s:3:"2.3";s:9:"urlRelWoF";s:21:"/cyanine-theme/footer";s:6:"urlRel";s:30:"/typemill/cyanine-theme/footer";s:6:"urlAbs";s:46:"http://localhost/typemill/cyanine-theme/footer";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:3;O:8:"stdClass":20:{s:12:"originalName";s:22:"03-content-elements.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"03";s:4:"name";s:16:"content elements";s:4:"slug";s:16:"content-elements";s:4:"path";s:40:"/01-cyanine-theme/03-content-elements.md";s:15:"pathWithoutType";s:37:"/01-cyanine-theme/03-content-elements";s:3:"key";i:3;s:7:"keyPath";s:3:"1.3";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"3";}s:7:"chapter";s:3:"2.4";s:9:"urlRelWoF";s:31:"/cyanine-theme/content-elements";s:6:"urlRel";s:40:"/typemill/cyanine-theme/content-elements";s:6:"urlAbs";s:56:"http://localhost/typemill/cyanine-theme/content-elements";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}}s:7:"noindex";b:0;}i:2;O:8:"stdClass":22:{s:12:"originalName";s:7:"02-blog";s:11:"elementType";s:6:"folder";s:8:"contains";s:5:"posts";s:6:"status";s:11:"unpublished";s:8:"fileType";s:3:"txt";s:5:"order";s:2:"02";s:4:"name";s:4:"blog";s:4:"slug";s:4:"blog";s:4:"path";s:8:"/02-blog";s:15:"pathWithoutType";s:14:"/02-blog/index";s:9:"urlRelWoF";s:5:"/blog";s:6:"urlRel";s:14:"/typemill/blog";s:6:"urlAbs";s:30:"http://localhost/typemill/blog";s:3:"key";i:2;s:7:"keyPath";i:2;s:12:"keyPathArray";a:1:{i:0;s:1:"2";}s:7:"chapter";i:3;s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:13:"folderContent";a:0:{}s:7:"noindex";b:0;}} \ No newline at end of file diff --git a/data/navigation/navi-extended.txt b/data/navigation/navi-extended.txt index 51eb9f4..504f95e 100644 --- a/data/navigation/navi-extended.txt +++ b/data/navigation/navi-extended.txt @@ -70,3 +70,9 @@ noindex: false path: /01-cyanine-theme/03-content-elements.md keyPath: '1.3' +/blog: + navtitle: blog + hide: false + noindex: false + path: /02-blog + keyPath: 2 diff --git a/data/navigation/navi-live.txt b/data/navigation/navi-live.txt deleted file mode 100644 index fa2b493..0000000 --- a/data/navigation/navi-live.txt +++ /dev/null @@ -1 +0,0 @@ -a:2:{i:0;O:8:"stdClass":22:{s:12:"originalName";s:10:"00-welcome";s:11:"elementType";s:6:"folder";s:8:"contains";s:5:"pages";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"00";s:4:"name";s:7:"welcome";s:4:"slug";s:7:"welcome";s:4:"path";s:11:"/00-welcome";s:15:"pathWithoutType";s:17:"/00-welcome/index";s:9:"urlRelWoF";s:8:"/welcome";s:6:"urlRel";s:17:"/typemill/welcome";s:6:"urlAbs";s:33:"http://localhost/typemill/welcome";s:3:"key";i:0;s:7:"keyPath";i:0;s:12:"keyPathArray";a:1:{i:0;s:1:"0";}s:7:"chapter";i:1;s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:13:"folderContent";a:6:{i:0;O:8:"stdClass":20:{s:12:"originalName";s:24:"00-setup-your-website.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"00";s:4:"name";s:18:"setup your website";s:4:"slug";s:18:"setup-your-website";s:4:"path";s:36:"/00-welcome/00-setup-your-website.md";s:15:"pathWithoutType";s:33:"/00-welcome/00-setup-your-website";s:3:"key";i:0;s:7:"keyPath";s:3:"0.0";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"0";}s:7:"chapter";s:3:"1.1";s:9:"urlRelWoF";s:27:"/welcome/setup-your-website";s:6:"urlRel";s:36:"/typemill/welcome/setup-your-website";s:6:"urlAbs";s:52:"http://localhost/typemill/welcome/setup-your-website";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:1;O:8:"stdClass":20:{s:12:"originalName";s:19:"01-manage-access.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"01";s:4:"name";s:13:"manage access";s:4:"slug";s:13:"manage-access";s:4:"path";s:31:"/00-welcome/01-manage-access.md";s:15:"pathWithoutType";s:28:"/00-welcome/01-manage-access";s:3:"key";i:1;s:7:"keyPath";s:3:"0.1";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"1";}s:7:"chapter";s:3:"1.2";s:9:"urlRelWoF";s:22:"/welcome/manage-access";s:6:"urlRel";s:31:"/typemill/welcome/manage-access";s:6:"urlAbs";s:47:"http://localhost/typemill/welcome/manage-access";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:2;O:8:"stdClass":20:{s:12:"originalName";s:19:"02-write-content.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"02";s:4:"name";s:13:"write content";s:4:"slug";s:13:"write-content";s:4:"path";s:31:"/00-welcome/02-write-content.md";s:15:"pathWithoutType";s:28:"/00-welcome/02-write-content";s:3:"key";i:2;s:7:"keyPath";s:3:"0.2";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"2";}s:7:"chapter";s:3:"1.3";s:9:"urlRelWoF";s:22:"/welcome/write-content";s:6:"urlRel";s:31:"/typemill/welcome/write-content";s:6:"urlAbs";s:47:"http://localhost/typemill/welcome/write-content";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:3;O:8:"stdClass":20:{s:12:"originalName";s:14:"03-get-help.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"03";s:4:"name";s:8:"get help";s:4:"slug";s:8:"get-help";s:4:"path";s:26:"/00-welcome/03-get-help.md";s:15:"pathWithoutType";s:23:"/00-welcome/03-get-help";s:3:"key";i:3;s:7:"keyPath";s:3:"0.3";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"3";}s:7:"chapter";s:3:"1.4";s:9:"urlRelWoF";s:17:"/welcome/get-help";s:6:"urlRel";s:26:"/typemill/welcome/get-help";s:6:"urlAbs";s:42:"http://localhost/typemill/welcome/get-help";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:4;O:8:"stdClass":20:{s:12:"originalName";s:19:"04-markdown-test.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"04";s:4:"name";s:13:"markdown test";s:4:"slug";s:13:"markdown-test";s:4:"path";s:31:"/00-welcome/04-markdown-test.md";s:15:"pathWithoutType";s:28:"/00-welcome/04-markdown-test";s:3:"key";i:4;s:7:"keyPath";s:3:"0.4";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"4";}s:7:"chapter";s:3:"1.5";s:9:"urlRelWoF";s:22:"/welcome/markdown-test";s:6:"urlRel";s:31:"/typemill/welcome/markdown-test";s:6:"urlAbs";s:47:"http://localhost/typemill/welcome/markdown-test";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:5;O:8:"stdClass":20:{s:12:"originalName";s:11:"05-todos.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"05";s:4:"name";s:6:"To Dos";s:4:"slug";s:5:"todos";s:4:"path";s:23:"/00-welcome/05-todos.md";s:15:"pathWithoutType";s:20:"/00-welcome/05-todos";s:3:"key";i:5;s:7:"keyPath";s:3:"0.5";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"5";}s:7:"chapter";s:3:"1.6";s:9:"urlRelWoF";s:14:"/welcome/todos";s:6:"urlRel";s:23:"/typemill/welcome/todos";s:6:"urlAbs";s:39:"http://localhost/typemill/welcome/todos";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}}s:7:"noindex";b:0;}i:1;O:8:"stdClass":22:{s:12:"originalName";s:16:"01-cyanine-theme";s:11:"elementType";s:6:"folder";s:8:"contains";s:5:"pages";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"01";s:4:"name";s:13:"cyanine theme";s:4:"slug";s:13:"cyanine-theme";s:4:"path";s:17:"/01-cyanine-theme";s:15:"pathWithoutType";s:23:"/01-cyanine-theme/index";s:9:"urlRelWoF";s:14:"/cyanine-theme";s:6:"urlRel";s:23:"/typemill/cyanine-theme";s:6:"urlAbs";s:39:"http://localhost/typemill/cyanine-theme";s:3:"key";i:1;s:7:"keyPath";i:1;s:12:"keyPathArray";a:1:{i:0;s:1:"1";}s:7:"chapter";i:2;s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:13:"folderContent";a:4:{i:0;O:8:"stdClass":20:{s:12:"originalName";s:17:"00-landingpage.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"00";s:4:"name";s:11:"landingpage";s:4:"slug";s:11:"landingpage";s:4:"path";s:35:"/01-cyanine-theme/00-landingpage.md";s:15:"pathWithoutType";s:32:"/01-cyanine-theme/00-landingpage";s:3:"key";i:0;s:7:"keyPath";s:3:"1.0";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"0";}s:7:"chapter";s:3:"2.1";s:9:"urlRelWoF";s:26:"/cyanine-theme/landingpage";s:6:"urlRel";s:35:"/typemill/cyanine-theme/landingpage";s:6:"urlAbs";s:51:"http://localhost/typemill/cyanine-theme/landingpage";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:1;}i:1;O:8:"stdClass":20:{s:12:"originalName";s:22:"01-colors-and-fonts.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"01";s:4:"name";s:16:"colors and fonts";s:4:"slug";s:16:"colors-and-fonts";s:4:"path";s:40:"/01-cyanine-theme/01-colors-and-fonts.md";s:15:"pathWithoutType";s:37:"/01-cyanine-theme/01-colors-and-fonts";s:3:"key";i:1;s:7:"keyPath";s:3:"1.1";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"1";}s:7:"chapter";s:3:"2.2";s:9:"urlRelWoF";s:31:"/cyanine-theme/colors-and-fonts";s:6:"urlRel";s:40:"/typemill/cyanine-theme/colors-and-fonts";s:6:"urlAbs";s:56:"http://localhost/typemill/cyanine-theme/colors-and-fonts";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:2;O:8:"stdClass":20:{s:12:"originalName";s:12:"02-footer.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"02";s:4:"name";s:6:"footer";s:4:"slug";s:6:"footer";s:4:"path";s:30:"/01-cyanine-theme/02-footer.md";s:15:"pathWithoutType";s:27:"/01-cyanine-theme/02-footer";s:3:"key";i:2;s:7:"keyPath";s:3:"1.2";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"2";}s:7:"chapter";s:3:"2.3";s:9:"urlRelWoF";s:21:"/cyanine-theme/footer";s:6:"urlRel";s:30:"/typemill/cyanine-theme/footer";s:6:"urlAbs";s:46:"http://localhost/typemill/cyanine-theme/footer";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:3;O:8:"stdClass":20:{s:12:"originalName";s:22:"03-content-elements.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"03";s:4:"name";s:16:"content elements";s:4:"slug";s:16:"content-elements";s:4:"path";s:40:"/01-cyanine-theme/03-content-elements.md";s:15:"pathWithoutType";s:37:"/01-cyanine-theme/03-content-elements";s:3:"key";i:3;s:7:"keyPath";s:3:"1.3";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"3";}s:7:"chapter";s:3:"2.4";s:9:"urlRelWoF";s:31:"/cyanine-theme/content-elements";s:6:"urlRel";s:40:"/typemill/cyanine-theme/content-elements";s:6:"urlAbs";s:56:"http://localhost/typemill/cyanine-theme/content-elements";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}}s:7:"noindex";b:0;}} \ No newline at end of file diff --git a/media/live/screenshot-2023-08-03-at-15-23-44-setup.png b/media/live/screenshot-2023-08-03-at-15-23-44-setup.png new file mode 100644 index 0000000000000000000000000000000000000000..b92e64b391e5354afeb3f4d5dea9b8608f7b6ab0 GIT binary patch literal 30740 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 Y!o*cGb5B2A0RKHyR97gHGYkB`02@=E<^TWy literal 0 HcmV?d00001 diff --git a/media/thumbs/screenshot-2023-08-03-at-15-23-44-setup.png b/media/thumbs/screenshot-2023-08-03-at-15-23-44-setup.png new file mode 100644 index 0000000000000000000000000000000000000000..ffb91aa6c65d0d4c9a8a63e6b338686432aaa36f GIT binary patch literal 7131 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 literal 0 HcmV?d00001 diff --git a/media/tmp/1528492471.svg b/media/tmp/1528492471.svg deleted file mode 100644 index c9f8796..0000000 --- a/media/tmp/1528492471.svg +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/system/typemill/Assets.php b/system/typemill/Assets.php index 5cd2338..f2936fb 100644 --- a/system/typemill/Assets.php +++ b/system/typemill/Assets.php @@ -2,7 +2,9 @@ namespace Typemill; -use Typemill\Models\ProcessImage; +use Typemill\Models\Media; +use Typemill\Models\Meta; +use Typemill\Models\StorageWrapper; # this class is available to the container and to all plugins class Assets @@ -22,7 +24,7 @@ class Assets $this->svgSymbols = array(); $this->meta = array(); $this->imageUrl = false; - $this->imageFolder = 'original'; + $this->imageFolder = 'originalFolder'; } public function setUri($uri) @@ -35,117 +37,6 @@ class Assets $this->baseUrl = $baseUrl; } - public function image($url) - { - $this->imageUrl = $url; - return $this; - } - - public function resize($width,$height) - { - $pathinfo = pathinfo($this->imageUrl); - $extension = strtolower($pathinfo['extension']); - $imageName = $pathinfo['filename']; - - $desiredSizes = ['custom' => []]; - - $resize = '-'; - - if(is_int($width) && $width < 10000) - { - $resize .= $width; - $desiredSizes['custom']['width'] = $width; - } - - $resize .= 'x'; - - if(is_int($height) && $height < 10000) - { - $resize .= $height; - $desiredSizes['custom']['height'] = $height; - } - - $processImage = new ProcessImage($desiredSizes); - - $processImage->checkFolders('images'); - - $imageNameResized = $imageName . $resize; - $imagePathResized = $processImage->customFolder . $imageNameResized . '.' . $extension; - $imageUrlResized = 'media/custom/' . $imageNameResized . '.' . $extension; - - if(!file_exists( $imagePathResized )) - { - # if custom version does not exist, use original version for resizing - $imageFolder = ($this->imageFolder == 'original') ? $processImage->originalFolder : $processImage->customFolder; - - $imagePath = $imageFolder . $pathinfo['basename']; - - $resizedImage = $processImage->generateSizesFromImageFile($imageUrlResized, $imagePath); - - $savedImage = $processImage->saveImage($processImage->customFolder, $resizedImage['custom'], $imageNameResized, $extension); - - if(!$savedImage) - { - # return old image url without resize - return $this; - } - } - # set folder to custom, so that the next method uses the correct (resized) version - $this->imageFolder = 'custom'; - - $this->imageUrl = $imageUrlResized; - return $this; - } - - public function grayscale() - { - $pathinfo = pathinfo($this->imageUrl); - $extension = strtolower($pathinfo['extension']); - $imageName = $pathinfo['filename']; - - $processImage = new ProcessImage([]); - - $processImage->checkFolders('images'); - - $imageNameGrayscale = $imageName . '-grayscale'; - $imagePathGrayscale = $processImage->customFolder . $imageNameGrayscale . '.' . $extension; - $imageUrlGrayscale = 'media/custom/' . $imageNameGrayscale . '.' . $extension; - - if(!file_exists( $imagePathGrayscale )) - { - # if custom-version does not exist, use live-version for grayscale-manipulation. - $imageFolder = ($this->imageFolder == 'original') ? $processImage->liveFolder : $processImage->customFolder; - - $imagePath = $imageFolder . $pathinfo['basename']; - - $grayscaleImage = $processImage->grayscale($imagePath, $extension); - - $savedImage = $processImage->saveImage($processImage->customFolder, $grayscaleImage, $imageNameGrayscale, $extension); - - if(!$savedImage) - { - # return old image url without resize - return $this; - } - } - - # set folder to custom, so that the next method uses the correct (resized) version - $this->imageFolder = 'custom'; - - $this->imageUrl = $imageUrlGrayscale; - return $this; - } - - public function src() - { - # when we finish it, we shoud reset all settings - $imagePath = $this->baseUrl . '/' . $this->imageUrl; - $this->imageUrl = false; - $this->imageFolder = 'original'; - - return $imagePath; - } - public function addCSS($CSS) { $CSSfile = $this->getFileUrl($CSS); @@ -237,11 +128,6 @@ class Assets } } - public function addMeta($key,$meta) - { - $this->meta[$key] = $meta; - } - public function renderEditorJS() { return implode("\n", $this->editorJS) . implode("\n", $this->editorInlineJS); @@ -267,21 +153,6 @@ class Assets return implode('', $this->svgSymbols); } - public function renderMeta() - { - $metaLines = ''; - foreach($this->meta as $meta) - { - $metaLines .= "\n"; - $metaLines .= $meta; - } - return $metaLines; - } - /** - * Checks, if a string is a valid internal or external ressource like js-file or css-file - * @params $path string - * @return string or false - */ public function getFileUrl($path) { # check system path of file without parameter for fingerprinting @@ -301,4 +172,63 @@ class Assets return false; } + + /********************** + * META FEATURES * + **********************/ + + public function addMeta($key,$meta) + { + $this->meta[$key] = $meta; + } + + public function renderMeta() + { + $metaLines = ''; + foreach($this->meta as $meta) + { + $metaLines .= "\n"; + $metaLines .= $meta; + } + return $metaLines; + } + + /********************** + * IMAGE MANIPULATION * + **********************/ + + public function image($url) + { + # image url is passed with twig-function + $this->imageUrl = $url; + + $this->media = new Media(); + + return $this; + } + + public function resize($width, $height) + { + $this->imageUrl = $this->media->createCustomSize($this->imageUrl, $width, $height); + + return $this; + } + + public function grayscale() + { + $this->imageUrl = $this->media->createGrayscale($this->imageUrl); + + return $this; + } + + public function src() + { + # create absolute image url + $absImageUrl = $this->baseUrl . '/' . $this->imageUrl; + + # reset image url + $this->imageUrl = false; + + return $absImageUrl; + } } \ No newline at end of file diff --git a/system/typemill/Extensions/TwigMetaExtension.php b/system/typemill/Extensions/TwigMetaExtension.php new file mode 100644 index 0000000..0af943b --- /dev/null +++ b/system/typemill/Extensions/TwigMetaExtension.php @@ -0,0 +1,32 @@ +getMetaData($item); + + if(!$metadata OR $metadata['meta']['title'] == '' OR $metadata['meta']['description'] == '') + { + $metadata = $meta->addMetaDefaults($metadata, $item, $settings['author']); + } + + return $metadata; + } +} \ No newline at end of file diff --git a/system/typemill/Models/Media.php b/system/typemill/Models/Media.php index 84e3721..aca544e 100644 --- a/system/typemill/Models/Media.php +++ b/system/typemill/Models/Media.php @@ -3,6 +3,7 @@ namespace Typemill\Models; use Typemill\Models\Folder; +use Typemill\Models\StorageWrapper; use Typemill\Models\SvgSanitizer; use Typemill\Static\Slug; @@ -444,13 +445,14 @@ class Media imagesavealpha($resizedImage, true); } - imagecopyresampled($resizedImage, $image, 0, 0, $x, $y, $desired['width'], $desired['height'], $w, $h); + imagecopyresampled($resizedImage, $image, 0, 0, intval($x), intval($y), $desired['width'], $desired['height'], intval($w), intval($h)); return $resizedImage; } public function saveResizedImage($resizedImage, string $destinationfolder, string $extension) { + # use method in storage class??? $destinationfolder = strtoupper($destinationfolder); switch($extension) @@ -484,6 +486,128 @@ class Media return true; } + public function createCustomSize($imageUrl, $width = NULL, $height = NULL) + { + $this->setPathInfo($imageUrl); + + $resizeName = '-'; + if(is_int($width) && $width < 10000) + { + $resizeName .= $width; + $desiredSize['width'] = $width; + } + $resizeName .= 'x'; + if(is_int($height) && $height < 10000) + { + $resizeName .= $height; + $desiredSize['height'] = $height; + } + + $extension = $this->getExtension(); + $originalName = $this->getFilename(); + $originalFile = $originalName . '.' . $extension; + $customName = $originalName . $resizeName; + $customFile = $customName . '.' . $extension; + + $storage = new StorageWrapper('\Typemill\Models\Storage'); + + if($storage->checkFile('customFolder', '', $customFile)) + { + # we should get the custom folder url dynamically from storage class + return '/media/custom/' . $customFile; + } + + # if name is in customfolder (resized already) + if($storage->checkFile('customFolder', '', $originalFile)) + { + $imagePath = $storage->getFolderPath('customFolder') . $originalFile; + } + # or in originalfolder (not resized yet) + elseif($storage->checkFile('originalFolder', '', $originalFile)) + { + $imagePath = $storage->getFolderPath('originalFolder') . $originalFile; + } + else + { + return 'image not found'; + } + + $image = $this->createImageFromPath($imagePath, $extension); + $originalSize = $this->getImageSize($image); + $resizedImage = $this->resizeImage($image, $desiredSize, $originalSize); + + if($resizedImage && $storage->storeCustomImage($image, $extension, $customName)) + { + return '/media/custom/' . $customFile; + } + + return 'error resizing image'; + } + + public function createGrayscale($imageUrl) + { + $this->setPathInfo($imageUrl); + + $extension = $this->getExtension(); + $originalName = $this->getFilename(); + $originalFile = $originalName . '.' . $extension; + $customName = $originalName . '-grayscale'; + $customFile = $customName . '.' . $extension; + + $storage = new StorageWrapper('\Typemill\Models\Storage'); + + # if the grayscaled image is there already + if($storage->checkFile('customFolder', '', $customFile)) + { + # we should get the custom folder url dynamically from storage class + return '/media/custom/' . $customFile; + } + + # if name is in customfolder (resized already) + if($storage->checkFile('customFolder', '', $originalFile)) + { + $imagePath = $storage->getFolderPath('customFolder') . $originalFile; + } + # or in originalfolder (not resized yet) + elseif($storage->checkFile('originalFolder', '', $originalFile)) + { + $imagePath = $storage->getFolderPath('originalFolder') . $originalFile; + } + else + { + return 'image not found'; + } + + $image = $this->createImageFromPath($imagePath, $extension); + imagefilter($image, IMG_FILTER_GRAYSCALE); + + if($storage->storeCustomImage($image, $extension, $customName)) + { + return '/media/custom/' . $customFile; + } + + return 'error grayscaling image'; + } + + public function createImageFromPath($imagePath, $extension) + { + switch($extension) + { + case 'gif': $image = imagecreatefromgif($imagePath); break; + case 'jpg' : + case 'jpeg': $image = imagecreatefromjpeg($imagePath); break; + case 'png': $image = imagecreatefrompng($imagePath); break; + case 'webp': $image = imagecreatefromwebp($imagePath); break; + default: return 'image type not supported'; + } + + return $image; + } + + + + + diff --git a/system/typemill/Models/Storage.php b/system/typemill/Models/Storage.php index 3878564..3fc58da 100644 --- a/system/typemill/Models/Storage.php +++ b/system/typemill/Models/Storage.php @@ -648,6 +648,37 @@ class Storage return false; } + public function storeCustomImage($image, $extension, $imageName) + { + switch($extension) + { + case "png": + $storedImage = imagepng( $image, $this->customFolder . $imageName . '.png', 9 ); + break; + case "gif": + $storedImage = imagegif( $image, $this->customFolder . $imageName . '.gif' ); + break; + case "webp": + $storedImage = imagewebp( $image, $this->customFolder . $imageName . '.webp', 80); + break; + case "jpg": + case "jpeg": + $storedImage = imagejpeg( $image, $this->customFolder . $imageName . '.' . $extension, 80); + break; + default: + $storedImage = false; + } + + if(!$storedImage) + { + $this->errors[] = "Could not store the custom size of $imageName"; + + return false; + } + + return true; + } + public function deleteImage($name) { # validate name diff --git a/system/typemill/system.php b/system/typemill/system.php index 1afa309..ce120e3 100644 --- a/system/typemill/system.php +++ b/system/typemill/system.php @@ -32,6 +32,7 @@ use Typemill\Extensions\TwigUrlExtension; use Typemill\Extensions\TwigUserExtension; use Typemill\Extensions\TwigLanguageExtension; use Typemill\Extensions\TwigMarkdownExtension; +use Typemill\Extensions\TwigMetaExtension; use Typemill\Extensions\TwigCaptchaExtension; $timer = []; @@ -302,6 +303,7 @@ $container->set('view', function() use ($settings, $csrf, $urlinfo, $translation $twig->addExtension(new TwigUrlExtension($urlinfo)); $twig->addExtension(new TwigLanguageExtension( $translations )); $twig->addExtension(new TwigMarkdownExtension()); + $twig->addExtension(new TwigMetaExtension()); $twig->addExtension(new TwigCaptchaExtension()); # start csrf only if session is active