%PDF- %PDF-
| Direktori : /home/lightco1/luminero.com.au/administrator/components/com_pagebuilder/controllers/ |
| Current File : /home/lightco1/luminero.com.au/administrator/components/com_pagebuilder/controllers/shortcode.php |
<?php
/**
* @version $Id$
* @package JSN_PageBuilder
* @author JoomlaShine Team <support@joomlashine.com>
* @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');
/**
* Shortcode controller
*
* @package JSN_PageBuilder
* @since 1.0.0
*/
class JSNPagebuilderControllerShortcode extends JSNBaseController
{
/**
* Save session for shortcode params
*
* @return void
*/
public function saveSession()
{
JSession::checkToken('get') or jexit( 'Invalid Token' );
// Using $_POST instead JRequest::getVar() because getVar() can't get tinyMCE content has img tag
$app = JFactory::getApplication();
$params = $app->input->get('params', '', 'RAW');
$params = str_replace( 'PB_INDEX_TRICK', '1', $params );
$shortcodeName = JRequest::getVar('shortcode');
if ($params && $shortcodeName) {
$session = JFactory::getSession();
$_SESSION[JSNPB_SHORTCODE_SESSION_NAME][$shortcodeName]['params'] = $params;
$session->set('JSNPA_SHORTCODEPARAMS', $params);
}
exit();
}
/**
* Method to generate HTML content for shortcode
* in pagebuilder layout
*
* @return string
*/
public function generateHolder()
{
JSession::checkToken('get') or jexit( 'Invalid Token' );
// Using $_POST instead JRequest::getVar() because getVar() can't get tinyMCE content has img tag
$app = JFactory::getApplication();
$params = $app->input->get('params', '', 'RAW');
$params = urldecode($params);
//echo $params;
//die;
$shortcode = JRequest::getVar('shortcode');
$element_title = JRequest::getVar('el_title');
$class = JSNPagebuilderHelpersShortcode::getShortcodeClass($shortcode);
$instance = null;
global $JSNPbElements;
$elements = $JSNPbElements->getElements();
$instance = isset($elements[strtolower($class)]) ? $elements[strtolower($class)] : null;
if (!is_object($instance)) {
$instance = new $class();
}
// Process icon prepend title
if ( isset( $instance->items ) ) {
$items = array_shift( $instance->items );
foreach( $items as $i => $item ) {
if ( ( isset( $item['role'] ) && isset( $item['role_type'] ) ) && ( $item['role'] == 'title_prepend' && $item['role_type'] == 'icon' ) ) {
$arr_params = JSNPagebuilderHelpersShortcode::shortcodeParseAtts( $params );
$element = JSNPagebuilderHelpersShortcode::shortcodeAtts( $instance->config['params'], $arr_params );
if ( isset( $element['icon'] ) ) {
$element_title = '<i class="' . $element['icon'] . '"></i>' . $element_title;
}
}
}
}
$content = $instance->element_in_pgbldr('', $params, $element_title);
echo $content;
exit();
}
/**
* Method to generate shortcode preview
*
* @return string
*/
public function preview()
{
JSession::checkToken('get') or jexit( 'Invalid Token' );
$session = JFactory::getSession();
JHtml::_('jquery.framework');
JHtml::_('bootstrap.framework');
$document = JFactory::getDocument();
$document->addScript( JSNPB_PLG_SYSTEM_ASSETS_URL . 'js/joomlashine.noconflict.js', 'text/javascript');
$document->addScript( JSNPB_PLG_SYSTEM_ASSETS_URL . '3rd-party/bootstrap3/js/bootstrap.min.js', 'text/javascript' );
$document->addStyleSheet( JSNPB_PLG_SYSTEM_ASSETS_URL . '3rd-party/bootstrap3/css/bootstrap.min.css', 'text/css' );
$document->addStyleSheet( JSNPB_PLG_SYSTEM_ASSETS_URL . 'css/jsn-gui-frontend.css', 'text/css' );
$document->addStyleSheet( JSNPB_PLG_SYSTEM_ASSETS_URL . 'css/pagebuilder.css', 'text/css' );
$document->addStyleSheet( JSNPB_PLG_SYSTEM_ASSETS_URL . 'css/front_end.css', 'text/css' );
$document->addStyleSheet( JSNPB_PLG_SYSTEM_ASSETS_URL . 'css/front_end_responsive.css', 'text/css' );
$document->addStyleSheet( JSNPB_ASSETS_URL . 'css/preview.css', 'text/css' );
$app = JFactory::getApplication();
$params = $app->input->get('params', '', 'RAW');
if (!$params) {
exit (JText::_("JSN_PAGEBUILDER_CONTROLLERS_SHORTCODE_CANNOT_FIND_INPUT_DATA"));
}
$shortcode_content = urldecode($params);
$session->set('JSNPA_SHORTCODECONTENT', $shortcode_content);
$helper = new JSNPagebuilderHelpersBuilder();
$html = $helper->generateShortCode($shortcode_content, false, 'frontend');
echo '<div class="jsn-bootstrap3">' . $html . '</div>';
}
/**
* Load custom action for elements
*
* @return void
*/
public function customAction() {
JSession::checkToken('get') or jexit( 'Invalid Token' );
$app = JFactory::getApplication();
$post = $app->input->getArray($_POST);
$shortcode = isset( $post['shortcode'] ) ? $post['shortcode'] : '';
$action = isset( $post['action'] ) ? $post['action'] : '';
if ( ! empty( $shortcode ) && ! empty( $action ) ) {
// Check file exists
if ( file_exists( JPATH_ROOT . "/plugins/pagebuilder/{$shortcode}/helpers/{$action}.php" ) ) {
require_once JPATH_ROOT . "/plugins/pagebuilder/{$shortcode}/helpers/{$action}.php";
}
}
if ( ! empty( $shortcode ) && ! empty( $action ) ) {
// Check file exists
if ( file_exists( JPATH_ROOT . "/plugins/jsnpagebuilder/defaultelements/{$shortcode}/helpers/{$action}.php" ) ) {
require_once JPATH_ROOT . "/plugins/jsnpagebuilder/defaultelements/{$shortcode}/helpers/{$action}.php";
}
}
}
/**
* Method to print element settings
*/
public function settings() {
JSession::checkToken('get') or jexit( 'Invalid Token' );
$js = '
var JSNPbParams = {pbstrings : {}};
JSNPbParams.rootUrl = \'' . JUri::root() . '\';
JSNPbParams.pbstrings.NO_ITEM_FOUND = \'' . JText::_( 'JSN_PAGEBUILDER_CONTROLLERS_SHORTCODE_NO_ITEM_FOUND' ) . '\';
JSNPbParams.pbstrings.SINGLE_ENTRY = \'' . JText::_( 'JSN_PAGEBUILDER_CONTROLLERS_SHORTCODE_SINGLE_ENTRY' ) . '\';
JSNPbParams.pbstrings.SETTINGS = \'' . JText::_( 'JSN_PAGEBUILDER_CONTROLLERS_SHORTCODE_SETTINGS' ) . '\';
JSNPbParams.pbstrings.INVALID_LINK = \'' . JText::_( 'JSN_PAGEBUILDER_CONTROLLERS_SHORTCODE_THE_LINK_IS_INVALID' ) . '\';
JSNPbParams.pbstrings.COPY = \'' . JText::_( 'JSN_PAGEBUILDER_CONTROLLERS_SHORTCODE_COPY' ) . '\';
JSNPbParams.pbstrings.EMPTY = \'' . JText::_('JSN_PAGEBUILDER_CONTROLLERS_SHORTCODE_EMPTY') . '\';
JSNPbParams.pbstrings.SELECT_DES_MARKER = \'' . JText::_( 'JSN_PAGEBUILDER_CONTROLLERS_SHORTCODE_SELECT_DES_MARKER' ) . '\';
JSNPbParams.pbstrings.ALERT_DELETE_ROW = \'' . JText::_('JSN_PAGEBUILDER_CONTROLLERS_SHORTCODE_ALERT_DELETE_ROW') . '\';
JSNPbParams.pbstrings.ALERT_DELETE_COLUMN = \'' . JText::_('JSN_PAGEBUILDER_CONTROLLERS_SHORTCODE_ALERT_DELETE_COLUMN') . '\';
JSNPbParams.pbstrings.ALERT_DELETE_ELEMENT = \'' . JText::_('JSN_PAGEBUILDER_CONTROLLERS_SHORTCODE_ALERT_DELETE_ELEMENT') . '\';
';
JSNPagebuilderHelpersFunctions::print_asset_tag($js, 'js', null, true);
$shortcode = JRequest::getString('shortcode');
$app = JFactory::getApplication();
$params = $app->input->get('params', '', 'RAW');
$params = isset($params) ? $params : '';
// TODO: move under assets inside shortcode
// Add common js library for elements.
JSNPagebuilderHelpersFunctions::print_asset_tag(JSNPB_FRAMEWORK_ASSETS . '/3rd-party/jquery-tipsy/jquery.tipsy.js', 'js');
JSNPagebuilderHelpersFunctions::print_asset_tag(JSNPB_FRAMEWORK_ASSETS . '/3rd-party/jquery-tipsy/tipsy.css', 'css');
JSNPagebuilderHelpersFunctions::print_asset_tag(JSNPB_FRAMEWORK_ASSETS . '/joomlashine/css/jsn-general.css', 'css'); // for accordion_item, buttonbar_item,
JSNPagebuilderHelpersFunctions::print_asset_tag(JSNPB_FRAMEWORK_ASSETS . '/joomlashine/css/jsn-fonticomoon.css', 'css'); // for accordion_item, buttonbar_item,
$extract_params = '';
$shortcodeHelper = new JSNPagebuilderHelpersShortcode();
$data = array();
if (!empty($shortcode)) {
// elements
$class = $shortcodeHelper->getShortcodeClass($shortcode);
if (class_exists($class)) {
// Get all regitered element shortcodes
global $JSNPbElements;
$elements = $JSNPbElements->getElements();
$instance = isset($elements[strtolower($class)]) ? $elements[strtolower($class)] : null;
// Init and register new instance if it not
if (!is_object($instance))
$instance = new $class();
$instance->backend_element_items();
if ($shortcode != "pb_row" && $shortcode != "pb_column") {
$instance->element_items_extra();
}
// recall this to re-extract params
$instance->shortcode_data();
if (!empty($params)) {
$params = stripslashes($params);
// $params = urldecode($params);
}else{
$params = $instance->config['shortcode_structure'];
}
// Add neccessary assets for the shortcode
$instance->backend_element_assets();
if (!empty($params)) {
$extract_params = JSNPagebuilderHelpersShortcode::extractParams($params, $shortcode);
// if have sub-shortcode, get content
if (!empty($instance->config['has_subshortcode'])) {
$sub_sc_data = JSNPagebuilderHelpersShortcode::extractSubShortcode($params, true);
$extract_params['sub_sc_content'] = $sub_sc_data;
}
// MODIFY $instance->items
$shortcodeHelper->generateShortcodeParams($instance->items, NULL, $extract_params, TRUE);
// recall this to re-extract params
$instance->shortcode_data();
}
// get Modal setting box
$settings = $instance->items;
$shortcodeAterfix = substr($shortcode,-5);
$showPreview = true;
if($shortcodeAterfix == '_item'){
$showPreview = false;
}
if($shortcode == 'pb_row'){
$showPreview = false;
}
$modalContent = $shortcodeHelper->getShortcodeModalSettings($settings, $shortcode, $extract_params);
}
}
$html[] = '';
if($showPreview) $html[] = '<div id="jsn_column1" class="pull-left">';
$html[] = '<div class="jsn-bootstrap" id="settings-form-container">
<div id="modalOptions" class="form-horizontal modalOptions">
' . $modalContent . '
<div id="modalAction"></div>
</div>
<textarea class="hidden" id="shortcode_content" name="shortcode_content">' . $params . '</textarea>
<textarea class="hidden" id="pb_share_data" ></textarea>
<textarea class="hidden" id="pb_merge_data" ></textarea>
<textarea class="hidden" id="pb_extract_data" ></textarea>
<input type="hidden" id="pb_previewing" value="0" />
<input id="shortcode_name" name="shortcode_name" type="hidden" value="' . $shortcode . '" />
</div>';
if($showPreview) $html[] = '</div>';
if($showPreview){
$html[] = '<div id="jsn_column2" class="pull-left">
<div class="preview_title">' . JText::_("JSN_PAGEBUILDER_CONTROLLERS_SHORTCODE_PREVIEW") . '</div>
<div id="framePreview" class="preview_border">
<div id="iframeLoading" class="iframe_loading_border"><div class="iframe_loading_image"><img src="components/com_pagebuilder/assets/images/icons-32/ajax-loader.gif"></div></div>
<div class="control-group">
<div id="preview_container">
<iframe id="shortcode_preview_iframe" scrolling="auto" name="shortcode_preview_iframe" class="shortcode_preview_iframe" width="100%"></iframe>
<div id="preview"></div>
</div>
</div>
</div>
</div>';
}
$html[] = '<div class="clearfix"></div>';
print_r(implode('', $html));
exit();
}
}