%PDF- %PDF-
| Direktori : /home/lightco1/www/lightcolab.com/components/com_jce/editor/libraries/classes/extensions/ |
| Current File : /home/lightco1/www/lightcolab.com/components/com_jce/editor/libraries/classes/extensions/popups.php |
<?php
/**
* @copyright Copyright (c) 2009-2017 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('_JEXEC') or die('RESTRICTED');
wfimport('editor.libraries.classes.extensions');
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');
$tabs->getPanel('popups')->assign('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', '', '-- '.WFText::_('WF_POPUP_TYPE_SELECT').' --');
foreach ($this->getPopups() as $popup) {
$options[] = JHTML::_('select.option', $popup->name, WFText::_('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->assign('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;
}
}