diff --git a/content/00-welcome/05-edit-test.txt b/content/00-welcome/05-edit-test.txt deleted file mode 100644 index b83d57c..0000000 --- a/content/00-welcome/05-edit-test.txt +++ /dev/null @@ -1 +0,0 @@ -["# Write Content","Typemill provides easy and intuitive authoring tools and we work hard to create a good author experience. With the interactive navigation you can create pages and structure your websites. The visual markdown editor will help you to create content in a wysiwyg mode. The publish bar gives you full control over the status of each page. Watch the following video tutorial to learn all the details.","* You can change the default mode in the system settings. \n* You can also switch each format button on and off in the system settings.","The publish bar of Typemill is pretty intuitiv and sticks at the bottom of the screen so that you have always full control of the status of each page. Simply play around with it and you will quickly understand how it works. In short:","* The green button \"online\" indicates, that your page is published and visible for your readers.\n* You can depublish a page by clicking the green \"online\" button. The button will turn gray with the label \"offline\" and the page is not visible for your readers anymore.\n* With the green button \"Publish\" you can either publish a page that is offline or you can publish some unpublished changes on your page.\n* The publish-button is gray and disabled, if the page is online and if there are no unpublished changes.\n* All buttons will change in real time, so you can always exactly see what is going on.\n* To provide an easy status-overview of the whole website, Typemill marks all pages in the navigation on the left side as published (green), changed (orange) and unpublished (red).","## Working with Drafts","Ever tried to revise a published article in WordPress? Yes, it works, but if you click on \"save\", then all your changes are directly live. Typemill is much more flexible here and allows you to keep your original version live while you work on a **drafted version** in the background. This is how Typemill handles it: ","* In **visual mode**: Typemill stores your changes in a new draft automatically as soon as you save any content-block.\n* In **raw mode**: To store changes in a new draft, simply click on the \"save draft\"-button in the publish controller.\n* You can work on a draft as long as you want without changing the live version. Your changes go live if you click the button \"publish\".\n* In visual mode, you can also use the discard-button and go back to the published version."] \ No newline at end of file diff --git a/content/00-welcome/05-edit-test.yaml b/content/00-welcome/05-edit-test.yaml deleted file mode 100644 index b6b5024..0000000 --- a/content/00-welcome/05-edit-test.yaml +++ /dev/null @@ -1,2 +0,0 @@ -meta: - navtitle: 'edit test' diff --git a/content/00-welcome/06-new.txt b/content/00-welcome/06-new.txt deleted file mode 100644 index 1c1d1b4..0000000 --- a/content/00-welcome/06-new.txt +++ /dev/null @@ -1 +0,0 @@ -["# ToDo","[TOC]","## Visual Editor","Das ist ein Intro. Es gibt noch viel zu tun, aber das ist am Ende des Tages nicht so schlimm denn wir machen einfach weiter. Done","* 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* SHIT!!! fiinish youtube component","## Navigation","* DONE: fix status in navigation\n* fix error messages\n* DONE: refresh navigation after changes","## Publish Controller","* DONE: Create \n* DONE: publish\n* DONE: unpublish\n* DONE: discard\n* DONE: delete\n* save draft\n* switch to raw","## Raw Editor","* Setup","## Meta Tabs","* Setup","## Medialib","* Setup"] \ No newline at end of file diff --git a/content/01-cyanine-theme/04-new.txt b/content/01-cyanine-theme/04-new.txt new file mode 100644 index 0000000..82b2e4c --- /dev/null +++ b/content/01-cyanine-theme/04-new.txt @@ -0,0 +1 @@ +["# ToDo","[TOC]","## Visual Editor","Das ist ein Intro. Es gibt noch viel zu tun, aber das ist am Ende des Tages nicht so schlimm denn wir machen einfach weiter.","* 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* SHIT!!! fiinish youtube component","## Navigation","* DONE: fix status in navigation\n* fix error messages\n* DONE: refresh navigation after changes","## Publish Controller","* DONE: Create \n* DONE: publish\n* DONE: unpublish\n* DONE: discard\n* DONE: delete\n* DONE: save draft\n* DONE: switch to raw","## Raw Editor","* DONE:","## Meta Tabs","* Setup","## Medialib","* Setup"] \ No newline at end of file diff --git a/content/00-welcome/06-new.yaml b/content/01-cyanine-theme/04-new.yaml similarity index 100% rename from content/00-welcome/06-new.yaml rename to content/01-cyanine-theme/04-new.yaml diff --git a/data/navigation/navi-draft.txt b/data/navigation/navi-draft.txt index b154045..63ed68e 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:7:{i:0;O:8:"stdClass":20:{s:12:"originalName";s:19:"00-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:"00";s:4:"name";s:13:"markdown test";s:4:"slug";s:13:"markdown-test";s:4:"path";s:31:"/00-welcome/00-markdown-test.md";s:15:"pathWithoutType";s:28:"/00-welcome/00-markdown-test";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: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: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:14:"02-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:"02";s:4:"name";s:8:"get help";s:4:"slug";s:8:"get-help";s:4:"path";s:26:"/00-welcome/02-get-help.md";s:15:"pathWithoutType";s:23:"/00-welcome/02-get-help";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: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:3;O:8:"stdClass":20:{s:12:"originalName";s:24:"03-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:"03";s:4:"name";s:18:"setup your website";s:4:"slug";s:18:"setup-your-website";s:4:"path";s:36:"/00-welcome/03-setup-your-website.md";s:15:"pathWithoutType";s:33:"/00-welcome/03-setup-your-website";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: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:4;O:8:"stdClass":20:{s:12:"originalName";s:19:"04-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:"04";s:4:"name";s:13:"write content";s:4:"slug";s:13:"write-content";s:4:"path";s:31:"/00-welcome/04-write-content.md";s:15:"pathWithoutType";s:28:"/00-welcome/04-write-content";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/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:5;O:8:"stdClass":20:{s:12:"originalName";s:16:"05-edit-test.txt";s:11:"elementType";s:4:"file";s:6:"status";s:11:"unpublished";s:8:"fileType";s:3:"txt";s:5:"order";s:2:"05";s:4:"name";s:9:"edit test";s:4:"slug";s:9:"edit-test";s:4:"path";s:28:"/00-welcome/05-edit-test.txt";s:15:"pathWithoutType";s:24:"/00-welcome/05-edit-test";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:18:"/welcome/edit-test";s:6:"urlRel";s:27:"/typemill/welcome/edit-test";s:6:"urlAbs";s:43:"http://localhost/typemill/welcome/edit-test";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:6;O:8:"stdClass":20:{s:12:"originalName";s:10:"06-new.txt";s:11:"elementType";s:4:"file";s:6:"status";s:11:"unpublished";s:8:"fileType";s:3:"txt";s:5:"order";s:2:"06";s:4:"name";s:3:"new";s:4:"slug";s:3:"new";s:4:"path";s:22:"/00-welcome/06-new.txt";s:15:"pathWithoutType";s:18:"/00-welcome/06-new";s:3:"key";i:6;s:7:"keyPath";s:3:"0.6";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"6";}s:7:"chapter";s:3:"1.7";s:9:"urlRelWoF";s:12:"/welcome/new";s:6:"urlRel";s:21:"/typemill/welcome/new";s:6:"urlAbs";s:37:"http://localhost/typemill/welcome/new";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:0;}i:1;O:8:"stdClass":20:{s:12:"originalName";s:12:"01-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:"01";s:4:"name";s:6:"footer";s:4:"slug";s:6:"footer";s:4:"path";s:30:"/01-cyanine-theme/01-footer.md";s:15:"pathWithoutType";s:27:"/01-cyanine-theme/01-footer";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: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:2;O:8:"stdClass":20:{s:12:"originalName";s:22:"02-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:"02";s:4:"name";s:16:"content elements";s:4:"slug";s:16:"content-elements";s:4:"path";s:40:"/01-cyanine-theme/02-content-elements.md";s:15:"pathWithoutType";s:37:"/01-cyanine-theme/02-content-elements";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: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;}i:3;O:8:"stdClass":20:{s:12:"originalName";s:22:"03-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:"03";s:4:"name";s:16:"colors and fonts";s:4:"slug";s:16:"colors-and-fonts";s:4:"path";s:40:"/01-cyanine-theme/03-colors-and-fonts.md";s:15:"pathWithoutType";s:37:"/01-cyanine-theme/03-colors-and-fonts";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/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;}}s:7:"noindex";b:0;}} \ No newline at end of file +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:5:{i:0;O:8:"stdClass":20:{s:12:"originalName";s:19:"00-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:"00";s:4:"name";s:13:"markdown test";s:4:"slug";s:13:"markdown-test";s:4:"path";s:31:"/00-welcome/00-markdown-test.md";s:15:"pathWithoutType";s:28:"/00-welcome/00-markdown-test";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: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: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:14:"02-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:"02";s:4:"name";s:8:"get help";s:4:"slug";s:8:"get-help";s:4:"path";s:26:"/00-welcome/02-get-help.md";s:15:"pathWithoutType";s:23:"/00-welcome/02-get-help";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: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:3;O:8:"stdClass":20:{s:12:"originalName";s:24:"03-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:"03";s:4:"name";s:18:"setup your website";s:4:"slug";s:18:"setup-your-website";s:4:"path";s:36:"/00-welcome/03-setup-your-website.md";s:15:"pathWithoutType";s:33:"/00-welcome/03-setup-your-website";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: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:4;O:8:"stdClass":20:{s:12:"originalName";s:19:"04-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:"04";s:4:"name";s:13:"write content";s:4:"slug";s:13:"write-content";s:4:"path";s:31:"/00-welcome/04-write-content.md";s:15:"pathWithoutType";s:28:"/00-welcome/04-write-content";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/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;}}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:5:{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:0;}i:1;O:8:"stdClass":20:{s:12:"originalName";s:12:"01-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:"01";s:4:"name";s:6:"footer";s:4:"slug";s:6:"footer";s:4:"path";s:30:"/01-cyanine-theme/01-footer.md";s:15:"pathWithoutType";s:27:"/01-cyanine-theme/01-footer";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: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:2;O:8:"stdClass":20:{s:12:"originalName";s:22:"02-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:"02";s:4:"name";s:16:"content elements";s:4:"slug";s:16:"content-elements";s:4:"path";s:40:"/01-cyanine-theme/02-content-elements.md";s:15:"pathWithoutType";s:37:"/01-cyanine-theme/02-content-elements";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: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;}i:3;O:8:"stdClass":20:{s:12:"originalName";s:22:"03-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:"03";s:4:"name";s:16:"colors and fonts";s:4:"slug";s:16:"colors-and-fonts";s:4:"path";s:40:"/01-cyanine-theme/03-colors-and-fonts.md";s:15:"pathWithoutType";s:37:"/01-cyanine-theme/03-colors-and-fonts";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/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:4;O:8:"stdClass":20:{s:12:"originalName";s:10:"04-new.txt";s:11:"elementType";s:4:"file";s:6:"status";s:11:"unpublished";s:8:"fileType";s:3:"txt";s:5:"order";s:2:"04";s:4:"name";s:3:"new";s:4:"slug";s:3:"new";s:4:"path";s:28:"/01-cyanine-theme/04-new.txt";s:15:"pathWithoutType";s:24:"/01-cyanine-theme/04-new";s:3:"key";i:4;s:7:"keyPath";s:3:"1.4";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"4";}s:7:"chapter";s:3:"2.5";s:9:"urlRelWoF";s:18:"/cyanine-theme/new";s:6:"urlRel";s:27:"/typemill/cyanine-theme/new";s:6:"urlAbs";s:43:"http://localhost/typemill/cyanine-theme/new";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/data/navigation/navi-extended.txt b/data/navigation/navi-extended.txt index 01b3ec7..be5a71b 100644 --- a/data/navigation/navi-extended.txt +++ b/data/navigation/navi-extended.txt @@ -34,18 +34,6 @@ noindex: false path: /00-welcome/04-write-content.md keyPath: '0.4' -/welcome/edit-test: - navtitle: '' - hide: false - noindex: false - path: /00-welcome/05-edit-test.txt - keyPath: '0.5' -/welcome/new: - navtitle: '' - hide: false - noindex: false - path: /00-welcome/06-new.txt - keyPath: '0.6' /cyanine-theme: navtitle: '' hide: false @@ -76,3 +64,9 @@ noindex: false path: /01-cyanine-theme/03-colors-and-fonts.md keyPath: '1.3' +/cyanine-theme/new: + navtitle: '' + hide: false + noindex: false + path: /01-cyanine-theme/04-new.txt + keyPath: '1.4' diff --git a/system/typemill/Controllers/ControllerApiAuthorArticle.php b/system/typemill/Controllers/ControllerApiAuthorArticle.php index e475be8..a27528f 100644 --- a/system/typemill/Controllers/ControllerApiAuthorArticle.php +++ b/system/typemill/Controllers/ControllerApiAuthorArticle.php @@ -154,6 +154,132 @@ class ControllerApiAuthorArticle extends Controller return $response->withHeader('Content-Type', 'application/json'); } + public function updateDraft(Request $request, Response $response, $args) + { + $validRights = $this->validateRights($request->getAttribute('c_userrole'), 'mycontent', 'edit'); + if(!$validRights) + { + $response->getBody()->write(json_encode([ + 'message' => 'You do not have enough rights.', + ])); + + return $response->withHeader('Content-Type', 'application/json')->withStatus(422); + } + + $params = $request->getParsedBody(); + $validate = new Validation(); + $validInput = $validate->articleUpdate($params); + if($validInput !== true) + { + $errors = $validate->returnFirstValidationErrors($validInput); + $response->getBody()->write(json_encode([ + 'message' => reset($errors), + 'errors' => $errors + ])); + + return $response->withHeader('Content-Type', 'application/json')->withStatus(400); + } + + $navigation = new Navigation(); + $urlinfo = $this->c->get('urlinfo'); + $item = $this->getItem($navigation, $params['url'], $urlinfo); + if(!$item) + { + $response->getBody()->write(json_encode([ + 'message' => 'page not found', + ])); + + return $response->withHeader('Content-Type', 'application/json')->withStatus(404); + } + + # save draft content + $content = new Content($urlinfo['baseurl']); + $markdown = $params['title'] . PHP_EOL . PHP_EOL . $params['body']; + $markdownArray = $content->markdownTextToArray($markdown); + $content->saveDraftMarkdown($item, $markdownArray); + + # refresh navigation and item + $navigation->clearNavigation(); + $draftNavigation = $navigation->getDraftNavigation($urlinfo, $this->settings['langattr']); + $draftNavigation = $navigation->setActiveNaviItems($draftNavigation, $item->keyPathArray); + $item = $navigation->getItemWithKeyPath($draftNavigation, $item->keyPathArray); + + # refresh content + $draftMarkdown = $content->getDraftMarkdown($item); + $draftMarkdownHtml = $content->addDraftHtml($draftMarkdown); + + $response->getBody()->write(json_encode([ + 'item' => $item, + 'navigation' => $draftNavigation, + 'content' => $draftMarkdownHtml + ])); + + return $response->withHeader('Content-Type', 'application/json'); + } + + public function publishDraft(Request $request, Response $response, $args) + { + $validRights = $this->validateRights($request->getAttribute('c_userrole'), 'mycontent', 'edit'); + if(!$validRights) + { + $response->getBody()->write(json_encode([ + 'message' => 'You do not have enough rights.', + ])); + + return $response->withHeader('Content-Type', 'application/json')->withStatus(422); + } + + $params = $request->getParsedBody(); + $validate = new Validation(); + $validInput = $validate->articleUpdate($params); + if($validInput !== true) + { + $errors = $validate->returnFirstValidationErrors($validInput); + $response->getBody()->write(json_encode([ + 'message' => reset($errors), + 'errors' => $errors + ])); + + return $response->withHeader('Content-Type', 'application/json')->withStatus(400); + } + + $navigation = new Navigation(); + $urlinfo = $this->c->get('urlinfo'); + $item = $this->getItem($navigation, $params['url'], $urlinfo); + if(!$item) + { + $response->getBody()->write(json_encode([ + 'message' => 'page not found', + ])); + + return $response->withHeader('Content-Type', 'application/json')->withStatus(404); + } + + # save draft content + $content = new Content($urlinfo['baseurl']); + $markdown = $params['title'] . PHP_EOL . PHP_EOL . $params['body']; + $markdownArray = $content->markdownTextToArray($markdown); + $content->publishMarkdown($item, $markdownArray); + + # refresh navigation and item + $navigation->clearNavigation(); + $draftNavigation = $navigation->getDraftNavigation($urlinfo, $this->settings['langattr']); + $draftNavigation = $navigation->setActiveNaviItems($draftNavigation, $item->keyPathArray); + $item = $navigation->getItemWithKeyPath($draftNavigation, $item->keyPathArray); + + # refresh content + $draftMarkdown = $content->getDraftMarkdown($item); + $draftMarkdownHtml = $content->addDraftHtml($draftMarkdown); + + $response->getBody()->write(json_encode([ + 'item' => $item, + 'navigation' => $draftNavigation, + 'content' => $draftMarkdownHtml + ])); + + return $response->withHeader('Content-Type', 'application/json'); + } + public function discardArticleChanges(Request $request, Response $response, $args) { $validRights = $this->validateRights($request->getAttribute('c_userrole'), 'mycontent', 'edit'); @@ -381,6 +507,14 @@ class ControllerApiAuthorArticle extends Controller return $response->withHeader('Content-Type', 'application/json')->withStatus(400); } + # set variables + $urlinfo = $this->c->get('urlinfo'); + $langattr = $this->settings['langattr'] ?? 'en'; + + $itemKeyPath = explode('.', $params['item_id']); + $parentKeyFrom = explode('.', $params['parent_id_from']); + $parentKeyTo = explode('.', $params['parent_id_to']); + # get navigation $navigation = new Navigation(); $draftNavigation = $navigation->getDraftNavigation($urlinfo, $langattr); @@ -396,10 +530,6 @@ class ControllerApiAuthorArticle extends Controller return $response->withHeader('Content-Type', 'application/json')->withStatus(404); } - $itemKeyPath = explode('.', $params['item_id']); - $parentKeyFrom = explode('.', $params['parent_id_from']); - $parentKeyTo = explode('.', $params['parent_id_to']); - # if an item is moved to the first level if($params['parent_id_to'] == '') { diff --git a/system/typemill/Controllers/ControllerWebAuthor.php b/system/typemill/Controllers/ControllerWebAuthor.php index c0ae408..b162576 100644 --- a/system/typemill/Controllers/ControllerWebAuthor.php +++ b/system/typemill/Controllers/ControllerWebAuthor.php @@ -27,10 +27,10 @@ class ControllerWebAuthor extends Controller $draftNavigation = $navigation->getDraftNavigation($urlinfo, $langattr); $home = $navigation->getHomepageItem($urlinfo['baseurl']); - if($url == '/') { $item = $home; + $item->active = true; } else { @@ -65,17 +65,6 @@ class ControllerWebAuthor extends Controller $draftMarkdownHtml = $content->addDraftHtml($draftMarkdown); -/* - if(isset($draftHtml[0])) - { - $title = $draftHtml[0]; - unset($draftHtml[0]); - } - - echo '
'; - print_r($draftHtml); - die(); -*/ return $this->c->get('view')->render($response, 'content/blox-editor.twig', [ 'settings' => $this->settings, 'mainnavi' => $mainNavigation, @@ -83,82 +72,84 @@ class ControllerWebAuthor extends Controller 'jsdata' => [ 'settings' => $this->settings, 'urlinfo' => $urlinfo, + 'labels' => $this->c->get('translations'), 'navigation' => $draftNavigation, 'item' => $item, 'home' => $home, 'content' => $draftMarkdownHtml ] ]); - - - - - # set information for homepage - $this->setHomepage($args); - # we have to check ownership here to use it for permission-check in templates - $this->checkContentOwnership(); - # set the status for published and drafted - $this->setPublishStatus(); - # set path - $this->setItemPath($this->item->fileType); - - # read content from file - if(!$this->setContent()){ return $this->renderIntern404($response, array( 'navigation' => $this->structure, 'settings' => $this->settings, 'content' => $this->errors )); } - - $content = $this->content; - - if($content == '') - { - $content = []; - } - - # initialize parsedown extension - $parsedown = new ParsedownExtension($this->uri->getBaseUrl()); - - # to fix footnote-logic in parsedown, set visual mode to true - $parsedown->setVisualMode(); - - # if content is not an array, then transform it - if(!is_array($content)) - { - # turn markdown into an array of markdown-blocks - $content = $parsedown->markdownToArrayBlocks($content); - } - - # needed for ToC links - $relurl = '/tm/content/' . $this->settings['editor'] . '/' . $this->item->urlRel; - - foreach($content as $key => $block) - { - /* parse markdown-file to content-array */ - $contentArray = $parsedown->text($block); - - /* parse markdown-content-array to content-string */ - $content[$key] = $parsedown->markup($contentArray); - } - - # extract title and delete from content array, array will start at 1 after that. - $title = '# add title'; - if(isset($content[0])) - { - $title = $content[0]; - unset($content[0]); - } - - return $this->renderIntern($response, 'editor/editor-blox.twig', array( - 'acl' => $this->c->acl, - 'mycontent' => $this->mycontent, - 'navigation' => $this->structureDraft, - 'homepage' => $this->homepage, - 'title' => $title, - 'content' => $content, - 'item' => $this->item, - 'settings' => $this->settings - )); } - public function showContent(Request $request, Response $response, $args) + public function showRaw(Request $request, Response $response, $args) { + # get url for requested page + $url = isset($args['route']) ? '/' . $args['route'] : '/'; + $urlinfo = $this->c->get('urlinfo'); + $fullUrl = $urlinfo['baseurl'] . $url; + $langattr = $this->settings['langattr']; + + $navigation = new Navigation(); + $draftNavigation = $navigation->getDraftNavigation($urlinfo, $langattr); + $home = $navigation->getHomepageItem($urlinfo['baseurl']); + + if($url == '/') + { + $item = $home; + $item->active = true; + } + else + { + $extendedNavigation = $navigation->getExtendedNavigation($urlinfo, $langattr); + + $pageinfo = $extendedNavigation[$url] ?? false; + if(!$pageinfo) + { + return $this->c->get('view')->render($response->withStatus(404), '404.twig', [ + 'title' => 'Typemill Author Area', + 'description' => 'Typemill Version 2 wird noch besser als Version 1.' + ]); + } + + $keyPathArray = explode(".", $pageinfo['keyPath']); + + # extend : $request->getAttribute('c_userrole') + $draftNavigation = $navigation->getDraftNavigation($urlinfo, $langattr); + + $draftNavigation = $navigation->setActiveNaviItems($draftNavigation, $keyPathArray); + + $item = $navigation->getItemWithKeyPath($draftNavigation, $keyPathArray); + } + + # $item->modified = ($item->published OR $item->drafted) ? filemtime($this->settings['contentFolder'] . $this->path) : false; + + $mainNavigation = $navigation->getMainNavigation($request->getAttribute('c_userrole'), $this->c->get('acl'), $urlinfo, $this->settings['editor']); + + $content = new Content($urlinfo['baseurl']); + + $draftMarkdown = $content->getDraftMarkdown($item); + + $draftMarkdownHtml = $content->addDraftHtml($draftMarkdown); + + return $this->c->get('view')->render($response, 'content/raw-editor.twig', [ + 'settings' => $this->settings, + 'mainnavi' => $mainNavigation, + 'content' => $draftMarkdownHtml, + 'jsdata' => [ + 'settings' => $this->settings, + 'urlinfo' => $urlinfo, + 'labels' => $this->c->get('translations'), + 'navigation' => $draftNavigation, + 'item' => $item, + 'home' => $home, + 'content' => $draftMarkdownHtml, + ] + ]); + + + + + # get params from call # $this->uri = $request->getUri()->withUserInfo(''); # $this->params = isset($args['params']) ? ['url' => $this->uri->getBasePath() . '/' . $args['params']] : ['url' => $this->uri->getBasePath()]; diff --git a/system/typemill/Models/Content.php b/system/typemill/Models/Content.php index ee7f1de..625a68d 100644 --- a/system/typemill/Models/Content.php +++ b/system/typemill/Models/Content.php @@ -54,9 +54,9 @@ class Content return $markdownArray; } - public function saveDraftMarkdown($item, $markdown) + public function saveDraftMarkdown($item, array $markdownArray) { - $markdown = json_encode($markdown); + $markdown = json_encode($markdownArray); if($this->storage->writeFile('contentFolder', '', $item->pathWithoutType . '.txt', $markdown)) { @@ -66,6 +66,16 @@ class Content return $this->storage->getError(); } + public function markdownArrayToText(array $markdownArray) + { + return $this->parsedown->arrayBlocksToMarkdown($markdownArray); + } + + public function markdownTextToArray(string $markdown) + { + return $this->parsedown->markdownToArrayBlocks($markdown); + } + public function publishMarkdown($item, array $markdownArray) { $markdown = $this->parsedown->arrayBlocksToMarkdown($markdownArray); diff --git a/system/typemill/Models/Navigation.php b/system/typemill/Models/Navigation.php index d733729..6e9763e 100644 --- a/system/typemill/Models/Navigation.php +++ b/system/typemill/Models/Navigation.php @@ -365,7 +365,7 @@ class Navigation extends Folder $item->urlRel = '/'; $item->urlRelWoF = '/'; $item->urlAbs = $baseUrl; - $item->active = true; + $item->active = false; $item->activeParent = false; $item->hide = false; diff --git a/system/typemill/Models/Validation.php b/system/typemill/Models/Validation.php index 07fb188..d63f71d 100644 --- a/system/typemill/Models/Validation.php +++ b/system/typemill/Models/Validation.php @@ -434,6 +434,34 @@ class Validation } } + public function articleUpdate(array $params) + { + $v = new Validator($params); + + # special conditions for startpage + if(isset($params['item_id']) && $params['item_id'] == '') + { + $v->rule('required', ['url', 'title', 'body']); + $v->rule('markdownSecure', 'title'); + $v->rule('markdownSecure', 'body'); + } + else + { + $v->rule('required', ['item_id', 'url', 'title', 'body']); + $v->rule('regex', 'item_id', '/^[0-9.]+$/i'); + $v->rule('markdownSecure', 'title'); + $v->rule('markdownSecure', 'body'); + } + + if($v->validate()) + { + return true; + } + else + { + return $v->errors(); + } + } diff --git a/system/typemill/author/content/blox-editor.twig b/system/typemill/author/content/blox-editor.twig index b11c524..5907d4c 100644 --- a/system/typemill/author/content/blox-editor.twig +++ b/system/typemill/author/content/blox-editor.twig @@ -22,13 +22,14 @@ - diff --git a/system/typemill/author/content/raw-editor.twig b/system/typemill/author/content/raw-editor.twig new file mode 100644 index 0000000..f92e8f8 --- /dev/null +++ b/system/typemill/author/content/raw-editor.twig @@ -0,0 +1,28 @@ +{% extends 'layouts/layoutContent.twig' %} +{% block title %}{{ translate('Raw Editor') }}{% endblock %} + +{% block content %} + + + + + +{% endblock %} + + +{% block javascript %} + + + + + + +{% endblock %} \ No newline at end of file diff --git a/system/typemill/author/css/custom.css b/system/typemill/author/css/custom.css index a65840d..1921edd 100644 --- a/system/typemill/author/css/custom.css +++ b/system/typemill/author/css/custom.css @@ -55,7 +55,7 @@ [data-el="editor"] { border-width: 1px; background:rgb(68 64 60); - color: white; + color: transparent; caret-color: white; white-space: break-spaces; word-break: break-word; diff --git a/system/typemill/author/css/output.css b/system/typemill/author/css/output.css index 620ae0a..27aaec0 100644 --- a/system/typemill/author/css/output.css +++ b/system/typemill/author/css/output.css @@ -794,6 +794,10 @@ video { margin-bottom: 0.25rem; } +.mb-16 { + margin-bottom: 4rem; +} + .mb-2 { margin-bottom: 0.5rem; } @@ -866,14 +870,6 @@ video { margin-right: 1rem; } -.mb-12 { - margin-bottom: 3rem; -} - -.mb-16 { - margin-bottom: 4rem; -} - .block { display: block; } @@ -1026,10 +1022,6 @@ video { width: 2.5rem; } -.w-11\/12 { - width: 91.666667%; -} - .w-3\/5 { width: 60%; } @@ -1038,14 +1030,18 @@ video { width: 0px; } -.w-3\/4 { - width: 75%; -} - .w-24 { width: 6rem; } +.w-11\/12 { + width: 91.666667%; +} + +.w-3\/4 { + width: 75%; +} + .max-w-md { max-width: 28rem; } @@ -1202,6 +1198,10 @@ video { border-right-width: 8px; } +.border-t { + border-top-width: 1px; +} + .border-r-2 { border-right-width: 2px; } @@ -1242,10 +1242,6 @@ video { border-left-width: 2px; } -.border-t { - border-top-width: 1px; -} - .border-solid { border-style: solid; } @@ -1259,6 +1255,11 @@ video { border-color: rgb(209 213 219 / var(--tw-border-opacity)); } +.border-stone-200 { + --tw-border-opacity: 1; + border-color: rgb(231 229 228 / var(--tw-border-opacity)); +} + .border-stone-700 { --tw-border-opacity: 1; border-color: rgb(68 64 60 / var(--tw-border-opacity)); @@ -1269,16 +1270,16 @@ video { border-color: rgb(214 211 209 / var(--tw-border-opacity)); } -.border-stone-200 { - --tw-border-opacity: 1; - border-color: rgb(231 229 228 / var(--tw-border-opacity)); -} - .border-teal-500 { --tw-border-opacity: 1; border-color: rgb(20 184 166 / var(--tw-border-opacity)); } +.border-yellow-400 { + --tw-border-opacity: 1; + border-color: rgb(250 204 21 / var(--tw-border-opacity)); +} + .border-stone-100 { --tw-border-opacity: 1; border-color: rgb(245 245 244 / var(--tw-border-opacity)); @@ -1289,6 +1290,11 @@ video { border-color: rgb(250 250 249 / var(--tw-border-opacity)); } +.border-rose-500 { + --tw-border-opacity: 1; + border-color: rgb(244 63 94 / var(--tw-border-opacity)); +} + .border-red-500 { --tw-border-opacity: 1; border-color: rgb(239 68 68 / var(--tw-border-opacity)); @@ -1299,6 +1305,11 @@ video { border-color: rgb(255 255 255 / var(--tw-border-opacity)); } +.border-yellow-500 { + --tw-border-opacity: 1; + border-color: rgb(234 179 8 / var(--tw-border-opacity)); +} + .border-rose-100 { --tw-border-opacity: 1; border-color: rgb(255 228 230 / var(--tw-border-opacity)); @@ -1314,26 +1325,6 @@ video { border-color: rgb(226 232 240 / var(--tw-border-opacity)); } -.border-rose-500 { - --tw-border-opacity: 1; - border-color: rgb(244 63 94 / var(--tw-border-opacity)); -} - -.border-yellow-500 { - --tw-border-opacity: 1; - border-color: rgb(234 179 8 / var(--tw-border-opacity)); -} - -.border-yellow-300 { - --tw-border-opacity: 1; - border-color: rgb(253 224 71 / var(--tw-border-opacity)); -} - -.border-yellow-400 { - --tw-border-opacity: 1; - border-color: rgb(250 204 21 / var(--tw-border-opacity)); -} - .border-x-transparent { border-left-color: transparent; border-right-color: transparent; @@ -1359,9 +1350,14 @@ video { background-color: rgb(255 255 255 / var(--tw-bg-opacity)); } -.bg-stone-300 { +.bg-stone-50 { --tw-bg-opacity: 1; - background-color: rgb(214 211 209 / var(--tw-bg-opacity)); + background-color: rgb(250 250 249 / var(--tw-bg-opacity)); +} + +.bg-stone-100 { + --tw-bg-opacity: 1; + background-color: rgb(245 245 244 / var(--tw-bg-opacity)); } .bg-transparent { @@ -1378,11 +1374,6 @@ video { background-color: rgb(68 64 60 / var(--tw-bg-opacity)); } -.bg-stone-100 { - --tw-bg-opacity: 1; - background-color: rgb(245 245 244 / var(--tw-bg-opacity)); -} - .bg-teal-500 { --tw-bg-opacity: 1; background-color: rgb(20 184 166 / var(--tw-bg-opacity)); @@ -1408,26 +1399,11 @@ video { background-color: rgb(87 83 78 / var(--tw-bg-opacity)); } -.bg-stone-50 { - --tw-bg-opacity: 1; - background-color: rgb(250 250 249 / var(--tw-bg-opacity)); -} - .bg-yellow-500 { --tw-bg-opacity: 1; background-color: rgb(234 179 8 / var(--tw-bg-opacity)); } -.bg-yellow-400 { - --tw-bg-opacity: 1; - background-color: rgb(250 204 21 / var(--tw-bg-opacity)); -} - -.bg-yellow-300 { - --tw-bg-opacity: 1; - background-color: rgb(253 224 71 / var(--tw-bg-opacity)); -} - .bg-opacity-90 { --tw-bg-opacity: 0.9; } @@ -1489,11 +1465,6 @@ video { padding-bottom: 0.75rem; } -.px-6 { - padding-left: 1.5rem; - padding-right: 1.5rem; -} - .px-12 { padding-left: 3rem; padding-right: 3rem; @@ -1504,6 +1475,11 @@ video { padding-bottom: 2rem; } +.px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; +} + .px-2 { padding-left: 0.5rem; padding-right: 0.5rem; @@ -1519,11 +1495,6 @@ video { padding-right: 0.25rem; } -.px-4 { - padding-left: 1rem; - padding-right: 1rem; -} - .py-10 { padding-top: 2.5rem; padding-bottom: 2.5rem; @@ -1539,6 +1510,11 @@ video { padding-bottom: 1rem; } +.px-4 { + padding-left: 1rem; + padding-right: 1rem; +} + .pr-6 { padding-right: 1.5rem; } @@ -1595,14 +1571,14 @@ video { padding-right: 0.75rem; } -.pt-2 { - padding-top: 0.5rem; -} - .pb-4 { padding-bottom: 1rem; } +.pt-2 { + padding-top: 0.5rem; +} + .pt-4 { padding-top: 1rem; } @@ -1660,11 +1636,6 @@ video { line-height: 1.25rem; } -.text-2xl { - font-size: 1.5rem; - line-height: 2rem; -} - .text-lg { font-size: 1.125rem; line-height: 1.75rem; @@ -1675,6 +1646,11 @@ video { line-height: 1.75rem; } +.text-2xl { + font-size: 1.5rem; + line-height: 2rem; +} + .text-3xl { font-size: 1.875rem; line-height: 2.25rem; @@ -1768,11 +1744,6 @@ video { color: rgb(13 148 136 / var(--tw-text-opacity)); } -.text-black { - --tw-text-opacity: 1; - color: rgb(0 0 0 / var(--tw-text-opacity)); -} - .text-teal-300 { --tw-text-opacity: 1; color: rgb(94 234 212 / var(--tw-text-opacity)); @@ -1788,6 +1759,11 @@ video { color: rgb(231 229 228 / var(--tw-text-opacity)); } +.text-black { + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity)); +} + .text-rose-500 { --tw-text-opacity: 1; color: rgb(244 63 94 / var(--tw-text-opacity)); @@ -1798,11 +1774,6 @@ video { color: rgb(6 182 212 / var(--tw-text-opacity)); } -.text-teal-700 { - --tw-text-opacity: 1; - color: rgb(15 118 110 / var(--tw-text-opacity)); -} - .underline { -webkit-text-decoration-line: underline; text-decoration-line: underline; @@ -1828,6 +1799,12 @@ video { opacity: 0.25; } +.shadow-md { + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + .shadow-lg { --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); @@ -1840,12 +1817,6 @@ video { box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.shadow-md { - --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - .outline-none { outline: 2px solid transparent; outline-offset: 2px; @@ -1970,6 +1941,11 @@ video { background-color: rgb(15 118 110 / var(--tw-bg-opacity)); } +.hover\:bg-yellow-600:hover { + --tw-bg-opacity: 1; + background-color: rgb(202 138 4 / var(--tw-bg-opacity)); +} + .hover\:bg-rose-700:hover { --tw-bg-opacity: 1; background-color: rgb(190 18 60 / var(--tw-bg-opacity)); @@ -1985,11 +1961,6 @@ video { background-color: rgb(250 250 249 / var(--tw-bg-opacity)); } -.hover\:bg-yellow-600:hover { - --tw-bg-opacity: 1; - background-color: rgb(202 138 4 / var(--tw-bg-opacity)); -} - .hover\:text-stone-50:hover { --tw-text-opacity: 1; color: rgb(250 250 249 / var(--tw-text-opacity)); @@ -2061,10 +2032,6 @@ video { background-color: rgb(250 250 249 / var(--tw-bg-opacity)); } -.disabled\:cursor-default:disabled { - cursor: default; -} - .disabled\:cursor-not-allowed:disabled { cursor: not-allowed; } diff --git a/system/typemill/author/js/vue-blox-components.js b/system/typemill/author/js/vue-blox-components.js index 3200086..42afc98 100644 --- a/system/typemill/author/js/vue-blox-components.js +++ b/system/typemill/author/js/vue-blox-components.js @@ -303,7 +303,7 @@ bloxeditor.component('code-component', {- +@@ -621,9 +621,9 @@ bloxeditor.component('table-component', { class="border border-stone-300 text-center text-stone-500" >{{value}}-add left column-add right column-delete column+{{ $filters.translate('add left column') }}+{{ $filters.translate('add right column') }}+{{ $filters.translate('delete column') }} -{{ value }} @@ -834,10 +834,16 @@ bloxeditor.component('definition-component', {add row above-add row below-delete row+{{ $filters.translate('add row above') }}+{{ $filters.translate('add row below') }}+{{ $filters.translate('delete row') }}- +Add description @@ -849,7 +855,7 @@ bloxeditor.component('definition-component', { - Add definition + {{ $filters.translate('Add definition') }}`, @@ -1056,7 +1062,6 @@ bloxeditor.component('inline-formats', { }, mounted: function() { this.formatBar = document.getElementById('formatBar'); - console.info(this.formatBar); window.addEventListener('mouseup', this.onMouseup), window.addEventListener('mousedown', this.onMousedown) }, @@ -1239,37 +1244,37 @@ bloxeditor.component('image-component', {