Spade

Mini Shell

Directory:~$ /home/lmsyaran/public_html/joomla4/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ /home/lmsyaran/public_html/joomla4/mod_articles_category.tar

helper.php000064400000034757151156363430006563 0ustar00<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_articles_category
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\String\StringHelper;

$com_path = JPATH_SITE . '/components/com_content/';

JLoader::register('ContentHelperRoute', $com_path .
'helpers/route.php');
JModelLegacy::addIncludePath($com_path . 'models',
'ContentModel');

/**
 * Helper for mod_articles_category
 *
 * @since  1.6
 */
abstract class ModArticlesCategoryHelper
{
	/**
	 * Get a list of articles from a specific category
	 *
	 * @param   \Joomla\Registry\Registry  &$params  object holding the
models parameters
	 *
	 * @return  mixed
	 *
	 * @since  1.6
	 */
	public static function getList(&$params)
	{
		// Get an instance of the generic articles model
		$articles = JModelLegacy::getInstance('Articles',
'ContentModel', array('ignore_request' => true));

		// Set application parameters in model
		$app       = JFactory::getApplication();
		$appParams = $app->getParams();
		$articles->setState('params', $appParams);

		$articles->setState('list.start', 0);
		$articles->setState('filter.published', 1);

		// Set the filters based on the module params
		$articles->setState('list.limit', (int)
$params->get('count', 0));
		$articles->setState('load_tags',
$params->get('show_tags', 0) ||
$params->get('article_grouping', 'none') ===
'tags');

		// Access filter
		$access     =
!JComponentHelper::getParams('com_content')->get('show_noauth');
		$authorised =
JAccess::getAuthorisedViewLevels(JFactory::getUser()->get('id'));
		$articles->setState('filter.access', $access);

		// Prep for Normal or Dynamic Modes
		$mode = $params->get('mode', 'normal');

		switch ($mode)
		{
			case 'dynamic' :
				$option = $app->input->get('option');
				$view   = $app->input->get('view');

				if ($option === 'com_content')
				{
					switch ($view)
					{
						case 'category' :
						case 'categories' :
							$catids = array($app->input->getInt('id'));
							break;
						case 'article' :
							if ($params->get('show_on_article_page', 1))
							{
								$article_id = $app->input->getInt('id');
								$catid      = $app->input->getInt('catid');

								if (!$catid)
								{
									// Get an instance of the generic article model
									$article = JModelLegacy::getInstance('Article',
'ContentModel', array('ignore_request' => true));

									$article->setState('params', $appParams);
									$article->setState('filter.published', 1);
									$article->setState('article.id', (int) $article_id);
									$item   = $article->getItem();
									$catids = array($item->catid);
								}
								else
								{
									$catids = array($catid);
								}
							}
							else
							{
								// Return right away if show_on_article_page option is off
								return;
							}
							break;

						case 'featured' :
						default:
							// Return right away if not on the category or article views
							return;
					}
				}
				else
				{
					// Return right away if not on a com_content page
					return;
				}

				break;

			case 'normal' :
			default:
				$catids = $params->get('catid');
				$articles->setState('filter.category_id.include', (bool)
$params->get('category_filtering_type', 1));
				break;
		}

		// Category filter
		if ($catids)
		{
			if ($params->get('show_child_category_articles', 0)
&& (int) $params->get('levels', 0) > 0)
			{
				// Get an instance of the generic categories model
				$categories = JModelLegacy::getInstance('Categories',
'ContentModel', array('ignore_request' => true));
				$categories->setState('params', $appParams);
				$levels = $params->get('levels', 1) ?: 9999;
				$categories->setState('filter.get_children', $levels);
				$categories->setState('filter.published', 1);
				$categories->setState('filter.access', $access);
				$additional_catids = array();

				foreach ($catids as $catid)
				{
					$categories->setState('filter.parentId', $catid);
					$recursive = true;
					$items     = $categories->getItems($recursive);

					if ($items)
					{
						foreach ($items as $category)
						{
							$condition = (($category->level -
$categories->getParent()->level) <= $levels);

							if ($condition)
							{
								$additional_catids[] = $category->id;
							}
						}
					}
				}

				$catids = array_unique(array_merge($catids, $additional_catids));
			}

			$articles->setState('filter.category_id', $catids);
		}

		// Ordering
		$ordering = $params->get('article_ordering',
'a.ordering');

		switch ($ordering)
		{
			case 'random':
				$articles->setState('list.ordering',
JFactory::getDbo()->getQuery(true)->Rand());
				break;

			case 'rating_count':
			case 'rating':
				$articles->setState('list.ordering', $ordering);
				$articles->setState('list.direction',
$params->get('article_ordering_direction', 'ASC'));

				if (!JPluginHelper::isEnabled('content', 'vote'))
				{
					$articles->setState('list.ordering',
'a.ordering');
				}

				break;

			default:
				$articles->setState('list.ordering', $ordering);
				$articles->setState('list.direction',
$params->get('article_ordering_direction', 'ASC'));
				break;
		}

		// Filter by multiple tags
		$articles->setState('filter.tag',
$params->get('filter_tag', array()));

		$articles->setState('filter.featured',
$params->get('show_front', 'show'));
		$articles->setState('filter.author_id',
$params->get('created_by', array()));
		$articles->setState('filter.author_id.include',
$params->get('author_filtering_type', 1));
		$articles->setState('filter.author_alias',
$params->get('created_by_alias', array()));
		$articles->setState('filter.author_alias.include',
$params->get('author_alias_filtering_type', 1));
		$excluded_articles = $params->get('excluded_articles',
'');

		if ($excluded_articles)
		{
			$excluded_articles = explode("\r\n", $excluded_articles);
			$articles->setState('filter.article_id',
$excluded_articles);

			// Exclude
			$articles->setState('filter.article_id.include', false);
		}

		$date_filtering = $params->get('date_filtering',
'off');

		if ($date_filtering !== 'off')
		{
			$articles->setState('filter.date_filtering',
$date_filtering);
			$articles->setState('filter.date_field',
$params->get('date_field', 'a.created'));
			$articles->setState('filter.start_date_range',
$params->get('start_date_range', '1000-01-01
00:00:00'));
			$articles->setState('filter.end_date_range',
$params->get('end_date_range', '9999-12-31
23:59:59'));
			$articles->setState('filter.relative_date',
$params->get('relative_date', 30));
		}

		// Filter by language
		$articles->setState('filter.language',
$app->getLanguageFilter());

		$items = $articles->getItems();

		// Display options
		$show_date        = $params->get('show_date', 0);
		$show_date_field  = $params->get('show_date_field',
'created');
		$show_date_format = $params->get('show_date_format',
'Y-m-d H:i:s');
		$show_category    = $params->get('show_category', 0);
		$show_hits        = $params->get('show_hits', 0);
		$show_author      = $params->get('show_author', 0);
		$show_introtext   = $params->get('show_introtext', 0);
		$introtext_limit  = $params->get('introtext_limit', 100);

		// Find current Article ID if on an article page
		$option = $app->input->get('option');
		$view   = $app->input->get('view');

		if ($option === 'com_content' && $view ===
'article')
		{
			$active_article_id = $app->input->getInt('id');
		}
		else
		{
			$active_article_id = 0;
		}

		// Prepare data for display using display options
		foreach ($items as &$item)
		{
			$item->slug    = $item->id . ':' . $item->alias;

			/** @deprecated Catslug is deprecated, use catid instead. 4.0 */
			$item->catslug = $item->catid . ':' .
$item->category_alias;

			if ($access || in_array($item->access, $authorised))
			{
				// We know that user has the privilege to view the article
				$item->link =
JRoute::_(ContentHelperRoute::getArticleRoute($item->slug,
$item->catid, $item->language));
			}
			else
			{
				$menu      = $app->getMenu();
				$menuitems = $menu->getItems('link',
'index.php?option=com_users&view=login');

				if (isset($menuitems[0]))
				{
					$Itemid = $menuitems[0]->id;
				}
				elseif ($app->input->getInt('Itemid') > 0)
				{
					// Use Itemid from requesting page only if there is no existing menu
					$Itemid = $app->input->getInt('Itemid');
				}

				$item->link =
JRoute::_('index.php?option=com_users&view=login&Itemid='
. $Itemid);
			}

			// Used for styling the active article
			$item->active      = $item->id == $active_article_id ?
'active' : '';
			$item->displayDate = '';

			if ($show_date)
			{
				$item->displayDate = JHtml::_('date',
$item->$show_date_field, $show_date_format);
			}

			if ($item->catid)
			{
				$item->displayCategoryLink  =
JRoute::_(ContentHelperRoute::getCategoryRoute($item->catid));
				$item->displayCategoryTitle = $show_category ? '<a
href="' . $item->displayCategoryLink . '">'
. $item->category_title . '</a>' : '';
			}
			else
			{
				$item->displayCategoryTitle = $show_category ?
$item->category_title : '';
			}

			$item->displayHits       = $show_hits ? $item->hits :
'';
			$item->displayAuthorName = $show_author ? $item->author :
'';

			if ($show_introtext)
			{
				$item->introtext = JHtml::_('content.prepare',
$item->introtext, '',
'mod_articles_category.content');
				$item->introtext = self::_cleanIntrotext($item->introtext);
			}

			$item->displayIntrotext = $show_introtext ?
self::truncate($item->introtext, $introtext_limit) : '';
			$item->displayReadmore  = $item->alternative_readmore;
		}

		return $items;
	}

	/**
	 * Strips unnecessary tags from the introtext
	 *
	 * @param   string  $introtext  introtext to sanitize
	 *
	 * @return mixed|string
	 *
	 * @since  1.6
	 */
	public static function _cleanIntrotext($introtext)
	{
		$introtext =
str_replace(array('<p>','</p>'), '
', $introtext);
		$introtext = strip_tags($introtext,
'<a><em><strong>');
		$introtext = trim($introtext);

		return $introtext;
	}

	/**
	 * Method to truncate introtext
	 *
	 * The goal is to get the proper length plain text string with as much of
	 * the html intact as possible with all tags properly closed.
	 *
	 * @param   string   $html       The content of the introtext to be
truncated
	 * @param   integer  $maxLength  The maximum number of characters to
render
	 *
	 * @return  string  The truncated string
	 *
	 * @since   1.6
	 */
	public static function truncate($html, $maxLength = 0)
	{
		$baseLength = strlen($html);

		// First get the plain text string. This is the rendered text we want to
end up with.
		$ptString = JHtml::_('string.truncate', $html, $maxLength,
$noSplit = true, $allowHtml = false);

		for ($maxLength; $maxLength < $baseLength;)
		{
			// Now get the string if we allow html.
			$htmlString = JHtml::_('string.truncate', $html, $maxLength,
$noSplit = true, $allowHtml = true);

			// Now get the plain text from the html string.
			$htmlStringToPtString = JHtml::_('string.truncate',
$htmlString, $maxLength, $noSplit = true, $allowHtml = false);

			// If the new plain text string matches the original plain text string
we are done.
			if ($ptString === $htmlStringToPtString)
			{
				return $htmlString;
			}

			// Get the number of html tag characters in the first $maxlength
characters
			$diffLength = strlen($ptString) - strlen($htmlStringToPtString);

			// Set new $maxlength that adjusts for the html tags
			$maxLength += $diffLength;

			if ($baseLength <= $maxLength || $diffLength <= 0)
			{
				return $htmlString;
			}
		}

		return $html;
	}

	/**
	 * Groups items by field
	 *
	 * @param   array   $list             list of items
	 * @param   string  $fieldName        name of field that is used for
grouping
	 * @param   string  $direction        ordering direction
	 * @param   null    $fieldNameToKeep  field name to keep
	 *
	 * @return  array
	 *
	 * @since   1.6
	 */
	public static function groupBy($list, $fieldName, $direction,
$fieldNameToKeep = null)
	{
		$grouped = array();

		if (!is_array($list))
		{
			if ($list == '')
			{
				return $grouped;
			}

			$list = array($list);
		}

		foreach ($list as $key => $item)
		{
			if (!isset($grouped[$item->$fieldName]))
			{
				$grouped[$item->$fieldName] = array();
			}

			if ($fieldNameToKeep === null)
			{
				$grouped[$item->$fieldName][$key] = $item;
			}
			else
			{
				$grouped[$item->$fieldName][$key] = $item->$fieldNameToKeep;
			}

			unset($list[$key]);
		}

		$direction($grouped);

		return $grouped;
	}

	/**
	 * Groups items by date
	 *
	 * @param   array   $list             list of items
	 * @param   string  $type             type of grouping
	 * @param   string  $direction        ordering direction
	 * @param   string  $monthYearFormat  date format to use
	 * @param   string  $field            date field to group by
	 *
	 * @return  array
	 *
	 * @since   1.6
	 */
	public static function groupByDate($list, $type = 'year',
$direction = 'ksort', $monthYearFormat = 'F Y', $field
= 'created')
	{
		$grouped = array();

		if (!is_array($list))
		{
			if ($list == '')
			{
				return $grouped;
			}

			$list = array($list);
		}

		foreach ($list as $key => $item)
		{
			switch ($type)
			{
				case 'month_year' :
					$month_year = StringHelper::substr($item->$field, 0, 7);

					if (!isset($grouped[$month_year]))
					{
						$grouped[$month_year] = array();
					}

					$grouped[$month_year][$key] = $item;
					break;

				case 'year' :
				default:
					$year = StringHelper::substr($item->$field, 0, 4);

					if (!isset($grouped[$year]))
					{
						$grouped[$year] = array();
					}

					$grouped[$year][$key] = $item;
					break;
			}

			unset($list[$key]);
		}

		$direction($grouped);

		if ($type === 'month_year')
		{
			foreach ($grouped as $group => $items)
			{
				$date                      = new JDate($group);
				$formatted_group           = $date->format($monthYearFormat);
				$grouped[$formatted_group] = $items;

				unset($grouped[$group]);
			}
		}

		return $grouped;
	}

	/**
	 * Groups items by tags
	 *
	 * @param   array   $list       list of items
	 * @param   string  $direction  ordering direction
	 *
	 * @return  array
	 *
	 * @since   3.9.0
	 */
	public static function groupByTags($list, $direction = 'ksort')
	{
		$grouped  = array();
		$untagged = array();

		if (!$list)
		{
			return $grouped;
		}

		foreach ($list as $item)
		{
			if ($item->tags->itemTags)
			{
				foreach ($item->tags->itemTags as $tag)
				{
					$grouped[$tag->title][] = $item;
				}
			}
			else
			{
				$untagged[] = $item;
			}
		}

		$direction($grouped);

		if ($untagged)
		{
			$grouped['MOD_ARTICLES_CATEGORY_UNTAGGED'] = $untagged;
		}

		return $grouped;
	}
}
mod_articles_category.php000064400000005106151156363430011630
0ustar00<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_articles_category
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

defined('_JEXEC') or die;

// Include the helper functions only once
JLoader::register('ModArticlesCategoryHelper', __DIR__ .
'/helper.php');

$input = JFactory::getApplication()->input;

// Prep for Normal or Dynamic Modes
$mode   = $params->get('mode', 'normal');
$idbase = null;

switch ($mode)
{
	case 'dynamic' :
		$option = $input->get('option');
		$view   = $input->get('view');

		if ($option === 'com_content')
		{
			switch ($view)
			{
				case 'category' :
					$idbase = $input->getInt('id');
					break;
				case 'categories' :
					$idbase = $input->getInt('id');
					break;
				case 'article' :
					if ($params->get('show_on_article_page', 1))
					{
						$idbase = $input->getInt('catid');
					}
					break;
			}
		}
		break;
	case 'normal' :
	default:
		$idbase = $params->get('catid');
		break;
}

$cacheid = md5(serialize(array ($idbase, $module->module,
$module->id)));

$cacheparams               = new stdClass;
$cacheparams->cachemode    = 'id';
$cacheparams->class        = 'ModArticlesCategoryHelper';
$cacheparams->method       = 'getList';
$cacheparams->methodparams = $params;
$cacheparams->modeparams   = $cacheid;

$list = JModuleHelper::moduleCache($module, $params, $cacheparams);

if (!empty($list))
{
	$grouped                    = false;
	$article_grouping           =
$params->get('article_grouping', 'none');
	$article_grouping_direction =
$params->get('article_grouping_direction', 'ksort');
	$moduleclass_sfx            =
htmlspecialchars($params->get('moduleclass_sfx'), ENT_COMPAT,
'UTF-8');
	$item_heading               = $params->get('item_heading');

	if ($article_grouping !== 'none')
	{
		$grouped = true;

		switch ($article_grouping)
		{
			case 'year' :
			case 'month_year' :
				$list = ModArticlesCategoryHelper::groupByDate(
					$list,
					$article_grouping,
					$article_grouping_direction,
					$params->get('month_year_format', 'F Y'),
					$params->get('date_grouping_field', 'created')
				);
				break;
			case 'author' :
			case 'category_title' :
				$list = ModArticlesCategoryHelper::groupBy($list, $article_grouping,
$article_grouping_direction);
				break;
			case 'tags' :
				$list = ModArticlesCategoryHelper::groupByTags($list,
$article_grouping_direction);
				break;
			default:
				break;
		}
	}

	require JModuleHelper::getLayoutPath('mod_articles_category',
$params->get('layout', 'default'));
}
mod_articles_category.xml000064400000042301151156363430011637
0ustar00<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="3.1"
client="site" method="upgrade">
	<name>mod_articles_category</name>
	<author>Joomla! Project</author>
	<creationDate>February 2010</creationDate>
	<copyright>Copyright (C) 2005 - 2020 Open Source Matters. All rights
reserved.</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>MOD_ARTICLES_CATEGORY_XML_DESCRIPTION</description>
	<files>
		<filename
module="mod_articles_category">mod_articles_category.php</filename>
		<folder>tmpl</folder>
		<filename>helper.php</filename>
	</files>
	<languages>
		<language
tag="en-GB">en-GB.mod_articles_category.ini</language>
		<language
tag="en-GB">en-GB.mod_articles_category.sys.ini</language>
	</languages>
	<help key="JHELP_EXTENSIONS_MODULE_MANAGER_ARTICLES_CATEGORY"
/>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="mode"
					type="list"
					label="MOD_ARTICLES_CATEGORY_FIELD_MODE_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_MODE_DESC"
					default="normal"
					>
					<option
value="normal">MOD_ARTICLES_CATEGORY_OPTION_NORMAL_VALUE</option>
					<option
value="dynamic">MOD_ARTICLES_CATEGORY_OPTION_DYNAMIC_VALUE</option>
				</field>

				<field
					name="show_on_article_page"
					type="radio"
					label="MOD_ARTICLES_CATEGORY_FIELD_SHOWONARTICLEPAGE_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_SHOWONARTICLEPAGE_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					showon="mode:dynamic"
					>
					<option value="1">JSHOW</option>
					<option value="0">JHIDE</option>
				</field>
			</fieldset>

			<fieldset
				name="filtering"
				label="MOD_ARTICLES_CATEGORY_FIELD_GROUP_FILTERING_LABEL"
			>

				<field
					name="count"
					type="number"
					label="MOD_ARTICLES_CATEGORY_FIELD_COUNT_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_COUNT_DESC"
					default="0"
					filter="integer"
				/>

				<field
					name="show_front"
					type="list"
					label="MOD_ARTICLES_CATEGORY_FIELD_SHOWFEATURED_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_SHOWFEATURED_DESC"
					default="show"
					validate="options"
					>
					<option value="show">JSHOW</option>
					<option value="hide">JHIDE</option>
					<option
value="only">MOD_ARTICLES_CATEGORY_OPTION_ONLYFEATURED_VALUE</option>
				</field>

				<field
					name="filteringspacer0"
					type="spacer"
					hr="true"
				/>

				<field
					name="category_filtering_type"
					type="radio"
					label="MOD_ARTICLES_CATEGORY_FIELD_CATFILTERINGTYPE_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_CATFILTERINGTYPE_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option
value="1">MOD_ARTICLES_CATEGORY_OPTION_INCLUSIVE_VALUE</option>
					<option
value="0">MOD_ARTICLES_CATEGORY_OPTION_EXCLUSIVE_VALUE</option>
				</field>

				<field
					name="catid"
					type="category"
					label="JCATEGORY"
					description="MOD_ARTICLES_CATEGORY_FIELD_CATEGORY_DESC"
					extension="com_content"
					multiple="true"
					filter="int_array"
					class="multipleCategories"
				/>

				<field
					name="show_child_category_articles"
					type="radio"
					label="MOD_ARTICLES_CATEGORY_FIELD_SHOWCHILDCATEGORYARTICLES_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_SHOWCHILDCATEGORYARTICLES_DESC"
					default="0"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option
value="1">MOD_ARTICLES_CATEGORY_OPTION_INCLUDE_VALUE</option>
					<option
value="0">MOD_ARTICLES_CATEGORY_OPTION_EXCLUDE_VALUE</option>
				</field>

				<field
					name="levels"
					type="number"
					label="MOD_ARTICLES_CATEGORY_FIELD_CATDEPTH_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_CATDEPTH_DESC"
					default="1"
					filter="integer"
					showon="show_child_category_articles:1"
				/>

				<field
					name="filteringspacer1"
					type="spacer"
					hr="true"
				/>

				<field
					name="filter_tag"
					type="tag"
					label="JTAG"
					description="JTAG_FIELD_SELECT_DESC"
					mode="nested"
					multiple="true"
					filter="int_array"
					class="multipleTags"
				/>

				<field
					name="filteringspacer2"
					type="spacer"
					hr="true"
				/>

				<field
					name="author_filtering_type"
					type="radio"
					label="MOD_ARTICLES_CATEGORY_FIELD_AUTHORFILTERING_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_AUTHORFILTERING_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option
value="1">MOD_ARTICLES_CATEGORY_OPTION_INCLUSIVE_VALUE</option>
					<option
value="0">MOD_ARTICLES_CATEGORY_OPTION_EXCLUSIVE_VALUE</option>
				</field>

				<field
					name="created_by"
					type="author"
					label="MOD_ARTICLES_CATEGORY_FIELD_AUTHOR_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_AUTHOR_DESC"
					multiple="true"
					filter="int_array"
					class="multipleAuthors"
				/>

				<field
					name="filteringspacer3"
					type="spacer"
					hr="true"
				/>

				<field
					name="author_alias_filtering_type"
					type="radio"
					label="MOD_ARTICLES_CATEGORY_FIELD_AUTHORALIASFILTERING_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_AUTHORALIASFILTERING_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option
value="1">MOD_ARTICLES_CATEGORY_OPTION_INCLUSIVE_VALUE</option>
					<option
value="0">MOD_ARTICLES_CATEGORY_OPTION_EXCLUSIVE_VALUE</option>
				</field>

				<field
					name="created_by_alias"
					type="sql"
					label="MOD_ARTICLES_CATEGORY_FIELD_AUTHORALIAS_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_AUTHORALIAS_DESC"
					multiple="true"
					query="select distinct(created_by_alias) from #__content where
created_by_alias != '' order by created_by_alias ASC"
					key_field="created_by_alias"
					value_field="created_by_alias"
					class="multipleAuthorAliases"
				/>

				<field
					name="filteringspacer4"
					type="spacer"
					hr="true"
				/>

				<field
					name="excluded_articles"
					type="textarea"
					label="MOD_ARTICLES_CATEGORY_FIELD_EXCLUDEDARTICLES_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_EXCLUDEDARTICLES_DESC"
					cols="10"
					rows="3"
				/>

				<field
					name="filteringspacer5"
					type="spacer"
					hr="true"
				/>

				<field
					name="date_filtering"
					type="list"
					label="MOD_ARTICLES_CATEGORY_FIELD_DATEFILTERING_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_DATEFILTERING_DESC"
					default="off"
					validate="options"
					>
					<option
value="off">MOD_ARTICLES_CATEGORY_OPTION_OFF_VALUE</option>
					<option
value="range">MOD_ARTICLES_CATEGORY_OPTION_DATERANGE_VALUE</option>
					<option
value="relative">MOD_ARTICLES_CATEGORY_OPTION_RELATIVEDAY_VALUE</option>
				</field>

				<field
					name="date_field"
					type="list"
					label="MOD_ARTICLES_CATEGORY_FIELD_DATERANGEFIELD_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_DATERANGEFIELD_DESC"
					default="a.created"
					showon="date_filtering!:off"
					validate="options"
					>
					<option
value="a.created">MOD_ARTICLES_CATEGORY_OPTION_CREATED_VALUE</option>
					<option
value="a.modified">MOD_ARTICLES_CATEGORY_OPTION_MODIFIED_VALUE</option>
					<option
value="a.publish_up">MOD_ARTICLES_CATEGORY_OPTION_STARTPUBLISHING_VALUE</option>
				</field>

				<field
					name="start_date_range"
					type="calendar"
					label="MOD_ARTICLES_CATEGORY_FIELD_STARTDATE_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_STARTDATE_DESC"
					translateformat="true"
					showtime="true"
					size="22"
					filter="user_utc"
					showon="date_filtering:range"
				/>

				<field
					name="end_date_range"
					type="calendar"
					label="MOD_ARTICLES_CATEGORY_FIELD_ENDDATE_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_ENDDATE_DESC"
					translateformat="true"
					showtime="true"
					size="22"
					filter="user_utc"
					showon="date_filtering:range"
				/>

				<field
					name="relative_date"
					type="number"
					label="MOD_ARTICLES_CATEGORY_FIELD_RELATIVEDATE_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_RELATIVEDATE_DESC"
					default="30"
					filter="integer"
					showon="date_filtering:relative"
				/>

			</fieldset>

			<fieldset
				name="ordering"
				label="MOD_ARTICLES_CATEGORY_FIELD_GROUP_ORDERING_LABEL"
			>

				<field
					name="article_ordering"
					type="list"
					label="MOD_ARTICLES_CATEGORY_FIELD_ARTICLEORDERING_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_ARTICLEORDERING_DESC"
					default="a.title"
					validate="options"
					>
					<option
value="a.ordering">MOD_ARTICLES_CATEGORY_OPTION_ORDERING_VALUE</option>
					<option
value="fp.ordering">MOD_ARTICLES_CATEGORY_OPTION_ORDERINGFEATURED_VALUE</option>
					<option
value="a.hits">MOD_ARTICLES_CATEGORY_OPTION_HITS_VALUE</option>
					<option value="a.title">JGLOBAL_TITLE</option>
					<option
value="a.id">MOD_ARTICLES_CATEGORY_OPTION_ID_VALUE</option>
					<option
value="a.alias">JFIELD_ALIAS_LABEL</option>
					<option
value="a.created">MOD_ARTICLES_CATEGORY_OPTION_CREATED_VALUE</option>
					<option
value="modified">MOD_ARTICLES_CATEGORY_OPTION_MODIFIED_VALUE</option>
					<option
value="publish_up">MOD_ARTICLES_CATEGORY_OPTION_STARTPUBLISHING_VALUE</option>
					<option
value="a.publish_down">MOD_ARTICLES_CATEGORY_OPTION_FINISHPUBLISHING_VALUE</option>
					<option
value="random">MOD_ARTICLES_CATEGORY_OPTION_RANDOM_VALUE</option>
					<option value="rating_count"
requires="vote">MOD_ARTICLES_CATEGORY_OPTION_VOTE_VALUE</option>
					<option value="rating"
requires="vote">MOD_ARTICLES_CATEGORY_OPTION_RATING_VALUE</option>
				</field>

				<field
					name="article_ordering_direction"
					type="list"
					label="MOD_ARTICLES_CATEGORY_FIELD_ARTICLEORDERINGDIR_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_ARTICLEORDERINGDIR_DESC"
					default="ASC"
					validate="options"
					>
					<option
value="DESC">MOD_ARTICLES_CATEGORY_OPTION_DESCENDING_VALUE</option>
					<option
value="ASC">MOD_ARTICLES_CATEGORY_OPTION_ASCENDING_VALUE</option>
				</field>
			</fieldset>

			<fieldset
				name="grouping"
				label="MOD_ARTICLES_CATEGORY_FIELD_GROUP_GROUPING_LABEL"
				>

				<field
					name="article_grouping"
					type="list"
					label="MOD_ARTICLES_CATEGORY_FIELD_ARTICLEGROUPING_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_ARTICLEGROUPING_DESC"
					default="none"
					validate="options"
					>
					<option value="none">JNONE</option>
					<option
value="year">MOD_ARTICLES_CATEGORY_OPTION_YEAR_VALUE</option>
					<option
value="month_year">MOD_ARTICLES_CATEGORY_OPTION_MONTHYEAR_VALUE</option>
					<option value="author">JAUTHOR</option>
					<option
value="category_title">JCATEGORY</option>
					<option value="tags">JTAG</option>
				</field>

				<field
					name="date_grouping_field"
					type="list"
					label="MOD_ARTICLES_CATEGORY_FIELD_DATEGROUPINGFIELD_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_DATEGROUPINGFIELD_DESC"
					default="created"
					showon="article_grouping:year,month_year"
					validate="options"
					>
					<option
value="created">MOD_ARTICLES_CATEGORY_OPTION_CREATED_VALUE</option>
					<option
value="modified">MOD_ARTICLES_CATEGORY_OPTION_MODIFIED_VALUE</option>
					<option
value="publish_up">MOD_ARTICLES_CATEGORY_OPTION_STARTPUBLISHING_VALUE</option>
				</field>

				<field
					name="month_year_format"
					type="text"
					label="MOD_ARTICLES_CATEGORY_FIELD_MONTHYEARFORMAT_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_MONTHYEARFORMAT_DESC"
					default="F Y"
					showon="article_grouping:year,month_year"
				/>

				<field
					name="article_grouping_direction"
					type="list"
					label="MOD_ARTICLES_CATEGORY_FIELD_ARTICLEGROUPINGDIR_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_ARTICLEGROUPINGDIR_DESC"
					default="ksort"
					showon="article_grouping!:none"
					validate="options"
					>
					<option
value="krsort">MOD_ARTICLES_CATEGORY_OPTION_DESCENDING_VALUE</option>
					<option
value="ksort">MOD_ARTICLES_CATEGORY_OPTION_ASCENDING_VALUE</option>
				</field>

			</fieldset>

			<fieldset
				name="display"
				label="MOD_ARTICLES_CATEGORY_FIELD_GROUP_DISPLAY_LABEL"
				>

				<field
					name="link_titles"
					type="radio"
					label="MOD_ARTICLES_CATEGORY_FIELD_LINKTITLES_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_LINKTITLES_DESC"
					default="1"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="show_date"
					type="radio"
					label="JDATE"
					description="MOD_ARTICLES_CATEGORY_FIELD_SHOWDATE_DESC"
					default="0"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JSHOW</option>
					<option value="0">JHIDE</option>
				</field>

				<field
					name="show_date_field"
					type="list"
					label="MOD_ARTICLES_CATEGORY_FIELD_DATEFIELD_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_DATEFIELD_DESC"
					default="created"
					showon="show_date:1"
					validate="options"
					>
					<option
value="created">MOD_ARTICLES_CATEGORY_OPTION_CREATED_VALUE</option>
					<option
value="modified">MOD_ARTICLES_CATEGORY_OPTION_MODIFIED_VALUE</option>
					<option
value="publish_up">MOD_ARTICLES_CATEGORY_OPTION_STARTPUBLISHING_VALUE</option>
				</field>

				<field
					name="show_date_format"
					type="text"
					label="MOD_ARTICLES_CATEGORY_FIELD_DATEFIELDFORMAT_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_DATEFIELDFORMAT_DESC"
					default="Y-m-d H:i:s"
					showon="show_date:1"
				/>

				<field
					name="show_category"
					type="radio"
					label="JCATEGORY"
					description="MOD_ARTICLES_CATEGORY_FIELD_SHOWCATEGORY_DESC"
					default="0"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JSHOW</option>
					<option value="0">JHIDE</option>
				</field>

				<field
					name="show_hits"
					type="radio"
					label="MOD_ARTICLES_CATEGORY_FIELD_SHOWHITS_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_SHOWHITS_DESC"
					default="0"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JSHOW</option>
					<option value="0">JHIDE</option>
				</field>

				<field
					name="show_author"
					type="radio"
					label="JAUTHOR"
					description="MOD_ARTICLES_CATEGORY_FIELD_SHOWAUTHOR_DESC"
					default="0"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JSHOW</option>
					<option value="0">JHIDE</option>
				</field>

				<field
					name="show_tags"
					type="radio"
					label="JTAG"
					description="MOD_ARTICLES_CATEGORY_FIELD_SHOWTAGS_DESC"
					default="0"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JSHOW</option>
					<option value="0">JHIDE</option>
				</field>

				<field
					name="show_introtext"
					type="radio"
					label="MOD_ARTICLES_CATEGORY_FIELD_SHOWINTROTEXT_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_SHOWINTROTEXT_DESC"
					default="0"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JSHOW</option>
					<option value="0">JHIDE</option>
				</field>

				<field
					name="introtext_limit"
					type="number"
					label="MOD_ARTICLES_CATEGORY_FIELD_INTROTEXTLIMIT_LABEL"
					description="MOD_ARTICLES_CATEGORY_FIELD_INTROTEXTLIMIT_DESC"
					default="100"
					filter="integer"
					showon="show_introtext:1"
				/>

				<field
					name="show_readmore"
					type="radio"
					label="JGLOBAL_SHOW_READMORE_LABEL"
					description="JGLOBAL_SHOW_READMORE_DESC"
					default="0"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JSHOW</option>
					<option value="0">JHIDE</option>
				</field>

				<field
					name="show_readmore_title"
					type="radio"
					label="JGLOBAL_SHOW_READMORE_TITLE_LABEL"
					description="JGLOBAL_SHOW_READMORE_TITLE_DESC"
					default="1"
					filter="integer"
					class="btn-group btn-group-yesno"
					showon="show_readmore:1"
					>
					<option value="1">JSHOW</option>
					<option value="0">JHIDE</option>
				</field>

				<field
					name="readmore_limit"
					type="number"
					label="JGLOBAL_SHOW_READMORE_LIMIT_LABEL"
					description="JGLOBAL_SHOW_READMORE_LIMIT_DESC"
					default="15"
					filter="integer"
					showon="show_readmore:1[AND]show_readmore_title:1"
				/>

			</fieldset>

			<fieldset name="advanced">

				<field
					name="layout"
					type="modulelayout"
					label="JFIELD_ALT_LAYOUT_LABEL"
					description="JFIELD_ALT_MODULE_LAYOUT_DESC"
				/>

				<field
					name="moduleclass_sfx"
					type="textarea"
					label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL"
					description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC"
					rows="3"
				/>

				<field
					name="owncache"
					type="list"
					label="COM_MODULES_FIELD_CACHING_LABEL"
					description="COM_MODULES_FIELD_CACHING_DESC"
					default="1"
					filter="integer"
					>
					<option value="1">JGLOBAL_USE_GLOBAL</option>
					<option
value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option>
				</field>

				<field
					name="cache_time"
					type="number"
					label="COM_MODULES_FIELD_CACHE_TIME_LABEL"
					description="COM_MODULES_FIELD_CACHE_TIME_DESC"
					default="900"
					filter="integer"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
tmpl/default.php000064400000013131151156363470007667 0ustar00<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_articles_category
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

defined('_JEXEC') or die;

?>
<ul class="category-module<?php echo $moduleclass_sfx; ?>
mod-list">
	<?php if ($grouped) : ?>
		<?php foreach ($list as $group_name => $group) : ?>
		<li>
			<div class="mod-articles-category-group"><?php echo
JText::_($group_name); ?></div>
			<ul>
				<?php foreach ($group as $item) : ?>
					<li>
						<?php if ($params->get('link_titles') == 1) : ?>
							<a class="mod-articles-category-title <?php echo
$item->active; ?>" href="<?php echo $item->link;
?>">
								<?php echo $item->title; ?>
							</a>
						<?php else : ?>
							<?php echo $item->title; ?>
						<?php endif; ?>

						<?php if ($item->displayHits) : ?>
							<span class="mod-articles-category-hits">
								(<?php echo $item->displayHits; ?>)
							</span>
						<?php endif; ?>

						<?php if ($params->get('show_author')) : ?>
							<span class="mod-articles-category-writtenby">
								<?php echo $item->displayAuthorName; ?>
							</span>
						<?php endif; ?>

						<?php if ($item->displayCategoryTitle) : ?>
							<span class="mod-articles-category-category">
								(<?php echo $item->displayCategoryTitle; ?>)
							</span>
						<?php endif; ?>

						<?php if ($item->displayDate) : ?>
							<span class="mod-articles-category-date"><?php
echo $item->displayDate; ?></span>
						<?php endif; ?>

						<?php if ($params->get('show_tags', 0) &&
$item->tags->itemTags) : ?>
							<div class="mod-articles-category-tags">
								<?php echo
JLayoutHelper::render('joomla.content.tags',
$item->tags->itemTags); ?>
							</div>
						<?php endif; ?>

						<?php if ($params->get('show_introtext')) : ?>
							<p class="mod-articles-category-introtext">
								<?php echo $item->displayIntrotext; ?>
							</p>
						<?php endif; ?>

						<?php if ($params->get('show_readmore')) : ?>
							<p class="mod-articles-category-readmore">
								<a class="mod-articles-category-title <?php echo
$item->active; ?>" href="<?php echo $item->link;
?>">
									<?php if ($item->params->get('access-view') ==
false) : ?>
										<?php echo
JText::_('MOD_ARTICLES_CATEGORY_REGISTER_TO_READ_MORE'); ?>
									<?php elseif ($readmore = $item->alternative_readmore) :
?>
										<?php echo $readmore; ?>
										<?php echo JHtml::_('string.truncate',
$item->title, $params->get('readmore_limit')); ?>
											<?php if ($params->get('show_readmore_title', 0)
!= 0) : ?>
												<?php echo JHtml::_('string.truncate',
$item->title, $params->get('readmore_limit')); ?>
											<?php endif; ?>
									<?php elseif ($params->get('show_readmore_title',
0) == 0) : ?>
										<?php echo
JText::sprintf('MOD_ARTICLES_CATEGORY_READ_MORE_TITLE'); ?>
									<?php else : ?>
										<?php echo
JText::_('MOD_ARTICLES_CATEGORY_READ_MORE'); ?>
										<?php echo JHtml::_('string.truncate',
$item->title, $params->get('readmore_limit')); ?>
									<?php endif; ?>
								</a>
							</p>
						<?php endif; ?>
					</li>
				<?php endforeach; ?>
			</ul>
		</li>
		<?php endforeach; ?>
	<?php else : ?>
		<?php foreach ($list as $item) : ?>
			<li>
				<?php if ($params->get('link_titles') == 1) : ?>
					<a class="mod-articles-category-title <?php echo
$item->active; ?>" href="<?php echo $item->link;
?>"><?php echo $item->title; ?></a>
				<?php else : ?>
					<?php echo $item->title; ?>
				<?php endif; ?>

				<?php if ($item->displayHits) : ?>
					<span class="mod-articles-category-hits">
						(<?php echo $item->displayHits; ?>)
					</span>
				<?php endif; ?>

				<?php if ($params->get('show_author')) : ?>
					<span class="mod-articles-category-writtenby">
						<?php echo $item->displayAuthorName; ?>
					</span>
				<?php endif; ?>

				<?php if ($item->displayCategoryTitle) : ?>
					<span class="mod-articles-category-category">
						(<?php echo $item->displayCategoryTitle; ?>)
					</span>
				<?php endif; ?>

				<?php if ($item->displayDate) : ?>
					<span class="mod-articles-category-date">
						<?php echo $item->displayDate; ?>
					</span>
				<?php endif; ?>

				<?php if ($params->get('show_tags', 0) &&
$item->tags->itemTags) : ?>
					<div class="mod-articles-category-tags">
						<?php echo JLayoutHelper::render('joomla.content.tags',
$item->tags->itemTags); ?>
					</div>
				<?php endif; ?>

				<?php if ($params->get('show_introtext')) : ?>
					<p class="mod-articles-category-introtext">
						<?php echo $item->displayIntrotext; ?>
					</p>
				<?php endif; ?>

				<?php if ($params->get('show_readmore')) : ?>
					<p class="mod-articles-category-readmore">
						<a class="mod-articles-category-title <?php echo
$item->active; ?>" href="<?php echo $item->link;
?>">
							<?php if ($item->params->get('access-view') ==
false) : ?>
								<?php echo
JText::_('MOD_ARTICLES_CATEGORY_REGISTER_TO_READ_MORE'); ?>
							<?php elseif ($readmore = $item->alternative_readmore) : ?>
								<?php echo $readmore; ?>
								<?php echo JHtml::_('string.truncate',
$item->title, $params->get('readmore_limit')); ?>
							<?php elseif ($params->get('show_readmore_title', 0)
== 0) : ?>
								<?php echo
JText::sprintf('MOD_ARTICLES_CATEGORY_READ_MORE_TITLE'); ?>
							<?php else : ?>
								<?php echo
JText::_('MOD_ARTICLES_CATEGORY_READ_MORE'); ?>
								<?php echo JHtml::_('string.truncate',
$item->title, $params->get('readmore_limit')); ?>
							<?php endif; ?>
						</a>
					</p>
				<?php endif; ?>
			</li>
		<?php endforeach; ?>
	<?php endif; ?>
</ul>