177 lines
3.8 KiB
PHP
177 lines
3.8 KiB
PHP
<?php
|
|
/**
|
|
* @package FOF
|
|
* @copyright Copyright (c)2010-2021 Nicholas K. Dionysopoulos / Akeeba Ltd
|
|
* @license GNU General Public License version 2, or later
|
|
*/
|
|
|
|
namespace FOF30\View\DataView;
|
|
|
|
defined('_JEXEC') || die;
|
|
|
|
use Exception;
|
|
use FOF30\Render\RenderInterface;
|
|
use Joomla\CMS\Application\SiteApplication;
|
|
use Joomla\CMS\Factory;
|
|
use Joomla\CMS\Language\Text;
|
|
|
|
class Html extends Raw implements DataViewInterface
|
|
{
|
|
/** @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;
|
|
|
|
public function setPageTitle()
|
|
{
|
|
if (!$this->container->platform->isFrontend())
|
|
{
|
|
return '';
|
|
}
|
|
|
|
/** @var SiteApplication $app */
|
|
$app = Factory::getApplication();
|
|
$document = Factory::getDocument();
|
|
$menus = $app->getMenu();
|
|
$menu = $menus->getActive();
|
|
$title = null;
|
|
|
|
// Get the option and view name
|
|
$option = $this->container->componentName;
|
|
$view = $this->getName();
|
|
|
|
// Get the default page title translation key
|
|
$default = empty($this->defaultPageTitle) ? $option . '_TITLE_' . $view : $this->defaultPageTitle;
|
|
|
|
$params = $app->getParams($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', Text::_($default));
|
|
}
|
|
|
|
// Set the document title
|
|
$title = $params->get('page_title', '');
|
|
$sitename = $app->get('sitename');
|
|
|
|
if ($title == $sitename)
|
|
{
|
|
$title = Text::_($default);
|
|
}
|
|
|
|
if (empty($title))
|
|
{
|
|
$title = $sitename;
|
|
}
|
|
elseif ($app->get('sitename_pagetitles', 0) == 1)
|
|
{
|
|
$title = Text::sprintf('JPAGETITLE', $app->get('sitename'), $title);
|
|
}
|
|
elseif ($app->get('sitename_pagetitles', 0) == 2)
|
|
{
|
|
$title = Text::sprintf('JPAGETITLE', $title, $app->get('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;
|
|
}
|
|
|
|
/**
|
|
* Runs before rendering the view template, echoing HTML to put before the
|
|
* view template's generated HTML
|
|
*
|
|
* @return void
|
|
*
|
|
* @throws Exception
|
|
*/
|
|
protected function preRender()
|
|
{
|
|
$view = $this->getName();
|
|
$task = $this->task;
|
|
|
|
// Don't load the toolbar on CLI
|
|
$platform = $this->container->platform;
|
|
|
|
if (!$platform->isCli())
|
|
{
|
|
$toolbar = $this->container->toolbar;
|
|
$toolbar->perms = $this->permissions;
|
|
$toolbar->renderToolbar($view, $task);
|
|
}
|
|
|
|
if ($platform->isFrontend() && $this->setFrontendPageTitle)
|
|
{
|
|
$this->setPageTitle();
|
|
}
|
|
|
|
$renderer = $this->container->renderer;
|
|
$renderer->preRender($view, $task);
|
|
}
|
|
|
|
/**
|
|
* Runs after rendering the view template, echoing HTML to put after the
|
|
* view template's generated HTML
|
|
*
|
|
* @return void
|
|
*
|
|
* @throws Exception
|
|
*/
|
|
protected function postRender()
|
|
{
|
|
$view = $this->getName();
|
|
$task = $this->task;
|
|
|
|
$renderer = $this->container->renderer;
|
|
|
|
if ($renderer instanceof RenderInterface)
|
|
{
|
|
$renderer->postRender($view, $task);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Executes before rendering the page for the Add task.
|
|
*/
|
|
protected function onBeforeAdd()
|
|
{
|
|
// Hide main menu
|
|
Factory::getApplication()->input->set('hidemainmenu', true);
|
|
|
|
parent::onBeforeAdd();
|
|
}
|
|
|
|
/**
|
|
* Executes before rendering the page for the Edit task.
|
|
*/
|
|
protected function onBeforeEdit()
|
|
{
|
|
// Hide main menu
|
|
Factory::getApplication()->input->set('hidemainmenu', true);
|
|
|
|
parent::onBeforeEdit();
|
|
}
|
|
}
|