%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/lightco1/luminero.com.au/administrator/components/com_pagebuilder/controllers/
Upload File :
Create Path :
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();
	}
	
}

Zerion Mini Shell 1.0