Files
idpan.poznan.pl/components/com_jce/editor/libraries/classes/extensions/popups.php
2026-02-08 21:16:11 +01:00

172 lines
4.5 KiB
PHP

<?php
/**
* @copyright Copyright (c) 2009-2022 Ryan Demmer. All rights reserved
* @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* JCE is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses
*/
defined('JPATH_PLATFORM') or die;
class WFPopupsExtension extends WFExtension
{
protected static $instance;
private $_popups = array();
private $_templates = array();
/**
* Constructor activating the default information of the class.
*/
public function __construct($config = array())
{
parent::__construct($config);
$this->setProperties($config);
}
/**
* Returns a reference to a plugin object.
*
* This method must be invoked as:
* <pre> $advlink =AdvLink::getInstance();</pre>
*
* @return JCE The editor object
*
* @since 1.5
*/
public static function getInstance($config = array())
{
if (!isset(self::$instance)) {
self::$instance = new self($config);
}
return self::$instance;
}
public function display()
{
parent::display();
$document = WFDocument::getInstance();
// get all popups extensions
$popups = parent::loadExtensions('popups');
$config = $this->getProperties();
if ($config) {
// Create global config
$document->addScriptDeclaration('WFExtensions.Popups.setConfig(' . json_encode($config) . ');');
}
// Create an instance of each popup and check if enabled
foreach ($popups as $item) {
$popup = $this->getPopupExtension($item->name);
if ($popup->isEnabled()) {
$this->addPopup($item);
$params = $popup->getParams();
if (!empty($params)) {
$document->addScriptDeclaration('WFExtensions.Popups.setParams("' . $item->name . '",' . json_encode($params) . ');');
}
}
}
$tabs = WFTabs::getInstance();
// Add popup tab and assign popups reference to document
if (count($this->getPopups())) {
$tabs->addTab('popups');
$panel = $tabs->getPanel('popups');
$panel->popups = $this;
}
}
private function getPopups()
{
return $this->_popups;
}
public function addPopup($popup)
{
$this->_popups[] = $popup;
}
private function getTemplates()
{
return $this->_templates;
}
public function addTemplate($template)
{
$this->_templates[] = $template;
}
private function getPopupExtension($name)
{
static $popups = array();
if (!isset($popups[$name])) {
$classname = 'WFPopupsExtension_' . ucfirst($name);
$popups[$name] = new $classname();
}
return $popups[$name];
}
public function getPopupList()
{
$options = array();
$options[] = JHTML::_('select.option', '', '-- ' . JText::_('WF_POPUP_TYPE_SELECT') . ' --');
foreach ($this->getPopups() as $popup) {
$options[] = JHTML::_('select.option', $popup->name, JText::_('WF_POPUPS_' . strtoupper($popup->name) . '_TITLE'));
}
return JHTML::_('select.genericlist', $options, 'popup_list', '', 'value', 'text', $this->get('default'));
}
public function getPopupTemplates()
{
$output = '';
foreach ($this->getTemplates() as $template) {
$wf = WFEditorPlugin::getInstance();
$view = $wf->getView();
$output .= $view->loadTemplate($template);
}
foreach ($this->getPopups() as $popup) {
$view = new WFView(array(
'name' => $popup->name,
'base_path' => $popup->path,
'template_path' => $popup->path . '/tmpl',
));
$instance = $this->getPopupExtension($popup->name);
$view->popup = $instance;
if (file_exists($popup->path . '/tmpl/default.php')) {
ob_start();
$output .= '<div id="popup_extension_' . $popup->name . '" style="display:none;">';
$view->display();
$output .= ob_get_contents();
$output .= '</div>';
ob_end_clean();
}
}
return $output;
}
}