primo commit

This commit is contained in:
2024-12-17 17:34:10 +01:00
commit e650f8df99
16435 changed files with 2451012 additions and 0 deletions

View File

@ -0,0 +1,121 @@
<?php
/**
* @package Joomla.Plugin
* @subpackage Editors.tinymce
*
* @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace Joomla\Plugin\Editors\TinyMCE\Extension;
use Joomla\CMS\Event\Editor\EditorSetupEvent;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\Session\Session;
use Joomla\Database\DatabaseAwareTrait;
use Joomla\Event\SubscriberInterface;
use Joomla\Filesystem\Folder;
use Joomla\Plugin\Editors\TinyMCE\PluginTraits\KnownButtons;
use Joomla\Plugin\Editors\TinyMCE\PluginTraits\ToolbarPresets;
use Joomla\Plugin\Editors\TinyMCE\Provider\TinyMCEProvider;
// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects
/**
* TinyMCE Editor Plugin
*
* @since 1.5
*/
final class TinyMCE extends CMSPlugin implements SubscriberInterface
{
use DatabaseAwareTrait;
// @todo: KnownButtons, ToolbarPresets for backward compatibility. Remove in Joomla 6
use KnownButtons;
use ToolbarPresets;
/**
* Returns an array of events this subscriber will listen to.
*
* @return array
*
* @since 5.0.0
*/
public static function getSubscribedEvents(): array
{
return [
'onEditorSetup' => 'onEditorSetup',
'onAjaxTinymce' => 'onAjaxTinymce',
];
}
/**
* Register Editor instance
*
* @param EditorSetupEvent $event
*
* @return void
*
* @since 5.0.0
*/
public function onEditorSetup(EditorSetupEvent $event)
{
$this->loadLanguage();
$event->getEditorsRegistry()
->add(new TinyMCEProvider($this->params, $this->getApplication(), $this->getDispatcher(), $this->getDatabase()));
}
/**
* Returns the templates
*
* @return void
*
* @since 5.0.0
*/
public function onAjaxTinymce()
{
if (!Session::checkToken('request')) {
echo json_encode([]);
exit();
}
$this->loadLanguage();
$templates = [];
$language = $this->getApplication()->getLanguage();
$template = $this->getApplication()->getInput()->getPath('template', '');
if ('' === $template) {
echo json_encode([]);
exit();
}
$filepaths = is_dir(JPATH_ROOT . '/templates/' . $template)
? Folder::files(JPATH_ROOT . '/templates/' . $template, '\.(html|txt)$', false, true)
: [];
foreach ($filepaths as $filepath) {
$fileinfo = pathinfo($filepath);
$filename = $fileinfo['filename'];
$title_upper = strtoupper($filename);
if ($filename === 'index') {
continue;
}
$templates[] = (object) [
'title' => $language->hasKey('PLG_TINY_TEMPLATE_' . $title_upper . '_TITLE') ? Text::_('PLG_TINY_TEMPLATE_' . $title_upper . '_TITLE') : $filename,
'description' => $language->hasKey('PLG_TINY_TEMPLATE_' . $title_upper . '_DESC') ? Text::_('PLG_TINY_TEMPLATE_' . $title_upper . '_DESC') : ' ',
'content' => file_get_contents($filepath),
];
}
echo json_encode($templates);
exit();
}
}