add scripts via templates for independence from template renderer
Cette révision appartient à :
Parent
22ac2bf970
révision
93120e5383
@ -33,21 +33,26 @@ use OxidEsales\EshopCommunity\Internal\Framework\Module\Facade\ModuleSettingServ
|
||||
use OxidEsales\EshopCommunity\Internal\Framework\Module\Facade\ModuleSettingServiceInterface;
|
||||
use OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRenderer;
|
||||
use OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRendererBridgeInterface;
|
||||
use Psr\Container\ContainerExceptionInterface;
|
||||
use Psr\Container\NotFoundExceptionInterface;
|
||||
|
||||
class Loader
|
||||
{
|
||||
protected Config $config;
|
||||
protected Language $language;
|
||||
protected Configuration $configuration;
|
||||
|
||||
public function __construct(Config $config, Language $language)
|
||||
{
|
||||
$this->config = $config;
|
||||
$this->language = $language;
|
||||
|
||||
$this->configuration = oxNew( Configuration::class, $this );
|
||||
$this->configuration->build();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* @throws FileException
|
||||
*/
|
||||
public function getEditorCode(): string
|
||||
{
|
||||
@ -61,14 +66,12 @@ class Loader
|
||||
return $message;
|
||||
}
|
||||
|
||||
$configuration = oxNew(Configuration::class, $this);
|
||||
$configuration->build();
|
||||
|
||||
$this->registerScripts($configuration);
|
||||
$this->registerIncludes();
|
||||
|
||||
$engine = $this->getTemplateRenderer()->getTemplateEngine();
|
||||
return $engine->render('@' . Constants::OXID_MODULE_ID.'/admin/editorswitch');
|
||||
try {
|
||||
$engine = $this->getTemplateRenderer()->getTemplateEngine();
|
||||
return $engine->render( '@' . Constants::OXID_MODULE_ID . '/admin/editorswitch' );
|
||||
} catch ( NotFoundExceptionInterface|ContainerExceptionInterface) {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -76,12 +79,16 @@ class Loader
|
||||
*/
|
||||
protected function isEnabledForCurrentController(): bool
|
||||
{
|
||||
/** @var ModuleSettingService $service */
|
||||
$service = ContainerFactory::getInstance()->getContainer()->get(ModuleSettingServiceInterface::class);
|
||||
/** @var string[] $aEnabledClasses */
|
||||
$aEnabledClasses = $service->getCollection("aTinyMCE_classes", Constants::OXID_MODULE_ID);
|
||||
try {
|
||||
/** @var ModuleSettingService $service */
|
||||
$service = ContainerFactory::getInstance()->getContainer()->get( ModuleSettingServiceInterface::class );
|
||||
/** @var string[] $aEnabledClasses */
|
||||
$aEnabledClasses = $service->getCollection( "aTinyMCE_classes", Constants::OXID_MODULE_ID );
|
||||
|
||||
return in_array($this->getShopConfig()->getActiveView()->getClassKey(), $aEnabledClasses);
|
||||
return in_array( $this->getShopConfig()->getActiveView()->getClassKey(), $aEnabledClasses );
|
||||
} catch (ContainerExceptionInterface|NotFoundExceptionInterface) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -114,59 +121,59 @@ class Loader
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Configuration $configuration
|
||||
*
|
||||
* @return void
|
||||
* @return array
|
||||
*/
|
||||
protected function registerScripts(Configuration $configuration): void
|
||||
public function getScripts(): array
|
||||
{
|
||||
if (!$this->isEnabledForCurrentController()) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$sCopyLongDescFromTinyMCE = file_get_contents(__DIR__.'/../../../assets/out/scripts/copyLongDesc.js');
|
||||
$sUrlConverter = file_get_contents(__DIR__.'/../../../assets/out/scripts/urlConverter.js');
|
||||
$sInit = str_replace(
|
||||
"'CONFIG':'VALUES'",
|
||||
$configuration->getConfig(),
|
||||
$this->configuration->getConfig(),
|
||||
(string) file_get_contents(__DIR__.'/../../../assets/out/scripts/init.js')
|
||||
);
|
||||
|
||||
$engine = $this->getTemplateRenderer()->getTemplateEngine();
|
||||
$globals = $engine->getGlobals();
|
||||
$sSuffix = ($globals['__oxid_include_dynamic']) ? '_dynamic' : '';
|
||||
|
||||
$aScript = (array) Registry::getConfig()->getGlobalParameter('scripts' . $sSuffix);
|
||||
|
||||
$aScript[] = $sCopyLongDescFromTinyMCE;
|
||||
$aScript[] = $sUrlConverter;
|
||||
$aScript[] = $sInit;
|
||||
|
||||
Registry::getConfig()->setGlobalParameter('scripts' . $sSuffix, $aScript);
|
||||
return [
|
||||
$sCopyLongDescFromTinyMCE,
|
||||
$sUrlConverter,
|
||||
$sInit
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
* @throws FileException
|
||||
* @return array
|
||||
*/
|
||||
protected function registerIncludes(): void
|
||||
public function getIncludes(): array
|
||||
{
|
||||
$engine = $this->getTemplateRenderer()->getTemplateEngine();
|
||||
$globals = $engine->getGlobals();
|
||||
$sSuffix = ($globals['__oxid_include_dynamic']) ? '_dynamic' : '';
|
||||
if (!$this->isEnabledForCurrentController()) {
|
||||
return [];
|
||||
}
|
||||
|
||||
/** @var array<int, string[]> $aInclude */
|
||||
$aInclude = (array) Registry::getConfig()->getGlobalParameter('includes' . $sSuffix);
|
||||
|
||||
$aInclude[3][] = Registry::getConfig()->getActiveView()->getViewConfig()->getModuleUrl(
|
||||
Constants::OXID_MODULE_ID,
|
||||
'assets/out/tinymce/tinymce.min.js'
|
||||
);
|
||||
|
||||
|
||||
Registry::getConfig()->setGlobalParameter('includes' . $sSuffix, $aInclude);
|
||||
try {
|
||||
return [
|
||||
Registry::getConfig()->getActiveView()->getViewConfig()->getModuleUrl(
|
||||
Constants::OXID_MODULE_ID,
|
||||
'out/tinymce/tinymce.min.js'
|
||||
)
|
||||
];
|
||||
} catch (FileException) {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return TemplateRenderer
|
||||
* @throws ContainerExceptionInterface
|
||||
* @throws NotFoundExceptionInterface
|
||||
*/
|
||||
protected function getTemplateRenderer(): TemplateRenderer
|
||||
{
|
||||
return ContainerFactory::getInstance()->getContainer()
|
||||
->get(TemplateRendererBridgeInterface::class)
|
||||
->getTemplateRenderer();
|
||||
->get(TemplateRendererBridgeInterface::class)
|
||||
->getTemplateRenderer();
|
||||
}
|
||||
}
|
||||
|
@ -23,6 +23,10 @@ declare(strict_types=1);
|
||||
|
||||
namespace O3\TinyMCE\Application\Core\TinyMCE\Options;
|
||||
|
||||
use O3\TinyMCE\Application\Model\Constants;
|
||||
use OxidEsales\Eshop\Core\Exception\FileException;
|
||||
use OxidEsales\Eshop\Core\Registry;
|
||||
|
||||
class BaseUrl extends AbstractOption
|
||||
{
|
||||
protected string $key = 'base_url';
|
||||
@ -32,8 +36,14 @@ class BaseUrl extends AbstractOption
|
||||
*/
|
||||
public function get(): string
|
||||
{
|
||||
return $this->loader->getShopConfig()->getActiveView()->getViewConfig()->getBaseDir() .
|
||||
'modules/o3-shop/tinymce-editor/out/tinymce/';
|
||||
try {
|
||||
return Registry::getConfig()->getActiveView()->getViewConfig()->getModuleUrl(
|
||||
Constants::OXID_MODULE_ID,
|
||||
'out/tinymce/'
|
||||
);
|
||||
} catch (FileException) {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -24,22 +24,37 @@ declare(strict_types=1);
|
||||
namespace O3\TinyMCE\Application\Core;
|
||||
|
||||
use O3\TinyMCE\Application\Core\TinyMCE\Loader;
|
||||
use OxidEsales\Eshop\Core\Exception\FileException;
|
||||
use OxidEsales\Eshop\Core\Registry;
|
||||
|
||||
class ViewConfig extends ViewConfig_parent
|
||||
{
|
||||
/**
|
||||
* @return string
|
||||
* @throws FileException
|
||||
*/
|
||||
public function loadTinyMce(): string
|
||||
public function getTinyMceInitCode(): string
|
||||
{
|
||||
$config = Registry::getConfig();
|
||||
$language = Registry::getLang();
|
||||
|
||||
$loader = oxNew(Loader::class, $config, $language);
|
||||
|
||||
return $loader->getEditorCode();
|
||||
}
|
||||
|
||||
public function getTinyMceScripts(): array
|
||||
{
|
||||
$config = Registry::getConfig();
|
||||
$language = Registry::getLang();
|
||||
|
||||
$loader = oxNew(Loader::class, $config, $language);
|
||||
return $loader->getScripts();
|
||||
}
|
||||
|
||||
public function getTinyMceIncludes(): array
|
||||
{
|
||||
$config = Registry::getConfig();
|
||||
$language = Registry::getLang();
|
||||
|
||||
$loader = oxNew(Loader::class, $config, $language);
|
||||
return $loader->getIncludes();
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,17 @@
|
||||
[{$smarty.block.parent}]
|
||||
|
||||
[{if method_exists($oViewConf,'loadTinyMce') }][{ $oViewConf->loadTinyMce() }][{/if}]
|
||||
[{if method_exists($oViewConf,'getTinyMceIncludes') }]
|
||||
[{foreach from=$oViewConf->getTinyMceIncludes() item="tmceinclude"}]
|
||||
[{oxscript include=$tmceinclude}]
|
||||
[{/foreach}]
|
||||
[{/if}]
|
||||
|
||||
[{if method_exists($oViewConf,'getTinyMceScripts') }]
|
||||
[{foreach from=$oViewConf->getTinyMceScripts() item="tmcescript"}]
|
||||
[{oxscript add=$tmcescript}]
|
||||
[{/foreach}]
|
||||
[{/if}]
|
||||
|
||||
[{if method_exists($oViewConf,'getTinyMceInitCode') }]
|
||||
[{ $oViewConf->getTinyMceInitCode() }]
|
||||
[{/if}]
|
@ -4,8 +4,20 @@
|
||||
|
||||
{{ parent() }}
|
||||
|
||||
{% if method_exists(oViewConf,'loadTinyMce') %}
|
||||
{{ oViewConf.loadTinyMce()|raw }}
|
||||
{% if method_exists(oViewConf,'getTinyMceIncludes') %}
|
||||
{% for tmceinclude in oViewConf.getTinyMceIncludes() %}
|
||||
{{ script({ include: tmceinclude|raw }) }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
{% if method_exists(oViewConf,'getTinyMceScripts') %}
|
||||
{% for tmcescript in oViewConf.getTinyMceScripts() %}
|
||||
{{ script({ add: tmcescript|raw }) }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if method_exists(oViewConf,'getTinyMceInitCode') %}
|
||||
{{ oViewConf.getTinyMceInitCode()|raw }}
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
Chargement…
Référencer dans un nouveau ticket
Block a user