Commit 413bb3e4 by Krystian Kowalczuk

Initial module

parents
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Block\Adminhtml;
use Magento\Framework\Data\Form\Element\AbstractElement;
class About extends \Magento\Backend\Block\AbstractBlock implements
\Magento\Framework\Data\Form\Element\Renderer\RendererInterface
{
/**
* @var \Apptrian\ImageOptimizer\Helper\Data
*/
public $helper;
/**
* Constructor
*
* @param \Apptrian\ImageOptimizer\Helper\Data $helper
*/
public function __construct(\Apptrian\ImageOptimizer\Helper\Data $helper)
{
$this->helper = $helper;
}
/**
* Retrieve element HTML markup.
*
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
* @return string
*/
public function render(AbstractElement $element)
{
$element = null;
$version = $this->helper->getExtensionVersion();
$logopath = 'https://www.apptrian.com/media/apptrian.gif';
$html = <<<HTML
<div style="background: url('$logopath') no-repeat scroll 15px 15px #f8f8f8;
border:1px solid #ccc; min-height:100px; margin:5px 0;
padding:15px 15px 15px 140px;">
<p>
<strong>Apptrian Image Optimizer Extension v$version</strong><br /><br />
Optimize your images, reduce their file size without losing image quality and
speed up your site.
</p>
</div>
HTML;
return $html;
}
}
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Block\Adminhtml\Button;
use Magento\Framework\Data\Form\Element\AbstractElement;
class Clear extends \Magento\Config\Block\System\Config\Form\Field
{
/**
* Retrieve element HTML markup
*
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
* @return string
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function _getElementHtml(AbstractElement $element)
{
$element = null;
/** @var \Magento\Backend\Block\Widget\Button $buttonBlock */
$buttonBlock = $this->getForm()->getLayout()
->createBlock('Magento\Backend\Block\Widget\Button');
$url = $this->getUrl("apptrian_imageoptimizer/optimizer/clear");
$confirmText = __('Are you sure you want to do this?');
$data = [
'class' => 'apptrian-imageoptimizer-admin-button-clear',
'label' => __('Clear Index'),
'onclick' => "confirmSetLocation('".$confirmText."', '".$url."')",
];
$html = $buttonBlock->setData($data)->toHtml();
return $html;
}
}
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Block\Adminhtml\Button;
use Magento\Framework\Data\Form\Element\AbstractElement;
class Optimize extends \Magento\Config\Block\System\Config\Form\Field
{
/**
* Retrieve element HTML markup
*
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
* @return string
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function _getElementHtml(AbstractElement $element)
{
$element = null;
/** @var \Magento\Backend\Block\Widget\Button $buttonBlock */
$buttonBlock = $this->getForm()->getLayout()
->createBlock('Magento\Backend\Block\Widget\Button');
$url = $this->getUrl("apptrian_imageoptimizer/optimizer/optimize");
$data = [
'class' => 'apptrian-imageoptimizer-admin-button-optimize',
'label' => __('Start Optimization Process'),
'onclick' => "setLocation('" . $url . "')",
];
$html = $buttonBlock->setData($data)->toHtml();
return $html;
}
}
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Block\Adminhtml\Button;
use Magento\Framework\Data\Form\Element\AbstractElement;
class Scan extends \Magento\Config\Block\System\Config\Form\Field
{
/**
* Retrieve element HTML markup
*
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
* @return string
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function _getElementHtml(AbstractElement $element)
{
$element = null;
/** @var \Magento\Backend\Block\Widget\Button $buttonBlock */
$buttonBlock = $this->getForm()->getLayout()
->createBlock('Magento\Backend\Block\Widget\Button');
$url = $this->getUrl("apptrian_imageoptimizer/optimizer/scan");
$data = [
'class' => 'apptrian-imageoptimizer-admin-button-scan',
'label' => __('Start Scan and Reindex Process'),
'onclick' => "setLocation('" . $url . "')",
];
$html = $buttonBlock->setData($data)->toHtml();
return $html;
}
}
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Block\Adminhtml;
use Magento\Framework\Data\Form\Element\AbstractElement;
class Stats extends \Magento\Config\Block\System\Config\Form\Field
{
/**
* @var \Apptrian\ImageOptimizer\Helper\Data
*/
public $helper;
/**
* Constructor
*
* @param \Magento\Backend\Block\Template\Context $context
* @param \Apptrian\ImageOptimizer\Helper\Data $helper
*/
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Apptrian\ImageOptimizer\Helper\Data $helper
) {
$this->helper = $helper;
parent::__construct($context);
}
/**
* Retrieve element HTML markup.
*
* @param \Magento\Framework\Data\Form\Element\AbstractElement $element
* @return string
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function _getElementHtml(AbstractElement $element)
{
$element = null;
$r = [];
$indexed = 0;
$optimized = 0;
try {
$r = $this->helper->getFileCount();
$indexed = $r['indexed'];
$optimized = $r['optimized'];
} catch (\Exception $e) {
$message = $e->getMessage();
return '<div class="apptrian-imageoptimizer-bar-wrapper">
<div class="apptrian-imageoptimizer-bar-outer">
<div class="apptrian-imageoptimizer-bar-inner" style="width: 0;">
</div><div class="apptrian-imageoptimizer-bar-text">
<span style="color: #f00;">' . $message . '</span></div>
</div></div>';
}
// Fix for division by zero possibility
if ($indexed == 0) {
$percent = 0;
} else {
$percent = round((100 * $optimized) / $indexed, 2);
}
$html = '<div class="apptrian-imageoptimizer-bar-wrapper">
<div class="apptrian-imageoptimizer-bar-outer">
<div class="apptrian-imageoptimizer-bar-inner" style="width:'
. $percent .'%;"></div>
<div class="apptrian-imageoptimizer-bar-text"><span>' . $percent
. '% ' . sprintf(__('(%s of %s files)'), $optimized, $indexed)
. '</span></div>
</div></div>';
return $html;
}
}
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Controller\Adminhtml\Optimizer;
class Clear extends \Magento\Backend\App\Action
{
/**
* @var \Apptrian\ImageOptimizer\Helper\Data
*/
public $dataHelper;
/**
* Constructor
*
* @param \Magento\Backend\App\Action\Context $context
* @param \Apptrian\ImageOptimizer\Helper\Data $dataHelper
*/
public function __construct(
\Magento\Backend\App\Action\Context $context,
\Apptrian\ImageOptimizer\Helper\Data $dataHelper
) {
$this->dataHelper = $dataHelper;
parent::__construct($context);
}
/**
* Clear index action.
*
* @return \Magento\Backend\Model\View\Result\Redirect
*/
public function execute()
{
set_time_limit(18000);
try {
$this->dataHelper->clearIndex();
$this->messageManager->addSuccess(
__('Clear index operation completed successfully.')
);
} catch (\Exception $e) {
$message = __('Clear index operation failed.');
$this->messageManager->addError($message);
$this->messageManager->addError($e->getMessage());
}
/** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
$resultRedirect = $this->resultRedirectFactory->create();
return $resultRedirect->setPath(
'adminhtml/system_config/edit',
['section' => 'apptrian_imageoptimizer']
);
}
}
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Controller\Adminhtml\Optimizer;
class Optimize extends \Magento\Backend\App\Action
{
/**
* @var \Apptrian\ImageOptimizer\Helper\Data
*/
public $dataHelper;
/**
* Constructor
*
* @param \Magento\Backend\App\Action\Context $context
* @param \Apptrian\ImageOptimizer\Helper\Data $dataHelper
*/
public function __construct(
\Magento\Backend\App\Action\Context $context,
\Apptrian\ImageOptimizer\Helper\Data $dataHelper
) {
$this->dataHelper = $dataHelper;
parent::__construct($context);
}
/**
* Optimize action.
*
* @return \Magento\Backend\Model\View\Result\Redirect
*/
public function execute()
{
set_time_limit(18000);
if ($this->dataHelper->isExecFunctionEnabled()) {
try {
$this->dataHelper->optimize();
$this->messageManager->addSuccess(
__('Optimization operations completed successfully.')
);
} catch (\Exception $e) {
$message = __('Optimization failed.');
$this->messageManager->addError($message);
$this->messageManager->addError($e->getMessage());
}
} else {
$message = __(
'Optimization failed because PHP exec() function is disabled.'
);
$this->messageManager->addError($message);
}
/** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
$resultRedirect = $this->resultRedirectFactory->create();
return $resultRedirect->setPath(
'adminhtml/system_config/edit',
['section' => 'apptrian_imageoptimizer']
);
}
}
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Controller\Adminhtml\Optimizer;
class Scan extends \Magento\Backend\App\Action
{
/**
* @var \Apptrian\ImageOptimizer\Helper\Data
*/
public $dataHelper;
/**
* Constructor
*
* @param \Magento\Backend\App\Action\Context $context
* @param \Apptrian\ImageOptimizer\Helper\Data $dataHelper
*/
public function __construct(
\Magento\Backend\App\Action\Context $context,
\Apptrian\ImageOptimizer\Helper\Data $dataHelper
) {
$this->dataHelper = $dataHelper;
parent::__construct($context);
}
/**
* Scan and reindex action.
*
* @return \Magento\Backend\Model\View\Result\Redirect
*/
public function execute()
{
set_time_limit(18000);
try {
$this->dataHelper->scanAndReindex();
$message = $this->messageManager->addSuccess(
__('Scan and reindex operations completed successfully.')
);
} catch (\Exception $e) {
$message = __('Scanning and reindexing failed.');
$this->messageManager->addError($message);
$this->messageManager->addError($e->getMessage());
}
/** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
$resultRedirect = $this->resultRedirectFactory->create();
return $resultRedirect->setPath(
'adminhtml/system_config/edit',
['section' => 'apptrian_imageoptimizer']
);
}
}
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Cron;
class Optimize
{
/**
* @var \Apptrian\ImageOptimizer\Helper\Data
*/
public $helper;
/**
* @var \Psr\Log\LoggerInterface
*/
public $logger;
/**
* Constructor
*
* @param \Apptrian\ImageOptimizer\Helper\Data $helper
* @param \Psr\Log\LoggerInterface $logger
*/
public function __construct(
\Apptrian\ImageOptimizer\Helper\Data $helper,
\Psr\Log\LoggerInterface $logger
) {
$this->helper = $helper;
$this->logger = $logger;
}
/**
* Cron method for executing optmization process.
*/
public function execute()
{
$extensionEnabled = (int) $this->helper->getConfig(
'apptrian_imageoptimizer/general/enabled'
);
$cronJobEnabled = (int) $this->helper->getConfig(
'apptrian_imageoptimizer/cron/enabled_optimize'
);
if ($extensionEnabled && $cronJobEnabled) {
$mPrefix = 'Image Optimizer Cron: Optimization process ';
if ($this->helper->isExecFunctionEnabled()) {
try {
$result = $this->helper->optimize();
if ($result !== true) {
$this->logger->debug($mPrefix . 'failed.');
}
} catch (\Exception $e) {
$this->logger->critical($e);
}
} else {
$this->logger->debug(
$mPrefix . 'failed because PHP exec() function is disabled.'
);
}
}
}
}
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Cron;
class Scan
{
/**
* @var \Apptrian\ImageOptimizer\Helper\Data
*/
public $helper;
/**
* @var \Psr\Log\LoggerInterface
*/
public $logger;
/**
* Constructor
*
* @param \Apptrian\ImageOptimizer\Helper\Data $helper
* @param \Psr\Log\LoggerInterface $logger
*/
public function __construct(
\Apptrian\ImageOptimizer\Helper\Data $helper,
\Psr\Log\LoggerInterface $logger
) {
$this->helper = $helper;
$this->logger = $logger;
}
/**
* Cron method for executing scan and reindex process.
*/
public function execute()
{
$extensionEnabled = (int) $this->helper->getConfig(
'apptrian_imageoptimizer/general/enabled'
);
$cronJobEnabled = (int) $this->helper->getConfig(
'apptrian_imageoptimizer/cron/enabled_scan'
);
if ($extensionEnabled && $cronJobEnabled) {
try {
$result = $this->helper->scanAndReindex();
if ($result !== true) {
$mPrefix = 'Image Optimizer Cron: Scan and Reindex process';
$this->logger->debug($mPrefix . ' failed.');
}
} catch (\Exception $e) {
$this->logger->critical($e);
}
}
}
}
This diff is collapsed. Click to expand it.
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Model\Config;
use Magento\Framework\Exception\LocalizedException;
class BatchSize extends \Magento\Framework\App\Config\Value
{
/**
* @return $this
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function beforeSave()
{
$value = $this->getValue();
$validator = \Zend_Validate::is(
$value,
'Regex',
['pattern' => '/^[0-9]+$/']
);
if (!$validator || $value < 1) {
$message = __(
'Please correct Batch Size: "%1".',
$value
);
throw new LocalizedException($message);
}
return $this;
}
}
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Model\Config;
use Magento\Framework\Exception\LocalizedException;
class Cron extends \Magento\Framework\App\Config\Value
{
/**
* @return $this
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function beforeSave()
{
$value = $this->getValue();
$validator = \Zend_Validate::is(
$value,
'Regex',
['pattern' => '/^[0-9,\-\?\/\*\ ]+$/']
);
if (!$validator) {
$message = __(
'Please correct Cron Expression: "%1".',
$value
);
throw new LocalizedException($message);
}
return $this;
}
}
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Model\Config;
use Magento\Framework\Exception\LocalizedException;
class ExactPath extends \Magento\Framework\App\Config\Value
{
/**
* @return $this
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function beforeSave()
{
$value = $this->getValue();
$validator = \Zend_Validate::is(
$value,
'Regex',
['pattern' => '/^[\p{L}\p{N}_=,;:!&#\+\*\$\?\|\'\.\-\ \/\\\\]*$/iu']
);
if (!$validator) {
$message = __(
'Please correct Utilities Path: "%1".',
$value
);
throw new LocalizedException($message);
}
return $this;
}
}
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Model\Config;
use Magento\Framework\Exception\LocalizedException;
class Options extends \Magento\Framework\App\Config\Value
{
/**
* @return $this
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function beforeSave()
{
$value = $this->getValue();
$validator = \Zend_Validate::is(
$value,
'Regex',
['pattern'=>'/^[\p{L}\p{N}_,;:!%&#\<\>\=\+\*\$\?\|\'\.\-\ \/]+$/iu']
);
if (!$validator) {
$message = __(
'Please correct Utility Options: "%1".',
$value
);
throw new LocalizedException($message);
}
return $this;
}
}
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Model\Config;
use Magento\Framework\Exception\LocalizedException;
class Path extends \Magento\Framework\App\Config\Value
{
/**
* @return $this
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function beforeSave()
{
$value = $this->getValue();
$validator = \Zend_Validate::is(
$value,
'Regex',
['pattern' => '/^[\p{L}\p{N}_,;:!&#\+\*\$\?\|\'\.\-\ \/]+$/iu']
);
if (!$validator) {
$message = __(
'Please correct Utilities Path: "%1".',
$value
);
throw new LocalizedException($message);
}
return $this;
}
}
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Model\Config;
use Magento\Framework\Exception\LocalizedException;
class Paths extends \Magento\Framework\App\Config\Value
{
/**
* @return $this
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function beforeSave()
{
$value = $this->getValue();
$validator = \Zend_Validate::is(
$value,
'Regex',
['pattern' => '/^[\p{L}\p{N}_,;:!&#\+\*\$\?\|\'\.\-\ \/]+$/iu']
);
if (!$validator) {
$message = __(
'Please correct Paths: "%1".',
$value
);
throw new LocalizedException($message);
}
return $this;
}
}
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Model\Config;
use Magento\Framework\Exception\LocalizedException;
class Permissions extends \Magento\Framework\App\Config\Value
{
/**
* @return $this
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function beforeSave()
{
$value = $this->getValue();
$validator = \Zend_Validate::is(
$value,
'Regex',
['pattern' => '/^[0-7]*$/']
);
if (!$validator) {
$message = __(
'Please correct Force File Permissions: "%1".',
$value
);
throw new LocalizedException($message);
}
return $this;
}
}
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
namespace Apptrian\ImageOptimizer\Model\Config;
use Magento\Framework\Exception\LocalizedException;
class Utility extends \Magento\Framework\App\Config\Value
{
/**
* @return $this
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function beforeSave()
{
$value = $this->getValue();
$validator = \Zend_Validate::is(
$value,
'Regex',
['pattern' => '/^[\p{L}\p{N}_,;:!&#\+\*\$\?\|\'\.\-\ \/]+$/iu']
);
if (!$validator) {
$message = __(
'Please correct Utility field: "%1".',
$value
);
throw new LocalizedException($message);
}
return $this;
}
}
{
"name": "apptrian/image-optimizer",
"description": "Optimize your images, reduce their file size without losing image quality and speed up your site.",
"type": "magento2-module",
"version": "2.2.3",
"license": [
"OSL-3.0"
],
"require": {
"php": "~5.5|~7.0"
},
"autoload": {
"files": [ "registration.php" ],
"psr-4": {
"Apptrian\\ImageOptimizer\\": ""
}
}
}
<?xml version="1.0"?>
<!--
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Acl/etc/acl.xsd">
<acl>
<resources>
<resource id="Magento_Backend::admin">
<resource id="Magento_Backend::stores">
<resource id="Magento_Backend::stores_settings">
<resource id="Magento_Config::config">
<resource id="Apptrian_ImageOptimizer::config_system" title="Apptrian Image Optimizer" sortOrder="1" />
</resource>
</resource>
</resource>
</resource>
</resources>
</acl>
</config>
<?xml version="1.0"?>
<!--
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="admin">
<route id="apptrian_imageoptimizer" frontName="apptrian_imageoptimizer">
<module name="Apptrian_ImageOptimizer" after="Magento_Backend" />
</route>
</router>
</config>
<?xml version="1.0"?>
<!--
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
<default>
<apptrian_imageoptimizer>
<general>
<enabled>1</enabled>
<batch_size>50</batch_size>
<paths>pub</paths>
</general>
<cron>
<enabled_scan>1</enabled_scan>
<expression_scan>15 4 * * *</expression_scan>
<enabled_optimize>1</enabled_optimize>
<expression_optimize>0 * * * *</expression_optimize>
</cron>
<utility>
<use64bit>0</use64bit>
<log_output>0</log_output>
<permissions></permissions>
<path>bin</path>
<gif>gifsicle</gif>
<gif_path></gif_path>
<gif_options>-b -O3 %filepath%</gif_options>
<jpg>jpegtran</jpg>
<jpg_path></jpg_path>
<jpg_options>-copy none -optimize -progressive -outfile %filepath% %filepath%</jpg_options>
<png>optipng</png>
<png_path></png_path>
<png_options>-o7 -quiet -strip all %filepath%</png_options>
</utility>
</apptrian_imageoptimizer>
</default>
</config>
<?xml version="1.0"?>
<!--
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/cron_groups.xsd">
<group id="apptrian_imageoptimizer">
<schedule_generate_every>15</schedule_generate_every>
<schedule_ahead_for>20</schedule_ahead_for>
<schedule_lifetime>15</schedule_lifetime>
<history_cleanup_every>10</history_cleanup_every>
<history_success_lifetime>60</history_success_lifetime>
<history_failure_lifetime>600</history_failure_lifetime>
<use_separate_process>0</use_separate_process>
</group>
</config>
<?xml version="1.0"?>
<!--
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
<group id="apptrian_imageoptimizer">
<job name="apptrian_imageoptimizer_scan" instance="Apptrian\ImageOptimizer\Cron\Scan" method="execute">
<config_path>apptrian_imageoptimizer/cron/expression_scan</config_path>
</job>
<job name="apptrian_imageoptimizer_optimize" instance="Apptrian\ImageOptimizer\Cron\Optimize" method="execute">
<config_path>apptrian_imageoptimizer/cron/expression_optimize</config_path>
</job>
</group>
</config>
<?xml version="1.0"?>
<!--
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Apptrian_ImageOptimizer" setup_version="2.2.3"/>
</config>
This diff is collapsed. Click to expand it.
<?php
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
use \Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(
ComponentRegistrar::MODULE,
'Apptrian_ImageOptimizer',
__DIR__
);
<?xml version="1.0"?>
<!--
/**
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
-->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<css src="Apptrian_ImageOptimizer::css/apptrian_imageoptimizer.css" media="all"/>
</head>
</page>
/*!
* @category Apptrian
* @package Apptrian_ImageOptimizer
* @author Apptrian
* @copyright Copyright (c) Apptrian (http://www.apptrian.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License
*/
.apptrian-imageoptimizer-bar-wrapper {
display: inline-block;
width: 98%;
margin: .4em .4em -0.7em 0;
}
.apptrian-imageoptimizer-bar-outer {
position: relative;
background: #eee;
height: 2em;
border: 1px solid #adadad;
border-radius: 4px;
}
.apptrian-imageoptimizer-bar-inner {
height: 2em;
border-radius: 4px;
background: rgb(210,255,82);
background: -moz-linear-gradient(top, rgba(210,255,82,1) 0%, rgba(145,232,66,1) 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(210,255,82,1)), color-stop(100%,rgba(145,232,66,1)));
background: -webkit-linear-gradient(top, rgba(210,255,82,1) 0%,rgba(145,232,66,1) 100%);
background: -o-linear-gradient(top, rgba(210,255,82,1) 0%,rgba(145,232,66,1) 100%);
background: -ms-linear-gradient(top, rgba(210,255,82,1) 0%,rgba(145,232,66,1) 100%);
background: linear-gradient(to bottom, rgba(210,255,82,1) 0%,rgba(145,232,66,1) 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#d2ff52', endColorstr='#91e842',GradientType=0 );
}
.apptrian-imageoptimizer-bar-text {
position: absolute;
top: 0;
left: 0;
height: 2em;
width: 100%;
text-align: center;
}
.apptrian-imageoptimizer-bar-text span {
line-height: 2em;
vertical-align: middle;
}
.accordion .config .value.with-tooltip {
font-size: 1em;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment