| Current Path : /home/w/u/e/wuectly/www/03cbe/ |
| Current File : /home/w/u/e/wuectly/www/03cbe/tags.tar |
tags.xml 0000604 00000002630 15245557157 0006241 0 ustar 00 <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="search" method="upgrade">
<name>plg_search_tags</name>
<author>Joomla! Project</author>
<creationDate>March 2014</creationDate>
<copyright>(C) 2014 Open Source Matters, Inc.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<authorEmail>admin@joomla.org</authorEmail>
<authorUrl>www.joomla.org</authorUrl>
<version>3.0.0</version>
<description>PLG_SEARCH_TAGS_XML_DESCRIPTION</description>
<files>
<filename plugin="tags">tags.php</filename>
</files>
<languages>
<language tag="en-GB">en-GB.plg_search_tags.ini</language>
<language tag="en-GB">en-GB.plg_search_tags.sys.ini</language>
</languages>
<config>
<fields name="params">
<fieldset name="basic">
<field
name="search_limit"
type="number"
label="JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL"
description="JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC"
default="50"
filter="integer"
size="5"
/>
<field
name="show_tagged_items"
type="radio"
label="PLG_SEARCH_TAGS_FIELD_SHOW_TAGGED_ITEMS_LABEL"
description="PLG_SEARCH_TAGS_FIELD_SHOW_TAGGED_ITEMS_DESC"
class="btn-group btn-group-yesno"
default="0"
filter="integer"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
</fieldset>
</fields>
</config>
</extension>
tags.php 0000604 00000013342 15245557157 0006232 0 ustar 00 <?php
/**
* @package Joomla.Plugin
* @subpackage Search.tags
*
* @copyright (C) 2014 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* Tags search plugin.
*
* @since 3.3
*/
class PlgSearchTags extends JPlugin
{
/**
* Load the language file on instantiation.
*
* @var boolean
* @since 3.3
*/
protected $autoloadLanguage = true;
/**
* Determine areas searchable by this plugin.
*
* @return array An array of search areas.
*
* @since 3.3
*/
public function onContentSearchAreas()
{
static $areas = array(
'tags' => 'PLG_SEARCH_TAGS_TAGS'
);
return $areas;
}
/**
* Search content (tags).
*
* The SQL must return the following fields that are used in a common display
* routine: href, title, section, created, text, browsernav.
*
* @param string $text Target search string.
* @param string $phrase Matching option (possible values: exact|any|all). Default is "any".
* @param string $ordering Ordering option (possible values: newest|oldest|popular|alpha|category). Default is "newest".
* @param string $areas An array if the search is to be restricted to areas or null to search all areas.
*
* @return array Search results.
*
* @since 3.3
*/
public function onContentSearch($text, $phrase = '', $ordering = '', $areas = null)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$app = JFactory::getApplication();
$user = JFactory::getUser();
$lang = JFactory::getLanguage();
$section = JText::_('PLG_SEARCH_TAGS_TAGS');
$limit = $this->params->def('search_limit', 50);
if (is_array($areas) && !array_intersect($areas, array_keys($this->onContentSearchAreas())))
{
return array();
}
$text = trim($text);
if ($text === '')
{
return array();
}
$text = $db->quote('%' . $db->escape($text, true) . '%', false);
switch ($ordering)
{
case 'alpha':
$order = 'a.title ASC';
break;
case 'newest':
$order = 'a.created_time DESC';
break;
case 'oldest':
$order = 'a.created_time ASC';
break;
case 'popular':
default:
$order = 'a.title DESC';
}
$query->select('a.id, a.title, a.alias, a.note, a.published, a.access'
. ', a.checked_out, a.checked_out_time, a.created_user_id'
. ', a.path, a.parent_id, a.level, a.lft, a.rgt'
. ', a.language, a.created_time AS created, a.description');
$case_when_item_alias = ' CASE WHEN ';
$case_when_item_alias .= $query->charLength('a.alias', '!=', '0');
$case_when_item_alias .= ' THEN ';
$a_id = $query->castAsChar('a.id');
$case_when_item_alias .= $query->concatenate(array($a_id, 'a.alias'), ':');
$case_when_item_alias .= ' ELSE ';
$case_when_item_alias .= $a_id . ' END as slug';
$query->select($case_when_item_alias);
$query->from('#__tags AS a');
$query->where('a.alias <> ' . $db->quote('root'));
$query->where('(a.title LIKE ' . $text . ' OR a.alias LIKE ' . $text . ')');
$query->where($db->qn('a.published') . ' = 1');
if (!$user->authorise('core.admin'))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
if ($app->isClient('site') && JLanguageMultilang::isEnabled())
{
$tag = JFactory::getLanguage()->getTag();
$query->where('a.language in (' . $db->quote($tag) . ',' . $db->quote('*') . ')');
}
$query->order($order);
$db->setQuery($query, 0, $limit);
try
{
$rows = $db->loadObjectList();
}
catch (RuntimeException $e)
{
$rows = array();
JFactory::getApplication()->enqueueMessage(JText::_('JERROR_AN_ERROR_HAS_OCCURRED'), 'error');
}
if ($rows)
{
JLoader::register('TagsHelperRoute', JPATH_SITE . '/components/com_tags/helpers/route.php');
foreach ($rows as $key => $row)
{
$rows[$key]->href = TagsHelperRoute::getTagRoute($row->slug);
$rows[$key]->text = ($row->description !== '' ? $row->description : $row->title);
$rows[$key]->text .= $row->note;
$rows[$key]->section = $section;
$rows[$key]->created = $row->created;
$rows[$key]->browsernav = 0;
}
}
if (!$this->params->get('show_tagged_items', 0))
{
return $rows;
}
else
{
$final_items = $rows;
JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_tags/models');
$tag_model = JModelLegacy::getInstance('Tag', 'TagsModel');
$tag_model->getState();
foreach ($rows as $key => $row)
{
$tag_model->setState('tag.id', $row->id);
$tagged_items = $tag_model->getItems();
if ($tagged_items)
{
foreach ($tagged_items as $k => $item)
{
// For 3rd party extensions we need to load the component strings from its sys.ini file
$parts = explode('.', $item->type_alias);
$comp = array_shift($parts);
$lang->load($comp, JPATH_SITE, null, false, true)
|| $lang->load($comp, JPATH_SITE . '/components/' . $comp, null, false, true);
// Making up the type string
$type = implode('_', $parts);
$type = $comp . '_CONTENT_TYPE_' . $type;
$new_item = new stdClass;
$new_item->href = $item->link;
$new_item->title = $item->core_title;
$new_item->text = $item->core_body;
if ($lang->hasKey($type))
{
$new_item->section = JText::sprintf('PLG_SEARCH_TAGS_ITEM_TAGGED_WITH', JText::_($type), $row->title);
}
else
{
$new_item->section = JText::sprintf('PLG_SEARCH_TAGS_ITEM_TAGGED_WITH', $item->content_type_title, $row->title);
}
$new_item->created = $item->displayDate;
$new_item->browsernav = 0;
$final_items[] = $new_item;
}
}
}
return $final_items;
}
}
}
view.feed.php 0000604 00000004267 15245617074 0007151 0 ustar 00 <?php
/**
* @package Joomla.Site
* @subpackage com_tags
*
* @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* HTML View class for the Tags component all tags view
*
* @since 3.1
*/
class TagsViewTags extends JViewLegacy
{
/**
* Execute and display a template script.
*
* @param string $tpl The name of the template file to parse; automatically searches through the template paths.
*
* @return mixed A string if successful, otherwise an Error object.
*/
public function display($tpl = null)
{
$app = JFactory::getApplication();
$document = JFactory::getDocument();
$document->link = JRoute::_('index.php?option=com_tags&view=tags');
$app->input->set('limit', $app->get('feed_limit'));
$siteEmail = $app->get('mailfrom');
$fromName = $app->get('fromname');
$feedEmail = $app->get('feed_email', 'none');
$document->editor = $fromName;
if ($feedEmail !== 'none')
{
$document->editorEmail = $siteEmail;
}
// Get some data from the model
$items = $this->get('Items');
foreach ($items as $item)
{
// Strip HTML from feed item title
$title = $this->escape($item->title);
$title = html_entity_decode($title, ENT_COMPAT, 'UTF-8');
// Strip HTML from feed item description text
$description = $item->description;
$author = $item->created_by_alias ?: $item->created_by_user_name;
$date = $item->created_time ? date('r', strtotime($item->created_time)) : '';
// Load individual item creator class
$feeditem = new JFeedItem;
$feeditem->title = $title;
$feeditem->link = '/index.php?option=com_tags&view=tag&id=' . (int) $item->id;
$feeditem->description = $description;
$feeditem->date = $date;
$feeditem->category = 'All Tags';
$feeditem->author = $author;
if ($feedEmail === 'site')
{
$feeditem->authorEmail = $siteEmail;
}
if ($feedEmail === 'author')
{
$feeditem->authorEmail = $item->email;
}
// Loads item info into RSS array
$document->addItem($feeditem);
}
}
}
tmpl/default.php 0000604 00000002157 15245617074 0007671 0 ustar 00 <?php
/**
* @package Joomla.Site
* @subpackage com_tags
*
* @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
// Note that there are certain parts of this layout used only when there is exactly one tag.
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');
$description = $this->params->get('all_tags_description');
$descriptionImage = $this->params->get('all_tags_description_image');
?>
<div class="tag-category<?php echo $this->pageclass_sfx; ?>">
<?php if ($this->params->get('show_page_heading')) : ?>
<h1>
<?php echo $this->escape($this->params->get('page_heading')); ?>
</h1>
<?php endif; ?>
<?php if ($this->params->get('all_tags_show_description_image') && !empty($descriptionImage)) : ?>
<div>
<img src="<?php echo htmlspecialchars($descriptionImage, ENT_QUOTES, 'UTF-8'); ?>" />
</div>
<?php endif; ?>
<?php if (!empty($description)) : ?>
<div>
<?php echo $description; ?>
</div>
<?php endif; ?>
<?php echo $this->loadTemplate('items'); ?>
</div>
tmpl/default_items.php 0000604 00000013651 15245617074 0011073 0 ustar 00 <?php
/**
* @package Joomla.Site
* @subpackage com_tags
*
* @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');
JHtml::_('behavior.caption');
JHtml::_('behavior.core');
// Get the user object.
$user = JFactory::getUser();
// Check if user is allowed to add/edit based on tags permissions.
$canEdit = $user->authorise('core.edit', 'com_tags');
$canCreate = $user->authorise('core.create', 'com_tags');
$canEditState = $user->authorise('core.edit.state', 'com_tags');
$columns = $this->params->get('tag_columns', 1);
// Avoid division by 0 and negative columns.
if ($columns < 1)
{
$columns = 1;
}
$bsspans = floor(12 / $columns);
if ($bsspans < 1)
{
$bsspans = 1;
}
$bscolumns = min($columns, floor(12 / $bsspans));
$n = count($this->items);
JFactory::getDocument()->addScriptDeclaration("
var resetFilter = function() {
document.getElementById('filter-search').value = '';
}
");
?>
<form action="<?php echo htmlspecialchars(JUri::getInstance()->toString()); ?>" method="post" name="adminForm" id="adminForm">
<?php if ($this->params->get('filter_field') || $this->params->get('show_pagination_limit')) : ?>
<fieldset class="filters btn-toolbar">
<?php if ($this->params->get('filter_field')) : ?>
<div class="btn-group">
<label class="filter-search-lbl element-invisible" for="filter-search">
<?php echo JText::_('COM_TAGS_TITLE_FILTER_LABEL') . ' '; ?>
</label>
<input type="text" name="filter-search" id="filter-search" value="<?php echo $this->escape($this->state->get('list.filter')); ?>" class="inputbox" onchange="document.adminForm.submit();" title="<?php echo JText::_('COM_TAGS_FILTER_SEARCH_DESC'); ?>" placeholder="<?php echo JText::_('COM_TAGS_TITLE_FILTER_LABEL'); ?>" />
<button type="button" name="filter-search-button" title="<?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?>" onclick="document.adminForm.submit();" class="btn">
<span class="icon-search"></span>
</button>
<button type="reset" name="filter-clear-button" title="<?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?>" class="btn" onclick="resetFilter(); document.adminForm.submit();">
<span class="icon-remove"></span>
</button>
</div>
<?php endif; ?>
<?php if ($this->params->get('show_pagination_limit')) : ?>
<div class="btn-group pull-right">
<label for="limit" class="element-invisible">
<?php echo JText::_('JGLOBAL_DISPLAY_NUM'); ?>
</label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<?php endif; ?>
<input type="hidden" name="filter_order" value="" />
<input type="hidden" name="filter_order_Dir" value="" />
<input type="hidden" name="limitstart" value="" />
<input type="hidden" name="task" value="" />
<div class="clearfix"></div>
</fieldset>
<?php endif; ?>
<?php if ($this->items == false || $n === 0) : ?>
<p><?php echo JText::_('COM_TAGS_NO_TAGS'); ?></p>
<?php else : ?>
<?php foreach ($this->items as $i => $item) : ?>
<?php if ($n === 1 || $i === 0 || $bscolumns === 1 || $i % $bscolumns === 0) : ?>
<ul class="thumbnails">
<?php endif; ?>
<?php if ((!empty($item->access)) && in_array($item->access, $this->user->getAuthorisedViewLevels())) : ?>
<li class="cat-list-row<?php echo $i % 2; ?>">
<h3>
<a href="<?php echo JRoute::_(TagsHelperRoute::getTagRoute($item->id . ':' . $item->alias)); ?>">
<?php echo $this->escape($item->title); ?>
</a>
</h3>
<?php endif; ?>
<?php if ($this->params->get('all_tags_show_tag_image') && !empty($item->images)) : ?>
<?php $images = json_decode($item->images); ?>
<span class="tag-body">
<?php if (!empty($images->image_intro)) : ?>
<?php $imgfloat = empty($images->float_intro) ? $this->params->get('float_intro') : $images->float_intro; ?>
<div class="pull-<?php echo htmlspecialchars($imgfloat, ENT_QUOTES, 'UTF-8'); ?> item-image">
<img
<?php if ($images->image_intro_caption) : ?>
<?php echo 'class="caption"' . ' title="' . htmlspecialchars($images->image_intro_caption, ENT_QUOTES, 'UTF-8') . '"'; ?>
<?php endif; ?>
src="<?php echo htmlspecialchars($images->image_intro, ENT_QUOTES, 'UTF-8'); ?>"
alt="<?php echo htmlspecialchars($images->image_intro_alt, ENT_QUOTES, 'UTF-8'); ?>" />
</div>
<?php endif; ?>
</span>
<?php endif; ?>
<?php if (($this->params->get('all_tags_show_tag_description', 1) && !empty($item->description)) || $this->params->get('all_tags_show_tag_hits')) : ?>
<div class="caption">
<?php if ($this->params->get('all_tags_show_tag_description', 1) && !empty($item->description)) : ?>
<span class="tag-body">
<?php echo JHtml::_('string.truncate', $item->description, $this->params->get('all_tags_tag_maximum_characters')); ?>
</span>
<?php endif; ?>
<?php if ($this->params->get('all_tags_show_tag_hits')) : ?>
<span class="list-hits badge badge-info">
<?php echo JText::sprintf('JGLOBAL_HITS_COUNT', $item->hits); ?>
</span>
<?php endif; ?>
</div>
<?php endif; ?>
</li>
<?php if (($i === 0 && $n === 1) || $i === $n - 1 || $bscolumns === 1 || (($i + 1) % $bscolumns === 0)) : ?>
</ul>
<?php endif; ?>
<?php endforeach; ?>
<?php endif; ?>
<?php // Add pagination links ?>
<?php if (!empty($this->items)) : ?>
<?php if (($this->params->def('show_pagination', 2) == 1 || ($this->params->get('show_pagination') == 2)) && ($this->pagination->pagesTotal > 1)) : ?>
<div class="pagination">
<?php if ($this->params->def('show_pagination_results', 1)) : ?>
<p class="counter pull-right">
<?php echo $this->pagination->getPagesCounter(); ?>
</p>
<?php endif; ?>
<?php echo $this->pagination->getPagesLinks(); ?>
</div>
<?php endif; ?>
<?php endif; ?>
</form>
tmpl/default.xml 0000604 00000013141 15245617074 0007675 0 ustar 00 <?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="COM_TAGS_TAGS_VIEW_DEFAULT_TITLE" option="COM_TAGS_TAG_VIEW_DEFAULT_OPTION">
<help
key="JHELP_MENUS_MENU_ITEM_TAGS_ITEMS_LIST_ALL"
/>
<message>
<![CDATA[COM_TAGS_TAGS_VIEW_DEFAULT_DESC]]>
</message>
</layout>
<!-- Add fields to the request variables for the layout. -->
<fields name="request">
<fieldset name="request">
<field
name="parent_id"
type="tag"
label="COM_TAGS_FIELD_PARENT_TAG_LABEL"
description="COM_TAGS_FIELD_PARENT_TAG_DESC"
mode="nested"
>
<option value="">JNONE</option>
<option value="1">JGLOBAL_ROOT</option>
</field>
<field
name="tag_list_language_filter"
type="contentlanguage"
label="COM_TAGS_FIELD_LANGUAGE_FILTER_LABEL"
description="COM_TAGS_FIELD_LANGUAGE_FILTER_DESC"
default=""
useglobal="true"
>
<option value="all">JALL</option>
<option value="current_language">JCURRENT</option>
</field>
</fieldset>
</fields>
<!-- Add fields to the parameters object for the layout. -->
<fields name="params">
<fieldset name="basic">
<field
name="tag_columns"
type="number"
label="COM_TAGS_COMPACT_COLUMNS_LABEL"
description="COM_TAGS_NUMBER_COLUMNS_DESC"
default="4"
filter="integer"
/>
<field
name="all_tags_description"
type="textarea"
label="COM_TAGS_SHOW_ALL_TAGS_DESCRIPTION_LABEL"
description="COM_TAGS_ALL_TAGS_DESCRIPTION_DESC"
class="inputbox"
rows="3"
cols="30"
filter="safehtml"
/>
<field
name="all_tags_show_description_image"
type="list"
label="COM_TAGS_SHOW_ALL_TAGS_IMAGE_LABEL"
description="COM_TAGS_SHOW_ALL_TAGS_IMAGE_DESC"
class="chzn-color"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="all_tags_description_image"
type="media"
label="COM_TAGS_ALL_TAGS_MEDIA_LABEL"
description="COM_TAGS_ALL_TAGS_MEDIA_DESC"
/>
<field
name="all_tags_orderby"
type="list"
label="JGLOBAL_FIELD_FIELD_ORDERING_LABEL"
description="JGLOBAL_FIELD_FIELD_ORDERING_DESC"
useglobal="true"
>
<option value="title">JGLOBAL_TITLE</option>
<option value="hits">JGLOBAL_HITS</option>
<option value="created_time">JGLOBAL_CREATED_DATE</option>
<option value="modified_time">JGLOBAL_MODIFIED_DATE</option>
<option value="publish_up">JGLOBAL_PUBLISHED_DATE</option>
</field>
<field
name="all_tags_orderby_direction"
type="list"
label="JGLOBAL_ORDER_DIRECTION_LABEL"
description="JGLOBAL_ORDER_DIRECTION_DESC"
useglobal="true"
>
<option value="ASC">JGLOBAL_ORDER_ASCENDING</option>
<option value="DESC">JGLOBAL_ORDER_DESCENDING</option>
</field>
<field
name="all_tags_show_tag_image"
type="list"
label="COM_TAGS_SHOW_ITEM_IMAGE_LABEL"
description="COM_TAGS_SHOW_ITEM_IMAGE_DESC"
useglobal="true"
class="chzn-color"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="all_tags_show_tag_description"
type="list"
label="COM_TAGS_SHOW_ITEM_DESCRIPTION_LABEL"
description="COM_TAGS_SHOW_ITEM_DESCRIPTION_DESC"
class="chzn-color"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="all_tags_tag_maximum_characters"
type="number"
label="COM_TAGS_LIST_MAX_CHARACTERS_LABEL"
description="COM_TAGS_LIST_MAX_CHARACTERS_DESC"
filter="integer"
/>
<field
name="all_tags_show_tag_hits"
type="list"
label="JGLOBAL_HITS"
description="COM_TAGS_FIELD_CONFIG_HITS_DESC"
useglobal="true"
class="chzn-color"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
<fieldset
name="selection"
label="COM_TAGS_LIST_ALL_SELECTION_OPTIONS">
<field
name="maximum"
type="number"
label="COM_TAGS_LIST_MAX_LABEL"
description="COM_TAGS_LIST_MAX_DESC"
default="200"
filter="integer"
/>
<field
name="filter_field"
type="list"
label="JGLOBAL_FILTER_FIELD_LABEL"
description="JGLOBAL_FILTER_FIELD_DESC"
default=""
useglobal="true"
class="chzn-color"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_pagination_limit"
type="list"
label="JGLOBAL_DISPLAY_SELECT_LABEL"
description="JGLOBAL_DISPLAY_SELECT_DESC"
useglobal="true"
class="chzn-color"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_pagination"
type="list"
label="JGLOBAL_PAGINATION_LABEL"
description="JGLOBAL_PAGINATION_DESC"
useglobal="true"
class="chzn-color"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
<option value="2">JGLOBAL_AUTO</option>
</field>
<field
name="show_pagination_results"
type="list"
label="JGLOBAL_PAGINATION_RESULTS_LABEL"
description="JGLOBAL_PAGINATION_RESULTS_DESC"
useglobal="true"
class="chzn-color"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
<fieldset name="integration">
<field
name="show_feed_link"
type="list"
label="JGLOBAL_SHOW_FEED_LINK_LABEL"
description="JGLOBAL_SHOW_FEED_LINK_DESC"
useglobal="true"
class="chzn-color"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
</fields>
</metadata>
view.html.php 0000604 00000014303 15245617074 0007202 0 ustar 00 <?php
/**
* @package Joomla.Site
* @subpackage com_tags
*
* @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\Registry\Registry;
/**
* HTML View class for the Tags component
*
* @since 3.1
*/
class TagsViewTags extends JViewLegacy
{
protected $state;
protected $items;
protected $item;
protected $pagination;
protected $params;
/**
* Execute and display a template script.
*
* @param string $tpl The name of the template file to parse; automatically searches through the template paths.
*
* @return mixed A string if successful, otherwise an Error object.
*/
public function display($tpl = null)
{
// Get some data from the models
$this->state = $this->get('State');
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->params = $this->state->get('params');
$this->user = JFactory::getUser();
// Flag indicates to not add limitstart=0 to URL
$this->pagination->hideEmptyLimitstart = true;
/*
* // Change to catch
* if (count($errors = $this->get('Errors'))) {
* JError::raiseError(500, implode("\n", $errors));
* return false;
*/
// Check whether access level allows access.
// @todo: Should already be computed in $item->params->get('access-view')
$groups = $this->user->getAuthorisedViewLevels();
if (!empty($this->items))
{
foreach ($this->items as $itemElement)
{
if (!in_array($itemElement->access, $groups))
{
unset($itemElement);
}
// Prepare the data.
$temp = new Registry($itemElement->params);
$itemElement->params = clone $this->params;
$itemElement->params->merge($temp);
$itemElement->params = (array) json_decode($itemElement->params);
}
}
// Escape strings for HTML output
$this->pageclass_sfx = htmlspecialchars($this->params->get('pageclass_sfx', ''));
$active = JFactory::getApplication()->getMenu()->getActive();
// Load layout from active query (in case it is an alternative menu item)
if ($active && isset($active->query['option']) && $active->query['option'] === 'com_tags' && $active->query['view'] === 'tags')
{
if (isset($active->query['layout']))
{
$this->setLayout($active->query['layout']);
}
}
else
{
// Load default All Tags layout from component
if ($layout = $this->params->get('tags_layout'))
{
$this->setLayout($layout);
}
}
$this->_prepareDocument();
parent::display($tpl);
}
/**
* Prepares the document
*
* @return void
*/
protected function _prepareDocument()
{
$app = JFactory::getApplication();
$menus = $app->getMenu();
$title = null;
// Because the application sets a default page title,
// we need to get it from the menu item itself
$menu = $menus->getActive();
if ($menu)
{
$this->params->def('page_heading', $this->params->get('page_title', $menu->title));
}
else
{
$this->params->def('page_heading', JText::_('COM_TAGS_DEFAULT_PAGE_TITLE'));
}
if ($menu && (!isset($menu->query['option']) || $menu->query['option'] !== 'com_tags'))
{
$this->params->set('page_subheading', $menu->title);
}
// Set metadata for all tags menu item
if ($this->params->get('menu-meta_description'))
{
$this->document->setDescription($this->params->get('menu-meta_description'));
}
if ($this->params->get('menu-meta_keywords'))
{
$this->document->setMetadata('keywords', $this->params->get('menu-meta_keywords'));
}
if ($this->params->get('robots'))
{
$this->document->setMetadata('robots', $this->params->get('robots'));
}
// If this is not a single tag menu item, set the page title to the tag titles
$title = '';
if (!empty($this->item))
{
foreach ($this->item as $i => $itemElement)
{
if ($itemElement->title)
{
if ($i != 0)
{
$title .= ', ';
}
$title .= $itemElement->title;
}
}
if (empty($title))
{
$title = $app->get('sitename');
}
elseif ($app->get('sitename_pagetitles', 0) == 1)
{
$title = JText::sprintf('JPAGETITLE', $app->get('sitename'), $title);
}
elseif ($app->get('sitename_pagetitles', 0) == 2)
{
$title = JText::sprintf('JPAGETITLE', $title, $app->get('sitename'));
}
$this->document->setTitle($title);
foreach ($this->item as $itemElement)
{
if ($itemElement->metadesc)
{
$this->document->setDescription($this->item->metadesc);
}
elseif ($this->params->get('menu-meta_description'))
{
$this->document->setDescription($this->params->get('menu-meta_description'));
}
if ($itemElement->metakey)
{
$this->document->setMetadata('keywords', $this->tag->metakey);
}
elseif ($this->params->get('menu-meta_keywords'))
{
$this->document->setMetadata('keywords', $this->params->get('menu-meta_keywords'));
}
if ($this->params->get('robots'))
{
$this->document->setMetadata('robots', $this->params->get('robots'));
}
if ($app->get('MetaAuthor') == '1')
{
$this->document->setMetaData('author', $itemElement->created_user_id);
}
$mdata = $this->item->metadata->toArray();
foreach ($mdata as $k => $v)
{
if ($v)
{
$this->document->setMetadata($k, $v);
}
}
}
}
// Respect configuration Sitename Before/After for TITLE in views All Tags.
if (!$title && ($pos = $app->get('sitename_pagetitles', 0)))
{
$title = $this->document->getTitle();
if ($pos == 1)
{
$title = JText::sprintf('JPAGETITLE', $app->get('sitename'), $title);
}
else
{
$title = JText::sprintf('JPAGETITLE', $title, $app->get('sitename'));
}
$this->document->setTitle($title);
}
// Add alternative feed link
if ($this->params->get('show_feed_link', 1) == 1)
{
$link = '&format=feed&limitstart=';
$attribs = array('type' => 'application/rss+xml', 'title' => 'RSS 2.0');
$this->document->addHeadLink(JRoute::_($link . '&type=rss'), 'alternate', 'rel', $attribs);
$attribs = array('type' => 'application/atom+xml', 'title' => 'Atom 1.0');
$this->document->addHeadLink(JRoute::_($link . '&type=atom'), 'alternate', 'rel', $attribs);
}
}
}