215 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			215 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * @package     FrameworkOnFramework
 | |
|  * @subpackage  render
 | |
|  * @copyright   Copyright (C) 2010-2016 Nicholas K. Dionysopoulos / Akeeba Ltd. All rights reserved.
 | |
|  * @license     GNU General Public License version 2 or later; see LICENSE.txt
 | |
|  */
 | |
| defined('F0F_INCLUDED') or die;
 | |
| 
 | |
| /**
 | |
|  * Joomla! 3 view renderer class
 | |
|  *
 | |
|  * @package  FrameworkOnFramework
 | |
|  * @since    2.0
 | |
|  */
 | |
| class F0FRenderJoomla3 extends F0FRenderStrapper
 | |
| {
 | |
| 	/**
 | |
| 	 * Public constructor. Determines the priority of this class and if it should be enabled
 | |
| 	 */
 | |
| 	public function __construct()
 | |
| 	{
 | |
| 		$this->priority	 = 55;
 | |
| 		$this->enabled	 = version_compare(JVERSION, '3.0', 'ge');
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Echoes any HTML to show before the view template
 | |
| 	 *
 | |
| 	 * @param   string    $view    The current view
 | |
| 	 * @param   string    $task    The current task
 | |
| 	 * @param   F0FInput  $input   The input array (request parameters)
 | |
| 	 * @param   array     $config  The view configuration array
 | |
| 	 *
 | |
| 	 * @return  void
 | |
| 	 */
 | |
| 	public function preRender($view, $task, $input, $config = array())
 | |
| 	{
 | |
| 		$format	 = $input->getCmd('format', 'html');
 | |
| 
 | |
| 		if (empty($format))
 | |
| 		{
 | |
| 			$format	 = 'html';
 | |
| 		}
 | |
| 
 | |
| 		if ($format != 'html')
 | |
| 		{
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		$platform = F0FPlatform::getInstance();
 | |
| 
 | |
| 		if ($platform->isCli())
 | |
| 		{
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		if (version_compare(JVERSION, '3.3.0', 'ge'))
 | |
| 		{
 | |
| 			JHtml::_('behavior.core');
 | |
| 		}
 | |
| 		else
 | |
| 		{
 | |
| 			JHtml::_('behavior.framework', true);
 | |
| 		}
 | |
| 
 | |
| 		JHtml::_('jquery.framework');
 | |
| 
 | |
| 		if ($platform->isBackend())
 | |
| 		{
 | |
| 			// Wrap output in various classes
 | |
| 			$version = new JVersion;
 | |
| 			$versionParts = explode('.', $version->RELEASE);
 | |
| 			$minorVersion = str_replace('.', '', $version->RELEASE);
 | |
| 			$majorVersion = array_shift($versionParts);
 | |
| 
 | |
| 			$option = $input->getCmd('option', '');
 | |
| 			$view = $input->getCmd('view', '');
 | |
| 			$layout = $input->getCmd('layout', '');
 | |
| 			$task = $input->getCmd('task', '');
 | |
| 
 | |
| 			$classes = ' class="' . implode(array(
 | |
| 				'joomla-version-' . $majorVersion,
 | |
| 				'joomla-version-' . $minorVersion,
 | |
| 				'admin',
 | |
| 				$option,
 | |
| 				'view-' . $view,
 | |
| 				'layout-' . $layout,
 | |
| 				'task-' . $task,
 | |
| 			), ' ') . '"';
 | |
| 		}
 | |
| 		else
 | |
| 		{
 | |
| 			$classes = '';
 | |
| 		}
 | |
| 
 | |
| 		echo '<div id="akeeba-renderjoomla"' . $classes . ">\n";
 | |
| 
 | |
| 		// Render the submenu and toolbar
 | |
| 		if ($input->getBool('render_toolbar', true))
 | |
| 		{
 | |
| 			$this->renderButtons($view, $task, $input, $config);
 | |
| 			$this->renderLinkbar($view, $task, $input, $config);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Echoes any HTML to show after the view template
 | |
| 	 *
 | |
| 	 * @param   string    $view    The current view
 | |
| 	 * @param   string    $task    The current task
 | |
| 	 * @param   F0FInput  $input   The input array (request parameters)
 | |
| 	 * @param   array     $config  The view configuration array
 | |
| 	 *
 | |
| 	 * @return  void
 | |
| 	 */
 | |
| 	public function postRender($view, $task, $input, $config = array())
 | |
| 	{
 | |
| 		$format	 = $input->getCmd('format', 'html');
 | |
| 
 | |
| 		if (empty($format))
 | |
| 		{
 | |
| 			$format	 = 'html';
 | |
| 		}
 | |
| 
 | |
| 		if ($format != 'html')
 | |
| 		{
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		// Closing tag only if we're not in CLI
 | |
| 		if (F0FPlatform::getInstance()->isCli())
 | |
| 		{
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		echo "</div>\n";    // Closes akeeba-renderjoomla div
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Renders the submenu (link bar)
 | |
| 	 *
 | |
| 	 * @param   string    $view    The active view name
 | |
| 	 * @param   string    $task    The current task
 | |
| 	 * @param   F0FInput  $input   The input object
 | |
| 	 * @param   array     $config  Extra configuration variables for the toolbar
 | |
| 	 *
 | |
| 	 * @return  void
 | |
| 	 */
 | |
| 	protected function renderLinkbar($view, $task, $input, $config = array())
 | |
| 	{
 | |
| 		$style = 'joomla';
 | |
| 
 | |
| 		if (array_key_exists('linkbar_style', $config))
 | |
| 		{
 | |
| 			$style = $config['linkbar_style'];
 | |
| 		}
 | |
| 
 | |
| 		switch ($style)
 | |
| 		{
 | |
| 			case 'joomla':
 | |
| 				$this->renderLinkbar_joomla($view, $task, $input);
 | |
| 				break;
 | |
| 
 | |
| 			case 'classic':
 | |
| 			default:
 | |
| 				$this->renderLinkbar_classic($view, $task, $input);
 | |
| 				break;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Renders a label for a fieldset.
 | |
| 	 *
 | |
| 	 * @param   object  	$field  	The field of the label to render
 | |
| 	 * @param   F0FForm   	&$form      The form to render
 | |
| 	 * @param 	string		$title		The title of the label
 | |
| 	 *
 | |
| 	 * @return 	string		The rendered label
 | |
| 	 */
 | |
| 	protected function renderFieldsetLabel($field, F0FForm &$form, $title)
 | |
| 	{
 | |
| 		$html = '';
 | |
| 
 | |
| 		$labelClass	 = $field->labelClass ? $field->labelClass : $field->labelclass; // Joomla! 2.5/3.x use different case for the same name
 | |
| 		$required	 = $field->required;
 | |
| 
 | |
| 		$tooltip = $form->getFieldAttribute($field->fieldname, 'tooltip', '', $field->group);
 | |
| 
 | |
| 		if (!empty($tooltip))
 | |
| 		{
 | |
| 			JHtml::_('bootstrap.tooltip');
 | |
| 
 | |
| 			$tooltipText = '<strong>' . JText::_($title) . '</strong><br />' . JText::_($tooltip);
 | |
| 
 | |
| 			$html .= "\t\t\t\t" . '<label class="control-label hasTooltip ' . $labelClass . '" for="' . $field->id . '" title="' . $tooltipText . '" rel="tooltip">';
 | |
| 		}
 | |
| 		else
 | |
| 		{
 | |
| 			$html .= "\t\t\t\t" . '<label class="control-label ' . $labelClass . '" for="' . $field->id . '">';
 | |
| 		}
 | |
| 
 | |
| 		$html .= JText::_($title);
 | |
| 
 | |
| 		if ($required)
 | |
| 		{
 | |
| 			$html .= ' *';
 | |
| 		}
 | |
| 
 | |
| 		$html .= '</label>' . PHP_EOL;
 | |
| 
 | |
| 		return $html;
 | |
| 	}
 | |
| }
 |