From 1600277564e2696170c34daccd5e7cec3ab23f4b Mon Sep 17 00:00:00 2001 From: Oli J Date: Wed, 29 Nov 2023 17:29:28 +0700 Subject: [PATCH] Initial commit --- Block/PowerToys/HyvaInlineCss.php | 49 ++++ LICENSE | 21 ++ README.md | 213 ++++++++++++++++++ composer.json | 28 +++ etc/adminhtml/system.xml | 27 +++ etc/config.xml | 11 + etc/jajuma_powertoys.xml | 23 ++ etc/module.xml | 17 ++ registration.php | 10 + .../custom_widget/hyva_inlinecss.phtml | 156 +++++++++++++ view/base/web/images/parent-module-image.png | Bin 0 -> 5944 bytes 11 files changed, 555 insertions(+) create mode 100644 Block/PowerToys/HyvaInlineCss.php create mode 100644 LICENSE create mode 100644 README.md create mode 100644 composer.json create mode 100644 etc/adminhtml/system.xml create mode 100644 etc/config.xml create mode 100644 etc/jajuma_powertoys.xml create mode 100644 etc/module.xml create mode 100644 registration.php create mode 100644 view/base/templates/custom_widget/hyva_inlinecss.phtml create mode 100644 view/base/web/images/parent-module-image.png diff --git a/Block/PowerToys/HyvaInlineCss.php b/Block/PowerToys/HyvaInlineCss.php new file mode 100644 index 0000000..354484f --- /dev/null +++ b/Block/PowerToys/HyvaInlineCss.php @@ -0,0 +1,49 @@ + + * @copyright Copyright (c) 2023 JaJuMa GmbH . All rights reserved. + * @license http://opensource.org/licenses/mit-license.php MIT License + */ +namespace Jajuma\PotHyvaInlineCss\Block\PowerToys; +use Jajuma\PowerToys\Block\PowerToys\Dashboard; +use Magento\Framework\View\Element\Template\Context; +use Magento\Framework\Registry; +use Magento\Framework\App\State; +use Magento\Framework\App\Area; + +class HyvaInlineCss extends Dashboard +{ + const XML_PATH_ENABLE = 'power_toys/hyva_inline_css/is_enabled'; + + const XML_PATH_IS_ENABLE_ORIGIN_MODULE = 'hyvainlinecss/general/enabled'; + + private $state; + + public function __construct( + Registry $registry, + Context $context, + State $state, + array $data = [] + ) { + $this->registry = $registry; + $this->state = $state; + parent::__construct($context, $data); + } + + public function isParentEnable(): bool + { + return $this->_scopeConfig->isSetFlag(self::XML_PATH_IS_ENABLE_ORIGIN_MODULE); + } + + public function isEnable(): bool + { + return $this->_scopeConfig->isSetFlag(self::XML_PATH_ENABLE) && + $this->isFrontend(); + } + + public function isFrontend(): bool + { + $areaCode = $this->state->getAreaCode(); + return $areaCode == Area::AREA_FRONTEND; + } +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..10892ac --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 JaJuMa + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..9d1a7dd --- /dev/null +++ b/README.md @@ -0,0 +1,213 @@ +# :rocket: Hyvä Inline CSS Power Toy for Magento 2 by [JaJuMa](https://www.jajuma.de/) + + + +Hyvä Inline CSS Power Toy for Magento 2 by [JaJuMa](https://www.jajuma.de/en) is a dashboard toy +showing the inline CSS & cache status as well as processing times in your Magento store. +Same as the [Hyvä Inline CSS](https://www.jajuma.de/en/jajuma-develop/extensions/inline-css-for-hyva-themes-magento-extension) debug tool, but even without enabling the debug mode. + +Compatible with + +
+ + + + + + + + + + + +
Hyvä ThemesMage-OSMagento
+
+ +## Features + +This Dashboard Toy shows/provides: +* If Inline CSS was added or not +* If page load was a full page cache HIT or MISS +* Time spent for adding/processing Inline CSS +* Size of Inline CSS added (gzipped) +* Option to flush full page cache +* Option to flush Inline CSS cache + (Note: This toy only shows in frontend) + +## Screenshots + + + + + + + + + + + +
Hyvä Inline CSS Toy
Dark Mode
Hyvä Inline CSS Toy
Light Mode
+ + +## Requirements + +
+ + + + + +
:bangbang: This module requires Power Toys for Magento 2
:bangbang: by JaJuMa
+
+ +* [Hyvä Inline CSS](https://www.jajuma.de/en/jajuma-develop/extensions/inline-css-for-hyva-themes-magento-extension) v1.0.0+ +* Magento Power Toys v1.0.0+ +* Magento v2.4.5+ OR + Mage-OS v1.0.0+ +* Magewire v1.10+ +* Magewire-requirejs v1.1+ + +## Further Info, Extension Description & Manual + +* [Extension Website EN](https://www.jajuma.de/en/jajuma-develop/extensions/power-toys-for-magento-2) +* [Extension Website DE](https://www.jajuma.de/de/jajuma-develop/extensions/power-toys-fuer-magento-2) + +## Demos + +* [Magento Power Toys Demo on Luma Theme](https://www.jajuma.de/en/jajuma-shop/demo-shop-with-magento-2) +* [Magento Power Toys Demo on Hyvä Theme](https://www.jajuma.de/en/jajuma-shop/demo-shop-with-magento-2-and-hyva-themes) +* [Magento Power Toys Demo on Mage-OS](https://www.jajuma.de/en/jajuma-shop/demo-shop-with-mage-os-and-hyva-themes) + +## Installation + +Install via composer as any other Magento extension from Github: +``` +composer require jajuma/pot-hyva-inline-css +``` + +## Using Hyvä Inline CSS Power Toy For Magento + +After installing this module: +Go to +**JaJuMa -> Power Toys -> Configuration** +and enable & configure Hyvä Inline CSS Toy. + +After enabling, see the floating button at left/right edge of your screen +in your Frontend (while logged in as Admin). +When click on this button, the Power Toys Panel will open +displaying the Hyvä Inline CSS Toy. +(Note: This toy only shows in frontend) + +* [See Manual for more details](https://www.jajuma.de/media/wysiwyg/jajuma-develop/power-toys-magento/manuals/JaJuMa_Hyva_Inline_CSS_Power_Toy_Manual_v001.pdf) + + +## License + +The code is licensed under the [MIT License (MIT)](https://github.com/JaJuMa/pot-hyva-inline-css/blob/master/LICENSE) + +## :heart: Powered by + +Developing the Power Toys module and the toys was a lot easier and more fun thanks to [Magewire](https://github.com/magewirephp/magewire). +A big shout and Thank You to [Willem Poortman](https://github.com/wpoortman) for creating Magewire + +## Other [Magento 2 Extensions](ttps://www.jajuma.de/en/jajuma-develop/magento-extensions) by [JaJuMa](https://www.jajuma.de/) + +* :framed_picture: Performance & UX:
[Ultimate Image Optimizer for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/ultimate-image-optimizer-extension-for-magento-2)
+ AVIF & WebP Images, Lazy Loading, High-Resolution / Retina images + +* :framed_picture: Performance & UX:
[WebP Optimized Images for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/webp-optimized-images-extension-for-magento-2#portfolio-content)
+ The #1 WebP Images Solution for Magento 2 + +* :see_no_evil: SEO:
[PRG Pattern Link Masking for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/prg-pattern-link-masking-for-magento-2)
+ Link Masking for Layered Navigation + +* :cop: User Experience:
[Shariff Social Share for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/shariff-social-share-buttons-extension-for-magento-2)
+ GDPR compliant and customizable Sharing Buttons + +* :movie_camera: Content Management:
[Video Widget for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/video-widget-gdpr-extension-for-magento-2)
+ Embedding YouTube videos, GDPR compliant with auto preview image & fully responsive + +* :rocket: Performance & UX:
[Page Preload for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/page-preload-extension-for-magento-2)
+ Faster page transitions and subsequent page-loads by preloading / prefetching + +* :chart_with_upwards_trend: Marketing:
[Matomo Analytics for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/honey-spam-anti-spam-extension-for-magento-2)
+ Web Analytics - GDPR Compliant + +* :honey_pot: Site Optimization:
[Honey Spam Anti-Spam for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/honey-spam-anti-spam-extension-for-magento-2)
+ Spam Protection - Reliable & GDPR Compliant + +* :bell: Marketing:
[Customer Registration Reminder & Cleanup for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/customer-registration-reminder-and-cleanup-extension-for-magento-2)
+ Increase Your Customer Engangement & Cleanup your Customer Account Data Automatically + +* :mega: UX & Marketing:
[Category Grid Callouts for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/category-grid-callouts-extension-for-magento-2)
+ Enrich Your Category Grids With Eye-Catching Callouts + +* :thought_balloon: UX & Marketing:
[Customer Satisfaction Feedback for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/category-grid-callouts-extension-for-magento-2)
+ Collect Valuable Feedback From Your Customers & Understand How To Satisfy Your Customers + +* :sparkler: UX:
[Auto Select Options for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/auto-select-options-extension-for-magento-2)
+ Automatically Select Configurable & Custom Options Based On Your Customer's Preferences + +* :left_right_arrow: UX & Performance:
[Back Forward Cache - bfcache for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/back-forward-cache-extension-for-magento-2)
+ Enable bfcache for Magento 2 for improved UX & Core Web Vitals + +* :heavy_division_sign: Accounting:
[Dynamic Shipping Tax Plus for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/proportional-pro-rata-dynamic-shipping-tax-plus-extension-for-magento-2)
+ Dynamic Shipping Tax Calculation incl. pro-rata/proportional tax rates + +* :mag: Search:
[MySQL Search for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/magento-without-elasticsearch-mysql-search-extension-for-magento-2)
+ MySQL Search for Magento 2 without Elasticsearch + +* :bangbang: Performance:
[Preload Critical Resources & Assets](https://www.jajuma.de/en/jajuma-develop/extensions/resource-hints-preload-critical-resources-assets-extension-for-magento-2)
+ Resource Hints for preloading important and critical resources + +* :octocat: Content Management:
[git 4 Page Builder](https://www.jajuma.de/en/jajuma-develop/extensions/git-4-page-builder-extension-for-magento-2)
+ Manage & deploy Magento 2 Page Builder content via git + +* :rocket: Performance:
[Hyvä Inline CSS](https://www.jajuma.de/en/jajuma-develop/extensions/hyva-inline-css-extension-for-magento-with-hyva-themes)
+ Run Magento 2 without CSS file by inline all CSS + +* :man_technologist: :free: Content Management:
[Syntax Highlighter 4 Page Builder](https://www.jajuma.de/en/jajuma-develop/extensions/syntax-highlighter-4-page-builder-extension-for-magento-2)
+ Syntax Highlighting and more for Magento 2 Page Builder + +* :triangular_flag_on_post: :free: UI & UX:
[Awesome Hyvä for Hyvä Themes](https://www.jajuma.de/en/jajuma-develop/extensions/font-awesome-icons-for-hyva-themes-extension)
+ Font Awesome 5 & 6 Icons for your [Hyvä Themes](https://www.jajuma.de/de/jajuma-shop/online-shop-mit-magento-2-und-hyva-themes) Store + +* :triangular_flag_on_post: :free: UI & UX:
[Hyvä Flags for Hyvä Themes](https://www.jajuma.de/en/jajuma-develop/extensions/country-language-flag-icons-for-hyva-themes-extension)
+ Country & Language Flag Icons for your [Hyvä Themes](https://www.jajuma.de/de/jajuma-shop/online-shop-mit-magento-2-und-hyva-themes) Store + +* :ok_man: :free: User Experience:
[Customer Navigation Manager for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/customer-navigation-manager-extension-for-magento-2)
+ Easily manage the links in your Customer Account + +* :heavy_division_sign: :free: Accounting:
[Dynamic Shipping Tax for Magento 2](https://www.jajuma.de/en/jajuma-develop/extensions/dynamic-shipping-tax-extension-for-magento-2)
+ Dynamic Shipping Tax Calculation + +* :question: :free: Content:
[Hyvä FAQ Widget for Hyvä Themes](https://www.jajuma.de/en/jajuma-develop/extensions/dynamic-shipping-tax-extension-for-magento-2)
+ FAQ Widget for your [Hyvä Themes](https://www.jajuma.de/de/jajuma-shop/online-shop-mit-magento-2-und-hyva-themes) Store + +## Other [Services](https://www.jajuma.de/en/jajuma/company-magento-ecommerce-agency-stuttgart) by [JaJuMa](https://www.jajuma.de/) + +* :shopping: [JaJuMa-Market: Marketplace Software](https://www.jajuma.de/en/jajuma-market)
+ Complete Online Marketplace Software Solution. For Professional Demands. Feature Rich. Flexibly Customizable. + +* :shopping_cart: [JaJuMa-Shop](https://www.jajuma.de/en/jajuma-shop)
+ Customized Magento Shop Solutions. + +* :rocket: [JaJuMa-Shop: Hyvä Magento Shop Development](https://www.jajuma.de/de/jajuma-shop/online-shop-mit-magento-2-und-hyva-themes)
+ Hyvä Magento Shop Development. + +* :orange_book: [JaJuMa-Shop: Magento Handbuch in Deutsch](https://www.jajuma.de/de/jajuma-shop/magento-2-handbuch/)
+ Magento Handbuch in Deutsch. + +* :card_index_dividers: [JaJuMa-PIM](https://www.jajuma.de/en/jajuma-pim)
+ Product Information Management. Simple. Better. + +* :heavy_plus_sign: [JaJuMa-Develop: Magento 2 Extensions](https://www.jajuma.de/en/jajuma-develop/magento-extensions)
+ Individual Solutions For Your Business Case. + +* :paintbrush: [JaJuMa-Design](https://www.jajuma.de/en/jajuma-design)
+ Designs That Inspire. + +* :necktie: [JaJuMa-Consult](https://www.jajuma.de/en/jajuma-consult)
+ We Show You New Perspectives. + +© JaJuMa GmbH | [www.jajuma.de](www.jajuma.de) \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..3bcb6c2 --- /dev/null +++ b/composer.json @@ -0,0 +1,28 @@ +{ + "name": "jajuma/pot-hyva-inline-css", + "description": "Hyvä Inline CSS Power Toy for Magento 2 by JaJuMa", + "type": "magento2-module", + "license": "MIT", + "version": "1.0.0", + "authors": [ + { + "email": "info@jajuma.de", + "name": "JaJuMa" + } + ], + "minimum-stability": "dev", + "require": { + "magewirephp/magewire": "^1.10", + "magewirephp/magewire-requirejs": "^1.1", + "jajuma/power-toys": "^1.0", + "jajuma/module-hyva-inline-css": "^1.0" + }, + "autoload": { + "psr-4": { + "Jajuma\\PotHyvaInlineCss\\": "" + }, + "files": [ + "registration.php" + ] + } +} diff --git a/etc/adminhtml/system.xml b/etc/adminhtml/system.xml new file mode 100644 index 0000000..d68d500 --- /dev/null +++ b/etc/adminhtml/system.xml @@ -0,0 +1,27 @@ + + + + + + + +
+ + jajuma + Jajuma_PotWeather::config_jajuma_powertoy + + + + + Magento\Config\Model\Config\Source\Yesno + + +
+
+
\ No newline at end of file diff --git a/etc/config.xml b/etc/config.xml new file mode 100644 index 0000000..47105f3 --- /dev/null +++ b/etc/config.xml @@ -0,0 +1,11 @@ + + + + + + 1 + + + + \ No newline at end of file diff --git a/etc/jajuma_powertoys.xml b/etc/jajuma_powertoys.xml new file mode 100644 index 0000000..3d0891f --- /dev/null +++ b/etc/jajuma_powertoys.xml @@ -0,0 +1,23 @@ + + + + + + + + true + Jajuma_PotHyvaInlineCss::custom_widget/hyva_inlinecss.phtml + true + 30 + 50 + + + + diff --git a/etc/module.xml b/etc/module.xml new file mode 100644 index 0000000..cf71c60 --- /dev/null +++ b/etc/module.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/registration.php b/registration.php new file mode 100644 index 0000000..561551f --- /dev/null +++ b/registration.php @@ -0,0 +1,10 @@ + + * @copyright Copyright (c) 2023 JaJuMa GmbH . All rights reserved. + * @license http://opensource.org/licenses/mit-license.php MIT License + */ + +use Magento\Framework\Component\ComponentRegistrar; + +ComponentRegistrar::register(ComponentRegistrar::MODULE, 'Jajuma_PotHyvaInlineCss', __DIR__); diff --git a/view/base/templates/custom_widget/hyva_inlinecss.phtml b/view/base/templates/custom_widget/hyva_inlinecss.phtml new file mode 100644 index 0000000..2a583d3 --- /dev/null +++ b/view/base/templates/custom_widget/hyva_inlinecss.phtml @@ -0,0 +1,156 @@ + + * @copyright Copyright (c) 2023 JaJuMa GmbH . All rights reserved. + * @license http://opensource.org/licenses/mit-license.php MIT License + */ +use Jajuma\PotHoneySpam\Block\PowerToys\HyvaInlineCss; +use Magento\Framework\Escaper; +/** @var HyvaInlineCss $block */ +/** @var Escaper $escaper */ +?> +
+isParentEnable()): ?> +
+
+ + + + Hyvä InlineCSS +
+ +
+ + diff --git a/view/base/web/images/parent-module-image.png b/view/base/web/images/parent-module-image.png new file mode 100644 index 0000000000000000000000000000000000000000..e13fc17ba112f0c36463a00b4ecb333313e0f6c3 GIT binary patch literal 5944 zcmV-87su#{P)81baqxbs8|MaQ<>7)PYqdYu3@3sH{00960|FDY{|K*_n`mWKxg+4w$-s7S)G&d|P zGpd_wYhgn8(rfU#6ZGGl^~+eer*!eXCh66bSWh*LfLQG8?A6rO{^p!eP*6fUCMF^j z+NA*9-QCU2&HUeuO-)TeKt0~50Q~&?-O7#QtpN1MP44dQ`POvHngG9$0R7{X#j}0p zt^oM>`045D(b3WR*?rQW0O#lD-{0Syj$&b8VaCSC_s?S1q5!*%0Q1B_W@czZLqzPe z0NL5wv9Ym0KtbTE0K}C5*x1*gpP!eOmL@1L&zt~-g@u1{ORj{1^z`!b^6>ER zh;~bDTrHJ%B6wH@ zn{fi<<>#fQu9B3Yi;IqNZ*QZMXq<>q+p$2Qe<6Zo7nP2F%CBXVhhvI=V|Q;`l7Lg@ zyF#vxH;QyNVp1xJUI(zd;=91i#k!h_h={kTfQW!`zNTc!rbSdpD1BuokZ>NnkrZW0 z1(j$5y~yj#(Bh}5xU#ahwyl+zl80JdX=P(zx|&O%heFPv7{iwm=%)a;xxmK4va6<@ zp_h8Bms#k)REc*~)U#1*V^FP;PFhz^T~t4#gEZ8sF`IocS40%Jj1XEv2Ku!C+MNLI z_W$MW|Ff^AdxWE>p_j*=HNKTKc3vUTmH^At^WNa)sjtV-%))qpmcFu#dwq&&Zi2L+ zZr;9SubO02R9$sxOtg?A>aY-#ZwRV(1>m3q+vEJl%GZ>gy5Q8Y&dRU(=c~WDrf+qP z^45T)eih4%0QT zmlbQW`d&|46dA$%=+?!-hoQ>BfaS*q>#}mj-$CFQ=90Y$V@EA=@ZfUC@1iMb;2shb zSb01Sd8L=%NqYq^@#4J~#=0A2Ah0B-8z`-0<|)L{z!RB}#Zm*G+;1@LxU;U-AjQ5# z;8z#LFc&XRn7sJq!D0>wARH|e`(0syyVDO*WS&P6p>IsUC-)mXe`IHEjuaEW|7_Y) zvcwCPjeXg@XQxBycN22lHk+F>!+N0>rh^&7&_T98u*X;oQKErQ?lX9PP5HJQsgNaj z4}q7yil5@;2@A)%yPI0Cx$i2I&03#f(5sB}L>*70NL5?HeONpw^iyH_jNn*UghBq) zV89?-{9l7l*R*fjmx{4OiEExs%bzasLR8|W)>zr}zP8&O$!dd{WlRzvthR{H=W@A_ z`h4j1cpP8pGet+=}r7rWqg+cBT(l0%0D&!-k1U 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 aBb@{Bu*lr7tng<50000