Exemplo n.º 1
0
 public function changeExtStatus()
 {
     include_once JPATH_ROOT . '/administrator/components/com_pagebuilder/helpers/extensions.php';
     $status = (int) JRequest::getInt('status');
     $idName = str_ireplace(JSN_PAGEBUILDER_EXT_IDENTIFIED_NAME_PREFIX, "", JRequest::getVar('identified_name'));
     $config = JSNConfigHelper::get('pagebuilder');
     if (isset($config->extension_support) && (string) $config->extension_support != '') {
         $extension_support = @json_decode($config->extension_support);
     } else {
         $extension_support = array();
     }
     // When disable status, update to configuration page
     if ($status == 0) {
         $extensionName = 'com_' . $idName;
         if (($valueRemove = array_search($extensionName, $extension_support)) !== false) {
             unset($extension_support[$valueRemove]);
         }
         $db = JFactory::getDbo();
         $query = $db->getQuery();
         $query->clear();
         $query->update('#__jsn_pagebuilder_config');
         $query->set('value =' . $db->quote(json_encode($extension_support)));
         $query->where('name =' . $db->quote('extension_support'));
         $db->setQuery($query);
         $db->query();
     }
     if (JSNPagebuilderHelpersExtensions::enableExt($idName, 'jsnpagebuilder', $status)) {
         exit('success');
     }
 }
Exemplo n.º 2
0
 public function installPbExtension()
 {
     $this->model = $this->getModel('installer');
     $canDo = JHelperContent::getActions('com_installer');
     if ($canDo->get('core.manage')) {
         try {
             $extResult = $this->model->download();
             $this->input->set('package', $extResult);
             // Set extension parameters
             $_GET['package'] = $extResult;
             $_GET['type'] = 'plugin';
             $_GET['folder'] = 'jsnpagebuilder';
             $_GET['publish'] = 1;
             $_GET['client'] = 'site';
             $_GET['name'] = str_ireplace(JSN_PAGEBUILDER_EXT_IDENTIFIED_NAME_PREFIX, '', $_GET['identified_name']);
             if ($this->model->install($extResult)) {
                 require_once JSNPB_ADMIN_PATH . '/helpers/extensions.php';
                 // Enable extension support
                 $identifiedName = str_ireplace(JSN_PAGEBUILDER_EXT_IDENTIFIED_NAME_PREFIX, '', $_GET['identified_name']);
                 try {
                     JSNPagebuilderHelpersExtensions::enableExt($identifiedName);
                 } catch (Exception $ex) {
                     exit('notenabled');
                 }
             }
         } catch (Exception $ex) {
             exit($ex->getMessage());
         }
         exit('success');
     }
 }
Exemplo n.º 3
0
 private function getConfiguration($supports)
 {
     $configuration = array('articles' => array('language' => 'com_content', 'modelfile' => 'components/com_content/models/articles.php'));
     $supportedExtConfigs = JSNPagebuilderHelpersExtensions::getExtConfigurations(str_ireplace(JSN_PAGEBUILDER_3RD_EXTENSION_STRING . '-', '', $supports));
     if (count($supportedExtConfigs)) {
         foreach ($supportedExtConfigs as $key => $config) {
             $configuration[JSN_PAGEBUILDER_3RD_EXTENSION_STRING . '-' . strtolower($key)] = $config;
         }
     }
 }
Exemplo n.º 4
0
 public static function getExtensionSupports($includeExtPlgs = true)
 {
     $config = JSNConfigHelper::get('com_pagebuilder');
     $extSupportOrder = json_decode($config->extension_support);
     $com_advancedmodules = JSNPagebuilderHelpersPagebuilder::checkComponentEnabled('com_advancedmodules') ? array('com_advancedmodules') : '';
     $flexiContent = JSNPagebuilderHelpersPagebuilder::checkComponentEnabled('com_flexicontent') ? array('com_flexicontent') : '';
     $extensions = array();
     if (count($extSupportOrder) > 0) {
         $configExtensions = json_decode($config->extension_support);
         $configExtensionsOrder = explode(",", $config->extension_support_order);
         if (count($configExtensionsOrder) > 0) {
             foreach ($configExtensionsOrder as $_exts) {
                 if (in_array($_exts, $configExtensions)) {
                     array_push($extensions, $_exts);
                 }
             }
         } else {
             $extensions = $configExtensions;
         }
     } else {
         $extensions = array('com_content', 'com_modules');
         if ($com_advancedmodules != '') {
             $extensions = array_merge($extensions, $com_advancedmodules);
         }
         if ($flexiContent != '') {
             $extensions = array_merge($extensions, $flexiContent);
         }
         if ($includeExtPlgs) {
             include_once JPATH_ROOT . '/administrator/components/com_pagebuilder/helpers/extensions.php';
             $installedComponents = self::getInstalledComponents();
             $supportList = JSNPagebuilderHelpersExtensions::getSupportedExtList();
             if (count($supportList)) {
                 foreach ($supportList as $extName => $value) {
                     if (in_array($extName, $installedComponents)) {
                         $extensions[] = $value->extension;
                     }
                 }
             }
         }
     }
     return $extensions;
 }
Exemplo n.º 5
0
<?php

/**
 * @version    $Id$
 * @package    JSN_PageBuilder
 * @author     JoomlaShine Team <*****@*****.**>
 * @copyright  Copyright (C) 2012 JoomlaShine.com. All Rights Reserved.
 * @license    GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html
 *
 * Websites: http://www.joomlashine.com
 * Technical Support:  Feedback - http://www.joomlashine.com/contact-us/get-support.html
 */
// No direct access to this file.
defined('_JEXEC') || die('Restricted access');
// Display messages
if (JFactory::getApplication()->input->getInt('ajax') != 1) {
    echo $this->msgs;
}
// Display config form
JSNConfigHelper::render($this->config);
$products = JSNPagebuilderHelpersExtensions::getDependentExtensions();
// Display footer
JSNHtmlGenerate::footer($products);
Exemplo n.º 6
0
 /**
  * Display the button
  *
  * @return
  */
 function onDisplay($name)
 {
     $app = JFactory::getApplication();
     if ($app->isSite()) {
         return;
     }
     include_once JPATH_ROOT . '/administrator/components/com_pagebuilder/helpers/articles.php';
     $listId = JSNPagebuilderHelpersArticles::getListArticleUedPagebuilderFromPlugin();
     $pbTotal = JSNPagebuilderHelpersArticles::getCountArticleUsedPageBuilderFromPlugin();
     JSNPagebuilderHelpersArticles::updateArticleUsedPageBuilderToPlugin();
     //Check if JoomlaShine extension framework is enabled?
     global $id, $option, $framework, $conf, $supported_list, $params, $random_id;
     // Check if JoomlaShine extension framework is enabled?
     $framework = JTable::getInstance('Extension');
     $framework->load(array('element' => 'jsnframework', 'type' => 'plugin', 'folder' => 'system'));
     $isInstalledPbExtension = false;
     $option = JRequest::getVar('option');
     $com_advancedmodules = JSNPagebuilderHelpersPagebuilder::checkComponentEnabled('com_advancedmodules') ? array('com_advancedmodules') : '';
     $flexiContent = JSNPagebuilderHelpersPagebuilder::checkComponentEnabled('com_flexicontent') ? array('com_flexicontent') : '';
     $supported_list = array('com_content', 'com_modules');
     if ($com_advancedmodules != '') {
         $supported_list = array_merge($supported_list, $com_advancedmodules);
     }
     if ($flexiContent != '') {
         $supported_list = array_merge($supported_list, $flexiContent);
     }
     if (isset($params)) {
         if ($params->extension_support != '') {
             $supported_list = json_decode($params->extension_support);
         }
     }
     $installedPbExtensions = JSNPagebuilderHelpersExtensions::getPbExtensions();
     if (count($installedPbExtensions)) {
         foreach ($installedPbExtensions as $installedPbExtension) {
             if ($option == "com_" . $installedPbExtension->element) {
                 if (!$installedPbExtension->enabled) {
                     $app->enqueueMessage(sprintf('Please enable the %s plugin before using. How to enable it, click <a href="%s" target="_blank">here</a>', 'JSN PageBuilder ' . strtoupper($installedPbExtension->element) . ' element', 'index.php?option=com_pagebuilder&view=configuration&s=maintainence&g=extensions'), 'warning');
                     return;
                 } else {
                     $isInstalledPbExtension = true;
                 }
                 break;
             }
         }
     }
     if ($isInstalledPbExtension) {
         if (!in_array($option, $supported_list)) {
             $app->enqueueMessage(sprintf('Please enable the JSN PageBuilder %s Extention Support before using. How to enable it, click <a href="%s" target="_blank">here</a>', strtoupper($installedPbExtension->element), 'index.php?option=com_pagebuilder&view=configuration&s=configuration&g=msgs'), 'warning');
             return;
         }
     }
     if ($framework->extension_id && in_array($option, $supported_list)) {
         // Get PageBuilder configuration
         if (!in_array($option, $supported_list)) {
             $isInstalled = JSNPagebuilderHelpersExtensions::checkInstalledPlugin(str_replace('com_', '', $option));
             if (!$isInstalled['isInstalled']) {
                 return;
             }
         }
         // Check if it's enabled or not
         $isEnabled = $params->get('enable_pagebuilder', 1);
         if ($isEnabled) {
             $conf = JFactory::getConfig();
             $editor = $conf->get('editor');
             // Inlcude the entry js file.
             JSNHtmlAsset::addScript(JSNPB_ADMIN_URL . '/assets/js/joomlashine.noconflict.js');
             JSNHtmlAsset::addScript(JSNPB_PLG_SYSTEM_ASSETS_URL . '3rd-party/jquery-ui/js/jquery-ui-1.10.3.custom.js');
             JSNHtmlAsset::addScript(JSNPB_PLG_SYSTEM_ASSETS_URL . '3rd-party/jquery-livequery/jquery.livequery.min.js');
             JSNHtmlAsset::addScript(JSNPB_ADMIN_URL . '/assets/js/builder-layout.js');
             JSNHtmlAsset::addScript(JSNPB_ADMIN_URL . '/assets/joomlashine/js/jsn-modal.js');
             JSNHtmlAsset::addScript(JSNPB_ADMIN_URL . '/assets/js/elements-lang.js');
             JSNHtmlAsset::addScript(JSNPB_ADMIN_URL . '/assets/js/jquery.alphanumeric/jquery.alphanumeric.js');
             JSNHtmlAsset::addScript(JSNPB_ADMIN_URL . '/assets/js/shortcodesetting/settings-handler.js');
             JSNHtmlAsset::addScript(JSNPB_ADMIN_URL . '/assets/js/handle.js');
             // Include supoported editor script
             switch ($editor) {
                 case 'codemirror':
                     JSNHtmlAsset::addScript(JURI::root(true) . '/plugins/editors-xtd/pagebuilder/assets/js/supported-editor/codemirror.js');
                     break;
                 case 'tinymce':
                     JSNHtmlAsset::addScript(JURI::root(true) . '/plugins/editors-xtd/pagebuilder/assets/js/supported-editor/tiny-mce.js');
                     break;
                 case 'jce':
                     JSNHtmlAsset::addScript(JURI::root(true) . '/plugins/editors-xtd/pagebuilder/assets/js/supported-editor/jce.js');
                     break;
                 case 'jckeditor':
                     JSNHtmlAsset::addScript(JURI::root(true) . '/plugins/editors-xtd/pagebuilder/assets/js/supported-editor/jckeditor.js');
                     break;
                 case 'ckeditor':
                     JSNHtmlAsset::addScript(JURI::root(true) . '/plugins/editors-xtd/pagebuilder/assets/js/supported-editor/ckeditor.js');
                     break;
                 case 'artofeditor':
                     JSNHtmlAsset::addScript(JURI::root(true) . '/plugins/editors-xtd/pagebuilder/assets/js/supported-editor/artofeditor.js');
                     break;
                 case 'arkeditor':
                     JSNHtmlAsset::addScript(JURI::root(true) . '/plugins/editors-xtd/pagebuilder/assets/js/supported-editor/arkeditor.js');
                     break;
                 default:
                     JSNHtmlAsset::addScript(JURI::root(true) . '/plugins/editors-xtd/pagebuilder/assets/js/supported-editor/default.js');
                     break;
             }
             // Generate random string to assign to switcher button
             $random_id = JSNPagebuilderHelpersShortcode::generateRandomString();
             JSNHtmlAsset::addScript(JSNPB_ADMIN_URL . '/assets/js/entry.js');
             $js = "\n\t\t\t\t\tvar Pb_Ajax\t= {};\n\n\t\t\t\t\tvar JSNPbParams = {pbstrings:{}};\n\t\t\t\t\tJSNPbParams.rootUrl = '" . JUri::root() . "';\n\t\t\t\t\tJSNPbParams.pbstrings.COPY = '" . JText::_('copy') . "';\n\t\t\t\t\tJSNPbParams.pbstrings.EMPTY = '" . JText::_('(Untitled)') . "';\n\t\t\t\t\tJSNPbParams.pbstrings.ALERT_DELETE_ROW = '" . JText::_('Are you sure you want to delete the whole row including all elements it contains?') . "';\n\t\t\t\t\tJSNPbParams.pbstrings.ALERT_DELETE_COLUMN = '" . JText::_('Are you sure you want to delete the whole column including all elements it contains?') . "';\n\t\t\t\t\tJSNPbParams.pbstrings.ALERT_DELETE_ELEMENT = '" . JText::_('Are you sure you want to delete the element?') . "';\n\t\t\t\t\tvar pb;\n\t\t\t\t\tvar pbContentStatus_{$random_id}\t= 'normal';\n\n\t\t\t\t\t// Set global pagebuilder instance\n\t\t\t\t\tvar jsnpb_{$random_id};\n\n\t\t\t\t\t// Method to switch between Joomla editor and PageBuilder\n\t\t\t\t\tfunction switchPagebuilder(id, status){\n\t\t\t\t\t\t(function (\$){\n\t\t\t\t\t\t\tif (status == 'on') {\n\t\t\t\t\t\t\t\tjsnpb_{$random_id}\t= new \$.JSNPageBuilder(id);\n\t\t\t\t\t\t\t\tpbContentStatus_{$random_id}  = 'pb';\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tjsnpb_{$random_id}.transformToSource();\n\t\t\t\t\t\t\t\tpbContentStatus_{$random_id}  = 'normal';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})(JoomlaShine.jQuery);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Entry button group structure which will be appended to the aditor\n\t\t\t\t\tvar pbEntryButtons\t= '<div class=\"jsn-form-bar pb-switcher-group\">'\n\t\t\t\t\t\t\t+ '<div id=\"pb-editor-switcher\" class=\"btn-group\">'\n\t\t\t\t\t\t\t+\t'<button type=\"button\" class=\"switchmode-button pb-off btn active btn-success\" id=\"pagebuilder-off-{$random_id}\" >Default Editor</button>'\n\t\t\t\t\t\t\t+\t'<button type=\"button\" class=\"switchmode-button pb-on btn\" id=\"pagebuilder-on-{$random_id}\" >PageBuilder</button>'\n\t\t\t\t\t\t\t+'</div>'\n\t\t\t\t\t\t\t+\t'<input type=\"hidden\" id=\"jform_pb_total\" name=\"jform_pb_total\" value=\"{$pbTotal}\">'\n\t\t\t\t\t\t\t+\t'<input type=\"hidden\" id=\"jform_content_id\" name=\"jform_content_id\" value=\"{$id}\">'\n\t\t\t\t\t\t\t+\t'<input type=\"hidden\" id=\"jform_list_id\" name=\"jform_list_id\" value=\"{$listId}\">'\n\t\t\t\t\t\t\t+'<div class=\"pull-right\" id=\"top-btn-actions\">'\n                                +'<!--<button class=\"btn btn-default page-custom-css\" onclick=\"return false;\">Custom CSS</button>-->'\n                                +   '<input type=\"hidden\" id=\"pb_content_id\" name=\"pb_content_id\" value=\"{$id}\">'\n                            +'</div>'\n\t\t\t\t\t\t+'</div>';\n\n\t\t\t\t\t(function (\$){\n\t\t\t\t\t\t\$(window).load(function (){\n\t\t\t\t\t\t\$('body').find('ul#myTabTabs li:first').on('click', function(){\n\t\t\t\t\t\t\t\$('.switchmode-button.pb-off').click();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (\$('#jform_module').length)\n\t\t\t\t\t\t   \t\t{\n\t\t\t\t\t\t\t\t\tif (\$('#jform_module').val() != 'mod_custom')\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t \treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t   }\n\t\t\t\t\t\t\tvar editorHelper_{$random_id}\t= new \$.JSNPbEditorHelper();\n\t\t\t\t\t\t\tvar buttonGroups\t= editorHelper_{$random_id}.initEntryButtons('" . $name . "', pbEntryButtons);\n\n\t\t\t\t\t\t\t//Auto switch to PageBuilder if shortcode structure detected\n\t\t\t\t\t\t\tvar _content\t= \$('#" . $name . "').val();\n\t\t\t\t\t\t\tif (_content.indexOf('[pb_row') >= 0) {\n\t\t\t\t\t\t\t\t//setTimeout(function (){\n\t\t\t\t\t\t\t\t\t\$('.switchmode-button.pb-on', buttonGroups).click();\n\t\t\t\t\t\t\t\t//}, 500);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})(JoomlaShine.jQuery);\n\t\t\t\t";
             JSNHtmlAsset::addInlineScript($js);
             JSNHtmlAsset::addStyle(JSNPB_FRAMEWORK_ASSETS . '/3rd-party/jquery-ui/css/ui-bootstrap/jquery-ui-1.9.0.custom.css');
             JSNHtmlAsset::addStyle(JSNPB_FRAMEWORK_ASSETS . '/joomlashine/css/jsn-gui.css');
             JSNHtmlAsset::addStyle(JSNPB_PLG_SYSTEM_ASSETS_URL . 'css/pagebuilder.css');
             JSNHtmlAsset::addStyle(JSNPB_ADMIN_URL . '/assets/css/jsn-element-font.css');
             JSNHtmlAsset::addStyle(JSNPB_FRAMEWORK_ASSETS . '/joomlashine/css/jsn-advanced-parameters.css');
             // for text,
             JSNHtmlAsset::addStyle(JSNPB_ADMIN_URL . '/assets/css/settings.css');
         }
     }
 }
Exemplo n.º 7
0
 public function getItemK2()
 {
     jimport('joomla.application.component.helper');
     if (JSNPagebuilderHelpersExtensions::enableExt('k2', 'jsnpagebuilder', true) == false) {
         return false;
     }
     $db = JFactory::getDbo();
     $db->getQuery(true);
     $db->setQuery("SELECT enabled FROM #__extensions WHERE name = 'com_k2'");
     $is_enabled = $db->loadResult();
     if ($is_enabled == 1) {
         $query = $db->getQuery(true);
         $query->clear();
         $query->select('k.id, k.title, k.catid, k.published, k.publish_up, k.publish_down, kc.name AS category');
         $query->from('#__k2_items AS k');
         $query->leftJoin('#__k2_categories AS kc ON k.catid = kc.id');
         $query->where("k.introtext LIKE '%pb_row%' AND k.published !=-2");
         $db->setQuery($query);
         $k2 = $db->loadObjectList();
         return $k2;
     }
 }
Exemplo n.º 8
0
    protected function getInput()
    {
        require_once JSNPB_ADMIN_PATH . '/helpers/extensions.php';
        require_once JSNPB_ADMIN_PATH . '/helpers/pagebuilder.php';
        $supportedExtList = JSNPagebuilderHelpersExtensions::getSupportedExtList();
        JSNHtmlAsset::addStyle(JSNPB_PLG_SYSTEM_ASSETS_URL . 'css/pagebuilder.css');
        JSNHtmlAsset::addScript('http://code.jquery.com/jquery-2.1.0.min.js');
        JSNHtmlAsset::addScript(JSNPB_PLG_SYSTEM_ASSETS_URL . '/3rd-party/jquery-ui/js/jquery-ui-1.10.3.custom.js');
        JSNHtmlAsset::addScript(JSNPB_PLG_SYSTEM_ASSETS_URL . '/3rd-party/jquery-livequery/jquery.livequery.min.js');
        JSNHtmlAsset::addScript(JSNPB_PLG_SYSTEM_ASSETS_URL . 'js/joomlashine.noconflict.js');
        JSNHtmlAsset::addScript(JURI::root(true) . '/plugins/system/jsnframework/assets/3rd-party/jquery-tipsy/jquery.tipsy.js');
        JSNHtmlAsset::addScript(JSNPB_ASSETS_URL . 'js/configuration/extmanager.js');
        $customScript = "var baseUrl = '" . JURI::root() . "';";
        JSNHtmlAsset::addInlineScript($customScript);
        if (count($supportedExtList)) {
            $installedComponents = JSNPagebuilderHelpersPagebuilder::getInstalledComponents();
            foreach ($supportedExtList as $key => $ext) {
                $_shortName = str_ireplace("com_", "", $key);
                $ext->name = $_shortName;
                $ext->comInstalled = in_array($key, $installedComponents) ? true : false;
                $extStatus = JSNPagebuilderHelpersExtensions::checkInstalledPlugin($_shortName);
                if ($extStatus['isInstalled']) {
                    $ext->plgInstalled = true;
                    $ext->enabled = $extStatus['isEnabled'];
                } else {
                    $ext->plgInstalled = false;
                    $ext->enabled = false;
                }
                $list[$_shortName] = $ext;
            }
        }
        $html[] = '<div class="jsn-supported-ext-list">
                    <input type="hidden" id="label-disable" value="' . JText::_('JSN_PAGEBUILDER_EXTPAGE_DISABLE') . '">
					<input type="hidden" id="label-enable" value="' . JText::_('JSN_PAGEBUILDER_EXTPAGE_ENABLE') . '">
					<input type="hidden" id="label-install" value="' . JText::_('JSN_PAGEBUILDER_EXTPAGE_INSTALL') . '">
                ';
        $html[] = '<ul class="thumbnails">';
        foreach ($list as $ext) {
            $_className = '';
            $_alt = '';
            $posibleAct = '';
            $_id = JSN_PAGEBUILDER_EXT_IDENTIFIED_NAME_PREFIX . $ext->name;
            if (!$ext->plgInstalled) {
                if (!$ext->comInstalled) {
                    $_className = 'item-locked';
                    $_alt = JText::_('JSN_PAGEBUILDER_EXTPAGE_COM_NOT_INSTALLED_EXPLAIN');
                    $posibleAct = '<a class="btn btn-primary disabled"' . JText::_('JSN_PAGEBUILDER_EXTPAGE_COM_NOT_INSTALLED_EXPLAIN') . '">' . JText::_('JSN_PAGEBUILDER_EXTPAGE_INSTALL') . '</a>';
                } else {
                    $_className = 'item-locked';
                    $_alt = JText::_('JSN_PAGEBUILDER_EXTPAGE_COM_NOT_INSTALLED_EXPLAIN');
                    $posibleAct = '<a class="btn btn-primary" id="' . $_id . '" act="install" href="#">' . JText::_('JSN_PAGEBUILDER_EXTPAGE_INSTALL') . '</a>';
                }
            } else {
                if ($ext->plgInstalled) {
                    if (!$ext->enabled) {
                        $_className = 'item-installed item-disabled';
                        $_alt = JText::_('JSN_PAGEBUILDER_EXTPAGE_CLICK_TO_ENABLED');
                        $posibleAct = '<a class="btn btn-primary" id="' . $_id . '" act="enable" href="#">' . JText::_('JSN_PAGEBUILDER_EXTPAGE_ENABLE') . '</a>';
                    } else {
                        $_className = 'item-installed item-enabled';
                        $_alt = JText::_('JSN_PAGEBUILDER_EXTPAGE_CLICK_TO_DISABLE');
                        $posibleAct = '<a class="btn btn-primary" id="' . $_id . '" act="disable" href="#">' . JText::_('JSN_PAGEBUILDER_EXTPAGE_DISABLE') . '</a>';
                    }
                } else {
                    $_className = 'item-notinstalled';
                    $_alt = JText::_('JSN_PAGEBUILDER_EXTPAGE_CLICK_TO_INSTALL');
                    $posibleAct = '<a class="btn btn-primary" id="' . $_id . '" act="install" href="#">' . JText::_('JSN_PAGEBUILDER_EXTPAGE_INSTALL') . '</a>';
                }
            }
            $html[] = '<li class="span4">
                            <div class="thumbnail">
                                <img src="' . $ext->thumbnail . '" alt="">
                                <div class="caption">
                                    <h2>' . ucfirst($ext->name) . ' </h2>
                                    <p>' . $posibleAct . '</p>
                                </div>
                            </div>
                        </li>';
        }
        $html[] = '</ul>';
        $html[] = '</div>';
        return implode($html);
    }