177 lines
4.2 KiB
PHP
177 lines
4.2 KiB
PHP
<?php
|
|
/**
|
|
* @package FrameworkOnFramework
|
|
* @subpackage view
|
|
* @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
|
|
*/
|
|
// Protect from unauthorized access
|
|
defined('F0F_INCLUDED') or die;
|
|
|
|
/**
|
|
* FrameworkOnFramework HTML output class. Together with PHP-based view tempalates
|
|
* it will render your data into an HTML representation.
|
|
*
|
|
* @package FrameworkOnFramework
|
|
* @since 2.1
|
|
*/
|
|
class F0FViewHtml extends F0FViewRaw
|
|
{
|
|
/** @var bool Should I set the page title in the front-end of the site? */
|
|
public $setFrontendPageTitle = false;
|
|
|
|
/** @var string The translation key for the default page title */
|
|
public $defaultPageTitle = null;
|
|
|
|
/**
|
|
* Class constructor
|
|
*
|
|
* @param array $config Configuration parameters
|
|
*/
|
|
public function __construct($config = array())
|
|
{
|
|
// Make sure $config is an array
|
|
if (is_object($config))
|
|
{
|
|
$config = (array)$config;
|
|
}
|
|
elseif (!is_array($config))
|
|
{
|
|
$config = array();
|
|
}
|
|
|
|
if (isset($config['setFrontendPageTitle']))
|
|
{
|
|
$this->setFrontendPageTitle = (bool)$config['setFrontendPageTitle'];
|
|
}
|
|
|
|
if (isset($config['defaultPageTitle']))
|
|
{
|
|
$this->defaultPageTitle = $config['defaultPageTitle'];
|
|
}
|
|
|
|
parent::__construct($config);
|
|
}
|
|
|
|
/**
|
|
* Runs before rendering the view template, echoing HTML to put before the
|
|
* view template's generated HTML
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function preRender()
|
|
{
|
|
$view = $this->input->getCmd('view', 'cpanel');
|
|
$task = $this->getModel()->getState('task', 'browse');
|
|
|
|
// Don't load the toolbar on CLI
|
|
|
|
if (!F0FPlatform::getInstance()->isCli())
|
|
{
|
|
$toolbar = F0FToolbar::getAnInstance($this->input->getCmd('option', 'com_foobar'), $this->config);
|
|
$toolbar->perms = $this->perms;
|
|
$toolbar->renderToolbar($view, $task, $this->input);
|
|
}
|
|
|
|
if (F0FPlatform::getInstance()->isFrontend())
|
|
{
|
|
if ($this->setFrontendPageTitle)
|
|
{
|
|
$this->setPageTitle();
|
|
}
|
|
}
|
|
|
|
$renderer = $this->getRenderer();
|
|
$renderer->preRender($view, $task, $this->input, $this->config);
|
|
}
|
|
|
|
/**
|
|
* Runs after rendering the view template, echoing HTML to put after the
|
|
* view template's generated HTML
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function postRender()
|
|
{
|
|
$view = $this->input->getCmd('view', 'cpanel');
|
|
$task = $this->getModel()->getState('task', 'browse');
|
|
|
|
$renderer = $this->getRenderer();
|
|
|
|
if ($renderer instanceof F0FRenderAbstract)
|
|
{
|
|
$renderer->postRender($view, $task, $this->input, $this->config);
|
|
}
|
|
}
|
|
|
|
public function setPageTitle()
|
|
{
|
|
$document = JFactory::getDocument();
|
|
$app = JFactory::getApplication();
|
|
$menus = $app->getMenu();
|
|
$menu = $menus->getActive();
|
|
$title = null;
|
|
|
|
// Get the option and view name
|
|
$option = empty($this->option) ? $this->input->getCmd('option', 'com_foobar') : $this->option;
|
|
$view = empty($this->view) ? $this->input->getCmd('view', $this->getName()) : $this->view;
|
|
|
|
// Get the default page title translation key
|
|
$default = empty($this->defaultPageTitle) ? $option . '_TITLE_' . $view : $this->defaultPageTitle;
|
|
|
|
$params = $app->getPageParameters($option);
|
|
|
|
// Set the default value for page_heading
|
|
if ($menu)
|
|
{
|
|
$params->def('page_heading', $params->get('page_title', $menu->title));
|
|
}
|
|
else
|
|
{
|
|
$params->def('page_heading', JText::_($default));
|
|
}
|
|
|
|
// Set the document title
|
|
$title = $params->get('page_title', '');
|
|
$sitename = $app->getCfg('sitename');
|
|
|
|
if ($title == $sitename)
|
|
{
|
|
$title = JText::_($default);
|
|
}
|
|
|
|
if (empty($title))
|
|
{
|
|
$title = $sitename;
|
|
}
|
|
elseif ($app->getCfg('sitename_pagetitles', 0) == 1)
|
|
{
|
|
$title = JText::sprintf('JPAGETITLE', $app->getCfg('sitename'), $title);
|
|
}
|
|
elseif ($app->getCfg('sitename_pagetitles', 0) == 2)
|
|
{
|
|
$title = JText::sprintf('JPAGETITLE', $title, $app->getCfg('sitename'));
|
|
}
|
|
|
|
$document->setTitle($title);
|
|
|
|
// Set meta
|
|
if ($params->get('menu-meta_description'))
|
|
{
|
|
$document->setDescription($params->get('menu-meta_description'));
|
|
}
|
|
|
|
if ($params->get('menu-meta_keywords'))
|
|
{
|
|
$document->setMetadata('keywords', $params->get('menu-meta_keywords'));
|
|
}
|
|
|
|
if ($params->get('robots'))
|
|
{
|
|
$document->setMetadata('robots', $params->get('robots'));
|
|
}
|
|
|
|
return $title;
|
|
}
|
|
}
|