Source for file tag.php
Documentation is available at tag.php
* @package Joomla.Libraries
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
* @package Joomla.Libraries
* Cached array of the tag items.
protected static $items =
array();
* Returns an array of tags.
* @param array $config An array of configuration options. By default, only
* published and unpublished categories are returned.
public static function options($config =
array('filter.published' =>
array(0, 1)))
if (!isset
(static::$items[$hash]))
$config = (array)
$config;
$db =
JFactory::getDbo();
$query =
$db->getQuery(true)
->select('a.id, a.title, a.level')
->where('a.parent_id > 0');
// Filter on the published state
if (isset
($config['filter.published']))
if (is_numeric($config['filter.published']))
$query->where('a.published = ' . (int)
$config['filter.published']);
elseif (is_array($config['filter.published']))
JArrayHelper::toInteger($config['filter.published']);
$query->where('a.published IN (' .
implode(',', $config['filter.published']) .
')');
// Filter on the language
if (isset
($config['filter.language']))
$query->where('a.language = ' .
$db->quote($config['filter.language']));
elseif (is_array($config['filter.language']))
foreach ($config['filter.language'] as &$language)
$language =
$db->quote($language);
$query->where('a.language IN (' .
implode(',', $config['filter.language']) .
')');
$items =
$db->loadObjectList();
// Assemble the list options.
static::$items[$hash] =
array();
foreach ($items as &$item)
$repeat =
($item->level -
1 >=
0) ?
$item->level -
1 :
0;
$item->title =
str_repeat('- ', $repeat) .
$item->title;
static::$items[$hash][] =
JHtml::_('select.option', $item->id, $item->title);
return static::$items[$hash];
* Returns an array of tags.
* @param array $config An array of configuration options. By default, only published and unpublished tags are returned.
public static function tags($config =
array('filter.published' =>
array(0, 1)))
$config = (array)
$config;
$query =
$db->getQuery(true)
->select('a.id, a.title, a.level, a.parent_id')
->where('a.parent_id > 0');
// Filter on the published state
if (isset
($config['filter.published']))
$query->where('a.published = ' . (int)
$config['filter.published']);
elseif (is_array($config['filter.published']))
$query->where('a.published IN (' .
implode(',', $config['filter.published']) .
')');
$items =
$db->loadObjectList();
// Assemble the list options.
static::$items[$hash] =
array();
foreach ($items as &$item)
$repeat =
($item->level -
1 >=
0) ?
$item->level -
1 :
0;
$item->title =
str_repeat('- ', $repeat) .
$item->title;
static::$items[$hash][] =
JHtml::_('select.option', $item->id, $item->title);
return static::$items[$hash];
* This is just a proxy for the formbehavior.ajaxchosen method
* @param string $selector DOM id of the tag field
* @param boolean $allowCustom Flag to allow custom values
public static function ajaxfield($selector=
'#jform_tags', $allowCustom =
true)
'url' =>
JUri::root() .
'index.php?option=com_tags&task=tags.searchAjax',
JHtml::_('formbehavior.ajaxchosen', $chosenAjaxSettings);
$(document).ready(function () {
var customTagPrefix = '#new#';
// Method to add tags pressing enter
$('" .
$selector .
"_chzn input').keydown(function(event) {
// Tag is greater than 3 chars and enter pressed
if (this.value.length >= 3 && (event.which === 13 || event.which === 188)) {
// Search an highlighted result
var highlighted = $('" .
$selector .
"_chzn').find('li.active-result.highlighted').first();
// Add the highlighted option
if (event.which === 13 && highlighted.text() !== '')
// Extra check. If we have added a custom tag with this text remove it
var customOptionValue = customTagPrefix + highlighted.text();
$('" .
$selector .
" option').filter(function () { return $(this).val() == customOptionValue; }).remove();
// Select the highlighted result
var tagOption = $('" .
$selector .
" option').filter(function () { return $(this).html() == highlighted.text(); });
tagOption.attr('selected', 'selected');
// Add the custom tag option
var customTag = this.value;
// Extra check. Search if the custom tag already exists (typed faster than AJAX ready)
var tagOption = $('" .
$selector .
" option').filter(function () { return $(this).html() == customTag; });
if (tagOption.text() !== '')
tagOption.attr('selected', 'selected');
var option = $('<option>');
option.text(this.value).val(customTagPrefix + this.value);
option.attr('selected','selected');
// Append the option an repopulate the chosen field
$('" .
$selector .
"').append(option);
$('" .
$selector .
"').trigger('liszt:updated');
Documentation generated on Tue, 19 Nov 2013 15:15:07 +0100 by phpDocumentor 1.4.3