From 5d1383692d87cddb7ca3f894cbe47f9d268ba436 Mon Sep 17 00:00:00 2001 From: trendschau Date: Wed, 4 Oct 2023 18:53:21 +0200 Subject: [PATCH] Favicon, captcha, and raw editor improvements --- composer.lock | 82 +++++++++--------- content/00-welcome/05-todos.txt | 2 +- data/security/securitylog.txt | 1 + media/custom/favicon-114x114.png | Bin 0 -> 518 bytes media/custom/favicon-144x144.png | Bin 0 -> 602 bytes media/custom/favicon-16x16.png | Bin 0 -> 238 bytes media/custom/favicon-180x180.png | Bin 0 -> 723 bytes media/custom/favicon-32x32.png | Bin 0 -> 288 bytes media/custom/favicon-72x72.png | Bin 0 -> 430 bytes media/live/android-chrome-512x512-1.png | Bin 0 -> 2017 bytes media/live/android-chrome-512x512-2.png | Bin 0 -> 2017 bytes media/live/android-chrome-512x512.png | Bin 0 -> 2017 bytes media/original/android-chrome-512x512-1.png | Bin 0 -> 3142 bytes media/original/android-chrome-512x512-2.png | Bin 0 -> 3142 bytes media/original/android-chrome-512x512.png | Bin 0 -> 3142 bytes media/thumbs/android-chrome-512x512-1.png | Bin 0 -> 708 bytes media/thumbs/android-chrome-512x512-2.png | Bin 0 -> 708 bytes media/thumbs/android-chrome-512x512.png | Bin 0 -> 708 bytes system/typemill/Controllers/Controller.php | 13 +++ .../Controllers/ControllerApiAuthorMeta.php | 14 --- .../Controllers/ControllerApiImage.php | 1 - .../ControllerApiSystemSettings.php | 21 +++++ .../Controllers/ControllerWebFrontend.php | 14 +-- system/typemill/Models/Media.php | 11 ++- system/typemill/author/auth/recover.twig | 10 +++ system/typemill/author/auth/reset.twig | 2 +- system/typemill/author/js/typemillutils.js | 4 +- system/typemill/author/js/vue-raw.js | 26 ++++-- system/typemill/settings/system.yaml | 1 + 29 files changed, 123 insertions(+), 79 deletions(-) create mode 100644 media/custom/favicon-114x114.png create mode 100644 media/custom/favicon-144x144.png create mode 100644 media/custom/favicon-16x16.png create mode 100644 media/custom/favicon-180x180.png create mode 100644 media/custom/favicon-32x32.png create mode 100644 media/custom/favicon-72x72.png create mode 100644 media/live/android-chrome-512x512-1.png create mode 100644 media/live/android-chrome-512x512-2.png create mode 100644 media/live/android-chrome-512x512.png create mode 100644 media/original/android-chrome-512x512-1.png create mode 100644 media/original/android-chrome-512x512-2.png create mode 100644 media/original/android-chrome-512x512.png create mode 100644 media/thumbs/android-chrome-512x512-1.png create mode 100644 media/thumbs/android-chrome-512x512-2.png create mode 100644 media/thumbs/android-chrome-512x512.png diff --git a/composer.lock b/composer.lock index 5adb12f..51249cc 100644 --- a/composer.lock +++ b/composer.lock @@ -516,16 +516,16 @@ }, { "name": "php-di/invoker", - "version": "2.3.3", + "version": "2.3.4", "source": { "type": "git", "url": "https://github.com/PHP-DI/Invoker.git", - "reference": "cd6d9f267d1a3474bdddf1be1da079f01b942786" + "reference": "33234b32dafa8eb69202f950a1fc92055ed76a86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/cd6d9f267d1a3474bdddf1be1da079f01b942786", - "reference": "cd6d9f267d1a3474bdddf1be1da079f01b942786", + "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/33234b32dafa8eb69202f950a1fc92055ed76a86", + "reference": "33234b32dafa8eb69202f950a1fc92055ed76a86", "shasum": "" }, "require": { @@ -559,7 +559,7 @@ ], "support": { "issues": "https://github.com/PHP-DI/Invoker/issues", - "source": "https://github.com/PHP-DI/Invoker/tree/2.3.3" + "source": "https://github.com/PHP-DI/Invoker/tree/2.3.4" }, "funding": [ { @@ -567,7 +567,7 @@ "type": "github" } ], - "time": "2021-12-13T09:22:56+00:00" + "time": "2023-09-08T09:24:21+00:00" }, { "name": "php-di/php-di", @@ -1738,16 +1738,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { @@ -1762,7 +1762,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1800,7 +1800,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -1816,20 +1816,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -1844,7 +1844,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1883,7 +1883,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -1899,20 +1899,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, "require": { @@ -1921,7 +1921,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1966,7 +1966,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" }, "funding": [ { @@ -1982,20 +1982,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", "shasum": "" }, "require": { @@ -2004,7 +2004,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -2045,7 +2045,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" }, "funding": [ { @@ -2061,7 +2061,7 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/yaml", @@ -2139,16 +2139,16 @@ }, { "name": "twig/twig", - "version": "v3.7.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "5cf942bbab3df42afa918caeba947f1b690af64b" + "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/5cf942bbab3df42afa918caeba947f1b690af64b", - "reference": "5cf942bbab3df42afa918caeba947f1b690af64b", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a0ce373a0ca3bf6c64b9e3e2124aca502ba39554", + "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554", "shasum": "" }, "require": { @@ -2158,7 +2158,7 @@ }, "require-dev": { "psr/container": "^1.0|^2.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + "symfony/phpunit-bridge": "^5.4.9|^6.3" }, "type": "library", "autoload": { @@ -2194,7 +2194,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.7.0" + "source": "https://github.com/twigphp/Twig/tree/v3.7.1" }, "funding": [ { @@ -2206,7 +2206,7 @@ "type": "tidelift" } ], - "time": "2023-07-26T07:16:09+00:00" + "time": "2023-08-28T11:09:02+00:00" }, { "name": "vlucas/valitron", diff --git a/content/00-welcome/05-todos.txt b/content/00-welcome/05-todos.txt index c42a4eb..7a6f6e6 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","## 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.","## 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","## 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* DONE: Image generation on the fly\n* DONE: Delete folder in base level\n* DONE: Make folder delete easier with glob or scandir\n* DONE: fix error messages (check models)\n* DONE: error status codes (check middleware)\n* DONE: Warn if open another block\n* DONE: Customfields not styled yet\n* DOING: Fix error api systemnavi + validate\n* FIXED: System stores html or sends wrong error messsages\n* FIXED: Wrong frontend navigation if unpublished pages\n* DONE: Icon for hidden pages\n* DOING: Responsive design\n*DONE: Captcha integration\n* Reference feature\n* Typemill Utilities\n* Markdown secure rendering\n* finish youtube component\n* Solution for logo and favicon\n* Handle formdata centrally ???\n* BUG: Raw editor jumps if you edit long text at the end\n* BUG: Error fields in account form not styled correctly","## later","* Clear cache\n* Show security Log\n* User search only for +10 users\n* For api translations should be done completely in backoffice\n* Change translation files so they are loaded in settings instead of adding them manually to settings-defaults.yaml","## Cleanups:","* DONE: Events\n* DONE: Error messages\n* DONE: 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","## Status codes","| Status code | Description | \n|---|---|\n| 200 ok | cell | \n| 400 bad request | The request was unacceptable due to missing or invalid parameter. | \n| 401 unauthorized | The request requires an authorization. | \n| (402 request failed) | The parameters where there but the request failed for other reasons. | \n| 403 forbidden | The user is authenticated but he has not enough rights. | \n| 404 not found | new | \n| 500 internal server error | new |"] \ 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","## 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.","## 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","## 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* DONE: Image generation on the fly\n* DONE: Delete folder in base level\n* DONE: Make folder delete easier with glob or scandir\n* DONE: fix error messages (check models)\n* DONE: error status codes (check middleware)\n* DONE: Warn if open another block\n* DONE: Customfields not styled yet\n* DOING: Fix error api systemnavi + validate\n* FIXED: System stores html or sends wrong error messsages\n* FIXED: Wrong frontend navigation if unpublished pages\n* DONE: Icon for hidden pages\n* DOING: Responsive design\n* DONE: Captcha integration\n* DONE: Solution for logo and favicon\n* Reference feature\n* Typemill Utilities\n* Markdown secure rendering\n* finish youtube component\n* Handle formdata centrally ???\n* BUG: Raw editor jumps if you edit long text at the end\n* BUG: Error fields in account form not styled correctly","## later","* Clear cache\n* Show security Log\n* User search only for +10 users\n* For api translations should be done completely in backoffice\n* Change translation files so they are loaded in settings instead of adding them manually to settings-defaults.yaml","## Cleanups:","* DONE: Events\n* DONE: Error messages\n* DONE: 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","## Status codes","| Status code | Description | \n|---|---|\n| 200 ok | cell | \n| 400 bad request | The request was unacceptable due to missing or invalid parameter. | \n| 401 unauthorized | The request requires an authorization. | \n| (402 request failed) | The parameters where there but the request failed for other reasons. | \n| 403 forbidden | The user is authenticated but he has not enough rights. | \n| 404 not found | new | \n| 500 internal server error | new |"] \ No newline at end of file diff --git a/data/security/securitylog.txt b/data/security/securitylog.txt index 39a876c..dfaea29 100644 --- a/data/security/securitylog.txt +++ b/data/security/securitylog.txt @@ -10,3 +10,4 @@ 127.0.0.1;2023-09-13 22:20:17;wrong captcha http://localhost/typemill/tm/login 127.0.0.1;2023-09-15 06:06:46;wrong login 127.0.0.1;2023-09-15 22:03:38;wrong login +127.0.0.1;2023-09-16 08:49:53;wrong login diff --git a/media/custom/favicon-114x114.png b/media/custom/favicon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..dc2e17a496867a8921d7a7d78887ef16eccdd406 GIT binary patch literal 518 zcmeAS@N?(olHy`uVBq!ia0vp^MIg+<1|<9Mw$=hE&H|6fVg?4jBOuH;Rhv(mfq`*{ zr;B4q#jUq@4852gMH(J%cT*K)TGSiW@q~%1iG9OY2D7;1hpuI3Oucu>EHo!rCnI~x zi&ZywTq~O-*>mXo_uG5=Z#JGx>8@LUz2#r6w;Mx{0&9?hBi9lKE)|bP5fGZdq&b0! z6Cu82-_|*wKAb!0xn=t{A4BJ_pNpr2hj%yLv9|6$yI7e^vP$=~#`^Wjvwr^TdVDpj zA8y94t;~&)p{}+wXC$?~nm&EW^X@6@tG3*Ft1(UIm5iyc@a9!f7rJVyl@mZ(Sb%nF zP5`-uHK;RvZT9Zn8}GaXYP4H^c}9<0ccaaY9R=%6gV(1@njb&@ZtE>&uu8DQUp-fy z`{vHv`NzGsXLm`?+PnXJ?W)N+m|oz>~BzUT$h*Ql3qRAsqd=AT%a{Vz>rzu&?MsVH_DTp>HFV08$PyWGZyxL vw0IepeW|_t=~XS%&;qGN4Mm_C|FYt*Cx$V~PMLfa7_khVu6{1-oD!M<85z@) literal 0 HcmV?d00001 diff --git a/media/custom/favicon-144x144.png b/media/custom/favicon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..9f4ebaeb10ba59744fde9c9669854b76a214cb19 GIT binary patch literal 602 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$a>caTa()7BevL9RXp+soH$f3=B*> zo-U3d6}R5rHS}V36lr+4Jx$Pa7DrP;;t^&KFKhh?+$!HU3cj&z-ops?&!LpKp-AWx&MJ(jXwf#Kfqm0Ax8haBu)wKmjKp z3n&0)DS)H|1i(@(EFh_l|4a3DMm&F@@XGIah;X#Iug<%7MQkM{RZ`Z+kC$m~e3~K@ zuC6XPKQ+(n3x_khp&n~qMBey)IoRa$&XsD{bi`b*ulD*EAF=vw->R#dyl1Yx{_)?R zIiJN}JbrqVt&$y=(|*{x?q`3++kWxheeyMd^wBj|=zsEnhb4#_gQ2lD&(r?|vZ22J#sPVg3wlYUvJtH*dc2?)%$-q}4A?*10d9bA5Nt+jnluuW$CAc|Y>it~XU~UFe2P z48Pbs@%HD>H{O)_nr`gBy6T2w*2ji4bMvwj$~@rU#U2Nk&H+XgBo6k!;f@aps6D$! RUyK0=JYD@<);T3K0RZ_6*<}C# literal 0 HcmV?d00001 diff --git a/media/custom/favicon-16x16.png b/media/custom/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..04b4932a7f0f356be113f8abd99668efb4ae2157 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5M?jcysy3fAP;h~# zi(`nz>Et_0mVBAt$aLU{gW`f43}O<^!9kN6C$_d~`2PR@FZIX2Hk{vQ{lw4SC7RsTV7h%%(L?oH}(!%a`Z; i%f$ED)>^q33o|6$(l0pF#kdyeRt8U3KbLh*2~7Z$%v*5) literal 0 HcmV?d00001 diff --git a/media/custom/favicon-180x180.png b/media/custom/favicon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..ddca05075de94336dd728eeb045d296e1912b461 GIT binary patch literal 723 zcmeAS@N?(olHy`uVBq!ia0vp^TR@nD4M^IaWitX&oCO|{#S9F5M?jcysy3fA0|Qg5 zr;B4q#jUq@ZM|XwC5}J*zxN#b^ppd~j;R%GZgV&=H{!+)&gn_&*UHSqR<>@rc|b(7 zNgy#nqTo@@9FZnX--*pW74ul{JhI)Nc(2iV&a-9jy&u?LlwxdRb8KGVc!5KTg%`{e zG=VaeGXx+^w+jjoW-m}3gbCIHVj}BqJH-}iue&(VZqA$(i$qIUSCitp?0hV<1x_hemZ-X(v0($$)GA{(8X7YJ?<#Oun#w^#p~e`s0m z=XWnO&L$*WQt=eKoO!Bh?`+5SrLlJLu{&A2#pC<>H}BcMy{KUUu0Z(19eTh0p3d~2 zWp(qmz4n=X=dj1L$hW=wcPvZDIx`sG>f%E8Z$mTmR&x_NfN z_g#AP_4JJFED9#6cv{@DM&-SO4e4hmWU3|L|SV z(M=WDx_NOY^SyaCCku46vL?76ynT7OWL^DFC*jj}_xJTG9W z_vf3f=YHJjmdrltGEr~AF0t_I59cYATNyTUK+ONe*A@PD+nsM!ukJlty@`jp#9rpq z=bCj~FG|fO=j>c^bcQ3)85dNKzb-yrI?L1lDAJjZ^OU&Y`CjpXyAn;7O>+M zba&m4?K4bTqvw6yMCn{BqnEpKbP0l+XkK Dv`D7> literal 0 HcmV?d00001 diff --git a/media/live/android-chrome-512x512-1.png b/media/live/android-chrome-512x512-1.png new file mode 100644 index 0000000000000000000000000000000000000000..4c5543de6fa282788b233fba37d3a7359e521649 GIT binary patch literal 2017 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 diff --git a/system/typemill/Controllers/ControllerApiAuthorMeta.php b/system/typemill/Controllers/ControllerApiAuthorMeta.php index ae888b0..641ee1d 100644 --- a/system/typemill/Controllers/ControllerApiAuthorMeta.php +++ b/system/typemill/Controllers/ControllerApiAuthorMeta.php @@ -328,7 +328,6 @@ class ControllerApiAuthorMeta extends Controller return $response->withHeader('Content-Type', 'application/json')->withStatus(500); } - # we have to flatten field definitions for tabs if there are fieldsets in it public function flattenTabFields($tabfields, $flattab, $fieldset = null) { @@ -350,17 +349,4 @@ class ControllerApiAuthorMeta extends Controller } return $flattab; } - - protected function hasChanged($input, $page, $field) - { - if(isset($input[$field]) && isset($page[$field]) && $input[$field] == $page[$field]) - { - return false; - } - if(!isset($input[$field]) && !isset($input[$field])) - { - return false; - } - return true; - } } \ No newline at end of file diff --git a/system/typemill/Controllers/ControllerApiImage.php b/system/typemill/Controllers/ControllerApiImage.php index a9d2dd5..a444560 100644 --- a/system/typemill/Controllers/ControllerApiImage.php +++ b/system/typemill/Controllers/ControllerApiImage.php @@ -14,7 +14,6 @@ class ControllerApiImage extends Controller # MISSING # - # solution for logo # return error messages and display in image component # check if resized is bigger than original, then use original diff --git a/system/typemill/Controllers/ControllerApiSystemSettings.php b/system/typemill/Controllers/ControllerApiSystemSettings.php index b2492dc..629838a 100644 --- a/system/typemill/Controllers/ControllerApiSystemSettings.php +++ b/system/typemill/Controllers/ControllerApiSystemSettings.php @@ -6,6 +6,7 @@ use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use Typemill\Models\Validation; use Typemill\Models\Extension; +use Typemill\Models\Media; use Typemill\Models\User; use Typemill\Models\Settings; use Typemill\Static\Translations; @@ -43,6 +44,26 @@ class ControllerApiSystemSettings extends Controller return $response->withHeader('Content-Type', 'application/json')->withStatus(400); } + # if everything is fine, create customsizes for favicon + if(isset($validatedOutput['favicon']) && $validatedOutput['favicon'] != '' && ($validatedOutput['favicon'] != $this->settings['favicon'])) + { + $media = new Media(); + + $sizes = [ + '16' => ['width' => 16, 'height' => 16], + '32' => ['width' => 32, 'height' => 32], + '72' => ['width' => 72, 'height' => 72], + '114' => ['width' => 114, 'height' => 114], + '144' => ['width' => 144, 'height' => 144], + '180' => ['width' => 180, 'height' => 180], + ]; + + foreach ($sizes as $size) + { + $favicon = $media->createCustomSize($validatedOutput['favicon'], $size['width'], $size['height'], 'favicon'); + } + } + # store updated settings here $updatedSettings = $settingsModel->updateSettings($validatedOutput); diff --git a/system/typemill/Controllers/ControllerWebFrontend.php b/system/typemill/Controllers/ControllerWebFrontend.php index 797c4a9..6f2c001 100644 --- a/system/typemill/Controllers/ControllerWebFrontend.php +++ b/system/typemill/Controllers/ControllerWebFrontend.php @@ -178,13 +178,13 @@ class ControllerWebFrontend extends Controller { $favicon = true; $assets->addMeta('tilecolor',''); - $assets->addMeta('tileimage',''); - $assets->addMeta('icon16',''); - $assets->addMeta('icon32',''); - $assets->addMeta('icon72',''); - $assets->addMeta('icon114',''); - $assets->addMeta('icon144',''); - $assets->addMeta('icon180',''); + $assets->addMeta('tileimage',''); + $assets->addMeta('icon16',''); + $assets->addMeta('icon32',''); + $assets->addMeta('icon72',''); + $assets->addMeta('icon114',''); + $assets->addMeta('icon144',''); + $assets->addMeta('icon180',''); } diff --git a/system/typemill/Models/Media.php b/system/typemill/Models/Media.php index aca544e..8e00188 100644 --- a/system/typemill/Models/Media.php +++ b/system/typemill/Models/Media.php @@ -486,7 +486,7 @@ class Media return true; } - public function createCustomSize($imageUrl, $width = NULL, $height = NULL) + public function createCustomSize($imageUrl, $width = NULL, $height = NULL, $forcename = NULL) { $this->setPathInfo($imageUrl); @@ -506,19 +506,18 @@ class Media $extension = $this->getExtension(); $originalName = $this->getFilename(); $originalFile = $originalName . '.' . $extension; - $customName = $originalName . $resizeName; + $customName = $forcename ? $forcename . $resizeName : $originalName . $resizeName; $customFile = $customName . '.' . $extension; $storage = new StorageWrapper('\Typemill\Models\Storage'); - if($storage->checkFile('customFolder', '', $customFile)) + if(!$forcename && $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)) + if(!$forcename && $storage->checkFile('customFolder', '', $originalFile)) { $imagePath = $storage->getFolderPath('customFolder') . $originalFile; } @@ -536,7 +535,7 @@ class Media $originalSize = $this->getImageSize($image); $resizedImage = $this->resizeImage($image, $desiredSize, $originalSize); - if($resizedImage && $storage->storeCustomImage($image, $extension, $customName)) + if($resizedImage && $storage->storeCustomImage($resizedImage, $extension, $customName)) { return '/media/custom/' . $customFile; } diff --git a/system/typemill/author/auth/recover.twig b/system/typemill/author/auth/recover.twig index ef3eba3..e469e40 100644 --- a/system/typemill/author/auth/recover.twig +++ b/system/typemill/author/auth/recover.twig @@ -31,6 +31,16 @@ + {% if captcha == 'standard' %} + + {{ captcha(true) }} + + {% elseif captcha == 'aftererror' %} + + {{ captcha(old) }} + + {% endif %} +
- + {{ $filters.translate('Markdown') }}