172 lines
4.5 KiB
PHP
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;
|
|
}
|
|
}
|