* @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Contact\Site\View\Category; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Mail\MailHelper; use Joomla\CMS\MVC\View\CategoryView; use Joomla\Component\Contact\Site\Helper\RouteHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * HTML View class for the Contacts component * * @since 1.5 */ class HtmlView extends CategoryView { /** * @var string The name of the extension for the category * @since 3.2 */ protected $extension = 'com_contact'; /** * @var string Default title to use for page title * @since 3.2 */ protected $defaultPageTitle = 'COM_CONTACT_DEFAULT_PAGE_TITLE'; /** * @var string The name of the view to link individual items to * @since 3.2 */ protected $viewName = 'contact'; /** * Run the standard Joomla plugins * * @var boolean * @since 3.5 */ protected $runPlugins = true; /** * Execute and display a template script. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { parent::commonCategoryDisplay(); // Flag indicates to not add limitstart=0 to URL $this->pagination->hideEmptyLimitstart = true; // Prepare the data. // Compute the contact slug. foreach ($this->items as $item) { $item->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id; $temp = $item->params; $item->params = clone $this->params; $item->params->merge($temp); if ($item->params->get('show_email_headings', 0) == 1) { $item->email_to = trim($item->email_to); if (!empty($item->email_to) && MailHelper::isEmailAddress($item->email_to)) { $item->email_to = HTMLHelper::_('email.cloak', $item->email_to); } else { $item->email_to = ''; } } } parent::display($tpl); } /** * Prepares the document * * @return void */ protected function prepareDocument() { parent::prepareDocument(); parent::addFeed(); if ($this->menuItemMatchCategory) { // If the active menu item is linked directly to the category being displayed, no further process is needed return; } // Get ID of the category from active menu item $menu = $this->menu; if ( $menu && $menu->component == 'com_contact' && isset($menu->query['view']) && in_array($menu->query['view'], ['categories', 'category']) ) { $id = $menu->query['id']; } else { $id = 0; } $path = [['title' => $this->category->title, 'link' => '']]; $category = $this->category->getParent(); while ($category !== null && $category->id != $id && $category->id !== 'root') { $path[] = ['title' => $category->title, 'link' => RouteHelper::getCategoryRoute($category->id, $category->language)]; $category = $category->getParent(); } $path = array_reverse($path); foreach ($path as $item) { $this->pathway->addItem($item['title'], $item['link']); } } }