Compare commits

..

5 Commits

49 changed files with 415 additions and 1163 deletions

View File

@ -95,10 +95,10 @@ class AbstractCommandController extends Commands
ObjectManager::class
);
$this->initFrontendController();
$this->configurationManager = $this->objectManager->get(
$this->configurationManager = GeneralUtility::makeInstance(
ConfigurationManagerInterface::class
);
$this->apiUtility = $this->objectManager->get(
$this->apiUtility = GeneralUtility::makeInstance(
\Cjel\TemplatesAide\Utility\ApiUtility::class
);
$this->configurationManager->setConfiguration(array());
@ -115,7 +115,7 @@ class AbstractCommandController extends Commands
$frameworkConfiguration['persistence']['storagePid']
)
);
$this->logManager = $this->objectManager->get(
$this->logManager = GeneralUtility::makeInstance(
LogManager::Class
);
$this->importLogger = $this->logManager->getLogger(
@ -130,7 +130,7 @@ class AbstractCommandController extends Commands
get_class($this)
);
foreach ($classInfo->getInjectMethods() as $method => $className) {
$class = $this->objectManager->get(
$class = GeneralUtility::makeInstance(
$className
);
$this->{$method}($class);

View File

@ -17,19 +17,11 @@ use Cjel\TemplatesAide\Traits\ValidationTrait;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use TYPO3\CMS\Core\Cache\CacheManager;
use TYPO3\CMS\Core\Context\Context;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DefaultRestrictionContainer;
use TYPO3\CMS\Core\Http\Response;
use TYPO3\CMS\Core\Http\ServerRequestFactory;
use TYPO3\CMS\Core\Localization\LanguageService;
use TYPO3\CMS\Core\Localization\LanguageServiceFactory;
use TYPO3\CMS\Core\Log\LogManager;
use TYPO3\CMS\Core\Routing\SiteMatcher;
use TYPO3\CMS\Core\Site\SiteFinder;
use TYPO3\CMS\Core\TypoScript\TemplateService;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Utility\RootlineUtility;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
use TYPO3\CMS\Extbase\Object\ObjectManager;
use TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper;
@ -39,6 +31,13 @@ use TYPO3\CMS\Extbase\Reflection\ReflectionService;
use TYPO3\CMS\Frontend\Plugin\AbstractPlugin;
use TYPO3\CMS\Frontend\Utility\EidUtility;
use TYPO3\CMS\Core\Context\Context;
use TYPO3\CMS\Core\Http\ResponseFactory;
use TYPO3\CMS\Core\Routing\PageArguments;
use TYPO3\CMS\Core\Site\SiteFinder;
use TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication;
use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
/**
* AbstractEIDController
*/
@ -128,10 +127,10 @@ class AbstractEIDController
ObjectManager::class
);
$this->initFrontendController();
$this->configurationManager = $this->objectManager->get(
$this->configurationManager = GeneralUtility::makeInstance(
ConfigurationManagerInterface::class
);
$this->apiUtility = $this->objectManager->get(
$this->apiUtility = GeneralUtility::makeInstance(
\Cjel\TemplatesAide\Utility\ApiUtility::class
);
$frameworkConfiguration = $this->configurationManager->getConfiguration(
@ -150,23 +149,15 @@ class AbstractEIDController
$frameworkConfiguration['persistence']['storagePid']
)
);
$this->logManager = $this->objectManager->get(
$this->logManager = GeneralUtility::makeInstance(
LogManager::Class
);
$this->importLogger = $this->logManager->getLogger(
'importLogger'
);
if (version_compare(TYPO3_branch, '10.0', '>=')) {
$this->reflectionService = GeneralUtility::makeInstance(
ReflectionService::class
);
} else {
$this->reflectionService = GeneralUtility::makeInstance(
ReflectionService::class, GeneralUtility::makeInstance(
CacheManager::class
)
);
}
$classInfo = $this->reflectionService->getClassSchema(
get_class($this)
);
@ -176,7 +167,7 @@ class AbstractEIDController
->getFirstParameter()
->getDependency();
}
$class = $this->objectManager->get(
$class = GeneralUtility::makeInstance(
$className
);
$this->{$method}($class);
@ -188,37 +179,77 @@ class AbstractEIDController
*/
private function initFrontendController()
{
$request = ServerRequestFactory::fromGlobals();
$currentDomain = strtok(GeneralUtility::getIndpEnv('HTTP_HOST'), ':');
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
->getQueryBuilderForTable('sys_domain');
$queryBuilder->setRestrictions(
GeneralUtility::makeInstance(DefaultRestrictionContainer::class)
);
$result = $queryBuilder
->select('uid', 'pid', 'domainName')
->from('sys_domain')
->where(
$queryBuilder->expr()->eq(
'domainName',
$queryBuilder->createNamedParameter(
$currentDomain,
\PDO::PARAM_STR
)
)
)
->orderBy('sorting', 'ASC')
->execute()
->fetchAll();
//if (count($result) < 1) {
// throw new \Exception('Domain not configured');
//}
$context = GeneralUtility::makeInstance(Context::class);
$siteFinder = GeneralUtility::makeInstance(SiteFinder::class);
$siteMatcher = GeneralUtility::makeInstance(SiteMatcher::class);
$site = $siteMatcher->matchRequest($request);
$pageId = $site->getSite()->getRootPageId();
$template = GeneralUtility::makeInstance(TemplateService::class);
$template->tt_track = false;
$rootline = GeneralUtility::makeInstance(
RootlineUtility::class, $pageId
)->get();
$template->runThroughTemplates($rootline, 0);
$template->generateConfig();
$setup = $template->setup;
$setup = GeneralUtility::removeDotsFromTS($setup);
$extKey = 'tx_' . $this->getExtensionKey();
if (array_key_exists('plugin', $setup)
&& array_key_exists($extKey, $setup['plugin'])
&& array_key_exists('persistence', $setup['plugin'][$extKey])
&& array_key_exists('storagePid', $setup['plugin'][$extKey]['persistence'])
) {
$storagePids = $setup['plugin'][$extKey]['persistence']['storagePid'];
$this->storagePids = GeneralUtility::trimExplode(
',',
$storagePids
$site = $siteFinder->getSiteByPageId(1049);
$siteLanguage = reset($site->getLanguages());
$pageArguments = GeneralUtility::makeInstance(
PageArguments::class,
1049,
'0',
[]
);
}
$languageServiceFactory = GeneralUtility::makeInstance(
LanguageServiceFactory::class
$frontendUser = GeneralUtility::makeInstance(
FrontendUserAuthentication::class
);
$GLOBALS['LANG'] = $languageServiceFactory->create('default');
$frontendController = GeneralUtility::makeInstance(
TypoScriptFrontendController::class,
$context,
$site,
$siteLanguage,
$pageArguments,
$frontendUser
);
//die;
$GLOBALS['LANG'] = GeneralUtility::makeInstance(LanguageService::class);
$GLOBALS['LANG']->init('default');
$GLOBALS['TSFE'] = $frontendController;
//$frontendController->connectToDB();
//$frontendController->fe_user = EidUtility::initFeUser();
//$frontendController->id = 1049;
$frontendController->determineId();
//$frontendController->initTemplate();
$frontendController->getConfigArray();
//EidUtility::initTCA();
}
/**
@ -235,6 +266,12 @@ class AbstractEIDController
ServerRequestInterface $request,
ResponseInterface $response = null
) {
if (!$response) {
$responseFactory = GeneralUtility::makeInstance(
ResponseFactory::class
);
$response = $responseFactory->createResponse();
}
$apiObject = explode('/', $request->getUri()->getPath())[3];
$apiObjectId = explode('/', $request->getUri()->getPath())[4];
if (!$apiObject) {
@ -280,7 +317,6 @@ class AbstractEIDController
. 'Request';
}
}
$response = new Response();
if (method_exists($this, $requestMethod)) {
$responseData = $this->$requestMethod($request, $response);
$response = $response->withHeader(
@ -316,7 +352,7 @@ class AbstractEIDController
*/
public function persistAll()
{
($this->objectManager->get(
(GeneralUtility::makeInstance(
PersistenceManager::class
))->persistAll();
}

View File

@ -27,9 +27,8 @@ use TYPO3\CMS\Extbase\Property\PropertyMappingConfigurationBuilder;
use TYPO3\CMS\Extbase\Service\EnvironmentService;
use TYPO3\CMS\Extbase\Service\ExtensionService;
use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
use Blueways\BwCaptcha\Validation\Validator\CaptchaValidator;
use TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication;
use Psr\Http\Message\ResponseInterface;
use TYPO3\CMS\Core\Http\RequestFactory;
class ActionController extends BaseController
{
@ -123,10 +122,7 @@ class ActionController extends BaseController
*/
protected $ajaxEnv = [];
/**
* @var \TYPO3\CMS\Extbase\Service\ExtensionService
*/
protected $extensionService;
/**
* uribuilder
@ -139,17 +135,14 @@ class ActionController extends BaseController
protected $config = [];
/**
* propertyMappginConfigrtationBuolder
* ExtensionService
*
* @var ExtensionService
*/
protected $propertyMapperConfigurationBuilder;
protected $extensionService;
/**
* translation extensions
*/
protected $translations = [];
/**
* @param \TYPO3\CMS\Extbase\Service\ExtensionService $extensionService
* @param
*/
public function injectExtensionService(ExtensionService $extensionService)
{
@ -172,6 +165,23 @@ class ActionController extends BaseController
$this->environmentService = $environmentService;
}
// /**
// * propertyMapper
// *
// * @var PropertyMapper
// */
// protected $propertyMapper;
// /**
// * @param
// */
// public function injectPropertyMapper(
// PropertyMapper $propertyMapper
// ):void {
// // \TYPO3\CMS\Core\Utility\DebugUtility::debug($propertyMapper);die;
// $this->propertyMapper = $propertyMapper;
// }
/**
* propertyMappingConfigurationBuilder
*
@ -212,6 +222,7 @@ class ActionController extends BaseController
*/
public function initializeAction()
{
if ($GLOBALS['TSFE']->config['config']) {
$this->config = GeneralUtility::removeDotsFromTS(
$GLOBALS['TSFE']->config['config']
@ -228,13 +239,13 @@ class ActionController extends BaseController
}
$this->contentObjectUid =
$this->configurationManager->getContentObject()->data['uid'];
$this->cacheManager = $this->objectManager->get(
$this->cacheManager = GeneralUtility::makeInstance(
CacheManager::class
);
//$this->cache = $this->cacheManager->getCache(
// 'tobereplaced' //TODO: Replaceme
//);
$this->logManager = $this->objectManager->get(
$this->logManager = GeneralUtility::makeInstance(
LogManager::Class
);
$this->importLogger = $this->logManager->getLogger(
@ -243,7 +254,7 @@ class ActionController extends BaseController
$this->generalLogger = $this->logManager->getLogger(
__CLASS__
);
$this->dataMapper = $this->objectManager->get(
$this->dataMapper = GeneralUtility::makeInstance(
DataMapper::Class
);
$this->arguments->addNewArgument('step', 'string', false, false);
@ -255,7 +266,7 @@ class ActionController extends BaseController
*/
public function getUriBuilder()
{
return $this->objectManager->get(
return GeneralUtility::makeInstance(
UriBuilder::class
);
}
@ -265,7 +276,7 @@ class ActionController extends BaseController
*/
public function persistAll()
{
($this->objectManager->get(
(GeneralUtility::makeInstance(
PersistenceManager::class
))->persistAll();
}
@ -441,21 +452,7 @@ class ActionController extends BaseController
$schema
);
if (!$validationResult->isValid()) {
//foreach ($validationResult->getErrors() as $error){
// $field = implode('.', $error->dataPointer());
// if ($error->keyword() == 'required') {
// $tmp = $error->dataPointer();
// array_push($tmp, $error->keywordArgs()['missing']);
// $field = implode('.', $tmp);
// }
// if ($error->keyword() == 'additionalProperties') {
// continue;
// }
// $this->errors[$field] = [
// 'keyword' => $error->keyword(),
// 'details' => $error->keywordArgs()
// ];
//}
if ($translate) {
$this->translateErrorMessages($validationResult);
}
@ -586,7 +583,7 @@ class ActionController extends BaseController
if (in_array($argument->getName(), ['step', 'submit', $object])) {
continue;
}
if (is_string($argument->getValue()) && method_exists($argument->getValue(), 'getUid')) {
if (method_exists($argument->getValue(), 'getUid')) {
$pluginArguments[$argument->getName()]
= $argument->getValue()->getUid();
} else {
@ -607,24 +604,8 @@ class ActionController extends BaseController
$this->request->getControllerActionName(),
$pluginArguments
);
$uriTranslation = $this->getControllerContext()
->getUriBuilder()
->reset()
->setCreateAbsoluteUri(true)
->setAddQueryString(true)
->setTargetPageType(6001)
->uriFor(
'translations',
[
'extensions' => $this->translations,
],
'Translation',
'TemplatesAide',
'Translationplugin'
);
$this->ajaxEnv = [
'uri' => $uri,
'uriTranslation' => $uriTranslation,
'object' => $object,
'namespace' => $this->getPluginNamespace(),
];
@ -672,6 +653,7 @@ class ActionController extends BaseController
*/
public function initializePropertyMappingConfigurationFromRequest(\TYPO3\CMS\Extbase\Mvc\Request $request, $propertyMappingConfiguration, $propertyNameTest)
{
$trustedPropertiesToken = $request->getInternalArgument('__trustedProperties');
if (!is_string($trustedPropertiesToken)) {
return;
@ -684,14 +666,10 @@ class ActionController extends BaseController
}
$trustedProperties = unserialize($serializedTrustedProperties, ['allowed_classes' => false]);
foreach ($trustedProperties as $propertyName => $propertyConfiguration) {
//if (!$controllerArguments->hasArgument($propertyName)) {
// continue;
//}
if ($propertyName != $propertyNameTest) {
continue;
}
//$propertyMappingConfiguration = $controllerArguments->getArgument($propertyName)->getPropertyMappingConfiguration();
$this->modifyPropertyMappingConfiguration($propertyConfiguration, $propertyMappingConfiguration);
}
}
@ -738,6 +716,7 @@ class ActionController extends BaseController
$errorStatus = null,
$object = 'data'
) {
$this->setAjaxEnv($object);
if ($result == null) {
$result = [];
@ -747,6 +726,7 @@ class ActionController extends BaseController
$result,
['errors' => $this->errors]
);
}
if (!empty($this->errorLabels)) {
$result = array_merge(
@ -761,38 +741,23 @@ class ActionController extends BaseController
);
}
if ($this->pageType) {
$requestFactory = GeneralUtility::makeInstance(RequestFactory::class);
if (is_array($this->responseStatus)) {
if (version_compare(TYPO3_branch, '10.0', '>=')) {
$response = $this
->responseFactory
// $this->response->setStatus(
// array_key_first($this->responseStatus)
// );
$response = $this->responseFactory
->createResponse()
->withHeader(
'Content-Type',
'application/json; charset=utf-8'
)
->withStatus(
array_key_first($this->responseStatus),
''
);
->withHeader('Content-Type', 'application/json; charset=utf-8')
->withStatus(array_key_first($this->responseStatus), '');
} else {
$this->response->setStatus(
array_key_first($this->responseStatus)
);
}
} else {
if (version_compare(TYPO3_branch, '10.0', '>=')) {
$response = $this
->responseFactory
//$this->response->setStatus($this->responseStatus);
$response = $this->responseFactory
->createResponse()
->withHeader(
'Content-Type',
'application/json; charset=utf-8'
)
->withHeader('Content-Type', 'application/json; charset=utf-8')
->withStatus($this->responseStatus, '');
} else {
$this->response->setStatus($this->responseStatus);
}
}
if ($this->pageType == $this->ajaxPageType) {
if ($this->environmentService->isEnvironmentInBackendMode()) {
header('Content-Type: application/json');
@ -807,12 +772,13 @@ class ActionController extends BaseController
if ($this->reload) {
$result['reload'] = true;
}
if (version_compare(TYPO3_branch, '10.0', '>=')) {
//\TYPO3\CMS\Core\Utility\DebugUtility::debug($result);die;
//return json_encode($result);
$response->getBody()->write(json_encode($result));
return $response;
} else {
return json_encode($result);
}
}
$result = array_merge(
$result,
@ -826,54 +792,13 @@ class ActionController extends BaseController
['ajaxEnv' => $this->ajaxEnv]
);
}
$this->view->assignMultiple($result);
if (version_compare(TYPO3_branch, '10.0', '>=')) {
return $this
->responseFactory
return $this->responseFactory
->createResponse()
->withHeader('Content-Type', 'text/html; charset=utf-8')
->withBody($this->streamFactory->createStream(
(string)($html ?? $this->view->render()))
);
}
}
/** **/
protected function valideCaptcha($captchaId, $value
) {
$captchaPhrases = $this->getFeUser()->getKey('ses', 'captchaPhrases');
if (!$captchaPhrases || !is_array($captchaPhrases) || !is_string($value)) {
$this->addValidationError(
'captcha',
'validator.notvalid'
);
}
// get captcha secret from cache and compare
$time = time();
$captchaPhrases = array_filter(
$captchaPhrases,
function ($captchaLifetime) use ($time) {
return $captchaLifetime > $time;
},
ARRAY_FILTER_USE_KEY
);
foreach ($captchaPhrases as $lifetime => $captchaPhrase) {
$isValid = !empty($captchaPhrase) && $captchaPhrase === $value;
if ($isValid) {
// remove solved captcha
unset($captchaPhrases[$lifetime]);
$this->getFeUser()->setKey('ses', 'captchaPhrases', $captchaPhrases);
$this->getFeUser()->storeSessionData();
return true;
}
}
$this->addValidationError(
'captcha',
'validator.notvalid'
);
}
protected function getFeUser(): FrontendUserAuthentication
{
return $GLOBALS['TSFE']->fe_user;
->withStatus(200, 'Super ok!')
->withBody($this->streamFactory->createStream($this->view->render()));
}
}

View File

@ -45,9 +45,6 @@ class EIDController extends AbstractEIDController
ResponseInterface $response = null
) {
$GLOBALS['TSFE']->fe_user->setKey('ses', 'scriptstate', 0);
//\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump(
// $GLOBALS['TSFE']->fe_user->getKey('ses', 'scriptstate')
//);
$GLOBALS["TSFE"]->storeSessionData();
$response->getBody()->write(\json_encode([]));
return $response;

View File

@ -1,66 +0,0 @@
<?php
namespace Cjel\TemplatesAide\Controller;
/***
*
* This file is part of the "Templates Aide" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2024 Philipp Dieter <philippdieter@attic-media.net>
*
***/
use TYPO3\CMS\Core\Localization\LocalizationFactory;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/**
* TranslationController
*/
class TranslationController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
{
protected static $locallangPath = 'Resources/Private/Language/';
/**
* action translations
*
* @param array $extensions
* @return void
*/
public function translationsAction($extensions = [])
{
$result = [];
foreach ($extensions as $extension) {
$langfilePath = 'EXT:'
. GeneralUtility::camelCaseToLowerCaseUnderscored($extension)
. '/'
. self::$locallangPath
. 'locallang.xlf';
$languageFactory = GeneralUtility::makeInstance(
LocalizationFactory::class
);
if (version_compare(TYPO3_branch, '10.0', '>=')) {
$language = $this->request->getAttribute('language');
} else {
$language = $GLOBALS['TYPO3_REQUEST']->getAttribute('language');
}
$locale = $language->getLocale();
//\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump(
// $locale, '$locale', 3, true, false
//);
$langfileContent = $languageFactory->getParsedData(
$langfilePath,
$locale
);
$langfileResult = [];
foreach (reset($langfileContent) as $key => $row) {
$langfileResult[$key] = reset($row)['target'];
}
$result[$extension] = $langfileResult;
}
$GLOBALS['TSFE']->setContentType('application/json');
return json_encode($result);
}
}

View File

@ -1,20 +0,0 @@
<?php
namespace Cjel\TemplatesAide\Domain\Model;
/***
*
* This file is part of the "Templates Aide" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2024 Philipp Dieter <philippdieter@attic-media.net>
*
***/
/**
* Translation
*/
class Translation extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
}

View File

@ -11,17 +11,7 @@ namespace Cjel\TemplatesAide\Hooks;
* (c) 2018 Philipp Dieter <philippdieter@attic-media.net>
*
***/
//use GridElementsTeam\Gridelements\Backend\LayoutSetup;
//use TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController;
//use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Backend\Wizard\NewContentElementWizardHookInterface;
//use TYPO3\CMS\Core\Imaging\IconProvider\BitmapIconProvider;
//use TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider;
//use TYPO3\CMS\Core\Imaging\IconRegistry;
//use TYPO3\CMS\Core\Utility\GeneralUtility;
//use TYPO3\CMS\Core\Utility\StringUtility;
//use TYPO3\CMS\Lang\LanguageService;
/**
* Class/Function which manipulates the rendering of items within the new content element wizard

View File

@ -75,14 +75,6 @@ class Double2Converter extends AbstractTypeConverter
$value *= -1;
}
$value = number_format($value, 2, '.', '');
//\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump(
// $source, null, 3
//);
//if (is_string($source)) {
// if ($source === '') {
// $source = [];
// }
//}
return $value;
}
}

View File

@ -80,10 +80,10 @@ trait DependencyInjectionTrait
$this->objectManager = GeneralUtility::makeInstance(
ObjectManager::class
);
$this->configurationManager = $this->objectManager->get(
$this->configurationManager = GeneralUtility::makeInstance(
ConfigurationManagerInterface::class
);
$this->apiUtility = $this->objectManager->get(
$this->apiUtility = GeneralUtility::makeInstance(
ApiUtility::class
);
$frameworkConfiguration = $this->configurationManager->getConfiguration(
@ -102,17 +102,7 @@ trait DependencyInjectionTrait
$frameworkConfiguration['persistence']['storagePid']
)
);
if (version_compare(TYPO3_branch, '10.0', '>=')) {
$this->reflectionService = GeneralUtility::makeInstance(
ReflectionService::class
);
} else {
$this->reflectionService = GeneralUtility::makeInstance(
ReflectionService::class, GeneralUtility::makeInstance(
CacheManager::class
)
);
}
$this->reflectionService = GeneralUtility::makeInstance(ReflectionService::class);
$classInfo = $this->reflectionService->getClassSchema(
get_class($this)
);

View File

@ -127,22 +127,12 @@ trait ValidationTrait
if (is_array($input) && array_key_exists('eID', $input)) {
unset($input['eID']);
}
//@TODO make optional when usiing rest api
//array_walk_recursive(
// $input,
// function (&$value) {
// if (filter_var($value, FILTER_VALIDATE_INT)) {
// $value = (int)$value;
// }
// }
//);
$input = ArrayUtility::toObject($input);
$validationResult = $validator->dataValidation(
$input,
json_encode($schema),
-1
);
if (!$validationResult->isValid()) {
$this->isValid = false;
$this->responseStatus = [400 => 'validationError'];

View File

@ -12,12 +12,10 @@ namespace Cjel\TemplatesAide\Utility;
*
***/
use TYPO3\CMS\Core\Resource\Exception\FolderDoesNotExistException;
use TYPO3\CMS\Core\Resource\FileReference as CoreFileReference;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Domain\Model\FileReference as ExtbaseFileReference;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Object\ObjectManager;
use TYPO3\CMS\Extbase\Persistence\Generic\LazyLoadingProxy;
use TYPO3\CMS\Extbase\Persistence\Generic\LazyObjectStorage;
use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
use TYPO3\CMS\Extbase\Service\ImageService;
@ -49,7 +47,7 @@ class ApiUtility
$this->objectManager = GeneralUtility::makeInstance(
ObjectManager::class
);
$this->imageService = $this->objectManager->get(
$this->imageService = GeneralUtility::makeInstance(
imageService::class
);
if (1 == 0) {
@ -77,11 +75,6 @@ class ApiUtility
if (substr($method, 0, 3) === 'get') {
$methodResult = call_user_func([$row, $method]);
$attributeName = lcfirst(substr($method, 3));
if (is_object($methodResult)
&& get_class($methodResult) == LazyLoadingProxy::class
) {
$methodResult = $methodResult->_loadRealInstance();
}
$propertieResults[$attributeName] = $methodResult;
}
}
@ -178,6 +171,12 @@ class ApiUtility
) {
$rowResult[$attributeName] = [];
foreach ($methodResult as $object) {
if (!method_exists(
$methodResult,
'getOriginalResource'
)) {
continue;
}
$rowResult[$attributeName]
= $this->filereferenceToApi(
$methodResult->getOriginalResource()
@ -227,7 +226,7 @@ class ApiUtility
$this->objectManager = GeneralUtility::makeInstance(
ObjectManager::class
);
$this->imageService = $this->objectManager->get(
$this->imageService = GeneralUtility::makeInstance(
imageService::class
);
$httpHost = GeneralUtility::getIndpEnv('HTTP_HOST');
@ -236,23 +235,14 @@ class ApiUtility
$absoluteUrl = $requestHost
. '/'
. $publicUrl;
try {
$imagePreview = $this->imageService->getImage(
$publicUrl,
null,
0
);
} catch (FolderDoesNotExistException $e) {
return [];
}
$processingInstructionsPreview = array(
//'width' => '1024c',
//'height' => '768c',
//'minWidth' => $minWidth,
//'minHeight' => $minHeight,
'maxWidth' => '1024',
'maxHeight' => '768',
//'crop' => $crop,
);
$processedImagePreview = $this->imageService
->applyProcessingInstructions(

View File

@ -67,20 +67,4 @@ class ArrayUtility
return array_keys($arr) !== range(0, count($arr) - 1);
}
/**
* Returns the depth of an array
*/
function depth(array $array) {
$depthMax = 1;
foreach ($array as $value) {
if (is_array($value)) {
$depth = self::depth($value) + 1;
if ($depth > $depthMax) {
$depthMax = $depth;
}
}
}
return $depthMax;
}
}

View File

@ -21,7 +21,7 @@ use TYPO3\CMS\Fluid\View\StandaloneView;
use TYPO3\CMS\Fluid\View\TemplatePaths;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
use Symfony\Component\Mime\Address;
use TYPO3\CMS\Frontend\Page\PageRepository;
/**
*
*/
@ -80,10 +80,6 @@ class MailUtility
$type = 'tableLayout';
$textPart = substr($textPart, 3);
}
if (substr($textPart, 0, 3) === '---') {
$type = 'divider';
$textPart = substr($textPart, 3);
}
if (substr($textPart, 0, 9) === '%subject ') {
$type = 'subject';
$textPart = substr($textPart, 9);
@ -181,7 +177,7 @@ class MailUtility
$templateNameText = 'Mails/DefaultText';
}
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
$configurationManager = $objectManager->get(
$configurationManager = GeneralUtility::makeInstance(
ConfigurationManagerInterface::class
);
$typoScript = $configurationManager->getConfiguration(
@ -190,9 +186,9 @@ class MailUtility
$settings =
(array)$typoScript['module.']['tx_templatesaide.']['settings.'];
$settings = GeneralUtility::removeDotsFromTS($settings);
$htmlView = $objectManager->get(StandaloneView::class);
$htmlView = GeneralUtility::makeInstance(StandaloneView::class);
$htmlView->setTemplate($templateNameHtml);
$textView = $objectManager->get(StandaloneView::class);
$textView = GeneralUtility::makeInstance(StandaloneView::class);
if ($templatePaths) {
$partialRootPaths = $htmlView->getPartialRootPaths();
$partialRootPaths[] = GeneralUtility::getFileAbsFileName(
@ -221,11 +217,15 @@ class MailUtility
$textView->setTemplate($templateNameText);
$mail = GeneralUtility::makeInstance(MailMessage::class);
if (version_compare(TYPO3_branch, '10.0', '>=')) {
$mail->from(new Address(key($sender),$sender[key($sender)]));
$mail->subject($subject);
if ($sender) {
$mail->from($sender);
}
} else {
$mail->setFrom($sender);
$mail->setSubject($subject);
if ($sender) {
$mail->setFrom($sender);
}
}
$bodydataText = [];
$bodydataHtml = [];
@ -233,7 +233,6 @@ class MailUtility
switch($row['type']) {
case 'text':
case 'table':
case 'tablelr':
case 'tableLayout':
case 'list':
case 'textbold':
@ -244,8 +243,6 @@ class MailUtility
case 'buttonleft':
case 'buttoncenter':
case 'buttonright':
case 'divider':
case 'hr':
$row['data'] = str_replace(
"\\\n",
'',
@ -321,10 +318,6 @@ class MailUtility
$bodydataText[] = $textRow;
$bodydataHtml[] = $htmlRow;
break;
case 'contentBlockHtml':
$htmlRow = $row;
$bodydataHtml[] = $htmlRow;
break;
case 'attachment':
if (version_compare(TYPO3_branch, '10.0', '>=')) {
$mail->attach(
@ -332,7 +325,7 @@ class MailUtility
$row['data'][1],
$row['data'][2]
);
} else {
}else {
$mail->attach(new \Swift_Attachment(
$row['data'][0],
$row['data'][1],
@ -352,7 +345,7 @@ class MailUtility
'attachment.' . $fileextension,
$mimetype
);
} else {
}else {
$mail->attach(new \Swift_Attachment(
base64_decode($attachmentdata[1]),
'attachment.' . $fileextension,
@ -368,17 +361,7 @@ class MailUtility
if ($assetDomain) {
$domain = $assetDomain;
}
$dataProtectionPid = $settings['dataProtectionPid'];
$uriBuilder = $objectManager->get(
UriBuilder::class
);
if ($dataProtectionPid) {
$pageRepository = GeneralUtility::makeInstance(PageRepository::class);
$urlPage = $pageRepository->getPage($settings['dataProtectionPid']);
$dataProtectionPid = $domain.$urlPage['slug'];
}
$htmlView->assign('domain', $domain);
$htmlView->assign('linkDataprotection', $dataProtectionPid);
$textBody = $textView->render();
$htmlBody = $htmlView->render();
if ($domain) {
@ -412,17 +395,19 @@ class MailUtility
);
foreach ($recipientsIntercecpted as $recipientIntercepted) {
foreach ($recipients as $recipient) {
if (version_compare(TYPO3_branch, '10.0', '>=')) {
$mail->subject(
$subjectOrig . ' [ORIG-TO: ' . trim($recipient) . ']'
);
$mail->to(new Address(trim($recipientIntercepted)));
} else {
}else {
$mail->setSubject(
$subjectOrig . ' [ORIG-TO: ' . trim($recipient) . ']'
);
$mail->setTo(trim($recipientIntercepted));
}
$mail->send();
}
}
@ -430,30 +415,12 @@ class MailUtility
foreach ($recipients as $recipient) {
if (version_compare(TYPO3_branch, '10.0', '>=')) {
$mail->to(new Address(trim($recipient)));
} else {
}else {
$mail->setTo(trim($recipient));
}
$mail->send();
}
}
}
/**
* Debug print
*/
public static function printMaildata($maildata)
{
foreach ($maildata as $row) {
if (!is_array($row['data'])) {
print($row['data']);
} else {
print($row['data'][0]);
print(PHP_EOL);
print($row['data'][1]);
}
print(PHP_EOL);
}
print(PHP_EOL);
}
}

View File

@ -0,0 +1,43 @@
<?php
namespace Cjel\TemplatesAide\Utility;
/***
*
* This file is part of the "Templates Aide" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* filey as part of the extension by 2024 Philipp Dieter <philipp.dieter@attic-media.net>
*
***/
/**
*
*/
class SessionUtility
{
/**
*
*/
public static function setSessionValue(
$type, $key, $value
) {
$request = $GLOBALS['TYPO3_REQUEST'];
$frontendUser = $request->getAttribute('frontend.user');
$frontendUser->setKey($type, $key, $value);
$frontendUser->storeSessionData();
}
/**
*
*/
public static function getSessionValue(
$type, $key
) {
$request = $GLOBALS['TYPO3_REQUEST'];
$frontendUser = $request->getAttribute('frontend.user');
return $frontendUser->getKey($type, $key);
}
}

View File

@ -45,7 +45,7 @@ class StringUtility
return $string;
}
public static function getRandomString(
function getRandomString(
int $length = 64,
string $keyspace = null
): string {

View File

@ -29,6 +29,7 @@ class TcaUtility
public static function configureSelect(
&$tca, $column, $element, $options, $extensionKey = null
) {
foreach ($options as &$option) {
$translationKey = "option.$element.$column.$option[0]";
$translation = self::getTranslation(
@ -142,26 +143,6 @@ class TcaUtility
return implode(', ', $fieldlist);
}
/**
* @return string
*/
public static function listMoveFieldBeforeField(
$fieldlist, $field, $fieldBefore
) {
$fieldlist = GeneralUtility::trimExplode(
',',
$fieldlist
);
unset($fieldlist[(array_search($field, $fieldlist))]);
array_splice(
$fieldlist,
array_search($fieldBefore, $fieldlist),
0,
$field
);
return implode(', ', $fieldlist);
}
/**
* remove element from fieldlist
*

View File

@ -60,10 +60,6 @@ class WordWrapViewHelper extends AbstractViewHelper
continue;
}
$temp = '';
//while (mb_strlen($line) > $limit) {
// $temp .= mb_substr($line, 0, $limit - 1);
// $line = mb_substr($line, $limit - 1);
//}
if (false === empty($temp)) {
$output .= $temp . $glue . $line . $glue;
} else {

View File

@ -1,7 +1,8 @@
<?php
namespace Cjel\TemplatesAide\ViewHelpers;
use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class HeaderDataViewHelper extends AbstractViewHelper
@ -25,12 +26,7 @@ class HeaderDataViewHelper extends AbstractViewHelper
}
switch ($type){
case 'tracking':
//if(GeneralUtility::getApplicationContext()->isProduction()){
$GLOBALS['TSFE']->additionalHeaderData[] = $data;
//} else {
// $GLOBALS['TSFE']->additionalHeaderData[]
// = '<meta name="placeholder" content="tracking" />';
//}
break;
case 'title':
$GLOBALS['TSFE']->additionalHeaderData[]

View File

@ -60,14 +60,10 @@ class ImageAppendViewHelper extends AbstractTagBasedViewHelper
{
foreach ($this->arguments['images'] as $image) {
$imagePath = $image->getForLocalProcessing(false);
//$image = $this->imageService->getImage('', $imageArgument, true);
//$image = $this->imageService->getImageUri($image);
$imageMagickFile = ImageMagickFile::fromFilePath($imagePath, 0);
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump(
$imageMagickFile, null, 3
);
// \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump(
// $imageMagickFile, null, 3
// );

View File

@ -4,7 +4,8 @@ namespace Cjel\TemplatesAide\ViewHelpers;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
class ScriptswitchNoscriptViewHelper extends AbstractViewHelper {
@ -21,10 +22,6 @@ class ScriptswitchNoscriptViewHelper extends AbstractViewHelper {
public function render()
{
//\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump(
// $GLOBALS['TSFE']->fe_user->getKey('ses', 'scriptstate')
//);
$scriptstate = $GLOBALS['TSFE']->fe_user->getKey('ses', 'scriptstate');
if ($scriptstate) {

View File

@ -46,7 +46,7 @@ class TranslationViewHelper extends AbstractViewHelper
'array',
'The arguments',
false,
false
[]
);
}
@ -63,10 +63,12 @@ class TranslationViewHelper extends AbstractViewHelper
\Closure $renderChildrenClosure,
RenderingContextInterface $renderingContext
) {
$translation = LocalizationUtility::translate(
$arguments['key'],
$arguments['extensionKey'],
(array) $arguments['arguments']
$arguments['arguments']
);
if ($translation) {
return $translation;

View File

@ -1,28 +0,0 @@
<T3DataStructure>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>Function</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<switchableControllerActions>
<TCEforms>
<label>Select function</label>
<config>
<type>select</type>
<items>
<numIndex index="0">
<numIndex index="0">Translation</numIndex>
<numIndex index="1">Translation-&gt;translations</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</switchableControllerActions>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>

View File

@ -0,0 +1,10 @@
services:
_defaults:
autowire: true
autoconfigure: true
public: false
Cjel\TemplatesAide\:
resource: '../Classes/*'
exclude: '../Classes/Standalone/*'
Cjel\TemplatesAide\Utility\ApiUtility:
public: true

View File

@ -0,0 +1,8 @@
<?php
use \TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
ExtensionManagementUtility::registerPageTSConfigFile(
'templates_aide',
'Resources/Private/PageTSConfig/default.tsconfig',
'Default Config'
);

View File

@ -1,14 +0,0 @@
<?php
defined('TYPO3_MODE') || die();
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'TemplatesAide',
'Dummy',
'dummy'
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'TemplatesAide',
'Translationplugin',
'translation'
);

View File

@ -1,5 +1,5 @@
<?php
defined('TYPO3_MODE') || die('Access denied.');
defined('TYPO3') or die();
call_user_func(function() {
unset($GLOBALS['TCA']['tx_templatesaide_domain_model_dummy']);

View File

@ -8,7 +8,7 @@ return [
'cruser_id' => 'cruser_id',
'versioningWS' => true,
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'delete' => 'deleted',
'enablecolumns' => [
@ -23,14 +23,24 @@ return [
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, ',
],
'types' => [
'1' => ['showitem' => ', --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, sys_language_uid, l10n_parent, l10n_diffsource, --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, hidden, starttime, endtime'],
'1' => ['showitem' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, , --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime'],
],
'columns' => [
'sys_language_uid' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'language',
'type' => 'select',
'renderType' => 'selectSingle',
'special' => 'languages',
'items' => [
[
'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages',
-1,
'flags-multiple'
]
],
'default' => 0,
],
],
'l10n_parent' => [

View File

@ -1,110 +0,0 @@
<?php
return [
'ctrl' => [
'title' => 'LLL:EXT:templates_aide/Resources/Private/Language/locallang_db.xlf:tx_templatesaide_domain_model_translation',
'label' => 'uid',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'versioningWS' => true,
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'delete' => 'deleted',
'enablecolumns' => [
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
],
'searchFields' => '',
'iconfile' => 'EXT:templates_aide/Resources/Public/Icons/tx_templatesaide_domain_model_translation.gif'
],
'interface' => [
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, ',
],
'types' => [
'1' => ['showitem' => ', --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, sys_language_uid, l10n_parent, l10n_diffsource, --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, hidden, starttime, endtime'],
],
'columns' => [
'sys_language_uid' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'language',
],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'default' => 0,
'items' => [
['', 0],
],
'foreign_table' => 'tx_templatesaide_domain_model_translation',
'foreign_table_where' => 'AND {#tx_templatesaide_domain_model_translation}.{#pid}=###CURRENT_PID### AND {#tx_templatesaide_domain_model_translation}.{#sys_language_uid} IN (-1,0)',
],
],
'l10n_diffsource' => [
'config' => [
'type' => 'passthrough',
],
],
't3ver_label' => [
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.versionLabel',
'config' => [
'type' => 'input',
'size' => 30,
'max' => 255,
],
],
'hidden' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.visible',
'config' => [
'type' => 'check',
'renderType' => 'checkboxToggle',
'items' => [
[
0 => '',
1 => '',
'invertStateDisplay' => true
]
],
],
],
'starttime' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
'config' => [
'type' => 'input',
'renderType' => 'inputDateTime',
'eval' => 'datetime,int',
'default' => 0,
'behaviour' => [
'allowLanguageSynchronization' => true
]
],
],
'endtime' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
'config' => [
'type' => 'input',
'renderType' => 'inputDateTime',
'eval' => 'datetime,int',
'default' => 0,
'range' => [
'upper' => mktime(0, 0, 0, 1, 1, 2038)
],
'behaviour' => [
'allowLanguageSynchronization' => true
]
],
],
],
];

View File

@ -14,21 +14,6 @@ plugin.tx_templatesaide_dummy {
}
}
plugin.tx_templatesaide_translationplugin {
view {
# cat=plugin.tx_templatesaide_translationplugin/file; type=string; label=Path to template root (FE)
templateRootPath = EXT:templates_aide/Resources/Private/Templates/
# cat=plugin.tx_templatesaide_translationplugin/file; type=string; label=Path to template partials (FE)
partialRootPath = EXT:templates_aide/Resources/Private/Partials/
# cat=plugin.tx_templatesaide_translationplugin/file; type=string; label=Path to template layouts (FE)
layoutRootPath = EXT:templates_aide/Resources/Private/Layouts/
}
persistence {
# cat=plugin.tx_templatesaide_translationplugin//a; type=string; label=Default storage PID
storagePid =
}
}
## EXTENSION BUILDER DEFAULTS END TOKEN - Everything BEFORE this line is overwritten with the defaults of the extension builder
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:templates_aide/Resources/Private/TypoScript/constants.ts">

View File

@ -1,11 +1,11 @@
plugin.tx_templatesaide_dummy {
view {
templateRootPaths.0 = EXT:templates_aide/Resources/Private/Templates/
templateRootPaths.0 = EXT:{extension.shortExtensionKey}/Resources/Private/Templates/
templateRootPaths.1 = {$plugin.tx_templatesaide_dummy.view.templateRootPath}
partialRootPaths.0 = EXT:templates_aide/Resources/Private/Partials/
partialRootPaths.1 = {$plugin.tx_templatesaide_dummy.view.partialRootPath}
layoutRootPaths.0 = EXT:templates_aide/Resources/Private/Layouts/
layoutRootPaths.0 = EXT:tx_templatesaide/Resources/Private/Layouts/
layoutRootPaths.1 = {$plugin.tx_templatesaide_dummy.view.layoutRootPath}
}
persistence {
@ -24,31 +24,6 @@ plugin.tx_templatesaide_dummy {
}
}
plugin.tx_templatesaide_translationplugin {
view {
templateRootPaths.0 = EXT:templates_aide/Resources/Private/Templates/
templateRootPaths.1 = {$plugin.tx_templatesaide_translationplugin.view.templateRootPath}
partialRootPaths.0 = EXT:templates_aide/Resources/Private/Partials/
partialRootPaths.1 = {$plugin.tx_templatesaide_translationplugin.view.partialRootPath}
layoutRootPaths.0 = EXT:templates_aide/Resources/Private/Layouts/
layoutRootPaths.1 = {$plugin.tx_templatesaide_translationplugin.view.layoutRootPath}
}
persistence {
storagePid = {$plugin.tx_templatesaide_translationplugin.persistence.storagePid}
#recursive = 1
}
features {
#skipDefaultArguments = 1
# if set to 1, the enable fields are ignored in BE context
ignoreAllEnableFieldsInBe = 0
# Should be on by default, but can be disabled if all action in the plugin are uncached
requireCHashArgumentForActionArguments = 1
}
mvc {
#callDefaultActionIfActionCantBeResolved = 1
}
}
# these classes are only used in auto-generated templates
plugin.tx_templatesaide._CSS_DEFAULT_STYLE (
textarea.f3-form-error {

View File

@ -256,7 +256,7 @@ TYPO3:
__inheritances:
10: 'TYPO3.CMS.Form.mixins.finishersEmailMixin'
EmailToReceiver:
EmailsToReceiver:
__inheritances:
10: 'TYPO3.CMS.Form.mixins.finishersEmailMixin'

View File

@ -1,4 +1,5 @@
.. include:: ../Includes.txt
.. include:: ../Includes.txt
.. _configuration:
@ -6,17 +7,20 @@
Configuration
=============
How is the extension configured?
Aim to provide simple instructions detailing how the extension is configured.
Always assume that the user has no prior experience of using the extension.
Target group: **Developers, Integrators**
How is the extension configured? Aim to provide simple instructions detailing
how the extension is configured. Always assume that the user has no prior experience
of using your extension.
Try and provide a typical use case for your extension and detail each of the
steps required to get the extension running.
Try and provide a typical use case for your extension
and detail each of the steps required to get the extension running.
Typical Example
===============
- Does the integrator need to include a static template?
- Do we need to include a static template?
- For example add a code snippet with comments
Minimal example of TypoScript:
@ -39,12 +43,12 @@ Minimal example of TypoScript:
TypoScript Reference
====================
Possible subsections: Reference of TypoScript options.
The construct below show the recommended structure for TypoScript properties listing and description.
When detailing data types or standard TypoScript
features, don't hesitate to cross-link to the TypoScript
Reference.
When detailing data types or standard TypoScript features,
don't hesitate to cross-link to the TypoScript Reference as shown below.
See :ref:`h2document:how-to-document-hyperlinks` for information about how to use cross-references.
Information about how to use cross-references:
https://docs.typo3.org/typo3cms/HowToDocument/WritingReST/Hyperlinks.html
See the :file:`Settings.cfg` file for the declaration of cross-linking keys.
You can add more keys besides tsref.

View File

@ -38,47 +38,6 @@
"relations": []
}
}
},
{
"config": {
"position": [
398,
234
]
},
"name": "New Model Object",
"value": {
"actionGroup": {
"_default0_list": false,
"_default1_show": false,
"_default2_new_create": false,
"_default3_edit_update": false,
"_default4_delete": false,
"customActions": [
"translations"
]
},
"name": "Translation",
"objectsettings": {
"addDeletedField": true,
"addHiddenField": true,
"addStarttimeEndtimeFields": true,
"aggregateRoot": false,
"categorizable": false,
"description": "",
"mapToTable": "",
"parentClass": "",
"sorting": false,
"type": "Entity",
"uid": "291507465262"
},
"propertyGroup": {
"properties": []
},
"relationGroup": {
"relations": []
}
}
}
],
"properties": {
@ -87,13 +46,13 @@
"emConf": {
"category": "plugin",
"custom_category": "",
"dependsOn": "typo3 => 8.7.0-9.5.99\n",
"dependsOn": "typo3 => 8.7.0-11.5.99\n",
"disableLocalization": false,
"disableVersioning": false,
"skipGenerateDocumentationTemplate": false,
"sourceLanguage": "en",
"state": "alpha",
"targetVersion": "9.5.0-9.5.99",
"targetVersion": "9.5.0-11.5.99",
"version": "0.0.1"
},
"extensionKey": "templates_aide",
@ -118,25 +77,14 @@
"description": "",
"key": "dummy",
"name": "dummy"
},
{
"actions": {
"controllerActionCombinations": "Translation => translations",
"noncacheableActions": "",
"switchableActions": ""
},
"description": "",
"key": "translationplugin",
"name": "translation"
}
],
"vendorName": "Cjel"
},
"wires": [],
"storagePath": "\/var\/www\/html\/webroot\/typo3conf\/ext\/",
"log": {
"last_modified": "2024-02-07 06:12",
"extension_builder_version": "9.10.6",
"be_user": " (68)"
"last_modified": "2020-04-26 10:03",
"extension_builder_version": "9.10.2",
"be_user": " (1)"
}
}

3
Makefile.old Normal file
View File

@ -0,0 +1,3 @@
add_upstreams:
git remote add upstream-dt git@git.datentonne.net:typo3/template_aide.git
git remote add upstream-gs ssh://vcs@phabricator.glanzstueck.agency/source/typo3-template_aide.git

View File

@ -1,25 +1,24 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="EXT:templates_aide/Resources/Private/Language/locallang" date="2024-02-07T18:12:19Z" product-name="templates_aide">
<header/>
<file source-language="en" datatype="plaintext" original="messages" date="2022-04-28T10:23:09Z">
<header>
<generator>LFEditor</generator>
</header>
<body>
<trans-unit id="tx_templatesaide_domain_model_dummy" resname="tx_templatesaide_domain_model_dummy">
<source>Dummy</source>
<trans-unit id="default">
<source><![CDATA[Default]]></source>
</trans-unit>
<trans-unit id="tx_templatesaide_domain_model_translation" resname="tx_templatesaide_domain_model_translation">
<source>Translation</source>
<trans-unit id="disableDragModal">
<source><![CDATA[Disable drag and drop confirmation in page tree]]></source>
</trans-unit>
<trans-unit id="default" resname="default">
<source>Default</source>
<trans-unit id="homepage">
<source><![CDATA[Homepage]]></source>
</trans-unit>
<trans-unit id="disableDragModal" resname="disableDragModal">
<source>Disable drag and drop confirmation in page tree</source>
<trans-unit id="subpage">
<source><![CDATA[Subpage]]></source>
</trans-unit>
<trans-unit id="homepage" resname="homepage">
<source>Homepage</source>
</trans-unit>
<trans-unit id="subpage" resname="subpage">
<source>Subpage</source>
<trans-unit id="tx_templatesaide_domain_model_dummy">
<source><![CDATA[Dummy]]></source>
</trans-unit>
</body>
</file>

View File

@ -1,30 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="EXT:templates_aide/Resources/Private/Language/locallang_db" date="2024-02-07T18:12:19Z" product-name="templates_aide">
<file source-language="en" datatype="plaintext" original="messages" date="2020-04-26T22:03:44Z" product-name="templates_aide">
<header/>
<body>
<trans-unit id="tx_templatesaide_domain_model_dummy" resname="tx_templatesaide_domain_model_dummy">
<trans-unit id="tx_templatesaide_domain_model_dummy">
<source>Dummy</source>
</trans-unit>
<trans-unit id="tx_templatesaide_domain_model_translation" resname="tx_templatesaide_domain_model_translation">
<source>Translation</source>
</trans-unit>
<trans-unit id="tx_templates_aide_dummy.name" resname="tx_templates_aide_dummy.name">
<trans-unit id="tx_templates_aide_dummy.name">
<source>dummy</source>
</trans-unit>
<trans-unit id="tx_templates_aide_dummy.description" resname="tx_templates_aide_dummy.description">
<source></source>
</trans-unit>
<trans-unit id="tx_templates_aide_translationplugin.name" resname="tx_templates_aide_translationplugin.name">
<source>translation</source>
</trans-unit>
<trans-unit id="tx_templates_aide_translationplugin.description" resname="tx_templates_aide_translationplugin.description">
<source></source>
</trans-unit>
<trans-unit id="tx_templates_aide_translation.name" resname="tx_templates_aide_translation.name">
<source>translation</source>
</trans-unit>
<trans-unit id="tx_templates_aide_translation.description" resname="tx_templates_aide_translation.description">
<trans-unit id="tx_templates_aide_dummy.description">
<source></source>
</trans-unit>
</body>

View File

@ -18,33 +18,18 @@
<f:variable name="buttonBackgroundcolor" value="#8ABF6F" />
</f:else>
</f:if>
<f:if condition="{styleH1}">
<f:else>
<f:variable name="styleH1" value="" />
</f:else>
</f:if>
<f:if condition="{styleButton}">
<f:else>
<f:variable name="styleButton" value="padding: 10px 15px; border-radius: 3px;" />
</f:else>
</f:if>
<f:variable name="widthPadded" value="{width - padding - padding}" />
<f:variable name="widthTableColumn" value="{widthPadded / 2}" />
<f:for each="{content}" as="row" key="rowKey" iteration="rowI" >
<v:condition.type.isArray value="{row.data}">
<f:else>
<f:if condition="{row.type} == 'contentBlockHtml'">
{row.data -> f:format.raw()}
</f:if>
<f:if condition="{v:condition.string.contains(haystack: '{row.type}', needle: 'headline', then: '1')}
|| {row.type} == 'text'
|| {row.type} == 'button'
|| {row.type} == 'buttonleft'
|| {row.type} == 'buttoncenter'
|| {row.type} == 'buttonright'
|| {row.type} == 'divider'
|| {row.type} == 'hr'
">
<!--[if mso | IE]>
<table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:{width}px;" width="{width}" >
@ -65,14 +50,6 @@
<table border="0" cellpadding="0" cellspacing="0" role="presentation" width="100%">
<tbody>
<tr>
<f:switch expression="{row.type}">
<f:case value="divider">
<f:variable name='paddingTd' value='20px 0' />
</f:case>
<f:defaultCase>
<f:variable name='paddingTd' value='0' />
</f:defaultCase>
</f:switch>
<td style="vertical-align:top;padding:0;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style width="100%">
<tr>
@ -87,11 +64,11 @@
<f:variable name='align' value='left' />
</f:defaultCase>
</f:switch>
<td align="{align}" style="font-size:0px;padding:{paddingTd};word-break:break-word;">
<td align="{align}" style="font-size:0px;padding:0;word-break:break-word;">
<div style="font-family:Arial, sans-serif;font-size:16px;line-height:1.4;text-align:{align};color:#000000;">
<f:switch expression="{row.type}">
<f:case value="headline">
<h1 style="{styleH1}">{row.data -> f:format.nl2br() -> f:format.raw()}</h1>
<h1>{row.data -> f:format.nl2br() -> f:format.raw()}</h1>
</f:case>
<f:case value="headline2">
<h2>{row.data -> f:format.nl2br() -> f:format.raw()}</h2>
@ -113,7 +90,7 @@
<span style="display: inline-block;" class="buttonwrapper">
<f:variable name="rowData">{row.data -> v:format.json.decode()}</f:variable>
<a style="display: inline-block; color: {buttonColor}" target="_blank" href="{rowData.0}">
<span style="display: inline-block; background-color: {buttonBackgroundcolor}; {styleButton}">
<span style="display: inline-block; padding: 10px 15px; border-radius: 3px; background-color: {buttonBackgroundcolor};">
{rowData.1}
</span>
</a>
@ -124,38 +101,6 @@
{row.data -> f:format.nl2br() -> f:format.raw()}
</span>
</f:case>
<f:case value="hr">
<p style="border-top:solid 1px #bababa;font-size:1px;margin:13px auto;width:100%;">
</p>
<!--[if mso | IE]>
&nbsp;
<table
align="center"
border="0"
cellpadding="0"
cellspacing="0"
style="border-top:solid 1px #bababa;font-size:1px;margin:13px auto;width:100%;"
role="presentation"
width="550px"
>
<tr>
<td style="height:0;line-height:0;">
&nbsp;
</td>
</tr>
</table>
&nbsp;
<![endif]-->
</f:case>
<f:case value="divider">
<p style="border-top:solid 2px #025093;font-size:1px;margin:0px auto;width:100%;">
</p>
<!--[if mso | IE]>
<table align="center" border="0" cellpadding="0" cellspacing="0" style="border-top:solid 2px #025093;font-size:1px;margin:0px auto;width:550px;" role="presentation" width="550px" >
<tr><td style="height:0;line-height:0;"> &nbsp; </td></tr>
</table>
<![endif]-->
</f:case>
<f:defaultCase>
<p>{row.data -> f:format.nl2br() -> f:format.raw()}</p>
</f:defaultCase>
@ -192,9 +137,6 @@
<f:case value="table">
<f:variable name="type" value="table" />
</f:case>
<f:case value="tablelr">
<f:variable name="type" value="table" />
</f:case>
<f:case value="tableLayout">
<f:variable name="type" value="table" />
</f:case>
@ -236,19 +178,11 @@
</td>
<td class="" style="vertical-align:top;width:{widthTableColumn}px;">
<![endif]-->
<f:switch expression="{row.type}">
<f:case value="tablelr">
<f:variable name="align" value="right" />
</f:case>
<f:defaultCase>
<f:variable name="align" value="left" />
</f:defaultCase>
</f:switch>
<div class="mj-column-per-50 outlook-group-fix" style="font-size:13px;text-align:{align};direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<div class="mj-column-per-50 outlook-group-fix" style="font-size:13px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="{align}" style="font-size:0px;padding:0px 4px;word-break:break-word;">
<div style="font-family:Arial, sans-serif;font-size:16px;line-height:1.4;text-align:{align};color:#000000;">
<td align="left" style="font-size:0px;padding:0px 4px;word-break:break-word;">
<div style="font-family:Arial, sans-serif;font-size:16px;line-height:1.4;text-align:left;color:#000000;">
<div>{row.data.1 -> f:format.nl2br() -> f:format.raw()}</div>
</div>
</td>

View File

@ -55,19 +55,3 @@ pageContentelement {
no_cache = 1
}
}
pageTranslation = PAGE
pageTranslation {
typeNum = 6001
10 = USER_INT
10 {
userFunc = Cjel\TemplatesAide\UserFunc\Translation->render
}
config {
disableAllHeaderCode = 1
xhtml_cleaning = 0
admPanel = 0
debug = 0
no_cache = 1
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 230 B

View File

@ -1,4 +1 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path fill="#666" d="M12.053 11.026c-.238.07-.427.095-.674.095-2.033 0-5.017-7.1-5.017-9.462 0-.87.207-1.16.497-1.41C4.373.54 1.39 1.452.435 2.613c-.207.29-.332.746-.332 1.326C.103 7.628 4.04 16 6.82 16c1.283 0 3.45-2.114 5.233-4.974M10.756 0c2.57 0 5.14.415 5.14 1.865 0 2.943-1.865 6.508-2.818 6.508-1.7 0-3.814-4.725-3.814-7.088C9.264.207 9.68 0 10.756 0"></path>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#666" d="M12.053 11.026c-.238.07-.427.095-.674.095-2.033 0-5.017-7.1-5.017-9.462 0-.87.207-1.16.497-1.41C4.373.54 1.39 1.452.435 2.613c-.207.29-.332.746-.332 1.326C.103 7.628 4.04 16 6.82 16c1.283 0 3.45-2.114 5.233-4.974M10.756 0c2.57 0 5.14.415 5.14 1.865 0 2.943-1.865 6.508-2.818 6.508-1.7 0-3.814-4.725-3.814-7.088C9.264.207 9.68 0 10.756 0"/></svg>

Before

Width:  |  Height:  |  Size: 476 B

After

Width:  |  Height:  |  Size: 426 B

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path fill="#666" d="M12.053 11.026c-.238.07-.427.095-.674.095-2.033 0-5.017-7.1-5.017-9.462 0-.87.207-1.16.497-1.41C4.373.54 1.39 1.452.435 2.613c-.207.29-.332.746-.332 1.326C.103 7.628 4.04 16 6.82 16c1.283 0 3.45-2.114 5.233-4.974M10.756 0c2.57 0 5.14.415 5.14 1.865 0 2.943-1.865 6.508-2.818 6.508-1.7 0-3.814-4.725-3.814-7.088C9.264.207 9.68 0 10.756 0"></path>
</svg>

Before

Width:  |  Height:  |  Size: 476 B

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path fill="#666" d="M12.053 11.026c-.238.07-.427.095-.674.095-2.033 0-5.017-7.1-5.017-9.462 0-.87.207-1.16.497-1.41C4.373.54 1.39 1.452.435 2.613c-.207.29-.332.746-.332 1.326C.103 7.628 4.04 16 6.82 16c1.283 0 3.45-2.114 5.233-4.974M10.756 0c2.57 0 5.14.415 5.14 1.865 0 2.943-1.865 6.508-2.818 6.508-1.7 0-3.814-4.725-3.814-7.088C9.264.207 9.68 0 10.756 0"></path>
</svg>

Before

Width:  |  Height:  |  Size: 476 B

View File

@ -1,30 +0,0 @@
<?php
namespace Cjel\TemplatesAide\Tests\Unit\Controller;
/**
* Test case.
*
* @author Philipp Dieter <philippdieter@attic-media.net>
*/
class TranslationControllerTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCase
{
/**
* @var \Cjel\TemplatesAide\Controller\TranslationController
*/
protected $subject = null;
protected function setUp()
{
parent::setUp();
$this->subject = $this->getMockBuilder(\Cjel\TemplatesAide\Controller\TranslationController::class)
->setMethods(['redirect', 'forward', 'addFlashMessage'])
->disableOriginalConstructor()
->getMock();
}
protected function tearDown()
{
parent::tearDown();
}
}

View File

@ -1,34 +0,0 @@
<?php
namespace Cjel\TemplatesAide\Tests\Unit\Domain\Model;
/**
* Test case.
*
* @author Philipp Dieter <philippdieter@attic-media.net>
*/
class TranslationTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCase
{
/**
* @var \Cjel\TemplatesAide\Domain\Model\Translation
*/
protected $subject = null;
protected function setUp()
{
parent::setUp();
$this->subject = new \Cjel\TemplatesAide\Domain\Model\Translation();
}
protected function tearDown()
{
parent::tearDown();
}
/**
* @test
*/
public function dummyTestToNotLeaveThisFileEmpty()
{
self::markTestIncomplete();
}
}

View File

@ -9,7 +9,7 @@
}
],
"require": {
"typo3/cms-core": "8.7.0 - 11.99.99",
"typo3/cms-core": "8.7.0 - 11.5.99",
"sarhan/php-flatten": "^4.0"
},
"autoload": {
@ -23,7 +23,11 @@
}
},
"replace": {
"templates_aide": "self.version",
"typo3-ter/templates-aide": "self.version"
},
"extra": {
"typo3/cms": {
"extension-key": "templates_aide"
}
}
}

View File

@ -16,13 +16,14 @@ $EM_CONF[$_EXTKEY] = [
'category' => 'plugin',
'author' => 'Philipp Dieter',
'author_email' => 'philippdieter@attic-media.net',
'state' => 'alpha',
'state' => 'stable',
'uploadfolder' => 0,
'createDirs' => '',
'clearCacheOnLoad' => 0,
'version' => '0.0.1',
'constraints' => [
'depends' => [
'typo3' => '8.7.0-11.99.99',
],
'conflicts' => [],
'suggests' => [],

View File

@ -1,60 +1,22 @@
<?php
defined('TYPO3_MODE') || die('Access denied.');
(static function() {
})();
defined('TYPO3') or die();
use Cjel\TemplatesAide\Controller\DummyController;
call_user_func(
function()
{
if (version_compare(TYPO3_branch, '10.0', '>=')) {
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'TemplatesAide',
'Translationplugin',
[
\Cjel\TemplatesAide\Controller\TranslationController::class => 'translations'
],
// non-cacheable actions
[
\Cjel\TemplatesAide\Controller\TranslationController::class => ''
]
);
} else {
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'Cjel.TemplatesAide',
'Dummy',
[
'Dummy' => 'list',
'Translation' => 'translations'
DummyController::class => 'list'
],
// non-cacheable actions
[
'Dummy' => '',
'Translation' => ''
DummyController::class => ''
]
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'Cjel.TemplatesAide',
'Translationplugin',
[
'Translation' => 'translations'
],
// non-cacheable actions
[
'Dummy' => '',
'Translation' => ''
]
);
}
// wizards
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(
'mod {
@ -69,15 +31,6 @@ call_user_func(
list_type = templatesaide_dummy
}
}
translationplugin {
iconIdentifier = templates_aide-plugin-translationplugin
title = LLL:EXT:templates_aide/Resources/Private/Language/locallang_db.xlf:tx_templates_aide_translationplugin.name
description = LLL:EXT:templates_aide/Resources/Private/Language/locallang_db.xlf:tx_templates_aide_translationplugin.description
tt_content_defValues {
CType = list
list_type = templatesaide_translationplugin
}
}
}
show = *
}
@ -91,12 +44,6 @@ call_user_func(
['source' => 'EXT:templates_aide/Resources/Public/Icons/user_plugin_dummy.svg']
);
$iconRegistry->registerIcon(
'templates_aide-plugin-translationplugin',
\TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
['source' => 'EXT:templates_aide/Resources/Public/Icons/user_plugin_translationplugin.svg']
);
}
);
## EXTENSION BUILDER DEFAULTS END TOKEN - Everything BEFORE this line is overwritten with the defaults of the extension builder
@ -136,10 +83,5 @@ call_user_func(
$_GET['eID'] = 'script_disabled';
}
}
//$GLOBALS['TYPO3_CONF_VARS']['FE']['eID_include']['script_enable'] =
// \Cjel\TemplatesAide\Controller\EIDController::class
// . '::scriptEnable';
}
);

View File

@ -1,37 +1,28 @@
<?php
defined('TYPO3_MODE') || die('Access denied.');
defined('TYPO3') or die();
call_user_func(
function()
{
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'Cjel.TemplatesAide',
'TemplatesAide',
'Dummy',
'dummy'
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'Cjel.TemplatesAide',
'Translationplugin',
'translation'
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('templates_aide', 'Configuration/TypoScript', 'Templates Aide');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('tx_templatesaide_domain_model_dummy', 'EXT:templates_aide/Resources/Private/Language/locallang_csh_tx_templatesaide_domain_model_dummy.xlf');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_templatesaide_domain_model_dummy');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('tx_templatesaide_domain_model_translation', 'EXT:templates_aide/Resources/Private/Language/locallang_csh_tx_templatesaide_domain_model_translation.xlf');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_templatesaide_domain_model_translation');
}
);
## EXTENSION BUILDER DEFAULTS END TOKEN - Everything BEFORE this line is overwritten with the defaults of the extension builder
use Cjel\TemplatesAide\Property\TypeConverter\Double2Converter;
use TYPO3\CMS\Extbase\Utility\ExtensionUtility;
use TYPO3\CMS\Core\Http\ApplicationType;
call_user_func(
function()
{
@ -39,45 +30,23 @@ call_user_func(
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms']['db_new_content_el']['wizardItemsHook'][] =
\Cjel\TemplatesAide\Hooks\WizardItems::class;
if (version_compare(TYPO3_branch, '10.0', '>=')) {
if (\TYPO3\CMS\Core\Core\Environment::getContext()->isDevelopment()) {
if(\TYPO3\CMS\Core\Core\Environment::getContext()->isDevelopment()) {
$GLOBALS['TBE_STYLES']['skins']['backend']['stylesheetDirectories']['dev'] =
'EXT:templates_aide/Resources/Public/Css/backend/dev';
}
if(\TYPO3\CMS\Core\Core\Environment::getContext()->__toString() === 'Production/Stage') {
$GLOBALS['TBE_STYLES']['skins']['backend']['stylesheetDirectories']['dev'] =
'EXT:templates_aide/Resources/Public/Css/backend/production-stage';
}
} else {
if (\TYPO3\CMS\Core\Utility\GeneralUtility::getApplicationContext()->isDevelopment()) {
$GLOBALS['TBE_STYLES']['skins']['backend']['stylesheetDirectories']['dev'] =
'EXT:templates_aide/Resources/Public/Css/backend/dev';
}
if(\TYPO3\CMS\Core\Utility\GeneralUtility::getApplicationContext()->__toString() === 'Production/Stage') {
$GLOBALS['TBE_STYLES']['skins']['backend']['stylesheetDirectories']['dev'] =
'EXT:templates_aide/Resources/Public/Css/backend/production-stage';
}
}
$GLOBALS['TBE_STYLES']['skins']['backend']['stylesheetDirectories']['templates_aide_default'] =
'EXT:templates_aide/Resources/Public/Css/backend/default';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerPageTSConfigFile(
'templates_aide',
'Resources/Private/PageTSConfig/default.tsconfig',
'Default Config'
);
ExtensionUtility::registerTypeConverter(Double2Converter::class);
if (TYPO3_MODE == 'BE') {
//$pageRenderer = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
// \TYPO3\CMS\Core\Page\PageRenderer::class
//);
//$pageRenderer->loadRequireJsModule('TYPO3/CMS/TemplatesAide/NewContentElementWizardPreview');
if (TYPO3_MODE == 'BE')
{
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addUserTSConfig(
'<INCLUDE_TYPOSCRIPT: source="FILE:EXT:templates_aide/Resources/Private/UserTSConfig/default.ts">'
);
@ -90,8 +59,17 @@ $GLOBALS['TYPO3_USER_SETTINGS']['columns']['disableDragModal'] = [
'type' => 'check',
'label' => 'LLL:EXT:templates_aide/Resources/Private/Language/locallang.xlf:disableDragModal',
];
$GLOBALS['TYPO3_USER_SETTINGS']['showitem'] = str_replace(
if (version_compare(TYPO3_branch, '10.0', '>=')) {
$GLOBALS['TYPO3_USER_SETTINGS']['showitem'] = str_replace(
'showHiddenFilesAndFolders',
'showHiddenFilesAndFolders,disableDragModal',
$GLOBALS['TYPO3_USER_SETTINGS']['showitem'],
);
} else {
$GLOBALS['TYPO3_USER_SETTINGS']['showitem'] = str_replace(
'recursiveDelete',
'recursiveDelete,disableDragModal',
$GLOBALS['TYPO3_USER_SETTINGS']['showitem'],
);
);
}

View File

@ -1,77 +0,0 @@
#
# Table structure for table 'tx_templatesaide_domain_model_dummy'
#
CREATE TABLE tx_templatesaide_domain_model_dummy (
uid int(11) NOT NULL auto_increment,
pid int(11) DEFAULT '0' NOT NULL,
tstamp int(11) unsigned DEFAULT '0' NOT NULL,
crdate int(11) unsigned DEFAULT '0' NOT NULL,
cruser_id int(11) unsigned DEFAULT '0' NOT NULL,
deleted smallint(5) unsigned DEFAULT '0' NOT NULL,
hidden smallint(5) unsigned DEFAULT '0' NOT NULL,
starttime int(11) unsigned DEFAULT '0' NOT NULL,
endtime int(11) unsigned DEFAULT '0' NOT NULL,
t3ver_oid int(11) DEFAULT '0' NOT NULL,
t3ver_id int(11) DEFAULT '0' NOT NULL,
t3ver_wsid int(11) DEFAULT '0' NOT NULL,
t3ver_label varchar(255) DEFAULT '' NOT NULL,
t3ver_state smallint(6) DEFAULT '0' NOT NULL,
t3ver_stage int(11) DEFAULT '0' NOT NULL,
t3ver_count int(11) DEFAULT '0' NOT NULL,
t3ver_tstamp int(11) DEFAULT '0' NOT NULL,
t3ver_move_id int(11) DEFAULT '0' NOT NULL,
sys_language_uid int(11) DEFAULT '0' NOT NULL,
l10n_parent int(11) DEFAULT '0' NOT NULL,
l10n_diffsource mediumblob,
l10n_state text,
PRIMARY KEY (uid),
KEY parent (pid),
KEY t3ver_oid (t3ver_oid,t3ver_wsid),
KEY language (l10n_parent,sys_language_uid)
);
#
# Table structure for table 'tx_templatesaide_domain_model_translation'
#
CREATE TABLE tx_templatesaide_domain_model_translation (
uid int(11) NOT NULL auto_increment,
pid int(11) DEFAULT '0' NOT NULL,
tstamp int(11) unsigned DEFAULT '0' NOT NULL,
crdate int(11) unsigned DEFAULT '0' NOT NULL,
cruser_id int(11) unsigned DEFAULT '0' NOT NULL,
deleted smallint(5) unsigned DEFAULT '0' NOT NULL,
hidden smallint(5) unsigned DEFAULT '0' NOT NULL,
starttime int(11) unsigned DEFAULT '0' NOT NULL,
endtime int(11) unsigned DEFAULT '0' NOT NULL,
t3ver_oid int(11) DEFAULT '0' NOT NULL,
t3ver_id int(11) DEFAULT '0' NOT NULL,
t3ver_wsid int(11) DEFAULT '0' NOT NULL,
t3ver_label varchar(255) DEFAULT '' NOT NULL,
t3ver_state smallint(6) DEFAULT '0' NOT NULL,
t3ver_stage int(11) DEFAULT '0' NOT NULL,
t3ver_count int(11) DEFAULT '0' NOT NULL,
t3ver_tstamp int(11) DEFAULT '0' NOT NULL,
t3ver_move_id int(11) DEFAULT '0' NOT NULL,
sys_language_uid int(11) DEFAULT '0' NOT NULL,
l10n_parent int(11) DEFAULT '0' NOT NULL,
l10n_diffsource mediumblob,
l10n_state text,
PRIMARY KEY (uid),
KEY parent (pid),
KEY t3ver_oid (t3ver_oid,t3ver_wsid),
KEY language (l10n_parent,sys_language_uid)
);
## EXTENSION BUILDER DEFAULTS END TOKEN - Everything BEFORE this line is overwritten with the defaults of the extension builder