HOME


Mini Shell 1.0
DIR: /home/dhnidqcz/journal.africaprag.org/plugins/generic/tinymce/
Upload File :
Current File : //home/dhnidqcz/journal.africaprag.org/plugins/generic/tinymce/TinyMCEPlugin.php
<?php

/**
 * @file plugins/generic/tinymce/TinyMCEPlugin.php
 *
 * Copyright (c) 2014-2020 Simon Fraser University
 * Copyright (c) 2003-2020 John Willinsky
 * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
 *
 * @class TinyMCEPlugin
 *
 * @ingroup plugins_generic_tinymce
 *
 * @brief TinyMCE WYSIWYG plugin for textareas - to allow cross-browser HTML editing
 */

namespace APP\plugins\generic\tinymce;

use APP\core\Application;
use PKP\config\Config;
use PKP\core\Registry;
use PKP\facades\Locale;
use PKP\plugins\GenericPlugin;
use PKP\plugins\Hook;

class TinyMCEPlugin extends GenericPlugin
{
    /**
     * @copydoc Plugin::register()
     *
     * @param null|mixed $mainContextId
     */
    public function register($category, $path, $mainContextId = null)
    {
        if (parent::register($category, $path, $mainContextId)) {
            if ($this->getEnabled($mainContextId)) {
                Hook::add('TemplateManager::display', [&$this, 'registerJS']);
            }
            return true;
        }
        return false;
    }

    /**
     * @copydoc Plugin::getContextSpecificPluginSettingsFile()
     */
    public function getContextSpecificPluginSettingsFile()
    {
        return $this->getPluginPath() . '/settings.xml';
    }

    /**
     * @copydoc Plugin::getInstallSitePluginSettingsFile()
     */
    public function getInstallSitePluginSettingsFile()
    {
        return $this->getPluginPath() . '/settings.xml';
    }

    /**
     * Determine whether the plugin can be disabled.
     *
     * @return bool
     */
    public function getCanDisable()
    {
        return false;
    }

    /**
     * Register the TinyMCE JavaScript file
     *
     * Hooked to the the `display` callback in TemplateManager
     *
     * @param string $hookName
     * @param array $args
     *
     * @return bool
     */
    public function registerJS($hookName, $args)
    {
        $request = & Registry::get('request');
        $templateManager = & $args[0];

        // Load the TinyMCE JavaScript file
        $min = Config::getVar('general', 'enable_minified') ? '.min' : '';
        $templateManager->addJavaScript(
            'tinymce',
            $request->getBaseUrl() . '/lib/pkp/lib/vendor/tinymce/tinymce/tinymce' . $min . '.js',
            [
                'contexts' => 'backend',
            ]
        );

        // Load the script data used by the JS library
        $data = [];
        $localeKey = substr(Locale::getLocale(), 0, 2);
        $localePath = $request->getBaseUrl() . '/plugins/generic/tinymce/langs/' . $localeKey . '.js';
        if (file_exists($localePath)) {
            $data['tinymceParams'] = [
                'language' => $localeKey,
                'language_url' => $localePath,
            ];
        }
        $context = $request->getContext();
        if ($context) {
            $data['uploadUrl'] = $request->getDispatcher()->url($request, Application::ROUTE_API, $context->getPath(), '_uploadPublicFile');
        }
        $templateManager->addJavaScript(
            'tinymceData',
            '$.pkp.plugins.generic = $.pkp.plugins.generic || {};' .
                '$.pkp.plugins.generic.tinymceplugin = ' . json_encode($data) . ';',
            [
                'inline' => true,
                'contexts' => 'backend',
            ]
        );


        return false;
    }

    /**
     * @copydoc Plugin::getDisplayName()
     */
    public function getDisplayName()
    {
        return __('plugins.generic.tinymce.name');
    }

    /**
     * @copydoc Plugin::getDescription()
     */
    public function getDescription()
    {
        return __('plugins.generic.tinymce.description');
    }
}

if (!PKP_STRICT_MODE) {
    class_alias('\APP\plugins\generic\tinymce\TinyMCEPlugin', '\TinyMCEPlugin');
}