Skip to content
Snippets Groups Projects
Commit ac61f97e authored by Georgi Mateev's avatar Georgi Mateev
Browse files

[TASK] Add/fix demo mode checks

parent 4a14b081
No related branches found
No related tags found
1 merge request!19Release 5.0.0
This commit is part of merge request !19. Comments created here will be created in the context of that merge request.
......@@ -36,6 +36,7 @@ use SGalinski\SgRoutes\Domain\Repository\LogRepository;
use SGalinski\SgRoutes\Domain\Repository\PageNotFoundHandlingRepository;
use SGalinski\SgRoutes\Domain\Repository\RoutehitRepository;
use SGalinski\SgRoutes\Domain\Repository\RouteRepository;
use SGalinski\SgRoutes\Service\LicenceCheckService;
use SGalinski\SgRoutes\Service\LicensingService;
use SGalinski\SgRoutes\Service\RoutingService;
use TYPO3\CMS\Backend\Clipboard\Clipboard;
......@@ -174,7 +175,6 @@ class RouteController extends ActionController {
$this->command = GeneralUtility::_GP('cmd');
$this->clipboardCommandArray = GeneralUtility::_GP('CB');
$this->initClipboard();
$this->initDemoMode();
}
/**
......@@ -260,6 +260,8 @@ class RouteController extends ActionController {
FlashMessage::ERROR
);
}
$this->initDemoMode();
}
/**
......@@ -595,53 +597,90 @@ class RouteController extends ActionController {
return $taskExists;
}
/**
* Initializes the demo mode
*/
protected function initDemoMode() {
$typo3Version = VersionNumberUtility::convertVersionNumberToInteger(TYPO3_version);
$keyState = DemoModeService::checkKey();
$hasValidLicense = LicenceCheckService::hasValidLicense();
$isInDemoMode = DemoModeService::isInDemoMode();
if ($keyState !== DemoModeService::STATE_LICENSE_VALID && $isInDemoMode) {
if (!$hasValidLicense && $isInDemoMode) {
// - 1 because the flash message would show 00:00:00 instead of 23:59:59
$this->addFlashMessage(
LocalizationUtility::translate(
'backend.licenseKey.isInDemoMode.description', 'sg_cookie_optin', [
'backend.licenseKey.isInDemoMode.description', 'sg_routes', [
date('H:i:s', mktime(0, 0, DemoModeService::getRemainingTimeInDemoMode() - 1))
]
),
LocalizationUtility::translate('backend.licenseKey.isInDemoMode.header', 'sg_cookie_optin'),
LocalizationUtility::translate('backend.licenseKey.isInDemoMode.header', 'sg_routes'),
AbstractMessage::INFO
);
} elseif ($keyState === DemoModeService::STATE_LICENSE_INVALID) {
if ($typo3Version < 9000000) {
$description = LocalizationUtility::translate(
'backend.licenseKey.invalid.description', 'sg_cookie_optin'
'backend.licenseKey.invalid.description', 'sg_routes'
);
} else {
$description = LocalizationUtility::translate(
'backend.licenseKey.invalid.descriptionTYPO3-9', 'sg_cookie_optin'
'backend.licenseKey.invalid.descriptionTYPO3-9', 'sg_routes'
);
}
$this->addFlashMessage(
$description,
LocalizationUtility::translate('backend.licenseKey.invalid.header', 'sg_cookie_optin'),
LocalizationUtility::translate('backend.licenseKey.invalid.header', 'sg_routes'),
AbstractMessage::ERROR
);
} elseif ($keyState === DemoModeService::STATE_LICENSE_NOT_SET) {
if ($typo3Version < 9000000) {
$description = LocalizationUtility::translate(
'backend.licenseKey.notSet.description', 'sg_cookie_optin'
'backend.licenseKey.notSet.description', 'sg_routes'
);
} else {
$description = LocalizationUtility::translate(
'backend.licenseKey.notSet.descriptionTYPO3-9', 'sg_cookie_optin'
'backend.licenseKey.notSet.descriptionTYPO3-9', 'sg_routes'
);
}
$this->addFlashMessage(
$description,
LocalizationUtility::translate('backend.licenseKey.notSet.header', 'sg_cookie_optin'),
LocalizationUtility::translate('backend.licenseKey.notSet.header', 'sg_routes'),
AbstractMessage::WARNING
);
}
$this->view->assign('invalidKey', !$hasValidLicense);
$this->view->assign('showDemoButton', !$isInDemoMode && DemoModeService::isDemoModeAcceptable());
}
/**
* Add a flash message
*
* @param string $messageBody
* @param string $messageTitle
* @param int $severity
* @param bool $storeInSession
*/
public function addFlashMessage($messageBody, $messageTitle = '', $severity = AbstractMessage::OK, $storeInSession = true)
{
if (null === $this->controllerContext) {
$this->controllerContext = $this->buildControllerContext();
}
parent::addFlashMessage($messageBody, $messageTitle, $severity, $storeInSession);
}
/**
* Activates the demo mode for the given instance.
*
* @throws StopActionException
*/
public function activateDemoModeAction() {
if (DemoModeService::isInDemoMode() || !DemoModeService::isDemoModeAcceptable()) {
$this->redirect('list');
}
DemoModeService::activateDemoMode();
$this->redirect('list');
}
}
......@@ -32,6 +32,7 @@ use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use SGalinski\SgRoutes\Service\DemoModeService;
use SGalinski\SgRoutes\Service\LicenceCheckService;
use TYPO3\CMS\Core\Http\Response;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
......@@ -52,10 +53,7 @@ class FrontendLinkResolver implements MiddlewareInterface {
* request handler to do so.
*/
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface {
$keyState = DemoModeService::checkKey();
$isInDemoMode = DemoModeService::isInDemoMode();
if ($keyState !== DemoModeService::STATE_LICENSE_VALID && $isInDemoMode) {
if (!LicenceCheckService::hasValidLicense() && !DemoModeService::isInDemoMode()) {
return $handler->handle($request);
}
......
......@@ -33,6 +33,7 @@ use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use SGalinski\SgRoutes\Domain\Repository\RouteRepository;
use SGalinski\SgRoutes\Service\DemoModeService;
use SGalinski\SgRoutes\Service\LicenceCheckService;
use SGalinski\SgRoutes\Service\LicensingService;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
......@@ -83,10 +84,7 @@ class RedirectResolver implements MiddlewareInterface {
* @throws \TYPO3\CMS\Core\Error\Http\PageNotFoundException
*/
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface {
$keyState = DemoModeService::checkKey();
$isInDemoMode = DemoModeService::isInDemoMode();
if ($keyState !== DemoModeService::STATE_LICENSE_VALID && $isInDemoMode) {
if (!LicenceCheckService::hasValidLicense() && !DemoModeService::isInDemoMode()) {
return $handler->handle($request);
}
......
......@@ -35,6 +35,9 @@
<f:render section="iconButtons" />
</div>
</div>
<div class="module-docheader-bar-column-left">
<f:render partial="License" arguments="{_all}" />
</div>
<div class="module-docheader-bar-column-right">
<f:render partial="ButtonBar" arguments="{buttons:docHeader.buttons.right}" />
</div>
......
......@@ -357,6 +357,34 @@
<source><![CDATA[Missing license key]]></source>
<target><![CDATA[Fehlender Lizenzschlüssel]]></target>
</trans-unit>
<trans-unit id="backend.activateDemoMode" approved="yes">
<source><![CDATA[Activate Demo]]></source>
<target><![CDATA[Demo aktivieren]]></target>
</trans-unit>
<trans-unit id="backend.buyLicense" approved="yes">
<source><![CDATA[Buy license key]]></source>
<target><![CDATA[Lizenzschlüssel kaufen]]></target>
</trans-unit>
<trans-unit id="backend.buyLicense.url" approved="yes">
<source><![CDATA[https://www.sgalinski.de/en/typo3-products-web-development/seo-redirects/]]></source>
<target><![CDATA[https://www.sgalinski.de/typo3-produkte-webentwicklung/seo-redirects/]]></target>
</trans-unit>
<trans-unit id="backend.documentation" approved="yes">
<source><![CDATA[Documentation]]></source>
<target><![CDATA[Dokumentation]]></target>
</trans-unit>
<trans-unit id="backend.documentation.url" approved="yes">
<source><![CDATA[https://www.sgalinski.de/en/typo3-products-web-development/seo-redirects/#c5490]]></source>
<target><![CDATA[https://www.sgalinski.de/typo3-produkte-webentwicklung/seo-redirects/#c5490]]></target>
</trans-unit>
<trans-unit id="backend.productInformation" approved="yes">
<source><![CDATA[Product Information]]></source>
<target><![CDATA[Produkt-Informationen]]></target>
</trans-unit>
<trans-unit id="backend.productInformation.url" approved="yes">
<source><![CDATA[https://www.sgalinski.de/en/typo3-products-web-development/seo-redirects/]]></source>
<target><![CDATA[https://www.sgalinski.de/typo3-produkte-webentwicklung/seo-redirects/]]></target>
</trans-unit>
</body>
</file>
</xliff>
......@@ -260,6 +260,27 @@
<trans-unit id="backend.licenseKey.notSet.header" approved="yes">
<source><![CDATA[Missing license key]]></source>
</trans-unit>
<trans-unit id="backend.activateDemoMode" approved="yes">
<source><![CDATA[Activate Demo]]></source>
</trans-unit>
<trans-unit id="backend.buyLicense" approved="yes">
<source><![CDATA[Buy license key]]></source>
</trans-unit>
<trans-unit id="backend.buyLicense.url" approved="yes">
<source><![CDATA[https://www.sgalinski.de/en/typo3-products-web-development/seo-redirects/]]></source>
</trans-unit>
<trans-unit id="backend.documentation" approved="yes">
<source><![CDATA[Documentation]]></source>
</trans-unit>
<trans-unit id="backend.documentation.url" approved="yes">
<source><![CDATA[https://www.sgalinski.de/en/typo3-products-web-development/seo-redirects/#c5490]]></source>
</trans-unit>
<trans-unit id="backend.productInformation" approved="yes">
<source><![CDATA[Product Information]]></source>
</trans-unit>
<trans-unit id="backend.productInformation.url" approved="yes">
<source><![CDATA[https://www.sgalinski.de/en/typo3-products-web-development/seo-redirects/]]></source>
</trans-unit>
</body>
</file>
</xliff>
{namespace sg=SGalinski\SgRoutes\ViewHelpers}
<f:if condition="{invalidKey}">
<f:then>
<a href="{f:translate(key: 'backend.buyLicense.url')}" target="_bĺank" class="btn btn-default btn-sm btn-danger btn-sm">
<f:translate key="backend.buyLicense" />
</a>
<f:if condition="{showDemoButton}">
<f:link.action class="btn btn-default btn-sm btn-info" action="activateDemoMode">
<f:translate key="backend.activateDemoMode" />
</f:link.action>
</f:if>
</f:then>
<f:else>
<a href="{f:translate(key: 'backend.productInformation.url')}" target="_bĺank" class="btn btn-default btn-sm">
<f:translate key="backend.productInformation" />
</a>
</f:else>
</f:if>
<a href="{f:translate(key: 'backend.documentation.url')}" target="_blank" class="btn btn-default btn-sm">
<f:translate key="backend.documentation" />
</a>
......@@ -43,7 +43,7 @@ call_user_func(
'Route',
'',
[
'Route' => 'list, update, create, delete, deleteAll, htaccess, log, pageNotFoundHandling, export, resetHits',
'Route' => 'list, activateDemoMode, update, create, delete, deleteAll, htaccess, log, pageNotFoundHandling, export, resetHits',
],
[
'access' => 'user,group',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment