From 4f8bb09d268d0acee1b74b00c1619be0013284c9 Mon Sep 17 00:00:00 2001 From: trendschau Date: Fri, 17 Jan 2025 22:49:55 +0100 Subject: [PATCH] v2.13 improve responsive author interface --- system/typemill/Models/SimpleMail.php | 5 +- .../typemill/author/content/blox-editor.twig | 4 +- .../typemill/author/content/raw-editor.twig | 2 +- system/typemill/author/css/output.css | 118 ++++++++++++++---- system/typemill/author/js/vue-blox.js | 4 +- system/typemill/author/js/vue-contentnavi.js | 36 ++++-- system/typemill/author/js/vue-forms.js | 12 +- system/typemill/author/js/vue-kixote.js | 2 +- system/typemill/author/js/vue-license.js | 13 +- system/typemill/author/js/vue-meta.js | 2 +- system/typemill/author/js/vue-publisher.js | 20 +-- system/typemill/author/js/vue-raw.js | 2 +- system/typemill/author/js/vue-system.js | 3 +- system/typemill/author/js/vue-systemnavi.js | 6 +- system/typemill/author/js/vue-themes.js | 102 ++++++++------- .../author/layouts/layoutContent.twig | 6 +- 16 files changed, 215 insertions(+), 122 deletions(-) diff --git a/system/typemill/Models/SimpleMail.php b/system/typemill/Models/SimpleMail.php index ae96a58..8342938 100644 --- a/system/typemill/Models/SimpleMail.php +++ b/system/typemill/Models/SimpleMail.php @@ -55,9 +55,10 @@ class SimpleMail $send = mail($to, $subject, $message, $headers); - if($send !== true) + if ($send !== true) { - $this->error = error_get_last()['message']; + $lastError = error_get_last(); + $this->error = $lastError ? $lastError['message'] : 'Unknown error occurred while sending mail.'; } return $send; diff --git a/system/typemill/author/content/blox-editor.twig b/system/typemill/author/content/blox-editor.twig index 8aeb116..d28bf59 100644 --- a/system/typemill/author/content/blox-editor.twig +++ b/system/typemill/author/content/blox-editor.twig @@ -12,7 +12,7 @@
{% for block in content %} -
{{ block.html|raw }}
+
{{ block.html|raw }}
{% endfor %}
@@ -30,7 +30,7 @@
-
+
{% endblock %} diff --git a/system/typemill/author/content/raw-editor.twig b/system/typemill/author/content/raw-editor.twig index 9b66390..171eec6 100644 --- a/system/typemill/author/content/raw-editor.twig +++ b/system/typemill/author/content/raw-editor.twig @@ -9,7 +9,7 @@
-
+
{% endblock %} diff --git a/system/typemill/author/css/output.css b/system/typemill/author/css/output.css index a87f392..453aded 100644 --- a/system/typemill/author/css/output.css +++ b/system/typemill/author/css/output.css @@ -730,10 +730,6 @@ video { float: right; } -.float-left { - float: left; -} - .m-0 { margin: 0px; } @@ -1086,6 +1082,10 @@ video { width: 100%; } +.w-48 { + width: 12rem; +} + .max-w-4xl { max-width: 56rem; } @@ -1408,11 +1408,6 @@ video { background-color: rgb(254 226 226 / var(--tw-bg-opacity)); } -.bg-rose-400 { - --tw-bg-opacity: 1; - background-color: rgb(251 113 133 / var(--tw-bg-opacity)); -} - .bg-rose-500 { --tw-bg-opacity: 1; background-color: rgb(244 63 94 / var(--tw-bg-opacity)); @@ -1433,11 +1428,6 @@ video { background-color: rgb(250 250 249 / var(--tw-bg-opacity)); } -.bg-stone-500 { - --tw-bg-opacity: 1; - background-color: rgb(120 113 108 / var(--tw-bg-opacity)); -} - .bg-stone-600 { --tw-bg-opacity: 1; background-color: rgb(87 83 78 / var(--tw-bg-opacity)); @@ -2003,16 +1993,16 @@ video { background-color: rgb(250 250 249 / var(--tw-bg-opacity)); } -.hover\:bg-stone-600:hover { - --tw-bg-opacity: 1; - background-color: rgb(87 83 78 / var(--tw-bg-opacity)); -} - .hover\:bg-stone-700:hover { --tw-bg-opacity: 1; background-color: rgb(68 64 60 / var(--tw-bg-opacity)); } +.hover\:bg-stone-800:hover { + --tw-bg-opacity: 1; + background-color: rgb(41 37 36 / var(--tw-bg-opacity)); +} + .hover\:bg-stone-900:hover { --tw-bg-opacity: 1; background-color: rgb(28 25 23 / var(--tw-bg-opacity)); @@ -2038,11 +2028,6 @@ video { background-color: rgb(202 138 4 / var(--tw-bg-opacity)); } -.hover\:bg-stone-800:hover { - --tw-bg-opacity: 1; - background-color: rgb(41 37 36 / var(--tw-bg-opacity)); -} - .hover\:text-stone-100:hover { --tw-text-opacity: 1; color: rgb(245 245 244 / var(--tw-text-opacity)); @@ -2321,6 +2306,19 @@ video { } @media (min-width: 1024px) { + .lg\:absolute { + position: absolute; + } + + .lg\:right-0 { + right: 0px; + } + + .lg\:my-8 { + margin-top: 2rem; + margin-bottom: 2rem; + } + .lg\:mr-2 { margin-right: 0.5rem; } @@ -2329,6 +2327,14 @@ video { margin-top: 0px; } + .lg\:ml-2 { + margin-left: 0.5rem; + } + + .lg\:mr-3 { + margin-right: 0.75rem; + } + .lg\:block { display: block; } @@ -2341,6 +2347,10 @@ video { display: flex; } + .lg\:table-cell { + display: table-cell; + } + .lg\:hidden { display: none; } @@ -2357,10 +2367,42 @@ video { width: 75%; } + .lg\:w-80 { + width: 20rem; + } + .lg\:w-half { width: 48%; } + .lg\:w-48 { + width: 12rem; + } + + .lg\:w-2\/5 { + width: 40%; + } + + .lg\:w-3\/5 { + width: 60%; + } + + .lg\:w-1\/3 { + width: 33.333333%; + } + + .lg\:w-24 { + width: 6rem; + } + + .lg\:w-32 { + width: 8rem; + } + + .lg\:w-54rem { + width: 54rem; + } + .lg\:flex-row { flex-direction: row; } @@ -2383,6 +2425,26 @@ video { padding-right: 1rem; } + .lg\:px-12 { + padding-left: 3rem; + padding-right: 3rem; + } + + .lg\:px-16 { + padding-left: 4rem; + padding-right: 4rem; + } + + .lg\:py-16 { + padding-top: 4rem; + padding-bottom: 4rem; + } + + .lg\:px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .lg\:pb-3 { padding-bottom: 0.75rem; } @@ -2391,6 +2453,14 @@ video { padding-top: 1rem; } + .lg\:pb-0 { + padding-bottom: 0px; + } + + .lg\:pr-3 { + padding-right: 0.75rem; + } + .lg\:text-black { --tw-text-opacity: 1; color: rgb(0 0 0 / var(--tw-text-opacity)); diff --git a/system/typemill/author/js/vue-blox.js b/system/typemill/author/js/vue-blox.js index da835c0..bcef2a2 100644 --- a/system/typemill/author/js/vue-blox.js +++ b/system/typemill/author/js/vue-blox.js @@ -1,5 +1,5 @@ const bloxeditor = Vue.createApp({ - template: `
+ template: `
-
+
-
-
- - {{ $filters.translate(home.name) }} - + + -
-
`, data: function () { return { @@ -21,6 +27,7 @@ const navigation = Vue.createApp({ backup: false, isExpended: false, expanded: [], + menuvisible: false, } }, mounted: function(){ @@ -55,6 +62,17 @@ const navigation = Vue.createApp({ }); }, methods: { + togglemenue() + { + if(this.menuvisible) + { + this.menuvisible = false; + } + else + { + this.menuvisible = true; + } + }, getStatusClass(status) { if(status == 'published') diff --git a/system/typemill/author/js/vue-forms.js b/system/typemill/author/js/vue-forms.js index ab6a42d..7f2c849 100644 --- a/system/typemill/author/js/vue-forms.js +++ b/system/typemill/author/js/vue-forms.js @@ -303,7 +303,7 @@ app.component('component-date', { template: `
-
+
@@ -335,7 +335,7 @@ app.component('component-email', { template: `
-
+
-
+
@@ -402,7 +402,7 @@ app.component('component-url', { template: `
-
+
-
+
@@ -758,7 +758,7 @@ app.component('component-image', {
-
+
diff --git a/system/typemill/author/js/vue-kixote.js b/system/typemill/author/js/vue-kixote.js index 4d9645a..0debc74 100644 --- a/system/typemill/author/js/vue-kixote.js +++ b/system/typemill/author/js/vue-kixote.js @@ -176,7 +176,7 @@ const kixoteCommands = [ const kixote = Vue.createApp({ template: `
- +

Hello, I am Kixote from Typemill. How can I help?

diff --git a/system/typemill/author/js/vue-license.js b/system/typemill/author/js/vue-license.js index e60d7e7..9294924 100644 --- a/system/typemill/author/js/vue-license.js +++ b/system/typemill/author/js/vue-license.js @@ -1,12 +1,12 @@ const app = Vue.createApp({ template: `
-
+

{{ licensemessage }}

Congratulations! Your license is active and you can enjoy all features until you cancel your subscription. To manage your subscription, visit the Paddle Customer Portal. Simply enter the email associated with your license to receive a temporary login link.

-
-
+
+

MAKER License

22 € + VAT/Year. Ideal for personal projects and side hustles.

@@ -26,7 +26,7 @@ const app = Vue.createApp({
-
+

License-key:

{{ licenseData.license }}

Domain:

@@ -37,13 +37,12 @@ const app = Vue.createApp({

{{ licenseData.payed_until }}

-

The subscription extends automatically for 12 month every time until you cancel your subscription. For testing, you can also use the domains 'localhost', '127.0.0.1', and the subdomain 'typemilltest.'.

+

The subscription extends automatically for 12 month every time until you cancel your subscription. For testing, you can also use the domains 'localhost', '127.0.0.1', and the subdomain 'typemilltest.'.

-

Activate your Typemill-License below and enjoy a flatrate-subscription for plugins, themes, and services.

-

You do not have a License yet? Read all about it on the Typemill website.

+

Activate your Typemill-License below and enjoy a flatrate-subscription for plugins, themes, and services. You do not have a License yet? Read all about it on the Typemill website.

diff --git a/system/typemill/author/js/vue-meta.js b/system/typemill/author/js/vue-meta.js index d4a25da..0a08881 100644 --- a/system/typemill/author/js/vue-meta.js +++ b/system/typemill/author/js/vue-meta.js @@ -36,7 +36,7 @@ const app = Vue.createApp({ formErrorsReset: {}, message: false, messageClass: false, - css: "px-16 py-16 bg-stone-50 shadow-md mb-16", + css: "lg:px-16 px-8 lg:py-16 py-8 bg-stone-50 shadow-md mb-16", saved: false, } }, diff --git a/system/typemill/author/js/vue-publisher.js b/system/typemill/author/js/vue-publisher.js index 7950c54..19357b0 100644 --- a/system/typemill/author/js/vue-publisher.js +++ b/system/typemill/author/js/vue-publisher.js @@ -2,16 +2,16 @@ const publisher = Vue.createApp({ template: `
{{ message }}
-
+
-
- {{ $filters.translate(item.status) }} +
+
@@ -45,14 +45,14 @@ const publisher = Vue.createApp({ v-if="item.originalName != 'home'" @click.prevent="checkUnpublish" :disabled="isUnpublished" - class="cursor-pointer ml-1 w-24 px-4 py-2 border dark:border-0 border-stone-200 text-white bg-teal-500 hover:bg-teal-600 disabled:bg-stone-200 disabled:text-stone-900 disabled:dark:bg-stone-600 disabled:dark:text-stone-200 disabled:cursor-not-allowed transition" + class="cursor-pointer ml-1 lg:w-24 lg:px-4 px-2 py-2 border dark:border-0 border-stone-200 text-white bg-teal-500 hover:bg-teal-600 disabled:bg-stone-200 disabled:text-stone-900 disabled:dark:bg-stone-600 disabled:dark:text-stone-200 disabled:cursor-not-allowed transition" > {{ $filters.translate('unpublish') }} @@ -77,7 +77,7 @@ const publisher = Vue.createApp({ diff --git a/system/typemill/author/js/vue-raw.js b/system/typemill/author/js/vue-raw.js index f92b244..b5402c7 100644 --- a/system/typemill/author/js/vue-raw.js +++ b/system/typemill/author/js/vue-raw.js @@ -1,6 +1,6 @@ const raweditor = Vue.createApp({ template: ` -
+
- - `, + `, data() { return { systemnavi: data.systemnavi, diff --git a/system/typemill/author/js/vue-themes.js b/system/typemill/author/js/vue-themes.js index fecef4a..5c2bb8f 100644 --- a/system/typemill/author/js/vue-themes.js +++ b/system/typemill/author/js/vue-themes.js @@ -16,7 +16,7 @@ const app = Vue.createApp({
-
+

{{theme.name}}

author: {{theme.author}} | version: {{theme.version}}

{{theme.description}}

@@ -37,52 +37,60 @@ const app = Vue.createApp({
- Readymades -

Readymades are predefined settings. Store your own readymades or load readymades to quickly setup your theme.

-
    - -
  • -
    -
    {{ readysetup.name }}
    -
    -

    {{ readysetup.description }}

    -
    -
    - - -
    -
    - -
    -
    -
  • -
  • -
    - - - -
    -
  • -
    -
-
{{ readymadeError }}
+
+

Readymades

+ +
+ +
+ +

Readymades are predefined settings. Store your own readymades or load readymades to quickly setup your theme.

+
    + +
  • +
    +
    {{ readysetup.name }}
    +
    +

    {{ readysetup.description }}

    +
    +
    + + +
    +
    + +
    +
    +
  • +
  • +
    + + + +
    +
  • +
    +
+
{{ readymadeError }}
+
+
diff --git a/system/typemill/author/layouts/layoutContent.twig b/system/typemill/author/layouts/layoutContent.twig index 2cdd3a1..a142f22 100644 --- a/system/typemill/author/layouts/layoutContent.twig +++ b/system/typemill/author/layouts/layoutContent.twig @@ -34,11 +34,11 @@ {% include 'partials/flash.twig' %} -
-