uawdijnntqw1x1x1
IP : 216.73.216.168
Hostname : server.fattispazio.it
Kernel : Linux server.fattispazio.it 3.10.0-1160.144.1.el7.tuxcare.els4.x86_64 #1 SMP Tue Apr 7 08:40:40 UTC 2026 x86_64
Disable Function : None :)
OS : Linux
PATH:
/
home
/
poliximo
/
public_html
/
4690b
/
..
/
media
/
..
/
da45a
/
administrator.zip
/
/
PKb��\�E3�#modules/mod_popular/mod_popular.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_popular * * @copyright Copyright (C) 2005 - 2015 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 mod_popular functions only once. require_once __DIR__ . '/helper.php'; // Get module data. $list = ModPopularHelper::getList($params); // Render the module require JModuleHelper::getLayoutPath('mod_popular', $params->get('layout', 'default')); PKb��\���� � #modules/mod_popular/mod_popular.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1" client="administrator" method="upgrade"> <name>mod_popular</name> <author>Joomla! Project</author> <creationDate>July 2004</creationDate> <copyright>Copyright (C) 2005 - 2015 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_POPULAR_XML_DESCRIPTION</description> <files> <filename module="mod_popular">mod_popular.php</filename> <folder>tmpl</folder> <filename>helper.php</filename> </files> <languages> <language tag="en-GB">en-GB.mod_popular.ini</language> <language tag="en-GB">en-GB.mod_popular.sys.ini</language> </languages> <help key="JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_POPULAR" /> <config> <fields name="params"> <fieldset name="basic"> <field name="count" type="text" default="5" label="MOD_POPULAR_FIELD_COUNT_LABEL" description="MOD_POPULAR_FIELD_COUNT_DESC" /> <field id="catid" name="catid" type="category" extension="com_content" label="JCATEGORY" description="MOD_POPULAR_FIELD_CATEGORY_DESC" default="" > <option value="">JOPTION_ANY_CATEGORY</option> </field> <field name="user_id" type="list" default="0" label="MOD_POPULAR_FIELD_AUTHORS_LABEL" description="MOD_POPULAR_FIELD_AUTHORS_DESC"> <option value="0">MOD_POPULAR_FIELD_VALUE_ANYONE</option> <option value="by_me">MOD_POPULAR_FIELD_VALUE_ADDED_OR_MODIFIED_BY_ME</option> <option value="not_me">MOD_POPULAR_FIELD_VALUE_NOT_ADDED_OR_MODIFIED_BY_ME</option> </field> </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" rows="3" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" /> <field name="cache" type="list" default="0" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC"> <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> </field> </fieldset> </fields> </config> </extension> PKb��\�J�Y��$modules/mod_popular/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_popular * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('bootstrap.tooltip'); ?> <div class="row-striped"> <?php if (count($list)) : ?> <?php foreach ($list as $i => $item) : ?> <?php // Calculate popular items ?> <?php $hits = (int) $item->hits; ?> <?php $hits_class = ($hits >= 10000 ? 'important' : ($hits >= 1000 ? 'warning' : ($hits >= 100 ? 'info' : ''))); ?> <div class="row-fluid"> <div class="span9"> <span class="badge badge-<?php echo $hits_class; ?> hasTooltip" title="<?php echo JHtml::tooltipText('JGLOBAL_HITS'); ?>"><?php echo $item->hits; ?></span> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time); ?> <?php endif; ?> <strong class="row-title break-word"> <?php if ($item->link) : ?> <a href="<?php echo $item->link; ?>"> <?php echo htmlspecialchars($item->title, ENT_QUOTES, 'UTF-8'); ?></a> <?php else : ?> <?php echo htmlspecialchars($item->title, ENT_QUOTES, 'UTF-8'); ?> <?php endif; ?> </strong> </div> <div class="span3"> <span class="small"> <span class="icon-calendar"></span> <?php echo JHtml::_('date', $item->created, JText::_('DATE_FORMAT_LC4')); ?> </span> </div> </div> <?php endforeach; ?> <?php else : ?> <div class="row-fluid"> <div class="span12"> <div class="alert"><?php echo JText::_('MOD_POPULAR_NO_MATCHING_RESULTS'); ?></div> </div> </div> <?php endif; ?> </div> PKb��\u_�S� � modules/mod_popular/helper.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_popular * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_content/models', 'ContentModel'); /** * Helper for mod_popular * * @since 1.6 */ abstract class ModPopularHelper { /** * Get a list of the most popular articles * * @param JObject &$params The module parameters. * * @return array */ public static function getList(&$params) { $user = JFactory::getuser(); // Get an instance of the generic articles model $model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true)); // Set List SELECT $model->setState('list.select', 'a.id, a.title, a.checked_out, a.checked_out_time, ' . ' a.created, a.hits'); // Set Ordering filter $model->setState('list.ordering', 'a.hits'); $model->setState('list.direction', 'DESC'); // Set Category Filter $categoryId = $params->get('catid'); if (is_numeric($categoryId)) { $model->setState('filter.category_id', $categoryId); } // Set User Filter. $userId = $user->get('id'); switch ($params->get('user_id')) { case 'by_me': $model->setState('filter.author_id', $userId); break; case 'not_me': $model->setState('filter.author_id', $userId); $model->setState('filter.author_id.include', false); break; } // Set the Start and Limit $model->setState('list.start', 0); $model->setState('list.limit', $params->get('count', 5)); $items = $model->getItems(); if ($error = $model->getError()) { JError::raiseError(500, $error); return false; } // Set the links foreach ($items as &$item) { if ($user->authorise('core.edit', 'com_content.article.' . $item->id)) { $item->link = JRoute::_('index.php?option=com_content&task=article.edit&id=' . $item->id); } else { $item->link = ''; } } return $items; } /** * Get the alternate title for the module * * @param JObject $params The module parameters. * * @return string The alternate title for the module. */ public static function getTitle($params) { $who = $params->get('user_id'); $catid = (int) $params->get('catid'); if ($catid) { $category = JCategories::getInstance('Content')->get($catid); if ($category) { $title = $category->title; } else { $title = JText::_('MOD_POPULAR_UNEXISTING'); } } else { $title = ''; } return JText::plural('MOD_POPULAR_TITLE' . ($catid ? "_CATEGORY" : '') . ($who != '0' ? "_$who" : ''), (int) $params->get('count'), $title); } } PKb��\ [� modules/mod_menu/mod_menu.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_menu * * @copyright Copyright (C) 2005 - 2015 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 module helper classes. if (!class_exists('ModMenuHelper')) { require __DIR__ . '/helper.php'; } if (!class_exists('JAdminCssMenu')) { require __DIR__ . '/menu.php'; } $lang = JFactory::getLanguage(); $user = JFactory::getUser(); $input = JFactory::getApplication()->input; $menu = new JAdminCSSMenu; $enabled = $input->getBool('hidemainmenu') ? false : true; // Render the module layout require JModuleHelper::getLayoutPath('mod_menu', $params->get('layout', 'default')); PKb��\{�eH: : modules/mod_menu/mod_menu.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1" client="administrator" method="upgrade"> <name>mod_menu</name> <author>Joomla! Project</author> <creationDate>March 2006</creationDate> <copyright>Copyright (C) 2005 - 2015 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_MENU_XML_DESCRIPTION</description> <files> <filename module="mod_menu">mod_menu.php</filename> <folder>tmpl</folder> <filename>helper.php</filename> <filename>menu.php</filename> </files> <languages> <language tag="en-GB">en-GB.mod_menu.ini</language> <language tag="en-GB">en-GB.mod_menu.sys.ini</language> </languages> <help key="JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_MENU" /> <config> <fields name="params"> <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" rows="3" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" /> <field name="shownew" type="radio" class="btn-group btn-group-yesno" default="1" label="MOD_MENU_FIELD_SHOWNEW" description="MOD_MENU_FIELD_SHOWNEW_DESC"> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="showhelp" type="radio" class="btn-group btn-group-yesno" default="1" label="MOD_MENU_FIELD_SHOWHELP" description="MOD_MENU_FIELD_SHOWHELP_DESC"> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="forum_url" type="url" filter="url" size="30" default="" label="MOD_MENU_FIELD_FORUMURL_LABEL" description="MOD_MENU_FIELD_FORUMURL_DESC" /> <field name="cache" type="list" default="0" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC"> <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> </field> </fieldset> </fields> </config> </extension> PKb��\�En�$�$modules/mod_menu/menu.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_menu * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Tree based class to render the admin menu * * @since 1.5 */ class JAdminCssMenu extends JObject { /** * CSS string to add to document head * * @var string */ protected $_css = null; /** * Root node * * @var object */ protected $_root = null; /** * Current working node * * @var object */ protected $_current = null; /** * Constructor */ public function __construct() { $this->_root = new JMenuNode('ROOT'); $this->_current = & $this->_root; } /** * Method to add a child * * @param JMenuNode &$node The node to process * @param boolean $setCurrent True to set as current working node * * @return void */ public function addChild(JMenuNode &$node, $setCurrent = false) { $this->_current->addChild($node); if ($setCurrent) { $this->_current = &$node; } } /** * Method to get the parent * * @return void */ public function getParent() { $this->_current = &$this->_current->getParent(); } /** * Method to get the parent * * @return void */ public function reset() { $this->_current = &$this->_root; } /** * Method to add a separator node * * @return void */ public function addSeparator() { $this->addChild(new JMenuNode(null, null, 'separator', false)); } /** * Method to render the menu * * @param string $id The id of the menu to be rendered * @param string $class The class of the menu to be rendered * * @return void */ public function renderMenu($id = 'menu', $class = '') { $depth = 1; if (!empty($id)) { $id = 'id="' . $id . '"'; } if (!empty($class)) { $class = 'class="' . $class . '"'; } // Recurse through children if they exist while ($this->_current->hasChildren()) { echo "<ul " . $id . " " . $class . ">\n"; foreach ($this->_current->getChildren() as $child) { $this->_current = & $child; $this->renderLevel($depth++); } echo "</ul>\n"; } if ($this->_css) { // Add style to document head JFactory::getDocument()->addStyleDeclaration($this->_css); } } /** * Method to render a given level of a menu * * @param integer $depth The level of the menu to be rendered * * @return void */ public function renderLevel($depth) { // Build the CSS class suffix $class = ''; if ($this->_current->hasChildren()) { $class = ' class="dropdown"'; } if ($this->_current->class == 'separator') { $class = ' class="divider"'; } if ($this->_current->hasChildren() && $this->_current->class) { $class = ' class="dropdown-submenu"'; } if ($this->_current->class == 'disabled') { $class = ' class="disabled"'; } // Print the item echo "<li" . $class . ">"; // Print a link if it exists $linkClass = array(); $dataToggle = ''; $dropdownCaret = ''; if ($this->_current->hasChildren()) { $linkClass[] = 'dropdown-toggle'; $dataToggle = ' data-toggle="dropdown"'; if (!$this->_current->getParent()->hasParent()) { $dropdownCaret = ' <span class="caret"></span>'; } } if ($this->_current->link != null && $this->_current->getParent()->title != 'ROOT') { $iconClass = $this->getIconClass($this->_current->class); if (!empty($iconClass)) { $linkClass[] = $iconClass; } } // Implode out $linkClass for rendering $linkClass = ' class="' . implode(' ', $linkClass) . '"'; if ($this->_current->link != null && $this->_current->target != null) { echo "<a" . $linkClass . " " . $dataToggle . " href=\"" . $this->_current->link . "\" target=\"" . $this->_current->target . "\" >" . $this->_current->title . $dropdownCaret . "</a>"; } elseif ($this->_current->link != null && $this->_current->target == null) { echo "<a" . $linkClass . " " . $dataToggle . " href=\"" . $this->_current->link . "\">" . $this->_current->title . $dropdownCaret . "</a>"; } elseif ($this->_current->title != null) { echo "<a" . $linkClass . " " . $dataToggle . ">" . $this->_current->title . $dropdownCaret . "</a>"; } else { echo "<span></span>"; } // Recurse through children if they exist while ($this->_current->hasChildren()) { if ($this->_current->class) { $id = ''; if (!empty($this->_current->id)) { $id = ' id="menu-' . strtolower($this->_current->id) . '"'; } echo '<ul' . $id . ' class="dropdown-menu menu-component">' . "\n"; } else { echo '<ul class="dropdown-menu">' . "\n"; } foreach ($this->_current->getChildren() as $child) { $this->_current = & $child; $this->renderLevel($depth++); } echo "</ul>\n"; } echo "</li>\n"; } /** * Method to get the CSS class name for an icon identifier or create one if * a custom image path is passed as the identifier * * @param string $identifier Icon identification string * * @return string CSS class name * * @since 1.5 */ public function getIconClass($identifier) { static $classes; // Initialise the known classes array if it does not exist if (!is_array($classes)) { $classes = array(); } /* * If we don't already know about the class... build it and mark it * known so we don't have to build it again */ if (!isset($classes[$identifier])) { if (substr($identifier, 0, 6) == 'class:') { // We were passed a class name $class = substr($identifier, 6); $classes[$identifier] = "menu-$class"; } else { if ($identifier == null) { return null; } // Build the CSS class for the icon $class = preg_replace('#\.[^.]*$#', '', basename($identifier)); $class = preg_replace('#\.\.[^A-Za-z0-9\.\_\- ]#', '', $class); $this->_css .= "\n.menu-$class {\n" . "\tbackground: url($identifier) no-repeat;\n" . "}\n"; $classes[$identifier] = "menu-$class"; } } return $classes[$identifier]; } } /** * A Node for JAdminCssMenu * * @see JAdminCssMenu * @since 1.5 */ class JMenuNode extends JObject { /** * Node Title * * @var string */ public $title = null; /** * Node Id * * @var string */ public $id = null; /** * Node Link * * @var string */ public $link = null; /** * Link Target * * @var string */ public $target = null; /** * CSS Class for node * * @var string */ public $class = null; /** * Active Node? * * @var boolean */ public $active = false; /** * Parent node * * @var JMenuNode */ protected $_parent = null; /** * Array of Children * * @var array */ protected $_children = array(); /** * Constructor for the class. * * @param string $title The title of the node * @param string $link The node link * @param string $class The CSS class for the node * @param boolean $active True if node is active, false otherwise * @param string $target The link target * @param string $titleicon The title icon for the node */ public function __construct($title, $link = null, $class = null, $active = false, $target = null, $titleicon = null) { $this->title = $titleicon ? $title . $titleicon : $title; $this->link = JFilterOutput::ampReplace($link); $this->class = $class; $this->active = $active; $this->id = null; if (!empty($link) && $link !== '#') { $uri = new JUri($link); $params = $uri->getQuery(true); $parts = array(); foreach ($params as $value) { $parts[] = str_replace(array('.', '_'), '-', $value); } $this->id = implode('-', $parts); } $this->target = $target; } /** * Add child to this node * * If the child already has a parent, the link is unset * * @param JMenuNode &$child The child to be added * * @return void */ public function addChild(JMenuNode &$child) { $child->setParent($this); } /** * Set the parent of a this node * * If the node already has a parent, the link is unset * * @param JMenuNode &$parent The JMenuNode for parent to be set or null * * @return void */ public function setParent(JMenuNode &$parent = null) { $hash = spl_object_hash($this); if (!is_null($this->_parent)) { unset($this->_parent->children[$hash]); } if (!is_null($parent)) { $parent->_children[$hash] = & $this; } $this->_parent = & $parent; } /** * Get the children of this node * * @return array The children */ public function &getChildren() { return $this->_children; } /** * Get the parent of this node * * @return mixed JMenuNode object with the parent or null for no parent */ public function &getParent() { return $this->_parent; } /** * Test if this node has children * * @return boolean True if there are children */ public function hasChildren() { return (bool) count($this->_children); } /** * Test if this node has a parent * * @return boolean True if there is a parent */ public function hasParent() { return $this->getParent() != null; } } PKb��\c�v� *modules/mod_menu/tmpl/default_disabled.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_menu * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $showhelp = $params->get('showhelp', 1); /** * Site SubMenu **/ $menu->addChild(new JMenuNode(JText::_('MOD_MENU_SYSTEM'), null, 'disabled')); /** * Users Submenu **/ if ($user->authorise('core.manage', 'com_users')) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_USERS'), null, 'disabled')); } /** * Menus Submenu **/ if ($user->authorise('core.manage', 'com_menus')) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_MENUS'), null, 'disabled')); } /** * Content Submenu **/ if ($user->authorise('core.manage', 'com_content')) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_CONTENT'), null, 'disabled')); } /** * Components Submenu **/ // Get the authorised components and sub-menus. $components = ModMenuHelper::getComponents(true); // Check if there are any components, otherwise, don't display the components menu item if ($components) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COMPONENTS'), null, 'disabled')); } /** * Extensions Submenu **/ $im = $user->authorise('core.manage', 'com_installer'); $mm = $user->authorise('core.manage', 'com_modules'); $pm = $user->authorise('core.manage', 'com_plugins'); $tm = $user->authorise('core.manage', 'com_templates'); $lm = $user->authorise('core.manage', 'com_languages'); if ($im || $mm || $pm || $tm || $lm) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_EXTENSIONS'), null, 'disabled')); } /** * Help Submenu **/ if ($showhelp == 1) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP'), null, 'disabled')); } PKb��\Ʉ��.�.)modules/mod_menu/tmpl/default_enabled.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_menu * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /* @var $menu JAdminCSSMenu */ $shownew = (boolean) $params->get('shownew', 1); $showhelp = $params->get('showhelp', 1); $user = JFactory::getUser(); $lang = JFactory::getLanguage(); /* * Site Submenu */ $menu->addChild(new JMenuNode(JText::_('MOD_MENU_SYSTEM'), '#'), true); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_CONTROL_PANEL'), 'index.php', 'class:cpanel')); if ($user->authorise('core.admin')) { $menu->addSeparator(); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_CONFIGURATION'), 'index.php?option=com_config', 'class:config')); } if ($user->authorise('core.manage', 'com_checkin')) { $menu->addSeparator(); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_GLOBAL_CHECKIN'), 'index.php?option=com_checkin', 'class:checkin')); } if ($user->authorise('core.manage', 'com_cache')) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_CLEAR_CACHE'), 'index.php?option=com_cache', 'class:clear')); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_PURGE_EXPIRED_CACHE'), 'index.php?option=com_cache&view=purge', 'class:purge')); } if ($user->authorise('core.admin')) { $menu->addSeparator(); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_SYSTEM_INFORMATION'), 'index.php?option=com_admin&view=sysinfo', 'class:info')); } $menu->getParent(); /* * Users Submenu */ if ($user->authorise('core.manage', 'com_users')) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_USERS_USERS'), '#'), true); $createUser = $shownew && $user->authorise('core.create', 'com_users'); $createGrp = $user->authorise('core.admin', 'com_users'); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_USERS_USER_MANAGER'), 'index.php?option=com_users&view=users', 'class:user'), $createUser); if ($createUser) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_USERS_ADD_USER'), 'index.php?option=com_users&task=user.add', 'class:newarticle')); $menu->getParent(); } if ($createGrp) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_USERS_GROUPS'), 'index.php?option=com_users&view=groups', 'class:groups'), $createUser); if ($createUser) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_USERS_ADD_GROUP'), 'index.php?option=com_users&task=group.add', 'class:newarticle')); $menu->getParent(); } $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_USERS_LEVELS'), 'index.php?option=com_users&view=levels', 'class:levels'), $createUser); if ($createUser) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_USERS_ADD_LEVEL'), 'index.php?option=com_users&task=level.add', 'class:newarticle')); $menu->getParent(); } } $menu->addSeparator(); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_USERS_NOTES'), 'index.php?option=com_users&view=notes', 'class:user-note'), $createUser); if ($createUser) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_USERS_ADD_NOTE'), 'index.php?option=com_users&task=note.add', 'class:newarticle')); $menu->getParent(); } $menu->addChild( new JMenuNode( JText::_('MOD_MENU_COM_USERS_NOTE_CATEGORIES'), 'index.php?option=com_categories&view=categories&extension=com_users', 'class:category'), $createUser ); if ($createUser) { $menu->addChild( new JMenuNode( JText::_('MOD_MENU_COM_CONTENT_NEW_CATEGORY'), 'index.php?option=com_categories&task=category.add&extension=com_users', 'class:newarticle' ) ); $menu->getParent(); } if (JFactory::getApplication()->get('massmailoff') != 1) { $menu->addSeparator(); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_MASS_MAIL_USERS'), 'index.php?option=com_users&view=mail', 'class:massmail')); } $menu->getParent(); } /* * Menus Submenu */ if ($user->authorise('core.manage', 'com_menus')) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_MENUS'), '#'), true); $createMenu = $shownew && $user->authorise('core.create', 'com_menus'); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_MENU_MANAGER'), 'index.php?option=com_menus&view=menus', 'class:menumgr'), $createMenu); if ($createMenu) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_MENU_MANAGER_NEW_MENU'), 'index.php?option=com_menus&view=menu&layout=edit', 'class:newarticle')); $menu->getParent(); } $menu->addSeparator(); // Menu Types $menuTypes = ModMenuHelper::getMenus(); $menuTypes = JArrayHelper::sortObjects($menuTypes, 'title', 1, false); foreach ($menuTypes as $menuType) { $alt = '*' . $menuType->sef . '*'; if ($menuType->home == 0) { $titleicon = ''; } elseif ($menuType->home == 1 && $menuType->language == '*') { $titleicon = ' <span class="icon-home"></span>'; } elseif ($menuType->home > 1) { $titleicon = ' <span>' . JHtml::_('image', 'mod_languages/icon-16-language.png', $menuType->home, array('title' => JText::_('MOD_MENU_HOME_MULTIPLE')), true) . '</span>'; } else { $image = JHtml::_('image', 'mod_languages/' . $menuType->image . '.gif', null, null, true, true); if (!$image) { $image = JHtml::_('image', 'mod_languages/icon-16-language.png', $alt, array('title' => $menuType->title_native), true); } else { $image = JHtml::_('image', 'mod_languages/' . $menuType->image . '.gif', $alt, array('title' => $menuType->title_native), true); } $titleicon = ' <span>' . $image . '</span>'; } $menu->addChild( new JMenuNode( $menuType->title, 'index.php?option=com_menus&view=items&menutype=' . $menuType->menutype, 'class:menu', null, null, $titleicon ), $createMenu ); if ($createMenu) { $menu->addChild( new JMenuNode( JText::_('MOD_MENU_MENU_MANAGER_NEW_MENU_ITEM'), 'index.php?option=com_menus&view=item&layout=edit&menutype=' . $menuType->menutype, 'class:newarticle') ); $menu->getParent(); } } $menu->getParent(); } /* * Content Submenu */ if ($user->authorise('core.manage', 'com_content')) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_CONTENT'), '#'), true); $createContent = $shownew && $user->authorise('core.create', 'com_content'); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_CONTENT_ARTICLE_MANAGER'), 'index.php?option=com_content', 'class:article'), $createContent); if ($createContent) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_CONTENT_NEW_ARTICLE'), 'index.php?option=com_content&task=article.add', 'class:newarticle') ); $menu->getParent(); } $menu->addChild( new JMenuNode( JText::_('MOD_MENU_COM_CONTENT_CATEGORY_MANAGER'), 'index.php?option=com_categories&extension=com_content', 'class:category'), $createContent ); if ($createContent) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_CONTENT_NEW_CATEGORY'), 'index.php?option=com_categories&task=category.add&extension=com_content', 'class:newarticle') ); $menu->getParent(); } $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COM_CONTENT_FEATURED'), 'index.php?option=com_content&view=featured', 'class:featured')); if ($user->authorise('core.manage', 'com_media')) { $menu->addSeparator(); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_MEDIA_MANAGER'), 'index.php?option=com_media', 'class:media')); } $menu->getParent(); } /* * Components Submenu */ // Get the authorised components and sub-menus. $components = ModMenuHelper::getComponents(true); // Check if there are any components, otherwise, don't render the menu if ($components) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COMPONENTS'), '#'), true); foreach ($components as &$component) { if (!empty($component->submenu)) { // This component has a db driven submenu. $menu->addChild(new JMenuNode($component->text, $component->link, $component->img), true); foreach ($component->submenu as $sub) { $menu->addChild(new JMenuNode($sub->text, $sub->link, $sub->img)); } $menu->getParent(); } else { $menu->addChild(new JMenuNode($component->text, $component->link, $component->img)); } } $menu->getParent(); } /* * Extensions Submenu */ $im = $user->authorise('core.manage', 'com_installer'); $mm = $user->authorise('core.manage', 'com_modules'); $pm = $user->authorise('core.manage', 'com_plugins'); $tm = $user->authorise('core.manage', 'com_templates'); $lm = $user->authorise('core.manage', 'com_languages'); if ($im || $mm || $pm || $tm || $lm) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_EXTENSIONS'), '#'), true); if ($im) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_EXTENSION_MANAGER'), 'index.php?option=com_installer', 'class:install')); } if ($im && ($mm || $pm || $tm || $lm)) { $menu->addSeparator(); } if ($mm) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_MODULE_MANAGER'), 'index.php?option=com_modules', 'class:module')); } if ($pm) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_PLUGIN_MANAGER'), 'index.php?option=com_plugins', 'class:plugin')); } if ($tm) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_TEMPLATE_MANAGER'), 'index.php?option=com_templates', 'class:themes')); } if ($lm) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_LANGUAGE_MANAGER'), 'index.php?option=com_languages', 'class:language')); } $menu->getParent(); } /* * Help Submenu */ if ($showhelp == 1) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP'), '#'), true); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP_JOOMLA'), 'index.php?option=com_admin&view=help', 'class:help')); $menu->addSeparator(); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP_SUPPORT_OFFICIAL_FORUM'), 'http://forum.joomla.org', 'class:help-forum', false, '_blank')); if ($forum_url = $params->get('forum_url')) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP_SUPPORT_CUSTOM_FORUM'), $forum_url, 'class:help-forum', false, '_blank')); } $debug = $lang->setDebug(false); if ($lang->hasKey('MOD_MENU_HELP_SUPPORT_OFFICIAL_LANGUAGE_FORUM_VALUE') && JText::_('MOD_MENU_HELP_SUPPORT_OFFICIAL_LANGUAGE_FORUM_VALUE') != '') { $forum_url = 'http://forum.joomla.org/viewforum.php?f=' . (int) JText::_('MOD_MENU_HELP_SUPPORT_OFFICIAL_LANGUAGE_FORUM_VALUE'); $lang->setDebug($debug); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP_SUPPORT_OFFICIAL_LANGUAGE_FORUM'), $forum_url, 'class:help-forum', false, '_blank')); } $lang->setDebug($debug); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP_DOCUMENTATION'), 'https://docs.joomla.org', 'class:help-docs', false, '_blank')); $menu->addSeparator(); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP_EXTENSIONS'), 'http://extensions.joomla.org', 'class:help-jed', false, '_blank')); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP_TRANSLATIONS'), 'http://community.joomla.org/translations.html', 'class:help-trans', false, '_blank') ); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP_RESOURCES'), 'http://resources.joomla.org', 'class:help-jrd', false, '_blank')); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP_COMMUNITY'), 'http://community.joomla.org', 'class:help-community', false, '_blank')); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP_SECURITY'), 'http://developer.joomla.org/security-centre.html', 'class:help-security', false, '_blank') ); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP_DEVELOPER'), 'http://developer.joomla.org', 'class:help-dev', false, '_blank')); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP_XCHANGE'), 'http://joomla.stackexchange.com', 'class:help-dev', false, '_blank')); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_HELP_SHOP'), 'http://shop.joomla.org', 'class:help-shop', false, '_blank')); $menu->getParent(); } PKb��\�B��88!modules/mod_menu/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_menu * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $document = JFactory::getDocument(); $direction = $document->direction == 'rtl' ? 'pull-right' : ''; require JModuleHelper::getLayoutPath('mod_menu', $enabled ? 'default_enabled' : 'default_disabled'); $menu->renderMenu('menu', $enabled ? 'nav ' . $direction : 'nav disabled ' . $direction); PKb��\,����modules/mod_menu/helper.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_menu * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Helper for mod_menu * * @since 1.5 */ abstract class ModMenuHelper { /** * Get a list of the available menus. * * @return array An array of the available menus (from the menu types table). * * @since 1.6 */ public static function getMenus() { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('a.*, SUM(b.home) AS home') ->from('#__menu_types AS a') ->join('LEFT', '#__menu AS b ON b.menutype = a.menutype AND b.home != 0') ->select('b.language') ->join('LEFT', '#__languages AS l ON l.lang_code = language') ->select('l.image') ->select('l.sef') ->select('l.title_native') ->where('(b.client_id = 0 OR b.client_id IS NULL)'); // Sqlsrv change $query->group('a.id, a.menutype, a.description, a.title, b.menutype,b.language,l.image,l.sef,l.title_native'); $db->setQuery($query); try { $result = $db->loadObjectList(); } catch (RuntimeException $e) { $result = array(); JFactory::getApplication()->enqueueMessage(JText::_('JERROR_AN_ERROR_HAS_OCCURRED'), 'error'); } return $result; } /** * Get a list of the authorised, non-special components to display in the components menu. * * @param boolean $authCheck An optional switch to turn off the auth check (to support custom layouts 'grey out' behaviour). * * @return array A nest array of component objects and submenus * * @since 1.6 */ public static function getComponents($authCheck = true) { $lang = JFactory::getLanguage(); $user = JFactory::getUser(); $db = JFactory::getDbo(); $query = $db->getQuery(true); $result = array(); // Prepare the query. $query->select('m.id, m.title, m.alias, m.link, m.parent_id, m.img, e.element') ->from('#__menu AS m'); // Filter on the enabled states. $query->join('LEFT', '#__extensions AS e ON m.component_id = e.extension_id') ->where('m.client_id = 1') ->where('e.enabled = 1') ->where('m.id > 1'); // Order by lft. $query->order('m.lft'); $db->setQuery($query); // Component list try { $components = $db->loadObjectList(); } catch (RuntimeException $e) { $components = array(); JFactory::getApplication()->enqueueMessage(JText::_('JERROR_AN_ERROR_HAS_OCCURRED'), 'error'); } // Parse the list of extensions. foreach ($components as &$component) { // Trim the menu link. $component->link = trim($component->link); if ($component->parent_id == 1) { // Only add this top level if it is authorised and enabled. if ($authCheck == false || ($authCheck && $user->authorise('core.manage', $component->element))) { // Root level. $result[$component->id] = $component; if (!isset($result[$component->id]->submenu)) { $result[$component->id]->submenu = array(); } // If the root menu link is empty, add it in. if (empty($component->link)) { $component->link = 'index.php?option=' . $component->element; } if (!empty($component->element)) { // Load the core file then // Load extension-local file. $lang->load($component->element . '.sys', JPATH_BASE, null, false, true) || $lang->load($component->element . '.sys', JPATH_ADMINISTRATOR . '/components/' . $component->element, null, false, true); } $component->text = $lang->hasKey($component->title) ? JText::_($component->title) : $component->alias; } } else { // Sub-menu level. if (isset($result[$component->parent_id])) { // Add the submenu link if it is defined. if (isset($result[$component->parent_id]->submenu) && !empty($component->link)) { $component->text = $lang->hasKey($component->title) ? JText::_($component->title) : $component->alias; $result[$component->parent_id]->submenu[] = &$component; } } } } $result = JArrayHelper::sortObjects($result, 'text', 1, false, true); return $result; } } PKb��\^b[���!modules/mod_logged/mod_logged.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_logged * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Include dependencies. require_once __DIR__ . '/helper.php'; $users = ModLoggedHelper::getList($params); require JModuleHelper::getLayoutPath('mod_logged', $params->get('layout', 'default')); PKb��\S�RI��!modules/mod_logged/mod_logged.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1" client="administrator" method="upgrade"> <name>mod_logged</name> <author>Joomla! Project</author> <creationDate>January 2005</creationDate> <copyright>Copyright (C) 2005 - 2015 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_LOGGED_XML_DESCRIPTION</description> <files> <filename module="mod_logged">mod_logged.php</filename> <folder>tmpl</folder> </files> <languages> <language tag="en-GB">en-GB.mod_logged.ini</language> <language tag="en-GB">en-GB.mod_logged.sys.ini</language> </languages> <help key="JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_LOGGED" /> <config> <fields name="params"> <fieldset name="basic"> <field name="count" type="text" default="5" label="MOD_LOGGED_FIELD_COUNT_LABEL" description="MOD_LOGGED_FIELD_COUNT_DESC" /> <field name="name" type="list" default="1" label="MOD_LOGGED_NAME" description="MOD_LOGGED_FIELD_NAME_DESC" > <option value="1">MOD_LOGGED_NAME</option> <option value="0">JGLOBAL_USERNAME</option> </field> </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" rows="3" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" /> <field name="cache" type="list" default="0" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC"> <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> </field> </fieldset> </fields> </config> </extension> PKb��\ʧ깩�#modules/mod_logged/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_logged * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('bootstrap.tooltip'); ?> <div class="row-striped"> <?php foreach ($users as $user) : ?> <div class="row-fluid"> <div class="span9"> <?php if ($user->client_id == 0) : ?> <a class="hasTooltip" title="<?php echo JHtml::tooltipText('MOD_LOGGED_LOGOUT'); ?>" href="<?php echo $user->logoutLink; ?>" class="btn btn-danger btn-mini"> <span class="icon-remove icon-white" title="<?php echo JText::_('JLOGOUT'); ?>"></span> </a> <?php endif; ?> <strong class="row-title"> <?php if (isset($user->editLink)) : ?> <a href="<?php echo $user->editLink; ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('JGRID_HEADING_ID'); ?> : <?php echo $user->id; ?>"> <?php echo $user->name; ?> </a> <?php else : ?> <?php echo $user->name; ?> <?php endif; ?> </strong> <small class="small hasTooltip" title="<?php echo JHtml::tooltipText('JCLIENT'); ?>"> <?php if ($user->client_id) : ?> <?php echo JText::_('JADMINISTRATION'); ?> <?php else : ?> <?php echo JText::_('JSITE'); ?> <?php endif; ?> </small> </div> <div class="span3"> <span class="small hasTooltip" title="<?php echo JHtml::tooltipText('MOD_LOGGED_LAST_ACTIVITY'); ?>"> <span class="icon-calendar"></span> <?php echo JHtml::_('date', $user->time, JText::_('DATE_FORMAT_LC2')); ?> </span> </div> </div> <?php endforeach; ?> </div> PKb��\���5JJmodules/mod_logged/helper.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_logged * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Helper for mod_logged * * @since 1.5 */ abstract class ModLoggedHelper { /** * Get a list of logged users. * * @param \Joomla\Registry\Registry &$params The module parameters. * * @return mixed An array of users, or false on error. * * @throws RuntimeException */ public static function getList(&$params) { $db = JFactory::getDbo(); $user = JFactory::getUser(); $query = $db->getQuery(true) ->select('s.time, s.client_id, u.id, u.name, u.username') ->from('#__session AS s') ->join('LEFT', '#__users AS u ON s.userid = u.id') ->where('s.guest = 0'); $db->setQuery($query, 0, $params->get('count', 5)); try { $results = $db->loadObjectList(); } catch (RuntimeException $e) { throw $e; } foreach ($results as $k => $result) { $results[$k]->logoutLink = ''; if ($user->authorise('core.manage', 'com_users')) { $results[$k]->editLink = JRoute::_('index.php?option=com_users&task=user.edit&id=' . $result->id); $results[$k]->logoutLink = JRoute::_('index.php?option=com_login&task=logout&uid=' . $result->id . '&' . JSession::getFormToken() . '=1'); } if ($params->get('name', 1) == 0) { $results[$k]->name = $results[$k]->username; } } return $results; } /** * Get the alternate title for the module * * @param \Joomla\Registry\Registry $params The module parameters. * * @return string The alternate title for the module. */ public static function getTitle($params) { return JText::plural('MOD_LOGGED_TITLE', $params->get('count')); } } PKb��\�+xx$modules/mod_version/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_version * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <?php if (!empty($version)) : ?> <p align="center"><?php echo $version; ?></p> <?php endif; ?> PKb��\�TNNmodules/mod_version/helper.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_version * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Helper for mod_version * * @since 1.6 */ abstract class ModVersionHelper { /** * Get the member items of the submenu. * * @param \Joomla\Registry\Registry &$params The parameters object. * * @return string String containing the current Joomla version based on the selected format. */ public static function getVersion(&$params) { $format = $params->get('format', 'short'); $product = $params->get('product', 0); $method = 'get' . ucfirst($format) . "Version"; // Get the joomla version $instance = new JVersion; $version = call_user_func(array($instance, $method)); if ($format == 'short' && !empty($product)) { // Add the product name to short format only (in long format it's included) $version = $instance->PRODUCT . ' ' . $version; } return $version; } } PKb��\#� yy8modules/mod_version/language/en-GB/en-GB.mod_version.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_VERSION="Joomla! Version Information" MOD_VERSION_FORMAT_DESC="The long version includes code name and date." MOD_VERSION_FORMAT_LABEL="Version Format" MOD_VERSION_FORMAT_LONG="Long" MOD_VERSION_FORMAT_SHORT="Short" MOD_VERSION_PRODUCT_DESC="Include Joomla! name when using short format." MOD_VERSION_PRODUCT_LABEL="Show Joomla!" MOD_VERSION_XML_DESCRIPTION="This module displays the Joomla! version."PKb��\��;{{<modules/mod_version/language/en-GB/en-GB.mod_version.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_VERSION="Joomla! Version Information" MOD_VERSION_LAYOUT_DEFAULT="Default" MOD_VERSION_XML_DESCRIPTION="This module displays the Joomla! version." PKb��\!����#modules/mod_version/mod_version.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1" client="administrator" method="upgrade"> <name>mod_version</name> <author>Joomla! Project</author> <creationDate>January 2012</creationDate> <copyright>Copyright (C) 2005 - 2015 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_VERSION_XML_DESCRIPTION</description> <files> <filename module="mod_version">mod_version.php</filename> <folder>language</folder> <folder>tmpl</folder> <filename>helper.php</filename> </files> <languages> <language tag="en-GB">language/en-GB/en-GB.mod_version.ini</language> <language tag="en-GB">language/en-GB/en-GB.mod_version.sys.ini</language> </languages> <help key="JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_VERSION" /> <config> <fields name="params"> <fieldset name="basic"> <field name="format" type="list" default="short" label="MOD_VERSION_FORMAT_LABEL" description="MOD_VERSION_FORMAT_DESC"> <option value="short">MOD_VERSION_FORMAT_SHORT</option> <option value="long">MOD_VERSION_FORMAT_LONG</option> </field> <field name="product" type="radio" class="btn-group btn-group-yesno" default="1" label="MOD_VERSION_PRODUCT_LABEL" description="MOD_VERSION_PRODUCT_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> </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" rows="3" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" /> <field name="cache" type="list" default="0" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC"> <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> </field> </fieldset> </fields> </config> </extension> PKb��\�����#modules/mod_version/mod_version.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_version * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require_once __DIR__ . '/helper.php'; $version = ModVersionHelper::getVersion($params); require JModuleHelper::getLayoutPath('mod_version', $params->get('layout', 'default')); PKb��\rW����#modules/mod_status/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_status * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $hideLinks = $input->getBool('hidemainmenu'); $task = $input->getCmd('task'); $output = array(); // Print the Preview link to Main site. if ($params->get('show_viewsite', 1)) { $output[] = '<div class="btn-group viewsite">' . '<a href="' . JUri::root() . '" target="_blank">' . '<span class="icon-out-2"></span> ' . JText::_('JGLOBAL_VIEW_SITE') . '</a>' . '</div>' . '<div class="btn-group divider"></div>'; } // Print the frontend logged in users. if ($params->get('show_loggedin_users', 1)) { $output[] = '<div class="btn-group loggedin-users">' . '<span class="badge">' . $online_num . '</span> ' . JText::plural('MOD_STATUS_USERS', $online_num) . '</div>'; } // Print the back-end logged in users. if ($params->get('show_loggedin_users_admin', 1)) { $output[] = '<div class="btn-group backloggedin-users">' . '<span class="badge">' . $count . '</span> ' . JText::plural('MOD_STATUS_BACKEND_USERS', $count) . '</div>'; } // Print the inbox message. if ($params->get('show_messages', 1)) { $active = $unread ? ' badge-warning' : ''; $output[] = '<div class="btn-group hasTooltip ' . $inboxClass . '"' . ' title="' . JText::plural('MOD_STATUS_MESSAGES', $unread) . '">' . ($hideLinks ? '' : '<a href="' . $inboxLink . '">') . '<span class="icon-envelope"></span> ' . '<span class="badge' . $active . '">' . $unread . '</span>' . ($hideLinks ? '' : '</a>') . '<div class="btn-group divider"></div>' . '</div>'; } // Print the logout link. if ($task == 'edit' || $task == 'editA' || $input->getInt('hidemainmenu')) { $logoutLink = ''; } else { $logoutLink = JRoute::_('index.php?option=com_login&task=logout&' . JSession::getFormToken() . '=1'); } if ($params->get('show_logout', 1)) { $output[] = '<div class="btn-group logout">' . ($hideLinks ? '' : '<a href="' . $logoutLink . '">') . '<span class="icon-minus-2"></span> ' . JText::_('JLOGOUT') . ($hideLinks ? '' : '</a>') . '</div>'; } // Output the items. foreach ($output as $item) { echo $item; } PKb��\1+�W� � !modules/mod_status/mod_status.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1" client="administrator" method="upgrade"> <name>mod_status</name> <author>Joomla! Project</author> <creationDate>Feb 2006</creationDate> <copyright>(C) 2005 - 2015 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_STATUS_XML_DESCRIPTION</description> <files> <filename module="mod_status">mod_status.php</filename> <folder>tmpl</folder> </files> <languages> <language tag="en-GB">en-GB.mod_status.ini</language> <language tag="en-GB">en-GB.mod_status.sys.ini</language> </languages> <help key="JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_STATUS" /> <config> <fields name="params"> <fieldset name="basic"> <field name="show_loggedin_users" type="radio" class="btn-group btn-group-yesno" default="1" label="MOD_STATUS_FIELD_SHOW_LOGGEDIN_USERS_LABEL" description="MOD_STATUS_FIELD_SHOW_LOGGEDIN_USERS_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="show_loggedin_users_admin" type="radio" class="btn-group btn-group-yesno" default="1" label="MOD_STATUS_FIELD_SHOW_LOGGEDIN_USERS_ADMIN_LABEL" description="MOD_STATUS_FIELD_SHOW_LOGGEDIN_USERS_ADMIN_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="show_messages" type="radio" class="btn-group btn-group-yesno" default="1" label="MOD_STATUS_FIELD_SHOW_MESSAGES_LABEL" description="MOD_STATUS_FIELD_SHOW_MESSAGES_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> </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" rows="3" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" /> <field name="cache" type="list" default="0" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC"> <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> </field> </fieldset> </fields> </config> </extension> PKb��\/p�}��!modules/mod_status/mod_status.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_status * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $config = JFactory::getConfig(); $user = JFactory::getUser(); $db = JFactory::getDbo(); $lang = JFactory::getLanguage(); $input = JFactory::getApplication()->input; // Get the number of unread messages in your inbox. $query = $db->getQuery(true) ->select('COUNT(*)') ->from('#__messages') ->where('state = 0 AND user_id_to = ' . (int) $user->get('id')); $db->setQuery($query); $unread = (int) $db->loadResult(); // Get the number of back-end logged in users. $query->clear() ->select('COUNT(session_id)') ->from('#__session') ->where('guest = 0 AND client_id = 1'); $db->setQuery($query); $count = (int) $db->loadResult(); // Set the inbox link. if ($input->getBool('hidemainmenu')) { $inboxLink = ''; } else { $inboxLink = JRoute::_('index.php?option=com_messages'); } // Set the inbox class. if ($unread) { $inboxClass = 'unread-messages'; } else { $inboxClass = 'no-unread-messages'; } // Get the number of frontend logged in users. $query->clear() ->select('COUNT(session_id)') ->from('#__session') ->where('guest = 0 AND client_id = 0'); $db->setQuery($query); $online_num = (int) $db->loadResult(); require JModuleHelper::getLayoutPath('mod_status', $params->get('layout', 'default')); PKb��\I�����+modules/mod_stats_admin/mod_stats_admin.phpnu�[���<?php /** * @package Joomla.Site * @subpackage mod_stats * * @copyright Copyright (C) 2005 - 2015 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 syndicate functions only once require_once __DIR__ . '/helper.php'; $serverinfo = $params->get('serverinfo'); $siteinfo = $params->get('siteinfo'); $list = ModStatsHelper::getStats($params); $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); require JModuleHelper::getLayoutPath('mod_stats_admin', $params->get('layout', 'default')); PKb��\e�>>(modules/mod_stats_admin/tmpl/default.phpnu�[���<?php /** * @package Joomla.Site * @subpackage mod_stats * * @copyright Copyright (C) 2005 - 2015 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="list-striped list-condensed stats-module<?php echo $moduleclass_sfx ?>"> <?php foreach ($list as $item) : ?> <li><span class="icon-<?php echo $item->icon; ?>" title="<?php echo $item->title; ?>"></span> <?php echo $item->title; ?> <?php echo $item->data; ?></li> <?php endforeach; ?> </ul> PKb��\�U�*]]"modules/mod_stats_admin/helper.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_stats_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Helper class for admin stats module * * @since 3.0 */ class ModStatsHelper { /** * Method to retrieve information about the site * * @param JObject &$params Params object * * @return array Array containing site information * * @since 3.0 */ public static function getStats(&$params) { $app = JFactory::getApplication(); $db = JFactory::getDbo(); $rows = array(); $query = $db->getQuery(true); $serverinfo = $params->get('serverinfo'); $siteinfo = $params->get('siteinfo'); $counter = $params->get('counter'); $increase = $params->get('increase'); $i = 0; if ($serverinfo) { $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_OS'); $rows[$i]->icon = 'screen'; $rows[$i]->data = substr(php_uname(), 0, 7); $i++; $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_PHP'); $rows[$i]->icon = 'cogs'; $rows[$i]->data = phpversion(); $i++; $rows[$i] = new stdClass; $rows[$i]->title = JText::_($db->name); $rows[$i]->icon = 'database'; $rows[$i]->data = $db->getVersion(); $i++; $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_TIME'); $rows[$i]->icon = 'clock'; $rows[$i]->data = JHtml::_('date', 'now', 'H:i'); $i++; $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_CACHING'); $rows[$i]->icon = 'dashboard'; $rows[$i]->data = $app->get('caching') ? JText::_('JENABLED') : JText::_('JDISABLED'); $i++; $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_GZIP'); $rows[$i]->icon = 'lightning'; $rows[$i]->data = $app->get('gzip') ? JText::_('JENABLED') : JText::_('JDISABLED'); $i++; } if ($siteinfo) { $query->select('COUNT(id) AS count_users') ->from('#__users'); $db->setQuery($query); try { $users = $db->loadResult(); } catch (RuntimeException $e) { $users = false; } $query->clear() ->select('COUNT(id) AS count_items') ->from('#__content') ->where('state = 1'); $db->setQuery($query); try { $items = $db->loadResult(); } catch (RuntimeException $e) { $items = false; } if ($users) { $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_USERS'); $rows[$i]->icon = 'users'; $rows[$i]->data = $users; $i++; } if ($items) { $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_ARTICLES'); $rows[$i]->icon = 'file'; $rows[$i]->data = $items; $i++; } if (JComponentHelper::isInstalled('com_weblinks')) { $query->clear() ->select('COUNT(id) AS count_links') ->from('#__weblinks') ->where('state = 1'); $db->setQuery($query); try { $links = $db->loadResult(); } catch (RuntimeException $e) { $links = false; } if ($links) { $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_WEBLINKS'); $rows[$i]->icon = 'out-2'; $rows[$i]->data = $links; $i++; } } } if ($counter) { $query->clear() ->select('SUM(hits) AS count_hits') ->from('#__content') ->where('state = 1'); $db->setQuery($query); try { $hits = $db->loadResult(); } catch (RuntimeException $e) { $hits = false; } if ($hits) { $rows[$i] = new stdClass; $rows[$i]->title = JText::_('MOD_STATS_ARTICLES_VIEW_HITS'); $rows[$i]->icon = 'eye'; $rows[$i]->data = $hits + $increase; } } return $rows; } } PKb��\���m��:modules/mod_stats_admin/language/en-GB.mod_stats_admin.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_STATS_ADMIN="Statistics" MOD_STATS_ARTICLES="Articles" MOD_STATS_ARTICLES_VIEW_HITS="Articles View Hits" MOD_STATS_CACHING="Caching" MOD_STATS_FIELD_COUNTER_DESC="Display hit counter." MOD_STATS_FIELD_COUNTER_LABEL="Hit Counter" MOD_STATS_FIELD_INCREASECOUNTER_DESC="Enter the number of hits to increase the counter by." MOD_STATS_FIELD_INCREASECOUNTER_LABEL="Increase Counter" MOD_STATS_FIELD_SERVERINFO_DESC="Display server information." MOD_STATS_FIELD_SERVERINFO_LABEL="Server Information" MOD_STATS_FIELD_SITEINFO_DESC="Display site information." MOD_STATS_FIELD_SITEINFO_LABEL="Site Information" MOD_STATS_GZIP="GZip" MOD_STATS_OS="OS" MOD_STATS_PHP="PHP" MOD_STATS_TIME="Time" MOD_STATS_USERS="Users" MOD_STATS_WEBLINKS="Web Links" MOD_STATS_XML_DESCRIPTION="The Statistics Module shows information about your server installation together with statistics on the website users, number of Articles in your database and the number of Web links you provide." PKb��\��\�>modules/mod_stats_admin/language/en-GB.mod_stats_admin.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_STATS_ADMIN="Statistics" MOD_STATS_XML_DESCRIPTION="The Statistics Module shows information about your server installation together with statistics on the website users, number of Articles in your database and the number of Web links you provide." MOD_STATS_LAYOUT_DEFAULT="Default" PKb��\��� +modules/mod_stats_admin/mod_stats_admin.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1" client="administrator" method="upgrade"> <name>mod_stats_admin</name> <author>Joomla! Project</author> <creationDate>July 2004</creationDate> <copyright>Copyright (C) 2005 - 2015 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_STATS_XML_DESCRIPTION</description> <files> <filename module="mod_stats_admin">mod_stats_admin.php</filename> <folder>tmpl</folder> <folder>language</folder> <filename>helper.php</filename> </files> <languages> <language tag="en-GB">en-GB.mod_stats.ini</language> <language tag="en-GB">en-GB.mod_stats.sys.ini</language> </languages> <help key="JHELP_EXTENSIONS_MODULE_MANAGER_STATISTICS" /> <config> <fields name="params"> <fieldset name="basic"> <field name="serverinfo" type="radio" class="btn-group btn-group-yesno" default="0" label="MOD_STATS_FIELD_SERVERINFO_LABEL" description="MOD_STATS_FIELD_SERVERINFO_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="siteinfo" type="radio" class="btn-group btn-group-yesno" default="0" label="MOD_STATS_FIELD_SITEINFO_LABEL" description="MOD_STATS_FIELD_SITEINFO_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="counter" type="radio" class="btn-group btn-group-yesno" default="0" label="MOD_STATS_FIELD_COUNTER_LABEL" description="MOD_STATS_FIELD_COUNTER_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="increase" type="text" default="0" label="MOD_STATS_FIELD_INCREASECOUNTER_LABEL" description="MOD_STATS_FIELD_INCREASECOUNTER_DESC" /> </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" rows="3" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" /> <field name="cache" type="list" default="1" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC"> <option value="1">JGLOBAL_USE_GLOBAL</option> <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> </field> <field name="cache_time" type="text" default="900" label="COM_MODULES_FIELD_CACHE_TIME_LABEL" description="COM_MODULES_FIELD_CACHE_TIME_DESC" /> <field name="cachemode" type="hidden" default="static"> <option value="static"></option> </field> </fieldset> </fields> </config> </extension> PKb��\�jJ{{modules/mod_login/mod_login.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1" client="administrator" method="upgrade"> <name>mod_login</name> <author>Joomla! Project</author> <creationDate>March 2005</creationDate> <copyright>Copyright (C) 2005 - 2015 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_LOGIN_XML_DESCRIPTION</description> <files> <filename module="mod_login">mod_login.php</filename> <folder>tmpl</folder> <filename>helper.php</filename> </files> <languages> <language tag="en-GB">en-GB.mod_login.ini</language> <language tag="en-GB">en-GB.mod_login.sys.ini</language> </languages> <help key="JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_LOGIN" /> <config> <fields name="params"> <fieldset name="basic"> <field name="usesecure" type="radio" class="btn-group btn-group-yesno" default="0" label="MOD_LOGIN_FIELD_USESECURE_LABEL" description="MOD_LOGIN_FIELD_USESECURE_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> </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" rows="3" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" /> <field name="cache" type="list" default="0" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC"> <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> </field> </fieldset> </fields> </config> </extension> PKb��\\{!�}}"modules/mod_login/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_login * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.keepalive'); JHtml::_('bootstrap.tooltip'); JHtml::_('formbehavior.chosen'); ?> <form action="<?php echo JRoute::_('index.php', true, $params->get('usesecure')); ?>" method="post" id="form-login" class="form-inline"> <fieldset class="loginform"> <div class="control-group"> <div class="controls"> <div class="input-prepend input-append"> <span class="add-on"> <span class="icon-user hasTooltip" title="<?php echo JText::_('JGLOBAL_USERNAME'); ?>"></span> <label for="mod-login-username" class="element-invisible"> <?php echo JText::_('JGLOBAL_USERNAME'); ?> </label> </span> <input name="username" tabindex="1" id="mod-login-username" type="text" class="input-medium" placeholder="<?php echo JText::_('JGLOBAL_USERNAME'); ?>" size="15" autofocus="true" /> <a href="<?php echo JUri::root(); ?>index.php?option=com_users&view=remind" class="btn width-auto hasTooltip" title="<?php echo JText::_('MOD_LOGIN_REMIND'); ?>"> <span class="icon-help"></span> </a> </div> </div> </div> <div class="control-group"> <div class="controls"> <div class="input-prepend input-append"> <span class="add-on"> <span class="icon-lock hasTooltip" title="<?php echo JText::_('JGLOBAL_PASSWORD'); ?>"></span> <label for="mod-login-password" class="element-invisible"> <?php echo JText::_('JGLOBAL_PASSWORD'); ?> </label> </span> <input name="passwd" tabindex="2" id="mod-login-password" type="password" class="input-medium" placeholder="<?php echo JText::_('JGLOBAL_PASSWORD'); ?>" size="15"/> <a href="<?php echo JUri::root(); ?>index.php?option=com_users&view=reset" class="btn width-auto hasTooltip" title="<?php echo JText::_('MOD_LOGIN_RESET'); ?>"> <span class="icon-help"></span> </a> </div> </div> </div> <?php if (count($twofactormethods) > 1): ?> <div class="control-group"> <div class="controls"> <div class="input-prepend input-append"> <span class="add-on"> <span class="icon-star hasTooltip" title="<?php echo JText::_('JGLOBAL_SECRETKEY'); ?>"></span> <label for="mod-login-secretkey" class="element-invisible"> <?php echo JText::_('JGLOBAL_SECRETKEY'); ?> </label> </span> <input name="secretkey" autocomplete="off" tabindex="3" id="mod-login-secretkey" type="text" class="input-medium" placeholder="<?php echo JText::_('JGLOBAL_SECRETKEY'); ?>" size="15"/> <span class="btn width-auto hasTooltip" title="<?php echo JText::_('JGLOBAL_SECRETKEY_HELP'); ?>"> <span class="icon-help"></span> </span> </div> </div> </div> <?php endif; ?> <?php if (!empty($langs)) : ?> <div class="control-group"> <div class="controls"> <div class="input-prepend"> <span class="add-on"> <span class="icon-comment hasTooltip" title="<?php echo JHtml::tooltipText('MOD_LOGIN_LANGUAGE'); ?>"></span> <label for="lang" class="element-invisible"> <?php echo JText::_('MOD_LOGIN_LANGUAGE'); ?> </label> </span> <?php echo $langs; ?> </div> </div> </div> <?php endif; ?> <div class="control-group"> <div class="controls"> <div class="btn-group"> <button tabindex="3" class="btn btn-primary btn-block btn-large"> <span class="icon-lock icon-white"></span> <?php echo JText::_('MOD_LOGIN_LOGIN'); ?> </button> </div> </div> </div> <input type="hidden" name="option" value="com_login"/> <input type="hidden" name="task" value="login"/> <input type="hidden" name="return" value="<?php echo $return; ?>"/> <?php echo JHtml::_('form.token'); ?> </fieldset> </form> PKb��\�j~�modules/mod_login/helper.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_login * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Helper for mod_login * * @since 1.6 */ abstract class ModLoginHelper { /** * Get an HTML select list of the available languages. * * @return string */ public static function getLanguageList() { $languages = JLanguageHelper::createLanguageList(null, JPATH_ADMINISTRATOR, false, true); if (count($languages) <= 1) { return ''; } usort( $languages, function ($a, $b) { return strcmp($a["value"], $b["value"]); } ); // Fix wrongly set parentheses in RTL languages if (JFactory::getLanguage()->isRtl()) { foreach ($languages as &$language) { $language['text'] = $language['text'] . '‎'; } } array_unshift($languages, JHtml::_('select.option', '', JText::_('JDEFAULTLANGUAGE'))); return JHtml::_('select.genericlist', $languages, 'lang', ' class="advancedSelect"', 'value', 'text', null); } /** * Get the redirect URI after login. * * @return string */ public static function getReturnUri() { $uri = JUri::getInstance(); $return = 'index.php' . $uri->toString(array('query')); if ($return != 'index.php?option=com_login') { return base64_encode($return); } else { return base64_encode('index.php'); } } /** * Creates a list of two factor authentication methods used in com_users * on user view * * @return array */ public static function getTwoFactorMethods() { require_once JPATH_ADMINISTRATOR . '/components/com_users/helpers/users.php'; return UsersHelper::getTwoFactorMethods(); } } PKb��\)��eemodules/mod_login/mod_login.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_login * * @copyright Copyright (C) 2005 - 2015 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 syndicate functions only once require_once __DIR__ . '/helper.php'; $langs = ModLoginHelper::getLanguageList(); $twofactormethods = ModLoginHelper::getTwoFactorMethods(); $return = ModLoginHelper::getReturnUri(); require JModuleHelper::getLayoutPath('mod_login', $params->get('layout', 'default')); PKb��\�e��''$modules/mod_submenu/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_submenu * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div id="sidebar"> <div class="sidebar-nav"> <?php if ($displayMenu) : ?> <ul id="submenu" class="nav nav-list"> <?php foreach ($list as $item) : ?> <?php if (isset ($item[2]) && $item[2] == 1) : ?> <li class="active"> <?php else : ?> <li> <?php endif; ?> <?php if ($hide) : ?> <a class="nolink"><?php echo $item[0]; ?></a> <?php else : ?> <?php if (strlen($item[1])) : ?> <a href="<?php echo JFilterOutput::ampReplace($item[1]); ?>"><?php echo $item[0]; ?></a> <?php else : ?> <?php echo $item[0]; ?> <?php endif; ?> <?php endif; ?> </li> <?php endforeach; ?> </ul> <?php endif; ?> <?php if ($displayMenu && $displayFilters) : ?> <hr /> <?php endif; ?> <?php if ($displayFilters) : ?> <div class="filter-select hidden-phone"> <h4 class="page-header"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></h4> <form action="<?php echo JRoute::_($action); ?>" method="post"> <?php foreach ($filters as $filter) : ?> <label for="<?php echo $filter['name']; ?>" class="element-invisible"><?php echo $filter['label']; ?></label> <select name="<?php echo $filter['name']; ?>" id="<?php echo $filter['name']; ?>" class="span12 small" onchange="this.form.submit()"> <?php if (!$filter['noDefault']) : ?> <option value=""><?php echo $filter['label']; ?></option> <?php endif; ?> <?php echo $filter['options']; ?> </select> <hr class="hr-condensed" /> <?php endforeach; ?> </form> </div> <?php endif; ?> </div> </div> PKb��\{,ם��#modules/mod_submenu/mod_submenu.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_submenu * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $list = JSubMenuHelper::getEntries(); $filters = JSubMenuHelper::getFilters(); $action = JSubMenuHelper::getAction(); $displayMenu = count($list); $displayFilters = count($filters); $hide = JFactory::getApplication()->input->getBool('hidemainmenu'); if ($displayMenu || $displayFilters) { require JModuleHelper::getLayoutPath('mod_submenu', $params->get('layout', 'default')); } PKb��\�PB�#modules/mod_submenu/mod_submenu.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1" client="administrator" method="upgrade"> <name>mod_submenu</name> <author>Joomla! Project</author> <creationDate>Feb 2006</creationDate> <copyright>Copyright (C) 2005 - 2015 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_SUBMENU_XML_DESCRIPTION</description> <files> <filename module="mod_submenu">mod_submenu.php</filename> <folder>tmpl</folder> </files> <languages> <language tag="en-GB">en-GB.mod_submenu.ini</language> <language tag="en-GB">en-GB.mod_submenu.sys.ini</language> </languages> <help key="JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_SUBMENU" /> <config> <fields name="params"> <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" rows="3" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" /> <field name="cache" type="list" default="0" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC"> <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> </field> </fieldset> </fields> </config> </extension> PKb��\mCDmodules/mod_feed/mod_feed.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_feed * * @copyright Copyright (C) 2005 - 2015 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 syndicate functions only once require_once __DIR__ . '/helper.php'; $rssurl = $params->get('rssurl', ''); $rssrtl = $params->get('rssrtl', 0); // Check if feed URL has been set if (empty ($rssurl)) { echo '<div>'; echo JText::_('MOD_FEED_ERR_NO_URL'); echo '</div>'; return; } $feed = ModFeedHelper::getFeed($params); $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); require JModuleHelper::getLayoutPath('mod_feed', $params->get('layout', 'default')); PKb��\�i��!modules/mod_feed/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_feed * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; if (!empty($feed) && is_string($feed)) { echo $feed; } else { $lang = JFactory::getLanguage(); $myrtl = $params->get('rssrtl'); $direction = " "; if ($lang->isRtl() && $myrtl == 0) { $direction = " redirect-rtl"; } // Feed description elseif ($lang->isRtl() && $myrtl == 1) { $direction = " redirect-ltr"; } elseif ($lang->isRtl() && $myrtl == 2) { $direction = " redirect-rtl"; } elseif ($myrtl == 0) { $direction = " redirect-ltr"; } elseif ($myrtl == 1) { $direction = " redirect-ltr"; } elseif ($myrtl == 2) { $direction = " redirect-rtl"; } if ($feed != false) : // Image handling $iUrl = isset($feed->image) ? $feed->image : null; $iTitle = isset($feed->imagetitle) ? $feed->imagetitle : null; ?> <div style="direction: <?php echo $rssrtl ? 'rtl' :'ltr'; ?>; text-align: <?php echo $rssrtl ? 'right' :'left'; ?> ! important" class="feed<?php echo $moduleclass_sfx; ?>"> <?php // Feed description if (!is_null($feed->title) && $params->get('rsstitle', 1)) : ?> <h2 class="<?php echo $direction; ?>"> <a href="<?php echo str_replace('&', '&', $rssurl); ?>" target="_blank"> <?php echo $feed->title; ?></a> </h2> <?php endif; ?> <!-- Feed description --> <?php if ($params->get('rssdesc', 1)) : ?> <?php echo $feed->description; ?> <?php endif; ?> <!-- Feed image --> <?php if ($params->get('rssimage', 1) && $iUrl) : ?> <img src="<?php echo $iUrl; ?>" alt="<?php echo @$iTitle; ?>"/> <?php endif; ?> <!-- Show items --> <?php if (!empty($feed)) : ?> <ul class="newsfeed<?php echo $params->get('moduleclass_sfx'); ?>"> <?php for ($i = 0; $i < $params->get('rssitems', 5); $i++) : if (!$feed->offsetExists($i)) : break; endif; $uri = (!empty($feed[$i]->uri) || !is_null($feed[$i]->uri)) ? $feed[$i]->uri : $feed[$i]->guid; $uri = substr($uri, 0, 4) != 'http' ? $params->get('rsslink') : $uri; $text = !empty($feed[$i]->content) || !is_null($feed[$i]->content) ? $feed[$i]->content : $feed[$i]->description; ?> <li> <?php if (!empty($uri)) : ?> <h5 class="feed-link"> <a href="<?php echo $uri; ?>" target="_blank"> <?php echo $feed[$i]->title; ?></a></h5> <?php else : ?> <h5 class="feed-link"><?php echo $feed[$i]->title; ?></h5> <?php endif; ?> <?php if ($params->get('rssitemdesc') && !empty($text)) : ?> <div class="feed-item-description"> <?php // Strip the images. $text = JFilterOutput::stripImages($text); $text = JHtml::_('string.truncate', $text, $params->get('word_count')); echo str_replace(''', "'", $text); ?> </div> <?php endif; ?> </li> <?php endfor; ?> </ul> <?php endif; ?> </div> <?php endif; } PKb��\ؑ����modules/mod_feed/helper.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_feed * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Helper for mod_feed * * @since 1.5 */ class ModFeedHelper { /** * Method to load a feed. * * @param JRegisty $params The parameters object. * * @return JFeedReader|string Return a JFeedReader object or a string message if error. * * @since 1.5 */ public static function getFeed($params) { // Module params $rssurl = $params->get('rssurl', ''); // Get RSS parsed object try { jimport('joomla.feed.factory'); $feed = new JFeedFactory; $rssDoc = $feed->getFeed($rssurl); } catch (Exception $e) { return JText::_('MOD_FEED_ERR_FEED_NOT_RETRIEVED'); } if (empty($rssDoc)) { return JText::_('MOD_FEED_ERR_FEED_NOT_RETRIEVED'); } return $rssDoc; } } PKb��\A�%j$$modules/mod_feed/mod_feed.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1" client="administrator" method="upgrade"> <name>mod_feed</name> <author>Joomla! Project</author> <creationDate>July 2005</creationDate> <copyright>Copyright (C) 2005 - 2015 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_FEED_XML_DESCRIPTION</description> <files> <filename module="mod_feed">mod_feed.php</filename> <filename>helper.php</filename> <folder>tmpl</folder> </files> <languages> <language tag="en-GB">en-GB.mod_feed.ini</language> <language tag="en-GB">en-GB.mod_feed.sys.ini</language> </languages> <help key="JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_FEED" /> <config> <fields name="params"> <fieldset name="basic"> <field name="rssurl" type="url" filter="url" size="50" required="true" validate="url" label="MOD_FEED_FIELD_RSSURL_LABEL" description="MOD_FEED_FIELD_RSSURL_DESC" /> <field name="rssrtl" type="radio" class="btn-group btn-group-yesno" default="0" label="MOD_FEED_FIELD_RTL_LABEL" description="MOD_FEED_FIELD_RTL_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="rsstitle" type="radio" class="btn-group btn-group-yesno" default="1" label="MOD_FEED_FIELD_RSSTITLE_LABEL" description="MOD_FEED_FIELD_RSSTITLE_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="rssdesc" type="radio" class="btn-group btn-group-yesno" default="1" label="MOD_FEED_FIELD_DESCRIPTION_LABEL" description="MOD_FEED_FIELD_DESCRIPTION_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="rssimage" type="radio" class="btn-group btn-group-yesno" default="1" label="MOD_FEED_FIELD_IMAGE_LABEL" description="MOD_FEED_FIELD_IMAGE_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="rssitems" type="text" default="3" label="MOD_FEED_FIELD_ITEMS_LABEL" description="MOD_FEED_FIELD_ITEMS_DESC" /> <field name="rssitemdesc" type="radio" class="btn-group btn-group-yesno" default="1" label="MOD_FEED_FIELD_ITEMDESCRIPTION_LABEL" description="MOD_FEED_FIELD_ITEMDESCRIPTION_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="word_count" type="text" size="6" default="0" label="MOD_FEED_FIELD_WORDCOUNT_LABEL" description="MOD_FEED_FIELD_WORDCOUNT_DESC" /> </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" rows="3" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" /> <field name="cache" type="list" default="1" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC"> <option value="1">JGLOBAL_USE_GLOBAL</option> <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> </field> <field name="cache_time" type="text" default="900" label="COM_MODULES_FIELD_CACHE_TIME_LABEL" description="COM_MODULES_FIELD_CACHE_TIME_DESC" /> </fieldset> </fields> </config> </extension> PKb��\�X��� � !modules/mod_latest/mod_latest.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1" client="administrator" method="upgrade"> <name>mod_latest</name> <author>Joomla! Project</author> <creationDate>July 2004</creationDate> <copyright>Copyright (C) 2005 - 2015 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_LATEST_XML_DESCRIPTION</description> <files> <filename module="mod_latest">mod_latest.php</filename> <filename>helper.php</filename> <folder>tmpl</folder> </files> <languages> <language tag="en-GB">en-GB.mod_latest.ini</language> <language tag="en-GB">en-GB.mod_latest.sys.ini</language> </languages> <help key="JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_LATEST" /> <config> <fields name="params"> <fieldset name="basic"> <field name="count" type="text" default="5" label="MOD_LATEST_FIELD_COUNT_LABEL" description="MOD_LATEST_FIELD_COUNT_DESC" /> <field name="ordering" type="list" default="c_dsc" label="MOD_LATEST_FIELD_ORDERING_LABEL" description="MOD_LATEST_FIELD_ORDERING_DESC"> <option value="c_dsc">MOD_LATEST_FIELD_VALUE_ORDERING_ADDED</option> <option value="m_dsc">MOD_LATEST_FIELD_VALUE_ORDERING_MODIFIED</option> </field> <field id="catid" name="catid" type="category" extension="com_content" label="JCATEGORY" description="MOD_LATEST_FIELD_CATEGORY_DESC" default="" > <option value="">JOPTION_ANY_CATEGORY</option> </field> <field name="user_id" type="list" default="0" label="MOD_LATEST_FIELD_AUTHORS_LABEL" description="MOD_LATEST_FIELD_AUTHORS_DESC"> <option value="0">MOD_LATEST_FIELD_VALUE_AUTHORS_ANYONE</option> <option value="by_me">MOD_LATEST_FIELD_VALUE_AUTHORS_BY_ME</option> <option value="not_me">MOD_LATEST_FIELD_VALUE_AUTHORS_NOT_BY_ME</option> </field> </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" rows="3" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" /> <field name="cache" type="list" default="0" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC"> <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> </field> </fieldset> </fields> </config> </extension> PKb��\�.NPP#modules/mod_latest/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_latest * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('bootstrap.tooltip'); ?> <div class="row-striped"> <?php if (count($list)) : ?> <?php foreach ($list as $i => $item) : ?> <div class="row-fluid"> <div class="span9"> <?php echo JHtml::_('jgrid.published', $item->state, $i, '', false); ?> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time); ?> <?php endif; ?> <strong class="row-title break-word"> <?php if ($item->link) : ?> <a href="<?php echo $item->link; ?>"> <?php echo htmlspecialchars($item->title, ENT_QUOTES, 'UTF-8'); ?></a> <?php else : ?> <?php echo htmlspecialchars($item->title, ENT_QUOTES, 'UTF-8'); ?> <?php endif; ?> </strong> <small class="hasTooltip" title="<?php echo JHtml::tooltipText('MOD_LATEST_CREATED_BY'); ?>"> <?php echo $item->author_name; ?> </small> </div> <div class="span3"> <span class="small"> <span class="icon-calendar"></span> <?php echo JHtml::_('date', $item->created, JText::_('DATE_FORMAT_LC4')); ?> </span> </div> </div> <?php endforeach; ?> <?php else : ?> <div class="row-fluid"> <div class="span12"> <div class="alert"><?php echo JText::_('MOD_LATEST_NO_MATCHING_RESULTS');?></div> </div> </div> <?php endif; ?> </div> PKb��\}_����modules/mod_latest/helper.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_latest * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_content/models', 'ContentModel'); /** * Helper for mod_latest * * @since 1.5 */ abstract class ModLatestHelper { /** * Get a list of articles. * * @param \Joomla\Registry\Registry &$params The module parameters. * * @return mixed An array of articles, or false on error. */ public static function getList(&$params) { $user = JFactory::getuser(); // Get an instance of the generic articles model $model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true)); // Set List SELECT $model->setState('list.select', 'a.id, a.title, a.checked_out, a.checked_out_time, ' . ' a.access, a.created, a.created_by, a.created_by_alias, a.featured, a.state'); // Set Ordering filter switch ($params->get('ordering')) { case 'm_dsc': $model->setState('list.ordering', 'modified DESC, created'); $model->setState('list.direction', 'DESC'); break; case 'c_dsc': default: $model->setState('list.ordering', 'created'); $model->setState('list.direction', 'DESC'); break; } // Set Category Filter $categoryId = $params->get('catid'); if (is_numeric($categoryId)) { $model->setState('filter.category_id', $categoryId); } // Set User Filter. $userId = $user->get('id'); switch ($params->get('user_id')) { case 'by_me': $model->setState('filter.author_id', $userId); break; case 'not_me': $model->setState('filter.author_id', $userId); $model->setState('filter.author_id.include', false); break; } // Set the Start and Limit $model->setState('list.start', 0); $model->setState('list.limit', $params->get('count', 5)); $items = $model->getItems(); if ($error = $model->getError()) { JError::raiseError(500, $error); return false; } // Set the links foreach ($items as &$item) { if ($user->authorise('core.edit', 'com_content.article.' . $item->id)) { $item->link = JRoute::_('index.php?option=com_content&task=article.edit&id=' . $item->id); } else { $item->link = ''; } } return $items; } /** * Get the alternate title for the module. * * @param \Joomla\Registry\Registry $params The module parameters. * * @return string The alternate title for the module. */ public static function getTitle($params) { $who = $params->get('user_id'); $catid = (int) $params->get('catid'); $type = $params->get('ordering') == 'c_dsc' ? '_CREATED' : '_MODIFIED'; if ($catid) { $category = JCategories::getInstance('Content')->get($catid); if ($category) { $title = $category->title; } else { $title = JText::_('MOD_POPULAR_UNEXISTING'); } } else { $title = ''; } return JText::plural('MOD_LATEST_TITLE' . $type . ($catid ? "_CATEGORY" : '') . ($who != '0' ? "_$who" : ''), (int) $params->get('count'), $title); } } PKb��\u�/��!modules/mod_latest/mod_latest.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_latest * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Include dependencies. require_once __DIR__ . '/helper.php'; $list = ModLatestHelper::getList($params); require JModuleHelper::getLayoutPath('mod_latest', $params->get('layout', 'default')); PKb��\<06,,#modules/mod_custom/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_custom * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo $module->content; PKb��\�!�[��!modules/mod_custom/mod_custom.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1" client="administrator" method="upgrade"> <name>mod_custom</name> <author>Joomla! Project</author> <creationDate>July 2004</creationDate> <copyright>Copyright (C) 2005 - 2015 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_CUSTOM_XML_DESCRIPTION</description> <customContent /> <files> <filename module="mod_custom">mod_custom.php</filename> <folder>tmpl</folder> </files> <languages> <language tag="en-GB">en-GB.mod_custom.ini</language> <language tag="en-GB">en-GB.mod_custom.sys.ini</language> </languages> <help key="JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_CUSTOM" /> <config> <fields name="params"> <fieldset name="options" label="COM_MODULES_BASIC_FIELDSET_LABEL"> <field name="prepare_content" type="radio" label="MOD_CUSTOM_FIELD_PREPARE_CONTENT_LABEL" class="btn-group btn-group-yesno" description="MOD_CUSTOM_FIELD_PREPARE_CONTENT_DESC" default="1"> <option value="1">JYES</option> <option value="0">JNO</option> </field> </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" rows="3" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" /> <field name="cache" type="list" default="1" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC"> <option value="1">JGLOBAL_USE_GLOBAL</option> <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> </field> <field name="cache_time" type="text" default="900" label="COM_MODULES_FIELD_CACHE_TIME_LABEL" description="COM_MODULES_FIELD_CACHE_TIME_DESC" /> </fieldset> </fields> </config> </extension> PKb��\�.��!modules/mod_custom/mod_custom.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_custom * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; if ($params->def('prepare_content', 1)) { JPluginHelper::importPlugin('content'); $module->content = JHtml::_('content.prepare', $module->content, '', 'mod_custom.content'); } // Replace 'images/' to '../images/' when using an image from /images in backend. $module->content = preg_replace('*src\=\"(?!administrator\/)images/*', 'src="../images/', $module->content); require JModuleHelper::getLayoutPath('mod_custom', $params->get('layout', 'default')); PKb��\�SZ'��#modules/mod_toolbar/mod_toolbar.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_toolbar * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $toolbar = JToolbar::getInstance('toolbar')->render('toolbar'); require JModuleHelper::getLayoutPath('mod_toolbar', $params->get('layout', 'default')); PKb��\\Xe�::$modules/mod_toolbar/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_toolbar * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Echo the toolbar. echo $toolbar; PKb��\��W#modules/mod_toolbar/mod_toolbar.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1" client="administrator" method="upgrade"> <name>mod_toolbar</name> <author>Joomla! Project</author> <creationDate>Nov 2005</creationDate> <copyright>Copyright (C) 2005 - 2015 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_TOOLBAR_XML_DESCRIPTION</description> <files> <filename module="mod_toolbar">mod_toolbar.php</filename> <folder>tmpl</folder> </files> <languages> <language tag="en-GB">en-GB.mod_toolbar.ini</language> <language tag="en-GB">en-GB.mod_toolbar.sys.ini</language> </languages> <help key="JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_TOOLBAR" /> <config> <fields name="params"> <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" rows="3" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" /> <field name="cache" type="list" default="0" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC"> <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> </field> </fieldset> </fields> </config> </extension> PKb��\QZ���,modules/mod_multilangstatus/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_multilangstatus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Include jQuery JHtml::_('jquery.framework'); JFactory::getDocument()->addStyleDeclaration('.navbar-fixed-bottom {z-index:1050;}'); $link = JRoute::_('index.php?option=com_languages&view=multilangstatus&tmpl=component'); $footer = '<button class="btn" data-dismiss="modal" aria-hidden="true">' . JText::_('JTOOLBAR_CLOSE') . '</a>'; ?> <div class="btn-group multilanguage"> <a href="#multiLangModal" role="button" class="btn btn-link" data-toggle="modal" title="<?php echo JText::_('MOD_MULTILANGSTATUS'); ?>"> <span class="icon-comment"></span> <?php echo JText::_('MOD_MULTILANGSTATUS'); ?> </a> </div> <?php echo JHtml::_( 'bootstrap.renderModal', 'multiLangModal', array( 'title' => JText::_('MOD_MULTILANGSTATUS'), 'backdrop' => 'static', 'keyboard' => true, 'closeButton' => true, 'footer' => $footer, 'url' => $link, 'height' => '300px', 'width' => '500px' ) ); PKb��\��g~~3modules/mod_multilangstatus/mod_multilangstatus.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_multilangstatus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require JModuleHelper::getLayoutPath('mod_multilangstatus', $params->get('layout', 'default')); PKb��\�"���3modules/mod_multilangstatus/mod_multilangstatus.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1" client="administrator" method="upgrade"> <name>mod_multilangstatus</name> <author>Joomla! Project</author> <creationDate>September 2011</creationDate> <copyright>Copyright (C) 2005 - 2015 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_MULTILANGSTATUS_XML_DESCRIPTION</description> <files> <filename module="mod_multilangstatus">mod_multilangstatus.php</filename> <folder>tmpl</folder> <folder>language</folder> </files> <languages> <language tag="en-GB">language/en-GB/en-GB.mod_multilangstatus.ini</language> <language tag="en-GB">language/en-GB/en-GB.mod_multilangstatus.sys.ini</language> </languages> <help key="JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_MULTILANG" /> <config> <fields name="params"> <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" rows="3" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" /> <field name="cache" type="list" default="0" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC"> <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> </field> </fieldset> </fields> </config> </extension> PKb��\K���ssLmodules/mod_multilangstatus/language/en-GB/en-GB.mod_multilangstatus.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_MULTILANGSTATUS="Multilanguage Status" MOD_MULTILANGSTATUS_XML_DESCRIPTION="This module shows the status of the multilanguage parameters." PKb��\K���ssHmodules/mod_multilangstatus/language/en-GB/en-GB.mod_multilangstatus.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_MULTILANGSTATUS="Multilanguage Status" MOD_MULTILANGSTATUS_XML_DESCRIPTION="This module shows the status of the multilanguage parameters." PKb��\d���'modules/mod_quickicon/mod_quickicon.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1" client="administrator" method="upgrade"> <name>mod_quickicon</name> <author>Joomla! Project</author> <creationDate>Nov 2005</creationDate> <copyright>Copyright (C) 2005 - 2015 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_QUICKICON_XML_DESCRIPTION</description> <files> <filename module="mod_quickicon">mod_quickicon.php</filename> <folder>tmpl</folder> <filename>helper.php</filename> </files> <languages> <language tag="en-GB">en-GB.mod_quickicon.ini</language> <language tag="en-GB">en-GB.mod_quickicon.sys.ini</language> </languages> <help key="JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_QUICKICON" /> <config> <fields name="params"> <fieldset name="basic"> <field name="context" type="text" default="mod_quickicon" description="MOD_QUICKICON_GROUP_DESC" label="MOD_QUICKICON_GROUP_LABEL" /> </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" rows="3" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" /> <field name="cache" type="list" default="1" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC"> <option value="1">JGLOBAL_USE_GLOBAL</option> <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> </field> <field name="cache_time" type="text" default="900" label="COM_MODULES_FIELD_CACHE_TIME_LABEL" description="COM_MODULES_FIELD_CACHE_TIME_DESC" /> </fieldset> </fields> </config> </extension> PKb��\�}��'modules/mod_quickicon/mod_quickicon.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_quickicon * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require_once __DIR__ . '/helper.php'; $buttons = ModQuickIconHelper::getButtons($params); require JModuleHelper::getLayoutPath('mod_quickicon', $params->get('layout', 'default')); PKb��\%mW���&modules/mod_quickicon/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_quickicon * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $html = JHtml::_('links.linksgroups', ModQuickIconHelper::groupButtons($buttons)); ?> <?php if (!empty($html)) : ?> <div class="sidebar-nav quick-icons"> <?php echo $html;?> </div> <?php endif;?> PKb��\,�MM modules/mod_quickicon/helper.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_quickicon * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Helper for mod_quickicon * * @since 1.6 */ abstract class ModQuickIconHelper { /** * Stack to hold buttons * * @since 1.6 */ protected static $buttons = array(); /** * Helper method to return button list. * * This method returns the array by reference so it can be * used to add custom buttons or remove default ones. * * @param JObject $params The module parameters. * * @return array An array of buttons * * @since 1.6 */ public static function &getButtons($params) { $key = (string) $params; if (!isset(self::$buttons[$key])) { $context = $params->get('context', 'mod_quickicon'); if ($context == 'mod_quickicon') { // Load mod_quickicon language file in case this method is called before rendering the module JFactory::getLanguage()->load('mod_quickicon'); self::$buttons[$key] = array( array( 'link' => JRoute::_('index.php?option=com_content&task=article.add'), 'image' => 'pencil-2', 'icon' => 'header/icon-48-article-add.png', 'text' => JText::_('MOD_QUICKICON_ADD_NEW_ARTICLE'), 'access' => array('core.manage', 'com_content', 'core.create', 'com_content'), 'group' => 'MOD_QUICKICON_CONTENT' ), array( 'link' => JRoute::_('index.php?option=com_content'), 'image' => 'stack', 'icon' => 'header/icon-48-article.png', 'text' => JText::_('MOD_QUICKICON_ARTICLE_MANAGER'), 'access' => array('core.manage', 'com_content'), 'group' => 'MOD_QUICKICON_CONTENT' ), array( 'link' => JRoute::_('index.php?option=com_categories&extension=com_content'), 'image' => 'folder', 'icon' => 'header/icon-48-category.png', 'text' => JText::_('MOD_QUICKICON_CATEGORY_MANAGER'), 'access' => array('core.manage', 'com_content'), 'group' => 'MOD_QUICKICON_CONTENT' ), array( 'link' => JRoute::_('index.php?option=com_media'), 'image' => 'pictures', 'icon' => 'header/icon-48-media.png', 'text' => JText::_('MOD_QUICKICON_MEDIA_MANAGER'), 'access' => array('core.manage', 'com_media'), 'group' => 'MOD_QUICKICON_CONTENT' ), array( 'link' => JRoute::_('index.php?option=com_menus'), 'image' => 'list-view', 'icon' => 'header/icon-48-menumgr.png', 'text' => JText::_('MOD_QUICKICON_MENU_MANAGER'), 'access' => array('core.manage', 'com_menus'), 'group' => 'MOD_QUICKICON_STRUCTURE' ), array( 'link' => JRoute::_('index.php?option=com_users'), 'image' => 'users', 'icon' => 'header/icon-48-user.png', 'text' => JText::_('MOD_QUICKICON_USER_MANAGER'), 'access' => array('core.manage', 'com_users'), 'group' => 'MOD_QUICKICON_USERS' ), array( 'link' => JRoute::_('index.php?option=com_modules'), 'image' => 'cube', 'icon' => 'header/icon-48-module.png', 'text' => JText::_('MOD_QUICKICON_MODULE_MANAGER'), 'access' => array('core.manage', 'com_modules'), 'group' => 'MOD_QUICKICON_STRUCTURE' ), array( 'link' => JRoute::_('index.php?option=com_config'), 'image' => 'cog', 'icon' => 'header/icon-48-config.png', 'text' => JText::_('MOD_QUICKICON_GLOBAL_CONFIGURATION'), 'access' => array('core.manage', 'com_config', 'core.admin', 'com_config'), 'group' => 'MOD_QUICKICON_CONFIGURATION' ), array( 'link' => JRoute::_('index.php?option=com_templates'), 'image' => 'eye', 'icon' => 'header/icon-48-themes.png', 'text' => JText::_('MOD_QUICKICON_TEMPLATE_MANAGER'), 'access' => array('core.manage', 'com_templates'), 'group' => 'MOD_QUICKICON_CONFIGURATION' ), array( 'link' => JRoute::_('index.php?option=com_languages'), 'image' => 'comments-2', 'icon' => 'header/icon-48-language.png', 'text' => JText::_('MOD_QUICKICON_LANGUAGE_MANAGER'), 'access' => array('core.manage', 'com_languages'), 'group' => 'MOD_QUICKICON_CONFIGURATION' ), array( 'link' => JRoute::_('index.php?option=com_installer'), 'image' => 'download', 'icon' => 'header/icon-48-extension.png', 'text' => JText::_('MOD_QUICKICON_INSTALL_EXTENSIONS'), 'access' => array('core.manage', 'com_installer'), 'group' => 'MOD_QUICKICON_EXTENSIONS' ) ); } else { self::$buttons[$key] = array(); } // Include buttons defined by published quickicon plugins JPluginHelper::importPlugin('quickicon'); $app = JFactory::getApplication(); $arrays = (array) $app->triggerEvent('onGetIcons', array($context)); foreach ($arrays as $response) { foreach ($response as $icon) { $default = array( 'link' => null, 'image' => 'cog', 'text' => null, 'access' => true, 'group' => 'MOD_QUICKICON_EXTENSIONS' ); $icon = array_merge($default, $icon); if (!is_null($icon['link']) && !is_null($icon['text'])) { self::$buttons[$key][] = $icon; } } } } return self::$buttons[$key]; } /** * Classifies the $buttons by group * * @param array $buttons The buttons * * @return array The buttons sorted by groups * * @since 3.2 */ public static function groupButtons($buttons) { $groupedButtons = array(); foreach ($buttons as $button) { $groupedButtons[$button['group']][] = $button; } return $groupedButtons; } /** * Get the alternate title for the module * * @param JObject $params The module parameters. * @param JObject $module The module. * * @return string The alternate title for the module. */ public static function getTitle($params, $module) { $key = $params->get('context', 'mod_quickicon') . '_title'; if (JFactory::getLanguage()->hasKey($key)) { return JText::_($key); } else { return $module->title; } } } PKb��\�hn�\\"modules/mod_title/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_title * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <?php if (!empty($title)) : ?> <?php echo $title; ?> <?php endif; ?> PKb��\Ⱟ[��modules/mod_title/mod_title.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_title * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Get the component title div if (isset(JFactory::getApplication()->JComponentTitle)) { $title = JFactory::getApplication()->JComponentTitle; } require JModuleHelper::getLayoutPath('mod_title', $params->get('layout', 'default')); PKb��\#X�ymodules/mod_title/mod_title.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.1" client="administrator" method="upgrade"> <name>mod_title</name> <author>Joomla! Project</author> <creationDate>Nov 2005</creationDate> <copyright>Copyright (C) 2005 - 2015 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_TITLE_XML_DESCRIPTION</description> <files> <filename module="mod_title">mod_title.php</filename> <folder>tmpl</folder> </files> <languages> <language tag="en-GB">en-GB.mod_title.ini</language> <language tag="en-GB">en-GB.mod_title.sys.ini</language> </languages> <help key="JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_TITLE" /> <config> <fields name="params"> <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" rows="3" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" /> <field name="cache" type="list" default="0" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC"> <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> </field> </fieldset> </fields> </config> </extension> PKb��\c�+��help/en-GB/toc.jsonnu�[���{"COMPONENTS_BANNERS_BANNERS":"COMPONENTS_BANNERS_BANNERS","COMPONENTS_BANNERS_BANNERS_EDIT":"COMPONENTS_BANNERS_BANNERS_EDIT","COMPONENTS_BANNERS_CATEGORIES":"COMPONENTS_BANNERS_CATEGORIES","COMPONENTS_BANNERS_CATEGORY_EDIT":"COMPONENTS_BANNERS_CATEGORIES_EDIT","COMPONENTS_BANNERS_CLIENTS":"COMPONENTS_BANNERS_CLIENTS","COMPONENTS_BANNERS_CLIENTS_EDIT":"COMPONENTS_BANNERS_CLIENTS_EDIT","COMPONENTS_BANNERS_TRACKS":"COMPONENTS_BANNERS_TRACKS","COMPONENTS_CONTACTS_CONTACTS":"COMPONENTS_CONTACTS_CONTACTS","COMPONENTS_CONTACTS_CONTACTS_EDIT":"COMPONENTS_CONTACTS_CONTACTS_EDIT","COMPONENTS_CONTACT_CATEGORIES":"COMPONENTS_CONTACT_CATEGORIES","COMPONENTS_CONTACT_CATEGORY_EDIT":"COMPONENTS_CONTACT_CATEGORIES_EDIT","COMPONENTS_CONTENT_CATEGORIES":"COMPONENTS_CONTENT_CATEGORIES","COMPONENTS_CONTENT_CATEGORY_EDIT":"COMPONENTS_CONTENT_CATEGORIES_EDIT","COMPONENTS_FINDER_MANAGE_CONTENT_MAPS":"COMPONENTS_FINDER_MANAGE_CONTENT_MAPS","COMPONENTS_FINDER_MANAGE_INDEXED_CONTENT":"COMPONENTS_FINDER_MANAGE_INDEXED_CONTENT","COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS":"COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS","COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS_EDIT":"COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS_EDIT","COMPONENTS_JOOMLA_UPDATE":"COMPONENTS_JOOMLA_UPDATE","COMPONENTS_MESSAGING_INBOX":"COMPONENTS_MESSAGING_INBOX","COMPONENTS_MESSAGING_READ":"COMPONENTS_MESSAGING_READ","COMPONENTS_MESSAGING_WRITE":"COMPONENTS_MESSAGING_WRITE","COMPONENTS_NEWSFEEDS_CATEGORIES":"COMPONENTS_NEWSFEEDS_CATEGORIES","COMPONENTS_NEWSFEEDS_CATEGORY_EDIT":"COMPONENTS_NEWSFEEDS_CATEGORIES_EDIT","COMPONENTS_NEWSFEEDS_FEEDS":"COMPONENTS_NEWSFEEDS_FEEDS","COMPONENTS_NEWSFEEDS_FEEDS_EDIT":"COMPONENTS_NEWSFEEDS_FEEDS_EDIT","COMPONENTS_POST_INSTALLATION_MESSAGES":"COMPONENTS_POST_INSTALLATION_MESSAGES","COMPONENTS_REDIRECT_MANAGER":"COMPONENTS_REDIRECT_MANAGER","COMPONENTS_REDIRECT_MANAGER_EDIT":"COMPONENTS_REDIRECT_MANAGER_EDIT","COMPONENTS_SEARCH":"COMPONENTS_SEARCH","COMPONENTS_TAGS_MANAGER":"COMPONENTS_TAGS_MANAGER","COMPONENTS_TAGS_MANAGER_EDIT":"COMPONENTS_TAGS_MANAGER_EDIT","COMPONENTS_WEBLINKS_CATEGORIES":"COMPONENTS_WEBLINKS_CATEGORIES","COMPONENTS_WEBLINKS_CATEGORY_EDIT":"COMPONENTS_WEBLINKS_CATEGORIES_EDIT","COMPONENTS_WEBLINKS_LINKS":"COMPONENTS_WEBLINKS_LINKS","COMPONENTS_WEBLINKS_LINKS_EDIT":"COMPONENTS_WEBLINKS_LINKS_EDIT","CONTENT_ARTICLE_MANAGER":"CONTENT_ARTICLE_MANAGER","CONTENT_ARTICLE_MANAGER_EDIT":"CONTENT_ARTICLE_MANAGER_EDIT","CONTENT_FEATURED_ARTICLES":"CONTENT_FEATURED_ARTICLES","CONTENT_MEDIA_MANAGER":"CONTENT_MEDIA_MANAGER","EXTENSIONS_EXTENSION_MANAGER_DATABASE":"EXTENSIONS_EXTENSION_MANAGER_DATABASE","EXTENSIONS_EXTENSION_MANAGER_DISCOVER":"EXTENSIONS_EXTENSION_MANAGER_DISCOVER","EXTENSIONS_EXTENSION_MANAGER_INSTALL":"EXTENSIONS_EXTENSION_MANAGER_INSTALL","EXTENSIONS_EXTENSION_MANAGER_MANAGE":"EXTENSIONS_EXTENSION_MANAGER_MANAGE","EXTENSIONS_EXTENSION_MANAGER_UPDATE":"EXTENSIONS_EXTENSION_MANAGER_UPDATE","EXTENSIONS_EXTENSION_MANAGER_WARNINGS":"EXTENSIONS_EXTENSION_MANAGER_WARNINGS","EXTENSIONS_LANGUAGE_MANAGER_CONTENT":"EXTENSIONS_LANGUAGE_MANAGER_CONTENT","EXTENSIONS_LANGUAGE_MANAGER_EDIT":"EXTENSIONS_LANGUAGE_MANAGER_EDIT","EXTENSIONS_LANGUAGE_MANAGER_INSTALLED":"EXTENSIONS_LANGUAGE_MANAGER_INSTALLED","EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES":"EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES","EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES_EDIT":"EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES_EDIT","EXTENSIONS_MODULE_MANAGER":"EXTENSIONS_MODULE_MANAGER","EXTENSIONS_MODULE_MANAGER_EDIT":"EXTENSIONS_MODULE_MANAGER_EDIT","EXTENSIONS_PLUGIN_MANAGER":"EXTENSIONS_PLUGIN_MANAGER","EXTENSIONS_PLUGIN_MANAGER_EDIT":"EXTENSIONS_PLUGIN_MANAGER_EDIT","EXTENSIONS_TEMPLATE_MANAGER_STYLES":"EXTENSIONS_TEMPLATE_MANAGER_STYLES","EXTENSIONS_TEMPLATE_MANAGER_STYLES_EDIT":"EXTENSIONS_TEMPLATE_MANAGER_STYLES_EDIT","EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES":"EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES","EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT":"EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT","EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT_SOURCE":"EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT_SOURCE","MENUS_MENU_ITEM_MANAGER":"MENUS_MENU_ITEM_MANAGER","MENUS_MENU_ITEM_MANAGER_EDIT":"MENUS_MENU_ITEM_MANAGER_EDIT","MENUS_MENU_MANAGER":"MENUS_MENU_MANAGER","MENUS_MENU_MANAGER_EDIT":"MENUS_MENU_MANAGER_EDIT","SITE_GLOBAL_CONFIGURATION":"SITE_GLOBAL_CONFIGURATION","SITE_MAINTENANCE_CLEAR_CACHE":"SITE_MAINTENANCE_CLEAR_CACHE","SITE_MAINTENANCE_GLOBAL_CHECK-IN":"SITE_MAINTENANCE_GLOBAL_CHECK-IN","SITE_MAINTENANCE_PURGE_EXPIRED_CACHE":"SITE_MAINTENANCE_PURGE_EXPIRED_CACHE","SITE_SYSTEM_INFORMATION":"SITE_SYSTEM_INFORMATION","START_HERE":"START_HERE","USERS_ACCESS_LEVELS":"USERS_ACCESS_LEVELS","USERS_ACCESS_LEVELS_EDIT":"USERS_ACCESS_LEVELS_EDIT","USERS_DEBUG_USERS":"USERS_DEBUG_USER","USERS_GROUPS":"USERS_GROUPS","USERS_GROUPS_EDIT":"USERS_GROUPS_EDIT","USERS_MASS_MAIL_USERS":"USERS_MASS_MAIL_USERS","USERS_USER_MANAGER":"USERS_USER_MANAGER","USERS_USER_MANAGER_EDIT":"USERS_USER_MANAGER_EDIT","USERS_USER_NOTES":"USERS_USER_NOTES","USERS_USER_NOTES_EDIT":"USERS_USER_NOTES_EDIT"}PKb��\D����help/helpsites.xmlnu�[���<?xml version="1.0" encoding="iso-8859-1"?> <joshelp> <sites> <site tag="en-GB" url="https://help.joomla.org/proxy/index.php?option=com_help&keyref=Help{major}{minor}:{keyref}">English (GB) - Joomla help wiki</site> <site tag="fr-FR" url="http://help.joomla.fr/3/index.php?option=com_help&keyref=Help{major}{minor}:{keyref}">Fran�ais (FR) - Aide de Joomla!</site> </sites> </joshelp> PKb��\�V�cache/index.htmlnu�[���<!DOCTYPE html><title></title> PKb��\��++templates/hathor/cpanel.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $app = JFactory::getApplication(); $doc = JFactory::getDocument(); $lang = JFactory::getLanguage(); $input = $app->input; $user = JFactory::getUser(); // Load optional RTL Bootstrap CSS JHtml::_('bootstrap.loadCss', false, $this->direction); // Load system style CSS $doc->addStyleSheet($this->baseurl . '/templates/system/css/system.css'); // Loadtemplate CSS $doc->addStyleSheet($this->baseurl . '/templates/' . $this->template . '/css/template.css'); // Load additional CSS styles for colors if (!$this->params->get('colourChoice')) { $colour = 'standard'; } else { $colour = htmlspecialchars($this->params->get('colourChoice')); } $doc->addStyleSheet($this->baseurl . '/templates/' . $this->template . '/css/colour_' . $colour . '.css'); // Load specific language related CSS $file = 'language/' . $lang->getTag() . '/' . $lang->getTag() . '.css'; if (is_file($file)) { $doc->addStyleSheet($file); } // Load additional CSS styles for rtl sites if ($this->direction == 'rtl') { $doc->addStyleSheet($this->baseurl . '/templates/' . $this->template . '/css/template_rtl.css'); $doc->addStyleSheet($this->baseurl . '/templates/' . $this->template . '/css/colour_' . $colour . '_rtl.css'); } // Load specific language related CSS $file = 'language/' . $lang->getTag() . '/' . $lang->getTag() . '.css'; if (JFile::exists($file)) { $doc->addStyleSheet($file); } // Load additional CSS styles for bold Text if ($this->params->get('boldText')) { $doc->addStyleSheet($this->baseurl . '/templates/' . $this->template . '/css/boldtext.css'); } // Load template javascript $doc->addScript($this->baseurl . '/templates/' . $this->template . '/js/template.js', 'text/javascript'); // Logo file if ($this->params->get('logoFile')) { $logo = JUri::root() . $this->params->get('logoFile'); } else { $logo = $this->baseurl . '/templates/' . $this->template . '/images/logo.png'; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>"> <head> <jdoc:include type="head" /> <!-- Load additional CSS styles for Internet Explorer --> <!--[if IE 8]> <link href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/ie8.css" rel="stylesheet" type="text/css" /> <![endif]--> <!--[if IE 7]> <link href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/ie7.css" rel="stylesheet" type="text/css" /> <![endif]--> <!--[if lt IE 9]> <script src="<?php echo JUri::root(true); ?>/media/jui/js/html5.js"></script> <![endif]--> </head> <body id="minwidth" class="cpanel-page"> <div id="containerwrap"> <!-- Header Logo --> <div id="header"> <!-- Site Title and Skip to Content --> <div class="title-ua"> <h1 class="title"><?php echo $this->params->get('showSiteName') ? $app->get('sitename') . " " . JText::_('JADMINISTRATION') : JText::_('JADMINISTRATION'); ?></h1> <div id="skiplinkholder"><p><a id="skiplink" href="#skiptarget"><?php echo JText::_('TPL_HATHOR_SKIP_TO_MAIN_CONTENT'); ?></a></p></div> </div> </div><!-- end header --> <!-- Main Menu Navigation --> <div id="nav"> <div id="module-menu"> <h2 class="element-invisible"><?php echo JText::_('TPL_HATHOR_MAIN_MENU'); ?></h2> <jdoc:include type="modules" name="menu" /> </div> <div class="clr"></div> </div><!-- end nav --> <!-- Status Module --> <div id="module-status"> <jdoc:include type="modules" name="status"/> </div> <!-- Content Area --> <div id="content"> <!-- Component Title --> <jdoc:include type="modules" name="title" /> <!-- System Messages --> <jdoc:include type="message" /> <!-- Sub Menu Navigation --> <div id="no-submenu"></div> <div class="clr"></div> <!-- Beginning of Actual Content --> <div id="element-box"> <p id="skiptargetholder"><a id="skiptarget" class="skip" tabindex="-1"></a></p> <div class="adminform"> <!-- Display the Quick Icon Shortcuts --> <div class="cpanel-icons"> <jdoc:include type="modules" name="icon" /> </div> <!-- Display Admin Information Panels --> <div class="cpanel-component"> <jdoc:include type="component" /> </div> </div> <div class="clr"></div> </div><!-- end element-box --> <noscript> <?php echo JText::_('JGLOBAL_WARNJAVASCRIPT'); ?> </noscript> <div class="clr"></div> </div><!-- end content --> <div class="clr"></div> </div><!-- end containerwrap --> <!-- Footer --> <div id="footer"> <jdoc:include type="modules" name="footer" style="none" /> <p class="copyright"> <?php // Fix wrong display of Joomla!® in RTL language if (JFactory::getLanguage()->isRtl()) { $joomla = '<a href="http://www.joomla.org" target="_blank">Joomla!</a><sup>®‎</sup>'; } else { $joomla = '<a href="http://www.joomla.org" target="_blank">Joomla!</a><sup>®</sup>'; } echo JText::sprintf('JGLOBAL_ISFREESOFTWARE', $joomla); ?> </p> </div> </body> </html> PKb��\鱦��*templates/hathor/less/colour_standard.lessnu�[���// colour_standard.less // // Less to compile Hathor in the default colour scheme // ----------------------------------------------------- /** * Main colors: * #2c2c2c Text * #054993 Links * #ffffff Background, border, text * #f9fade Background alternate, button/icon/menu background * #e5f0fa Background (input required) * #e3e4ca Background Hover, Right/Bottom icon borders * #c7c8b2 Main borders * #868778 Top/Left icon hover borders * #f6f7db Right/Bottom icon hover borders * * Special Use Colors: * #a20000 Text Error, border invalid * #cccccc Text (faded) * #005800 Text (success) * #eeeeee Background (input disabled) * #ffffcf Background‚ permissions debug * #cfffda Background‚ permissions debug * #ffcfcf Background‚ permissions debug */ // Import the variables file first to get common variables loaded @import "hathor_variables.less"; // Define variables unique to this colour scheme, as well as override variables already defined in the common file @altBackground: #f9fade; @gradientTop: #f9fade; @gradientBottom: #f9fade; @mainBorder: #c7c8b2; // Import the baseline to compile the CSS @import "colour_baseline.less"; PKb��\ 0I)qq!templates/hathor/less/modals.lessnu�[���// MODALS // ------ // Recalculate z-index where appropriate .modal-open { .dropdown-menu { z-index: @zindexDropdown + @zindexModal; } .dropdown.open { *z-index: @zindexDropdown + @zindexModal; } .popover { z-index: @zindexPopover + @zindexModal; } .tooltip { z-index: @zindexTooltip + @zindexModal; } } // Background .modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: @zindexModalBackdrop; background-color: @black; // Fade for backdrop &.fade { opacity: 0; } } .modal-backdrop, .modal-backdrop.fade.in { .opacity(80); } // Base modal div.modal { position: fixed; top: 50%; left: 50%; z-index: @zindexModal; overflow: auto; width: 80%; margin: -250px 0 0 -40%; background-color: @white; border: 1px solid #999; border: 1px solid rgba(0,0,0,.3); *border: 1px solid #999; /* IE6-7 */ .border-radius(6px); .box-shadow(0 3px 7px rgba(0,0,0,0.3)); .background-clip(padding-box); &.fade { .transition(e('opacity .3s linear, top .3s ease-out')); top: -25%; } &.fade.in { top: 50%; } } .modal-header { padding: 9px 15px; border-bottom: 1px solid #eee; // Close icon .close { float: right; margin-top: 2px; } } // Body (where all modal content resides) .modal-body { overflow-y: auto; max-height: 400px; padding: 15px; } // Remove bottom margin if need be .modal-form { margin-bottom: 0; } // Footer (for actions) .modal-footer { padding: 14px 15px 15px; margin-bottom: 0; text-align: right; // right align buttons background-color: #f5f5f5; border-top: 1px solid #ddd; .border-radius(0 0 6px 6px); .box-shadow(inset 0 1px 0 @white); .clearfix(); // clear it in case folks use .pull-* classes on buttons // Properly space out buttons .btn + .btn { margin-left: 5px; margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs } // but override that for button groups .btn-group .btn + .btn { margin-left: -1px; } } /* Prevent scrolling on the parent window of a modal */ body.modal-open { overflow: hidden; -ms-overflow-style: none; }PKb��\JVs��"templates/hathor/less/buttons.lessnu�[���// // Buttons // This is a custom version of Bootstrap's buttons.less file suited for Hathor's needs // -------------------------------------------------- // Base styles // -------------------------------------------------- // Core #form-login .btn { display: inline-block; .ie7-inline-block(); padding: 4px 14px; margin-bottom: 0; // For input.btn font-size: @baseFontSize; line-height: @baseLineHeight; *line-height: @baseLineHeight; text-align: center; vertical-align: middle; cursor: pointer; .buttonBackground(@btnBackground, @btnBackgroundHighlight, @grayDark, 0 1px 1px rgba(255,255,255,.75)); border: 1px solid @btnBorder; *border: 0; // Remove the border to prevent IE7's black border on input:focus border-bottom-color: darken(@btnBorder, 10%); .border-radius(4px); .ie7-restore-left-whitespace(); // Give IE7 some love .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)"); // Hover state &:hover { color: @grayDark; text-decoration: none; background-color: darken(@white, 10%); *background-color: darken(@white, 15%); /* Buttons in IE7 don't get borders, so darken on hover */ background-position: 0 -15px; // transition is only when going to hover, otherwise the background // behind the gradient (there for IE<=9 fallback) gets mismatched .transition(background-position .1s linear); } // Focus state for keyboard and accessibility &:focus { .tab-focus(); } // Active state &.active, &:active { background-color: darken(@white, 10%); background-color: darken(@white, 15%) e("\9"); background-image: none; outline: 0; .box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)"); } // Disabled state &.disabled, &[disabled] { cursor: default; background-color: darken(@white, 10%); background-image: none; .opacity(65); .box-shadow(none); } } // Button Sizes // -------------------------------------------------- // Large .btn-large { padding: 9px 14px; font-size: @baseFontSize + 2px; line-height: normal; .border-radius(5px); } .btn-large [class^="icon-"] { margin-top: 2px; } PKb��\"V.���"templates/hathor/less/icomoon.lessnu�[���@font-face { font-family: 'IcoMoon'; src: url('../../../../media/jui/fonts/IcoMoon.eot'); src: url('../../../../media/jui/fonts/IcoMoon.eot?#iefix') format('embedded-opentype'), url('../../../../media/jui/fonts/IcoMoon.woff') format('woff'), url('../../../../media/jui/fonts/IcoMoon.ttf') format('truetype'), url('../../../../media/jui/fonts/IcoMoon.svg#IcoMoon') format('svg'); font-weight: normal; font-style: normal; } @import "../../../../media/jui/less/icomoon.less"; PKb��\N����&templates/hathor/less/colour_blue.lessnu�[���// colour_blue.less // // Less to compile Hathor in the blue colour scheme // ----------------------------------------------------- /** * #2c2c2c Text * #054993 Links * #ffffff Background, border, text * #c3d2e5 Background alternate, button/icon/menu background * #a5bbd4-c3d2e5 Gradient Background * #e5f0fa Background (input required) * #e5d9c3 Background Hover, Top/Left icon borders * #738498 Main borders * #868778 Top/Left hover borders * #f6f7db Right/Bottom hover borders * * Special Use Colors: * #a20000 Text Error, border invalid * #cccccc Text (faded) * #005800 Text (success) * #eeeeee Background (input disabled) * #ffffcf Background permissions debug * #cfffda Background permissions debug * #ffcfcf Background permissions debug */ // Import the variables file first to get common variables loaded @import "hathor_variables.less"; // Define variables unique to this colour scheme, as well as override variables already defined in the common file @altBackground: #c3d2e5; @gradientTop: #a5bbd4; @gradientBottom: #c3d2e5; @mainBorder: #738498; // Import the baseline to compile the CSS @import "colour_baseline.less"; PKb��\Q�=����#templates/hathor/less/template.lessnu�[���// Import the variables file first to get common variables loaded @import "hathor_variables.less"; // Core variables and mixins @import "../../../../media/jui/less/mixins.less"; // Bootstrap Component Animations @import "../../../../media/jui/less/component-animations.less"; // Bootstrap Modals @import "modals.less"; //@import "../../../../media/jui/less/modals.joomla.less"; // Icon Font @import "icomoon.less"; /** * CSS Reset */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; font-size: 100%; background: transparent; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } del { text-decoration: line-through; } /** * General styles */ html { overflow-y: scroll; height: 100%; } body { margin: 0; padding: 0; font-size: 62.5%; line-height: 1.5em; height: 100%; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body, td, th, span, a { font-family: Arial, Helvetica, sans-serif; } html, body { height: 100%; } a, img { padding: 0; margin: 0; } img { border: 0 none; } form { margin: 0; padding: 0; } ul { padding: 0; margin: 0; } h1 { margin: 0; padding-bottom: 8px; font-size: 1.4em; font-weight: bold; line-height: 2em; } h2 { padding-top: .83em; padding-bottom: .83em; } h3 { font-size: 1.4em; } a:link { color: #054993; text-decoration: none; } a:visited { color: #054993; text-decoration: none; } a:hover { text-decoration: underline; } a:focus { text-decoration: underline; } iframe { border: 0; } /* new styles */ .enabled { color: #005800; font-weight: bold; } .disabled { color: #a20000; font-weight: bold; } p.error { color: #a20000; font-weight: bold; } .warning { color: #a20000; font-weight: bold; } .nowarning { color: #2c2c2c; font-weight: bold; } .success { color: #005800; font-weight: bold; } .allow { color: #005800; } span.writable { color: #005800; } .deny { color: #a20000; } span.unwritable { color: #a20000; } .none { color: #aaaaaa; } .pointer { cursor: pointer; } .nowrap { white-space: nowrap; } p.nowarning, p.warning { margin: 10px; } /* end new styles */ /** * Overall Styles */ #minwidth, #minwidth-body { min-width: 980px; } #containerwrap { position: relative; } #header { position: relative; } #header h1.title { font-size: 1.5em; font-weight: normal; line-height: 25px; margin: 0; padding: 0 0 0 120px; } #footer { padding: 10px 20px; } #footer .copyright { margin: 0 0 0 0; text-align: center; } #footer p { font-size: 1.2em; } #nav .no-nav { line-height: 2em; } #content { margin: 5px 20px 20px 20px; } .cpanel-page div#element-box { padding: 15px; } /** * Status layout */ #module-status { float: right; position: relative; top: -48px; } #module-status div.btn-group { display: block; float: left; padding: 4px 10px 0 10px; font-size: 1.2em; } #module-status div.divider { display: none; } #module-status .unread-messages a { font-weight: bold; } .title-ua { position: relative; width: 60%; } /** * Various Styles */ .enabled, .disabled, p.error, .warning, .nowarning, .success { font-weight: bold; } .pointer { cursor: pointer; } .nowrap { white-space: nowrap; } span.note { display: block; padding: 5px; } div.checkin-tick { text-indent: -9999px; } /** * Overlib */ .ol-textfont { font-family: Arial, Helvetica, sans-serif; font-size: 1.2em; } .ol-captionfont { font-family: Arial, Helvetica, sans-serif; font-size: 1.2em; font-weight: bold; } .ol-captionfont a { text-decoration: none; } /** * Subheader, toolbar, page title */ div.subheader .padding { padding: 0; } div.pagetitle { padding: 0 0 5px 5px; margin: 0; background-repeat: no-repeat; background-position: left 50%; line-height: 54px; width: 100%; margin-top: -20px; height: 60px; } .tabs-left > .nav-tabs { float: left; margin-right: 19px; border-right: 1px solid #DDD; } tabs-below > .nav-tabs, .tabs-right > .nav-tabs, .tabs-left > .nav-tabs { border-bottom: 0; } /* Tabbed Content */ .tab-content { overflow: visible; } .tabs-left .tab-content { overflow: auto; } /* Non-linkable nav-tabs */ .nav-tabs > li > span { display: block; margin-right: 2px; padding-right: 12px; padding-left: 12px; padding-top: 8px; padding-bottom: 8px; line-height: 18px; border: 1px solid transparent; -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } /* Extended Joomla Button Classes */ .btn-micro { padding: 1px 4px; font-size: 10px; line-height: 8px; } /* Joomla => Bootstrap Tooltip */ .tip-wrap { max-width: 200px; padding: 3px 8px; color: #ffffff; text-align: center; text-decoration: none; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; z-index: 100; } .pagetitle h2 { padding: 0 0 0 50px; font-size: 1.3em; font-weight: bold; line-height: 48px; font-style: italic; } div.configuration { font-size: 1.2em; font-weight: bold; line-height: 2em; padding-left: 30px; margin-left: 10px; } div.toolbar-box h3 { height: 0; overflow: hidden; position: absolute; padding: 0; margin: 0; } .btn-toolbar { margin-bottom: 3px; margin-top: 14px; } div.btn-toolbar, div.toolbar-list { float: left; text-align: left; padding: 0; } div.toolbar-list li { padding: 5px 1px 5px 4px; text-align: center; height: 52px; list-style: none; float: left; } div.toolbar-list li.spacer { width: 10px; } div.toolbar-list li.divider { width: 10px; margin-right: 10px; } div.toolbar-list span { float: none; width: 32px; height: 32px; margin: 0 auto; display: block; } div.toolbar-list a { display: block; float: left; white-space: nowrap; padding: 1px 5px; cursor: pointer; font-weight: bold; } div.btn-toolbar div.btn-group button { display: block; float: left; white-space: nowrap; padding: 1px 5px; cursor: pointer; text-align: center; } div.btn-toolbar button:hover, div.btn-toolbar button:focus, div.toolbar-list a:hover, div.toolbar-list a:focus { text-decoration: none; } /** * Massmail component */ td#mm_pane { width: 90%; } input#mm_subject { width: 200px; } textarea#mm_message { width: 100%; } textarea { resize:both; } textarea.vert { resize:vertical; } textarea.noResize { resize:none; } /** * Pane Slider pane Toggler styles */ .pane-sliders { margin: 0; position: relative; } .pane-sliders .title { margin: 0; padding: 2px; cursor: pointer; } .pane-sliders .panel { margin-bottom: 3px; } .pane-sliders .adminlist td { border: 0 none; } h3.pane-toggler-down a:focus, h3.pane-toggler a:focus { outline: none; } .pane-toggler span { padding-left: 20px; } .pane-toggler-down span { padding-left: 20px; } /* The following line hides the unseen panel (prevents the mouse from activating in IE, so overridden in the ie css files) */ /*.pane-toggler + div.pane-slider {display: none;}*/ .pane-slider.pane-hide { display: none; } div#position-icon.pane-sliders div.pane-down div.quickicon-wrapper { margin: 5px 0 5px 0; } div#position-icon.pane-sliders div.pane-down .quickicon-wrapper .icon { padding: 5px 0 5px 10px; margin: 0; } /** * Tabs */ dl.tabs { float: left; margin: 10px 0 -1px 0; z-index: 50; } dl.tabs dt { float: left; padding: 4px 10px; margin-left: 3px; } dl.tabs dt.open { z-index: 100; } div.current { clear: both; padding: 10px 10px; } div.current dd { padding: 0; margin: 0; } /* New parameter styles */ dl#content-pane.tabs { margin: 1px 0 0 0; } div.current label, div.current span.faux-label { display: block; min-width: 150px; float: left; clear: left; margin-top: 8px; } div.current fieldset.radio { float: left; } div.current fieldset.radio input { clear: none; min-width: 15px; float: left; margin: 3px 0 0 2px; } div.current fieldset.radio label { clear: none; min-width: 45px; float: left; margin: 3px 0 0 2px; } div.current fieldset.checkboxes { float: left; clear: right; } div.current fieldset.checkboxes input { clear: left; min-width: 15px; float: left; margin: 3px 0 0 2px; } div.current fieldset.checkboxes label { clear: right; min-width: 45px; margin: 3px 0 0 2px; } div.current input, div.current span.faux-input, div.current textarea, div.current select { clear: none; float: left; margin: 3px 0 0 2px; } div.current select { margin-bottom: 15px; } div.current table#acl-config th.acl-groups { text-align: left; } div.current table#filter-config th.acl-groups { text-align: left; } div.current table#filter-config select { margin-bottom: 0; } /* -------- Menu Assigments ---------- */ div#menu-assignment { clear: left; } div#menu-assignment ul.menu-links { float: left; width: 49%; } div#menu-assignment ul.menu-links label { clear: none; float: left; margin: 3px 0 0 2px; } div#menu-assignment ul.menu-links input { clear: left; float: left; } button.jform-rightbtn { float: right; margin-right: 0; } p.tab-description { font-size: 1.091em; margin-left: 0; margin-top: 5px; } /* end new parameter styles */ /** * Login Settings */ #login-page input, #login-page select { float: right; clear: none; } #login-page .login { margin: 0 auto; width: 575px; margin-bottom: 100px; } #login-page .pagetitle h2 { margin: -70px 0 30px 0; font-size: 2em; padding: 0; } #login-page p { margin: 0; padding: 0; margin-bottom: 1em; font-size: 1.2em; } #login-page #header { margin-bottom: 100px; } #login-page .login-inst { float: left; width: 35%; } #login-page .login-box { float: right; width: 63%; } #login-page #lock { width: 150px; height: 137px; } #login-page #element-box.login { padding: 20px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } #login-page .button { text-align: right; } #login-page .login-text { text-align: left; width: 40%; float: left; } #form-login { float: right; padding: 1.1em; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } #form-login fieldset { border: none; } #form-login label { display: block; float: left; clear: left; width: 100px; text-align: right; padding: 4px; color: #2c2c2c; font-weight: bold; font-size: 1.4em; margin-bottom: 15px; } #form-login div.button1 div.next { float: left; } #form-login div.button1 a { height: 2.2em; line-height: 2.2em; font-size: 1.5em; cursor: default; padding: 0 15px 0 15px; } .login-submit { border: 0; padding: 0; margin: 0; width: 0; height: 0; } /** * Cpanel Settings */ #cpanel div.icon, .cpanel div.icon { text-align: center; margin-right: 5px; float: left; margin-bottom: 5px; } #cpanel div.icon a, .cpanel div.icon a { display: block; float: left; height: auto; min-height: 97px; width: 108px; color: #2c2c2c; vertical-align: middle; text-decoration: none; font-weight: bold; } #cpanel img, .cpanel img { padding: 10px; margin: 0 auto; } #cpanel span, .cpanel span { display: block; text-align: center; padding: 0 0 5px; } div.cpanel-icons { width: 54%; float: left; } div.cpanel-component { width: 45%; float: right; } /** * Standard Layout Styles */ div.col { float: left; } div.options-section.col { float: right; } div.col1 { float: left; width: 45%; } div.col2 { float: right; width: 45%; } /* Avoid using the width divs. They are here for 3PD Extensions if needed * Use the specific layout divs listed after. See also the th.width entries */ div.width-1 { width: 1%; } div.width-3 { width: 3%; } div.width-5 { width: 5%; } div.width-10 { width: 10%; } div.width-20 { width: 20%; } div.width-30 { width: 30%; } div.width-35 { width: 35%; } div.width-40 { width: 40%; } div.width-45 { width: 45%; } div.width-50 { width: 50%; } div.width-55 { width: 55%; } div.width-60 { width: 60%; } div.width-65 { width: 65%; } div.width-70 { width: 70%; } div.width-80 { width: 80%; } div.width-100 { width: 100%; } .clrlft { clear: left; } .clrrt { clear: right; } .fltlft { float: left; } .fltrt { float: right; } .fltnone { float: none; } /* Layout Divs */ div.main-section { width: 60%; } div.options-section { width: 38%; margin: 10px 10px 10px 0; } /* for bluestork style html */ div.width-40.fltrt { width: 38%; margin: 10px 10px 10px 0; } div.rules-section { width: 98%; margin: 10px; } /** * Form Styles */ fieldset { margin: 2px 10px 2px 10px; padding: 5px; text-align: left; } legend { font-size: 1.3em; font-weight: bold; padding-bottom: 5px; } fieldset p { margin: 10px 0; font-size: 1.2em; } fieldset ol, ol#property-values, fieldset ul, ul#property-values { margin: 0; padding: 0; } fieldset li, ol#property-values li, ul#property-values li { list-style: none; margin: 0; padding: 5px; } fieldset.adminform fieldset.radio, fieldset.panelform fieldset.radio, fieldset.adminform-legacy fieldset.radio { border: 0; float: left; padding: 0; margin: 0 0 5px 0; clear: right; } fieldset.adminform fieldset.radio label, fieldset.panelform fieldset.radio label, fieldset.adminform fieldset.radio span.faux-label, fieldset.panelform fieldset.radio span.faux-label { min-width: 40px; float: left; clear: none; } /* checkboxes */ fieldset.adminform fieldset.checkboxes, fieldset.panelform fieldset.checkboxes, fieldset.adminform-legacy fieldset.checkboxes { border: 0; float: left; padding: 0; margin: 0 0 5px 0; clear: right; } fieldset.adminform fieldset.checkboxes input[type="checkbox"], fieldset.panelform fieldset.checkboxes input[type="checkbox"] { float: left; clear: left; } fieldset.adminform fieldset.checkboxes label, fieldset.panelform fieldset.checkboxes label, fieldset.adminform fieldset.checkboxes span.faux-label, fieldset.panelform fieldset.checkboxes span.faux-label { clear: right; } /* end checkboxes */ /* spacer */ div.current span.spacer > span.before, fieldset.adminform span.spacer > span.before, fieldset.panelform span.spacer > span.before { clear: both; overflow: hidden; height: 0; display: block; } /* end spacer */ fieldset.panelform-legacy label, fieldset.adminform-legacy label, fieldset.panelform-legacy span.faux-label, fieldset.adminform-legacy span.faux-label { min-width: 150px; float: left; } /* JParameter classes on radio button labels */ fieldset.panelform-legacy label.radiobtn-jno, fieldset.panelform-legacy label.radiobtn-jyes, fieldset.panelform-legacy label.radiobtn-show, fieldset.panelform-legacy label.radiobtn-hide, fieldset.panelform-legacy label.radiobtn-off, fieldset.panelform-legacy label.radiobtn-on { min-width: 40px !important; clear: none !important; } #jform_plugdesc-lbl, #jform_description-lbl { font-weight: bold; clear: both; margin-top: 15px; } p.jform_desc { clear: left; } div#jform_ordering { font-size: 1.091em; margin-top: 3px; } fieldset ul.checklist { margin-left: 27px; } fieldset ul.checklist input, fieldset ul.checklist label { float: none; } fieldset ul.checklist input:focus { outline: thin dotted #333333; } fieldset#filter-bar { margin: 0; padding: 5px 10px 5px 10px; float: left; width: 98% } fieldset#filter-bar ol, fieldset#filter-bar ul { list-style: none; margin: 0; padding: 5px 0 0; } fieldset#filter-bar ol li, fieldset#filter-bar ul li { float: left; padding: 0 5px 0 0; } fieldset#filter-bar ol li fieldset, fieldset#filter-bar ul li fieldset { margin: 0; padding: 0; } fieldset#filter-bar .filter-search { float: left; padding-bottom: 3px; } fieldset#filter-bar .filter-select { float: right; } fieldset#filter-bar input#search { width: 10em; } /* Note: these visual cues should be augmented by aria */ .invalid { font-weight: bold; } /* augmented by aria in template javascript */ input.readonly, span.faux-input { border: 0; } .star { color: #cc0000; font-size: 1.2em; } input, select, span.faux-input { font-size: 1.2em; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } span.readonly { float: left; font-size: 1.2em; line-height: 2em; } div.readonly { font-size: 1.2em; line-height: 2em; } div.extdescript { margin-left: 10px; } input[type="button"], input[type="submit"], input[type="reset"] { font-family: Arial, Helvetica, sans-serif; padding: 1px 6px; font-size: 1.2em; line-height: 1.5em; } textarea { font-size: 1.4em; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } input.button { cursor: pointer; } label { font-weight: bold; font-size: 1.1em; } span.faux-label { font-weight: bold; font-size: 1.1em; } label.selectlabel { position: absolute; left: -1000em; } /** * Option or Parameter styles */ .paramrules { padding: 10px; } span.gi { font-weight: bold; margin-right: 5px; } span.gtr { visibility: hidden; margin-right: 5px; } /** * Admintable Styles */ table.admintable td { padding: 3px; font-size: 1em; } table.admintable td.key, table.admintable td.paramlist_key { text-align: right; width: 140px; font-weight: bold; font-size: 1em; } table.admintable td.key label, table.admintable td.paramlist_key label { font-size: 1em; } table.admintable td.paramlist_value label { font-size: 1em; } table.admintable input, table.admintable span.faux-input, table.admintable select { font-size: 1em; } table.paramlist td.paramlist_description { text-align: left; width: 170px; font-weight: normal; } table.admintable td.key.vtop { vertical-align: top; } /** * Admin Form Styles */ fieldset.adminform { margin: 0 10px 10px 10px; overflow: hidden; } .adminformlist .btn.modal{ float: left; margin-top: 7px; } ul.adminformlist, ul.adminformlist li, dl.adminformlist, dl.adminformlist li { margin: 0; padding: 0; list-style: none; } ul.adminformlist pre { font-size: 1.3em; } ul.adminformlist .button2-left, ul.adminformlist .button2-left { margin-top: 5px; } /* Table styles are for use with tabular data */ table.adminform { width: 100%; border-collapse: collapse; margin: 8px 0 10px 0; margin-bottom: 15px; } table.adminform.nospace { margin-bottom: 0; } table.adminform th { font-size: 1.4em; padding: 6px 2px 4px 4px; text-align: left; height: 25px; } table.adminform td { padding: 3px; text-align: left; } table.adminform td#filter-bar { text-align: left; } table.adminform td.helpMenu { text-align: right; } table.adminform tr { padding-left: 10px; padding-right: 10px; } /** * Table formating styles */ td.center, th.center { text-align: center; } /* Avoid using the width classes. They are here for 3PD Extensions if needed * Use the specific layout table headers listed after. See also the div.width entries */ th.width-1 { width: 1%; } th.width-3 { width: 3%; } th.width-5 { width: 5%; } th.width-10 { width: 10%; } th.width-12 { width: 12%; } th.width-15 { width: 15%; } th.width-20 { width: 20%; } th.width-25 { width: 25%; } th.width-30 { width: 30%; } th.width-40 { width: 40%; } /* Table header layout classes */ th.row-number-col { width: 3%; } th.checkmark-col { width: 1%; } th.state-col { width: 5%; } th.ordering-col { width: 10%; } th.ordering-col a { display: block; float: left; margin-left: 3px; } th.ordering-col a img { margin-left: 4px; margin-right: 4px; } .categories th.ordering-col input, .categories td.order input { font-size: 1em; } th.category-col { width: 5%; } th.access-col { width: 10%; } .categories th.access-col { width: 5%; } th.hits-col { width: 5%; } th.id-col { width: 3%; } th.featured-col { width: 5%; } th.created-by-col { width: 15%; } th.date-col { width: 5%; } th.language-col { width: 5%; } th.home-col { width: 5%; } /** * Adminlist Table layout */ table.adminlist { width: 100%; float: left; } table.adminlist td, table.adminlist th { padding: 4px; font-size: 1.2em; } table.adminlist thead th { text-align: center; } table.adminlist thead a:hover { text-decoration: none; } table.adminlist thead th img { vertical-align: middle; } table.adminlist tbody th { font-weight: bold; } /* Table row styles */ table.adminlist tr { padding-left: 30px; padding-right: 30px; } table.adminlist tbody tr { text-align: left; } table.adminlist tbody tr td, table.adminlist tbody tr th { height: 25px; } table.adminlist tfoot tr { text-align: center; } /* Table td/th styles */ table.adminlist tfoot td, table.adminlist tfoot th { text-align: center; } table.adminlist td.order { text-align: center; white-space: nowrap; } table.adminlist td.order span { float: left; width: 20px; text-align: center; } table.adminlist td.order input { text-align: center; width: 3em; font-size: 100%; } /** * Tree indentation & nesting - Up to 10 levels deep so don't go crazy : */ #media-tree_tree ul { list-style: none outside none; margin: 0 10px; } table.adminlist td.indent-4 { padding-left: 4px; } table.adminlist td.indent-19 { padding-left: 19px; } table.adminlist td.indent-34 { padding-left: 34px; } table.adminlist td.indent-49 { padding-left: 49px; } table.adminlist td.indent-64 { padding-left: 64px; } table.adminlist td.indent-79 { padding-left: 79px; } table.adminlist td.indent-94 { padding-left: 94px; } table.adminlist td.indent-109 { padding-left: 109px; } table.adminlist td.indent-124 { padding-left: 124px; } table.adminlist td.indent-139 { padding-left: 139px; } /** * Adminlist buttons */ table.adminlist tr td.btns a { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; padding: 3px 20px; } table.adminlist tr td.btns a:hover, table.adminlist tr td.btns a:active, table.adminlist tr td.btns a:focus { text-decoration: none; } /** * Adminlist lists */ table.adminlist td li { list-style: inside; } /** * Modal Modules styles */ ul#new-modules-list { margin-left: 50px; font-size: 1.4em; line-height: 1.5em; } /** * Utility styles */ /* General Clearing Class */ .clr { clear: both; overflow: hidden; height: 0; } .clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .menu-module-list { list-style-position: inside; padding-left: 10px; margin-left: 5px; } /* stu nicholls solution for centering divs */ .container { clear: both; text-decoration: none; } * html .container { display: inline-block; } /* table solution for global config */ table.noshow { width: 100%; border-collapse: collapse; padding: 0; margin: 0; } table.noshow tr { vertical-align: top; } table.noshow fieldset { margin: 15px 7px 7px 7px; } /** * Saving order icon styling in admin tables */ a.saveorder { width: 16px; height: 16px; display: block; overflow: hidden; float: right; margin-right: 8px; } /** * Button styling */ #editor-xtd-buttons { padding: 5px; } button { font-family: Arial, Helvetica, sans-serif; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; margin-right: 3px; margin-left: 3px; } .invalid { font-weight: bold; } /* Button 1 Type */ .button1, .button1 div { height: 1%; float: right; } .button1 { white-space: nowrap; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } .button1 a { display: block; height: 2.2em; float: left; line-height: 2.2em; font-size: 1.2em; font-weight: bold; cursor: default; padding: 0 6px 0 6px; /* add padding if you are using the directional images */ /* padding: 0 30px 0 6px; */ } .button1 a:hover, .button1 a:focus { text-decoration: none; } /* Button 2 Type */ .button2-left, .button2-right { float: left; line-height: 1.5em; font-size: 1.2em; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } .button2-left.smallsub, .button2-right.smallsub { line-height: 1.2em; font-size: .9em; } .button2-left a, .button2-right a, .button2-left span, .button2-right span { display: block; float: left; cursor: default; } /* these are inactive buttons */ .button2-left span, .button2-right span { cursor: default; } .button2-left .page a, .button2-right .page a, .button2-left .page span, .button2-right .page span, .button2-left .blank a, .button2-right .blank a, .button2-left .blank span, .button2-right .blank span { padding: 0 6px; } .page span, .blank span { font-weight: bold; } .button2-left a:hover, .button2-right a:hover, .button2-left a:focus, .button2-right a:focus { text-decoration: none; } .button2-left a, .button2-left span { padding: 0 24px 0 6px; } .button2-right a, .button2-right span { padding: 0 6px 0 24px; } .button2-left { float: left; margin-left: 5px; } .button2-right { float: left; margin-left: 5px; } /** * Pagination styles */ /* Normal pagination styles */ div.containerpg { position: relative; left: 50%; float: left; clear: left; } div.pagination { position: relative; left: -50%; margin: 0 auto; padding: .5em; } .pagination div.limit { float: left; margin: 0 10px; font-size: 1.2em; height: 1.8em; line-height: 1.8em; } .pagination div.limit label { font-size: 100%; height: 1.8em; line-height: 1.8em; } .pagination div.limit select { font-size: 100%; } /* The Go submittal button */ .pagination button { font-size: 100%; height: 2.0em; line-height: 1.8em; margin-right: 20px; } div.pagination .button2-right, div.pagination .button2-left { font-size: 1.2em; height: 1.6em; line-height: 1.6em; } /* Style if pagination is part of the table (old style) */ table.adminlist .pagination { display: table; padding: 0; margin: 0 auto; font-size: .8em; } table.adminlist .pagination button { font-size: 1.2em; height: 1.6em; line-height: 1.5em; margin-right: 20px; } /** * MCE Editor */ div.toggle-editor { margin-top: 9px; } /** * Tooltips */ .tip { float: left; padding: 5px; max-width: 400px; z-index: 50; } .tip-title { padding: 0; margin: 0; font-size: 120%; margin-top: -15px; padding-top: 15px; padding-bottom: 5px; } .tip-text { font-size: 100%; text-align: left; margin: 0; } /** * Calendar */ a img.calendar { width: 16px; height: 16px; margin-left: 3px; cursor: pointer; vertical-align: middle; } /** * JGrid styles */ a.jgrid:hover { text-decoration: none; } .jgrid span.state { display: inline-block; height: 16px; width: 16px; } .jgrid span.text { display: none; } /** * Icons * The Background Icons for Menus, Toolbars, Quick Icons * are now in the color css files */ /** * General styles */ div.message { text-align: center; font-family: Arial, Helvetica, sans-serif; font-size: 1.2em; padding: 3px; margin-bottom: 10px; font-weight: bold; } .helpIndex { border: 0; width: 100%; height: 100%; padding: 0; overflow: auto; } .helpFrame { width: 100%; height: 800px; padding: 0 5px 0 10px; } #treecellhelp { width: 25%; display: block; position: relative; float: left; margin: 0; padding: 2px; overflow: hidden; } #datacellhelp { width: 73%; display: block; float: left; margin: 0; padding: 2px 0 0 0; } .outline { padding: 2px; } /** * Modal Styles */ h2.modal-title { margin-left: 15px; margin-bottom: 0; margin-top: 5px; font-size: 1.8em; padding-bottom: .5em; } ul.menu_types { padding: 0 0 0 15px; width: 95%; margin: 0; } ul.menu_types li, dl.menu_type dd ul li { width: 240px; list-style: none; display: block; float: left; margin-right: 10px; } ul.menu_types li { width: 47%; } dl.menu_type { width: 240px; margin: 0; padding: 0; } dl.menu_type dt { font-weight: bold; font-size: 1.5em; float: left; margin: 13px 0 5px 0; width: 240px; } dl.menu_type dd { clear: left; margin: 0; } dl.menu_type dd a { font-size: 1.2em; } dl.menu_type dd ul li { margin: 0; } ul#new-modules-list { padding: 5px 0 0 15px; width: 95%; margin: 0; list-style: none; } ul#new-modules-list li { list-style: none; display: block; float: left; margin: 0 20px 0 0; width: 47%; } ul#new-modules-list li a { font-size: 1em; line-height: 1.5em; } body.contentpane #filter-bar { font-size: 80%; } body.contentpane input, body.contentpane select { font-size: 120%; } #filter-bar input, #filter-bar select, #filter-bar button { font-size: 110%; } /** * User Accessibility */ /* Skip to Content Structural Styling */ #skiplinkholder a, #skiplinkholder a:link, #skiplinkholder a:visited { display: block; width: 99%; position: absolute; top: 0; left: -200%; z-index: 2; } #skiplinkholder a:focus, #skiplinkholder a:active { left: 0; top: 0; z-index: 100; } #skiplinkholder p { margin: 0; } #skiptargetholder { position: absolute; left: -200%; } /* Skip to Content Visual Styling */ #skiplinkholder a, #skiplinkholder a:link, #skiplinkholder a:visited { text-decoration: underline; padding: 5px; font-size: 1.3em; font-weight: bold; padding-left: 20px; padding-right: 20px; } /* Hide overlayed controls so that keyboarders can get to the modal */ .body-overlayed a, .body-overlayed input, .body-overlayed button { visibility: hidden; } .body-overlayed #sbox-window a, .body-overlayed #sbox-window input, .body-overlayed #sbox-window button { visibility: visible; } /** * Admin Form Styles */ /* For elements that aren't to be seen by users unless the user does something * like clicking on a header to see the collapsed section. */ .element-hidden, .hide { display: none; } .hidebtn { border: 0 !important; padding: 0 !important; margin: 0; width: 0; height: 0; } /* For elements that aren't to be seen by visual users but do need to be read by screenreaders. * Cannot be used for elements that can get focus such as links and form elements */ .element-invisible, .hidelabeltxt { height: 0; overflow: hidden; position: absolute; padding: 0; margin: 0; } /* Firefox has issues styling legend so this is a universal fix for making the legend invisible (i.e. visually it's not there, but screen readers see it */ legend.element-invisible { position: absolute !important; margin: 0; padding: 0; border: 0; margin-left: -10000px; font-size: 1px; height: 0; } fieldset.panelform { overflow: hidden; clear: both; } fieldset.adminform label, fieldset.panelform label, fieldset.adminform span.faux-label, fieldset.panelform span.faux-label { line-height: 2em; clear: left; min-width: 12em; float: left; margin-left: 10px; margin-right: 5px; } fieldset.adminform.long label, fieldset.panelform.long label, fieldset.adminform.long span.faux-label, fieldset.panelform.long span.faux-label { min-width: 18em; } fieldset.adminform fieldset.radio label, fieldset.panelform fieldset.radio label, fieldset.adminform fieldset.radio span.faux-label, fieldset.panelform fieldset.radio span.faux-label { margin-left: 0; } fieldset.adminform input, fieldset.adminform span.faux-input, fieldset.adminform textarea, fieldset.adminform select, fieldset.adminform img, fieldset.adminform button, fieldset.panelform input, fieldset.panelform span.faux-input, fieldset.panelform textarea, fieldset.panelform select, fieldset.panelform img, fieldset.panelform button { float: left; margin: 5px 5px 5px 0; width: auto; } /* -------- Batch Section ---------- */ fieldset.batch { margin: 20px 10px 10px 10px; padding: 10px; } fieldset.batch label { margin: 5px; min-width: 40px; } fieldset.batch button { margin: 3px; } fieldset#batch-choose-action { clear: left; border: 0 none; } fieldset.batch label { float: left; clear: none; } fieldset label#batch-choose-action-lbl { clear: left; margin-top: 15px; } label#batch-language-lbl, label#batch-user-lbl { clear: left; margin-right: 10px; margin-top: 15px; } select#batch-language-id, select#batch-user-id { margin-top: 15px; } select#batch-category-id, select#batch-position-id, select#batch-menu-id { margin-right: 30px; } fieldset.batch select, fieldset.batch input, fieldset.batch img, fieldset.batch button { float: left; } label#batch-access-lbl, label#batch-client-lbl { margin-right: 10px; } div#jform_ordering { font-size: 1.091em; margin-top: 3px; } /* Banner edit */ #jform_impmade, #jform_clicks { width: 30px; } fieldset.panelform label#jform-imp { min-width: 3em; font-size: 1.091em; } fieldset.adminform input#jform_clickurl { width: 20em; } /** * ACL STYLES relocated from com_users/media/grid.css */ a.move_up { display: inline-block; height: 16px; text-indent: -1000em; width: 16px; } span.move_up { display: inline-block; height: 16px; width: 16px; } a.move_down { display: inline-block; height: 16px; text-indent: -1000em; width: 16px; } span.move_down { display: inline-block; height: 16px; width: 16px; } a.grid_false { display: inline-block; height: 16px; text-indent: -1000em; width: 16px; } a.grid_true { display: inline-block; height: 16px; text-indent: -1000em; width: 16px; } a.grid_trash { display: inline-block; height: 16px; text-indent: -1000em; width: 16px; } /** * ACL PANEL STYLES */ div.acl-options { width: 100%; } /* All Tabs */ table.aclsummary-table, table.aclmodify-table { border-collapse: collapse; width: 100%; font-size: 1.091em; } td.col1 { font-size: 1.091em; text-align: left; padding: 4px; } table.aclsummary-table caption, table.aclmodify-table caption { display: none; } /* Summary Tab */ table.aclsummary-table th.col1 { width: 25%; } table.aclsummary-table th.col2, table.aclsummary-table th.col3, table.aclsummary-table th.col4, table.aclsummary-table th.col5, table.aclsummary-table th.col6 { width: 15%; vertical-align: bottom; text-align: center; } /* Icons (background images moved to color css files */ span.icon-16-unset, span.icon-16-allowed, span.icon-16-denied, span.icon-16-locked { padding-left: 18px; } label.icon-16-allow, label.icon-16-deny, a.icon-16-allow, a.icon-16-deny, a.icon-16-allowinactive, a.icon-16-denyinactive { display: block; height: 16px; width: 16px; margin: 0 auto; } label.icon-16-allow { text-indent: -9999em; position: relative; left: 40%; } label.icon-16-deny { text-indent: -9999em; position: relative; left: 40%; } /* Create, Edit, Edit State & Delete Tabs */ table.aclmodify-table th.col2, table.aclmodify-table th.col3, table.aclmodify-table th.col4 { width: 20%; vertical-align: bottom; text-align: center; } table.aclmodify-table select { margin: 1px; } table.aclsummary-table td label, table.aclmodify-table td label { min-width: 20px; } /* ACL footer/legend */ ul.acllegend { list-style: none; font-size: 1.091em; padding-bottom: 10px; } ul.acllegend li { display: block; float: left; padding-right: 20px; margin: 15px 0 15px 10px; } ul.acllegend li.acl-allowed { padding-left: 20px; padding-right: 10px; } ul.acllegend li.acl-denied { padding-left: 20px; padding-right: 20px; } ul.acllegend li.acl-editgroups { padding-right: 10px; } ul.acllegend li.acl-resetbtn { padding-right: 0; } li.acl-editgroups, li.acl-resetbtn { display: block; float: left; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } li.acl-editgroups a, li.acl-resetbtn a { padding: 6px; cursor: default; } li.acl-editgroups a:hover, li.acl-resetbtn a:hover, li.acl-editgroups a:focus, li.acl-resetbtn a:focus { text-decoration: none; cursor: default; } li.acl-editgroups:hover, li.acl-resetbtn:hover, li.acl-editgroups:focus, li.acl-resetbtn:focus { text-decoration: none; cursor: default; } table#acl-config { width: 100%; margin-top: 15px; } table#acl-config th, table#acl-config td { height: 2em; background: #f9fade; text-align: center; vertical-align: middle; } table#acl-config th.acl-groups { padding-left: 8px; font-weight: bold; text-align: left; } table#acl-config th.acl-groups span.gi { margin-right: 2px; } table#acl-config td { width: 9em; } table#acl-config td select { float: none; } .acl-action { font-size: 1.091em; margin: auto 0; } .acl-groups { font-size: 1.091em; font-weight: normal; } label#jform_rules-lbl { float: none; white-space: nowrap; display: none; visibility: hidden; } label#jform_filters-lbl { float: none; white-space: nowrap; display: none; visibility: hidden; } /** * Options modal- config */ ul.config-option-list, ul.config-option-list li { margin: 0; padding: 0; list-style: none; } ul.config-option-list fieldset { margin: 0; padding-left: 0; padding-right: 0; } /* * * Permission Rules */ #permissions-sliders { margin-top: 15px; } #permissions-sliders ul#rules, #permissions-sliders ul#rules ul { margin: 0 !important; padding: 0 !important; list-style-type: none; } #permissions-sliders ul#rules li { margin: 0; padding: 0; } #permissions-sliders ul#rules table.group-rules { border-collapse: collapse; margin: 5px; width: 100%; } #permissions-sliders ul#rules table.group-rules td { padding: 4px; vertical-align: middle; text-align: left; overflow: hidden; } #permissions-sliders ul#rules table.group-rules th { font-size: 1.2em; overflow: hidden; font-weight: bold; } #permissions-sliders .panel { margin-bottom: 3px; margin-left: 0; border: 0; } #permissions-sliders p.rule-desc { font-size: 1.1em; } #permissions-sliders div.rule-notes { font-size: 1.1em; } ul#rules table.group-rules td label { margin: 0 !important; line-height: 1.1em; } ul#rules table.group-rules td span { font-size: 1.1em; padding-bottom: 4px; } ul#rules table.group-rules td span span { font-size: 100%; } table.group-rules td select { margin: 0 !important; } #permissions-sliders ul#rules .mypanel { padding: 0; line-height: 1.3em; } #permissions-sliders .mypanel table.group-rules caption { font-size: 1.3em; } #permissions-sliders ul#rules { padding: 5px; } #permissions-sliders ul#rules table.group-rules th { text-align: left; padding: 4px; } #permissions-sliders ul#rules table.group-rules td label { min-width: 1em; } #permissions-sliders .pane-toggler span { padding-left: 20px; } #permissions-sliders .pane-toggler-down span { padding-left: 20px; } #permissions-sliders .pane-toggler-down span.level, #permissions-sliders .pane-toggler span.level { padding: 0; } /* * Debug styles */ .swatch { text-align: center; padding: 0 15px 0 15px; } /* Tab changes for accessibility */ dl.tabs dt h3 { padding: 0; font-size: 100%; } /** * Helpmenus */ ul.helpmenu li { float: right; margin: 10px; padding: 0; list-style-type: none; font-weight: bold; } /* CSS file for Accessible Admin Menu * based on Matt Carrolls' son of suckerfish * with javascript by Bill Tomczak */ /* Note: set up the font-size on the id and used 100% on the elements. If ul/li/a are different ems, then the shifting back via non-js keyboard doesn't work properly */ /** * Menu Styling */ #menu { /* this is on the main ul */ position: relative; z-index: 100; padding: 0; margin: 0; width: 100%; list-style: none; font-size: 1.2em; font-weight: bold; } #menu ul { /* all lists */ padding: 0; margin: 0; list-style: none; font-size: 100%; } #menu ul li.separator { margin-bottom: 1em; } #menu a { padding: 0.35em 2.5em 0.35em 2em; vertical-align: middle; display: block; /* width: 10em; */ text-decoration: none; font-size: 100%; } #menu li { /* all list items */ float: left; /* width: 12em; width needed or else Opera goes nuts */ font-size: 100%; } #menu li a { white-space: nowrap; } #menu li li a { margin-bottom: 1px; margin-top: 1px; width: 10em; } #menu li.disabled a:hover, #menu li.disabled a:focus, #menu li.disabled a { cursor: default; } #menu li ul { /* second-level lists */ position: absolute; width: 16em; margin-left: -1000em; /* using left instead of display to hide menus because display: none isn't read by screen readers */ } #menu li li { /* second-level row */ border: none; width: 16em; } #menu li ul ul { /* third-and-above-level lists */ margin: -2.3em 0 0 -1000em; /* top margin is equal to parent line height+bottom padding */ } #menu li:hover ul ul, #menu li.sfhover ul ul { margin-left: -1000em; } #menu li:hover ul, #menu li.sfhover ul { /* lists nested under hovered list items */ margin-left: 0; } #menu li li:hover ul, #menu li li.sfhover ul { margin-left: 16em; } /** * Menu Icons * These icons are used on the Administrator menu * The classes are constructed dynamically when the menu is generated */ [class^="menu-"], [class*=" menu-"] { background-position: 3px 50% !important; } .menu-archive { background-image: url(../images/menu/icon-16-archive.png); } .menu-article { background-image: url(../images/menu/icon-16-article.png); } .menu-banners { background-image: url(../images/menu/icon-16-banner.png); } .menu-banners-clients { background-image: url(../images/menu/icon-16-banner-client.png); } .menu-banners-tracks { background-image: url(../images/menu/icon-16-banner-tracks.png); } .menu-banners-cat { background-image: url(../images/menu/icon-16-banner-categories.png); } .menu-category { background-image: url(../images/menu/icon-16-category.png); } .menu-checkin { background-image: url(../images/menu/icon-16-checkin.png); } .menu-clear { background-image: url(../images/menu/icon-16-clear.png); } .menu-component { background-image: url(../images/menu/icon-16-component.png); } .menu-config { background-image: url(../images/menu/icon-16-config.png); } .menu-contact { background-image: url(../images/menu/icon-16-contacts.png); } .menu-contact-cat { background-image: url(../images/menu/icon-16-contacts-categories.png); } .menu-content { background-image: url(../images/menu/icon-16-content.png); } .menu-cpanel { background-image: url(../images/menu/icon-16-cpanel.png); } .menu-default { background-image: url(../images/menu/icon-16-default.png); } .menu-featured { background-image: url(../images/menu/icon-16-featured.png); } .menu-groups { background-image: url(../images/menu/icon-16-groups.png); } .menu-help { background-image: url(../images/menu/icon-16-help.png); } .menu-help-this { background-image: url(../images/menu/icon-16-help-this.png); } .menu-help-forum { background-image: url(../images/menu/icon-16-help-forum.png); } .menu-help-docs { background-image: url(../images/menu/icon-16-help-docs.png); } .menu-help-jed { background-image: url(../images/menu/icon-16-help-jed.png); } .menu-help-jrd { background-image: url(../images/menu/icon-16-help-jrd.png); } .menu-help-community { background-image: url(../images/menu/icon-16-help-community.png); } .menu-help-security { background-image: url(../images/menu/icon-16-help-security.png); } .menu-help-dev { background-image: url(../images/menu/icon-16-help-dev.png); } .menu-help-shop { background-image: url(../images/menu/icon-16-help-shop.png); } .menu-info { background-image: url(../images/menu/icon-16-info.png); } .menu-install { background-image: url(../images/menu/icon-16-install.png); } .menu-joomlaupdate { background-image: url(../images/menu/icon-16-install.png); } .menu-language { background-image: url(../images/menu/icon-16-language.png); } .menu-levels { background-image: url(../images/menu/icon-16-levels.png); } .menu-logout { background-image: url(../images/menu/icon-16-logout.png); } .menu-maintenance { background-image: url(../images/menu/icon-16-maintenance.png); } .menu-massmail { background-image: url(../images/menu/icon-16-massmail.png); } .menu-media { background-image: url(../images/menu/icon-16-media.png); } .menu-menu { background-image: url(../images/menu/icon-16-menu.png); } .menu-menumgr { background-image: url(../images/menu/icon-16-menumgr.png); } .menu-messages { background-image: url(../images/menu/icon-16-messaging.png); } .menu-messages-add { background-image: url(../images/menu/icon-16-new-privatemessage.png); } .menu-messages-read { background-image: url(../images/menu/icon-16-messages.png); } .menu-module { background-image: url(../images/menu/icon-16-module.png); } .menu-newarticle { background-image: url(../images/menu/icon-16-newarticle.png); } .menu-newcategory { background-image: url(../images/menu/icon-16-newcategory.png); } .menu-newgroup { background-image: url(../images/menu/icon-16-newgroup.png); } .menu-newlevel { background-image: url(../images/menu/icon-16-newlevel.png); } .menu-newuser { background-image: url(../images/menu/icon-16-newuser.png); } .menu-plugin { background-image: url(../images/menu/icon-16-plugin.png); } .menu-profile { background-image: url(../images/menu/icon-16-user.png); } .menu-purge { background-image: url(../images/menu/icon-16-purge.png); } .menu-readmess { background-image: url(../images/menu/icon-16-readmess.png); } .menu-section { background-image: url(../images/menu/icon-16-section.png); } .menu-static { background-image: url(../images/menu/icon-16-static.png); } .menu-stats { background-image: url(../images/menu/icon-16-stats.png); } .menu-themes { background-image: url(../images/menu/icon-16-themes.png); } .menu-trash { background-image: url(../images/menu/icon-16-trash.png); } .menu-user { background-image: url(../images/menu/icon-16-user.png); } .menu-user-note { background-image: url(../images/menu/icon-16-user-note.png); } .menu-delete { background-image: url(../images/menu/icon-16-delete.png); } .menu-help-trans { background-image: url(../images/menu/icon-16-help-trans.png); } .menu-newsfeeds { background-image: url(../images/menu/icon-16-newsfeeds.png); } .menu-newsfeeds-cat { background-image: url(../images/menu/icon-16-newsfeeds-cat.png); } .menu-redirect { background-image: url(../images/menu/icon-16-redirect.png); } .menu-search { background-image: url(../images/menu/icon-16-search.png); } .menu-finder { background-image: url(../images/menu/icon-16-search.png); } .menu-weblinks { background-image: url(../images/menu/icon-16-links.png); } .menu-weblinks-cat { background-image: url(../images/menu/icon-16-links-cat.png); } .menu-tags { background-image: url(../images/menu/icon-16-tags.png); } .menu-postinstall { background-image: url(../images/menu/icon-16-generic.png); } /** * Extra positioning rules for limited noscript keyboard accessibility * need the backgrounds here to keep the background as the nav background * since it is overlaying other content. * Using margin-left instead of left so that can move back without javascript * display downlevel ul */ #menu li a:focus+ul { margin-left: 0; } #menu li li a:focus+ul { margin-left: 1016em; } /* bring back the focus elements into view */ #menu li li a:focus { margin-left: 1000em; width: 10em; } #menu li li li a:focus { margin-left: 2016em; width: 10em; } #menu li:hover a:focus, #menu li.sfhover a.sffocus { margin-left: 0; } #menu li li:hover a:focus+ul, #menu li li.sfhover a.sffocus+ul { margin-left: 16em; } /** * Sidebar styling */ #sidebar { float:left; margin: 15px 5px; } /** * Submenu styling */ #submenu { list-style: none; padding: 0; margin: 0; /* border-bottom plus padding-bottom is the technique */ padding-bottom: 2.5em; line-height: 2em; } #submenu ul, #submenu li { display: inline; list-style-type: none; margin: 0; padding: 0; } #submenu li, #submenu span.nolink { float: left; font-weight: bold; margin-right: 8px; padding: 2px 10px 2px 10px; text-decoration: none; cursor: pointer; -moz-border-radius-topright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-right-radius: 3px; -webkit-border-top-left-radius: 3px; border-top-right-radius: 3px; border-top-left-radius: 3px; } #submenu span.nolink { color: #999; } #submenu li.active, #submenu span.nolink.active { cursor: default; } #submenu li.active a, #submenu span.nolink.active, #submenu li a:hover, #submenu li a:focus { text-decoration: none; } /* -- CUSTOM LANG STRINGS STYLES ----------- */ .red { font-weight: bold; color: #c00; } /* -- OTHER STYLES ----------- */ .pre_message { font-size: 1.3em; } /* -- Update check badges -- */ span.update-badge { background-image: -moz-linear-gradient(center bottom, #FF0000 41%, #FC7E7E 79%); background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.41, rgb(255, 0, 0)), color-stop(0.79, rgb(252, 126, 126))); border: 2px solid white; border-radius: 1.5em 1.5em 1.5em 1.5em; color: white; display: block; float: left; font-size: 1.2em; font-weight: bold; height: 1.2em; left: 60px; min-width: 1em; padding: 0 0.1em 0; position: relative; top: -88px; } /* User Notes */ .unotes ul, .unotes ol { list-style: none; list-style-position: inside; padding-left: 0; padding-right: 0; } .unotes div.utitle { padding: 10px; float: left; font-size: 1.2em; line-height: 1.2em; } .unotes h4 { margin-top: 0; margin-bottom: 0; font-size: 1.3em; } .unotes .ubody { padding-left: 10px; padding-right: 10px; font-size: 1.2em; line-height: 1.5em; } .unotes p { padding-bottom: 10px; } /* com-install styling */ div#database-sliders { margin: 10px; } fieldset.uploadform { margin-top: 10px; margin-bottom: 10px; } /* Installer Database */ #installer-database, #installer-discover, #installer-update, #installer-warnings { margin-top: 10px; } #installer-database #sidebar { float: none } #installer-database p.warning { padding-left: 20px; } #installer-database p.nowarning { padding-left: 20px; } /* Spinner */ .joomlaupdate_spinner { float: left; margin-right: 15px; } .btn-group { position: relative; display: inline-block; } .btn-group + .btn-group { margin-left: 5px; } .btn-group > .btn { position: relative; float: left; margin-left: -1px; } .icon-48-cpanel { height: 50px; width: 50%; } .well { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: #f5f5f5; border: 1px solid #eee; border: 1px solid rgba(0, 0, 0, 0.05); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); } .well blockquote { border-color: #ddd; border-color: rgba(0, 0, 0, 0.15); } .well-large { padding: 24px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .well-small { padding: 9px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } /* Striped */ .list-striped, .row-striped { list-style: none; line-height: 18px; text-align: left; vertical-align: middle; border-top: 1px solid #dddddd; margin-left: 0; font-size: 1.2em; padding: 9px; } .list-striped li, .list-striped dd, .row-striped .row, .row-striped .row-fluid { border-bottom: 1px solid #dddddd; padding: 8px; } .list-striped li:nth-child(odd), .list-striped dd:nth-child(odd), .row-striped .row:nth-child(odd), .row-striped .row-fluid:nth-child(odd) { background-color: #f9f9f9; } .list-striped li:hover, .list-striped dd:hover, .row-striped .row:hover, .row-striped .row-fluid:hover { background-color: #f5f5f5; } .row-striped .row-fluid { width: 97%; } .row-striped .row-fluid [class*="span"] { min-height: 10px; } .alert { padding: 8px 35px 8px 14px; margin-bottom: 18px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); background-color: #fcf8e3; border: 1px solid #fbeed5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; color: #c09853; font-size: 120%; } .alert-heading { color: inherit; } .alert .close { position: relative; right: -30px; top: -5px; line-height: 18px; float: right; font-size: 20px; font-weight: bold; } .alert-success { background-color: #dff0d8; border-color: #d6e9c6; color: #468847; } .alert-danger, .alert-error { background-color: #f2dede; border-color: #eed3d7; color: #b94a48; } .alert-info { background-color: #d9edf7; border-color: #bce8f1; color: #3a87ad; } .alert-block { padding-top: 14px; padding-bottom: 14px; } .alert-block > p, .alert-block > ul { margin-bottom: 0; } .alert-block p + p { margin-top: 5px; } .btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active { z-index: 2; } .btn-group > .btn { position: relative; float: left; margin-left: -1px; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } table { max-width: 100%; background-color: transparent; border-collapse: collapse; border-spacing: 0; } .table { width: 100%; margin-bottom: 18px; } .tab-content > .tab-pane, .pill-content > .pill-pane { display: none; } .tab-content > .active, .pill-content > .active { display: block; } .tabs-below > .nav-tabs { border-top: 1px solid #ddd; } #status .btn-toolbar, #status p { margin: 0px; } .navbar .btn-group { margin: 0; padding: 5px 5px 6px; } /** * Media */ .media .btn { margin: 10px 20px; } .thumbnails > li { list-style: none outside none; float: left; margin-bottom: 18px; margin-left: 20px; } #mediamanager-form { margin: 10px; } .is-tagbox { float: left; } /* Item associations */ .item-associations { margin: 0; } .item-associations li { list-style: none; display: inline-block; margin: 0 0 3px 0; } .item-associations li a, table.adminlist .item-associations li a { color: #ffffff; } .hidden { display: none; visibility: hidden; } // Bootstrap Tooltips (need to load last, something is overriding these styles in the CSS, debug later ;-) ) @import "../../../../media/jui/less/tooltip.less"; .tooltip { max-width: 400px; } .tooltip-inner { max-width: none; text-align: left; text-shadow: none; } th .tooltip-inner { font-weight: normal; } .tooltip.hasimage { opacity: 1; } fieldset.panelform .tooltip img { float: none; margin: 0; } //Toggle editor button div.toggle-editor { float: right; } .text-left { text-align: left; } .text-right { text-align: right; } .text-center { text-align: center; } .module-edit { display: inline-block; } .break-word { word-break: break-all; word-wrap: break-word; } .muted { color: #999; } PKb��\ +"��$templates/hathor/less/variables.lessnu�[���// Variables.less // Variables to customize the look and feel of Bootstrap // ----------------------------------------------------- // GLOBAL VALUES // -------------------------------------------------- // Grays // ------------------------- @black: #000; @grayDarker: #222; @grayDark: #333; @gray: #555; @grayLight: #999; @grayLighter: #eee; @white: #fff; // Accent colors // ------------------------- @blue: #049cdb; @blueDark: #0064cd; @green: #46a546; @red: #9d261d; @yellow: #ffc40d; @orange: #f89406; @pink: #c3325f; @purple: #7a43b6; // Scaffolding // ------------------------- @bodyBackground: @white; @textColor: @grayDark; // Links // ------------------------- @linkColor: #08c; @linkColorHover: darken(@linkColor, 15%); // Typography // ------------------------- @sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif; @serifFontFamily: Georgia, "Times New Roman", Times, serif; @monoFontFamily: Menlo, Monaco, Consolas, "Courier New", monospace; @baseFontSize: 13px; @baseFontFamily: @sansFontFamily; @baseLineHeight: 18px; @altFontFamily: @serifFontFamily; @headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily @headingsFontWeight: bold; // instead of browser default, bold @headingsColor: inherit; // empty to use BS default, @textColor // Tables // ------------------------- @tableBackground: transparent; // overall background-color @tableBackgroundAccent: #f9f9f9; // for striping @tableBackgroundHover: #f5f5f5; // for hover @tableBorder: #ddd; // table and cell border // Buttons // ------------------------- @btnBackground: @white; @btnBackgroundHighlight: darken(@white, 10%); @btnBorder: #ccc; @btnPrimaryBackground: #2384d3; @btnPrimaryBackgroundHighlight: #15497c; @btnInfoBackground: #5bc0de; @btnInfoBackgroundHighlight: #2f96b4; @btnSuccessBackground: #62c462; @btnSuccessBackgroundHighlight: #51a351; @btnWarningBackground: lighten(@orange, 15%); @btnWarningBackgroundHighlight: @orange; @btnDangerBackground: #ee5f5b; @btnDangerBackgroundHighlight: #bd362f; @btnInverseBackground: @gray; @btnInverseBackgroundHighlight: @grayDarker; // Forms // ------------------------- @inputBackground: @white; @inputBorder: #ccc; @inputBorderRadius: 3px; @inputDisabledBackground: @grayLighter; @formActionsBackground: #f5f5f5; // Dropdowns // ------------------------- @dropdownBackground: @white; @dropdownBorder: rgba(0,0,0,.2); @dropdownLinkColor: @grayDark; @dropdownLinkColorHover: @white; @dropdownLinkBackgroundHover: @linkColor; @dropdownDividerTop: #e5e5e5; @dropdownDividerBottom: @white; // COMPONENT VARIABLES // -------------------------------------------------- // Z-index master list // ------------------------- // Used for a bird's eye view of components dependent on the z-axis // Try to avoid customizing these :) @zindexDropdown: 1000; @zindexPopover: 1010; @zindexTooltip: 1020; @zindexFixedNavbar: 1030; @zindexModalBackdrop: 1040; @zindexModal: 1050; // Sprite icons path // ------------------------- @iconSpritePath: "../img/glyphicons-halflings.png"; @iconWhiteSpritePath: "../img/glyphicons-halflings-white.png"; // Input placeholder text color // ------------------------- @placeholderText: @grayLight; // Hr border color // ------------------------- @hrBorder: @grayLighter; // Navbar // ------------------------- @navbarHeight: 40px; @navbarBackground: @grayDarker; @navbarBackgroundHighlight: @grayDark; @navbarText: @grayLight; @navbarLinkColor: @grayLight; @navbarLinkColorHover: @white; @navbarLinkColorActive: @navbarLinkColorHover; @navbarLinkBackgroundHover: transparent; @navbarLinkBackgroundActive: @navbarBackground; @navbarSearchBackground: lighten(@navbarBackground, 25%); @navbarSearchBackgroundFocus: @white; @navbarSearchBorder: darken(@navbarSearchBackground, 30%); @navbarSearchPlaceholderColor: #ccc; @navbarBrandColor: @navbarLinkColor; // Hero unit // ------------------------- @heroUnitBackground: @grayLighter; @heroUnitHeadingColor: inherit; @heroUnitLeadColor: inherit; // Form states and alerts // ------------------------- @warningText: #c09853; @warningBackground: #fcf8e3; @warningBorder: darken(spin(@warningBackground, -10), 3%); @errorText: #b94a48; @errorBackground: #f2dede; @errorBorder: darken(spin(@errorBackground, -10), 3%); @successText: #468847; @successBackground: #dff0d8; @successBorder: darken(spin(@successBackground, -10), 5%); @infoText: #3a87ad; @infoBackground: #d9edf7; @infoBorder: darken(spin(@infoBackground, -10), 7%); // GRID // -------------------------------------------------- // Default 940px grid // ------------------------- @gridColumns: 12; @gridColumnWidth: 60px; @gridGutterWidth: 20px; @gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1)); // Fluid grid // ------------------------- @fluidGridColumnWidth: 6.382978723%; @fluidGridGutterWidth: 2.127659574%; // Login // ------------------------- @loginBackground: #142849; @loginBackgroundHighlight: #165387; // Header // ------------------------- @headerBackground: #1a3867; @headerBackgroundHighlight: #17568c;PKb��\���q�q�*templates/hathor/less/colour_baseline.lessnu�[���// colour_baseline.less // // Baseline CSS for the Hathor colours. // Compilers should include this in their colour's imports, but not directly // compile using this file. // ----------------------------------------------------- // Core variables and mixins @import "../../../../media/jui/less/mixins.less"; // Bootstrap Buttons // Using override for Hathor to target specific instances only @import "buttons.less"; // Bootstrap Forms // Using override for Hathor since we're not pulling in all Bootstrap form styles @import "forms.less"; // Bootstrap Labels and Badges @import "../../../../media/jui/less/labels-badges.less"; /* * General styles */ body { background-color: @bodyBackground; color: @textColor; } h1 { color: @textColor; } a:link { color: @linkColor; } a:visited { color: @linkColor; } /* * Overall Styles */ #header { background: @bodyBackground url(../images/j_logo.png) no-repeat; } #header h1.title { color: @textColor; } #nav { #gradient > .vertical(@gradientTop, @gradientBottom); border: 1px solid @mainBorder; } #content { background: @bodyBackground; } #no-submenu { border-bottom: 1px solid @mainBorder; } #element-box { background: @bodyBackground; border-right: 1px solid @mainBorder; border-bottom: 1px solid @mainBorder; border-left: 1px solid @mainBorder; } #element-box.login { border-top: 1px solid @mainBorder; } /* * Various Styles */ .enabled, .success, .allow, span.writable { color: @successText; } .disabled, p.error, .warning, .deny, span.unwritable { color: @errorText; } .nowarning { color: @textColor; } .none, .protected { color: @mainBorder; } span.note { background: @bodyBackground; color: @textColor; } div.checkin-tick { background: url(../images/admin/tick.png) 20px 50% no-repeat; } /* * Overlib */ .ol-foreground { background-color: @altBackground; } .ol-background { background-color: @successText; } .ol-textfont { color: @textColor; } .ol-captionfont { color: @bodyBackground; } .ol-captionfont a { color: @linkColor; } /* * Subheader, toolbar, page title */ div.subheader .padding { background: @bodyBackground; } .pagetitle h2 { color: @textColor; } div.configuration { color: @textColor; background-image: url(../images/menu/icon-16-config.png); background-repeat: no-repeat; } div.toolbar-box { border-right: 1px solid @mainBorder; border-bottom: 1px solid @mainBorder; border-left: 1px solid @mainBorder; background: @bodyBackground; } div.toolbar-list li { color: @textColor; } div.toolbar-list li.divider { border-right: 1px dotted @hoverBackground; } div.toolbar-list a { border-left: 1px solid @hoverBackground; border-top: 1px solid @hoverBackground; border-right: 1px solid @mainBorder; border-bottom: 1px solid @mainBorder; background: @altBackground; } div.toolbar-list a:hover { border-left: 1px solid @NWBorder; border-top: 1px solid @NWBorder; border-right: 1px solid @SEBorder; border-bottom: 1px solid @SEBorder; background: @hoverBackground; color: @toolbarColor; } div.btn-toolbar { margin-left: 5px; padding-top: 3px; } div.btn-toolbar li.divider { border-right: 1px dotted @hoverBackground; } div.btn-toolbar div.btn-group button { border-left: 1px solid @hoverBackground; border-top: 1px solid @hoverBackground; border-right: 1px solid @mainBorder; border-bottom: 1px solid @mainBorder; #gradient > .vertical(@gradientTop, @gradientBottom); padding: 5px 4px 5px 4px; } div.btn-toolbar div.btn-group button:hover { border-left: 1px solid @NWBorder; border-top: 1px solid @NWBorder; border-right: 1px solid @SEBorder; border-bottom: 1px solid @SEBorder; background: @hoverBackground; color: @toolbarColor; cursor: pointer; } div.btn-toolbar a { border-left: 1px solid @hoverBackground; border-top: 1px solid @hoverBackground; border-right: 1px solid @mainBorder; border-bottom: 1px solid @mainBorder; #gradient > .vertical(@gradientTop, @gradientBottom); padding: 6px 5px; text-align: center; white-space: nowrap; font-size: 1.2em; text-decoration: none; } div.btn-toolbar a:hover { border-left: 1px solid @NWBorder; border-top: 1px solid @NWBorder; border-right: 1px solid @SEBorder; border-bottom: 1px solid @SEBorder; background: @hoverBackground; color: @toolbarColor; cursor: pointer; } div.btn-toolbar div.btn-group button.inactive { background: @altBackground; } /* * Pane Slider pane Toggler styles */ .pane-sliders .title { color: @textColor; } .pane-sliders .panel { border: 1px solid @mainBorder; } .pane-sliders .panel h3 { #gradient > .vertical(@gradientTop, @gradientBottom); color: @linkColor; } .pane-sliders .panel h3:hover { background: @hoverBackground; } .pane-sliders .panel h3:hover a { text-decoration: none; } .pane-sliders .adminlist { border: 0 none; } .pane-sliders .adminlist td { border: 0 none; } .pane-toggler span { background: transparent url(../images/j_arrow.png) 5px 50% no-repeat; } .pane-toggler-down span { background: transparent url(../images/j_arrow_down.png) 5px 50% no-repeat; } .pane-toggler-down { border-bottom: 1px solid @mainBorder; } /* * Tabs */ dl.tabs dt { border: 1px solid @mainBorder; #gradient > .vertical(@gradientTop, @gradientBottom); color: @linkColor; } dl.tabs dt:hover { background: @hoverBackground; } dl.tabs dt.open { background: @bodyBackground; border-bottom: 1px solid @bodyBackground; color: @textColor; } dl.tabs dt.open a:visited { color: @textColor; } dl.tabs dt a:hover { text-decoration: none; } dl.tabs dt a:focus { text-decoration: underline; } div.current { border: 1px solid @mainBorder; background: @bodyBackground; } /* * New parameter styles */ div.current fieldset { border: none 0; } div.current fieldset.adminform { border: 1px solid @mainBorder; } /* * Login Settings */ #login-page .pagetitle h2 { background: transparent; } #login-page #header { border-bottom: 1px solid @mainBorder; } #login-page #lock { background: url(../images/j_login_lock.png) 50% 0 no-repeat; } #login-page #element-box.login { #gradient > .vertical(@gradientTop, @gradientBottom); } #form-login { background: @bodyBackground; border: 1px solid @mainBorder; } #form-login label { color: @textColor; } #form-login div.button1 a { color: @linkColor; } /* * Cpanel Settings */ #cpanel div.icon a, .cpanel div.icon a { color: @linkColor; border-left: 1px solid @hoverBackground; border-top: 1px solid @hoverBackground; border-right: 1px solid @mainBorder; border-bottom: 1px solid @mainBorder; #gradient > .vertical(@gradientTop, @gradientBottom); } #cpanel div.icon a:hover, #cpanel div.icon a:focus, .cpanel div.icon a:hover, .cpanel div.icon a:focus { border-left: 1px solid @NWBorder; border-top: 1px solid @NWBorder; border-right: 1px solid @SEBorder; border-bottom: 1px solid @SEBorder; color: @linkColor; background: @hoverBackground; } /* * Form Styles */ fieldset { border: 1px @mainBorder solid; } legend { color: @textColor; } fieldset ul.checklist input:focus { outline: thin dotted @textColor; } fieldset#filter-bar { border-top: 0 solid @mainBorder; border-right: 0 solid @mainBorder; border-bottom: 1px solid @mainBorder; border-left: 0 solid @mainBorder; } fieldset#filter-bar ol, fieldset#filter-bar ul { border: 0; } fieldset#filter-bar ol li fieldset, fieldset#filter-bar ul li fieldset { border: 0; } /* Note: these visual cues should be augmented by aria */ .invalid { color: @errorText; } /* must be augmented by aria at the same time if changed dynamically by js aria-invalid=true or aria-invalid=false */ input.invalid { border: 1px solid @errorText; } /* augmented by aria in template javascript */ input.readonly, span.faux-input { border: 0; } input.required { background-color: @inputBackground; } input.disabled { background-color: @disabledBackground; } input, select, span.faux-input { background-color: @bodyBackground; border: 1px solid @mainBorder; } /* Inputs used as buttons */ input[type="button"], input[type="submit"], input[type="reset"] { color: @linkColor; #gradient > .vertical(@gradientTop, @gradientBottom); } input[type="button"]:hover, input[type="button"]:focus, input[type="submit"]:hover, input[type="submit"]:focus, input[type="reset"]:hover, input[type="reset"]:focus { background: @hoverBackground; } textarea { background-color: @bodyBackground; border: 1px solid @mainBorder; } input:focus, select:focus, textarea:focus, option:focus, input:hover, select:hover, textarea:hover, option:hover { background-color: @hoverBackground; color: @linkColor; } /* * Option or Parameter styles */ .paramrules { background: @altBackground; } span.gi { color: @mainBorder; } /* * Admintable Styles */ table.admintable td.key, table.admintable td.paramlist_key { background-color: @altBackground; color: @textColor; border-bottom: 1px solid @mainBorder; border-right: 1px solid @mainBorder; } table.paramlist td.paramlist_description { background-color: @altBackground; color: @textColor; border-bottom: 1px solid @mainBorder; border-right: 1px solid @mainBorder; } /* * Admin Form Styles */ fieldset.adminform { border: 1px solid @mainBorder; } /* * Table styles are for use with tabular data */ table.adminform { background-color: @bodyBackground; } table.adminform tr.row0 { background-color: @bodyBackground; } table.adminform tr.row1 { background-color: @hoverBackground; } table.adminform th { color: @textColor; background: @bodyBackground; } table.adminform tr { border-bottom: 1px solid @mainBorder; border-right: 1px solid @mainBorder; } /* * Adminlist Table layout */ table.adminlist { border-spacing: 1px; background-color: @bodyBackground; color: @textColor; } table.adminlist.modal { border-right: 1px solid @mainBorder; border-left: 1px solid @mainBorder; } table.adminlist a { color: @linkColor; } table.adminlist thead th { background: @bodyBackground; color: @textColor; border-bottom: 1px solid @mainBorder; } /* * Table row styles */ table.adminlist tbody tr { background: @bodyBackground; } table.adminlist tbody tr.row1 { background: @bodyBackground; } table.adminlist tbody tr.row1:last-child td, table.adminlist tbody tr.row1:last-child th { border-bottom: 1px solid @mainBorder; } table.adminlist tbody tr.row0:hover td, table.adminlist tbody tr.row1:hover td, table.adminlist tbody tr.row0:hover th, table.adminlist tbody tr.row1:hover th, table.adminlist tbody tr.row0:focus td, table.adminlist tbody tr.row1:focus td, table.adminlist tbody tr.row0:focus th, table.adminlist tbody tr.row1:focus th { background-color: @hoverBackground; } table.adminlist tbody tr td, table.adminlist tbody tr th { border-right: 1px solid @mainBorder; } table.adminlist tbody tr td:last-child { border-right: none; } table.adminlist tbody tr.row0:last-child td, table.adminlist tbody tr.row0:last-child th { border-bottom: 1px solid @mainBorder; } table.adminlist tbody tr.row0 td, table.adminlist tbody tr.row0 th { #gradient > .vertical(@gradientTop, @gradientBottom); } table.adminlist { border-bottom: 0 solid @mainBorder; } table.adminlist tfoot tr { color: @textColor; } /* * Table td/th styles */ table.adminlist tfoot td, table.adminlist tfoot th { background-color: @bodyBackground; border-top: 1px solid @mainBorder; } /* * Adminlist buttons */ table.adminlist tr td.btns a { border: 1px solid @mainBorder; #gradient > .vertical(@gradientTop, @gradientBottom); color: @linkColor; } table.adminlist tr td.btns a:hover, table.adminlist tr td.btns a:active, table.adminlist tr td.btns a:focus { background-color: @bodyBackground; } /* * Saving order icon styling in admin tables */ a.saveorder { background: url(../images/admin/filesave.png) no-repeat; } a.saveorder.inactive { background-position: 0 -16px; } /* * Saving order icon styling in admin tables */ fieldset.batch { background: @bodyBackground; } /** * Button styling */ button { color: @toolbarColor; border: 1px solid @mainBorder; #gradient > .vertical(@gradientTop, @gradientBottom); } button:hover, button:focus { background: @hoverBackground; } .invalid { color: #ff0000; } /* Button 1 Type */ .button1 { border: 1px solid @mainBorder; color: @linkColor; #gradient > .vertical(@gradientTop, @gradientBottom); } /* Use this if you add images to the buttons such as directional arrows */ .button1 a { color: @linkColor; /* add padding if you are using the directional images */ /* padding: 0 30px 0 6px; */ } .button1 a:hover, .button1 a:focus { background: @hoverBackground; } /* Button 2 Type */ .button2-left, .button2-right { border: 1px solid @mainBorder; #gradient > .vertical(@gradientTop, @gradientBottom); } .button2-left a, .button2-right a, .button2-left span, .button2-right span { color: @linkColor; } /* these are inactive buttons */ .button2-left span, .button2-right span { color: #999999; } .page span, .blank span { color: @linkColor; } .button2-left a:hover, .button2-right a:hover, .button2-left a:focus, .button2-right a:focus { background: @hoverBackground; } /** * Pagination styles */ /* Grey out the current page number */ .pagination .page span { color: #999999; } /** * Tooltips */ .tip { background: #000000; border: 1px solid #FFFFFF; } .tip-title { background: url(../images/selector-arrow-std.png) no-repeat; } /** * Calendar */ a img.calendar { background: url(../images/calendar.png) no-repeat; } /** * JGrid styles */ .jgrid span.publish { background-image: url(../images/admin/tick.png); } .jgrid span.unpublish { background-image: url(../images/admin/publish_x.png); } .jgrid span.archive { background-image: url(../images/menu/icon-16-archive.png); } .jgrid span.trash { background-image: url(../images/menu/icon-16-trash.png); } .jgrid span.default { background-image: url(../images/menu/icon-16-default.png); } .jgrid span.notdefault { background-image: url(../images/menu/icon-16-notdefault.png); } .jgrid span.checkedout { background-image: url(../images/admin/checked_out.png); } .jgrid span.downarrow { background-image: url(../images/admin/downarrow.png); } .jgrid span.downarrow_disabled { background-image: url(../images/admin/downarrow0.png); } .jgrid span.uparrow { background-image: url(../images/admin/uparrow.png); } .jgrid span.uparrow_disabled { background-image: url(../images/admin/uparrow0.png); } .jgrid span.published { background-image: url(../images/admin/publish_g.png); } .jgrid span.expired { background-image: url(../images/admin/publish_r.png); } .jgrid span.pending { background-image: url(../images/admin/publish_y.png); } .jgrid span.warning { background-image: url(../images/admin/publish_y.png); } /** * Toolbar icons * These icons are used for the toolbar buttons * The classes are constructed dynamically when the toolbar is created */ .icon-32-send { background-image: url(../images/toolbar/icon-32-send.png); } .icon-32-delete { background-image: url(../images/toolbar/icon-32-delete.png); } .icon-32-help { background-image: url(../images/toolbar/icon-32-help.png); } .icon-32-cancel { background-image: url(../images/toolbar/icon-32-cancel.png); } .icon-32-checkin { background-image: url(../images/toolbar/icon-32-checkin.png); } .icon-32-options { background-image: url(../images/toolbar/icon-32-config.png); } .icon-32-apply { background-image: url(../images/toolbar/icon-32-apply.png); } .icon-32-back { background-image: url(../images/toolbar/icon-32-back.png); } .icon-32-forward { background-image: url(../images/toolbar/icon-32-forward.png); } .icon-32-save { background-image: url(../images/toolbar/icon-32-save.png); } .icon-32-edit { background-image: url(../images/toolbar/icon-32-edit.png); } .icon-32-copy { background-image: url(../images/toolbar/icon-32-copy.png); } .icon-32-move { background-image: url(../images/toolbar/icon-32-move.png); } .icon-32-new { background-image: url(../images/toolbar/icon-32-new.png); } .icon-32-upload { background-image: url(../images/toolbar/icon-32-upload.png); } .icon-32-assign { background-image: url(../images/toolbar/icon-32-publish.png); } .icon-32-html { background-image: url(../images/toolbar/icon-32-html.png); } .icon-32-css { background-image: url(../images/toolbar/icon-32-css.png); } .icon-32-menus { background-image: url(../images/toolbar/icon-32-menu.png); } .icon-32-publish { background-image: url(../images/toolbar/icon-32-publish.png); } .icon-32-unblock { background-image: url(../images/toolbar/icon-32-unblock.png); } .icon-32-unpublish { background-image: url(../images/toolbar/icon-32-unpublish.png); } .icon-32-restore { background-image: url(../images/toolbar/icon-32-revert.png); } .icon-32-trash { background-image: url(../images/toolbar/icon-32-trash.png); } .icon-32-archive { background-image: url(../images/toolbar/icon-32-archive.png); } .icon-32-unarchive { background-image: url(../images/toolbar/icon-32-unarchive.png); } .icon-32-preview { background-image: url(../images/toolbar/icon-32-preview.png); } .icon-32-default { background-image: url(../images/toolbar/icon-32-default.png); } .icon-32-refresh { background-image: url(../images/toolbar/icon-32-refresh.png); } .icon-32-save-new { background-image: url(../images/toolbar/icon-32-save-new.png); } .icon-32-save-copy { background-image: url(../images/toolbar/icon-32-save-copy.png); } .icon-32-error { background-image: url(../images/toolbar/icon-32-error.png); } .icon-32-new-style { background-image: url(../images/toolbar/icon-32-new-style.png); } .icon-32-delete-style { background-image: url(../images/toolbar/icon-32-delete-style.png); } .icon-32-purge { background-image: url(../images/toolbar/icon-32-purge.png); } .icon-32-remove { background-image: url(../images/toolbar/icon-32-remove.png); } .icon-32-featured { background-image: url(../images/toolbar/icon-32-featured.png); } .icon-32-unfeatured { background-image: url(../images/toolbar/icon-32-featured.png); background-position: 0% 100%; } .icon-32-export { background-image: url(../images/toolbar/icon-32-export.png); } .icon-32-stats { background-image: url(../images/toolbar/icon-32-stats.png); } .icon-32-print { background-image: url(../images/toolbar/icon-32-print.png); } .icon-32-batch { background-image: url(../images/toolbar/icon-32-batch.png); } .icon-32-envelope { background-image: url(../images/toolbar/icon-32-messaging.png); } .icon-32-download { background-image: url(../images/toolbar/icon-32-export.png); } .icon-32-bars { background-image: url(../images/toolbar/icon-32-stats.png); } /** * Quick Icons * Also knows as Header Icons * These are used for the Quick Icons on the Control Panel * The same classes are also assigned the Component Title */ .icon-48-categories { background-image: url(../images/header/icon-48-category.png); } .icon-48-category-edit { background-image: url(../images/header/icon-48-category.png); } .icon-48-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-generic { background-image: url(../images/header/icon-48-generic.png); } .icon-48-banners { background-image: url(../images/header/icon-48-banner.png); } .icon-48-banners-categories { background-image: url(../images/header/icon-48-banner-categories.png); } .icon-48-banners-category-edit { background-image: url(../images/header/icon-48-banner-categories.png); } .icon-48-banners-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-banners-clients { background-image: url(../images/header/icon-48-banner-client.png); } .icon-48-banners-tracks { background-image: url(../images/header/icon-48-banner-tracks.png); } .icon-48-checkin { background-image: url(../images/header/icon-48-checkin.png); } .icon-48-clear { background-image: url(../images/header/icon-48-clear.png); } .icon-48-contact { background-image: url(../images/header/icon-48-contacts.png); } .icon-48-contact-categories { background-image: url(../images/header/icon-48-contacts-categories.png); } .icon-48-contact-category-edit { background-image: url(../images/header/icon-48-contacts-categories.png); } .icon-48-contact-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-purge { background-image: url(../images/header/icon-48-purge.png); } .icon-48-cpanel { background-image: url(../images/header/icon-48-cpanel.png); } .icon-48-config { background-image: url(../images/header/icon-48-config.png); } .icon-48-groups { background-image: url(../images/header/icon-48-groups.png); } .icon-48-groups-add { background-image: url(../images/header/icon-48-groups-add.png); } .icon-48-levels { background-image: url(../images/header/icon-48-levels.png); } .icon-48-levels-add { background-image: url(../images/header/icon-48-levels-add.png); } .icon-48-module { background-image: url(../images/header/icon-48-module.png); } .icon-48-menu { background-image: url(../images/header/icon-48-menu.png); } .icon-48-menu-add { background-image: url(../images/header/icon-48-menu-add.png); } .icon-48-menumgr { background-image: url(../images/header/icon-48-menumgr.png); } .icon-48-trash { background-image: url(../images/header/icon-48-trash.png); } .icon-48-user { background-image: url(../images/header/icon-48-user.png); } .icon-48-user-add { background-image: url(../images/header/icon-48-user-add.png); } .icon-48-user-edit { background-image: url(../images/header/icon-48-user-edit.png); } .icon-48-user-profile { background-image: url(../images/header/icon-48-user-profile.png); } .icon-48-inbox { background-image: url(../images/header/icon-48-inbox.png); } .icon-48-new-privatemessage { background-image: url(../images/header/icon-48-new-privatemessage.png); } .icon-48-msgconfig { background-image: url(../images/header/icon-48-message_config.png); } .icon-48-langmanager { background-image: url(../images/header/icon-48-language.png); } .icon-48-mediamanager { background-image: url(../images/header/icon-48-media.png); } .icon-48-plugin { background-image: url(../images/header/icon-48-plugin.png); } .icon-48-help_header { background-image: url(../images/header/icon-48-help_header.png); } .icon-48-impressions { background-image: url(../images/header/icon-48-stats.png); } .icon-48-browser { background-image: url(../images/header/icon-48-stats.png); } .icon-48-searchtext { background-image: url(../images/header/icon-48-stats.png); } .icon-48-thememanager { background-image: url(../images/header/icon-48-themes.png); } .icon-48-writemess { background-image: url(../images/header/icon-48-writemess.png); } .icon-48-featured { background-image: url(../images/header/icon-48-featured.png); } .icon-48-sections { background-image: url(../images/header/icon-48-section.png); } .icon-48-article-add { background-image: url(../images/header/icon-48-article-add.png); } .icon-48-article-edit { background-image: url(../images/header/icon-48-article-edit.png); } .icon-48-article { background-image: url(../images/header/icon-48-article.png); } .icon-48-content-categories { background-image: url(../images/header/icon-48-category.png); } .icon-48-content-category-edit { background-image: url(../images/header/icon-48-category.png); } .icon-48-content-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-install { background-image: url(../images/header/icon-48-extension.png); } .icon-48-dbbackup { background-image: url(../images/header/icon-48-backup.png); } .icon-48-dbrestore { background-image: url(../images/header/icon-48-dbrestore.png); } .icon-48-dbquery { background-image: url(../images/header/icon-48-query.png); } .icon-48-systeminfo { background-image: url(../images/header/icon-48-info.png); } .icon-48-massmail { background-image: url(../images/header/icon-48-massmail.png); } .icon-48-redirect { background-image: url(../images/header/icon-48-redirect.png); } .icon-48-search { background-image: url(../images/header/icon-48-search.png); } .icon-48-finder { background-image: url(../images/header/icon-48-search.png); } .icon-48-newsfeeds { background-image: url(../images/header/icon-48-newsfeeds.png); } .icon-48-newsfeeds-categories { background-image: url(../images/header/icon-48-newsfeeds-cat.png); } .icon-48-newsfeeds-category-edit { background-image: url(../images/header/icon-48-newsfeeds-cat.png); } .icon-48-newsfeeds-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-weblinks { background-image: url(../images/header/icon-48-links.png); } .icon-48-weblinks-categories { background-image: url(../images/header/icon-48-links-cat.png); } .icon-48-weblinks-category-edit { background-image: url(../images/header/icon-48-links-cat.png); } .icon-48-weblinks-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-tags { background-image: url(../images/header/icon-48-tags.png); } /** * General styles */ div.message { border: 1px solid @mainBorder; color: @textColor; } .helpFrame { border-left: 0 solid @mainBorder; border-right: none; border-top: none; border-bottom: none; } .outline { border: 1px solid @mainBorder; background: @bodyBackground; } /** * Modal Styles */ dl.menu_type dt { border-bottom: 1px solid @mainBorder; } ul#new-modules-list { border-top: 1px solid @mainBorder; } /** * User Accessibility */ /* Skip to Content Visual Styling */ #skiplinkholder a, #skiplinkholder a:link, #skiplinkholder a:visited { color: @bodyBackground; background: @linkColor; border-bottom: solid #336 2px; } /** * Admin Form Styles */ fieldset.panelform { border: none 0; } /** * ACL STYLES relocated from com_users/media/grid.css */ a.move_up { background-image: url('../images/admin/uparrow.png'); } span.move_up { background-image: url('../images/admin/uparrow0.png'); } a.move_down { background-image: url('../images/admin/downarrow.png'); } span.move_down { background-image: url('../images/admin/downarrow0.png'); } a.grid_false { background-image: url('../images/admin/publish_x.png'); } a.grid_true { background-image: url('../images/admin/tick.png'); } a.grid_trash { background-image: url('../images/admin/icon-16-trash.png'); } /** * ACL PANEL STYLES */ /* All Tabs */ tr.row1 { background-color: @altBackground; } /* Summary Tab */ table.aclsummary-table td.col2, table.aclsummary-table th.col2, table.aclsummary-table td.col3, table.aclsummary-table th.col3, table.aclsummary-table td.col4, table.aclsummary-table th.col4, table.aclsummary-table td.col5, table.aclsummary-table th.col5, table.aclsummary-table td.col6, table.aclsummary-table th.col6, table.aclmodify-table td.col2, table.aclmodify-table th.col2 { border-left: 1px solid @mainBorder; } /* Icons */ span.icon-16-unset { background: url(../images/admin/icon-16-denyinactive.png) no-repeat; } span.icon-16-allowed { background: url(../images/admin/icon-16-allow.png) no-repeat; } span.icon-16-denied { background: url(../images/admin/icon-16-deny.png) no-repeat; } span.icon-16-locked { background: url(../images/admin/checked_out.png) 0 0 no-repeat; } label.icon-16-allow { background: url(../images/admin/icon-16-allow.png) no-repeat; } label.icon-16-deny { background: url(../images/admin/icon-16-deny.png) no-repeat; } a.icon-16-allow { background: url(../images/admin/icon-16-allow.png) no-repeat; } a.icon-16-deny { background: url(../images/admin/icon-16-deny.png) no-repeat; } a.icon-16-allowinactive { background: url(../images/admin/icon-16-allowinactive.png) no-repeat; } a.icon-16-denyinactive { background: url(../images/admin/icon-16-denyinactive.png) no-repeat; } /* ACL footer/legend */ ul.acllegend li.acl-allowed { background: url(../images/admin/icon-16-allow.png) no-repeat left; } ul.acllegend li.acl-denied { background: url(../images/admin/icon-16-deny.png) no-repeat left; } li.acl-editgroups, li.acl-resetbtn { background-color: @altBackground; border: 1px solid @mainBorder; } li.acl-editgroups a, li.acl-resetbtn a { color: @linkColor; } li.acl-editgroups:hover, li.acl-resetbtn:hover, li.acl-editgroups:focus, li.acl-resetbtn:focus { background-color: @hoverBackground; } /* ACL Config --------- */ table#acl-config { border: 1px solid @mainBorder; } table#acl-config th, table#acl-config td { background: @altBackground; border-bottom: 1px solid @mainBorder; } table#acl-config th.acl-groups { border-right: 1px solid @mainBorder; } /** * Mod_rewrite Warning */ #jform_sef_rewrite-lbl { background: url(../images/admin/icon-16-notice-note.png) right top no-repeat; } /** * Permission Rules */ #permissions-sliders .tip { background: @bodyBackground; border: 1px solid @mainBorder; } #permissions-sliders ul#rules, #permissions-sliders ul#rules ul { border: solid 0 @mainBorder; background: @bodyBackground; } ul#rules li .pane-sliders .panel h3.title { border: solid 0 @mainBorder; } #permissions-sliders ul#rules .pane-slider { border: solid 1px @mainBorder; } #permissions-sliders ul#rules li h3 { border: solid 1px @mainBorder; } #permissions-sliders ul#rules li h3.pane-toggler-down a { border: solid 0; } #permissions-sliders ul#rules .group-kind { color: @textColor; } #permissions-sliders ul#rules table.group-rules { border: solid 1px @mainBorder; } #permissions-sliders ul#rules table.group-rules td { border-right: solid 1px @mainBorder; border-bottom: solid 1px @mainBorder; } #permissions-sliders ul#rules table.group-rules th { background: @hoverBackground; border-right: solid 1px @mainBorder; border-bottom: solid 1px @mainBorder; color: @textColor; } ul#rules table.aclmodify-table { border: solid 1px @mainBorder; } ul#rules table.group-rules td label { border: solid 0 @mainBorder; } #permissions-sliders ul#rules .mypanel { border: solid 0 @mainBorder; } #permissions-sliders ul#rules table.group-rules td { background: @bodyBackground; } #permissions-sliders span.level { color: @mainBorder; background-image: none; } /* * Debug styles */ .check-0, table.adminlist tbody td.check-0 { background-color: @permissionDefault; } .check-a, table.adminlist tbody td.check-a { background-color: @permissionAllowed; } .check-d, table.adminlist tbody td.check-d { background-color: @permissionDenied; } /** * System Messages */ #system-message dd ul { color: @textColor; } #system-message dd.error ul { color: @textColor; } #system-message dd.message ul { color: @textColor; } #system-message dd.notice ul { color: @textColor; } /** CSS file for Accessible Admin Menu * based on Matt Carrolls' son of suckerfish * with javascript by Bill Tomczak */ /* Note: set up the font-size on the id and used 100% on the elements. If ul/li/a are different ems, then the shifting back via non-js keyboard doesn't work properly */ /** * Menu Styling */ #menu { /* this is on the main ul */ color: @textColor; } #menu ul.dropdown-menu { /* all lists */ #gradient > .vertical(@gradientTop, @gradientBottom); color: @textColor; } #menu ul.dropdown-menu li.dropdown-submenu { background: url(../images/j_arrow.png) no-repeat right 50%; } #menu ul.dropdown-menu li.divider { margin-bottom: 0; border-bottom: 1px dotted @mainBorder; } #menu a { color: @toolbarColor; background-repeat: no-repeat; background-position: left 50%; } #menu li { /* all list items */ border-right: 1px solid @mainBorder; background-color: transparent; } #menu li a:hover, #menu li a:focus { background-color: @hoverBackground; } #menu li.disabled a:hover, #menu li.disabled a:focus, #menu li.disabled a { color: @mainBorder; #gradient > .vertical(@gradientTop, @gradientBottom); } #menu li ul { /* second-level lists */ border: 1px solid @mainBorder; } #menu li li { /* second-level row */ background-color: transparent; } /** * Styling parents */ /* 1 level - sfhover */ #menu li.sfhover a { background-color: @hoverBackground; } /* 2 level - normal */ #menu li.sfhover li a { background-color: transparent; } /* 2 level - hover */ #menu li.sfhover li.sfhover a, #menu li li a:focus { background-color: @hoverBackground; } /* 3 level - normal */ #menu li.sfhover li.sfhover li a { background-color: transparent; } /* 3 level - hover */ #menu li.sfhover li.sfhover li.sfhover a, #menu li li li a:focus { background-color: @hoverBackground; } /* bring back the focus elements into view */ #menu li li a:focus, #menu li li li a:focus { background-color: @hoverBackground; } #menu li li li a:focus { background-color: @hoverBackground; } /** * Submenu styling */ #submenu { border-bottom: 1px solid @mainBorder; /* border-bottom plus padding-bottom is the technique */ /* This is the background befind the tabs */ /*background: @bodyBackground;*/ } #submenu li, #submenu span.nolink { #gradient > .vertical(@gradientTop, @gradientBottom); border: 1px solid @mainBorder; color: @linkColor; } #submenu li:hover, #submenu li:focus { background: @hoverBackground; } #submenu li.active, #submenu span.nolink.active { background: @bodyBackground; border-bottom: 1px solid @bodyBackground; } #submenu li.active a, #submenu span.nolink.active { color: #000; } .element-invisible { margin: 0; padding: 0; } /* -- Codemirror Editor ----------- */ div.CodeMirror-wrapping { border: 1px solid @mainBorder; } /* User Notes */ table.adminform tr.row0 { background-color: @bodyBackground; } ul.alternating > li:nth-child(odd) { background-color: @bodyBackground; } ul.alternating > li:nth-child(even) { background-color: @altBackground; } ol.alternating > li:nth-child(odd) { background-color: @bodyBackground; } ol.alternating > li:nth-child(even) { background-color: @altBackground; } /* Installer Database */ #installer-database, #installer-discover, #installer-update, #installer-warnings { border-top: 1px solid @mainBorder; } #installer-database p.warning { background: transparent url(../images/admin/icon-16-deny.png) center left no-repeat; } #installer-database p.nowarning { background: transparent url(../images/admin/icon-16-allow.png) center left no-repeat; } /* Override default bootstrap font-size */ .input-append, .input-prepend { font-size: 1.2em; } PKb��\Ϙ�+templates/hathor/less/hathor_variables.lessnu�[���// hathor_variables.less // // Less file containing Bootstrap variables needed to compile its CSS // ----------------------------------------------------- // Grays // ------------------------- @black: #000000; @grayDarker: #222222; @grayDark: #333333; @gray: #555555; @grayLight: #999999; @grayLighter: #eeeeee; @white: #ffffff; // Accent colors // ------------------------- @blue: #049cdb; @blueDark: #0064cd; @green: #46a546; @red: #9d261d; @yellow: #ffc40d; @orange: #f89406; @pink: #c3325f; @purple: #7a43b6; // Scaffolding // ------------------------- @bodyBackground: @white; @textColor: #2c2c2c; // Links // ------------------------- @linkColor: #054993; @linkColorHover: darken(@linkColor, 15%); // Typography // ------------------------- @baseFontSize: 13px; @baseLineHeight: 15px; @headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily @headingsFontWeight: bold; // instead of browser default, bold @headingsColor: inherit; // empty to use BS default, @textColor // Component sizing // ------------------------- @baseBorderRadius: 4px; @borderRadiusLarge: 6px; @borderRadiusSmall: 3px; // Buttons // ------------------------- @btnBackground: @white; @btnBackgroundHighlight: darken(@white, 10%); @btnBorder: #bbb; @btnPrimaryBackground: @linkColor; @btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 20%); @btnInfoBackground: #5bc0de; @btnInfoBackgroundHighlight: #2f96b4; @btnSuccessBackground: #62c462; @btnSuccessBackgroundHighlight: #51a351; @btnWarningBackground: lighten(@orange, 15%); @btnWarningBackgroundHighlight: @orange; @btnDangerBackground: #ee5f5b; @btnDangerBackgroundHighlight: #bd362f; @btnInverseBackground: #444; @btnInverseBackgroundHighlight: @grayDarker; // Forms // ------------------------- @inputBackground: #e5f0fa; @inputBorder: #ccc; @inputBorderRadius: 3px; @inputDisabledBackground: @grayLighter; @formActionsBackground: #f5f5f5; @inputHeight: @baseLineHeight + 10px; // base line-height + 8px vertical padding + 2px top/bottom border // Z-index master list // ------------------------- // Used for a bird's eye view of components dependent on the z-axis // Try to avoid customizing these :) @zindexDropdown: 1000; @zindexPopover: 1010; @zindexTooltip: 1030; @zindexFixedNavbar: 1030; @zindexModalBackdrop: 1040; @zindexModal: 1050; // Form states and alerts // ------------------------- @warningText: #c09853; @warningBackground: #fcf8e3; @warningBorder: darken(spin(@warningBackground, -10), 3%); @errorText: #a20000; @errorBackground: #f2dede; @errorBorder: darken(spin(@errorBackground, -10), 3%); @successText: #005800; @successBackground: #dff0d8; @successBorder: darken(spin(@successBackground, -10), 5%); @infoText: #3a87ad; @infoBackground: #d9edf7; @infoBorder: darken(spin(@infoBackground, -10), 7%); // Tooltips and popovers // ------------------------- @tooltipColor: @white; @tooltipBackground: @black; @tooltipArrowWidth: 5px; @tooltipArrowColor: @tooltipBackground; @popoverBackground: @white; @popoverArrowWidth: 10px; @popoverArrowColor: @white; @popoverTitleBackground: darken(@popoverBackground, 3%); // Special enhancement for popovers @popoverArrowOuterWidth: @popoverArrowWidth + 1; @popoverArrowOuterColor: rgba(0,0,0,.25); // Variables unique to Hathor // ------------------------- @toolbarColor: @linkColor; @hoverBackground: #e5d9c3; @NWBorder: #868778; @SEBorder: #f6f7db; @fadedText: #cccccc; @disabledBackground: #eeeeee; @permissionDefault: #ffffcf; @permissionAllowed: #cfffda; @permissionDenied: #ffcfcf; PKb��\<��� templates/hathor/less/forms.lessnu�[���// // Forms // This is a custom version of Bootstrap's forms.less file suited for Hathor's needs // -------------------------------------------------- // Ensure input-prepend/append never wraps .input-append input[class*="span"], .input-append .uneditable-input[class*="span"], .input-prepend input[class*="span"], .input-prepend .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"], .row-fluid .input-prepend [class*="span"], .row-fluid .input-append [class*="span"] { display: inline-block; } // Allow us to put symbols and text within the input field for a cleaner look .input-append, .input-prepend { margin-bottom: 5px; font-size: 0; white-space: nowrap; // Prevent span and input from separating input, select, .uneditable-input { position: relative; // placed here by default so that on :focus we can place the input above the .add-on for full border and box-shadow goodness margin-bottom: 0; // prevent bottom margin from screwing up alignment in stacked forms *margin-left: 0; font-size: @baseFontSize; vertical-align: top; .border-radius(0 @inputBorderRadius @inputBorderRadius 0); // Make input on top when focused so blue border and shadow always show &:focus { z-index: 2; } } .add-on { display: inline-block; width: auto; height: @baseLineHeight; min-width: 16px; padding: 4px 5px; font-size: @baseFontSize; font-weight: normal; line-height: @baseLineHeight; text-align: center; text-shadow: 0 1px 0 @white; background-color: @grayLighter; border: 1px solid #ccc; } .add-on, .btn { margin-left: -1px; vertical-align: top; .border-radius(0); } .active { background-color: lighten(@green, 30); border-color: @green; } } .input-prepend { .add-on, .btn { margin-right: -1px; } .add-on:first-child, .btn:first-child { .border-radius(@inputBorderRadius 0 0 @inputBorderRadius); } } .input-append { input, select, .uneditable-input { .border-radius(@inputBorderRadius 0 0 @inputBorderRadius); } .add-on:last-child, .btn:last-child { .border-radius(0 @inputBorderRadius @inputBorderRadius 0); } } // Remove all border-radius for inputs with both prepend and append .input-prepend.input-append { input, select, .uneditable-input { .border-radius(0); } .add-on:first-child, .btn:first-child { margin-right: -1px; .border-radius(@inputBorderRadius 0 0 @inputBorderRadius); } .add-on:last-child, .btn:last-child { margin-left: -1px; .border-radius(0 @inputBorderRadius @inputBorderRadius 0); } } /* Allow for input prepend/append in search forms */ .form-search .input-append .search-query, .form-search .input-prepend .search-query { .border-radius(0); // Override due to specificity } .form-search .input-append .search-query { .border-radius(14px 0 0 14px) } .form-search .input-append .btn { .border-radius(0 14px 14px 0) } .form-search .input-prepend .search-query { .border-radius(0 14px 14px 0) } .form-search .input-prepend .btn { .border-radius(14px 0 0 14px) } .form-search, .form-inline, .form-horizontal { input, textarea, select, .help-inline, .uneditable-input, .input-prepend, .input-append { display: inline-block; .ie7-inline-block(); margin-bottom: 0; vertical-align: middle; } // Re-hide hidden elements due to specifity .hide { display: none; } } // Remove margin for input-prepend/-append .form-search .input-append, .form-inline .input-append, .form-search .input-prepend, .form-inline .input-prepend { margin-bottom: 0; } /* Accessible Hidden Elements (good for hidden labels and such) */ .element-invisible{ position: absolute; padding: 0 !important; margin: 0 !important; border: 0; height: 1px; width: 1px !important; overflow: hidden; } // Login form only // Shared size and type resets #form-login select, #form-login input[type="text"], #form-login input[type="password"] { display: inline-block; padding: 4px 6px; margin-bottom: 9px; font-size: @baseFontSize; line-height: @baseLineHeight; color: @gray; .border-radius(@inputBorderRadius); width: 175px; } PKb��\�h�'templates/hathor/less/colour_brown.lessnu�[���// colour_brown.less // // Less to compile Hathor in the brown colour scheme // ----------------------------------------------------- /** * #2c2c2c Text * #054993 Links * #ffffff Background, border, text * #d5c1b2 Background alternate, button/icon/menu background * #d5c1b2-d5c1b2 Gradient Background * #e5f0fa Background (input required) * #e1d3c8 Background Hover, Top/Left icon borders * #000000 Main borders * #000000 Top/Left hover borders * #000000 Right/Bottom hover borders * * Special Use Colors: * #a20000 Text Error, border invalid * #cccccc Text (faded) * #005800 Text (success) * #eeeeee Background (input disabled) * #ffffcf Background permissions debug * #cfffda Background permissions debug * #ffcfcf Background permissions debug */ // Import the variables file first to get common variables loaded @import "hathor_variables.less"; // Define variables unique to this colour scheme, as well as override variables already defined in the common file @altBackground: #d5c1b2; @gradientTop: #d5c1b2; @gradientBottom: #d5c1b2; @mainBorder: #000000; @toolbarColor: #000000; @hoverBackground: #e1d3c8; @NWBorder: #000000; @SEBorder: #000000; // Import the baseline to compile the CSS @import "colour_baseline.less"; PKb��\�����templates/hathor/error.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $app = JFactory::getApplication(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" > <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title><?php echo $this->title; ?> <?php echo htmlspecialchars($this->error->getMessage(), ENT_QUOTES, 'UTF-8'); ?></title> <link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/error.css" type="text/css" /> <?php if ($app->get('debug_lang', '0') == '1' || $app->get('debug', '0') == '1') : ?> <!-- Load additional CSS styles for debug mode--> <link rel="stylesheet" href="<?php echo JUri::root(); ?>/media/cms/css/debug.css" type="text/css" /> <?php endif; ?> <!-- Load additional CSS styles for rtl sites --> <?php if ($this->direction == 'rtl') : ?> <link href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/template_rtl.css" rel="stylesheet" type="text/css" /> <?php endif; ?> </head> <body class="errors"> <div> <h1> <?php echo $this->error->getCode(); ?> - <?php echo JText::_('JERROR_AN_ERROR_HAS_OCCURRED'); ?> </h1> </div> <div> <p><?php echo htmlspecialchars($this->error->getMessage(), ENT_QUOTES, 'UTF-8'); ?></p> <p><a href="index.php"><?php echo JText::_('JGLOBAL_TPL_CPANEL_LINK_TEXT'); ?></a></p> <?php if ($this->debug) : ?> <?php echo $this->renderBacktrace(); ?> <?php endif; ?> </div> <div class="clr"></div> <noscript> <?php echo JText::_('JGLOBAL_WARNJAVASCRIPT'); ?> </noscript> </body> </html> PKb��\�P�E�Etemplates/hathor/LICENSE.txtnu�[���GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the program's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. <signature of Ty Coon>, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. PKb��\I�JQll/templates/hathor/html/com_tags/tags/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.multiselect'); $app = JFactory::getApplication(); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $saveOrder = $listOrder == 'a.ordering'; $n = count($this->items); ?> <form action="<?php echo JRoute::_('index.php?option=com_tags&view=tags');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_TAGS_FILTER_SEARCH_DESC'); ?>" /> <button type="submit" class="btn"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_published"><?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?></label> <select name="filter_published" id="filter_published"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true); ?> </select> <label class="selectlabel" for="filter_access"><?php echo JText::_('JOPTION_SELECT_ACCESS'); ?></label> <select name="filter_access" id="filter_access"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access')); ?> </select> <label class="selectlabel" for="filter_author_id"><?php echo JText::_('JOPTION_SELECT_AUTHOR'); ?></label> <select name="filter_author_id" id="filter_author_id"> <option value=""><?php echo JText::_('JOPTION_SELECT_AUTHOR'); ?></option> <?php echo JHtml::_('select.options', $this->authors, 'value', 'text', $this->state->get('filter.author_id')); ?> </select> <label class="selectlabel" for="filter_language"><?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?></label> <select name="filter_language" id="filter_language"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language')); ?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.published', $listDirn, $listOrder); ?> </th> <th class="title access-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'access', $listDirn, $listOrder); ?> <th class="language-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'language', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $item->max_ordering = 0; //?? $canCreate = $user->authorise('core.create', 'com_tags'); $canEdit = $user->authorise('core.edit', 'com_tags.tag.' . $item->id); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out_user_id == $userId || $item->checked_out_user_id == 0; $canChange = $user->authorise('core.edit.state', 'com_tags.tag.' . $item->id) && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>"> <th class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </th> <td> <?php if ($item->level > 0): ?> <?php echo str_repeat('<span class="gi">—</span>', $item->level - 1) ?> <?php endif; ?> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'tags.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit || $canEditOwn) : ?> <a href="<?php echo JRoute::_('index.php?option=com_tags&task=tag.edit&id='.$item->id); ?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> <p class="smallsub"> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias)); ?></p> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->published, $i, 'tags.', $canChange, 'cb'); ?> </td> <td class="center"> <?php echo $this->escape($item->access_title); ?> </td> <td class="center"> <?php if ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php //Load the batch processing form if user is allowed ?> <?php if ($user->authorise('core.create', 'com_tags') && $user->authorise('core.edit', 'com_tags') && $user->authorise('core.edit.state', 'com_tags')) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_TAGS_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif;?> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\cD����3templates/hathor/html/com_tags/tag/edit_options.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="tip">'.$this->escape(JText::_($fieldSet->description)).'</p>'; endif; ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_($fieldSet->label); ?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('created_user_id'); ?> <?php echo $this->form->getInput('created_user_id'); ?></li> <li><?php echo $this->form->getLabel('created_by_alias'); ?> <?php echo $this->form->getInput('created_by_alias'); ?></li> <li><?php echo $this->form->getLabel('created_time'); ?> <?php echo $this->form->getInput('created_time'); ?></li> <li><?php echo $this->form->getLabel('publish_up'); ?> <?php echo $this->form->getInput('publish_up'); ?></li> <li><?php echo $this->form->getLabel('publish_down'); ?> <?php echo $this->form->getInput('publish_down'); ?></li> <li><?php echo $this->form->getLabel('modified_user_id'); ?> <?php echo $this->form->getInput('modified_user_id'); ?></li> <li><?php echo $this->form->getLabel('modified_time'); ?> <?php echo $this->form->getInput('modified_time'); ?></li> <li><?php echo $this->form->getLabel('version'); ?> <?php echo $this->form->getInput('version'); ?></li> </ul> </fieldset> <?php $fieldSets = $this->form->getFieldsets('params'); foreach ($fieldSets as $name => $fieldSet) : echo JHtml::_('sliders.panel', JText::_($fieldSet->label), $name.'-params'); if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="tip">'.$this->escape(JText::_($fieldSet->description)).'</p>'; endif; ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_($fieldSet->label); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <li><?php echo $field->label; ?> <?php echo $field->input; ?></li> <?php endforeach; ?> </ul> </fieldset> <?php endforeach; ?> PKb��\T�NN+templates/hathor/html/com_tags/tag/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); $saveHistory = $this->state->get('params')->get('save_history', 0); JHtml::_('behavior.formvalidator'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'tag.cancel' || document.formvalidator.isValid(document.getElementById('tag-form'))) { " . $this->form->getField('description')->save() . " Joomla.submitform(task, document.getElementById('tag-form')); } } "); ?> <div class="weblink-edit"> <form action="<?php echo JRoute::_('index.php?option=com_tags&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="tag-form" class="form-validate"> <div class="col main-section"> <fieldset class="adminform"> <legend><?php echo empty($this->item->id) ? JText::_('JTOOLBAR_NEW') : JText::sprintf('JTOOLBAR_EDIT', $this->item->id); ?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('title'); ?> <?php echo $this->form->getInput('title'); ?></li> <li><?php echo $this->form->getLabel('alias'); ?> <?php echo $this->form->getInput('alias'); ?></li> <li><?php echo $this->form->getLabel('parent_id'); ?> <?php echo $this->form->getInput('parent_id'); ?></li> <li><?php echo $this->form->getLabel('published'); ?> <?php echo $this->form->getInput('published'); ?></li> <li><?php echo $this->form->getLabel('access'); ?> <?php echo $this->form->getInput('access'); ?></li> <li><?php echo $this->form->getLabel('language'); ?> <?php echo $this->form->getInput('language'); ?></li> <?php if ($saveHistory) : ?> <li><?php echo $this->form->getLabel('version_note'); ?> <?php echo $this->form->getInput('version_note'); ?></li> <?php endif; ?> <li><?php echo $this->form->getLabel('id'); ?> <?php echo $this->form->getInput('id'); ?></li> </ul> <div> <?php echo $this->form->getLabel('description'); ?> <div class="clr"></div> <?php echo $this->form->getInput('description'); ?> </div> </fieldset> </div> <div class="col options-section"> <?php echo JHtml::_('sliders.start', 'weblink-sliders-'.$this->item->id, array('useCookie' => 1)); ?> <?php echo JHtml::_('sliders.panel', JText::_('JGLOBAL_FIELDSET_PUBLISHING'), 'publishing-details'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('JGLOBAL_FIELDSET_PUBLISHING'); ?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('created_by'); ?> <?php echo $this->form->getInput('created_by'); ?></li> <li><?php echo $this->form->getLabel('created_by_alias'); ?> <?php echo $this->form->getInput('created_by_alias'); ?></li> <li><?php echo $this->form->getLabel('created'); ?> <?php echo $this->form->getInput('created'); ?></li> <li><?php echo $this->form->getLabel('publish_up'); ?> <?php echo $this->form->getInput('publish_up'); ?></li> <li><?php echo $this->form->getLabel('publish_down'); ?> <?php echo $this->form->getInput('publish_down'); ?></li> <?php if ($this->item->modified_user_id) : ?> <li><?php echo $this->form->getLabel('modified_user_id'); ?> <?php echo $this->form->getInput('modified_user_id'); ?></li> <li><?php echo $this->form->getLabel('modified'); ?> <?php echo $this->form->getInput('modified'); ?></li> <?php endif; ?> <?php if ($this->item->hits) : ?> <li><?php echo $this->form->getLabel('hits'); ?> <?php echo $this->form->getInput('hits'); ?></li> <?php endif; ?> </ul> </fieldset> <?php echo $this->loadTemplate('options'); ?> <?php echo $this->loadTemplate('metadata'); ?> <?php echo JHtml::_('sliders.end'); ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> <div class="clr"></div> </form> </div> PKb��\ܹ�S��4templates/hathor/html/com_tags/tag/edit_metadata.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $fieldSets = $this->form->getFieldsets('metadata'); foreach ($fieldSets as $name => $fieldSet) : echo JHtml::_('sliders.panel', JText::_($fieldSet->label), $name.'-options'); if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="tip">'.$this->escape(JText::_($fieldSet->description)).'</p>'; endif; ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_($fieldSet->label); ?></legend> <ul class="adminformlist"> <?php if ($name == 'jmetadata') : // Include the real fields in this panel. ?> <li><?php echo $this->form->getLabel('metadesc'); ?> <?php echo $this->form->getInput('metadesc'); ?></li> <li><?php echo $this->form->getLabel('metakey'); ?> <?php echo $this->form->getInput('metakey'); ?></li> <li><?php echo $this->form->getLabel('xreference'); ?> <?php echo $this->form->getInput('xreference'); ?></li> <?php endif; ?> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <li><?php echo $field->label; ?> <?php echo $field->input; ?></li> <?php endforeach; ?> </ul> </fieldset> <?php endforeach; ?> PKb��\)�M���1templates/hathor/html/com_cache/cache/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_cache'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-select fltrt"> <label class="selectlabel" for="filter_client_id"> <?php echo JText::_('COM_CACHE_SELECT_CLIENT'); ?> </label> <select name="filter_client_id" id="filter_client_id"> <?php echo JHtml::_('select.options', CacheHelper::getClientOptions(), 'value', 'text', $this->state->get('clientId'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title nowrap"> <?php echo JHtml::_('grid.sort', 'COM_CACHE_GROUP', 'group', $listDirn, $listOrder); ?> </th> <th class="width-5 center nowrap"> <?php echo JHtml::_('grid.sort', 'COM_CACHE_NUMBER_OF_FILES', 'count', $listDirn, $listOrder); ?> </th> <th class="width-10 center"> <?php echo JHtml::_('grid.sort', 'COM_CACHE_SIZE', 'size', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php $i = 0; foreach ($this->data as $folder => $item) : ?> <tr class="row<?php echo $i % 2; ?>"> <td> <input type="checkbox" id="cb<?php echo $i;?>" name="cid[]" value="<?php echo $item->group; ?>" onclick="Joomla.isChecked(this.checked);" /> </td> <td> <span class="bold"> <?php echo $item->group; ?> </span> </td> <td class="center"> <?php echo $item->count; ?> </td> <td class="center"> <?php echo JHtml::_('number.bytes', $item->size*1024); ?> </td> </tr> <?php $i++; endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="client" value="<?php echo $this->client->id;?>" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�\f�aa1templates/hathor/html/com_cache/purge/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_cache * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <form action="<?php echo JRoute::_('index.php?option=com_cache'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <table class="adminlist"> <thead> <tr> <th> <?php echo JText::_('COM_CACHE_PURGE_EXPIRED_ITEMS'); ?> </th> </tr> </thead> <tbody> <tr> <td> <p class="mod-purge-instruct"><?php echo JText::_('COM_CACHE_PURGE_INSTRUCTIONS'); ?></p> <p class="warning"><?php echo JText::_('COM_CACHE_RESOURCE_INTENSIVE_WARNING'); ?></p> </td> </tr> </tbody> </table> <div> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> </div> </form> PKb��\ˌ���&�&6templates/hathor/html/com_content/featured/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ /* add accessibility, labels on input forms */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.multiselect'); $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canOrder = $user->authorise('core.edit.state', 'com_content.article'); $saveOrder = $listOrder == 'fp.ordering'; $n = count($this->items); ?> <form action="<?php echo JRoute::_('index.php?option=com_content&view=featured'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_CONTENT_FILTER_SEARCH_DESC'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_published"><?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?></label> <select name="filter_published" id="filter_published"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true); ?> </select> <label class="selectlabel" for="filter_category_id"><?php echo JText::_('JOPTION_SELECT_CATEGORY'); ?></label> <select name="filter_category_id" id="filter_category_id"> <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_content'), 'value', 'text', $this->state->get('filter.category_id')); ?> </select> <label class="selectlabel" for="filter_level"><?php echo JText::_('JOPTION_SELECT_MAX_LEVELS'); ?></label> <select name="filter_level" id="filter_level"> <option value=""><?php echo JText::_('JOPTION_SELECT_MAX_LEVELS'); ?></option> <?php echo JHtml::_('select.options', $this->f_levels, 'value', 'text', $this->state->get('filter.level')); ?> </select> <label class="selectlabel" for="filter_access"><?php echo JText::_('JOPTION_SELECT_ACCESS'); ?></label> <select name="filter_access" id="filter_access"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS');?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access')); ?> </select> <label class="selectlabel" for="filter_language"><?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?></label> <select name="filter_language" id="filter_language"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language')); ?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?> </th> <th class="title category-col"> <?php echo JHtml::_('grid.sort', 'JCATEGORY', 'a.catid', $listDirn, $listOrder); ?> </th> <th class="nowrap ordering-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ORDERING', 'fp.ordering', $listDirn, $listOrder); ?> <?php if ($canOrder && $saveOrder) :?> <?php echo JHtml::_('grid.order', $this->items, 'filesave.png', 'featured.saveorder'); ?> <?php endif; ?> </th> <th class="title access-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?> </th> <th class="title created-by-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_CREATED_BY', 'a.created_by', $listDirn, $listOrder); ?> </th> <th class="title date-col"> <?php echo JHtml::_('grid.sort', 'JDATE', 'a.created', $listDirn, $listOrder); ?> </th> <th class="hits-col"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_HITS', 'a.hits', $listDirn, $listOrder); ?> </th> <th class="language-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'language', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $item->max_ordering = 0; //?? $ordering = ($listOrder == 'fp.ordering'); $assetId = 'com_content.article.' . $item->id; $canCreate = $user->authorise('core.create', 'com_content.category.' . $item->catid); $canEdit = $user->authorise('core.edit', 'com_content.article.' . $item->id); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id')|| $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_content.article.' . $item->id) && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>"> <th class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </th> <td> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'featured.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_content&task=article.edit&return=featured&id='.$item->id);?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> <p class="smallsub"> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias)); ?></p> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->state, $i, 'articles.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?> </td> <td class="center"> <?php echo $this->escape($item->category_title); ?> </td> <td class="order"> <?php if ($canChange) : ?> <?php if ($saveOrder) : ?> <?php if ($listDirn == 'asc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, true, 'featured.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, true, 'featured.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php elseif ($listDirn == 'desc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, true, 'featured.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, true, 'featured.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php endif; ?> <?php endif; ?> <?php $disabled = $saveOrder ? '' : 'disabled="disabled"'; ?> <input type="text" name="order[]" value="<?php echo $item->ordering; ?>" <?php echo $disabled; ?> class="text-area-order" title="<?php echo $item->title; ?> order" /> <?php else : ?> <?php echo $item->ordering; ?> <?php endif; ?> </td> <td class="center"> <?php echo $this->escape($item->access_level); ?> </td> <td class="center"> <?php if ($item->created_by_alias) : ?> <?php echo $this->escape($item->author_name); ?> <p class="smallsub"> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->created_by_alias)); ?></p> <?php else : ?> <?php echo $this->escape($item->author_name); ?> <?php endif; ?> </td> <td class="center nowrap"> <?php echo JHtml::_('date', $item->created, JText::_('DATE_FORMAT_LC4')); ?> </td> <td class="center"> <?php echo (int) $item->hits; ?> </td> <td class="center"> <?php if ($item->language == '*') : ?> <?php echo JText::alt('JALL', 'language'); ?> <?php else : ?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�ێ�4templates/hathor/html/com_content/articles/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $app = JFactory::getApplication(); if ($app->isSite()) { JSession::checkToken('get') or die(JText::_('JINVALID_TOKEN')); } require_once JPATH_ROOT . '/components/com_content/helpers/route.php'; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); $function = $app->input->getCmd('function', 'jSelectArticle'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_content&view=articles&layout=modal&tmpl=component&function='.$function.'&'.JSession::getFormToken().'=1');?>" method="post" name="adminForm" id="adminForm"> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"> <?php echo JText::_('JSEARCH_FILTER_LABEL'); ?> </label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_CONTENT_FILTER_SEARCH_DESC'); ?>" /> <button type="submit"> <?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"> <?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_access"><?php echo JText::_('JOPTION_SELECT_ACCESS'); ?></label> <select name="filter_access" id="filter_access"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS');?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access'));?> </select> <label class="selectlabel" for="filter_published"><?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?></label> <select name="filter_published" id="filter_published"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true);?> </select> <label class="selectlabel" for="filter_category_id"><?php echo JText::_('JOPTION_SELECT_CATEGORY'); ?></label> <select name="filter_category_id" id="filter_category_id"> <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option> <?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_content'), 'value', 'text', $this->state->get('filter.category_id'));?> </select> <?php if ($this->state->get('filter.forcedLanguage')) : ?> <input type="hidden" name="forcedLanguage" value="<?php echo $this->escape($this->state->get('filter.forcedLanguage')); ?>" /> <input type="hidden" name="filter_language" value="<?php echo $this->escape($this->state->get('filter.language')); ?>" /> <?php else : ?> <label class="selectlabel" for="filter_language"><?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?></label> <select name="filter_language" id="filter_language"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE');?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language'));?> </select> <?php endif; ?> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <table class="adminlist modal"> <thead> <tr> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="title access-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'access_level', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JCATEGORY', 'a.catid', $listDirn, $listOrder); ?> </th> <th class="title language-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'language', $listDirn, $listOrder); ?> </th> <th class="title date-col"> <?php echo JHtml::_('grid.sort', 'JDATE', 'a.created', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : ?> <tr class="row<?php echo $i % 2; ?>"> <th> <a class="pointer" onclick="if (window.parent) window.parent.<?php echo $this->escape($function);?>('<?php echo $item->id; ?>', '<?php echo $this->escape(addslashes($item->title)); ?>', '<?php echo $this->escape($item->catid); ?>', null, '<?php echo $this->escape(ContentHelperRoute::getArticleRoute($item->id, $item->catid, $item->language)); ?>');"> <?php echo $this->escape($item->title); ?></a> </th> <td class="center"> <?php echo $this->escape($item->access_level); ?> </td> <td class="center"> <?php echo $this->escape($item->category_title); ?> </td> <td class="center"> <?php if ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="center nowrap"> <?php echo JHtml::_('date', $item->created, JText::_('DATE_FORMAT_LC4')); ?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\�m��/�/6templates/hathor/html/com_content/articles/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.multiselect'); $app = JFactory::getApplication(); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $saveOrder = $listOrder == 'a.ordering'; $assoc = JLanguageAssociations::isEnabled(); $n = count($this->items); ?> <form action="<?php echo JRoute::_('index.php?option=com_content&view=articles'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_CONTENT_FILTER_SEARCH_DESC'); ?>" /> <button type="submit" class="btn"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_published"><?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?></label> <select name="filter_published" id="filter_published"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true); ?> </select> <label class="selectlabel" for="filter_category_id"><?php echo JText::_('JOPTION_SELECT_CATEGORY'); ?></label> <select name="filter_category_id" id="filter_category_id"> <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_content', array('filter.published' => array(-2, 0, 1, 2))), 'value', 'text', $this->state->get('filter.category_id')); ?> </select> <label class="selectlabel" for="filter_level"><?php echo JText::_('JOPTION_SELECT_MAX_LEVELS'); ?></label> <select name="filter_level" id="filter_level"> <option value=""><?php echo JText::_('JOPTION_SELECT_MAX_LEVELS'); ?></option> <?php echo JHtml::_('select.options', $this->f_levels, 'value', 'text', $this->state->get('filter.level')); ?> </select> <label class="selectlabel" for="filter_access"><?php echo JText::_('JOPTION_SELECT_ACCESS'); ?></label> <select name="filter_access" id="filter_access"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access')); ?> </select> <label class="selectlabel" for="filter_author_id"><?php echo JText::_('JOPTION_SELECT_AUTHOR'); ?></label> <select name="filter_author_id" id="filter_author_id"> <option value=""><?php echo JText::_('JOPTION_SELECT_AUTHOR'); ?></option> <?php echo JHtml::_('select.options', $this->authors, 'value', 'text', $this->state->get('filter.author_id')); ?> </select> <label class="selectlabel" for="filter_language"><?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?></label> <select name="filter_language" id="filter_language"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language')); ?> </select> <label class="selectlabel" for="filter_tag"><?php echo JText::_('JOPTION_SELECT_TAG'); ?></label> <select name="filter_tag" id="filter_tag"> <option value=""><?php echo JText::_('JOPTION_SELECT_TAG'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('tag.options', true, true), 'value', 'text', $this->state->get('filter.tag')); ?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?> </th> <th class="nowrap featured-col"> <?php echo JHtml::_('grid.sort', 'JFEATURED', 'a.featured', $listDirn, $listOrder, null, 'desc'); ?> </th> <th class="title category-col"> <?php echo JHtml::_('grid.sort', 'JCATEGORY', 'category_title', $listDirn, $listOrder); ?> </th> <th class="nowrap ordering-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ORDERING', 'a.ordering', $listDirn, $listOrder); ?> <?php if ($saveOrder) : ?> <?php echo JHtml::_('grid.order', $this->items, 'filesave.png', 'articles.saveorder'); ?> <?php endif; ?> </th> <th class="title access-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'access_level', $listDirn, $listOrder); ?> </th> <?php if ($assoc) : ?> <th width="5%"> <?php echo JHtml::_('grid.sort', 'COM_CONTENT_HEADING_ASSOCIATION', 'association', $listDirn, $listOrder); ?> </th> <?php endif;?> <th class="title created-by-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_CREATED_BY', 'a.created_by', $listDirn, $listOrder); ?> </th> <th class="title date-col"> <?php echo JHtml::_('grid.sort', 'JDATE', 'a.created', $listDirn, $listOrder); ?> </th> <th class="hits-col"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_HITS', 'a.hits', $listDirn, $listOrder); ?> </th> <th class="language-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'language', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $item->max_ordering = 0; //?? $ordering = ($listOrder == 'a.ordering'); $canCreate = $user->authorise('core.create', 'com_content.category.' . $item->catid); $canEdit = $user->authorise('core.edit', 'com_content.article.' . $item->id); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; $canEditOwn = $user->authorise('core.edit.own', 'com_content.article.' . $item->id) && $item->created_by == $userId; $canChange = $user->authorise('core.edit.state', 'com_content.article.' . $item->id) && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>"> <th class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </th> <td class="break-word"> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'articles.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit || $canEditOwn) : ?> <a href="<?php echo JRoute::_('index.php?option=com_content&task=article.edit&id='.$item->id); ?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> <p class="smallsub"> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias)); ?></p> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->state, $i, 'articles.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?> </td> <td class="center"> <?php echo JHtml::_('contentadministrator.featured', $item->featured, $i, $canChange); ?> </td> <td class="center"> <?php echo $this->escape($item->category_title); ?> </td> <td class="order"> <?php if ($canChange) : ?> <?php if ($saveOrder) : ?> <?php if ($listDirn == 'asc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, ($item->catid == @$this->items[$i - 1]->catid), 'articles.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, ($item->catid == @$this->items[$i + 1]->catid), 'articles.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php elseif ($listDirn == 'desc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, ($item->catid == @$this->items[$i - 1]->catid), 'articles.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, ($item->catid == @$this->items[$i + 1]->catid), 'articles.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php endif; ?> <?php endif; ?> <?php $disabled = $saveOrder ? '' : 'disabled="disabled"'; ?> <input type="text" name="order[]" value="<?php echo $item->ordering; ?>" <?php echo $disabled; ?> class="text-area-order" title="<?php echo $item->title; ?> order" /> <?php else : ?> <?php echo $item->ordering; ?> <?php endif; ?> </td> <td class="center"> <?php echo $this->escape($item->access_level); ?> </td> <?php if ($assoc) : ?> <td class="center"> <?php if ($item->association):?> <?php echo JHtml::_('contentadministrator.association', $item->id); ?> <?php endif;?> </td> <?php endif;?> <td class="center"> <?php if ($item->created_by_alias) : ?> <?php echo $this->escape($item->author_name); ?> <p class="smallsub"> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->created_by_alias)); ?></p> <?php else : ?> <?php echo $this->escape($item->author_name); ?> <?php endif; ?> </td> <td class="center nowrap"> <?php echo JHtml::_('date', $item->created, JText::_('DATE_FORMAT_LC4')); ?> </td> <td class="center"> <?php echo (int) $item->hits; ?> </td> <td class="center"> <?php if ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php //Load the batch processing form. ?> <?php if ($user->authorise('core.create', 'com_content') && $user->authorise('core.edit', 'com_content') && $user->authorise('core.edit.state', 'com_content')) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_CONTENT_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif; ?> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\UM�i*i*2templates/hathor/html/com_content/article/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); // Create shortcut to parameters. $params = $this->state->get('params'); $params = $params->toArray(); $saveHistory = $this->state->get('params')->get('save_history', 0); // This checks if the config options have ever been saved. If they haven't they will fall back to the original settings. $editoroptions = isset($params['show_publishing_options']); $input = JFactory::getApplication()->input; if (!$editoroptions): $params['show_publishing_options'] = '1'; $params['show_article_options'] = '1'; $params['show_urls_images_backend'] = '0'; $params['show_urls_images_frontend'] = '0'; endif; // Check if the article uses configuration settings besides global. If so, use them. if (!empty($this->item->attribs['show_publishing_options'])): $params['show_publishing_options'] = $this->item->attribs['show_publishing_options']; endif; if (!empty($this->item->attribs['show_article_options'])): $params['show_article_options'] = $this->item->attribs['show_article_options']; endif; if (!empty($this->item->attribs['show_urls_images_backend'])): $params['show_urls_images_backend'] = $this->item->attribs['show_urls_images_backend']; endif; $assoc = JLanguageAssociations::isEnabled(); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'article.cancel' || document.formvalidator.isValid(document.getElementById('item-form'))) { " . $this->form->getField('articletext')->save() . " Joomla.submitform(task, document.getElementById('item-form')); } } "); ?> <div class="article-edit"> <form action="<?php echo JRoute::_('index.php?option=com_content&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="item-form" class="form-validate"> <div class="col main-section"> <fieldset class="adminform"> <legend><?php echo empty($this->item->id) ? JText::_('COM_CONTENT_NEW_ARTICLE') : JText::sprintf('COM_CONTENT_EDIT_ARTICLE', $this->item->id); ?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('title'); ?> <?php echo $this->form->getInput('title'); ?></li> <li><?php echo $this->form->getLabel('alias'); ?> <?php echo $this->form->getInput('alias'); ?></li> <li><?php echo $this->form->getLabel('catid'); ?> <?php echo $this->form->getInput('catid'); ?></li> <li><?php echo $this->form->getLabel('state'); ?> <?php echo $this->form->getInput('state'); ?></li> <li><?php echo $this->form->getLabel('access'); ?> <?php echo $this->form->getInput('access'); ?></li> <?php if ($this->canDo->get('core.admin')) : ?> <li><span class="faux-label"><?php echo JText::_('JGLOBAL_ACTION_PERMISSIONS_LABEL'); ?></span> <button type="button" onclick="document.location.href='#access-rules';"> <?php echo JText::_('JGLOBAL_PERMISSIONS_ANCHOR'); ?> </button> </li> <?php endif; ?> <li><?php echo $this->form->getLabel('featured'); ?> <?php echo $this->form->getInput('featured'); ?></li> <li><?php echo $this->form->getLabel('language'); ?> <?php echo $this->form->getInput('language'); ?></li> <!-- Tag field --> <li><?php echo $this->form->getLabel('tags'); ?> <div class="is-tagbox"> <?php echo $this->form->getInput('tags'); ?> </div> </li> <?php if ($saveHistory) : ?> <li><?php echo $this->form->getLabel('version_note'); ?> <?php echo $this->form->getInput('version_note'); ?></li> <?php endif; ?> <li><?php echo $this->form->getLabel('id'); ?> <?php echo $this->form->getInput('id'); ?></li> </ul> <div class="clr"></div> <?php echo $this->form->getLabel('articletext'); ?> <div class="clr"></div> <?php echo $this->form->getInput('articletext'); ?> <div class="clr"></div> </fieldset> </div> <div class="col options-section"> <?php echo JHtml::_('sliders.start', 'content-sliders-' . $this->item->id, array('useCookie' => 1)); ?> <?php // Do not show the publishing options if the edit form is configured not to. ?> <?php if ($params['show_publishing_options'] || ( $params['show_publishing_options'] = '' && !empty($editoroptions)) ) : ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_CONTENT_FIELDSET_PUBLISHING'), 'publishing-details'); ?> <fieldset class="panelform"> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('created_by'); ?> <?php echo $this->form->getInput('created_by'); ?></li> <li><?php echo $this->form->getLabel('created_by_alias'); ?> <?php echo $this->form->getInput('created_by_alias'); ?></li> <li><?php echo $this->form->getLabel('created'); ?> <?php echo $this->form->getInput('created'); ?></li> <li><?php echo $this->form->getLabel('publish_up'); ?> <?php echo $this->form->getInput('publish_up'); ?></li> <li><?php echo $this->form->getLabel('publish_down'); ?> <?php echo $this->form->getInput('publish_down'); ?></li> <?php if ($this->item->modified_by) : ?> <li><?php echo $this->form->getLabel('modified_by'); ?> <?php echo $this->form->getInput('modified_by'); ?></li> <li><?php echo $this->form->getLabel('modified'); ?> <?php echo $this->form->getInput('modified'); ?></li> <?php endif; ?> <?php if ($this->item->version) : ?> <li><?php echo $this->form->getLabel('version'); ?> <?php echo $this->form->getInput('version'); ?></li> <?php endif; ?> <?php if ($this->item->hits) : ?> <li><?php echo $this->form->getLabel('hits'); ?> <?php echo $this->form->getInput('hits'); ?></li> <?php endif; ?> </ul> </fieldset> <?php endif; ?> <?php $fieldSets = $this->form->getFieldsets('attribs'); ?> <?php foreach ($fieldSets as $name => $fieldSet) : ?> <?php // If the parameter says to show the article options or if the parameters have never been set, we will // show the article options. if ($params['show_article_options'] || (( $params['show_article_options'] == '' && !empty($editoroptions) ))): // Go through all the fieldsets except the configuration and basic-limited, which are // handled separately below. if ($name != 'editorConfig' && $name != 'basic-limited') : ?> <?php echo JHtml::_('sliders.panel', JText::_($fieldSet->label), $name.'-options'); ?> <?php if (isset($fieldSet->description) && trim($fieldSet->description)) : ?> <p class="tip"><?php echo $this->escape(JText::_($fieldSet->description));?></p> <?php endif; ?> <fieldset class="panelform"> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <li><?php echo $field->label; ?> <?php echo $field->input; ?></li> <?php endforeach; ?> </ul> </fieldset> <?php endif ?> <?php // If we are not showing the options we need to use the hidden fields so the values are not lost. ?> <?php elseif ($name == 'basic-limited') : ?> <?php foreach ($this->form->getFieldset('basic-limited') as $field) : ?> <?php echo $field->input; ?> <?php endforeach; ?> <?php endif; ?> <?php endforeach; ?> <?php // Not the best place, but here for continuity with 1.5/1/6/1.7 ?> <fieldset class="panelform"> </fieldset> <?php // We need to make a separate space for the configuration // so that those fields always show to those wih permissions if ( $this->canDo->get('core.admin') ): ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_CONTENT_SLIDER_EDITOR_CONFIG'), 'configure-sliders'); ?> <fieldset class="panelform" > <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('editorConfig') as $field) : ?> <li><?php echo $field->label; ?> <?php echo $field->input; ?></li> <?php endforeach; ?> </ul> </fieldset> <?php endif ?> <?php // The url and images fields only show if the configuration is set to allow them. ?> <?php // This is for legacy reasons. ?> <?php if ($params['show_urls_images_backend']) : ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_CONTENT_FIELDSET_URLS_AND_IMAGES'), 'urls_and_images-options'); ?> <fieldset class="panelform"> <ul class="adminformlist"> <li> <?php echo $this->form->getLabel('images'); ?> <?php echo $this->form->getInput('images'); ?></li> <?php foreach ($this->form->getGroup('images') as $field) : ?> <li> <?php if (!$field->hidden) : ?> <?php echo $field->label; ?> <?php endif; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> <?php foreach ($this->form->getGroup('urls') as $field) : ?> <li> <?php if (!$field->hidden) : ?> <?php echo $field->label; ?> <?php endif; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> <?php endif; ?> <?php echo JHtml::_('sliders.panel', JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS'), 'meta-options'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS'); ?></legend> <?php echo $this->loadTemplate('metadata'); ?> </fieldset> <?php if ($assoc) : ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_CONTENT_ITEM_ASSOCIATIONS_FIELDSET_LABEL'), '-options');?> <?php echo $this->loadTemplate('associations'); ?> <?php endif; ?> <?php echo JHtml::_('sliders.end'); ?> </div> <div class="clr"></div> <?php if ($this->canDo->get('core.admin')) : ?> <div class="col rules-section"> <?php echo JHtml::_('sliders.start', 'permissions-sliders-' . $this->item->id, array('useCookie' => 1)); ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_CONTENT_FIELDSET_RULES'), 'access-rules'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('COM_CONTENT_FIELDSET_RULES'); ?></legend> <?php echo $this->form->getLabel('rules'); ?> <?php echo $this->form->getInput('rules'); ?> </fieldset> <?php echo JHtml::_('sliders.end'); ?> </div> <?php endif; ?> <div> <input type="hidden" name="task" value="" /> <input type="hidden" name="return" value="<?php echo $input->getCmd('return');?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> <div class="clr"></div> </div> PKb��\s�b�9templates/hathor/html/com_languages/languages/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); $user = JFactory::getUser(); $userId = $user->get('id'); $n = count($this->items); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canOrder = $user->authorise('core.edit.state', 'com_languages'); $saveOrder = $listOrder == 'a.ordering'; ?> <form action="<?php echo JRoute::_('index.php?option=com_languages&view=languages'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_LANGS_SEARCH_IN_TITLE'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_published"> <?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?> </label> <select name="filter_published" id="filter_published"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', JHtml::_('languages.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true);?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'COM_LANGUAGES_HEADING_TITLE_NATIVE', 'a.title_native', $listDirn, $listOrder); ?> </th> <th class="nowrap width-5"> <?php echo JHtml::_('grid.sort', 'COM_LANGUAGES_FIELD_LANG_TAG_LABEL', 'a.lang_code', $listDirn, $listOrder); ?> </th> <th class="nowrap width-5"> <?php echo JHtml::_('grid.sort', 'COM_LANGUAGES_FIELD_LANG_CODE_LABEL', 'a.sef', $listDirn, $listOrder); ?> </th> <th class="nowrap width-5"> <?php echo JHtml::_('grid.sort', 'COM_LANGUAGES_HEADING_LANG_IMAGE', 'a.image', $listDirn, $listOrder); ?> </th> <th class="nowrap width-5"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.published', $listDirn, $listOrder); ?> </th> <th width="nowrap ordering-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ORDERING', 'ordering', $listDirn, $listOrder); ?> <?php if ($canOrder && $saveOrder) :?> <?php echo JHtml::_('grid.order', $this->items, 'filesave.png', 'languages.saveorder'); ?> <?php endif; ?> </th> <th class="nowrap width-5"> <?php echo JHtml::_('grid.sort', 'COM_LANGUAGES_HOMEPAGE', '', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.lang_id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $ordering = ($listOrder == 'a.ordering'); $canCreate = $user->authorise('core.create', 'com_languages'); $canEdit = $user->authorise('core.edit', 'com_languages'); $canChange = $user->authorise('core.edit.state', 'com_languages'); ?> <tr class="row<?php echo $i % 2; ?>"> <td> <?php echo JHtml::_('grid.id', $i, $item->lang_id); ?> </td> <td> <span class="editlinktip hasTooltip" title="<?php echo JHtml::tooltipText(JText::_('JGLOBAL_EDIT_ITEM'), $item->title, 0); ?>"> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_languages&task=language.edit&lang_id='.(int) $item->lang_id); ?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> </span> </td> <td class="center"> <?php echo $this->escape($item->title_native); ?> </td> <td class="center"> <?php echo $this->escape($item->lang_code); ?> </td> <td class="center"> <?php echo $this->escape($item->sef); ?> </td> <td class="center"> <?php echo $this->escape($item->image); ?> <?php echo JHtml::_('image', 'mod_languages/'.$item->image.'.gif', $item->image, array('title' => $item->image), true); ?> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->published, $i, 'languages.', $canChange);?> </td> <td class="order"> <?php if ($canChange) : ?> <?php if ($saveOrder) :?> <?php if ($listDirn == 'asc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, true, 'languages.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, true, 'languages.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php elseif ($listDirn == 'desc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, true, 'languages.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, true, 'languages.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php endif; ?> <?php endif; ?> <?php $disabled = $saveOrder ? '' : 'disabled="disabled"'; ?> <input type="text" name="order[]" size="5" value="<?php echo $item->ordering;?>" <?php echo $disabled ?> class="text-area-order" /> <?php else : ?> <?php echo $item->ordering; ?> <?php endif; ?> </td> <td class="center"> <?php if ($item->home == '1') : ?> <?php echo JText::_('JYES');?> <?php else:?> <?php echo JText::_('JNO');?> <?php endif;?> </td> <td class="center"> <?php echo $this->escape($item->lang_id); ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <div> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </div> </form> PKb��\Hw�]��9templates/hathor/html/com_languages/overrides/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); $client = $this->state->get('filter.client') == 'site' ? JText::_('JSITE') : JText::_('JADMINISTRATOR'); $language = $this->state->get('filter.language'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_languages&view=overrides'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <div class="filter-search fltlft"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_LANGUAGES_VIEW_OVERRIDES_FILTER_SEARCH_DESC'); ?>" /> <button type="submit" class="btn"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select fltrt"> <select name="filter_language_client" onchange="this.form.submit()"> <?php echo JHtml::_('select.options', $this->languages, null, 'text', $this->state->get('filter.language_client')); ?> </select> </div> </fieldset> <div class="clr"></div> <table class="adminlist"> <thead> <tr> <th width="1%"> <input type="checkbox" name="checkall-toggle" value="" onclick="Joomla.checkAll(this)" /> </th> <th width="30%" class="left"> <?php echo JHtml::_('grid.sort', 'COM_LANGUAGES_VIEW_OVERRIDES_KEY', 'key', $listDirn, $listOrder); ?> </th> <th class="left"> <?php echo JHtml::_('grid.sort', 'COM_LANGUAGES_VIEW_OVERRIDES_TEXT', 'text', $listDirn, $listOrder); ?> </th> <th class="nowrap"> <?php echo JText::_('COM_LANGUAGES_FIELD_LANG_TAG_LABEL'); ?> </th> <th> <?php echo JText::_('JCLIENT'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="5"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php $canEdit = JFactory::getUser()->authorise('core.edit', 'com_languages'); $i = 0; foreach ($this->items as $key => $text) : ?> <tr class="row<?php echo $i % 2; ?>" id="overriderrow<?php echo $i; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $key); ?> </td> <td> <?php if ($canEdit) : ?> <a id="key[<?php echo $this->escape($key); ?>]" href="<?php echo JRoute::_('index.php?option=com_languages&task=override.edit&id='.$key); ?>"><?php echo $this->escape($key); ?></a> <?php else: ?> <?php echo $this->escape($key); ?> <?php endif; ?> </td> <td> <span id="string[<?php echo $this->escape($key); ?>]"><?php echo $this->escape($text); ?></span> </td> <td class="center"> <?php echo $language; ?> </td> <td class="center"> <?php echo $client; ?> </td> </tr> <?php $i++; endforeach; ?> </tbody> </table> <div> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </div> </form> PKb��\%����=templates/hathor/html/com_languages/installed/default_ftp.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset class="adminform" title="<?php echo JText::_('COM_LANGUAGES_FTP_TITLE'); ?>"> <legend><?php echo JText::_('COM_LANGUAGES_FTP_TITLE'); ?></legend> <?php echo JText::_('COM_LANGUAGES_FTP_DESC'); ?> <?php if ($ftp instanceof Exception) : ?> <p class="warning"><?php echo JText::_($ftp->message); ?></p> <?php endif; ?> <div> <label for="username"><?php echo JText::_('JGLOBAL_USERNAME'); ?></label> <input type="text" id="username" name="username" value="" /> </div> <div> <label for="password"><?php echo JText::_('JGLOBAL_PASSWORD'); ?></label> <input type="password" id="password" name="password" value="" /> </div> </fieldset> PKb��\�&�F��9templates/hathor/html/com_languages/installed/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtmlBehavior::core(); // Add specific helper files for html generation JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); $user = JFactory::getUser(); $userId = $user->get('id'); $client = $this->state->get('filter.client_id', 0) ? JText::_('JADMINISTRATOR') : JText::_('JSITE'); $clientId = $this->state->get('filter.client_id', 0); ?> <form action="<?php echo JRoute::_('index.php?option=com_languages&view=installed&client='.$clientId); ?>" method="post" id="adminForm" name="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <?php if ($this->ftp) : ?> <?php echo $this->loadTemplate('ftp');?> <?php endif; ?> <table class="adminlist"> <thead> <tr> <th class="checkmark-col">   </th> <th class="title"> <?php echo JText::_('COM_LANGUAGES_HEADING_LANGUAGE'); ?> </th> <th> <?php echo JText::_('COM_LANGUAGES_FIELD_LANG_TAG_LABEL'); ?> </th> <th class="width-10"> <?php echo JText::_('JCLIENT'); ?> </th> <th class="width-5"> <?php echo JText::_('COM_LANGUAGES_HEADING_DEFAULT'); ?> </th> <th class="width-10"> <?php echo JText::_('JVERSION'); ?> </th> <th class="width-10"> <?php echo JText::_('JDATE'); ?> </th> <th class="width-20"> <?php echo JText::_('JAUTHOR'); ?> </th> <th class="width-25"> <?php echo JText::_('COM_LANGUAGES_HEADING_AUTHOR_EMAIL'); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->rows as $i => $row) : $canCreate = $user->authorise('core.create', 'com_languages'); $canEdit = $user->authorise('core.edit', 'com_languages'); $canChange = $user->authorise('core.edit.state', 'com_languages'); ?> <tr class="row<?php echo $i % 2; ?>"> <td> <?php echo JHtml::_('languages.id', $i, $row->language);?> </td> <td> <?php echo $this->escape($row->name); ?> </td> <td align="center"> <?php echo $this->escape($row->language); ?> </td> <td class="center"> <?php echo $client;?> </td> <td class="center"> <?php echo JHtml::_('jgrid.isdefault', $row->published, $i, 'installed.', !$row->published && $canChange);?> </td> <td class="center"> <?php echo $this->escape($row->version); ?> </td> <td class="center"> <?php echo $this->escape($row->creationDate); ?> </td> <td class="center"> <?php echo $this->escape($row->author); ?> </td> <td class="center"> <?php echo JStringPunycode::emailToUTF8($this->escape($row->authorEmail)); ?> </td> </tr> <?php endforeach;?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\.Q��(�(;templates/hathor/html/com_categories/categories/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.multiselect'); $app = JFactory::getApplication(); $user = JFactory::getUser(); $userId = $user->get('id'); $extension = $this->escape($this->state->get('filter.extension')); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $ordering = ($listOrder == 'a.lft'); $saveOrder = ($listOrder == 'a.lft' && $listDirn == 'asc'); ?> <div class="categories"> <form action="<?php echo JRoute::_('index.php?option=com_categories&view=categories'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty($this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <?php endif; ?> <div id="j-main-container"<?php echo !empty($this->sidebar) ? ' class="span10"' : ''; ?>> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_CATEGORIES_ITEMS_SEARCH_FILTER'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_level"><?php echo JText::_('JOPTION_SELECT_MAX_LEVELS'); ?></label> <select name="filter_level" id="filter_level"> <option value=""><?php echo JText::_('JOPTION_SELECT_MAX_LEVELS'); ?></option> <?php echo JHtml::_('select.options', $this->f_levels, 'value', 'text', $this->state->get('filter.level')); ?> </select> <label class="selectlabel" for="filter_published"><?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?></label> <select name="filter_published" id="filter_published"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true); ?> </select> <label class="selectlabel" for="filter_access"><?php echo JText::_('JOPTION_SELECT_ACCESS'); ?></label> <select name="filter_access" id="filter_access"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access')); ?> </select> <label class="selectlabel" for="filter_language"><?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?></label> <select name="filter_language" id="filter_language"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language')); ?> </select> <label class="selectlabel" for="filter_tag"><?php echo JText::_('JOPTION_SELECT_TAG'); ?></label> <select name="filter_tag" id="filter_tag"> <option value=""><?php echo JText::_('JOPTION_SELECT_TAG'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('tag.options', true, true), 'value', 'text', $this->state->get('filter.tag')); ?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"></div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.published', $listDirn, $listOrder); ?> </th> <th class="nowrap ordering-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ORDERING', 'a.lft', $listDirn, $listOrder); ?> <?php if ($saveOrder) : ?> <?php echo JHtml::_('grid.order', $this->items, 'filesave.png', 'categories.saveorder'); ?> <?php endif; ?> </th> <th class="access-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'access_level', $listDirn, $listOrder); ?> </th> <?php if ($this->assoc) : ?> <th width="5%"> <?php echo JHtml::_('grid.sort', 'COM_CATEGORY_HEADING_ASSOCIATION', 'association', $listDirn, $listOrder); ?> </th> <?php endif; ?> <th class="language-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'language', $this->state->get('list.direction'), $this->state->get('list.ordering')); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : ?> <?php $orderkey = array_search($item->id, $this->ordering[$item->parent_id]); $canEdit = $user->authorise('core.edit', $extension . '.category.' . $item->id); $canCheckin = $user->authorise('core.admin', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; $canEditOwn = $user->authorise('core.edit.own', $extension . '.category.' . $item->id) && $item->created_user_id == $userId; $canChange = $user->authorise('core.edit.state', $extension . '.category.' . $item->id) && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>"> <th class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </th> <td> <?php echo str_repeat('<span class="gi">|—</span>', $item->level - 1) ?> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'categories.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit || $canEditOwn) : ?> <a href="<?php echo JRoute::_('index.php?option=com_categories&task=category.edit&id=' . $item->id . '&extension=' . $extension); ?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> <p class="smallsub" title="<?php echo $this->escape($item->path); ?>"> <?php echo str_repeat('<span class="gtr">|—</span>', $item->level - 1) ?> <?php if (empty($item->note)) : ?> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias)); ?> <?php else : ?> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS_NOTE', $this->escape($item->alias), $this->escape($item->note)); ?> <?php endif; ?></p> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->published, $i, 'categories.', $canChange); ?> </td> <td class="order"> <?php if ($canChange) : ?> <?php if ($saveOrder) : ?> <span><?php echo $this->pagination->orderUpIcon($i, isset($this->ordering[$item->parent_id][$orderkey - 1]), 'categories.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, isset($this->ordering[$item->parent_id][$orderkey + 1]), 'categories.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php endif; ?> <?php $disabled = $saveOrder ? '' : 'disabled="disabled"'; ?> <input type="text" name="order[]" value="<?php echo $orderkey + 1; ?>" <?php echo $disabled ?> class="text-area-order" title="<?php echo $item->title; ?> order" /> <?php else : ?> <?php echo $orderkey + 1; ?> <?php endif; ?> </td> <td class="center"> <?php echo $this->escape($item->access_level); ?> </td> <?php if ($this->assoc) : ?> <td class="center"> <?php if ($item->association): ?> <?php echo JHtml::_('CategoriesAdministrator.association', $item->id, $extension); ?> <?php endif; ?> </td> <?php endif; ?> <td class="center nowrap"> <?php if ($item->language == '*'): ?> <?php echo JText::alt('JALL', 'language'); ?> <?php else: ?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif; ?> </td> <td class="center"> <span title="<?php echo sprintf('%d-%d', $item->lft, $item->rgt); ?>"> <?php echo (int) $item->id; ?></span> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <div class="clr"></div> <?php //Load the batch processing form. ?> <?php if ($user->authorise('core.create', $extension) && $user->authorise('core.edit', $extension) && $user->authorise('core.edit.state', $extension)) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_CATEGORIES_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif; ?> <input type="hidden" name="extension" value="<?php echo $extension; ?>" /> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> </div> PKb��\��<��>templates/hathor/html/com_categories/category/edit_options.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <?php echo JHtml::_('sliders.panel', JText::_('JGLOBAL_FIELDSET_PUBLISHING'), 'publishing-details'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('COM_CONTENT_FIELDSET_PUBLISHING'); ?></legend> <ul class="adminformlist"> <li> <?php echo $this->form->getLabel('created_user_id'); ?> <?php echo $this->form->getInput('created_user_id'); ?> </li> <?php if ((int) $this->item->created_time) : ?> <li> <?php echo $this->form->getLabel('created_time'); ?> <?php echo $this->form->getInput('created_time'); ?> </li> <?php endif; ?> <?php if ($this->item->modified_user_id) : ?> <li> <?php echo $this->form->getLabel('modified_user_id'); ?> <?php echo $this->form->getInput('modified_user_id'); ?> </li> <li> <?php echo $this->form->getLabel('modified_time'); ?> <?php echo $this->form->getInput('modified_time'); ?> </li> <?php endif; ?> </ul> </fieldset> <?php $fieldSets = $this->form->getFieldsets('params'); ?> <?php foreach ($fieldSets as $name => $fieldSet) : ?> <?php $label = !empty($fieldSet->label) ? $fieldSet->label : 'COM_CATEGORIES_' . $name . '_FIELDSET_LABEL'; echo JHtml::_('sliders.panel', JText::_($label), $name . '-options'); if (isset($fieldSet->description) && trim($fieldSet->description)) { echo '<p class="tip">' . $this->escape(JText::_($fieldSet->description)) . '</p>'; } ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_($label); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> <?php if ($name == 'basic'): ?> <li> <?php echo $this->form->getLabel('note'); ?> <?php echo $this->form->getInput('note'); ?> </li> <?php endif; ?> </ul> </fieldset> <?php endforeach; ?> PKb��\���{��6templates/hathor/html/com_categories/category/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); $input = JFactory::getApplication()->input; $saveHistory = $this->state->get('params')->get('save_history', 0); JHtml::_('behavior.keepalive'); JHtml::_('behavior.formvalidator'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'category.cancel' || document.formvalidator.isValid(document.getElementById('item-form'))) { " . $this->form->getField('description')->save() . " Joomla.submitform(task, document.getElementById('item-form')); } } "); $assoc = JLanguageAssociations::isEnabled(); ?> <div class="category-edit"> <form action="<?php echo JRoute::_('index.php?option=com_categories&extension=' . $input->getCmd('extension', 'com_content') . '&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="item-form" class="form-validate"> <div class="col main-section"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_CATEGORIES_FIELDSET_DETAILS'); ?></legend> <ul class="adminformlist"> <li> <?php echo $this->form->getLabel('title'); ?> <?php echo $this->form->getInput('title'); ?> </li> <li> <?php echo $this->form->getLabel('alias'); ?> <?php echo $this->form->getInput('alias'); ?> </li> <li> <?php echo $this->form->getLabel('extension'); ?> <?php echo $this->form->getInput('extension'); ?> </li> <li> <?php echo $this->form->getLabel('parent_id'); ?> <?php echo $this->form->getInput('parent_id'); ?> </li> <li> <?php echo $this->form->getLabel('published'); ?> <?php echo $this->form->getInput('published'); ?> </li> <li> <?php echo $this->form->getLabel('access'); ?> <?php echo $this->form->getInput('access'); ?> </li> <?php if ($this->canDo->get('core.admin')) : ?> <li> <span class="faux-label"><?php echo JText::_('JGLOBAL_ACTION_PERMISSIONS_LABEL'); ?></span> <button type="button" onclick="document.location.href='#access-rules';"> <?php echo JText::_('JGLOBAL_PERMISSIONS_ANCHOR'); ?></button> </li> <?php endif; ?> <li> <?php echo $this->form->getLabel('language'); ?> <?php echo $this->form->getInput('language'); ?> </li> <!-- Tag field --> <li> <?php if ($this->checkTags) : ?> <?php echo $this->form->getLabel('tags'); ?> <div class="is-tagbox"> <?php echo $this->form->getInput('tags'); ?> </div> <?php endif; ?> </li> <?php if ($saveHistory) : ?> <li><?php echo $this->form->getLabel('version_note'); ?> <?php echo $this->form->getInput('version_note'); ?></li> <?php endif; ?> <li> <?php echo $this->form->getLabel('id'); ?> <?php echo $this->form->getInput('id'); ?> </li> <li> <?php echo $this->form->getLabel('hits'); ?> <?php echo $this->form->getInput('hits'); ?> </li> </ul> <div class="clr"></div> <?php echo $this->form->getLabel('description'); ?> <div class="clr"></div> <?php echo $this->form->getInput('description'); ?> <div class="clr"></div> </fieldset> </div> <div class="col options-section"> <?php echo JHtml::_('sliders.start', 'categories-sliders-' . $this->item->id, array('useCookie' => 1)); ?> <?php echo $this->loadTemplate('options'); ?> <div class="clr"></div> <?php echo JHtml::_('sliders.panel', JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS'), 'meta-options'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS'); ?></legend> <?php echo $this->loadTemplate('metadata'); ?> </fieldset> <?php $fieldSets = $this->form->getFieldsets('attribs'); ?> <?php foreach ($fieldSets as $name => $fieldSet) : ?> <?php if ($name != 'editorConfig' && $name != 'basic-limited') : ?> <?php $label = !empty($fieldSet->label) ? $fieldSet->label : 'COM_CATEGORIES_' . $name . '_FIELDSET_LABEL'; echo JHtml::_('sliders.panel', JText::_($label), $name . '-options'); if (isset($fieldSet->description) && trim($fieldSet->description)) { echo '<p class="tip">' . $this->escape(JText::_($fieldSet->description)) . '</p>'; } ?> <div class="clr"></div> <fieldset class="panelform"> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> <?php endif; ?> <?php endforeach; ?> <?php if ($assoc) : ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_CATEGORIES_ITEM_ASSOCIATIONS_FIELDSET_LABEL'), '-options');?> <?php echo $this->loadTemplate('associations'); ?> <?php endif; ?> <?php echo JHtml::_('sliders.end'); ?> </div> <div class="clr"></div> <?php if ($this->canDo->get('core.admin')) : ?> <div class="col rules-section"> <?php echo JHtml::_('sliders.start', 'permissions-sliders-' . $this->item->id, array('useCookie' => 1)); ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_CATEGORIES_FIELDSET_RULES'), 'access-rules'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('COM_CATEGORIES_FIELDSET_RULES'); ?></legend> <?php echo $this->form->getLabel('rules'); ?> <?php echo $this->form->getInput('rules'); ?> </fieldset> <?php echo JHtml::_('sliders.end'); ?> </div> <?php endif; ?> <div> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> </form> <div class="clr"></div> </div> PKb��\/�z 9templates/hathor/html/com_templates/templates/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&view=templates'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('Filters'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_TEMPLATES_TEMPLATES_FILTER_SEARCH_DESC'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_client_id"> <?php echo JText::_('JGLOBAL_FILTER_CLIENT'); ?> </label> <select name="filter_client_id" id="filter_client_id"> <option value="*"><?php echo JText::_('JGLOBAL_FILTER_CLIENT'); ?></option> <?php echo JHtml::_('select.options', TemplatesHelper::getClientOptions(), 'value', 'text', $this->state->get('filter.client_id'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist" id="template-mgr"> <thead> <tr> <th class="checkmark-col">   </th> <th> <?php echo JHtml::_('grid.sort', 'COM_TEMPLATES_HEADING_TEMPLATE', 'a.element', $listDirn, $listOrder); ?> </th> <th class="width-10"> <?php echo JHtml::_('grid.sort', 'JCLIENT', 'a.client_id', $listDirn, $listOrder); ?> </th> <th class="center width-10"> <?php echo JText::_('JVERSION'); ?> </th> <th class="width-15"> <?php echo JText::_('JDATE'); ?> </th> <th class="width-25"> <?php echo JText::_('JAUTHOR'); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php echo JHtml::_('templates.thumb', $item->element, $item->client_id); ?> </td> <td class="template-name"> <a href="<?php echo JRoute::_('index.php?option=com_templates&view=template&id='.(int) $item->extension_id . '&file=' . $this->file); ?>"> <?php echo JText::sprintf('COM_TEMPLATES_TEMPLATE_DETAILS', $item->name); ?></a> <p> <?php if ($this->preview && $item->client_id == '0') : ?> <a href="<?php echo JUri::root().'index.php?tp=1&template='.$item->element; ?>" target="_blank"> <?php echo JText::_('COM_TEMPLATES_TEMPLATE_PREVIEW'); ?></a> <?php elseif ($item->client_id == '1') : ?> <?php echo JText::_('COM_TEMPLATES_TEMPLATE_NO_PREVIEW_ADMIN'); ?> <?php else: ?> <span class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_TEMPLATES_TEMPLATE_NO_PREVIEW', 'COM_TEMPLATES_TEMPLATE_NO_PREVIEW_DESC'); ?>"> <?php echo JText::_('COM_TEMPLATES_TEMPLATE_NO_PREVIEW'); ?></span> <?php endif; ?> </p> </td> <td class="center"> <?php echo $item->client_id == 0 ? JText::_('JSITE') : JText::_('JADMINISTRATOR'); ?> </td> <td class="center"> <?php echo $this->escape($item->xmldata->get('version')); ?> </td> <td class="center"> <?php echo $this->escape($item->xmldata->get('creationDate')); ?> </td> <td> <?php if ($author = $item->xmldata->get('author')) : ?> <p><?php echo $this->escape($author); ?></p> <?php else : ?> — <?php endif; ?> <?php if ($email = $item->xmldata->get('authorEmail')) : ?> <p><?php echo $this->escape($email); ?></p> <?php endif; ?> <?php if ($url = $item->xmldata->get('authorUrl')) : ?> <p><a href="<?php echo $this->escape($url); ?>"> <?php echo $this->escape($url); ?></a></p> <?php endif; ?> </td> <?php echo JHtml::_('templates.thumbModal', $item->element, $item->client_id); ?> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�/M��=templates/hathor/html/com_templates/style/edit_assignment.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Initiasile related data. require_once JPATH_ADMINISTRATOR.'/components/com_menus/helpers/menus.php'; $menuTypes = MenusHelper::getMenuLinks(); $user = JFactory::getUser(); ?> <fieldset class="adminform"> <legend><?php echo JText::_('COM_TEMPLATES_MENUS_ASSIGNMENT'); ?></legend> <label id="jform_menuselect-lbl" for="jform_menuselect"><?php echo JText::_('JGLOBAL_MENU_SELECTION'); ?></label> <button type="button" class="jform-rightbtn" onclick="$$('.chk-menulink').each(function(el) { el.checked = !el.checked; });"> <?php echo JText::_('JGLOBAL_SELECTION_INVERT_ALL'); ?> </button> <div class="clr"></div> <div id="menu-assignment"> <?php foreach ($menuTypes as &$type) : ?> <ul class="menu-links"> <button type="button" class="jform-rightbtn" onclick="$$('.<?php echo $type->menutype; ?>').each(function(el) { el.checked = !el.checked; });"> <?php echo JText::_('JGLOBAL_SELECTION_INVERT'); ?> </button> <div class="clr"></div> <h3><?php echo $type->title ? $type->title : $type->menutype; ?></h3> <?php foreach ($type->links as $link) : ?> <li class="menu-link"> <input type="checkbox" name="jform[assigned][]" value="<?php echo (int) $link->value;?>" id="link<?php echo (int) $link->value;?>"<?php if ($link->template_style_id == $this->item->id):?> checked="checked"<?php endif;?><?php if ($link->checked_out && $link->checked_out != $user->id):?> disabled="disabled"<?php else:?> class="chk-menulink <?php echo $type->menutype; ?>"<?php endif;?> /> <label for="link<?php echo (int) $link->value;?>" > <?php echo $link->text; ?> </label> </li> <?php endforeach; ?> </ul> <?php endforeach; ?> </div> </fieldset> PKb��\��p�"":templates/hathor/html/com_templates/style/edit_options.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $fieldSets = $this->form->getFieldsets('params'); foreach ($fieldSets as $name => $fieldSet) : $label = !empty($fieldSet->label) ? $fieldSet->label : 'COM_TEMPLATES_'.$name.'_FIELDSET_LABEL'; echo JHtml::_('sliders.panel', JText::_($label), $name.'-options'); if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="tip">'.$this->escape(JText::_($fieldSet->description)).'</p>'; endif; ?> <fieldset class="panelform"> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <li> <?php if (!$field->hidden) : ?> <?php echo $field->label; ?> <?php endif; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> <?php endforeach; ?> PKb��\��fZ��2templates/hathor/html/com_templates/style/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); $user = JFactory::getUser(); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'style.cancel' || document.formvalidator.isValid(document.getElementById('style-form'))) { Joomla.submitform(task, document.getElementById('style-form')); } } "); ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="style-form" class="form-validate"> <div class="width-60 fltlft"> <fieldset class="adminform"> <legend><?php echo JText::_('JDETAILS');?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('title'); ?> <?php echo $this->form->getInput('title'); ?></li> <li><?php echo $this->form->getLabel('template'); ?> <?php echo $this->form->getInput('template'); ?> <?php echo $this->form->getLabel('client_id'); ?> <?php echo $this->form->getInput('client_id'); ?> <input type="text" size="35" value="<?php echo $this->item->client_id == 0 ? JText::_('JSITE') : JText::_('JADMINISTRATOR'); ?> " class="readonly" readonly="readonly" /></li> <li><?php echo $this->form->getLabel('home'); ?> <?php echo $this->form->getInput('home'); ?></li> <?php if ($this->item->id) : ?> <li><?php echo $this->form->getLabel('id'); ?> <span class="readonly"><?php echo $this->item->id; ?></span></li> <?php endif; ?> </ul> <div class="clr"></div> <?php if ($this->item->xml) : ?> <?php if ($text = trim($this->item->xml->description)) : ?> <label> <?php echo JText::_('COM_TEMPLATES_TEMPLATE_DESCRIPTION'); ?> </label> <span class="readonly mod-desc"><?php echo JText::_($text); ?></span> <?php endif; ?> <?php else : ?> <p class="error"><?php echo JText::_('COM_TEMPLATES_ERR_XML'); ?></p> <?php endif; ?> <div class="clr"></div> </fieldset> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> <div class="width-40 fltrt"> <?php echo JHtml::_('sliders.start', 'template-sliders-'.$this->item->id); ?> <?php //get the menu parameters that are automatically set but may be modified. echo $this->loadTemplate('options'); ?> <div class="clr"></div> <?php echo JHtml::_('sliders.end'); ?> </div> <?php if ($user->authorise('core.edit', 'com_menu') && $this->item->client_id == 0):?> <?php if ($this->canDo->get('core.edit.state')) : ?> <div class="width-60 fltlft"> <?php echo $this->loadTemplate('assignment'); ?> </div> <?php endif; ?> <?php endif;?> <div class="clr"></div> </form> PKb��\G�LL6templates/hathor/html/com_templates/styles/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('script', 'system/multiselect.js', false, true); $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&view=styles'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_TEMPLATES_STYLES_FILTER_SEARCH_DESC'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_template"><?php echo JText::_('COM_TEMPLATES_FILTER_TEMPLATE'); ?></label> <select name="filter_template" id="filter_template"> <option value="0"><?php echo JText::_('COM_TEMPLATES_FILTER_TEMPLATE'); ?></option> <?php echo JHtml::_('select.options', TemplatesHelper::getTemplateOptions($this->state->get('filter.client_id')), 'value', 'text', $this->state->get('filter.template'));?> </select> <label class="selectlabel" for="filter_client_id"><?php echo JText::_('JGLOBAL_FILTER_CLIENT'); ?></label> <select name="filter_client_id" id="filter_client_id"> <option value="*"><?php echo JText::_('JGLOBAL_FILTER_CLIENT'); ?></option> <?php echo JHtml::_('select.options', TemplatesHelper::getClientOptions(), 'value', 'text', $this->state->get('filter.client_id'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col">   </th> <th> <?php echo JHtml::_('grid.sort', 'COM_TEMPLATES_HEADING_STYLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="width-10"> <?php echo JHtml::_('grid.sort', 'JCLIENT', 'a.client_id', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_TEMPLATES_HEADING_TEMPLATE', 'a.template', $listDirn, $listOrder); ?> </th> <th class="width-5"> <?php echo JHtml::_('grid.sort', 'COM_TEMPLATES_HEADING_DEFAULT', 'a.home', $listDirn, $listOrder); ?> </th> <th class="width-5"> <?php echo JText::_('COM_TEMPLATES_HEADING_ASSIGNED'); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $canCreate = $user->authorise('core.create', 'com_templates'); $canEdit = $user->authorise('core.edit', 'com_templates'); $canChange = $user->authorise('core.edit.state', 'com_templates'); ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td> <?php if ($this->preview && $item->client_id == '0') : ?> <a target="_blank" href="<?php echo JUri::root().'index.php?tp=1&templateStyle='.(int) $item->id ?>" class="jgrid hasTooltip" title="<?php echo JHtml::tooltipText(JText::_('COM_TEMPLATES_TEMPLATE_PREVIEW'), $item->title, 0); ?>" ><span class="state icon-16-preview"><span class="text"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_PREVIEW'); ?></span></span></a> <?php elseif ($item->client_id == '1') : ?> <span class="jgrid hasTooltip" title="<?php echo JHtml::tooltipText('COM_TEMPLATES_TEMPLATE_NO_PREVIEW_ADMIN'); ?>"><span class="state icon-16-nopreview"><span class="text"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_NO_PREVIEW_ADMIN'); ?></span></span></span> <?php else: ?> <span class="jgrid hasTooltip" title="<?php echo JHtml::tooltipText('COM_TEMPLATES_TEMPLATE_NO_PREVIEW'); ?>"><span class="state icon-16-nopreview"><span class="text"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_NO_PREVIEW'); ?></span></span></span> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_templates&task=style.edit&id='.(int) $item->id); ?>"> <?php echo $this->escape($item->title);?></a> <?php else : ?> <?php echo $this->escape($item->title);?> <?php endif; ?> </td> <td class="center"> <?php echo $item->client_id == 0 ? JText::_('JSITE') : JText::_('JADMINISTRATOR'); ?> </td> <td> <label for="cb<?php echo $i;?>"> <?php echo $this->escape($item->template);?> </label> </td> <td class="center"> <?php if ($item->home == '0' || $item->home == '1'):?> <?php echo JHtml::_('jgrid.isdefault', $item->home != '0', $i, 'styles.', $canChange && $item->home != '1');?> <?php elseif ($canChange):?> <a href="<?php echo JRoute::_('index.php?option=com_templates&task=styles.unsetDefault&cid[]='.$item->id.'&'.JSession::getFormToken().'=1');?>"> <?php echo JHtml::_('image', 'mod_languages/' . $item->image . '.gif', $item->language_title, array('title' => JText::sprintf('COM_TEMPLATES_GRID_UNSET_LANGUAGE', $item->language_title)), true);?> </a> <?php else:?> <?php echo JHtml::_('image', 'mod_languages/' . $item->image . '.gif', $item->language_title, array('title' => $item->language_title), true);?> <?php endif;?> </td> <td class="center"> <?php if ($item->assigned > 0) : ?> <?php echo JHtml::_('image', 'admin/tick.png', JText::plural('COM_TEMPLATES_ASSIGNED', $item->assigned), array('title' => JText::plural('COM_TEMPLATES_ASSIGNED', $item->assigned)), true); ?> <?php else : ?>   <?php endif; ?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\S��OODtemplates/hathor/html/com_templates/template/default_description.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="pull-left"> <?php echo JHtml::_('templates.thumb', $this->template->element, $this->template->client_id); ?> <?php echo JHtml::_('templates.thumbModal', $this->template->element, $this->template->client_id); ?> </div> <h2><?php echo ucfirst($this->template->element); ?></h2> <?php $client = JApplicationHelper::getClientInfo($this->template->client_id); ?> <p><?php $this->template->xmldata = TemplatesHelper::parseXMLTemplateFile($client->path, $this->template->element);?></p> <p><?php echo JText::_($this->template->xmldata->description); ?></p>PKb��\g�j���=templates/hathor/html/com_templates/template/default_tree.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ksort($this->files, SORT_STRING); ?> <ul class='nav nav-list directory-tree'> <?php foreach ($this->files as $key => $value): ?> <?php if (is_array($value)): ?> <?php $keyArray = explode('/', $key); $fileArray = explode('/', $this->fileName); $count = 0; if (count($fileArray) >= count($keyArray)) { for ($i = 0; $i < count($keyArray); $i++) { if ($keyArray[$i] === $fileArray[$i]) { $count++; } } if ($count == count($keyArray)) { $class = "folder show"; } else { $class = "folder"; } } else { $class = "folder"; } ?> <li class="<?php echo $class; ?>"> <a class='folder-url nowrap' href=''> <span class='icon-folder-close'> <?php $explodeArray = explode('/', $key); echo end($explodeArray); ?></span> </a> <?php echo $this->directoryTree($value); ?> </li> <?php endif; ?> <?php if (is_object($value)): ?> <li> <a class="file nowrap" href='<?php echo JRoute::_('index.php?option=com_templates&view=template&id=' . $this->id . '&file=' . $value->id) ?>'> <span class='icon-file'> <?php echo $value->name; ?></span> </a> </li> <?php endif; ?> <?php endforeach; ?> </ul> PKb��\*�PP8templates/hathor/html/com_templates/template/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('bootstrap.tooltip'); $input = JFactory::getApplication()->input; if ($this->type == 'image') { JHtml::_('script', 'system/jquery.Jcrop.min.js', false, true); JHtml::_('stylesheet', 'system/jquery.Jcrop.min.css', array(), true); } JFactory::getDocument()->addScriptDeclaration(" jQuery(document).ready(function($){ // Hide all the folder when the page loads $('.folder ul, .component-folder ul').hide(); // Display the tree after loading $('.directory-tree').removeClass('directory-tree'); // Show all the lists in the path of an open file $('.show > ul').show(); // Stop the default action of anchor tag on a click event $('.folder-url, .component-folder-url').click(function(event){ event.preventDefault(); }); // Prevent the click event from proliferating $('.file, .component-file-url').bind('click',function(e){ e.stopPropagation(); }); // Toggle the child indented list on a click event $('.folder, .component-folder').bind('click',function(e){ $(this).children('ul').toggle(); e.stopPropagation(); }); // New file tree $('#fileModal .folder-url').bind('click',function(e){ $('.folder-url').removeClass('selected'); e.stopPropagation(); $('#fileModal input.address').val($(this).attr('data-id')); $(this).addClass('selected'); }); // Folder manager tree $('#folderModal .folder-url').bind('click',function(e){ $('.folder-url').removeClass('selected'); e.stopPropagation(); $('#folderModal input.address').val($(this).attr('data-id')); $(this).addClass('selected'); }); });"); if($this->type == 'image') { JFactory::getDocument()->addScriptDeclaration(" jQuery(document).ready(function() { var jcrop_api; // Configuration for image cropping $('#image-crop').Jcrop({ onChange: showCoords, onSelect: showCoords, onRelease: clearCoords, trueSize: " . $this->image['width'] . "," . $this->image['height'] . "] },function(){ jcrop_api = this; }); // Function for calculating the crop coordinates function showCoords(c) { $('#x').val(c.x); $('#y').val(c.y); $('#w').val(c.w); $('#h').val(c.h); }; // Function for clearing the coordinates function clearCoords() { $('#adminForm input').val(''); }; });"); } JFactory::getDocument()->addStyleDeclaration(" /* Styles for modals */ .selected{ background: #08c; color: #fff; } .selected:hover{ background: #08c !important; color: #fff; } .modal-body .column { width: 50%; float: left; } #deleteFolder{ margin: 0; } #image-crop{ max-width: 100% !important; width: auto; height: auto; } .directory-tree{ display: none; } .tree-holder{ overflow-x: auto; } "); if($this->type == 'font') { JFactory::getDocument()->addStyleDeclaration( "/* Styles for font preview */ @font-face { font-family: previewFont; src: url('" . $this->font['address'] . "') } .font-preview{ font-family: previewFont !important; }" ); } ?> <div class="width-60 fltlft"> <?php if ($this->type != 'home'): ?> <div id="deleteModal" class="modal hide fade"> <fieldset> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3><?php echo JText::_('COM_TEMPLATES_ARE_YOU_SURE');?></h3> </div> <div class="modal-body"> <p><?php echo JText::sprintf('COM_TEMPLATES_MODAL_FILE_DELETE', $this->fileName); ?></p> </div> <div class="modal-footer"> <form method="post" action=""> <input type="hidden" name="option" value="com_templates" /> <input type="hidden" name="task" value="template.delete" /> <input type="hidden" name="id" value="<? echo $input->getInt('id'); ?>" /> <input type="hidden" name="file" value="<? echo $this->file; ?>" /> <?php echo JHtml::_('form.token'); ?> <a href="#" class="btn" data-dismiss="modal"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_CLOSE'); ?></a> <button type="submit"><?php echo JText::_('COM_TEMPLATES_BUTTON_DELETE');?></button> </form> </div> </fieldset> </div> <?php endif; ?> <div id="folderModal" class="modal hide fade"> <fieldset> <legend><?php echo JText::_('COM_TEMPLATES_MANAGE_FOLDERS');?></legend> <div class="modal-body"> <div class="width-50 fltlft"> <form method="post" action="<?php echo JRoute::_('index.php?option=com_templates&task=template.createFolder&id=' . $input->getInt('id') . '&file=' . $this->file); ?>"> <fieldset> <label><?php echo JText::_('COM_TEMPLATES_FOLDER_NAME');?></label> <input type="text" name="name" required /> <input type="hidden" class="address" name="address" /> <input type="submit" value="<?php echo JText::_('COM_TEMPLATES_BUTTON_CREATE');?>" class="btn btn-primary" /> </fieldset> </form> </div> <div class="width-50 fltlft"> <?php echo $this->loadTemplate('folders');?> </div> </div> <div class="modal-footer"> <form id="deleteFolder" method="post" action="<?php echo JRoute::_('index.php?option=com_templates&task=template.deleteFolder&id=' . $input->getInt('id') . '&file=' . $this->file); ?>"> <fieldset> <a href="#" class="btn" data-dismiss="modal"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_CLOSE'); ?></a> <input type="hidden" class="address" name="address" /> <input type="submit" value="<?php echo JText::_('COM_TEMPLATES_BUTTON_DELETE');?>" class="btn btn-danger" /> </fieldset> </form> </div> </fieldset> </div> <div id="fileModal" class="modal hide fade"> <fieldset> <legend><?php echo JText::_('COM_TEMPLATES_BUTTON_FILE');?></legend> <div class="modal-body"> <div class="width-50 fltlft"> <form method="post" action="<?php echo JRoute::_('index.php?option=com_templates&task=template.createFile&id=' . $input->getInt('id') . '&file=' . $this->file); ?>"> <fieldset> <label><?php echo JText::_('COM_TEMPLATES_NEW_FILE_TYPE');?></label> <select name="type" required > <option value="null">- <?php echo JText::_('COM_TEMPLATES_NEW_FILE_SELECT');?> -</option> <option value="css">css</option> <option value="php">php</option> <option value="js">js</option> <option value="xml">xml</option> <option value="ini">ini</option> <option value="less">less</option> <option value="txt">txt</option> </select> <br /> <label><?php echo JText::_('COM_TEMPLATES_FILE_NAME');?></label> <input type="text" name="name" required /> <input type="hidden" class="address" name="address" /> <input type="submit" value="<?php echo JText::_('COM_TEMPLATES_BUTTON_CREATE');?>" class="btn btn-primary" /> </fieldset> </form> <br /> <form method="post" action="<?php echo JRoute::_('index.php?option=com_templates&task=template.uploadFile&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" enctype="multipart/form-data" > <fieldset> <input type="hidden" class="address" name="address" /> <input type="file" name="files" required /> <input type="submit" value="<?php echo JText::_('COM_TEMPLATES_BUTTON_UPLOAD');?>" class="btn btn-primary" /> </fieldset> </form> <br /> <?php if ($this->type != 'home'): ?> <form method="post" action="<?php echo JRoute::_('index.php?option=com_templates&task=template.copyFile&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" enctype="multipart/form-data" > <fieldset> <input type="hidden" class="address" name="address" /> <div class="control-group"> <label for="new_name" class="control-label hasTooltip" title="<?php echo JHtml::tooltipText('COM_TEMPLATES_FILE_NEW_NAME_DESC'); ?>"><?php echo JText::_('COM_TEMPLATES_FILE_NEW_NAME_LABEL')?></label> <div class="controls"> <input type="text" id="new_name" name="new_name" required /> </div> </div> <input type="submit" value="<?php echo JText::_('COM_TEMPLATES_BUTTON_COPY_FILE');?>" class="btn btn-primary" /> </fieldset> </form> <?php endif; ?> </div> <div class="width-50 fltlft"> <?php echo $this->loadTemplate('folders');?> </div> </div> <div class="modal-footer"> <a href="#" class="btn" data-dismiss="modal"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_CLOSE'); ?></a> </div> </fieldset> </div> <?php if ($this->type != 'home'): ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&task=template.resizeImage&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" > <div id="resizeModal" class="modal hide fade"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3><?php echo JText::_('COM_TEMPLATES_RESIZE_IMAGE'); ?></h3> </div> <div class="modal-body"> <div id="template-manager-css" class="form-horizontal"> <div class="control-group"> <label for="height" class="control-label hasTooltip" title="<?php echo JHtml::tooltipText('COM_TEMPLATES_IMAGE_HEIGHT'); ?>"><?php echo JText::_('COM_TEMPLATES_IMAGE_HEIGHT')?></label> <div class="controls"> <input class="input-xlarge" type="number" name="height" placeholder="<?php echo $this->image['height']; ?> px" required /> </div> <br /> <label for="width" class="control-label hasTooltip" title="<?php echo JHtml::tooltipText('COM_TEMPLATES_IMAGE_WIDTH'); ?>"><?php echo JText::_('COM_TEMPLATES_IMAGE_WIDTH')?></label> <div class="controls"> <input class="input-xlarge" type="number" name="width" placeholder="<?php echo $this->image['width']; ?> px" required /> </div> </div> </div> </div> <div class="modal-footer"> <a href="#" class="btn" data-dismiss="modal"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_CLOSE'); ?></a> <button class="btn btn-primary" type="submit"><?php echo JText::_('COM_TEMPLATES_BUTTON_RESIZE'); ?></button> </div> </div> <?php echo JHtml::_('form.token'); ?> </form> <?php endif; ?> <?php if($this->type == 'home'): ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&view=template&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" name="adminForm" id="adminForm" class="form-horizontal"> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> <div id="home-box" style="text-align: justify;"> <h1><p><?php echo JText::_('COM_TEMPLATES_HOME_HEADING'); ?></p></h1> <p><?php echo JText::_('COM_TEMPLATES_HOME_TEXT'); ?></p> <p> <a href="https://docs.joomla.org/J3.2:How_to_use_the_Template_Manager" target="_blank"> <?php echo JText::_('COM_TEMPLATES_HOME_BUTTON'); ?> </a> </p> </div> </form> <?php endif; ?> <?php if($this->type == 'file'): ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&view=template&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" name="adminForm" id="adminForm" class="form-horizontal"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_TEMPLATES_SOURCE_CODE');?></legend> <p class="label"><?php echo JText::_('COM_TEMPLATES_TOGGLE_FULL_SCREEN'); ?></p> <div class="clr"></div> <div class="editor-border"> <?php echo $this->form->getInput('source'); ?> </div> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> <?php echo $this->form->getInput('extension_id'); ?> <?php echo $this->form->getInput('filename'); ?> </fieldset> </form> <?php endif; ?> <?php if($this->type == 'image'): ?> <div id="image-box"><img id="image-crop" src="<?php echo $this->image['address'] . '?' . time(); ?>" /></div> <form action="<?php echo JRoute::_('index.php?option=com_templates&view=template&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" name="adminForm" id="adminForm"> <input type ="hidden" id="x" name="x" /> <input type ="hidden" id="y" name="y" /> <input type ="hidden" id="h" name="h" /> <input type ="hidden" id="w" name="w" /> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> <?php endif; ?> <?php if($this->type == 'archive'): ?> <legend><?php echo JText::_('COM_TEMPLATES_FILE_CONTENT_PREVIEW'); ?></legend> <form action="<?php echo JRoute::_('index.php?option=com_templates&view=template&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" name="adminForm" id="adminForm" class="form-horizontal"> <fieldset> <ul class="nav nav-list"> <?php foreach ($this->archive as $file): ?> <li> <?php if (substr($file, -1) === DIRECTORY_SEPARATOR): ?> <span class="icon-folder"></span> <?php echo $file; ?> <?php endif; ?> <?php if (substr($file, -1) != DIRECTORY_SEPARATOR): ?> <span class="icon-file"></span> <?php echo $file; ?> <?php endif; ?> </li> <?php endforeach; ?> </ul> </fieldset> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> <?php endif; ?> <?php if($this->type == 'font'): ?> <div class="font-preview"> <form action="<?php echo JRoute::_('index.php?option=com_templates&view=template&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" name="adminForm" id="adminForm" class="form-horizontal"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_TEMPLATES_SOURCE_CODE');?></legend> <p class="lead">H1</p><h1>Quickly gaze at Joomla! views from HTML, CSS, JavaScript and XML </h1> <p class="lead">H2</p><h2>Quickly gaze at Joomla! views from HTML, CSS, JavaScript and XML </h2> <p class="lead">H3</p><h3>Quickly gaze at Joomla! views from HTML, CSS, JavaScript and XML </h3> <p class="lead">H4</p><h4>Quickly gaze at Joomla! views from HTML, CSS, JavaScript and XML </h4> <p class="lead">H5</p><h5>Quickly gaze at Joomla! views from HTML, CSS, JavaScript and XML </h5> <p class="lead">H6</p> <h6>Quickly gaze at Joomla! views from HTML, CSS, JavaScript and XML </h6> <p class="lead">Bold</p><b>Quickly gaze at Joomla! views from HTML, CSS, JavaScript and XML </b> <p class="lead">Italics</p><i>Quickly gaze at Joomla! views from HTML, CSS, JavaScript and XML </i> <p class="lead">Unordered List</p> <ul> <li>Item</li> <li>Item</li> <li>Item<br /> <ul> <li>Item</li> <li>Item</li> <li>Item<br /> <ul> <li>Item</li> <li>Item</li> <li>Item</li> </ul> </li> </ul> </li> </ul> <p class="lead">Ordered List</p> <ol> <li>Item</li> <li>Item</li> <li>Item<br /> <ul> <li>Item</li> <li>Item</li> <li>Item<br /> <ul> <li>Item</li> <li>Item</li> <li>Item</li> </ul> </li> </ul> </li> </ol> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </fieldset> </form> </div> <?php endif; ?> <fieldset class="adminform"> <legend><?php echo JText::_('COM_TEMPLATES_TEMPLATE_DESCRIPTION');?></legend> <?php echo $this->loadTemplate('description');?> </fieldset> <div class="clr"></div> </div> <div class="width-40 fltrt"> <?php if($this->type != 'home'): ?> <fieldset class="adminform"> <legend><?php echo JText::_('COM_TEMPLATES_FILE_INFO');?></legend> <?php if($this->type == 'file'): ?> <p><?php echo JText::sprintf('COM_TEMPLATES_TEMPLATE_FILENAME', $this->source->filename, $this->template->element); ?></p> <?php endif; ?> <?php if($this->type == 'image'): ?> <p><?php echo JText::sprintf('COM_TEMPLATES_TEMPLATE_FILENAME', $this->image['path'], $this->template->element); ?></p> <?php endif; ?> <?php if($this->type == 'font'): ?> <p><?php echo JText::sprintf('COM_TEMPLATES_TEMPLATE_FILENAME', $this->font['rel_path'], $this->template->element); ?></p> <?php endif; ?> </fieldset> <?php endif; ?> <fieldset class="adminform"> <legend><?php echo JText::_('COM_TEMPLATES_TEMPLATE_FILES');?></legend> <?php echo $this->loadTemplate('tree');?> </fieldset> <?php echo JHtml::_('sliders.start', 'content-sliders', array('useCookie' => 1)); ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_TEMPLATES_TEMPLATE_COPY'), 'template-copy'); ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&task=template.copy&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" name="adminForm" id="adminForm"> <fieldset class="panelform"> <label id="new_name" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_TEMPLATES_TEMPLATE_NEW_NAME_DESC'); ?>"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_NEW_NAME_LABEL')?></label> <input type="text" id="new_name" name="new_name" /> <button type="submit"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_COPY'); ?></button> </fieldset> <?php echo JHtml::_('form.token'); ?> </form> <?php if ($this->type != 'home'): ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_TEMPLATES_BUTTON_RENAME'), 'file-rename'); ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&task=template.renameFile&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" name="adminForm" id="adminForm"> <fieldset class="panelform"> <label id="new_name" class="hasTooltip" title="<?php echo JHtml::tooltipText(JText::_('COM_TEMPLATES_NEW_FILE_NAME')); ?>"><?php echo JText::_('COM_TEMPLATES_NEW_FILE_NAME')?></label> <input type="text" name="new_name" /> <button type="submit"><?php echo JText::_('COM_TEMPLATES_BUTTON_RENAME'); ?></button> </fieldset> <?php echo JHtml::_('form.token'); ?> </form> <?php endif; ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_TEMPLATES_OVERRIDES_MODULES'), 'override-module'); ?> <fieldset class="panelform"> <ul class="adminformlist"> <?php foreach($this->overridesList['modules'] as $module): ?> <li> <a href="<?php echo JRoute::_('index.php?option=com_templates&view=template&task=template.overrides&folder=' . $module->path . '&id=' . $input->getInt('id') . '&file=' . $this->file); ?>"> <span class="icon-copy"></span> <?php echo $module->name; ?> </a> </li> <?php endforeach; ?> </ul> </fieldset> <?php echo JHtml::_('sliders.panel', JText::_('COM_TEMPLATES_OVERRIDES_COMPONENTS'), 'override-component'); ?> <fieldset class="panelform"> <ul class="adminformlist"> <?php foreach ($this->overridesList['components'] as $key => $value): ?> <li class="component-folder"> <a href="#" class="component-folder-url"> <span class="icon-folder"></span> <?php echo $key; ?> </a> <ul class="adminformList"> <?php foreach ($value as $view): ?> <li> <a class="component-file-url" href="<?php echo JRoute::_('index.php?option=com_templates&view=template&task=template.overrides&folder=' . $view->path . '&id=' . $input->getInt('id') . '&file=' . $this->file); ?>"> <span class="icon-copy"></span> <?php echo $view->name; ?> </a> </li> <?php endforeach; ?> </ul> </li> <?php endforeach; ?> </ul> </fieldset> <?php echo JHtml::_('sliders.panel', JText::_('COM_TEMPLATES_OVERRIDES_LAYOUTS'), 'override-layout'); ?> <fieldset class="panelform"> <ul class="adminformlist"> <?php foreach($this->overridesList['layouts'] as $layout): ?> <li> <a href="<?php echo JRoute::_('index.php?option=com_templates&view=template&task=template.overrides&folder=' . $layout->path . '&id=' . $input->getInt('id') . '&file=' . $this->file); ?>"> <span class="icon-copy"></span> <?php echo $layout->name; ?> </a> </li> <?php endforeach; ?> </ul> </fieldset> <?php echo JHtml::_('sliders.end'); ?> </div> PKb��\b�W�@templates/hathor/html/com_templates/template/default_folders.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ksort($this->files, SORT_STRING); ?> <ul class='nav nav-list directory-tree'> <?php foreach($this->files as $key => $value): ?> <?php if(is_array($value)): ?> <li class="folder-select"> <a class='folder-url nowrap' data-id='<?php echo base64_encode($key); ?>' href=''> <span class='icon-folder-close'> <?php $explodeArray = explode('/', $key); echo end($explodeArray); ?></span> </a> <?php echo $this->folderTree($value); ?> </li> <?php endif; ?> <?php endforeach; ?> </ul> PKb��\6�;� 0 02templates/hathor/html/mod_menu/default_enabled.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_menu * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /* @var $menu JAdminCSSMenu */ $shownew = (boolean) $params->get('shownew', 1); $showhelp = $params->get('showhelp', 1); $user = JFactory::getUser(); $lang = JFactory::getLanguage(); // // Site SubMenu // $menu->addChild( new JMenuNode(JText::_('MOD_MENU_CONTROL_PANEL'), 'index.php', 'class:cpanel'), true ); $menu->getParent(); // // Users Submenu // if ($user->authorise('core.manage', 'com_users')) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_USERS_USERS'), '#'), true ); $createUser = $shownew && $user->authorise('core.create', 'com_users'); $createGrp = $user->authorise('core.admin', 'com_users'); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_USERS_USER_MANAGER'), 'index.php?option=com_users&view=users', 'class:user'), $createUser ); if ($createUser) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_USERS_ADD_USER'), 'index.php?option=com_users&task=user.add', 'class:newarticle') ); $menu->getParent(); } if ($createGrp) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_USERS_GROUPS'), 'index.php?option=com_users&view=groups', 'class:groups'), $createUser ); if ($createUser) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_USERS_ADD_GROUP'), 'index.php?option=com_users&task=group.add', 'class:newarticle') ); $menu->getParent(); } $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_USERS_LEVELS'), 'index.php?option=com_users&view=levels', 'class:levels'), $createUser ); if ($createUser) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_USERS_ADD_LEVEL'), 'index.php?option=com_users&task=level.add', 'class:newarticle') ); $menu->getParent(); } } $menu->addSeparator(); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_USERS_NOTES'), 'index.php?option=com_users&view=notes', 'class:user-note'), $createUser ); if ($createUser) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_USERS_ADD_NOTE'), 'index.php?option=com_users&task=note.add', 'class:newarticle') ); $menu->getParent(); } $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_USERS_NOTE_CATEGORIES'), 'index.php?option=com_categories&view=categories&extension=com_users', 'class:category'), $createUser ); if ($createUser) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_CONTENT_NEW_CATEGORY'), 'index.php?option=com_categories&task=category.add&extension=com_users', 'class:newarticle') ); $menu->getParent(); } if (JFactory::getApplication()->get('massmailoff', 0) != 1) { $menu->addSeparator(); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_MASS_MAIL_USERS'), 'index.php?option=com_users&view=mail', 'class:massmail') ); } $menu->getParent(); } // // Menus Submenu // if ($user->authorise('core.manage', 'com_menus')) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_MENUS'), '#'), true ); $createMenu = $shownew && $user->authorise('core.create', 'com_menus'); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_MENU_MANAGER'), 'index.php?option=com_menus&view=menus', 'class:menumgr'), $createMenu ); if ($createMenu) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_MENU_MANAGER_NEW_MENU'), 'index.php?option=com_menus&view=menu&layout=edit', 'class:newarticle') ); $menu->getParent(); } $menu->addSeparator(); // Menu Types $menuTypes = ModMenuHelper::getMenus(); $menuTypes = JArrayHelper::sortObjects($menuTypes, 'title', 1, false); foreach ($menuTypes as $menuType) { $alt = '*' .$menuType->sef. '*'; if ($menuType->home == 0) { $titleicon = ''; } elseif ($menuType->home == 1 && $menuType->language == '*') { $titleicon = ' <span class="icon-home"></span>'; } elseif ($menuType->home > 1) { $titleicon = ' <span>'.JHtml::_('image', 'mod_languages/icon-16-language.png', $menuType->home, array('title' => JText::_('MOD_MENU_HOME_MULTIPLE')), true).'</span>'; } else { $image = JHtml::_('image', 'mod_languages/'.$menuType->image.'.gif', null, null, true, true); if (!$image) { $titleicon = ' <span>'.JHtml::_('image', 'mod_languages/icon-16-language.png', $alt, array('title' => $menuType->title_native), true).'</span>'; } else { $titleicon = ' <span>' . JHtml::_('image', 'mod_languages/' . $menuType->image . '.gif', $alt, array('title' => $menuType->title_native), true) . '</span>'; } } $menu->addChild( new JMenuNode($menuType->title, 'index.php?option=com_menus&view=items&menutype='.$menuType->menutype, 'class:menu', null, null, $titleicon), $createMenu ); if ($createMenu) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_MENU_MANAGER_NEW_MENU_ITEM'), 'index.php?option=com_menus&view=item&layout=edit&menutype='.$menuType->menutype, 'class:newarticle') ); $menu->getParent(); } } $menu->getParent(); } // // Content Submenu // if ($user->authorise('core.manage', 'com_content')) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_CONTENT'), '#'), true ); $createContent = $shownew && $user->authorise('core.create', 'com_content'); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_CONTENT_ARTICLE_MANAGER'), 'index.php?option=com_content', 'class:article'), $createContent ); if ($createContent) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_CONTENT_NEW_ARTICLE'), 'index.php?option=com_content&task=article.add', 'class:newarticle') ); $menu->getParent(); } $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_CONTENT_CATEGORY_MANAGER'), 'index.php?option=com_categories&extension=com_content', 'class:category'), $createContent ); if ($createContent) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_CONTENT_NEW_CATEGORY'), 'index.php?option=com_categories&task=category.add&extension=com_content', 'class:newarticle') ); $menu->getParent(); } $menu->addChild( new JMenuNode(JText::_('MOD_MENU_COM_CONTENT_FEATURED'), 'index.php?option=com_content&view=featured', 'class:featured') ); $menu->addSeparator(); if ($user->authorise('core.manage', 'com_media')) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_MEDIA_MANAGER'), 'index.php?option=com_media', 'class:media')); } $menu->getParent(); } // // Components Submenu // // Get the authorised components and sub-menus. $components = ModMenuHelper::getComponents(true); // Check if there are any components, otherwise, don't render the menu if ($components) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_COMPONENTS'), '#'), true); foreach ($components as &$component) { if (!empty($component->submenu)) { // This component has a db driven submenu. $menu->addChild(new JMenuNode($component->text, $component->link, $component->img), true); foreach ($component->submenu as $sub) { $menu->addChild(new JMenuNode($sub->text, $sub->link, $sub->img)); } $menu->getParent(); } else { $menu->addChild(new JMenuNode($component->text, $component->link, $component->img)); } } $menu->getParent(); } // // Extensions Submenu // $im = $user->authorise('core.manage', 'com_installer'); $mm = $user->authorise('core.manage', 'com_modules'); $pm = $user->authorise('core.manage', 'com_plugins'); $tm = $user->authorise('core.manage', 'com_templates'); $lm = $user->authorise('core.manage', 'com_languages'); if ($im || $mm || $pm || $tm || $lm) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_EXTENSIONS'), '#'), true); if ($im) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_EXTENSION_MANAGER'), 'index.php?option=com_installer', 'class:install')); $menu->addSeparator(); } if ($mm) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_MODULE_MANAGER'), 'index.php?option=com_modules', 'class:module')); } if ($pm) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_PLUGIN_MANAGER'), 'index.php?option=com_plugins', 'class:plugin')); } if ($tm) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_TEMPLATE_MANAGER'), 'index.php?option=com_templates', 'class:themes')); } if ($lm) { $menu->addChild(new JMenuNode(JText::_('MOD_MENU_EXTENSIONS_LANGUAGE_MANAGER'), 'index.php?option=com_languages', 'class:language')); } $menu->getParent(); } // // Help Submenu // if ($showhelp == 1) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP'), '#'), true ); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP_JOOMLA'), 'index.php?option=com_admin&view=help', 'class:help') ); $menu->addSeparator(); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP_SUPPORT_OFFICIAL_FORUM'), 'http://forum.joomla.org', 'class:help-forum', false, '_blank') ); if ($forum_url = $params->get('forum_url')) { $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP_SUPPORT_CUSTOM_FORUM'), $forum_url, 'class:help-forum', false, '_blank') ); } $debug = $lang->setDebug(false); if ($lang->hasKey('MOD_MENU_HELP_SUPPORT_OFFICIAL_LANGUAGE_FORUM_VALUE') && JText::_('MOD_MENU_HELP_SUPPORT_OFFICIAL_LANGUAGE_FORUM_VALUE') != '') { $forum_url = 'http://forum.joomla.org/viewforum.php?f=' . (int) JText::_('MOD_MENU_HELP_SUPPORT_OFFICIAL_LANGUAGE_FORUM_VALUE'); $lang->setDebug($debug); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP_SUPPORT_OFFICIAL_LANGUAGE_FORUM'), $forum_url, 'class:help-forum', false, '_blank') ); } $lang->setDebug($debug); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP_DOCUMENTATION'), 'https://docs.joomla.org', 'class:help-docs', false, '_blank') ); $menu->addSeparator(); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP_EXTENSIONS'), 'http://extensions.joomla.org', 'class:help-jed', false, '_blank') ); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP_TRANSLATIONS'), 'http://community.joomla.org/translations.html', 'class:help-trans', false, '_blank') ); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP_RESOURCES'), 'http://resources.joomla.org', 'class:help-jrd', false, '_blank') ); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP_COMMUNITY'), 'http://community.joomla.org', 'class:help-community', false, '_blank') ); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP_SECURITY'), 'http://developer.joomla.org/security-centre.html', 'class:help-security', false, '_blank') ); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP_DEVELOPER'), 'http://developer.joomla.org', 'class:help-dev', false, '_blank') ); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP_XCHANGE'), 'http://joomla.stackexchange.com', 'class:help-dev', false, '_blank') ); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_HELP_SHOP'), 'http://shop.joomla.org', 'class:help-shop', false, '_blank') ); $menu->getParent(); } // // Admin Settingss Submenu // $su = $user->authorise('core.admin'); $cam = $user->authorise('core.manage', 'com_cache'); $cim = $user->authorise('core.manage', 'com_checkin'); $menu->addChild(new JMenuNode(JText::_('MOD_MENU_SETTINGS'), '#'), true); if ($su): $menu->addChild( new JMenuNode(JText::_('MOD_MENU_CONFIGURATION'), 'index.php?option=com_config', 'class:config') ); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_SYSTEM_INFORMATION'), 'index.php?option=com_admin&view=sysinfo', 'class:info') ); endif; if ($cam): $menu->addChild( new JMenuNode(JText::_('MOD_MENU_CLEAR_CACHE'), 'index.php?option=com_cache', 'class:clear') ); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_PURGE_EXPIRED_CACHE'), 'index.php?option=com_cache&view=purge', 'class:purge') ); endif; if ($cim): $menu->addChild( new JMenuNode(JText::_('MOD_MENU_GLOBAL_CHECKIN'), 'index.php?option=com_checkin', 'class:checkin') ); endif; $menu->addChild( new JMenuNode(JText::_('MOD_MENU_USER_PROFILE'), 'index.php?option=com_admin&task=profile.edit&id='. $user->id, 'class:profile') ); $menu->addChild( new JMenuNode(JText::_('MOD_MENU_LOGOUT'), 'index.php?option=com_login&task=logout&'. JSession::getFormToken() .'=1', 'class:logout') ); $menu->getParent(); PKb��\�xE!nn:templates/hathor/html/com_postinstall/messages/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_postinstall * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $renderer = JFactory::getDocument()->loadRenderer('module'); $options = array('style' => 'raw'); $mod = JModuleHelper::getModule('mod_feed'); $param = array("rssurl" => "https://www.joomla.org/announcements/release-news.feed?type=rss", "rsstitle" => 0, "rssdesc" => 0, "rssimage" => 1, "rssitems" => 5, "rssitemdesc" => 1, "word_count" => 200, "cache" => 0); $params = array('params' => json_encode($param)); ?> <?php if (empty($this->items)): ?> <h2><?php echo JText::_('COM_POSTINSTALL_LBL_NOMESSAGES_TITLE') ?></h2> <p><?php echo JText::_('COM_POSTINSTALL_LBL_NOMESSAGES_DESC') ?></p> <button onclick="window.location='index.php?option=com_postinstall&view=messages&task=reset&eid=<?php echo $this->eid; ?>&<?php echo $this->token ?>=1'; return false;" class="btn btn-warning"> <span class="icon icon-eye-open"></span> <?php echo JText::_('COM_POSTINSTALL_BTN_RESET') ?> </button> <?php else: ?> <?php if ($this->eid == 700): echo JHtml::_('sliders.start', 'panel-sliders', array('useCookie' => '1')); echo JHtml::_('sliders.panel', JText::_('COM_POSTINSTALL_LBL_MESSAGES'), 'postinstall-panel-messages'); else: ?> <h2><?php echo JText::_('COM_POSTINSTALL_LBL_MESSAGES') ?></h2> <?php endif; ?> <?php foreach($this->items as $item): ?> <fieldset> <legend><?php echo JText::_($item->title_key) ?></legend> <p class="small"> <?php echo JText::sprintf('COM_POSTINSTALL_LBL_SINCEVERSION', $item->version_introduced) ?> </p> <p><?php echo JText::_($item->description_key) ?></p> <div> <?php if ($item->type !== 'message'): ?> <button onclick="window.location='index.php?option=com_postinstall&view=messages&task=action&id=<?php echo $item->postinstall_message_id ?>&<?php echo $this->token ?>=1'; return false;" class="btn btn-primary"> <?php echo JText::_($item->action_key) ?> </button> <?php endif; ?> <?php if (JFactory::getUser()->authorise('core.edit.state', 'com_postinstall')) : ?> <button onclick="window.location='index.php?option=com_postinstall&view=message&task=unpublish&id=<?php echo $item->postinstall_message_id ?>&<?php echo $this->token ?>=1'; return false;" class="btn btn-inverse btn-small"> <?php echo JText::_('COM_POSTINSTALL_BTN_HIDE') ?> </button> <?php endif; ?> </div> </fieldset> <?php endforeach; ?> <?php if ($this->eid == 700): echo JHtml::_('sliders.panel', JText::_('COM_POSTINSTALL_LBL_RELEASENEWS'), 'postinstall-panel-releasenotes'); ?> <?php echo $renderer->render($mod, $params, $options); ?> <?php echo JHtml::_('sliders.end'); endif; ?> <?php endif; ?> PKb��\�4k���5templates/hathor/html/com_users/debuguser/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('bootstrap.tooltip'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&view=debuguser&user_id='.(int) $this->state->get('filter.user_id'));?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('COM_USERS_SEARCH_ASSETS'); ?></legend> <div class="filter-search fltlft"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('COM_USERS_SEARCH_ASSETS'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_USERS_SEARCH_USERS'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_RESET'); ?></button> </div> <div class="filter-select fltrt"> <label class="selectlabel" for="filter_component"><?php echo JText::_('COM_USERS_OPTION_SELECT_COMPONENT'); ?></label> <select name="filter_component" id="filter_component"> <option value=""><?php echo JText::_('COM_USERS_OPTION_SELECT_COMPONENT');?></option> <?php if (!empty($this->components)) { echo JHtml::_('select.options', $this->components, 'value', 'text', $this->state->get('filter.component')); }?> </select> <label class="selectlabel" for="filter_level_start"><?php echo JText::_('COM_USERS_OPTION_SELECT_LEVEL_START'); ?></label> <select name="filter_level_start" id="filter_level_start"> <option value=""><?php echo JText::_('COM_USERS_OPTION_SELECT_LEVEL_START');?></option> <?php echo JHtml::_('select.options', $this->levels, 'value', 'text', $this->state->get('filter.level_start'));?> </select> <label class="selectlabel" for="filter_level_end"><?php echo JText::_('COM_USERS_OPTION_SELECT_LEVEL_END'); ?></label> <select name="filter_level_end" id="filter_level_end"> <option value=""><?php echo JText::_('COM_USERS_OPTION_SELECT_LEVEL_END');?></option> <?php echo JHtml::_('select.options', $this->levels, 'value', 'text', $this->state->get('filter.level_end'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <div> <?php echo JText::_('COM_USERS_DEBUG_LEGEND'); ?> <span class="check-0 swatch"><?php echo JText::sprintf('COM_USERS_DEBUG_IMPLICIT_DENY', '-');?></span> <span class="check-a swatch"><?php echo JText::sprintf('COM_USERS_DEBUG_EXPLICIT_ALLOW', '✓');?></span> <span class="check-d swatch"><?php echo JText::sprintf('COM_USERS_DEBUG_EXPLICIT_DENY', '✗');?></span> </div> <table class="adminlist"> <thead> <tr> <th class="left"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_ASSET_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="left"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_ASSET_NAME', 'a.name', $listDirn, $listOrder); ?> </th> <?php foreach ($this->actions as $key => $action) : ?> <th class="width-5"> <span class="hasTooltip" title="<?php echo JHtml::tooltipText($key, $action[1]); ?>"><?php echo JText::_($key); ?></span> </th> <?php endforeach; ?> <th class="width-5 nowrap"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_LFT', 'a.lft', $listDirn, $listOrder); ?> </th> <th class="width-5 nowrap"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : ?> <tr class="row1"> <th> <?php echo $this->escape($item->title); ?> </th> <td class="nowrap"> <?php echo str_repeat('<span class="gi">|—</span>', $item->level) ?> <?php echo $this->escape($item->name); ?> </td> <?php foreach ($this->actions as $action) : ?> <?php $name = $action[0]; $check = $item->checks[$name]; if ($check === true) : $class = 'check-a'; $text = '✓'; elseif ($check === false) : $class = 'check-d'; $text = '✗'; elseif ($check === null) : $class = 'check-0'; $text = '-'; else : $class = ''; $text = ' '; endif; ?> <td class="center <?php echo $class;?>"> <?php echo $text; ?> </td> <?php endforeach; ?> <td class="center"> <?php echo (int) $item->lft; ?> - <?php echo (int) $item->rgt; ?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <div> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </div> </form> PKb��\�-templates/hathor/html/com_users/user/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); // Get the form fieldsets. $fieldsets = $this->form->getFieldsets(); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'user.cancel' || document.formvalidator.isValid(document.getElementById('user-form'))) { Joomla.submitform(task, document.getElementById('user-form')); } } Joomla.twoFactorMethodChange = function(e) { var selectedPane = 'com_users_twofactor_' + jQuery('#jform_twofactor_method').val(); jQuery.each(jQuery('#com_users_twofactor_forms_container>div'), function(i, el) { if (el.id != selectedPane) { jQuery('#' + el.id).hide(0); } else { jQuery('#' + el.id).show(0); } }); } "); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="user-form" class="form-validate" enctype="multipart/form-data"> <div class="col main-section"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_USERS_USER_ACCOUNT_DETAILS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('user_details') as $field) : ?> <li><?php echo $field->label; ?> <?php echo $field->input; ?></li> <?php endforeach; ?> </ul> </fieldset> </div> <div class="col options-section"> <?php echo JHtml::_('sliders.start', 'user-slider', array('useCookie' => 1)); ?> <?php if ($this->grouplist) : ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_USERS_ASSIGNED_GROUPS'), 'groups'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('COM_USERS_ASSIGNED_GROUPS'); ?></legend> <?php echo $this->loadTemplate('groups'); ?> </fieldset> <?php endif; ?> <?php foreach ($fieldsets as $fieldset) : if ($fieldset->name == 'user_details') : continue; endif; echo JHtml::_('sliders.panel', JText::_($fieldset->label), $fieldset->name); ?> <fieldset class="panelform"> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset($fieldset->name) as $field) : ?> <?php if ($field->hidden) : ?> <?php echo $field->input; ?> <?php else : ?> <li><?php echo $field->label; ?> <?php echo $field->input; ?></li> <?php endif; ?> <?php endforeach; ?> </ul> </fieldset> <?php endforeach; ?> <?php if (!empty($this->tfaform) && $this->item->id): ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_USERS_USER_TWO_FACTOR_AUTH'), 'twofactorauth'); ?> <div class="control-group"> <div class="control-label"> <label id="jform_twofactor_method-lbl" for="jform_twofactor_method" class="hasTooltip" title="<?php echo '<strong>' . JText::_('COM_USERS_USER_FIELD_TWOFACTOR_LABEL') . '</strong><br />' . JText::_('COM_USERS_USER_FIELD_TWOFACTOR_DESC'); ?>"> <?php echo JText::_('COM_USERS_USER_FIELD_TWOFACTOR_LABEL'); ?> </label> </div> <div class="controls"> <?php echo JHtml::_('select.genericlist', Usershelper::getTwoFactorMethods(), 'jform[twofactor][method]', array('onchange' => 'Joomla.twoFactorMethodChange()'), 'value', 'text', $this->otpConfig->method, 'jform_twofactor_method', false) ?> </div> </div> <div id="com_users_twofactor_forms_container"> <?php foreach($this->tfaform as $form): ?> <?php $style = $form['method'] == $this->otpConfig->method ? 'display: block' : 'display: none'; ?> <div id="com_users_twofactor_<?php echo $form['method'] ?>" style="<?php echo $style; ?>"> <?php echo $form['form'] ?> </div> <?php endforeach; ?> </div> <fieldset> <legend> <?php echo JText::_('COM_USERS_USER_OTEPS') ?> </legend> <div class="alert alert-info"> <?php echo JText::_('COM_USERS_USER_OTEPS_DESC') ?> </div> <?php if (empty($this->otpConfig->otep)): ?> <div class="alert alert-warning"> <?php echo JText::_('COM_USERS_USER_OTEPS_WAIT_DESC') ?> </div> <?php else: ?> <?php foreach ($this->otpConfig->otep as $otep): ?> <span class="span3"> <?php echo substr($otep, 0, 4) ?>-<?php echo substr($otep, 4, 4) ?>-<?php echo substr($otep, 8, 4) ?>-<?php echo substr($otep, 12, 4) ?> </span> <?php endforeach; ?> <div class="clearfix"></div> <?php endif; ?> </fieldset> <?php endif; ?> <?php echo JHtml::_('sliders.end'); ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\��@AA1templates/hathor/html/com_users/notes/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canEdit = $user->authorise('core.edit', 'com_users'); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&view=notes');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('COM_USERS_SEARCH_IN_NOTE_TITLE'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_USERS_SEARCH_IN_NOTE_TITLE'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <span class="faux-label"><?php echo JText::_('COM_USERS_FILTER_LABEL'); ?></span> <label class="selectlabel" for="filter_category_id"> <?php echo JText::_('JOPTION_SELECT_CATEGORY'); ?> </label> <select name="filter_category_id" id="filter_category_id" > <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option> <?php echo JHtml::_( 'select.options', JHtml::_('category.options', 'com_users'), 'value', 'text', $this->state->get('filter.category_id') ); ?> </select> <label class="selectlabel" for="filter_published"> <?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?> </label> <select name="filter_published" id="filter_published"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_( 'select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.state'), true ); ?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="toggle" value="" class="checklist-toggle" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="width-15"> <?php echo JHtml::_('grid.sort', 'COM_USERS_USER_HEADING', 'u.name', $listDirn, $listOrder); ?> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'COM_USERS_SUBJECT_HEADING', 'a.subject', $listDirn, $listOrder); ?> </th> <th class="width-20"> <?php echo JHtml::_('grid.sort', 'COM_USERS_CATEGORY_HEADING', 'c.title', $listDirn, $listOrder); ?> </th> <th class="width-5"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?> </th> <th class="width-10"> <?php echo JHtml::_('grid.sort', 'COM_USERS_REVIEW_HEADING', 'a.review_time', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : ?> <?php $canChange = $user->authorise('core.edit.state', 'com_users'); ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center checklist"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_users&task=note.edit&id='.$item->id);?>"> <?php echo $this->escape($item->user_name); ?></a> <?php else : ?> <?php echo $this->escape($item->user_name); ?> <?php endif; ?> </td> <td> <?php if ($item->subject) : ?> <?php echo $this->escape($item->subject); ?> <?php else : ?> <?php echo JText::_('COM_USERS_EMPTY_SUBJECT'); ?> <?php endif; ?> </td> <td class="center"> <?php if ($item->catid && $item->cparams->get('image')) : ?> <?php echo JHtml::_('users.image', $item->cparams->get('image')); ?> <?php endif; ?> <?php echo $this->escape($item->category_title); ?> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->state, $i, 'notes.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?> </td> <td class="center"> <?php if ($item->review_time !== JFactory::getDbo()->getNullDate()) : ?> <?php echo JHtml::_('date', $item->review_time, JText::_('DATE_FORMAT_LC4')); ?> <?php else : ?> <?php echo JText::_('COM_USERS_EMPTY_REVIEW'); ?> <?php endif; ?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <div> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </div> </form> PKb��\!�'� � /templates/hathor/html/com_users/users/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); $input = JFactory::getApplication()->input; $field = $input->getCmd('field'); $function = 'jSelectUser_'.$field; $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&view=users&layout=modal&tmpl=component&groups=' . $input->get('groups', '', 'BASE64') . '&excluded=' . $input->get('excluded', '', 'BASE64'));?>" method="post" name="adminForm" id="adminForm"> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_USERS_SEARCH_IN_NAME'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> <button type="button" onclick="if (window.parent) window.parent.<?php echo $this->escape($function);?>('', '<?php echo JText::_('JLIB_FORM_SELECT_USER') ?>');"><?php echo JText::_('JOPTION_NO_USER')?></button> </div> <div class="filter-select"> <label for="filter_group_id"> <?php echo JText::_('COM_USERS_FILTER_USER_GROUP'); ?> </label> <?php echo JHtml::_('access.usergroup', 'filter_group_id', $this->state->get('filter.group_id')); ?> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <table class="adminlist modal"> <thead> <tr> <th class="title"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_NAME', 'a.name', $listDirn, $listOrder); ?> </th> <th class="nowrap width=25"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_USERNAME', 'a.username', $listDirn, $listOrder); ?> </th> <th class="nowrap width=25"> <?php echo JText::_('COM_USERS_HEADING_GROUPS'); ?> </th> </tr> </thead> <tbody> <?php $i = 0; foreach ($this->items as $item) : ?> <tr class="row<?php echo $i % 2; ?>"> <td> <a class="pointer" onclick="if (window.parent) window.parent.<?php echo $this->escape($function);?>('<?php echo $item->id; ?>', '<?php echo $this->escape(addslashes($item->name)); ?>');"> <?php echo $item->name; ?></a> </td> <td class="center"> <?php echo $item->username; ?> </td> <td class="title"> <?php echo nl2br($item->group_names); ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\~u���"�"1templates/hathor/html/com_users/users/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $loggeduser = JFactory::getUser(); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&view=users');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('COM_USERS_SEARCH_USERS'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('COM_USERS_SEARCH_USERS'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_USERS_SEARCH_USERS'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_RESET'); ?></button> </div> <div class="filter-select"> <span class="faux-label"><?php echo JText::_('COM_USERS_FILTER_LABEL'); ?></span> <label class="selectlabel" for="filter_state"> <?php echo JText::_('COM_USERS_FILTER_LABEL'); ?> </label> <select name="filter_state" id="filter_state"> <option value="*"><?php echo JText::_('COM_USERS_FILTER_STATE');?></option> <?php echo JHtml::_('select.options', UsersHelper::getStateOptions(), 'value', 'text', $this->state->get('filter.state'));?> </select> <label class="selectlabel" for="filter_active"> <?php echo JText::_('COM_USERS_FILTER_ACTIVE'); ?> </label> <select name="filter_active" id="filter_active"> <option value="*"><?php echo JText::_('COM_USERS_FILTER_ACTIVE');?></option> <?php echo JHtml::_('select.options', UsersHelper::getActiveOptions(), 'value', 'text', $this->state->get('filter.active'));?> </select> <label class="selectlabel" for="filter_group_id"> <?php echo JText::_('COM_USERS_FILTER_USERGROUP'); ?> </label> <select name="filter_group_id" id="filter_group_id"> <option value=""><?php echo JText::_('COM_USERS_FILTER_USERGROUP');?></option> <?php echo JHtml::_('select.options', UsersHelper::getGroups(), 'value', 'text', $this->state->get('filter.group_id'));?> </select> <label class="selectlabel" for="filter_range"> <?php echo JText::_('COM_USERS_FILTER_FILTER_DATE'); ?> </label> <select name="filter_range" id="filter_range" > <option value=""><?php echo JText::_('COM_USERS_OPTION_FILTER_DATE');?></option> <?php echo JHtml::_('select.options', Usershelper::getRangeOptions(), 'value', 'text', $this->state->get('filter.range'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_NAME', 'a.name', $listDirn, $listOrder); ?> </th> <th class="nowrap width-10"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_USERNAME', 'a.username', $listDirn, $listOrder); ?> </th> <th class="nowrap width-5"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_ENABLED', 'a.block', $listDirn, $listOrder); ?> </th> <th class="nowrap width-5"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_ACTIVATED', 'a.activation', $listDirn, $listOrder); ?> </th> <th class="nowrap width-10"> <?php echo JText::_('COM_USERS_HEADING_GROUPS'); ?> </th> <th class="nowrap width-15"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_EMAIL', 'a.email', $listDirn, $listOrder); ?> </th> <th class="nowrap width-15"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_LAST_VISIT_DATE', 'a.lastvisitDate', $listDirn, $listOrder); ?> </th> <th class="nowrap width-15"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_REGISTRATION_DATE', 'a.registerDate', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $canEdit = $this->canDo->get('core.edit'); $canChange = $loggeduser->authorise('core.edit.state', 'com_users'); // If this group is super admin and this user is not super admin, $canEdit is false if ((!$loggeduser->authorise('core.admin')) && JAccess::check($item->id, 'core.admin')) { $canEdit = false; $canChange = false; } ?> <tr class="row<?php echo $i % 2; ?>"> <td> <?php if ($canEdit) : ?> <?php echo JHtml::_('grid.id', $i, $item->id); ?> <?php endif; ?> </td> <td> <div class="fltrt"> <?php echo JHtml::_('users.filterNotes', $item->note_count, $item->id); ?> <?php echo JHtml::_('users.notes', $item->note_count, $item->id); ?> <?php echo JHtml::_('users.addNote', $item->id); ?> <?php if ($item->requireReset == '1') : ?> <span class="label label-warning"><?php echo JText::_('COM_USERS_PASSWORD_RESET_REQUIRED'); ?></span> <?php endif; ?> <?php echo JHtml::_('users.notesModal', $item->note_count, $item->id); ?> </div> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_users&task=user.edit&id='.(int) $item->id); ?>" title="<?php echo JText::sprintf('COM_USERS_EDIT_USER', $this->escape($item->name)); ?>"> <?php echo $this->escape($item->name); ?></a> <?php else : ?> <?php echo $this->escape($item->name); ?> <?php endif; ?> <?php if (JDEBUG) : ?> <div class="fltrt"><div class="button2-left smallsub"><div class="blank"><a href="<?php echo JRoute::_('index.php?option=com_users&view=debuguser&user_id='.(int) $item->id);?>"> <?php echo JText::_('COM_USERS_DEBUG_USER');?></a></div></div></div> <?php endif; ?> </td> <td class="center"> <?php echo $this->escape($item->username); ?> </td> <td class="center"> <?php if ($canChange) : ?> <?php if ($loggeduser->id != $item->id) : ?> <?php echo JHtml::_('grid.boolean', $i, !$item->block, 'users.unblock', 'users.block'); ?> <?php else : ?> <?php echo JHtml::_('grid.boolean', $i, !$item->block, 'users.block', null); ?> <?php endif; ?> <?php else : ?> <?php echo JText::_($item->block ? 'JNO' : 'JYES'); ?> <?php endif; ?> </td> <td class="center"> <?php echo JHtml::_('grid.boolean', $i, !$item->activation, 'users.activate', null); ?> </td> <td class="center"> <?php if (substr_count($item->group_names, "\n") > 1) : ?> <span class="hasTooltip" title="<?php echo JHtml::tooltipText(JText::_('COM_USERS_HEADING_GROUPS'), nl2br($item->group_names), 0); ?>"><?php echo JText::_('COM_USERS_USERS_MULTIPLE_GROUPS'); ?></span> <?php else : ?> <?php echo nl2br($item->group_names); ?> <?php endif; ?> </td> <td class="center"> <?php echo $this->escape($item->email); ?> </td> <td class="center"> <?php if ($item->lastvisitDate != '0000-00-00 00:00:00') : ?> <?php echo JHtml::_('date', $item->lastvisitDate, 'Y-m-d H:i:s'); ?> <?php else:?> <?php echo JText::_('JNEVER'); ?> <?php endif;?> </td> <td class="center"> <?php echo JHtml::_('date', $item->registerDate, 'Y-m-d H:i:s'); ?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php //Load the batch processing form. ?> <?php echo $this->loadTemplate('batch'); ?> <?php echo $this->pagination->getListFooter(); ?> <div> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </div> </form> PKb��\#��''2templates/hathor/html/com_users/groups/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.multiselect'); $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); JText::script('COM_USERS_GROUPS_CONFIRM_DELETE'); $groupsWithUsers = array(); foreach ($this->items as $i => $item) { if ($item->user_count > 0) { array_push($groupsWithUsers, $i); } } JFactory::getDocument()->addScriptDeclaration(' Joomla.submitbutton = function(task) { if (task == "groups.delete") { var f = document.adminForm; var cb = ""; var groupsWithUsers = [' . implode(',', $groupsWithUsers) . ']; for (index = 0; index < groupsWithUsers.length; ++index) { cb = f["cb" + groupsWithUsers[index]]; if (cb && cb.checked) { if (confirm(Joomla.JText._("COM_USERS_GROUPS_CONFIRM_DELETE"))) { Joomla.submitform(task); } return; } } } Joomla.submitform(task); }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&view=groups');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('COM_USERS_SEARCH_GROUPS_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('COM_USERS_SEARCH_GROUPS_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_USERS_SEARCH_IN_GROUPS'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JText::_('COM_USERS_HEADING_GROUP_TITLE'); ?> </th> <th class="width-10"> <?php echo JText::_('COM_USERS_HEADING_USERS_IN_GROUP'); ?> </th> <th class="nowrap id-col"> <?php echo JText::_('JGRID_HEADING_ID'); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $canCreate = $user->authorise('core.create', 'com_users'); $canEdit = $user->authorise('core.edit', 'com_users'); // If this group is super admin and this user is not super admin, $canEdit is false if (!$user->authorise('core.admin') && (JAccess::checkGroup($item->id, 'core.admin'))) { $canEdit = false; } $canChange = $user->authorise('core.edit.state', 'com_users'); ?> <tr class="row<?php echo $i % 2; ?>"> <td> <?php if ($canEdit) : ?> <?php echo JHtml::_('grid.id', $i, $item->id); ?> <?php endif; ?> </td> <td> <?php echo str_repeat('<span class="gi">|—</span>', $item->level) ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_users&task=group.edit&id='.$item->id);?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> <?php if (JDEBUG) : ?> <div class="fltrt"><div class="button2-left smallsub"><div class="blank"><a href="<?php echo JRoute::_('index.php?option=com_users&view=debuggroup&group_id='.(int) $item->id);?>"> <?php echo JText::_('COM_USERS_DEBUG_GROUP');?></a></div></div></div> <?php endif; ?> </td> <td class="center"> <?php echo $item->user_count ? $item->user_count : ''; ?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\��F^��2templates/hathor/html/com_users/levels/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.multiselect'); $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canOrder = $user->authorise('core.edit.state', 'com_users'); $saveOrder = $listOrder == 'a.ordering'; ?> <form action="<?php echo JRoute::_('index.php?option=com_users&view=levels');?>" method="post" id="adminForm" name="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('COM_USERS_SEARCH_ACCESS_LEVELS'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('COM_USERS_SEARCH_ACCESS_LEVELS'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_USERS_SEARCH_TITLE_LEVELS'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_RESET'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_LEVEL_NAME', 'a.title', $listDirn, $listOrder); ?> </th> <th class="nowrap ordering-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ORDERING', 'a.ordering', $listDirn, $listOrder); ?> <?php if ($canOrder && $saveOrder) :?> <?php echo JHtml::_('grid.order', $this->items, 'filesave.png', 'levels.saveorder'); ?> <?php endif; ?> </th> <th class="nowrap id-col"> <?php echo JText::_('JGRID_HEADING_ID'); ?> </th> <th class="width-40">   </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $ordering = ($listOrder == 'a.ordering'); $canCreate = $user->authorise('core.create', 'com_users'); $canEdit = $user->authorise('core.edit', 'com_users'); $canChange = $user->authorise('core.edit.state', 'com_users'); ?> <tr class="row<?php echo $i % 2; ?>"> <td> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_users&task=level.edit&id='.$item->id);?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> </td> <td class="order"> <?php if ($canChange) : ?> <?php if ($saveOrder) :?> <?php if ($listDirn == 'asc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, true, 'levels.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, true, 'levels.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php elseif ($listDirn == 'desc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, true, 'levels.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, true, 'levels.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php endif; ?> <?php endif; ?> <?php $disabled = $saveOrder ? '' : 'disabled="disabled"'; ?> <input type="text" name="order[]" value="<?php echo $item->ordering;?>" <?php echo $disabled ?> class="text-area-order" title="<?php echo $item->title; ?> order" /> <?php else : ?> <?php echo $item->ordering; ?> <?php endif; ?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> <td>   </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\ud��6templates/hathor/html/com_users/debuggroup/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('bootstrap.tooltip'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&view=debuggroup&user_id='.(int) $this->state->get('filter.user_id'));?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('COM_USERS_SEARCH_ASSETS'); ?></legend> <div class="filter-search fltlft"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('COM_USERS_SEARCH_ASSETS'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_USERS_SEARCH_USERS'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_RESET'); ?></button> </div> <div class="filter-select fltrt"> <label class="selectlabel" for="filter_component"><?php echo JText::_('COM_USERS_OPTION_SELECT_COMPONENT'); ?></label> <select name="filter_component" id="filter_component"> <option value=""><?php echo JText::_('COM_USERS_OPTION_SELECT_COMPONENT');?></option> <?php if (!empty($this->components)) { echo JHtml::_('select.options', $this->components, 'value', 'text', $this->state->get('filter.component')); }?> </select> <label class="selectlabel" for="filter_level_start"><?php echo JText::_('COM_USERS_OPTION_SELECT_LEVEL_START'); ?></label> <select name="filter_level_start" id="filter_level_start"> <option value=""><?php echo JText::_('COM_USERS_OPTION_SELECT_LEVEL_START');?></option> <?php echo JHtml::_('select.options', $this->levels, 'value', 'text', $this->state->get('filter.level_start'));?> </select> <label class="selectlabel" for="filter_level_end"><?php echo JText::_('COM_USERS_OPTION_SELECT_LEVEL_END'); ?></label> <select name="filter_level_end" id="filter_level_end"> <option value=""><?php echo JText::_('COM_USERS_OPTION_SELECT_LEVEL_END');?></option> <?php echo JHtml::_('select.options', $this->levels, 'value', 'text', $this->state->get('filter.level_end'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <div> <?php echo JText::_('COM_USERS_DEBUG_LEGEND'); ?> <span class="check-0 swatch"><?php echo JText::sprintf('COM_USERS_DEBUG_IMPLICIT_DENY', '-');?></span> <span class="check-a swatch"><?php echo JText::sprintf('COM_USERS_DEBUG_EXPLICIT_ALLOW', '✓');?></span> <span class="check-d swatch"><?php echo JText::sprintf('COM_USERS_DEBUG_EXPLICIT_DENY', '✗');?></span> </div> <table class="adminlist"> <thead> <tr> <th class="left"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_ASSET_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="left"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_ASSET_NAME', 'a.name', $listDirn, $listOrder); ?> </th> <?php foreach ($this->actions as $key => $action) : ?> <th class="width-5"> <span class="hasTooltip" title="<?php echo JHtml::tooltipText($key, $action[1]); ?>"><?php echo JText::_($key); ?></span> </th> <?php endforeach; ?> <th class="width-5 nowrap"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_LFT', 'a.lft', $listDirn, $listOrder); ?> </th> <th class="width-5 nowrap"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : ?> <tr class="row1"> <td> <?php echo $this->escape($item->title); ?> </td> <td class="nowrap"> <?php echo str_repeat('<span class="gi">|—</span>', $item->level) ?> <?php echo $this->escape($item->name); ?> </td> <?php foreach ($this->actions as $action) : ?> <?php $name = $action[0]; $check = $item->checks[$name]; if ($check === true) : $class = 'check-a'; $text = '✓'; elseif ($check === false) : $class = 'check-d'; $text = '✗'; elseif ($check === null) : $class = 'check-0'; $text = '-'; else : $class = ''; $text = ' '; endif; ?> <td class="center <?php echo $class;?>"> <?php echo $text; ?> </td> <?php endforeach; ?> <td class="center"> <?php echo (int) $item->lft; ?> - <?php echo (int) $item->rgt; ?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <div> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </div> </form> PKb��\ujH%H%7templates/hathor/html/com_weblinks/weblinks/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.multiselect'); JHtml::_('behavior.modal'); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canOrder = $user->authorise('core.edit.state', 'com_weblinks.category'); $saveOrder = $listOrder == 'a.ordering'; ?> <form action="<?php echo JRoute::_('index.php?option=com_weblinks&view=weblinks'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_WEBLINKS_SEARCH_IN_TITLE'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_published"> <?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?> </label> <select name="filter_published" id="filter_published"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.state'), true);?> </select> <label class="selectlabel" for="filter_category_id"> <?php echo JText::_('JOPTION_SELECT_CATEGORY'); ?> </label> <select name="filter_category_id" id="filter_category_id"> <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option> <?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_weblinks'), 'value', 'text', $this->state->get('filter.category_id'));?> </select> <label class="selectlabel" for="filter_access"> <?php echo JText::_('JOPTION_SELECT_ACCESS'); ?> </label> <select name="filter_access" id="filter_access"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS');?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access'));?> </select> <label class="selectlabel" for="filter_language"> <?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?> </label> <select name="filter_language" id="filter_language"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE');?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language'));?> </select> <label class="selectlabel" for="filter_tag"> <?php echo JText::_('JOPTION_SELECT_TAG'); ?> </label> <select name="filter_tag" id="filter_tag"> <option value=""><?php echo JText::_('JOPTION_SELECT_TAG');?></option> <?php echo JHtml::_('select.options', JHtml::_('tag.options', true, true), 'value', 'text', $this->state->get('filter.tag'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?> </th> <th class="nowrap title category-col"> <?php echo JHtml::_('grid.sort', 'JCATEGORY', 'category_title', $listDirn, $listOrder); ?> </th> <th class="nowrap ordering-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ORDERING', 'a.ordering', $listDirn, $listOrder); ?> <?php if ($canOrder && $saveOrder) :?> <?php echo JHtml::_('grid.order', $this->items, 'filesave.png', 'weblinks.saveorder'); ?> <?php endif; ?> </th> <th class="title access-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?> </th> <th class="hits-col"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_HITS', 'a.hits', $listDirn, $listOrder); ?> </th> <th class="width-5"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'a.language', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $ordering = ($listOrder == 'a.ordering'); $item->cat_link = JRoute::_('index.php?option=com_categories&extension=com_weblinks&task=edit&type=other&cid[]=' . $item->catid); $canCreate = $user->authorise('core.create', 'com_weblinks.category.' . $item->catid); $canEdit = $user->authorise('core.edit', 'com_weblinks.category.' . $item->catid); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_weblinks.category.' . $item->catid) && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>"> <td> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'weblinks.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_weblinks&task=weblink.edit&id='.(int) $item->id); ?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> <p class="smallsub"> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias));?></p> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->state, $i, 'weblinks.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?> </td> <td class="center"> <?php echo $this->escape($item->category_title); ?> </td> <td class="order"> <?php if ($canChange) : ?> <?php if ($saveOrder) :?> <?php if ($listDirn == 'asc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, ($item->catid == @$this->items[$i - 1]->catid), 'weblinks.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, ($item->catid == @$this->items[$i + 1]->catid), 'weblinks.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php elseif ($listDirn == 'desc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, ($item->catid == @$this->items[$i - 1]->catid), 'weblinks.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, ($item->catid == @$this->items[$i + 1]->catid), 'weblinks.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php endif; ?> <?php endif; ?> <?php $disabled = $saveOrder ? '' : 'disabled="disabled"'; ?> <input type="text" name="order[]" value="<?php echo $item->ordering;?>" <?php echo $disabled ?> class="text-area-order" title="<?php echo $item->title; ?> order" /> <?php else : ?> <?php echo $item->ordering; ?> <?php endif; ?> </td> <td class="center"> <?php echo $this->escape($item->access_level); ?> </td> <td class="center"> <?php echo $item->hits; ?> </td> <td class="center"> <?php if ($item->language == '*') : ?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <div class="clr"> </div> <?php //Load the batch processing form. ?> <?php echo $this->loadTemplate('batch'); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\����3templates/hathor/html/com_weblinks/weblink/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); $saveHistory = $this->state->get('params')->get('save_history', 0); JHtml::_('behavior.formvalidator'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'weblink.cancel' || document.formvalidator.isValid(document.id('weblink-form'))) { " . $this->form->getField('description')->save() . " Joomla.submitform(task, document.getElementById('weblink-form')); } } "); ?> <div class="weblink-edit"> <form action="<?php echo JRoute::_('index.php?option=com_weblinks&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="weblink-form" class="form-validate"> <div class="col main-section"> <fieldset class="adminform"> <legend><?php echo empty($this->item->id) ? JText::_('COM_WEBLINKS_NEW_WEBLINK') : JText::sprintf('COM_WEBLINKS_EDIT_WEBLINK', $this->item->id); ?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('title'); ?> <?php echo $this->form->getInput('title'); ?></li> <li><?php echo $this->form->getLabel('alias'); ?> <?php echo $this->form->getInput('alias'); ?></li> <li><?php echo $this->form->getLabel('url'); ?> <?php echo $this->form->getInput('url'); ?></li> <li><?php echo $this->form->getLabel('catid'); ?> <?php echo $this->form->getInput('catid'); ?></li> <li><?php echo $this->form->getLabel('state'); ?> <?php echo $this->form->getInput('state'); ?></li> <li><?php echo $this->form->getLabel('access'); ?> <?php echo $this->form->getInput('access'); ?></li> <li><?php echo $this->form->getLabel('ordering'); ?> <?php echo $this->form->getInput('ordering'); ?></li> <li><?php echo $this->form->getLabel('language'); ?> <?php echo $this->form->getInput('language'); ?></li> <!-- Tag field --> <li><?php echo $this->form->getLabel('tags'); ?> <div class="is-tagbox"> <?php echo $this->form->getInput('tags'); ?> </div> </li> <?php if ($saveHistory) : ?> <li><?php echo $this->form->getLabel('version_note'); ?> <?php echo $this->form->getInput('version_note'); ?></li> <?php endif; ?> <li><?php echo $this->form->getLabel('id'); ?> <?php echo $this->form->getInput('id'); ?></li> </ul> <div> <?php echo $this->form->getLabel('description'); ?> <div class="clr"></div> <?php echo $this->form->getInput('description'); ?> </div> </fieldset> </div> <div class="col options-section"> <?php echo JHtml::_('sliders.start', 'weblink-sliders-'.$this->item->id, array('useCookie' => 1)); ?> <?php echo JHtml::_('sliders.panel', JText::_('JGLOBAL_FIELDSET_PUBLISHING'), 'publishing-details'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('JGLOBAL_FIELDSET_PUBLISHING'); ?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('created_by'); ?> <?php echo $this->form->getInput('created_by'); ?></li> <li><?php echo $this->form->getLabel('created_by_alias'); ?> <?php echo $this->form->getInput('created_by_alias'); ?></li> <li><?php echo $this->form->getLabel('created'); ?> <?php echo $this->form->getInput('created'); ?></li> <li><?php echo $this->form->getLabel('publish_up'); ?> <?php echo $this->form->getInput('publish_up'); ?></li> <li><?php echo $this->form->getLabel('publish_down'); ?> <?php echo $this->form->getInput('publish_down'); ?></li> <?php if ($this->item->modified_by) : ?> <li><?php echo $this->form->getLabel('modified_by'); ?> <?php echo $this->form->getInput('modified_by'); ?></li> <li><?php echo $this->form->getLabel('modified'); ?> <?php echo $this->form->getInput('modified'); ?></li> <?php endif; ?> <?php if ($this->item->hits) : ?> <li><?php echo $this->form->getLabel('hits'); ?> <?php echo $this->form->getInput('hits'); ?></li> <?php endif; ?> </ul> </fieldset> <?php echo $this->loadTemplate('params'); ?> <?php echo JHtml::_('sliders.panel', JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS'), 'meta-options'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS'); ?></legend> <?php echo $this->loadTemplate('metadata'); ?> </fieldset> <?php echo JHtml::_('sliders.end'); ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> <div class="clr"></div> </form> </div> PKb��\������:templates/hathor/html/com_weblinks/weblink/edit_params.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $fieldSets = $this->form->getFieldsets('params'); foreach ($fieldSets as $name => $fieldSet) : echo JHtml::_('sliders.panel', JText::_($fieldSet->label), $name.'-params'); if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="tip">'.$this->escape(JText::_($fieldSet->description)).'</p>'; endif; ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_($fieldSet->label); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <li><?php echo $field->label; ?> <?php echo $field->input; ?></li> <?php endforeach; ?> </ul> </fieldset> <?php endforeach; ?> PKb��\r��5templates/hathor/html/com_checkin/checkin/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_checkin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_checkin'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty($this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <?php endif; ?> <div id="j-main-container"<?php echo !empty($this->sidebar) ? ' class="span10"' : ''; ?>> <fieldset id="filter-bar"> <div class="filter-search fltlft"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_CHECKIN_FILTER_SEARCH_DESC'); ?>" /> <button type="submit" class="btn"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> </fieldset> <div class="clr"></div> <table id="global-checkin" class="adminlist"> <thead> <tr> <th width="1%"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="left"><?php echo JHtml::_('grid.sort', 'COM_CHECKIN_DATABASE_TABLE', 'table', $listDirn, $listOrder); ?></th> <th><?php echo JHtml::_('grid.sort', 'COM_CHECKIN_ITEMS_TO_CHECK_IN', 'count', $listDirn, $listOrder); ?></th> </tr> </thead> <tbody> <?php foreach ($this->items as $table => $count): $i = 0; ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"><?php echo JHtml::_('grid.id', $i, $table); ?></td> <td><?php echo JText::sprintf('COM_CHECKIN_TABLE', $table); ?></td> <td width="200" class="center"><?php echo $count; ?></td> </tr> <?php endforeach; ?> </tbody> <tfoot> <tr> <td colspan="15"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> </table> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�9�HHAtemplates/hathor/html/layouts/com_messages/toolbar/mysettings.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $text = JText::_('COM_MESSAGES_TOOLBAR_MY_SETTINGS'); ?> <a rel="{handler:'iframe', size:{x:700,y:300}}" href="index.php?option=com_messages&view=config&tmpl=component" title="<?php echo $text; ?>" class="messagesSettings toolbar"> <span class="icon-32-options"></span> <?php echo $text; ?> </a> PKb��\ig�C��Btemplates/hathor/html/layouts/com_modules/toolbar/cancelselect.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $text = JText::_('JTOOLBAR_CANCEL'); ?> <a onclick="location.href='index.php?option=com_modules'" class="toolbar" title="<?php echo $text; ?>"> <span class="icon-32-cancel"></span> <?php echo $text; ?> </a> PKb��\�P���?templates/hathor/html/layouts/com_modules/toolbar/newmodule.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $text = JText::_('JTOOLBAR_NEW'); ?> <a href="javascript:void(0)" onclick="location.href='index.php?option=com_modules&view=select'" class="toolbar"> <span class="icon-32-new"></span> <?php echo $text; ?> </a> PKb��\jL��xx8templates/hathor/html/layouts/joomla/quickicons/icon.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $id = empty($displayData['id']) ? '' : (' id="' . $displayData['id'] . '"'); $target = empty($displayData['target']) ? '' : (' target="' . $displayData['target'] . '"'); $onclick = empty($displayData['onclick']) ? '' : (' onclick="' . $displayData['onclick'] . '"'); $title = empty($displayData['title']) ? '' : (' title="' . $this->escape($displayData['title']) . '"'); $text = empty($displayData['text']) ? '' : ('<span>' . $displayData['text'] . '</span>') ?> <div class="quickicon-wrapper"<?php echo $id; ?>> <div class="icon"> <a href="<?php echo $displayData['link']; ?>"<?php echo $target . $onclick . $title; ?>> <?php echo JHtml::_('image', empty($displayData['icon']) ? '' : $displayData['icon'], empty($displayData['alt']) ? null : htmlspecialchars($displayData['alt']), null, true); ?> <?php echo $text; ?> </a> </div> </div> PKb��\9I�t��9templates/hathor/html/layouts/joomla/sidebars/submenu.phpnu�[���<?php /** * @package Joomla.Site * @subpackage Layout * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; ?> <div id="sidebar"> <div class="sidebar-nav"> <?php if ($displayData->displayMenu) : ?> <ul id="submenu" class="nav nav-list"> <?php foreach ($displayData->list as $item) : if (isset ($item[2]) && $item[2] == 1) : ?> <li class="active"> <?php else : ?> <li> <?php endif; if ($displayData->hide) : ?> <a class="nolink"><?php echo $item[0]; ?></a> <?php else : if (strlen($item[1])) : ?> <a href="<?php echo JFilterOutput::ampReplace($item[1]); ?>"><?php echo $item[0]; ?></a> <?php else : ?> <?php echo $item[0]; ?> <?php endif; endif; ?> </li> <?php endforeach; ?> </ul> <?php endif; ?> </div> </div> PKb��\�/0��:templates/hathor/html/layouts/joomla/toolbar/separator.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $class = (empty($displayData['style'])) ? 'spacer' : $displayData['style']; $style = $displayData['style']; ?> <li class="<?php echo $class; ?>"<?php echo $style; ?>></li> PKb��\L3�\��7templates/hathor/html/layouts/joomla/toolbar/slider.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $doTask = $displayData['doTask']; $class = $displayData['class']; $text = $displayData['text']; $name = $displayData['name']; $onClose = $displayData['onClose']; ?> <a onclick="<?php echo $doTask; ?>" data-toggle="collapse" data-target="#collapse-<?php echo $name; ?>"<?php echo $onClose; ?>> <span class="<?php echo $class; ?>"></span> <?php echo $text; ?> </a> PKb��\�:�C^^9templates/hathor/html/layouts/joomla/toolbar/versions.phpnu�[���<?php /** * @package Joomla.Site * @subpackage Layout * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <a rel="{handler: 'iframe', size: {x: <?php echo $displayData['height']; ?>, y: <?php echo $displayData['width']; ?>}}" href="index.php?option=com_contenthistory&view=history&layout=modal&tmpl=component&item_id=<?php echo (int) $displayData['itemId']; ?>&type_id=<?php echo $displayData['typeId']; ?>&type_alias=<?php echo $displayData['typeAlias']; ?>&<?php echo JSession::getFormToken(); ?>=1" title="<?php echo $displayData['title']; ?>" class="toolbar modal_jform_contenthistory"> <span class="icon-32-restore"></span> <?php echo $displayData['title']; ?> </a> PKb��\%7���6templates/hathor/html/layouts/joomla/toolbar/batch.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $title = $displayData['title']; ?> <a data-toggle="modal" data-target="#collapseModal" class="btn btn-small"> <span class="icon-32-batch" title="<?php echo $title; ?>"></span> <?php echo $title; ?> </a> PKb��\���DD?templates/hathor/html/layouts/joomla/toolbar/containerclose.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> </ul> <div class="clr"></div> </div> PKb��\�F4�8templates/hathor/html/layouts/joomla/toolbar/confirm.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $doTask = $displayData['doTask']; $class = $displayData['class']; $text = $displayData['text']; ?> <a href="javascript:void(0)" onclick="<?php echo $doTask; ?>" class="toolbar"> <span class="<?php echo $class; ?>"></span> <?php echo $text; ?> </a> PKb��\�G�EE9templates/hathor/html/layouts/joomla/toolbar/standard.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $doTask = $displayData['doTask']; $class = $displayData['class']; $text = $displayData['text']; $btnClass = $displayData['btnClass']; ?> <a href="javascript:void(0)" onclick="<?php echo $doTask; ?>" class="toolbar"> <span class="<?php echo $class; ?>"></span> <?php echo $text; ?> </a> PKb��\O��bb6templates/hathor/html/layouts/joomla/toolbar/popup.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $doTask = $displayData['doTask']; $class = $displayData['class']; $text = $displayData['text']; $name = $displayData['name']; ?> <a onclick="<?php echo $doTask; ?>" class="modal toolbar" data-toggle="modal" data-target="#modal-<?php echo $name; ?>"> <span class="<?php echo $class; ?>"></span> <?php echo $text; ?> </a> PKb��\�}���5templates/hathor/html/layouts/joomla/toolbar/help.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $doTask = $displayData['doTask']; $text = $displayData['text']; ?> <a href="javascript:void(0)" onclick="<?php echo $doTask; ?>" rel="help" class="toolbar"> <span class="icon-32-help"></span> <?php echo $text; ?> </a> PKb��\�?Nmee>templates/hathor/html/layouts/joomla/toolbar/containeropen.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="toolbar-list" id="<?php echo $displayData['id']; ?>"> <ul> PKb��\�3����5templates/hathor/html/layouts/joomla/toolbar/base.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <li class="button" <?php echo $displayData['id']; ?>> <?php echo $displayData['action']; ?> </li> PKb��\|�I��6templates/hathor/html/layouts/joomla/toolbar/title.phpnu�[���<?php /** * @package Joomla.Site * @subpackage Layout * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $class = 'pagetitle'; if (!empty($displayData['icon'])) { // Strip the extension. $icons = explode(' ', $displayData['icon']); foreach ($icons as $i => $icon) { $icons[$i] = 'icon-48-' . preg_replace('#\.[^.]*$#', '', $icon); } $class .= ' ' . htmlspecialchars(implode(' ', $icons)); } ?> <div class="<?php echo $class; ?>"> <h2> <?php echo $displayData['title']; ?> </h2> </div> PKb��\5�q_��5templates/hathor/html/layouts/joomla/toolbar/link.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $doTask = $displayData['doTask']; $class = $displayData['class']; $text = $displayData['text']; ?> <a href="<?php echo $doTask; ?>;" class="toolbar"> <span class="<?php echo $class; ?>"></span> <?php echo $text; ?> </a> PKb��\�>�HH:templates/hathor/html/layouts/joomla/toolbar/iconclass.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> icon-32-<?php echo $displayData['icon']; ?> PKb��\�#Jw w 5templates/hathor/html/layouts/joomla/edit/details.phpnu�[���<?php /** * @package Joomla.Site * @subpackage Layout * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // JLayout for standard handling of the details sidebar in administrator edit screens. $title = $displayData->get('form')->getValue('title'); $published = $displayData->get('form')->getValue('published'); $saveHistory = $displayData->get('state')->get('params')->get('save_history', 0); ?> <div class="span2"> <h4><?php echo JText::_('JDETAILS');?></h4> <hr /> <fieldset class="form-vertical"> <?php if (empty($title)) : ?> <div class="control-group"> <div class="controls"> <?php echo $displayData->get('form')->getValue('name'); ?> </div> </div> <?php else : ?> <div class="control-group"> <div class="controls"> <?php echo $displayData->get('form')->getValue('title'); ?> </div> </div> <?php endif; ?> <?php if ($published) : ?> <div class="control-group"> <div class="control-label"> <?php echo $displayData->get('form')->getLabel('published'); ?> </div> <div class="controls"> <?php echo $displayData->get('form')->getInput('published'); ?> </div> </div> <?php else : ?> <div class="control-group"> <div class="control-label"> <?php echo $displayData->get('form')->getLabel('state'); ?> </div> <div class="controls"> <?php echo $displayData->get('form')->getInput('state'); ?> </div> </div> <?php endif; ?> <div class="control-group"> <div class="control-label"> <?php echo $displayData->get('form')->getLabel('access'); ?> </div> <div class="controls"> <?php echo $displayData->get('form')->getInput('access'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $displayData->get('form')->getLabel('featured'); ?> </div> <div class="controls"> <?php echo $displayData->get('form')->getInput('featured'); ?> </div> </div> <?php if (JLanguageMultilang::isEnabled()) : ?> <div class="control-group"> <div class="control-label"> <?php echo $displayData->get('form')->getLabel('language'); ?> </div> <div class="controls"> <?php echo $displayData->get('form')->getInput('language'); ?> </div> </div> <?php else : ?> <input type="hidden" name="language" value="<?php echo $displayData->get('form')->getValue('language'); ?>" /> <?php endif; ?> <div class="control-group"> <?php foreach ($displayData->get('form')->getFieldset('jmetadata') as $field) : ?> <?php if ($field->name == 'jform[metadata][tags][]') :?> <div class="control-group"> <div class="control-label"><?php echo $field->label; ?></div> <div class="controls"><?php echo $field->input; ?></div> </div> <?php endif; ?> <?php endforeach; ?> </div> <?php if ($saveHistory) : ?> <div class="control-group"> <div class="control-label"> <?php echo $displayData->get('form')->getLabel('version_note'); ?> </div> <div class="controls"> <?php echo $displayData->get('form')->getInput('version_note'); ?> </div> </div> <?php endif; ?> </fieldset> </div> PKb��\ �a::6templates/hathor/html/layouts/joomla/edit/metadata.phpnu�[���<?php /** * @package Joomla.Site * @subpackage Layout * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // JLayout for standard handling of metadata fields in the administrator content edit screens. $form = $displayData->get('form'); ?> <fieldset> <div class="control-group"> <?php echo $form->getLabel('metadesc'); ?> <div class="controls"> <?php echo $form->getInput('metadesc'); ?> </div> </div> <div class="control-group"> <?php echo $form->getLabel('metakey'); ?> <div class="controls"> <?php echo $form->getInput('metakey'); ?> </div> </div> <?php if ($form->getLabel('xreference')):?> <div class="control-group"> <?php echo $form->getLabel('xreference'); ?> <div class="controls"> <?php echo $form->getInput('xreference'); ?> </div> </div> <?php endif; ?> <?php foreach ($form->getGroup('metadata') as $field) : ?> <?php if ($field->name != 'jform[metadata][tags][]') :?> <div class="control-group"> <?php if (!$field->hidden) : ?> <?php echo $field->label; ?> <?php endif; ?> <div class="controls"> <?php echo $field->input; ?> </div> </div> <?php endif; ?> <?php endforeach; ?> </fieldset> PKb��\(n��?templates/hathor/html/layouts/com_media/toolbar/uploadmedia.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $title = JText::_('JTOOLBAR_UPLOAD'); ?> <button data-toggle="collapse" data-target="#collapseUpload" class="toolbar"> <span class="icon-32-upload" title="<?php echo $title; ?>"></span> <?php echo $title; ?> </button> PKb��\<|���=templates/hathor/html/layouts/com_media/toolbar/newfolder.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $title = JText::_('COM_MEDIA_CREATE_NEW_FOLDER'); ?> <button data-toggle="collapse" data-target="#collapseFolder" class="toolbar"> <span class="icon-folder" title="<?php echo $title; ?>"></span> <?php echo $title; ?> </button> PKb��\����?templates/hathor/html/layouts/com_media/toolbar/deletemedia.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $title = JText::_('JTOOLBAR_DELETE'); ?> <button onclick="MediaManager.submit('folder.delete')" class="toolbar"> <span class="icon-32-delete" title="<?php echo $title; ?>"></span> <?php echo $title; ?> </button> PKb��\��"��Atemplates/hathor/html/layouts/plugins/user/profile/fields/dob.phpnu�[���<?php /** * @package Joomla.Site * @subpackage Layout * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * $text string infotext to be displayed */ extract($displayData); ?> <div class="clrlft"><?php echo $text; ?></div> PKb��\����0templates/hathor/html/com_admin/help/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; jimport('joomla.language.help'); ?> <form action="<?php echo JRoute::_('index.php?option=com_admin&view=help'); ?>" method="post" name="adminForm" id="adminForm"> <div class="width-50 fltrt helplinks"> <ul class="helpmenu"> <li><?php echo JHtml::_('link', JHelp::createUrl('JHELP_GLOSSARY'), JText::_('COM_ADMIN_GLOSSARY'), array('target' => 'helpFrame')) ?></li> <li><?php echo JHtml::_('link', 'http://www.gnu.org/licenses/gpl-2.0.html', JText::_('COM_ADMIN_LICENSE'), array('target' => 'helpFrame')) ?></li> <li><?php echo JHtml::_('link', $this->latest_version_check, JText::_('COM_ADMIN_LATEST_VERSION_CHECK'), array('target' => 'helpFrame')) ?></li> <li><?php echo JHtml::_('link', JHelp::createUrl('JHELP_START_HERE'), JText::_('COM_ADMIN_START_HERE'), array('target' => 'helpFrame')) ?></li> </ul> </div> <div class="clr"> </div> <div id="treecellhelp" class="width-20 fltleft"> <fieldset class="adminform whitebg" title="<?php echo JText::_('COM_ADMIN_ALPHABETICAL_INDEX'); ?>"> <legend><?php echo JText::_('COM_ADMIN_ALPHABETICAL_INDEX'); ?></legend> <div class="helpIndex"> <ul class="subext"> <?php foreach ($this->toc as $k => $v):?> <li> <?php $url = JHelp::createUrl('JHELP_'.strtoupper($k)); ?> <?php echo JHtml::_('link', $url, $v, array('target' => 'helpFrame'));?> </li> <?php endforeach;?> </ul> </div> </fieldset> </div> <div id="datacellhelp" class="width-80 fltrt"> <fieldset title="<?php echo JText::_('COM_ADMIN_VIEW'); ?>"> <legend> <?php echo JText::_('COM_ADMIN_VIEW'); ?> </legend> <iframe name="helpFrame" src="<?php echo $this->page;?>" class="helpFrame"></iframe> </fieldset> </div> </form> PKb��\�,���0templates/hathor/html/com_admin/profile/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.formvalidator'); // Get the form fieldsets. $fieldsets = $this->form->getFieldsets(); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'profile.cancel' || document.formvalidator.isValid(document.getElementById('profile-form'))) { Joomla.submitform(task, document.getElementById('profile-form')); } } "); ?> <form action="<?php echo JRoute::_('index.php?option=com_admin&view=profile&layout=edit&id='.$this->item->id); ?>" method="post" name="adminForm" id="profile-form" class="form-validate" enctype="multipart/form-data"> <div class="col main-section"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_ADMIN_USER_ACCOUNT_DETAILS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('user_details') as $field) : ?> <li><?php echo $field->label; ?> <?php echo $field->input; ?></li> <?php endforeach; ?> </ul> </fieldset> </div> <div class="col options-section"> <?php echo JHtml::_('sliders.start'); foreach ($fieldsets as $fieldset) : if ($fieldset->name == 'user_details') : continue; endif; echo JHtml::_('sliders.panel', JText::_($fieldset->label), $fieldset->name); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_($fieldset->label); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset($fieldset->name) as $field) : ?> <?php if ($field->hidden) : ?> <?php echo $field->input; ?> <?php else: ?> <li><?php echo $field->label; ?> <?php echo $field->input; ?></li> <?php endif; ?> <?php endforeach; ?> </ul> </fieldset> <?php endforeach; ?> <?php echo JHtml::_('sliders.end'); ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�F[k��:templates/hathor/html/com_admin/sysinfo/default_system.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset class="adminform"> <legend><?php echo JText::_('COM_ADMIN_SYSTEM_INFORMATION'); ?></legend> <table class="adminlist"> <thead> <tr> <th width="250"> <?php echo JText::_('COM_ADMIN_SETTING'); ?> </th> <th> <?php echo JText::_('COM_ADMIN_VALUE'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="2">  </td> </tr> </tfoot> <tbody> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_PHP_BUILT_ON'); ?></strong> </td> <td> <?php echo $this->info['php'];?> </td> </tr> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_DATABASE_VERSION'); ?></strong> </td> <td> <?php echo $this->info['dbversion'];?> </td> </tr> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_DATABASE_COLLATION'); ?></strong> </td> <td> <?php echo $this->info['dbcollation'];?> </td> </tr> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_PHP_VERSION'); ?></strong> </td> <td> <?php echo $this->info['phpversion'];?> </td> </tr> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_WEB_SERVER'); ?></strong> </td> <td> <?php echo JHtml::_('system.server', $this->info['server']); ?> </td> </tr> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_WEBSERVER_TO_PHP_INTERFACE'); ?></strong> </td> <td> <?php echo $this->info['sapi_name'];?> </td> </tr> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_JOOMLA_VERSION'); ?></strong> </td> <td> <?php echo $this->info['version'];?> </td> </tr> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_PLATFORM_VERSION'); ?></strong> </td> <td> <?php echo $this->info['platform'];?> </td> </tr> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_USER_AGENT'); ?></strong> </td> <td> <?php echo $this->info['useragent'];?> </td> </tr> </tbody> </table> </fieldset> PKb��\�,��>templates/hathor/html/com_admin/sysinfo/default_navigation.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div id="submenu-box"> <div class="submenu-box"> <div class="submenu-pad"> <ul id="submenu" class="information nav nav-list"> <li> <a href="#" onclick="return false;" id="site" class="active"> <?php echo JText::_('COM_ADMIN_SYSTEM_INFORMATION'); ?></a> </li> <li> <a href="#" onclick="return false;" id="phpsettings"> <?php echo JText::_('COM_ADMIN_PHP_SETTINGS'); ?></a> </li> <li> <a href="#" onclick="return false;" id="config"> <?php echo JText::_('COM_ADMIN_CONFIGURATION_FILE'); ?></a> </li> <li> <a href="#" onclick="return false;" id="directory"> <?php echo JText::_('COM_ADMIN_DIRECTORY_PERMISSIONS'); ?></a> </li> <li> <a href="#" onclick="return false;" id="phpinfo"> <?php echo JText::_('COM_ADMIN_PHP_INFORMATION'); ?></a> </li> </ul> <div class="clr"></div> </div> </div> <div class="clr"></div> </div> PKb��\�}���:templates/hathor/html/com_admin/sysinfo/default_config.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset class="adminform"> <legend><?php echo JText::_('COM_ADMIN_CONFIGURATION_FILE'); ?></legend> <table class="adminlist"> <thead> <tr> <th width="300"> <?php echo JText::_('COM_ADMIN_SETTING'); ?> </th> <th> <?php echo JText::_('COM_ADMIN_VALUE'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="2"> </td> </tr> </tfoot> <tbody> <?php foreach ($this->config as $key => $value):?> <tr> <td> <?php echo $key;?> </td> <td> <?php echo htmlspecialchars($value, ENT_QUOTES);?> </td> </tr> <?php endforeach;?> </tbody> </table> </fieldset> PKb��\���22?templates/hathor/html/com_admin/sysinfo/default_phpsettings.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset class="adminform"> <legend><?php echo JText::_('COM_ADMIN_RELEVANT_PHP_SETTINGS'); ?></legend> <table class="adminlist"> <thead> <tr> <th width="250"> <?php echo JText::_('COM_ADMIN_SETTING'); ?> </th> <th> <?php echo JText::_('COM_ADMIN_VALUE'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="2">  </td> </tr> </tfoot> <tbody> <tr> <td> <?php echo JText::_('COM_ADMIN_SAFE_MODE'); ?> </td> <td> <?php echo JHtml::_('phpsetting.boolean', $this->php_settings['safe_mode']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_OPEN_BASEDIR'); ?> </td> <td> <?php echo JHtml::_('phpsetting.string', $this->php_settings['open_basedir']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_DISPLAY_ERRORS'); ?> </td> <td> <?php echo JHtml::_('phpsetting.boolean', $this->php_settings['display_errors']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_SHORT_OPEN_TAGS'); ?> </td> <td> <?php echo JHtml::_('phpsetting.boolean', $this->php_settings['short_open_tag']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_FILE_UPLOADS'); ?> </td> <td> <?php echo JHtml::_('phpsetting.boolean', $this->php_settings['file_uploads']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_MAGIC_QUOTES'); ?> </td> <td> <?php echo JHtml::_('phpsetting.boolean', $this->php_settings['magic_quotes_gpc']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_REGISTER_GLOBALS'); ?> </td> <td> <?php echo JHtml::_('phpsetting.boolean', $this->php_settings['register_globals']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_OUTPUT_BUFFERING'); ?> </td> <td> <?php echo JHtml::_('phpsetting.boolean', $this->php_settings['output_buffering']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_SESSION_SAVE_PATH'); ?> </td> <td> <?php echo JHtml::_('phpsetting.string', $this->php_settings['session.save_path']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_SESSION_AUTO_START'); ?> </td> <td> <?php echo JHtml::_('phpsetting.integer', $this->php_settings['session.auto_start']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_XML_ENABLED'); ?> </td> <td> <?php echo JHtml::_('phpsetting.set', $this->php_settings['xml']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_ZLIB_ENABLED'); ?> </td> <td> <?php echo JHtml::_('phpsetting.set', $this->php_settings['zlib']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_ZIP_ENABLED'); ?> </td> <td> <?php echo JHtml::_('phpsetting.set', $this->php_settings['zip']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_DISABLED_FUNCTIONS'); ?> </td> <td> <?php echo JHtml::_('phpsetting.string', $this->php_settings['disable_functions']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_MBSTRING_ENABLED'); ?> </td> <td> <?php echo JHtml::_('phpsetting.set', $this->php_settings['mbstring']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_ICONV_AVAILABLE'); ?> </td> <td> <?php echo JHtml::_('phpsetting.set', $this->php_settings['iconv']); ?> </td> </tr> </tbody> </table> </fieldset> PKb��\�GӅ��3templates/hathor/html/com_admin/sysinfo/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Add specific helper files for html generation JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); // Load switcher behavior JHtml::_('behavior.switcher'); ?> <form action="<?php echo JRoute::_('index.php'); ?>" method="post" name="adminForm" id="adminForm"> <div id="config-document"> <div id="page-site" class="tab"> <div class="noshow"> <div class="width-100"> <?php echo $this->loadTemplate('system'); ?> </div> </div> </div> <div id="page-phpsettings" class="tab"> <div class="noshow"> <div class="width-60"> <?php echo $this->loadTemplate('phpsettings'); ?> </div> </div> </div> <div id="page-config" class="tab"> <div class="noshow"> <div class="width-60"> <?php echo $this->loadTemplate('config'); ?> </div> </div> </div> <div id="page-directory" class="tab"> <div class="noshow"> <div class="width-60"> <?php echo $this->loadTemplate('directory'); ?> </div> </div> </div> <div id="page-phpinfo" class="tab"> <div class="noshow"> <div class="width-100"> <?php echo $this->loadTemplate('phpinfo'); ?> </div> </div> </div> </div> <div class="clr"></div> </form> PKb��\�ĝ��=templates/hathor/html/com_admin/sysinfo/default_directory.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset class="adminform"> <legend><?php echo JText::_('COM_ADMIN_DIRECTORY_PERMISSIONS'); ?></legend> <table class="adminlist"> <thead> <tr> <th width="650"> <?php echo JText::_('COM_ADMIN_DIRECTORY'); ?> </th> <th> <?php echo JText::_('COM_ADMIN_STATUS'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="2"> </td> </tr> </tfoot> <tbody> <?php foreach ($this->directory as $dir => $info) : ?> <tr> <td> <?php echo JHtml::_('directory.message', $dir, $info['message']);?> </td> <td> <?php echo JHtml::_('directory.writable', $info['writable']);?> </td> </tr> <?php endforeach; ?> </tbody> </table> </fieldset> PKb��\��X��3templates/hathor/html/com_messages/message/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 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 HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'message.cancel' || document.formvalidator.isValid(document.getElementById('message-form'))) { Joomla.submitform(task, document.getElementById('message-form')); } } "); ?> <form action="<?php echo JRoute::_('index.php?option=com_messages'); ?>" method="post" name="adminForm" id="message-form" class="form-validate form-horizontal"> <fieldset class="adminform"> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('user_id_to'); ?> <?php echo $this->form->getInput('user_id_to'); ?></li> <li><?php echo $this->form->getLabel('subject'); ?> <?php echo $this->form->getInput('subject'); ?></li> </ul> </fieldset> <fieldset class="adminform"> <legend><?php echo $this->form->getLabel('message'); ?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getInput('message'); ?> </li> </ul> </fieldset> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\b*^^7templates/hathor/html/com_messages/messages/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.multiselect'); $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_messages&view=messages'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_MESSAGES_SEARCH_IN_SUBJECT'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_state"> <?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?> </label> <select name="filter_state" id="filter_state"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', MessagesHelper::getStateOptions(), 'value', 'text', $this->state->get('filter.state'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'COM_MESSAGES_HEADING_SUBJECT', 'a.subject', $listDirn, $listOrder); ?> </th> <th class="width-5"> <?php echo JHtml::_('grid.sort', 'COM_MESSAGES_HEADING_READ', 'a.state', $listDirn, $listOrder); ?> </th> <th class="width-15"> <?php echo JHtml::_('grid.sort', 'COM_MESSAGES_HEADING_FROM', 'a.user_id_from', $listDirn, $listOrder); ?> </th> <th class="nowrap width-20"> <?php echo JHtml::_('grid.sort', 'JDATE', 'a.date_time', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $canChange = $user->authorise('core.edit.state', 'com_messages'); ?> <tr class="row<?php echo $i % 2; ?>"> <td> <?php echo JHtml::_('grid.id', $i, $item->message_id); ?> </td> <td> <a href="<?php echo JRoute::_('index.php?option=com_messages&view=message&message_id='.(int) $item->message_id); ?>"> <?php echo $this->escape($item->subject); ?></a> </td> <td class="center"> <?php echo JHtml::_('messages.state', $item->state, $i, $canChange); ?> </td> <td> <?php echo $item->user_from; ?> </td> <td> <?php echo JHtml::_('date', $item->date_time, JText::_('DATE_FORMAT_LC2')); ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�X>_( ( 5templates/hathor/html/com_menus/item/edit_options.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $assoc = JLanguageAssociations::isEnabled(); ?> <?php $fieldSets = $this->form->getFieldsets('request'); if (!empty($fieldSets)) { $fieldSet = array_shift($fieldSets); $label = !empty($fieldSet->label) ? $fieldSet->label : 'COM_MENUS_'.$fieldSet->name.'_FIELDSET_LABEL'; echo JHtml::_('sliders.panel', JText::_($label), 'request-options'); if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="tip">'.$this->escape(JText::_($fieldSet->description)).'</p>'; endif; ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_($label) ?></legend> <?php $hidden_fields = ''; ?> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('request') as $field) : ?> <?php if (!$field->hidden) : ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php else : $hidden_fields .= $field->input; ?> <?php endif; ?> <?php endforeach; ?> </ul> <?php echo $hidden_fields; ?> </fieldset> <?php } $fieldSets = $this->form->getFieldsets('params'); foreach ($fieldSets as $name => $fieldSet) : $label = !empty($fieldSet->label) ? $fieldSet->label : 'COM_MENUS_'.$name.'_FIELDSET_LABEL'; echo JHtml::_('sliders.panel', JText::_($label), $name.'-options'); if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="tip">'.$this->escape(JText::_($fieldSet->description)).'</p>'; endif; ?> <div class="clr"></div> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_($label) ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <li><?php echo $field->label; ?> <?php echo $field->input; ?></li> <?php endforeach; ?> </ul> </fieldset> <?php endforeach;?> <?php if ($assoc) : ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_MENUS_ITEM_ASSOCIATIONS_FIELDSET_LABEL'), '-options');?> <?php echo $this->loadTemplate('associations'); ?> <?php endif; ?> PKb��\{�]d��-templates/hathor/html/com_menus/item/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.framework'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.modal'); $assoc = JLanguageAssociations::isEnabled(); // Ajax for parent items $script = " jQuery(document).ready(function ($){ $('#jform_menutype').change(function(){ var menutype = $(this).val(); $.ajax({ url: 'index.php?option=com_menus&task=item.getParentItem&menutype=' + menutype, dataType: 'json' }).done(function(data) { $('#jform_parent_id option').each(function() { if ($(this).val() != '1') { $(this).remove(); } }); $.each(data, function (i, val) { var option = $('<option>'); option.text(val.title).val(val.id); $('#jform_parent_id').append(option); }); $('#jform_parent_id').trigger('liszt:updated'); }); }); }); Joomla.submitbutton = function(task, type){ if (task == 'item.setType' || task == 'item.setMenuType') { if (task == 'item.setType') { jQuery('#item-form input[name=\"jform[type]\"]').val(type); jQuery('#fieldtype').val('type'); } else { jQuery('#item-form input[name=\"jform[menutype]\"]').val(type); } Joomla.submitform('item.setType', document.getElementById('item-form')); } else if (task == 'item.cancel' || document.formvalidator.isValid(document.getElementById('item-form'))) { Joomla.submitform(task, document.getElementById('item-form')); } else { // special case for modal popups validation response jQuery('#item-form .modal-value.invalid').each(function(){ var field = jQuery(this), idReversed = field.attr('id').split('').reverse().join(''), separatorLocation = idReversed.indexOf('_'), nameId = '#' + idReversed.substr(separatorLocation).split('').reverse().join('') + 'name'; jQuery(nameId).addClass('invalid'); }); } }; "; // Add the script to the document head. JFactory::getDocument()->addScriptDeclaration($script); ?> <div class="menuitem-edit"> <form action="<?php echo JRoute::_('index.php?option=com_menus&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="item-form" class="form-validate"> <div class="col main-section"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_MENUS_ITEM_DETAILS');?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('type'); ?> <?php echo $this->form->getInput('type'); ?></li> <li><?php echo $this->form->getLabel('title'); ?> <?php echo $this->form->getInput('title'); ?></li> <?php if ($this->item->type == 'url') : ?> <?php $this->form->setFieldAttribute('link', 'readonly', 'false');?> <li><?php echo $this->form->getLabel('link'); ?> <?php echo $this->form->getInput('link'); ?></li> <?php endif; ?> <?php if ($this->item->type == 'alias') : ?> <li> <?php echo $this->form->getLabel('aliastip'); ?></li> <?php endif; ?> <?php if ($this->item->type != 'url') : ?> <li><?php echo $this->form->getLabel('alias'); ?> <?php echo $this->form->getInput('alias'); ?></li> <?php endif; ?> <li><?php echo $this->form->getLabel('note'); ?> <?php echo $this->form->getInput('note'); ?></li> <?php if ($this->item->type !== 'url') : ?> <li><?php echo $this->form->getLabel('link'); ?> <?php echo $this->form->getInput('link'); ?></li> <?php endif ?> <?php if ($this->canDo->get('core.edit.state')) : ?> <li><?php echo $this->form->getLabel('published'); ?> <?php echo $this->form->getInput('published'); ?></li> <?php endif ?> <li><?php echo $this->form->getLabel('access'); ?> <?php echo $this->form->getInput('access'); ?></li> <li><?php echo $this->form->getLabel('menutype'); ?> <?php echo $this->form->getInput('menutype'); ?></li> <li><?php echo $this->form->getLabel('parent_id'); ?> <?php echo $this->form->getInput('parent_id'); ?></li> <li><?php echo $this->form->getLabel('menuordering'); ?> <?php echo $this->form->getInput('menuordering'); ?></li> <li><?php echo $this->form->getLabel('browserNav'); ?> <?php echo $this->form->getInput('browserNav'); ?></li> <?php if ($this->canDo->get('core.edit.state')) : ?> <?php if ($this->item->type == 'component') : ?> <li><?php echo $this->form->getLabel('home'); ?> <?php echo $this->form->getInput('home'); ?></li> <?php endif; ?> <?php endif; ?> <li><?php echo $this->form->getLabel('language'); ?> <?php echo $this->form->getInput('language'); ?></li> <li><?php echo $this->form->getLabel('template_style_id'); ?> <?php echo $this->form->getInput('template_style_id'); ?></li> <li><?php echo $this->form->getLabel('id'); ?> <?php echo $this->form->getInput('id'); ?></li> </ul> </fieldset> </div> <div class="col options-section"> <?php echo JHtml::_('sliders.start', 'menu-sliders-'.$this->item->id); ?> <?php //Load parameters. echo $this->loadTemplate('options'); ?> <div class="clr"></div> <?php if (!empty($this->modules)) : ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_MENUS_ITEM_MODULE_ASSIGNMENT'), 'module-options'); ?> <fieldset> <?php echo $this->loadTemplate('modules'); ?> </fieldset> <?php endif; ?> <?php echo JHtml::_('sliders.end'); ?> <input type="hidden" name="task" value="" /> <?php echo $this->form->getInput('component_id'); ?> <?php echo JHtml::_('form.token'); ?> <input type="hidden" id="fieldtype" name="fieldtype" value="" /> </div> </form> <div class="clr"></div> </div> PKb��\�P�Ы,�,1templates/hathor/html/com_menus/items/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.multiselect'); $user = JFactory::getUser(); $app = JFactory::getApplication(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $ordering = ($listOrder == 'a.lft'); $canOrder = $user->authorise('core.edit.state', 'com_menus'); $saveOrder = ($listOrder == 'a.lft' && $listDirn == 'asc'); $assoc = JLanguageAssociations::isEnabled(); ?> <?php // Set up the filter bar. ?> <form action="<?php echo JRoute::_('index.php?option=com_menus&view=items');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_MENUS_ITEMS_SEARCH_FILTER'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="menutype"> <?php echo JText::_('TPL_HATHOR_COM_MENUS_MENU'); ?> </label> <select name="menutype" id="menutype"> <?php echo JHtml::_('select.options', JHtml::_('menu.menus'), 'value', 'text', $this->state->get('filter.menutype'));?> </select> <label class="selectlabel" for="filter_level"> <?php echo JText::_('COM_MENUS_OPTION_SELECT_LEVEL'); ?> </label> <select name="filter_level" id="filter_level"> <option value=""><?php echo JText::_('COM_MENUS_OPTION_SELECT_LEVEL');?></option> <?php echo JHtml::_('select.options', $this->f_levels, 'value', 'text', $this->state->get('filter.level'));?> </select> <label class="selectlabel" for="filter_published"> <?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?> </label> <select name="filter_published" id="filter_published"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions', array('archived' => false)), 'value', 'text', $this->state->get('filter.published'), true);?> </select> <label class="selectlabel" for="filter_access"> <?php echo JText::_('JOPTION_SELECT_ACCESS'); ?> </label> <select name="filter_access" id="filter_access"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS');?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access'));?> </select> <label class="selectlabel" for="filter_language"> <?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?> </label> <select name="filter_language" id="filter_language"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE');?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <?php //Set up the grid heading. ?> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.published', $listDirn, $listOrder); ?> </th> <th class="nowrap ordering-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ORDERING', 'a.lft', $listDirn, $listOrder); ?> <?php if ($canOrder && $saveOrder) :?> <?php echo JHtml::_('grid.order', $this->items, 'filesave.png', 'items.saveorder'); ?> <?php endif; ?> </th> <th class="title access-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'access_level', $listDirn, $listOrder); ?> </th> <th width="10%"> <?php echo JText::_('JGRID_HEADING_MENU_ITEM_TYPE'); ?> </th> <th class="home-col"> <?php echo JHtml::_('grid.sort', 'COM_MENUS_HEADING_HOME', 'a.home', $listDirn, $listOrder); ?> </th> <?php if ($assoc): ?> <th class="width-5"> <?php echo JHtml::_('grid.sort', 'COM_MENUS_HEADING_ASSOCIATION', 'association', $listDirn, $listOrder); ?> </th> <?php endif;?> <th class="language-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'language', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $orderkey = array_search($item->id, $this->ordering[$item->parent_id]); $canCreate = $user->authorise('core.create', 'com_menus'); $canEdit = $user->authorise('core.edit', 'com_menus'); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id')|| $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_menus') && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td> <?php echo str_repeat('<span class="gi">|—</span>', $item->level - 1) ?> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'items.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_menus&task=item.edit&id='.(int) $item->id);?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> <p class="smallsub" title="<?php echo $this->escape($item->path);?>"> <?php echo str_repeat('<span class="gtr">|—</span>', $item->level - 1) ?> <?php if ($item->type != 'url') : ?> <?php if (empty($item->note)) : ?> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias));?> <?php else : ?> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS_NOTE', $this->escape($item->alias), $this->escape($item->note));?> <?php endif; ?> <?php elseif ($item->type == 'url' && $item->note) : ?> <?php echo JText::sprintf('JGLOBAL_LIST_NOTE', $this->escape($item->note));?> <?php endif; ?></p> </td> <td class="center"> <?php echo JHtml::_('MenusHtml.Menus.state', $item->published, $i, $canChange, 'cb'); ?> </td> <td class="order"> <?php if ($canChange) : ?> <?php if ($saveOrder) : ?> <span><?php echo $this->pagination->orderUpIcon($i, isset($this->ordering[$item->parent_id][$orderkey - 1]), 'items.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, isset($this->ordering[$item->parent_id][$orderkey + 1]), 'items.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php endif; ?> <?php $disabled = $saveOrder ? '' : 'disabled="disabled"'; ?> <input type="text" name="order[]" value="<?php echo $orderkey + 1;?>" <?php echo $disabled ?> class="text-area-order" title="<?php echo $item->title; ?> order" /> <?php else : ?> <?php echo $orderkey + 1;?> <?php endif; ?> </td> <td class="center"> <?php echo $this->escape($item->access_level); ?> </td> <td class="nowrap"> <span title="<?php echo isset($item->item_type_desc) ? htmlspecialchars($this->escape($item->item_type_desc), ENT_COMPAT, 'UTF-8') : ''; ?>"> <?php echo $this->escape($item->item_type); ?></span> </td> <td class="center"> <?php if ($item->type == 'component') : ?> <?php if ($item->language == '*' || $item->home == '0'):?> <?php echo JHtml::_('jgrid.isdefault', $item->home, $i, 'items.', ($item->language != '*' || !$item->home) && $canChange);?> <?php elseif ($canChange):?> <a href="<?php echo JRoute::_('index.php?option=com_menus&task=items.unsetDefault&cid[]='.$item->id.'&'.JSession::getFormToken().'=1');?>"> <?php echo JHtml::_('image', 'mod_languages/' . $item->image . '.gif', $item->language_title, array('title' => JText::sprintf('COM_MENUS_GRID_UNSET_LANGUAGE', $item->language_title)), true);?> </a> <?php else:?> <?php echo JHtml::_('image', 'mod_languages/' . $item->image . '.gif', $item->language_title, array('title' => $item->language_title), true);?> <?php endif;?> <?php endif; ?> </td> <?php if ($assoc): ?> <td class="center"> <?php if ($item->association):?> <?php echo JHtml::_('MenusHtml.Menus.association', $item->id);?> <?php endif;?> </td> <?php endif;?> <td class="center"> <?php if ($item->language == ''):?> <?php echo JText::_('JDEFAULT'); ?> <?php elseif ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="center"> <span title="<?php echo sprintf('%d-%d', $item->lft, $item->rgt);?>"> <?php echo (int) $item->id; ?></span> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <div class="clr"> </div> <?php //Load the batch processing form.is user is allowed ?> <?php if ($user->authorise('core.create', 'com_menus') || $user->authorise('core.edit', 'com_menus')) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_MENUS_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif;?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\^<�-templates/hathor/html/com_menus/menu/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.formvalidator'); JText::script('ERROR'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { var form = document.getElementById('item-form'); if (task == 'menu.cancel' || document.formvalidator.isValid(form)) { Joomla.submitform(task, form); } }; "); ?> <div class="menu-edit"> <form action="<?php echo JRoute::_('index.php?option=com_menus&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="item-form"> <div class="col main-section"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_MENUS_MENU_DETAILS');?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('title'); ?> <?php echo $this->form->getInput('title'); ?></li> <li><?php echo $this->form->getLabel('menutype'); ?> <?php echo $this->form->getInput('menutype'); ?></li> <li><?php echo $this->form->getLabel('description'); ?> <?php echo $this->form->getInput('description'); ?></li> </ul> </fieldset> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> </form> <div class="clr"></div> </div> PKb��\ĭ�ښ�5templates/hathor/html/com_menus/menutypes/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $input = JFactory::getApplication()->input; // Checking if loaded via index.php or component.php $tmpl = ($input->getCmd('tmpl') != '') ? '1' : ''; JFactory::getDocument()->addScriptDeclaration( ' setmenutype = function(type) { var tmpl = ' . json_encode($tmpl) . '; if (tmpl) { window.parent.Joomla.submitbutton("item.setType", type); window.parent.jQuery("#menuTypeModal").modal("hide"); } else { window.location="index.php?option=com_menus&view=item&task=item.setType&layout=edit&type=" + type; } }; ' ); ?> <h2 class="modal-title"><?php echo JText::_('COM_MENUS_TYPE_CHOOSE'); ?></h2> <ul class="menu_types"> <?php foreach ($this->types as $name => $list): ?> <li><dl class="menu_type"> <dt><?php echo JText::_($name); ?></dt> <dd><ul> <?php foreach ($list as $item): ?> <li><a class="choose_type" href="#" title="<?php echo JText::_($item->description); ?>" onclick="javascript:setmenutype('<?php echo base64_encode(json_encode(array('id' => $this->recordId, 'title' => $item->title, 'request' => $item->request))); ?>')"> <?php echo JText::_($item->title);?> </a> </li> <?php endforeach; ?> </ul> </dd> </dl> </li> <?php endforeach; ?> <li><dl class="menu_type"> <dt><?php echo JText::_('COM_MENUS_TYPE_SYSTEM'); ?></dt> <dd> <ul> <li><a class="choose_type" href="#" title="<?php echo JText::_('COM_MENUS_TYPE_EXTERNAL_URL_DESC'); ?>" onclick="javascript:setmenutype('<?php echo base64_encode(json_encode(array('id' => $this->recordId, 'title' => 'url'))); ?>')"> <?php echo JText::_('COM_MENUS_TYPE_EXTERNAL_URL'); ?> </a> </li> <li><a class="choose_type" href="#" title="<?php echo JText::_('COM_MENUS_TYPE_ALIAS_DESC'); ?>" onclick="javascript:setmenutype('<?php echo base64_encode(json_encode(array('id' => $this->recordId, 'title' => 'alias'))); ?>')"> <?php echo JText::_('COM_MENUS_TYPE_ALIAS'); ?> </a> </li> <li><a class="choose_type" href="#" title="<?php echo JText::_('COM_MENUS_TYPE_SEPARATOR_DESC'); ?>" onclick="javascript:setmenutype('<?php echo base64_encode(json_encode(array('id' => $this->recordId, 'title' => 'separator'))); ?>')"> <?php echo JText::_('COM_MENUS_TYPE_SEPARATOR'); ?> </a> </li> <li><a class="choose_type" href="#" title="<?php echo JText::_('COM_MENUS_TYPE_HEADING_DESC'); ?>" onclick="javascript:setmenutype('<?php echo base64_encode(json_encode(array('id' => $this->recordId, 'title' => 'heading'))); ?>')"> <?php echo JText::_('COM_MENUS_TYPE_HEADING'); ?> </a> </li> </ul> </dd> </dl> </li> </ul> PKb��\Aq;��!�!1templates/hathor/html/com_menus/menus/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.multiselect'); $uri = JUri::getInstance(); $return = base64_encode($uri); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $modMenuId = (int) $this->get('ModMenuId'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task != 'menus.delete' || confirm('" . JText::_('COM_MENUS_MENU_CONFIRM_DELETE', true) . "')) { Joomla.submitform(task); } }; "); $script = array(); $script[] = "jQuery(document).ready(function() {"; foreach ($this->items as $item) : if ($user->authorise('core.edit', 'com_menus')) : $script[] = ' function jSelectPosition_' . $item->id . '(name) {'; $script[] = ' document.getElementById("' . $item->id . '").value = name;'; $script[] = ' jQuery(".modal").modal("hide");'; $script[] = ' };'; endif; endforeach; $script[] = ' jQuery(".modal").on("hidden", function () {'; $script[] = ' setTimeout(function(){'; $script[] = ' window.parent.location.reload();'; $script[] = ' },1000);'; $script[] = ' });'; $script[] = "});"; JFactory::getDocument()->addScriptDeclaration(implode("\n", $script)); ?> <form action="<?php echo JRoute::_('index.php?option=com_menus&view=menus');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('COM_MENUS_MENU_SEARCH_FILTER'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_MENUS_ITEMS_SEARCH_FILTER'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> </fieldset> <div class="clearfix"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col" rowspan="2"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th rowspan="2"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="width-30" colspan="3"> <?php echo JText::_('COM_MENUS_HEADING_NUMBER_MENU_ITEMS'); ?> </th> <th class="width-20" rowspan="2"> <?php echo JText::_('COM_MENUS_HEADING_LINKED_MODULES'); ?> </th> <th class="nowrap id-col" rowspan="2"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> <tr> <th class="width-10"> <?php echo JText::_('COM_MENUS_HEADING_PUBLISHED_ITEMS'); ?> </th> <th class="width-10"> <?php echo JText::_('COM_MENUS_HEADING_UNPUBLISHED_ITEMS'); ?> </th> <th class="width-10"> <?php echo JText::_('COM_MENUS_HEADING_TRASHED_ITEMS'); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $canCreate = $user->authorise('core.create', 'com_menus'); $canEdit = $user->authorise('core.edit', 'com_menus'); $canChange = $user->authorise('core.edit.state', 'com_menus'); ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td> <a href="<?php echo JRoute::_('index.php?option=com_menus&view=items&menutype='.$item->menutype) ?> "> <?php echo $this->escape($item->title); ?></a> <p class="smallsub">(<span><?php echo JText::_('COM_MENUS_MENU_MENUTYPE_LABEL') ?></span> <?php if ($canEdit) : ?> <?php echo '<a href="'.JRoute::_('index.php?option=com_menus&task=menu.edit&id='.$item->id).' title='.$this->escape($item->description).'">'. $this->escape($item->menutype).'</a>'; ?>) <?php else : ?> <?php echo $this->escape($item->menutype)?>) <?php endif; ?> </p> </td> <td class="center btns"> <a href="<?php echo JRoute::_('index.php?option=com_menus&view=items&menutype='.$item->menutype.'&filter_published=1');?>"> <?php echo $item->count_published; ?></a> </td> <td class="center btns"> <a href="<?php echo JRoute::_('index.php?option=com_menus&view=items&menutype='.$item->menutype.'&filter_published=0');?>"> <?php echo $item->count_unpublished; ?></a> </td> <td class="center btns"> <a href="<?php echo JRoute::_('index.php?option=com_menus&view=items&menutype='.$item->menutype.'&filter_published=-2');?>"> <?php echo $item->count_trashed; ?></a> </td> <td class="left"> <ul class="menu-module-list"> <?php if (isset($this->modules[$item->menutype])) : foreach ($this->modules[$item->menutype] as &$module) : ?> <li> <?php if ($canEdit) : ?> <?php $link = JRoute::_('index.php?option=com_modules&task=module.edit&id='.$module->id.'&return='.$return.'&tmpl=component&layout=modal'); ?> <a href="#module<?php echo $module->id; ?>Modal" role="button" class="button" data-toggle="modal" title="<?php echo JText::_('COM_MENUS_EDIT_MODULE_SETTINGS');?>"> <?php echo JText::sprintf('COM_MENUS_MODULE_ACCESS_POSITION', $this->escape($module->title), $this->escape($module->access_title), $this->escape($module->position)); ?></a> <?php else : ?> <?php echo JText::sprintf('COM_MENUS_MODULE_ACCESS_POSITION', $this->escape($module->title), $this->escape($module->access_title), $this->escape($module->position)); ?> <?php endif; ?> </li> <?php endforeach; ?> </ul> <?php foreach ($this->modules[$item->menutype] as &$module) : ?> <?php if ($canEdit) : ?> <?php $link = JRoute::_('index.php?option=com_modules&task=module.edit&id='.$module->id.'&return='.$return.'&tmpl=component&layout=modal'); ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'module' . $module->id . 'Modal', array( 'url' => $link, 'title' => JText::_('COM_MENUS_EDIT_MODULE_SETTINGS'), 'height' => '300px', 'width' => '800px', 'footer' => '<button class="btn" data-dismiss="modal" aria-hidden="true">' . JText::_("JLIB_HTML_BEHAVIOR_CLOSE") . '</button>' . '<button class="btn btn-success" data-dismiss="modal" aria-hidden="true" onclick="jQuery(\'#module' . $module->id . 'Modal iframe\').contents().find(\'#saveBtn\').click();">' . JText::_("JSAVE") . '</button>' ) ); ?> <?php endif; ?> <?php endforeach; ?> <?php elseif ($modMenuId) : ?> <a href="<?php echo JRoute::_('index.php?option=com_modules&task=module.add&eid=' . $modMenuId . '¶ms[menutype]='.$item->menutype); ?>"> <?php echo JText::_('COM_MENUS_ADD_MENU_MODULE'); ?></a> <?php echo JHtml::_( 'bootstrap.renderModal', 'moduleModal', array( 'url' => $link, 'title' => JText::_('COM_MENUS_EDIT_MODULE_SETTINGS'), 'height' => '500px', 'width' => '800px', 'footer' => '<button class="btn" data-dismiss="modal" aria-hidden="true">' . JText::_("JLIB_HTML_BEHAVIOR_CLOSE") . '</button>' ) ); ?> <?php endif; ?> </td> <td class="center"> <?php echo $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\d{͉��9templates/hathor/html/com_plugins/plugin/edit_options.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $fieldSets = $this->form->getFieldsets('params'); foreach ($fieldSets as $name => $fieldSet) : $label = !empty($fieldSet->label) ? $fieldSet->label : 'COM_PLUGINS_'.$name.'_FIELDSET_LABEL'; echo JHtml::_('sliders.panel', JText::_($label), $name.'-options'); if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="tip">'.$this->escape(JText::_($fieldSet->description)).'</p>'; endif; ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_($label) ?></legend> <?php $hidden_fields = ''; ?> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <?php if (!$field->hidden) : ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php else : $hidden_fields .= $field->input; ?> <?php endif; ?> <?php endforeach; ?> </ul> <?php echo $hidden_fields; ?> </fieldset> <?php endforeach; ?> PKb��\��=� � 1templates/hathor/html/com_plugins/plugin/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.formvalidator'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'plugin.cancel' || document.formvalidator.isValid(document.getElementById('style-form'))) { Joomla.submitform(task, document.getElementById('style-form')); } } "); ?> <form action="<?php echo JRoute::_('index.php?option=com_plugins&layout=edit&extension_id='.(int) $this->item->extension_id); ?>" method="post" name="adminForm" id="style-form" class="form-validate"> <div class="col main-section"> <fieldset class="adminform"> <legend><?php echo JText::_('JDETAILS') ?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('name'); ?> <?php echo $this->form->getInput('name'); ?> <span class="readonly plg-name"><?php echo JText::_($this->item->name);?></span></li> <li><?php echo $this->form->getLabel('enabled'); ?> <?php echo $this->form->getInput('enabled'); ?></li> <li><?php echo $this->form->getLabel('access'); ?> <?php echo $this->form->getInput('access'); ?></li> <li><?php echo $this->form->getLabel('ordering'); ?> <?php echo $this->form->getInput('ordering'); ?></li> <li><?php echo $this->form->getLabel('folder'); ?> <?php echo $this->form->getInput('folder'); ?></li> <li><?php echo $this->form->getLabel('element'); ?> <?php echo $this->form->getInput('element'); ?></li> <?php if ($this->item->extension_id) : ?> <li><?php echo $this->form->getLabel('extension_id'); ?> <?php echo $this->form->getInput('extension_id'); ?></li> <?php endif; ?> </ul> <!-- Plugin metadata --> <?php if ($this->item->xml) : ?> <?php if ($text = trim($this->item->xml->description)) : ?> <label id="jform_extdescription-lbl"> <?php echo JText::_('JGLOBAL_DESCRIPTION'); ?> </label> <div class="clr"></div> <div class="readonly plg-desc extdescript"> <?php echo JText::_($text); ?> </div> <?php endif; ?> <?php else : ?> <?php echo JText::_('COM_PLUGINS_XML_ERR'); ?> <?php endif; ?> </fieldset> </div> <div class="col options-section"> <?php echo JHtml::_('sliders.start', 'plugin-sliders-'.$this->item->extension_id); ?> <?php echo $this->loadTemplate('options'); ?> <div class="clr"></div> <?php echo JHtml::_('sliders.end'); ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> <div class="clr"></div> </form> PKb��\�_�AXX5templates/hathor/html/com_plugins/plugins/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.multiselect'); $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canOrder = $user->authorise('core.edit.state', 'com_plugins'); $saveOrder = $listOrder == 'ordering'; ?> <form action="<?php echo JRoute::_('index.php?option=com_plugins&view=plugins'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_PLUGINS_SEARCH_IN_TITLE'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_state"> <?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?> </label> <select name="filter_state" id="filter_state"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', PluginsHelper::publishedOptions(), 'value', 'text', $this->state->get('filter.state'), true);?> </select> <label class="selectlabel" for="filter_folder"> <?php echo JText::_('COM_PLUGINS_OPTION_FOLDER'); ?> </label> <select name="filter_folder" id="filter_folder"> <option value=""><?php echo JText::_('COM_PLUGINS_OPTION_FOLDER');?></option> <?php echo JHtml::_('select.options', PluginsHelper::folderOptions(), 'value', 'text', $this->state->get('filter.folder'));?> </select> <label class="selectlabel" for="filter_access"> <?php echo JText::_('JOPTION_SELECT_ACCESS'); ?> </label> <select name="filter_access" id="filter_access"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS');?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'COM_PLUGINS_NAME_HEADING', 'name', $listDirn, $listOrder); ?> </th> <th class="width-5"> <?php echo JHtml::_('grid.sort', 'JENABLED', 'enabled', $listDirn, $listOrder); ?> </th> <th class="nowrap ordering-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ORDERING', 'ordering', $listDirn, $listOrder); ?> <?php if ($canOrder && $saveOrder) :?> <?php echo JHtml::_('grid.order', $this->items, 'filesave.png', 'plugins.saveorder'); ?> <?php endif; ?> </th> <th class="nowrap width-10"> <?php echo JHtml::_('grid.sort', 'COM_PLUGINS_FOLDER_HEADING', 'folder', $listDirn, $listOrder); ?> </th> <th class="nowrap width-10"> <?php echo JHtml::_('grid.sort', 'COM_PLUGINS_ELEMENT_HEADING', 'element', $listDirn, $listOrder); ?> </th> <th class="title access-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'access', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'extension_id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $ordering = ($listOrder == 'ordering'); $canEdit = $user->authorise('core.edit', 'com_plugins'); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_plugins') && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->extension_id); ?> </td> <td> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'plugins.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_plugins&task=plugin.edit&extension_id='.(int) $item->extension_id); ?>"> <?php echo $item->name; ?></a> <?php else : ?> <?php echo $item->name; ?> <?php endif; ?> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->enabled, $i, 'plugins.', $canChange); ?> </td> <td class="order"> <?php if ($canChange) : ?> <?php if ($saveOrder) :?> <?php if ($listDirn == 'asc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, (@$this->items[$i - 1]->folder == $item->folder), 'plugins.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, (@$this->items[$i + 1]->folder == $item->folder), 'plugins.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php elseif ($listDirn == 'desc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, (@$this->items[$i - 1]->folder == $item->folder), 'plugins.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, (@$this->items[$i + 1]->folder == $item->folder), 'plugins.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php endif; ?> <?php endif; ?> <?php $disabled = $saveOrder ? '' : 'disabled="disabled"'; ?> <input type="text" name="order[]" value="<?php echo $item->ordering;?>" <?php echo $disabled ?> class="text-area-order" title="<?php echo $item->name; ?> order" /> <?php else : ?> <?php echo $item->ordering; ?> <?php endif; ?> </td> <td class="nowrap center"> <?php echo $this->escape($item->folder);?> </td> <td class="nowrap center"> <?php echo $this->escape($item->element);?> </td> <td class="center"> <?php echo $this->escape($item->access_level); ?> </td> <td class="center"> <?php echo (int) $item->extension_id;?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�|�##3templates/hathor/html/com_cpanel/cpanel/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ // no direct access defined('_JEXEC') or die; use Joomla\Registry\Registry; echo JHtml::_('sliders.start', 'panel-sliders', array('useCookie' => '1')); if (JFactory::getUser()->authorise('core.manage', 'com_postinstall')) : if ($this->postinstall_message_count): echo JHtml::_('sliders.panel', JText::_('COM_CPANEL_MESSAGES_TITLE'), 'cpanel-panel-com-postinstall'); ?> <div class="modal-body"> <p> <?php echo JText::_('COM_CPANEL_MESSAGES_BODY_NOCLOSE'); ?> </p> <p> <?php echo JText::_('COM_CPANEL_MESSAGES_BODYMORE_NOCLOSE'); ?> </p> </div> <div class="modal-footer"> <button onclick="window.location='index.php?option=com_postinstall&eid=700'; return false" class="btn btn-primary btn-large" > <?php echo JText::_('COM_CPANEL_MESSAGES_REVIEW'); ?> </button> </div> <?php endif; ?> <?php endif; foreach ($this->modules as $module) { $output = JModuleHelper::renderModule($module); echo JHtml::_('sliders.panel', $module->title, 'cpanel-panel-' . $module->name); echo $output; } echo JHtml::_('sliders.end'); PKb��\K��+templates/hathor/html/mod_login/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.keepalive'); ?> <form action="<?php echo JRoute::_('index.php', true, $params->get('usesecure')); ?>" method="post" id="form-login"> <fieldset class="loginform"> <label id="mod-login-username-lbl" for="mod-login-username"><?php echo JText::_('JGLOBAL_USERNAME'); ?></label> <input name="username" id="mod-login-username" type="text" size="15" autofocus="true" /> <label id="mod-login-password-lbl" for="mod-login-password"><?php echo JText::_('JGLOBAL_PASSWORD'); ?></label> <input name="passwd" id="mod-login-password" type="password" size="15" /> <?php if (count($twofactormethods) > 1): ?> <div class="control-group"> <div class="controls"> <label for="mod-login-secretkey"> <?php echo JText::_('JGLOBAL_SECRETKEY'); ?> </label> <input name="secretkey" autocomplete="off" tabindex="3" id="mod-login-secretkey" type="text" class="input-medium" size="15"/> </div> </div> <?php endif; ?> <?php if (!empty ($langs)) : ?> <label id="mod-login-language-lbl" for="lang"><?php echo JText::_('MOD_LOGIN_LANGUAGE'); ?></label> <?php echo $langs; ?> <?php endif; ?> <div class="clr"></div> <div class="button-holder"> <div class="button1"> <div class="next"> <a href="#" onclick="document.getElementById('form-login').submit();"> <?php echo JText::_('MOD_LOGIN_LOGIN'); ?></a> </div> </div> </div> <div class="clr"></div> <input type="submit" class="hidebtn" value="<?php echo JText::_('MOD_LOGIN_LOGIN'); ?>" /> <input type="hidden" name="option" value="com_login" /> <input type="hidden" name="task" value="login" /> <input type="hidden" name="return" value="<?php echo $return; ?>" /> <?php echo JHtml::_('form.token'); ?> </fieldset> </form> PKb��\ �Opp4templates/hathor/html/com_finder/filters/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); JText::script('COM_FINDER_INDEX_CONFIRM_DELETE_PROMPT'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(pressbutton) { if (pressbutton == 'filters.delete') { if (confirm(Joomla.JText._('COM_FINDER_INDEX_CONFIRM_DELETE_PROMPT'))) { Joomla.submitform(pressbutton); } else { return false; } } Joomla.submitform(pressbutton); } "); ?> <form action="<?php echo JRoute::_('index.php?option=com_finder&view=filters');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::sprintf('COM_FINDER_SEARCH_LABEL', JText::_('COM_FINDER_FILTERS')); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::sprintf('COM_FINDER_SEARCH_LABEL', JText::_('COM_FINDER_FILTERS')); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_FINDER_FILTER_SEARCH_DESCRIPTION'); ?>" /> <button type="submit" class="btn"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_state"><?php echo JText::_('COM_FINDER_INDEX_FILTER_BY_STATE'); ?></label> <select name="filter_state" id="filter_state"> <option value=""><?php echo JText::_('COM_FINDER_INDEX_FILTER_BY_STATE');?></option> <?php echo JHtml::_('select.options', JHtml::_('finder.statelist'), 'value', 'text', $this->state->get('filter.state'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?> </th> <th class="title created-by-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_CREATED_BY', 'a.created_by_alias', $listDirn, $listOrder); ?> </th> <th class="title date-col"> <?php echo JHtml::_('grid.sort', 'COM_FINDER_FILTER_TIMESTAMP', 'a.created', $listDirn, $listOrder); ?> </th> <th class="nowrap width-5"> <?php echo JHtml::_('grid.sort', 'COM_FINDER_FILTER_MAP_COUNT', 'a.map_count', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.filter_id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php if (count($this->items) == 0) : ?> <tr class="row0"> <td class="center" colspan="7"> <?php if ($this->total == 0): echo JText::_('COM_FINDER_NO_FILTERS'); ?> <a href="<?php echo JRoute::_('index.php?option=com_finder&task=filter.add'); ?>" title="<?php echo JText::_('COM_FINDER_CREATE_FILTER'); ?>"> <?php echo JText::_('COM_FINDER_CREATE_FILTER'); ?> </a> <?php else: echo JText::_('COM_FINDER_NO_RESULTS'); endif; ?> </td> </tr> <?php endif; ?> <?php foreach ($this->items as $i => $item) : $canCreate = $user->authorise('core.create', 'com_finder'); $canEdit = $user->authorise('core.edit', 'com_finder'); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $filter->checked_out == $user->get('id') || $filter->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_finder') && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>"> <th class="center"> <?php echo JHtml::_('grid.id', $i, $item->filter_id); ?> </th> <td> <?php if ($item->checked_out) { echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'filters.', $canCheckin); } ?> <?php if ($canEdit) { ?> <a href="<?php echo JRoute::_('index.php?option=com_finder&task=filter.edit&filter_id=' . (int) $item->filter_id); ?>"> <?php echo $this->escape($item->title); ?></a> <?php } else { echo $this->escape($item->title); } ?> </td> <td class="center nowrap"> <?php echo JHtml::_('jgrid.published', $item->state, $i, 'filters.', $canChange); ?> </td> <td class="center nowrap"> <?php echo $item->created_by_alias ? $item->created_by_alias : $item->user_name; ?> </td> <td class="center nowrap"> <?php echo JHtml::_('date', $item->created, JText::_('DATE_FORMAT_LC4')); ?> </td> <td class="center nowrap"> <?php echo $item->map_count; ?> </td> <td class="center"> <?php echo (int) $item->filter_id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�"t__2templates/hathor/html/com_finder/index/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('bootstrap.tooltip'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $lang = JFactory::getLanguage(); JText::script('COM_FINDER_INDEX_CONFIRM_PURGE_PROMPT'); JText::script('COM_FINDER_INDEX_CONFIRM_DELETE_PROMPT'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(pressbutton) { if (pressbutton == 'index.purge') { if (confirm(Joomla.JText._('COM_FINDER_INDEX_CONFIRM_PURGE_PROMPT'))) { Joomla.submitform(pressbutton); } else { return false; } } if (pressbutton == 'index.delete') { if (confirm(Joomla.JText._('COM_FINDER_INDEX_CONFIRM_DELETE_PROMPT'))) { Joomla.submitform(pressbutton); } else { return false; } } Joomla.submitform(pressbutton); } "); ?> <form action="<?php echo JRoute::_('index.php?option=com_finder&view=index');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::sprintf('COM_FINDER_SEARCH_LABEL', JText::_('COM_FINDER_ITEMS')); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::sprintf('COM_FINDER_SEARCH_LABEL', JText::_('COM_FINDER_ITEMS')); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_FINDER_FILTER_SEARCH_DESCRIPTION'); ?>" /> <button type="submit" class="btn"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_type"><?php echo JText::_('COM_FINDER_INDEX_TYPE_FILTER'); ?></label> <select name="filter_type" id="filter_type"> <option value=""><?php echo JText::_('COM_FINDER_INDEX_TYPE_FILTER'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('finder.typeslist'), 'value', 'text', $this->state->get('filter.type'));?> </select> <label class="selectlabel" for="filter_state"><?php echo JText::_('COM_FINDER_INDEX_FILTER_BY_STATE'); ?></label> <select name="filter_state" id="filter_state"> <option value=""><?php echo JText::_('COM_FINDER_INDEX_FILTER_BY_STATE');?></option> <?php echo JHtml::_('select.options', JHtml::_('finder.statelist'), 'value', 'text', $this->state->get('filter.state'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'l.title', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'l.published', $listDirn, $listOrder); ?> </th> <th class="nowrap width-5"> <?php echo JHtml::_('grid.sort', 'COM_FINDER_INDEX_HEADING_INDEX_TYPE', 'l.type_id', $listDirn, $listOrder); ?> </th> <th class="nowrap width-20"> <?php echo JHtml::_('grid.sort', 'COM_FINDER_INDEX_HEADING_LINK_URL', 'l.url', $listDirn, $listOrder); ?> </th> <th class="title date-col"> <?php echo JHtml::_('grid.sort', 'COM_FINDER_INDEX_HEADING_INDEX_DATE', 'l.indexdate', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php if (count($this->items) == 0) : ?> <tr class="row0"> <td align="center" colspan="7"> <?php if ($this->total == 0) { echo JText::_('COM_FINDER_INDEX_NO_DATA') . ' ' . JText::_('COM_FINDER_INDEX_TIP'); } else { echo JText::_('COM_FINDER_INDEX_NO_CONTENT'); } ?> </td> </tr> <?php endif; ?> <?php $canChange = JFactory::getUser()->authorise('core.manage', 'com_finder'); ?> <?php foreach ($this->items as $i => $item) : ?> <tr class="row<?php echo $i % 2; ?>"> <th class="center"> <?php echo JHtml::_('grid.id', $i, $item->link_id); ?> </th> <td> <?php if ((int) $item->publish_start_date or (int) $item->publish_end_date or (int) $item->start_date or (int) $item->end_date) : ?> <img src="<?php echo JUri::root();?>/media/system/images/calendar.png" style="border:1px;float:right" class="hasTooltip" title="<?php echo JHtml::tooltipText(JText::sprintf('COM_FINDER_INDEX_DATE_INFO', $item->publish_start_date, $item->publish_end_date, $item->start_date, $item->end_date), '', 0); ?>" /> <?php endif; ?> <?php echo $this->escape($item->title); ?> </td> <td class="center nowrap"> <?php echo JHtml::_('jgrid.published', $item->published, $i, 'index.', $canChange, 'cb'); ?> </td> <td class="center nowrap"> <?php $key = FinderHelperLanguage::branchSingular($item->t_title); echo $lang->hasKey($key) ? JText::_($key) : $item->t_title; ?> </td> <td class="nowrap"> <?php if (strlen($item->url) > 80) { echo substr($item->url, 0, 70) . '...'; } else { echo $item->url; } ?> </td> <td class="center nowrap"> <?php echo JHtml::_('date', $item->indexdate, JText::_('DATE_FORMAT_LC4')); ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="display" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�F�1templates/hathor/html/com_finder/maps/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.multiselect'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $lang = JFactory::getLanguage(); JText::script('COM_FINDER_MAPS_CONFIRM_DELETE_PROMPT'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(pressbutton) { if (pressbutton == 'map.delete') { if (confirm(Joomla.JText._('COM_FINDER_MAPS_CONFIRM_DELETE_PROMPT'))) { Joomla.submitform(pressbutton); } else { return false; } } Joomla.submitform(pressbutton); } "); ?> <form action="<?php echo JRoute::_('index.php?option=com_finder&view=maps');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::sprintf('COM_FINDER_SEARCH_LABEL', JText::_('COM_FINDER_MAPS')); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::sprintf('COM_FINDER_SEARCH_LABEL', JText::_('COM_FINDER_MAPS')); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_FINDER_FILTER_SEARCH_DESCRIPTION'); ?>" /> <button type="submit" class="btn"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_branch"><?php echo JText::sprintf('COM_FINDER_FILTER_BY', JText::_('COM_FINDER_MAPS')); ?></label> <select name="filter_branch" id="filter_branch"> <?php echo JHtml::_('select.options', JHtml::_('finder.mapslist'), 'value', 'text', $this->state->get('filter.branch'));?> </select> <label class="selectlabel" for="filter_state"><?php echo JText::_('COM_FINDER_INDEX_FILTER_BY_STATE'); ?></label> <select name="filter_state" id="filter_state"> <option value=""><?php echo JText::_('COM_FINDER_INDEX_FILTER_BY_STATE');?></option> <?php echo JHtml::_('select.options', JHtml::_('finder.statelist'), 'value', 'text', $this->state->get('filter.state'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?> </button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php if (count($this->items) == 0) : ?> <tr class="row0"> <td class="center" colspan="5"> <?php echo JText::_('COM_FINDER_MAPS_NO_CONTENT'); ?> </td> </tr> <?php endif; ?> <?php if ($this->state->get('filter.branch') != 1) : ?> <tr class="row1"> <td colspan="5" class="center"> <a href="#" onclick="document.getElementById('filter_branch').value='1';document.adminForm.submit();"> <?php echo JText::_('COM_FINDER_MAPS_RETURN_TO_BRANCHES'); ?></a> </td> </tr> <?php endif; ?> <?php $canChange = JFactory::getUser()->authorise('core.manage', 'com_finder'); ?> <?php foreach ($this->items as $i => $item) :?> <tr class="row<?php echo $i % 2; ?>"> <th class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </th> <td> <?php $key = FinderHelperLanguage::branchSingular($item->title); $title = $lang->hasKey($key) ? JText::_($key) : $item->title; ?> <?php if ($this->state->get('filter.branch') == 1 && $item->num_children) : ?> <a href="#" onclick="document.getElementById('filter_branch').value='<?php echo (int) $item->id;?>';document.adminForm.submit();" title="<?php echo JText::_('COM_FINDER_MAPS_BRANCH_LINK'); ?>"> <?php echo $this->escape($title); ?></a> <?php else: ?> <?php echo $this->escape($title); ?> <?php endif; ?> <?php if ($item->num_children > 0) : ?> <small>(<?php echo $item->num_children; ?>)</small> <?php elseif ($item->num_nodes > 0) : ?> <small>(<?php echo $item->num_nodes; ?>)</small> <?php endif; ?> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->state, $i, 'maps.', $canChange, 'cb'); ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�n��O(O(5templates/hathor/html/com_modules/modules/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.multiselect'); JHtml::_('behavior.modal'); $client = $this->state->get('filter.client_id') ? 'administrator' : 'site'; $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canOrder = $user->authorise('core.edit.state', 'com_modules'); $saveOrder = $listOrder == 'ordering'; ?> <form action="<?php echo JRoute::_('index.php?option=com_modules'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_MODULES_MODULES_FILTER_SEARCH_DESC'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_client_id"> <?php echo JText::_('JGLOBAL_FILTER_CLIENT'); ?> </label> <select name="filter_client_id" id="filter_client_id"> <?php echo JHtml::_('select.options', ModulesHelper::getClientOptions(), 'value', 'text', $this->state->get('filter.client_id'));?> </select> <label class="selectlabel" for="filter_state"> <?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?> </label> <select name="filter_state" id="filter_state"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', ModulesHelper::getStateOptions(), 'value', 'text', $this->state->get('filter.state'));?> </select> <label class="selectlabel" for="filter_position"> <?php echo JText::_('COM_MODULES_OPTION_SELECT_POSITION'); ?> </label> <select name="filter_position" id="filter_position"> <option value=""><?php echo JText::_('COM_MODULES_OPTION_SELECT_POSITION');?></option> <?php echo JHtml::_('select.options', ModulesHelper::getPositions($this->state->get('filter.client_id')), 'value', 'text', $this->state->get('filter.position'));?> </select> <label class="selectlabel" for="filter_module"> <?php echo JText::_('COM_MODULES_OPTION_SELECT_MODULE'); ?> </label> <select name="filter_module" id="filter_module"> <option value=""><?php echo JText::_('COM_MODULES_OPTION_SELECT_MODULE');?></option> <?php echo JHtml::_('select.options', ModulesHelper::getModules($this->state->get('filter.client_id')), 'value', 'text', $this->state->get('filter.module'));?> </select> <label class="selectlabel" for="filter_access"> <?php echo JText::_('JOPTION_SELECT_ACCESS'); ?> </label> <select name="filter_access" id="filter_access"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS');?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access'));?> </select> <label class="selectlabel" for="filter_language"> <?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?> </label> <select name="filter_language" id="filter_language"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE');?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist" id="modules-mgr"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'title', $listDirn, $listOrder); ?> </th> <th class="width-5"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'published', $listDirn, $listOrder); ?> </th> <th class="width-20"> <?php echo JHtml::_('grid.sort', 'COM_MODULES_HEADING_POSITION', 'position', $listDirn, $listOrder); ?> </th> <th class="nowrap ordering-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ORDERING', 'ordering', $listDirn, $listOrder); ?> <?php if ($canOrder && $saveOrder) :?> <?php echo JHtml::_('grid.order', $this->items, 'filesave.png', 'modules.saveorder'); ?> <?php endif; ?> </th> <th class="width-10"> <?php echo JHtml::_('grid.sort', 'COM_MODULES_HEADING_MODULE', 'name', $listDirn, $listOrder); ?> </th> <th class="width-10"> <?php echo JHtml::_('grid.sort', 'COM_MODULES_HEADING_PAGES', 'pages', $listDirn, $listOrder); ?> </th> <th class="title access-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'access', $listDirn, $listOrder); ?> </th> <th class="language-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'language_title', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $ordering = ($listOrder == 'ordering'); $canCreate = $user->authorise('core.create', 'com_modules'); $canEdit = $user->authorise('core.edit', 'com_modules'); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_modules') && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'modules.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_modules&task=module.edit&id='.(int) $item->id); ?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> <?php if (!empty($item->note)) : ?> <p class="smallsub"> <?php echo JText::sprintf('JGLOBAL_LIST_NOTE', $this->escape($item->note));?></p> <?php endif; ?> </td> <td class="center"> <?php echo JHtml::_('modules.state', $item->published, $i, $canChange, 'cb'); ?> </td> <td class="center"> <?php echo $item->position; ?> </td> <td class="order"> <?php if ($canChange) : ?> <?php if ($saveOrder) :?> <?php if ($listDirn == 'asc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, (@$this->items[$i - 1]->position == $item->position), 'modules.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, (@$this->items[$i + 1]->position == $item->position), 'modules.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php elseif ($listDirn == 'desc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, (@$this->items[$i - 1]->position == $item->position), 'modules.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, (@$this->items[$i + 1]->position == $item->position), 'modules.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php endif; ?> <?php endif; ?> <?php $disabled = $saveOrder ? '' : 'disabled="disabled"'; ?> <input type="text" name="order[]" value="<?php echo $item->ordering;?>" <?php echo $disabled ?> class="text-area-order" title="<?php echo $item->title; ?> order" /> <?php else : ?> <?php echo $item->ordering; ?> <?php endif; ?> </td> <td class="left"> <?php echo $item->name;?> </td> <td class="center"> <?php echo $item->pages; ?> </td> <td class="center"> <?php echo $this->escape($item->access_level); ?> </td> <td class="center"> <?php if ($item->language == ''):?> <?php echo JText::_('JDEFAULT'); ?> <?php elseif ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php //Load the batch processing form.is user is allowed ?> <?php if ($user->authorise('core.create', 'com_modules') || $user->authorise('core.edit', 'com_modules')) : ?> <?php echo $this->loadTemplate('batch'); ?> <?php endif;?> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\#���77<templates/hathor/html/com_modules/module/edit_assignment.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Initiasile related data. require_once JPATH_ADMINISTRATOR.'/components/com_menus/helpers/menus.php'; $menuTypes = MenusHelper::getMenuLinks(); JFactory::getDocument()->addScriptDeclaration(" window.addEvent('domready', function(){ validate(); document.getElements('select').addEvent('change', function(e){validate();}); }); function validate(){ var value = document.id('jform_assignment').value; var list = document.id('menu-assignment'); if (value == '-' || value == '0'){ $$('.jform-assignments-button').each(function(el) {el.setProperty('disabled', true); }); list.getElements('input').each(function(el){ el.setProperty('disabled', true); if (value == '-'){ el.setProperty('checked', false); } else { el.setProperty('checked', true); } }); } else { $$('.jform-assignments-button').each(function(el) {el.setProperty('disabled', false); }); list.getElements('input').each(function(el){ el.setProperty('disabled', false); }); } } "); ?> <fieldset class="adminform"> <legend><?php echo JText::_('COM_MODULES_MENU_ASSIGNMENT'); ?></legend> <label id="jform_menus-lbl" for="jform_menus"><?php echo JText::_('COM_MODULES_MODULE_ASSIGN'); ?></label> <fieldset id="jform_menus" class="radio"> <select name="jform[assignment]" id="jform_assignment"> <?php echo JHtml::_('select.options', ModulesHelper::getAssignmentOptions($this->item->client_id), 'value', 'text', $this->item->assignment, true);?> </select> </fieldset> <label id="jform_menuselect-lbl" for="jform_menuselect"><?php echo JText::_('JGLOBAL_MENU_SELECTION'); ?></label> <button type="button" class="jform-assignments-button jform-rightbtn" onclick="$$('.chkbox').each(function(el) { el.checked = !el.checked; });"> <?php echo JText::_('JGLOBAL_SELECTION_INVERT_ALL'); ?> </button> <button type="button" class="jform-assignments-button jform-rightbtn" onclick="$$('.chkbox').each(function(el) { el.checked = false; });"> <?php echo JText::_('JGLOBAL_SELECTION_NONE'); ?> </button> <button type="button" class="jform-assignments-button jform-rightbtn" onclick="$$('.chkbox').each(function(el) { el.checked = true; });"> <?php echo JText::_('JGLOBAL_SELECTION_ALL'); ?> </button> <div class="clr"></div> <div id="menu-assignment"> <?php echo JHtml::_('tabs.start', 'module-menu-assignment-tabs', array('useCookie' => 1));?> <?php foreach ($menuTypes as &$type) : echo JHtml::_('tabs.panel', $type->title ? $type->title : $type->menutype, $type->menutype.'-details'); $chkbox_class = 'chk-menulink-' . $type->id; ?> <button type="button" class="jform-assignments-button jform-rightbtn" onclick="$$('.<?php echo $chkbox_class; ?>').each(function(el) { el.checked = !el.checked; });"> <?php echo JText::_('JGLOBAL_SELECTION_INVERT'); ?> </button> <button type="button" class="jform-assignments-button jform-rightbtn" onclick="$$('.<?php echo $chkbox_class; ?>').each(function(el) { el.checked = false; });"> <?php echo JText::_('JGLOBAL_SELECTION_NONE'); ?> </button> <button type="button" class="jform-assignments-button jform-rightbtn" onclick="$$('.<?php echo $chkbox_class; ?>').each(function(el) { el.checked = true; });"> <?php echo JText::_('JGLOBAL_SELECTION_ALL'); ?> </button> <div class="clr"></div> <?php $count = count($type->links); ?> <?php $i = 0; ?> <?php if ($count) : ?> <ul class="menu-links"> <?php foreach ($type->links as $link) : if (trim($this->item->assignment) == '-') : $checked = ''; elseif ($this->item->assignment == 0) : $checked = ' checked="checked"'; elseif ($this->item->assignment < 0) : $checked = in_array(-$link->value, $this->item->assigned) ? ' checked="checked"' : ''; elseif ($this->item->assignment > 0) : $checked = in_array($link->value, $this->item->assigned) ? ' checked="checked"' : ''; endif; ?> <li class="menu-link"> <input type="checkbox" class="chkbox <?php echo $chkbox_class; ?>" name="jform[assigned][]" value="<?php echo (int) $link->value;?>" id="link<?php echo (int) $link->value;?>"<?php echo $checked;?>/> <label for="link<?php echo (int) $link->value;?>"> <?php echo $link->text; ?> </label> </li> <?php if ($count > 20 && ++$i == ceil($count / 2)) :?> </ul><ul class="menu-links"> <?php endif; ?> <?php endforeach; ?> </ul> <div class="clr"></div> <?php endif; ?> <?php endforeach; ?> <?php echo JHtml::_('tabs.end');?> </div> </fieldset> PKb��\����9templates/hathor/html/com_modules/module/edit_options.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $fieldSets = $this->form->getFieldsets('params'); foreach ($fieldSets as $name => $fieldSet) : $label = !empty($fieldSet->label) ? $fieldSet->label : 'COM_MODULES_'.$name.'_FIELDSET_LABEL'; echo JHtml::_('sliders.panel', JText::_($label), $name.'-options'); if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="tip">'.$this->escape(JText::_($fieldSet->description)).'</p>'; endif; ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_($label); ?></legend> <?php $hidden_fields = ''; ?> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <?php if (!$field->hidden) : ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php else : $hidden_fields .= $field->input; ?> <?php endif; ?> <?php endforeach; ?> </ul> <?php echo $hidden_fields; ?> </fieldset> <?php endforeach; ?> PKb��\����1templates/hathor/html/com_modules/module/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.combobox'); $hasContent = empty($this->item->module) || $this->item->module == 'custom' || $this->item->module == 'mod_custom'; $script = "Joomla.submitbutton = function(task) { if (task == 'module.cancel' || document.formvalidator.isValid(document.getElementById('module-form'))) {"; if ($hasContent) { $script .= $this->form->getField('content')->save(); } $script .= " Joomla.submitform(task, document.getElementById('module-form')); if (self != top) { window.parent.jQuery('.modal').modal('hide'); } } }"; JFactory::getDocument()->addScriptDeclaration($script); ?> <div class="module-edit"> <form action="<?php echo JRoute::_('index.php?option=com_modules&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="module-form" class="form-validate"> <div class="col main-section"> <fieldset class="adminform"> <legend><?php echo JText::_('JDETAILS'); ?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('title'); ?> <?php echo $this->form->getInput('title'); ?></li> <li><?php echo $this->form->getLabel('showtitle'); ?> <?php echo $this->form->getInput('showtitle'); ?></li> <li><?php echo $this->form->getLabel('position'); ?> <?php echo $this->form->getInput('custom_position'); ?> <label id="jform_custom_position-lbl" for="jform_custom_position" class="element-invisible"><?php echo JText::_('TPL_HATHOR_COM_MODULES_CUSTOM_POSITION_LABEL');?></label> <?php echo $this->form->getInput('position'); ?></li> <?php if ((string) $this->item->xml->name != 'Login Form') : ?> <li><?php echo $this->form->getLabel('published'); ?> <?php echo $this->form->getInput('published'); ?></li> <?php endif; ?> <li><?php echo $this->form->getLabel('access'); ?> <?php echo $this->form->getInput('access'); ?></li> <li><?php echo $this->form->getLabel('ordering'); ?> <?php echo $this->form->getInput('ordering'); ?></li> <?php if ((string) $this->item->xml->name != 'Login Form') : ?> <li><?php echo $this->form->getLabel('publish_up'); ?> <?php echo $this->form->getInput('publish_up'); ?></li> <li><?php echo $this->form->getLabel('publish_down'); ?> <?php echo $this->form->getInput('publish_down'); ?></li> <?php endif; ?> <li><?php echo $this->form->getLabel('language'); ?> <?php echo $this->form->getInput('language'); ?></li> <li><?php echo $this->form->getLabel('note'); ?> <?php echo $this->form->getInput('note'); ?></li> <?php if ($this->item->id) : ?> <li><?php echo $this->form->getLabel('id'); ?> <?php echo $this->form->getInput('id'); ?></li> <?php endif; ?> <li><?php echo $this->form->getLabel('module'); ?> <?php echo $this->form->getInput('module'); ?> <span class="faux-input"><?php if ($this->item->xml) echo ($text = (string) $this->item->xml->name) ? JText::_($text) : $this->item->module;else echo JText::_(COM_MODULES_ERR_XML);?></span></li> <li><?php echo $this->form->getLabel('client_id'); ?> <input type="text" size="35" id="jform_client_id" value="<?php echo $this->item->client_id == 0 ? JText::_('JSITE') : JText::_('JADMINISTRATOR'); ?> " class="readonly" readonly="readonly" /> <?php echo $this->form->getInput('client_id'); ?></li> </ul> <div class="clr"></div> <?php if ($this->item->xml) : ?> <?php if ($text = trim($this->item->xml->description)) : ?> <span class="faux-label"> <?php echo JText::_('COM_MODULES_MODULE_DESCRIPTION'); ?> </span> <div class="clr"></div> <div class="readonly mod-desc extdescript"> <?php echo JText::_($text); ?> </div> <?php endif; ?> <?php else : ?> <?php echo JText::_('COM_MODULES_ERR_XML'); ?> <?php endif; ?> <div class="clr"></div> </fieldset> </div> <div class="col options-section"> <?php echo JHtml::_('sliders.start', 'module-sliders'); ?> <?php echo $this->loadTemplate('options'); ?> <?php echo JHtml::_('sliders.end'); ?> </div> <?php if ($hasContent) : ?> <div class="col main-section"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_MODULES_CUSTOM_OUTPUT'); ?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('content'); ?> <div class="clr"></div> <?php echo $this->form->getInput('content'); ?></li> </ul> </fieldset> </div> <?php endif; ?> <?php if ($this->item->client_id == 0) :?> <div class="col main-section"> <?php echo $this->loadTemplate('assignment'); ?> </div> <?php endif; ?> <div> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> </form> </div> PKb��\&0����5templates/hathor/html/com_modules/positions/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); $function = JFactory::getApplication()->input->getCmd('function', 'jSelectPosition'); $lang = JFactory::getLanguage(); $ordering = $this->escape($this->state->get('list.ordering')); $direction = $this->escape($this->state->get('list.direction')); $clientId = $this->state->get('filter.client_id'); $state = $this->state->get('filter.state'); $template = $this->state->get('filter.template'); $type = $this->state->get('filter.type'); ?> <form action="<?php echo JRoute::_('index.php?option=com_modules&view=positions&layout=modal&tmpl=component&function='.$function.'&client_id=' .$clientId);?>" method="post" name="adminForm" id="adminForm"> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label for="filter_search"> <?php echo JText::_('JSearch_Filter_Label'); ?> </label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" size="30" title="<?php echo JText::_('COM_MODULES_FILTER_SEARCH_DESC'); ?>" /> <button type="submit"> <?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"> <?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_state"> <?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?> </label> <select name="filter_state" id="filter_state"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', JHtml::_('modules.templateStates'), 'value', 'text', $state, true);?> </select> <label class="selectlabel" for="filter_type"> <?php echo JText::_('COM_MODULES_OPTION_SELECT_TYPE'); ?> </label> <select name="filter_type" id="filter_type"> <option value=""><?php echo JText::_('COM_MODULES_OPTION_SELECT_TYPE');?></option> <?php echo JHtml::_('select.options', JHtml::_('modules.types'), 'value', 'text', $type, true);?> </select> <label class="selectlabel" for="filter_template"> <?php echo JText::_('JOPTION_SELECT_TEMPLATE'); ?> </label> <select name="filter_template" id="filter_template"> <option value=""><?php echo JText::_('JOPTION_SELECT_TEMPLATE');?></option> <?php echo JHtml::_('select.options', JHtml::_('modules.templates', $clientId), 'value', 'text', $template, true);?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <table class="adminlist"> <thead> <tr> <th class="title width-20"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'value', $direction, $ordering); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_MODULES_HEADING_TEMPLATES', 'templates', $direction, $ordering); ?> </th> </tr> </thead> <tbody> <?php $i = 1; foreach ($this->items as $value => $templates) : ?> <tr class="row<?php echo $i = 1 - $i;?>"> <td> <a class="pointer" onclick="if (window.parent) window.parent.<?php echo $function;?>('<?php echo $value; ?>');"><?php echo $this->escape($value); ?></a> </td> <td> <?php if (!empty($templates)):?> <a class="pointer" onclick="if (window.parent) window.parent.<?php echo $function;?>('<?php echo $value; ?>');"> <ul> <?php foreach ($templates as $template => $label):?> <li><?php echo $lang->hasKey($label) ? JText::sprintf('COM_MODULES_MODULE_TEMPLATE_POSITION', JText::_($template), JText::_($label)) : JText::_($template);?></li> <?php endforeach;?> </ul> </a> <?php endif;?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <div> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $ordering; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $direction; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\��k�WW2templates/hathor/html/com_contact/contact/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.formvalidator'); $app = JFactory::getApplication(); $input = $app->input; $saveHistory = $this->state->get('params')->get('save_history', 0); $assoc = JLanguageAssociations::isEnabled(); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'contact.cancel' || document.formvalidator.isValid(document.getElementById('contact-form'))) { " . $this->form->getField('misc')->save() . " Joomla.submitform(task, document.getElementById('contact-form')); } } "); ?> <form action="<?php echo JRoute::_('index.php?option=com_contact&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="contact-form" class="form-validate"> <div class="col main-section"> <fieldset class="adminform"> <legend><?php echo empty($this->item->id) ? JText::_('COM_CONTACT_NEW_CONTACT') : JText::sprintf('COM_CONTACT_EDIT_CONTACT', $this->item->id); ?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('name'); ?> <?php echo $this->form->getInput('name'); ?></li> <li><?php echo $this->form->getLabel('alias'); ?> <?php echo $this->form->getInput('alias'); ?></li> <li><?php echo $this->form->getLabel('user_id'); ?> <?php echo $this->form->getInput('user_id'); ?></li> <li><?php echo $this->form->getLabel('catid'); ?> <?php echo $this->form->getInput('catid'); ?></li> <li><?php echo $this->form->getLabel('published'); ?> <?php echo $this->form->getInput('published'); ?></li> <li><?php echo $this->form->getLabel('access'); ?> <?php echo $this->form->getInput('access'); ?></li> <li><?php echo $this->form->getLabel('ordering'); ?> <?php echo $this->form->getInput('ordering'); ?></li> <li><?php echo $this->form->getLabel('featured'); ?> <?php echo $this->form->getInput('featured'); ?></li> <li><?php echo $this->form->getLabel('language'); ?> <?php echo $this->form->getInput('language'); ?></li> <!-- Tag field --> <li><?php echo $this->form->getLabel('tags'); ?> <div class="is-tagbox"> <?php echo $this->form->getInput('tags'); ?> </div> </li> <?php if ($saveHistory) : ?> <li><?php echo $this->form->getLabel('version_note'); ?> <?php echo $this->form->getInput('version_note'); ?></li> <?php endif; ?> <li><?php echo $this->form->getLabel('id'); ?> <?php echo $this->form->getInput('id'); ?></li> </ul> <div class="clr"></div> <?php echo $this->form->getLabel('misc'); ?> <div class="clr"></div> <?php echo $this->form->getInput('misc'); ?> </fieldset> </div> <div class="col options-section"> <?php echo JHtml::_('sliders.start', 'contact-slider'); ?> <?php echo JHtml::_('sliders.panel', JText::_('JGLOBAL_FIELDSET_PUBLISHING'), 'publishing-details'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('JGLOBAL_FIELDSET_PUBLISHING'); ?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('created_by'); ?> <?php echo $this->form->getInput('created_by'); ?></li> <li><?php echo $this->form->getLabel('created_by_alias'); ?> <?php echo $this->form->getInput('created_by_alias'); ?></li> <li><?php echo $this->form->getLabel('created'); ?> <?php echo $this->form->getInput('created'); ?></li> <li><?php echo $this->form->getLabel('publish_up'); ?> <?php echo $this->form->getInput('publish_up'); ?></li> <li><?php echo $this->form->getLabel('publish_down'); ?> <?php echo $this->form->getInput('publish_down'); ?></li> <?php if ($this->item->modified_by) : ?> <li><?php echo $this->form->getLabel('modified_by'); ?> <?php echo $this->form->getInput('modified_by'); ?></li> <li><?php echo $this->form->getLabel('modified'); ?> <?php echo $this->form->getInput('modified'); ?></li> <?php endif; ?> </ul> </fieldset> <?php echo JHtml::_('sliders.panel', JText::_('COM_CONTACT_CONTACT_DETAILS'), 'basic-options'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('COM_CONTACT_CONTACT_DETAILS'); ?></legend> <p><?php echo empty($this->item->id) ? JText::_('COM_CONTACT_DETAILS') : JText::sprintf('COM_CONTACT_EDIT_DETAILS', $this->item->id); ?></p> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('image'); ?> <?php echo $this->form->getInput('image'); ?></li> <li><?php echo $this->form->getLabel('con_position'); ?> <?php echo $this->form->getInput('con_position'); ?></li> <li><?php echo $this->form->getLabel('email_to'); ?> <?php echo $this->form->getInput('email_to'); ?></li> <li><?php echo $this->form->getLabel('address'); ?> <?php echo $this->form->getInput('address'); ?></li> <li><?php echo $this->form->getLabel('suburb'); ?> <?php echo $this->form->getInput('suburb'); ?></li> <li><?php echo $this->form->getLabel('state'); ?> <?php echo $this->form->getInput('state'); ?></li> <li><?php echo $this->form->getLabel('postcode'); ?> <?php echo $this->form->getInput('postcode'); ?></li> <li><?php echo $this->form->getLabel('country'); ?> <?php echo $this->form->getInput('country'); ?></li> <li><?php echo $this->form->getLabel('telephone'); ?> <?php echo $this->form->getInput('telephone'); ?></li> <li><?php echo $this->form->getLabel('mobile'); ?> <?php echo $this->form->getInput('mobile'); ?></li> <li><?php echo $this->form->getLabel('fax'); ?> <?php echo $this->form->getInput('fax'); ?></li> <li><?php echo $this->form->getLabel('webpage'); ?> <?php echo $this->form->getInput('webpage'); ?></li> <li><?php echo $this->form->getLabel('sortname1'); ?> <?php echo $this->form->getInput('sortname1'); ?></li> <li><?php echo $this->form->getLabel('sortname2'); ?> <?php echo $this->form->getInput('sortname2'); ?></li> <li><?php echo $this->form->getLabel('sortname3'); ?> <?php echo $this->form->getInput('sortname3'); ?></li> </ul> </fieldset> <?php echo $this->loadTemplate('params'); ?> <?php echo JHtml::_('sliders.panel', JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS'), 'meta-options'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS'); ?></legend> <?php echo $this->loadTemplate('metadata'); ?> </fieldset> <?php if ($assoc) : ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_CONTACT_ITEM_ASSOCIATIONS_FIELDSET_LABEL'), '-options');?> <?php echo $this->loadTemplate('associations'); ?> <?php endif; ?> <?php echo JHtml::_('sliders.end'); ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�mw���9templates/hathor/html/com_contact/contact/edit_params.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $fieldSets = $this->form->getFieldsets('params'); foreach ($fieldSets as $name => $fieldSet) : echo JHtml::_('sliders.panel', JText::_($fieldSet->label), $name.'-params'); if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="tip">'.$this->escape(JText::_($fieldSet->description)).'</p>'; endif; ?> <fieldset class="panelform" > <legend class="element-invisible"><?php echo JText::_($fieldSet->label); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <li><?php echo $field->label; ?> <?php echo $field->input; ?></li> <?php endforeach; ?> </ul> </fieldset> <?php endforeach; ?> PKb��\E6�� 4templates/hathor/html/com_contact/contacts/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); $function = JFactory::getApplication()->input->getCmd('function', 'jSelectContact'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_contact&view=contacts&layout=modal&tmpl=component');?>" method="post" name="adminForm" id="adminForm"> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter-search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('JSEARCH_FILTER'); ?>" /> <button type="submit"> <?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"> <?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_access"> <?php echo JText::_('JOPTION_SELECT_ACCESS'); ?> </label> <select name="filter_access" id="filter_access"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS');?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access'));?> </select> <label class="selectlabel" for="filter_published"> <?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?> </label> <select name="filter_published" id="filter_published"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true);?> </select> <label class="selectlabel" for="filter_category_id"> <?php echo JText::_('JOPTION_SELECT_CATEGORY'); ?> </label> <select name="filter_category_id" id="filter_category_id"> <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option> <?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_contact'), 'value', 'text', $this->state->get('filter.category_id'));?> </select> <?php if ($this->state->get('filter.forcedLanguage')) : ?> <input type="hidden" name="forcedLanguage" value="<?php echo $this->escape($this->state->get('filter.forcedLanguage')); ?>" /> <input type="hidden" name="filter_language" value="<?php echo $this->escape($this->state->get('filter.language')); ?>" /> <?php else : ?> <label class="selectlabel" for="filter_language"><?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?></label> <select name="filter_language" id="filter_language"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE');?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language'));?> </select> <?php endif; ?> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist modal"> <thead> <tr> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.name', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_CONTACT_FIELD_LINKED_USER_LABEL', 'ul.name', $listDirn, $listOrder); ?> </th> <th class="title access-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'access_level', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JCATEGORY', 'a.catid', $listDirn, $listOrder); ?> </th> <th class="title language-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'language', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : ?> <tr class="row<?php echo $i % 2; ?>"> <th> <a class="pointer" onclick="if (window.parent) window.parent.<?php echo $this->escape($function);?>('<?php echo $item->id; ?>', '<?php echo $this->escape(addslashes($item->name)); ?>');"> <?php echo $this->escape($item->name); ?></a> </th> <td class="center"> <?php if (!empty($item->linked_user)) : ?> <?php echo $item->linked_user;?> <?php endif; ?> </td> <td class="center"> <?php echo $this->escape($item->access_level); ?> </td> <td class="center"> <?php echo $this->escape($item->category_title); ?> </td> <td class="center"> <?php if ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\���A�*�*6templates/hathor/html/com_contact/contacts/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.multiselect'); $app = JFactory::getApplication(); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canOrder = $user->authorise('core.edit.state', 'com_contact.category'); $saveOrder = $listOrder == 'a.ordering'; $assoc = JLanguageAssociations::isEnabled(); ?> <form action="<?php echo JRoute::_('index.php?option=com_contact'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_CONTACT_SEARCH_IN_NAME'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_published"> <?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?> </label> <select name="filter_published" id="filter_published"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true);?> </select> <label class="selectlabel" for="filter_category_id"> <?php echo JText::_('JOPTION_SELECT_CATEGORY'); ?> </label> <select name="filter_category_id" id="filter_category_id"> <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option> <?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_contact'), 'value', 'text', $this->state->get('filter.category_id'));?> </select> <label class="selectlabel" for="filter_access"> <?php echo JText::_('JOPTION_SELECT_ACCESS'); ?> </label> <select name="filter_access" id="filter_access"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS');?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access'));?> </select> <label class="selectlabel" for="filter_language"> <?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?> </label> <select name="filter_language" id="filter_language"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE');?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language'));?> </select> <label class="selectlabel" for="filter_tag"> <?php echo JText::_('JOPTION_SELECT_TAG'); ?> </label> <select name="filter_tag" id="filter_tag"> <option value=""><?php echo JText::_('JOPTION_SELECT_TAG');?></option> <?php echo JHtml::_('select.options', JHtml::_('tag.options', true, true), 'value', 'text', $this->state->get('filter.tag'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.name', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_CONTACT_FIELD_LINKED_USER_LABEL', 'ul.name', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?> </th> <th class="nowrap featured-col"> <?php echo JHtml::_('grid.sort', 'JFEATURED', 'a.featured', $listDirn, $listOrder, null, 'desc'); ?> </th> <th class="title category-col"> <?php echo JHtml::_('grid.sort', 'JCATEGORY', 'category_title', $listDirn, $listOrder); ?> </th> <th class="nowrap ordering-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ORDERING', 'a.ordering', $listDirn, $listOrder); ?> <?php if ($canOrder && $saveOrder) :?> <?php echo JHtml::_('grid.order', $this->items, 'filesave.png', 'contacts.saveorder'); ?> <?php endif; ?> </th> <th class="title access-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'access_level', $listDirn, $listOrder); ?> </th> <?php if ($assoc) : ?> <th width="5%"> <?php echo JHtml::_('grid.sort', 'COM_CONTACT_HEADING_ASSOCIATION', 'association', $listDirn, $listOrder); ?> </th> <?php endif;?> <th class="language-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'a.language', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php $n = count($this->items); foreach ($this->items as $i => $item) : $ordering = $listOrder == 'a.ordering'; $canCreate = $user->authorise('core.create', 'com_contact.category.' . $item->catid); $canEdit = $user->authorise('core.edit', 'com_contact.category.' . $item->catid); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; $canEditOwn = $user->authorise('core.edit.own', 'com_contact.category.' . $item->catid) && $item->created_by == $userId; $canChange = $user->authorise('core.edit.state', 'com_contact.category.' . $item->catid) && $canCheckin; $item->cat_link = JRoute::_('index.php?option=com_categories&extension=com_contact&task=edit&type=other&id='.$item->catid); ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'contacts.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit || $canEditOwn) : ?> <a href="<?php echo JRoute::_('index.php?option=com_contact&task=contact.edit&id='.(int) $item->id); ?>"> <?php echo $this->escape($item->name); ?></a> <?php else : ?> <?php echo $this->escape($item->name); ?> <?php endif; ?> <p class="smallsub"> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias));?></p> </td> <td align="center"> <?php if (!empty($item->linked_user)) : ?> <a href="<?php echo JRoute::_('index.php?option=com_users&task=user.edit&id='.$item->user_id);?>"><?php echo $item->linked_user;?></a> <?php endif; ?> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->published, $i, 'contacts.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?> </td> <td class="center"> <?php echo JHtml::_('contact.featured', $item->featured, $i, $canChange); ?> </td> <td class="center"> <?php echo $item->category_title; ?> </td> <td class="order"> <?php if ($canChange) : ?> <?php if ($saveOrder) : ?> <?php if ($listDirn == 'asc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, ($item->catid == @$this->items[$i - 1]->catid), 'contacts.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, ($item->catid == @$this->items[$i + 1]->catid), 'contacts.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php elseif ($listDirn == 'desc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, ($item->catid == @$this->items[$i - 1]->catid), 'contacts.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, ($item->catid == @$this->items[$i + 1]->catid), 'contacts.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php endif; ?> <?php endif; ?> <?php $disabled = $saveOrder ? '' : 'disabled="disabled"'; ?> <input type="text" name="order[]" value="<?php echo $item->ordering; ?>" <?php echo $disabled; ?> class="text-area-order" title="<?php echo $item->name; ?> order" /> <?php else : ?> <?php echo $item->ordering; ?> <?php endif; ?> </td> <td class="center"> <?php echo $item->access_level; ?> </td> <?php if ($assoc) : ?> <td class="center"> <?php if ($item->association) : ?> <?php echo JHtml::_('contact.association', $item->id); ?> <?php endif; ?> </td> <?php endif;?> <td class="center"> <?php if ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="center"> <?php echo $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php //Load the batch processing form. ?> <?php if ($user->authorise('core.create', 'com_contact') && $user->authorise('core.edit', 'com_contact') && $user->authorise('core.edit.state', 'com_contact')) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_CONTACT_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif; ?> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�!�mPP6templates/hathor/html/com_config/component/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $app = JFactory::getApplication(); $template = $app->getTemplate(); JHtml::_('behavior.formvalidator'); JHtml::_('bootstrap.framework'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (document.formvalidator.isValid(document.getElementById('component-form'))) { Joomla.submitform(task, document.getElementById('component-form')); } } "); ?> <form action="<?php echo JRoute::_('index.php?option=com_config'); ?>" id="component-form" method="post" name="adminForm" autocomplete="off" class="form-validate"> <?php echo JHtml::_('tabs.start', 'config-tabs-' . $this->component->option . '_configuration', array('useCookie' => 1)); $fieldSets = $this->form->getFieldsets(); ?> <?php foreach ($fieldSets as $name => $fieldSet) : ?> <?php $label = empty($fieldSet->label) ? 'COM_CONFIG_' . $name . '_FIELDSET_LABEL' : $fieldSet->label; echo JHtml::_('tabs.panel', JText::_($label), 'publishing-details'); if (isset($fieldSet->description) && !empty($fieldSet->description)) { echo '<p class="tab-description">' . JText::_($fieldSet->description) . '</p>'; } ?> <ul class="config-option-list"> <?php foreach ($this->form->getFieldset($name) as $field): ?> <li> <?php if (!$field->hidden) : ?> <?php echo $field->label; ?> <?php endif; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> <div class="clr"></div> <?php endforeach; ?> <?php echo JHtml::_('tabs.end'); ?> <div> <input type="hidden" name="id" value="<?php echo $this->component->id; ?>" /> <input type="hidden" name="component" value="<?php echo $this->component->option; ?>" /> <input type="hidden" name="return" value="<?php echo $this->return; ?>" /> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\��!���?templates/hathor/html/com_config/application/default_locale.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="width-100"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_CONFIG_LOCATION_SETTINGS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('locale') as $field): ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> </div> PKb��\��Bv��?templates/hathor/html/com_config/application/default_system.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="width-100"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_CONFIG_SYSTEM_SETTINGS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('system') as $field): ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> </div> PKb��\�e�̂�?templates/hathor/html/com_config/application/default_server.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="width-100"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_CONFIG_SERVER_SETTINGS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('server') as $field): ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> </div> PKb��\��+��Ctemplates/hathor/html/com_config/application/default_navigation.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div id="submenu-box"> <ul id="submenu" class="configuration"> <li><a href="#" onclick="return false;" id="site" class="active"><?php echo JText::_('JSITE'); ?></a></li> <li><a href="#" onclick="return false;" id="system"><?php echo JText::_('COM_CONFIG_SYSTEM'); ?></a></li> <li><a href="#" onclick="return false;" id="server"><?php echo JText::_('COM_CONFIG_SERVER'); ?></a></li> <li><a href="#" onclick="return false;" id="permissions"><?php echo JText::_('COM_CONFIG_PERMISSIONS'); ?></a> </li> <li><a href="#" onclick="return false;" id="filters"><?php echo JText::_('COM_CONFIG_TEXT_FILTERS') ?></a></li> </ul> <div class="clr"></div> </div> PKb��\�p�~~=templates/hathor/html/com_config/application/default_site.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="width-100"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_CONFIG_SITE_SETTINGS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('site') as $field): ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> </div> PKb��\2U��Atemplates/hathor/html/com_config/application/default_metadata.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="width-100"> <fieldset class="adminform long"> <legend><?php echo JText::_('COM_CONFIG_METADATA_SETTINGS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('metadata') as $field): ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> </div> PKb��\���Ʀ�@templates/hathor/html/com_config/application/default_filters.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="width-80"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_CONFIG_TEXT_FILTER_SETTINGS'); ?></legend> <p><?php echo JText::_('COM_CONFIG_TEXT_FILTERS_DESC'); ?></p> <?php foreach ($this->form->getFieldset('filters') as $field) : ?> <?php echo $field->label; ?> <div class="clr"></div> <?php echo $field->input; ?> <?php endforeach; ?> </fieldset> </div> PKb��\ ���?templates/hathor/html/com_config/application/default_cookie.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="width-100"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_CONFIG_COOKIE_SETTINGS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('cookie') as $field): ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> </div> PKb��\๛��<templates/hathor/html/com_config/application/default_seo.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="width-100"> <fieldset class="adminform long"> <legend><?php echo JText::_('COM_CONFIG_SEO_SETTINGS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('seo') as $field): ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> </div> PKb��\VD���@templates/hathor/html/com_config/application/default_session.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="width-100"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_CONFIG_SESSION_SETTINGS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('session') as $field): ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> </div> PKb��\��u�||<templates/hathor/html/com_config/application/default_ftp.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="width-100"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_CONFIG_FTP_SETTINGS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('ftp') as $field): ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> </div> PKb��\�x!���Atemplates/hathor/html/com_config/application/default_database.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="width-100"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_CONFIG_DATABASE_SETTINGS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('database') as $field): ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> </div> PKb��\AU1�55Atemplates/hathor/html/com_config/application/default_ftplogin.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="width-100"> <fieldset title="<?php echo JText::_('COM_CONFIG_FTP_DETAILS'); ?>" class="adminform"> <legend><?php echo JText::_('COM_CONFIG_FTP_DETAILS'); ?></legend> <?php echo JText::_('COM_CONFIG_FTP_DETAILS_TIP'); ?> <?php if ($this->ftp instanceof Exception) : ?> <p><?php echo JText::_($this->ftp->message); ?></p> <?php endif; ?> <ul class="adminformlist"> <li> <label for="username"><?php echo JText::_('JGLOBAL_USERNAME'); ?></label> <input type="text" id="username" name="username" class="input_box" size="70" value="" /> </li> <li> <label for="password"><?php echo JText::_('JGLOBAL_PASSWORD'); ?></label> <input type="password" id="password" name="password" class="input_box" size="70" value="" /> </li> </ul> </fieldset> </div> PKb��\41��@ @ 8templates/hathor/html/com_config/application/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.formvalidator'); JHtml::_('behavior.switcher'); // Load submenu template, using element id 'submenu' as needed by behavior.switcher $this->document->setBuffer($this->loadTemplate('navigation'), 'modules', 'submenu'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'application.cancel' || document.formvalidator.isValid(document.getElementById('application-form'))) { Joomla.submitform(task, document.getElementById('application-form')); } } "); ?> <form action="<?php echo JRoute::_('index.php?option=com_config'); ?>" id="application-form" method="post" name="adminForm" class="form-validate"> <?php if ($this->ftp) : ?> <?php echo $this->loadTemplate('ftplogin'); ?> <?php endif; ?> <div id="config-document"> <div id="page-site" class="tab"> <div class="noshow"> <div class="width-60 fltlft"> <?php echo $this->loadTemplate('site'); ?> <?php echo $this->loadTemplate('metadata'); ?> </div> <div class="width-40 fltrt"> <?php echo $this->loadTemplate('seo'); ?> <?php echo $this->loadTemplate('cookie'); ?> </div> </div> </div> <div id="page-system" class="tab"> <div class="noshow"> <div class="width-60 fltlft"> <?php echo $this->loadTemplate('system'); ?> </div> <div class="width-40 fltrt"> <?php echo $this->loadTemplate('debug'); ?> <?php echo $this->loadTemplate('cache'); ?> <?php echo $this->loadTemplate('session'); ?> </div> </div> </div> <div id="page-server" class="tab"> <div class="noshow"> <div class="width-60 fltlft"> <?php echo $this->loadTemplate('server'); ?> <?php echo $this->loadTemplate('locale'); ?> <?php echo $this->loadTemplate('ftp'); ?> </div> <div class="width-40 fltrt"> <?php echo $this->loadTemplate('database'); ?> <?php echo $this->loadTemplate('mail'); ?> </div> </div> </div> <div id="page-permissions" class="tab"> <div class="noshow"> <?php echo $this->loadTemplate('permissions'); ?> </div> </div> <div id="page-filters" class="tab"> <div class="noshow"> <?php echo $this->loadTemplate('filters'); ?> </div> </div> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> <div class="clr"></div> </form> PKb��\A���iiDtemplates/hathor/html/com_config/application/default_permissions.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="width-100"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_CONFIG_PERMISSION_SETTINGS'); ?></legend> <?php foreach ($this->form->getFieldset('permissions') as $field) : ?> <?php echo $field->label; ?> <div class="clr"></div> <?php echo $field->input; ?> <?php endforeach; ?> </fieldset> </div> PKb��\^0����>templates/hathor/html/com_config/application/default_debug.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="width-100"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_CONFIG_DEBUG_SETTINGS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('debug') as $field): ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> </div> PKb��\�o�~~=templates/hathor/html/com_config/application/default_mail.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="width-100"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_CONFIG_MAIL_SETTINGS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('mail') as $field): ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> </div> PKb��\5����>templates/hathor/html/com_config/application/default_cache.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="width-100"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_CONFIG_CACHE_SETTINGS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('cache') as $field): ?> <li> <?php echo $field->label; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> </div> PKb��\�"�{::4templates/hathor/html/com_redirect/links/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.multiselect'); $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_redirect&view=links'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_REDIRECT_SEARCH_LINKS'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_published"> <?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?> </label> <select name="filter_state" id="filter_published"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', RedirectHelper::publishedOptions(), 'value', 'text', $this->state->get('filter.state'), true);?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'COM_REDIRECT_HEADING_OLD_URL', 'a.old_url', $listDirn, $listOrder); ?> </th> <th class="width-30"> <?php echo JHtml::_('grid.sort', 'COM_REDIRECT_HEADING_NEW_URL', 'a.new_url', $listDirn, $listOrder); ?> </th> <th class="width-30"> <?php echo JHtml::_('grid.sort', 'COM_REDIRECT_HEADING_REFERRER', 'a.referer', $listDirn, $listOrder); ?> </th> <th class="width-10"> <?php echo JHtml::_('grid.sort', 'COM_REDIRECT_HEADING_CREATED_DATE', 'a.created_date', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap"> <?php echo JHtml::_('grid.sort', 'COM_REDIRECT_HEADING_HITS', 'a.hits', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.published', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $canCreate = $user->authorise('core.create', 'com_redirect'); $canEdit = $user->authorise('core.edit', 'com_redirect'); $canChange = $user->authorise('core.edit.state', 'com_redirect'); ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_redirect&task=link.edit&id='.$item->id);?>" title="<?php echo $this->escape($item->old_url); ?>"> <?php echo $this->escape(str_replace(JUri::root(), '', rawurldecode($item->old_url))); ?></a> <?php else : ?> <?php echo $this->escape(str_replace(JUri::root(), '', rawurldecode($item->old_url))); ?> <?php endif; ?> </td> <td> <?php echo $this->escape(rawurldecode($item->new_url)); ?> </td> <td> <?php echo $this->escape($item->referer); ?> </td> <td class="center"> <?php echo JHtml::_('date', $item->created_date, JText::_('DATE_FORMAT_LC4')); ?> </td> <td class="center"> <?php echo (int) $item->hits; ?> </td> <td class="center"> <?php echo JHtml::_('redirect.published', $item->published, $i); ?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php //Load the batch processing form if user is allowed ?> <?php if ($user->authorise('core.create', 'com_redirect') && $user->authorise('core.edit', 'com_redirect') && $user->authorise('core.edit.state', 'com_redirect')) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_REDIRECT_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif;?> <?php echo $this->pagination->getListFooter(); ?> <p class="footer-tip"> <?php if ($this->enabled) : ?> <span class="enabled"><?php echo JText::_('COM_REDIRECT_PLUGIN_ENABLED'); ?></span> <?php if ($this->collect_urls_enabled) : ?> <span class="enabled"><?php echo JText::_('COM_REDIRECT_COLLECT_URLS_ENABLED'); ?></span> <?php else : ?> <span class="enabled"><?php echo JText::_('COM_REDIRECT_COLLECT_URLS_DISABLED'); ?></span> <?php endif; ?> <?php else : ?> <span class="disabled"><?php echo JText::_('COM_REDIRECT_PLUGIN_DISABLED'); ?></span> <?php endif; ?> </p> <div class="clr"></div> <?php if (!empty($this->items)) : ?> <?php echo $this->loadTemplate('addform'); ?> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\)�z��;templates/hathor/html/com_installer/default/default_ftp.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset class="adminform" title="<?php echo JText::_('COM_INSTALLER_MSG_DESCFTPTITLE'); ?>"> <legend><?php echo JText::_('COM_INSTALLER_MSG_DESCFTPTITLE'); ?></legend> <?php echo JText::_('COM_INSTALLER_MSG_DESCFTP'); ?> <?php if ($this->ftp instanceof Exception) : ?> <p><?php echo JText::_($this->ftp->getMessage()); ?></p> <?php endif; ?> <ul class="adminformlist"> <li><label for="username"><?php echo JText::_('JGLOBAL_USERNAME'); ?></label> <input type="text" id="username" name="username" value="" /></li> <li><label for="password"><?php echo JText::_('JGLOBAL_PASSWORD'); ?></label> <input type="password" id="password" name="password" class="input_box" value="" /></li> </ul> </fieldset> PKb��\�\����8templates/hathor/html/com_installer/warnings/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div id="installer-warnings"> <form action="<?php echo JRoute::_('index.php?option=com_installer&view=warnings'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty($this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif; ?> <?php if (!count($this->messages)) { echo '<p class="nowarning">' . JText::_('COM_INSTALLER_MSG_WARNINGS_NONE') . '</p>'; } else { echo JHtml::_('sliders.start', 'warning-sliders', array('useCookie' => 1)); foreach ($this->messages as $message) { echo JHtml::_('sliders.panel', $message['message'], str_replace(' ', '', $message['message'])); echo '<div style="padding: 5px;" >' . $message['description'] . '</div>'; } echo JHtml::_('sliders.panel', JText::_('COM_INSTALLER_MSG_WARNINGFURTHERINFO'), 'furtherinfo-pane'); echo '<div style="padding: 5px;" >' . JText::_('COM_INSTALLER_MSG_WARNINGFURTHERINFODESC') . '</div>'; echo JHtml::_('sliders.end'); } ?> <div class="clr"> </div> <div> <input type="hidden" name="boxchecked" value="0" /> <?php echo JHtml::_('form.token'); ?> </div> </div> </form> </div> PKb��\�g�9templates/hathor/html/com_installer/languages/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.multiselect'); JHtml::_('bootstrap.tooltip'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $version = new JVersion; ?> <div id="installer-languages"> <form action="<?php echo JRoute::_('index.php?option=com_installer&view=languages');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <?php if (count($this->items) || $this->escape($this->state->get('filter.search'))) : ?> <?php echo $this->loadTemplate('filter'); ?> <table class="adminlist"> <thead> <tr> <th width="20" class="nowrap hidden-phone"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="nowrap"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_NAME', 'name', $listDirn, $listOrder); ?> </th> <th width="10%" class="center"> <?php echo JText::_('JVERSION'); ?> </th> <th class="center nowrap hidden-phone"> <?php echo JText::_('COM_INSTALLER_HEADING_TYPE'); ?> </th> <th width="35%" class="nowrap hidden-phone"> <?php echo JText::_('COM_INSTALLER_HEADING_DETAILS_URL'); ?> </th> <th width="30" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_ID', 'update_id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $language) : ?> <tr class="row<?php echo $i % 2; ?>"> <td class="hidden-phone"> <?php echo JHtml::_('grid.id', $i, $language->update_id, false, 'cid'); ?> </td> <td> <?php echo $language->name; ?> <?php // Display a Note if language pack version is not equal to Joomla version ?> <?php if (substr($language->version, 0, 3) != $version->RELEASE || substr($language->version, 0, 5) != $version->RELEASE . "." . $version->DEV_LEVEL) : ?> <div class="small"><?php echo JText::_('JGLOBAL_LANGUAGE_VERSION_NOT_PLATFORM'); ?></div> <?php endif; ?> </td> <td class="center"> <?php echo $language->version; ?> </td> <td class="center"> <?php echo JText::_('COM_INSTALLER_TYPE_' . strtoupper($language->type)); ?> </td> <td> <?php echo $language->detailsurl; ?> </td> <td class="center"> <?php echo $language->update_id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <?php else : ?> <div class="alert"><?php echo JText::_('COM_INSTALLER_MSG_LANGUAGES_NOLANGUAGES'); ?></div> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> </div> PKb��\>ω-@templates/hathor/html/com_installer/languages/default_filter.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_INSTALLER_LANGUAGES_FILTER_SEARCH_DESC'); ?>" /> <button type="submit" class="btn"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> </fieldset> <div class="clr"></div> PKb��\�vf��8templates/hathor/html/com_installer/database/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div id="installer-database"> <form action="<?php echo JRoute::_('index.php?option=com_installer&view=warnings');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <?php if ($this->errorCount === 0) : ?> <p class="nowarning"><?php echo JText::_('COM_INSTALLER_MSG_DATABASE_OK'); ?></p> <?php echo JHtml::_('sliders.start', 'database-sliders', array('useCookie' => 1)); ?> <?php else : ?> <p class="warning"><?php echo JText::_('COM_INSTALLER_MSG_DATABASE_ERRORS'); ?></p> <?php echo JHtml::_('sliders.start', 'database-sliders', array('useCookie' => 1)); ?> <?php $panelName = JText::plural('COM_INSTALLER_MSG_N_DATABASE_ERROR_PANEL', $this->errorCount); ?> <?php echo JHtml::_('sliders.panel', $panelName, 'error-panel'); ?> <fieldset class="panelform"> <ul> <?php if (!$this->filterParams) : ?> <li><?php echo JText::_('COM_INSTALLER_MSG_DATABASE_FILTER_ERROR'); ?> <?php endif; ?> <?php if ($this->schemaVersion != $this->changeSet->getSchema()) : ?> <li><?php echo JText::sprintf('COM_INSTALLER_MSG_DATABASE_SCHEMA_ERROR', $this->schemaVersion, $this->changeSet->getSchema()); ?></li> <?php endif; ?> <?php if (version_compare($this->updateVersion, JVERSION) != 0) : ?> <li><?php echo JText::sprintf('COM_INSTALLER_MSG_DATABASE_UPDATEVERSION_ERROR', $this->updateVersion, JVERSION); ?></li> <?php endif; ?> <?php foreach ($this->errors as $line => $error) : ?> <?php $key = 'COM_INSTALLER_MSG_DATABASE_' . $error->queryType; $msgs = $error->msgElements; $file = basename($error->file); $msg0 = (isset($msgs[0])) ? $msgs[0] : ' '; $msg1 = (isset($msgs[1])) ? $msgs[1] : ' '; $msg2 = (isset($msgs[2])) ? $msgs[2] : ' '; $message = JText::sprintf($key, $file, $msg0, $msg1, $msg2); ?> <li><?php echo $message; ?></li> <?php endforeach; ?> </ul> </fieldset> <?php endif; ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_INSTALLER_MSG_DATABASE_INFO'), 'furtherinfo-pane'); ?> <fieldset class="panelform"> <ul> <li><?php echo JText::sprintf('COM_INSTALLER_MSG_DATABASE_SCHEMA_VERSION', $this->schemaVersion); ?></li> <li><?php echo JText::sprintf('COM_INSTALLER_MSG_DATABASE_UPDATE_VERSION', $this->updateVersion); ?></li> <li><?php echo JText::sprintf('COM_INSTALLER_MSG_DATABASE_DRIVER', JFactory::getDbo()->name); ?></li> <li><?php echo JText::sprintf('COM_INSTALLER_MSG_DATABASE_CHECKED_OK', count($this->results['ok'])); ?></li> <li><?php echo JText::sprintf('COM_INSTALLER_MSG_DATABASE_SKIPPED', count($this->results['skipped'])); ?></li> </ul> </fieldset> <?php echo JHtml::_('sliders.end'); ?> <div class="clr"> </div> <div> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <?php echo JHtml::_('form.token'); ?> </div> </div> </form> </div> PKb��\���WW6templates/hathor/html/com_installer/manage/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.multiselect'); JHtml::_('bootstrap.tooltip'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <div id="installer-manage"> <form action="<?php echo JRoute::_('index.php?option=com_installer&view=manage');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <?php if ($this->showMessage) : ?> <?php echo $this->loadTemplate('message'); ?> <?php endif; ?> <?php if ($this->ftp) : ?> <?php echo $this->loadTemplate('ftp'); ?> <?php endif; ?> <?php echo $this->loadTemplate('filter'); ?> <?php if (count($this->items)) : ?> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title nowrap"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_NAME', 'name', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_LOCATION', 'client_id', $listDirn, $listOrder); ?> </th> <th class="width-10 center"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'status', $listDirn, $listOrder); ?> </th> <th class="center"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_TYPE', 'type', $listDirn, $listOrder); ?> </th> <th class="width-10 center"> <?php echo JText::_('JVERSION'); ?> </th> <th class="width-10"> <?php echo JText::_('JDATE'); ?> </th> <th class="width-15 center"> <?php echo JText::_('JAUTHOR'); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_FOLDER', 'folder', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_ID', 'extension_id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : ?> <tr class="row<?php echo $i % 2; if ($item->status == 2) echo ' protected';?>"> <td> <?php echo JHtml::_('grid.id', $i, $item->extension_id); ?> </td> <td> <span class="bold hasTooltip" title="<?php echo JHtml::tooltipText($item->name, $item->description, 0); ?>"> <?php echo $item->name; ?> </span> </td> <td class="center"> <?php echo $item->client; ?> </td> <td class="center"> <?php if (!$item->element) : ?> <strong>X</strong> <?php else : ?> <?php echo JHtml::_('InstallerHtml.Manage.state', $item->status, $i, $item->status < 2, 'cb'); ?> <?php endif; ?> </td> <td class="center"> <?php echo JText::_('COM_INSTALLER_TYPE_' . $item->type); ?> </td> <td class="center"> <?php echo @$item->version != '' ? $item->version : ' '; ?> </td> <td class="center"> <?php echo @$item->creationDate != '' ? $item->creationDate : ' '; ?> </td> <td class="center"> <span class="editlinktip hasTooltip" title="<?php echo JHtml::tooltipText(JText::_('COM_INSTALLER_AUTHOR_INFORMATION'), $item->author_info, 0); ?>"> <?php echo @$item->author != '' ? $item->author : ' '; ?> </span> </td> <td class="center"> <?php echo @$item->folder != '' ? $item->folder : JText::_('COM_INSTALLER_TYPE_NONAPPLICABLE'); ?> </td> <td> <?php echo $item->extension_id ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> </div> PKb��\hg�7NN=templates/hathor/html/com_installer/manage/default_filter.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_INSTALLER_FILTER_LABEL'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_client_id"> <?php echo JText::_('COM_INSTALLER_VALUE_CLIENT_SELECT'); ?> </label> <select name="filter_client_id" id="filter_client_id"> <?php echo JHtml::_('select.options', array('0' => JText::_('JSITE'), '1' => JText::_('JADMINISTRATOR')), 'value', 'text', $this->state->get('filter.client_id'), true);?> </select> <label class="selectlabel" for="filter_status"> <?php echo JText::_('COM_INSTALLER_VALUE_STATE_SELECT'); ?> </label> <select name="filter_status" id="filter_status"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', InstallerHelper::getExtensionTypes(), 'value', 'text', $this->state->get('filter.status'), true);?> </select> <label class="selectlabel" for="filter_type"> <?php echo JText::_('COM_INSTALLER_VALUE_TYPE_SELECT'); ?> </label> <select name="filter_type" id="filter_type"> <option value=""><?php echo JText::_('COM_INSTALLER_VALUE_TYPE_SELECT');?></option> <?php echo JHtml::_('select.options', InstallerHelper::getExtensionTypes(), 'value', 'text', $this->state->get('filter.type'), true);?> </select> <label class="selectlabel" for="filter_group"> <?php echo JText::_('COM_INSTALLER_VALUE_FOLDER_SELECT'); ?> </label> <select name="filter_group" id="filter_group"> <option value=""><?php echo JText::_('COM_INSTALLER_VALUE_FOLDER_SELECT');?></option> <?php echo JHtml::_('select.options', array_merge(InstallerHelper::getExtensionGroupes(), array('*' => JText::_('COM_INSTALLER_VALUE_FOLDER_NONAPPLICABLE'))), 'value', 'text', $this->state->get('filter.group'), true);?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"></div> PKb��\9�����8templates/hathor/html/com_installer/discover/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <div id="installer-discover"> <form action="<?php echo JRoute::_('index.php?option=com_installer&view=discover');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <?php if ($this->showMessage) : ?> <?php echo $this->loadTemplate('message'); ?> <?php endif; ?> <?php if ($this->ftp) : ?> <?php echo $this->loadTemplate('ftp'); ?> <?php endif; ?> <?php if (count($this->items)) : ?> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"><input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /></th> <th class="title nowrap"><?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_NAME', 'name', $listDirn, $listOrder); ?></th> <th class="center"><?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_TYPE', 'type', $listDirn, $listOrder); ?></th> <th class="width-10 center"><?php echo JText::_('JVERSION'); ?></th> <th class="width-10 center"><?php echo JText::_('JDATE'); ?></th> <th><?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_FOLDER', 'folder', $listDirn, $listOrder); ?></th> <th><?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_CLIENT', 'client_id', $listDirn, $listOrder); ?></th> <th class="width-15 center"><?php echo JText::_('JAUTHOR'); ?></th> <th class="nowrap id-col"><?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_ID', 'extension_id', $listDirn, $listOrder); ?></th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : ?> <tr class="row<?php echo $i % 2;?>"> <td><?php echo JHtml::_('grid.id', $i, $item->extension_id); ?></td> <td><span class="bold hasTooltip" title="<?php echo JHtml::tooltipText($item->name, $item->description, 0); ?>"><?php echo $item->name; ?></span></td> <td class="center"><?php echo JText::_('COM_INSTALLER_TYPE_' . $item->type); ?></td> <td class="center"><?php echo @$item->version != '' ? $item->version : ' '; ?></td> <td class="center"><?php echo @$item->creationDate != '' ? $item->creationDate : ' '; ?></td> <td class="center"><?php echo @$item->folder != '' ? $item->folder : JText::_('COM_INSTALLER_TYPE_NONAPPLICABLE'); ?></td> <td class="center"><?php echo $item->client; ?></td> <td class="center"> <span class="editlinktip hasTooltip" title="<?php echo JHtml::tooltipText(JText::_('COM_INSTALLER_AUTHOR_INFORMATION'), $item->author_info, 0); ?>"> <?php echo @$item->author != '' ? $item->author : ' '; ?> </span> </td> <td><?php echo $item->extension_id ?></td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <?php echo JText::_('COM_INSTALLER_MSG_DISCOVER_DESCRIPTION'); ?> <?php else : ?> <p class="nowarning"> <?php echo JText::_('COM_INSTALLER_MSG_DISCOVER_DESCRIPTION'); ?> </p> <p class="nowarning"> <?php echo JText::_('COM_INSTALLER_MSG_DISCOVER_NOEXTENSION'); ?> </p> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> </div> PKb��\Y�(���<templates/hathor/html/com_installer/install/default_form.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // MooTools is loaded for B/C for extensions generating JavaScript in their install scripts, this call will be removed at 4.0 JHtml::_('behavior.framework', true); JHtml::_('bootstrap.tooltip'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function() { var form = document.getElementById('adminForm'); // do field validation if (form.install_package.value == ''){ alert('" . JText::_('COM_INSTALLER_MSG_INSTALL_PLEASE_SELECT_A_PACKAGE', true) . "'); } else { form.installtype.value = 'upload'; form.submit(); } }; Joomla.submitbutton3 = function() { var form = document.getElementById('adminForm'); // do field validation if (form.install_directory.value == ''){ alert('" . JText::_('COM_INSTALLER_MSG_INSTALL_PLEASE_SELECT_A_DIRECTORY', true) . "'); } else { form.installtype.value = 'folder'; form.submit(); } }; Joomla.submitbutton4 = function() { var form = document.getElementById('adminForm'); // do field validation if (form.install_url.value == '' || form.install_url.value == 'http://'){ alert('" . JText::_('COM_INSTALLER_MSG_INSTALL_ENTER_A_URL', true) . "'); } else { form.installtype.value = 'url'; form.submit(); } }; Joomla.submitbuttonInstallWebInstaller = function() { var form = document.getElementById('adminForm'); form.install_url.value = 'http://appscdn.joomla.org/webapps/jedapps/webinstaller.xml'; Joomla.submitbutton4(); }; "); ?> <form enctype="multipart/form-data" action="<?php echo JRoute::_('index.php?option=com_installer&view=install');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <?php if ($this->showJedAndWebInstaller && !$this->showMessage) : ?> <div class="alert j-jed-message" style="margin-bottom: 20px; line-height: 2em; color:#333333; clear:both;"> <a href="index.php?option=com_config&view=component&component=com_installer&path=&return=<?php echo urlencode(base64_encode(JUri::getInstance())); ?>" class="close hasTooltip" data-dismiss="alert" title="<?php echo str_replace('"', '"', JText::_('COM_INSTALLER_SHOW_JED_INFORMATION_TOOLTIP')); ?>">×</a> <p><?php echo JText::_('COM_INSTALLER_INSTALL_FROM_WEB_INFO'); ?> <?php echo JText::_('COM_INSTALLER_INSTALL_FROM_WEB_TOS'); ?></p> <input class="btn" type="button" value="<?php echo JText::_('COM_INSTALLER_INSTALL_FROM_WEB_ADD_TAB'); ?>" onclick="Joomla.submitbuttonInstallWebInstaller()" /> </div> <?php endif; ?> <?php if ($this->ftp) : ?> <?php echo $this->loadTemplate('ftp'); ?> <?php endif; ?> <div class="width-70 fltlft"> <?php JEventDispatcher::getInstance()->trigger('onInstallerViewBeforeFirstTab', array()); ?> <fieldset class="uploadform"> <legend><?php echo JText::_('COM_INSTALLER_UPLOAD_PACKAGE_FILE'); ?></legend> <label for="install_package"><?php echo JText::_('COM_INSTALLER_PACKAGE_FILE'); ?></label> <input class="input_box" id="install_package" name="install_package" type="file" size="57" /> <input class="button" type="button" value="<?php echo JText::_('COM_INSTALLER_UPLOAD_AND_INSTALL'); ?>" onclick="Joomla.submitbutton()" /> </fieldset> <div class="clr"></div> <fieldset class="uploadform"> <legend><?php echo JText::_('COM_INSTALLER_INSTALL_FROM_DIRECTORY'); ?></legend> <label for="install_directory"><?php echo JText::_('COM_INSTALLER_INSTALL_DIRECTORY'); ?></label> <input type="text" id="install_directory" name="install_directory" class="input_box" size="70" value="<?php echo $this->state->get('install.directory'); ?>" /> <input type="button" class="button" value="<?php echo JText::_('COM_INSTALLER_INSTALL_BUTTON'); ?>" onclick="Joomla.submitbutton3()" /> </fieldset> <div class="clr"></div> <fieldset class="uploadform"> <legend><?php echo JText::_('COM_INSTALLER_INSTALL_FROM_URL'); ?></legend> <label for="install_url"><?php echo JText::_('COM_INSTALLER_INSTALL_URL'); ?></label> <input type="text" id="install_url" name="install_url" class="input_box" size="70" value="http://" /> <input type="button" class="button" value="<?php echo JText::_('COM_INSTALLER_INSTALL_BUTTON'); ?>" onclick="Joomla.submitbutton4()" /> </fieldset> <?php JEventDispatcher::getInstance()->trigger('onInstallerViewAfterLastTab', array()); ?> <input type="hidden" name="type" value="" /> <input type="hidden" name="installtype" value="upload" /> <input type="hidden" name="task" value="install.install" /> <?php echo JHtml::_('form.token'); ?> </div> </div> </form> PKb��\�Ѧ�7templates/hathor/html/com_installer/install/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <?php if ($this->showMessage) : ?> <?php echo $this->loadTemplate('message'); ?> <?php endif; ?> <?php echo $this->loadTemplate('form'); ?> PKb��\��9�226templates/hathor/html/com_installer/update/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.multiselect'); JHtml::_('bootstrap.tooltip'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <div id="installer-update"> <form action="<?php echo JRoute::_('index.php?option=com_installer&view=update');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <?php if ($this->showMessage) : ?> <?php echo $this->loadTemplate('message'); ?> <?php endif; ?> <?php if ($this->ftp) : ?> <?php echo $this->loadTemplate('ftp'); ?> <?php endif; ?> <?php if (count($this->items)) : ?> <table class="adminlist" cellspacing="1"> <thead> <tr> <th class="checkmark-col"><input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /></th> <th class="nowrap"><?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_NAME', 'name', $listDirn, $listOrder); ?></th> <th class="nowrap"><?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_INSTALLTYPE', 'extension_id', $listDirn, $listOrder); ?></th> <th ><?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_TYPE', 'type', $listDirn, $listOrder); ?></th> <th class="width-10" class="center"><?php echo JText::_('JVERSION'); ?></th> <th><?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_FOLDER', 'folder', $listDirn, $listOrder); ?></th> <th><?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_CLIENT', 'client_id', $listDirn, $listOrder); ?></th> <th class="width-25"><?php echo JText::_('COM_INSTALLER_HEADING_DETAILSURL'); ?></th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : ?> <?php $client = $item->client_id ? JText::_('JADMINISTRATOR') : JText::_('JSITE'); ?> <tr class="row<?php echo $i % 2; ?>"> <td><?php echo JHtml::_('grid.id', $i, $item->update_id); ?></td> <td> <span class="editlinktip hasTooltip" title="<?php echo JHtml::tooltipText(JText::_('JGLOBAL_DESCRIPTION'), $item->description ? $item->description : JText::_('COM_INSTALLER_MSG_UPDATE_NODESC'), 0); ?>"> <?php echo $item->name; ?> </span> </td> <td class="center"> <?php echo $item->extension_id ? JText::_('COM_INSTALLER_MSG_UPDATE_UPDATE') : JText::_('COM_INSTALLER_NEW_INSTALL') ?> </td> <td><?php echo JText::_('COM_INSTALLER_TYPE_' . $item->type) ?></td> <td class="center"><?php echo $item->version ?></td> <td class="center"><?php echo @$item->folder != '' ? $item->folder : JText::_('COM_INSTALLER_TYPE_NONAPPLICABLE'); ?></td> <td class="center"><?php echo $client; ?></td> <td><?php echo $item->detailsurl ?> <?php if (isset($item->infourl)) : ?> <br /><a href="<?php echo $item->infourl;?>"><?php echo $item->infourl;?></a> <?php endif; ?> </td> </tr> <?php endforeach;?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <?php else : ?> <p class="nowarning"><?php echo JText::_('COM_INSTALLER_MSG_UPDATE_NOUPDATES'); ?></p> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> </div> PKb��\e:1��!templates/hathor/html/modules.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * This is a file to add template specific chrome to module rendering. To use it you would * set the style attribute for the given module(s) include in your template to use the style * for each given modChrome function. * * eg. To render a module mod_test in the submenu style, you would use the following include: * <jdoc:include type="module" name="test" style="submenu" /> * * This gives template designers ultimate control over how modules are rendered. * * NOTICE: All chrome wrapping methods should be named: modChrome_{STYLE} and take the same * two arguments. */ /* * Module chrome for rendering the module in a submenu */ function modChrome_xhtmlid($module, &$params, &$attribs) { if ($module->content) { ?> <div id="<?php echo (int) $attribs['id'] ?>"> <?php echo $module->content; ?> <div class="clr"></div> </div> <?php } elseif ($attribs['id'] == "submenu-box") { ?> <div id="no-submenu"></div> <?php } } ?> PKb��\u�k��:templates/hathor/html/com_joomlaupdate/default/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_joomlaupdate * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $ftpFieldsDisplay = $this->ftp['enabled'] ? '' : 'style = "display: none"'; $params = JComponentHelper::getParams('com_joomlaupdate'); switch ($params->get('updatesource', 'default')) { // "Minor & Patch Release for Current version AND Next Major Release". case 'sts': case 'next': $langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_NEXT'; $updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT'); break; // "Testing" case 'testing': $langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_TESTING'; $updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_TESTING'); break; // "Custom" case 'custom': $langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_CUSTOM'; $updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_CUSTOM'); break; // "Minor & Patch Release for Current version (recommended and default)". // The commented "case" below are for documenting where 'default' and legacy options falls // case 'default': // case 'lts': // case 'nochange': default: $langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_DEFAULT'; $updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT'); } JHtml::_('formbehavior.chosen', 'select'); ?> <form action="index.php" method="post" id="adminForm"> <?php if (is_null($this->updateInfo['object'])) : ?> <fieldset> <legend> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_NOUPDATES'); ?> </legend> <p> <?php echo JText::sprintf($langKey, $updateSourceKey); ?> </p> <p> <?php echo JText::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_NOUPDATESNOTICE', JVERSION); ?> </p> </fieldset> <?php else: ?> <fieldset> <legend> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATEFOUND'); ?> </legend> <table class="adminlist"> <tbody> <tr class="row0"> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_INSTALLED'); ?> </td> <td> <?php echo $this->updateInfo['installed']; ?> </td> </tr> <tr class="row1"> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_LATEST'); ?> </td> <td> <?php echo $this->updateInfo['latest']; ?> </td> </tr> <tr class="row0"> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_PACKAGE'); ?> </td> <td> <a href="<?php echo $this->updateInfo['object']->downloadurl->_data; ?>"> <?php echo $this->updateInfo['object']->downloadurl->_data; ?> </a> </td> </tr> <tr class="row1"> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_INFOURL'); ?> </td> <td> <a href="<?php echo $this->updateInfo['object']->get('infourl')->_data; ?>"> <?php echo $this->updateInfo['object']->get('infourl')->title; ?> </a> </td> </tr> <tr class="row0"> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_METHOD'); ?> </td> <td> <?php echo $this->methodSelect; ?> </td> </tr> <tr class="row1" id="row_ftp_hostname" <?php echo $ftpFieldsDisplay; ?>> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_HOSTNAME'); ?> </td> <td> <input type="text" name="ftp_host" value="<?php echo $this->ftp['host']; ?>" /> </td> </tr> <tr class="row0" id="row_ftp_port" <?php echo $ftpFieldsDisplay; ?>> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_PORT'); ?> </td> <td> <input type="text" name="ftp_port" value="<?php echo $this->ftp['port']; ?>" /> </td> </tr> <tr class="row1" id="row_ftp_username" <?php echo $ftpFieldsDisplay; ?>> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_USERNAME'); ?> </td> <td> <input type="text" name="ftp_user" value="<?php echo $this->ftp['username']; ?>" /> </td> </tr> <tr class="row0" id="row_ftp_password" <?php echo $ftpFieldsDisplay; ?>> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_PASSWORD'); ?> </td> <td> <input type="password" name="ftp_pass" value="<?php echo $this->ftp['password']; ?>" /> </td> </tr> <tr class="row1" id="row_ftp_directory" <?php echo $ftpFieldsDisplay; ?>> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_DIRECTORY'); ?> </td> <td> <input type="text" name="ftp_root" value="<?php echo $this->ftp['directory']; ?>" /> </td> </tr> </tbody> <tfoot> <tr> <td> </td> <td> <button class="submit" type="submit"> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_INSTALLUPDATE'); ?> </button> </td> </tr> </tfoot> </table> </fieldset> <?php endif; ?> <?php echo JHtml::_('form.token'); ?> <input type="hidden" name="task" value="update.download" /> <input type="hidden" name="option" value="com_joomlaupdate" /> </form> <div class="download_message" style="display: none"> <p></p> <p class="nowarning"> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_DOWNLOAD_IN_PROGRESS'); ?> </p> <div class="joomlaupdate_spinner"></div> </div> PKb��\� � � 5templates/hathor/html/com_search/searches/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.multiselect'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_search&view=searches'); ?>" method="post" name="adminForm" id="adminForm"> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_SEARCH_SEARCH_IN_PHRASE'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <?php if ($this->enabled) : ?> <span class="enabled"><?php echo JText::_('COM_SEARCH_LOGGING_ENABLED'); ?></span> <?php else : ?> <span class="disabled"><?php echo JText::_('COM_SEARCH_LOGGING_DISABLED'); ?></span> <?php endif; ?> <span class="adminlist-searchstatus"> <?php if ($this->state->get('filter.results')) : ?> <a href="<?php echo JRoute::_('index.php?option=com_search&filter_results=0');?>"> <?php echo JText::_('COM_SEARCH_HIDE_SEARCH_RESULTS'); ?></a> <?php else : ?> <a href="<?php echo JRoute::_('index.php?option=com_search&filter_results=1');?>"> <?php echo JText::_('COM_SEARCH_SHOW_SEARCH_RESULTS'); ?></a> <?php endif; ?> </span> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="title"> <?php echo JHtml::_('grid.sort', 'COM_SEARCH_HEADING_PHRASE', 'a.search_term', $listDirn, $listOrder); ?> </th> <th class="hits-col"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_HITS', 'a.hits', $listDirn, $listOrder); ?> </th> <th class="width-15"> <?php echo JText::_('COM_SEARCH_HEADING_RESULTS'); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : ?> <tr class="row<?php echo $i % 2; ?>"> <td> <?php echo $this->escape($item->search_term); ?> </td> <td class="center"> <?php echo (int) $item->hits; ?> </td> <td class="center"> <?php if ($this->state->get('filter.results')) : ?> <?php echo (int) $item->returns; ?> <?php else: ?> <?php echo JText::_('COM_SEARCH_NO_RESULTS'); ?> <?php endif; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\�z]��$templates/hathor/html/pagination.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * This is a file to add template specific chrome to pagination rendering. * * pagination_list_footer * Input variable $list is an array with offsets: * $list[prefix] : string * $list[limit] : int * $list[limitstart] : int * $list[total] : int * $list[limitfield] : string * $list[pagescounter] : string * $list[pageslinks] : string * * pagination_list_render * Input variable $list is an array with offsets: * $list[all] * [data] : string * [active] : boolean * $list[start] * [data] : string * [active] : boolean * $list[previous] * [data] : string * [active] : boolean * $list[next] * [data] : string * [active] : boolean * $list[end] * [data] : string * [active] : boolean * $list[pages] * [{PAGE}][data] : string * [{PAGE}][active] : boolean * * pagination_item_active * Input variable $item is an object with fields: * $item->base : integer * $item->prefix : string * $item->link : string * $item->text : string * * pagination_item_inactive * Input variable $item is an object with fields: * $item->base : integer * $item->prefix : string * $item->link : string * $item->text : string * * This gives template designers ultimate control over how pagination is rendered. * * NOTE: If you override pagination_item_active OR pagination_item_inactive you MUST override them both */ function pagination_list_footer($list) { /** * Fix javascript jump menu * * Remove the onchange=Joomla.submitform from the select tag * Add in a button with onclick instead */ $fixlimit = $list['limitfield']; $fixlimit = preg_replace('/onchange="Joomla.submitform\(\);"/', '', $fixlimit); $html = "<div class=\"containerpg\"><div class=\"pagination\">\n"; $html .= "\n<div class=\"limit\"><label for=\"limit\">".JText::_('JGLOBAL_DISPLAY_NUM')." </label>"; $html .= "\n".$fixlimit; $html .= "\n<button id=\"pagination-go\" type=\"button\" onclick=\"Joomla.submitform()\">" . JText::_('JSUBMIT') . "</button></div>"; $html .= "\n" . $list['pageslinks']; $html .= "\n<div class=\"limit\">".$list['pagescounter']."</div>"; $html .= "\n<input type=\"hidden\" name=\"" . $list['prefix'] . "limitstart\" value=\"".$list['limitstart']."\" />"; $html .= "\n<div class=\"clr\"></div></div></div>"; return $html; } function pagination_list_render($list) { $html = null; if ($list['start']['active']) { $html .= "<div class=\"button2-right\"><div class=\"start\">".$list['start']['data']."</div></div>"; } else { $html .= "<div class=\"button2-right off\"><div class=\"start\">".$list['start']['data']."</div></div>"; } if ($list['previous']['active']) { $html .= "<div class=\"button2-right\"><div class=\"prev\">".$list['previous']['data']."</div></div>"; } else { $html .= "<div class=\"button2-right off\"><div class=\"prev\">".$list['previous']['data']."</div></div>"; } $html .= "\n<div class=\"button2-left\"><div class=\"page\">"; foreach ($list['pages'] as $page) { $html .= $page['data']; } $html .= "\n</div></div>"; if ($list['next']['active']) { $html .= "<div class=\"button2-left\"><div class=\"next\">".$list['next']['data']."</div></div>"; } else { $html .= "<div class=\"button2-left off\"><div class=\"next\">".$list['next']['data']."</div></div>"; } if ($list['end']['active']) { $html .= "<div class=\"button2-left\"><div class=\"end\">".$list['end']['data']."</div></div>"; } else { $html .= "<div class=\"button2-left off\"><div class=\"end\">".$list['end']['data']."</div></div>"; } return $html; } function pagination_item_active(&$item) { if ($item->base > 0) { return "<a href=\"#\" title=\"".$item->text."\" onclick=\"document.adminForm." . $item->prefix . "limitstart.value=".$item->base."; Joomla.submitform();return false;\">".$item->text."</a>"; } else { return "<a href=\"#\" title=\"".$item->text."\" onclick=\"document.adminForm." . $item->prefix . "limitstart.value=0; Joomla.submitform();return false;\">".$item->text."</a>"; } } function pagination_item_inactive(&$item) { if ($item->active) { $class = 'class="active"'; } else { $class = ''; } return '<span ' . $class . '>' . $item->text . '</span>'; } PKb��\�ϱ�/templates/hathor/html/mod_quickicon/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_quickicon * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $html = JHtml::_('icons.buttons', $buttons); ?> <?php if (!empty($html)): ?> <div class="cpanel clearfix"> <?php echo $html;?> </div> <?php endif;?> PKb��\�~��997templates/hathor/html/com_newsfeeds/newsfeeds/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); $function = JFactory::getApplication()->input->getCmd('function', 'jSelectNewsfeed'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_newsfeeds&view=newsfeeds&layout=modal&tmpl=component');?>" method="post" name="adminForm" id="adminForm"> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search fltlft"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" size="30" title="<?php echo JText::_('COM_NEWSFEEDS_SEARCH_IN_TITLE'); ?>" /> <button type="submit"> <?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"> <?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select fltrt"> <label class="selectlabel" for="filter_access"> <?php echo JText::_('JOPTION_SELECT_ACCESS'); ?> </label> <select name="filter_access" id="filter_access"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS');?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access'));?> </select> <label class="selectlabel" for="filter_published"> <?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?> </label> <select name="filter_published" id="filter_published"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.state'), true);?> </select> <label class="selectlabel" for="filter_category_id"> <?php echo JText::_('JOPTION_SELECT_CATEGORY'); ?> </label> <select name="filter_category_id" id="filter_category_id"> <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option> <?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_newsfeeds'), 'value', 'text', $this->state->get('filter.category_id'));?> </select> <?php if ($this->state->get('filter.forcedLanguage')) : ?> <input type="hidden" name="forcedLanguage" value="<?php echo $this->escape($this->state->get('filter.forcedLanguage')); ?>" /> <input type="hidden" name="filter_language" value="<?php echo $this->escape($this->state->get('filter.language')); ?>" /> <?php else : ?> <label class="selectlabel" for="filter_language"><?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?></label> <select name="filter_language" id="filter_language"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE');?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language'));?> </select> <?php endif; ?> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <table class="adminlist modal"> <thead> <tr> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.name', $listDirn, $listOrder); ?> </th> <th class="title access-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'access_level', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JCATEGORY', 'a.catid', $listDirn, $listOrder); ?> </th> <th class="title language-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'language', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : ?> <tr class="row<?php echo $i % 2; ?>"> <th> <a class="pointer" onclick="if (window.parent) window.parent.<?php echo $this->escape($function);?>('<?php echo $item->id; ?>', '<?php echo $this->escape(addslashes($item->name)); ?>');"> <?php echo $this->escape($item->name); ?></a> </th> <td class="center"> <?php echo $this->escape($item->access_level); ?> </td> <td class="center"> <?php echo $this->escape($item->category_title); ?> </td> <td class="center"> <?php if ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\�y~@\)\)9templates/hathor/html/com_newsfeeds/newsfeeds/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.multiselect'); $app = JFactory::getApplication(); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canOrder = $user->authorise('core.edit.state', 'com_newsfeeds.category'); $saveOrder = $listOrder == 'a.ordering'; $assoc = JLanguageAssociations::isEnabled(); ?> <form action="<?php echo JRoute::_('index.php?option=com_newsfeeds&view=newsfeeds'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_NEWSFEEDS_SEARCH_IN_TITLE'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_published"> <?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?> </label> <select name="filter_published" id="filter_published"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.state'), true);?> </select> <label class="selectlabel" for="filter_category_id"> <?php echo JText::_('JOPTION_SELECT_CATEGORY'); ?> </label> <select name="filter_category_id" id="filter_category_id"> <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option> <?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_newsfeeds'), 'value', 'text', $this->state->get('filter.category_id'));?> </select> <label class="selectlabel" for="filter_access"> <?php echo JText::_('JOPTION_SELECT_ACCESS'); ?> </label> <select name="filter_access" id="filter_access"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS');?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access'));?> </select> <label class="selectlabel" for="filter_language"> <?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?> </label> <select name="filter_language" id="filter_language"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE');?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language'));?> </select> <label class="selectlabel" for="filter_tag"> <?php echo JText::_('JOPTION_SELECT_TAG'); ?> </label> <select name="filter_tag" id="filter_tag"> <option value=""><?php echo JText::_('JOPTION_SELECT_TAG');?></option> <?php echo JHtml::_('select.options', JHtml::_('tag.options', true, true), 'value', 'text', $this->state->get('filter.tag'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.name', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.published', $listDirn, $listOrder); ?> </th> <th class="nowrap title category-col"> <?php echo JHtml::_('grid.sort', 'JCATEGORY', 'category_title', $listDirn, $listOrder); ?> </th> <th class="nowrap ordering-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ORDERING', 'a.ordering', $listDirn, $listOrder); ?> <?php if ($canOrder && $saveOrder) :?> <?php echo JHtml::_('grid.order', $this->items, 'filesave.png', 'newsfeeds.saveorder'); ?> <?php endif; ?> </th> <th class="title access-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?> </th> <th class="width-10"> <?php echo JHtml::_('grid.sort', 'COM_NEWSFEEDS_NUM_ARTICLES_HEADING', 'numarticles', $listDirn, $listOrder); ?> </th> <th class="width-5"> <?php echo JHtml::_('grid.sort', 'COM_NEWSFEEDS_CACHE_TIME_HEADING', 'a.cache_time', $listDirn, $listOrder); ?> </th> <?php if ($assoc) : ?> <th class="width-5"> <?php echo JHtml::_('grid.sort', 'COM_NEWSFEEDS_HEADING_ASSOCIATION', 'association', $listDirn, $listOrder); ?> </th> <?php endif;?> <th class="width-5"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'a.language', $listDirn, $listOrder); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $ordering = ($listOrder == 'a.ordering'); $canCreate = $user->authorise('core.create', 'com_newsfeeds.category.' . $item->catid); $canEdit = $user->authorise('core.edit', 'com_newsfeeds.category.' . $item->catid); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_newsfeeds.category.' . $item->catid) && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>"> <th class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </th> <td> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'newsfeeds.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_newsfeeds&task=newsfeed.edit&id='.(int) $item->id); ?>"> <?php echo $this->escape($item->name); ?></a> <?php else : ?> <?php echo $this->escape($item->name); ?> <?php endif; ?> <p class="smallsub"> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias));?></p> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->published, $i, 'newsfeeds.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?> </td> <td class="center"> <?php echo $this->escape($item->category_title); ?> </td> <td class="order"> <?php if ($canChange) : ?> <?php if ($saveOrder) :?> <?php if ($listDirn == 'asc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, ($item->catid == @$this->items[$i - 1]->catid), 'newsfeeds.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, ($item->catid == @$this->items[$i + 1]->catid), 'newsfeeds.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php elseif ($listDirn == 'desc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, ($item->catid == @$this->items[$i - 1]->catid), 'newsfeeds.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, ($item->catid == @$this->items[$i + 1]->catid), 'newsfeeds.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php endif; ?> <?php endif; ?> <?php $disabled = $saveOrder ? '' : 'disabled="disabled"'; ?> <input type="text" name="order[]" size="5" value="<?php echo $item->ordering;?>" <?php echo $disabled ?> class="text-area-order" title="<?php echo $item->name; ?> order" /> <?php else : ?> <?php echo $item->ordering; ?> <?php endif; ?> </td> <td class="center"> <?php echo $this->escape($item->access_level); ?> </td> <td class="center"> <?php echo (int) $item->numarticles; ?> </td> <td class="center"> <?php echo (int) $item->cache_time; ?> </td> <?php if ($assoc) : ?> <td class="center"> <?php if ($item->association) : ?> <?php echo JHtml::_('newsfeed.association', $item->id); ?> <?php endif; ?> </td> <?php endif;?> <td class="center"> <?php if ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php //Load the batch processing form if user is allowed ?> <?php if ($user->authorise('core.create', 'com_newsfeeds') && $user->authorise('core.edit', 'com_newsfeeds') && $user->authorise('core.edit.state', 'com_newsfeeds')) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_NEWSFEEDS_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif;?> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\"�ڒ5templates/hathor/html/com_newsfeeds/newsfeed/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 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 HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); $app = JFactory::getApplication(); $input = $app->input; $saveHistory = $this->state->get('params')->get('save_history', 0); $assoc = JLanguageAssociations::isEnabled(); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'newsfeed.cancel' || document.formvalidator.isValid(document.getElementById('newsfeed-form'))) { Joomla.submitform(task, document.getElementById('newsfeed-form')); } } "); ?> <form action="<?php echo JRoute::_('index.php?option=com_newsfeeds&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="newsfeed-form" class="form-validate"> <div class="col main-section"> <fieldset class="adminform"> <legend><?php echo empty($this->item->id) ? JText::_('COM_NEWSFEEDS_NEW_NEWSFEED') : JText::sprintf('COM_NEWSFEEDS_EDIT_NEWSFEED', $this->item->id); ?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('name'); ?> <?php echo $this->form->getInput('name'); ?></li> <li><?php echo $this->form->getLabel('alias'); ?> <?php echo $this->form->getInput('alias'); ?></li> <li><?php echo $this->form->getLabel('link'); ?> <?php echo $this->form->getInput('link'); ?></li> <li><?php echo $this->form->getLabel('catid'); ?> <?php echo $this->form->getInput('catid'); ?></li> <li><?php echo $this->form->getLabel('published'); ?> <?php echo $this->form->getInput('published'); ?></li> <li><?php echo $this->form->getLabel('access'); ?> <?php echo $this->form->getInput('access'); ?></li> <li><?php echo $this->form->getLabel('ordering'); ?> <?php echo $this->form->getInput('ordering'); ?></li> <li><?php echo $this->form->getLabel('language'); ?> <?php echo $this->form->getInput('language'); ?></li> <!-- Tag field --> <li><?php echo $this->form->getLabel('tags'); ?> <div class="is-tagbox"> <?php echo $this->form->getInput('tags'); ?> </div> </li> <?php if ($saveHistory) : ?> <li><?php echo $this->form->getLabel('version_note'); ?> <?php echo $this->form->getInput('version_note'); ?></li> <?php endif; ?> <li><?php echo $this->form->getLabel('id'); ?> <?php echo $this->form->getInput('id'); ?></li> </ul> </fieldset> </div> <div class="col options-section"> <?php echo JHtml::_('sliders.start', 'newsfeed-sliders-' . $this->item->id, array('useCookie' => 1)); ?> <?php echo JHtml::_('sliders.panel', JText::_('JGLOBAL_FIELDSET_PUBLISHING'), 'publishing-details'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('JGLOBAL_FIELDSET_PUBLISHING'); ?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('created_by'); ?> <?php echo $this->form->getInput('created_by'); ?></li> <li><?php echo $this->form->getLabel('created_by_alias'); ?> <?php echo $this->form->getInput('created_by_alias'); ?></li> <li><?php echo $this->form->getLabel('created'); ?> <?php echo $this->form->getInput('created'); ?></li> <li><?php echo $this->form->getLabel('publish_up'); ?> <?php echo $this->form->getInput('publish_up'); ?></li> <li><?php echo $this->form->getLabel('publish_down'); ?> <?php echo $this->form->getInput('publish_down'); ?></li> <?php if ($this->item->modified_by) : ?> <li><?php echo $this->form->getLabel('modified_by'); ?> <?php echo $this->form->getInput('modified_by'); ?></li> <li><?php echo $this->form->getLabel('modified'); ?> <?php echo $this->form->getInput('modified'); ?></li> <?php endif; ?> <li><?php echo $this->form->getLabel('numarticles'); ?> <?php echo $this->form->getInput('numarticles'); ?></li> <li><?php echo $this->form->getLabel('cache_time'); ?> <?php echo $this->form->getInput('cache_time'); ?></li> <li><?php echo $this->form->getLabel('rtl'); ?> <?php echo $this->form->getInput('rtl'); ?></li> </ul> </fieldset> <?php echo $this->loadTemplate('params'); ?> <?php echo JHtml::_('sliders.panel', JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS'), 'meta-options'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS'); ?></legend> <?php echo $this->loadTemplate('metadata'); ?> </fieldset> <?php if ($assoc) : ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_NEWSFEEDS_ITEM_ASSOCIATIONS_FIELDSET_LABEL'), '-options');?> <?php echo $this->loadTemplate('associations'); ?> <?php endif; ?> <?php echo JHtml::_('sliders.end'); ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> <div class="clr"></div> </form> PKb��\����<templates/hathor/html/com_newsfeeds/newsfeed/edit_params.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $fieldSets = $this->form->getFieldsets('params'); foreach ($fieldSets as $name => $fieldSet) : echo JHtml::_('sliders.panel', JText::_($fieldSet->label), $name.'-params'); if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="tip">'.$this->escape(JText::_($fieldSet->description)).'</p>'; endif; ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_($fieldSet->label); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <li><?php echo $field->label; ?> <?php echo $field->input; ?></li> <?php endforeach; ?> </ul> </fieldset> <?php endforeach; ?> PKb��\����*�*5templates/hathor/html/com_banners/banners/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.multiselect'); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canOrder = $user->authorise('core.edit.state', 'com_banners.category'); $saveOrder = $listOrder == 'ordering'; ?> <form action="<?php echo JRoute::_('index.php?option=com_banners&view=banners'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('Banners_Search_in_title'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_state"> <?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?> </label> <select name="filter_state" id="filter_state"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.state'), true);?> </select> <label class="selectlabel" for="filter_client_id"> <?php echo JText::_('COM_BANNERS_SELECT_CLIENT'); ?> </label> <select name="filter_client_id" id="filter_client_id"> <option value=""><?php echo JText::_('COM_BANNERS_SELECT_CLIENT');?></option> <?php echo JHtml::_('select.options', BannersHelper::getClientOptions(), 'value', 'text', $this->state->get('filter.client_id'));?> </select> <label class="selectlabel" for="filter_category_id"> <?php echo JText::_('JOPTION_SELECT_CATEGORY'); ?> </label> <select name="filter_category_id" id="filter_category_id"> <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option> <?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_banners'), 'value', 'text', $this->state->get('filter.category_id'));?> </select> <label class="selectlabel" for="filter_language"> <?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?> </label> <select name="filter_language" id="filter_language"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE');?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'COM_BANNERS_HEADING_NAME', 'name', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'state', $listDirn, $listOrder); ?> </th> <th class="nowrap width-5"> <?php echo JHtml::_('grid.sort', 'COM_BANNERS_HEADING_STICKY', 'sticky', $listDirn, $listOrder); ?> </th> <th class="nowrap width-10"> <?php echo JHtml::_('grid.sort', 'COM_BANNERS_HEADING_CLIENT', 'client_name', $listDirn, $listOrder); ?> </th> <th class="nowrap title category-col"> <?php echo JHtml::_('grid.sort', 'JCATEGORY', 'category_title', $listDirn, $listOrder); ?> </th> <th class="nowrap ordering-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ORDERING', 'ordering', $listDirn, $listOrder); ?> <?php if ($canOrder && $saveOrder) : ?> <?php echo JHtml::_('grid.order', $this->items, 'filesave.png', 'banners.saveorder'); ?> <?php endif;?> </th> <th class="nowrap width-5"> <?php echo JHtml::_('grid.sort', 'COM_BANNERS_HEADING_IMPRESSIONS', 'impmade', $listDirn, $listOrder); ?> </th> <th class="nowrap width-10"> <?php echo JHtml::_('grid.sort', 'COM_BANNERS_HEADING_CLICKS', 'clicks', $listDirn, $listOrder); ?> </th> <th class="nowrap width-5"> <?php echo JText::_('COM_BANNERS_HEADING_METAKEYWORDS'); ?> </th> <th class="width-10"> <?php echo JText::_('COM_BANNERS_HEADING_PURCHASETYPE'); ?> </th> <th class="language-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'a.language', $this->state->get('list.direction'), $this->state->get('list.ordering')); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $ordering = ($listOrder == 'ordering'); $item->cat_link = JRoute::_('index.php?option=com_categories&extension=com_banners&task=edit&type=other&cid[]=' . $item->catid); $canCreate = $user->authorise('core.create', 'com_banners.category.' . $item->catid); $canEdit = $user->authorise('core.edit', 'com_banners.category.' . $item->catid); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_banners.category.' . $item->catid) && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>"> <td> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'banners.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_banners&task=banner.edit&id='.(int) $item->id); ?>"> <?php echo $this->escape($item->name); ?></a> <?php else : ?> <?php echo $this->escape($item->name); ?> <?php endif; ?> <p class="smallsub"> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias));?></p> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->state, $i, 'banners.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?> </td> <td class="center"> <?php echo JHtml::_('banner.pinned', $item->sticky, $i, $canChange);?> </td> <td class="center"> <?php echo $item->client_name;?> </td> <td class="center"> <?php echo $this->escape($item->category_title); ?> </td> <td class="order"> <?php if ($canChange) : ?> <?php if ($saveOrder) : ?> <?php if ($listDirn == 'asc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, (@$this->items[$i - 1]->catid == $item->catid), 'banners.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, (@$this->items[$i + 1]->catid == $item->catid), 'banners.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php elseif ($listDirn == 'desc') : ?> <span><?php echo $this->pagination->orderUpIcon($i, (@$this->items[$i - 1]->catid == $item->catid), 'banners.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, (@$this->items[$i + 1]->catid == $item->catid), 'banners.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php endif; ?> <?php endif; ?> <?php $disabled = $saveOrder ? '' : 'disabled="disabled"'; ?> <input type="text" name="order[]" value="<?php echo $item->ordering;?>" <?php echo $disabled; ?> class="text-area-order" title="<?php echo $item->name; ?> order" /> <?php else : ?> <?php echo $item->ordering; ?> <?php endif; ?> </td> <td class="center"> <?php echo JText::sprintf('COM_BANNERS_IMPRESSIONS', $item->impmade, $item->imptotal ? $item->imptotal : JText::_('COM_BANNERS_UNLIMITED'));?> </td> <td class="center"> <?php echo $item->clicks;?> - <?php echo sprintf('%.2f%%', $item->impmade ? 100 * $item->clicks / $item->impmade : 0);?> </td> <td> <?php echo $item->metakey; ?> </td> <td class="center"> <?php if ($item->purchase_type < 0):?> <?php echo JText::sprintf('COM_BANNERS_DEFAULT', ($item->client_purchase_type > 0) ? JText::_('COM_BANNERS_FIELD_VALUE_'.$item->client_purchase_type) : JText::_('COM_BANNERS_FIELD_VALUE_'.$this->state->params->get('purchase_type')));?> <?php else:?> <?php echo JText::_('COM_BANNERS_FIELD_VALUE_'.$item->purchase_type);?> <?php endif;?> </td> <td class="center"> <?php if ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="center"> <?php echo $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <div class="clr"> </div> <?php //Load the batch processing form. ?> <?php if ($user->authorise('core.create', 'com_banners') && $user->authorise('core.edit', 'com_banners') && $user->authorise('core.edit.state', 'com_banners')) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_BANNERS_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�T��4templates/hathor/html/com_banners/tracks/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.multiselect'); JHtml::_('behavior.modal', 'a.modal'); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_banners&view=tracks'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('COM_BANNERS_BEGIN_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-hide-lbl" for="filter_begin"><?php echo JText::_('COM_BANNERS_BEGIN_LABEL'); ?></label> <?php echo JHtml::_('calendar', $this->state->get('filter.begin'), 'filter_begin', 'filter_begin', '%Y-%m-%d', array('size' => 10));?> <label class="filter-hide-lbl" for="filter_end"><?php echo JText::_('COM_BANNERS_END_LABEL'); ?></label> <?php echo JHtml::_('calendar', $this->state->get('filter.end'), 'filter_end', 'filter_end', '%Y-%m-%d', array('size' => 10));?> </div> <div class="filter-select"> <label class="selectlabel" for="filter_client_id"> <?php echo JText::_('COM_BANNERS_SELECT_CLIENT'); ?> </label> <select name="filter_client_id" id="filter_client_id"> <option value=""><?php echo JText::_('COM_BANNERS_SELECT_CLIENT');?></option> <?php echo JHtml::_('select.options', BannersHelper::getClientOptions(), 'value', 'text', $this->state->get('filter.client_id'));?> </select> <label class="selectlabel" for="filter_category_id"> <?php echo JText::_('JOPTION_SELECT_CATEGORY'); ?> </label> <?php $category = $this->state->get('filter.category_id');?> <select name="filter_category_id" id="filter_category_id"> <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option> <?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_banners'), 'value', 'text', $category);?> </select> <label class="selectlabel" for="filter_type"> <?php echo JText::_('BANNERS_SELECT_TYPE'); ?> </label> <select name="filter_type" id="filter_type"> <?php echo JHtml::_('select.options', array(JHtml::_('select.option', '0', JText::_('COM_BANNERS_SELECT_TYPE')), JHtml::_('select.option', 1, JText::_('COM_BANNERS_IMPRESSION')), JHtml::_('select.option', 2, JText::_('COM_BANNERS_CLICK'))), 'value', 'text', $this->state->get('filter.type'));?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="title"> <?php echo JHtml::_('grid.sort', 'COM_BANNERS_HEADING_NAME', 'name', $listDirn, $listOrder); ?> </th> <th class="nowrap width-20"> <?php echo JHtml::_('grid.sort', 'COM_BANNERS_HEADING_CLIENT', 'client_name', $listDirn, $listOrder); ?> </th> <th class="width-20"> <?php echo JHtml::_('grid.sort', 'JCATEGORY', 'category_title', $listDirn, $listOrder); ?> </th> <th class="nowrap width-10"> <?php echo JHtml::_('grid.sort', 'COM_BANNERS_HEADING_TYPE', 'track_type', $listDirn, $listOrder); ?> </th> <th class="nowrap width-10"> <?php echo JHtml::_('grid.sort', 'COM_BANNERS_HEADING_COUNT', 'count', $listDirn, $listOrder); ?> </th> <th class="nowrap width-10"> <?php echo JHtml::_('grid.sort', 'JDATE', 'track_date', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) :?> <tr class="row<?php echo $i % 2; ?>"> <td> <?php echo $item->name;?> </td> <td> <?php echo $item->client_name;?> </td> <td> <?php echo $item->category_title;?> </td> <td> <?php echo $item->track_type == 1 ? JText::_('COM_BANNERS_IMPRESSION'): JText::_('COM_BANNERS_CLICK');?> </td> <td> <?php echo $item->count;?> </td> <td> <?php echo JHtml::_('date', $item->track_date, JText::_('DATE_FORMAT_LC4').' H:i');?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\������5templates/hathor/html/com_banners/clients/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.multiselect'); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_banners&view=clients'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <fieldset id="filter-bar"> <legend class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></legend> <div class="filter-search"> <label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_BANNERS_SEARCH_IN_TITLE'); ?>" /> <button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="filter-select"> <label class="selectlabel" for="filter_state"> <?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?> </label> <select name="filter_state" id="filter_state"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.state'), true);?> </select> <button type="submit" id="filter-go"> <?php echo JText::_('JSUBMIT'); ?></button> </div> </fieldset> <div class="clr"> </div> <table class="adminlist"> <thead> <tr> <th class="checkmark-col"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_BANNERS_HEADING_CLIENT', 'name', $listDirn, $listOrder); ?> </th> <th class="width-30"> <?php echo JHtml::_('grid.sort', 'COM_BANNERS_HEADING_CONTACT', 'contact', $listDirn, $listOrder); ?> </th> <th class="nowrap state-col"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'state', $listDirn, $listOrder); ?> </th> <th class="width-5"> <?php echo JHtml::_('grid.sort', 'COM_BANNERS_HEADING_ACTIVE', 'nbanners', $listDirn, $listOrder); ?> </th> <th class="nowrap width-5"> <?php echo JText::_('COM_BANNERS_HEADING_METAKEYWORDS'); ?> </th> <th class="width-10"> <?php echo JText::_('COM_BANNERS_HEADING_PURCHASETYPE'); ?> </th> <th class="nowrap id-col"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $item) : $ordering = ($listOrder == 'ordering'); $canCreate = $user->authorise('core.create', 'com_banners'); $canEdit = $user->authorise('core.edit', 'com_banners'); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_banners') && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'clients.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_banners&task=client.edit&id='.(int) $item->id); ?>"> <?php echo $this->escape($item->name); ?></a> <?php else : ?> <?php echo $this->escape($item->name); ?> <?php endif; ?> </td> <td class="center"> <?php echo $item->contact;?> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->state, $i, 'clients.', $canChange);?> </td> <td class="center"> <?php echo $item->nbanners; ?> </td> <td> <?php echo $item->metakey; ?> </td> <td class="center"> <?php if ($item->purchase_type < 0):?> <?php echo JText::sprintf('COM_BANNERS_DEFAULT', JText::_('COM_BANNERS_FIELD_VALUE_'.$this->state->params->get('purchase_type')));?> <?php else:?> <?php echo JText::_('COM_BANNERS_FIELD_VALUE_'.$item->purchase_type);?> <?php endif;?> </td> <td class="center"> <?php echo $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�.�aa1templates/hathor/html/com_banners/banner/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'banner.cancel' || document.formvalidator.isValid(document.getElementById('banner-form'))) { Joomla.submitform(task, document.getElementById('banner-form')); } } "); ?> <form action="<?php echo JRoute::_('index.php?option=com_banners&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="banner-form" class="form-validate"> <div class="col main-section"> <fieldset class="adminform"> <legend><?php echo empty($this->item->id) ? JText::_('COM_BANNERS_NEW_BANNER') : JText::sprintf('COM_BANNERS_BANNER_DETAILS', $this->item->id); ?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('name'); ?> <?php echo $this->form->getInput('name'); ?></li> <li><?php echo $this->form->getLabel('alias'); ?> <?php echo $this->form->getInput('alias'); ?></li> <li><?php echo $this->form->getLabel('access'); ?> <?php echo $this->form->getInput('access'); ?></li> <li><?php echo $this->form->getLabel('catid'); ?> <?php echo $this->form->getInput('catid'); ?></li> <li><?php echo $this->form->getLabel('state'); ?> <?php echo $this->form->getInput('state'); ?></li> <li><?php echo $this->form->getLabel('type'); ?> <?php echo $this->form->getInput('type'); ?></li> </ul> <ul id="image"> <?php foreach ($this->form->getFieldset('image') as $field) : ?> <li><?php echo $field->label; ?> <?php echo $field->input; ?></li> <?php endforeach; ?> </ul> <ul> <li><div id="custom"> <?php echo $this->form->getLabel('custombannercode'); ?> <?php echo $this->form->getInput('custombannercode'); ?> </div> </li> <li><div id="url"> <?php echo $this->form->getLabel('clickurl'); ?> <?php echo $this->form->getInput('clickurl'); ?> </div> </li> <li><?php echo $this->form->getLabel('description'); ?> <?php echo $this->form->getInput('description'); ?></li> <li><?php echo $this->form->getLabel('language'); ?> <?php echo $this->form->getInput('language'); ?></li> <li><?php echo $this->form->getLabel('id'); ?> <?php echo $this->form->getInput('id'); ?></li> </ul> <div class="clr"> </div> </fieldset> </div> <div class="col options-section"> <?php echo JHtml::_('sliders.start', 'banner-sliders-' . $this->item->id, array('useCookie' => 1)); ?> <?php echo JHtml::_('sliders.panel', JText::_('COM_BANNERS_GROUP_LABEL_PUBLISHING_DETAILS'), 'publishing-details'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('JGLOBAL_FIELDSET_PUBLISHING'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('publish') as $field) : ?> <li><?php echo $field->label; ?> <?php echo $field->input; ?></li> <?php endforeach; ?> </ul> </fieldset> <?php echo JHtml::_('sliders.panel', JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS'), 'metadata'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('metadata') as $field) : ?> <li><?php echo $field->label; ?> <?php echo $field->input; ?></li> <?php endforeach; ?> </ul> </fieldset> <?php echo JHtml::_('sliders.end'); ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> <div class="clr"></div> </form> PKb��\�7�p p 1templates/hathor/html/com_banners/client/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html'); JHtml::_('behavior.formvalidator'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'client.cancel' || document.formvalidator.isValid(document.getElementById('client-form'))) { Joomla.submitform(task, document.getElementById('client-form')); } } "); ?> <form action="<?php echo JRoute::_('index.php?option=com_banners&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="client-form" class="form-validate"> <div class="col main-section"> <fieldset class="adminform"> <legend><?php echo empty($this->item->id) ? JText::_('COM_BANNERS_NEW_CLIENT') : JText::sprintf('COM_BANNERS_EDIT_CLIENT', $this->item->id); ?></legend> <ul class="adminformlist"> <li><?php echo $this->form->getLabel('name'); ?> <?php echo $this->form->getInput('name'); ?></li> <li><?php echo $this->form->getLabel('contact'); ?> <?php echo $this->form->getInput('contact'); ?></li> <li><?php echo $this->form->getLabel('email'); ?> <?php echo $this->form->getInput('email'); ?></li> <?php if ($canDo->get('core.edit.state')) : ?> <li><?php echo $this->form->getLabel('state'); ?> <?php echo $this->form->getInput('state'); ?></li> <?php endif; ?> <li><?php echo $this->form->getLabel('purchase_type'); ?> <?php echo $this->form->getInput('purchase_type'); ?></li> <li><?php echo $this->form->getLabel('track_impressions'); ?> <?php echo $this->form->getInput('track_impressions'); ?></li> <li><?php echo $this->form->getLabel('track_clicks'); ?> <?php echo $this->form->getInput('track_clicks'); ?></li> <li><?php echo $this->form->getLabel('id'); ?> <?php echo $this->form->getInput('id'); ?></li> </ul> </fieldset> </div> <div class="col options-section"> <?php echo JHtml::_('sliders.start', 'banner-client-sliders-' . $this->item->id, array('useCookie' => 1)); ?> <?php echo JHtml::_('sliders.panel', JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS'), 'metadata'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('metadata') as $field) : ?> <li> <?php if (!$field->hidden) : ?> <?php echo $field->label; ?> <?php endif; ?> <?php echo $field->input; ?> </li> <?php endforeach; ?> </ul> </fieldset> <?php echo JHtml::_('sliders.panel', JText::_('COM_BANNERS_EXTRA'), 'extra'); ?> <fieldset class="panelform"> <legend class="element-invisible"><?php echo JText::_('COM_BANNERS_EXTRA'); ?></legend> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('extra') as $field) : ?> <li><?php if (!$field->hidden) : ?> <?php echo $field->label; ?> <?php endif; ?> <?php echo $field->input; ?></li> <?php endforeach; ?> </ul> </fieldset> <?php echo JHtml::_('sliders.end'); ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> <div class="clr"></div> </form> PKb��\qsw��0templates/hathor/css/colour_highcontrast_rtl.cssnu�[���@charset "UTF-8"; /** * @package Joomla.Administrator * @subpackage templates.hathor * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @since 1.6 * * RTL CSS file for the color standard */ /** * Overall Styles */ #header { background: #ffffff url(../images/j_logo.png) no-repeat top right; } #element-box { border-left: 1px solid #1b3f7c; border-right: 1px solid #1b3f7c; } /** * Various Styles */ div.checkin-tick { background: url(../images/admin/tick.png) 20px 50% no-repeat; } /** * Subheader, toolbar, page title */ div.toolbar-box { border-left: 1px solid #10254a; border-right: 1px solid #10254a; } div.toolbar-list li.divider { border-left:1px dotted #1b3f7c; border-right:none; } div.toolbar-list a:hover { border-right: 1px solid #000000; border-left: 1px solid #1b3f7c; } /** * Pane Slider pane Toggler styles */ .pane-toggler span { background: transparent url(../images/j_arrow_left.png) right 50% no-repeat; } .pane-toggler-down span { background: transparent url(../images/j_arrow_down.png) right 50% no-repeat; } /** * Cpanel Settings */ #cpanel div.icon a:hover, #cpanel div.icon a:focus { border-right: 1px solid #000000; border-left: 1px solid #1b3f7c; } fieldset#filter-bar { border-left: none; border-right: none; } /** * Admintable Styles */ table.admintable td.key,table.admintable td.paramlist_key { border-left: 1px solid #10254a; border-right: none; } table.paramlist td.paramlist_description { border-left: 1px solid #10254a; border-right: none; } /** * Admin Form Styles */ table.adminform tr { border-left: 1px solid #1b3f7c; border-right: none; } /** * Adminlist Table layout */ table.adminlist.modal { border-right: 1px solid #1b3f7c; border-left: 1px solid #1b3f7c; } /* Table row styles */ table.adminlist tbody tr td, table.adminlist tbody tr th { border-left: 1px solid #1b3f7c; border-right: none; } table.adminlist tbody tr td:last-child { border-left: none; } /** * Saving order icon styling in admin tables */ a.saveorder { background: url(../images/admin/filesave.png) no-repeat; } a.saveorder.inactive { background-position: 0 -16px; } /** * Button styling */ /* Button 1 Type */ /* Use this if you add images to the buttons such as directional arrows */ .button1 a { /* add padding if you are using the directional images */ /* padding: 0 6px 0 30px; */ } /* Button 2 Type */ .button2-right .prev { background-image: url(../images/j_button2_prev.png); background-position: right center; } .button2-right.off .prev { background: url(../images/j_button2_prev_off.png) no-repeat; } .button2-right .start { background-image: url(../images/j_button2_first.png); background-position: right center; } .button2-left .next { background-image: url(../images/j_button2_next.png); background-position: left center; } .button2-left.off .next { /* @TODO check the x position */ background: url(../images/j_button2_next_off.png) 100% 0 no-repeat; } .button2-left .end { background-image: url(../images/j_arrow_left.png); background-position: left center; } .button2-left.off .end { /* @TODO check the x position */ background: url(../images/j_button2_last_off.png) 100% 0 no-repeat; } .button2-left .image { background: url(../images/j_button2_image.png) 100% 0 no-repeat; } .button2-left .readmore { background: url(../images/j_button2_readmore.png) 100% 0 no-repeat; } .button2-left .pagebreak { background: url(../images/j_button2_pagebreak.png) 100% 0 no-repeat; } /** * Tooltips */ /** * System Standard Messages */ #system-message dd.message ul { background: #10254a url(../images/notice-info.png) 99.5% center no-repeat; } /** * System Error Messages */ #system-message dd.error ul { background: #1c4181 url(../images/notice-alert.png) 99.5% top no-repeat; } /** * System Notice Messages */ #system-message dd.notice ul { background: #10254a url(../images/notice-note.png) 99%.5 top no-repeat; } /** * JGrid styles */ /** * Menu Icons * These icons are used on the Administrator menu * The classes are constructed dynamically when the menu is generated */ /** * Toolbar icons * These icons are used for the toolbar buttons * The classes are constructed dynamically when the toolbar is created */ /** * Quick Icons * Also knows as Header Icons * These are used for the Quick Icons on the Control Panel * The same classes are also assigned the Component Title */ /** * General styles */ .helpFrame { border-right: 0 solid #1b3f7c; border-left: none; border-top: none; } /* -- ACL STYLES relocated from com_users/media/grid.css ----------- */ /* -- ACL PANEL STYLES ----------- */ /* All Tabs */ table.aclsummary-table td.col2, table.aclsummary-table th.col2, table.aclsummary-table td.col3, table.aclsummary-table th.col3, table.aclsummary-table td.col4, table.aclsummary-table th.col4, table.aclsummary-table td.col5, table.aclsummary-table th.col5, table.aclmodify-table td.col2, table.aclmodify-table th.col2 { border-right: 1px solid #cbcbcb; border-left: none; } /* Icons */ ul.acllegend li.acl-allowed { background:url(../images/admin/icon-16-allow.png) no-repeat right; } ul.acllegend li.acl-denied { background:url(../images/admin/icon-16-deny.png) no-repeat right; } table#acl-config th.acl-groups { border-left: 1px solid #c7c8b2; } table#acl-config th.acl-groups { text-align: right; } .acl-action { margin: auto 0; } /* Icons */ span.icon-16-unset { background: url(../images/admin/icon-16-denyinactive.png) no-repeat right; } span.icon-16-allowed { background: url(../images/admin/icon-16-allow.png) no-repeat right; } span.icon-16-denied { background: url(../images/admin/icon-16-deny.png) no-repeat right; } span.icon-16-locked { background: url(../images/admin/checked_out.png) no-repeat right; } /** * Mod_rewrite Warning */ #jform_sef_rewrite-lbl { background: url(../images/admin/icon-16-notice-note.png) left top no-repeat; } /** * Modal S-Box overrides */ #sbox-window { text-align:right; } /* * * Permission Rules */ #permissions-sliders ul#rules table.group-rules td { border-left:solid 1px #1b3f7c; border-right:solid 0 #1b3f7c; } #permissions-sliders ul#rules table.group-rules th { border-left:solid 1px #1b3f7c; border-right:solid 0 #1b3f7c; } /** * Menu Styling */ #menu ul li.node { background-image: url(../images/j_arrow_left.png); background-repeat: no-repeat; background-position: left 50%; } #menu a { background-position: right 50%; } #menu li { border-left: 1px solid #000000; } #menu li a:hover, #menu li a:active, #menu li a:focus { border-left: 1px solid #1b3f7c; border-right: 1px solid #000000; } #menu li.disabled a:hover,#menu li.disabled a:focus,#menu li.disabled a { border-right: 1px solid #10254a; border-left: 1px solid #10254a; } #menu li:hover ul,#menu li.sfhover ul { /* lists nested under hovered list items */ border-right: 1px solid #122b56; border-left: 1px solid #122b56; } #menu li li:hover ul,#menu li li.sfhover ul { border-right: 1px solid #122b56; border-left: 1px solid #122b56; } /** * Styling parents */ /* 1 level - sfhover */ #menu li.sfhover a { border-left: 1px solid #1b3f7c; border-right: 1px solid #000000; } /* 2 level - hover */ #menu li.sfhover li.sfhover a,#menu li li a:focus { border-left: 1px solid #1b3f7c; border-right: 1px solid #000000; } /* 3 level - hover */ #menu li.sfhover li.sfhover li.sfhover a,#menu li li li a:focus { border-left: 1px solid #1b3f7c; border-right: 1px solid #000000; } /* bring back the focus elements into view */ #menu li li a:focus { border-left: 1px solid #1b3f7c; border-right: 1px solid #000000; } #menu li li li a:focus { border-left: 1px solid #1b3f7c; border-right: 1px solid #000000; } /* Installer Database */ #installer-database p.warning { background-position: center right; } #installer-database p.nowarning { background-position: center right; } PKb��\��6\y�y�!templates/hathor/css/template.cssnu�[���.clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; content: ""; line-height: 0; } .clearfix:after { clear: both; } .hide-text { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .input-block-level { display: block; width: 100%; min-height: 25px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .fade { opacity: 0; -webkit-transition: opacity .15s linear; -moz-transition: opacity .15s linear; -o-transition: opacity .15s linear; transition: opacity .15s linear; } .fade.in { opacity: 1; } .collapse { position: relative; height: 0; overflow: hidden; -webkit-transition: height .35s ease; -moz-transition: height .35s ease; -o-transition: height .35s ease; transition: height .35s ease; } .collapse.in { height: auto; } .modal-open .dropdown-menu { z-index: 2050; } .modal-open .dropdown.open { *z-index: 2050; } .modal-open .popover { z-index: 2060; } .modal-open .tooltip { z-index: 2080; } .modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1040; background-color: #000000; } .modal-backdrop.fade { opacity: 0; } .modal-backdrop, .modal-backdrop.fade.in { opacity: 0.8; filter: alpha(opacity=80); } div.modal { position: fixed; top: 50%; left: 50%; z-index: 1050; overflow: auto; width: 80%; margin: -250px 0 0 -40%; background-color: #ffffff; border: 1px solid #999; border: 1px solid rgba(0,0,0,0.3); *border: 1px solid #999; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 3px 7px rgba(0,0,0,0.3); -moz-box-shadow: 0 3px 7px rgba(0,0,0,0.3); box-shadow: 0 3px 7px rgba(0,0,0,0.3); -webkit-background-clip: padding-box; -moz-background-clip: padding-box; background-clip: padding-box; } div.modal.fade { -webkit-transition: opacity .3s linear, top .3s ease-out; -moz-transition: opacity .3s linear, top .3s ease-out; -o-transition: opacity .3s linear, top .3s ease-out; transition: opacity .3s linear, top .3s ease-out; top: -25%; } div.modal.fade.in { top: 50%; } .modal-header { padding: 9px 15px; border-bottom: 1px solid #eee; } .modal-header .close { float: right; margin-top: 2px; } .modal-body { overflow-y: auto; max-height: 400px; padding: 15px; } .modal-form { margin-bottom: 0; } .modal-footer { padding: 14px 15px 15px; margin-bottom: 0; text-align: right; background-color: #f5f5f5; border-top: 1px solid #ddd; -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; -webkit-box-shadow: inset 0 1px 0 #ffffff; -moz-box-shadow: inset 0 1px 0 #ffffff; box-shadow: inset 0 1px 0 #ffffff; *zoom: 1; } .modal-footer:before, .modal-footer:after { display: table; content: ""; line-height: 0; } .modal-footer:after { clear: both; } .modal-footer .btn + .btn { margin-left: 5px; margin-bottom: 0; } .modal-footer .btn-group .btn + .btn { margin-left: -1px; } body.modal-open { overflow: hidden; -ms-overflow-style: none; } @font-face { font-family: 'IcoMoon'; src: url('../../../../media/jui/fonts/IcoMoon.eot'); src: url('../../../../media/jui/fonts/IcoMoon.eot?#iefix') format('embedded-opentype'), url('../../../../media/jui/fonts/IcoMoon.woff') format('woff'), url('../../../../media/jui/fonts/IcoMoon.ttf') format('truetype'), url('../../../../media/jui/fonts/IcoMoon.svg#IcoMoon') format('svg'); font-weight: normal; font-style: normal; } [data-icon]:before { font-family: 'IcoMoon'; content: attr(data-icon); speak: none; } [class^="icon-"], [class*=" icon-"] { display: inline-block; width: 14px; height: 14px; margin-right: .25em; line-height: 14px; } [class^="icon-"]:before, [class*=" icon-"]:before { font-family: 'IcoMoon'; font-style: normal; speak: none; } [class^="icon-"].disabled, [class*=" icon-"].disabled { font-weight: normal; } .icon-joomla:before { content: "\e200"; } .icon-chevron-up:before, .icon-uparrow:before, .icon-arrow-up:before { content: "\e005"; } .icon-chevron-right:before, .icon-rightarrow:before, .icon-arrow-right:before { content: "\e006"; } .icon-chevron-down:before, .icon-downarrow:before, .icon-arrow-down:before { content: "\e007"; } .icon-chevron-left:before, .icon-leftarrow:before, .icon-arrow-left:before { content: "\e008"; } .icon-arrow-first:before { content: "\e003"; } .icon-arrow-last:before { content: "\e004"; } .icon-arrow-up-2:before { content: "\e009"; } .icon-arrow-right-2:before { content: "\e00a"; } .icon-arrow-down-2:before { content: "\e00b"; } .icon-arrow-left-2:before { content: "\e00c"; } .icon-arrow-up-3:before { content: "\e00f"; } .icon-arrow-right-3:before { content: "\e010"; } .icon-arrow-down-3:before { content: "\e011"; } .icon-arrow-left-3:before { content: "\e012"; } .icon-menu-2:before { content: "\e00e"; } .icon-arrow-up-4:before { content: "\e201"; } .icon-arrow-right-4:before { content: "\e202"; } .icon-arrow-down-4:before { content: "\e203"; } .icon-arrow-left-4:before { content: "\e204"; } .icon-share:before, .icon-redo:before { content: "\27"; } .icon-undo:before { content: "\28"; } .icon-forward-2:before { content: "\e205"; } .icon-backward-2:before, .icon-reply:before { content: "\e206"; } .icon-unblock:before, .icon-refresh:before, .icon-redo-2:before { content: "\6c"; } .icon-undo-2:before { content: "\e207"; } .icon-move:before { content: "\7a"; } .icon-expand:before { content: "\66"; } .icon-contract:before { content: "\67"; } .icon-expand-2:before { content: "\68"; } .icon-contract-2:before { content: "\69"; } .icon-play:before { content: "\e208"; } .icon-pause:before { content: "\e209"; } .icon-stop:before { content: "\e210"; } .icon-previous:before, .icon-backward:before { content: "\7c"; } .icon-next:before, .icon-forward:before { content: "\7b"; } .icon-first:before { content: "\7d"; } .icon-last:before { content: "\e000"; } .icon-play-circle:before { content: "\e00d"; } .icon-pause-circle:before { content: "\e211"; } .icon-stop-circle:before { content: "\e212"; } .icon-backward-circle:before { content: "\e213"; } .icon-forward-circle:before { content: "\e214"; } .icon-loop:before { content: "\e001"; } .icon-shuffle:before { content: "\e002"; } .icon-search:before { content: "\53"; } .icon-zoom-in:before { content: "\64"; } .icon-zoom-out:before { content: "\65"; } .icon-apply:before, .icon-edit:before, .icon-pencil:before { content: "\2b"; } .icon-pencil-2:before { content: "\2c"; } .icon-brush:before { content: "\3b"; } .icon-save-new:before, .icon-plus-2:before { content: "\5d"; } .icon-minus-sign:before, .icon-minus-2:before { content: "\5e"; } .icon-delete:before, .icon-remove:before, .icon-cancel-2:before { content: "\49"; } .icon-publish:before, .icon-save:before, .icon-ok:before, .icon-checkmark:before { content: "\47"; } .icon-new:before, .icon-plus:before { content: "\2a"; } .icon-plus-circle:before { content: "\e215"; } .icon-minus:before, .icon-not-ok:before { content: "\4b"; } .icon-ban-circle:before, .icon-minus-circle:before { content: "\e216"; } .icon-unpublish:before, .icon-cancel:before { content: "\4a"; } .icon-cancel-circle:before { content: "\e217"; } .icon-checkmark-2:before { content: "\e218"; } .icon-checkmark-circle:before { content: "\e219"; } .icon-info:before { content: "\e220"; } .icon-info-2:before, .icon-info-circle:before { content: "\e221"; } .icon-question:before, .icon-question-sign:before, .icon-help:before { content: "\45"; } .icon-question-2:before, .icon-question-circle:before { content: "\e222"; } .icon-notification:before { content: "\e223"; } .icon-notification-2:before, .icon-notification-circle:before { content: "\e224"; } .icon-pending:before, .icon-warning:before { content: "\48"; } .icon-warning-2:before, .icon-warning-circle:before { content: "\e225"; } .icon-checkbox-unchecked:before { content: "\3d"; } .icon-checkin:before, .icon-checkbox:before, .icon-checkbox-checked:before { content: "\3e"; } .icon-checkbox-partial:before { content: "\3f"; } .icon-square:before { content: "\e226"; } .icon-radio-unchecked:before { content: "\e227"; } .icon-radio-checked:before, .icon-generic:before { content: "\e228"; } .icon-circle:before { content: "\e229"; } .icon-signup:before { content: "\e230"; } .icon-grid:before, .icon-grid-view:before { content: "\58"; } .icon-grid-2:before, .icon-grid-view-2:before { content: "\59"; } .icon-menu:before { content: "\5a"; } .icon-list:before, .icon-list-view:before { content: "\31"; } .icon-list-2:before { content: "\e231"; } .icon-menu-3:before { content: "\e232"; } .icon-folder-open:before, .icon-folder:before { content: "\2d"; } .icon-folder-close:before, .icon-folder-2:before { content: "\2e"; } .icon-folder-plus:before { content: "\e234"; } .icon-folder-minus:before { content: "\e235"; } .icon-folder-3:before { content: "\e236"; } .icon-folder-plus-2:before { content: "\e237"; } .icon-folder-remove:before { content: "\e238"; } .icon-file:before { content: "\e016"; } .icon-file-2:before { content: "\e239"; } .icon-file-add:before, .icon-file-plus:before { content: "\29"; } .icon-file-minus:before { content: "\e017"; } .icon-file-check:before { content: "\e240"; } .icon-file-remove:before { content: "\e241"; } .icon-save-copy:before, .icon-copy:before { content: "\e018"; } .icon-stack:before { content: "\e242"; } .icon-tree:before { content: "\e243"; } .icon-tree-2:before { content: "\e244"; } .icon-paragraph-left:before { content: "\e246"; } .icon-paragraph-center:before { content: "\e247"; } .icon-paragraph-right:before { content: "\e248"; } .icon-paragraph-justify:before { content: "\e249"; } .icon-screen:before { content: "\e01c"; } .icon-tablet:before { content: "\e01d"; } .icon-mobile:before { content: "\e01e"; } .icon-box-add:before { content: "\51"; } .icon-box-remove:before { content: "\52"; } .icon-download:before { content: "\e021"; } .icon-upload:before { content: "\e022"; } .icon-home:before { content: "\21"; } .icon-home-2:before { content: "\e250"; } .icon-out-2:before, .icon-new-tab:before { content: "\e024"; } .icon-out-3:before, .icon-new-tab-2:before { content: "\e251"; } .icon-link:before { content: "\e252"; } .icon-picture:before, .icon-image:before { content: "\2f"; } .icon-pictures:before, .icon-images:before { content: "\30"; } .icon-palette:before, .icon-color-palette:before { content: "\e014"; } .icon-camera:before { content: "\55"; } .icon-camera-2:before, .icon-video:before { content: "\e015"; } .icon-play-2:before, .icon-video-2:before, .icon-youtube:before { content: "\56"; } .icon-music:before { content: "\57"; } .icon-user:before { content: "\22"; } .icon-users:before { content: "\e01f"; } .icon-vcard:before { content: "\6d"; } .icon-address:before { content: "\70"; } .icon-share-alt:before, .icon-out:before { content: "\26"; } .icon-enter:before { content: "\e257"; } .icon-exit:before { content: "\e258"; } .icon-comment:before, .icon-comments:before { content: "\24"; } .icon-comments-2:before { content: "\25"; } .icon-quote:before, .icon-quotes-left:before { content: "\60"; } .icon-quote-2:before, .icon-quotes-right:before { content: "\61"; } .icon-quote-3:before, .icon-bubble-quote:before { content: "\e259"; } .icon-phone:before { content: "\e260"; } .icon-phone-2:before { content: "\e261"; } .icon-envelope:before, .icon-mail:before { content: "\4d"; } .icon-envelope-opened:before, .icon-mail-2:before { content: "\4e"; } .icon-unarchive:before, .icon-drawer:before { content: "\4f"; } .icon-archive:before, .icon-drawer-2:before { content: "\50"; } .icon-briefcase:before { content: "\e020"; } .icon-tag:before { content: "\e262"; } .icon-tag-2:before { content: "\e263"; } .icon-tags:before { content: "\e264"; } .icon-tags-2:before { content: "\e265"; } .icon-options:before, .icon-cog:before { content: "\38"; } .icon-cogs:before { content: "\37"; } .icon-screwdriver:before, .icon-tools:before { content: "\36"; } .icon-wrench:before { content: "\3a"; } .icon-equalizer:before { content: "\39"; } .icon-dashboard:before { content: "\78"; } .icon-switch:before { content: "\e266"; } .icon-filter:before { content: "\54"; } .icon-purge:before, .icon-trash:before { content: "\4c"; } .icon-checkedout:before, .icon-lock:before, .icon-locked:before { content: "\23"; } .icon-unlock:before { content: "\e267"; } .icon-key:before { content: "\5f"; } .icon-support:before { content: "\46"; } .icon-database:before { content: "\62"; } .icon-scissors:before { content: "\e268"; } .icon-health:before { content: "\6a"; } .icon-wand:before { content: "\6b"; } .icon-eye-open:before, .icon-eye:before { content: "\3c"; } .icon-eye-close:before, .icon-eye-blocked:before, .icon-eye-2:before { content: "\e269"; } .icon-clock:before { content: "\6e"; } .icon-compass:before { content: "\6f"; } .icon-broadcast:before, .icon-connection:before, .icon-wifi:before { content: "\e01b"; } .icon-book:before { content: "\e271"; } .icon-lightning:before, .icon-flash:before { content: "\79"; } .icon-print:before, .icon-printer:before { content: "\e013"; } .icon-feed:before { content: "\71"; } .icon-calendar:before { content: "\43"; } .icon-calendar-2:before { content: "\44"; } .icon-calendar-3:before { content: "\e273"; } .icon-pie:before { content: "\77"; } .icon-bars:before { content: "\76"; } .icon-chart:before { content: "\75"; } .icon-power-cord:before { content: "\32"; } .icon-cube:before { content: "\33"; } .icon-puzzle:before { content: "\34"; } .icon-attachment:before, .icon-paperclip:before, .icon-flag-2:before { content: "\72"; } .icon-lamp:before { content: "\74"; } .icon-pin:before, .icon-pushpin:before { content: "\73"; } .icon-location:before { content: "\63"; } .icon-shield:before { content: "\e274"; } .icon-flag:before { content: "\35"; } .icon-flag-3:before { content: "\e275"; } .icon-bookmark:before { content: "\e023"; } .icon-bookmark-2:before { content: "\e276"; } .icon-heart:before { content: "\e277"; } .icon-heart-2:before { content: "\e278"; } .icon-thumbs-up:before { content: "\5b"; } .icon-thumbs-down:before { content: "\5c"; } .icon-unfeatured:before, .icon-asterisk:before, .icon-star-empty:before { content: "\40"; } .icon-star-2:before { content: "\41"; } .icon-featured:before, .icon-default:before, .icon-star:before { content: "\42"; } .icon-smiley:before, .icon-smiley-happy:before { content: "\e279"; } .icon-smiley-2:before, .icon-smiley-happy-2:before { content: "\e280"; } .icon-smiley-sad:before { content: "\e281"; } .icon-smiley-sad-2:before { content: "\e282"; } .icon-smiley-neutral:before { content: "\e283"; } .icon-smiley-neutral-2:before { content: "\e284"; } .icon-cart:before { content: "\e019"; } .icon-basket:before { content: "\e01a"; } .icon-credit:before { content: "\e286"; } .icon-credit-2:before { content: "\e287"; } .icon-expired:before { content: "\4b"; } html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; font-size: 100%; background: transparent; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } del { text-decoration: line-through; } html { overflow-y: scroll; height: 100%; } body { margin: 0; padding: 0; font-size: 62.5%; line-height: 1.5em; height: 100%; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body, td, th, span, a { font-family: Arial, Helvetica, sans-serif; } html, body { height: 100%; } a, img { padding: 0; margin: 0; } img { border: 0 none; } form { margin: 0; padding: 0; } ul { padding: 0; margin: 0; } h1 { margin: 0; padding-bottom: 8px; font-size: 1.4em; font-weight: bold; line-height: 2em; } h2 { padding-top: .83em; padding-bottom: .83em; } h3 { font-size: 1.4em; } a:link { color: #054993; text-decoration: none; } a:visited { color: #054993; text-decoration: none; } a:hover { text-decoration: underline; } a:focus { text-decoration: underline; } iframe { border: 0; } .enabled { color: #005800; font-weight: bold; } .disabled { color: #a20000; font-weight: bold; } p.error { color: #a20000; font-weight: bold; } .warning { color: #a20000; font-weight: bold; } .nowarning { color: #2c2c2c; font-weight: bold; } .success { color: #005800; font-weight: bold; } .allow { color: #005800; } span.writable { color: #005800; } .deny { color: #a20000; } span.unwritable { color: #a20000; } .none { color: #aaaaaa; } .pointer { cursor: pointer; } .nowrap { white-space: nowrap; } p.nowarning, p.warning { margin: 10px; } #minwidth, #minwidth-body { min-width: 980px; } #containerwrap { position: relative; } #header { position: relative; } #header h1.title { font-size: 1.5em; font-weight: normal; line-height: 25px; margin: 0; padding: 0 0 0 120px; } #footer { padding: 10px 20px; } #footer .copyright { margin: 0 0 0 0; text-align: center; } #footer p { font-size: 1.2em; } #nav .no-nav { line-height: 2em; } #content { margin: 5px 20px 20px 20px; } .cpanel-page div#element-box { padding: 15px; } #module-status { float: right; position: relative; top: -48px; } #module-status div.btn-group { display: block; float: left; padding: 4px 10px 0 10px; font-size: 1.2em; } #module-status div.divider { display: none; } #module-status .unread-messages a { font-weight: bold; } .title-ua { position: relative; width: 60%; } .enabled, .disabled, p.error, .warning, .nowarning, .success { font-weight: bold; } .pointer { cursor: pointer; } .nowrap { white-space: nowrap; } span.note { display: block; padding: 5px; } div.checkin-tick { text-indent: -9999px; } .ol-textfont { font-family: Arial, Helvetica, sans-serif; font-size: 1.2em; } .ol-captionfont { font-family: Arial, Helvetica, sans-serif; font-size: 1.2em; font-weight: bold; } .ol-captionfont a { text-decoration: none; } div.subheader .padding { padding: 0; } div.pagetitle { padding: 0 0 5px 5px; margin: 0; background-repeat: no-repeat; background-position: left 50%; line-height: 54px; width: 100%; margin-top: -20px; height: 60px; } .tabs-left > .nav-tabs { float: left; margin-right: 19px; border-right: 1px solid #DDD; } tabs-below > .nav-tabs, .tabs-right > .nav-tabs, .tabs-left > .nav-tabs { border-bottom: 0; } .tab-content { overflow: visible; } .tabs-left .tab-content { overflow: auto; } .nav-tabs > li > span { display: block; margin-right: 2px; padding-right: 12px; padding-left: 12px; padding-top: 8px; padding-bottom: 8px; line-height: 18px; border: 1px solid transparent; -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .btn-micro { padding: 1px 4px; font-size: 10px; line-height: 8px; } .tip-wrap { max-width: 200px; padding: 3px 8px; color: #ffffff; text-align: center; text-decoration: none; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; z-index: 100; } .pagetitle h2 { padding: 0 0 0 50px; font-size: 1.3em; font-weight: bold; line-height: 48px; font-style: italic; } div.configuration { font-size: 1.2em; font-weight: bold; line-height: 2em; padding-left: 30px; margin-left: 10px; } div.toolbar-box h3 { height: 0; overflow: hidden; position: absolute; padding: 0; margin: 0; } .btn-toolbar { margin-bottom: 3px; margin-top: 14px; } div.btn-toolbar, div.toolbar-list { float: left; text-align: left; padding: 0; } div.toolbar-list li { padding: 5px 1px 5px 4px; text-align: center; height: 52px; list-style: none; float: left; } div.toolbar-list li.spacer { width: 10px; } div.toolbar-list li.divider { width: 10px; margin-right: 10px; } div.toolbar-list span { float: none; width: 32px; height: 32px; margin: 0 auto; display: block; } div.toolbar-list a { display: block; float: left; white-space: nowrap; padding: 1px 5px; cursor: pointer; font-weight: bold; } div.btn-toolbar div.btn-group button { display: block; float: left; white-space: nowrap; padding: 1px 5px; cursor: pointer; text-align: center; } div.btn-toolbar button:hover, div.btn-toolbar button:focus, div.toolbar-list a:hover, div.toolbar-list a:focus { text-decoration: none; } td#mm_pane { width: 90%; } input#mm_subject { width: 200px; } textarea#mm_message { width: 100%; } textarea { resize: both; } textarea.vert { resize: vertical; } textarea.noResize { resize: none; } .pane-sliders { margin: 0; position: relative; } .pane-sliders .title { margin: 0; padding: 2px; cursor: pointer; } .pane-sliders .panel { margin-bottom: 3px; } .pane-sliders .adminlist td { border: 0 none; } h3.pane-toggler-down a:focus, h3.pane-toggler a:focus { outline: none; } .pane-toggler span { padding-left: 20px; } .pane-toggler-down span { padding-left: 20px; } .pane-slider.pane-hide { display: none; } div#position-icon.pane-sliders div.pane-down div.quickicon-wrapper { margin: 5px 0 5px 0; } div#position-icon.pane-sliders div.pane-down .quickicon-wrapper .icon { padding: 5px 0 5px 10px; margin: 0; } dl.tabs { float: left; margin: 10px 0 -1px 0; z-index: 50; } dl.tabs dt { float: left; padding: 4px 10px; margin-left: 3px; } dl.tabs dt.open { z-index: 100; } div.current { clear: both; padding: 10px 10px; } div.current dd { padding: 0; margin: 0; } dl#content-pane.tabs { margin: 1px 0 0 0; } div.current label, div.current span.faux-label { display: block; min-width: 150px; float: left; clear: left; margin-top: 8px; } div.current fieldset.radio { float: left; } div.current fieldset.radio input { clear: none; min-width: 15px; float: left; margin: 3px 0 0 2px; } div.current fieldset.radio label { clear: none; min-width: 45px; float: left; margin: 3px 0 0 2px; } div.current fieldset.checkboxes { float: left; clear: right; } div.current fieldset.checkboxes input { clear: left; min-width: 15px; float: left; margin: 3px 0 0 2px; } div.current fieldset.checkboxes label { clear: right; min-width: 45px; margin: 3px 0 0 2px; } div.current input, div.current span.faux-input, div.current textarea, div.current select { clear: none; float: left; margin: 3px 0 0 2px; } div.current select { margin-bottom: 15px; } div.current table#acl-config th.acl-groups { text-align: left; } div.current table#filter-config th.acl-groups { text-align: left; } div.current table#filter-config select { margin-bottom: 0; } div#menu-assignment { clear: left; } div#menu-assignment ul.menu-links { float: left; width: 49%; } div#menu-assignment ul.menu-links label { clear: none; float: left; margin: 3px 0 0 2px; } div#menu-assignment ul.menu-links input { clear: left; float: left; } button.jform-rightbtn { float: right; margin-right: 0; } p.tab-description { font-size: 1.091em; margin-left: 0; margin-top: 5px; } #login-page input, #login-page select { float: right; clear: none; } #login-page .login { margin: 0 auto; width: 575px; margin-bottom: 100px; } #login-page .pagetitle h2 { margin: -70px 0 30px 0; font-size: 2em; padding: 0; } #login-page p { margin: 0; padding: 0; margin-bottom: 1em; font-size: 1.2em; } #login-page #header { margin-bottom: 100px; } #login-page .login-inst { float: left; width: 35%; } #login-page .login-box { float: right; width: 63%; } #login-page #lock { width: 150px; height: 137px; } #login-page #element-box.login { padding: 20px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } #login-page .button { text-align: right; } #login-page .login-text { text-align: left; width: 40%; float: left; } #form-login { float: right; padding: 1.1em; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } #form-login fieldset { border: none; } #form-login label { display: block; float: left; clear: left; width: 100px; text-align: right; padding: 4px; color: #2c2c2c; font-weight: bold; font-size: 1.4em; margin-bottom: 15px; } #form-login div.button1 div.next { float: left; } #form-login div.button1 a { height: 2.2em; line-height: 2.2em; font-size: 1.5em; cursor: default; padding: 0 15px 0 15px; } .login-submit { border: 0; padding: 0; margin: 0; width: 0; height: 0; } #cpanel div.icon, .cpanel div.icon { text-align: center; margin-right: 5px; float: left; margin-bottom: 5px; } #cpanel div.icon a, .cpanel div.icon a { display: block; float: left; height: auto; min-height: 97px; width: 108px; color: #2c2c2c; vertical-align: middle; text-decoration: none; font-weight: bold; } #cpanel img, .cpanel img { padding: 10px; margin: 0 auto; } #cpanel span, .cpanel span { display: block; text-align: center; padding: 0 0 5px; } div.cpanel-icons { width: 54%; float: left; } div.cpanel-component { width: 45%; float: right; } div.col { float: left; } div.options-section.col { float: right; } div.col1 { float: left; width: 45%; } div.col2 { float: right; width: 45%; } div.width-1 { width: 1%; } div.width-3 { width: 3%; } div.width-5 { width: 5%; } div.width-10 { width: 10%; } div.width-20 { width: 20%; } div.width-30 { width: 30%; } div.width-35 { width: 35%; } div.width-40 { width: 40%; } div.width-45 { width: 45%; } div.width-50 { width: 50%; } div.width-55 { width: 55%; } div.width-60 { width: 60%; } div.width-65 { width: 65%; } div.width-70 { width: 70%; } div.width-80 { width: 80%; } div.width-100 { width: 100%; } .clrlft { clear: left; } .clrrt { clear: right; } .fltlft { float: left; } .fltrt { float: right; } .fltnone { float: none; } div.main-section { width: 60%; } div.options-section { width: 38%; margin: 10px 10px 10px 0; } div.width-40.fltrt { width: 38%; margin: 10px 10px 10px 0; } div.rules-section { width: 98%; margin: 10px; } fieldset { margin: 2px 10px 2px 10px; padding: 5px; text-align: left; } legend { font-size: 1.3em; font-weight: bold; padding-bottom: 5px; } fieldset p { margin: 10px 0; font-size: 1.2em; } fieldset ol, ol#property-values, fieldset ul, ul#property-values { margin: 0; padding: 0; } fieldset li, ol#property-values li, ul#property-values li { list-style: none; margin: 0; padding: 5px; } fieldset.adminform fieldset.radio, fieldset.panelform fieldset.radio, fieldset.adminform-legacy fieldset.radio { border: 0; float: left; padding: 0; margin: 0 0 5px 0; clear: right; } fieldset.adminform fieldset.radio label, fieldset.panelform fieldset.radio label, fieldset.adminform fieldset.radio span.faux-label, fieldset.panelform fieldset.radio span.faux-label { min-width: 40px; float: left; clear: none; } fieldset.adminform fieldset.checkboxes, fieldset.panelform fieldset.checkboxes, fieldset.adminform-legacy fieldset.checkboxes { border: 0; float: left; padding: 0; margin: 0 0 5px 0; clear: right; } fieldset.adminform fieldset.checkboxes input[type="checkbox"], fieldset.panelform fieldset.checkboxes input[type="checkbox"] { float: left; clear: left; } fieldset.adminform fieldset.checkboxes label, fieldset.panelform fieldset.checkboxes label, fieldset.adminform fieldset.checkboxes span.faux-label, fieldset.panelform fieldset.checkboxes span.faux-label { clear: right; } div.current span.spacer > span.before, fieldset.adminform span.spacer > span.before, fieldset.panelform span.spacer > span.before { clear: both; overflow: hidden; height: 0; display: block; } fieldset.panelform-legacy label, fieldset.adminform-legacy label, fieldset.panelform-legacy span.faux-label, fieldset.adminform-legacy span.faux-label { min-width: 150px; float: left; } fieldset.panelform-legacy label.radiobtn-jno, fieldset.panelform-legacy label.radiobtn-jyes, fieldset.panelform-legacy label.radiobtn-show, fieldset.panelform-legacy label.radiobtn-hide, fieldset.panelform-legacy label.radiobtn-off, fieldset.panelform-legacy label.radiobtn-on { min-width: 40px !important; clear: none !important; } #jform_plugdesc-lbl, #jform_description-lbl { font-weight: bold; clear: both; margin-top: 15px; } p.jform_desc { clear: left; } div#jform_ordering { font-size: 1.091em; margin-top: 3px; } fieldset ul.checklist { margin-left: 27px; } fieldset ul.checklist input, fieldset ul.checklist label { float: none; } fieldset ul.checklist input:focus { outline: thin dotted #333333; } fieldset#filter-bar { margin: 0; padding: 5px 10px 5px 10px; float: left; width: 98%; } fieldset#filter-bar ol, fieldset#filter-bar ul { list-style: none; margin: 0; padding: 5px 0 0; } fieldset#filter-bar ol li, fieldset#filter-bar ul li { float: left; padding: 0 5px 0 0; } fieldset#filter-bar ol li fieldset, fieldset#filter-bar ul li fieldset { margin: 0; padding: 0; } fieldset#filter-bar .filter-search { float: left; padding-bottom: 3px; } fieldset#filter-bar .filter-select { float: right; } fieldset#filter-bar input#search { width: 10em; } .invalid { font-weight: bold; } input.readonly, span.faux-input { border: 0; } .star { color: #cc0000; font-size: 1.2em; } input, select, span.faux-input { font-size: 1.2em; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } span.readonly { float: left; font-size: 1.2em; line-height: 2em; } div.readonly { font-size: 1.2em; line-height: 2em; } div.extdescript { margin-left: 10px; } input[type="button"], input[type="submit"], input[type="reset"] { font-family: Arial, Helvetica, sans-serif; padding: 1px 6px; font-size: 1.2em; line-height: 1.5em; } textarea { font-size: 1.4em; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } input.button { cursor: pointer; } label { font-weight: bold; font-size: 1.1em; } span.faux-label { font-weight: bold; font-size: 1.1em; } label.selectlabel { position: absolute; left: -1000em; } .paramrules { padding: 10px; } span.gi { font-weight: bold; margin-right: 5px; } span.gtr { visibility: hidden; margin-right: 5px; } table.admintable td { padding: 3px; font-size: 1em; } table.admintable td.key, table.admintable td.paramlist_key { text-align: right; width: 140px; font-weight: bold; font-size: 1em; } table.admintable td.key label, table.admintable td.paramlist_key label { font-size: 1em; } table.admintable td.paramlist_value label { font-size: 1em; } table.admintable input, table.admintable span.faux-input, table.admintable select { font-size: 1em; } table.paramlist td.paramlist_description { text-align: left; width: 170px; font-weight: normal; } table.admintable td.key.vtop { vertical-align: top; } fieldset.adminform { margin: 0 10px 10px 10px; overflow: hidden; } .adminformlist .btn.modal { float: left; margin-top: 7px; } ul.adminformlist, ul.adminformlist li, dl.adminformlist, dl.adminformlist li { margin: 0; padding: 0; list-style: none; } ul.adminformlist pre { font-size: 1.3em; } ul.adminformlist .button2-left, ul.adminformlist .button2-left { margin-top: 5px; } table.adminform { width: 100%; border-collapse: collapse; margin: 8px 0 10px 0; margin-bottom: 15px; } table.adminform.nospace { margin-bottom: 0; } table.adminform th { font-size: 1.4em; padding: 6px 2px 4px 4px; text-align: left; height: 25px; } table.adminform td { padding: 3px; text-align: left; } table.adminform td#filter-bar { text-align: left; } table.adminform td.helpMenu { text-align: right; } table.adminform tr { padding-left: 10px; padding-right: 10px; } td.center, th.center { text-align: center; } th.width-1 { width: 1%; } th.width-3 { width: 3%; } th.width-5 { width: 5%; } th.width-10 { width: 10%; } th.width-12 { width: 12%; } th.width-15 { width: 15%; } th.width-20 { width: 20%; } th.width-25 { width: 25%; } th.width-30 { width: 30%; } th.width-40 { width: 40%; } th.row-number-col { width: 3%; } th.checkmark-col { width: 1%; } th.state-col { width: 5%; } th.ordering-col { width: 10%; } th.ordering-col a { display: block; float: left; margin-left: 3px; } th.ordering-col a img { margin-left: 4px; margin-right: 4px; } .categories th.ordering-col input, .categories td.order input { font-size: 1em; } th.category-col { width: 5%; } th.access-col { width: 10%; } .categories th.access-col { width: 5%; } th.hits-col { width: 5%; } th.id-col { width: 3%; } th.featured-col { width: 5%; } th.created-by-col { width: 15%; } th.date-col { width: 5%; } th.language-col { width: 5%; } th.home-col { width: 5%; } table.adminlist { width: 100%; float: left; } table.adminlist td, table.adminlist th { padding: 4px; font-size: 1.2em; } table.adminlist thead th { text-align: center; } table.adminlist thead a:hover { text-decoration: none; } table.adminlist thead th img { vertical-align: middle; } table.adminlist tbody th { font-weight: bold; } table.adminlist tr { padding-left: 30px; padding-right: 30px; } table.adminlist tbody tr { text-align: left; } table.adminlist tbody tr td, table.adminlist tbody tr th { height: 25px; } table.adminlist tfoot tr { text-align: center; } table.adminlist tfoot td, table.adminlist tfoot th { text-align: center; } table.adminlist td.order { text-align: center; white-space: nowrap; } table.adminlist td.order span { float: left; width: 20px; text-align: center; } table.adminlist td.order input { text-align: center; width: 3em; font-size: 100%; } #media-tree_tree ul { list-style: none outside none; margin: 0 10px; } table.adminlist td.indent-4 { padding-left: 4px; } table.adminlist td.indent-19 { padding-left: 19px; } table.adminlist td.indent-34 { padding-left: 34px; } table.adminlist td.indent-49 { padding-left: 49px; } table.adminlist td.indent-64 { padding-left: 64px; } table.adminlist td.indent-79 { padding-left: 79px; } table.adminlist td.indent-94 { padding-left: 94px; } table.adminlist td.indent-109 { padding-left: 109px; } table.adminlist td.indent-124 { padding-left: 124px; } table.adminlist td.indent-139 { padding-left: 139px; } table.adminlist tr td.btns a { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; padding: 3px 20px; } table.adminlist tr td.btns a:hover, table.adminlist tr td.btns a:active, table.adminlist tr td.btns a:focus { text-decoration: none; } table.adminlist td li { list-style: inside; } ul#new-modules-list { margin-left: 50px; font-size: 1.4em; line-height: 1.5em; } .clr { clear: both; overflow: hidden; height: 0; } .clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .menu-module-list { list-style-position: inside; padding-left: 10px; margin-left: 5px; } .container { clear: both; text-decoration: none; } * html .container { display: inline-block; } table.noshow { width: 100%; border-collapse: collapse; padding: 0; margin: 0; } table.noshow tr { vertical-align: top; } table.noshow fieldset { margin: 15px 7px 7px 7px; } a.saveorder { width: 16px; height: 16px; display: block; overflow: hidden; float: right; margin-right: 8px; } #editor-xtd-buttons { padding: 5px; } button { font-family: Arial, Helvetica, sans-serif; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; margin-right: 3px; margin-left: 3px; } .invalid { font-weight: bold; } .button1, .button1 div { height: 1%; float: right; } .button1 { white-space: nowrap; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } .button1 a { display: block; height: 2.2em; float: left; line-height: 2.2em; font-size: 1.2em; font-weight: bold; cursor: default; padding: 0 6px 0 6px; } .button1 a:hover, .button1 a:focus { text-decoration: none; } .button2-left, .button2-right { float: left; line-height: 1.5em; font-size: 1.2em; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } .button2-left.smallsub, .button2-right.smallsub { line-height: 1.2em; font-size: .9em; } .button2-left a, .button2-right a, .button2-left span, .button2-right span { display: block; float: left; cursor: default; } .button2-left span, .button2-right span { cursor: default; } .button2-left .page a, .button2-right .page a, .button2-left .page span, .button2-right .page span, .button2-left .blank a, .button2-right .blank a, .button2-left .blank span, .button2-right .blank span { padding: 0 6px; } .page span, .blank span { font-weight: bold; } .button2-left a:hover, .button2-right a:hover, .button2-left a:focus, .button2-right a:focus { text-decoration: none; } .button2-left a, .button2-left span { padding: 0 24px 0 6px; } .button2-right a, .button2-right span { padding: 0 6px 0 24px; } .button2-left { float: left; margin-left: 5px; } .button2-right { float: left; margin-left: 5px; } div.containerpg { position: relative; left: 50%; float: left; clear: left; } div.pagination { position: relative; left: -50%; margin: 0 auto; padding: .5em; } .pagination div.limit { float: left; margin: 0 10px; font-size: 1.2em; height: 1.8em; line-height: 1.8em; } .pagination div.limit label { font-size: 100%; height: 1.8em; line-height: 1.8em; } .pagination div.limit select { font-size: 100%; } .pagination button { font-size: 100%; height: 2.0em; line-height: 1.8em; margin-right: 20px; } div.pagination .button2-right, div.pagination .button2-left { font-size: 1.2em; height: 1.6em; line-height: 1.6em; } table.adminlist .pagination { display: table; padding: 0; margin: 0 auto; font-size: .8em; } table.adminlist .pagination button { font-size: 1.2em; height: 1.6em; line-height: 1.5em; margin-right: 20px; } div.toggle-editor { margin-top: 9px; } .tip { float: left; padding: 5px; max-width: 400px; z-index: 50; } .tip-title { padding: 0; margin: 0; font-size: 120%; margin-top: -15px; padding-top: 15px; padding-bottom: 5px; } .tip-text { font-size: 100%; text-align: left; margin: 0; } a img.calendar { width: 16px; height: 16px; margin-left: 3px; cursor: pointer; vertical-align: middle; } a.jgrid:hover { text-decoration: none; } .jgrid span.state { display: inline-block; height: 16px; width: 16px; } .jgrid span.text { display: none; } div.message { text-align: center; font-family: Arial, Helvetica, sans-serif; font-size: 1.2em; padding: 3px; margin-bottom: 10px; font-weight: bold; } .helpIndex { border: 0; width: 100%; height: 100%; padding: 0; overflow: auto; } .helpFrame { width: 100%; height: 800px; padding: 0 5px 0 10px; } #treecellhelp { width: 25%; display: block; position: relative; float: left; margin: 0; padding: 2px; overflow: hidden; } #datacellhelp { width: 73%; display: block; float: left; margin: 0; padding: 2px 0 0 0; } .outline { padding: 2px; } h2.modal-title { margin-left: 15px; margin-bottom: 0; margin-top: 5px; font-size: 1.8em; padding-bottom: .5em; } ul.menu_types { padding: 0 0 0 15px; width: 95%; margin: 0; } ul.menu_types li, dl.menu_type dd ul li { width: 240px; list-style: none; display: block; float: left; margin-right: 10px; } ul.menu_types li { width: 47%; } dl.menu_type { width: 240px; margin: 0; padding: 0; } dl.menu_type dt { font-weight: bold; font-size: 1.5em; float: left; margin: 13px 0 5px 0; width: 240px; } dl.menu_type dd { clear: left; margin: 0; } dl.menu_type dd a { font-size: 1.2em; } dl.menu_type dd ul li { margin: 0; } ul#new-modules-list { padding: 5px 0 0 15px; width: 95%; margin: 0; list-style: none; } ul#new-modules-list li { list-style: none; display: block; float: left; margin: 0 20px 0 0; width: 47%; } ul#new-modules-list li a { font-size: 1em; line-height: 1.5em; } body.contentpane #filter-bar { font-size: 80%; } body.contentpane input, body.contentpane select { font-size: 120%; } #filter-bar input, #filter-bar select, #filter-bar button { font-size: 110%; } #skiplinkholder a, #skiplinkholder a:link, #skiplinkholder a:visited { display: block; width: 99%; position: absolute; top: 0; left: -200%; z-index: 2; } #skiplinkholder a:focus, #skiplinkholder a:active { left: 0; top: 0; z-index: 100; } #skiplinkholder p { margin: 0; } #skiptargetholder { position: absolute; left: -200%; } #skiplinkholder a, #skiplinkholder a:link, #skiplinkholder a:visited { text-decoration: underline; padding: 5px; font-size: 1.3em; font-weight: bold; padding-left: 20px; padding-right: 20px; } .body-overlayed a, .body-overlayed input, .body-overlayed button { visibility: hidden; } .body-overlayed #sbox-window a, .body-overlayed #sbox-window input, .body-overlayed #sbox-window button { visibility: visible; } .element-hidden, .hide { display: none; } .hidebtn { border: 0 !important; padding: 0 !important; margin: 0; width: 0; height: 0; } .element-invisible, .hidelabeltxt { height: 0; overflow: hidden; position: absolute; padding: 0; margin: 0; } legend.element-invisible { position: absolute !important; margin: 0; padding: 0; border: 0; margin-left: -10000px; font-size: 1px; height: 0; } fieldset.panelform { overflow: hidden; clear: both; } fieldset.adminform label, fieldset.panelform label, fieldset.adminform span.faux-label, fieldset.panelform span.faux-label { line-height: 2em; clear: left; min-width: 12em; float: left; margin-left: 10px; margin-right: 5px; } fieldset.adminform.long label, fieldset.panelform.long label, fieldset.adminform.long span.faux-label, fieldset.panelform.long span.faux-label { min-width: 18em; } fieldset.adminform fieldset.radio label, fieldset.panelform fieldset.radio label, fieldset.adminform fieldset.radio span.faux-label, fieldset.panelform fieldset.radio span.faux-label { margin-left: 0; } fieldset.adminform input, fieldset.adminform span.faux-input, fieldset.adminform textarea, fieldset.adminform select, fieldset.adminform img, fieldset.adminform button, fieldset.panelform input, fieldset.panelform span.faux-input, fieldset.panelform textarea, fieldset.panelform select, fieldset.panelform img, fieldset.panelform button { float: left; margin: 5px 5px 5px 0; width: auto; } fieldset.batch { margin: 20px 10px 10px 10px; padding: 10px; } fieldset.batch label { margin: 5px; min-width: 40px; } fieldset.batch button { margin: 3px; } fieldset#batch-choose-action { clear: left; border: 0 none; } fieldset.batch label { float: left; clear: none; } fieldset label#batch-choose-action-lbl { clear: left; margin-top: 15px; } label#batch-language-lbl, label#batch-user-lbl { clear: left; margin-right: 10px; margin-top: 15px; } select#batch-language-id, select#batch-user-id { margin-top: 15px; } select#batch-category-id, select#batch-position-id, select#batch-menu-id { margin-right: 30px; } fieldset.batch select, fieldset.batch input, fieldset.batch img, fieldset.batch button { float: left; } label#batch-access-lbl, label#batch-client-lbl { margin-right: 10px; } div#jform_ordering { font-size: 1.091em; margin-top: 3px; } #jform_impmade, #jform_clicks { width: 30px; } fieldset.panelform label#jform-imp { min-width: 3em; font-size: 1.091em; } fieldset.adminform input#jform_clickurl { width: 20em; } a.move_up { display: inline-block; height: 16px; text-indent: -1000em; width: 16px; } span.move_up { display: inline-block; height: 16px; width: 16px; } a.move_down { display: inline-block; height: 16px; text-indent: -1000em; width: 16px; } span.move_down { display: inline-block; height: 16px; width: 16px; } a.grid_false { display: inline-block; height: 16px; text-indent: -1000em; width: 16px; } a.grid_true { display: inline-block; height: 16px; text-indent: -1000em; width: 16px; } a.grid_trash { display: inline-block; height: 16px; text-indent: -1000em; width: 16px; } div.acl-options { width: 100%; } table.aclsummary-table, table.aclmodify-table { border-collapse: collapse; width: 100%; font-size: 1.091em; } td.col1 { font-size: 1.091em; text-align: left; padding: 4px; } table.aclsummary-table caption, table.aclmodify-table caption { display: none; } table.aclsummary-table th.col1 { width: 25%; } table.aclsummary-table th.col2, table.aclsummary-table th.col3, table.aclsummary-table th.col4, table.aclsummary-table th.col5, table.aclsummary-table th.col6 { width: 15%; vertical-align: bottom; text-align: center; } span.icon-16-unset, span.icon-16-allowed, span.icon-16-denied, span.icon-16-locked { padding-left: 18px; } label.icon-16-allow, label.icon-16-deny, a.icon-16-allow, a.icon-16-deny, a.icon-16-allowinactive, a.icon-16-denyinactive { display: block; height: 16px; width: 16px; margin: 0 auto; } label.icon-16-allow { text-indent: -9999em; position: relative; left: 40%; } label.icon-16-deny { text-indent: -9999em; position: relative; left: 40%; } table.aclmodify-table th.col2, table.aclmodify-table th.col3, table.aclmodify-table th.col4 { width: 20%; vertical-align: bottom; text-align: center; } table.aclmodify-table select { margin: 1px; } table.aclsummary-table td label, table.aclmodify-table td label { min-width: 20px; } ul.acllegend { list-style: none; font-size: 1.091em; padding-bottom: 10px; } ul.acllegend li { display: block; float: left; padding-right: 20px; margin: 15px 0 15px 10px; } ul.acllegend li.acl-allowed { padding-left: 20px; padding-right: 10px; } ul.acllegend li.acl-denied { padding-left: 20px; padding-right: 20px; } ul.acllegend li.acl-editgroups { padding-right: 10px; } ul.acllegend li.acl-resetbtn { padding-right: 0; } li.acl-editgroups, li.acl-resetbtn { display: block; float: left; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } li.acl-editgroups a, li.acl-resetbtn a { padding: 6px; cursor: default; } li.acl-editgroups a:hover, li.acl-resetbtn a:hover, li.acl-editgroups a:focus, li.acl-resetbtn a:focus { text-decoration: none; cursor: default; } li.acl-editgroups:hover, li.acl-resetbtn:hover, li.acl-editgroups:focus, li.acl-resetbtn:focus { text-decoration: none; cursor: default; } table#acl-config { width: 100%; margin-top: 15px; } table#acl-config th, table#acl-config td { height: 2em; background: #f9fade; text-align: center; vertical-align: middle; } table#acl-config th.acl-groups { padding-left: 8px; font-weight: bold; text-align: left; } table#acl-config th.acl-groups span.gi { margin-right: 2px; } table#acl-config td { width: 9em; } table#acl-config td select { float: none; } .acl-action { font-size: 1.091em; margin: auto 0; } .acl-groups { font-size: 1.091em; font-weight: normal; } label#jform_rules-lbl { float: none; white-space: nowrap; display: none; visibility: hidden; } label#jform_filters-lbl { float: none; white-space: nowrap; display: none; visibility: hidden; } ul.config-option-list, ul.config-option-list li { margin: 0; padding: 0; list-style: none; } ul.config-option-list fieldset { margin: 0; padding-left: 0; padding-right: 0; } #permissions-sliders { margin-top: 15px; } #permissions-sliders ul#rules, #permissions-sliders ul#rules ul { margin: 0 !important; padding: 0 !important; list-style-type: none; } #permissions-sliders ul#rules li { margin: 0; padding: 0; } #permissions-sliders ul#rules table.group-rules { border-collapse: collapse; margin: 5px; width: 100%; } #permissions-sliders ul#rules table.group-rules td { padding: 4px; vertical-align: middle; text-align: left; overflow: hidden; } #permissions-sliders ul#rules table.group-rules th { font-size: 1.2em; overflow: hidden; font-weight: bold; } #permissions-sliders .panel { margin-bottom: 3px; margin-left: 0; border: 0; } #permissions-sliders p.rule-desc { font-size: 1.1em; } #permissions-sliders div.rule-notes { font-size: 1.1em; } ul#rules table.group-rules td label { margin: 0 !important; line-height: 1.1em; } ul#rules table.group-rules td span { font-size: 1.1em; padding-bottom: 4px; } ul#rules table.group-rules td span span { font-size: 100%; } table.group-rules td select { margin: 0 !important; } #permissions-sliders ul#rules .mypanel { padding: 0; line-height: 1.3em; } #permissions-sliders .mypanel table.group-rules caption { font-size: 1.3em; } #permissions-sliders ul#rules { padding: 5px; } #permissions-sliders ul#rules table.group-rules th { text-align: left; padding: 4px; } #permissions-sliders ul#rules table.group-rules td label { min-width: 1em; } #permissions-sliders .pane-toggler span { padding-left: 20px; } #permissions-sliders .pane-toggler-down span { padding-left: 20px; } #permissions-sliders .pane-toggler-down span.level, #permissions-sliders .pane-toggler span.level { padding: 0; } .swatch { text-align: center; padding: 0 15px 0 15px; } dl.tabs dt h3 { padding: 0; font-size: 100%; } ul.helpmenu li { float: right; margin: 10px; padding: 0; list-style-type: none; font-weight: bold; } #menu { position: relative; z-index: 100; padding: 0; margin: 0; width: 100%; list-style: none; font-size: 1.2em; font-weight: bold; } #menu ul { padding: 0; margin: 0; list-style: none; font-size: 100%; } #menu ul li.separator { margin-bottom: 1em; } #menu a { padding: 0.35em 2.5em 0.35em 2em; vertical-align: middle; display: block; text-decoration: none; font-size: 100%; } #menu li { float: left; font-size: 100%; } #menu li a { white-space: nowrap; } #menu li li a { margin-bottom: 1px; margin-top: 1px; width: 10em; } #menu li.disabled a:hover, #menu li.disabled a:focus, #menu li.disabled a { cursor: default; } #menu li ul { position: absolute; width: 16em; margin-left: -1000em; } #menu li li { border: none; width: 16em; } #menu li ul ul { margin: -2.3em 0 0 -1000em; } #menu li:hover ul ul, #menu li.sfhover ul ul { margin-left: -1000em; } #menu li:hover ul, #menu li.sfhover ul { margin-left: 0; } #menu li li:hover ul, #menu li li.sfhover ul { margin-left: 16em; } [class^="menu-"], [class*=" menu-"] { background-position: 3px 50% !important; } .menu-archive { background-image: url(../images/menu/icon-16-archive.png); } .menu-article { background-image: url(../images/menu/icon-16-article.png); } .menu-banners { background-image: url(../images/menu/icon-16-banner.png); } .menu-banners-clients { background-image: url(../images/menu/icon-16-banner-client.png); } .menu-banners-tracks { background-image: url(../images/menu/icon-16-banner-tracks.png); } .menu-banners-cat { background-image: url(../images/menu/icon-16-banner-categories.png); } .menu-category { background-image: url(../images/menu/icon-16-category.png); } .menu-checkin { background-image: url(../images/menu/icon-16-checkin.png); } .menu-clear { background-image: url(../images/menu/icon-16-clear.png); } .menu-component { background-image: url(../images/menu/icon-16-component.png); } .menu-config { background-image: url(../images/menu/icon-16-config.png); } .menu-contact { background-image: url(../images/menu/icon-16-contacts.png); } .menu-contact-cat { background-image: url(../images/menu/icon-16-contacts-categories.png); } .menu-content { background-image: url(../images/menu/icon-16-content.png); } .menu-cpanel { background-image: url(../images/menu/icon-16-cpanel.png); } .menu-default { background-image: url(../images/menu/icon-16-default.png); } .menu-featured { background-image: url(../images/menu/icon-16-featured.png); } .menu-groups { background-image: url(../images/menu/icon-16-groups.png); } .menu-help { background-image: url(../images/menu/icon-16-help.png); } .menu-help-this { background-image: url(../images/menu/icon-16-help-this.png); } .menu-help-forum { background-image: url(../images/menu/icon-16-help-forum.png); } .menu-help-docs { background-image: url(../images/menu/icon-16-help-docs.png); } .menu-help-jed { background-image: url(../images/menu/icon-16-help-jed.png); } .menu-help-jrd { background-image: url(../images/menu/icon-16-help-jrd.png); } .menu-help-community { background-image: url(../images/menu/icon-16-help-community.png); } .menu-help-security { background-image: url(../images/menu/icon-16-help-security.png); } .menu-help-dev { background-image: url(../images/menu/icon-16-help-dev.png); } .menu-help-shop { background-image: url(../images/menu/icon-16-help-shop.png); } .menu-info { background-image: url(../images/menu/icon-16-info.png); } .menu-install { background-image: url(../images/menu/icon-16-install.png); } .menu-joomlaupdate { background-image: url(../images/menu/icon-16-install.png); } .menu-language { background-image: url(../images/menu/icon-16-language.png); } .menu-levels { background-image: url(../images/menu/icon-16-levels.png); } .menu-logout { background-image: url(../images/menu/icon-16-logout.png); } .menu-maintenance { background-image: url(../images/menu/icon-16-maintenance.png); } .menu-massmail { background-image: url(../images/menu/icon-16-massmail.png); } .menu-media { background-image: url(../images/menu/icon-16-media.png); } .menu-menu { background-image: url(../images/menu/icon-16-menu.png); } .menu-menumgr { background-image: url(../images/menu/icon-16-menumgr.png); } .menu-messages { background-image: url(../images/menu/icon-16-messaging.png); } .menu-messages-add { background-image: url(../images/menu/icon-16-new-privatemessage.png); } .menu-messages-read { background-image: url(../images/menu/icon-16-messages.png); } .menu-module { background-image: url(../images/menu/icon-16-module.png); } .menu-newarticle { background-image: url(../images/menu/icon-16-newarticle.png); } .menu-newcategory { background-image: url(../images/menu/icon-16-newcategory.png); } .menu-newgroup { background-image: url(../images/menu/icon-16-newgroup.png); } .menu-newlevel { background-image: url(../images/menu/icon-16-newlevel.png); } .menu-newuser { background-image: url(../images/menu/icon-16-newuser.png); } .menu-plugin { background-image: url(../images/menu/icon-16-plugin.png); } .menu-profile { background-image: url(../images/menu/icon-16-user.png); } .menu-purge { background-image: url(../images/menu/icon-16-purge.png); } .menu-readmess { background-image: url(../images/menu/icon-16-readmess.png); } .menu-section { background-image: url(../images/menu/icon-16-section.png); } .menu-static { background-image: url(../images/menu/icon-16-static.png); } .menu-stats { background-image: url(../images/menu/icon-16-stats.png); } .menu-themes { background-image: url(../images/menu/icon-16-themes.png); } .menu-trash { background-image: url(../images/menu/icon-16-trash.png); } .menu-user { background-image: url(../images/menu/icon-16-user.png); } .menu-user-note { background-image: url(../images/menu/icon-16-user-note.png); } .menu-delete { background-image: url(../images/menu/icon-16-delete.png); } .menu-help-trans { background-image: url(../images/menu/icon-16-help-trans.png); } .menu-newsfeeds { background-image: url(../images/menu/icon-16-newsfeeds.png); } .menu-newsfeeds-cat { background-image: url(../images/menu/icon-16-newsfeeds-cat.png); } .menu-redirect { background-image: url(../images/menu/icon-16-redirect.png); } .menu-search { background-image: url(../images/menu/icon-16-search.png); } .menu-finder { background-image: url(../images/menu/icon-16-search.png); } .menu-weblinks { background-image: url(../images/menu/icon-16-links.png); } .menu-weblinks-cat { background-image: url(../images/menu/icon-16-links-cat.png); } .menu-tags { background-image: url(../images/menu/icon-16-tags.png); } .menu-postinstall { background-image: url(../images/menu/icon-16-generic.png); } #menu li a:focus+ul { margin-left: 0; } #menu li li a:focus+ul { margin-left: 1016em; } #menu li li a:focus { margin-left: 1000em; width: 10em; } #menu li li li a:focus { margin-left: 2016em; width: 10em; } #menu li:hover a:focus, #menu li.sfhover a.sffocus { margin-left: 0; } #menu li li:hover a:focus+ul, #menu li li.sfhover a.sffocus+ul { margin-left: 16em; } #sidebar { float: left; margin: 15px 5px; } #submenu { list-style: none; padding: 0; margin: 0; padding-bottom: 2.5em; line-height: 2em; } #submenu ul, #submenu li { display: inline; list-style-type: none; margin: 0; padding: 0; } #submenu li, #submenu span.nolink { float: left; font-weight: bold; margin-right: 8px; padding: 2px 10px 2px 10px; text-decoration: none; cursor: pointer; -moz-border-radius-topright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-right-radius: 3px; -webkit-border-top-left-radius: 3px; border-top-right-radius: 3px; border-top-left-radius: 3px; } #submenu span.nolink { color: #999; } #submenu li.active, #submenu span.nolink.active { cursor: default; } #submenu li.active a, #submenu span.nolink.active, #submenu li a:hover, #submenu li a:focus { text-decoration: none; } .red { font-weight: bold; color: #c00; } .pre_message { font-size: 1.3em; } span.update-badge { background-image: -moz-linear-gradient(center bottom,#FF0000 41%,#FC7E7E 79%); background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0.41,#ff0000),color-stop(0.79,#fc7e7e)); border: 2px solid white; border-radius: 1.5em 1.5em 1.5em 1.5em; color: white; display: block; float: left; font-size: 1.2em; font-weight: bold; height: 1.2em; left: 60px; min-width: 1em; padding: 0 0.1em 0; position: relative; top: -88px; } .unotes ul, .unotes ol { list-style: none; list-style-position: inside; padding-left: 0; padding-right: 0; } .unotes div.utitle { padding: 10px; float: left; font-size: 1.2em; line-height: 1.2em; } .unotes h4 { margin-top: 0; margin-bottom: 0; font-size: 1.3em; } .unotes .ubody { padding-left: 10px; padding-right: 10px; font-size: 1.2em; line-height: 1.5em; } .unotes p { padding-bottom: 10px; } div#database-sliders { margin: 10px; } fieldset.uploadform { margin-top: 10px; margin-bottom: 10px; } #installer-database, #installer-discover, #installer-update, #installer-warnings { margin-top: 10px; } #installer-database #sidebar { float: none; } #installer-database p.warning { padding-left: 20px; } #installer-database p.nowarning { padding-left: 20px; } .joomlaupdate_spinner { float: left; margin-right: 15px; } .btn-group { position: relative; display: inline-block; } .btn-group + .btn-group { margin-left: 5px; } .btn-group > .btn { position: relative; float: left; margin-left: -1px; } .icon-48-cpanel { height: 50px; width: 50%; } .well { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: #f5f5f5; border: 1px solid #eee; border: 1px solid rgba(0,0,0,0.05); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.05); -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.05); box-shadow: inset 0 1px 1px rgba(0,0,0,0.05); } .well blockquote { border-color: #ddd; border-color: rgba(0,0,0,0.15); } .well-large { padding: 24px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .well-small { padding: 9px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .list-striped, .row-striped { list-style: none; line-height: 18px; text-align: left; vertical-align: middle; border-top: 1px solid #dddddd; margin-left: 0; font-size: 1.2em; padding: 9px; } .list-striped li, .list-striped dd, .row-striped .row, .row-striped .row-fluid { border-bottom: 1px solid #dddddd; padding: 8px; } .list-striped li:nth-child(odd), .list-striped dd:nth-child(odd), .row-striped .row:nth-child(odd), .row-striped .row-fluid:nth-child(odd) { background-color: #f9f9f9; } .list-striped li:hover, .list-striped dd:hover, .row-striped .row:hover, .row-striped .row-fluid:hover { background-color: #f5f5f5; } .row-striped .row-fluid { width: 97%; } .row-striped .row-fluid [class*="span"] { min-height: 10px; } .alert { padding: 8px 35px 8px 14px; margin-bottom: 18px; text-shadow: 0 1px 0 rgba(255,255,255,0.5); background-color: #fcf8e3; border: 1px solid #fbeed5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; color: #c09853; font-size: 120%; } .alert-heading { color: inherit; } .alert .close { position: relative; right: -30px; top: -5px; line-height: 18px; float: right; font-size: 20px; font-weight: bold; } .alert-success { background-color: #dff0d8; border-color: #d6e9c6; color: #468847; } .alert-danger, .alert-error { background-color: #f2dede; border-color: #eed3d7; color: #b94a48; } .alert-info { background-color: #d9edf7; border-color: #bce8f1; color: #3a87ad; } .alert-block { padding-top: 14px; padding-bottom: 14px; } .alert-block > p, .alert-block > ul { margin-bottom: 0; } .alert-block p + p { margin-top: 5px; } .btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active { z-index: 2; } .btn-group > .btn { position: relative; float: left; margin-left: -1px; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } table { max-width: 100%; background-color: transparent; border-collapse: collapse; border-spacing: 0; } .table { width: 100%; margin-bottom: 18px; } .tab-content > .tab-pane, .pill-content > .pill-pane { display: none; } .tab-content > .active, .pill-content > .active { display: block; } .tabs-below > .nav-tabs { border-top: 1px solid #ddd; } #status .btn-toolbar, #status p { margin: 0px; } .navbar .btn-group { margin: 0; padding: 5px 5px 6px; } .media .btn { margin: 10px 20px; } .thumbnails > li { list-style: none outside none; float: left; margin-bottom: 18px; margin-left: 20px; } #mediamanager-form { margin: 10px; } .is-tagbox { float: left; } .item-associations { margin: 0; } .item-associations li { list-style: none; display: inline-block; margin: 0 0 3px 0; } .item-associations li a, table.adminlist .item-associations li a { color: #ffffff; } .hidden { display: none; visibility: hidden; } .tooltip { position: absolute; z-index: 1030; display: block; visibility: visible; font-size: 11px; line-height: 1.4; opacity: 0; filter: alpha(opacity=0); } .tooltip.in { opacity: 0.8; filter: alpha(opacity=80); } .tooltip.top { margin-top: -3px; padding: 5px 0; } .tooltip.right { margin-left: 3px; padding: 0 5px; } .tooltip.bottom { margin-top: 3px; padding: 5px 0; } .tooltip.left { margin-left: -3px; padding: 0 5px; } .tooltip-inner { max-width: 200px; padding: 8px; color: #ffffff; text-align: center; text-decoration: none; background-color: #000000; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .tooltip-arrow { position: absolute; width: 0; height: 0; border-color: transparent; border-style: solid; } .tooltip.top .tooltip-arrow { bottom: 0; left: 50%; margin-left: -5px; border-width: 5px 5px 0; border-top-color: #000000; } .tooltip.right .tooltip-arrow { top: 50%; left: 0; margin-top: -5px; border-width: 5px 5px 5px 0; border-right-color: #000000; } .tooltip.left .tooltip-arrow { top: 50%; right: 0; margin-top: -5px; border-width: 5px 0 5px 5px; border-left-color: #000000; } .tooltip.bottom .tooltip-arrow { top: 0; left: 50%; margin-left: -5px; border-width: 0 5px 5px; border-bottom-color: #000000; } .tooltip { max-width: 400px; } .tooltip-inner { max-width: none; text-align: left; text-shadow: none; } th .tooltip-inner { font-weight: normal; } .tooltip.hasimage { opacity: 1; } fieldset.panelform .tooltip img { float: none; margin: 0; } div.toggle-editor { float: right; } .text-left { text-align: left; } .text-right { text-align: right; } .text-center { text-align: center; } .module-edit { display: inline-block; } .break-word { word-break: break-all; word-wrap: break-word; } .muted { color: #999; } PKb��\��{{!templates/hathor/css/boldtext.cssnu�[���@charset "UTF-8"; /** * @package Joomla.Administrator * @subpackage templates.hathor * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @since 1.6 * * Changes to use bold text as the default */ /** * Default to bold text */ body { font-weight: bold; } PKb��\Br9" templates/hathor/css/ie8.cssnu�[���@charset "UTF-8"; /** * @package Joomla.Administrator * @subpackage templates.hathor * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @since 1.6 * * CSS file for IE8 */ /** * Special Styles for Internet Explorer 8 */ /* Accessibility: css in template.css for slider keyboard * has to be reversed here or the mouse does not work for ie */ .pane-toggler + div.pane-slider { /*display: block;*/ } PKb��\��M���templates/hathor/css/ie7.cssnu�[���@charset "UTF-8"; /** * @package Joomla.Administrator * @subpackage templates.hathor * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @since 1.6 * * CSS file for IE7 */ /** * Special Styles for Internet Explorer 7 */ input { border-width: expression(this.type == "radio" ? '0px' : this.type == "checkbox" ? '0px' : '1px'); } div.toolbar-box { height: 65px; } div.toolbar-list span { margin: 0; position: relative } div.toolbar-list a { position: relative; } div#subheader { height: 2em; } #login-page .pagetitle h2 { margin: 0px; padding: 0px; } *:first-child+html .clearfix { min-height: 1px; } .menu-links li, .menu-links li label { height: 2em; } div.article-edit, div.category-edit { zoom: 1; } div.pane-sliders, div.panel, div.pane-slider, div.rules-section, div.mypanel, div.containerpg, div.pagination, div.upload-queue { zoom: 1; } div.width-20 fieldset.adminform, div.width-30 fieldset.adminform, div.width-35 fieldset.adminform, div.width-40 fieldset.adminform, div.width-45 fieldset.adminform, div.width-50 fieldset.adminform, div.width-55 fieldset.adminform, div.width-60 fieldset.adminform, div.width-65 fieldset.adminform, div.width-70 fieldset.adminform, div.width-80 fieldset.adminform, div.width-100 fieldset.adminform { zoom: 1; margin-bottom:10px; } div.toggle-editor { margin-top: -5px; margin-bottom: 5px; } table.adminlist { border-bottom-width: 1px; } div.current dd { width: 100%; position: relative; } #permissions-sliders ul#rules table.group-rules caption span { height: 0; overflow: hidden; position: absolute; padding:0; margin:0; } div.current ul.menu-links { zoom: 1; width: 25%; margin: 0; padding:0; list-style-position: inside; } div#position-icon.pane-sliders div.pane-down div.icon-wrapper { margin: 0; } fieldset.panelform fieldset.checkboxes.impunlimited { float: none; width: 170px; } PKb��\@�F�O�O%templates/hathor/css/template_rtl.cssnu�[���@charset "UTF-8"; /** * @package Joomla.Administrator * @subpackage templates.hathor * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @since 1.6 * * RTL CSS file for the template */ body { direction: rtl; } h1, h2, h3 { text-align: right; } /** * CSS Reset */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { background-position: transparent none repeat scroll top right; } /* new styles */ /* end new styles */ /** * Overall Styles */ #header h1.title { padding: 0 120px 0 0; } #footer { padding: 10px 20px; } #content { margin: 5px 20px 20px 20px; } .cpanel-page div#element-box { padding: 15px; } /** * Status layout */ #module-status { left: 0; right: none; float: left; } #module-status > span { float: right; padding: 4px 22px 0 20px; } /* background images moved to color css file */ /** * Various Styles */ div.checkin-tick { text-indent: -9999px; } /** * Overlib */ /** * Subheader, toolbar, page title */ div.pagetitle { padding: 0 0 5px 0; background-position: right 50%; line-height: 54px; } .pagetitle h2 { padding: 0 50px 0 0; } div.configuration { padding-right: 30px; margin-right: 10px; } div.toolbar-list { float: right; text-align: left; } div.toolbar-list li { padding: 5px 4px 5px 1px; float: right; } div.toolbar-list li.divider { margin-left: 10px; margin-right: 0; } div.toolbar-list span { margin: 0 auto; } div.toolbar-list a { float: right; padding: 1px 5px; } /** * Massmail component */ /** * Pane Slider pane Toggler styles */ div.pane-sliders { margin-left: 10px; } .pane-toggler span { padding-left: 0; padding-right: 20px; } .pane-toggler-down span { padding-right: 20px; padding-left: 0; } div#position-icon.pane-sliders div.pane-down .icon-wrapper .icon { padding: 5px 10px 5px 0; margin: 0; } /** * Tabs */ dl.tabs { float: right; margin: 10px 0 -1px 0; } dl.tabs dt { float: right; padding: 4px 10px; margin-right: 3px; } div.current { padding: 10px 10px; } /* New parameter styles (check rtl) */ dl#content-pane.tabs { margin: 1px 0 0 0; } div.current label, div.current span.faux-label { float:right; clear:right; } div.current fieldset.radio { float:right; } div.current fieldset.radio input { float:right; margin: 3px 2px 0 0; } div.current fieldset.radio label { float:right; margin: 3px 2px 0 0; } div.current fieldset.checkboxes { float:right; clear:left; } div.current fieldset.checkboxes input { float:right; clear:right; margin: 3px 2px 0 0; } div.current fieldset.checkboxes label { clear:left; margin: 3px 2px 0 0; } div.current input, div.current span.faux-input, div.current textarea, div.current select { float:right; margin: 3px 2px 0 0; } div.current table#acl-config th.acl-groups { text-align: right; } div.current table#filter-config th.acl-groups { text-align: right; } /* -------- Menu Assigments ---------- */ div#menu-assignment { clear:right; } div#menu-assignment ul.menu-links { float:right; } div#menu-assignment h3 { clear:right; } div#menu-assignment ul.menu-links li.menu-link label { float: right; margin: 3px 2px 0 0; } div#menu-assignment ul.menu-links li.menu-link input { clear: right; float: right; } p.tab-description { margin-right: 0; } /* end new parameter styles */ /** * Login Settings */ #login-page input, #login-page select { float: left; } #login-page .login { margin: 0 auto; } #login-page .pagetitle h2 { margin: -70px 0 30px 0; } #login-page .login-inst { float: right; } #login-page .login-box { float: left; } #login-page .button { text-align: left; } #login-page .login-text { text-align: right; float: right; } #form-login { float: left; } #form-login label { float: right; clear: right; text-align: left; } #form-login div.button1 div.next { float: right; } #form-login div.button1 a { padding: 0 15px 0 15px; /* padding: 0 6px 0 30px; use this if you use images */ } /** * Cpanel Settings */ .cpanel div.icon , #cpanel div.icon { margin-left: 5px; float: right; } .cpanel div.icon a , #cpanel div.icon a { float: right; } .cpanel img , #cpanel img { padding: 10px 0; margin: 0 auto; } div.cpanel-icons { float: right; } div.cpanel-component { float: left; } /** * Standard Layout Styles */ div.col { float: right; } div.options-section.col { float: left; } div.col1 { float: right; } div.col2 { float: left; } /* Avoid using the width divs. They are here for 3PD Extensions if needed * Use the specific layout divs listed after. See also the th.width entries */ .clrlft { clear: right; } .clrrt { clear: left; } .fltlft { float: right; } .fltrt { float: left; } .fltnone { float: none; } /* Layout Divs */ div.options-section { margin: 10px 0 10px 10px; } /* for bluestork style html */ div.width-40.fltrt { margin: 10px 0 10px 10px; } /** * Form Styles */ fieldset { margin: 2px 10px 2px 10px; text-align: right; } fieldset p { margin: 10px 0; } /* new form fields (check rtl) */ fieldset.adminform fieldset.radio, fieldset.panelform fieldset.radio, fieldset.adminform-legacy fieldset.radio { float:right; margin: 0 0 5px 0; clear:left; } fieldset.adminform fieldset.radio label, fieldset.panelform fieldset.radio label, fieldset.adminform fieldset.radio span.faux-label, fieldset.panelform fieldset.radio span.faux-label { float:right; } fieldset.panelform-legacy label, fieldset.adminform-legacy label, fieldset.panelform-legacy span.faux-label, fieldset.adminform-legacy span.faux-label { float:right; } /* JParameter classes on radio button labels */ p.jform_desc { clear: right; } fieldset ul.checklist { margin-right: 27px; margin-left: 0; } fieldset#filter-bar { margin: 0; padding: 5px 10px 5px 10px; } fieldset#filter-bar ol, fieldset#filter-bar ul { padding: 5px 0 0; } fieldset#filter-bar ol li, fieldset#filter-bar ul li { float: right; padding: 0 0 0 5px; } fieldset#filter-bar .filter-search { float: right; } fieldset#filter-bar .filter-select { float: left; } /* Note: these visual cues should be augmented by aria */ /* must be augmented by aria at the same time if changed dynamically by js aria-invalid=true or aria-invalid=false */ /* augmented by aria in template javascript */ span.readonly { float: right; } div.extdescript { margin-right: 10px; } input[type="button"] { padding: 1px 6px; } /** * Option or Parameter styles */ /* end from alpha2 */ span.gi { margin-left: 5px; } /** * Admintable Styles */ table.admintable td.key,table.admintable td.paramlist_key { text-align: left; } table.paramlist td.paramlist_description { text-align: right; } /** * Admin Form Styles */ fieldset.adminform { margin: 0 10px 10px 10px; } /* Table styles are for use with tabular data */ table.adminform { margin: 8px 0 10px 0; } table.adminform th { padding: 6px 4px 4px 2px; text-align: right; } table.adminform td { text-align: right; } table.adminform td#filter-bar { text-align: right; } table.adminform td.helpMenu { text-align: left; } table.adminform tr { padding-right: 10px; padding-left: 10px; border-left: 1px solid #c7c8b2; border-right: none; } /** * Table formating styles */ /* Avoid using the width classes. They are here for 3PD Extensions if needed * Use the specific layout table headers listed after. See also the div.width entries */ /* Table header layout classes */ th.ordering-col a { float:right; margin-right: 3px; } th.ordering-col a img { margin-right: 4px; margin-left: 4px; } /** * Adminlist Table layout */ table.adminlist { float: right; } /* Table row styles */ table.adminlist tr { padding-left: 30px; padding-right: 30px; } table.adminlist tbody tr { text-align: right; } /* Table td/th styles */ table.adminlist td.order span { float: right; } /** * Tree indentation & nesting - Up to 10 levels deep so don't go crazy : */ table.adminlist td.indent-4 { padding-right:4px; } table.adminlist td.indent-19 { padding-right:19px; } table.adminlist td.indent-34 { padding-right:34px; } table.adminlist td.indent-49 { padding-right:49px; } table.adminlist td.indent-64 { padding-right:64px; } table.adminlist td.indent-79 { padding-right:79px; } table.adminlist td.indent-94 { padding-right:94px; } table.adminlist td.indent-109 { padding-right:109px; } table.adminlist td.indent-124 { padding-right:124px; } table.adminlist td.indent-139 { padding-right:139px; } /** * Adminlist buttons */ table.adminlist tr td.btns a { padding: 3px 20px; } /** * Modal Modules styles */ ul#new-modules-list { margin-right: 50px; margin-left: 0; } /** * Utility styles */ /* General Clearing Class */ .menu-module-list { padding-right: 10px; margin-right: 5px; } /* stu nicholls solution for centering divs */ /* table solution for global config */ table.noshow fieldset { margin: 15px 7px 7px 7px; } /** * Saving order icon styling in admin tables */ a.saveorder { float:left; margin-left: 8px; } /** * Button styling */ #editor-xtd-buttons { padding: 5px; } /* Button 1 Type */ .button1,.button1 div { float: left; } /* Use this if you add images to the buttons such as directional arrows */ .button1 a { float: right; padding: 0 6px 0 6px; } /* Button 2 Type */ .button2-left,.button2-right { float: right; } .button2-left a, .button2-right a, .button2-left span, .button2-right span { float: right; } /* these are inactive buttons */ .button2-left .page a, .button2-right .page a, .button2-left .page span, .button2-right .page span, .button2-left .blank a, .button2-right .blank a, .button2-left .blank span, .button2-right .blank span { padding: 0 6px; } .button2-left a,.button2-left span { padding: 0 6px 0 24px; } .button2-right a,.button2-right span { padding: 0 24px 0 6px; } .button2-left { float: right; margin-right: 5px; } .button2-right { float: right; margin-right: 5px; } /* background images moved to the color rtl css file */ /** * Pagination styles */ /* Normal pagination styles */ div.containerpg { position: relative; right: 50%; float: right; clear: right; } div.pagination { right: -50%; margin: 0 auto; } .pagination a { line-height: 1.6em; } .pagination div.limit { float: right; margin: 0 10px; } /* The Go submittal button */ .pagination button { margin-left: 20px; } /* Style if pagination is part of the table (old style) */ table.adminlist .pagination { margin: 0 auto; } table.adminlist .pagination button { margin-left: 20px; } /** * Pagination styles */ /* Normal pagination styles */ div.containerpg { right: 50%; float: right; clear: right; } div.pagination { right: -50%; margin: 0 auto; } .pagination div.limit { float: right; margin: 0 10px; } /* The Go submittal button */ .pagination button { margin-left: 20px; } /* Grey out the current page number */ /* Style if pagination is part of the table (old style) */ table.adminlist .pagination button { margin-left: 20px; } /** * MCE Editor */ div.toggle-editor { } /** * Tooltips */ .tip-text { text-align: right; } /** * Calendar */ a img.calendar { margin-right: 3px; } /** * General styles */ .helpFrame { padding: 0 10px 0 5px; } #treecellhelp { float: right; } #datacellhelp { float: right; padding: 2px 0 0 0; } /* -- MODAL STYLES ----------- */ div#sbox-window { text-align: right; } h2.modal-title { margin: 5px 15px 0 0; } ul.menu_types { padding: 0 15px 0 0; } ul.menu_types li, dl.menu_type dd ul li { float:right; margin-left: 10px; margin-right: 0; } dl.menu_type dt { float:right; margin: 13px 0 5px 0; } dl.menu_type dd { clear:right; } dl.menu_type dd ul li { margin: 0; } dl.menu_type dd ul { margin: 0; } ul#new-modules-list { padding: 5px 15px 0 0; margin: 0; } ul#new-modules-list li { float:right; margin: 0 0 0 20px; } /** * User Accessibility */ /* Skip to Content Structural Styling */ #skiplinkholder a, #skiplinkholder a:link, #skiplinkholder a:visited { left: 0; right: -200%; } #skiplinkholder a:focus, #skiplinkholder a:active { right: 0; top: 0; } #skiplinkholder p { margin: 0; } #skiptargetholder { left: 0; right: -200%; } /* Skip to Content Visual Styling */ #skiplinkholder a, #skiplinkholder a:link, #skiplinkholder a:visited { padding-left: 20px; padding-right: 20px; } /* For elements that aren't to be seen by users unless the user does something * like clicking on a header to see the collapsed section. */ /* For elements that aren't to be seen by visual users but do need to be read by screenreaders. * Cannot be used for elements that can get focus such as links and form elements */ /* Firefox has issues styling legend so this is a universal fix for making the legend invisible (i.e. visually it's not there, but screen readers see it */ legend.element-invisible { /*margin: 0; margin-right: -10000px; */ } fieldset.adminform label, fieldset.panelform label, fieldset.adminform span.faux-label, fieldset.panelform span.faux-label { clear:right; float:right; margin-right: 10px; margin-left: 5px; } fieldset.adminform fieldset.radio label, fieldset.panelform fieldset.radio label, fieldset.adminform fieldset.radio span.faux-label, fieldset.panelform fieldset.radio span.faux-label { margin-right: 0; } /* checkboxes */ fieldset.adminform fieldset.checkboxes, fieldset.panelform fieldset.checkboxes, fieldset.adminform-legacy fieldset.checkboxes { float:right; margin: 0 0 5px 0; clear:left; } fieldset.adminform fieldset.checkboxes input[type="checkbox"], fieldset.panelform fieldset.checkboxes input[type="checkbox"] { float: right; clear: right; } fieldset.adminform fieldset.checkboxes label, fieldset.panelform fieldset.checkboxes label, fieldset.adminform fieldset.checkboxes span.faux-label, fieldset.panelform fieldset.checkboxes span.faux-label { clear: left; } /* end checkboxes */ fieldset.adminform input, fieldset.adminform span.faux-input, fieldset.adminform textarea, fieldset.adminform select, fieldset.adminform img, fieldset.adminform button, fieldset.panelform input, fieldset.panelform span.faux-input, fieldset.panelform textarea, fieldset.panelform select, fieldset.panelform img, fieldset.panelform button { float:right; margin:5px 0 5px 5px; } /* -------- Batch Section ---------- */ fieldset#batch-choose-action { clear:none; clear: right; } fieldset.batch label { float: right; clear: none; } fieldset label#batch-choose-action-lbl { clear: none; clear: right; } label#batch-language-lbl, label#batch-user-lbl { clear: right; margin-left: 10px; margin-right: 0; margin-top: 15px; } select#batch-language-id, select#batch-user-id { margin-top: 15px; } select#batch-category-id, select#batch-menu-id, select#batch-position-id { margin-left: 30px; margin-right: 0; } fieldset.batch select, fieldset.batch input, fieldset.batch img, fieldset.batch button { float: right; } label#batch-access-lbl, label#batch-client-lbl { margin-right: 0; margin-left: 10px; } /* Banner edit */ /* -- ACL STYLES relocated from com_users/media/grid.css ----------- */ /* -- ACL PANEL STYLES ----------- */ /* All Tabs */ td.col1 { text-align:right; } /* Icons */ label.icon-16-allow, label.icon-16-deny, a.icon-16-allow, a.icon-16-deny, a.icon-16-allowinactive, a.icon-16-denyinactive { margin: 0 auto; } label.icon-16-allow { right: 40%; } label.icon-16-deny { right: 40%; } ul.acllegend li { float: right; padding-left: 20px; margin: 15px 10px 15px 0; } ul.acllegend li.acl-allowed { padding-right: 20px; padding-left: 10px; } ul.acllegend li.acl-denied { padding-right: 20px; padding-left: 20px; } ul.acllegend li.acl-editgroups { padding-left: 10px; } ul.acllegend li.acl-resetbtn { padding-left: 0; } li.acl-editgroups, li.acl-resetbtn { float: right; } table#acl-config th.acl-groups { padding-right: 8px; } table#acl-config th.acl-groups { text-align: right; } .acl-action { margin: auto 0; } /* Icons */ span.icon-16-unset, span.icon-16-allowed, span.icon-16-denied, span.icon-16-locked { padding-left: 0; padding-right: 18px; } /* * * Permission Rules */ #permissions-sliders ul#rules, #permissions-sliders ul#rules ul { margin: 0 !important; padding: 0 !important; } #permissions-sliders ul#rules li { margin: 0; padding: 0; } #permissions-sliders ul#rules table.group-rules td { padding:4px; vertical-align:middle; text-align:right; } #permissions-sliders .panel { margin-bottom: 3px; margin-right: 0; } ul#rules table.group-rules td label { margin: 0 !important; } table.group-rules td select { margin: 0 !important; } #permissions-sliders ul#rules .mypanel { padding: 0; } #permissions-sliders ul#rules { padding: 5px; } #permissions-sliders ul#rules table.group-rules th { text-align: right; padding: 4px; } #permissions-sliders .pane-toggler span { padding-left: 0; padding-right: 20px; } #permissions-sliders .pane-toggler-down span { padding-left: 0; padding-right: 20px; } /** * Helpmenus */ ul.helpmenu li { float: left; } /** * Menu Styling */ #menu a { padding: 0.35em 2em 0.35em 2.5em; } #menu li { float: right; } #menu li ul { /* second-level lists */ margin-right: -1000em; /* using right instead of display to hide menus because display: none isn't read by screen readers */ } #menu li ul ul { /* third-and-above-level lists */ margin: -2.3em -1000em 0 0; /* top margin is equal to parent line height+bottom padding */ } #menu li:hover ul ul,#menu li.sfhover ul ul { margin-right: -1000em; } #menu li:hover ul,#menu li.sfhover ul { /* lists nested under hovered list items */ margin-right: 0; } #menu li li:hover ul,#menu li li.sfhover ul { margin-right: 16em; } /** * Extra positioning rules for limited noscript keyboard accessibility * need the backgrounds here to keep the background as the nav background * since it is overlaying other content. * Using margin-left instead of left so that can move back without javascript * display downlevel ul */ #menu li a:focus+ul { margin-right: 0; } #menu li li a:focus+ul { margin-right: 1016em; } /* bring back the focus elements into view */ #menu li li a:focus { margin-right: 1000em; } #menu li li li a:focus { margin-right: 2016em; } #menu li:hover a:focus,#menu li.sfhover a.sffocus { margin-right: 0; } #menu li li:hover a:focus+ul,#menu li li.sfhover a.sffocus+ul { margin-right: 16em; } /** * Submenu styling */ #submenu a, #submenu span.nolink { float: right; margin-left: 8px; padding: 2px 10px 2px 10px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-left-radius: 3px; -webkit-border-top-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; } /* Installer Database */ #installer-database p.warning { padding-left: 0; padding-right: 20px } #installer-database #sidebar { float: none } #installer-database p.nowarning { padding-left: 0; padding-right: 20px } p.nowarning { float: none; margin-left: 0; margin-right: 15px; } table.adminlist tfoot button { float: right; } /* Spinner */ .joomlaupdate_spinner { float: right; margin-left: 15px; } /* Various corrections */ [class*="span"] { float: none; margin-left: 0; margin-right: 0; } #sidebar { float:right; margin: 15px 0; } #submenu li, #submenu span.nolink { float: right; } div.btn-toolbar { float: right; text-align: right; } .btn-group { float: right; margin-right: 10px; } #module-status div.btn-group { float: right; } .nav-tabs > li, .nav-pills > li { float: none; } .tabs-left > .nav-tabs { border-right: 0 solid #DDDDDD; float: right; margin-right: 19px; } .list-striped, .row-striped { text-align: right; } .row-fluid [class*="span"] { float: none; } .media .btn { float: none; } .media { float:none; margin: 10px 20px; } .alert .close { right: 5px; float: left; } .tooltip-inner { text-align: right; } div.toggle-editor { float: left; } #editor-xtd-buttons .btn { float: right; } div.toggle-editor { margin-top: 14px; }PKb��\饰�<�<�(templates/hathor/css/colour_standard.cssnu�[���.clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; content: ""; line-height: 0; } .clearfix:after { clear: both; } .hide-text { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .input-block-level { display: block; width: 100%; min-height: 25px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } #form-login .btn { display: inline-block; *display: inline; *zoom: 1; padding: 4px 14px; margin-bottom: 0; font-size: 13px; line-height: 15px; *line-height: 15px; text-align: center; vertical-align: middle; cursor: pointer; color: #333333; text-shadow: 0 1px 1px rgba(255,255,255,0.75); background-color: #f5f5f5; background-image: -moz-linear-gradient(top,#ffffff,#e6e6e6); background-image: -webkit-gradient(linear,0 0,0 100%,from(#ffffff),to(#e6e6e6)); background-image: -webkit-linear-gradient(top,#ffffff,#e6e6e6); background-image: -o-linear-gradient(top,#ffffff,#e6e6e6); background-image: linear-gradient(to bottom,#ffffff,#e6e6e6); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe5e5e5', GradientType=0); border-color: #e6e6e6 #e6e6e6 #bfbfbf; *background-color: #e6e6e6; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); border: 1px solid #bbb; *border: 0; border-bottom-color: #a2a2a2; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; *margin-left: .3em; -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); } #form-login .btn:hover, #form-login .btn:focus, #form-login .btn:active, #form-login .btn.active, #form-login .btn.disabled, #form-login .btn[disabled] { color: #333333; background-color: #e6e6e6; *background-color: #d9d9d9; } #form-login .btn:active, #form-login .btn.active { background-color: #cccccc \9; } #form-login .btn:first-child { *margin-left: 0; } #form-login .btn:hover { color: #333333; text-decoration: none; background-color: #e6e6e6; *background-color: #d9d9d9; background-position: 0 -15px; -webkit-transition: background-position .1s linear; -moz-transition: background-position .1s linear; -o-transition: background-position .1s linear; transition: background-position .1s linear; } #form-login .btn:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } #form-login .btn.active, #form-login .btn:active { background-color: #e6e6e6; background-color: #d9d9d9 \9; background-image: none; outline: 0; -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); } #form-login .btn.disabled, #form-login .btn[disabled] { cursor: default; background-color: #e6e6e6; background-image: none; opacity: 0.65; filter: alpha(opacity=65); -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .btn-large { padding: 9px 14px; font-size: 15px; line-height: normal; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .btn-large [class^="icon-"] { margin-top: 2px; } .input-append input[class*="span"], .input-append .uneditable-input[class*="span"], .input-prepend input[class*="span"], .input-prepend .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"], .row-fluid .input-prepend [class*="span"], .row-fluid .input-append [class*="span"] { display: inline-block; } .input-append, .input-prepend { margin-bottom: 5px; font-size: 0; white-space: nowrap; } .input-append input, .input-append select, .input-append .uneditable-input, .input-prepend input, .input-prepend select, .input-prepend .uneditable-input { position: relative; margin-bottom: 0; *margin-left: 0; font-size: 13px; vertical-align: top; -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-append input:focus, .input-append select:focus, .input-append .uneditable-input:focus, .input-prepend input:focus, .input-prepend select:focus, .input-prepend .uneditable-input:focus { z-index: 2; } .input-append .add-on, .input-prepend .add-on { display: inline-block; width: auto; height: 15px; min-width: 16px; padding: 4px 5px; font-size: 13px; font-weight: normal; line-height: 15px; text-align: center; text-shadow: 0 1px 0 #ffffff; background-color: #eeeeee; border: 1px solid #ccc; } .input-append .add-on, .input-append .btn, .input-prepend .add-on, .input-prepend .btn { margin-left: -1px; vertical-align: top; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-append .active, .input-prepend .active { background-color: #a9dba9; border-color: #46a546; } .input-prepend .add-on, .input-prepend .btn { margin-right: -1px; } .input-prepend .add-on:first-child, .input-prepend .btn:first-child { -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-append input, .input-append select, .input-append .uneditable-input { -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-append .add-on:last-child, .input-append .btn:last-child { -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-prepend.input-append input, .input-prepend.input-append select, .input-prepend.input-append .uneditable-input { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-prepend.input-append .add-on:first-child, .input-prepend.input-append .btn:first-child { margin-right: -1px; -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-prepend.input-append .add-on:last-child, .input-prepend.input-append .btn:last-child { margin-left: -1px; -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .form-search .input-append .search-query, .form-search .input-prepend .search-query { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .form-search .input-append .search-query { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search .input-append .btn { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .search-query { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .btn { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search input, .form-search textarea, .form-search select, .form-search .help-inline, .form-search .uneditable-input, .form-search .input-prepend, .form-search .input-append, .form-inline input, .form-inline textarea, .form-inline select, .form-inline .help-inline, .form-inline .uneditable-input, .form-inline .input-prepend, .form-inline .input-append, .form-horizontal input, .form-horizontal textarea, .form-horizontal select, .form-horizontal .help-inline, .form-horizontal .uneditable-input, .form-horizontal .input-prepend, .form-horizontal .input-append { display: inline-block; *display: inline; *zoom: 1; margin-bottom: 0; vertical-align: middle; } .form-search .hide, .form-inline .hide, .form-horizontal .hide { display: none; } .form-search .input-append, .form-inline .input-append, .form-search .input-prepend, .form-inline .input-prepend { margin-bottom: 0; } .element-invisible { position: absolute; padding: 0 !important; margin: 0 !important; border: 0; height: 1px; width: 1px !important; overflow: hidden; } #form-login select, #form-login input[type="text"], #form-login input[type="password"] { display: inline-block; padding: 4px 6px; margin-bottom: 9px; font-size: 13px; line-height: 15px; color: #555555; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; width: 175px; } .label, .badge { display: inline-block; padding: 2px 4px; font-size: 10.998px; font-weight: bold; line-height: 14px; color: #ffffff; vertical-align: baseline; white-space: nowrap; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #999999; } .label { -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .badge { padding-left: 9px; padding-right: 9px; -webkit-border-radius: 9px; -moz-border-radius: 9px; border-radius: 9px; } .label:empty, .badge:empty { display: none; } a.label:hover, a.label:focus, a.badge:hover, a.badge:focus { color: #ffffff; text-decoration: none; cursor: pointer; } .label-important, .badge-important { background-color: #a20000; } .label-important[href], .badge-important[href] { background-color: #6f0000; } .label-warning, .badge-warning { background-color: #f89406; } .label-warning[href], .badge-warning[href] { background-color: #c67605; } .label-success, .badge-success { background-color: #005800; } .label-success[href], .badge-success[href] { background-color: #002500; } .label-info, .badge-info { background-color: #3a87ad; } .label-info[href], .badge-info[href] { background-color: #2d6987; } .label-inverse, .badge-inverse { background-color: #333333; } .label-inverse[href], .badge-inverse[href] { background-color: #1a1a1a; } .btn .label, .btn .badge { position: relative; top: -1px; } .btn-mini .label, .btn-mini .badge { top: 0; } body { background-color: #ffffff; color: #2c2c2c; } h1 { color: #2c2c2c; } a:link { color: #054993; } a:visited { color: #054993; } #header { background: #ffffff url(../images/j_logo.png) no-repeat; } #header h1.title { color: #2c2c2c; } #nav { background-color: #f9fade; background-image: -moz-linear-gradient(top,#f9fade,#f9fade); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f9fade),to(#f9fade)); background-image: -webkit-linear-gradient(top,#f9fade,#f9fade); background-image: -o-linear-gradient(top,#f9fade,#f9fade); background-image: linear-gradient(to bottom,#f9fade,#f9fade); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9fade', endColorstr='#fff9fade', GradientType=0); border: 1px solid #c7c8b2; } #content { background: #ffffff; } #no-submenu { border-bottom: 1px solid #c7c8b2; } #element-box { background: #ffffff; border-right: 1px solid #c7c8b2; border-bottom: 1px solid #c7c8b2; border-left: 1px solid #c7c8b2; } #element-box.login { border-top: 1px solid #c7c8b2; } .enabled, .success, .allow, span.writable { color: #005800; } .disabled, p.error, .warning, .deny, span.unwritable { color: #a20000; } .nowarning { color: #2c2c2c; } .none, .protected { color: #c7c8b2; } span.note { background: #ffffff; color: #2c2c2c; } div.checkin-tick { background: url(../images/admin/tick.png) 20px 50% no-repeat; } .ol-foreground { background-color: #f9fade; } .ol-background { background-color: #005800; } .ol-textfont { color: #2c2c2c; } .ol-captionfont { color: #ffffff; } .ol-captionfont a { color: #054993; } div.subheader .padding { background: #ffffff; } .pagetitle h2 { color: #2c2c2c; } div.configuration { color: #2c2c2c; background-image: url(../images/menu/icon-16-config.png); background-repeat: no-repeat; } div.toolbar-box { border-right: 1px solid #c7c8b2; border-bottom: 1px solid #c7c8b2; border-left: 1px solid #c7c8b2; background: #ffffff; } div.toolbar-list li { color: #2c2c2c; } div.toolbar-list li.divider { border-right: 1px dotted #e5d9c3; } div.toolbar-list a { border-left: 1px solid #e5d9c3; border-top: 1px solid #e5d9c3; border-right: 1px solid #c7c8b2; border-bottom: 1px solid #c7c8b2; background: #f9fade; } div.toolbar-list a:hover { border-left: 1px solid #868778; border-top: 1px solid #868778; border-right: 1px solid #f6f7db; border-bottom: 1px solid #f6f7db; background: #e5d9c3; color: #054993; } div.btn-toolbar { margin-left: 5px; padding-top: 3px; } div.btn-toolbar li.divider { border-right: 1px dotted #e5d9c3; } div.btn-toolbar div.btn-group button { border-left: 1px solid #e5d9c3; border-top: 1px solid #e5d9c3; border-right: 1px solid #c7c8b2; border-bottom: 1px solid #c7c8b2; background-color: #f9fade; background-image: -moz-linear-gradient(top,#f9fade,#f9fade); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f9fade),to(#f9fade)); background-image: -webkit-linear-gradient(top,#f9fade,#f9fade); background-image: -o-linear-gradient(top,#f9fade,#f9fade); background-image: linear-gradient(to bottom,#f9fade,#f9fade); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9fade', endColorstr='#fff9fade', GradientType=0); padding: 5px 4px 5px 4px; } div.btn-toolbar div.btn-group button:hover { border-left: 1px solid #868778; border-top: 1px solid #868778; border-right: 1px solid #f6f7db; border-bottom: 1px solid #f6f7db; background: #e5d9c3; color: #054993; cursor: pointer; } div.btn-toolbar a { border-left: 1px solid #e5d9c3; border-top: 1px solid #e5d9c3; border-right: 1px solid #c7c8b2; border-bottom: 1px solid #c7c8b2; background-color: #f9fade; background-image: -moz-linear-gradient(top,#f9fade,#f9fade); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f9fade),to(#f9fade)); background-image: -webkit-linear-gradient(top,#f9fade,#f9fade); background-image: -o-linear-gradient(top,#f9fade,#f9fade); background-image: linear-gradient(to bottom,#f9fade,#f9fade); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9fade', endColorstr='#fff9fade', GradientType=0); padding: 6px 5px; text-align: center; white-space: nowrap; font-size: 1.2em; text-decoration: none; } div.btn-toolbar a:hover { border-left: 1px solid #868778; border-top: 1px solid #868778; border-right: 1px solid #f6f7db; border-bottom: 1px solid #f6f7db; background: #e5d9c3; color: #054993; cursor: pointer; } div.btn-toolbar div.btn-group button.inactive { background: #f9fade; } .pane-sliders .title { color: #2c2c2c; } .pane-sliders .panel { border: 1px solid #c7c8b2; } .pane-sliders .panel h3 { background-color: #f9fade; background-image: -moz-linear-gradient(top,#f9fade,#f9fade); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f9fade),to(#f9fade)); background-image: -webkit-linear-gradient(top,#f9fade,#f9fade); background-image: -o-linear-gradient(top,#f9fade,#f9fade); background-image: linear-gradient(to bottom,#f9fade,#f9fade); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9fade', endColorstr='#fff9fade', GradientType=0); color: #054993; } .pane-sliders .panel h3:hover { background: #e5d9c3; } .pane-sliders .panel h3:hover a { text-decoration: none; } .pane-sliders .adminlist { border: 0 none; } .pane-sliders .adminlist td { border: 0 none; } .pane-toggler span { background: transparent url(../images/j_arrow.png) 5px 50% no-repeat; } .pane-toggler-down span { background: transparent url(../images/j_arrow_down.png) 5px 50% no-repeat; } .pane-toggler-down { border-bottom: 1px solid #c7c8b2; } dl.tabs dt { border: 1px solid #c7c8b2; background-color: #f9fade; background-image: -moz-linear-gradient(top,#f9fade,#f9fade); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f9fade),to(#f9fade)); background-image: -webkit-linear-gradient(top,#f9fade,#f9fade); background-image: -o-linear-gradient(top,#f9fade,#f9fade); background-image: linear-gradient(to bottom,#f9fade,#f9fade); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9fade', endColorstr='#fff9fade', GradientType=0); color: #054993; } dl.tabs dt:hover { background: #e5d9c3; } dl.tabs dt.open { background: #ffffff; border-bottom: 1px solid #ffffff; color: #2c2c2c; } dl.tabs dt.open a:visited { color: #2c2c2c; } dl.tabs dt a:hover { text-decoration: none; } dl.tabs dt a:focus { text-decoration: underline; } div.current { border: 1px solid #c7c8b2; background: #ffffff; } div.current fieldset { border: none 0; } div.current fieldset.adminform { border: 1px solid #c7c8b2; } #login-page .pagetitle h2 { background: transparent; } #login-page #header { border-bottom: 1px solid #c7c8b2; } #login-page #lock { background: url(../images/j_login_lock.png) 50% 0 no-repeat; } #login-page #element-box.login { background-color: #f9fade; background-image: -moz-linear-gradient(top,#f9fade,#f9fade); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f9fade),to(#f9fade)); background-image: -webkit-linear-gradient(top,#f9fade,#f9fade); background-image: -o-linear-gradient(top,#f9fade,#f9fade); background-image: linear-gradient(to bottom,#f9fade,#f9fade); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9fade', endColorstr='#fff9fade', GradientType=0); } #form-login { background: #ffffff; border: 1px solid #c7c8b2; } #form-login label { color: #2c2c2c; } #form-login div.button1 a { color: #054993; } #cpanel div.icon a, .cpanel div.icon a { color: #054993; border-left: 1px solid #e5d9c3; border-top: 1px solid #e5d9c3; border-right: 1px solid #c7c8b2; border-bottom: 1px solid #c7c8b2; background-color: #f9fade; background-image: -moz-linear-gradient(top,#f9fade,#f9fade); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f9fade),to(#f9fade)); background-image: -webkit-linear-gradient(top,#f9fade,#f9fade); background-image: -o-linear-gradient(top,#f9fade,#f9fade); background-image: linear-gradient(to bottom,#f9fade,#f9fade); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9fade', endColorstr='#fff9fade', GradientType=0); } #cpanel div.icon a:hover, #cpanel div.icon a:focus, .cpanel div.icon a:hover, .cpanel div.icon a:focus { border-left: 1px solid #868778; border-top: 1px solid #868778; border-right: 1px solid #f6f7db; border-bottom: 1px solid #f6f7db; color: #054993; background: #e5d9c3; } fieldset { border: 1px #c7c8b2 solid; } legend { color: #2c2c2c; } fieldset ul.checklist input:focus { outline: thin dotted #2c2c2c; } fieldset#filter-bar { border-top: 0 solid #c7c8b2; border-right: 0 solid #c7c8b2; border-bottom: 1px solid #c7c8b2; border-left: 0 solid #c7c8b2; } fieldset#filter-bar ol, fieldset#filter-bar ul { border: 0; } fieldset#filter-bar ol li fieldset, fieldset#filter-bar ul li fieldset { border: 0; } .invalid { color: #a20000; } input.invalid { border: 1px solid #a20000; } input.readonly, span.faux-input { border: 0; } input.required { background-color: #e5f0fa; } input.disabled { background-color: #eeeeee; } input, select, span.faux-input { background-color: #ffffff; border: 1px solid #c7c8b2; } input[type="button"], input[type="submit"], input[type="reset"] { color: #054993; background-color: #f9fade; background-image: -moz-linear-gradient(top,#f9fade,#f9fade); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f9fade),to(#f9fade)); background-image: -webkit-linear-gradient(top,#f9fade,#f9fade); background-image: -o-linear-gradient(top,#f9fade,#f9fade); background-image: linear-gradient(to bottom,#f9fade,#f9fade); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9fade', endColorstr='#fff9fade', GradientType=0); } input[type="button"]:hover, input[type="button"]:focus, input[type="submit"]:hover, input[type="submit"]:focus, input[type="reset"]:hover, input[type="reset"]:focus { background: #e5d9c3; } textarea { background-color: #ffffff; border: 1px solid #c7c8b2; } input:focus, select:focus, textarea:focus, option:focus, input:hover, select:hover, textarea:hover, option:hover { background-color: #e5d9c3; color: #054993; } .paramrules { background: #f9fade; } span.gi { color: #c7c8b2; } table.admintable td.key, table.admintable td.paramlist_key { background-color: #f9fade; color: #2c2c2c; border-bottom: 1px solid #c7c8b2; border-right: 1px solid #c7c8b2; } table.paramlist td.paramlist_description { background-color: #f9fade; color: #2c2c2c; border-bottom: 1px solid #c7c8b2; border-right: 1px solid #c7c8b2; } fieldset.adminform { border: 1px solid #c7c8b2; } table.adminform { background-color: #ffffff; } table.adminform tr.row0 { background-color: #ffffff; } table.adminform tr.row1 { background-color: #e5d9c3; } table.adminform th { color: #2c2c2c; background: #ffffff; } table.adminform tr { border-bottom: 1px solid #c7c8b2; border-right: 1px solid #c7c8b2; } table.adminlist { border-spacing: 1px; background-color: #ffffff; color: #2c2c2c; } table.adminlist.modal { border-right: 1px solid #c7c8b2; border-left: 1px solid #c7c8b2; } table.adminlist a { color: #054993; } table.adminlist thead th { background: #ffffff; color: #2c2c2c; border-bottom: 1px solid #c7c8b2; } table.adminlist tbody tr { background: #ffffff; } table.adminlist tbody tr.row1 { background: #ffffff; } table.adminlist tbody tr.row1:last-child td, table.adminlist tbody tr.row1:last-child th { border-bottom: 1px solid #c7c8b2; } table.adminlist tbody tr.row0:hover td, table.adminlist tbody tr.row1:hover td, table.adminlist tbody tr.row0:hover th, table.adminlist tbody tr.row1:hover th, table.adminlist tbody tr.row0:focus td, table.adminlist tbody tr.row1:focus td, table.adminlist tbody tr.row0:focus th, table.adminlist tbody tr.row1:focus th { background-color: #e5d9c3; } table.adminlist tbody tr td, table.adminlist tbody tr th { border-right: 1px solid #c7c8b2; } table.adminlist tbody tr td:last-child { border-right: none; } table.adminlist tbody tr.row0:last-child td, table.adminlist tbody tr.row0:last-child th { border-bottom: 1px solid #c7c8b2; } table.adminlist tbody tr.row0 td, table.adminlist tbody tr.row0 th { background-color: #f9fade; background-image: -moz-linear-gradient(top,#f9fade,#f9fade); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f9fade),to(#f9fade)); background-image: -webkit-linear-gradient(top,#f9fade,#f9fade); background-image: -o-linear-gradient(top,#f9fade,#f9fade); background-image: linear-gradient(to bottom,#f9fade,#f9fade); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9fade', endColorstr='#fff9fade', GradientType=0); } table.adminlist { border-bottom: 0 solid #c7c8b2; } table.adminlist tfoot tr { color: #2c2c2c; } table.adminlist tfoot td, table.adminlist tfoot th { background-color: #ffffff; border-top: 1px solid #c7c8b2; } table.adminlist tr td.btns a { border: 1px solid #c7c8b2; background-color: #f9fade; background-image: -moz-linear-gradient(top,#f9fade,#f9fade); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f9fade),to(#f9fade)); background-image: -webkit-linear-gradient(top,#f9fade,#f9fade); background-image: -o-linear-gradient(top,#f9fade,#f9fade); background-image: linear-gradient(to bottom,#f9fade,#f9fade); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9fade', endColorstr='#fff9fade', GradientType=0); color: #054993; } table.adminlist tr td.btns a:hover, table.adminlist tr td.btns a:active, table.adminlist tr td.btns a:focus { background-color: #ffffff; } a.saveorder { background: url(../images/admin/filesave.png) no-repeat; } a.saveorder.inactive { background-position: 0 -16px; } fieldset.batch { background: #ffffff; } button { color: #054993; border: 1px solid #c7c8b2; background-color: #f9fade; background-image: -moz-linear-gradient(top,#f9fade,#f9fade); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f9fade),to(#f9fade)); background-image: -webkit-linear-gradient(top,#f9fade,#f9fade); background-image: -o-linear-gradient(top,#f9fade,#f9fade); background-image: linear-gradient(to bottom,#f9fade,#f9fade); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9fade', endColorstr='#fff9fade', GradientType=0); } button:hover, button:focus { background: #e5d9c3; } .invalid { color: #ff0000; } .button1 { border: 1px solid #c7c8b2; color: #054993; background-color: #f9fade; background-image: -moz-linear-gradient(top,#f9fade,#f9fade); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f9fade),to(#f9fade)); background-image: -webkit-linear-gradient(top,#f9fade,#f9fade); background-image: -o-linear-gradient(top,#f9fade,#f9fade); background-image: linear-gradient(to bottom,#f9fade,#f9fade); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9fade', endColorstr='#fff9fade', GradientType=0); } .button1 a { color: #054993; } .button1 a:hover, .button1 a:focus { background: #e5d9c3; } .button2-left, .button2-right { border: 1px solid #c7c8b2; background-color: #f9fade; background-image: -moz-linear-gradient(top,#f9fade,#f9fade); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f9fade),to(#f9fade)); background-image: -webkit-linear-gradient(top,#f9fade,#f9fade); background-image: -o-linear-gradient(top,#f9fade,#f9fade); background-image: linear-gradient(to bottom,#f9fade,#f9fade); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9fade', endColorstr='#fff9fade', GradientType=0); } .button2-left a, .button2-right a, .button2-left span, .button2-right span { color: #054993; } .button2-left span, .button2-right span { color: #999999; } .page span, .blank span { color: #054993; } .button2-left a:hover, .button2-right a:hover, .button2-left a:focus, .button2-right a:focus { background: #e5d9c3; } .pagination .page span { color: #999999; } .tip { background: #000000; border: 1px solid #FFFFFF; } .tip-title { background: url(../images/selector-arrow-std.png) no-repeat; } a img.calendar { background: url(../images/calendar.png) no-repeat; } .jgrid span.publish { background-image: url(../images/admin/tick.png); } .jgrid span.unpublish { background-image: url(../images/admin/publish_x.png); } .jgrid span.archive { background-image: url(../images/menu/icon-16-archive.png); } .jgrid span.trash { background-image: url(../images/menu/icon-16-trash.png); } .jgrid span.default { background-image: url(../images/menu/icon-16-default.png); } .jgrid span.notdefault { background-image: url(../images/menu/icon-16-notdefault.png); } .jgrid span.checkedout { background-image: url(../images/admin/checked_out.png); } .jgrid span.downarrow { background-image: url(../images/admin/downarrow.png); } .jgrid span.downarrow_disabled { background-image: url(../images/admin/downarrow0.png); } .jgrid span.uparrow { background-image: url(../images/admin/uparrow.png); } .jgrid span.uparrow_disabled { background-image: url(../images/admin/uparrow0.png); } .jgrid span.published { background-image: url(../images/admin/publish_g.png); } .jgrid span.expired { background-image: url(../images/admin/publish_r.png); } .jgrid span.pending { background-image: url(../images/admin/publish_y.png); } .jgrid span.warning { background-image: url(../images/admin/publish_y.png); } .icon-32-send { background-image: url(../images/toolbar/icon-32-send.png); } .icon-32-delete { background-image: url(../images/toolbar/icon-32-delete.png); } .icon-32-help { background-image: url(../images/toolbar/icon-32-help.png); } .icon-32-cancel { background-image: url(../images/toolbar/icon-32-cancel.png); } .icon-32-checkin { background-image: url(../images/toolbar/icon-32-checkin.png); } .icon-32-options { background-image: url(../images/toolbar/icon-32-config.png); } .icon-32-apply { background-image: url(../images/toolbar/icon-32-apply.png); } .icon-32-back { background-image: url(../images/toolbar/icon-32-back.png); } .icon-32-forward { background-image: url(../images/toolbar/icon-32-forward.png); } .icon-32-save { background-image: url(../images/toolbar/icon-32-save.png); } .icon-32-edit { background-image: url(../images/toolbar/icon-32-edit.png); } .icon-32-copy { background-image: url(../images/toolbar/icon-32-copy.png); } .icon-32-move { background-image: url(../images/toolbar/icon-32-move.png); } .icon-32-new { background-image: url(../images/toolbar/icon-32-new.png); } .icon-32-upload { background-image: url(../images/toolbar/icon-32-upload.png); } .icon-32-assign { background-image: url(../images/toolbar/icon-32-publish.png); } .icon-32-html { background-image: url(../images/toolbar/icon-32-html.png); } .icon-32-css { background-image: url(../images/toolbar/icon-32-css.png); } .icon-32-menus { background-image: url(../images/toolbar/icon-32-menu.png); } .icon-32-publish { background-image: url(../images/toolbar/icon-32-publish.png); } .icon-32-unblock { background-image: url(../images/toolbar/icon-32-unblock.png); } .icon-32-unpublish { background-image: url(../images/toolbar/icon-32-unpublish.png); } .icon-32-restore { background-image: url(../images/toolbar/icon-32-revert.png); } .icon-32-trash { background-image: url(../images/toolbar/icon-32-trash.png); } .icon-32-archive { background-image: url(../images/toolbar/icon-32-archive.png); } .icon-32-unarchive { background-image: url(../images/toolbar/icon-32-unarchive.png); } .icon-32-preview { background-image: url(../images/toolbar/icon-32-preview.png); } .icon-32-default { background-image: url(../images/toolbar/icon-32-default.png); } .icon-32-refresh { background-image: url(../images/toolbar/icon-32-refresh.png); } .icon-32-save-new { background-image: url(../images/toolbar/icon-32-save-new.png); } .icon-32-save-copy { background-image: url(../images/toolbar/icon-32-save-copy.png); } .icon-32-error { background-image: url(../images/toolbar/icon-32-error.png); } .icon-32-new-style { background-image: url(../images/toolbar/icon-32-new-style.png); } .icon-32-delete-style { background-image: url(../images/toolbar/icon-32-delete-style.png); } .icon-32-purge { background-image: url(../images/toolbar/icon-32-purge.png); } .icon-32-remove { background-image: url(../images/toolbar/icon-32-remove.png); } .icon-32-featured { background-image: url(../images/toolbar/icon-32-featured.png); } .icon-32-unfeatured { background-image: url(../images/toolbar/icon-32-featured.png); background-position: 0% 100%; } .icon-32-export { background-image: url(../images/toolbar/icon-32-export.png); } .icon-32-stats { background-image: url(../images/toolbar/icon-32-stats.png); } .icon-32-print { background-image: url(../images/toolbar/icon-32-print.png); } .icon-32-batch { background-image: url(../images/toolbar/icon-32-batch.png); } .icon-32-envelope { background-image: url(../images/toolbar/icon-32-messaging.png); } .icon-32-download { background-image: url(../images/toolbar/icon-32-export.png); } .icon-32-bars { background-image: url(../images/toolbar/icon-32-stats.png); } .icon-48-categories { background-image: url(../images/header/icon-48-category.png); } .icon-48-category-edit { background-image: url(../images/header/icon-48-category.png); } .icon-48-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-generic { background-image: url(../images/header/icon-48-generic.png); } .icon-48-banners { background-image: url(../images/header/icon-48-banner.png); } .icon-48-banners-categories { background-image: url(../images/header/icon-48-banner-categories.png); } .icon-48-banners-category-edit { background-image: url(../images/header/icon-48-banner-categories.png); } .icon-48-banners-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-banners-clients { background-image: url(../images/header/icon-48-banner-client.png); } .icon-48-banners-tracks { background-image: url(../images/header/icon-48-banner-tracks.png); } .icon-48-checkin { background-image: url(../images/header/icon-48-checkin.png); } .icon-48-clear { background-image: url(../images/header/icon-48-clear.png); } .icon-48-contact { background-image: url(../images/header/icon-48-contacts.png); } .icon-48-contact-categories { background-image: url(../images/header/icon-48-contacts-categories.png); } .icon-48-contact-category-edit { background-image: url(../images/header/icon-48-contacts-categories.png); } .icon-48-contact-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-purge { background-image: url(../images/header/icon-48-purge.png); } .icon-48-cpanel { background-image: url(../images/header/icon-48-cpanel.png); } .icon-48-config { background-image: url(../images/header/icon-48-config.png); } .icon-48-groups { background-image: url(../images/header/icon-48-groups.png); } .icon-48-groups-add { background-image: url(../images/header/icon-48-groups-add.png); } .icon-48-levels { background-image: url(../images/header/icon-48-levels.png); } .icon-48-levels-add { background-image: url(../images/header/icon-48-levels-add.png); } .icon-48-module { background-image: url(../images/header/icon-48-module.png); } .icon-48-menu { background-image: url(../images/header/icon-48-menu.png); } .icon-48-menu-add { background-image: url(../images/header/icon-48-menu-add.png); } .icon-48-menumgr { background-image: url(../images/header/icon-48-menumgr.png); } .icon-48-trash { background-image: url(../images/header/icon-48-trash.png); } .icon-48-user { background-image: url(../images/header/icon-48-user.png); } .icon-48-user-add { background-image: url(../images/header/icon-48-user-add.png); } .icon-48-user-edit { background-image: url(../images/header/icon-48-user-edit.png); } .icon-48-user-profile { background-image: url(../images/header/icon-48-user-profile.png); } .icon-48-inbox { background-image: url(../images/header/icon-48-inbox.png); } .icon-48-new-privatemessage { background-image: url(../images/header/icon-48-new-privatemessage.png); } .icon-48-msgconfig { background-image: url(../images/header/icon-48-message_config.png); } .icon-48-langmanager { background-image: url(../images/header/icon-48-language.png); } .icon-48-mediamanager { background-image: url(../images/header/icon-48-media.png); } .icon-48-plugin { background-image: url(../images/header/icon-48-plugin.png); } .icon-48-help_header { background-image: url(../images/header/icon-48-help_header.png); } .icon-48-impressions { background-image: url(../images/header/icon-48-stats.png); } .icon-48-browser { background-image: url(../images/header/icon-48-stats.png); } .icon-48-searchtext { background-image: url(../images/header/icon-48-stats.png); } .icon-48-thememanager { background-image: url(../images/header/icon-48-themes.png); } .icon-48-writemess { background-image: url(../images/header/icon-48-writemess.png); } .icon-48-featured { background-image: url(../images/header/icon-48-featured.png); } .icon-48-sections { background-image: url(../images/header/icon-48-section.png); } .icon-48-article-add { background-image: url(../images/header/icon-48-article-add.png); } .icon-48-article-edit { background-image: url(../images/header/icon-48-article-edit.png); } .icon-48-article { background-image: url(../images/header/icon-48-article.png); } .icon-48-content-categories { background-image: url(../images/header/icon-48-category.png); } .icon-48-content-category-edit { background-image: url(../images/header/icon-48-category.png); } .icon-48-content-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-install { background-image: url(../images/header/icon-48-extension.png); } .icon-48-dbbackup { background-image: url(../images/header/icon-48-backup.png); } .icon-48-dbrestore { background-image: url(../images/header/icon-48-dbrestore.png); } .icon-48-dbquery { background-image: url(../images/header/icon-48-query.png); } .icon-48-systeminfo { background-image: url(../images/header/icon-48-info.png); } .icon-48-massmail { background-image: url(../images/header/icon-48-massmail.png); } .icon-48-redirect { background-image: url(../images/header/icon-48-redirect.png); } .icon-48-search { background-image: url(../images/header/icon-48-search.png); } .icon-48-finder { background-image: url(../images/header/icon-48-search.png); } .icon-48-newsfeeds { background-image: url(../images/header/icon-48-newsfeeds.png); } .icon-48-newsfeeds-categories { background-image: url(../images/header/icon-48-newsfeeds-cat.png); } .icon-48-newsfeeds-category-edit { background-image: url(../images/header/icon-48-newsfeeds-cat.png); } .icon-48-newsfeeds-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-weblinks { background-image: url(../images/header/icon-48-links.png); } .icon-48-weblinks-categories { background-image: url(../images/header/icon-48-links-cat.png); } .icon-48-weblinks-category-edit { background-image: url(../images/header/icon-48-links-cat.png); } .icon-48-weblinks-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-tags { background-image: url(../images/header/icon-48-tags.png); } div.message { border: 1px solid #c7c8b2; color: #2c2c2c; } .helpFrame { border-left: 0 solid #c7c8b2; border-right: none; border-top: none; border-bottom: none; } .outline { border: 1px solid #c7c8b2; background: #ffffff; } dl.menu_type dt { border-bottom: 1px solid #c7c8b2; } ul#new-modules-list { border-top: 1px solid #c7c8b2; } #skiplinkholder a, #skiplinkholder a:link, #skiplinkholder a:visited { color: #ffffff; background: #054993; border-bottom: solid #336 2px; } fieldset.panelform { border: none 0; } a.move_up { background-image: url('../images/admin/uparrow.png'); } span.move_up { background-image: url('../images/admin/uparrow0.png'); } a.move_down { background-image: url('../images/admin/downarrow.png'); } span.move_down { background-image: url('../images/admin/downarrow0.png'); } a.grid_false { background-image: url('../images/admin/publish_x.png'); } a.grid_true { background-image: url('../images/admin/tick.png'); } a.grid_trash { background-image: url('../images/admin/icon-16-trash.png'); } tr.row1 { background-color: #f9fade; } table.aclsummary-table td.col2, table.aclsummary-table th.col2, table.aclsummary-table td.col3, table.aclsummary-table th.col3, table.aclsummary-table td.col4, table.aclsummary-table th.col4, table.aclsummary-table td.col5, table.aclsummary-table th.col5, table.aclsummary-table td.col6, table.aclsummary-table th.col6, table.aclmodify-table td.col2, table.aclmodify-table th.col2 { border-left: 1px solid #c7c8b2; } span.icon-16-unset { background: url(../images/admin/icon-16-denyinactive.png) no-repeat; } span.icon-16-allowed { background: url(../images/admin/icon-16-allow.png) no-repeat; } span.icon-16-denied { background: url(../images/admin/icon-16-deny.png) no-repeat; } span.icon-16-locked { background: url(../images/admin/checked_out.png) 0 0 no-repeat; } label.icon-16-allow { background: url(../images/admin/icon-16-allow.png) no-repeat; } label.icon-16-deny { background: url(../images/admin/icon-16-deny.png) no-repeat; } a.icon-16-allow { background: url(../images/admin/icon-16-allow.png) no-repeat; } a.icon-16-deny { background: url(../images/admin/icon-16-deny.png) no-repeat; } a.icon-16-allowinactive { background: url(../images/admin/icon-16-allowinactive.png) no-repeat; } a.icon-16-denyinactive { background: url(../images/admin/icon-16-denyinactive.png) no-repeat; } ul.acllegend li.acl-allowed { background: url(../images/admin/icon-16-allow.png) no-repeat left; } ul.acllegend li.acl-denied { background: url(../images/admin/icon-16-deny.png) no-repeat left; } li.acl-editgroups, li.acl-resetbtn { background-color: #f9fade; border: 1px solid #c7c8b2; } li.acl-editgroups a, li.acl-resetbtn a { color: #054993; } li.acl-editgroups:hover, li.acl-resetbtn:hover, li.acl-editgroups:focus, li.acl-resetbtn:focus { background-color: #e5d9c3; } table#acl-config { border: 1px solid #c7c8b2; } table#acl-config th, table#acl-config td { background: #f9fade; border-bottom: 1px solid #c7c8b2; } table#acl-config th.acl-groups { border-right: 1px solid #c7c8b2; } #jform_sef_rewrite-lbl { background: url(../images/admin/icon-16-notice-note.png) right top no-repeat; } #permissions-sliders .tip { background: #ffffff; border: 1px solid #c7c8b2; } #permissions-sliders ul#rules, #permissions-sliders ul#rules ul { border: solid 0 #c7c8b2; background: #ffffff; } ul#rules li .pane-sliders .panel h3.title { border: solid 0 #c7c8b2; } #permissions-sliders ul#rules .pane-slider { border: solid 1px #c7c8b2; } #permissions-sliders ul#rules li h3 { border: solid 1px #c7c8b2; } #permissions-sliders ul#rules li h3.pane-toggler-down a { border: solid 0; } #permissions-sliders ul#rules .group-kind { color: #2c2c2c; } #permissions-sliders ul#rules table.group-rules { border: solid 1px #c7c8b2; } #permissions-sliders ul#rules table.group-rules td { border-right: solid 1px #c7c8b2; border-bottom: solid 1px #c7c8b2; } #permissions-sliders ul#rules table.group-rules th { background: #e5d9c3; border-right: solid 1px #c7c8b2; border-bottom: solid 1px #c7c8b2; color: #2c2c2c; } ul#rules table.aclmodify-table { border: solid 1px #c7c8b2; } ul#rules table.group-rules td label { border: solid 0 #c7c8b2; } #permissions-sliders ul#rules .mypanel { border: solid 0 #c7c8b2; } #permissions-sliders ul#rules table.group-rules td { background: #ffffff; } #permissions-sliders span.level { color: #c7c8b2; background-image: none; } .check-0, table.adminlist tbody td.check-0 { background-color: #ffffcf; } .check-a, table.adminlist tbody td.check-a { background-color: #cfffda; } .check-d, table.adminlist tbody td.check-d { background-color: #ffcfcf; } #system-message dd ul { color: #2c2c2c; } #system-message dd.error ul { color: #2c2c2c; } #system-message dd.message ul { color: #2c2c2c; } #system-message dd.notice ul { color: #2c2c2c; } #menu { color: #2c2c2c; } #menu ul.dropdown-menu { background-color: #f9fade; background-image: -moz-linear-gradient(top,#f9fade,#f9fade); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f9fade),to(#f9fade)); background-image: -webkit-linear-gradient(top,#f9fade,#f9fade); background-image: -o-linear-gradient(top,#f9fade,#f9fade); background-image: linear-gradient(to bottom,#f9fade,#f9fade); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9fade', endColorstr='#fff9fade', GradientType=0); color: #2c2c2c; } #menu ul.dropdown-menu li.dropdown-submenu { background: url(../images/j_arrow.png) no-repeat right 50%; } #menu ul.dropdown-menu li.divider { margin-bottom: 0; border-bottom: 1px dotted #c7c8b2; } #menu a { color: #054993; background-repeat: no-repeat; background-position: left 50%; } #menu li { border-right: 1px solid #c7c8b2; background-color: transparent; } #menu li a:hover, #menu li a:focus { background-color: #e5d9c3; } #menu li.disabled a:hover, #menu li.disabled a:focus, #menu li.disabled a { color: #c7c8b2; background-color: #f9fade; background-image: -moz-linear-gradient(top,#f9fade,#f9fade); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f9fade),to(#f9fade)); background-image: -webkit-linear-gradient(top,#f9fade,#f9fade); background-image: -o-linear-gradient(top,#f9fade,#f9fade); background-image: linear-gradient(to bottom,#f9fade,#f9fade); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9fade', endColorstr='#fff9fade', GradientType=0); } #menu li ul { border: 1px solid #c7c8b2; } #menu li li { background-color: transparent; } #menu li.sfhover a { background-color: #e5d9c3; } #menu li.sfhover li a { background-color: transparent; } #menu li.sfhover li.sfhover a, #menu li li a:focus { background-color: #e5d9c3; } #menu li.sfhover li.sfhover li a { background-color: transparent; } #menu li.sfhover li.sfhover li.sfhover a, #menu li li li a:focus { background-color: #e5d9c3; } #menu li li a:focus, #menu li li li a:focus { background-color: #e5d9c3; } #menu li li li a:focus { background-color: #e5d9c3; } #submenu { border-bottom: 1px solid #c7c8b2; } #submenu li, #submenu span.nolink { background-color: #f9fade; background-image: -moz-linear-gradient(top,#f9fade,#f9fade); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f9fade),to(#f9fade)); background-image: -webkit-linear-gradient(top,#f9fade,#f9fade); background-image: -o-linear-gradient(top,#f9fade,#f9fade); background-image: linear-gradient(to bottom,#f9fade,#f9fade); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9fade', endColorstr='#fff9fade', GradientType=0); border: 1px solid #c7c8b2; color: #054993; } #submenu li:hover, #submenu li:focus { background: #e5d9c3; } #submenu li.active, #submenu span.nolink.active { background: #ffffff; border-bottom: 1px solid #ffffff; } #submenu li.active a, #submenu span.nolink.active { color: #000; } .element-invisible { margin: 0; padding: 0; } div.CodeMirror-wrapping { border: 1px solid #c7c8b2; } table.adminform tr.row0 { background-color: #ffffff; } ul.alternating > li:nth-child(odd) { background-color: #ffffff; } ul.alternating > li:nth-child(even) { background-color: #f9fade; } ol.alternating > li:nth-child(odd) { background-color: #ffffff; } ol.alternating > li:nth-child(even) { background-color: #f9fade; } #installer-database, #installer-discover, #installer-update, #installer-warnings { border-top: 1px solid #c7c8b2; } #installer-database p.warning { background: transparent url(../images/admin/icon-16-deny.png) center left no-repeat; } #installer-database p.nowarning { background: transparent url(../images/admin/icon-16-allow.png) center left no-repeat; } .input-append, .input-prepend { font-size: 1.2em; } PKb��\> <�<�%templates/hathor/css/colour_brown.cssnu�[���.clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; content: ""; line-height: 0; } .clearfix:after { clear: both; } .hide-text { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .input-block-level { display: block; width: 100%; min-height: 25px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } #form-login .btn { display: inline-block; *display: inline; *zoom: 1; padding: 4px 14px; margin-bottom: 0; font-size: 13px; line-height: 15px; *line-height: 15px; text-align: center; vertical-align: middle; cursor: pointer; color: #333333; text-shadow: 0 1px 1px rgba(255,255,255,0.75); background-color: #f5f5f5; background-image: -moz-linear-gradient(top,#ffffff,#e6e6e6); background-image: -webkit-gradient(linear,0 0,0 100%,from(#ffffff),to(#e6e6e6)); background-image: -webkit-linear-gradient(top,#ffffff,#e6e6e6); background-image: -o-linear-gradient(top,#ffffff,#e6e6e6); background-image: linear-gradient(to bottom,#ffffff,#e6e6e6); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe5e5e5', GradientType=0); border-color: #e6e6e6 #e6e6e6 #bfbfbf; *background-color: #e6e6e6; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); border: 1px solid #bbb; *border: 0; border-bottom-color: #a2a2a2; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; *margin-left: .3em; -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); } #form-login .btn:hover, #form-login .btn:focus, #form-login .btn:active, #form-login .btn.active, #form-login .btn.disabled, #form-login .btn[disabled] { color: #333333; background-color: #e6e6e6; *background-color: #d9d9d9; } #form-login .btn:active, #form-login .btn.active { background-color: #cccccc \9; } #form-login .btn:first-child { *margin-left: 0; } #form-login .btn:hover { color: #333333; text-decoration: none; background-color: #e6e6e6; *background-color: #d9d9d9; background-position: 0 -15px; -webkit-transition: background-position .1s linear; -moz-transition: background-position .1s linear; -o-transition: background-position .1s linear; transition: background-position .1s linear; } #form-login .btn:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } #form-login .btn.active, #form-login .btn:active { background-color: #e6e6e6; background-color: #d9d9d9 \9; background-image: none; outline: 0; -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); } #form-login .btn.disabled, #form-login .btn[disabled] { cursor: default; background-color: #e6e6e6; background-image: none; opacity: 0.65; filter: alpha(opacity=65); -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .btn-large { padding: 9px 14px; font-size: 15px; line-height: normal; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .btn-large [class^="icon-"] { margin-top: 2px; } .input-append input[class*="span"], .input-append .uneditable-input[class*="span"], .input-prepend input[class*="span"], .input-prepend .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"], .row-fluid .input-prepend [class*="span"], .row-fluid .input-append [class*="span"] { display: inline-block; } .input-append, .input-prepend { margin-bottom: 5px; font-size: 0; white-space: nowrap; } .input-append input, .input-append select, .input-append .uneditable-input, .input-prepend input, .input-prepend select, .input-prepend .uneditable-input { position: relative; margin-bottom: 0; *margin-left: 0; font-size: 13px; vertical-align: top; -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-append input:focus, .input-append select:focus, .input-append .uneditable-input:focus, .input-prepend input:focus, .input-prepend select:focus, .input-prepend .uneditable-input:focus { z-index: 2; } .input-append .add-on, .input-prepend .add-on { display: inline-block; width: auto; height: 15px; min-width: 16px; padding: 4px 5px; font-size: 13px; font-weight: normal; line-height: 15px; text-align: center; text-shadow: 0 1px 0 #ffffff; background-color: #eeeeee; border: 1px solid #ccc; } .input-append .add-on, .input-append .btn, .input-prepend .add-on, .input-prepend .btn { margin-left: -1px; vertical-align: top; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-append .active, .input-prepend .active { background-color: #a9dba9; border-color: #46a546; } .input-prepend .add-on, .input-prepend .btn { margin-right: -1px; } .input-prepend .add-on:first-child, .input-prepend .btn:first-child { -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-append input, .input-append select, .input-append .uneditable-input { -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-append .add-on:last-child, .input-append .btn:last-child { -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-prepend.input-append input, .input-prepend.input-append select, .input-prepend.input-append .uneditable-input { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-prepend.input-append .add-on:first-child, .input-prepend.input-append .btn:first-child { margin-right: -1px; -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-prepend.input-append .add-on:last-child, .input-prepend.input-append .btn:last-child { margin-left: -1px; -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .form-search .input-append .search-query, .form-search .input-prepend .search-query { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .form-search .input-append .search-query { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search .input-append .btn { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .search-query { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .btn { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search input, .form-search textarea, .form-search select, .form-search .help-inline, .form-search .uneditable-input, .form-search .input-prepend, .form-search .input-append, .form-inline input, .form-inline textarea, .form-inline select, .form-inline .help-inline, .form-inline .uneditable-input, .form-inline .input-prepend, .form-inline .input-append, .form-horizontal input, .form-horizontal textarea, .form-horizontal select, .form-horizontal .help-inline, .form-horizontal .uneditable-input, .form-horizontal .input-prepend, .form-horizontal .input-append { display: inline-block; *display: inline; *zoom: 1; margin-bottom: 0; vertical-align: middle; } .form-search .hide, .form-inline .hide, .form-horizontal .hide { display: none; } .form-search .input-append, .form-inline .input-append, .form-search .input-prepend, .form-inline .input-prepend { margin-bottom: 0; } .element-invisible { position: absolute; padding: 0 !important; margin: 0 !important; border: 0; height: 1px; width: 1px !important; overflow: hidden; } #form-login select, #form-login input[type="text"], #form-login input[type="password"] { display: inline-block; padding: 4px 6px; margin-bottom: 9px; font-size: 13px; line-height: 15px; color: #555555; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; width: 175px; } .label, .badge { display: inline-block; padding: 2px 4px; font-size: 10.998px; font-weight: bold; line-height: 14px; color: #ffffff; vertical-align: baseline; white-space: nowrap; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #999999; } .label { -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .badge { padding-left: 9px; padding-right: 9px; -webkit-border-radius: 9px; -moz-border-radius: 9px; border-radius: 9px; } .label:empty, .badge:empty { display: none; } a.label:hover, a.label:focus, a.badge:hover, a.badge:focus { color: #ffffff; text-decoration: none; cursor: pointer; } .label-important, .badge-important { background-color: #a20000; } .label-important[href], .badge-important[href] { background-color: #6f0000; } .label-warning, .badge-warning { background-color: #f89406; } .label-warning[href], .badge-warning[href] { background-color: #c67605; } .label-success, .badge-success { background-color: #005800; } .label-success[href], .badge-success[href] { background-color: #002500; } .label-info, .badge-info { background-color: #3a87ad; } .label-info[href], .badge-info[href] { background-color: #2d6987; } .label-inverse, .badge-inverse { background-color: #333333; } .label-inverse[href], .badge-inverse[href] { background-color: #1a1a1a; } .btn .label, .btn .badge { position: relative; top: -1px; } .btn-mini .label, .btn-mini .badge { top: 0; } body { background-color: #ffffff; color: #2c2c2c; } h1 { color: #2c2c2c; } a:link { color: #054993; } a:visited { color: #054993; } #header { background: #ffffff url(../images/j_logo.png) no-repeat; } #header h1.title { color: #2c2c2c; } #nav { background-color: #d5c1b2; background-image: -moz-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#d5c1b2),to(#d5c1b2)); background-image: -webkit-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -o-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: linear-gradient(to bottom,#d5c1b2,#d5c1b2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd5c1b2', endColorstr='#ffd5c1b2', GradientType=0); border: 1px solid #000000; } #content { background: #ffffff; } #no-submenu { border-bottom: 1px solid #000000; } #element-box { background: #ffffff; border-right: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; } #element-box.login { border-top: 1px solid #000000; } .enabled, .success, .allow, span.writable { color: #005800; } .disabled, p.error, .warning, .deny, span.unwritable { color: #a20000; } .nowarning { color: #2c2c2c; } .none, .protected { color: #000000; } span.note { background: #ffffff; color: #2c2c2c; } div.checkin-tick { background: url(../images/admin/tick.png) 20px 50% no-repeat; } .ol-foreground { background-color: #d5c1b2; } .ol-background { background-color: #005800; } .ol-textfont { color: #2c2c2c; } .ol-captionfont { color: #ffffff; } .ol-captionfont a { color: #054993; } div.subheader .padding { background: #ffffff; } .pagetitle h2 { color: #2c2c2c; } div.configuration { color: #2c2c2c; background-image: url(../images/menu/icon-16-config.png); background-repeat: no-repeat; } div.toolbar-box { border-right: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; background: #ffffff; } div.toolbar-list li { color: #2c2c2c; } div.toolbar-list li.divider { border-right: 1px dotted #e5d9c3; } div.toolbar-list a { border-left: 1px solid #e5d9c3; border-top: 1px solid #e5d9c3; border-right: 1px solid #000000; border-bottom: 1px solid #000000; background: #d5c1b2; } div.toolbar-list a:hover { border-left: 1px solid #868778; border-top: 1px solid #868778; border-right: 1px solid #f6f7db; border-bottom: 1px solid #f6f7db; background: #e5d9c3; color: #054993; } div.btn-toolbar { margin-left: 5px; padding-top: 3px; } div.btn-toolbar li.divider { border-right: 1px dotted #e5d9c3; } div.btn-toolbar div.btn-group button { border-left: 1px solid #e5d9c3; border-top: 1px solid #e5d9c3; border-right: 1px solid #000000; border-bottom: 1px solid #000000; background-color: #d5c1b2; background-image: -moz-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#d5c1b2),to(#d5c1b2)); background-image: -webkit-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -o-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: linear-gradient(to bottom,#d5c1b2,#d5c1b2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd5c1b2', endColorstr='#ffd5c1b2', GradientType=0); padding: 5px 4px 5px 4px; } div.btn-toolbar div.btn-group button:hover { border-left: 1px solid #868778; border-top: 1px solid #868778; border-right: 1px solid #f6f7db; border-bottom: 1px solid #f6f7db; background: #e5d9c3; color: #054993; cursor: pointer; } div.btn-toolbar a { border-left: 1px solid #e5d9c3; border-top: 1px solid #e5d9c3; border-right: 1px solid #000000; border-bottom: 1px solid #000000; background-color: #d5c1b2; background-image: -moz-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#d5c1b2),to(#d5c1b2)); background-image: -webkit-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -o-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: linear-gradient(to bottom,#d5c1b2,#d5c1b2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd5c1b2', endColorstr='#ffd5c1b2', GradientType=0); padding: 6px 5px; text-align: center; white-space: nowrap; font-size: 1.2em; text-decoration: none; } div.btn-toolbar a:hover { border-left: 1px solid #868778; border-top: 1px solid #868778; border-right: 1px solid #f6f7db; border-bottom: 1px solid #f6f7db; background: #e5d9c3; color: #054993; cursor: pointer; } div.btn-toolbar div.btn-group button.inactive { background: #d5c1b2; } .pane-sliders .title { color: #2c2c2c; } .pane-sliders .panel { border: 1px solid #000000; } .pane-sliders .panel h3 { background-color: #d5c1b2; background-image: -moz-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#d5c1b2),to(#d5c1b2)); background-image: -webkit-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -o-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: linear-gradient(to bottom,#d5c1b2,#d5c1b2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd5c1b2', endColorstr='#ffd5c1b2', GradientType=0); color: #054993; } .pane-sliders .panel h3:hover { background: #e5d9c3; } .pane-sliders .panel h3:hover a { text-decoration: none; } .pane-sliders .adminlist { border: 0 none; } .pane-sliders .adminlist td { border: 0 none; } .pane-toggler span { background: transparent url(../images/j_arrow.png) 5px 50% no-repeat; } .pane-toggler-down span { background: transparent url(../images/j_arrow_down.png) 5px 50% no-repeat; } .pane-toggler-down { border-bottom: 1px solid #000000; } dl.tabs dt { border: 1px solid #000000; background-color: #d5c1b2; background-image: -moz-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#d5c1b2),to(#d5c1b2)); background-image: -webkit-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -o-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: linear-gradient(to bottom,#d5c1b2,#d5c1b2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd5c1b2', endColorstr='#ffd5c1b2', GradientType=0); color: #054993; } dl.tabs dt:hover { background: #e5d9c3; } dl.tabs dt.open { background: #ffffff; border-bottom: 1px solid #ffffff; color: #2c2c2c; } dl.tabs dt.open a:visited { color: #2c2c2c; } dl.tabs dt a:hover { text-decoration: none; } dl.tabs dt a:focus { text-decoration: underline; } div.current { border: 1px solid #000000; background: #ffffff; } div.current fieldset { border: none 0; } div.current fieldset.adminform { border: 1px solid #000000; } #login-page .pagetitle h2 { background: transparent; } #login-page #header { border-bottom: 1px solid #000000; } #login-page #lock { background: url(../images/j_login_lock.png) 50% 0 no-repeat; } #login-page #element-box.login { background-color: #d5c1b2; background-image: -moz-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#d5c1b2),to(#d5c1b2)); background-image: -webkit-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -o-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: linear-gradient(to bottom,#d5c1b2,#d5c1b2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd5c1b2', endColorstr='#ffd5c1b2', GradientType=0); } #form-login { background: #ffffff; border: 1px solid #000000; } #form-login label { color: #2c2c2c; } #form-login div.button1 a { color: #054993; } #cpanel div.icon a, .cpanel div.icon a { color: #054993; border-left: 1px solid #e5d9c3; border-top: 1px solid #e5d9c3; border-right: 1px solid #000000; border-bottom: 1px solid #000000; background-color: #d5c1b2; background-image: -moz-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#d5c1b2),to(#d5c1b2)); background-image: -webkit-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -o-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: linear-gradient(to bottom,#d5c1b2,#d5c1b2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd5c1b2', endColorstr='#ffd5c1b2', GradientType=0); } #cpanel div.icon a:hover, #cpanel div.icon a:focus, .cpanel div.icon a:hover, .cpanel div.icon a:focus { border-left: 1px solid #868778; border-top: 1px solid #868778; border-right: 1px solid #f6f7db; border-bottom: 1px solid #f6f7db; color: #054993; background: #e5d9c3; } fieldset { border: 1px #000000 solid; } legend { color: #2c2c2c; } fieldset ul.checklist input:focus { outline: thin dotted #2c2c2c; } fieldset#filter-bar { border-top: 0 solid #000000; border-right: 0 solid #000000; border-bottom: 1px solid #000000; border-left: 0 solid #000000; } fieldset#filter-bar ol, fieldset#filter-bar ul { border: 0; } fieldset#filter-bar ol li fieldset, fieldset#filter-bar ul li fieldset { border: 0; } .invalid { color: #a20000; } input.invalid { border: 1px solid #a20000; } input.readonly, span.faux-input { border: 0; } input.required { background-color: #e5f0fa; } input.disabled { background-color: #eeeeee; } input, select, span.faux-input { background-color: #ffffff; border: 1px solid #000000; } input[type="button"], input[type="submit"], input[type="reset"] { color: #054993; background-color: #d5c1b2; background-image: -moz-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#d5c1b2),to(#d5c1b2)); background-image: -webkit-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -o-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: linear-gradient(to bottom,#d5c1b2,#d5c1b2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd5c1b2', endColorstr='#ffd5c1b2', GradientType=0); } input[type="button"]:hover, input[type="button"]:focus, input[type="submit"]:hover, input[type="submit"]:focus, input[type="reset"]:hover, input[type="reset"]:focus { background: #e5d9c3; } textarea { background-color: #ffffff; border: 1px solid #000000; } input:focus, select:focus, textarea:focus, option:focus, input:hover, select:hover, textarea:hover, option:hover { background-color: #e5d9c3; color: #054993; } .paramrules { background: #d5c1b2; } span.gi { color: #000000; } table.admintable td.key, table.admintable td.paramlist_key { background-color: #d5c1b2; color: #2c2c2c; border-bottom: 1px solid #000000; border-right: 1px solid #000000; } table.paramlist td.paramlist_description { background-color: #d5c1b2; color: #2c2c2c; border-bottom: 1px solid #000000; border-right: 1px solid #000000; } fieldset.adminform { border: 1px solid #000000; } table.adminform { background-color: #ffffff; } table.adminform tr.row0 { background-color: #ffffff; } table.adminform tr.row1 { background-color: #e5d9c3; } table.adminform th { color: #2c2c2c; background: #ffffff; } table.adminform tr { border-bottom: 1px solid #000000; border-right: 1px solid #000000; } table.adminlist { border-spacing: 1px; background-color: #ffffff; color: #2c2c2c; } table.adminlist.modal { border-right: 1px solid #000000; border-left: 1px solid #000000; } table.adminlist a { color: #054993; } table.adminlist thead th { background: #ffffff; color: #2c2c2c; border-bottom: 1px solid #000000; } table.adminlist tbody tr { background: #ffffff; } table.adminlist tbody tr.row1 { background: #ffffff; } table.adminlist tbody tr.row1:last-child td, table.adminlist tbody tr.row1:last-child th { border-bottom: 1px solid #000000; } table.adminlist tbody tr.row0:hover td, table.adminlist tbody tr.row1:hover td, table.adminlist tbody tr.row0:hover th, table.adminlist tbody tr.row1:hover th, table.adminlist tbody tr.row0:focus td, table.adminlist tbody tr.row1:focus td, table.adminlist tbody tr.row0:focus th, table.adminlist tbody tr.row1:focus th { background-color: #e5d9c3; } table.adminlist tbody tr td, table.adminlist tbody tr th { border-right: 1px solid #000000; } table.adminlist tbody tr td:last-child { border-right: none; } table.adminlist tbody tr.row0:last-child td, table.adminlist tbody tr.row0:last-child th { border-bottom: 1px solid #000000; } table.adminlist tbody tr.row0 td, table.adminlist tbody tr.row0 th { background-color: #d5c1b2; background-image: -moz-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#d5c1b2),to(#d5c1b2)); background-image: -webkit-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -o-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: linear-gradient(to bottom,#d5c1b2,#d5c1b2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd5c1b2', endColorstr='#ffd5c1b2', GradientType=0); } table.adminlist { border-bottom: 0 solid #000000; } table.adminlist tfoot tr { color: #2c2c2c; } table.adminlist tfoot td, table.adminlist tfoot th { background-color: #ffffff; border-top: 1px solid #000000; } table.adminlist tr td.btns a { border: 1px solid #000000; background-color: #d5c1b2; background-image: -moz-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#d5c1b2),to(#d5c1b2)); background-image: -webkit-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -o-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: linear-gradient(to bottom,#d5c1b2,#d5c1b2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd5c1b2', endColorstr='#ffd5c1b2', GradientType=0); color: #054993; } table.adminlist tr td.btns a:hover, table.adminlist tr td.btns a:active, table.adminlist tr td.btns a:focus { background-color: #ffffff; } a.saveorder { background: url(../images/admin/filesave.png) no-repeat; } a.saveorder.inactive { background-position: 0 -16px; } fieldset.batch { background: #ffffff; } button { color: #054993; border: 1px solid #000000; background-color: #d5c1b2; background-image: -moz-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#d5c1b2),to(#d5c1b2)); background-image: -webkit-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -o-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: linear-gradient(to bottom,#d5c1b2,#d5c1b2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd5c1b2', endColorstr='#ffd5c1b2', GradientType=0); } button:hover, button:focus { background: #e5d9c3; } .invalid { color: #ff0000; } .button1 { border: 1px solid #000000; color: #054993; background-color: #d5c1b2; background-image: -moz-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#d5c1b2),to(#d5c1b2)); background-image: -webkit-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -o-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: linear-gradient(to bottom,#d5c1b2,#d5c1b2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd5c1b2', endColorstr='#ffd5c1b2', GradientType=0); } .button1 a { color: #054993; } .button1 a:hover, .button1 a:focus { background: #e5d9c3; } .button2-left, .button2-right { border: 1px solid #000000; background-color: #d5c1b2; background-image: -moz-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#d5c1b2),to(#d5c1b2)); background-image: -webkit-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -o-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: linear-gradient(to bottom,#d5c1b2,#d5c1b2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd5c1b2', endColorstr='#ffd5c1b2', GradientType=0); } .button2-left a, .button2-right a, .button2-left span, .button2-right span { color: #054993; } .button2-left span, .button2-right span { color: #999999; } .page span, .blank span { color: #054993; } .button2-left a:hover, .button2-right a:hover, .button2-left a:focus, .button2-right a:focus { background: #e5d9c3; } .pagination .page span { color: #999999; } .tip { background: #000000; border: 1px solid #FFFFFF; } .tip-title { background: url(../images/selector-arrow-std.png) no-repeat; } a img.calendar { background: url(../images/calendar.png) no-repeat; } .jgrid span.publish { background-image: url(../images/admin/tick.png); } .jgrid span.unpublish { background-image: url(../images/admin/publish_x.png); } .jgrid span.archive { background-image: url(../images/menu/icon-16-archive.png); } .jgrid span.trash { background-image: url(../images/menu/icon-16-trash.png); } .jgrid span.default { background-image: url(../images/menu/icon-16-default.png); } .jgrid span.notdefault { background-image: url(../images/menu/icon-16-notdefault.png); } .jgrid span.checkedout { background-image: url(../images/admin/checked_out.png); } .jgrid span.downarrow { background-image: url(../images/admin/downarrow.png); } .jgrid span.downarrow_disabled { background-image: url(../images/admin/downarrow0.png); } .jgrid span.uparrow { background-image: url(../images/admin/uparrow.png); } .jgrid span.uparrow_disabled { background-image: url(../images/admin/uparrow0.png); } .jgrid span.published { background-image: url(../images/admin/publish_g.png); } .jgrid span.expired { background-image: url(../images/admin/publish_r.png); } .jgrid span.pending { background-image: url(../images/admin/publish_y.png); } .jgrid span.warning { background-image: url(../images/admin/publish_y.png); } .icon-32-send { background-image: url(../images/toolbar/icon-32-send.png); } .icon-32-delete { background-image: url(../images/toolbar/icon-32-delete.png); } .icon-32-help { background-image: url(../images/toolbar/icon-32-help.png); } .icon-32-cancel { background-image: url(../images/toolbar/icon-32-cancel.png); } .icon-32-checkin { background-image: url(../images/toolbar/icon-32-checkin.png); } .icon-32-options { background-image: url(../images/toolbar/icon-32-config.png); } .icon-32-apply { background-image: url(../images/toolbar/icon-32-apply.png); } .icon-32-back { background-image: url(../images/toolbar/icon-32-back.png); } .icon-32-forward { background-image: url(../images/toolbar/icon-32-forward.png); } .icon-32-save { background-image: url(../images/toolbar/icon-32-save.png); } .icon-32-edit { background-image: url(../images/toolbar/icon-32-edit.png); } .icon-32-copy { background-image: url(../images/toolbar/icon-32-copy.png); } .icon-32-move { background-image: url(../images/toolbar/icon-32-move.png); } .icon-32-new { background-image: url(../images/toolbar/icon-32-new.png); } .icon-32-upload { background-image: url(../images/toolbar/icon-32-upload.png); } .icon-32-assign { background-image: url(../images/toolbar/icon-32-publish.png); } .icon-32-html { background-image: url(../images/toolbar/icon-32-html.png); } .icon-32-css { background-image: url(../images/toolbar/icon-32-css.png); } .icon-32-menus { background-image: url(../images/toolbar/icon-32-menu.png); } .icon-32-publish { background-image: url(../images/toolbar/icon-32-publish.png); } .icon-32-unblock { background-image: url(../images/toolbar/icon-32-unblock.png); } .icon-32-unpublish { background-image: url(../images/toolbar/icon-32-unpublish.png); } .icon-32-restore { background-image: url(../images/toolbar/icon-32-revert.png); } .icon-32-trash { background-image: url(../images/toolbar/icon-32-trash.png); } .icon-32-archive { background-image: url(../images/toolbar/icon-32-archive.png); } .icon-32-unarchive { background-image: url(../images/toolbar/icon-32-unarchive.png); } .icon-32-preview { background-image: url(../images/toolbar/icon-32-preview.png); } .icon-32-default { background-image: url(../images/toolbar/icon-32-default.png); } .icon-32-refresh { background-image: url(../images/toolbar/icon-32-refresh.png); } .icon-32-save-new { background-image: url(../images/toolbar/icon-32-save-new.png); } .icon-32-save-copy { background-image: url(../images/toolbar/icon-32-save-copy.png); } .icon-32-error { background-image: url(../images/toolbar/icon-32-error.png); } .icon-32-new-style { background-image: url(../images/toolbar/icon-32-new-style.png); } .icon-32-delete-style { background-image: url(../images/toolbar/icon-32-delete-style.png); } .icon-32-purge { background-image: url(../images/toolbar/icon-32-purge.png); } .icon-32-remove { background-image: url(../images/toolbar/icon-32-remove.png); } .icon-32-featured { background-image: url(../images/toolbar/icon-32-featured.png); } .icon-32-unfeatured { background-image: url(../images/toolbar/icon-32-featured.png); background-position: 0% 100%; } .icon-32-export { background-image: url(../images/toolbar/icon-32-export.png); } .icon-32-stats { background-image: url(../images/toolbar/icon-32-stats.png); } .icon-32-print { background-image: url(../images/toolbar/icon-32-print.png); } .icon-32-batch { background-image: url(../images/toolbar/icon-32-batch.png); } .icon-32-envelope { background-image: url(../images/toolbar/icon-32-messaging.png); } .icon-32-download { background-image: url(../images/toolbar/icon-32-export.png); } .icon-32-bars { background-image: url(../images/toolbar/icon-32-stats.png); } .icon-48-categories { background-image: url(../images/header/icon-48-category.png); } .icon-48-category-edit { background-image: url(../images/header/icon-48-category.png); } .icon-48-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-generic { background-image: url(../images/header/icon-48-generic.png); } .icon-48-banners { background-image: url(../images/header/icon-48-banner.png); } .icon-48-banners-categories { background-image: url(../images/header/icon-48-banner-categories.png); } .icon-48-banners-category-edit { background-image: url(../images/header/icon-48-banner-categories.png); } .icon-48-banners-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-banners-clients { background-image: url(../images/header/icon-48-banner-client.png); } .icon-48-banners-tracks { background-image: url(../images/header/icon-48-banner-tracks.png); } .icon-48-checkin { background-image: url(../images/header/icon-48-checkin.png); } .icon-48-clear { background-image: url(../images/header/icon-48-clear.png); } .icon-48-contact { background-image: url(../images/header/icon-48-contacts.png); } .icon-48-contact-categories { background-image: url(../images/header/icon-48-contacts-categories.png); } .icon-48-contact-category-edit { background-image: url(../images/header/icon-48-contacts-categories.png); } .icon-48-contact-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-purge { background-image: url(../images/header/icon-48-purge.png); } .icon-48-cpanel { background-image: url(../images/header/icon-48-cpanel.png); } .icon-48-config { background-image: url(../images/header/icon-48-config.png); } .icon-48-groups { background-image: url(../images/header/icon-48-groups.png); } .icon-48-groups-add { background-image: url(../images/header/icon-48-groups-add.png); } .icon-48-levels { background-image: url(../images/header/icon-48-levels.png); } .icon-48-levels-add { background-image: url(../images/header/icon-48-levels-add.png); } .icon-48-module { background-image: url(../images/header/icon-48-module.png); } .icon-48-menu { background-image: url(../images/header/icon-48-menu.png); } .icon-48-menu-add { background-image: url(../images/header/icon-48-menu-add.png); } .icon-48-menumgr { background-image: url(../images/header/icon-48-menumgr.png); } .icon-48-trash { background-image: url(../images/header/icon-48-trash.png); } .icon-48-user { background-image: url(../images/header/icon-48-user.png); } .icon-48-user-add { background-image: url(../images/header/icon-48-user-add.png); } .icon-48-user-edit { background-image: url(../images/header/icon-48-user-edit.png); } .icon-48-user-profile { background-image: url(../images/header/icon-48-user-profile.png); } .icon-48-inbox { background-image: url(../images/header/icon-48-inbox.png); } .icon-48-new-privatemessage { background-image: url(../images/header/icon-48-new-privatemessage.png); } .icon-48-msgconfig { background-image: url(../images/header/icon-48-message_config.png); } .icon-48-langmanager { background-image: url(../images/header/icon-48-language.png); } .icon-48-mediamanager { background-image: url(../images/header/icon-48-media.png); } .icon-48-plugin { background-image: url(../images/header/icon-48-plugin.png); } .icon-48-help_header { background-image: url(../images/header/icon-48-help_header.png); } .icon-48-impressions { background-image: url(../images/header/icon-48-stats.png); } .icon-48-browser { background-image: url(../images/header/icon-48-stats.png); } .icon-48-searchtext { background-image: url(../images/header/icon-48-stats.png); } .icon-48-thememanager { background-image: url(../images/header/icon-48-themes.png); } .icon-48-writemess { background-image: url(../images/header/icon-48-writemess.png); } .icon-48-featured { background-image: url(../images/header/icon-48-featured.png); } .icon-48-sections { background-image: url(../images/header/icon-48-section.png); } .icon-48-article-add { background-image: url(../images/header/icon-48-article-add.png); } .icon-48-article-edit { background-image: url(../images/header/icon-48-article-edit.png); } .icon-48-article { background-image: url(../images/header/icon-48-article.png); } .icon-48-content-categories { background-image: url(../images/header/icon-48-category.png); } .icon-48-content-category-edit { background-image: url(../images/header/icon-48-category.png); } .icon-48-content-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-install { background-image: url(../images/header/icon-48-extension.png); } .icon-48-dbbackup { background-image: url(../images/header/icon-48-backup.png); } .icon-48-dbrestore { background-image: url(../images/header/icon-48-dbrestore.png); } .icon-48-dbquery { background-image: url(../images/header/icon-48-query.png); } .icon-48-systeminfo { background-image: url(../images/header/icon-48-info.png); } .icon-48-massmail { background-image: url(../images/header/icon-48-massmail.png); } .icon-48-redirect { background-image: url(../images/header/icon-48-redirect.png); } .icon-48-search { background-image: url(../images/header/icon-48-search.png); } .icon-48-finder { background-image: url(../images/header/icon-48-search.png); } .icon-48-newsfeeds { background-image: url(../images/header/icon-48-newsfeeds.png); } .icon-48-newsfeeds-categories { background-image: url(../images/header/icon-48-newsfeeds-cat.png); } .icon-48-newsfeeds-category-edit { background-image: url(../images/header/icon-48-newsfeeds-cat.png); } .icon-48-newsfeeds-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-weblinks { background-image: url(../images/header/icon-48-links.png); } .icon-48-weblinks-categories { background-image: url(../images/header/icon-48-links-cat.png); } .icon-48-weblinks-category-edit { background-image: url(../images/header/icon-48-links-cat.png); } .icon-48-weblinks-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-tags { background-image: url(../images/header/icon-48-tags.png); } div.message { border: 1px solid #000000; color: #2c2c2c; } .helpFrame { border-left: 0 solid #000000; border-right: none; border-top: none; border-bottom: none; } .outline { border: 1px solid #000000; background: #ffffff; } dl.menu_type dt { border-bottom: 1px solid #000000; } ul#new-modules-list { border-top: 1px solid #000000; } #skiplinkholder a, #skiplinkholder a:link, #skiplinkholder a:visited { color: #ffffff; background: #054993; border-bottom: solid #336 2px; } fieldset.panelform { border: none 0; } a.move_up { background-image: url('../images/admin/uparrow.png'); } span.move_up { background-image: url('../images/admin/uparrow0.png'); } a.move_down { background-image: url('../images/admin/downarrow.png'); } span.move_down { background-image: url('../images/admin/downarrow0.png'); } a.grid_false { background-image: url('../images/admin/publish_x.png'); } a.grid_true { background-image: url('../images/admin/tick.png'); } a.grid_trash { background-image: url('../images/admin/icon-16-trash.png'); } tr.row1 { background-color: #d5c1b2; } table.aclsummary-table td.col2, table.aclsummary-table th.col2, table.aclsummary-table td.col3, table.aclsummary-table th.col3, table.aclsummary-table td.col4, table.aclsummary-table th.col4, table.aclsummary-table td.col5, table.aclsummary-table th.col5, table.aclsummary-table td.col6, table.aclsummary-table th.col6, table.aclmodify-table td.col2, table.aclmodify-table th.col2 { border-left: 1px solid #000000; } span.icon-16-unset { background: url(../images/admin/icon-16-denyinactive.png) no-repeat; } span.icon-16-allowed { background: url(../images/admin/icon-16-allow.png) no-repeat; } span.icon-16-denied { background: url(../images/admin/icon-16-deny.png) no-repeat; } span.icon-16-locked { background: url(../images/admin/checked_out.png) 0 0 no-repeat; } label.icon-16-allow { background: url(../images/admin/icon-16-allow.png) no-repeat; } label.icon-16-deny { background: url(../images/admin/icon-16-deny.png) no-repeat; } a.icon-16-allow { background: url(../images/admin/icon-16-allow.png) no-repeat; } a.icon-16-deny { background: url(../images/admin/icon-16-deny.png) no-repeat; } a.icon-16-allowinactive { background: url(../images/admin/icon-16-allowinactive.png) no-repeat; } a.icon-16-denyinactive { background: url(../images/admin/icon-16-denyinactive.png) no-repeat; } ul.acllegend li.acl-allowed { background: url(../images/admin/icon-16-allow.png) no-repeat left; } ul.acllegend li.acl-denied { background: url(../images/admin/icon-16-deny.png) no-repeat left; } li.acl-editgroups, li.acl-resetbtn { background-color: #d5c1b2; border: 1px solid #000000; } li.acl-editgroups a, li.acl-resetbtn a { color: #054993; } li.acl-editgroups:hover, li.acl-resetbtn:hover, li.acl-editgroups:focus, li.acl-resetbtn:focus { background-color: #e5d9c3; } table#acl-config { border: 1px solid #000000; } table#acl-config th, table#acl-config td { background: #d5c1b2; border-bottom: 1px solid #000000; } table#acl-config th.acl-groups { border-right: 1px solid #000000; } #jform_sef_rewrite-lbl { background: url(../images/admin/icon-16-notice-note.png) right top no-repeat; } #permissions-sliders .tip { background: #ffffff; border: 1px solid #000000; } #permissions-sliders ul#rules, #permissions-sliders ul#rules ul { border: solid 0 #000000; background: #ffffff; } ul#rules li .pane-sliders .panel h3.title { border: solid 0 #000000; } #permissions-sliders ul#rules .pane-slider { border: solid 1px #000000; } #permissions-sliders ul#rules li h3 { border: solid 1px #000000; } #permissions-sliders ul#rules li h3.pane-toggler-down a { border: solid 0; } #permissions-sliders ul#rules .group-kind { color: #2c2c2c; } #permissions-sliders ul#rules table.group-rules { border: solid 1px #000000; } #permissions-sliders ul#rules table.group-rules td { border-right: solid 1px #000000; border-bottom: solid 1px #000000; } #permissions-sliders ul#rules table.group-rules th { background: #e5d9c3; border-right: solid 1px #000000; border-bottom: solid 1px #000000; color: #2c2c2c; } ul#rules table.aclmodify-table { border: solid 1px #000000; } ul#rules table.group-rules td label { border: solid 0 #000000; } #permissions-sliders ul#rules .mypanel { border: solid 0 #000000; } #permissions-sliders ul#rules table.group-rules td { background: #ffffff; } #permissions-sliders span.level { color: #000000; background-image: none; } .check-0, table.adminlist tbody td.check-0 { background-color: #ffffcf; } .check-a, table.adminlist tbody td.check-a { background-color: #cfffda; } .check-d, table.adminlist tbody td.check-d { background-color: #ffcfcf; } #system-message dd ul { color: #2c2c2c; } #system-message dd.error ul { color: #2c2c2c; } #system-message dd.message ul { color: #2c2c2c; } #system-message dd.notice ul { color: #2c2c2c; } #menu { color: #2c2c2c; } #menu ul.dropdown-menu { background-color: #d5c1b2; background-image: -moz-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#d5c1b2),to(#d5c1b2)); background-image: -webkit-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -o-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: linear-gradient(to bottom,#d5c1b2,#d5c1b2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd5c1b2', endColorstr='#ffd5c1b2', GradientType=0); color: #2c2c2c; } #menu ul.dropdown-menu li.dropdown-submenu { background: url(../images/j_arrow.png) no-repeat right 50%; } #menu ul.dropdown-menu li.divider { margin-bottom: 0; border-bottom: 1px dotted #000000; } #menu a { color: #054993; background-repeat: no-repeat; background-position: left 50%; } #menu li { border-right: 1px solid #000000; background-color: transparent; } #menu li a:hover, #menu li a:focus { background-color: #e5d9c3; } #menu li.disabled a:hover, #menu li.disabled a:focus, #menu li.disabled a { color: #000000; background-color: #d5c1b2; background-image: -moz-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#d5c1b2),to(#d5c1b2)); background-image: -webkit-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -o-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: linear-gradient(to bottom,#d5c1b2,#d5c1b2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd5c1b2', endColorstr='#ffd5c1b2', GradientType=0); } #menu li ul { border: 1px solid #000000; } #menu li li { background-color: transparent; } #menu li.sfhover a { background-color: #e5d9c3; } #menu li.sfhover li a { background-color: transparent; } #menu li.sfhover li.sfhover a, #menu li li a:focus { background-color: #e5d9c3; } #menu li.sfhover li.sfhover li a { background-color: transparent; } #menu li.sfhover li.sfhover li.sfhover a, #menu li li li a:focus { background-color: #e5d9c3; } #menu li li a:focus, #menu li li li a:focus { background-color: #e5d9c3; } #menu li li li a:focus { background-color: #e5d9c3; } #submenu { border-bottom: 1px solid #000000; } #submenu li, #submenu span.nolink { background-color: #d5c1b2; background-image: -moz-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#d5c1b2),to(#d5c1b2)); background-image: -webkit-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: -o-linear-gradient(top,#d5c1b2,#d5c1b2); background-image: linear-gradient(to bottom,#d5c1b2,#d5c1b2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd5c1b2', endColorstr='#ffd5c1b2', GradientType=0); border: 1px solid #000000; color: #054993; } #submenu li:hover, #submenu li:focus { background: #e5d9c3; } #submenu li.active, #submenu span.nolink.active { background: #ffffff; border-bottom: 1px solid #ffffff; } #submenu li.active a, #submenu span.nolink.active { color: #000; } .element-invisible { margin: 0; padding: 0; } div.CodeMirror-wrapping { border: 1px solid #000000; } table.adminform tr.row0 { background-color: #ffffff; } ul.alternating > li:nth-child(odd) { background-color: #ffffff; } ul.alternating > li:nth-child(even) { background-color: #d5c1b2; } ol.alternating > li:nth-child(odd) { background-color: #ffffff; } ol.alternating > li:nth-child(even) { background-color: #d5c1b2; } #installer-database, #installer-discover, #installer-update, #installer-warnings { border-top: 1px solid #000000; } #installer-database p.warning { background: transparent url(../images/admin/icon-16-deny.png) center left no-repeat; } #installer-database p.nowarning { background: transparent url(../images/admin/icon-16-allow.png) center left no-repeat; } .input-append, .input-prepend { font-size: 1.2em; } PKb��\��4Y<�<�$templates/hathor/css/colour_blue.cssnu�[���.clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; content: ""; line-height: 0; } .clearfix:after { clear: both; } .hide-text { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .input-block-level { display: block; width: 100%; min-height: 25px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } #form-login .btn { display: inline-block; *display: inline; *zoom: 1; padding: 4px 14px; margin-bottom: 0; font-size: 13px; line-height: 15px; *line-height: 15px; text-align: center; vertical-align: middle; cursor: pointer; color: #333333; text-shadow: 0 1px 1px rgba(255,255,255,0.75); background-color: #f5f5f5; background-image: -moz-linear-gradient(top,#ffffff,#e6e6e6); background-image: -webkit-gradient(linear,0 0,0 100%,from(#ffffff),to(#e6e6e6)); background-image: -webkit-linear-gradient(top,#ffffff,#e6e6e6); background-image: -o-linear-gradient(top,#ffffff,#e6e6e6); background-image: linear-gradient(to bottom,#ffffff,#e6e6e6); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe5e5e5', GradientType=0); border-color: #e6e6e6 #e6e6e6 #bfbfbf; *background-color: #e6e6e6; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); border: 1px solid #bbb; *border: 0; border-bottom-color: #a2a2a2; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; *margin-left: .3em; -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); } #form-login .btn:hover, #form-login .btn:focus, #form-login .btn:active, #form-login .btn.active, #form-login .btn.disabled, #form-login .btn[disabled] { color: #333333; background-color: #e6e6e6; *background-color: #d9d9d9; } #form-login .btn:active, #form-login .btn.active { background-color: #cccccc \9; } #form-login .btn:first-child { *margin-left: 0; } #form-login .btn:hover { color: #333333; text-decoration: none; background-color: #e6e6e6; *background-color: #d9d9d9; background-position: 0 -15px; -webkit-transition: background-position .1s linear; -moz-transition: background-position .1s linear; -o-transition: background-position .1s linear; transition: background-position .1s linear; } #form-login .btn:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } #form-login .btn.active, #form-login .btn:active { background-color: #e6e6e6; background-color: #d9d9d9 \9; background-image: none; outline: 0; -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); } #form-login .btn.disabled, #form-login .btn[disabled] { cursor: default; background-color: #e6e6e6; background-image: none; opacity: 0.65; filter: alpha(opacity=65); -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .btn-large { padding: 9px 14px; font-size: 15px; line-height: normal; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .btn-large [class^="icon-"] { margin-top: 2px; } .input-append input[class*="span"], .input-append .uneditable-input[class*="span"], .input-prepend input[class*="span"], .input-prepend .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"], .row-fluid .input-prepend [class*="span"], .row-fluid .input-append [class*="span"] { display: inline-block; } .input-append, .input-prepend { margin-bottom: 5px; font-size: 0; white-space: nowrap; } .input-append input, .input-append select, .input-append .uneditable-input, .input-prepend input, .input-prepend select, .input-prepend .uneditable-input { position: relative; margin-bottom: 0; *margin-left: 0; font-size: 13px; vertical-align: top; -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-append input:focus, .input-append select:focus, .input-append .uneditable-input:focus, .input-prepend input:focus, .input-prepend select:focus, .input-prepend .uneditable-input:focus { z-index: 2; } .input-append .add-on, .input-prepend .add-on { display: inline-block; width: auto; height: 15px; min-width: 16px; padding: 4px 5px; font-size: 13px; font-weight: normal; line-height: 15px; text-align: center; text-shadow: 0 1px 0 #ffffff; background-color: #eeeeee; border: 1px solid #ccc; } .input-append .add-on, .input-append .btn, .input-prepend .add-on, .input-prepend .btn { margin-left: -1px; vertical-align: top; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-append .active, .input-prepend .active { background-color: #a9dba9; border-color: #46a546; } .input-prepend .add-on, .input-prepend .btn { margin-right: -1px; } .input-prepend .add-on:first-child, .input-prepend .btn:first-child { -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-append input, .input-append select, .input-append .uneditable-input { -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-append .add-on:last-child, .input-append .btn:last-child { -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-prepend.input-append input, .input-prepend.input-append select, .input-prepend.input-append .uneditable-input { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-prepend.input-append .add-on:first-child, .input-prepend.input-append .btn:first-child { margin-right: -1px; -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-prepend.input-append .add-on:last-child, .input-prepend.input-append .btn:last-child { margin-left: -1px; -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .form-search .input-append .search-query, .form-search .input-prepend .search-query { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .form-search .input-append .search-query { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search .input-append .btn { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .search-query { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .btn { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search input, .form-search textarea, .form-search select, .form-search .help-inline, .form-search .uneditable-input, .form-search .input-prepend, .form-search .input-append, .form-inline input, .form-inline textarea, .form-inline select, .form-inline .help-inline, .form-inline .uneditable-input, .form-inline .input-prepend, .form-inline .input-append, .form-horizontal input, .form-horizontal textarea, .form-horizontal select, .form-horizontal .help-inline, .form-horizontal .uneditable-input, .form-horizontal .input-prepend, .form-horizontal .input-append { display: inline-block; *display: inline; *zoom: 1; margin-bottom: 0; vertical-align: middle; } .form-search .hide, .form-inline .hide, .form-horizontal .hide { display: none; } .form-search .input-append, .form-inline .input-append, .form-search .input-prepend, .form-inline .input-prepend { margin-bottom: 0; } .element-invisible { position: absolute; padding: 0 !important; margin: 0 !important; border: 0; height: 1px; width: 1px !important; overflow: hidden; } #form-login select, #form-login input[type="text"], #form-login input[type="password"] { display: inline-block; padding: 4px 6px; margin-bottom: 9px; font-size: 13px; line-height: 15px; color: #555555; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; width: 175px; } .label, .badge { display: inline-block; padding: 2px 4px; font-size: 10.998px; font-weight: bold; line-height: 14px; color: #ffffff; vertical-align: baseline; white-space: nowrap; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #999999; } .label { -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .badge { padding-left: 9px; padding-right: 9px; -webkit-border-radius: 9px; -moz-border-radius: 9px; border-radius: 9px; } .label:empty, .badge:empty { display: none; } a.label:hover, a.label:focus, a.badge:hover, a.badge:focus { color: #ffffff; text-decoration: none; cursor: pointer; } .label-important, .badge-important { background-color: #a20000; } .label-important[href], .badge-important[href] { background-color: #6f0000; } .label-warning, .badge-warning { background-color: #f89406; } .label-warning[href], .badge-warning[href] { background-color: #c67605; } .label-success, .badge-success { background-color: #005800; } .label-success[href], .badge-success[href] { background-color: #002500; } .label-info, .badge-info { background-color: #3a87ad; } .label-info[href], .badge-info[href] { background-color: #2d6987; } .label-inverse, .badge-inverse { background-color: #333333; } .label-inverse[href], .badge-inverse[href] { background-color: #1a1a1a; } .btn .label, .btn .badge { position: relative; top: -1px; } .btn-mini .label, .btn-mini .badge { top: 0; } body { background-color: #ffffff; color: #2c2c2c; } h1 { color: #2c2c2c; } a:link { color: #054993; } a:visited { color: #054993; } #header { background: #ffffff url(../images/j_logo.png) no-repeat; } #header h1.title { color: #2c2c2c; } #nav { background-color: #b1c4db; background-image: -moz-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -webkit-gradient(linear,0 0,0 100%,from(#a5bbd4),to(#c3d2e5)); background-image: -webkit-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -o-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: linear-gradient(to bottom,#a5bbd4,#c3d2e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa5bbd4', endColorstr='#ffc3d2e5', GradientType=0); border: 1px solid #738498; } #content { background: #ffffff; } #no-submenu { border-bottom: 1px solid #738498; } #element-box { background: #ffffff; border-right: 1px solid #738498; border-bottom: 1px solid #738498; border-left: 1px solid #738498; } #element-box.login { border-top: 1px solid #738498; } .enabled, .success, .allow, span.writable { color: #005800; } .disabled, p.error, .warning, .deny, span.unwritable { color: #a20000; } .nowarning { color: #2c2c2c; } .none, .protected { color: #738498; } span.note { background: #ffffff; color: #2c2c2c; } div.checkin-tick { background: url(../images/admin/tick.png) 20px 50% no-repeat; } .ol-foreground { background-color: #c3d2e5; } .ol-background { background-color: #005800; } .ol-textfont { color: #2c2c2c; } .ol-captionfont { color: #ffffff; } .ol-captionfont a { color: #054993; } div.subheader .padding { background: #ffffff; } .pagetitle h2 { color: #2c2c2c; } div.configuration { color: #2c2c2c; background-image: url(../images/menu/icon-16-config.png); background-repeat: no-repeat; } div.toolbar-box { border-right: 1px solid #738498; border-bottom: 1px solid #738498; border-left: 1px solid #738498; background: #ffffff; } div.toolbar-list li { color: #2c2c2c; } div.toolbar-list li.divider { border-right: 1px dotted #e5d9c3; } div.toolbar-list a { border-left: 1px solid #e5d9c3; border-top: 1px solid #e5d9c3; border-right: 1px solid #738498; border-bottom: 1px solid #738498; background: #c3d2e5; } div.toolbar-list a:hover { border-left: 1px solid #868778; border-top: 1px solid #868778; border-right: 1px solid #f6f7db; border-bottom: 1px solid #f6f7db; background: #e5d9c3; color: #054993; } div.btn-toolbar { margin-left: 5px; padding-top: 3px; } div.btn-toolbar li.divider { border-right: 1px dotted #e5d9c3; } div.btn-toolbar div.btn-group button { border-left: 1px solid #e5d9c3; border-top: 1px solid #e5d9c3; border-right: 1px solid #738498; border-bottom: 1px solid #738498; background-color: #b1c4db; background-image: -moz-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -webkit-gradient(linear,0 0,0 100%,from(#a5bbd4),to(#c3d2e5)); background-image: -webkit-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -o-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: linear-gradient(to bottom,#a5bbd4,#c3d2e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa5bbd4', endColorstr='#ffc3d2e5', GradientType=0); padding: 5px 4px 5px 4px; } div.btn-toolbar div.btn-group button:hover { border-left: 1px solid #868778; border-top: 1px solid #868778; border-right: 1px solid #f6f7db; border-bottom: 1px solid #f6f7db; background: #e5d9c3; color: #054993; cursor: pointer; } div.btn-toolbar a { border-left: 1px solid #e5d9c3; border-top: 1px solid #e5d9c3; border-right: 1px solid #738498; border-bottom: 1px solid #738498; background-color: #b1c4db; background-image: -moz-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -webkit-gradient(linear,0 0,0 100%,from(#a5bbd4),to(#c3d2e5)); background-image: -webkit-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -o-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: linear-gradient(to bottom,#a5bbd4,#c3d2e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa5bbd4', endColorstr='#ffc3d2e5', GradientType=0); padding: 6px 5px; text-align: center; white-space: nowrap; font-size: 1.2em; text-decoration: none; } div.btn-toolbar a:hover { border-left: 1px solid #868778; border-top: 1px solid #868778; border-right: 1px solid #f6f7db; border-bottom: 1px solid #f6f7db; background: #e5d9c3; color: #054993; cursor: pointer; } div.btn-toolbar div.btn-group button.inactive { background: #c3d2e5; } .pane-sliders .title { color: #2c2c2c; } .pane-sliders .panel { border: 1px solid #738498; } .pane-sliders .panel h3 { background-color: #b1c4db; background-image: -moz-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -webkit-gradient(linear,0 0,0 100%,from(#a5bbd4),to(#c3d2e5)); background-image: -webkit-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -o-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: linear-gradient(to bottom,#a5bbd4,#c3d2e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa5bbd4', endColorstr='#ffc3d2e5', GradientType=0); color: #054993; } .pane-sliders .panel h3:hover { background: #e5d9c3; } .pane-sliders .panel h3:hover a { text-decoration: none; } .pane-sliders .adminlist { border: 0 none; } .pane-sliders .adminlist td { border: 0 none; } .pane-toggler span { background: transparent url(../images/j_arrow.png) 5px 50% no-repeat; } .pane-toggler-down span { background: transparent url(../images/j_arrow_down.png) 5px 50% no-repeat; } .pane-toggler-down { border-bottom: 1px solid #738498; } dl.tabs dt { border: 1px solid #738498; background-color: #b1c4db; background-image: -moz-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -webkit-gradient(linear,0 0,0 100%,from(#a5bbd4),to(#c3d2e5)); background-image: -webkit-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -o-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: linear-gradient(to bottom,#a5bbd4,#c3d2e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa5bbd4', endColorstr='#ffc3d2e5', GradientType=0); color: #054993; } dl.tabs dt:hover { background: #e5d9c3; } dl.tabs dt.open { background: #ffffff; border-bottom: 1px solid #ffffff; color: #2c2c2c; } dl.tabs dt.open a:visited { color: #2c2c2c; } dl.tabs dt a:hover { text-decoration: none; } dl.tabs dt a:focus { text-decoration: underline; } div.current { border: 1px solid #738498; background: #ffffff; } div.current fieldset { border: none 0; } div.current fieldset.adminform { border: 1px solid #738498; } #login-page .pagetitle h2 { background: transparent; } #login-page #header { border-bottom: 1px solid #738498; } #login-page #lock { background: url(../images/j_login_lock.png) 50% 0 no-repeat; } #login-page #element-box.login { background-color: #b1c4db; background-image: -moz-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -webkit-gradient(linear,0 0,0 100%,from(#a5bbd4),to(#c3d2e5)); background-image: -webkit-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -o-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: linear-gradient(to bottom,#a5bbd4,#c3d2e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa5bbd4', endColorstr='#ffc3d2e5', GradientType=0); } #form-login { background: #ffffff; border: 1px solid #738498; } #form-login label { color: #2c2c2c; } #form-login div.button1 a { color: #054993; } #cpanel div.icon a, .cpanel div.icon a { color: #054993; border-left: 1px solid #e5d9c3; border-top: 1px solid #e5d9c3; border-right: 1px solid #738498; border-bottom: 1px solid #738498; background-color: #b1c4db; background-image: -moz-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -webkit-gradient(linear,0 0,0 100%,from(#a5bbd4),to(#c3d2e5)); background-image: -webkit-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -o-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: linear-gradient(to bottom,#a5bbd4,#c3d2e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa5bbd4', endColorstr='#ffc3d2e5', GradientType=0); } #cpanel div.icon a:hover, #cpanel div.icon a:focus, .cpanel div.icon a:hover, .cpanel div.icon a:focus { border-left: 1px solid #868778; border-top: 1px solid #868778; border-right: 1px solid #f6f7db; border-bottom: 1px solid #f6f7db; color: #054993; background: #e5d9c3; } fieldset { border: 1px #738498 solid; } legend { color: #2c2c2c; } fieldset ul.checklist input:focus { outline: thin dotted #2c2c2c; } fieldset#filter-bar { border-top: 0 solid #738498; border-right: 0 solid #738498; border-bottom: 1px solid #738498; border-left: 0 solid #738498; } fieldset#filter-bar ol, fieldset#filter-bar ul { border: 0; } fieldset#filter-bar ol li fieldset, fieldset#filter-bar ul li fieldset { border: 0; } .invalid { color: #a20000; } input.invalid { border: 1px solid #a20000; } input.readonly, span.faux-input { border: 0; } input.required { background-color: #e5f0fa; } input.disabled { background-color: #eeeeee; } input, select, span.faux-input { background-color: #ffffff; border: 1px solid #738498; } input[type="button"], input[type="submit"], input[type="reset"] { color: #054993; background-color: #b1c4db; background-image: -moz-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -webkit-gradient(linear,0 0,0 100%,from(#a5bbd4),to(#c3d2e5)); background-image: -webkit-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -o-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: linear-gradient(to bottom,#a5bbd4,#c3d2e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa5bbd4', endColorstr='#ffc3d2e5', GradientType=0); } input[type="button"]:hover, input[type="button"]:focus, input[type="submit"]:hover, input[type="submit"]:focus, input[type="reset"]:hover, input[type="reset"]:focus { background: #e5d9c3; } textarea { background-color: #ffffff; border: 1px solid #738498; } input:focus, select:focus, textarea:focus, option:focus, input:hover, select:hover, textarea:hover, option:hover { background-color: #e5d9c3; color: #054993; } .paramrules { background: #c3d2e5; } span.gi { color: #738498; } table.admintable td.key, table.admintable td.paramlist_key { background-color: #c3d2e5; color: #2c2c2c; border-bottom: 1px solid #738498; border-right: 1px solid #738498; } table.paramlist td.paramlist_description { background-color: #c3d2e5; color: #2c2c2c; border-bottom: 1px solid #738498; border-right: 1px solid #738498; } fieldset.adminform { border: 1px solid #738498; } table.adminform { background-color: #ffffff; } table.adminform tr.row0 { background-color: #ffffff; } table.adminform tr.row1 { background-color: #e5d9c3; } table.adminform th { color: #2c2c2c; background: #ffffff; } table.adminform tr { border-bottom: 1px solid #738498; border-right: 1px solid #738498; } table.adminlist { border-spacing: 1px; background-color: #ffffff; color: #2c2c2c; } table.adminlist.modal { border-right: 1px solid #738498; border-left: 1px solid #738498; } table.adminlist a { color: #054993; } table.adminlist thead th { background: #ffffff; color: #2c2c2c; border-bottom: 1px solid #738498; } table.adminlist tbody tr { background: #ffffff; } table.adminlist tbody tr.row1 { background: #ffffff; } table.adminlist tbody tr.row1:last-child td, table.adminlist tbody tr.row1:last-child th { border-bottom: 1px solid #738498; } table.adminlist tbody tr.row0:hover td, table.adminlist tbody tr.row1:hover td, table.adminlist tbody tr.row0:hover th, table.adminlist tbody tr.row1:hover th, table.adminlist tbody tr.row0:focus td, table.adminlist tbody tr.row1:focus td, table.adminlist tbody tr.row0:focus th, table.adminlist tbody tr.row1:focus th { background-color: #e5d9c3; } table.adminlist tbody tr td, table.adminlist tbody tr th { border-right: 1px solid #738498; } table.adminlist tbody tr td:last-child { border-right: none; } table.adminlist tbody tr.row0:last-child td, table.adminlist tbody tr.row0:last-child th { border-bottom: 1px solid #738498; } table.adminlist tbody tr.row0 td, table.adminlist tbody tr.row0 th { background-color: #b1c4db; background-image: -moz-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -webkit-gradient(linear,0 0,0 100%,from(#a5bbd4),to(#c3d2e5)); background-image: -webkit-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -o-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: linear-gradient(to bottom,#a5bbd4,#c3d2e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa5bbd4', endColorstr='#ffc3d2e5', GradientType=0); } table.adminlist { border-bottom: 0 solid #738498; } table.adminlist tfoot tr { color: #2c2c2c; } table.adminlist tfoot td, table.adminlist tfoot th { background-color: #ffffff; border-top: 1px solid #738498; } table.adminlist tr td.btns a { border: 1px solid #738498; background-color: #b1c4db; background-image: -moz-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -webkit-gradient(linear,0 0,0 100%,from(#a5bbd4),to(#c3d2e5)); background-image: -webkit-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -o-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: linear-gradient(to bottom,#a5bbd4,#c3d2e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa5bbd4', endColorstr='#ffc3d2e5', GradientType=0); color: #054993; } table.adminlist tr td.btns a:hover, table.adminlist tr td.btns a:active, table.adminlist tr td.btns a:focus { background-color: #ffffff; } a.saveorder { background: url(../images/admin/filesave.png) no-repeat; } a.saveorder.inactive { background-position: 0 -16px; } fieldset.batch { background: #ffffff; } button { color: #054993; border: 1px solid #738498; background-color: #b1c4db; background-image: -moz-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -webkit-gradient(linear,0 0,0 100%,from(#a5bbd4),to(#c3d2e5)); background-image: -webkit-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -o-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: linear-gradient(to bottom,#a5bbd4,#c3d2e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa5bbd4', endColorstr='#ffc3d2e5', GradientType=0); } button:hover, button:focus { background: #e5d9c3; } .invalid { color: #ff0000; } .button1 { border: 1px solid #738498; color: #054993; background-color: #b1c4db; background-image: -moz-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -webkit-gradient(linear,0 0,0 100%,from(#a5bbd4),to(#c3d2e5)); background-image: -webkit-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -o-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: linear-gradient(to bottom,#a5bbd4,#c3d2e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa5bbd4', endColorstr='#ffc3d2e5', GradientType=0); } .button1 a { color: #054993; } .button1 a:hover, .button1 a:focus { background: #e5d9c3; } .button2-left, .button2-right { border: 1px solid #738498; background-color: #b1c4db; background-image: -moz-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -webkit-gradient(linear,0 0,0 100%,from(#a5bbd4),to(#c3d2e5)); background-image: -webkit-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -o-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: linear-gradient(to bottom,#a5bbd4,#c3d2e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa5bbd4', endColorstr='#ffc3d2e5', GradientType=0); } .button2-left a, .button2-right a, .button2-left span, .button2-right span { color: #054993; } .button2-left span, .button2-right span { color: #999999; } .page span, .blank span { color: #054993; } .button2-left a:hover, .button2-right a:hover, .button2-left a:focus, .button2-right a:focus { background: #e5d9c3; } .pagination .page span { color: #999999; } .tip { background: #000000; border: 1px solid #FFFFFF; } .tip-title { background: url(../images/selector-arrow-std.png) no-repeat; } a img.calendar { background: url(../images/calendar.png) no-repeat; } .jgrid span.publish { background-image: url(../images/admin/tick.png); } .jgrid span.unpublish { background-image: url(../images/admin/publish_x.png); } .jgrid span.archive { background-image: url(../images/menu/icon-16-archive.png); } .jgrid span.trash { background-image: url(../images/menu/icon-16-trash.png); } .jgrid span.default { background-image: url(../images/menu/icon-16-default.png); } .jgrid span.notdefault { background-image: url(../images/menu/icon-16-notdefault.png); } .jgrid span.checkedout { background-image: url(../images/admin/checked_out.png); } .jgrid span.downarrow { background-image: url(../images/admin/downarrow.png); } .jgrid span.downarrow_disabled { background-image: url(../images/admin/downarrow0.png); } .jgrid span.uparrow { background-image: url(../images/admin/uparrow.png); } .jgrid span.uparrow_disabled { background-image: url(../images/admin/uparrow0.png); } .jgrid span.published { background-image: url(../images/admin/publish_g.png); } .jgrid span.expired { background-image: url(../images/admin/publish_r.png); } .jgrid span.pending { background-image: url(../images/admin/publish_y.png); } .jgrid span.warning { background-image: url(../images/admin/publish_y.png); } .icon-32-send { background-image: url(../images/toolbar/icon-32-send.png); } .icon-32-delete { background-image: url(../images/toolbar/icon-32-delete.png); } .icon-32-help { background-image: url(../images/toolbar/icon-32-help.png); } .icon-32-cancel { background-image: url(../images/toolbar/icon-32-cancel.png); } .icon-32-checkin { background-image: url(../images/toolbar/icon-32-checkin.png); } .icon-32-options { background-image: url(../images/toolbar/icon-32-config.png); } .icon-32-apply { background-image: url(../images/toolbar/icon-32-apply.png); } .icon-32-back { background-image: url(../images/toolbar/icon-32-back.png); } .icon-32-forward { background-image: url(../images/toolbar/icon-32-forward.png); } .icon-32-save { background-image: url(../images/toolbar/icon-32-save.png); } .icon-32-edit { background-image: url(../images/toolbar/icon-32-edit.png); } .icon-32-copy { background-image: url(../images/toolbar/icon-32-copy.png); } .icon-32-move { background-image: url(../images/toolbar/icon-32-move.png); } .icon-32-new { background-image: url(../images/toolbar/icon-32-new.png); } .icon-32-upload { background-image: url(../images/toolbar/icon-32-upload.png); } .icon-32-assign { background-image: url(../images/toolbar/icon-32-publish.png); } .icon-32-html { background-image: url(../images/toolbar/icon-32-html.png); } .icon-32-css { background-image: url(../images/toolbar/icon-32-css.png); } .icon-32-menus { background-image: url(../images/toolbar/icon-32-menu.png); } .icon-32-publish { background-image: url(../images/toolbar/icon-32-publish.png); } .icon-32-unblock { background-image: url(../images/toolbar/icon-32-unblock.png); } .icon-32-unpublish { background-image: url(../images/toolbar/icon-32-unpublish.png); } .icon-32-restore { background-image: url(../images/toolbar/icon-32-revert.png); } .icon-32-trash { background-image: url(../images/toolbar/icon-32-trash.png); } .icon-32-archive { background-image: url(../images/toolbar/icon-32-archive.png); } .icon-32-unarchive { background-image: url(../images/toolbar/icon-32-unarchive.png); } .icon-32-preview { background-image: url(../images/toolbar/icon-32-preview.png); } .icon-32-default { background-image: url(../images/toolbar/icon-32-default.png); } .icon-32-refresh { background-image: url(../images/toolbar/icon-32-refresh.png); } .icon-32-save-new { background-image: url(../images/toolbar/icon-32-save-new.png); } .icon-32-save-copy { background-image: url(../images/toolbar/icon-32-save-copy.png); } .icon-32-error { background-image: url(../images/toolbar/icon-32-error.png); } .icon-32-new-style { background-image: url(../images/toolbar/icon-32-new-style.png); } .icon-32-delete-style { background-image: url(../images/toolbar/icon-32-delete-style.png); } .icon-32-purge { background-image: url(../images/toolbar/icon-32-purge.png); } .icon-32-remove { background-image: url(../images/toolbar/icon-32-remove.png); } .icon-32-featured { background-image: url(../images/toolbar/icon-32-featured.png); } .icon-32-unfeatured { background-image: url(../images/toolbar/icon-32-featured.png); background-position: 0% 100%; } .icon-32-export { background-image: url(../images/toolbar/icon-32-export.png); } .icon-32-stats { background-image: url(../images/toolbar/icon-32-stats.png); } .icon-32-print { background-image: url(../images/toolbar/icon-32-print.png); } .icon-32-batch { background-image: url(../images/toolbar/icon-32-batch.png); } .icon-32-envelope { background-image: url(../images/toolbar/icon-32-messaging.png); } .icon-32-download { background-image: url(../images/toolbar/icon-32-export.png); } .icon-32-bars { background-image: url(../images/toolbar/icon-32-stats.png); } .icon-48-categories { background-image: url(../images/header/icon-48-category.png); } .icon-48-category-edit { background-image: url(../images/header/icon-48-category.png); } .icon-48-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-generic { background-image: url(../images/header/icon-48-generic.png); } .icon-48-banners { background-image: url(../images/header/icon-48-banner.png); } .icon-48-banners-categories { background-image: url(../images/header/icon-48-banner-categories.png); } .icon-48-banners-category-edit { background-image: url(../images/header/icon-48-banner-categories.png); } .icon-48-banners-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-banners-clients { background-image: url(../images/header/icon-48-banner-client.png); } .icon-48-banners-tracks { background-image: url(../images/header/icon-48-banner-tracks.png); } .icon-48-checkin { background-image: url(../images/header/icon-48-checkin.png); } .icon-48-clear { background-image: url(../images/header/icon-48-clear.png); } .icon-48-contact { background-image: url(../images/header/icon-48-contacts.png); } .icon-48-contact-categories { background-image: url(../images/header/icon-48-contacts-categories.png); } .icon-48-contact-category-edit { background-image: url(../images/header/icon-48-contacts-categories.png); } .icon-48-contact-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-purge { background-image: url(../images/header/icon-48-purge.png); } .icon-48-cpanel { background-image: url(../images/header/icon-48-cpanel.png); } .icon-48-config { background-image: url(../images/header/icon-48-config.png); } .icon-48-groups { background-image: url(../images/header/icon-48-groups.png); } .icon-48-groups-add { background-image: url(../images/header/icon-48-groups-add.png); } .icon-48-levels { background-image: url(../images/header/icon-48-levels.png); } .icon-48-levels-add { background-image: url(../images/header/icon-48-levels-add.png); } .icon-48-module { background-image: url(../images/header/icon-48-module.png); } .icon-48-menu { background-image: url(../images/header/icon-48-menu.png); } .icon-48-menu-add { background-image: url(../images/header/icon-48-menu-add.png); } .icon-48-menumgr { background-image: url(../images/header/icon-48-menumgr.png); } .icon-48-trash { background-image: url(../images/header/icon-48-trash.png); } .icon-48-user { background-image: url(../images/header/icon-48-user.png); } .icon-48-user-add { background-image: url(../images/header/icon-48-user-add.png); } .icon-48-user-edit { background-image: url(../images/header/icon-48-user-edit.png); } .icon-48-user-profile { background-image: url(../images/header/icon-48-user-profile.png); } .icon-48-inbox { background-image: url(../images/header/icon-48-inbox.png); } .icon-48-new-privatemessage { background-image: url(../images/header/icon-48-new-privatemessage.png); } .icon-48-msgconfig { background-image: url(../images/header/icon-48-message_config.png); } .icon-48-langmanager { background-image: url(../images/header/icon-48-language.png); } .icon-48-mediamanager { background-image: url(../images/header/icon-48-media.png); } .icon-48-plugin { background-image: url(../images/header/icon-48-plugin.png); } .icon-48-help_header { background-image: url(../images/header/icon-48-help_header.png); } .icon-48-impressions { background-image: url(../images/header/icon-48-stats.png); } .icon-48-browser { background-image: url(../images/header/icon-48-stats.png); } .icon-48-searchtext { background-image: url(../images/header/icon-48-stats.png); } .icon-48-thememanager { background-image: url(../images/header/icon-48-themes.png); } .icon-48-writemess { background-image: url(../images/header/icon-48-writemess.png); } .icon-48-featured { background-image: url(../images/header/icon-48-featured.png); } .icon-48-sections { background-image: url(../images/header/icon-48-section.png); } .icon-48-article-add { background-image: url(../images/header/icon-48-article-add.png); } .icon-48-article-edit { background-image: url(../images/header/icon-48-article-edit.png); } .icon-48-article { background-image: url(../images/header/icon-48-article.png); } .icon-48-content-categories { background-image: url(../images/header/icon-48-category.png); } .icon-48-content-category-edit { background-image: url(../images/header/icon-48-category.png); } .icon-48-content-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-install { background-image: url(../images/header/icon-48-extension.png); } .icon-48-dbbackup { background-image: url(../images/header/icon-48-backup.png); } .icon-48-dbrestore { background-image: url(../images/header/icon-48-dbrestore.png); } .icon-48-dbquery { background-image: url(../images/header/icon-48-query.png); } .icon-48-systeminfo { background-image: url(../images/header/icon-48-info.png); } .icon-48-massmail { background-image: url(../images/header/icon-48-massmail.png); } .icon-48-redirect { background-image: url(../images/header/icon-48-redirect.png); } .icon-48-search { background-image: url(../images/header/icon-48-search.png); } .icon-48-finder { background-image: url(../images/header/icon-48-search.png); } .icon-48-newsfeeds { background-image: url(../images/header/icon-48-newsfeeds.png); } .icon-48-newsfeeds-categories { background-image: url(../images/header/icon-48-newsfeeds-cat.png); } .icon-48-newsfeeds-category-edit { background-image: url(../images/header/icon-48-newsfeeds-cat.png); } .icon-48-newsfeeds-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-weblinks { background-image: url(../images/header/icon-48-links.png); } .icon-48-weblinks-categories { background-image: url(../images/header/icon-48-links-cat.png); } .icon-48-weblinks-category-edit { background-image: url(../images/header/icon-48-links-cat.png); } .icon-48-weblinks-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-tags { background-image: url(../images/header/icon-48-tags.png); } div.message { border: 1px solid #738498; color: #2c2c2c; } .helpFrame { border-left: 0 solid #738498; border-right: none; border-top: none; border-bottom: none; } .outline { border: 1px solid #738498; background: #ffffff; } dl.menu_type dt { border-bottom: 1px solid #738498; } ul#new-modules-list { border-top: 1px solid #738498; } #skiplinkholder a, #skiplinkholder a:link, #skiplinkholder a:visited { color: #ffffff; background: #054993; border-bottom: solid #336 2px; } fieldset.panelform { border: none 0; } a.move_up { background-image: url('../images/admin/uparrow.png'); } span.move_up { background-image: url('../images/admin/uparrow0.png'); } a.move_down { background-image: url('../images/admin/downarrow.png'); } span.move_down { background-image: url('../images/admin/downarrow0.png'); } a.grid_false { background-image: url('../images/admin/publish_x.png'); } a.grid_true { background-image: url('../images/admin/tick.png'); } a.grid_trash { background-image: url('../images/admin/icon-16-trash.png'); } tr.row1 { background-color: #c3d2e5; } table.aclsummary-table td.col2, table.aclsummary-table th.col2, table.aclsummary-table td.col3, table.aclsummary-table th.col3, table.aclsummary-table td.col4, table.aclsummary-table th.col4, table.aclsummary-table td.col5, table.aclsummary-table th.col5, table.aclsummary-table td.col6, table.aclsummary-table th.col6, table.aclmodify-table td.col2, table.aclmodify-table th.col2 { border-left: 1px solid #738498; } span.icon-16-unset { background: url(../images/admin/icon-16-denyinactive.png) no-repeat; } span.icon-16-allowed { background: url(../images/admin/icon-16-allow.png) no-repeat; } span.icon-16-denied { background: url(../images/admin/icon-16-deny.png) no-repeat; } span.icon-16-locked { background: url(../images/admin/checked_out.png) 0 0 no-repeat; } label.icon-16-allow { background: url(../images/admin/icon-16-allow.png) no-repeat; } label.icon-16-deny { background: url(../images/admin/icon-16-deny.png) no-repeat; } a.icon-16-allow { background: url(../images/admin/icon-16-allow.png) no-repeat; } a.icon-16-deny { background: url(../images/admin/icon-16-deny.png) no-repeat; } a.icon-16-allowinactive { background: url(../images/admin/icon-16-allowinactive.png) no-repeat; } a.icon-16-denyinactive { background: url(../images/admin/icon-16-denyinactive.png) no-repeat; } ul.acllegend li.acl-allowed { background: url(../images/admin/icon-16-allow.png) no-repeat left; } ul.acllegend li.acl-denied { background: url(../images/admin/icon-16-deny.png) no-repeat left; } li.acl-editgroups, li.acl-resetbtn { background-color: #c3d2e5; border: 1px solid #738498; } li.acl-editgroups a, li.acl-resetbtn a { color: #054993; } li.acl-editgroups:hover, li.acl-resetbtn:hover, li.acl-editgroups:focus, li.acl-resetbtn:focus { background-color: #e5d9c3; } table#acl-config { border: 1px solid #738498; } table#acl-config th, table#acl-config td { background: #c3d2e5; border-bottom: 1px solid #738498; } table#acl-config th.acl-groups { border-right: 1px solid #738498; } #jform_sef_rewrite-lbl { background: url(../images/admin/icon-16-notice-note.png) right top no-repeat; } #permissions-sliders .tip { background: #ffffff; border: 1px solid #738498; } #permissions-sliders ul#rules, #permissions-sliders ul#rules ul { border: solid 0 #738498; background: #ffffff; } ul#rules li .pane-sliders .panel h3.title { border: solid 0 #738498; } #permissions-sliders ul#rules .pane-slider { border: solid 1px #738498; } #permissions-sliders ul#rules li h3 { border: solid 1px #738498; } #permissions-sliders ul#rules li h3.pane-toggler-down a { border: solid 0; } #permissions-sliders ul#rules .group-kind { color: #2c2c2c; } #permissions-sliders ul#rules table.group-rules { border: solid 1px #738498; } #permissions-sliders ul#rules table.group-rules td { border-right: solid 1px #738498; border-bottom: solid 1px #738498; } #permissions-sliders ul#rules table.group-rules th { background: #e5d9c3; border-right: solid 1px #738498; border-bottom: solid 1px #738498; color: #2c2c2c; } ul#rules table.aclmodify-table { border: solid 1px #738498; } ul#rules table.group-rules td label { border: solid 0 #738498; } #permissions-sliders ul#rules .mypanel { border: solid 0 #738498; } #permissions-sliders ul#rules table.group-rules td { background: #ffffff; } #permissions-sliders span.level { color: #738498; background-image: none; } .check-0, table.adminlist tbody td.check-0 { background-color: #ffffcf; } .check-a, table.adminlist tbody td.check-a { background-color: #cfffda; } .check-d, table.adminlist tbody td.check-d { background-color: #ffcfcf; } #system-message dd ul { color: #2c2c2c; } #system-message dd.error ul { color: #2c2c2c; } #system-message dd.message ul { color: #2c2c2c; } #system-message dd.notice ul { color: #2c2c2c; } #menu { color: #2c2c2c; } #menu ul.dropdown-menu { background-color: #b1c4db; background-image: -moz-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -webkit-gradient(linear,0 0,0 100%,from(#a5bbd4),to(#c3d2e5)); background-image: -webkit-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -o-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: linear-gradient(to bottom,#a5bbd4,#c3d2e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa5bbd4', endColorstr='#ffc3d2e5', GradientType=0); color: #2c2c2c; } #menu ul.dropdown-menu li.dropdown-submenu { background: url(../images/j_arrow.png) no-repeat right 50%; } #menu ul.dropdown-menu li.divider { margin-bottom: 0; border-bottom: 1px dotted #738498; } #menu a { color: #054993; background-repeat: no-repeat; background-position: left 50%; } #menu li { border-right: 1px solid #738498; background-color: transparent; } #menu li a:hover, #menu li a:focus { background-color: #e5d9c3; } #menu li.disabled a:hover, #menu li.disabled a:focus, #menu li.disabled a { color: #738498; background-color: #b1c4db; background-image: -moz-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -webkit-gradient(linear,0 0,0 100%,from(#a5bbd4),to(#c3d2e5)); background-image: -webkit-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -o-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: linear-gradient(to bottom,#a5bbd4,#c3d2e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa5bbd4', endColorstr='#ffc3d2e5', GradientType=0); } #menu li ul { border: 1px solid #738498; } #menu li li { background-color: transparent; } #menu li.sfhover a { background-color: #e5d9c3; } #menu li.sfhover li a { background-color: transparent; } #menu li.sfhover li.sfhover a, #menu li li a:focus { background-color: #e5d9c3; } #menu li.sfhover li.sfhover li a { background-color: transparent; } #menu li.sfhover li.sfhover li.sfhover a, #menu li li li a:focus { background-color: #e5d9c3; } #menu li li a:focus, #menu li li li a:focus { background-color: #e5d9c3; } #menu li li li a:focus { background-color: #e5d9c3; } #submenu { border-bottom: 1px solid #738498; } #submenu li, #submenu span.nolink { background-color: #b1c4db; background-image: -moz-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -webkit-gradient(linear,0 0,0 100%,from(#a5bbd4),to(#c3d2e5)); background-image: -webkit-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: -o-linear-gradient(top,#a5bbd4,#c3d2e5); background-image: linear-gradient(to bottom,#a5bbd4,#c3d2e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa5bbd4', endColorstr='#ffc3d2e5', GradientType=0); border: 1px solid #738498; color: #054993; } #submenu li:hover, #submenu li:focus { background: #e5d9c3; } #submenu li.active, #submenu span.nolink.active { background: #ffffff; border-bottom: 1px solid #ffffff; } #submenu li.active a, #submenu span.nolink.active { color: #000; } .element-invisible { margin: 0; padding: 0; } div.CodeMirror-wrapping { border: 1px solid #738498; } table.adminform tr.row0 { background-color: #ffffff; } ul.alternating > li:nth-child(odd) { background-color: #ffffff; } ul.alternating > li:nth-child(even) { background-color: #c3d2e5; } ol.alternating > li:nth-child(odd) { background-color: #ffffff; } ol.alternating > li:nth-child(even) { background-color: #c3d2e5; } #installer-database, #installer-discover, #installer-update, #installer-warnings { border-top: 1px solid #738498; } #installer-database p.warning { background: transparent url(../images/admin/icon-16-deny.png) center left no-repeat; } #installer-database p.nowarning { background: transparent url(../images/admin/icon-16-allow.png) center left no-repeat; } .input-append, .input-prepend { font-size: 1.2em; } PKb��\ǀ%���templates/hathor/css/error.cssnu�[���/** * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ .outline { border: 1px solid #cccccc; background: #ffffff; padding: 2px; } body { height: 100%; padding: 0; font-family: Arial, Helvetica, Sans Serif; font-size: 11px; color: #2c2c2c; background: #ffffff; width: 80%; min-width: 400px; margin: 15px auto; } div { background-color: #f9fade; padding: 8px; border: solid 1px #c7c8b2; margin-top: 13px; margin-bottom: 25px; } .frame { background-color: #f9fade; padding: 8px; border: solid 1px #c7c8b2; margin-top: 13px; margin-bottom: 25px; } .table { border-collapse: collapse; margin-top: 13px; } a { border: 1px solid #c7c8b2; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; background-color: #ffffff; color: #2c2c2c; padding: 3px 20px; text-decoration: none; } a:hover, a:focus, a:active { background-color: #e3e4ca; text-decoration: none; } td { padding: 3px; padding-left: 5px; padding-right: 5px; border: solid 1px #c7c8b2; font-size: 10px; } .type { background-color: #cc0000; color: #ffffff; font-weight: bold; padding: 3px; } PKb��\� �)templates/hathor/css/colour_brown_rtl.cssnu�[���@charset "UTF-8"; /** * @package Joomla.Administrator * @subpackage templates.hathor * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @since 1.6 * * RTL CSS file for the color standard */ /** * Overall Styles */ #header { background: #ffffff url(../images/j_logo.png) no-repeat top right; } /** * Various Styles */ div.checkin-tick { background: url(../images/admin/tick.png) 20px 50% no-repeat; } /** * Pane Slider pane Toggler styles */ .pane-toggler span { background: transparent url(../images/j_arrow_left.png) right 50% no-repeat; } .pane-toggler-down span { background: transparent url(../images/j_arrow_down.png) right 50% no-repeat; } /** * Cpanel Settings */ fieldset#filter-bar { border-left: none; border-right: none; } /** * Admintable Styles */ table.admintable td.key,table.admintable td.paramlist_key { border-left: 1px solid #e9e9e9; border-right: none; } table.paramlist td.paramlist_description { border-left: 1px solid #e9e9e9; border-right: none; } /** * Admin Form Styles */ table.adminform tr { border-left: 1px solid #000000; border-right: none; } /** * Adminlist Table layout */ table.adminlist.modal { border-right: 1px solid #000000; border-left: 1px solid #000000; } /* Table row styles */ table.adminlist tbody tr td:last-child { border-left: none; } /** * Saving order icon styling in admin tables */ a.saveorder { background: url(../images/admin/filesave.png) no-repeat; } a.saveorder.inactive { background-position: 0 -16px; } /** * Button styling */ /* Button 1 Type */ /* Use this if you add images to the buttons such as directional arrows */ .button1 a { /* add padding if you are using the directional images */ /* padding: 0 6px 0 30px; */ } /* Button 2 Type */ .button2-right .prev { background-image: url(../images/j_button2_prev.png); background-position: right center; } .button2-right.off .prev { background: url(../images/j_button2_prev_off.png) no-repeat; } .button2-right .start { background-image: url(../images/j_button2_first.png); background-position: right center; } .button2-left .next { background-image: url(../images/j_button2_next.png); background-position: left center; } .button2-left.off .next { /* @TODO check the x position */ background: url(../images/j_button2_next_off.png) 100% 0 no-repeat; } .button2-left .end { background-image: url(../images/j_arrow_left.png); background-position: left center; } .button2-left.off .end { /* @TODO check the x position */ background: url(../images/j_button2_last_off.png) 100% 0 no-repeat; } .button2-left .image { background: url(../images/j_button2_image.png) 100% 0 no-repeat; } .button2-left .readmore { background: url(../images/j_button2_readmore.png) 100% 0 no-repeat; } .button2-left .pagebreak { background: url(../images/j_button2_pagebreak.png) 100% 0 no-repeat; } /** * Tooltips */ /** * System Standard Messages */ #system-message dd.message ul { background: #C3D2E5 url(../images/notice-info.png) 99.5% center no-repeat; } /** * System Error Messages */ #system-message dd.error ul { background: #E6C0C0 url(../images/notice-alert.png) 99.5% top no-repeat; } /** * System Notice Messages */ #system-message dd.notice ul { background: #EFE7B8 url(../images/notice-note.png) 99%.5 top no-repeat; } /** * JGrid styles */ /** * Menu Icons * These icons are used on the Administrator menu * The classes are constructed dynamically when the menu is generated */ /** * Toolbar icons * These icons are used for the toolbar buttons * The classes are constructed dynamically when the toolbar is created */ /** * Quick Icons * Also knows as Header Icons * These are used for the Quick Icons on the Control Panel * The same classes are also assigned the Component Title */ /** * General styles */ .helpFrame { border-right: 0 solid #222; border-left: none; border-top: none; } /* -- ACL STYLES relocated from com_users/media/grid.css ----------- */ /* -- ACL PANEL STYLES ----------- */ /* All Tabs */ table.aclsummary-table td.col2, table.aclsummary-table th.col2, table.aclsummary-table td.col3, table.aclsummary-table th.col3, table.aclsummary-table td.col4, table.aclsummary-table th.col4, table.aclsummary-table td.col5, table.aclsummary-table th.col5, table.aclsummary-table td.col6, table.aclsummary-table th.col6 table.aclmodify-table td.col2, table.aclmodify-table th.col2 { border-right: 1px solid #cbcbcb; border-left: none; } /* Icons */ ul.acllegend li.acl-allowed { background: url(../images/admin/icon-16-allow.png) no-repeat right; } ul.acllegend li.acl-denied { background: url(../images/admin/icon-16-deny.png) no-repeat right; } table#acl-config th.acl-groups { border-left: 1px solid #000000; } table#acl-config th.acl-groups { text-align: right; } .acl-action { margin: auto 0; } /* Icons */ span.icon-16-unset { background: url(../images/admin/icon-16-denyinactive.png) no-repeat right; } span.icon-16-allowed { background: url(../images/admin/icon-16-allow.png) no-repeat right; } span.icon-16-denied { background: url(../images/admin/icon-16-deny.png) no-repeat right; } span.icon-16-locked { background: url(../images/admin/checked_out.png) no-repeat right; } /** * Mod_rewrite Warning */ #jform_sef_rewrite-lbl { background: url(../images/admin/icon-16-notice-note.png) left top no-repeat; } /** * Permission Rules */ #permissions-sliders ul#rules table.group-rules td { border-left: solid 1px #000000; border-right: solid 0 #000000; } #permissions-sliders ul#rules table.group-rules th { border-left: solid 1px #000000; border-right: solid 0 #000000; } /** * Menu Styling */ #menu ul li.node { background-image: url(../images/j_arrow_left.png); background-repeat: no-repeat; background-position: left 50%; } #menu a { background-position: right 50%; } /* Installer Database */ #installer-database p.warning { background-position: center right; } #installer-database p.nowarning { background-position: center right; } PKb��\�ޜ,hh(templates/hathor/css/colour_blue_rtl.cssnu�[���@charset "UTF-8"; /** * @package Joomla.Administrator * @subpackage templates.hathor * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @since 1.6 * * RTL CSS file for the color standard */ /** * Overall Styles */ #header { background: #ffffff url(../images/j_logo.png) no-repeat top right; } #element-box { border-left: 1px solid #738498; border-right: 1px solid #738498; } /** * Various Styles */ div.checkin-tick { background: url(../images/admin/tick.png) 20px 50% no-repeat; } /** * Subheader, toolbar, page title */ div.toolbar-box { border-left: 1px solid #738498; border-right: 1px solid #738498; } div.toolbar-list li.divider { border-left: 1px dotted #e5d9c3; border-right: none; } div.toolbar-list a:hover { border-right: 1px solid #e5d9c3; border-left: 1px solid #738498; } /** * Pane Slider pane Toggler styles */ .pane-toggler span { background: transparent url(../images/j_arrow_left.png) right 50% no-repeat; } .pane-toggler-down span { background: transparent url(../images/j_arrow_down.png) right 50% no-repeat; } /** * Cpanel Settings */ #cpanel div.icon a:hover, #cpanel div.icon a:focus { border-right: 1px solid #e5d9c3; border-left: 1px solid #738498; } fieldset#filter-bar { border-left: none; border-right: none; } /** * Admintable Styles */ table.admintable td.key,table.admintable td.paramlist_key { border-left: 1px solid #738498; border-right: none; } table.paramlist td.paramlist_description { border-left: 1px solid #738498; border-right: none; } /** * Admin Form Styles */ table.adminform tr { border-left: 1px solid #738498; border-right: none; } /** * Adminlist Table layout */ table.adminlist.modal { border-right: 1px solid #738498; border-left: 1px solid #738498; } /* Table row styles */ table.adminlist tbody tr td, table.adminlist tbody tr th { border-left: 1px solid #738498; border-right: none; } table.adminlist tbody tr td:last-child { border-left: none; } /** * Saving order icon styling in admin tables */ a.saveorder { background: url(../images/admin/filesave.png) no-repeat; } a.saveorder.inactive { background-position: 0 -16px; } /** * Button styling */ /* Button 1 Type */ /* Use this if you add images to the buttons such as directional arrows */ .button1 a { /* add padding if you are using the directional images */ /* padding: 0 6px 0 30px; */ } /* Button 2 Type */ .button2-right .prev { background-image: url(../images/j_button2_prev.png); background-position: right center; } .button2-right.off .prev { background: url(../images/j_button2_prev_off.png) no-repeat; } .button2-right .start { background-image: url(../images/j_button2_first.png); background-position: right center; } .button2-left .next { background-image: url(../images/j_button2_next.png); background-position: left center; } .button2-left.off .next { /* @TODO check the x position */ background: url(../images/j_button2_next_off.png) 100% 0 no-repeat; } .button2-left .end { background-image: url(../images/j_arrow_left.png); background-position: left center; } .button2-left.off .end { /* @TODO check the x position */ background: url(../images/j_button2_last_off.png) 100% 0 no-repeat; } .button2-left .image { background: url(../images/j_button2_image.png) 100% 0 no-repeat; } .button2-left .readmore { background: url(../images/j_button2_readmore.png) 100% 0 no-repeat; } .button2-left .pagebreak { background: url(../images/j_button2_pagebreak.png) 100% 0 no-repeat; } /** * Tooltips */ /** * System Standard Messages */ #system-message dd.message ul { background: #C3D2E5 url(../images/notice-info.png) 99.5% center no-repeat; } /** * System Error Messages */ #system-message dd.error ul { background: #E6C0C0 url(../images/notice-alert.png) 99.5% top no-repeat; } /** * System Notice Messages */ #system-message dd.notice ul { background: #EFE7B8 url(../images/notice-note.png) 99%.5 top no-repeat; } /** * JGrid styles */ /** * Menu Icons * These icons are used on the Administrator menu * The classes are constructed dynamically when the menu is generated */ /** * Toolbar icons * These icons are used for the toolbar buttons * The classes are constructed dynamically when the toolbar is created */ /** * Quick Icons * Also knows as Header Icons * These are used for the Quick Icons on the Control Panel * The same classes are also assigned the Component Title */ /** * General styles */ .helpFrame { border-right: 0 solid #738498; border-left: none; border-top: none; } /* -- ACL STYLES relocated from com_users/media/grid.css ----------- */ /* -- ACL PANEL STYLES ----------- */ /* All Tabs */ table.aclsummary-table td.col2, table.aclsummary-table th.col2, table.aclsummary-table td.col3, table.aclsummary-table th.col3, table.aclsummary-table td.col4, table.aclsummary-table th.col4, table.aclsummary-table td.col5, table.aclsummary-table th.col5, table.aclsummary-table td.col6, table.aclsummary-table th.col6 table.aclmodify-table td.col2, table.aclmodify-table th.col2 { border-right: 1px solid #738498; border-left: none; } /* Icons */ ul.acllegend li.acl-allowed { background:url(../images/admin/icon-16-allow.png) no-repeat right; } ul.acllegend li.acl-denied { background:url(../images/admin/icon-16-deny.png) no-repeat right; } table#acl-config th.acl-groups { border-left: 1px solid #738498; } table#acl-config th.acl-groups { text-align: right; } .acl-action { margin: auto 0; } /* Icons */ span.icon-16-unset { background: url(../images/admin/icon-16-denyinactive.png) no-repeat right; } span.icon-16-allowed { background: url(../images/admin/icon-16-allow.png) no-repeat right; } span.icon-16-denied { background: url(../images/admin/icon-16-deny.png) no-repeat right; } span.icon-16-locked { background: url(../images/admin/checked_out.png) no-repeat right; } /** * Mod_rewrite Warning */ #jform_sef_rewrite-lbl { background: url(../images/admin/icon-16-notice-note.png) left top no-repeat; } /** * Modal S-Box overrides */ #sbox-window { text-align: right; } /** * Permission Rules */ #permissions-sliders ul#rules table.group-rules td { border-left: solid 1px #738498; border-right: solid 0 #738498; } #permissions-sliders ul#rules table.group-rules th { border-left: solid 1px #738498; border-right: solid 0 #738498; } /** * Menu Styling */ #menu ul li.node { background-image: url(../images/j_arrow_left.png); background-repeat: no-repeat; background-position: left 50%; } #menu a { background-position: right 50%; } #menu li { border-left: 1px solid #738498; border-right: 0 solid #738498; } #menu li li li a:focus { border-right: 1px solid #fafafa; } /* Installer Database */ #installer-database p.warning { background-position: center right; } #installer-database p.nowarning { background-position: center right; } PKb��\�a�dd,templates/hathor/css/colour_standard_rtl.cssnu�[���@charset "UTF-8"; /** * @package Joomla.Administrator * @subpackage templates.hathor * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @since 1.6 * * RTL CSS file for the color standard */ /** * Overall Styles */ #header { background: #ffffff url(../images/j_logo.png) no-repeat top right; } #element-box { border-left: 1px solid #c7c8b2; border-right: 1px solid #c7c8b2; } /** * Various Styles */ div.checkin-tick { background: url(../images/admin/tick.png) 20px 50% no-repeat; } /** * Subheader, toolbar, page title */ div.toolbar-box { border-left: 1px solid #c7c8b2; border-right: 1px solid #c7c8b2; } div.toolbar-list li.divider { border-left:1px dotted #e3e4ca; border-right:none; } div.toolbar-list a:hover { border-right: 1px solid #e3e4ca; border-left: 1px solid #c7c8b2; } /** * Pane Slider pane Toggler styles */ .pane-toggler span { background: transparent url(../images/j_arrow_left.png) right 50% no-repeat; } .pane-toggler-down span { background: transparent url(../images/j_arrow_down.png) right 50% no-repeat; } /** * Cpanel Settings */ #cpanel div.icon a:hover, #cpanel div.icon a:focus { border-right: 1px solid #e3e4ca; border-left: 1px solid #c7c8b2; } fieldset#filter-bar { border-left: none; border-right: none; } /** * Admintable Styles */ table.admintable td.key,table.admintable td.paramlist_key { border-left: 1px solid #c7c8b2; border-right: none; } table.paramlist td.paramlist_description { border-left: 1px solid #c7c8b2; border-right: none; } /** * Admin Form Styles */ table.adminform tr { border-left: 1px solid #c7c8b2; border-right: none; } /** * Adminlist Table layout */ table.adminlist.modal { border-right: 1px solid #c7c8b2; border-left: 1px solid #c7c8b2; } /* Table row styles */ table.adminlist tbody tr td, table.adminlist tbody tr th { border-left: 1px solid #c7c8b2; border-right: none; } table.adminlist tbody tr td:last-child { border-left: none; } /** * Saving order icon styling in admin tables */ a.saveorder { background: url(../images/admin/filesave.png) no-repeat; } a.saveorder.inactive { background-position: 0 -16px; } /** * Button styling */ /* Button 1 Type */ /* Use this if you add images to the buttons such as directional arrows */ .button1 a { /* add padding if you are using the directional images */ /* padding: 0 6px 0 30px; */ } /* Button 2 Type */ .button2-right .prev { background-image: url(../images/j_button2_prev.png); background-position: right center; } .button2-right.off .prev { background: url(../images/j_button2_prev_off.png) no-repeat; } .button2-right .start { background-image: url(../images/j_button2_first.png); background-position: right center; } .button2-left .next { background-image: url(../images/j_button2_next.png); background-position: left center; } .button2-left.off .next { /* @TODO check the x position */ background: url(../images/j_button2_next_off.png) 100% 0 no-repeat; } .button2-left .end { background-image: url(../images/j_arrow_left.png); background-position: left center; } .button2-left.off .end { /* @TODO check the x position */ background: url(../images/j_button2_last_off.png) 100% 0 no-repeat; } .button2-left .image { background: url(../images/j_button2_image.png) 100% 0 no-repeat; } .button2-left .readmore { background: url(../images/j_button2_readmore.png) 100% 0 no-repeat; } .button2-left .pagebreak { background: url(../images/j_button2_pagebreak.png) 100% 0 no-repeat; } /** * Tooltips */ /** * System Standard Messages */ #system-message dd.message ul { background: #C3D2E5 url(../images/notice-info.png) 99.5% center no-repeat; } /** * System Error Messages */ #system-message dd.error ul { background: #E6C0C0 url(../images/notice-alert.png) 99.5% top no-repeat; } /** * System Notice Messages */ #system-message dd.notice ul { background: #EFE7B8 url(../images/notice-note.png) 99%.5 top no-repeat; } /** * JGrid styles */ /** * Menu Icons * These icons are used on the Administrator menu * The classes are constructed dynamically when the menu is generated */ /** * Toolbar icons * These icons are used for the toolbar buttons * The classes are constructed dynamically when the toolbar is created */ /** * Quick Icons * Also knows as Header Icons * These are used for the Quick Icons on the Control Panel * The same classes are also assigned the Component Title */ /** * General styles */ .helpFrame { border-right: 0 solid #c7c8b2; border-left: none; border-top: none; } /* -- ACL STYLES relocated from com_users/media/grid.css ----------- */ /* -- ACL PANEL STYLES ----------- */ /* All Tabs */ table.aclsummary-table td.col2, table.aclsummary-table th.col2, table.aclsummary-table td.col3, table.aclsummary-table th.col3, table.aclsummary-table td.col4, table.aclsummary-table th.col4, table.aclsummary-table td.col5, table.aclsummary-table th.col5, table.aclsummary-table td.col6, table.aclsummary-table th.col6 table.aclmodify-table td.col2, table.aclmodify-table th.col2 { border-right: 1px solid #c7c8b2; border-left: none; } /* Icons */ ul.acllegend li.acl-allowed { background:url(../images/admin/icon-16-allow.png) no-repeat right; } ul.acllegend li.acl-denied { background:url(../images/admin/icon-16-deny.png) no-repeat right; } table#acl-config th.acl-groups { border-left: 1px solid #c7c8b2; } table#acl-config th.acl-groups { text-align: right; } .acl-action { margin: auto 0; } /* Icons */ span.icon-16-unset { background: url(../images/admin/icon-16-denyinactive.png) no-repeat right; } span.icon-16-allowed { background: url(../images/admin/icon-16-allow.png) no-repeat right; } span.icon-16-denied { background: url(../images/admin/icon-16-deny.png) no-repeat right; } span.icon-16-locked { background: url(../images/admin/checked_out.png) no-repeat right; } /** * Mod_rewrite Warning */ #jform_sef_rewrite-lbl { background: url(../images/admin/icon-16-notice-note.png) left top no-repeat; } /** * Modal S-Box overrides */ #sbox-window { text-align: right; } /** * Permission Rules */ #permissions-sliders ul#rules table.group-rules td { border-left: solid 1px #c7c8b2; border-right: solid 0 #c7c8b2; } #permissions-sliders ul#rules table.group-rules th { border-left: solid 1px #c7c8b2; border-right: solid 0 #c7c8b2; } /** * Menu Styling */ #menu ul li.node { background-image: url(../images/j_arrow_left.png); background-repeat: no-repeat; background-position: left 50%; } #menu a { background-position: right 50%; } #menu li { border-left: 1px solid #c7c8b2; border-right: 0 solid #c7c8b2; } #menu li li li a:focus { border-right: 1px solid #fafafa; } /* Installer Database */ #installer-database p.warning { background-position: center right; } #installer-database p.nowarning { background-position: center right; } PKb��\��$w����,templates/hathor/css/colour_highcontrast.cssnu�[���@charset "UTF-8"; /** * @package Joomla.Administrator * @subpackage templates.hathor * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @since 1.6 * * Changes to use high contrast colors */ /** * Main Colors * #163365 Text background/border * #1c4181 Alternative text background 1/border * #1b3f7c Alternative text background 2/border * #fcff20 Text * #ffffff Highlighted Text * #10254a Main hover color/border * #000000 Highlight/shadow border * #a20000 Invalid Alert Color * #00f800 Success Alert Color * #feffbf Disabled Menu/Protected * * MENU: * * Standard Link * #1b3f7c Link Background * #ffffff Text * #10254a Border * * Pressed Link * #163365 Text background * #ffffff Highlighted Text * #000000 Left & Top Border * #1b3f7c Right & Bottom Border * * Background behind the links * #163365 Background * #122b56 Border * * Inactive (Disabled) * #cccccc Text * * SUBMENU * #163365 Active Tab Background * #fcff20 Active Tab Text color * #10254a Hover background * #10254a Border * #1b3f7c "off" Tab Background * #ffffff "off" Tab Text color * * #1c4181 Color behind the tabs */ /** * General styles */ body { background-color: #1c4181; color: #fcff20; } div#sbox-content { background-color: #1c4181; color: #fcff20; } h1 { color: #163365; } a:link { color: #ffffff; } a:visited { color: #ffffff; } a:hover,a:focus { text-decoration: underline; color: #fcff20; } /** * Overall Styles */ #header { background: #ffffff url(../images/j_logo.png) no-repeat; } #header h1.title { color: #163365; } #footer { background: #163365; border: 1px solid #1b3f7c; } #nav { background: #163365; border: 1px solid #1b3f7c; } #content { background: #1c4181; } #no-submenu { border-bottom: 1px solid #1b3f7c; } #element-box { background: #163365; border-right: 1px solid #1b3f7c; border-bottom: 1px solid #1b3f7c; border-left: 1px solid #1b3f7c; } #element-box.login { border-top: 1px solid #1b3f7c; } /** * Status layout */ #module-status a, #module-status span { color: #163365; } #module-status .preview { background: url(../images/menu/icon-16-media.png) 3px 3px no-repeat; } #module-status .viewsite { background: url(../images/menu/icon-16-viewsite.png) 3px 3px no-repeat; } #module-status .unread-messages,#module-status .no-unread-messages { background: url(../images/menu/icon-16-messages.png) 3px 3px no-repeat; } #module-status .loggedin-users { background: url(../images/menu/icon-16-user.png) 3px 3px no-repeat; } #module-status .backloggedin-users { background: url(../images/menu/icon-16-back-user.png) 3px 3px no-repeat; } #module-status .multilanguage { background: url(../images/menu/icon-16-language.png) 3px 3px no-repeat; } #module-status .logout { background: url(../images/menu/icon-16-logout.png) 3px 3px no-repeat; } /** * Various Styles */ .enabled, .success , .allow, span.writable { color: #00f800; } .disabled, p.error, .warning, .deny, span.unwritable { color: #a20000; } .nowarning { color: #fcff20; } .none,.protected { color: #feffbf; } span.note { background: #163365; color: #fcff20; } div.checkin-tick { background: url(../images/admin/tick.png) 20px 50% no-repeat; } /** * Overlib */ .ol-foreground { background-color: #fcff20; } .ol-background { background-color: #1b3f7c; } .ol-textfont { color: #163365; } .ol-captionfont { color: #ffffff; } .ol-captionfont a { color: #1b3f7c; } /** * Subheader, toolbar, page title */ .pagetitle h2 { color: #fcff20; } div.configuration { color: #fcff20; background-image: url(../images/menu/icon-16-config.png); background-repeat: no-repeat; } div.toolbar-box { border-right: 1px solid #10254a; border-bottom: 1px solid #10254a; border-left: 1px solid #10254a; background: #163365; } div.toolbar-list li { color: #fcff20; } div.toolbar-list li.divider { border-right:1px dotted #1b3f7c; } div.toolbar-list a { border: 1px solid #10254a; color: #fcff20; background: #1b3f7c; } div.toolbar-list a:hover { border-left: 1px solid #000000; border-top: 1px solid #000000; border-right: 1px solid #1b3f7c; border-bottom: 1px solid #1b3f7c; background: #163365; color: #ffffff; } /** * Pane Slider pane Toggler styles */ .pane-sliders .title { color: #fcff20; border: 1px solid #10254a; } .pane-sliders .panel { border: 1px solid #1b3f7c; } .pane-sliders .panel h3 { background: #1c4181; color: #fcff20; } .pane-sliders .content { background: #163365; } .pane-sliders .adminlist { border: 0 none; } .pane-sliders .adminlist td { border: 0 none; } .pane-toggler span { background: transparent url(../images/j_arrow.png) 5px 50% no-repeat; } .pane-toggler-down span { background: transparent url(../images/j_arrow_down.png) 5px 50% no-repeat; } .pane-toggler-down { border-bottom: 1px solid #1b3f7c; } /** * Tabs */ dl.tabs dt { border: 1px solid #10254a; background: #1c4181; color: #fcff20; } dl.tabs dt.open { background: #163365; border-bottom: 1px solid #163365; color: #fcff20; } dl.tabs dt.open a:visited { color: #fcff20; } div.current { border: 1px solid #10254a; background: #163365; } div.current dd { padding: 0; margin: 0; } div#menu-assignment h3 { border-bottom: 1px solid #fcff20; } /** * Login Settings */ #login-page .pagetitle h2 { background-color: transparent; /* background-color: #1c4181; */ color: #fcff20; } #login-page #header { border-bottom: 1px solid #1b3f7c; } #login-page #content { background: #1c4181; } #login-page #lock { background: url(../images/j_login_lock.png) 50% 0 no-repeat; } #login-page #element-box.login { background: #163365; border: 1px solid #10254a; } #form-login { border: 1px solid #10254a; background: #1c4181; } #form-login label { color: #fcff20; } #form-login div.button1 a { color: #fcff20; background-color: #1b3f7c; border: 1px solid #10254a; } #form-login div.button1 a:hover,#form-login div.button1 a:focus { text-decoration: none; background-color: #163365; border-top: 1px solid #000000; border-right: 1px solid #1b3f7c; border-bottom: 1px solid #1b3f7c; border-left: 1px solid #000000; color: #fcff20; } /** * Cpanel Settings */ .cpanel-page div#element-box { background: #163365; border: 1px solid #10254a; } #cpanel div.icon a, .cpanel div.icon a { border: 1px solid #10254a; background: #1b3f7c; color: #fcff20; } #cpanel div.icon a:hover, #cpanel div.icon a:focus, .cpanel div.icon a:hover, .cpanel div.icon a:focus { border-left: 1px solid #000000; border-top: 1px solid #000000; border-right: 1px solid #1b3f7c; border-bottom: 1px solid #1b3f7c; background: #163365; color: #ffffff; } /** * Form Styles */ fieldset { border: 3px dotted #1b3f7c; } legend { color: #fcff20; } fieldset ul.checklist input:focus { outline: thin dotted #333333; } fieldset#filter-bar { border-bottom: 1px solid #1b3f7c; } fieldset#filter-bar ol, fieldset#filter-bar ul { border: 0; } fieldset#filter-bar ol li fieldset, fieldset#filter-bar ul li fieldset { border: 0; } input,span.faux-input, select,option { color: #fcff20; background-color: #163365; border: 1px solid #1b3f7c; } /* Note: these visual cues should be augmented by aria */ .invalid { color: #a20000; background-color: #ffffff; } /* must be augmented by aria at the same time if changed dynamically by js aria-invalid=true or aria-invalid=false */ input.invalid { border: 1px solid #a20000; } input.required { background-color: #fcff20; color: #163365; border: 1px solid #1b3f7c; } input.disabled { background-color: #eeeeee; } /* Inputs used as buttons */ input[type="button"], input[type="submit"], input[type="reset"] { background-color: #1b3f7c; border: 1px solid #10254a; color: #fcff20; } input[type="button"]:hover, input[type="button"]:focus, input[type="submit"]:hover, input[type="submit"]:focus, input[type="reset"]:hover, input[type="reset"]:focus { background-color: #163365; border-top: 1px solid #000000; border-right: 1px solid #1b3f7c; border-bottom: 1px solid #1b3f7c; border-left: 1px solid #000000; color: #fcff20; } textarea { color: #fcff20; background-color: #163365; border: 1px solid #1b3f7c; } input:focus, select:focus, textarea:focus, option:focus, input:hover, select:hover, textarea:hover, option:hover { background-color: #10254a; color: #fcff20; } /** * Option or Parameter styles */ .paramrules { background: #1b3f7c; } span.gi { color: #ffffff; } /** * Admintable Styles */ table.admintable td.key,table.admintable td.paramlist_key { background-color: #1c4181; color: #fcff20; border-bottom: 1px solid #10254a; border-right: 1px solid #10254a; } table.paramlist td.paramlist_description { background-color: #1c4181; color: #fcff20; border-bottom: 1px solid #10254a; border-right: 1px solid #10254a; } /** * Admin Form Styles */ fieldset.adminform { border: 1px solid #1b3f7c; } /* Table styles are for use with tabular data */ table.adminform { background-color: #163365; } table.adminform tr.row0 { background-color: #163365; } table.adminform tr.row1 { background-color: #10254a; } table.adminform th { color: #fcff20; background: #163365; } table.adminform tr { border-bottom: 1px solid #1b3f7c; border-right: 1px solid #1b3f7c; } /** * Adminlist Table layout */ table.adminlist { background-color: #163365; color: #fcff20; } table.adminlist a { color: #ffffff; } table.adminlist thead th { background: #163365; color: #fcff20; } /* Table row styles */ table.adminlist tbody tr { background: #163365; } table.adminlist tbody tr.row1 { background: #163365; } table.adminlist tbody tr.row1 td, table.adminlist tbody tr.row1 th { border-bottom: 1px solid #1b3f7c; } table.adminlist tbody tr.row0:hover td, table.adminlist tbody tr.row1:hover td, table.adminlist tbody tr.row0:hover th, table.adminlist tbody tr.row1:hover th, table.adminlist tbody tr.row0:focus td, table.adminlist tbody tr.row1:focus td, table.adminlist tbody tr.row0:focus th, table.adminlist tbody tr.row1:focus th { background-color: #10254a; } table.adminlist tbody tr td, table.adminlist tbody tr th { border-right: 1px solid #1b3f7c; } table.adminlist tbody tr td:last-child { border-right: none; } table.adminlist tbody tr.row0:last-child td, table.adminlist tbody tr.row0:last-child th { border-bottom: 1px solid #1b3f7c; } table.adminlist tbody tr.row0 td, table.adminlist tbody tr.row0 th { background: #1c4181; } table.adminlist tfoot tr { color: #fcff20; } /* Table td/th styles */ table.adminlist tfoot td,table.adminlist tfoot th { background-color: #163365; border-top: 1px solid #1b3f7c; } /** * Adminlist buttons */ table.adminlist tr td.btns a { background-color: #1b3f7c; border: 1px solid #10254a; color: #fcff20; } table.adminlist tr td.btns a:hover, table.adminlist tr td.btns a:active, table.adminlist tr td.btns a:focus { background-color: #163365; border-top: 1px solid #000000; border-right: 1px solid #1b3f7c; border-bottom: 1px solid #1b3f7c; border-left: 1px solid #000000; color: #fcff20; } /** * Saving order icon styling in admin tables */ a.saveorder { background: url(../images/admin/filesave.png) no-repeat; } a.saveorder.inactive { background-position: 0 -16px; } /** * Saving order icon styling in admin tables */ fieldset.batch { background: #1c4181; } /** * Button styling */ button { color: #fcff20; background-color: #1b3f7c; border: 1px solid #10254a; } button:hover, button:focus { background-color: #163365; border-top: 1px solid #000000; border-right: 1px solid #1b3f7c; border-bottom: 1px solid #1b3f7c; border-left: 1px solid #000000; color: #fcff20; } /* Button 1 Type */ .button1 { border: none; background: #1b3f7c; } /* Use this if you add images to the buttons such as directional arrows */ .button1 .next { /* background: transparent url(../images/j_button1_next.png) 100% 0 no-repeat; */ } .button1 a { border: 1px solid #10254a; color: #fcff20; } .button1 a:hover,.button1 a:focus { text-decoration: none; background-color: #163365; border-top: 1px solid #000000; border-right: 1px solid #1b3f7c; border-bottom: 1px solid #1b3f7c; border-left: 1px solid #000000; color: #fcff20; } /* Button 2 Type */ .button2-left,.button2-right { border: none; background: #1b3f7c; } .button2-left a,.button2-right a,.button2-left span,.button2-right span { color: #fcff20; border: 1px solid #10254a; } /* these are inactive buttons */ .button2-left span,.button2-right span { color: #cccccc; border: 1px solid #10254a; } .page span,.blank span { color: #fcff20; border: 1px solid #10254a; } .button2-left a:hover,.button2-right a:hover,.button2-left a:focus,.button2-right a:focus { text-decoration: none; background-color: #163365; border-top: 1px solid #000000; border-right: 1px solid #1b3f7c; border-bottom: 1px solid #1b3f7c; border-left: 1px solid #000000; color: #fcff20; } /** * Pagination styles */ /* Grey out the current page number */ .pagination .page span { color: #cccccc; } /** * Tooltips */ .tip { background: #000000; border: 1px solid #FFFFFF; } .tip-title { background: url(../images/selector-arrow-std.png) no-repeat; } /** * Calendar */ a img.calendar { background: url(../images/calendar.png) no-repeat; } /** * JGrid styles */ .jgrid span.publish { background-image: url(../images/admin/tick.png); } .jgrid span.unpublish { background-image: url(../images/admin/publish_x.png); } .jgrid span.archive { background-image: url(../images/menu/icon-16-archive.png); } .jgrid span.trash { background-image: url(../images/menu/icon-16-trash.png); } .jgrid span.default { background-image: url(../images/menu/icon-16-default.png); } .jgrid span.notdefault { background-image: url(../images/menu/icon-16-notdefault.png); } .jgrid span.checkedout { background-image: url(../images/admin/checked_out.png); } .jgrid span.downarrow { background-image: url(../images/admin/downarrow.png); } .jgrid span.downarrow_disabled { background-image: url(../images/admin/downarrow0.png); } .jgrid span.uparrow { background-image: url(../images/admin/uparrow.png); } .jgrid span.uparrow_disabled { background-image: url(../images/admin/uparrow0.png); } .jgrid span.published { background-image: url(../images/admin/publish_g.png); } .jgrid span.expired { background-image: url(../images/admin/publish_r.png); } .jgrid span.pending { background-image: url(../images/admin/publish_y.png); } .jgrid span.warning { background-image: url(../images/admin/publish_y.png); } /** * Menu Icons * These icons are used on the Administrator menu * The classes are constructed dynamically when the menu is generated */ .icon-16-archive { background-image: url(../images/menu/icon-16-archive.png); } .icon-16-article { background-image: url(../images/menu/icon-16-article.png); } .icon-16-banners { background-image: url(../images/menu/icon-16-banner.png); } .icon-16-banners-clients { background-image: url(../images/menu/icon-16-banner-client.png); } .icon-16-banners-tracks { background-image: url(../images/menu/icon-16-banner-tracks.png); } .icon-16-banners-cat { background-image: url(../images/menu/icon-16-banner-categories.png); } .icon-16-category { background-image: url(../images/menu/icon-16-category.png); } .icon-16-checkin { background-image: url(../images/menu/icon-16-checkin.png); } .icon-16-clear { background-image: url(../images/menu/icon-16-clear.png); } .icon-16-component { background-image: url(../images/menu/icon-16-component.png); } .icon-16-config { background-image: url(../images/menu/icon-16-config.png); } .icon-16-contact { background-image: url(../images/menu/icon-16-contacts.png); } .icon-16-contact-cat { background-image: url(../images/menu/icon-16-contacts-categories.png); } .icon-16-content { background-image: url(../images/menu/icon-16-content.png); } .icon-16-cpanel { background-image: url(../images/menu/icon-16-cpanel.png); } .icon-16-default { background-image: url(../images/menu/icon-16-default.png); } .icon-16-featured { background-image: url(../images/menu/icon-16-featured.png); } .icon-16-groups { background-image: url(../images/menu/icon-16-groups.png); } .icon-16-help { background-image: url(../images/menu/icon-16-help.png); } .icon-16-help-this { background-image: url(../images/menu/icon-16-help-this.png); } .icon-16-help-forum { background-image: url(../images/menu/icon-16-help-forum.png); } .icon-16-help-docs { background-image: url(../images/menu/icon-16-help-docs.png); } .icon-16-help-jed { background-image: url(../images/menu/icon-16-help-jed.png); } .icon-16-help-jrd { background-image: url(../images/menu/icon-16-help-jrd.png); } .icon-16-help-community { background-image: url(../images/menu/icon-16-help-community.png); } .icon-16-help-security { background-image: url(../images/menu/icon-16-help-security.png); } .icon-16-help-dev { background-image: url(../images/menu/icon-16-help-dev.png); } .icon-16-help-shop { background-image: url(../images/menu/icon-16-help-shop.png); } .icon-16-info { background-image: url(../images/menu/icon-16-info.png); } .icon-16-install { background-image: url(../images/menu/icon-16-install.png); } .icon-16-joomlaupdate { background-image: url(../images/menu/icon-16-install.png); } .icon-16-language { background-image: url(../images/menu/icon-16-language.png); } .icon-16-levels { background-image: url(../images/menu/icon-16-levels.png); } .icon-16-logout { background-image: url(../images/menu/icon-16-logout.png); } .icon-16-maintenance { background-image: url(../images/menu/icon-16-maintenance.png); } .icon-16-massmail { background-image: url(../images/menu/icon-16-massmail.png); } .icon-16-media { background-image: url(../images/menu/icon-16-media.png); } .icon-16-menu { background-image: url(../images/menu/icon-16-menu.png); } .icon-16-menumgr { background-image: url(../images/menu/icon-16-menumgr.png); } .icon-16-messages { background-image: url(../images/menu/icon-16-messaging.png); } .icon-16-messages-add { background-image: url(../images/menu/icon-16-new-privatemessage.png); } .icon-16-messages-read { background-image: url(../images/menu/icon-16-messages.png); } .icon-16-module { background-image: url(../images/menu/icon-16-module.png); } /* .icon-16-new { background-image: url(../images/menu/icon-16-new.png); } */ .icon-16-newarticle { background-image: url(../images/menu/icon-16-newarticle.png); } .icon-16-newcategory { background-image: url(../images/menu/icon-16-newcategory.png); } .icon-16-newgroup { background-image: url(../images/menu/icon-16-newgroup.png); } .icon-16-newlevel { background-image: url(../images/menu/icon-16-newlevel.png); } .icon-16-newuser { background-image: url(../images/menu/icon-16-newuser.png); } .icon-16-plugin { background-image: url(../images/menu/icon-16-plugin.png); } .icon-16-profile { background-image: url(../images/menu/icon-16-user.png); } .icon-16-purge { background-image: url(../images/menu/icon-16-purge.png); } .icon-16-readmess { background-image: url(../images/menu/icon-16-readmess.png); } .icon-16-section { background-image: url(../images/menu/icon-16-section.png); } .icon-16-static { background-image: url(../images/menu/icon-16-static.png); } .icon-16-stats { background-image: url(../images/menu/icon-16-stats.png); } .icon-16-themes { background-image: url(../images/menu/icon-16-themes.png); } .icon-16-trash { background-image: url(../images/menu/icon-16-trash.png); } .icon-16-user { background-image: url(../images/menu/icon-16-user.png); } .icon-16-user-note { background-image: url(../images/menu/icon-16-user-note.png); } .icon-16-delete { background-image: url(../images/menu/icon-16-delete.png); } .icon-16-help-trans { background-image: url(../images/menu/icon-16-help-trans.png); } .icon-16-newsfeeds { background-image: url(../images/menu/icon-16-newsfeeds.png); } .icon-16-newsfeeds-cat { background-image: url(../images/menu/icon-16-newsfeeds-cat.png); } .icon-16-redirect { background-image: url(../images/menu/icon-16-redirect.png); } .icon-16-search { background-image: url(../images/menu/icon-16-search.png); } .icon-16-finder { background-image: url(../images/menu/icon-16-search.png); } .icon-16-weblinks { background-image: url(../images/menu/icon-16-links.png); } .icon-16-weblinks-cat { background-image: url(../images/menu/icon-16-links-cat.png); } /** * Toolbar icons * These icons are used for the toolbar buttons * The classes are constructed dynamically when the toolbar is created */ .icon-32-send { background-image: url(../images/toolbar/icon-32-send.png); } .icon-32-delete { background-image: url(../images/toolbar/icon-32-delete.png); } .icon-32-help { background-image: url(../images/toolbar/icon-32-help.png); } .icon-32-cancel { background-image: url(../images/toolbar/icon-32-cancel.png); } .icon-32-checkin { background-image: url(../images/toolbar/icon-32-checkin.png); } .icon-32-options{ background-image: url(../images/toolbar/icon-32-config.png); } .icon-32-apply { background-image: url(../images/toolbar/icon-32-apply.png); } .icon-32-back { background-image: url(../images/toolbar/icon-32-back.png); } .icon-32-forward { background-image: url(../images/toolbar/icon-32-forward.png); } .icon-32-save { background-image: url(../images/toolbar/icon-32-save.png); } .icon-32-edit { background-image: url(../images/toolbar/icon-32-edit.png); } .icon-32-copy { background-image: url(../images/toolbar/icon-32-copy.png); } .icon-32-move { background-image: url(../images/toolbar/icon-32-move.png); } .icon-32-new { background-image: url(../images/toolbar/icon-32-new.png); } .icon-32-upload { background-image: url(../images/toolbar/icon-32-upload.png); } .icon-32-assign { background-image: url(../images/toolbar/icon-32-publish.png); } .icon-32-html { background-image: url(../images/toolbar/icon-32-html.png); } .icon-32-css { background-image: url(../images/toolbar/icon-32-css.png); } .icon-32-menus { background-image: url(../images/toolbar/icon-32-menu.png); } .icon-32-publish { background-image: url(../images/toolbar/icon-32-publish.png); } .icon-32-unblock { background-image: url(../images/toolbar/icon-32-unblock.png); } .icon-32-unpublish { background-image: url(../images/toolbar/icon-32-unpublish.png); } .icon-32-restore { background-image: url(../images/toolbar/icon-32-revert.png); } .icon-32-trash { background-image: url(../images/toolbar/icon-32-trash.png); } .icon-32-archive { background-image: url(../images/toolbar/icon-32-archive.png); } .icon-32-unarchive { background-image: url(../images/toolbar/icon-32-unarchive.png); } .icon-32-preview { background-image: url(../images/toolbar/icon-32-preview.png); } .icon-32-default { background-image: url(../images/toolbar/icon-32-default.png); } .icon-32-refresh { background-image: url(../images/toolbar/icon-32-refresh.png); } .icon-32-save-new { background-image: url(../images/toolbar/icon-32-save-new.png); } .icon-32-save-copy { background-image: url(../images/toolbar/icon-32-save-copy.png); } .icon-32-error { background-image: url(../images/toolbar/icon-32-error.png); } .icon-32-new-style { background-image: url(../images/toolbar/icon-32-new-style.png); } .icon-32-delete-style { background-image: url(../images/toolbar/icon-32-delete-style.png); } .icon-32-purge { background-image: url(../images/toolbar/icon-32-purge.png); } .icon-32-remove { background-image: url(../images/toolbar/icon-32-remove.png); } .icon-32-featured { background-image: url(../images/toolbar/icon-32-featured.png); } .icon-32-unfeatured { background-image: url(../images/toolbar/icon-32-featured.png); background-position: 0% 100%; } .icon-32-export { background-image: url(../images/toolbar/icon-32-export.png); } .icon-32-stats { background-image: url(../images/toolbar/icon-32-stats.png); } .icon-32-print { background-image: url(../images/toolbar/icon-32-print.png); } .icon-32-batch { background-image: url(../images/toolbar/icon-32-batch.png); } .icon-32-envelope { background-image: url(../images/toolbar/icon-32-messaging.png); } .icon-32-download { background-image: url(../images/toolbar/icon-32-export.png); } .icon-32-bars { background-image: url(../images/toolbar/icon-32-stats.png); } /** * Quick Icons * Also knows as Header Icons * These are used for the Quick Icons on the Control Panel * The same classes are also assigned the Component Title */ .icon-48-categories { background-image: url(../images/header/icon-48-category.png); } .icon-48-category-edit { background-image: url(../images/header/icon-48-category.png); } .icon-48-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-generic { background-image: url(../images/header/icon-48-generic.png); } .icon-48-banners { background-image: url(../images/header/icon-48-banner.png); } .icon-48-banners-categories { background-image: url(../images/header/icon-48-banner-categories.png); } .icon-48-banners-category-edit { background-image: url(../images/header/icon-48-banner-categories.png); } .icon-48-banners-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-banners-clients { background-image: url(../images/header/icon-48-banner-client.png); } .icon-48-banners-tracks { background-image: url(../images/header/icon-48-banner-tracks.png); } .icon-48-checkin { background-image: url(../images/header/icon-48-checkin.png); } .icon-48-clear { background-image: url(../images/header/icon-48-clear.png); } .icon-48-contact { background-image: url(../images/header/icon-48-contacts.png); } .icon-48-contact-categories { background-image: url(../images/header/icon-48-contacts-categories.png); } .icon-48-contact-category-edit { background-image: url(../images/header/icon-48-contacts-categories.png); } .icon-48-contact-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-purge { background-image: url(../images/header/icon-48-purge.png); } .icon-48-cpanel { background-image: url(../images/header/icon-48-cpanel.png); } .icon-48-config { background-image: url(../images/header/icon-48-config.png); } .icon-48-groups { background-image: url(../images/header/icon-48-groups.png); } .icon-48-groups-add { background-image: url(../images/header/icon-48-groups-add.png); } .icon-48-levels { background-image: url(../images/header/icon-48-levels.png); } .icon-48-levels-add { background-image: url(../images/header/icon-48-levels-add.png); } .icon-48-module { background-image: url(../images/header/icon-48-module.png); } .icon-48-menu { background-image: url(../images/header/icon-48-menu.png); } .icon-48-menu-add { background-image: url(../images/header/icon-48-menu-add.png); } .icon-48-menumgr { background-image: url(../images/header/icon-48-menumgr.png); } .icon-48-trash { background-image: url(../images/header/icon-48-trash.png); } .icon-48-user { background-image: url(../images/header/icon-48-user.png); } .icon-48-user-add { background-image: url(../images/header/icon-48-user-add.png); } .icon-48-user-edit { background-image: url(../images/header/icon-48-user-edit.png); } .icon-48-user-profile { background-image: url(../images/header/icon-48-user-profile.png); } .icon-48-inbox { background-image: url(../images/header/icon-48-inbox.png); } .icon-48-new-privatemessage { background-image: url(../images/header/icon-48-new-privatemessage.png); } .icon-48-msgconfig { background-image: url(../images/header/icon-48-message_config.png); } .icon-48-langmanager { background-image: url(../images/header/icon-48-language.png); } .icon-48-mediamanager { background-image: url(../images/header/icon-48-media.png); } .icon-48-plugin { background-image: url(../images/header/icon-48-plugin.png); } .icon-48-help_header { background-image: url(../images/header/icon-48-help_header.png); } .icon-48-impressions { background-image: url(../images/header/icon-48-stats.png); } .icon-48-browser { background-image: url(../images/header/icon-48-stats.png); } .icon-48-searchtext { background-image: url(../images/header/icon-48-stats.png); } .icon-48-thememanager { background-image: url(../images/header/icon-48-themes.png); } .icon-48-writemess { background-image: url(../images/header/icon-48-writemess.png); } .icon-48-featured { background-image: url(../images/header/icon-48-featured.png); } .icon-48-sections { background-image: url(../images/header/icon-48-section.png); } .icon-48-article-add { background-image: url(../images/header/icon-48-article-add.png); } .icon-48-article-edit { background-image: url(../images/header/icon-48-article-edit.png); } .icon-48-article { background-image: url(../images/header/icon-48-article.png); } .icon-48-content-categories { background-image: url(../images/header/icon-48-category.png); } .icon-48-content-category-edit { background-image: url(../images/header/icon-48-category.png); } .icon-48-content-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-install { background-image: url(../images/header/icon-48-extension.png); } .icon-48-dbbackup { background-image: url(../images/header/icon-48-backup.png); } .icon-48-dbrestore { background-image: url(../images/header/icon-48-dbrestore.png); } .icon-48-dbquery { background-image: url(../images/header/icon-48-query.png); } .icon-48-systeminfo { background-image: url(../images/header/icon-48-info.png); } .icon-48-massmail { background-image: url(../images/header/icon-48-massmail.png); } .icon-48-redirect { background-image: url(../images/header/icon-48-redirect.png); } .icon-48-search { background-image: url(../images/header/icon-48-search.png); } .icon-48-finder { background-image: url(../images/header/icon-48-search.png); } .icon-48-newsfeeds { background-image: url(../images/header/icon-48-newsfeeds.png); } .icon-48-newsfeeds-categories { background-image: url(../images/header/icon-48-newsfeeds-cat.png); } .icon-48-newsfeeds-category-edit { background-image: url(../images/header/icon-48-newsfeeds-cat.png); } .icon-48-newsfeeds-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-weblinks { background-image: url(../images/header/icon-48-links.png); } .icon-48-weblinks-categories { background-image: url(../images/header/icon-48-links-cat.png); } .icon-48-weblinks-category-edit { background-image: url(../images/header/icon-48-links-cat.png); } .icon-48-weblinks-category-add { background-image: url(../images/header/icon-48-category-add.png); } .icon-48-tags { background-image: url(../images/header/icon-48-tags.png); } /** * General styles */ div.message { border: 1px solid #1b3f7c; color: #333; } .helpFrame { border-left: 0 solid #1b3f7c; border-right: none; border-top: none; border-bottom: none; } /** * Override mootree.css styles * media/system/css/mootree.css */ .mooTree_selected { background-color: #10254a; } /** * Modal Styles */ dl.menu_type dt { border-bottom: 1px solid #1b3f7c; } ul#new-modules-list { border-top: 1px solid #1b3f7c; } /** * Override mediamanager.css styles * administrator/components/com_media/assets/mediamanager.css */ #folderview input#folderpath { width: 65%; color: #fcff20; background-color: #163365; border: 1px solid #1b3f7c; } .upload-queue .queue-loader { background-color: #fcff20; color: #163365; border: 1px inset #fcff20; } .upload-queue .queue-subloader { background-color: #1b3f7c; color: #fcff20; } /** * User Accessibility */ /* Skip to Content Visual Styling */ #skiplinkholder a, #skiplinkholder a:link, #skiplinkholder a:visited { color: #163365; background: #fcff20; } /** * Admin Form Styles */ fieldset.panelform { border: none 0; } /** * ACL STYLES relocated from com_users/media/grid.css */ a.move_up { background-image: url('../images/admin/uparrow.png'); } span.move_up { background-image: url('../images/admin/uparrow0.png'); } a.move_down { background-image: url('../images/admin/downarrow.png'); } span.move_down { background-image: url('../images/admin/downarrow0.png'); } a.grid_false { background-image: url('../images/admin/publish_x.png'); } a.grid_true { background-image: url('../images/admin/tick.png'); } a.grid_trash { background-image: url('../images/admin/icon-16-trash.png'); } /** * ACL PANEL STYLES */ /* All Tabs */ tr.row1 { background-color: #1c4181; } /* Summary Tab */ table.aclsummary-table td.col2, table.aclsummary-table th.col2, table.aclsummary-table td.col3, table.aclsummary-table th.col3, table.aclsummary-table td.col4, table.aclsummary-table th.col4, table.aclsummary-table td.col5, table.aclsummary-table th.col5, table.aclsummary-table td.col6, table.aclsummary-table th.col6, table.aclmodify-table td.col2, table.aclmodify-table th.col2 { border-left: 1px solid #cbcbcb; } /* Icons */ span.icon-16-unset { background: url(../images/admin/icon-16-denyinactive.png) no-repeat; } span.icon-16-allowed { background: url(../images/admin/icon-16-allow.png) no-repeat; } span.icon-16-denied { background: url(../images/admin/icon-16-deny.png) no-repeat; } span.icon-16-locked { background: url(../images/admin/checked_out.png) 0 0 no-repeat; } label.icon-16-allow { background: url(../images/admin/icon-16-allow.png) no-repeat; } label.icon-16-deny { background: url(../images/admin/icon-16-deny.png) no-repeat; } a.icon-16-allow { background: url(../images/admin/icon-16-allow.png) no-repeat ; } a.icon-16-deny { background: url(../images/admin/icon-16-deny.png) no-repeat ; } a.icon-16-allowinactive { background: url(../images/admin/icon-16-allowinactive.png) no-repeat ; } a.icon-16-denyinactive { background: url(../images/admin/icon-16-denyinactive.png) no-repeat ; } /* ACL footer/legend */ ul.acllegend li.acl-allowed { background: url(../images/admin/icon-16-allow.png) no-repeat left; } ul.acllegend li.acl-denied { background: url(../images/admin/icon-16-deny.png) no-repeat left; } li.acl-editgroups, li.acl-resetbtn { background-color: #1b3f7c; border: 1px solid #10254a; } li.acl-editgroups a, li.acl-resetbtn a { color: #fcff20 } li.acl-editgroups:hover, li.acl-resetbtn:hover, li.acl-editgroups:focus, li.acl-resetbtn:focus { background-color: #163365; border-top: 1px solid #000000; border-right: 1px solid #1b3f7c; border-bottom: 1px solid #1b3f7c; border-left: 1px solid #000000; color: #fcff20; } /* ACL Config --------- */ table#acl-config { border: 1px solid #10254a; background: #1c4181; } table#acl-config th, table#acl-config td { background: #1c4181; border-bottom: 1px solid #10254a; border-top: none; border-left: none; border-right: none; } table#acl-config th.acl-groups { border-right: 1px solid #10254a; } /** * Mod_rewrite Warning */ #jform_sef_rewrite-lbl { background: url(../images/admin/icon-16-notice-note.png) right top no-repeat; } /** * Options modal- config */ /* * * Permission Rules */ #permissions-sliders ul#rules, #permissions-sliders ul#rules ul { border:solid 0 #1b3f7c; background:#163365; } ul#rules li .pane-sliders .panel h3.title { border:solid 0 #1b3f7c; } #permissions-sliders ul#rules .pane-slider { border:solid 1px #1b3f7c; } #permissions-sliders ul#rules li h3 { background:#1c4181; border: 1px solid #1b3f7c; } #permissions-sliders ul#rules li h3.pane-toggler-down a { border:solid 0; } #permissions-sliders ul#rules .group-kind { color:#fcff20; } #permissions-sliders ul#rules table.group-rules td { border-right:solid 1px #1b3f7c; border-bottom:solid 1px #1b3f7c; } #permissions-sliders ul#rules table.group-rules th { background: #10254a; border-right:solid 1px #1b3f7c; border-bottom:solid 1px #1b3f7c; color:#fcff20; } ul#rules table.aclmodify-table { border:solid 1px #fcff20; } ul#rules table.group-rules td label { border:solid 0 #1b3f7c; } #permissions-sliders ul#rules .mypanel { border:solid 0 #1b3f7c; } #permissions-sliders ul#rules table.group-rules td { background: #163365; } #permissions-sliders span.level { color:#ffffff; background-image:none; } /* * Debug styles */ .check-0, table.adminlist tbody td.check-0, table.adminlist tbody tr:hover td.check-0 { background-color: #FFFFCF; color: #163365; } .check-a, table.adminlist tbody td.check-a, table.adminlist tbody tr:hover td.check-a { background-color: #CFFFDA; color: #163365; } .check-d, table.adminlist tbody td.check-d, table.adminlist tbody tr:hover td.check-d { background-color: #FFCFCF; color: #163365; } /** * System Messages */ #system-message dd ul { color: #fcff20; border-top: 3px solid #84A7DB; border-bottom: 3px solid #84A7DB; } #system-message dd.error ul { color: #fcff20; background: #1c4181 url(../images/notice-alert.png) 4px top no-repeat; border-top: 3px solid #a20000; border-bottom: 3px solid #a20000; } #system-message dd.message ul { color: #fcff20; background: #10254a url(../images/notice-info.png) 4px center no-repeat; border-top: 3px solid #EFE7B8; border-bottom: 3px solid #EFE7B8; } #system-message dd.notice ul { color: #fcff20; background: #10254a url(../images/notice-note.png) 4px top no-repeat; border-top: 3px solid #F0DC7E; border-bottom: 3px solid #F0DC7E; } /** CSS file for Accessible Admin Menu * based on Matt Carrolls' son of suckerfish * with javascript by Bill Tomczak */ /* Note: set up the font-size on the id and used 100% on the elements. If ul/li/a are different ems, then the shifting back via non-js keyboard doesn't work properly */ /** * Menu Styling */ #menu { /* this is on the main ul */ color: #ffffff; } #menu ul { /* all lists */ background-color: #163365; color: #ffffff; } #menu ul li.node { background: #163365 url(../images/j_arrow.png) no-repeat right 50%; } #menu a { color: #ffffff; background-repeat: no-repeat; background-position: left 50%; background-color: #1b3f7c; } #menu li { /* all list items */ background-color: #163365; border-right: 1px solid #000000; } #menu li a { border: 1px solid #10254a; } #menu li li a { border: 1px solid #10254a; } #menu li a:hover, #menu li a:active, #menu li a:focus { background-color: #163365; border-top: 1px solid #000000; border-right: 1px solid #1b3f7c; border-bottom: 1px solid #1b3f7c; border-left: 1px solid #000000; color: #ffffff; } #menu li.disabled a:hover, #menu li.disabled a:focus, #menu li.disabled a { color: #feffbf; background-color: #1b3f7c; border-top: 1px solid #163365; border-right: 1px solid #10254a; border-bottom: 1px solid #163365; border-left: 1px solid #10254a; } #menu li ul { /* second-level lists */ border-top: 1px solid #10254a; border-bottom: 2px solid #10254a; } #menu li li { /* second-level row */ background-color: #163365; } #menu li:hover ul,#menu li.sfhover ul { /* lists nested under hovered list items */ margin-left: 0; border-left: 1px solid #122b56; border-right: 1px solid #122b56; } #menu li li:hover ul,#menu li li.sfhover ul { border-left: 1px solid #122b56; border-right: 1px solid #122b56; } /** * Styling parents */ /* 1 level - sfhover */ #menu li.sfhover a { background-color: #163365; border-top: 1px solid #000000; border-right: 1px solid #1b3f7c; border-bottom: 1px solid #1b3f7c; border-left: 1px solid #000000; color: #fcff20; } /* 2 level - normal */ #menu li.sfhover li a { /* background-color: #f0f0f0; */ background-color: #1b3f7c; border: 1px solid #10254a; color: #ffffff; } /* 2 level - hover */ #menu li.sfhover li.sfhover a,#menu li li a:focus { background-color: #163365; border-top: 1px solid #000000; border-right: 1px solid #1b3f7c; border-bottom: 1px solid #1b3f7c; border-left: 1px solid #000000; color: #fcff20; } /* 3 level - normal */ #menu li.sfhover li.sfhover li a { background-color: #1b3f7c; border: 1px solid #10254a; color: #ffffff; } /* 3 level - hover */ #menu li.sfhover li.sfhover li.sfhover a { background-color: #163365; border-top: 1px solid #000000; border-right: 1px solid #1b3f7c; border-bottom: 1px solid #1b3f7c; border-left: 1px solid #000000; color: #fcff20; } /* bring back the focus elements into view */ #menu li li a:focus, #menu li li li a:focus { background-color: #163365; border-top: 1px solid #000000; border-right: 1px solid #1b3f7c; border-bottom: 1px solid #1b3f7c; border-left: 1px solid #000000; color: #ffffff; } #menu li li li a:focus { background-color: #163365; border-top: 1px solid #000000; border-right: 1px solid #1b3f7c; border-bottom: 1px solid #1b3f7c; border-left: 1px solid #000000; color: #ffffff; } /** * Submenu styling */ #submenu { border-bottom: 1px solid #10254a; /* border-bottom plus padding-bottom is the technique */ /* This is the background befind the tabs */ background: #1c4181; } #submenu a, #submenu span.nolink { background: #1b3f7c; border: 1px solid #10254a; color: #ffffff; } #submenu a:hover, #submenu a:focus { background-color: #10254a; } #submenu a.active, #submenu span.nolink.active { background: #163365; border-bottom: 1px solid #163365; color: #fcff20; } /** * Webkit fixes **/ input:-webkit-autofill { background-color: #163365 !important; } /* -- Codemirror Editor ----------- */ div.editor-border, div.CodeMirror-wrapping { border: 1px solid #163365; background-color: #ffffff; } /* User Notes */ div.unotes h1 { background-color: #ffffff; } ul.alternating > li:nth-child(odd) { background-color: #163365; } ul.alternating > li:nth-child(even) { background-color: #10254a; } ol.alternating > li:nth-child(odd) { background-color: #163365; } ol.alternating > li:nth-child(even) { background-color: #10254a;} /* Installer Database */ #installer-database, #installer-discover, #installer-update, #installer-warnings { border-top: 1px solid #1b3f7c; } #installer-database p.warning { background: transparent url(../images/admin/icon-16-deny.png) center left no-repeat; } #installer-database p.nowarning { background: transparent url(../images/admin/icon-16-allow.png) center left no-repeat; } PKb��\Pg��templates/hathor/css/theme.cssnu�[���@charset "UTF-8"; /** * @package Joomla.Administrator * @subpackage templates.hathor * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @since 1.6 */ /* ThemeOfficeMenu Style Sheet */ .ThemeOfficeMenu, .ThemeOfficeSubMenuTable { font-family: Arial, Verdana, sans-serif; font-size: 13px; padding: 0; white-space: nowrap; cursor: default; height: 25px; } .ThemeOfficeSubMenu { position: absolute; visibility: hidden; /* Netscape/Mozilla renders borders by increasing their z-index. The following line is necessary to cover any borders underneath */ z-index: 100; border: 0; padding: 0; overflow: visible; border: 1px solid #8C867B; filter:progid:DXImageTransform.Microsoft.Shadow(color=#BDC3BD, Direction=135, Strength=4); } .ThemeOfficeSubMenuTable { overflow: visible; } .ThemeOfficeMainItem, .ThemeOfficeMainItemHover, .ThemeOfficeMainItemActive, .ThemeOfficeMenuItem, .ThemeOfficeMenuItemHover, .ThemeOfficeMenuItemActive { border: 0; cursor: default; white-space: nowrap; } .ThemeOfficeMainItem { /*background-color: #EFEBDE;*/ } .ThemeOfficeMainItemHover, .ThemeOfficeMainItemActive { background-color: #e7eddf; } .ThemeOfficeMenuItem { background-color: #F1F3F5; } .ThemeOfficeMenuItemHover, .ThemeOfficeMenuItemActive { background-color: #e7eddf; } /* horizontal main menu */ .ThemeOfficeMainItem { padding: 4px 1px 4px 1px; border: 0; } td.ThemeOfficeMainItemHover, td.ThemeOfficeMainItemActive { padding: 0; border-right: 1px solid #6d9d2e; border-left: 1px solid #6d9d2e; } .ThemeOfficeMainFolderLeft, .ThemeOfficeMainItemLeft, .ThemeOfficeMainFolderText, .ThemeOfficeMainItemText, .ThemeOfficeMainFolderRight, .ThemeOfficeMainItemRight { background-color: inherit; } /* vertical main menu sub components */ td.ThemeOfficeMainFolderLeft, td.ThemeOfficeMainItemLeft { padding-top: 2px; padding-bottom: 2px; padding-left: 0; padding-right: 2px; border-top: 1px solid #6d9d2e; border-bottom: 1px solid #6d9d2e; border-left: 1px solid #6d9d2e; background-color: inherit; } td.ThemeOfficeMainFolderText, td.ThemeOfficeMainItemText { padding-top: 2px; padding-bottom: 2px; padding-left: 5px; padding-right: 5px; border-top: 1px solid #6d9d2e; border-bottom: 1px solid #6d9d2e; background-color: inherit; white-space: nowrap; } td.ThemeOfficeMainFolderRight, td.ThemeOfficeMainItemRight { padding-top: 2px; padding-bottom: 2px; padding-left: 0; padding-right: 0; border-top: 1px solid #6d9d2e; border-bottom: 1px solid #6d9d2e; border-right: 1px solid #6d9d2e; background-color: inherit; } tr.ThemeOfficeMainItem td.ThemeOfficeMainFolderLeft, tr.ThemeOfficeMainItem td.ThemeOfficeMainItemLeft { padding-top: 3px; padding-bottom: 3px; padding-left: 1px; padding-right: 2px; white-space: nowrap; border: 0; background-color: inherit; } tr.ThemeOfficeMainItem td.ThemeOfficeMainFolderText, tr.ThemeOfficeMainItem td.ThemeOfficeMainItemText { padding-top: 3px; padding-bottom: 3px; padding-left: 5px; padding-right: 5px; border: 0; background-color: inherit; } tr.ThemeOfficeMainItem td.ThemeOfficeMainItemRight, tr.ThemeOfficeMainItem td.ThemeOfficeMainFolderRight { padding-top: 3px; padding-bottom: 3px; padding-left: 0; padding-right: 1px; border: 0; background-color: inherit; } /* sub menu sub components */ .ThemeOfficeMenuFolderLeft, .ThemeOfficeMenuItemLeft { padding-top: 2px; padding-bottom: 2px; padding-left: 1px; padding-right: 3px; border-top: 1px solid #6d9d2e; border-bottom: 1px solid #6d9d2e; border-left: 1px solid #6d9d2e; background-color: inherit; white-space: nowrap; } .ThemeOfficeMenuFolderText, .ThemeOfficeMenuItemText { padding-top: 2px; padding-bottom: 2px; padding-left: 5px; padding-right: 5px; border-top: 1px solid #6d9d2e; border-bottom: 1px solid #6d9d2e; background-color: inherit; white-space: nowrap; } .ThemeOfficeMenuFolderRight, .ThemeOfficeMenuItemRight { padding-top: 2px; padding-bottom: 2px; padding-left: 0; padding-right: 0; border-top: 1px solid #6d9d2e; border-bottom: 1px solid #6d9d2e; border-right: 1px solid #6d9d2e; background-color: inherit; white-space: nowrap; } .ThemeOfficeMenuItem .ThemeOfficeMenuFolderLeft, .ThemeOfficeMenuItem .ThemeOfficeMenuItemLeft { padding-top: 3px; padding-bottom: 3px; padding-left: 2px; padding-right: 3px; white-space: nowrap; border: 0; background-color: #DDE1E6; } .ThemeOfficeMenuItem .ThemeOfficeMenuFolderText, .ThemeOfficeMenuItem .ThemeOfficeMenuItemText { padding-top: 3px; padding-bottom: 3px; padding-left: 5px; padding-right: 5px; border: 0; background-color: inherit; } .ThemeOfficeMenuItem .ThemeOfficeMenuFolderRight, .ThemeOfficeMenuItem .ThemeOfficeMenuItemRight { padding-top: 3px; padding-bottom: 3px; padding-left: 0; padding-right: 1px; border: 0; background-color: inherit; } /* menu splits */ .ThemeOfficeMenuSplit { margin: 2px; height: 1px; overflow: hidden; background-color: inherit; border-top: 1px solid #C6C3BD; } /* image shadow animation */ /* seq1: image for normal seq2: image for hover and active To use, in the icon field, input the following: <img class="seq1" src="normal.gif" /><img class="seq2" src="hover.gif" /> */ .ThemeOfficeMenuItem img.seq1 { display: inline; } .ThemeOfficeMenuItemHover seq2, .ThemeOfficeMenuItemActive seq2 { display: inline; } .ThemeOfficeMenuItem .seq2, .ThemeOfficeMenuItemHover .seq1, .ThemeOfficeMenuItemActive .seq1 { display: none; } /* inactive settings */ div.inactive td.ThemeOfficeMainItemHover, div.inactive td.ThemeOfficeMainItemActive { border-top: 0; border-right: 1px solid #f1f3f5; border-left: 1px solid #f1f3f5; } div.inactive .ThemeOfficeMainItem { color: #bbb; } div.inactive span.ThemeOfficeMainItemText { color: #aaa; } div.inactive .ThemeOfficeMainItemHover, div.inactive .ThemeOfficeMainItemActive { background-color: #f1f3f5; }PKb��\�k;m[m[%templates/hathor/template_preview.pngnu�[����PNG IHDR 3ϛ���PLTE����}K���4kU*Z���~����;s��s�I���76t~����������dmiզ�>?Z��k�>�ת�;DJ����v��$lo���@3eA�Dc��˸y�:���L}������R���|m6k��1?|��������僞���;����K\dHR�9�?�ɖ�w�tRNS@��fZpIDATx^b`� `�����`��A$M��9�@���`����0|�e�!e,�:P$㦀�:���!q7�.�M3yǶ�b�J����w}�C� �� ��C�t�؟�@�j�{��u����ǎ��d�w%}�|�KYl���\�>�9��x����9h���4I�-�&?�'g}�8?O���k� s�KYHN2��Y��!4O���c7xf��3ߑx�| ���$2R�l$~��4L��`�u�������H�l��5kqɌ�H��+��ֽ�&};@���W����e��*S?z�j���I� ���~H.eM/�4}p��C���l�|G����;,��XC� �2���s]7�ޱ��a�-)��7�b��FQ�D�&E_����$o����p:��C���Dw�:�㰮d>�F�����tUz���3 �s���D��5a�^6�_8�lo�!��7��=@��ERQ�fC0�:�0��(a���� �eY�Rz��vt������WW��,��4�Ii�;>m�+9�@�Bm;:P;��`e��7�r%��:���c����~Ǭ��?d��1%�&��2X�YA��m��.�E��J>}�3x!���(�)�Q��Y·���q_u~��n� �iv�c=��c�̆��-��g�P<��ϩ�u �$�a!�@*�F�v&�t����$���Pt�C�.����o�r��X��8\BBhШ�8��2ܮ 3����?\]]�eY�R��s��TC$�Q8{��EApm�cԑ��2%��D��t�`��X�%k�Яi�e�F����\��=�iM����1o�U��dž�6H�x�,�@b�p����Q�T��K�0=-!/xU�v u�L�yK�M{��. ��:��XW����_�$��Ӻ�خ������= Ր�a��'I-�gT���l|��pI x�dM���D��voi}���i`V�; �a�`{i�p@�@A��Ȼ�D���F�w��.U� �W�;De�5CjI,�8IK'<�J�m���]��n�����FhX�p�b��[��ˀ���d 03\�$� FCJm �D�_� �%�u�u~����6}M��z�TfƂ�.�o��r %�����-]��A�g��3@ �H�<w���p;4�����@|����\u3 ǚ.k53 ��u�b�����=��ȔD�Jo���-e�BD/2���|d��t*�@��XB���DR�D�������.V� ��B�Qܐ�.�;*oK���G #Gl�s@R��# ��Ү��s��.@�j��U=g���7xyc�~NkN6g�$A=�;�C��;��=����\�m����ad��>�K��7$D@(��̀�,*�7�H.U��;�������Ϡo3 Q��w��6[ ��K���pގ-����דUD�LX<ݓp�R��JH��bYAɔ��%@�@X�.����K����K�5H�Yr��%�����3�kWT�[��h�hM�ҽ b�^��@�˘�����q]�+@�-� ;ޒs� 4��]#�@ϥ�G�[��L��Re�9 ��IA�ĭ�Ɏ�L<��z@�Pdr���d.;J� w �x���7Y���#?V��(���Y��ϼ�7.�O�\)��H�Zad&�h�������_oy_�^�F�1]Ppk��f~H�E�z]P��W,� M�F��"�f] d� �krd��8���2��9�*������He*�!!��[��s��(�7�IJYt�F�V����i� ���@j �b�G�I�.���?L`y ��))Z�wg�����&!Fw�Jn�� 'K,����\�؟,}�^�����,Fd4���;ƕc�������Y�}�(t��+�Ή֘0BK^�Ё�A��v�.$p7���46Ļe �܄sNY�qg���7��06����y���fi-d$ �' ��c��!e1��h����4�dz6J�Z-�c�#�D�H��k�:�@@ �Lt���ȁc�����2�����Z���l�v7n�1�ApK����S)9�G�~,0 R�o!u"�HZ�JR-�e�u>�xV$b@���D���`�b�M)�=x�$D�\ �G1PV֣Pn�fQj�e��5AYRy�E �Xv�h�q08A�A�2�܄�1������ �:M��R���F_��v���Ixz�/z �Tʷ>F�L(�-�|��A�Z �)� @�c@�d@�d@ ��-,�dѼ�=�o.�m{���1���f�d�1�d�c���y 2���阁��}N�$8�D�\�� �?-��{ H�I(/�,�x[�P�M@�ʕ?4����֚_��i ��=�#��$n��s���ǝ[X�ܸ%�f"t�]ؕY��� ȋ���*�B�P�j�H�%�B���K�^�Y�Dv��h��rN��=o��T<�/n�j& �K�Q�����+=v�39�i^�g�*!i�u :ѕT�Haٶy�붊�� W���H& (�cN�s�ʮ0Q1�U:c�yg���Q�^�uF1� +�,%���//�N�Ȼ��ړ��(��lB۶�T1�(�N�Kd���-�t�Kb��UT)� ���R%�@��ٍd��Y��;r3��v��+["gU&��H=*���@���+k)�+�T�K��f<'�ۈ(G�H!ф�sHHٸ�bf�O��_J`Q�;���� HH�; �����2i�H��nr��I��?H�Ǜ�IL�-Mz�A�-��0��un �\eB���a�T��[?�!�ځ(3�z�*?!�W �1/�B���@�R�A�$�s@� $h�m����<q�D����.���[[ (�u�Q�Źŋ ��Js�D0'������Ĺ/�N �W��@и�*(N�$2����u��]�Nve"����ܲ4�ڗX�vv;;_�m��ƩE~b����/�&]��hbK�.��j�0;³ۑ�&]j�jl�M� kT���;m��,@^�O�Iw2Jo���H`k�@���C�V�I3��PbW�mM:�1�WK�{��ک��u�V�M:<6�}56�Q�t�牛�G���1.z��w�pB�5� ��? �_�?d���[M�d@�d�����C@� ���%�f �Dɡ �ݼ=�']yp�I����P�'���� �Femj��[+�52����k~�7���(�ە9đd�,c���X��U�@ �@ @ �@ ��Q�$�v��~�O�K% ���������Y��A=ϟP�M9�&)�q�vv���g7�q�e5�z��/o�$o���� �ˆ�@�W����ڷ�yg��oSk�}Q��L��s�k�w�}��\b_��b�_e�@ !������v�~ �g�c��Q��:��L�cR����v̥D��"�q����X����y\�B�[��ϙk��..R&F�.o�MG��m�D��j�S�C��J�Ϫ��:��w�O,Q���0V�m�@ ��F�.�>Փ�M�?*�$Dm^>���-���.���N�����Ɓ� �P���zMy��et_Jy�5��4�m�L��T�_�d�) �@ ��L���FDRo��(v�����%TB�[���G��' ��tg�?�BU&�5���@@ �IH.�M~��ˊ�0E���Umb��"d3� ������!= �ǡ�с�T%�́��}�B|� ;�����=_1x�����'H�'�a �F�"�NA� E��R9���S�C,�愍��Q)��v�Q��9�k��U �Cl KεԪ^H�MSJ=� ��A� n��ꋙ¶"2�o�4��ț�r�8O�/g�+�,�x��1�u��X_�"H��Э mk��bt C�5ZgL�0b0x+��C5�JG��� R)�(�ƌ(��@U�(אL֡2\��}d�+��,H��ڙ��Y= �.AR���_Io.����5�F%�@�k�0t�9�U�A���* ����eA�R�Ab�J� ȝ�c� �� LVgZ1]7�G��j ^�K�Zg��B9��y�ﺳ�opOm�z��d�=(���Đ� r߿��_�VGpR�G��<��5���i/��!MG���㐭ȉ�â�[T��xE�BJ1m$��s�)?:"�뷥W���RH�aƹ���*lD��'@��)���"bh�oK$���`�&AR�$H���l�^�q�>s;���`���;w��&�\�fPf��&��k(�������ٰP�5�Ù�]�#8�"���I���9��w ��g.@pَ)�Mi�2���k�pB/�����р�3 V�3S��V���n�)�,T8�F�RB`�i�ڎHV�?�����y!\ B��܁6~� qr�|�x2t93����;�;�܀�@�zs[FL�D�K���.�`B� ������@�@,&V��Mac5[�k� ��M(!��v5#��R w ��2�q�HM�R4ƨ_�t.���y�]M ��=]�\4(��$I��MR�1��_����X�v�DZ�#�"ݿy!���HM �_q�� ��7@ �F�X�� �e�PV*�'@��/����V�����5���T�ۆ1c Ŋ���ԃ�i�Wt^����ρ)W��;�IUwȖS+���s�D?���Њ)�UF�Y�lu(�Q ��;���y�����;�G�W��U�YnDԐ�Aͪ��||?��Y#��T��p������ZDxY&�����u��$��$KvY�R)ק�u�X'2K� ���*,�["O�<k<�R�4{�C ��^r�����l��fZ�k���D[(�mU��Q��CU�u Tʤ�������n���%��ǫ,' �3����)' �l/���B DѶ�RŞ����Rl�D�/����}� ���Sy�^Ee��9��>rm����40�K��H��:[y�t�-2��_��am�<-�t#��Y��ZI?�i֤��u «b{~�""; P���tf��!vt ���a�2����H���r��%��@v+���"7��-mWA��2ͤ�Y�d�9�}k��ͦ���<\�D� ���̒��e�A���E]����dW��@�́�� ��q�{ad3� ���25��|���@�����j�]��B���גּ=� f1#AN���,���b �G '"r+Xx{[i�Xx�¯��E��@b�Gׁ���m�<v���x����,&�����|,��+s�����Z$��i��@�f�7E��K��x�3�4�7�u<!�"����#�7K*�h�Y 8����nH֫E@��O�A��G���Hl*%�?xTx� ��ׇ���Z�� �m�wPL��G֭50� 曯>4��q��a�'���ٺ�;qB�k@4Z$}�l������f���h��6�uݝ�K��19��C�k���{�+5;RX�aO�#��%@8��:���]L�l!SΜ'T�,���W1�=��� �6��!D��U<�jJ���u��1���M}d�����.����{@v�-r��{�*��Q�]"���B�N�!����l!��t��\�!�i]�:R��_ 䞏�A�lt ��7�A�J)�FN��#�Y�܁���6@����j���c�~�\��@���h�{y!w ��6�D umQL4܁`@p)�!���5/}N w �lj] X�`7 Ō�q"�b0ZE ���OO���x0���܁���q �����}�- ���$w w �v���e�iۖ�@���D�hi���ف�;ȏ�B0�U)�A#����܀`�)�E��@l��@�@�����mo��!D�_�aRbg �>��f�yH3�p��0��:6��`��*�:�����;�����|��-�����"# q��� |Uʬ�R�,�C�%�b��"��ĉY#Nla���P�Z�;_8^��{�!�<��p�_���+5lM��������%֣Sᓼ@NBt�������&�_WU���������^����@F�K�y����W�N��ZiGف&����ˬA�L�Z���5b�c CK�DBu 5CQ�jY��E�*��(�E�I���|�O�rR� � D�}��;���M( �T�+�E����>y�*0:����z��v���l3����d�F����$�?�a��gK+��K�7ۉ�aO=}�[5b� �8�6k�����ã�,�}�����Z��7凒��UP��3�aW�9taT�fuEG}���.]�OH�B�����d'���z�i��-�1�~ �zY����s$���9�PA @��֕d2Y%]_������)��Y|DS�2SH⫸K[gX"L�����I.����6��sG:��@R�ªy��W���K���� Ƚ3�V>+`B�XSI�V� ��踨��$���ҏ}dw�u!v����"�*�3�� ��}I#i�s�D��9�u�v�?: pb�[���� ���&�x<������� ��Р��WGC�D�K*��jG���u�@��r���Ne��%��i{~@��_�Z��y������y;�CvA����4�}�,�y�YҎ�MdIhp#Fi�_����4`�P2��|�c�V����_DY�5ZV=��i��s�iz�b �Hdض�M ���j�45@ M �H�r� M �HS��i�4@ �H�"y��^D����t�TY��ߴf� ҷ�y�I3|4vT0O����c����N�Iy�"��K)��Sz2?% ��sF��%A���nF���_�un#�<�mD��B��Hq4#�5i`2��"�d��2EOGO��`�� @��ҏ�v��FwI�pm�U������a�P��%��WV�0�("3`+ �)���Y ��<����H6S��uΩr�9@k�'�h6B~&@:g/���ۀd���G��@vTK`�P���rU6��|y)L�ӒB �R���!�����R��|�L9p���N�<*��8�-�%�y߀4@�F��蜏u1������@�$��`�E@w��k~��dn2�qљ�Ep4�/��"0`s7٫A���F�`��[K��1zm'���>=��%駓y"@�rwL�ɻ��a:r��[��q�"G{�fh���"t��%V$�UȀA[�V@��G���U��Qvv@�X�ɐ�j#����a�F��1��!z�M�-C;�p��v��& �RR�VQDrT�cp$p2Q��{���ۀ�Ϸ�����l��!��,�K`ѩJ�ݳ��iJ�wd�+h�#I��gm-�F3A�$�;��*����k$�#[���9��g�q^G��U��u�h:gC��1Zk���a�Ю��D�����ww���{������D赗��p�fi���{�<K[Yb1�F���w�:1@A ؐ� N5����p�U`֧��j�dc�E���5�Ƽۑy~ߊ�bw]��ܵYXg�� P��W����?�.�`��] º�y�7�q ��`�% ������j�-!��@n���N�\�4�K�^w�ydgbgF������(�0D��7D��QAΞ������B� *H1�U�=>� *� �N�t�D�yG�WiG( 88�� �~� ? *� r2����p���Մ+J�o�tiDL�D��_\b9��,>�WM�,�n �T�QPAT�N� ��{�HNދ r�,�j B�d�APAT���=�����MKX:Al��w� *��5��?˿��� b<�Z�2)�� )��q���AT� ��OX�7�M@/�k�z�Q�D�>��*H���P`RAT��(�>� �d�kQ��b]f�[,Ew�~��QTd�ף�#� W�� ��P� �DQAT�|�$�5�w�����ǣ��1�I�%N=q{,Y��� �����r�)�;<����v)AG��s[��H�&RY$}�X��*��X㥂Y�i�K�-��� ��˧y{�H܀ Dh" D�5D2��4��IH��iË���T�����e]~�� ��p�� �O>����� k�H:�m�=R�P�2�䤽�ڻ�s*~�䳀�^��LEf��B�^��m�w!�h.1�(�[ �&*̑����`n���"澴4���9%AL� �$R��p ȑ�u�A��s l��.��ϭ`߁ &�%��I�ɭg{�Ċ���)�56���A��R��E�ٳ�R$��q�ͩJtI`�Ș�� 2W �+)���O/�)�(�>n�jl�ӛĠ��[�s���L�mA|�4<ɟ���O�E�:B銔� ��ZZ$�d�pn�,��G�D�C�G�AJ\UA _� �aW%�}���M�i+�ۗ{ ���f\��~%w�4܂y� `���p@Ӯ�H,r����pF��L��W�]fq�)-�@�SA֥]fqp" ƾ�g�W�����@��_aw� m��F�}�Ln�5&7~Ԑq)�g)xv�x� ���)*�~� �6A^��2��;�1V�i��q��w��S���C���=��gS|��f�I��i!H�� ���<@� ��CN�{�?�7���?D�H�)1��1iiIbeS`�PQ�dbR"�&*deV�����IUU&C)&ssIt�K�b��:l �o:2�!��lhd�m��r���Xn��T�<��:�p���s��m�@ƉƔ��2(l�"+͆%ʱ��&�M��v���� �~��]U��/ Ȩ��� Y�5a�QGU�9�������jB@�kS]�&���}��( �P�Y.�P�e�X#�@b&y�7!|�@���?W�6��Ao�;!����1�i��,�6�KyKWX�|�9"�*�:�~h ~�O-6�C�K�<�䔲�K,~����9! 0�a����.�' 5+:��rC:�xW�UӼk�@�9��A�\�Aj7�=��D��RI Y%@x��b"�Q} P�:��-�H����Y��E@lc���}� �|p��;��x���| ����/"�1��l_��} �S�M��v7��b��XY�2v��g���~vˊ?�n��H3 $O!m:���AR˼���i�hyL����@�S�d���b�y��`7�K�/S�� K@�H�S!��N�8��CJ�%�̡��L�B@�������j�3%��3�o���{<4i# ���Z���q�H>�(LHhA�AH,� )��^�Q��Ci6Y �ڮ_�9�{��e�,L�B�! ̙9���1Y���{����Y�1o D0�e�@�8���Kh���� �16<��~* ��(�*���#��# �0;���Y�� �ݼp��A�"Dxc�pƀ@���op�X�*ZK��F@�f(�$���?;5 ~$����6�Q��Q�c�,�� �Pf5�lQc��;�nY�6YJ��[�;��CR�/ 1��z�0ue_r�� @ �A� @ �A+c���YX��;)Rޘ�.A�Z�h�Kz=^)}����Ö�۬++� ȴ?�*�z�X?� 2�,��1�=�,�(9�|Me�l�K�EJ�=�>X�5��W���v��m�W�$��fk�O|�T�2Ǻc˹�d�-��٩��쓺YAإ�Lڪ�E3�u��wN�-3 �v4h�<uMu� ��J�lӰ8Vm4��� C�4���g��Ҧsy��q-�'&MK���Ai'b��4������\.�U���1������k�{�S5i:�ĎXQ�9k⤴k��J�o� �K�;�"����G�2q^r�r��m��<,zV�^g4]��_���Һ��|.}�d�sS��%�Nќ��?d�r�s���95=t^I�/�wQZ��s�F�"�A�3myV$��[�Z��磹Y=���f���('n˕<�C+�s��l��<�4�+w���jڟ��M��|)�;���! �����o��\HU�����{9ĺS�x*�ғ��^Vr*^w�J��A���w�VA*�)����v�U��M�S�&h��]�Y�X��'�m�9k�;�q��8�,IS�⍂4�cwH��Rnm��(%�F��ky*��� ��)Yrq��tiENk�Y��U�K��H,�h��䐶��/�eL뉆ь�%%z�a�׳>���r��x���2I��SKz_.���v(��Kڒ���Pnd u[FO�ڪzՇ�J�1a|)=nCiͪ�J� ���P��$� ��ޒ6�AfJzy�t4�F�e%�;2�=Hgm��� -ۦ|�{�I��`>����h��BA � �s �A� �@A � @ )��<8 A>�O�qɟ��A� @ r�A� @ ������P�`��(��I0 F���2�0�`�2 F�h�`4� K0 F�y��"h1l�(�gaI��F�(`��P�kʍ�H�pL������H�������Y.S���Tr�IIݿ4H-����Gu����⾎]L�@��b�����i۶�&I"9 ��'=� ʋ�� d|�(���$�Ϝ#2,zv/��S�)��/�|9O��dҍ�_�Xv@���q"����ig�.ϥ��/�t/ǻ���N���@KvҺ���to %���MZۂt�/��1��p_O-��ȱ}q��bgd�[��z8sv��~�3u�a�;,*��Oj����s@�l���m����WU���Z顣=�t�˟����F��o���wޮ�Q�d�Mrh�}��^E�o�q3ZJ��yy��۟����=L*��W/���D����q�`"=�$j�̀cd/��� Y �l�,�(�F���:�r�/��+�,�zFW�Tv����h�A��'�������ՉIy�$��� �"JBH���0�A�!^�\d�S���5�"����7� �)fkC��`u���1� ֎H�����Ez�ƍ�M�IE�K3�0�P��|����~�!�\�⸟w��i[$7�U�V�@�0r0���5 �EZ��\��=��R��X@��u�4@��\u� (=$�m�4�4�z]�e�3Z�C��V�?���)͞�^O)�v��G�'��a������3�hG�� �����;rwG�H͟���p��uu�J{!)��pe�[�� :j lh��ί�m�<:�Ge�Vh_d;RW��"-@/�EZ)�ſ��Z� $�kI�<bǡZuS��1�M����Y}k�ӛ���UUĹ�5W�W���R�G�p8�*_$u=�w��Ξ�������H��S��9+�+!=�w�����P�î ���I�Hu������x8� �PIV=�B� =��4"}Z+��Ol��7�~����I�9DEF3����V��vX�r�r��g��Pu��@mM�3�f�أ �+d,�S@4S+輏�� �����L�/d"Jy6����뼛K�|�+6�?�h��ݨ�Ŗq�9�j�F� <�`�dD�c�����-{P@��O�`����w�0��zO�Th"�Z�$baA�H�/��u?�����+�#k�苼!��M0~@�=o��Ϋ�ϫ�VPSi)�8 �Pb$z$Q~@>�P��M��*GB@]E8��=�S�̀�i��b��*�߶���,ub�� 5��D:��`��K��P�0@z��xۛ�9�Tjl�8�pa��ࠐFpA�d�h��%k�L�O����g瀌+=�f�Yg�!�3Vv���;��� &��-�N��-�w�!~�qD}�䓿�\]]W�����1K���8�� ��ga ��R�1I���7���}�3]!��S�}���ǀ�S�Y@�`�(���ԼI��E;�*3H�fq�U�4I�-Vd�3�� �Wx��*D�6�O���\dj#g@�#W\̀��Y�(M�y�&1>�KZ��W�?���H����lkd��j[������� Z���Z����F����:&{ ��.��A�����X)%-Zy^L9��3uC� �+�8�)��h�ApX|�[ތ�[[�مd�yĆ�vbe!�Vk��L&m�9�{~��H�d�Q�Q���z���+���Vd� ����#�6SN@LF49W,;�Ï�m_Hi��e�u� �C����;��毷X��\x��g@��K�p�(H � �2��b�{�� �n !B}�eP��� ӈ4Bf�<o��L:N_��|�h�__��M�e�Y)�g%b�$I��}��薿b�$�m��$"��"��I��گX�ϼ5 �Ď��. 6e��2�A,� e����� �#�O�3E>�j�V,"T+G��1>#$�ù���ׅ$/L��u��M��y�H �_�D���;��~PC�)H��pB���H(��]6ƯH�����>1�'��s�[^�َ�7M`���v��N�y��S����/����C���5w���?51�g\�7�]��oFk�=��G&��|�ȥʚ#��s�ؿC)�g4�+F������S����.���.v� �����R�`� 2}�(�`�;�Ͷ5r�"�M���IBF �������2�ݱכ ��XTM�����G��4><tu<~����tx����~�qG�u�߿��S�Wҙ�G��;�;�?�������������U�r@�����OD������ �^�Z?ڵ��ȓ��{�y�t�T}���5X��w�����.kc-���dzMl�l�{��*�{ W�i�Qؔ����o}wa��u/�Kc}�S�� H,�K[>,���#�9=�MYL��@��$�K�+^��b�n��:�吶��T�K�7���~�e�ڼ��[/k�R���r�}�̼����(�<p�LQ�o �J�y���d�!�]�"' �!��^Z0��H�:f��r��kq�|�L������6 ,e�0��R�r���X1�4 �pӋ�Z,�I}�:�0¹�p^z�R���j�UF���T�8�����>��^@�q���oQh��Z�*��?�J�Z/�H� H��o��9�֪���.����*xz �I�,Zj i��Ac��r��:�#��sFV�� B6���|����@�n��vX,-�7�t���!�|�\�判pɌ����icZ3�b@�3�E#L����d } �l��U� B��AK@�hiiL7� ����[�}1X ��p�6����$m[�`mNhz Vh�4�UB@2rur5�k����y�3� ������x�% � �Σ�ZS�eA�1����S��e5ѷ��%��<�c�R�z[A=X�`� �͋��W@�y���ѯ�1��'Ny�O�^&<l�9�h�_���V' �b�+H���E�:��� �P��\�n˓�y� E1^��2~�TI�$ؓ�F@,�'��w���ڼ���k�F@[\�@X��b�I�B@Lj,&i�E:sW�Fa�.@L����#2W�)���m�Z�5������H�1���y ���ܷ ��m��j��.�Ɖh��d�.�mc��@4&��"����`���#�Uԇݓ5X��m�1o��s����Zo�wȇ���7owo�g�L�y@���:���9���>8����)���I��%���:띞���x~�M� ��&��?599q��u��������c�a@~%D��L ǂ�;Pf ��C@�Y4,42^��Es@M���\ B9���$� �����XX84+� �ph���a�A�3J2�=;V��(LPa�NE� ��Q1�q3pA�h�6첤�`�W��H��� �@y�@ �@� �@ �@�K��;�vϽ�ݺۓ�@�,�h_���:��5�{���@ S�~��e������5��+�rT�%Ո-��h])<F�����k�~]Z���"ܒ�=$���IW�'-�jJ%����ct��g�jU)����fO�xLU�+mֵ����W@GD�Ŏ��S�Q5UKW��_���E�M��vv�W�%E����R,Y����@@ gW���n]���I�|'0U�t������nO�5�:�ҟ��q�a��ы�ګۼ�����[�aɛ���u����@ ��@ �@ ��[�r���Q�A��2,�(rhDR���A�֡ �0�x���G�[��l�Xw �E8�X�@@ ��a��M�a����^�� ��D�B���9�39�s5�`�Ԇ�PZ��d'���?TY��n�0FW�5�Ⱥ�R'Y� ���b$����� ٴNk�S�_;�9ryI���DA���w��F�:_"[�����D�~�}sA�V���Q�� ����/,�G�K�$Ay$ �j,~8� I�=/�#ˈm�C:Ȟ��RZ����~� i�|�ِ� !-����!tڶ�U4J��,�� ���p�rZ ��� �wJ$ b�GO�X�<@#q0����Ch�?T��4e�or�&m���:��$H�A�g��B���CW�'�!���(e��"� �ڥ aN-�(u[�? �^]�&$A���� (c''�U|��R�v�9�M~��!Z�,'3��I� Nb�8� ��euw�I[܂$Ȩ~c\Q����F!�֚�NA��gA4IJ������Ij��g��gHݖ)O�����F��-J*�$H8�w�p� ��7c���fΜ �����tpJ5{��Icq�a�k�� [.)���x*�=Y�+�w���$V� N�$A�� 0�� �Zѩ_T���w����N[�������]�����!���Y$ZF+@Z�������'���� �;b�'C.D�L&K�1^ ���V�P �-��!���a#�>���r�S�:y-���v,7^&���8�bu�w��L������� d�~A�N���t�=4����>�Aܙ �x� f)�;<��r�c�F�(�Z�c�x��W�6��z�H�';g��(�E��^V�l쑷1S�E��8����fs��'aJ���s�F�>�T��E�go�*�f�!$�E�A����^.��^��L�@�2/C���d=y,e,`�a�R������KWH3�4�I�Ę ��|o��ހ�U��*o@�UdL&�㑣������2ݺ6��@9ʬ������s@���{ �RO}���� ?D�xw0�<�-V7� �=��z�{q�c�8�&_���D�Ǫ�3�&>���^�JN�L��c��Q@�1@�R��*�y�<�)s ���@�4@�7 ��7H�qb�5�uU�5Br�=,/�����bM����!�Ob��q}���b��1���3�oD����@�ܙ�WȮi88���T� D%�� �Nz�G�XA+R���Y��_�X�Lu����:�o��`����iζ� PuE�1���\5 ����X��܁��=T9��=�{��h������r������pw�r�H�)��t"�GE�H�Zl�m��Jr��VI�p��<�@a?2p$T��"a숛#�W���!0$F�� ��PF9��r `F��m���� ��Z( ���_��ͥ' 4�?����dQ�u�������{�8Tw�~� I�5��̴�֪űL�Z_$�%Zk�� �� �;�J����"��Z " N�����G{"��b/��,J�*TG�_�04 � �� I�-������Ǿ����l,.�v�}aQ�^� �U���[�﯀����t�h�;r ���gY]�����! �PJ7-� ��m1�������fkf��wq�i�E��PG�p`$��pԁ��B ��3�o1p���g�^�-�3�qN�0����z2�/ ,o���o���5�{f}�A�3�ʠ� S\k>%�$�BX���K@��:%� �����B9�D�!D`Є*�Z�84��!e0۵����n �p@r�A�+��V9�.��I��[?@6q3��q�L��gJ���n�H��Z]Kqt��� 7�T�2��Z��AX����BL|�e�R x����Ǭ����Gc�tHE2��dlq��~@�~%�5<BY�hk��p���i��Y��>>���TM��|�Ȩ��Q��S]��j�i6��4��� �+hg��j�k4͔$�T��G��������BUGZ3LO��80�d�sTN�nl��(e��%��\�1����R��`�K�2�� �z����1_@v�R@dS.|w�)��tFB��# ��%��bC��83���w#��%�9� T[�I/@02�xBm��+�A�&�h��D�p�Rg�&�>����U/�[� ����z�7~��zt � H�\��̛��W����==#��և/2ڪm ��t�'3M�Cub�<�� ��M��]g�~'ב��]��rR d)-x�����y4����:���KO@nA�~դ��F/�l_���3�+��EH��\��Q=�?�M=ْU�. ��*����Ҁ��)@= Ad�k��Հ=��7 �i��T��f��^O�ZJX4�, _���� krD��y(yud9���T@��M��)_�. _D����VU0 ��3�W����3E[_@��B�Sy�j�����@�#�X�zȢvs���Q������3hS��\.���v�� �:�u�_��� �EHȶ�Y���K@@f=v��|R���>��1�R�/9�d� �|^=�X��yT�E�ieX��qҗ��a@bD�'�mVO^�_�0@����� ~��( d�r]����@pg����[ٙ�p�d�W�[Q��T;2n� e]%���P�٬�_�u=d)mj��� �҆K�#�u�H;xY�����GE6�O�b0sB�=�r��[A��C�Y"�O�6������0ƃ�m2��� `2��lwfc�)GMr�So�2�? �CB���M�=��O!O��O��d��8_��Oy�O�7��IE Ԩ����tD#�uͻ&@UA�X�Շa�ku� �$�`aݩ逦R�FC���?���A�B6j�$��y-����=�٦�#������S@�K����o�\��u����k�_$�ъ���,J�&��Q��(Җ��4ii�f����*]���4FL �H��$"tWDz�*�bAh����奎��?��Z���,wH�j>��7������Q�T����͙ވ�Tf����B�p��i�$'݆=ֽl�#�Ė�4��|���A�X�2�`�������/���t�&D����.X�|����uݢ�#����s� V�@�����$H8)�{H@��ח�%���HZ�����;O���_��wN��? �]���M�t ��e8� H�S(�����0�UV Q��� ȧe��+ �(�lǪѾQ��Y��w���?��jO��� �~? j���+ r�͂�* D�G��+zjj�;&� 9���(y$u[�G������m�.}�����p�.p��;\w���צ�`�D��0K��$ �A��t�rG�+rP�PP1�2��J���)uu[*c$�� �ی�ϯ8��Q��%�]�[��|��P����ڠ�. Td��� �ȣDz,?W��i�i�4@ o�H�H�E��i�4@ �H��^Ӌ���� ����$mUV�{I7>� ?> ��m��1N���-�u���gN?���8N9����N�!i�>@�}� /��Է���,^��7I���4@R�s?��H�"��֏@�ث���l��1����G�ԋ�@��qD��86Tgh�*[�ydD�m��!/.�vLE���U���_��7&6�cLg�>Ǡ/���U��] ?: �!�<����|61������$���7�m@PG9w� $n��*�z�i���՜E<1���jk.�Lb��6�\�Ly1�'tQ/K�E}'f�z�D�K.>3�j��a���H��x5�4@&q�`1�%t$����Ք�D|���S�zT� H���̼�� Y ����lI���I�:��� ���bV?��L�>��9U�gu��ŋ���-n� ���ʤ��|���Š�P?�Ȃ6?� � X�8��sSn��Y,�g0g�V�İ�����d� ��ܓ+dǴxPnT������H�ۏX@���$Xf�HF6�1 U�h$6~P6�aŘ�� �f�~�$Ay�b�-V�`rZ���rJ�]pτ;�S������E9�`���M���K�����Q�9�CB�K��s ����-@��rAj����ݬn���SE�&�ʼnǫ��3m� �"UDP��4iʑv0���al}Ѵ�ț�h����&DQl�GE&[��r�d��n���i�1&��Fb[���Ù� |�1�xyA�+p�X�;�!���A �&�M���E���QO?�P�p�p��jݔ�&z����>��˿&f'AB�r�P�����3o~�C�Z�~W�.Hjπ��3�~*Z��. -�� � �ICKx�EA��#�KG#IS�A8A(����� BADP#[�1" �;�P�9j��b�+S��=)��n:�"� �"�G�(T ����Z������Uׯ�^a$P ���A�Z���IL��}Y$Xn��&(۱FT���(� d���'�h-�X̲R�(�e�� �lY�6���2P\� Z��{��E)w�p:x~�((��� �� �C�e� i�;v+� {'� 2Ԋ�0K>-��=H 9D*A��D�"P�������s�)��%V�M?��Q�y��// �Rlu��%��#A�P�M"&��4����6Ng�BAH�N�Z��(�]}F+� �T��:5� ԕ�CA�M�k�3�o��b��wRg��=Ϻȶ��~�+��M&�7��B&L��0a���� �P bρP�� $��Q��`N:aN:��!hAr0�i�HC��]o���0a ��'w�CF#O &_��'i�ft��0�qv���P�zw�j�D��3� ���h�Y�� j���i�r���m\������7 �� ��Ge&.3�7��4_̤�SW>��U�LX9B ���u�d>��d���tc<��P�U�㭦i�����rZ=��� �l/jƙt�� *an(]2QZ�&lh˅.@�~T��L��@ōJӬ��T��ś�T��m�N��&�Q6"������-����7Z�+!��G���/$�/k;�L���'�Ly�F*�t#��[�%�N�Ts�,.�1���#�w����^h��0Yy� 4���J�"btO�:�)���{�L���ܯ�V��">i@�6�9��yg�[n�F@nuƄ���F:�6"�8�R�2��Z��S�^c{��s�D7y�"t᭭w��$>@���U����k�� ���݇�A��oo�$�Skm��$�D3�"�*Ɠ��=�B�G�(,j`��D᷿�Jj*�A"$>�ۉ;��*0+-'���ܻ��B�������;�UW�Y�yIw;�(���m[����,�XJ������� $�@BwL��%�>)�J"���\ě�Ѽ<6Es��[��ĔA{U&О1�J��;@�Bge��x�l:� v��@@x]M�k��_K��Y�y���ĩyD��iԏ� %ݐJ�&�(m�)ݛ-���c;�#J��2*�Y�)���ОD���GU�'n�MR v�hԻW�"7A ��9�s����Z�j@�N�C�?�BA]8? (Ō��������2�bx�A�-P�>�V�W�O�kw��JT�'` f ���X)v� /�F� g�^��_�!��2}��)�FK�aH�Ÿ�g�3�}������f������u����-� �h��5$���2a0�SZf�a�T�0 ӥiCF�� L"� X�js�*-�����W��@��S�D�4!Aa��B<}��q������$�waX�''.�q���8'��c ٕR����@YT��S ��j����N�q��e����%� �+�dtw<Q5���^^x9�dIZc\�'q�@�%I�bK�!$�$��@r����d��S PBǀ�M��7;wԢ8p�d� e�v�r�[1�ek ���_�R{��� �q}��IЏ�Q+�.�^rV�b i��d�H��Z�Å�P�^��|�p��X�خ�!��E@ąU��謲v ��4�$D@xB %�����q?rh�$ �CgLDMb�*��,��ֹ� ��Q(8p�# �8$�;n#!�T a��r E��+���S���W'rP�k�#! �Ϫ��)�f L��9@���!Č!u�L���0D@|4A���V/��&�l �cz�@$��& q��\�,0AX�6V�3�X?�#��w���ɀt'E@�HSnS�� ���/Û��b�Y���u�)�G@���!9H#����x��Z��� �;H �����n !�r�� }��%g�h��~X|�ځ( �|~q ��o�S�#")q����v'��'1���\ MZ �p|b���+�����e��pi�f\ݬ �(t�k�O>��ɟӀ��_ij���nyHD�Id_E�x��D ����;�&�l� (� ��Vx��9��U��o쮯���le��3��<�N���3����?5�,�c!�����A�Ҿ>���;��A��@H�����ӟ�����|�H �c��v��<�h��xFa $��@H $��@H $Z �H�@H�@H $�$��)Ji�`�m�V�K�����,�r����/�zd����$�\���2ӵ���E����R3�)��ƒ;�!��q��H^HA��*�D5/k[s���E��>�z_9�'����Q]}��+��Q=�,�T��| �B��n%i]s{��A�Qd��E�>�>r�\6^8��C`╸�u�z�3�Z~ ��@�8�@d$��j��7�$�KR�����EA>�s/�I��>��Փ@�����k���(ڶYtMF̢��A`�hd�:�jnt%E��G L-+�>�䕁p�t5�kN�P�Se1���' v����n灔����2�b�v�ܴoN(�hUfAI^� �+_�6询6�>��i�_]���q/NЁ� ��H�&�#��^H�$HW0!'$a�t �d a�c5�^�`�zH۴�T��(�ws��'�{�t� �;�I ���^Y{R%��������m/�Ea��ࣄB=Ɓ0�����+H����IG�/$�l�oP�q#Pn���@]�' D�i�|HK@%�R�u�ke�2�� b���9 -�Vs�������Ǣ����(�H�P�7%E}�^q-m%`�����_Iޏdў��@�>��f���17���xΜ���ǽ~w$�{ �x���Ǣ[X�c {�<*�a��K�G��gH�Y��� �� �^�1��~$�-nƍ�h$�D $Z $��@H $��@H $��g�2@�>nC�3�t�O��i%��>��@L� ���ϸ���v� d���ZN�bf�$)��@@ H��@@ �`6���<_�tL�0ȿ��ՀnA�@A@A�@A@Ar@A@AAA`h��4R�SGIEND�B`�PKb��\К���templates/hathor/index.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $app = JFactory::getApplication(); $doc = JFactory::getDocument(); $lang = JFactory::getLanguage(); $input = $app->input; $user = JFactory::getUser(); // jQuery needed by template.js JHtml::_('jquery.framework'); // Load optional RTL Bootstrap CSS JHtml::_('bootstrap.loadCss', false, $this->direction); // Load system style CSS $doc->addStyleSheetVersion($this->baseurl . '/templates/system/css/system.css'); // Loadtemplate CSS $doc->addStyleSheetVersion($this->baseurl . '/templates/' . $this->template . '/css/template.css'); // Load additional CSS styles for colors if (!$this->params->get('colourChoice')) { $colour = 'standard'; } else { $colour = htmlspecialchars($this->params->get('colourChoice')); } $doc->addStyleSheetVersion($this->baseurl . '/templates/' . $this->template . '/css/colour_' . $colour . '.css'); // Load custom.css $file = 'templates/' . $this->template . '/css/custom.css'; if (is_file($file)) { $doc->addStyleSheetVersion($file); } // Load specific language related CSS $file = 'language/' . $lang->getTag() . '/' . $lang->getTag() . '.css'; if (is_file($file)) { $doc->addStyleSheetVersion($file); } // Load additional CSS styles for rtl sites if ($this->direction == 'rtl') { $doc->addStyleSheetVersion($this->baseurl . '/templates/' . $this->template . '/css/template_rtl.css'); $doc->addStyleSheetVersion($this->baseurl . '/templates/' . $this->template . '/css/colour_' . $colour . '_rtl.css'); } // Load specific language related CSS $file = 'language/' . $lang->getTag() . '/' . $lang->getTag() . '.css'; if (is_file($file)) { $doc->addStyleSheetVersion($file); } // Load additional CSS styles for bold Text if ($this->params->get('boldText')) { $doc->addStyleSheetVersion($this->baseurl . '/templates/' . $this->template . '/css/boldtext.css'); } // Load template javascript $doc->addScriptVersion($this->baseurl . '/templates/' . $this->template . '/js/template.js'); // Logo file if ($this->params->get('logoFile')) { $logo = JUri::root() . $this->params->get('logoFile'); } else { $logo = $this->baseurl . '/templates/' . $this->template . '/images/logo.png'; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>"> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <jdoc:include type="head" /> <!-- Load additional CSS styles for Internet Explorer --> <!--[if IE 8]> <link href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/ie8.css" rel="stylesheet" type="text/css" /> <![endif]--> <!--[if IE 7]> <link href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/ie7.css" rel="stylesheet" type="text/css" /> <![endif]--> <!--[if lt IE 9]> <script src="<?php echo JUri::root(true); ?>/media/jui/js/html5.js"></script> <![endif]--> </head> <body id="minwidth-body"> <div id="containerwrap"> <!-- Header Logo --> <div id="header"> <!-- Site Title and Skip to Content --> <div class="title-ua"> <h1 class="title"><?php echo $this->params->get('showSiteName') ? $app->get('sitename') . " " . JText::_('JADMINISTRATION') : JText::_('JADMINISTRATION'); ?></h1> <div id="skiplinkholder"><p><a id="skiplink" href="#skiptarget"><?php echo JText::_('TPL_HATHOR_SKIP_TO_MAIN_CONTENT'); ?></a></p></div> </div> </div><!-- end header --> <!-- Main Menu Navigation --> <div id="nav"> <div id="module-menu"> <h2 class="element-invisible"><?php echo JText::_('TPL_HATHOR_MAIN_MENU'); ?></h2> <jdoc:include type="modules" name="menu" /> </div> <div class="clr"></div> </div><!-- end nav --> <!-- Status Module --> <div id="module-status"> <jdoc:include type="modules" name="status"/> </div> <!-- Content Area --> <div id="content"> <!-- Component Title --> <jdoc:include type="modules" name="title" /> <!-- System Messages --> <jdoc:include type="message" /> <!-- Sub Menu Navigation --> <div class="subheader"> <?php if (!$app->input->getInt('hidemainmenu')) : ?> <h3 class="element-invisible"><?php echo JText::_('TPL_HATHOR_SUB_MENU'); ?></h3> <jdoc:include type="modules" name="submenu" style="xhtmlid" id="submenu-box" /> <?php echo " " ?> <?php else : ?> <div id="no-submenu"></div> <?php endif; ?> </div> <!-- Toolbar Icon Buttons --> <div class="toolbar-box"> <jdoc:include type="modules" name="toolbar" style="xhtml" /> <div class="clr"></div> </div> <!-- Beginning of Actual Content --> <div id="element-box"> <div id="container-collapse" class="container-collapse"></div> <p id="skiptargetholder"><a id="skiptarget" class="skip" tabindex="-1"></a></p> <!-- The main component --> <jdoc:include type="component" /> <div class="clr"></div> </div><!-- end of element-box --> <noscript> <?php echo JText::_('JGLOBAL_WARNJAVASCRIPT'); ?> </noscript> <div class="clr"></div> </div><!-- end of content --> <div class="clr"></div> </div><!-- end of containerwrap --> <!-- Footer --> <div id="footer"> <jdoc:include type="modules" name="footer" style="none" /> <p class="copyright"> <?php // Fix wrong display of Joomla!® in RTL language if (JFactory::getLanguage()->isRtl()) { $joomla = '<a href="http://www.joomla.org" target="_blank">Joomla!</a><sup>®‎</sup>'; } else { $joomla = '<a href="http://www.joomla.org" target="_blank">Joomla!</a><sup>®</sup>'; } echo JText::sprintf('JGLOBAL_ISFREESOFTWARE', $joomla); ?> </p> </div> <script type="text/javascript"> (function($){ $(document).ready(function () { // Patches to fix some wrong render of chosen fields $('.chzn-container, .chzn-drop, .chzn-choices .search-field input').each(function (index) { $(this).css({ 'width': 'auto' }); }); }); })(jQuery); </script> </body> </html> PKb��\" ����templates/hathor/favicon.iconu�[����PNG IHDR�asRGB��� pHYs��$iTXtXML:com.adobe.xmp<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.4.0"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/"> <tiff:ResolutionUnit>2</tiff:ResolutionUnit> <tiff:Compression>5</tiff:Compression> <tiff:XResolution>72</tiff:XResolution> <tiff:Orientation>1</tiff:Orientation> <tiff:YResolution>72</tiff:YResolution> <exif:PixelXDimension>16</exif:PixelXDimension> <exif:ColorSpace>1</exif:ColorSpace> <exif:PixelYDimension>16</exif:PixelYDimension> <dc:subject> <rdf:Seq/> </dc:subject> <xmp:ModifyDate>2015:03:15 13:03:46</xmp:ModifyDate> <xmp:CreatorTool>Pixelmator 3.3.1</xmp:CreatorTool> </rdf:Description> </rdf:RDF> </x:xmpmeta> >Iv]XIDAT8}�]h\E�ϙ�{wﺻI]m�XClK4�RE�w-E��(->�f|)y�~(Z�"ȢA�R�h�Z�B46M��-$ӆ6&-k41����c�xn��S��\����s��g;^��t}�Pc{���յ�� �uQ��{VJ�5"I"�:�����X���7���O))����:L;�j8�lQ�P ��%!��럒|2��qye��4��m�m<3�@�!��$�+c粒���J�ۤ-S�R��Hk�A8$��k��� )��[�O�/�ov,�6�˔�}�O0|� ��n�����N�ҀF�{Ӂ�{ǽLK�)��{�|�G�� ʭ�"W���?��X-����Y�W�~Rn�2�˰o.� x�*S߇�Kê: �4`DF�oԝ.(Y�&pKq��ѵX�n���9�bbn��|��cc�N��ݛZĴ�&��ܖۑ�t�B���Trj]ޱ*�Sxqd�w?�� p�|���n�)3^E8Y��⑷g"rU`Wn�A�O�5���?�H�lpY[��Q8��+��]��r�q�oޱe��t����j Z�G�O\}�����r���7�wَ�C����V6t�b70j�#Ū�!��_WH+��R����F&/������Ϗ��j.9W���xZA!�/�W> `[�X;���GP���w6�V���R�{4w�e��WD�0�Α�h�������Lȣ��%J�Л��z����=i ZϰŠ��Q����^"���O:58՛�k��~h���l`M��ǽS�qV1DZ���m���hb��w�yu�K����o��;�������DS(IEND�B`�PKb��\r���templates/hathor/login.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $app = JFactory::getApplication(); $lang = JFactory::getLanguage(); $doc = JFactory::getDocument(); // jQuery needed by template.js JHtml::_('jquery.framework'); JHtml::_('behavior.noframes'); // Load optional RTL Bootstrap CSS JHtml::_('bootstrap.loadCss', false, $this->direction); // Load system style CSS $doc->addStyleSheet($this->baseurl . '/templates/system/css/system.css'); // Loadtemplate CSS $doc->addStyleSheet($this->baseurl . '/templates/'.$this->template.'/css/template.css'); // Load additional CSS styles for colors if (!$this->params->get('colourChoice')) { $colour = 'standard'; } else { $colour = htmlspecialchars($this->params->get('colourChoice')); } $doc->addStyleSheet($this->baseurl . '/templates/' . $this->template . '/css/colour_' . $colour . '.css'); // Load specific language related CSS $file = 'language/' . $lang->getTag() . '/' . $lang->getTag() . '.css'; if (is_file($file)) { $doc->addStyleSheet($file); } // Load additional CSS styles for rtl sites if ($this->direction == 'rtl') { $doc->addStyleSheet($this->baseurl . '/templates/' . $this->template . '/css/template_rtl.css'); $doc->addStyleSheet($this->baseurl . '/templates/' . $this->template . '/css/colour_' . $colour . '_rtl.css'); } // Load specific language related CSS $file = 'language/' . $lang->getTag() . '/' . $lang->getTag() . '.css'; if (JFile::exists($file)) { $doc->addStyleSheet($file); } // Load additional CSS styles for bold Text if ($this->params->get('boldText')) { $doc->addStyleSheet($this->baseurl . '/templates/' . $this->template . '/css/boldtext.css'); } // Logo file if ($this->params->get('logoFile')) { $logo = JUri::root() . $this->params->get('logoFile'); } else { $logo = $this->baseurl . '/templates/' . $this->template . '/images/logo.png'; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" > <head> <jdoc:include type="head" /> <!-- Load additional CSS styles for Internet Explorer --> <!--[if IE 7]> <link href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/ie7.css" rel="stylesheet" type="text/css" /> <![endif]--> <!--[if lt IE 9]> <script src="<?php echo JUri::root(true); ?>/media/jui/js/html5.js"></script> <![endif]--> <!-- Load Template JavaScript --> <script type="text/javascript" src="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/js/template.js"></script> </head> <body id="login-page"> <div id="containerwrap"> <!-- Header Logo --> <div id="header"> <h1 class="title"><?php echo $this->params->get('showSiteName') ? $app->get('sitename') . " " . JText::_('JADMINISTRATION') : JText::_('JADMINISTRATION'); ?></h1> </div><!-- end header --> <!-- Content Area --> <div id="content"> <!-- Beginning of Actual Content --> <div id="element-box" class="login"> <div class="pagetitle"><h2><?php echo JText::_('COM_LOGIN_JOOMLA_ADMINISTRATION_LOGIN'); ?></h2></div> <!-- System Messages --> <jdoc:include type="message" /> <div class="login-inst"> <p><?php echo JText::_('COM_LOGIN_VALID') ?></p> <div id="lock"></div> <a href="<?php echo JUri::root(); ?>" target="_blank"><?php echo JText::_('COM_LOGIN_RETURN_TO_SITE_HOME_PAGE'); ?></a> </div> <!-- Login Component --> <div class="login-box"> <jdoc:include type="component" /> </div> <div class="clr"></div> </div><!-- end element-box --> <noscript> <?php echo JText::_('JGLOBAL_WARNJAVASCRIPT'); ?> </noscript> </div><!-- end content --> <div class="clr"></div> </div><!-- end of containerwrap --> <!-- Footer --> <div id="footer"> <p class="copyright"> <?php // Fix wrong display of Joomla!® in RTL language if (JFactory::getLanguage()->isRtl()) { $joomla = '<a href="http://www.joomla.org" target="_blank">Joomla!</a><sup>®‎</sup>'; } else { $joomla = '<a href="http://www.joomla.org" target="_blank">Joomla!</a><sup>®</sup>'; } echo JText::sprintf('JGLOBAL_ISFREESOFTWARE', $joomla); ?> </p> </div> </body> </html> PKb��\��hee8templates/hathor/language/en-GB/en-GB.tpl_hathor.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 HATHOR="Hathor Administrator template" TPL_HATHOR_POSITION_CP_SHELL="Unused" TPL_HATHOR_POSITION_CPANEL="Control Panel" TPL_HATHOR_POSITION_DEBUG="Debug" TPL_HATHOR_POSITION_FOOTER="Footer" TPL_HATHOR_POSITION_ICON="Quick Icons" TPL_HATHOR_POSITION_LOGIN="Login" TPL_HATHOR_POSITION_MENU="Menu" TPL_HATHOR_POSITION_POSTINSTALL="Postinstall" TPL_HATHOR_POSITION_STATUS="Status" TPL_HATHOR_POSITION_SUBMENU="Submenu" TPL_HATHOR_POSITION_TITLE="Title" TPL_HATHOR_POSITION_TOOLBAR="Toolbar" TPL_HATHOR_XML_DESCRIPTION="Hathor is an accessible Administrator template for Joomla! The Colour CSS files can also be used for custom colour branding." PKb��\�����4templates/hathor/language/en-GB/en-GB.tpl_hathor.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 HATHOR="Hathor Administrator template" TPL_HATHOR_ALTERNATE_MENU_DESC="Use the alternative menu which integrates mouse and keyboard. JavaScript Required. The regular menu for Hathor is accessible with or without Javascript, but leaves the mouse and keyboard independent." TPL_HATHOR_ALTERNATE_MENU_LABEL="Alternative Menu" TPL_HATHOR_BOLD_TEXT_DESC="Use bold text." TPL_HATHOR_BOLD_TEXT_LABEL="Bold Text" TPL_HATHOR_CHECKMARK_ALL="Checkmark All" TPL_HATHOR_COLOUR_CHOICE_BLUE="Blue" TPL_HATHOR_COLOUR_CHOICE_DESC="Select the colour palette to use with the template. You can use this option to select a high contrast version or use it to create custom branding." TPL_HATHOR_COLOUR_CHOICE_LABEL="Select Colour" TPL_HATHOR_COLOUR_CHOICE_STANDARD="Standard" TPL_HATHOR_COLOUR_CHOICE_HIGH_CONTRAST="High Contrast" TPL_HATHOR_COLOUR_CHOICE_BROWN="Brown" TPL_HATHOR_COM_MENUS_MENU="Menu" TPL_HATHOR_COM_MODULES_CUSTOM_POSITION_LABEL="Select" TPL_HATHOR_CPANEL_LINK_TEXT="Return to Control Panel" TPL_HATHOR_GO="Go" TPL_HATHOR_LOGO_DESC="Select or upload a custom logo for the administrator template." TPL_HATHOR_LOGO_LABEL="Logo" TPL_HATHOR_MAIN_MENU="Main Menu" TPL_HATHOR_SHOW_SITE_NAME_DESC="Show the site name in the template header." TPL_HATHOR_SHOW_SITE_NAME_LABEL="Show Site Name" TPL_HATHOR_SKIP_TO_MAIN_CONTENT="Skip to Main Content" TPL_HATHOR_SUB_MENU="Sub Menu" TPL_HATHOR_XML_DESCRIPTION="Hathor is an accessible Administrator template for Joomla! The Colour CSS files can also be used for custom colour branding." PKb��\Xs���templates/hathor/component.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.hathor * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Get additional language strings prefixed with TPL_HATHOR // @todo: Do we realy need this? $lang = JFactory::getLanguage(); $lang->load('tpl_hathor', JPATH_ADMINISTRATOR) || $lang->load('tpl_hathor', JPATH_ADMINISTRATOR . '/templates/hathor/language'); $app = JFactory::getApplication(); $doc = JFactory::getDocument(); // jQuery needed by template.js JHtml::_('jquery.framework'); // Load optional RTL Bootstrap CSS JHtml::_('bootstrap.loadCss', false, $this->direction); // Load system style CSS $doc->addStyleSheet($this->baseurl . '/templates/system/css/system.css'); // Loadtemplate CSS $doc->addStyleSheet($this->baseurl . '/templates/' . $this->template . '/css/template.css'); // Load additional CSS styles for colors if (!$this->params->get('colourChoice')) { $colour = 'standard'; } else { $colour = htmlspecialchars($this->params->get('colourChoice')); } $doc->addStyleSheet($this->baseurl . '/templates/' . $this->template . '/css/colour_' . $colour . '.css'); // Load specific language related CSS $file = 'language/' . $lang->getTag() . '/' . $lang->getTag() . '.css'; if (is_file($file)) { $doc->addStyleSheet($file); } // Load additional CSS styles for rtl sites if ($this->direction == 'rtl') { $doc->addStyleSheet($this->baseurl . '/templates/' . $this->template . '/css/template_rtl.css'); $doc->addStyleSheet($this->baseurl . '/templates/' . $this->template . '/css/colour_' . $colour . '_rtl.css'); } // Load specific language related CSS $file = 'language/' . $lang->getTag() . '/' . $lang->getTag().'.css'; if (JFile::exists($file)) { $doc->addStyleSheet($file); } // Load additional CSS styles for bold Text if ($this->params->get('boldText')) { $doc->addStyleSheet($this->baseurl . '/templates/' . $this->template . '/css/boldtext.css'); } // Load template javascript $doc->addScript($this->baseurl . '/templates/' . $this->template . '/js/template.js', 'text/javascript'); // Logo file if ($this->params->get('logoFile')) { $logo = JUri::root() . $this->params->get('logoFile'); } else { $logo = $this->baseurl . '/templates/' . $this->template . '/images/logo.png'; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" > <head> <jdoc:include type="head" /> <!--[if lt IE 9]> <script src="<?php echo JUri::root(true); ?>/media/jui/js/html5.js"></script> <![endif]--> </head> <body class="contentpane"> <jdoc:include type="message" /> <jdoc:include type="component" /> </body> </html> PKb��\Q��3nntemplates/hathor/js/template.jsnu�[���/** * @package Hathor * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ /** * Functions */ /** * Change the skip nav target to work with webkit browsers (Safari/Chrome) and * Opera */ function setSkip() { var $ = jQuery.noConflict(); var browser = $.browser; if (browser.chrome || browser.safari || browser.opera) { var $target = $('#skiptarget'); $target.attr('href',"#skiptarget"); $target.text("Start of main content"); $target.attr("tabindex", "0"); $('#skiplink').on("click", function(){ $('#skiptarget').focus(); }); } } /** * Set the Aria Role based on the id * * @param id * @param rolevalue * @return */ function setRoleAttribute(id, rolevalue) { if (jQuery('#' + id).length) { jQuery('#'+ id).attr("role", rolevalue); } } /** * Set the WAI-ARIA Roles Specify the html id then aria role * * @return */ function setAriaRoleElementsById() { setRoleAttribute("header", "banner"); setRoleAttribute("element-box", "main"); setRoleAttribute("footer", "contentinfo"); setRoleAttribute("nav", "navigation"); setRoleAttribute("submenu", "navigation"); setRoleAttribute("system-message", "alert"); } /** * This sets the given Aria Property state to true for the given element * * @param el * The element (tag.class) * @param prop * The property to set to true * @return */ function setPropertyAttribute(el, prop) { if (jQuery(el).length) { jQuery(el).attr(prop, "true"); } } /** * Set the WAI-ARIA Properties Specify the tag.class then the aria property to * set to true If classes are changed on the fly (i.e. aria-invalid) they need * to be changed there instead of here. * * @return */ function setAriaProperties() { setPropertyAttribute("input.required", "aria-required"); setPropertyAttribute("textarea.required", "aria-required"); setPropertyAttribute("input.readonly", "aria-readonly"); setPropertyAttribute("input.invalid", "aria-invalid"); setPropertyAttribute("textarea.invalid", "aria-invalid"); } /** * Process file */ /** from accessible suckerfish menu by Matt Carroll, * mootooled by Bill Tomczak */ jQuery(function($){ var $menu = $('#menu'); if ($menu.length && !$menu.hasClass('disabled')) { $menu.find('li').each(function(){ $(this).on('mouseenter', function(){ $(this).addClass('sfhover'); }); $(this).on('mouseleave', function() { $(this).removeClass('sfhover'); }); }); $menu.find('a').each(function() { $(this).on('focus', function() { $(this).addClass('sffocus'); $(this).closest('li').addClass('sfhover'); }); $(this).on('blur', function() { $(this).removeClass('sffocus'); $(this).closest('li').removeClass('sfhover'); }); }); } }); jQuery(function() { setSkip(); setAriaRoleElementsById(); setAriaProperties(); });PKb��\aG�S'templates/hathor/template_thumbnail.pngnu�[����PNG IHDR���w��PLTE���2d;t6R(Da9|6j>|��������ٜ�������觧��������ż��涾��������ڂ���������߃����I{�nt�g��;���-��it��@]�]ud��T�����g��ߪs�N�pp���Ddh�|w�TBBB�ꁛ͘drOA�8M`Eb��tRNS@��fIDATx^��r�8F��93):�w���m ��$�=j��D���:&Q�/������v~D�w�� �2��{t��]�C�й�P�Y�WB .,�B�P"��WB��չ�z���F?�$����35���e�\J�t��Ṁ�����^7�4�Ak�v�"^/u���h�M�:Z,õR�z`J��������J ���x�:���R���Ѭ�d��\� �`z�cde�:���D$�h"�h4�D��b)0���F�CM�Eb���s�G�''�H/�`��R���P^/ ��I |9�?��5^��w���U��/�#ĺ.����3ӏ5f��M2(m>��35fZ�%nZ�/חM�� �&g�~�NJ,M>֥Բ4�q,���k�ˀ]&6�(,��i�L�2/aJ{ Ljs��:�ç�S�&Lb8�u �U/Ƌwjuf�Oq!SP ���c'�l�S�>�@����?��Yg:2���X�� !���W�*�u⠢��T��;zk�����#?���g���~�X��.�N9�4�WD�V���u��`lR���#e�����ߦ�'�ַ�r��/[`M���f�.���%;>R�>�����.=�m#��GK�~ؗ ����`B�L��|����^\��Ev(?���e�jI*��'|�H�C9�u����^�ooo�}����>��mw�!�98~�p��Â�o?}Y ���h���<t�F(:��أٯ�r{Q�兟�.�u�A�f�P7�)�q�.�B����o� b( �T"�>ƈq�:����ѣn��Z�,��V��|w9Ai�ԣ^�RZS �Ma2C.���E���V�(��ꌩ4/n�z��?���w@yt���N;c�ꀀDuq����*/�ϓ�(�8^0�ϯ�!rv]��vO��c잉]�O0�RJ��J1��F���T>���:���@��uxN84&�R2ιJ�Z @�?3�8���#�P���= ��*D$ԙ Jܺ�(5ID�j*�4��S�X�,�胵�P��+��ѫA���95x��Ffcd/:�F��1��~ޑ�n�'����,��f�֜x����+���ߖ�?��=-}�[�e�?���'��Ӳ��>�N�)�����N�(0nK���=?�T�u�w��C"���u��x�}ǎ�ݘP��0n��3������OK�l��l>Z.}>A����S��l��*�+�!J�Ɨ��eZ�Vng�F"�gD��m @��;���x��Y'W�x�Z ���Պ��)�7���4��e�G��Ct�I���赾V+SQP��3��Z��jԪ��n��x�Z�Zg6sX6��у�S�8�f�*v�P�:�v�S蘫l![ɝ���l6O��B����>���u�KɕTWJq_2�tJ����?�z�=�PŴ�e�f�m���y�>�u��,8��c��3v4T��O��g*r�<a�`�+�j���(�J)�D�+!�����x!����Q�S��G����<v�:g���Y�&�E�g�i��DUGo�Rj<�*���{:q(5B�Ӊ�����uJJ|�?�_&�x�Ãl��t&S�9�߮T�#�on�v� ��2��$��+���һ��֡͠�跻�Zǜg�C�q�|ٰ�H�,�m��`�m߶L-&�g�iܑ:��o_%��>��;�`Mbm�T#F�V�Rx��ֳB�O��=s����Iw���p!h)y�R�ǒK�� ��=�^}-_�L�Ct#A��68枨K�v�i�'�>��J8���9Itx��:�c��V,a(��&?1��k������N�j�Ksf�H�ˆ~���𣚞�O�g��Ni����r$j"!����q�+yԙ�$��m�L]y��5Sy�/u\U;p v3;���p"��3�D<2��[�$R|B��y�Y���:5�� [Dc~ ����ó�����:���#*�[�8g��<���:�]�:�]��4 �s�\�dQZh�{u�7�&���s���F7��y�o~W�:��N��@�X�?�&�����YL��p'dX��b�ּ�7���-�=��]� �!�E��u�"T�Ph�����J��������s?�b�l��ā0<�r���ŝ����q2Õ^Y��/��E�-��[���TzŸzf+@k(��%[�eT�T}tvh�`���}s���\�����+>��G��rah8��A�V������+> P*�q�!ވ�C!�,MS���̌, k�+� 8z�wq����V>��$�X�eY�#uq֪��r]U$iY�6�)߀�ŗ�p�k��?:���ɰ'U�Z-+�G����J$�p�BK���R��565�G�� N ���v�tn��3G�J�<�jɪ<JQ�<=�̧I&��]�I�q��8�%=0O}���������S�vm��x~���m�N\W]Ӓ��*5W#����Q�6QS7\�YGu�umݜ�3�L&���^tT�٩�����y��~���i�j��qTUu�C��������n�;��I�S�'GÄ�����68��#n'�T �C9�i+��F��q(:�/��p�q�#=�tڱI���:����'��˓a��w�&�ੀ$��l��2��HD@��A���X�hcP�;'��\��Qvf(+\`�cA`k%8˭}�e�̚���H�S�m��u8mע�vD���8,�5���3�q���+`I)A�(�A�o�D���Z4O�9�=۸s4��U�T���dmp���;��7�c�j��O����V5�����GKt�)krq�8jՠ�$W�q�ժ�ꚇ�8hc{����0�=�X���MMG�Nt��� �VN\�cS[7I���T����u�s>��O��B���M:���H�����X�,3XL��~�/G��e�e����T�S��-�!X1�8��F�;C��'�wl������Z9����?�^���;Ab�®>�#@�@-*J(}����� |�Uq�'������SA�Ť�0��L�fҦva�<��q+���o�R�8�r٪G����Fɕ�n�G|�_V�E���q/��ق �1c$rdhb�G�s�ӻ����d��q�\%�W�OgC��rfr4�=s�� �\7=��: � ��7�B����8>��&����#�"�9���y��l��#�@�7:w���p���"��NR.��>��q�9pf��=sg���d�������_���^� :����$�X$�GK���S�8��l�PtfV8,G��pq�lo����_��3B��#����JP�-�d�;�HP��>��߶�}�x8J6�p�ũ]N�>�p�`r6~�۪�%��k@����k)9��ƭ7����]rا�6���� ?�ug+�2JM�@�ﳍn��8�o��o����b��b����g|��T��w�.��zg�;���@Ej���IEND�B`�PKb��\��~s��(templates/hathor/images/j_arrow_left.pngnu�[����PNG IHDR ��?�BPLTE�����w����������w��u���ܶ��Q��u��h��T��t����V��_��͎�T��v~�S�[/7��tRNS@��f8IDAT���0 R��n�U� @�U@�S��H�3��9��7Y��Э ��4�k��IEND�B`�PKb��\���'templates/hathor/images/notice-note.pngnu�[����PNG IHDRV�g�IDATx�͖mNAǟ#�z�=G�z�ao�/�!J@� ]�B�HE^�����D?c��Sh����q��3K�B�_f����<;�b��K���CJb��٣4p���ƀc��.���y��z��w�-Ձ�Ur�/���}�����`�>����8ŧ���U �- �5%�.�!�T"ÿ�� �J�)^�2e�]Z���Q�����'^H �b�ۥ[TQbEҕ�2�bxI�˥e��I%H�����§�z,p��9 �S�+D���nK�jk���uJa�#��+!���5M��O�e+�V)&|�/Z�9{����4ƿ���g)�erMi���B�BU�G�.�;�[�YS�¤M)j,�t�O6�a��� 紵�-�gJ��/�;�sW��oعӘ�G��f��)�(z�h���c�\)���)� `��M#yB���>f�-��Jqg�jn�|�&���KAUH���Pu�@n �ڞ4�Y��3�d!�Mps�c!)���{�i�ب�1���<`r�,*��������r�i�b?��;A��!�}˧�+>m2Դ&�ۜ��x�8���a�@�3�g�}n�PS�b����8D�� =GeZ{W��QR�I�:v�)�2Z��] ��q�.q��xDܓ���R�Jg$HӀ%J���6\VI��*M\�4�*�xBb����iДg � ?g��}�S;����_�[xFIIEND�B`�PKb��\�|뷉�$templates/hathor/images/required.pngnu�[����PNG IHDR {DPIDAT�c���?�nb��P���%��";]H�?ޏ���`�N���z(���TU,e���oE��6�fD8IEND�B`�PKb��\�4H��.templates/hathor/images/selector-arrow-std.pngnu�[����PNG IHDR �<W PLTE����ȲMLD(tRNS@��f/IDATx^c`j````Z$�2�g�� ��.@���@���a @"��� � X/�IEND�B`�PKb��\a�]���%templates/hathor/images/mini_icon.pngnu�[����PNG IHDR�T���PLTE��� �ѓ���r9�*)\*Bv '?�j`w�OFC�e��v(Q;%��0s���Wc]�IQ��7-�`W6��?`Y�!_�<5!)��3D{&�je��p�}f�J?�HA60+��N�Q�p)֊BR�2\/|�W�ב� Q� �O8+~��\9�y" m�cFg6rY�K�#�|#Gv�Lb�ݨ�q\���+Nl:T��-U���ks�=���O`mF��$"�EC_�&c��uh7|C5Kf� �c��}O`,�('�/ ]����u��=Hz' m0K$l�R���%�X��JS� [� ]�;�!w*6�+5a� u�@�KGV��b�-��'�IDAT[c`gdb�&FvFVW4�����'�T1*��R�ҐM�VU�0<�(ƃ-H������Q�MHC��V,�gi�L�*�2�Qa�sJ�����B� ��|�*�$暰H%07>-��S����Q��W�g͖vw��Wwr�|C��2�R�d�n,��ό�ͭN��`b`̋��gff���p�`d@�p�"G��IEND�B`�PKb��\"p�'dd templates/hathor/images/logo.pngnu�[����PNG IHDR���?�sRGB��� pHYs��%iTXtXML:com.adobe.xmp<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.4.0"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/"> <tiff:ResolutionUnit>2</tiff:ResolutionUnit> <tiff:Compression>5</tiff:Compression> <tiff:XResolution>72</tiff:XResolution> <tiff:Orientation>1</tiff:Orientation> <tiff:YResolution>72</tiff:YResolution> <exif:PixelXDimension>143</exif:PixelXDimension> <exif:ColorSpace>1</exif:ColorSpace> <exif:PixelYDimension>29</exif:PixelYDimension> <dc:subject> <rdf:Seq/> </dc:subject> <xmp:ModifyDate>2015:03:15 13:03:94</xmp:ModifyDate> <xmp:CreatorTool>Pixelmator 3.3.1</xmp:CreatorTool> </rdf:Description> </rdf:RDF> </x:xmpmeta> ����IDATx� �յ��VUw�PPTV�>W�����0.�~F��⒘Ę����7�S�!~ <�S� #��O0&���F@g���Z����������9��V�{�[��:��2����y���;�q�=�_0��9��]MS��:��T?�����Ut�앻j���ׯ��4l^�`�u�5��_�AzA:|�s�~|�I?U^K$|�_Q:n�ms�㚘�~��O[#�ߟ��j����=l�ÍmO����K���M�q����v��^�\+r~�a,�=a,�ɸ���N���u�~=�Zi���� ߺ0��t��2|N�5�c�� �^�hl���l��H;�Լ�Vn�vIh����A�=Ҽ��Њ'�X2�_J�nO�yí��p����(�il7�<�-3�g��� x6m���q�쵵��N�?�6�d'���yD�6�4˄Vfjl|��=�l�y'�Y�4i}H�H'��L�M�ؾ��I�,�$�ݘ)��M����jq�u��A^w� ���[X��ι�P�������b[�� Y�6���1߿�K���;�k��#ub��&l�v��(���6Ul�>����oi=��G/����Ԉ�1eYg=Myl��]ں�Z�`�.�fTR����tJ�bw1�}��`�1pۿ���Ȳ�Bc�S��Ƙ: tFH�[�X��#�.KkcŖ��ӷ�-�j�u�����0�$S��)/x7��9#Y��v���E��~�p�6�S� �kտ�u�C!��3�=�s���I?�6P�gFy�)��hٖs���ع��y�n�YQ�q��S+��߹�s����X��tԚF���x�o��Xt�?J�SY���"P�h�$罠���yop��?g`� w-�y���V:Ǘ�z/g8�g=r��@ˡw>D�קs1��^Z�h�"��{z�ә���8v� I�X�9N]���G�����(Zf��Iv4}eC�cF#�V�szo��?�� ��4x<�<�[}�;�$S�D�-����~��~�g��u�?���8��UG���8fږS�-}汮�4�1V�QNk����yP��w���/�>mVͰ���q�C|b�v`�m�L-�#���pq�qp7�8��n���̪3Y(w��C�6��y���#~�����R���"���|��C�P�fX��[�gU�5liQz2=�3( ���AS����B����`L�3A6�C|�����4#�6Z����ށ��i3z�V;6�~�4�/h��1�ٜ�͕�M���Qw�������@Zs��G�ē�A��m��{:aZGs[���r��pc�R��M�&��P�O���mu7ti��.��=�����P��=��1%�T�ٷ��e ���-$%U�4�rP��� ��y���Pv C�R�hm!��|���.����ol�A%��v���#h��O���T�6�>Lz?\7�ڧv :���>Bzǩ&-(�Rp-��N ˈ��3J����:�l>E�(�ڂ�Q�y�o"v���%[���pZ�(�p�������s�8O 暴�/y����6V�&���`��ի)�w�[�p\jE�t+n�i��/����q��m:�=�� DE�۠/�a�� < z�� G>*��N����3�z�}�3�#{�h�.�$���ԕ�D�$��.���X� m��@N�&E��vKOѪ7���s��QW7�;��<� rػ��A6dK6���p� C�H��R�e�e�_��0|~y�o����e����K��l�%�-s4gkE�ǽ��aMyϰR�º�kko:��S�d�i�>��H~�:��3{a������Ao��S�C��!� $�@����N'���l�� ���BY{X��`dR�փG�P Af]J:$�@������!�mlD��9=W �/(Č��+O��|ɯ������"S��Ta�>lJ��g��y�<7/g���w�8��)���D��\�@���jo�>ٿۡy�/v�Ä����� �˛s�C�A����B{��� �v>S�و�U� te�H�N���f�_��g�Jf���邲��Qtc�J��lׁ�!���B!A��{�v�&*oN^�9���qc��|�Ӡˆ�z���V�D�N�$�܈yZ�sXtQ������yUۮ3�^�f���kz�l��_�"����=t��?��S�k �i�h�%S�I�~9��hj��� Q��^y��D�������9+�#��ʡ4R��4 �D4ݫ�v7�n�a�qb���W������O�����'��Z� ��]0~ޕ��MdZ* ��<�,�{c��7u����:-��9i�k�7�E-Sl�S�Ҳj�m���]���ebme���Q���-�H7J?븑Nc��~i��&E��2R�l y:熾P@�qV�±�,f�2'���0|��uX�:|�K�/i��[~�nÆu�m����[/�y[�[��̞r��k��z�[�����r°��wc?���u9;� ݍ���;�������"iֺ)����bX� ���W��1�0w���-~["I��9�����䝧W���s`gx����1�魱D�b�,�֭��rS����%r<�2|��{����Q�����jp��e����]k��:F��3�0^ Z+h�s4K��H�+P3�NO6��>b���_t�u&h��+ߧl������p�D�FY���&o0� elj�^YM��T�R�2�N]W������O����?���l�N��'pc~�F?��cGDGl���D��l8�2 ��>��I�t7r'�MZ+���� ơs#�1v*�M�sp2��@2f�"��N"ݩP�O����S1<H{�@�`~��wr��9�k(|^?��x��9��lfd)�oAݳ��~3!��;���+���۞z��@x�|����'�q*۾�)�:�m��D��E3F�6�O���� t�c�=�{�!|��:^���������t��zu�d�/'!'�dz��T�_��P��� ���E��#g�-� ?a*�r�S4=骬��@�] �Q ���PO��9����,�j��=��΅À�5�@}1�wv��D�N�2ٍu��ϣ�zd!���P?�"Q?�"��$�3ؖ�/�CAc���y�4�c]H��-�3:�q�x��vq˝�ċO�S�C�� gJ��X�L�M��]V�&O�NeyN<��L���G8n�����Ќ�ye�T����JlsM��s��6��t2�E����m8 �2�T�����������= ��e;�O�x&����f����C`�C!YA�}�8�2��S��s�O.�p"���;reO�!�~�c�9��/��F($�W�1������9��&b�y`�X��?�lR���Me�ǡ,��a�M�8f�M���t��bs�Rʛ�Z?���r��BJ���t���t��c�ى�:;l�(� =�3(�l�u����6K����� �����a-�X�5�����6,m��.g�ztqw*�H���?Ԟ���]cA_�U�V�����0� ���������#[I��4"oi1�=� �Q�I!!���AeD9N�7� �&����6��r�}%���ae��O�|�.��.^*��zP�ך�=�g�*V�ݬ�kx�hS��h�h�#m6�������˳���n/�99�ۗ��Gx�i�qe�����K�5*\��C��֝=�\���˚�n��mz��D����L�d˶��K;&f�ԧI��jq�$�~�ܪ���}gU�TW�[옛kx3�"��X�Dy����r��Gǽ��� �f��M�{�4N��8-d[$���!�t&�I� Ma< "p���[�{+X5�ln�qx�l�*�z ;�Ю��g_�$��J� ���ӯ��Ow�ɫx���5����!�/�Wݺ�t�J���7���E�i3I��IEND�B`�PKb��\ ��jj+templates/hathor/images/system/calendar.pngnu�[����PNG IHDR�a1IDATx^�SMkQ=3�~�j"$LUQE�w�N�ʍ"�AA�t���(�*��(�~�!���Bզ��&�3���KH7����p��Ý73c;�(��F�qY2 $B�Tg���UR0$Q��#î1_�0�3����������}�;y`�H���vpl���~ތ7I�u04�H�b�2Q�6�GHt$A����NB���6��`���x�[u���Ya����~���̒�r��#��8�@JX��b �ebj����r ��;x7C`"�n�hxl�+A4�ʵ_6O%JzR�g�:���(?N?��髮�~���{'`<&�"U�r�>/nÇ0M�/yX���Da� A��%���Ο B�Ё�0�Nqvh�3QDNG��o!�뇷��1��,��(��y0OW�@�XY��?؋���ΗS���3����x�� o>i~���b9��p�k��;�?<�;0�;P��A6�8@n}�ݽȬ�����=���2T"�H<�i��-ɫn�*)�5R�_�n��U�����aJ��IEND�B`�PKb��\6g���1templates/hathor/images/system/selector-arrow.pngnu�[����PNG IHDR X0$�0PLTE������������������ޱ�����������������)��tRNS@��fDIDATx�M�A� ���q���V�����e̬K դ�i����%�:x�;KL:�Z�ΆD:"�4�xo�U�IEND�B`�PKb��\���)��-templates/hathor/images/selector-arrow-hc.pngnu�[����PNG IHDR X0$�PLTE?|'M?|%J(PA�otRNS@��f-IDATx�E�A @�@���7o!� mQR���D��N�i$��%���'�ЗP�pIEND�B`�PKb��\;v:$$-templates/hathor/images/menu/icon-16-tags.pngnu�[����PNG IHDR�a�IDATx�cd )25'�| �@���)@5$���~�a�,�2�>5`$�f����� û�> +�հ`��[T�L<Y������a�E)���>�g�00���� Ms�:�Ț��g`�`dg���b`9���i0���.�X�p�����8��5�R@��9��a��o��c�h������{�(-�3���� ����#���2��?��K�ᨄ:�O�L���r�mj��"3�Z¯��c���߷�^�ā� 1|������B ���ۯ|�'a����4����|������a��Z�H "�h����`s�;AM���6���K��b�-15��L����8���O��_1��o@������ E����=%:)��g�'$Ƣ�@[��2�\��yP�~�����B�^���= �0C65�� ���G�&}�،���������5�_�~�@IEND�B`�PKb��\&+���/templates/hathor/images/menu/icon-16-delete.pngnu�[����PNG IHDR�a�IDATxڭ��K�Q����Q �OC�Hh('�H4å�hj(h�����ڂ\���O��!�h,��%��]�_��w9�=�+���t����X�h�&� /��8`l�#���ɤ��*����!A��"����x������ڂ�MXX�P&'P�NN`t�� �������C6SS��P(��>����N�KK�����l�T���E��^r� K��ښ�}~n�FW77����l��2�ۨ&��-��:��烮.�D"9�����e}s�NO�a>D�� ��N����@�nb����ܜ���,r��a�JE�./u�>�z�漀?�s/b}3P7���{08�LÁ@+����)���CC��ຆ��Ml��� �脟D��Dr�����N}���"�x��/�.����IEND�B`�PKb��\������.templates/hathor/images/menu/icon-16-inbox.pngnu�[����PNG IHDR�a�IDAT8�O�Tu��͛7;3����R��P��u����K`Xu����H�=�h��t ����.u �HL��6�ew�ϼ��H)�""gϝk>t�T-�� i5�j"��_~���"�""C �t��g�o�xg���[�흙�:��Ɇ���҉� >�r�yY�YE����v{�L����d��j���!"�?�ɢh�봚��4�TYZ�ؽ�lmo��6+����XD�P�y�s;�}�z]�nG���H._�k����'�� �/�>}��54�<[֏S�7�u���h��$C�|�7G˯l�۔����@���-���̷���?mX[rc�jk8��=,�~�T�@GUQm �wor16��z��=�;"��`�����f�}!Ib��x`�z��$2���|Vz�����?��k�,�����fJ��"T�2�� ��t�t3�B���)ʑ�/E�_�c������Pϩ7j6�y�yQ���"ɳ����Z�X�S1���B�(b*Lg��ԦC�8Yi';�I^�Ln�;8)���Rx�ph4�t�0�"�ٳ��~_�s�fi2)��w����u��H *R2���$ Ծ;�����D�B !%`67���/~�Q24�D9 T2d(��?ɞ{�9IEND�B`�PKb��\����-templates/hathor/images/menu/icon-16-edit.pngnu�[����PNG IHDR�a�IDATx�}�MOQ��҅�n]���M�O�Pt���0ՀL��5%PbMl��Ek)�R@��il?hF� �jƊu�%Ƿ��f`�I��w�=�ؔ��P�����?��� �>�qTv�"f� ��RB�����Bf�c�nǒ�9�����D������ֿGR_]x`5b�[G�k�.-qC)z�k�� �DՇ��ّ��*?X_�&K��L�S�j۴�$�9�/q��I�Vf��]����;��2pW�Ȇ#�q7Y�`�)v%?��u�b�?B�_h��t����.FM"T�� ���)�DwZ'��$����RIkߑ�J�1qs�.k�^ po������kϑ� �_Q�Q�A@�&��c:z�nD;�+��e~恖1_ƭ��#���#�y"X�tں�v��˯<��qM93�%��f�����\�&�`Ȗ��FV �C��74Mx'�:�Q���G�Qْ`=����;v��t���bIEND�B`�PKb��\�z)��/templates/hathor/images/menu/icon-16-cpanel.pngnu�[����PNG IHDR�ayIDATxڥ�aJQ��f .a��\BKР���(S�H2��4�l�� 2�hd� :e�PQ��*��S��=�y�C����7��lt�[^@��{* ���:?%���A[5���^m/V��6���nB+��uրc�Ñ�L� ڮ�Yq�z��C(���&2�'X|~�yā�;.�C�� ߀�#Y]�Q�h��_��A����zR7�%�3Q,��(KW�I/�d�3�`.���T����3��lh���\/���(� ��s)\0ߠ�f���& ��*M%`���<XPfR��E�)E^�ɨF��xc�N.�S� ��*���4�?X4v٭��h�A�?y|�̣�/�3�=��g�_�zd�y�IEND�B`�PKb��\��O0templates/hathor/images/menu/icon-16-menumgr.pngnu�[����PNG IHDR�a�IDATx^��MhA�lf?���_�hP�E�" (��w{ӛ^D�I�GoR��L�xUT�%�b�"���"*Vcv��ٝ'�����1��7oFD���s�J��圙�VD=@�E�p��v��de�*J�` �H�dX �ħ�]A��},�q�j`��h厥��ir_�!aa�9 �g܁@GH,�sؑ=���m� @�0@�dض���c�pY�A'�"���s��d��;����� �WV[mz�T-��B@DB�Ic�$IC)�t��[�M<�r @D��̌װ\z�kr�� 0[���ه�=OT� g^�����_>� �:zq���'��m�Ma�B,mݏ���yLߜF���")���W���d��la�c���=~r>���J�Bʽ�^�u" �1)�`�ѐ��pӬݾ6��D�=\`0��1 ���h��wn�IEND�B`�PKb��\��D��2templates/hathor/images/menu/icon-16-help-this.pngnu�[����PNG IHDR�a�IDATx�u�mHSQ�5���ҊJҬ�D��@�i�DEXa��L��C,���}�0��UR�F �P8�m�E�n^�s���;�8�`�}z:�%:��=���O��b�e7��`"��|��~,���;-F��$� p//c����n�o�}�b� D��^�͘��^]/�� c�S������^@EbJ�a{if+S�ك��&��퇣:�����!�����=Y�N R�̈́C���X�V��O��s!�e1���dX��@!��3����Y��U[xܨ��� �}��l�e����8�CQ�f��N�~~���A<���[�X����a�&`����ҧc��� �����zm�C�����f� Sa|d�%�wŏ�z.N�� ��u��I �9�Y8��Y:�!V066�xp@�cbp �+���K�}��m���g�Z�d�16&!2�$f�����Y!G¾|�*� q�qY��V�M��~y+�*�����N��R��6�s5 h�C��d�P�����{lU{�K��^���Z�������e�[���EM8R|aE��5��FS̏ݼ�o��IC�TbؠEfn��QpD����;V`=a#a�V���8��`0p�rkGG�B?����ڂ;2���ͨT_.F�uE�Nr���d�:Z�s;�%�y�IEND�B`�PKb��\�)�C2templates/hathor/images/menu/icon-16-messaging.pngnu�[����PNG IHDR�a�IDATx^e�]hY��L&M&�|`l�5���5UD��7�� Et��F jaW�� TA�,틨 })( ����m1��6&ݘ~L3�aPX��9s��sϝЄ_��j����Ľ�r�[Nuv�|B �CX$D����E�]{ȹ����O�7\����L��n}�P57�E��}W�d�OK�h���,�Pg�i9=��'yV,�!�y�p�X` E�PT���t��*��g��-)/��w$��# �.�ĀD]�AQ`����@P��ٺ��*�����V�T���L&���ʃ/6� (.Uh��F�������B۶����T���ud�^]����gUU]���@$! Q��h1L>�5��Bث�/�Pg.�l���T����ٓ��������홙������S7;;k˄6�U����\^6YZ*R�TH��,,,077�La�`�r�L�T���u`ir�@���h�YYY����:���LM}C�<�b16lH;�XRW�:`Y�d2{�Ţ�Q��e�%9u�Tj �e9�%��#ӮU�����s�4ͅBa��R�!W(J�z��˙�Z��k�|>? T�Yij�lS.��O$6nkj�Ε�{ ��&&&��?�_��EE�v��'.\Ƚ�?yR���y��v�&p@l ���H�Mb�[�*��w=!��+���y�:�UIEND�B`�PKb��\Re��-templates/hathor/images/menu/icon-16-menu.pngnu�[����PNG IHDR�aaIDAT8�c���?%��d��A+��� yFFF\��Χ���� y|��߿�����A�x ����_�B\$�׀���2�����;H��������ߐ��'�b���W�,�G8q��=��ׯ+���������� 7�)R�C�@?N���R���W�o_�*|x��hHZz��$��1A��/`4��ųg �������~B�A�?N�q+�ASS�ׯ@�����Q`��F|��F��@���ϟ?���ʚ�p���XF#�*��$$��������F#@ X�t� ^��㇉�~�zp�`�:^ͳƉA���~�@�x��� >�� =LIEND�B`�PKb��\��P}��-templates/hathor/images/menu/icon-16-help.pngnu�[����PNG IHDR�ajIDATxڥ�KhQ��� �B�Wh�EZ�J�U7�Dt��}�j1m[P7b�W�)RU�I�� U��L^Nz'/�Ɍ%C'$2�4��ׄ0�� ��g�{οA��z�)NJ��z忝����NY����B�尦�H}v��|h�R��5� �.��'��ŝ�ջ�ŷ(�J�y��}��4�}����g��v#=���a��܆i�(��kG�\9�t�}6T���&��@mh�2� �����b1#���� ��\8�w�̽2��*p��-����라1�|����MJ�%C��h���d?<�����d<�`��f�z,#V��<F��xO�h�z���$�ɪa�}�5�c+�h"��}�=/Ϧg��x<Q憩I��� �,NG�~��}z3��h� \�R�L��2��=X�� ���=���6Zk�:ډ��M�+���� EǻyLj%���8��(~�{�gg,�V���ؚ¿)��B��dl�=`�;����F� ��SU���8�&l��x����c|;�w���k�D��H�$�iu2���( ���lV�O��m�O����r�X/��^`+e;e����$�MM�P���}����j�m�-���/"6�p�KC�IEND�B`�PKb��\L�����1templates/hathor/images/menu/icon-16-help-dev.pngnu�[����PNG IHDR�a�IDAT8�m��jSA�۱�����AХ��o�K��֍�x�u%�* -\�i��Dm(V� �=ǜ��F��āa����F�Z@B� .N���*d������6�5 ��۲�� �>[b�Dl��&�BP����0�G�����)��u�.�lIJ�MA�n&>+#��b� 8ٸ"��kP��mB��CHN�M�nL �0��e�|n\R��7�L��5��;��ju��% n=��'��,�0� ��*l �w� ��¹���:� �at�"�Az���h���|���p�>\�[7�����c�f��?�����>�+w�.η��n!��ol?�z��r�{W�i��?��f�BH�r�g_7��3���=�����9����1t_�w��������J���w���p�9������]R��?�}0�|� IEND�B`�PKb��\%e3_88.templates/hathor/images/menu/icon-16-links.pngnu�[����PNG IHDR�a�IDATxڥ��nQſ�&&<�]��\L�q�Iuo�g� )�Ԫ���U��?�NKE���tj �0�t�(���;3D$�ݸ�%g��ɽ`"�������>Hu�X�B�>h}߂i6ۥ�����d&�0 J�X:��Z�؞�V@=���n�t��z{�F��W+�@���6(��Ʃ���~�]��5�4�z�G��@M�S;e�'��C�u����4 ��e*���_@�&��t �2�H �� ��j���C�a�k �:���,$iR� UUq&�X;+�Y�*�����w4���E �o�$�q!V�a���n���-t�]<�i��ќ1�s�en�G���~�q^�`0���6�>�!��Ah���~�"��_?ѳΑ7����:ȳ��������h|�s�Xfj�"��1�z�� �e�%��a�L���ހ������3��{��P���Gf��ȵ�M����~LWp�\h&��,\/@�E��MzL��o���YL*^fIEND�B`�PKb��\�=t��1templates/hathor/images/menu/icon-16-readmess.pngnu�[����PNG IHDR�a�IDATx^���KQ��;��㺚�Ve��bVPEA"DA�"��c@T�KPa��UB�(B@�K�T���i���̮�s;b!~�q.3�sf̨��A6@�xJ|)��!���ܬcŞ��#�p��i��JJJ��rO�qt�a�Z��)ڭ��;���n����������╾�����U �ڻ(�����Qcc�DYYY{uuuMUU�tj��"��4�� ���Z͎����h����˲�</�2�} ux�ul��Ak](ov]���Ճ-������b1d�H�0PJ�4�g\����[X@rg�N�u t���Tw}���o�dfgH&�k& ~��g�����cgjho���M���Z��6NJ�j0����SR}Mn��0�bC{TԀ-e15�36��w~4�{3mnQ9������%Jl��z� E���ĉ�sz�b��}��e?'�!1�%=�T7�j6鐝HɢhM�!����J����Md�M��df"C�cwz��XZ2� #YR��eB!S�-3���<��2ۗ;>E���[""U;�d�$+�||���kj�����!� �-�tj����6��=L�mѶ�K��e��!W�mE䦶��p|�MS�����8:������bX,��E�rz)]�y�<IEND�B`�PKb��\��\�__0templates/hathor/images/menu/icon-16-default.pngnu�[����PNG IHDR(-S�PLTE�����E��E��E��E��E��E��E��E��E��E��E��E��E�-��5�s�3�?��L�N�d��x��<�P�'���e�_��s��{��Z��R��Z��Z�;�y���M�}��$��R�w ��6l � tRNS@�0`��πPp�&�SzIDATx^u���0-�%�[:�w���H4�x���'����~��vg����Ns�Zw;����,NX7��zRWg��RPIK"MN�_��{`����W��{���,8��70a���_(�����}ؑ�IEND�B`�PKb��\6���1templates/hathor/images/menu/icon-16-newlevel.pngnu�[����PNG IHDR�axIDATxڝ�1Ha�l��j9���&��A���%i*hh��3$�![3H�0%㠡$�����"� B�SL�����R_x����~�O�#c�v���n�d�bv�U�Y�o"�����R8��Q�סF�Po=��(�N����P�'��<·E|�(F7�%�����X��������ZmY_�� J�(���^.�����K�o�'�g�m�K�u#�=�B,5C68 z#=��p�(5H��rv^����N!��@�.����#f#��RK�p�,�̽&������s � �T��<�hP��B��v�V;G��W]��B���Iq�3s��H�"� ��-�X�bH'h���:�M2�B�xE��;IEND�B`�PKb��\]�;0templates/hathor/images/menu/icon-16-user-dd.pngnu�[����PNG IHDR�a�IDATx^��1h�A���$�����"�W�t(⪦�P\2;��vv���A�Xl�� 8�� �K�H�A h�@�$����I��|�;���=B�e�Ƌ�:ϿVZ�<^�Q �Ŏ6#�p��%�U���%?��� )S$PC%A<xՐ Z�)�g�j� ��A�h�,ED�QƸ����u�תc0�~�<i��K7�!�q��L��w`���k���z���?f��А�^� ������_Dkx9�R#����6��=�ې���� ��\l�<k]"�yl9�{�نx'�>v�3� �R�� ][AW�;=�f�`�|4ag������*�r{� f��Sة�` ��vuM�u���棲���4} s�4��{?Ϗ-�����hAa�_!|zHoa��ݻ��>�Jl� T������YP%8�{[G��CE��ypi�W���09��� �htz�9 ���� �?� �2P�<��#IEND�B`�PKb��\_䧹��2templates/hathor/images/menu/icon-16-component.pngnu�[����PNG IHDR�a�IDATx^��ϊ�P�'I35�T;�@a@ܹru#��lt'>��/�����ka 2{w�L�"�h�!�Mn�! �2X@���=9|痳9b�ey�����h�zo g���E8� &ù����w��&�=������b������Gt��8�%o٤`�}�%���;B�Kb�"ق�qc4��p�8._�?zwS��b�%/,�v~齁��@�q1*������i�i��c�X���tE+�JS���<ɸ8�y��2�ʬ�m rcHSU�f<�x}�GY�} k�ƺ%�V� �(�V�3\�o3�|>��:麂�\�˹f��+�[R���z�����tۖ+�B@����R:���r�p/d�M�VSӬO���S5�/�=:>yc~������ʞ��>�N�G��[_�Ö����z]IEND�B`�PKb��\��!!ff4templates/hathor/images/menu/icon-16-newcategory.pngnu�[����PNG IHDR�a-IDATxڭӱJ�@��<��.��A�AJ(V��6 NN��p�UD�Z�5)w�\��b�uPA]�b��I��$&�ZI��!��|��4�2��\`�@�WW��{0��$Q��t��Y���<+� �)�� �r��A�0F�%�A 7j"?�^���t��*�?'A�X��0�ߔ�5����)�˽��D nam7����Ǘ7,�{��Ttv,����2fv���&Z�w�=��Q�l�(N�{�rr�)sp���WX� �̊�F�iM@���G Y���xc`����PvDUIEND�B`�PKb��\��Kȫ�<templates/hathor/images/menu/icon-16-contacts-categories.pngnu�[����PNG IHDR�arIDATxڭ�MKA�q�G;]�s�����z���l$�a�a=Y"�&!u)$4�yq��L3q�ewG�~�bN�6�a`�����O����t��ɲ����h���n��uc��\�)@cCx�OYeSx�'-�C6*Iog���P�8�d܋��� G��A�K�&�f���ݖ]�<h�C���<1�OC��r�ש�.�L�#,P�@���Cz����C]��C�5�����-�a|��FY����;^��<J^b����*gATo�Ʈ�G����|a���$� � ���>�sA�4%Ó�4p, myP\����w�a�K2�$7�5dǹ/,p2=�;���m�p5���3����-O�IEND�B`�PKb��\��_��0templates/hathor/images/menu/icon-16-content.pngnu�[����PNG IHDR(-S�PLTE���������������������������������ޅ��r�����������{�̚���������ַ�ԭ���������ڀ���������������������c����箻ǽ�Ɲ����Ӕ�ذ����ԁ����т�Њ����ٳ���?�tRNS@��f�IDATx^M���0@���2Ø�����6Ѵ�xlKfLYJR�R�1a�0D�O.���E�����ƻ8@H��� �1k3���M�q�;�R�n�u�@fͧ��L��H��l�� �L��)y(�A�UeXK�@X!�11$��W��1�O�b�b qAӡ�IEND�B`�PKb��\v5��GG-templates/hathor/images/menu/icon-16-send.pngnu�[����PNG IHDR�aIDATx�Œ�kA�-�I���RED@P���z�XA ����ZA��^�����V���Z��TMֆM��f1M�u��n���>�3dK^��?Xvf~3�;�6���uD�Q'�"<�8!h!t.>ѹP�$$ (�UU�_�ۿ���g&P;H�R�d2��r(��T*0���������}�� �t]G�\曪�*j��&�o� ��/H���`�b�l�>�oN�y��e��u����R��d2�W�]�O�G_��,��t߇X���������4߸Ќ�ј>%Z�O2�'�Ns��� < -���f�l`*��O}X���_�l4L4��#G$&pɲ�K,�2o0����7O�q�ϋ��9�dž`��5h{`�9o�O���x$����5���.��Ө����+(y�"�9�F>���i�)�۳�,�L���]�z܃ҽ�Xt uk?��ݣ��lK�� ���Fg��]�8�����{�ѿ�[�|���E�%Ƕ*�N�$� q�7�$��ڟn IEND�B`�PKb��\�&�99/templates/hathor/images/menu/icon-16-groups.pngnu�[����PNG IHDR�aIDATx^e�[hu�s�������� )��FZ#��b�BQD�'�Kȓ�oy�`m@�Ph���DD,P��)��ViM��5�l������.N��`�p8���'�W�;����4�����x��d@~��k��ǚ?z��{m��f��y��Ӵ��s�d�����:�]�?x��"�Ȓ����#�G�X�T*}�B�;� ���]��O�F��n�<k�o��j�N"����*���3==�f:�~K��a���&Lk��n.�9�"Y.��D�-E*�:=77��. ���u�(vK/�zIl�/+\����։�%�#��Va�L&p@���|*�Ht�����4� ��eج���/P��Dx�d�h4���ʞ�u+�B���˟���z&�a�)�s Q_�1Mt{�g��X�[5Å�d�o�!ȱ��1m����6�f�DL�lm O^\\�;��P�R]��|���L�_�/�5�� ����۫\��6�W7�$�ijj�z����=V �P���$8����Eq��@ |dUC&a�Q��s�+��4h:0�?s����j�$I����$��v�� ����K333oh�v����{{�c,p��[���aQ��B�P7.�| ���G��� �8���|p���,�mR� �B� L���r��8;P�jbb�x<?��h��q�m�z�V�x@�y$X�:66v`||��GGG;��N�/��>Z��[IEND�B`�PKb��\�����1templates/hathor/images/menu/icon-16-language.pngnu�[����PNG IHDR�a|IDATxڥ�[H�aƃ�n��(�+�n*�� "�F�@R4s����'��fh�R���)w�M�l6��U�M�v>1�{��`�����}�?���.;��ԝ�?�Q��\�)|'���,��W<�?p�Vp�cݓ-vpR���z�4^���t��P{�#Mh_g���[ K��T�i�%T�:Q�p`ɿ�pJGH�3G�dz��\�1�L�9�Bi[�~��(�S���BeG�ޅ�=F\�"Q0H��e�V/Sl9D��F�чp�e�QYQ��!��4.�N��>��o$X�EB�.��C�zZ��dX�YD4�� *f0Z�8�A�|�?)ȍ^4��b�i�$6��W�5�����rȄ��8���ɝ���LJ.҂� Ur��� ���{�;�����d���Z�Ԥt}%B�S� 2�5h�a��H�X;�:�yw��Y<aO�hAN�x[<��(%�_g��ǭf%�?��#}.[���#Z��1w��_=PЋ0'_Xۀweg�~D�"�mc$����1���^O(g�r;q0��9.�!�փ��ʀl�:��.T��k�D���>�5˰?���pa7���H�����i_v���Vy�%��a�X�3�4���r�3�����$�� �;�IEND�B`�PKb��\Ν���/templates/hathor/images/menu/icon-16-upload.pngnu�[����PNG IHDR�aYIDATxڥ�_LRq�c��P=d�r�\�� p� f�jV+}l��Z�-�մ�TB����*MmS��B���V<�:l���v��ͳ}��9���9{슢��r�f��[�f�V�ѵ�C�ZZ��i��潯�(+�JT)�Wd�˩:t���mFdzj4�U�5O�RR�+)%�I*�[��[$���?���t$�h_�>J���M�cs{��i>\q��ѸL-�fx�@�F�u-��`�O�olf�q���#qz��%j�.N�Z��<G����H�P.6r�#V�&)�.Ƞ���8��'gh��$�H�XV��k�Y��*�8�-&;�D����)��8��'|�ƨBo�K�ON�>�����b�J�D��qjB��8��߆0�<�}S���"_�0Gu��O��z?�<�A�L��7p�A =>'�2�F���2_eJ0�B4�)��C�M@q��r���@�/3$�~Dk��ȫ�m�-�Κ�r0n!�Ajw.7x�h !V]/Ye^� ��i�1��{�0�E`S��0��0�a���n��r����4��O�����Yӷ6�u��5���_5`��]��8��驕IEND�B`�PKb��\iF�S::1templates/hathor/images/menu/icon-16-featured.pngnu�[����PNG IHDR�aIDATxڥSmO�a=?���O�'<?�����T4{aR �R��I��P�<%��Qc�+��Q0W6j���ϧ3�h����z���s]�Hvn4��F�^���̖K� �>�/6+WG�{_L0E�L�l�H�ת��;�>���즣� SD�act���#ZU��D�f�����ɷ��/�x#���o��Jj��w��%"�.�[\���1�oX�0����"��[�n�Ϩ�6iD��-��������&.�;���/T��'li�W�AL-G_��e�ŕ=��~��s0O������ �#Y���N�t�J�d�L{�Ҵ �������$�V�q�d�"Ҝ}�^B���P���$��궰�����:X�IA]���������N���ȤJ#���@���%�j��p2���Oi\�/�o2�3�7CxF�CW��8q�$_���_W��̚ݯ�7E�a��K)>�~�����S�%�1}I����Seo܂�=���o����f<x�IEND�B`�PKb��\��h� 4templates/hathor/images/menu/icon-16-maintenance.pngnu�[����PNG IHDR�a�IDAT8�c����� P� VĦ�1t�k����x"�hj�����/� ��y? ٨�f�� v��T�i�JGF�wA� ^O��@���q�u���cq6.�!�+��s.�ǡH�P�|h8a�h2����B��<�hԛp�2Ի�Q�Ŗ��t�&ʢQ�r e ��d9eI�;e��={E�7�LpXWIEND�B`�PKb��\P���2templates/hathor/images/menu/icon-16-help-shop.pngnu�[����PNG IHDR�a�IDATx^��AK�Q���k&$NAX% Ѯ6U�rV��#�\� I��lA.�D��0K�M�X����3:�6p�I 8<���yn��.c�8$B.��o_�K�惒PL�yN�"�����P[S%y�m�ju�+�4k����ge�}ebA�@,$B�*�-Y\�ۆc���*G�wAݳ��1W��I;5�s�:?�.�ꦹ�Fu��:y���R�.��(=�H/�o�����Đ��1�`�%�ӄzjpp� *����k~MӨ[�vܗ��%�π�`�3ã��}ĈHs����l��.ۤ���"K��m�*a�X'���,����TS�M��b�,'���2���LGHI���w�Y�MA_ƀ���Q��I �]�:E�b�c�}E�0�#ܙ�ꣃ���0l&0�����_,`� _'�Y���崂��5�Oҡ�,��'������0�%ǁvq�p�IEND�B`�PKb��\��E��2templates/hathor/images/menu/icon-16-writemess.pngnu�[����PNG IHDR�aNIDATxڥ�ыQ�-j+�ڨ�5��^b_��, z��m�Hz�j��쥰 TwuW'�DT�W4 CGA�pVGMU�����{/;Ô�օo�2��wι��K�3���v{������s�h�HK��r.��*J��Bb��j�����$��(���&� �Z�~&�c����X� ��k�>_ėR�&4~`�ٮ%�o��9 ~G5��/c4a<�o�O��\x<�+j��P(�L&1�2d�|���lO#5$�&��"�^�ZT,�AH��N�Q�I?S �6u�N��u�]Й8��3j�z��~���n�����5!���F��w��`0@:�����#@f$Sf?#�2�|���=��}�;��j��%.�h1�#�6d�~����lj:p���AgZ����]<��p�V* �"�}����|>�*�#�d�A��&k��j�P(�����p8��� ��t)����ۖ����h �J�:�8.b6�o��SDG�مX���6�b��m�Z_��$�$�1��DsD{�(ä+�r���jlj��Ui���%��r�h4^ 'T�Ё�I*�(}����?�>��IEND�B`�PKb��\���S��2templates/hathor/images/menu/icon-16-unarticle.pngnu�[����PNG IHDR�aeIDATx^eS]KUA]�̜�=�#/" V@^�D�9����� ��s���^$!�R�+�P?�7�"�RQW�ޯsf�{G���ϰ�ڳ��x l|ܜ�`��n�xB �ju$I�0��!�4��NJ�'��vkj�p�Qo�-�H)�da�׃���5�b^��I��i�reee6���bKQ�B6��R �j9��@��ր�@��q�y�\Q�(��pԤn�Z�db�m��\�>>>�W��6<@k8!�+r�sB���Q���A�K��OԛM��Ri�W�L��v�h6��q�B�����OU���M��lX.9Ibhh4M����r`��bq�!aJ�ɶr���76�BJd2Yd�i7PI��:<�]=i��. C�i-�Rf��C�a�g���^��&=�cms�?�{������wx��wfnbd8�eB�tFG� cW�����X'���Wxx�>^,>���#�m�8��澵ƹ��-b{g��.�,�6�#&8�N[<m�j/�F�䔎+e�s���_��dz\9�N(�l�_H��JYx�j��������cH�����n�=�Q� ��/��4L��` ,--����K.�7IEND�B`�PKb��\> �0templates/hathor/images/menu/icon-16-article.pngnu�[����PNG IHDR�a�IDAT8ˍS=OA��o��C$�����jAOc���/��џ@B���p��p�缕[�$��ޛys{�,K:��~�% �g�sv���sL5�?"�x)e�eq�f��b=��e9���y�d���^� �ȿ�a�Oi�>�~�f��������)u�]�틌]��x�۽F���`�X�Θ B���k�h4���MI5���I�I� �Z�h2�� �|�]ܺ��I��x�&�,�{ ���0l�%��1�U��j��h4d���<=�q#��v]��G���bx�H3"/��*�x8��I��`0�tnrǨӡR��8��/�sI)EQiR����|�N�:�s��-���y���"�N�$��m�~��s�؆!��(�&b���x<�r�$�;tw_`_�C�Eq ���n�^|�����\�ų \lj�qL��̦����6�����j��،��UsD�;VsIEND�B`�PKb��\.�� .templates/hathor/images/menu/icon-16-clear.pngnu�[����PNG IHDR�a�IDATxڥ��j�`�s �!7 �(���s�� ���)L�XAdt�VV���-D���k�vk�ܺ�K�%���H�ڈ��8y��'����Dl��Xݗ�C�}<Vه��6�Z%�d��)�H�'�߄J�:P��c �C�<�G*��\b���Wjg����j闆�P�Ҟ2�r_A)��zpk��x\fI�bO�����:�p�\��ծ��{J��Ib��3�g= ��)/�6|�T1���'1��t����-Y�|W�=�ё�,<��ݟ&�����g�3�ѽ9��x��E���G�ٶ25����65r�[���֖5�gۦO �K�Dt[V�m���qH�M[�մ3Nˮ��[�CX���K�-jM1|�H<��r�5��c� �q��xن���d����3����oND ���Ԅ����8_Lo�n�s�F��g�@u1���� ����YkRIEND�B`�PKb��\ց5��0templates/hathor/images/menu/icon-16-checkin.pngnu�[����PNG IHDR�a�IDATxڥ��+CQ�A)2~^I�P� ��% DV0+%5(�=[Qޤ)<Dj��� S��'|����XN}�=�v��� �/�#s�� BqX��e_G�F�(�<KڀhgË�;�R��³��O�8���] �|RH̸�?�?j��%jm���%��Q!RQ?ӣ������>�8&x�ގ��4T_'C}[�F���H��=�N5��M4�,�8[�9�����лi_�6�U@�k-C�Q��J1y�������>tZ�֓l�7�}��ָw��ݸ���R���OJ�X�����!�W? P�[z�f!���<����a���݁j�Ŝ ��^��-B��0A�cۭv�r�G��MF� D�(̗I5�`A4!�O��<_B�B"��rB!���}���~�X7�,c9�,?�7����c�s�XIEND�B`�PKb��\��1��7templates/hathor/images/menu/icon-16-help-community.pngnu�[����PNG IHDR�a�IDATx^%�Kh]e���9�7�IML�Em#bG�ĂH}��NJ'��DA�EđtVPP'�R,�S4BKR����jMlr��$�&��<?��� ����ZIB�+�:�ؙ$�Q���PQԕ89uwU��������qY�S�&��E���# M�;� z�\d`߉��� �^���h��찻A{�f{�/CV�si<Ut�%�B�&��]��ɞ�i�Кek1��F�3Gg����|;�r�.ʒf/}Cܛg�"+5%�.��{� � U��em��4��L04�2�C�l-3�?���y��غ-U��mD��Y6o��a�]t�2�>WN#���iM��Y�b�l��o=��]�d��c�oq�:�hM��ڑ�:��y������d�tu�3B��2�8��VG���^b�cG�����<{�����M���d�64�\��)3�z�<��(���X`k�=�x-�d�v���E�!�Ի�?�3'���g\�<����Oo�=<����)H�y��غ^�6��2�2������u��M�P�y��c\�*�F_��}��y���-�?a��G����3/�y�Gh]%A��x�$�HEq"8��$A��7�,�<��_�3 T1ƺ�5QR���/�?w�0�D�f��IEND�B`�PKb��\6�&��2templates/hathor/images/menu/icon-16-help-docs.pngnu�[����PNG IHDR�a�IDAT8����jSA���3�$��7ZL�+Y+* ������>JW>�� �.ݗnA��JUj�������_`&1ܴ:00�s�sΌ��~x�BJ('i����#�u���"��a^|"��~���Af�pR�X����Vڠ�y��DC3��c�J(X�6V/��G@7��]%9��e�M�Gq��� �N�JC1:����k�YpC8ܡ��>�t�c��Ԡ�4P����I���}v�z��g0o�A(�W�4��`��ӻd�y�ǔ`�A ���7��R�H��,YAׁ����VL�;��F�)|]�[�0 ��߱~� g��T��>��.z�pY5k7�I1�w��mn���_X/��p�7��7��y T=���OK��R�r�L�07��dIY�d��Lݭ�H��Ԯ���?$�V쁅��IEND�B`�PKb��\�fFc��2templates/hathor/images/menu/icon-16-newsfeeds.pngnu�[����PNG IHDR�a_IDATxڭ�;K�`��� ��7�*�'�8�dV�����x+���8D)���)^P�&�%�� ?�<������!���=9� ��2E���N� �/�<a������,�ް�$��R�&���-&�^1�WAW�`Q�'A�P��Kh%�M��``�^$�v([F�¹��&R=���� �/��g0�~���#��g�� ��H4��h�����|��)�`��-1�t��'�d9��])�{ـ��v�^T����� M@�Db�r���X��o���,��9��34Ϟp�J�ݯt� ��B!RM4�8��j�@o�.�� �Ґ)�q�ҷ�6p0�@�L�n�'��kH��_%IEND�B`�PKb��\bj��/templates/hathor/images/menu/icon-16-levels.pngnu�[����PNG IHDR�a�IDATxڥ�!1��Ѳb���E��v���G0,�%�Y�kr�`Qa��'���+�>3�����7���ˈ�/�3;=`?P��i�Ȁ"D40��$P���s!k7��R� �I#�%`�F�q��p�)я��o��p`��k,��zPC2��wԒf��U��YoUy��:��A6$��1��K��nIEND�B`�PKb��\�n �770templates/hathor/images/menu/icon-16-preview.pngnu�[����PNG IHDR�a�IDATxڥ�=k�P���s�(8u����$�Ju)]ڡX�` � j���m5���*U/^9��_x���8�$�<tQ1��i�go���m�Fs��o�R�/p; ����� �u����8�� @�GS�U�}.2�.�a����ױ���C�a�v:v���܍+x�;���<�P��ⵀ���]�RB'����K�|�ӎ]�<���p��K���Č��.9��T&�%˲`�v&�%�4��W�ܞ"�IEND�B`�PKb��\���^^/templates/hathor/images/menu/icon-16-plugin.pngnu�[����PNG IHDR�a%IDATxڥ��Ka���,�|vSBA�!4���(!!"�A��*�5�%��+ڕ1l@Ze൝l�VB31Q�����m�y�x���z>� ��(vK$8��_��a�y@9Y�!G"p8Z@�$��r���F��밇祝*���W|=|9��KX\xW����[Qw<�t GO��H�(|�J�,�����aĢQ���X�b�B����W��?��π��Q��.)���a�햨 Jo �(�<܂��u��1#J3��6eEL���O''J�>k��5�T3r�50ǷB��8}K|��l �/����J�� �{�{�{4�M�� T_}� ����6����R��,�"<�e�I�)'A�E�q�V�<����ژyb�J3�Q�;�U�1��u 1ЎM�i+���u�TbWF��=nF�E'~��D|�+7X��Xl�H߭Ô� W����"�� �x;��"�U��Y���Rv֪3�@�,U�� Q��Kr���^^�M�Q�N�ML�&�0ua���+eɜ�G��IEND�B`�PKb��\��ZZ:templates/hathor/images/menu/icon-16-banner-categories.pngnu�[����PNG IHDR�a!IDAT8���]H�Q���&BUW������a@R�� �m���*\�Q�i&a����[7�6Ct-_[��E��\�m�4�͖� ���T����9���H�h�����`���g�:���~�l�#!��]��\VuƤ������u�3J!����W<������\z��w%�L���J��b�[�8�K�\�D鑗�.�=6�mx��7� N��8��^�����E]1��,}�lS�-���In�dj&���P���7�ݚ��"�%^R�����l� �cp�E�k^�:�7�T��DQ��BQ�Zf�m�,�٦1v�F938ŝ!�u���W)e�+@Q��ě2���!6[�G듩�����S�rX�_`o�G�E~qeh�����"��El�2��o}a���|�E�@�V/]���v�y8��0�ʹ����e�x�y+�$��OE��K��]�<�a�=�Q�M�<4og]5mU�� Ү]�H��!���=��!ߒ���b.$��S��t��۸�t�k)^���mRmr o�IEND�B`�PKb��\�2��1templates/hathor/images/menu/icon-16-category.pngnu�[����PNG IHDR�a�IDATx��ұ �@��l�K��b��qװ�n`muE#��<7qP>�U=�{D���W]��<�ӥC�*����u�T��*���[�u2ä7�.1�V6>p��u�"0靲��l|`��l34d��^����l|�8ȩ�h���L����46�Èr������� �MJIEND�B`�PKb��\V���/templates/hathor/images/menu/icon-16-logout.pngnu�[����PNG IHDR�a�IDATx^��OJ�@���`�m�ˮ�e�u��@O��K=Ap]o`����v_�݈4TJ���`��8!$�!�q�GH�����?�B�T�\b2�t�'D�ww�,A ���@���C ��)�ᡦF�+-:�~"�2�&��!++���5<=����y8NS9Φ)�k�ev�m����U�V����db3��|��tϮ.w��E�t�=�{NN�q��f3l�P�SK�@�m�E���d�� IBf6��) \���9MA ������vc��@��_ ���D���� ��d~\�%�����݂�&���no�R�B�l!�?�� Γ1�nק�;�Ղb1��pp��Q��0����)��q�4����H'��*C�<���`W[:� �De7����v�U.�*���+x}��X_E�1����NIEND�B`�PKb��\�����3templates/hathor/images/menu/icon-16-help-forum.pngnu�[����PNG IHDR�a�IDATx^}��ja��ٌ���F5iT�BAb���h�#��X�#� �h�R��F;�6���F-$D�X9������{���a'��=�|g�Xo��[���)'g�v��n�J���"��d��ˁNJ��p��, ��7ߢȩ�a?�0s�N��E�&c�=��4��Y�98~��s���� �}_`ihry�,��i�0/�fO��x��-^$���`�:���F����}:���tL�d�U���.��%P a��2rL���ཤ�Wv����" ~�%��{z���p�6��l���u>���d�l?��w��3���އ�v��}��*�����@b��V��%�t��xc��zAd�AyV@��xkpZh?C2�D���">Yb��@YØ�8�p�u=iF���oIEND�B`�PKb��\�P�0$$1templates/hathor/images/menu/icon-16-viewsite.pngnu�[����PNG IHDR�a�IDATx^ݓAJ�@@_�鴱���ؽ�1ĵ��^��R�x�^�]�b]hĦ�f�!� 2�B�-�� �?!��o��fWD�b)����<7���"9>[fsb�nO�S���5&=$���m�/�(� ��D�� ��� �����n�x��>*xu =�������Cfa������A��[ M���N����eb�%Um�E�?�]b�{���.^r�pL���l��VZ-IEND�B`�PKb��\ �ss/templates/hathor/images/menu/icon-16-revert.pngnu�[����PNG IHDR�a:IDATx^���J�P�O������`]��H#�)��O�#Tp����Ap��h�tk��M.�! {�����! ��GM����M����n�_� y�u�l�hb��8M_=d�7 P@�a��Y�5M�:^9~~+L_��m#��%�S�����>�7�Z�@�J!� :#�^��@ RYG&gX(T�@�>^9��ͫ1��$����܌�[�a����b� ~������B�i� �M�Q�1 *Z���4~|�@��UZK��A���%*�S���PGB�Y�v�1�K����;L52��w�A}���c�IEND�B`�PKb��\���T.templates/hathor/images/menu/icon-16-stats.pngnu�[����PNG IHDR�a�IDATx��ӿ�P�q����G�#x���Q$�Z�$U�&�b�6ҭ����V5:�N7����@�#^ԙDY����B�P ���MѬ��@8=1��S�m���a�����"ö4M�þsXjc��;�a� �1j�+�? �2r�*[͑Ӵ�.T8�B^�' ��p�I0-+���'Pe�h��h�}��\5��0��D~���z��n�=�IEND�B`�PKb��\}�ts.templates/hathor/images/menu/icon-16-trash.pngnu�[����PNG IHDR�a�IDAT8�u�MkSA��w�͇6_�� �n�R$�@��kA\�r��r#Y���1��� V��h���ܙ���ۛ{``Ϝ93#��,�H('D�HU���t��Z�v���nDQ��l�Dd�u����i49����ʳ~���^O;���Z�'����p�)�x��Kׯ-�8R<���lss�DȄ�p�\��ӯ�|�~ݽ�W?r���b�T���.Q���c�;V{?��a�BeBi~�W�W�������\&K�\Bur���g���v&�Re�R����x�h4#p�a< ���u3���X� ��k�p�f-ݴΑI�@��{P��e3�.=�?���Il��v�:G����{6��N��k�:�;0ֹ�P���J @ �m "���nRQe<�E�0A�<��A������m�d���x����J�zdrJ��g��ۧ�@������O���IEND�B`�PKb��\�x�k��6templates/hathor/images/menu/icon-16-newsfeeds-cat.pngnu�[����PNG IHDR�a�IDATxڥ�MKAp)���RXD�![�At�&�-���"2]%���R��i�d�Y���>@ ���� �of�eU1�~�3�3�}(���PT����h�J|s�ݸD���lH�Ƒ��o�^zFȎ�x]��<�)z@�,�ʼn0)���@�xu=q����.��P˶u������a����*I��#���0j��(�fwHD�����sI�h���n%�P��(L�y6aJl��C��;Gh�Fy2��4�� �~�+c ����Xb!_���>�|57�4��.���X�x�b���/�-�{P�Є4� �H8�<70�����н��q�4�(����)�Թv:�k��xB��V��4N�9�o������d�'+IEND�B`�PKb��\���--2templates/hathor/images/menu/icon-16-user-note.pngnu�[����PNG IHDR(-S`PLTE������E�Ҕ��V��������3���g��V����������z�����2����x�����e����N��e���ܼ��~��LGI��IDATx^]�7�0DQ�I9:��!��v��,����VJ Þ���Aᶽ>1jc�4�!��U�1�|���6��k�!�;ή�a���1�2tW��� ��_�i����;+��`q�����C��<�2Mn�p Slr�XIEND�B`�PKb��\=T\UU1templates/hathor/images/menu/icon-16-messages.pngnu�[����PNG IHDR�aIDATx^���kQ�O>��m:WQ̨E,&�e�r�n܉� �_ ] B,�;p�F��"m*T�Qm�4L��d� MR*q��y��C�N<���ǝ�b��_��V>����M����XVUuFԽ�F��^�7�v�����|�3>WM<�����O����4(�tj�%I����<�p�=����{�7y= ��X,֧��~�>���-�R��_t.qb04���0�{�n_��0;����@�M�\�b���+̽\B&�چf߂�-)"��V�+Hͮ�7�YU1�*n%�x�.���W�S�@ *���n���82���j �4<�s �N��/p��� �ϸkF�'9� �6�!8*Aml�����Sv^�"#�p�8S��X��f��U�>W`t+VԾ�^�g�;��]���\.J���\�7���266v\�˲8�i�*��J�c$����&�8B����\6�}�c*�� �<q��"N q�2�7!���p�=b����v�`���̎�E��!�IEND�B`�PKb��\k����-templates/hathor/images/menu/icon-16-user.pngnu�[����PNG IHDR�a�IDAT8���k\U�����s��ydd��&C�!Mmik�`*D�Ε�"(�H݈��]�������`U�R�H��Q�X�M�&����=?�QU��|]��@:�Ň?�/�\5.+�~|��K��g����i�v�� 6dB�x`*&26h���O�?��al�铝�/w|���"،�cL%Uk"{\� n0��PI��V+^���u7*o)u-\���C�@Q`�w�k/�~���3O.���D*`|�p�/�a�U�����ڟ�~;�~��c'�;'ε]y�M[o^�+�a�(V�"�3ٽ�SSђ�~�_-�� �Ʀ gf�z��F��� `��E[�^�MWVl���pD�s9 #3�I��Zϸ��ɨ�b nV?q�(����8�w�_�3�e����7�x�Q�ؐ Ў�X�1�P�W*�R�v&N�$���.Io��H1{�� ���G�fi��uP.��0Y�w�ٶ�T���h�}>jL�ʲ�Z�&�?��r�[���Wo�¡v����k�٨fK��E�E|����~�[����ݷ�D�|�q37��Cr�^!G�(P�,�2@���.�4��G���F̜�����} `��2��K�Z�qU=A� ���P�7DU���Z)6���IEND�B`�PKb��\Ը]�--2templates/hathor/images/menu/icon-16-nopreview.pngnu�[����PNG IHDR�a�IDATxڥ��jA����X �l,R��D!���`��ؘ"(X���IVqYQ��;;��b$����b��8s��w`����%�x^�x�0=��/Ohm����*���!��89��y��Y�a�4��a�(^h�.EQ����ه��\��Ux��f����^�]<��(�u�;�R*t�m�{<���]�}_�����^&��KB������tf�\��Fvɶm8�����Z�N`;C�IEND�B`�PKb��\����2templates/hathor/images/menu/icon-16-back-user.pngnu�[����PNG IHDR�a�IDAT8O���k\e�����5w��Đ�h����*��"�j��n"��"�T@\�v+�$+7 �+w��D�J*T��4miLl�1v2��s�w�וM��Y�QU�%������^���ӥ��F:���'NL��J�:<�^fǏ3>������a�/��z�����ӕ[�.l_�Z:���7�r����K��p���bG2(<ä���䇪��+��f�u �`�Z$��D����dL��G�}��ڇ��Å�+Ϣz�`b��Lד/���*����豋ˏ��ryb���敕o�u����� �7&f:�o���nq�f��k���蜭R맋~o�f� w\Q��W���E7t5[�(L$7�z�k�;��֘h�i�F���w��<�<���A�DV�'Y;�Q��97�uX�~��QW�:y�HPÆ�1�,�L�ʍt��<O�4I'�ڨ���L���̑����Ց�S�M^K�q��n�A�~",ݛ�/��'�8Y���3ߋ����JK�-��ovG��X^z�\��\@_#J#(�s�� #cc��_��������͂��ſt�,F B N�V�`�$��ͧ�g �z���w� 0�0�_��� ��sXD����*2��� �z�I�$a�IEND�B`�PKb��\g�j�EE3templates/hathor/images/menu/icon-16-newarticle.pngnu�[����PNG IHDR�aIDAT8�}�;o�P�v���G@bP���&L031����R6��303CG��Q�ĈD#A� �&�Ƥ��=W1��r����|����8� 2�f����"R+��� �z�e��0����n?. gDQA��)�� ��嫉�8�e�ɰ|�WY$H���<�L`���h4�����`�DrH2 �L���8-"!c��%���vy)�,/�Z����Q�Ӂmۜj�ʝ\�E��@�VC���H�R��5 �<:GQ���(���K�N��Y�4n��*��"��a�T+#�J��N@�}3�b�b��3"Ο�7�}E�gΕ�gP�C���2lh�H�%�_W6�o�A�^B�����/�Z��>z��/G�B_j��;�O�B4���E-�J�,��@[W�^��� �ˏ��v��sD�A���y�g�ٟt�">�@���R���D�>�gm�̝�1i3 Y�O��N�I"�1�ic����:%��(�G%�+�1������8���)IEND�B`�PKb��\�6��0templates/hathor/images/menu/icon-16-install.pngnu�[����PNG IHDR(-S�PLTEb��b��b��b��[��^��a��K��L��Y��@��U��V��f�m�u�}�#��(��-��2��7��8��;��<��>��?��?��@��B��C��D��E��H��J��L��M��N��O��P��P��Q��S��T��Z��\��]��m�����Ε���������������������������������B�o=tRNSPp�������%=a�IDAT��JA�3�ɒT���� ��/���X����w�i�H��ey�v�k�� n�>N�<��PUuX�ZU�ԇ�!� �� {����U��ҟG�2$Ю}!��;�MC����U?e���C�iH`�� vm6�]^a�Z�+����@�G|U��شIEND�B`�PKb��\��f���0templates/hathor/images/menu/icon-16-generic.pngnu�[����PNG IHDR(-S�PLTE̮s�������ˍ�Ύո{Ťc��Z��Q�Ӗȩj _غ{�dž��T�����������έj�՜���Ѳs�ɑ�Д����ȋ��H�������Äݾ}մs��Jλ�ε��ߢ��W�������͔�ޭĢ^��A�ߦ����Ɠ��������檙StRNS@��f�IDATx^��E�0Dј9̜2�/�خ��_>i&��'L�����4�[o�q]!����X�9_���P��b��/���2)-��hNd.��$Un�T�ք��3�q�̟n0BmkM{x���f4C�$}�4�P�U�)\����IEND�B`�PKb��\������<templates/hathor/images/menu/icon-16-read-privatemessage.pngnu�[����PNG IHDR�a�IDATx^��_HSQǿw����-7��!�Q$V ��"E�D����� \,�1�^D�z��cm��$��ġ���s�v�e"�����{��s�2[��Gh�� �E0�B�9|WWWs,[L���������4==��L�L�[1������ONN��|~��H$"�h�����Wy�j���`�����ۺ�(���z��n04�~|||��U�> ���MӐ- G�Ε���P5�D���.uww�0K(�˕�7��������"���g!r&� "��U���aE8�N/S�����͞V� �v�����& Tu�63Νp��j� QO��h�L�cV�4�f�I�u��p���g�wI��������~��w+�<���h\^^� �r+�0$Ҡ��f�+I}{%#s���)�cT�BC����~p}}}��iԦP(��yX% �!�}��=�����Pr1ÕX�lp�J��toEQt��Q.�u�I᠄4o��K�)%�a�Mm4��L&?S]��Ȳ�n�� �l�7~�Ioê��Q�(BSY� �����Ս4�R�P�����[ �Z��TY�_�C�SU�W�ԯq#�����F$���MLL���Kp��>}�6^�0�b�70z�t�:�kj%G�3K ����=����!c},IEND�B`�PKb��\�s�((0templates/hathor/images/menu/icon-16-newuser.pngnu�[����PNG IHDR�a�IDATx^��[he����d&�v�9u���OJ� ��EA� �*�"JA��B��QmB�ވ�bBoDI�A�'�" �C�HjK$$��ݙ�2��Ma�D�xo_D�_s�Υ#���ɳɕ�g��džn���|���~�;I�8٧T�}�̷ϝP��b�����=����i�n�Z�|�D._��0p(�t�KP���(��n����`ׯ���&$��tw�PKk��X�[�w�]�3_��^x����<����w����F��b�[�{��)%�5)���x6���>�e�Ao����^Bw��8I��� �Z�&�.o�BqQ�P�jH�]�Szp`����聱3kE����f~���Y��7$�R��ᬚ�T*Ғ�6����{�������Tz����������+-�� �5ԩ���x�UJ=��7}��)կÊ�TX {�t|�ש8Ʀ2���+b�/Q�ͳ������{��5��Feڣ�B�E�L~c��w@)ji/��I! ����T�4�t�� �T�l����7��M���.f�Fԛw�/��eL�����^#�o��oO��]�9���O������('�-�8�ܩ�E�_��7�%w���|&{ǧ�{��36UL���H����r%�0����3��T������@� �͎�g�Wxq�����_t��t��E�(�P� H�ej�u �6@��巣@�)��_��B D��&�$�?����-L�x?��SIEND�B`�PKb��\�DY��.templates/hathor/images/menu/icon-16-apply.pngnu�[����PNG IHDR�asIDATx����Ja�q/aV�騨���� �f.�m&h��F�VD�U��!,�������������P �w�������ρ�G.Ns���N���Jca)o#x�@Yz'~��3V�{8��)g�\����F�b���%�ҞR�)O#����6>G��z²Ԉ��7qr�M�,D�)m�����nۄZڍF��f�VnFX�ι��Ĥ�b�F(�S M���CH��Q�i'M��u��9(&ۏP<��ee�,�k*T�z4��x{���C���C�`)�`����aZi/Zq+��,: �������x iQ�ѡcID/���;4r���݆���o1v�G��]��p��^��C���ᴑBDR�IEND�B`�PKb��\:�j�MM/templates/hathor/images/menu/icon-16-module.pngnu�[����PNG IHDR�aIDATxڭ��JA���.�\B�U�ieҖ�n��짫�)�i�U�aK@Y�*p��6+��O�x�9� D2�ZCQ>��hw��G?M0} �Fw���7 +ʊ&ł�� %U���!ǘ<O1������a������7`���Z����H�n��y rY�e{�:\���l����B Q��&ҙ��X��l�m �@8�p�^A7X+��K f��DE5V8���E�r{t�G������K����v:K[;��+��$���A�jIEND�B`�PKb��\B�nn,templates/hathor/images/menu/icon-16-new.pngnu�[����PNG IHDR�a5IDATx�œDq�� D����*���@�Ю0��L()A�DJ���|K��s���=><�<6���+�n �w4���q˿��྄��Y�Y\k?�TG��ل/;�+�oVH�yc�N�{wP9��oKpO��� ���I�ݓI0c�]m�k{�rϧaW}D"zb��v��f�_�a47�~H���î6��Ph��kYr�؉�>�^���,1�{���Z�� M,�V���m� M,�V�?Q���,uJ��Чv��m1�]�I2v2_"�4o��9ê y( �1Ӟ�����/���IEND�B`�PKb��\$Mr)}}6templates/hathor/images/menu/icon-16-help-security.pngnu�[����PNG IHDR�aDIDATx^���KTQ��3^�F������Lmt�Z����,�U�(�ڴ,!�h����V�B*I�$ [��4���3:�sί���2T�����<�WIv���E�j=�Ϻ��.[�@�5�j��̽�$,����/�R��-m�Y�l ������}@A��Ձ ~֒IV^ĎD���j i��4�9��#�K+�sLM=��1�n\c3��{��9q��9�/oA�$W�a9��7Кɇ〠�1X�=�����p"k3�cQ�s����ߢT*��+��+��>�����^�&[���$�\E�A�s�d-�0����@g�� (��;��#A�/��0�ɓ��@�;,eA�$���Y&r����<X>@P��b�(lL{�YH���,,���G7��"B_|��p����|�"肛oӄz��4��A�v�p���CC���!��(0�9(�ëQ�g�ٽr�J[; DcQFn�&4�aܻ%�"�T\�����X�*��M�t�VX��Q(���L��mW���p�<�v��7��� �U2��l�D o����_#�gpG�g?IEND�B`�PKb��\ �.�mm3templates/hathor/images/menu/icon-16-help-trans.pngnu�[����PNG IHDR�a4IDATx^]�ˊ\e���99u���Ъ! ��N�D���"�}_��N3s�8��N�̀���(I �"�]�꺝�}߶�zҽa��f���*&���n��VZ-Ej5�uUԑU�[k��Q"��c�������h����B�.�͵kD٨$"o|��) Q�I���Ϥ.����Q2��r�3e�[͘-�5�l"/FϿH���ҹ_�U0�b���,�GȤ�9�%�K���8�XMU�;��#."����~ٔ���j�B�Shb�K��9�?3�c1�����Ӟ��Wje�r������қ�}���� �ȫ���G\}�;3����Ȧ�� �f�L:�[>ޗ�ސ�(9[K\h���C���x����.�`v�Z�Y�q���V�~kx��)%+Oj����{wU��[ᕷi3��.I�ӭ�lP#��F�ܢd=-��iXp�{���W뗞~��:(�B�5kɅ�*>=�dMA�HDF�$dJ���gO?�2#:��s��۔�|�7��!����l�L(G���������{�"�T�w�]���,�ry&�����3�H�IEND�B`�PKb��\Q��}}/templates/hathor/images/menu/icon-16-banner.pngnu�[����PNG IHDR�aDIDATxڥ�QHSQ�*(����E�Il�6�V�M5�K۔V�DD 3!:�h�e"4W�H���[�]v�2��TtM��k��&I���}*�+����5�k%|�p�IiKX�6�l��nn߁�$a��gn�Π�O�cn���& �nx& �> ��B�k"����J}��\�����Wk�p���mC�q\����6^�d3���d�XB���f�菡'��D՞IX�����*�Xd�]�8sf�6>b�+��N� �^����J��w���_#���Esq�68�H�-����fP5E�`W��q�lA�ɲ@f�6Y6�wQ��t�69���ˏ��j�B(*= �V��T���MY��Ǭ�S?��9?�ʱ4�pE�aH\F^Q�H+T(.6��_��X�O��Ċ��0�� �d��mn?����#����6S�����yÿ�?�h�ξ�r�߰�l.=-��F����2�}Fy{9�n�CV��&i8�V��C5P��5�MlgX��f�՚�R(�4�4u#�9;-ߏs��r���{�%DP�W����=OD��E�h��A��oM�pIEND�B`�PKb��\�[�g��.templates/hathor/images/menu/icon-16-purge.pngnu�[����PNG IHDR�a�IDATxڥ��J�P�{�=��� ��Q�Ҭ�,���M!�}*��J%UPeX!�0��{�l�y�+��j������{v���n�����<H/¶hqh!��RT��r�i,0Wh9�����<�"��#?��bD��(��#�`�9R�-EZ��^���,c܇%�!��\ks��*$�0:\�2�MH���\ѯf1k�{��ˠL.��B������)��OKN�d'�d',r_o��9ź�/A�$�֎�jG�(4�tj�>h���v���$K�|H>a�?�}�@��0I�d��7�]/�����? N�(c�m�W�80�b�㰨�8A��4՝pz���&��&C�=��5�[(Xg\����}�_z_������6ϵ�D7_�wJ/�v���;���.�-�ø>0>��'��9� ?AZIEND�B`�PKb��\�6_sdd/templates/hathor/images/menu/icon-16-themes.pngnu�[����PNG IHDR�a+IDATxڥ��J�P�]�� |�>�K�Ý �J@w�ƥLZ�J�Ӥ�Z�*�Y2v&N��TR |������Bl7�%�! ��A�o�����}�$+��� �Z\7 Y�v�r[�K�+:}�}̬���Y��ZO��4M�<�+�}Ϩ��KdY�aI�!Zr,��J�m���4M� p��+Yķ���e\� VI�V�$ DQ�a/��8��/F`�����L)�E�Ղ�P�\=,hA>=��7eK*#c�S��z{�]���l����8l�Xr�!���+%��IEND�B`�PKb��\�W��/templates/hathor/images/menu/icon-16-config.pngnu�[����PNG IHDR�a�IDATxڥ�}HSa���3�:7u,�TC�V���Jg#�) ���s*��Ofb�i��9��H��4@0(�4"��*,S#�I�4���<?8�64k`������{9�UU��r�ı�a��Le����Ac�+E*_����Š�gl�u���Ci��7Tti�rN.�ǿL���E߾O�HIT���^"8+pg��a��> �z�-�]�����̈́��ՅR��d����<E�����W�}�iE��� �JG/�#O{��2V�*q����b��|.�e���CD��3!W�GE��/��G�iRR�:p ItF@����R�hpq���f/��[���4�F3#��"�E '�@DڵF℘�"yB� ���%�Q[Wg�_���k��Z~O�"2Q�ȓ��}���I�V���? 6?�Ƕ�^� bCl)���4�Pe#2)wiVìMu����ఊ�"�%m혰�!x�a�mAb�#ukL�zs-�D0������v��w���3O�]�^f�$O��� e�*���ICl�)�Z=a����^_q�r��8=4<��e�#S*�IM�;� ����%%*�)Z�ns�0������<��'���`VZ=��%G���hi�`���b�cc��áK9��>�"Y��a��@;ң�d��`��↿�o�`f`P�}=IEND�B`�PKb��\[�e�EE.templates/hathor/images/menu/icon-16-alert.pngnu�[����PNG IHDR�aIDATxڥ��kAŕ����4��TO�6�CE��6�D�u��{�s�ͫ�C����GhS���FQ+��%R؊E�5�)<�;�a��u���7o������+�'�e\>|W�����zv�ǥ�����,؎�!����P�a��?�z�(���KF����;�ɏ�X�,Ft� 9,��v������KҞ���W�?���)�l+��"s�}����(�٣���հC�dX�-�W�E.ȉ'�b��;�a.? \�7��?Q��/�-^��%R�"�P��|��jI��u��ݼ��y�a�4�_li{Ζ�Ì�#'�HD�B�ghϼ(���m�>�b1ΫN ��GpG�4�%�l��a�f.â�h��6eL��~Ԗy�Bi #'|<���HZ��uҎ��8n*���1CA�S�ӡL�O 3G�K�KCE�T�ט��G9VڞZ�`��<-~ҭ"IEi�����b�Ҿg��VwA��tX{�5�O�M����5�r*�ߡ,��6��z�^� �IEND�B`�PKb��\�̗�66-templates/hathor/images/menu/icon-16-move.pngnu�[����PNG IHDR�a�IDAT8�c���?%�a�@��r@,ĜHr�P19�F���%��9"�-~�h���I�H����1����J�E�V����^����@1[ V�b[�H����7Ʌ3���;���0�t���S�ܘ.|�Al����^�w��^�Z'���q�4�;��I� =`�à\`����?~�����F�P� � �� $�����r,D�qF>�'������ɁԠ�U����cD��CIEND�B`�PKb��\��1templates/hathor/images/menu/icon-16-redirect.pngnu�[����PNG IHDR�aaIDATx�c���?E���`��A�-8���$� �����f��" [@��xH�h���V�no����O�W�=���4�l��ڵ��b������ԁ �]@|U�z�q��PCT�4K�O��u�y�W��q5H/HR�٠���-)h���!P͜P16tE �r�L3�ug�<x *����@|���S�:�A��R��@�0�����ع��Tˎ��(�b(�!H�J���2�;A n���@�T�n�M`b���6`8JW�Wj*@a0��6l�� �O�,�K�s-���Aq�'�@jـH� P�H���@����'�\�?�^ IEND�B`�PKb��\�&'cc6templates/hathor/images/menu/icon-16-banner-client.pngnu�[����PNG IHDR�a*IDAT8�c���?%��f|�$'�{�W��i �'ɀǵ����*�2[��U���'u��q2��<��V��:��-1<b�hY��l���8�\���� ��9���|�(��_�ERD�e|� ��_v�=(9]��,1���T�����A�@��|�u� ��K�f�B��G���\��A|���v��0�p�t�:�t|�]���V�Ozu�c���E������ܭ�v�b��$��?�n��l �c��E�_���ƅA� u@�z�f&b1�¬�=���IEND�B`�PKb��\��51templates/hathor/images/menu/icon-16-newgroup.pngnu�[����PNG IHDR�a�IDATx^u�h�u�?�}��ݻw�y�[��pZC�H�� *��T�B�@t�_)HK6E�mz��s,���L�"�٦{��{��ڷs������<���Q^�@S��`����=v��@85#�ŐRr�1�%x����Y�>����x2������Q�4pɁ1�e�;�96>�L.x_)����V1������W���K&�]���U���Xk�:88�7Q��Y��T���;�+Se1����q�:n=^�Y�GFFlX�дj�5 ��H�����?����ʩP��*}}}m�c5��M��8Jf������>LQ[��f"�m�K�Րo��l{�k���҅���<�b����\������p�դ5,311A&�i�\וkgϰ��1�+ ��D��٢���Yz�H)Berrr�ٽK0gdsh��Q�h��Ʊ,���0Kܨ��B�0�����+�A�@��1mG8���_���f�����H��v��>��,<ϛf4 S:�}��;�����$?k��3h��\Q���)�vo"b��@%�T�P����#"�R KC( �I�=Uu�@|@��ɧ':V������%�,Һ��z-RBJ)yaww�V�L�|�ڲ�"���)�Ţ��'�C_|�y��O(�1������z{{����o���i4@P�X���:��7ƧIEND�B`�PKb��\T�3�;;-templates/hathor/images/menu/icon-16-info.pngnu�[����PNG IHDR�aIDATxڥ��Rq�_�����.�K�����k)� �4A� ��)i0G�� F�\�d�@e���g�v��dG�3��}��y�+΅3@.�a�_>��L�=(+��~Br?�-�ɶ �w��k�/Xhi�mwe� Y<��܀;�5�p���94�I��_0�?Ȃ��Ӕ�9Մ�TW���[Oc��w�@�4NӘ�C� �s���>CT�߳u��3M�*�j@�:L֠����=z�W�3mM� S��*xX�L|u�W�/6`�P�X'�!�*��`F�?���ݏ�����{న�m���Upۤ�ÍmHh ��)��&p��wL��C�M��e�R[�G���Kȵ WW�܁*_�J�-$�rez�朿Q�w���W�����U�*�K�Ƒd8���yx��Qs}��Ͻ�/q$S��U�� C���/@�-A.>�f���u�+B.? ���I��y��!�,)b@�)����>�_P3��p2/����S] $j���&�a�bs�IEND�B`�PKb��\O��i��.templates/hathor/images/menu/icon-16-print.pngnu�[����PNG IHDR�a�IDATx���a+�q/�+�V*O)�***�R0ب@�H)�9��m�( �d4l�v�ܱ;[�\�٦�[91K�J�y��[���O�a`mIGҗNp��۰�_����5�nX6���9V&>89<���ȯbn� ��p@U��9`$WS��I�h\�4�Y� VWV�nT�$oL&}×�(>//b� �P)k4�Ucp�?�y~~��r���{�����w��.9�0X��մ&5��w��9 >|P��$5�� �����x���x�9^_C�,+AK�⋎"�rr��֎�=XO�c���eW\��agg���&��\�My�K�QU� Ezf��`"��up[!��(�́@^�������EQ�i:vu��$�D"@�x�7�j�vo�^nIEND�B`�PKb��\�0� 1templates/hathor/images/menu/icon-16-help-jrd.pngnu�[����PNG IHDR�a�IDATx^}�=kQ��f�5+J�@C@0����`���@���/(�X���h!ZXi!A�XE ���fY����0Z��s����{|?tAQ)�����.D��E {�y��.�<i� �b�nD1*�l�=A��� ͠�� �F��t��m9O�#9�3���<�xx�����e��u�g`nNx���c�=P��=��U@�վgo��+v�� �+�f]�g[:UA��")�@�!l�IA3���.�0�ބ�N~�}����t`�>����2���k:}"ul}��WA����[�v���g�\�/B�5�=h�����|��A�w�Y��̽�彺 �|���<��q�ML[�/�~F_�,�k5��L����3����98|����@��B�7(���& ��yi�za �q��AF�Qh�u���*�]�¿�NS�����p�I��IEND�B`�PKb��\�G�6templates/hathor/images/menu/icon-16-banner-tracks.pngnu�[����PNG IHDR�a�IDAT8�c���?2666>��8]�H����H�7{�C|Ӯ�������W��+ ƀ��fK;7^=?���{�����m ĺ���8�?�c�9�����?d���+:$�;���� �mZ�����6_�G �X�*o~�o����w�����ص�����w�5�jN@�w�w�����s���_j�.�'������3� �4��b�ϑ/�����ϱ�����떶�,���c��������MC�l+��X}�?�����&��n��tΪ��n�~����0`Z�N ����?�o���ѥ���R� ���Z��Q�Qx�1G��{��s�=���c��V.�����P0]��a��#���Nǚ����8kBZ�y���֟Ǣ�J Nbm�)q��u {����_��v������w�~?e֜�h��ߏ�J0��3H$���IEND�B`�PKb��\�w��;;1templates/hathor/images/menu/icon-16-calendar.pngnu�[����PNG IHDR�aIDATxڥ�Qk�P�w�"����+��+��)ʀ:խ�E�)��H�*7��m�n:��ɺ��%ں63s� ���Z-��5�;� �xr����CrZ�t;�Z�w���a�.�k��N·8�By��4��n_� :�M�h�؛U�jΉ��������t mc���Űk(���c��j}�2lt'����PlnFτ�= �j\�~�B^�N�`��H1�? ea~1��&����4 k���,a�?��V��a|7qR��\��=�ޘ����DlQG�_.���Z���j��bw7�|�R�y��E���z�T*qA�Rcs� BY�Py��Ԭ�K���킇D�~�X��4�;�!���l��;/�k%3չ=!Sq�� en����� �&�vg��y&#���r\��+`������]�^�4�v?�z�}�����b:�ik`������������}�8�#��R*�s�$Ȳ�x<��D���U �"$IZ3��|t��K�!�hY4IEND�B`�PKb��\d6���1templates/hathor/images/menu/icon-16-help-jed.pngnu�[����PNG IHDR�a�IDAT8�}�MJA�� ��AP\�^p#��A�� <��ō�# J�A�f2������N��D�*�z��{H��\�l"L���E�����bq���z�}�ɀ���� ���;(���ɇ3�,o��d1�_L�(0jL��Z��@4|�S��U{R�<�7P��>@� �3�(�� ���.!��WP�(\�"��;�p}�g�Lf�ǭ���@�S�>O ����y6T j����=I0�7$�X��!�B�� �� ��X����K�N�%�JY�w���"|ރ�[:-���U�k��r�x�)�q�FU}����xU%W ��u�� ���6�}S�b�#̨aI��ٺ� t'���'h� W�kf����f���8��IEND�B`�PKb��\�y/]]2templates/hathor/images/menu/icon-16-frontpage.pngnu�[����PNG IHDR�a$IDATx^m�Q�Q��93����U���*kIJ� Q�?��A����n��E����ꮫ�� �����Q�1e���qf�:0�|��q��w����@ �V�eE�S�(:�B����<]�����X,v��+g��dYF���L&os���8em�X�$H��_�F#���M*y����� ���fX��B^ �Oy��8�v�^��r�^�_�V�lS���p8dd�Y��f(���rn���� 4MC>�G�TB*�B�\ƭӻPU���0�@��B��`0���h�=��rg�����F�)��4���`GǙ�/W���%��7O� ��'@�����o�`T8{g�S�O`�6B��P��%VA v�H�2������x�O�;0�X��Z˹���u�߮� �t�9�b��8��� +x���K4Ms:���k҅Cd0�9ca"�7�*�6C�r�r��s��=�eƘT5���ԇ��Z�x�nL�i7M�]����^����On��|�x��1�h�Wpm���IEND�B`�PKb��\yw�0templates/hathor/images/menu/icon-16-archive.pngnu�[����PNG IHDR�a�IDATx^���jQ���;i����IW_��K>G�B�@P� LH�HfYP�I4QDf!$bɴ63���ҩs�����af�s��83\J�JT����q�u]'Y*�����'��^'�d�j��۶���������v2���p�����L���Z�v_��.E�/_���j�Ð������0pΑ�lq�̐��N'�!�CVσ��uӊ��f��x�hܓ)2kPٮ��fn{Z���~���B%X`˲�{-��yt�c�;���ْ�4M���?��b��^��F�"�Ūl���@6+�(BL���u�?�Ng���"ѿ��e�J%լ<9���y�8g��\F}���8B�U�����z��f�ԨU��Mx����eQ��U�H7�����7�q�����%��"�F�@�XT����qu�,k���@�o���d�GF�j`��b�etu6�%�v�!��_��h��3IEND�B`�PKb��\P>LL1templates/hathor/images/menu/icon-16-download.pngnu�[����PNG IHDR�aIDATxڥ��N�p��ڵ�%�%p \�.�K� @��̌��2�'L�A��#so(��4�d3h�f�)����Y�?�$OӜ�;��7ε|�M�p�U>z����q�S^x��@�C��R�hi[A�3��~��ʇp��p��@�6y%����'�Q�����_��PV��J��dB����&��-^�gͩ��v�xt��+��m��IO�����i�9���%vѼ�+P2� �;�D`fݞg�<f�_�{����.D�t�[�J�i�ì<��^�<Cb���ӛ��P�}Hc�f)cH�)�؆{��1�3�ìD%�$?B�zy 튁���!�=b�����5�u&b��~�m�!���]��c�=ـ#��b!�S��*�e����4�v��7(|���Ԡ&���@ߟ��J ��3zJ"����1D��#K�I�"|� 8C���ь��sU�e�1�P�ʖ� �#yx'��8�:�mָF�/�cz�1ߍ�a�L����A�l���j��+��IEND�B`�PKb��\�iڿ""2templates/hathor/images/menu/icon-16-links-cat.pngnu�[����PNG IHDR�a�IDATxڕ��KSq���̮$00o �MP����n��X�t#(x�Ո�FҚY�Ʀs6ssM(Z��2h��'sn�s��0�n���,�:l�|���>���!� �j�(5Kɬ�����G蚱L��w�>�3�z�\��$�zd��nr� ^�U�ZC8�O�Z��Sm^6�cZ�PaK�lj�ְ�g�&�\�\"���� ��S�/�:�)�W94�Y�տ��W�/��M��MUUqL�2�����t}Et���QV�E3�V�q�?��s��~���p�Q�|@U�,��!��R�#� �{!��y]��m���c�\cI��'���0�9�`��0��w��O��o�k�������^M��ݝ�u�S7�~�BV�!]�<ۖ��[�p�0�װo�5m����z��^�Xp�5R)���c f^��Rr߫p�j�h�b����Ϙu�Uw��P���|�?�m����IEND�B`�PKb��\�y'(##1templates/hathor/images/menu/icon-16-contacts.pngnu�[����PNG IHDR�a�IDAT8m�KlTU��w�w��� ��V(Zpt�c�B�@1�*ƍ�c�)���a�e��c"F���@jjP�b+N�>,۩�L�q����Ɵ�*��ݪ��g�D#E"`"�(�A\���Y���?��,��}�eD�B��2�#.�W�.@T$$Y�ӏ|I�މK����O���(Myj�4@��#@#&F�@�v��Wyh��;+vC���Ju��P�Pnp�ze��9%I-Yi`�h��d�Ϝz�@����2�~����/�0Ю��v;1�ϷYbpƀ_W��l��� ]�N����J��{����$Ʊ��:L�q �n.�8z���w�mD�cm�������5%2�<����{Gm �\8{���Y�}\@B�Xat~I,Ib8~q��R����K�.S��l)���#q�9L�s�_.�x�"�7��W�l���IT92���8yp�v�AE1*D��\��N�3[�����z�7�D.|}���F~�2�~�?7�o8��(��dvMƇ��q�|��#����t���~��w����{�/�JZcav��{0h巹:��`r�I��*-�\Q��AIbD����F�(X�5)4����a��\g����c?��t_�d�O���|"X��p��r���6,W�������~���������Lڷn$?o>0�<���t���ɛH ���r��{��z����?!b$p�9IEND�B`�PKb��\iE�hh;templates/hathor/images/menu/icon-16-new-privatemessage.pngnu�[����PNG IHDR�a/IDAT8�œ;�a�g�_6�\�a!�Kr*�_���p�AKA�������&�p���W�*�Xȁ� �b���p�!��dٷ��m��p���~��7��Y�}8�E�Ɯ��"1�}<�Qd�L�%�$���j�f�y�X,^�F�d2� �B&�N�����V��c Z���������d�\*���I蜨7M����}�[��h<��4�X�O=�h\>�?�G<2G�,�ˀ�j$�LV%x�y&�C#r����H%3�N���+��I�4�ZQ��sH$����W?T�T4�5Y�gg�i�9�$I�V�A�X,t��fA�u�7���G�>��H�G�Mֹ��u�%�(N\�˲��T*<�,�>�V@q�� h��Í��I��F_������I��N=-Z�τ�����.�ؖHz�ށm�@UUa�XP��l*��`6��c�r��~X�.��P����+�`�%i���z���nw�C�����nߜ|�_�y�m ��$o��u��v��Fµe�`�ʊo �p�-d������ p�eSIEND�B`�PKb��\��]��/templates/hathor/images/menu/icon-16-search.pngnu�[����PNG IHDR�a�IDATxڥ��n�Pp���a��G�(�`�@|�hHE1b�f�v5��bR�Y��e����e��?9��˹���j����3��7������ؓo@�X�z}4�kԆ+(� �U�-���=��5��s�����u��4MV|Y@���M, 3���|�\�Y���k�G:F� � `�i��z�-{��T����@�yb������l� aAG��oo��\�����퀓j����'���3�Q{z�?C(:�}FB�TL�D���M�Z:�f�X�p8��v���^�o�AE�CÅx<n!��8�/�.�R)GӉD"��-��_@�RqJ��h�L&�Dus� ��,ˮr�� �R�A��(���Q�^@���| ��G��IEND�B`�PKb��\� c-��-templates/hathor/images/menu/icon-16-deny.pngnu�[����PNG IHDR�a�IDATxڥ�Q+Q�ɻ��sgYZ�ȳ�;IX�xRɓ��*��7@�Ӳ�� 틍�@ J[Ci�g��ȩ_��=�����"��W�DO�z+� ��* ��!������ �ڋ���졫$:J��!ӛ���Y��V�D�;V{1�ܶ<���E���� A�[8z�-D�ܶ!��� A���lT��j� �[�5��w�B`60�g�.^�3�)g�N��S|����Z�2<�_� +v*�N�!80 �����9�mCZ���ԥ��lR�q!�p�/j�X�N�jR*۲B���LP.Ϻ�!.OD�%MƂ�2P��;�e��p6��*U9oNSF�:�B�a�+��%�j�e�!�+� ڽ�T��ͨ�d@Sv�b5f�+:��F��{���n2��qIEND�B`�PKb��\� ���1templates/hathor/images/menu/icon-16-massmail.pngnu�[����PNG IHDR�a�IDATx^��QKSq���n�M]̜Ͷ B nht]�i��Ux�v�� ��ؕ�t dB $f���X�9����v���Ыz��{���y߿433�@��'<@�rR�S%�z'��p�D�����4����� ��q��A�VL�H�Z��nk�"=�D�n7�$�9 u�Y\���'��q�~C�]�:X?b~cN`UU�4��6ȥ \:��9�z�FFF&C��joo�\.�����;t�7tw�cq��rZB�9p8�����F[�Z�,��~Έ�Ow�\�0�&P�c�(rE���Ӊ�?H �����|���Q�\���@:(��R��־��"-�J1�l�s�`ُ ��0����]�|-�à�u_����flMMd�Y���S@�Q�T�4���ZAv�AӰw�s�_F�|���+4�,[�~����x^Yy|�T&��R���Z���@P+��l[w��깹�߀��,},ty9+�7��jEG�Ǒ�oa�D�T:4W���� �J%�fڢo;��TUUW�Ń�k`;�u�fc��t�{"��1W��X��*@����i�MF��B�� ������<�P�`����N�H@ ��+���B/j�IEND�B`�PKb��\�;�<mm3templates/hathor/images/menu/icon-16-notdefault.pngnu�[����PNG IHDR�a4IDATxڝS�k�`ue[a��tl��� e|Ya0:�q�o}�SFh�-XQ7�ڥUB��P��--:T[l��A���` N�2�ݗ�_03�]�$\r�=�;_z�a�y<��E���S6� ���y�g����� ��b�xzf�����qV�~����c��?����W�Q�%���)4![~l���Gi�Я2��c�j�J�DYA�$P��!� �^<�A�>u��?固`p��7�J �<�f:�6t�]��@�e�Q�^_��E��vR;l������D����P���A$b�'��S4;j5�5r��ͻ�G~����}�M�����"J� �,(�>k| ��N*(�k�;G�eP���t�R5��!� ���tpRΕ�W�h`�� m�$�K��ÿF� re�-��U���45��</<v=�vѽ�L3e���RI�${��tdY�����$��᷒��/�b��Z�ZW��������� [�����K` ZG]�ku���?��,�{���0�@ӄid�<fԳh7�̦�3��˿Ͽ��XI��IEND�B`�PKb��\��\A��/templates/hathor/images/menu/icon-16-notice.pngnu�[����PNG IHDR�a�IDATxڥ��Ja��83[u�+�}����W� q���&4@��1UۊT��Ġim�� j�� @���N�7���Ǚ{�Å�O<�'E凴T2K����C������"%v��5iÆ�9��wA��`����$�:�Ui|�(�X���&8�Ns �.��V_YR��e>� ������}_ɜ��$�4��-�^�G�5��M��?�A��xTYӯ���Y�sƕ��4`{�� @��� ��h�j@6ک[��a�����xD�ͨ�C6�CMX~�&�R���6�SjV��q�� 7"(�s�)�& �¸���nq�}��� N���Yp�D}a@&� &Pqv��B~��h�>�Kګ����S�M1�<<p��U�#J��)�! � �nw��`�`;��{�ì{���&�ֻ���gh����IEND�B`�PKb��\����^^.templates/hathor/images/menu/icon-16-media.pngnu�[����PNG IHDR�a%IDATx^��݊�@�ߙ$��i��E]a�� l�.T@��z�gz� �+��7Ћ��R�P�X�PAE���6i����c�6�g���N�|?�f"��1�G&��f�)�ɞ�J�N�y �� d����V�u�R�l9�s�T*횦YB$D�AV�"J�Ng���(��u�|�0ض�B���ރ߱\�}K��L��z�e��x��"�(b����@�x�܃q�H�l"u۲�-jI���kXz�s�8�zA~yye?�����t������`�9���`�\̠�F�XD�{f:٘ �`)���,ׁ�3vx��)�&.���(����(��Ic�L(�,O���\9EM&��<4��*��|��Z�v��o�/A�:�zߔR�JC�v�0_}���Oȳ��3�F���Y��>��an��oS� hbY�FDU�p'�������H3�bV{J<��{r�<[>���������;B��U0��B'B �`IxZk�g��:�p�3ص���G���]��� �C\��F�ѻ�p�%���`�8��V��r�_4:��pWIEND�B`�PKb��\ _�Ď�"templates/hathor/images/j_logo.pngnu�[����PNG IHDR��=9sRGB��� pHYs��%iTXtXML:com.adobe.xmp<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.4.0"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/"> <tiff:ResolutionUnit>2</tiff:ResolutionUnit> <tiff:Compression>5</tiff:Compression> <tiff:XResolution>72</tiff:XResolution> <tiff:Orientation>1</tiff:Orientation> <tiff:YResolution>72</tiff:YResolution> <exif:PixelXDimension>135</exif:PixelXDimension> <exif:ColorSpace>1</exif:ColorSpace> <exif:PixelYDimension>25</exif:PixelYDimension> <dc:subject> <rdf:Seq/> </dc:subject> <xmp:ModifyDate>2015:03:15 13:03:38</xmp:ModifyDate> <xmp:CreatorTool>Pixelmator 3.3.1</xmp:CreatorTool> </rdf:Description> </rdf:RDF> </x:xmpmeta> rł IDATh�X l\���x���]��$1�T JR���� g1�%�Z ��B-*�PQAIzԊr�"� ��@BD�$�5W����ر�cw�zwߛ��sp�@��l�jG���g�7�|��@���#�G �@�<y��8��\�ݸ1́�0�t��՛�l�b#��c�C�}�e���бt�|:��H���ߏ.9'ǝo\|�a�('�R�>i�"�b2�,���pQ�R�M�<h���H-�� G��Ǻ����28�0� �����M��6�|V:�c�ç�A۔V���Y�[���3�]1�P�$b�����v'�/�]�z��>�}�p�B+�N�H$�Ū>V�\����6��:�ihh`��`F�O�6�����v3��s5�q��C�"+>��J�5�]s�z��f���; '�&��h7�_PW5p��(%/xIo�xsJf�D5Z ����.W�y<E!�555����o��7W��4e���Y�y����:���.��X^�ڳB�[���e��y�ug_њYېP�L�}C�3��dA��i����Q��^r]s�x/�^����8^�\�G)��\f۶y�cr �q�,�R5��J���h��j�G��ױ��8�5V(��]-Ca�X�Xُ����TݕY�U~�����K�}�82(4&�萰L�>�,))��5�U.���vF���~d�;o�4���L�d²һ#�w��Vuu��,�Re-KUII�Z�Ns��O#{��9���1�;3�F�3xǦM��F����䟗pMx�`0A)�G��o�֮͛�u�����Y}z;�>�u���U��#�r�H�\݇�~��w��3� ��W��ܷ(��R0�tU�{vx������b��XPY��~��w^n�q�{�v�� tp��� z-�~h����RB9����d���ͩj.8��ϕh �)h�Yu"������v�7Q���n����4hRI4�H꽚�iD���M���8�s?�u[7�컱��b����X/B��RʒJ� P�6t��@D�<����jj�lqc�իW�c}��zJ����m���?|���g���7֕�1�y~^|�(,�(��9��m�D��y��MV��/8fz8��Td(���U��y��K�w8�>��sPY�J����}� j/�bYr��g}�����f��+e�%�`#!b�V�ɳ̖ލBp�X���m�������|M�ai�7>��H�������-Vj��f$�-�zD!a*���z�3BعH`��>����~۩ �;�)!���o�ί�xǟ�Ԏ�ضI�l��b��7 �v��/��O�O7��u��ق�ŝy�B�)�W!��m1�tS�i�^C�_���-��o�J���-v��-�k�>�_[[{z��P%b���1��65m������wA���=�g}�x�-Tަ�>j�&�6M�F+U��e���D��Ҷ�ϙ�(�ىݒ֎��G��9嬚���B��M�F�)�v-Ye��#&���=�V���g��q�[�Ɯu7��� �!u扠��z^P�1��A�ؗ����wG���@�X�`�����FI���1v� Q����KXb{�9ܢ��(�`rVYɎ�E�` B1��ai ����ffm���)Q��i�d�u���i=�~�W-+59�Z��UP�Ӳ�ܮO��ݱ)�0ӱ�)�T���P��lu����|�` U�:Z|~(Fǡ��E�h�P�o�Լ% ��$�E�.1�)���&/�w�@�~e|2��/���t?�3��t��R$�z��W�3,��- b��&IM0;�.1 T�*�[��f�5�Մ_):%��>&%P������$$a������J9nP���d����ǜ����>��ju�������S�7%�<��Ϟo_��scK��#ʴ��`�,��h1z�x1}`��@`�)D�,�ř�1��`��O�}!�9�潏|X�Jr��1ps�)\Fҍ+���7_1����/�_H8]L���;�����D|�g}��t3ɿI3�֥=M�n0_cL�z�>��Lm!���xW�l�<������Kp.��>�)F�I�D���#);��I�B�� �<�n�j_�'}��Vl�f���"�BQ�)�Қ�.[�U�����=7h�3 ��-d:p Y�w�:w�+;�1M��p�)(��9��y�N�������vw�?)���p�t6���ͳgח[�t���ɠ�Ě�^�/ܓW<�(�3gN���MQL?��몬�8|�p8\�A0-,DMQ�oذ���d���Z6-TJ�Sc��H8<0�������LUUO&�%<�֮}���S�k�����o�C�t�ܟ���V�'���t���{l��TM�Ќ� JK-��c۳�����3o%/}�u$���@�� M���bה���g'�,\�r��o.�lmo݃�Gb�S��Dߋ������T�q��5�@�<y���#�G ���;��Ix���IEND�B`�PKb��\@H�7%%#templates/hathor/images/bg-menu.gifnu�[���GIF87a����,���;PKb��\Е�cjj(templates/hathor/images/notice-alert.pngnu�[����PNG IHDRV�g1IDATx�͖YOa���]fi�.l�*t��STd��.�����xa��IE�q p�ELHM�m#m^�|�[���q�'盙s��K&i�u�9�����#BD�z[q�� �7]���@W pܾ���������8:*���.m5qh/����n��@G�*hC��m�=6m�͆�6���z��Xp�h6��V��i��2"9K�4�_۬�Tg5R�eH5��m0E�m��"9I?7�'�B�Xj0ɗ:�X�To�V��P^l��b�ᯡ,,���ć=�U�~��-�X�{�X�#�&J�u8�4�K�N6�A��Nī��9E���`��i�ͮ�|όg����. Ts=>>�D�W2v/iV�`ԗ,�:��!}��7 ��>= ��쏬:�A�=җ~�y���d���Z���>ҙv,e����jiܣA:�� ����,�q?��3��Ԑ��s�N"9:�Dn����0�N�"�,�g�I�8���T��I� y}�<$��4�Xf�ǯ�C�I�&2�@�xз��f��ː�94�1��17�Q��(<�Iu��ut���a���H�C.=�ڿb�#`�g`��VYSz_���9yLP�=YW�]"�X��F���6 �{�"��pK�)��▷�n:xPV����r:9���cN 7+�,�� ��q��1�F���fvO�1�ޖ�)j�{�v��2�)��V��oe�+\���g�}�r���^Y0t�hm�k��.:���.�e�5 {vA6�zTj�pQνgk��Z1r�V'� z��n���O���o;<�pe�.IEND�B`�PKb��\�ZSrr!templates/hathor/images/arrow.pngnu�[����PNG IHDR�(F�PLTE���U��~tRNS@��fIDAT[c`� �@3�h�,�,&C�Ԁxt�IEND�B`�PKb��\Y�$\\'templates/hathor/images/notice-info.pngnu�[����PNG IHDRV�g#IDATx^��_�Te����9�/͉$�"7M��n� �`W,\j$"����(V�p�"'�2h����(Ue���Z8�;s��7w����E��������}�0|�g7�ȅPA�L7�Pg��ߋ~r�R������)BbB�6��fybc��E?��8�o�\�PR�3H�7��/{�\D�$j̥�0��콧vkяΔ{CW�dS�F�`I���My���s}v���K�E���v������Ӄ����qR�� 5:0��F����t:z������q=?=�$�H��B�t��,aJ��Y���2�Z����jU�:}�}�k�N�&ܫ�)dY���;�����w����= B� ������3[K'}��R/V�K20��*�}9��gA\;F�`�HM�R�VƗF�F�t�z��zHF��fp�*@��hQ�� �@��ߞ��۾���D)�Ҕ�>�Ȟ�)�[E�]|C|5P�#�m�w�-�xQ�W<�씣���L�/\���vr��ėg��8��5���V���_�@�0���#{ W�� x��Q t��� ��Y���֒��<G<3=�`ƲL@����"3HF��E���E�u~�EdŨ*+R�ȖՔ�#rS'� >S��GNʩ���������AԷ�j��@\0i�8w#Z��W 2Fv�#7����QH$�DP/�4�R����-]펵��{��N���@S",�:�T��1�Hcit��8y�h���U�5��g�z�� 99s��S���n�PA���Ctqt�dl>�g �p�����ИoҭZ������g/����yBz]F3�Mj��X}���U��mQ�|�I�Y��Nڲ��|�c?�g���4R�:G��Q ̶2���ןlG��t�p �D!fF�+i�A=����R�(p�7c.�0h n�7F㛿#��^����z�����Tɉ���v���1���ӷ~<�Ny!T���p�𪤪x5��!�~~���{��*���e:�Cu�O�:�����.k) IEND�B`�PKb��\�� , 0templates/hathor/images/header/icon-48-alert.pngnu�[����PNG IHDR00W���IDATx�� l���e+�]�6��8Gs�Wlqn�@B�A���6���;;��1�i�e�i�M�P�椤 �I҄��hd]3�Z��w���S�.����&�I����~�{�G��?�0^z�{��ϭ�Ѹvy߹U�N�X�{l���lݸ�����OL.�Tg�9��Y��&X�12��gs��g`�s�ֵ����3����<`�x�+�%ς s��b��I��O/�cN2P5X�K�M#�WP�܈-���30P��K�)�+��JY���Z����s�خA�&�~`^��mݹ��эnKr���@ ��u��I�������� ��ն&�_~]e�1T�ý��F�/50 v�aڬ�u_����\]d�\�PL(�� *H�˵�0X��w�"T����LU>*I�SI>R���c�w��b5�K�����B�0*�:��ޥ�e��8[�L�k��3�ݚOϭ��.ہ�,`~���d������[�$���0�Sѱ�p� �ر�s��֘��᪙�8 �X�qػ�����-��;d�v���k}��lUh��dܡ�*�/M�S����Z��$8̌�K]�ґ�D@�ul ���kQ����]^3/Qh�q�j�?�j"�ۮ�;o��5�[��.��^9՞���% `^� ���k�n�H��ߢ��8?[�3�َp�yi!=��>���@i�p�<E�Pm��rn�hq�H1W Uh��7��E�<j'�fe��y�(�w�Y�x߭&RW���Ss�]��B�U��PY2nz� �ϯY� �e��;nф�D�å��w�Js&#T;��6Yt�t�ާ�p�0o��,��Q�� M����Y�IԺm3z���b2o��+��A �w�2&�p9ē��ח�ϡ�Z�=o"Q�y �B*P��c�Og�����)�F�ly�n ޥ�Z4��9h�1�M����0+�b���\+P�K �c���*F����C�I��u�I4@�C&�>&.�e8�H�s�.��$1�rO��إ4X�c�2q�7�IԲ��h7�ǬK;�z��hP� ��� c�pd�����Jb�tȸ�4z��N5�l��9��3���K3q���E�Bxz1o�v���]����1�i���<�+�а�'W���ʹ�.P�+�̛h�,��q�P��r�Z%1�CtZ$�3�/���:V�>�s>_ �M4@ݲ��69.Ҥn�4j���f N��!s��H}s�g,�����.�pͼ�`�,��wk�m��o���=��'��������m| G6~�Z���q&�]�)����ֵ;hۜS��4b��dޞ�k�]���n¡Y���+q�����y�,��q��N��,��8�'��ҡ�G�aW�H�r�%�����'�[\]�dS�W�V�>�L��tD�oلp�w�8n��j�;�8�J����p^�p��g�����q���)��س���dauX�s�����ø��zŕhv��C!�mJ5+B�o�ǷnF��=C�FSh��gKR�Z�����[Y]��]0m�ٝ���8��58lV�Q����oB���ؕ+ccGcQ�Օ�ͫ�{v�0�=��/WU��S��N=�J���y¦B��� ǫk�a�j?�[���M�}y�Q�N:�Y��No ���z2�j�ׯח/��m+�4صh� �NS�#V����go��(�,~�!�O�-�R�*G�W� ���cs��q�7UX�V� 5X V�������Ϛ��T�Q��4tx���MC+� bR#�wЪ�q2��K'���vZ�F{�0�i&?1��WY�ɕ3�/_���T�*J��� �hw(T0��oxRpȡ�Lj0-�|0?1�k+��6�֤�� z���W��fo:ڊ�k�'�v-I��y*vU`s��C���L &�����[�u�*sׯ�X.nv���v��ac�<�i4�6��L���on��B�2BIh�D"���D�NL�t~?�H&��TBE� �1��0�|��� q�3�"��"��"�0pf������לɃ&�@����۫��Y�07b|@����=<��G %_�4�O�vA�Q+��3����{��I<��QB���<NH�6�����U�sR�='�/D�&�A(�z�-�u�nLa�>�# �$��u2�!��>���O�87/ �����7�@���UIEND�B`�PKb��\��J���8templates/hathor/images/header/icon-48-newsfeeds-cat.pngnu�[����PNG IHDR00W���IDATx��mlu����`�v����LpءD`a; �(J�DoLcL|!B�M�\:��`�Ǟ�]���TAH$����j�o�F� ����J��u�]gө4�d������ݵ����o �{`�L DB����b�0&@M9�D&�I#@��b�LB>B� Œ��@� .z�R�@�qF/0��@ �H����z�qf=sqƸ�'p��Ɇ�ĕ��e�a�%��V�������� ԗL�q�Z�����M7���,К ����T(�G�d�w:���T���*$�b�G�5��,��b&B�n@����*r�����,��W�ߚ�j��m�"�ʲ�-FI�u`��¹_�b���/����z`������ԛo��P{6�� <?��nJ��!�v�.|��:����:f���r�|���?b��sL�釽�%=�X� tx�U#�-K�W���Ӄ���f���k<;�Ø�:����w��]2���O��Іn� �.��D��_f��}����x����7]�����f�B���=Ef�$�΅$����!��_����XM{^-����2�C��;�B<�" ��S_ae�7*bGbI���;=�fL�o�D@/��Ű7� �^�ְ��]_Dz�5,�ѕhA�em7U�k��I(kc%z���lڣ�\WB̡k~���H��yg#�#F�I'�P������Xᾡ�V��>��R��^�}`Y�<&%�������^����W1 U�Kw��T���Bs�1� ,9vm\�記v�v�RYOO1 ��*o>|)�O��y���e-��~��rYL�G�+ȶj��1�S�`zc�����y� H��˝�A��'ay��M`*]�g�z����RXr�gI�A5��i3f��ʦ��qc�����[�+��� ��rg���-I[c����9�����u��hH�� �N����L�o;�Qa�n���!�5��`��W�a��P���m�#���Ip�~;��;��ݒ�}<C��X&�k��Ƞ5>��=�"�·��M�ܭf�/g��[�ϩr��2��4��a�s���QXwAEzu��9����2ٵC,�1&`�q_��n�кg�k?a��Lڛ���Ps��.qK�*3�Mo`<�ƛ�g�^˫���AK&5(bQd�)�]��mc�)E��^�If̱�膓Mj�$)&��gT��r�[���ȑ�3%���BY����s�"o�J۔��朑2ӂGL2i�H�ҩ�55iAII��N�I�L��#�H���f����L%b% &mnǴMm�H�����F�K��F�L�ڱb&����F1D���Rj'�̳���x��U��q ���0G�K������[�v�{�+qO�.�'�|k���qIEND�B`�PKb��\�1templates/hathor/images/header/icon-48-module.pngnu�[����PNG IHDR00W���IDATh��Y�n�@۱��F$�@Sp-���/�n� �rCHH�Tq%�i���i��I۱��ݬ��$N ��h�{=ov�V`�7%��&�����R�^����3��}�q��c<����F��X}�R ��cB_1��eu�I�������H@"�aL>4J�qP54UE A�4�0��bL�Q����]��6���\�{�Ÿ�yăf������Q6�Ο/��&�Jd2�D2i�%K%Eua��� � �>8�@!x�RN���L�Dk��@��k�u(���e�\.���ѭgO�����_(���M,�l���m����X�r�P�ߟZkgr���3�2�lm}˲@yb��o����"2��5�Z+O?|=V�x���j�6�R��ETR��u�����<<�lCv���m{r����܅�J��8)�G�,��M�8�KS���#�/�S���,�r��Ξ}�$6�od�N���O�;�d�J�Gq�V[���H�}���N�!=3�t��\��O�RFD�1m��=)70�z�ꭱ�������T�{�M 1�~����taQh�+/,�;����ςvYy���!��T��HJ�FI���S=�7��]cgg��.I��Ч��K��{��u�T*1�b�*�����F�1�j�T������Dq[��>}��'�i6MN.İĺd�!=%��d��:�A� A|$+�YM���;ɵ;m�-.M������ ��E�ܻ{�v�HTi�;̋����m�Y� �Q�(�BF�:&��������¨���e687������!�J��+�t��i<fI,g0X�%� �3��!�~9�� e���\���)�@zK6 ����8ԮR�r*jbT�ʏ��F�����O��:RYE �H��6�|1���7tRW�� IEND�B`�PKb��\0�a���0templates/hathor/images/header/icon-48-trash.pngnu�[����PNG IHDR00W��zIDATx^͙]lUY��s����mK[����L�q�O&�Px1�$���>b3J�0a��|�8�13 <#ꋏLH������@��~�~���{��˕�}9�צi�q����6'{�����[bf<�A2$�@����g4zzzR'O�<p���C���FD9!!�*�Ϗ2�sss;�A��ӧO^�z���/_>w�^�D�ZΞ=��H�U�9�u�ҥ3G�=���}���ç����%�<��/��������W�\�q�Z} @�y@����{{{��� ��)�2A���?~� tF8!"wQ��d`rrritt�N�\F.�þ}��w�F2�DE��bSSS����}pp�����()�'-�=z4322�a�R���J��Rhkk��d����Ӑ����{�ܹ7�;� ���`�gy��ؿ{���%A�}��@XG�b��?���{�N��o^0s�166��������n��o�>���f�~�:@����6-@6��mm=���]�|{�"�#U]F$@kP������e,M�a�=��h7B��Z�lv~~�d@�12Z[[ 7���;c��hd����A�� �͟𮀗����i����5�i)F* ,��EF�l̓��ri�m��+/��JD�]/tC���A&�y��e�T��n?Ƈ�,�����o����8���}� �ζ��Q0k@k|�dC�Q �`����F��̼_��}� @�m��Dy0���t�TR�m �Q+W.ؘ���Rvg{~�<�� �p�a����RB�)!R�0b}?@ !HHL"�$l���������t�aQ|2�|*8h�� {P�,�P2q#���qy����� �RZ�����(���i�� n�L;���$A a�xA��#��b�����ޯ �tu]h�ك�:��+��\<�1�ck���Gh� Y�Il�X,�1>?��SE,��_+���W7�K���z���v"�։ls*"�W5*�����# -"��0�ZD�SW�O�M%Xk�f��d��D�M��`A3��a��\�f�yx W������'ؤ��7-��~dh�&�m�:j��ҖN���6@\B���g������]g��3�#+�R@��S`���77UB�F���@6�ˇ��f]�a��&6�Y#3�M��.<oJ(6��e�����4;�s u`���h���nb��7l�ND<r�K܁X���9ȀF\B�sUB�������a�ж����]��L<���8���gWB��%�( �=`&�ed��s�B�nb�M켍��Țx���KN��Ɗ����A����!hۮM����}�m'�v��s6�ۙ{�O�d���C����n�Q0GjǷ2�G+��QH�� *D�~�@rv�b�q�f@뒎"[B��p��U&�=���gF~�#�'�Jj$�@��U�H�% D@|+s�2��:����67&&"_Ȁ��:~��%f��zF�r�kl���BFئ*��z�zl�]])�Z�����Ĥ�6!/l2��ܬ5�M���&1n��G�m�����D1�OVyZh�$�D�?��0�"��[Qɖe�-\��^�C��*(!�1��5=����B�ҝ��xx��jí̕�kJ�0���6U`Kؒ�/�:%dT���`�Ƶ���W��\z���9�4a1b�6i���2JP*�2���K�L���w�T"u���(�j�8�v}c�;����)H����0&�~�*6R�Z�}�ߛ@<�k�4 �Y{�:�E�y�5;���H�`H�IEND�B`�PKb��\P ]�^^1templates/hathor/images/header/icon-48-themes.pngnu�[����PNG IHDR00`� �PLTE�����������������������������������������������������������������������ξ����������箮���ƶ�������������������������������������m�s�z� ��)��3��<��B��E�����G�����M�����N�����S���T����[��c�֙�j��q��w��>��C��H��U��Y��M��^��Q��b��e�Љ��w��؇���y������{���%�tRNS06`ox������������V����IDATx^����@E�l�9��q`9���L�?G*둧7�XM�T��Z.[r�4[wE�,4�؏z������*װׄ��J�8n���>א30~ܪ�_��]��^�����n�������.����KX����([�p}e�7`���A��<y��yO�߅9E�$M�UcJɮi���� �6���O���CAXrz n)\p�*PҒ����D� ��`Q�p��X ��`��(Sd)/��Y'����j��F1�k*�v�ica�f �#aG��ȑ�A��!\ B �$��2s���4�Xc�I�j���Y�Z�f0D7�T�A�CR"b�Ğ��o:�4����� �B�~KfZ����f���=a*�}��'L�7/;����Y�jO� /�v�����Iǧ�� �p3x��'���]X[�U�� [P�7�¾���Ϳ�l�[@��vIEND�B`�PKb��\��m6� � 3templates/hathor/images/header/icon-48-readmess.pngnu�[����PNG IHDR00W�� vIDATh��{PT��o��3��Wt��d�ֶ�v�f��d�h�6F[c"�U�D%�bDM�"�Q)��� ��TVY`QX�� ��3�o�Ƚ��Rڈ3ٙ����{|��s~{W���|�yz?qqq�D �= ����U*���`4q��-$''�!?��NHH@VV*++a6���ب@Ɯ9s��#�����0�LhjjR�6��RP���Ձ�x��g�m���b[ZZ�L��Iexc_~�ƫ��(3Ա�?&&��I��&�J�NOOgoS������A�-)H,1cqXb�z6�BK�Q�����ۉIII���eo�ȶ��DzCU�7]Am[/:z���+F|����zN���TDGG��;�իW�{������;=knn�P*��������F��a�ᵀD�t:ށ��<�>}:��휜TUUqLˡ!��{$��jhh�ĭ���RI���1��x�K.���<��= :���s���B���o�Y� {����(--��&O��;A!@����Jz�7o����y����q��%\�p!'����T�����jv ����@JJ��YL�&y�* !q�555�Mځ�� ��7xq2��9��"��={VJ!GB� G�,����d6+�E&�eee�pII W�V�e������H(� '#�?IaDa%�R9�估4���4߰�Yla �#y433�������P�(DIHa40�-�,��+�|��5s�����Z9.^�8�d����N�O�( �h4\!(Th�)�-�:P�e%��H2� :L��Bx� %f��;K1�����=��9$$d��B=p�i�e���,���c��x'�@H�u�}0u��h�-��]��I��=�m��6��q�-=?P��;waiHP���f��](�Վ�1ׄe<?�0��pOf��'O&P�[�@�����AX�Rj��,D��#�/oU+P�S�QI��o��&""b�Ck�ed�خ��AXAxn��[����4<1Z=��R1����G�d(�L[d+p8\n~~~����Z�ُ��߽{�!e�N4�Mg�]�hT���s��)xyyM��8(�l���L��{s��?�,���):���X3�R<�ޑ�4D6���4'��t��;���MP��@B�6�d$BD|||��5:�kV<O7&G,�������6H͵��mQ��Ԯ�ĵ����ݠPz�xSS+&k��҆���Kh<�&y�,�T�{���Љ�y��F�b� ?��8�@�"�y'l��g��b��θy�0���|�����0�ڢ��*��݇�Z��+��sP�"�D*6�%bѮx' ��~N�(Ii��#�h�7��k�������R4i�'�Qx=���T��~�����!/#�/_�گ� �Г� :����ud<�D&`cH�Τ T\�s�p��>�bR�9\ r2Q� {܇�>AZI3G�h|ܰ��4?ý̟��c?@��-��L���m����g�2h6���<�v�1�1�q�(�w8�n��>i5�r��X*Uo�.w���[7z�_aV9��ב�:3� R�T�R��?��L�З�ʈ���l�I�?�z�����8F��b7T/�X4+�� oK�7�Q�%��8bѬtS�������T艟���y#�����P%荛�0�´E.pL���6AmB�s��g���Q�=ڿ��}y.�-���.]])�j�$�Ψ��;�*�ծ�)�9$`���.|�ں����V}��}��N�6|5���Un����o�v��Ɋ���r�?Z����f�*ƴ�2�-�9���1Ԧ�r[~Nc�9�7�q[��y�\�y�!��k�9)k>H�ߏVh>0��S��]�Ę�z��ec���m��;#�U��U�KW�9�-���[C#֒�*I���B�Qa��IV�z�aL{�#y��n�[��m��XFng~���}�j9� ��x��7���hU����B��#S�Kx}�-_U��2o���W�S�����[5����;=o�?~�:�$��sV�⎞�V�~b�� Ql�Z�Ƒ�e�����y����Ln��8����}[��!�#;�om���\����Q M�]�:�*����].�.��/��m��P�(Z��h��Xd���y٣3ؕ��\���8����5K����ҿ�ߵ7�ӴClk��E���V�9�-���͵R��4�3w��-�;ri�ҁu�����(�?4�٠�k�� ���H��_��;���-�vO�5g�+�Og�.���X/E�}�A{� �v�B�Αi"m�Q����ti����C�L$/�]_'i�[Z�W�' i���Bߑ��_>�L<���9����Gs�5M{�C��I8�kS���� �W��hIEND�B`�PKb��\��회�3templates/hathor/images/header/icon-48-language.pngnu�[����PNG IHDR00W��SIDATx��TTW�W��FQcI�&FטD�1��$�]��&�˚h�]cAMb��h�`oAziCW C�>0�03������<8�ț�d�'������7o��w� �� ,U��);�j���U��(�["R5&R�-+#���S�O�xn�]1�_g�?1�(�̔�=N}�U ��EȐ����o}L���73�0�t��-Յ��6Qj�&�����R��i_B�7�_5� Pa�2L�t�����X�ĖX�������, R��ZYB\U�=���w��h�bn�.+Õu4g����)�.��E0����#��M�H/�G��'V`Ux)vǫp�Q��*�]���z�����W�OY�gBFU7)��̻Q<�&LA-,'k#K�U�ҚFJPaU���Z4CX��,��R�v|\�õ7�(��bV��~�B�C)�#k�K��U�oc�v�OJ��]�C��7t�و��J9Z�m�)-�m��B�%���Mt �%��ڿt�ᒦƖ�쾣��(98@�� J�(�x�*�MX%*fsu��+�|>��r_���e�S��y������ �"QV1��jj���ROT�P�{cK���g|&CNy:�c>�as���'��/�ܶ�f{�X�W��㕇/A�XT�]��C���A�7%�.�����J-���2�(�}Bs5���gc��W>RTȯ���2�����H� �r�1��w�"v��P�����>qO�� H�t7ja��` � �p�_�,�c��b�5r ��[��~��P$����2�3.�*ܗUs�+���-��lË�پ20�5k��{v��>��/���6���� Mh�@l1f�ea�@�hf�e��q�N1�B����C�;��l]kՃC�e5 �sK�]12�V"�a����Dq�^S�g[yfOcehd��w���Y�=ED�3\���Vl�;F�9�Y���5�љ˾#R5��bX�&b�m7gkd�'E#A���X�fjf�d�S\����rA�i�\�e-��)�t� 1Y6>�zמ㖉�c��!�]S�hQt���Oܟ��XAwH�B��o}���L���Y��g�E�z쎒p�'9�Y���Ȣ���$��NwJ�l�t�)D �iQ#�2�,n�~Y����ī)`P��ЧU-���w�<,������SV�Ȃ����K`� ���2��h��r-$t�oѡ����s< �rJ}8�r*����a���:��S|Hk7��`KX.�#�R��ȫ�����c9�K+[�&�gb_t|Ҕ�~� y�K |t�q�����y0D *v�;�s1�Z2[ks�SD'�XV�s��\��4h��#V`�S �$�^�3�1�jR��������|�F��zI�m�VQ6��h��K��_�i�?�1 ?�.@����N%=F��h1�)�6p6��/g�»Ħ�L�+�Й�����]��ȧ��T`c`&>�t�ݸOj �j�Ǭ_�;���o���� �B[%�4pM*F�Z���O.��W�}Y1�56�%I���g���[ᝊ���b�l����O�6�u2�~%�b9������#��6 �t���Ļ�qH/�D[�/��,%IՐWj��#k�Ũ�o�̫�l���7��BgL8�L���ѹ����l>����8\�'���S.&�����c��x�>��3�,��W2���%Чzz�V�$���>�r �q>�O�� ��� ���o���+w�/,���5��E��j�b�V�0�BWwʅ�lA#� `ִy�)�8���b�.��d�=�.Bp�2�H���UZ}�TT⃟b�u�/ܹ(h`�����F����~$�TM8eU���J�e���E�S�8��������fL;˭sD4U��^=��}���Igc�Q���1�> ���A��F�Π'h����2�=*�� ����^�`L�"`([��,�����q!\`���z�X^��2zې�i��n��S��( �`���O���R�!�I��4�X]�՛g���b�;�W�4МQ�����t�N�#ac"!_�ΔD�ӄ"�yf��jg@][O�osc��c��o��m^���˧�"��|:�]�����1�L�U��1BR��Q���)��� ��p�v�:���o��R����(�{ǂaH�i��Q��� #���ލö{-�!�ŷn&�a����d��x=1����q�x�X���!J�b�>?�o�n{��M�� �����o������3�h�Kb�m�`�3t�;f����wx�(`��RF�W_��ɳ�&g��5L�%�כ�u2��gݕ��~h��'ыa���0�G�m��,&����{t'��n�g�}�|��2����_�g� A��g � S��h�3�3�ot*��-��p �"S��.���������2[y��^oL��z�YM��q[#�:lބOԇx��OX�^?���� � �Z�u`���_��a�{<��}m��Y��do<w㻔��j�5��FLښ4�O4��e�ă��!=����ьU�W��3_���d�Ut7X4�~�f_�:f4m�,�K�k�k��M�F]0������|��İ_�sܔ�{Y�\`��ɓ�k.%����6^s��#��b���4��^�/�9vҘ_|����jB׀a�k@�b�͙ >��t`��h����!� ���cԏ�ݛ0�{x�����s`ƒ�f��I�kC�_B�\}��|M�gm^Ȁ�k���v��[��1�1fuu_������7�g�M�:��)ʣ��r"IEND�B`�PKb��\��6�1templates/hathor/images/header/icon-48-cpanel.pngnu�[����PNG IHDR00`� �nPLTE������k����`v�����������s��Jc|Vp�@[xc{�������k��Rk���놛�������A[u�������Li������卜�j~�t�����������ׯ��[r������ȝ��������p�����������Ca~r��������������9Ur�����॰�Zs�������}�����������c}����������dy�����Ro������έ�����z�������͇����ݧ�μ�ԓ�������ޑ��{�����|��������������]y�Wn����Yv�<Xs�����<Zy����5Rn���w����Þ�����Ut�Gf������፦���ù�ݭ�ֵ��,�J�tRNS@��f�IDATx^��U��6�a�����L�����L�����lz2͙^��q.�2#��u�)h4�������\�r��ȫ@Ñ$��.�,I���*���ˊ�JE���� v��1�r�!VEp;�(�1+ÏI�ō�j���C�x(�]A)Z�rQ�۪[&�j4�KA#��w����0�[m�� ڟ5��>�V�N�oF;(��� �l>����Ϊۤ���{^Ex�v!H(X*�zw�c65_��t�3����#5�� ����PbsP�,I�x���L9���r:dZO+ǽS�h�6�a� ����,�&�]1/���m��]wwj� �o��V�>bX=$�(�U���6�g��ڼgA����힟'��鄝9��`�nh�q>���v����b��3�!!KQ�]�W��p���C�����њ�b�?���P��d�@��k�O�b���;��sv�q��- {���)��Dy�C+ MW���w��t���x8Z8��Ԑ���@� �:�gGn�A˦$%�-�b0h�Nf�ùY����p�Y�_�4���I�^�;�٪���!���<�DWh�N�A��͖ �#�]��sT\�m]������(;i&]����b4"R�ժ`Y/�9������� 0���K��y� ��_!���={ܗQ�%��R�x's��w����%ţ]��Q+Y�'4��£�:��[ѿ}�j�J��^�1{�lZ�� ˥I�O?O��)�V�~~kEz�@�� x� �R`icTL�_���-9E�7�N���~�i@�Wմ��?[,�/��V�<�8��F�3�`���ٮ)�h �7.��'��+ӛEQ[�#�*Zs�0�ϕ�L�~�l6��n��7�Z�=>�ܴ��>1s��m��|�T@M��JQӝ@���h�6,d6���mi�t�طs����9��f1��IEND�B`�PKb��\Z 2templates/hathor/images/header/icon-48-article.pngnu�[����PNG IHDR00W���IDATx^ՙ�OTW��� ��X4��Ѥ�Ak��kqG\5�1��n�tӿB�k�nLԅ hSU����`��d�f`���=NfB�7ys�=�\|��>�{�}�TJ��O�=-4Cjs�G�g�`___k4 ��q�7%��S\\�����w�ʕ �6�l�����������v!�&%�=��X��k�N���bjj L�6@�E(������`����[�n������ˁ���)^�̍���`���Q��"�HV�<A�JqR��" un�0*���ۆ�C>y���}>�GnK��իW{}�G>��v�ےbb�����p]]]-$�i()�4��@RrQr������K�.0�I�n�\s�]��<mL�?}��߿�h��7*<>�ӄ�^��V�Ru�v�Z�����j:48�������}����)��}�Vuݹ��FFF�kH�Oe/�B�h�?>���xbrr�w��/$1*D���T���}��3!ĵWsss�v��~yy9G����� �BʶQoo�C���₽�A��]������<�*w����G�����+��S���c�t6ɺ�sPe���"���^�~���˗�=� ps���s��!iGmm��!`l{�������rК��P&ֈ�U�R�:�b�h4����.�2w�`���6ce�{țuy�6�ϟ?���)�UZZ����T�X�6�Tࣇ5�D<�Z�!�נ�9�7�B"D���yV�F���ή�/~e��ٳj�0���V���Ԍ!M �'��n!�7n�jkk��Mf�=`ii E��F������9@� U���\�ߊ��3�Vk=^�~���;k���٤9�J�n��t��f���t�P@455yuAe���y�a�������t-�b�(��0��^V�6B�XGGGO{{��U��朂�#� �0���1��� $� }�_�7��ڵ�x��XW�Xv��{���41GT4�@I�xXU'�a��T�8�[;�~YwPHר�Ǐu����4�im]w ��j�����1�I��!���G:�<s� �� ��f�G�z�46z�'�uv!��I���]]����bk��(^$6���`~�^�"�r�(>g-d8V��Ls �#�IBBgu��2���k��n!�5]�G P�Q(X�x�{�덒���3B�Z���hҲ�hಓB���=Y,�m[?*J�����-�#x⤴O=�٢����L�b��3��#�5뫫�UIY� �g�P�����mpX�S{`��FFP����)ta~��jc����{�!�}8�����7C~O����퉏 vNX���Ik@eB �珷�h�e%��n�^�ׯU2�ԁ`@Ťk�B!E8����Ɂ�M�;P%H���� �Fbq�S�a!b�C��b|.��*��s����N�ɯP�<v�^�5�)<ls���%2N��$BR��~��Del#P棩'O--'�"�V7�-u���o��˯��.�H�`Y��q��Y��s��@5��l��#���x�ANO 8�<]EKA�f� X�!�kjrJ�'s%��*�Wx�Aݑy�0�Up���P��S��L&U���B`CTNe�YU�~�0�]�W�g�&��֦�9fWٞ�Ƌ��O�6?�H$"mzB�E>|P$s!���z. �*��[II ��[t���F�E�7�x8���gu��nͯF����;v�{ll�MQ��~�YQ.�F-o�X��vh������v����b'&���� C��\�o.�H���b��T�A�=x�c=���N����X�6XR� �q%���k��>�$��Q���A��$����/p<M�Q��'}�Ϝ�|�c9Ĥ����,��/l�ɱ^�Bm^�%'%G$7�&bL�h ,K�$�%g�^�p��M$�rA'��'�û�9���d����IEND�B`�PKb��\WGD�GG/templates/hathor/images/header/icon-48-edit.pngnu�[����PNG IHDR00W��IDATh��{PTu�O�i(D/{���RLΎ��dFMf���6��N�5�&&��^EW��+���O0A2i ET|V3�O3����{��,���4���.�w�s~���!���_0��"�06���N�=�'T���F0a��,�J"���P�B���;ޒ}9�c9���ׂ��z!��D� �p,��\��j������[��.�}g��8��|(��YQ�?�ڠ�\�"��Ž�����sqN��5���VxY�Wz��WLY�.����T4�5��TŌ�����}ڦ˪�Z�Y4��SݽS�Z\�k{m=6�'7^B�[5�H|�x��;�F�ݳ_�a���.�A>+�d��]T���K��Ј=��wh���L+�W����B0�i 4�=��#���{o`ǵk�][��@�^��wZ�\[���'6�|����=���ݒ�37ob5��ىUU �Jϓ��Y�[���]�9J�J��7uua�sX�ڊ��f��z}N�<u/ή�5)�̳9�B�:h�+��]�O���64�8�ō�x�X�S2ZcYkaM�lwg!��=���7=�]��do� y���k�թ�#vu�;;�Fc(���q@<x���W�oh8�$^zu���)H�k4�e�� q� ?��Ͽ'>��u>���\Zz����{�&{�S�w��4��?�5�8!�e9Yksi�����C4Y�A�3�s}q���vM.-�&��H�M�B��f�r�5��-6rlEiu��be��������6�,7��hv��z����A�KKn�;�U!}�2�[ �����.-�'�S^��nR&~�IqN��5����6H�NN�D�nt->�ħ�n�����f$Q��̓�jQ&>9�e.E$�BI�K�= M�H�^^���f "~NM4�C1��kbm.-�!b�c �� ����ܘ�- z�uh�s����f�♴)��#�C��C�>ҏ��Rl9���CIX[���eA����4�#XkaM�-�@0DDH�aӁ~d���d��j��x ��cg�D?����xL2i`-��-�V�A| Jh+�2~U*~�t1��~��%�+0[�%.K�� 19�^�PK�����m��C�!��Q5J�Ĝ%�0d�\�$u�_��h�w�U#z?BR���Z<�psD�#��h 7K⹉�+u��C�J��E����+�Xh-%��qn�il,Z��F�*C���}�?l���^j�!���;u��V�D�-E�&�V����p�P�A�8���a��I�� $P�pJ�����>��g� �����c+볈�����������n�A��2[�O#H8{�>j�JU�a��@ɧ/���؇}�ex��~C�}mmz0��V���%QQ���܃c8�sp.��m͖`X�j!XBX&M�A[���D�?�;�c�����"�#��ģ�h�|E,�� Vř�6�6��{�þ��H�cb�1�xx(D����Yb� �*1��F� �&f������!�"�$�KDL!&/O�b@�4��~Zb����"b��AX,|C�ħ�<b.�h� N��&�x'� ����%C�b��t1��6��� qe��+�>1GLm���q!�Ɂ~��@�Y��)�=)��H��0q"���0q���g�q�K�dq��>�!~3�=�3S0C�}��D���`R��s�u�'��~��Qb����/�(�%#�S@߯O_|D1��B�8�ȟ�y�>�k_q����IEND�B`�PKb��\!Qt���7templates/hathor/images/header/icon-48-user-profile.pngnu�[����PNG IHDR00W���IDATx^ՙ��e�?��33;��s�y'^ys�IZ��EA��\ DD�FFR��yRTE�yD�$�F�`�*�Ů�)`�(JG��zgz�w�o���<���X�ٝ�ݻ�|y������{ޗ�yEUy/cx��q��� @ �("R��e�lftb�,dC-$�Y�#L F<�z��T�=*S���E3�W��%D%<C#�-�UQ Q��[P��l`�C���gλ�<p�0ȭ�ҡ!e� �$NQ�X�7�F �b�� e1a �O�Ԝ�% ���aہ�" ��#L#RL�|2>�k�F["�X��:X��P?ɾ]�`�|&�3�k��#�H�o@�:PO�mk�({�K�;gr�kE��ēB.��$���8�n��E��י����m�*5����L5.��&�@�B�`�Pq`cVgA��/)oX@�}5�|SȦ}�*�FB�tG�|�Wn�p�&:hJl�Փ�m�����-�f����s;��N����S�k*ۄ�W�Z<М�bN)��!X��9þa��I禁���߿rXD���7Z��:�a��(ങ�Ԝb�2��k)��Ao�q`��ɗJ �g{^��+}���B�|��,̞:Î����v��!��N���G��l��*>���f����L퓝���>��e�FdA��P��A����B)m`��00��x�3����Q>q�#Ͼ�l���9NY��S�0�S-��Io�t�/��}�Z#A�28�f���U��BBfiPUzМ��o�,���;���@�[�Y�jP]�z\"���4T���(�u:!�=�ׯ_6��NK��(��P���(�F�n'�n'�`��i��(�'�0��G��c%� QS� `�����<���Q���q�̥L|�r:)l��>���cj��a��)`h��>��s�����8�˷�{?p!S= �,!�U[�E�Zl_d�F�1�˔gߠ0�e��t�O�`��� 8�g�~��L =��A��)�� <{�������[@�i�}��� P��xQ@7����`�c`�u�5x�q`T����+ t2��;��(l �wlO�i����1�d���_A'�<�<dF;.b� � 8p�9L��ĮQ�1��0�}]�k���BeC�L4x�,��ʝtR~�8��r�k��i��~q�/�$&o��ĕtr��^����j��8u}��q���hb��<�ƷЍɣo@~��� aq�=�[@�L%C��1@����Kt2�Գ̙4@�Dp^������kf�G��՟���M�IQHGw��N.��4��20aRk�A�)��u�}�$G�Zu"���X�ӓ�"�wo���F/YW��F�Ї�E@��}G�?=#�ɦ�R� p�Z��~d�Nf��м�$��R�Cz!@:;L�V���xO�ɡ��|)�c)n�qĪ4���/������f= ��߹���} ���Efh��֖@8���-����ax���.�^}=�z��6zQ~�8��xF.`-ҩ/7F��)p��� ֿ3����憲EM�R]<��5:a�4wn7���j��_z�=�?�\v3)Vc(��ai�4n��'7���Μ�S���� ��<Պ��`�x*́G��`��gx�这|��?ZDބ�fi�m�Q�EdϹ���dQD�fr?;F=Ih,͡q� I� 4��,Mă0�Z�a��a&G&� �P�;��� ��O�����w�ʃ�Na1=�g�8���n+�@�!LgI��0�'�jT�O�.)�٣?�e�<����ܚ����yC�qT�F5l\����c�?�4�p�Q[|���p����#�o��z0�R���g���N�.����A�r����f@�/�y�1��r��%T��� ��!�wc<Ā���m��amLҨGlL!r��o�(�� H�|����W#2�ȇ��s�w��Op╇ydr�q����9�,�_N�<z���5�1�/r��,4���H$˱�nT�C�0�Y�Y%��h{�[��@X"@7*�r@ 𖥄�!��B@�F{&6"`�* �"!�%V�2�����=�\x �lw���+�^������V�[)�Ql�v|ߵe�s�����ئK���,���^5s�IEND�B`�PKb��\�Sq=��1templates/hathor/images/header/icon-48-plugin.pngnu�[����PNG IHDR00W���IDATh�홋oS�� yǏ{����պn^'�j�*Vim�Qm]�1Mj�=� m�ک� �8@ �����<�B�0��w�!�W0 !�����;?_�ٳAq�Fڑ�R~��s���;�̘����u'[ZtN�S;��5 ���&�+�l���C�p�<�UU�i_��k uS���i�'gj� _\\�ʊʏ���sz����̂�D�~,���զ����)�ǿ�W]O( I���w�������o\�Q%�u�i_��&�j�;��U���w1 ��m�W5����:�n/�c?�|���#藁+/F��O�R����]*���:f��Çuǎk�q�����\Ng���Z_.}/�Zɑ����.��5x��`��+W�z�;�q�n�ị�������7��Uh�zみs�ۏ��|�8� .��Ŕ��� %L{��k3�[��!LUj�Џ������s����T���'ʲG�� �܍2�u�ȷ���0�I��R�~��7m�4ܪ-��6]�P|-�&>U�I�o��$M��;�����ܨFq������-u�i���o���9=��(JG�R9̻� 6�����$�sg����!^������-���節�Ǖ���Y�������Se����U��p2ĺdط*Bb�g[R���A<��S�a>�&�̼4�y��K�)Oc"��R0�=�C)��֞)p�!y�H{����<g�g����O<<3ѐ���^J�X2���Ry@���p�O��Q��֞}ipT)C��K��M�����zW�0�������!��]O�O�R8,��]�p�I�}�"$7�ݻ���Bbk�_<LN\|�Nc�'���.9�y ��b�<-���s��Z�+Cr1�jdp�s!�i��Cr��~ �?Cg� M9��8��9��jIG ��b����!��R[�����:��ȉ�s�2�]9�ּi��ξ;��N���6Z:�`��H�I�2!�5Նk/i3���M��̏�1��y�t��N�Z���Rژ�Ru�'A��iN����B��_\x�:�i���ؚ����Ն,b�s'9q�y��,�Z���Izw��[iv�#X�0g��ΣI�եb�R�\%��8!�+ؠ3N�xP�b�e�S��5p0��1�N(u�ݍ��U@W.й�7�y(9�f��JVq٬��*Zv��a먐�CpL��c����k�S�K��D0��ۘ|���+@۫��E�\�=l��"����-�[��Q���h�XʄE�Nk;�m�����_I�G���T�/v�U�)�_cOY/I,w>���o1B}>��L�N�g�֫0T���K.J6R�`I�>�$Y?�T+L�/�h[��r�$�~A����4���>�.�(��;�2p;?���,�`�"Z6�&����X�ǒuC��A�զk�;d&OS�~A)����(�\-�п���������ٸ�,�ETx�G�τ��ͺ]�����6<�?�~uK����o�a1m�l\�$7f�o��=�"K�8�6�E�����4�fQ[������#���!��߳p��,�\����q�R<A𡮴7Ug*�ù?9/6H#�����yp4��{y�����B��ٸ�Cs�r���hd^?��#�Z���غ �k�M��i4f������M��^�]���o�d�cE&��н���J�2�}F�0�n.��!�=��Z-�w���yxϾہ�ѱT�_���0.�ѹ�GO�A�S�g�kʂX#ܬ}�8�+xݔ� v����q/[D�H'b��o%����9|k.9�L��H�$��h����W���db7/�[�����F�M?�uW�gK�g�數2a`%�<�O5A)�h��<ݰ�I����p)�n�0�%҅3�zw1���,Xk�@�P�~xzT(�Y+�łξA�:>&8����\�i�H�g-p�@�8��S.�M��0�W�O D�k����L��$x�MXQ��(�q#��Ϙ,C�m<�A������叻J��^�8}�T�y��_�ϐ��>h�m4��l~��C7�V�6��Q�j(�K(mtSjy�6���v��O7�m�q���]IEND�B`�PKb��\�zH���1templates/hathor/images/header/icon-48-static.pngnu�[����PNG IHDR00`� ��PLTE��������̵�������씔��������٪����������˜�ϥ��X����Д����R�Nj�ԗ����ծ����������Ț���������ťd�����Z���ίp��K�ˎ��c�Å������ۣ����֛�۟ѳt�����ZԵv�˭���۽~ɪi̬l��羾�����ě��͏���ŕǮ{����������f�˓�ؤ�ͤ�ۦ������]]]j}~zþ��״�ܽzzz��u����{���ػ|ƪr����Ͳ�۩���~f7llk��֥���Κ���ħp�Ӥ����؝m���k:<n�¥kbpnttt�Cջ��Ի��a���о��š�Яǿ�����ʨ̶�mX.]v��Ƣ������8f}���u��ɸ�=q����{lSfffOW[iU/�����Hy�̵�δ|��ψz[���<��nz�&SdHegv����s$Wk��l���|������i���_��M��A���q?JjlW�Ğ��ƽ����lbLH��;agtpf_vx��J�x`Joq\su���ø����w_3�ŌPljZoo8iw���Ai}n��ex�dz|{}���K���]uwsrhNl}o\<���p��^aR���ֵ�Sf`���C��t}��ʗ�����˖~Q���6��ywsbhjxm[���x������κXqm?q�crrMMMs\1־���~�����G"[t��p�߾nw~�zlmeT��ѣ��ztf{c5���w1�otRNS@��f�IDATx^��S��H��M�شm�ضmsl۶m۶�O1���+�tf�n��z��}�̉XU^n��+��R~e���FG0�g��������922<::ZSS���dr�l��>���s�5����P~���pM~ns�T���슮��;6��~ߴBpsO�����G������@����[�͗m=2�,h�nhhٲ��i����p���i�ժ�{�y���-X�]/O������Y�)�� �N�3��3p4�O��L���u@aj6^R��7cr�а�g�5OQ��У6�����!Q����Ȣ"EQ*0�j��+|Xb� � @@�eE�$N�fP�&m6j��0��(}�����6[L�ր��vRc�v�� Ȅ��� &!� 7���9�9;hBK��1�;\.�^;�o��5H$�{nB29W��#x� ��f�R2~<a0�¢V46w���dY�jGe��}����(�)Mq����� �����0��(�N_�0�:�q��L�#�O~��D&���Y����f�,UUU��2��_����,��!5���p�$4�K �Lpz)`8�����.�|���Md�7(p~$|�8zM��o(� �)`�Լ7�$��?��P�,.�W������i�^w�J<��M�P��U�T�ԃ~#N "�P&s-}K=C`�3�p�W�_�wd'ϵ� ��P�ѩ�%������/<~�"�d�QᾍQc�)_�0�ͻi֯����腗�x��L��4γqB��OO~�}��y�E�֮�����������d��,���o\<q��/=�i��]�ҽ��[\F�� �{�.+Z|I�`1�]�}��������%m���xO��j��bnM�o�a6&(x��Zܟxֶ6�?>x�����IEND�B`�PKb��\ N���3templates/hathor/images/header/icon-48-redirect.pngnu�[����PNG IHDR00W��lIDATx��[lQDž�^T���Zz�l�"�� I�w�D� ��jm����jY�z�@[J) "6�'���;�ҝ���dgB؇_v��w�;;���~�G��tX�-VdJf K9�P����G�H�A�Ho���I��A��.l�`��)�'�V�Yd�'@�=ݰ�����3�^g7�U�_l�5@�'_����!�p��/0��Ka����.1�"����y�!q�q�@��g��ڇ��`�@mƶ�0����1�n�>����#����7H�X�÷\���/���u&TtM<p_�#p"�$��-nL�<� ������wݖ�eC$X�i�6��ś� \�+|��u����maI��8���py�;nAvu����K|��k�[� ��ZثR,$���$t6�X�9xM�V��jes|A�&�^�4��+0�§��_��K-k��$ml" m��:����͗����'(����F��r� ���$�J.�&Q> V��;%,��0���ː ���7�Pt�%�7 �χ��)�ۨV�D��3��c�nh�C�:��� ��\-��j�;y�r����!E��Y���8�:M�p`e|O͇pG���ؕ�`��: �z&�2�h��捻���8%o^. �0�y ��ݼI�"[Jc�D"��]�߈��� ��L��+�e�mr�OI�i~ܾ{��{_=z���Tl��@aeͳL��sϾ��5��%t5?v���1�c_I��|�ή> �7`�j�Iֳ#���q����gn��M1�Ř1�D�h��m�?{ǭ�Q#�I�lWY�}7K�C��R ���1��F��5���U��T�k6��,�|�X��$���b@���Č^ʅ4ILc�*oH��x�Y��=��C-��>���^�Ƌ���雯hJ�,Z���"�y���6J���Eu�8N��N��H+�H��8 � tY\��H(n4��I$�ؔ� �@�@wjI��8�yΤ'4$����c�J �&8��=##���g����r�ƁM~JY�|cc���1�Bv�e��?'�;lԲ-!j�I�;��@���@;҃<��W����$���R��'R��h6IEND�B`�PKb��\ ��f� � 7templates/hathor/images/header/icon-48-article-edit.pngnu�[����PNG IHDR00W�� �IDATx�՚ilT��!P�T)I�&��G[5��)J�&��?���*�"U�H�F�FQZJ�.H�aQ�6@p�H��65^�`{��}������O��1��3�a�ī���;�}�s�w�5�D$:���ҏO-1����. �|�������W=φ����Uee�/w��5� ����r�������1�ureX!�¯��W߿�TWW���Y�O �>�x��-z���ZZZ:��<r?����d�-B��p������.]��/Joo�dgg�W4Ҕ�w� ����.\�r劀�g�J^^�#�Q�z���k 8w8q�Z�g���b����99�����?0H�o�Y�f�7IAA�#`%5_���͛7exxX ������3 '��y��.�����p�8�;Z���5�6m�'7��� �db|��k�}}248h` �<L��]�azJ1>>>L@gG�$��I���y99���f_���b6��JK����`7~B�RUUU���$&&:�M6��!I��:�h�c\g�{ ���$���r���{�@@LL̀Sᣛ��}�N"�C�A�m��� J���DtU��y-��ezz>������[�o�]��7Є>~ŸwP-@~llLZ0)%E�?����u랧�@9������qqq}z8n��fgg�O�f�q�f��뺅S���}`|l\:Μ�� J���Lz������x)ۿ���g�}�����z]�x=N��^�;41�������`&d�����j />��[U�+��t�[��%@���N W���Ç���"�{n�)>�p�ӯGDDlLHH�ZD�Šׯ^��e�����]�)̈́0�}���;���$)22��7 ���x1::��I���E8�5���Y~^�n�03?����ifV�Ϛ��ęOh�NM����|����b����>ܼ�MF��l��o��Y�k��q�)�d�$�c��:)�N��v����Gf�ʴ�|<uI^QQ��ӧ%��Fr=# ��wP�L�2VF�W �LV�!E�Z��E3 D8'$D!m�����Ԕ�.c@�[r��Q��/ ���v���/볂$6V����`'+IwD7'�G9� 3�p9M�[[Zp���ӎ7��Ĭ�����ђ��!�Y9��`λZ�Z��o� �,�,��T��$����y�|��ebٞ��Q�y���S߸��v�r��o6y)P䪈�Ւ2�&�/6��r�!.�-,4�`?pT�i;�X��U��u\f���6�V��jk�����qey�xrsM���]���er%~�L���b�x�;bcbr��w�<��i@ǻ\T �@���M�[�@�X�����Ր8��S� (J|}A��B�g�y�u����Ba p��a� ��]�㭆 6��!�{ONN�z�������$ߖ�w�7ᛞ��vOp=_ݶP��BX����2��{<�����2km���^�%�5��A�^I�ġ������U*MG�H8<#��=��Z3�an������qzb|��k�5i���B��IzK���(��o�>�{���D{[� �ɉI�pSc�A�>Ogiil�вڢI^��P�~#$y_V$#߉��zM)RSS�q�By�� i���0^=��$���͏�uH���V��4��B&̊�$'�/���q� � � G�;�����:�|�_)����Co�]~tL����QWn'mW�KҎ D�!�}ծХRɳ����"h5��[q�����!M���i��씆�D�,aA����h 5��af�-#&<u�=��E� �A��ZMU��T��d8g} ����MrD�(P��4�T8��}� _�]3~��3Ίa�C]�(�5�K��OJ�t'<m�oroe�f��]ff��A�|�&v��ld!\�8�� ��wl��qoJb���t���6i�2L �5�ef��s���ݚ;w�_��.+ ���n�����?�}{��'�{Ir�+�e�8oj���� �-�4�aBCC���⊉�����;�a0fH�:+�)� ^۰AR�����,�KKe;4�Y]���϶ �J:��H���Lӎ�ٽ'|����i+n��c�w�����ٵ b����� ��hoo�o`�����l�t�t�t����>t(|wp��i���ʎe����=J�^�{ 1L ̪�o�J�K�dy�G�M�f��-I���2�� <QY��+E�evU\���jz� A� l�����>Gn`/��:x��X�+~���>k�2�������<�777/�,aK���̐#$5�����xx1V���Uşۗ����)��X��#D����E�z�S�7�+#�!D��b�_P<F�+V��4�:NPe�M�IEND�B`�PKb��\C�((2templates/hathor/images/header/icon-48-archive.pngnu�[����PNG IHDR00W���IDATx^�Y[LW�vwv�����1M� F�j���6<�-�C_�i���Ml���_cjm�*�j1m@0m�*��x��º��.Ȳ3�sNF�]ܝ���/�83sB�}���`�e�0��Ǐ��TU�MKK�s�N�\����Ξ�Y���u�*R�+8 \���ի����uxx����ܹ7r��Q���x���ʟs7m���ڵk=���*9�HMM��m۶= � s`�Ɛ�A�-�ڷ��5�Seg�o���uk��w��=�M(<�UP���0+���~�(Ǫ�|�rt f�={���Ћ��n�)�p�0f�I�]UU��ׯ_?���p���0�5��FF��YY�4i�`pp����3�8R���ŜB�B�B�aC�#���E̜9]�^��a���l�&���X,�F0m�t�s���pD�x�������@ <I#X��U�X^��v|�����ǃ�y��ŀDYWWw��6�(M�F0)#�yy���Evf&^"%�Ns����ԚX�FMA٩�b��(**ı�GP{�j\DC��:����܄1IIv,^�&�՛7n��J����ˀH���_]]}In�@���o�A�Ӂy�LyE��e�3 +ȸ���C��عk7�wu���mޤ3����A�������~p<!464�aw`j�4̙��!�� ��������;4>��������*`D�hɒQ�c`�/����ˠ7� �f͞��s�HNMC���l/�f�<[��=z�m�Ͳ�����۶���ݙ��w~����%� CMMM���lP�Z9��ˇEX?ܺu+V�U�j30D�oll�"�RDCC�=3y2����t%#@J���PXX����nQ1��(p��骒��%<���[PVV�EK����U�T������b TQQq����G��02>ظ�� n�'O"7''�h��b���q�����M'�1s��plv���p#�%�5L:t�P��7�kb>� W ��9��J��Z��"�̄�xQV1��=_ÞdC��Z�ر�߄��Iy�k?18n47�9PZZ::x�����)m���0�x�=z��9�}��_uu*G����b|��%�I8�.6��t��^455�S(�(���O@l�=1�́���,ػg�����XB�՟��O{�Z�a�X�bE�(G�l%4��\�~t ����%��~G�(�g�_%����Y���+1���0ej~�XK�bG��/ɒ&OW._���"ɣ������}b�2oب=�H:z@߉���G��/�RD}�4d`¢��es(==ݾn"\�g`��<V8�x��lV�BaC�-��5�|�� �jErJ �� DQD*��c`\�,�Oߟ�L<�q�\����� � д%e�&e�ϟ'%%Q�qi��'x���ֆ@?� ��e�-~l�fdd��t2��q�wv"��ɞ��Lty�:JH��.6�p�����a�# ���^"0���� ;;� Вbkz�[�Q�G�I:X+1�o��#�0$I�fh�R����\�J�JN�UBz��E;���(�+��Î�;�L� Qb-d�xUHʌ�+Q�$�Z���ݶѓD�D084�ޞ�M*�5���+���d�״�h0����r"F�YYL%L��a��Gآ|h�T �_b� L��!B"�%���3���1q��a���h��/Bޮ1��IEND�B`�PKb��\�Y/�||/templates/hathor/images/header/icon-48-move.pngnu�[����PNG IHDR00W��CIDATx^�_HQ��j�Yȭ�5��W�% �z *�^zm0 ����]$ ܀"���^ʨ�r#��`�� "��4��R���oփ�wf��D�=�q��3��ǻ��9j�� �`�0�ȡ֤j+@$��et�����Z@>i��+@xpY*�k�2�E ԪԌ�Z�����q�,�x�ٓDH�DZ��ڮ=�zd���]�W�T��s�C� �!0 Ƴ��G����L>ڞ�wX���a�0J�<g��L��b� �6u!���.gkb@D"��t�/�&�![wl,�5�҃m $W�ݱ���w�5�䚆��:>Cf�m�t6b�1�4g.rA��K�I�lÉO����nI�[�)eZ�my��?y�i�=r�S���x�s��J1��P�FIys�_ � �pg�N! C�:/<���@�v<��ǥ������4�18 2��C@��L�O���\�9�v<!xa�,h>by�y��qf��u����s@� �w��E�x{+އt�N�_����s�2g����a:�ÙcV��%��z�yw�5&�֫��F�h�wq���zI��@�2+�a�)��Z���*S��(U�d�4�FY\��E��it�Ȳh�v��e�u-]9zvu��i���(I*.�+_�������tvvn@r�Z�Z�Z�j��:�*�kq��U�� �X��4� ��~��CS���SQρl(�-g�.s�U&^ϲ�Դ<Y0twT��>��5��lFu�F��0�G���X�Ќ{ j� �{e�� =|D] �IEND�B`�PKb��\�GSgg/templates/hathor/images/header/icon-48-deny.pngnu�[����PNG IHDR00W��.IDATx��{PTe�Ӭ�RX���,�)�\��eW�*���i�t��m���T�M�����?ml�?�8�D��X"i mFx���Ji�9���������]j�3����y���3�^�?��'|ĵ�;7l_����J�N�p�3��syX�}����2�x�4h� ,+Js>�8/2G��\#���sw�{U� ��F̴��+l� �`�+�TZ�5��LH��o]D}&�@�\ZH�K#Ư�qyI���g���Qg��<� �CsŚeE�+R�ɵ���{2ZZB���C��2|M.�j���[���K����!\�5X+�������%a,��XD�qf���?��Lݧ0��c%v��X3&]s��صEa�eR���{����O��3�x��iwr�p���c�����͐���x���I4.,�"�0�������UM��T�z ϒ�3�i�6g)�u4�3�=��Ϭ�#�;��E9���A!�\3�wE����:��f� w���7$��]��35F��Qx�����H�̟��������K��i�����^`ƩNUƏj#N�eK�ӈ<|��^����qgp~&N�Ӥ�n_cV��6�����٣n-���A�]�]�)�0Ft���3���O��tNP���%�}'�M�ɣ��%��pI��#�W�K/ �P�{�V�-���tԕ�~�?��2:mja>>�x�e�?��)��M1�w�T��e��Q!�W����[��k{ ���b�o+�,�e�W��{�[�O�)r�'��Th�Gel/V% �zX�o�'��.��F[���`���.Sɵ���s��dh���0����$��;��r�/iR�4�h+N���_�-��o�~�J�M���l����z�9T2�K�Ѷz B��s�oy;���u��4蟛 ��`c���JJ�q�����$a[�4�U0o�dž��S��xz�XG� p�v��)xlqӆ#�z|�J���_A�9\��� ��FW�#GiQ�=e�)��{�={S�l��8�5�ǡF�>��8�L{�k�[�.�6w:m)�FW�G���GA�ӈ0/�K{����b�M�x��ʔ��˨�',n �v�p�oA�C��2uB�v�pȓ.ݳ�Q`��;����nK�β������H�=�郭=�Bn3z)D�C���4qe�nj�5�h'-��'s+�Z̛+r��,|N�i�ӀmeB[lZtz2�y=6�� ���07544o��-��Ɗ �ϝZI8|�2bu6����>��D�Y3��/ol2?_�ju���Jb�(�{v�.���Q�kv��?[jJ�ׂV���Zq����y�-v#�<��"�O����g�^�uT'|�T7�ݻv���G�d<Hk��Fi�N�WL+��zfn)7a�;{���W}U�;�<ij(����e��zp-����.t�X� �d�R^s��Za�N��U9��砫��ܷ���kYxǕ�W�Ұ�D^�5.�5������$��҅�ޕ��lGf�6��1�����*�'��^��E�I�������"�PZ�@����&�D�;9�y�I��4BG�*�Jb�4!��SYH���#f�D1�($���HP(�pQs��!]�!���W# 糰0R'�Ds̢q�5�D� B+:c�0�ȓ�����<Q�"�Gw�"�b�/�D��E�i�Jl�N/��E��7,�L�#���F�DG�v��I�1E�}�'�0��_"q^'.�|�_��#�Oݟ&̫��$~�O������IEND�B`�PKb��\coU�PP8templates/hathor/images/header/icon-48-banner-tracks.pngnu�[����PNG IHDR00W��IDATx^�YlS�=���y9qBH���,&�������&��NP��]5�� ��I�ZX5�+�H�^������u��� $� %$�CyS�!% $�?��}�W����@Iǎt�B:�;�۾�dY���-�\b\t�1tB%�D������X����$����p�M'�F���,H���sW F���d� 0���^��. R _�8��0�E9=� ǘ,d8� EѴ�M�Շzõ�H���b`ͫ���|uz��^<%��+�%ӆK����+h;p ٣��C7:Nvb�|����_�F�.xfSC��f��=�L�9�khm8�����@4B(.)�����G����*�:~���ϟ�y���3�d��q��AU�f�c�q��F���lͧ�~Z�$aذa�K|��т��y����тk�B�A�����O����p��s5�l[���}붵T�ζ-y�S��{N��FX.��X��{�����^�Go��Q�&x|Gx��c�9��/���'�p�J�:.4Nʩr����ɲa]��`2���n&��s�}g���K��>;oN]�Ż_\�ֳ���dY ��=���7^���:����Rp����<'�3M��i6��)F_���嚍fޛ�q~���n:ϰ�����xЕ�#�c��[�:Y�!e:e��Y��@��q��e?���aH�G����u$zm��d� �VL�H������u)EL%�8 ��ۇ���x��V+�g>��K���"ޠ�WL�fO�#��Ȝ�f�+K��6`����8��(��*�lG�Â��>�¶��`�d���"�����8�D�Y1�:����q������u�lF��۔���O��7�Й�����Z�e��Ε E����XQ��C�Cx�7��Ai�'�&� �8�"�l@n�Nb�ɀnA`TM�i�%�|F�zЕ���/�m��#�a��UOq���_9҃S7�U8* �J�* H�8Xy�N"�S-�ʩc���@�d.�L!�����2>>��_F݉�8BqN���D*� �1 �%�F�f��b��x<���@��W��'82��է�OÈ�Z">la-.fD�Y �eM<;%2-�d�����dA5�PZj="���:꺯�#�)�f���sj��:ϒ�PS *T��A�/��72�z����E#`�����p�+���4 a|��E�Ā,�,���-l����09% ���Q����O�6��%�r` R`�g�F���D�oO��)M@Mc(,[��UZZ�Y�|�����s�$�FY����(���G�Љ $��P̨�~U�,��Ґ;�t�� J��x@��+Joj��;΄����(��%IVEc��\�Rn!/n�ŋW�&2����[�^�=����]X`� X��n��$I1��(�ICV��d�ІA�h�"������2��i���8�QR`bo�� 蟻TM@O6B�����8�ًPL�s�:̛7�MB7酓���O;�e��Џ��f8�F�-Z��ksȀ5�[�&��S PjG�{��ٲ�l� �3g���V�ؙ�L�E���aM4JOܓ�����T��w¹�*1jV+�W y����fɤ ЁD�'���(��[H�:%�gg�f�� p��a����I��L3��<�"qt����S�>|H?�j �{�� ���}͚5�`u_}�f'���&�'���&���x��p\����\��?����4�D��ѫx�c��5��p�/���B��z}t��|�!�Q=�MFFXʙTl�j�*)TLKW�|�a�/�� ���~����?�6u�ͩ��$�wVB�3�v������wpQ�U�����А��<�ΰ���क़kj� ox{VcE �%���>Y��`(�%f�y�@ѯE�@B�.]Zll��j_RdJ!��ol �����������G�F ��x��$b�zYss�����a�����*�!sx6��^�܉c��qT ������n%n"�ۅ�(�_�$���o��g@*���ޚ��� �#Ǒ��\g9�����]4��[������;z�����_+��E�c�8�k�s?O*�c�uF�:�n�xv��W644�ߑ�UO�)"�� ��#(*,���S�� ��(��� onll�֣E��X�"#--����U�.�cǎ�(�������/��PRR�@0�5MMMU�~6���jⱸ_#A1�x"���kAH��Be�J5���U�M�F�R��۪r�~DqK_ �>�ߏ�Q� +T%y#�a̜9��q�[)��t���^bՈ>��X,5AJ �H�1�x����T`x�I���֥Y�����?�h�V�b�x]-s$��hF9�\���g�o�N�<L�H`��1B��9˞��1���V�r�ΰ@��̈N��v���3�魷}4F���LL���8uf-�� � ��}��g�3��ŷR /+�\8F�hQ �e"�@�S��� �0��չ��^韘8�h*1��O?P�(��jŽ'd�_��&���߂S���?��D�B������ML'���H���f.1c��j��i�5�:s�c�/�hm> ��3Ȍ�O�� �}��q�I�{�a�4b1GK������/:����ךF�7gQK�#���[�(���بph�ڈ&M0�#ǘD�B���-� ��1Bt�gL*�ثEi�̔ބ�/�E&FoFKª�{}��,��5�r2�IEND�B`�PKb��\��Ϋ��=templates/hathor/images/header/icon-48-new-privatemessage.pngnu�[����PNG IHDR00W��NIDATx^�Zl[��l_?c;v�ĉ�&m�*�iGZ�,���� ���A�i�h��m�$`�@P�u0Ĩ�nS'��0�@b�2���V�k��w�&����؉c�ھ���EWv��+�B�>���c����im�a��lv|����D��2�.�vseX8����`��H2��Z��V�=H�9B�� !0�|�DK��pX�X�ܼyssCCCsMM͕--- K�,�D"�UUU~�Oxo�Νw�ݻ����X�����y�ܲeKWuuuScccgsssC(�>Ed�QQQ"\�cǎ���ÿںu����(��+�b���{�}�`�����������>���a0\.עDs�t]�l�=�ǃ���^AI>[*�|�M(V�^��j���]ְY&aO�W٬Mr�����d�� a�ʕ�4m�0+�䋽�p[����r�2 yS4��+̰�A?y�=*��Gy����q��qA���avv7n�cpp�0� �* ������ۿ�|��^"� �^6?%J�θK���p:�Bt&��<�ݻw�`�0W,`�;��뮻n��,��K��f���b�V�Z��n��۷�ڶm���I�f��y�VYH!��8w��f͚EF�V�eΉb� Z���G@�<�=ʅϿ]6��0� �U��!�^�?/*++?$�����GSS�����ϐrD���F��`6�E?FFFP(���N�СC�i#_ j��e˖U[f��*@��9'7���kײrP��Ev�&�������.g6�y]���=2 �HV���I-V��F.p��aQ4D��X}����e�aea��˥K�����,�9s�(u�۸�/f<����666�#G������vA��É��[���qj�k^�Ab}ox�"b���x k���PEQ@ǒ(�<�8�r�B�$�:P}}=C�ɉ'�G��NF�4�Y0G�����8��!%���j���aUl�I@ډ��c�uJŷ����V�0�`#3��M+ �td�3L�[K�� ���v��g����u߾}~&��s�"��@�L}i|�d��O�� ^=ڀ�fG�+�����U*�rf6���/?~v�s/ȉ<O��@Pϟ??@]�i^n�AN5��7�|l|�����'H'�I�:uJx?�V����Ƙ��8t$l�С ��2��#�'���N���T�i�%�D �8E��i��B���fm��}�'�Yu�Ȉ�Og�OcOE<�,ZR���v pc�p�l%Z�Ix�n���o�<���3/�f�5�ӧOO^�сs��+V�`�/K� �4G�yx�)�Ҿ���gR��̠#9�dE%&+�v�:���3�O�k.�Z��f��?�|\�����B���s�s�=[J^�g\��=>����,��4����c8Y�9o@�W�nV 79g��E�"�67�Ӻ ���\H��>�C��z���q�y�^�7c�l�F�d�^T����J�F'j��Q��=+�O���T����հCU*�Wt�[�c� ƚ;�3�Q���'��O���9Jez��2��|�a�Ť��D ��it� a�@d~��Fx^�gʹ�|��!e(p �e����p`��}U���TR4��2�/Z$ �R�� {~�5�@] � WN$0�pڈ�/����ZC��@n�*i�� +�Q�ɰw*��P�Y{=0VV�$�?�Ew��m6�C�.x � �ڝ�)B��JH:<6�(z����~f:~>.�u@S�ĸ.8�M��*M���ֳ��xۃ�#�b�4� �%.@B�-� 5�W6.��gۦ��3) OCh�d�m���W�h����:�5�:�=���!���K��N95�jA���_ P���3�H醈��D|@{a���~��y����8?33��o��<e����n]�Aތ�i��6n5��P���W�����#���>[��j � ״�t_߅3��f���['�8%&ϓ��p*���Z��/��#S��������'�]�XM��g�A�4��NN!B�$O�(�*^��i��gR�����j�p[ 0,�����</��#�(a�L6�J�j)F� A]+A'�Az��ѳ�h��R[?���p2�m�#�#�� ����RKW��v����ɼYCÔ����&�x�C,R�JX�>?I}��E s]p^S�T�'����&�~bDx��E�T��\ y����F��v�� �E��o���G �I���<|�Rq��<�54O ��'ノ+{����d�6)�M��6m����=z�b�R]ħ���Dl��LMM�)�N1�b�E�I N@�%4�~��т��+ew���aNw�od)��9��x�K�d�F qS�"�Y��&xe��!�+B�B8ϫ�&��o,Y�q��t�ھ���>��}U��re ����X=� �ɜ��]�'���g�鬈�{{��ݯ�$���)`�*���z�U���I����+��}2�N����l�����S�f���B?�o�|q:����Џ����=����zW�3��?#94�h*�f�/�2��K ���h��LPz�[D�N�I��o�S��"��v͵_��6� �kч_��ڟ�����[�����w��x���H.A� ;�YDaR��O�Cp��,)�T�YB�j�MўM�pg�����ky�&�#�F�g���l���d#��L)��<����s�~R��2����vY���b/���$I��5ݰ��,��r��i�7$t A�$���)k��K|���4��q�s�IEND�B`�PKb��\��%�++>templates/hathor/images/header/icon-48-contacts-categories.pngnu�[����PNG IHDR00W���IDATx^�V�]��ι�����M6j�4 Tc5� �'��Bl@��"!���D��R �Z �A@��"����Ui-�f D�l�A�kv����{wf�3��0���o߲Uꁏo���7眹�D��`��g?��@�X~y�$�)��1�I��>uz~� �w� }��`j�����f��r�4f����J�PY��k�"���{HFw ���uˀd��#^�k��ak�F���p���k0�ě@�<.z��1pe����w�<�t��"�q;F �VO0��{�0�?1�l4��|����El�W��� ���o��8ȥz �?hP$" �z�׳�,�H���ų�SG��Kǵ��4��d���'��c��m3)��fqꯏ���Pe���h���/��@��"ҭ�����쾕W~r�'�u0h}��o�/3���ƭ۳�D-00�[�#��G��zFM�k�s���½hm�������O^t�v�� (fb�K��m�{���ZV�OZօ��Z[N�![��'2��-�����Ci��s}h��_,v���X�2�%6��)Hi#��߶���Ǟ�"N�A���� �]/����!�%w�;�ņ�^@�l�(���U�>�*�o�g�Y0A���z��H�E���g�Np<��t|ݯ@��-�0tЯ�:�{,�x2�7�4�+�:� �³x}������e@ I�`��z&Iҙ�v#[�B3�i �i��9-n�( *#f/\�HZ�f ����� ��r�YH+�ed���Lko<��k3�Zb�G�@�]�$É��Ga�'z���f 0�)�J�4��3 f�� �>�蚇�N�r�]�ĭX�h#�Ml���[�2�o�|�2�=?���8� ��G��'�~GO��a�i _��E� &��A�=�t�o`�������Bkf$D��U"��a{�#F�׀x&/ �_�M��G���;�{��L����B�,��!r��ÀM�@w�vB췎�S{#����&Tnxj�#4>8S���������Įi��:��'�\��qlN6�Du���g��o~Q�z�/�a�ԇ���Ժ�����%���X���ދ7�ʞ����C�\�78�lޮ̎]{���l�,.��/�}�g�f �V��k�%dL�n�C$�x�� c��� ���j�'�a�]O���V̽��������pB��H{f&�?�Lz�!�qJW^s�8�MN�}���ڞȸ&�g�U�,�R*�G@�A#>�.8��?��٩�Ӽ��%4�K�P�ב& �F���G#�@b�3���HV]B��ۅ��&���%���J9"`F�T+ B� 7�w [Z@ils�Pgi���݂a>���.d�+�+�#�p�`�=���L�#=�7�!� �k��zf`��?�<�[��ӥ �ě�PbA��^�B��e�A�*ݐ}x�<i^Dzf�^?��k���OPm����D��Lp6�L�����Qu\.���^MT�Hz�g�9&-*�YNӔɆe[��mz��aCD�#`gY&J)��gʢaQ���������b�b)�,Jn��J� ˔�� �o�`;��M����Z�9����~`I.��#uF*�J�XDRk ��s���f0BDZD�e���f� � ǹ㐯�C�}00�.:rhrr�E��ܾ3�sssA��0L�|�AD�H��p�C�G��^�AcL�H�IEND�B`�PKb��\`N0`114templates/hathor/images/header/icon-48-newsfeeds.pngnu�[����PNG IHDR00`� �[PLTEp�p�p�p�p�p�p�p�p�p�p�p�p�p�p�p�q�k�~���v���l�o�q�o�q� t�u�n�|�����n�o�n� ��!��'��F��t��u�v� n� o�o� u� v� w� w� o� r� u� w�o�u�r�s�x�v�w�x�y� q� u�s�v�y�y�{�|�u�w�x�}�u�v�|�}�x�|�w�|�|�~��x�}�}����y�|�~��z�t�}�~�t�m����m�{�s��������r�l���������������������������n� �� ��t�!��!��"��$��$��$��%��%��&��'��'��n�'��(��(��(��)��)��*��*��*��,��,��,��,��-��.��.��/��/��/��0��0��2��2��3��4��4��5��5��6��6��7��8��9��:��:��=��?��A��B��D��D��E��F��r�G��G��I��J��J��K��L��M��O��Q��S��T��V��W��~W:�tRNS 0@P`p��������#��uIDATx^����PG�7�mz�M���Ҷm۶m۶m����I�4ݴ�y�|���<�I��?Fa� Y���o}����˦S��V`/��\���4s�����IJE����ANR�$>lc�� ����k��y5���Տ�8��LS//�$8e�O6�x�W,(Z��q���@���-N��^t�ɱ? �!�-�mxnr�'o.�y�b���5�*iK�>E��$A[�yx"+~j������G6wVXG��^�҃��[���zјt +;�[�y;�ʖ��ZbJ\G�^Kd��3�]oJ�O�F+O_�s ���\J�ק��zK��2�=�Jj���p#���&Uua�L�CT��t\��E�J�b�b>d>m҃��ᘶx��Go�sg��4���6����m���R�o���F��:.$S��p��őH�8�B5�!�P�^.�Z�!��9H!�O��W3Rp0���H�x�Ft�0�C�5�>A[`�Zt�bSH4VZ�� z*�7�6�sK!g��6(h�!�!��S�l�ɇ������f�,0� 塀-�@��[��(�@����B�#ebC� ,���Y�?]���+�k�(���i�0z �!�-�?�5S�bM���~��f�|��IEND�B`�PKb��\�����5templates/hathor/images/header/icon-48-help-forum.pngnu�[����PNG IHDR00W���IDATx^�Y{pT�����}�$��A��D�i�Qڎ/�>q�V*����L�ab�v�;�t�:#�2��j�bbU�%(Hj��5�&��}�~߽wr�n�|����=�~��s�9HB�I�����Z��Rs5�U� ��W� /�䚅�͗M��C0�b�o>X$��T�μ��@�e�B�K�89�I8�S��N�����˓�u�x��-h�Y�|�� ��<�V��%�:^�qB4�qlp����k$��M=C�5>i��8�JR�DaA��p�E��H}�Z$�2�X�pj}!��SF��2L~߀�3AUC#��x �8�}���S̸-��ڵ!j���핐��>� �s�W� ս�+A(�n�(0�n�`�n?��A�/E�HH��/F�)� �"j�& ��G��Q��F>q�A"7Bd{0c�,���J(�B������g- �L$F>�F� J �w'`��A;��)��}XD؟���X9�Ek> �E�<���O @n�z�Μ�/`�8ܧz�E�@�zY2��A`�~�s'���H8D��8�b��[������1�����g2�>�;`�7��$eC����B��� ��9�ろ?�����y!B���;^H�_<�y�Cޮ媠�uu���*]�A���Sϐa �� H��H�R�'��=���{�s��@�lH� , ���$~�ӕ�J�t܆2��N�H���6��n�3��C����Hy"<�)OD۶��H�Й֑6,8�3��U������~)aE����W{5��#!�'�W`���t&ض�-d2��l6W�!�:��4��=9����u�K�=4�z���圅~ǀ4{�"���ҹ�ߩ��� ��;k����U3i��c��а��'�ȳ�uêeYZ�3�ņ����"T"�& ��%s+�6t�����6lY��<+�R_�[�{��l�y�S�W�%@�M�|WVGZ7�-۩����$��;�X��.��8�9�p#�P��$B��_@�{��������^ �*]� Ԓ�����{�^?/�kz "�� ��I���3yò�6&��$$��r]���6*����1M�K.���!4��k��0MX�(���oFXC�өT�Et�.�û�9��.�L7 ��&p�P���m~�6Q���*MU1d�t��wC�Z�bN5�ǦB�|�r�@өjN�:a���w�z����}��惲93�ߔ\���a��H�t�<h��������I�er 5r��B-���=�;T=�(�C�V��������!F����.�o�J�,������ l�o �DU�[:C����MB�P����10 �f�9}����N+@@GJ`��zC�U{;�<q�H��닙���=�����! p���{����Y����� �ob����A�-\�������]�f�■R���O��5;}�p�*�>��0�L�}b-f>G�O@�+���Oe��[��ܺ��՛�]�v��Cߓ����K�P�Wb�UZ�����v$ѷ/S��3rx��אu���0�XL&?Љqt=�Ѿ����A�������mȾ�]��AO��6D�A��lZ"�#O�D8[1�� �@�a �G�b4$�F2Չ�FU4�}g�1���d��^���=1���v�ع��z�"!MEְ�����}��O-2ceW�+��m��lY8��.�̦�b�R,�}E ��?{�<��6�v~��נ�'y���C%D�*����� �����'�e>qC�\(��Q������ۈ�%3o��ٜ�#��?�;����yw2�����O�G?"�j��8+�u�_J8���±1�I�L��ZGL@6��a�W�3�>8#.i�w?`�lF�,�����H��8�9 � 8��y�$c�08·}�]�g����bl�z8[_�����g����6 Ȫ�"-�k�@�V�ÉK�I���i�b#��������w���o����kM|�j�:d��I2�x�� ��6z.Nj��3yF������������<F��X����ާ��g Aw���G֝t\K*���u���-*���j!� �ȹ�8�!�y�����tlˠk ²���fo�V=�ֱ�K�z'Z�+!GdoU4Mض��0�����YHR�h�M3dA*�(!"��d�i�BXT�vh..���x"�O����||]2톉�m���J�l*�n����J PL%�D�B�s7��i薍�i+�GĢkY�� `H�7�F��-�0�� &�X�Tl��>l�t�����b�E����W5�\�?�:��al��� �P`*v\�{*�c��v8�A��Q#����7>rG_@�X1Y�t~�<,w�_�6�ubK �q������|Փ��\or����*��^���M��EH}��2_ D~b*��Le�5w�gޣ�|4�c�]�y+�g�BW���4×�$��+�� ��c�W7,���`�B��M���j,�\�f~�z�<��;�t$S$�����Τ��.+èa�ȊJ۱�V+��)��A@h����d{{��������x�E<��3�BȒ�Cc1��O�5f�-��v�+n<�������6�eX[�K���հ�f3�zGۦ�6nm����m�喙h�u�#�#o��=��nZ*JJ�˲�X�i)��] De�^[YU�+�Z:)R�(%��):�:~����XA���6!G�o~z�-/���_�+(!9�� 0��}�eX��e�$E ��4 :��+���ȋE����ɞ�!������L�AZu���xIEND�B`�PKb��\c�663templates/hathor/images/header/icon-48-menu-add.pngnu�[����PNG IHDR00W���IDATx^�}le�?��ݶ�-���B�^R0Q�z*�]�;Q/FQL!�n��`�����S5̩14�x"4'�I��T�n�/l�������LZ2��\Y���'�y&���7�<�Q��\Ȩd�_d�_�P��>��Ч�j@�($� !j^�k���>*�>��\Sؙ`��R3&��`>=f3�}��&}�'e�%XLKZ����ʯRS��VA�:�z������-'�����? <9l�����<��e��&6���l�Q(+Ĥ�#.�J�%�*~�}�l���g�84�Bm���L�B��ta?���Xv���1*4�Q��4�&X�7���S�Gq�C��D*����οǻ�Mkt���կ��#F}g�S���F�Rz�u�r��9��_���it�*�� y~�t�;K��71�9�6��Ğ���YS.Q�V`f�4M%|y�8{�א�Keџ�j���PU���F�ǀ����1�,�8�3k\@z�����a�&�}Ӎ�~&�A:���HE�0���'u*J��x<��[Z������ZL&����M ¶�BJA����~�LI�� �� �=f���_�B�"���/�^Ӹ^\WGwW7+W�����tH�Q�)�;u�/J������6���zz�~�� �"]�j����Ëβ��d�0�X,�W��W���{��M3�Ͻ��I��3a��ض�,�b��%!r�:pud ^,,)��W��1t]g��m̟7�I�&�S�����k=��/*p�%%%�G"[��PQ1�t���DUU�����ħ��4:� s�Ǎ8�ٱE�Q�#OEZJ�U�����x����J,]���o�-[�b�~Nc�b�{%4j՟��Z�F���*GDvc�Z�>c5����O![��-d����on$3���a�H3����A�V����@�tJ�hg�o�� ��X�� �D(b��3�u�H3�8a"�;�6y1��EH��>���#�ѓ�fg~�B�c��E2����^h��7`5mF�ӱێ"�� Ux`��l���ܙ/�nq<��@WO/?S��o�E0z��ᛲu�e�G}�7����Fd���+`���[ ��i.ND� ������F-��@Z�V*��=��+`�?�MKM��2Ie�h{_k���^��n���������flaoJ�f��o�3����#��ou�&�G��$>{���gqӫ�i������a+�����{���>��������f�H�>=ʄ��#�鉾����}k}�mI��Lظ≧v�U��S��RH@"�";��3N���B�=�A�w�ˢw�H0D\-���x]��[�${��R�3������ȂIJ���>�j�` ��#o\��,)eH^@�v���Avmn���X�=X��-��X�oco_��+`�|�@�N�_q�2{����tI�K�L�OV��� � r�pY��*��S% ��IEND�B`�PKb��\�zH���2templates/hathor/images/header/icon-48-content.pngnu�[����PNG IHDR00`� ��PLTE��������̵�������씔��������٪����������˜�ϥ��X����Д����R�Nj�ԗ����ծ����������Ț���������ťd�����Z���ίp��K�ˎ��c�Å������ۣ����֛�۟ѳt�����ZԵv�˭���۽~ɪi̬l��羾�����ě��͏���ŕǮ{����������f�˓�ؤ�ͤ�ۦ������]]]j}~zþ��״�ܽzzz��u����{���ػ|ƪr����Ͳ�۩���~f7llk��֥���Κ���ħp�Ӥ����؝m���k:<n�¥kbpnttt�Cջ��Ի��a���о��š�Яǿ�����ʨ̶�mX.]v��Ƣ������8f}���u��ɸ�=q����{lSfffOW[iU/�����Hy�̵�δ|��ψz[���<��nz�&SdHegv����s$Wk��l���|������i���_��M��A���q?JjlW�Ğ��ƽ����lbLH��;agtpf_vx��J�x`Joq\su���ø����w_3�ŌPljZoo8iw���Ai}n��ex�dz|{}���K���]uwsrhNl}o\<���p��^aR���ֵ�Sf`���C��t}��ʗ�����˖~Q���6��ywsbhjxm[���x������κXqm?q�crrMMMs\1־���~�����G"[t��p�߾nw~�zlmeT��ѣ��ztf{c5���w1�otRNS@��f�IDATx^��S��H��M�شm�ضmsl۶m۶�O1���+�tf�n��z��}�̉XU^n��+��R~e���FG0�g��������922<::ZSS���dr�l��>���s�5����P~���pM~ns�T���슮��;6��~ߴBpsO�����G������@����[�͗m=2�,h�nhhٲ��i����p���i�ժ�{�y���-X�]/O������Y�)�� �N�3��3p4�O��L���u@aj6^R��7cr�а�g�5OQ��У6�����!Q����Ȣ"EQ*0�j��+|Xb� � @@�eE�$N�fP�&m6j��0��(}�����6[L�ր��vRc�v�� Ȅ��� &!� 7���9�9;hBK��1�;\.�^;�o��5H$�{nB29W��#x� ��f�R2~<a0�¢V46w���dY�jGe��}����(�)Mq����� �����0��(�N_�0�:�q��L�#�O~��D&���Y����f�,UUU��2��_����,��!5���p�$4�K �Lpz)`8�����.�|���Md�7(p~$|�8zM��o(� �)`�Լ7�$��?��P�,.�W������i�^w�J<��M�P��U�T�ԃ~#N "�P&s-}K=C`�3�p�W�_�wd'ϵ� ��P�ѩ�%������/<~�"�d�QᾍQc�)_�0�ͻi֯����腗�x��L��4γqB��OO~�}��y�E�֮�����������d��,���o\<q��/=�i��]�ҽ��[\F�� �{�.+Z|I�`1�]�}��������%m���xO��j��bnM�o�a6&(x��Zܟxֶ6�?>x�����IEND�B`�PKb��\VՀD��1templates/hathor/images/header/icon-48-banner.pngnu�[����PNG IHDR00W��iIDATx^�Zl��~�ﻻ^����UJ[z����(��nQ�\Ж�ˢn�%�-s,�2�9Ȧ.�H�D6�Q�� P{B�^j��r��ϻ_�{��Z��{����5����=���9���u�Wݚ������5?��ݿ�Cp]<��;��p55J�k�TA��d���]���֍h0��'!� `��b�CW�j|%���U��²Mr�Y��3��b8�^3���14��@�A�.���E�Iژc�t�O�I��kù3=�x�-�N"�ȁ9�W�Nl{i�/�Zq��GCF�:x�w{jl6����nƭ3&��ׇ�=������B��2�[z;��� G������ \W?��J����g@�9�n9��3�� J��+ƣjٝ��~�~r���X�k��f�|���ܹc�� �JsP��(��B� pp����G��?Zк��n�G��_o���n,ʷ���?8���a�qN����;����{�;��{1H� �̻�6�d�<u�>х��Ac\h��&8g�$���φf�l�C�:�Gm�N�l�c]�7&����{��G�,�Z<}x�/�f닋p�:Ķw�.��3�WJ�;rͬ�e�}����"� -��E�f1�}�A������\Y���;�yh����/!��.��8U�8��bh1�����z�, �/���Zjze���fIf931͞jV n+��\0���A�t�W4�U � 63�1��܉�q�湜h��fO/BS�9'�m^��?f�͝���2��]=Ł�N+�{C��¦3}����(��09'�Yf��&��@M裪�[$7�R�>��ނRW6�h��5I�u�ou�0��K��W:q�?��=�q>��QtEt{c*./�L0�V�Y�Έ����~�QUO�e�<�m�:�Ȏ $`�!���ٻ~6f�<n���� �5]�B��J�Ј&��̘�,T���)Om���*':�a�q�T���;�F퀄��hh�� �p�2ep�"G�@rׁ��c�i�8�E&�̆Fd$��k4>{@�����=��\�0 �p.]Y�Đ�E� r6�����߃��+c�:-��Ι��|S�-(�p&�g��ԫx�kr%�s0y��7��֊����D� +K���7��pW��I��#�!bՔQJu"�"r��# ��P��9�F �t�k ����:VL�v_ظ="5�W �|%�D)�L1��n�������t0\��}�VקE���躖��7�Uz&Xa�$|�����a�hڔ�+eȒ!H^N��6"��s�����/>���u��mzFH�[N��)ɼ��DX���Xj��H�,I�p���A6�`S.����v/Xp�#-�G�^p�=�G&���6���kM�������Ĉ2�Q~?t��*,����wWyT�Y�p|C(α�v$rA4���1�C�\q�����K�$\�B{nn%q��yϘ�ӫ+l�"��A�Z3-���F�1�:L���8��S۶��S9 #�� G$���b��Xռ��k�Տz�v�欮7�k�(-�9/�0"a�zNA�Ȓf yD�YFLՌ,ܘgc��%N�z��DQq Ra�Z!��F�<OE���U�l��n;�3��FXj�nƼ"+fd`Z�y 2�����'Lwd�s@P4HL\���880�|gf�� ((,�]Pu��Ύ���C`Do��7����E�ܝ�m�!DT�L�FI�l�V?돢�?��@AU9@ԑ!.���"�jB!�Ƨ��sh� ��i*h�HD�]�)��@ ������:pV`����9+�B�� �jF�`��$�e���$.{�p+�� ��!Y'��G!���K��A�8��!0�J���1����: \�ܞe���Yx�;@�i`�7P���������U�M<}��ȱۑ������Ue9��x�P��/�8�R��/ �n� O�'hݷ{՛������L&H��$\A[(��b��J�k�����;�~̽��g Ff4/��I�J�`:�ȴ�<�f|͝6z��_��kC(A�3� ]գk�d�h���b�nl���Z��:V���*�y-5�@0d��7Nt�������� "�/V���*�A# 2�p(N"ȅ��U��&`ْ�>�yc D$EYi)�FႮ��5PPg|���*�Z.\ a�Y33�i|�h6��A�adgg���ijxY�#@`p`�{���!@�F�%�9��p�֩�i���딸�1��j�R~��+1�|v| ��X4��F6�c���L�+�i}��jچAr!�`� � � 8~��.��$Y��'\��\9m�-�� ��V]��4R�R~�cI���"���<Ⴂ�El&ɵ�@c��W��A s4��h"npQ�Ӏ�?����.h�qB`ɰT�ퟘc��ku�4F�B�|G.J��{�[�̽m�[>� ���hZ��BtN4�mt-c, �~����������:�fo=��%A&*�z(x u_��s%�z������i@`�Ht������(tTx�hN��3:QT�qP��e�8@�ߡ�[���=�v,���B�0�Z �}μ�'���ޕ� ��!H%����nb���S���[6gκ}��9�����kk=����C'f ��p�ĉ=�G��h1I'����~��M�O��5f@���%^nX��� Or���C�L4i�������%)u�k�M���UP�X����ELP���3&9���']4 �)�U�/��:�(K3IEND�B`�PKb��\螧�ll7templates/hathor/images/header/icon-48-category-add.pngnu�[����PNG IHDR00W��3IDATx���]L[e�qv�s�q�mĉl�auӨY4����@LT��Z��n��MP2��Lą � l0��@)�zQ�b�b��7��B��َ��-q��iZ�)my��ӄ'����\����� ������=�'=�X�e��JF�C��&X$�4�B�D�2I�/2� ������8w��ҽݲ�d���x\&0�E�?*��"Z��&������d� �^�����y���ǘ�<������۠����5�����׀�gͭ7h�٪�W�q&K�ԮE|Y��$� ���пBu���~�mUB���p?�CRvh@��D4nB|�h1�!095�G��� Z6��h�3r@�l����-��$�{!�����u�_]C����]��xvO䀶�-���A:��� �MBt]��3�E��B�r ����i����T�X�����IH���F!�1Fa�}�3w@�6'��m6>��;Cl�bW�I<5���W ���qE�Z9��=���xR���<C����k�nMC;�߀@wl6-J�d �d*A��n��Tw ��g����jg`�o0���ƃ�/*�ް'��k~�Tu�G<z�}Ȭl�;�����Idڻ��8q_�)0z.��V"� �I�<��,D��X;nߜ�\G�u싳>�aR~�\�V�h�lC�}�k��B+_�W:�*��s�}�$�����p��b����ӝO���6 ���w�i��4DKR��}��tE�����i0�����p�y�4c)�ܰo�'#�(�B�tB�;Hơ#z�W�;��S����D�:g�v\,�^>Ƚ|�ʽ�9s�{u>�ss)�![����cC~'��9��O��;#�߇�C�ǯ&w�5�����[�D댄}��ǝа�a�:��Lۼ���P���>��p������p�Bz���XNy9�;���#3��In�Ϳ��@��'���=�����唨>�s���-���*���ƅ�z�c�b���37���j�]E��IEND�B`�PKb��\�9��� � 0templates/hathor/images/header/icon-48-inbox.pngnu�[����PNG IHDR00W�� �IDATx^�Y ��g~�c�{wfwgw��r,g[ �[�$�Z���Z�R�JLjL�15M5Mb���" �I��R � ,u)���0����}���e�tvM�$O�o����y�� N�8��.Ɲ����;v�f�c��D���-��� .��X��v0�ʀ���^T]]ͅ+��0p��y�r��|�ɳ� �M�}>�i��@��3��<��G8FGG�~36 �7���xx�kjj�Lpф�3�$R�"|*��ڎW�/A>�GKK*����C��P(D�y�%i|���K�8mxs��%�7�#���Z�L�T*ѽ^����E�b�@@eC��u��|!�EB���֏�K+QYY�x<N�� �9} ͽ��h��/��$���:E]�^9u�xb�w��x|��օ�t:�F1<<ܴ{�����$�=��q����[1Q��X��}(sd�O�t:�c6���������_e7�zEE(���b��,D���i$����_ 6� �6���n�S��h"7��EȲ�,�o2�s�ѣG�������h�R!�$��G %�$�^V��Z�i1�ƭ���6$ d2�gY^�K(��CId*�"�]� #�CD�DI<;B���<\� � 8���!�TB�Oc�y���^gb_�SdI( �z��'�$��I�N�byfH�"x������e����˩�?���{�v:t�}&~���)##G�� ~�������'�<@�luuu�;�x~.Ml���ʢ�n��ge��3�C4:Y91P�)�4R)`;E3dl��e���96+�=�ҡV|qM��uC�unZ�!��;���y6H��(Y�=r�M���gb*D6l(�|o_S +*��h0�W�]~�h�̈́<�p���3�������۷o#�L�D�M6 H���� ^ں�6U��*��R}�#��Hgg'=���ڳg�:vFe��x+��y!��܇��gC�0!z��X���G����R��T,aґJӍ��n?{�p%��e�k�,�&�h!�d��>c�1ès�c����]\�|����sCq9 ��2(܉#Q�`�Wጬ�/�t����Q�-j8|�6,��������a=��I�����=�o��0����SY����}�ٿ\��W;������H��Ojv{�4Bq�0rݬ�.����Z�8r� �m\�K]1d%4�� �� �c�pS�+"�����T���£o��Qe��g�bL�|o�=��w��m�9�i���OG"��6��$K��֛H� �w��}Ȅ�Ȑe ��J�4��Z� �5�!�p��.�ֱ�M\��Љ�3zn1>��w?8��> � �J����І[��>�z���a,(�0M�T.��@q�1S]�����_���cOA]�J�ż+UAM�� �7� bC�<���P��T wO/Pz��˂��.�7\9��,i�t��5FB��`��c�A�39�Q"2���@�F��a�a�V��D }��DI�0�̈́ǫB��&}�i8\*�N�l�s��"z9��"7?&@ӹ�|F��|���o$�}0�>kI�͊ܨ7q_�����%��n�h������B*���MA�TX�Z��T4�ߑB�gør!�T�Į��̛��h�t�Ky�j�0��m��_m����H�v���a�d�CŒ���Q|?4����| ��A�8��b�~��v�r���s.��˲RB��� �\L�Fp�$8����)o$^�D�+&PUmE�'��؍��c ���iE�l��!��Qyf���Ҁ�\BzIG!��GhXT.�B��ր ��a�2�v0�"ږ�{����Z+mԄ-�3�����sY��Mx�O�6q}(���څxm<n��&E�d4��P��+�\�8�Kb�Up�|�~OKl���E������F���VGM+���1����6���n���잾� �f�j��[E�~���4̈́�-#��[p�Zݝ��i g�f��@@EKK�,T�pȘ'O&���_+G(�`b�/��TU�E5q�Z;?�!�"T!���� �+��H��>w �7�1�kZf��TU�kxt�� a~���Q�Z����Z%���R0��ۯ�P�i��?z� �^v��N�C�x����h%���0~���X,�+��q���?�m��7��SMU�J}���f��*�ÈAm����M\�7���A���1N �n�v�W>�/l�����K����"R�)�y o8����RyY�&<����+�#��\�H�$8�o0'�[s�`��C��2S�őB�2�eea@��LEP��ƈ9�x}� ���by���T��r��q�=LA!| ���HJ�ǘ2�b?7|�O�o�C�� 3IEND�B`�PKb��\7D���2templates/hathor/images/header/icon-48-default.pngnu�[����PNG IHDR(-S�PLTE�����j�����f�������Sغ���1��'��A�����>��t��W����������������L��;��v���F����U�+ǰ��������̥�@��X����g�P����p�欲�~��i����������D�����ϻ��Ű�^��1��3��;�ۏ����X��G��g��ܹ<��P����l��a��s�tRNS@��f�IDAT��U�0Л�J�����5� C�8����EB��ZůTw�#(��as�g����!L*/�8猅���Ԗ�9dg���Qa������ڙЎ��(�/uJ�e�+(���"�WH��� ��<�IEND�B`�PKb��\�P��/templates/hathor/images/header/icon-48-tags.pngnu�[����PNG IHDR00W��FIDATx^�olSUƟ��� �( N�(CHT�b�U� �q3F� �� �L!c��@���A1!�.�Ѹf2����LA�@;֭e[�=7ǝ��dk⓽9''M�{��=��"ץ ��z]*)�M��#���(�-s�Iβ]��]>@��)�� ߁������P"q��:ek�@9�N�Ey��.x� g�]�kdӠ�c�b��s�\�~R������a�(��Nfl/�ze����4��R���z(}�#Ч�㇐\��mưoM,/�z�20�K�f�y8�/z~nǍ�7�k0Dc��Pi!؇�/���}ҧ�Ah��m{mZX�U��Au8�ܣa˖-ضmz����;z�`L� ��.�cw�L�x���Eӝx���T0m��ű�6��q�^���Je���D*�� ���Ә���`2��Z\\���2�nNU�rc���#Y�L �IS&\���,$����a��T_���H����t(�,�=-XT K�c& 0��(��KC8����/1��5��B�2���5�����ڹ�(+q��ў�<���{�$^���T���P3������xe�?11��:ؙ��)�D��8��)�zJ7��ϴ��k��PF�"�`p1X�����P��.�x#j��(�f@M���.H ��9����_��� H<��9�Qx��=b�Rm�0P#o9��i�m �/�5��K�1��>��*SQ�Lk�k.EA�j�o���i��f*e\�֍��G�y_�[H�#:�ᰙ�C�z[�]p��b�-��?H^��_>��s�P�u�f�f-��Cˑ|f�)<?�"̀�|H�[����\bb��My]��v:���bp���]��wϾyGGR�KV�7�z������s�l*m�eH�uVt�G��v#��9\�V�R�M/x�&�#���YI�a%o��2��P�WM����S�<e���WZ���$�ب��?>�"����R��� J�a�z��^��mw�A��ՠ���'�|e��9���6*�r�O���R�4H�����7- cL �XAd�}X��:p 3������0��-���Q?pI�����77�q�j_GD���5e���"5 |�� *])8���3ʐM� ��0�9X�\C��S����R��*k��G,�j��wE({�,^-�r��j��=Ra�Us�ꡠ���/~1`|���R"7=Д4�� 4t�|�����g�"�R=��\��b��A�2��U܀8����}WN~�l���s �����ydd��\���)Q��X��Y�.cP�3�?#�'x)T�������@����N�xG�����o9�}���ь-��<�V�J�cpn�֥�F��X��^�o�ă�O��ϫ�l@V��+Ç�j�o��n���oh�kva@6�В��0�Wa䀅x)��� M.�7E��j�π0�dc���k@��j���6 LT3�k@�߲� B�D��p��q�0�3 ���-��9���?�B��_+OIEND�B`�PKb��\H==KK5templates/hathor/images/header/icon-48-levels-add.pngnu�[����PNG IHDR00W��IDATx���qHq�@ ����%AC �@FX�!�xPE���$-��1R���Ee$u�&���hjS�,�U0:!���R]:��7���v�+s��q��W@~�2���`_ǸDZYx�ݾ1A)����&p P�U&P����Y�(��� ���#�DL��3�0��Y՝0�����L� �~�L`��,�p�B�D����L��d�6����a#%�-���]�2�R��x�I&��F����/<��|���5O"�����%��K3�9S"������ӌ�U�����j#��s��O�7�P�{�6��~��7����Q?=(� �cn����}ݮ��� ��7� �(�}*�t���*�}�F�m��\���<�_�GB�u�N4���bv� 3O+j+B�W�٠���s�ӿ�[,��[# �H �����Go)��["f^^���y���g8c o�V Diڎ�bL5�c��13T\�=�������l���M(9�l�D#��#���h����3�6�=�h�/�% ��><�=�ן�W�Ѿ֮��v)��g#f� �h���]��N�@�`�F|�Y�`����g��?#`��v?�H�*��re�����U?�}�J,��c-%� Tdc�"5F��TO%ׄ>����V�� �Hv��>W>�R~�缧�3�]h���M4��څ���*O��g��w5��߅�?�ۈD�'�����~�.��{�m�IEND�B`�PKb��\�胁��4templates/hathor/images/header/icon-48-user-edit.pngnu�[����PNG IHDR00W���IDATx^�]hU����I����"Ֆ�� E����}�.(�@m���@%ƪRZHQ)�TԢEp�/�K�'��&T���6-M?���n�c�'\谌f'ղ#�lΰ��s���M�)���4�0V�i��Ȏ@J@)%��d��9����� _r�q�>I�aB�# ��L���i'9-�����2� b�Ri�Ȃ� �F���ݼZ���P�����)h��,,�و����uD�(D��B�"!�RP��b���9���~�]�Y/4B4���+���-$8�q t>p�Ѱj�EE"�X�.4Ci� ��E�o��D��n�0?��������"1�q�?*p�u�9K���J+A������Z�D�\��n2�Q�]��Nr�靹�맑�B͍��hr�����M�;�[&l ��`�'v-Z'�@0t����>�m�|�M�$�#�;�o�+姓y�ڡ���"�P- 4h�w~pQ~ ����ky��9[@_�Pb_7m�!�R�n�N6�v#~ 5���M �h�1�x���|1U@d P0�aӂt�z *eP �Jg"D����,I��x�����|9���@�F�� ej��*��W�� �>�OκHߝG(�;�m-���b��Mv�j����P�$"M=� �#��s0��C#��5_��o�5?SM��bI>>�x�0��G8r)t��1�S��P"���f硶��/��q[GK1�{��a���� �Wa� ,,s��E�Z��D �n��"(��1[�D�8(�}���4�5]��ׄs�����e��P. ��!��g�@��߲����y���a(�V�*\�jq��o��~�?�;'��9l�Z� �*�G�Ƶ}]�C]W �- ���t��ހ�9�R��O���k]�w��VZh�B�{�ic�W?�3��|��Zx(���o��]��h���5����Ǩ0�x�P�lbT��_�E����s�s a�ƭ��x��Vv�ڿ�������^@��"��z5>44��sMN�_&:�6ժ���G�m��V �r��u�(�6�*#Е��q�1����@e�e��I�f�em���o��L���#��n��͇�oqYl�L'�ٺ�����T`��a�2��d���Y����U!��{� ���AW��[&�s�yW���ݱƽ��� �Y�Y���$4`�����%_�AiY���@P�Fc�39<9Cd�`�Au�,���`�\,� C�a��4�%�2@X�å�P�`m����Bg��A����ؓ�փ���o�l���6^�t%"ad_��I�@�W�BP��5��Ϡ��$@�n���_�Y��)zN^IEND�B`�PKb��\�):��0templates/hathor/images/header/icon-48-apply.pngnu�[����PNG IHDR00W��XIDATh��[Se���8:��rLb�it%$��v��w�\qͭm�Tj[i9'BH����3~�^k����V �s+e �l���ϻ� K А�w�7e������f��K��J��J֊���D|��"~�#�Npo f�1���J��R�o��|k�4^.���_�RK+?4�����u��0j3����Kx�r �6�F/9$���*��_{�L��)��K5$~�@�z����Q"t�ı���Q��]� CE�8^��G��r9a�dE":R(4i'�`'�M�x� �R/ D�e�q�b#�_J�h9��FW>'���|�(��L��"�$p%">�O)v��+�G�8"k!P�p��q�6�03R{���?� �#(r��XC�a+a�d�x �(yK�S��`�/x1�c���B�@>(PI�� ��3@@.�)��|� !�S�e$�aU`�0��F�{���f�(�H $�Q�^�;m�M��\�=��']�#�~N��.c��} a��0J2I�}�^����ͷ�t�YNϼ�qм���\���\���Q�!���b�g�QK�F)&���?�i�8�K�� z�����+<.����I ����n�X^-�\'����@ۭ��t�i��>�&�ut�=�v�&�%� �b�P4��v���J� �"pu�����mt�=�~�"����It�d �`)�*l(�5d������_;J;?m����&��a�k�kG3�Ɖl�<�C�N��#H�c' �;�k$����z*%®��ïJ��d#H�ı,��e6��UM�K��vt"1�.Yb�G���c�X��J���ϰ�s��8^����,������J`g��B �Э7���e��Bng8̈́Q��"|�K�� ps��/@݇�O��`">&a%�KO��VZ�Q����k�J���J$���ԩ���S&��B$8XA�8~�]���R�^PK�I��$�>����J}�LT��+(�g!���P ��H���D�}xp&��Ab�e��n3���qW!�W�U��}����<��Dx^b�����n��������><���{�`G�$\/���!�����\�ão0N�d ���%R�.'^⺪�J+sLb��y������JX�� �E[#�C�ԇh��2��:�O$�Ak�0+�A����}P��5^%�[1Jmx^j���ʄ��jiiy ��Y�J@9��jP����� �W~Ʀ���<�.x��� ς�,�J � �t�T�6%��F�Sr�!��Tv���a�Y�%E@5BL��E�Tٵ��Vv3�I��!�gj��e��Ѓ��[I��J���u՛"���]IEND�B`�PKb��\�&��4templates/hathor/images/header/icon-48-links-cat.pngnu�[����PNG IHDR00W��SIDATx^L���?��q�Cu�vXVە��4�\�2���nf֤�%SH�u[�v��M�d���e[M���v��j��-N��8����{�yF��&T��o���^���{~<�{�R���HA�;�;JvX]P�0����he_{!��@9�(E��Q���T=P�e�L�g茂�k��Q T��6�a�(E�R,*��V�RU|kJ�� �z��F�|qp)!�@R�DB�P�E9R����O��'5��/�BP��A�K�A)P��D �Lp���Z�j>)���:~��k�#��]@�� >(|�/Hz��e^���S� 8���Y�� �P�;+P�T�W "&0|Ԁ���N�\S����Q��!�� <q� �܉K������ �j,D�j�1n��~��v�[��^�g.���q���ê{f��Q��p��6��� �ͪ�3RV#4�9�J�y8��q��7��=p���>^X>��E�ytn;��B���H�/�/D� b(5��=:��XZx~�+� f�7�H$��3�)�=�i�� � � .Oy���y��6�Rn �d�س����E�D��Mh��bn^RJ����k2!/��X�(��l�#��F�0XU\@��v�n�����e�����.`Ɋ��� (U�e v��%%�O�����r+3����0��� o�����uZ��y�\2|�����\4�F`��K�Prp˄XLd,! 9�p��ӧ�����X:o:�f~.��n?�6r�S��# ��P@*��~>f@$�'���qE�& 8��N�/�|��~�9���8|s�U?��e�x�d���@HP�J�)dI@�W3}�L5;9�/QT8�0��Eh�4�7;��YN��<h~�BPw%�6�HF�g��f�(p9�J�H�7k�)�B����+������t�2�p_nn����n�`d��v�������NOt^)�չ��VN�E>`P����ǫx��=�21�`?|'�6$�6��OQ~6�.�16��c|�y�n#@�8�dS�n�?����_�E����v�"c�� ��ê"&�'�+^|�c].���[Z.RR�L�]�� ��L��/��R�A�K��sOk�e ���7:yp�ÄBa~Rs�c�\��e�6v�j�s����062��3R�V�W��w_Mc) ��G� ���vȜ�X0�����?;r� h���u�� �/'' M�M���ig���,��?�eY�}��g�.B��W'���w���:�{�q��s@$!����f�����,��d�ķ�b�4���j(�u �*�φ�Q\��R��%��ηw�Y���f���(ɠ��#ʬHr�'P�i���w�U�r�����7��^ '�s�Rƫ��5ֿv��dA�4* J��#��<� �;�����R�q@-�5k*+k>`e���'� ��|g�6�12���(���B��<�1_����쓹�"�̝�s����f$�+��T� �W!�$�Ŗ�e����7Q� ��A{��<�O��LY1�P� ��0#tf�1�V��%��W��{ D[7��{����!���ŨF�0+���A��w���OJ@Y��cd�A�l��>,-�C��e��8��#��\Gb=c��QJ1}h5��XD�=���!&�A�C �G&�y��}��P@�_`�zo�Bx���Q��A�P@�Q��xF/ )� �B��X��TpDBԾ��M�"��P�?@as$1m�#�� �(�((F<Bb�q ��K|MG��' �;��u�믏=wAWo.�F���֥y���ۊ9{���P�Ρ��i�f���O�. X�=B��\`��U�_����_�g.��y���7��yW��o��| �����@�}��vi6�������& �n��5i�r*��~�HPng�=@F�fx0�U (i�d �>�SĜ&0��rnD���:��i��N��O��[X�-�dd�p�;5`t�g� B��lIEND�B`�PKb��\�2� � 0templates/hathor/images/header/icon-48-print.pngnu�[����PNG IHDR00W�� VIDATx^�k�\Wu�k�3�p���8v�mb��Z��@[�F�$5����B���VT跢&H��6���"�|jTH�� �4�N�H'q�����Ν�s�^�������D�^�B�_Zs��g���k�C#��O���j]� p �'��y��V��� �1wA0A�9��� ��b�z��;?t�ǟ���<�3��ӏg���f�z\�sx��A�t��=N�x #�t����z�����o�n�iy^ x�.^�_A��(x��/p��K� @�ˍ�З7���]1�~>�Y�X䬛Y��3��p� 9��㎨#�+P?s�f��\�|�����(B#1�[�+ Чѯ��/�F�J&k5$� �Ap<����R�l���mǢ���z����xEChvv16�:��2��6C�qd�`~n���7��ɋǎ�ڹ��ed�ӑ+ 0�Y��j�]\��e� ~"EN�ՠ�뱸�%/�`�K\�X��D�=�h��z���T����͘�[��!ta��NL7�G�P�^�H#I�1q��̴��Z(����.�p�;\Y�����g;�B�; (݈�� ꎋ$0�5�%u�}:�e�X27������M�E��f+�fp��^3]l�憗FK�"Og"�XrX�HκWYH��D�0�ժ�+���ػw��z�K]s�����F���g~�����տi��ؽ{���� !��ظa��|�;�� �,��+�r��YЪ�y�8�%�*B��`�%���)�:�ώ12=�f�-?{+eQ���A���?}�����~xdl"��'�h�;y�[6m\#f�3xo�i'[�l���O?�KK�8Te��Z9�"*��F�����s�-��w�{>�`�w0��>]:�{�}ǻ�� �����۶n��0s���h��lB|��� �(��T�0-\����u0��" j�f����]`��;����)�p�Af/�v�������~�!��3����{߾)�e4k@u����|�Fp�6���AR���C�hD$`n(��T�N��M�YӞ��h&���ꑴ��O��%�c�X?���*P��D/ +�����)vﺑ�N����C��D_��$�S�Cq�� �SRh4w#�e����D���g��;�����<�w���N����;¥r��I�ū,���"eD̫�� � ��"D@p@U!��0L��"E�'�T4�u��=�c��eqw�Q'/��1&�Mu,/�cD��y=E"o,��Y$C��<�r��jX,���j�˽��.+�'��F�GTYUY,)cA>�.����2V������&��:�ޣ1UN#n�h�h��be����Q��(#�g[���0p��`%�0w܅��$ �j��%�wǣ#U�ab����kY����8�R��ȋª�(�@F-��u�r�P�(���*��`0 /rV�@��, Y�a�** ��hUQ0�&&�;C���l��AoP��j�����F�A���>���}dY �՜�}� �Y������1�ԯ:@*^J��q��D�%Ǐ� ��2 *�,����2�Vi��VQ�DT!d��{��Z���j�0<��#����C����*�� VM]"���`"q����F !�����?J�3ǎ�w�v�Z�|�5Skҏ.�����$͉&fq��8���v���۔s�*ADP����Hr^0,:�NP'���)�m,F�O��P�}p��1f6n����@���}�)�� 7�w~1� _�Uݥ%�8�>���qQ�|��@O`Bi�ԅ��dA���:�bێm��������Agf�s��α~f��8���goؼ�Mgm�c��Ak�~��K#ӌ��Iv�.�y��g��PB� ��;�L7�,��q�-%��|k> '�ܙ3|����o|z�.nQeq~��_H�-w;��N�ڱ}�(?����P~���6sϺO��I^~�8Ѭr�i5�4�����qj���� 5��ʑ������9������۶��'N@�,7.-�W�����/,Й���w �8��/'�!�]����caa������k?q�S��_���?s[72P��gGp52 �,�/^C�;��3wN�uX������`� 3ܺ�V�ڛ��S�Ck�EN�|���ڼ���Jp0�={����>˾}��� )i��y��S��g_��Cc#�p�k��Ձ�����I-�@2D�TA��Te��4C�Y���vš'��۷��3��KTv��AƊx3�K ���'��M�Fi�2/S�^,�,Һ�K}}DTPUB�e!K��n 4jZ��r� C����@h�H���Q��"0u� $�@ѬՈ�),��`QiX-����j�q�čjH�eD�eJА������E��;#�*�ƔB*��j#��X�,�Z+ #V ��F��+G,��r �L�]����WW�\�_0�b�'�IEND�B`�PKb��\/ �A. . 6templates/hathor/images/header/icon-48-article-add.pngnu�[����PNG IHDR00W���IDATx^�Y[l�>�����k{1����(��A��PZ �!jKDھ�F�҇H<�UZU��d)�P*R��*QE <Ď mpp�1,N㥅5��_ֻk���L�9����Y�G:���/��;��Ϭ�4��4���<\#��f`?�M�����&�I-�ɨ�L�4���(�����ȑ1�m�Hx��#mmm'a�XUU�1$�3���s ��H�G��2�zXCv��]�T�>�$�<����y%�v~|���Oa Y:�.ܖ�#⥉�LLU}%(/b���%�f��H��@���C�AUU�׃����]�6H�n�.]��@+ �B�n���G��SXG����`~�$�PB�FGG����T#��A�4��$�G�C����p���?t�2-3x\���*c0��0q���͛pgt�]L�eۗ�`�A�����6z-���� ��ӧ��� ��`$��>�X,���(۾�`c�IF�LJ��Po��C�l����B��.#!�F�033՛7s�KJJ����W� �SF�Ν�������#�кc�onn��M���۶��-[�쩧�����ٛp]=�/�L��A ��<q�ąC���g¼]���Nk߽[t�$�V]]��I,DF��W���D��Da�F�B��S�����ak��ȝ�!��:������u+"@���r��g~��Ɖ9��B���Њ�F <"u�Y_��f2��Ɖ8�a�ފ�)|��Er �O��%����8�s�s��p?Ѕ&�֛m�3B����|Lo �E u�ԩ/���?��d��]�9���8� e�AV�����RqTER��8F��a�i��Xj{���?�A㵭����I@�i�=U�ge��"~SU!)P���$yAe���Gp~��Z�r��<6:JUK>!�L�}"�#���yKȖ�8����{�رױ/Q!y�SB�C�ܐĔ1*�4F�,�'y!��>?F^�oܸ��#b��C�-g� ��}}Ri(���(�G��H�= �Gu��H�RP��ꭃOr�~\�����E�`\{��{�.)���"�L�]��R%�B�Z���Q� ��i���$���i Ɍ�~��E���FُR�.� ����MwwKu!9+�Z���� $�`ll��9_P"�x݈:ǵD��J����Fy$O��2!��qnf�Qѵ���5U z�T* %��'�[[Wg��Xg�$�����I&�gǓ��06����zFZ�{/�̲(���;�|��$�Pq1��(S��t�椚 9���P1p ���uu�Sp$�<Ƀ��X�"NNG�a '�F���}�GZ���UHׅ�g�֭PQY)�+{{��sN�K��ƒj۹��Q=g@a$@1��hk�}������~~���9\��4HaՊD"@f���A����I��Hx��F"H Xٹ9�,�N>n�{�@r0��}�l����iP�S*��i��ȋ6ۊ�m��+�y#�#cT��)!R����А��m\D�������<�i��(�r�??���;�O!�������&�o�{[�#��`Ą��Nyy�z }��V��?}T�*@�����b?��fa�]�u�9�I@��D<ۢ����B�����l���I��M&�G��o��_���o+����y%��?10��0 |{�,��6��=0�R��u���8��� ��(K��/~ϲ�� ���x[A9�A�p��~�E`�Q�`��j�}F��sz�>Ň����S �o�zA���M��X��G�[7p�V� .�4�6A��n(�y���N[f �����A�3��Xp{t�l�e�Z��{j� ,?�<�v����@���%�r��mG}���i�_%�`nϻ��ۮ�+%�2U��z����$��!��_����$�7�EY����5$0S�<��� L)�6�B�҇#��F�]\L/y�>1����q~����}�F�da�%��9��`v�]F�R�_.�*� ���G���e��/t&��r�����t������GW�~�?r�P}�-7��5oï���:za��u襰Jv�5���LO�2rYy�{$q}���B�*Y�s����n{Dy���������7��� XD4t��=q<������Yy#��� @���n~x�+����Ô���l���h�`�qIEND�B`�PKb��\Zkk0templates/hathor/images/header/icon-48-clear.pngnu�[����PNG IHDR00W��2IDATh���sU�Gv\pdS@�)K���2��I�L�,Q �+��X�`@RD�fb� X��5�U�Z�Œ�,��&�ȋ���'��ܑf��%����U��s��̽��p�H7ҍTVH78Ah0�@�(l���?ޗj�@��ŝ���Y7��/2�����%�f3x^"��o� ��MINaöY��*"�;%I=))֛��،��g ��9!0jc�훖��3�'���c���@�>���J_�Τ�C]I���M������n�v�у6�a��.]�e0���D��>D_��ԣ�߫=����ć�#)e:�n�(ӱK2�_�R�97��$طo֫��]�Z�,�v���h�6�]� Z�7�0���I�]Ӟp��Nc��Q:�H{u!�rS��W��q;�� �~��:͆�}�����ߖp����]d ���U��'��A���߶>�>ױ��?����ݙ����g:���U�h�O'��P8Y{M[O�q��-�@�����=C� �>�P+ķƫDa��{~�u���%�,��o��H�Z�ej�{I�W�N���V���,����b(�L�'s0)ӡ�L��A���H��@��_��d�r�����>�B9\T|s��?�?��Q��g�m`��,��'��Rh?�X#�~��z8�-��?�l���Nz]����2�MZ/���ʡ`�}�r��I��}�x�w0`;��'��*��I�wB��&|�l���]�bl3��Lߚ����}��� ��ցO>T!�'�q�^�?M��}����xm\����&�� 4�dU������+c =7�#~��j��ѫcJ P���ov ��؎�i��J�QB�=�8����_ә?��LV@*��/a�c��?�;*� *F�S�~���b4��s�X��y�5�=Lm3-��b �wv��b� ��ڲ�\�ؒN�Q ba�1�m�T��Ո�;��c�`~to�7*��B[���R�o��p��G�Y���JP��~P!8�.�D��>3쯱+�}r��D�m#>*�'mֶlp8T�1>�EY ,���؇}y5w]�S�:p�����Zo�R�� �@�-����<�җ8`o�����bw�||��� ����ٖ?L����B?��l�s:�2�/6���bh�|�������}����[��x�r%���`�x�� �?` �6��%�qAy7�ӧ�@v�>�nl����m�y�:d7�:*��0��S�4�3�N��J�'O6F��ړ���K�����5H�}D�L�����Y@F��9�䘋�����*�2Q9�t�u |�s�P㷾 �d���1����� ��|���~%nj�6����Zn���B�K`Q �.�l�����`)�,��w�`%X�c�hs n�c� W6��Z�*ѶҠ/./�� �.q�a�\8q����1�^4s�`Y���N]\�w�.�ZQ�FحZ��[�J�+��u˶D�Tp����e�_���b]���������<��j��3�Y�IEND�B`�PKb��\Α$���4templates/hathor/images/header/icon-48-unarchive.pngnu�[����PNG IHDR00W���IDATx^�Z{�\U�����<��.},-[ڴ�0��5@5�D%ĈQ�jB���1�b4E#D�5J���$bA��) ���{wfv�vf�s���ܙ���O9����sϽ��=�9�L-H[;]�ߌ��1�)��Q{M�x���5D�^v���t�Vnx@@�U�n+��l}�����$�����>{�����M�m��,X�����$�%Cq����Y�rj��S�N��h�^op�<�8.<υ�Jv ն�,q#�}w a���n�>��Jgl�vT*�:t呖��z�|�=�B�\����э�Jᙳg�P��k#������ڰm��,�S5bQ� �J�SS����=bA�3�a�X ��,-��,F7n���P*1���*VC��X4A��<V�i\�A&�hF�����nI�Dqd�y@ߵRr;�b��R�(!������j� �B!�\.�k�v))�ZID��N�7�5�V�f>߇���ġ�ԑ�fQS����T��`*tj��E�&#�&`@v��cW��ɓ 088�����G6�AY�xg�$[�A�J��S,��[���XL�7�m�I�Ư�P�l���"5�w�ք��(r����!��ɯn��%M<a���Id2�xq$pL)��غe3g8T�+8q�5LM�Ȍ'^Hj����j�Nz�tx��u �(z*M��yۺ�m�{���&^Ud*�*�f��!���N��7ē�Rg?Q_!IP3�dVB�v�j^���}{����T��x�ŗ11y��#�?c�=��.�IB/B���B�Ȃ湞�V����{�N�ݽ[�M����$�{ nŘ�"%�j����+j��D̰�{�lע�w�E�K���r}���̋��H:� >�ئe�Uh6��� ҮWf��c���nߕ@�i�DNy��^F���j� UC����ܭLLN�s] -��I��C��p���Z��m�æ,f�N�ޞ���y���G�V��ߋ��,��oZIⶾ��t�$!�L�\6�$[��ߙ@.�� .����^:�v��eI+j��$֙��X��X�t�$$</�w�-�=��TF&����"��Q,!a�Z�RR@����ƫq��ێ{H���FO<C��$���0w���E��� W�,��z�f��h3��&�|>�3gΒ�?�=-��kw�i:�5xQf���M+^ũ����q��=P�3�t텀I>�� >ZCǒ�v�BH�� �"?x�����@�Q��ҁc�¸�͂�i������M�ׄ��}eg�V��V�OFj{h�\�*���7/��*~� ���3�uD�0<,meyY�{Y�4��Y?\d�k҈ӓ�AO�M�|�u��XP��ux3�pj�S��g��F�w����l�vjfF���I;X���۷�-�8�ʲ}�\�<�V�K�7�ޜxGƜT�y�ر���ǔ�Ǐ���{௰�k��e�&�֍�uߞ=����&(�3��(�����c�i}�:��{#��#7��m�x4+YM��G���C�\Xe<��O�o��Ͻ�n��n��0�,���G�s��?��v�N���y\�����#�B��/e3Y>�UY�mzz7�� ���[Dq!_`R��b��e��+��oׅ��5�p���;w�'w�.����/�Qo0�9���ѻ���%X>�����/cdp�y��aN�K�Vf��F�<|�J%�(���$�\� &�Z@�5��p��Ű���m�_�8�]|���{�?|�MX\Z�Y�\��{�E܌p��W��:=��4e�R$��� �<g�����o>���9���RO�a�R��,$JU��o� VVW�����'��*K� �=XU�{vn��?�&A���O5�W�m���Z7ڨ=0��2���Ģ����2���>�l���$��U�DEY�_O?-ֿ�Y<B#`��zD�F7u�J@�]y���ȴ�Q$�<��}�4!���vcueO>�N���s�?��_yE�6��⠌aq�B��b�ҝeXi�<�cqa�-�7}�>�6](��"ĐW��ō"CX�mݴ�l�do���]��r�+�\�K��(��Ƃ�6,����6�7�̏�c!\O[<��q�vZHZ`� �� ��صcc�7�T�㹨���q�|�Ĺ&I�MM����s�Q7`<�Fd5D�ȾR��$�a�x�xzG|��b�������p�D��A`&���(ql�a!ɤ�\�{��(�����2AKb�k}X�$�������=�ʕ*���s������<=�D�3d�fX�:�\.h���@�^��s�ѐ��;O�8�A0�pDbf��+Kr\x���X�����i>C�L��㴷iT���0�5�������D���"GIf!Jæ��UW^!ķm݊R��>�\�C"��2��W]א�4ꐤ�~��z���[,���_��"GH���c%�l$`�˫x��QWw�� ۲䙚^O�.�ř�4�L���7%[�oY���R�Q��*�ț�5��q��Ji}�(q����Q��bsKeu] �o =�&tim�jz�2�$�K�ԏ�B��Ge�ȀᎰٔD��6BL��,[YS��! I�}�/�#*��1��?a�j�D����1��Źp��$�SeǶ�!э@�,ޤ��(9Id_[\�-J�l Iz���^w�8x����Q�ˉ�z���wc�4?����Ů��:��1�>L�I�_Y��33X�Ty���i���1=5�� ���EL�<���ET�e#�Z� �˃�7�:���zO>�O<��B�6m�1��eLMNaan+�e�LMcnf��j��z����\U���R]�������Zg�XS�˞�B��� :�Uˡ�`v �U�6�{H bՀ]�/�����%�4����b�ˎ�QY�IEND�B`�PKb��\��?222templates/hathor/images/header/icon-48-generic.pngnu�[����PNG IHDR00`� ��PLTE�������������������՜������̮s�džŦk�ˍ��M�Ä���ݾ}�͔�ߢ���λ���T�ٜ����Ύ�Ɠ��ո{������έj�ůŤc��Zε�Ѳs��W��|��b�ɑ�Д�����J�ƍ��e��ƫt���ͼ��ܜ�����Q�ȋ���ƶ�����H�ӖȩjЬeԿ���lδ}��� _��������{���¶�������غ{Ž��̽�������ޭǰ{�����yμ�����������ɥ�����r����·մs�她��������ػ�ʸ���A�ߦ�Ҳ�����ʦ�̮ [Ģ^����ו��Y�ɵ��v���Ƽ�������ʪ�ǵ���������������Ⱥ�����ţ֭c�ʵ��(�ļtRNS@��f]IDATx^��C��@��M۸�mm۶���:�T�w1�y��|ϩZ��o��~��~^�.��7=vP@P��|��$U���gX�g� �_}w�1��Ak�J���w^�ү��*�\'JTq>� ���G+�f�HMzJE�)L���z<˄�<���Gs��%��i�I1ȝͲS��I�G�)Le������� ��<�~�[��Q���/��ԖL&�����"u�qZ�M�T�v���H�]1�mֱ�,�� ����a�H�uM�,S,� �O8�.iz� �#0c�� P�*%$��t7BYQ�y�E��6݁a�\�����s� �o���WC�v6'l�x9{�Ȫj�N��@���;��` �64Y�,��Rw�hx#ެ�}K�-��(�F�E$�R��B~ֲhCsƽ;�l ��g��l<� �ֹ�R>x�/�рSϧ�y� \N�G�A�#2�b7t7�h$\��פ�i��k'$������n`�)�E�)��B���P.�?�b�N��\�:�K��{!�]��)�*��TE��/�2P���Z�T��tB�w@ET��(��?�}��>��IEND�B`�PKb��\��oL L >templates/hathor/images/header/icon-48-read-privatemessage.pngnu�[����PNG IHDR00W�� IDATx^�ZpT����G6��$��cT4RahkpZ���N��Zg�(u�U�Ji�S�t�W�g-�ViEE���Q�� �n������s�3��������~�:�9 �3��A���`r�{���i�� .���#��P$����X�E�p�� ���3�|t��A��߶v��z衇�\�n�js3�8A"7}"g�2N��m�ݶ~�ڵ[ZZZ��n7l��>���ß~���WiB��'h<�,�i �:�bBp���֬Y�yy���1��chh'O����xaϞ=/9r$ą�\�!��9 j'_�m۶�/��k���,k,���A�B!PD^��/������NT�)k/� ���^z�s��eD�j����"������?�0\�`Ni �ƿdɒ�;�c�E�+++q.,�"�R�u��]�C�Vr\�nGe�$�1���W^�x���;�� ~���(*�V:Ɏ?�u�W>� #�&P�i�����D��/����tbz6y�$�I���:�[�> .�I����d��{�]�bŊ_-\�pZ��Y�ׁ^ܸq�F ��t�&j�[�l�a���477O���H�t� �`!�7����S��cǎ����oڑ(gj��<��+W��������f�Pu�!N�5"��d�Dp���2�QG�`a+sȲe����4�E6yo��O=���/_~EYY�Y�e5d�:�,'�<�I�W����5��Ă�F�����%ܱE�+ ����ְiӦ�.]�XRR��G�*�Dt4�!��#�H���NT�E"�4�eM�q���g����~��"�7*��B��T"�a�3Ҫμ<!�yTxMW����k}2j�i�d�+�u��뮻��6�(�3�h���r`��<�\=*�%2V����F�0���1��@C"��_�s��>q �/^��ǟt��dDE��F�9$��H�%��c�h�Q4�V��7v��z�����g���Ȱ����ϯ����E�,>��� � ,If��ЏOn ���Ք����m̞=��9�PW��z<,]��u_t���pQM��8'L���d��@Z��y�4E�㊡v^�%n]�.$�$:k֬2p�B�y���$����C ��y����]�G�X���r�0��$ ]UUU�8E2!ªU�.ojj*�Xc^�[=5%Ep�*2�4EP�!����0�-�s�H�u���Rڪ���:B��{�a�0*<�[�s����������ٍe��Ɔ;o�喵\5ٸ�\.��p�# �.?##x}�b�L�P.hma���w���nl*��O,,t�8�R�u�O��bS[Ȱ}��-�>��.|�0^�����W]u].�gע�n�e�Ǡ�@Q\��<�\���8�t���c�/���"LJq,DGJb�g ���i� ���Q��ZV8@��=���"?<<�D"��Mep�9s&hs�x<��h��gq��"O���Gc�\�<��Z ��q�td�g�����, 4��̄<t,�w3.�,�~A�!I�+`���w�� ��h��@ �r���G��zP����R8v�h$@O4�_n��V5yo����И �TO�m��F bp��r������Vq��M�?Q|���]o��@�N!������������!u�y`�?�Z$�@!�la����,��(��l��^�)jC�jd\^�1Q�dm�)ˍ����FM�|�T���s��-@'��.#���C���>����0�nt�p��se�ӲhJ���� O #�:]���TK�����!t���QSJ�M���%�'���g���#@��60�05c������� ��g�[e:��2w{��8QEi���<���GJʑr�+t�倪CSL�3�� >�-�յ^��D������u@G����T�������H���-P�e4�S�IJ�$N|�L��!�3���94�` e)p�q��J�����>���.)K,I�;�+d"� p"��V����®�;9J��R->���nIh�a(X�����C��\���.#f*t�r��.Χc~���zG`�^~��v���D�Nؘ@�E�c�5�t\�9#2���p�*#�:�Y���E1P ˄[��@Be"��yǓ�H8�R��Q_������X�)--�~&,�>��A��2b����8 ��τ@����`u�Ϸl�:�;db'"�F�b�^��b��H3�x^/������M��o���-CNq��I�%���NZ�i���4\f^YG�t��F§c�x���'�;�W~F���!�r�� ��0� �Rq3t��{�m�F��dl�U��� �y����Z̰�"PQ=�|�ʖx���Y�N"+��L&���І��,mlE�t ���w{ᄫ��uhK�_����dއ���3�@�{$dN� ��sz����bgM��L@a'��bl, c�K"���9sD�N��®��=�w���hdQ8����^@.�l*�:T���v�y��s�pJ������ u����K:����v:�Fqq1[��Ӱam�[�v �-���]��N�>N���2�J�Q�r��+��p�p#l��F{�E˛��2 % 's%�*Bӫ���,�zP�e6���4'K����Y��sN:>%di�Ȝ�n{�f.I�S�i�3]�Y9�r M�a���=:]��nB+��1w��dP�<��d!q6.��N(4B����S��r�:z�h� :����ᅭP_~�G~�ͫ�\R�w�+��L�`��� J>��N٩=v�7�W���DYq�u� u_���y��h�?��H���$�@C�O�$����~��+�j`'?��W�o����ǟ�Ol|U���1��7Xӂ�IY�UA}��)��������0a�#d#��O?��K4�-��t-��(��8 {�4�Dɻ#�8��@P�ʑ�s����P��^�);�k�}�L�{�sݭ+a�k���v�N}t��/�,���8͏��{M&�:�Ch#\E������ ��? �!�"� \LXLh%4�f� ���t �t-����*j����z��_�o��e����Vr��Ʉ$�������>"�� �f,�y��I�x4�\��9@x������'�J�+<� ����d�q�Z<Y?3 :'��p��Ʌ����y���� �M��Y@l����'s����&�1��$�8���?O� ?���IEND�B`�PKb��\��5� 4templates/hathor/images/header/icon-48-help-this.pngnu�[����PNG IHDR00W���IDATx^�YtUՙ���{�#�M ��,(0*�XJ"8�BY���e���)���� tPTZ��3�.vK+2,źlH���0�� /I����=�7�%pv�����������#9�n�$�V۱� e*h�I�r�\�H��h� SWOs���1�_�1w_���*��9P�,C&�W��v�m��eWX��c��;g����#�G=n�ɷJ�p�FB���~����@ �g�x�s�B�0�'4^ �7�ԛ$^��[[�@j�L�� [�q]�3b�퇦�a�lӤ�� W�:+�#�O0��<�g���F��� ��Gk2�s���̃���<���\�<ύ{C�A�l�W�bEk� <�bbEA���f]=� 1��i$������\_[�K��3Ra��<�K\eE��Ok�$Zp#�Ųhd��x^B`ox 䊨�eY�n��~�}�r���LP�"����|���s�L>y�>�' ���'���ϐV��I�@�K �d�Vt���.���2�,zEӡ����{���b7�y� ��I琰���t�k���]����q���15NofݘIX�.�)Ir�����z$���oj�m��+����vC�w$�;�{ۆÏ�¤p��a�;�8�mUpT�����,��|6l��;��!�$B����ڊX,�Z�5�ѓ����YX2���D�z�E�� ��.�V��#����tV���Kh��p��O9{ 1W� "p�v;�bI4��К6aC�h'�� �<Em��] p�_F���B�%$� ��+H[��4I4�ॏ�x<�7�H��3��Z��� @K2�FG� �Rf/�b^�"��9 M|l�vA6S��;����Zi�F4�F!�L�U��a�K��i�c�_�S l�,,�eiE�0�Җ��!_נ��� H6�bQ���DDX���CC���M��lI�(JE��%���h��Xׅ�,2"LD��# ��QoZv�#�ky������7M�/�v�%7�DH��<�{�Y�����}�e �қ�$�� 0�a����/v����p�v�M"eiayA>mZ��Մ;��ZHx��P%=[��R�������1�Q��� niÀ�y���`Ȯ;�������:�����GI��V� Y>�|w ���+B+Ք�*�z2T�����FU@.�M��T��?5��������M�M��G���#y�#p̋���6oox�[�.J��e��)Ц.@pШ.+Z���eE|Y���r9G@.���>�g-J�zd��u,,y�+K����| Nρb�겉͐ ���!�?�y��X�>ʡ��7:����q(�E�$�q��T �a �L AӴk e<�{��:�;� ��-����ĉ�����\�KJJ����!�N���҂��&�>z �o.GF�$v5v߈��Y\7n�o���ϑ��={������hnn�M2�������3gΠ����gcE�݉]R�S�]�,e@7V�._���M�����08r��ϟ���ǃ�e0v�X�YUU������3^W�^�йV5�/�!����]�W�<Ο3gΛD~baa!"�ּ�"^��O� �|^�q�՟�X�H3�ǎ;��Ob�ҥ��㚈92;y� ����ौ�D� �럕syp-��۶m[ѫW���\��w�}�ѪU�,���zB)� �b��@=�z)dfc��"��:u*����T���t�^��ݥ��k}����;D~<��v�k�N4B�b~ %�w����+++����GE"4ų_�m������?����NZ���A��� ������i��ӧ�ɤ�ש�$���-^"s�D�E�G�k�+����«*UT<ؖ�!o������W��[�~=>�1a�z�zy}�!���2L�b�Z�0�u\ӑw�p��X�d�����+V�����,��-�r�xr���m@��Ɉ��B�հ������^U �{X��7&�q����G�DS�~?<�5k֠ �Q<�f? 6b�`�g��Ύg��Վ�x�z���>4˺�^)��CT���a�ڵ"��� ���ճ�(�!������.���Jq5z�8�W�"�l��%1#d���k��8�Δ)S���=�V�����:�-1�L�'��8T��s<��$l���{��0��?��xT E�^��o^�J<v�܉1c�P>)��lSѮ�K�YmU\{���Ӊ8 A��؎C,�6�m������i����������^:-��ЉZ"�a'��~ (s,�Ƴ�ʈ��ệ��\^)6��k�G�'=���l�2��.\�dtl� ��2��n+�w �.TYFP���^ )��>z ��]�xw 7]�T:�� ����Ow!i�(,K���Ez����#h͗�8[ŶŦ���e�M�ԩS��=s����^&k)q���n� �&�����p�_q�(\�L i�v�e� ��KE�OF�V�o�I+����d�� {����|��e�-�յ��'�i�N$�$y���Ifa�4/) ��!�:�D�8iZhiMB�σ5�( p�8B���xÉ�����75���@����f:IHQ� ��d���a�bcbE��c3+�^������ѱI"3��$8�B��|$ Jc�/Ț������#�P`�/����g�qb�ZI��-��L%D �j:$ٶk:�'$���:h�'�?f�Kг�_�9�{4�5b*�9�sD>/E�{�9Q1��� ��|(T#��oY���H6�4EA���1p�@6�q�+�0]],PcF`�dD�F�ݕɁ6�N$%I�F��ׯ�(Ҷoh=������C�q��T~�G���������Q,"�/�x�FN�\I#�x�ţH�9s&��� {�.7�rCi&A�H�D<N�lo�^�a�]��L�Wa�E�AU=��:���L�A�L`����ݏ�x��{e�݆�ގ���w������o���5�iӦ�1ϟ?�6�?�\��?�B)DD�0Ѽ��e�XlHHjy�S�r�ȫ��� &�h���ذ�ߡ��w���,9�*�D�(��=3h�V؎�K�ʙH� ��k� �=z��{�g#;���x�Ƽ@���t�U��03��D �e�:-NUtt��ʕ+q��#`���p���oI��-��(a���E��t��~r��4,�5J�S��O�����p��.?�pB%:�K�$p>�?y3� ���`��=������ѣG�;wӧO+�%�)�{��w�8��bp3Z�B��!ß����U�#�[�n�|���cǎͣ{�Zd�nz�+���!Nlq�k ��Fۙ��h$��g�b�C����g��/�xC�I�'"���ve �>�8��^�\rI��<9w�\���,@rі�RWB6�A���GM�%�@��8���dR��"����0 ���2��,���سgv��-ʃD"�� �8BΘ1�'OƄ ���������g�x�M���0�EPv!e�\1.���e�ke#�K��uK2��#���4RiQ(<��D��Nx��ɓB@�9T��ϛ��KNS���y~ɒ%���ַ:��h/ GH��N{������-dƷ)�T�� 9��|Ų햲��RN)�s2/��=�GHΕ�t�����/o���J;�&�n�SE�-+��VY1iB�h�#���UZ^�g͚5�?5ʑ��i:��ۇ8mR_�F��.]�t�%��F9�iN�c��� �"<��g���Z9�"�O���.��$q.��@�x�^v�q��څ�� �,a�q�Z�?Wl�yWնXIEND�B`�PKb��\n&���1templates/hathor/images/header/icon-48-groups.pngnu�[����PNG IHDR00W���IDATx^ř �U�y��no�7o6f��Y�����KJBb�*Q�i⦍�FRUIi�FV+EMU9�]��-�mL%��[��v-ې����mf0�fy�}���s�� ��0K��>�7w��������{�n>�+�F LJ��_&p?����,�X,�^ �u]*�J�N��^�,�k�J�o !�kll�WBSSS��������s��e����I;�l�2�+(o�� ���N���7&�;:�a�F�#r�^�Vc.߄չ�����R��f�x�&�!�E�ǟ���z*���D*��Z{�D�� NYԀ�"L/W�ri�n�-���y�FeppP[�5��H�رc��h4�JGG��ũkϟ���.n�xa� x�\�|f��D��B4��|p��YΜ9�T$ޙ���,P�~���w����vvv�ۏSל#�ݎH7a��1�)%u��t#��KI�Ob�!R���ݬ\�� أ~�Y`�4_6M�V�jioo�;�3v�Xw81d��?{���ǎ�F�r�X��"E$�&C'2_������[�h���c�B��z)�u�����r����Jr�R�d!B��RB �1g�</ m�3۾�Bຮv)�����u'�vooo� �Z������㴤A"$����Oa[�����m��ʓ,�B�C�����g-d����������O���B?`VxUa�,���'�LM���k֬1�;��@f�J�7*X�%�Z�&�V~n���H)F�i3�+0\*snx��u�w�d6h/X�ti��NO[g"�w��e��� 5�`��9�Mpy�/�����\����dl�MX��c����䜲S.������s�k3Y��˗;�u�c!D(~K�[D� @r=X��b~� x�T���`Iw�!�o�KU���]����♇�=]�lЙPxl:z�{����LQ\@�z+�eArf��r��:xe����&����XPt-�n��Cu��Ο����R��zнVCC�zU��^����BL�}�0B���)[�� Ę�`z�����c�V߷��zȎ8|�B�А4Y�eͺ�穓��� �z�� �<z��&�]e�i�7M�Fw�ʧ� �� �L���?#���)�����sc��0x�&!�OWilL�nj��9�n��c�j`3�d B�Z���H$0��kz �~� ������j����2���R��X����P2\C��8g����A�*�l��m��TLu##�@��k����mH߿��dt��9sm��~���C^`:��ܐ���!�Ns�ҥ����[�����k���s��F���8���$"�jy�B�<�n?xU|%���`H�\"a b��\P__�[���x<���IX�d�"���#O�chuN����6f$6c�S-�l�J��x׃[���HE#��S� ��X�j�}�'(��2��g���Q��8�� ��w�B1�S!{I��;i9CʅJ!GG2J2��)T�:�?�&{GJ*_�����WH4&�V=�'�T ,��A��3!��&�B�=��a�d"�-:�rn���$"s�.��@�$MӜT��w�-����1N�����F�mJ� ��z��ng�����ZV��T�镟(b�s��}���V>�t�XG�%-㺶b(�G��Y�p)�ʧ���!��V, ��ޖ��Ć�(��t2Ծ�[(�s�=�m�l^|�QP�(2R`A�1o��N:�GƮ���v5�{W�CP.��f���>���|��ƭg�y�߸q��M@TKD����H� /�o�?i<��d��$�j��a�n�c|��wA�5 cBJ��:�lP�FX��ԁ 20�s �9������v^���A�)�\���4Yu9Y��ω~�]��1��ג�0հ��T#�]uz$w�BSZ�+s���;���C�V~4��7�= ,�t;fS&����-(e3D����ʃ}+�̊.b�E"a:>z�w���}�o[�Tl~��u�$�!���ĭ"R Ĵ��D�J�S�����}X���l"�U�m @�{e9��l�"��I���9��>&ryE����W�O��!�B�G��O?�t�j�N�QF������c����R�TxW)3vf{���C��NZ�QL���ē&���X�4�+ۂ�T,R,����ض�E�5���{���,��/���5B�]�������ާp�������h2lj�V���|�o��R�������J��B�"\%�p(���M����T����@;�[��4w�A����t<�n�o�0�G�#\�ęl�Jq��eO��/�U��"���aF@@�� 䱄�����L&��?��IUОSS�V���q��H���.Xҥw �_��e��9NCy��a�r��{2��Tܚ.�>}���r&~�Gr�/zR1���Ha�_#����Pl�� ��d����e�i�ꅼ���Tp������4�xR���;uF��A��&p�1� H$"$x#�>�M@O����w�;ZTVج�u�ڵS?څe�r|��{8<� -�IAʀ�������\f�?\�x�v5#�B@ǃv!-/����8���I��`a�YQNZ<�X,�O��O����s��ƅ��ήSS�)gc��J)êyϪ��z�$o|p�l��x�e�X�$s #�$��X�RS���&Zݍ���|��-��e˖�X�d�Ugd�3��[�r��ȅKf`4Gf"��T�;r�ݶM�4��M��-�`uG�m����'O�+Kܵm۶��{�T�ֽ��SD�������:{H*?^�pvd_J�KN��c�ݜ�.�2M"��mZ軁�R���[����;2M" �R��*�j��nrQ�)�g9�j�2�T�^�;���ƹqK��|_U�o+"����|Sי������144��\w_Qʗn�=�&��{E`�&�q���[}���$�]���/�x�D��WDV�y�.z�nU��Պ�*��y]t�� ��U�U�F��fu/�L&k;\��v�E��k�v;�<@H��~rԷX t}��2���^`ߵ�]��~�?�ed����IEND�B`�PKb��\��6���1templates/hathor/images/header/icon-48-search.pngnu�[����PNG IHDR00W���IDATx^�Z}hT�������d���G�c�q�Z]٭����(�HE�E�VۮV ��.��Y5~�u+ �b�Z�͊B ~���.kk�D�Q��d&���}�;�4"aư�~��w�߹�\�=Q�,_g��57^�$IR�|?�+��SB�� $ �����Ы8��[�n]��*..~��� ��t]����D"�Ξ=���7o��!dX�k ���ټy�cǮe�G����2���@Q�a�3AGG"��H&�ړ'O�r�̙oܸ�/q�`�.�LX�hь�"�+&N��1c� �J�������� ��P�x��)�oC:��_�|���G�� @7�3 .@D>�f͚��͛w���T�2e��W��W u�w�i����AHE#H?n���!,��"��Ν;�����1�.Q�Sȷdɒ555�F��N�6 ��?ĭn@]���.G�[F�G�p��7~�r ڻ�PA�J0a�7n\́�� %���"�lٲCC�Qi���W��=� �C�rK���Eb,��6�Q��;�)~� �ۋ�������N�-� ���k:i*��ơ��c���yP�� ̊����ۆ=��0��u�\��ٳ?P�9�w��?�'eÇ��CD#�z�9~rڧ�@̐�{�� ��\�,�hU�Z�bŏx �~��j�߯z�>t$u�C��x�e�Qrc{�C(G}Y�4i�O����5j���GO,=4���E�Ir�M�pјO"7#�\��/��*�-�Yη/�UmZ�߰���av� ���$`C�8�8$�x�)-��ʕ+�P�-@��@M��0�E9��7;Kl���`HA,�xox8�F�tk�{1'�2⚆�P�vD �1 �9˽���h��eH9�-H9�i Ȋ,�:6�r�,�xm�.�l�M�3��`8��Y����g��:�AWW�"3�J^��r4< �e`ô��(�N��;ˮT%���'�Z"�xN��[@���/��;Cƴ�Y�h�`Ή3��x��w�=�~K�t=���?~�?ͷ����!��IƐ2��i�"D'IA����a��Χ�݁��ϟ7g���<}��L&��̟�RqtG"Вi$ )��(b'��腞� i�H�~�l����b�Hb� ����;aE�G�]�Ģ��:�EB@��^��F��i>9�ϗ�a����~ �w���b�>���L12(��#�C�ǡ%S��M�&&♀i�XCBw�] ֑���'>�.�L��{ ]j>u��*�ōxѷ@���F!Vdȕ3� !�HQB݅}�4s�fMӞ577�8p�����|`���6mz�.6�ϊ`$|%0�!(>UT�χɧ�$Si����̤��;�hmm=s�ԩ�W�\�'�'t!.�AZ�w�j��P(T�Y���˕v�IX�D��|�����Hm~=_�"|�a'O�����R��9p��Q����u�Ν���7Pc�NQ�1�R��<%�-���yY �G���o۶��W��loo��G���÷�;�o�n<|����˗���W/^��'p������gS�N�@��3�l�d[�*�Y��,XP ���FN�[�5�Q˕9r䣪��U��DnK�1��cǎ5�q�%?�$;�q��[�����P��b ��G3��4���S�l�"X���¥K���)���[�v��"���ܿ����\02�7�<y�;v�@)�W]�8��ׯ�-U��Y���W�`��9߱w�ޟS¶��J��ձ��N�*@ }�ҥ��Ν�B9���J�Z��]~�lP�S*����Dm�z�������gΜY�5���۲e�']��p�_��;���_��� E� ��ڰa����FL�>}�8n�(���Jyyy-Q=��m�"�",B��K���'�(Z�u��1����*��γ[@!��1K�$k� 2J���s�̩�}ǘ���Q3A��U?�L�Ϙ�16�}��0��S�;�Ç{/^\ [ɹ��B4���@s�cB�ሾ�}�y�#99���|�;;;�q�С�s��VVV��z�%��_�~�������j���.���ի�UTT���w��o��o^�"`�j��s5����F�����g��qIEND�B`�PKb��\��/##4templates/hathor/images/header/icon-48-frontpage.pngnu�[����PNG IHDR00`� ��PLTE��������������������̦������근̝����������������·�����ǫ�������ƻ������������д����湺���Ž���������㻼���������������ް�Į��������DJT����������S!�����핓����b`^v5�����:/�����ԅ�����Ž���R"���f'MJGĎa�J�{hshS��� ���ZZY������ �r/�e���������HE@�����>BM�ZĹ�k^I����xy{������*#������ƾ���� �y+_T@����U ~YE�����й��CA<���̑bxlX����~n������������s_���& ��w���RY0 \Q=���������_HUUSQ��t��kҾ����ckt���������k!(&!�����ռ[�iА]ZIDJGB}q]�yX���E �����ɩk>�N��o52+���cXCEP]�ua{96 x3 ���a�����{�L;W ���0'?89jig}O2�����t�pQylV����p-ncMYB8$$!���XZc����������K�}Q�S+�zt�n&kZB+���uml��|b'�tRNS@��fLIDATx^��S�3;��ɰ�mwӶ�ڶmۇ�m۶�yN&�vO��k_�u~WI�����3��;f�]s��.�Q�d$�;c�+���x<.��aI+�T1)mF`n����5s�� �p�9��E2��&�U�m�Vt�78�Pg<*���``��G�@|v��,w����ܳ�Ӊ&#S6��D��ϧ8D��7�{4cWx�^e8��1�`��w� ��g����v��D"B?�����Ņ�#_������1�G�����{�F30p�F�⦖�>V������10l_�����ǚc��>( ���C��(���mG�jo�߯_��3������"��ݗ�V����{���ӏ.���v�X� 8�Q�X?y�7���E�tK��v�1Ǐ�Kx�=��)wU3��+�_h�뮮ڎ�� �G�h�4�~����*�{����\�v~����%��m;aO��t9y����9�ѶE��m骫; s_�r�Ef�1s���qض�lU7x�)���O ։��.��7����\d���χA����`��Jkk�;'0( F��:����##o�$!��쳪'p��_���^�D,�A��3���J� MAL �X�`�o?[��u +��S�q-@�����Q�`��V��U;|�Ѓ7�uӷ B h$@;�T�@�rQlK-}v���+�B$�%�$y�W6��4m� i�9�jC m�2(��:�|�18��2�D�Q�eJ�lJ�,�4�,JH�RLY𰉇#2n ���$#U����h{�F��i�<ϣ�K��KxSV�U�x�U�������?�E�/-�9�IEND�B`�PKb��\��hh8templates/hathor/images/header/icon-48-banner-client.pngnu�[����PNG IHDR00W��/IDATh��Y l\�����]{��'v�I�1�:4n(�iEi�����$*("���*Z������H/$jJEU ��AΜ��sxcǎov������Y'>r�I�fv��������\��|�^Kj>]�}zRka�X���'���G���y���Ȁ2�z-́K&�N�������=͈<~���V�� �f�i��%��-��=� ��p�o���چ��� F��0�+�����Z�'�F��쨮����T�RlE���t����g�*s`�m���~��l:����{�e!p��w7�i�[������?�O>�O� ��,��k+q㽫��}8�'ML��?z���}� �������w.�jP�|�st�D��X<��p=�y�C}��i�?7m���KM@��5,�v��g^+JA@*QxJ���W?F��i��p)�o~�`㼒�ڛWT�u�q$u�(�CJ�����;q��;���4�w\2O�r���ck��w��g}8��������햶�(�w��=�B�����T��k��○����P��mX��$�[���ͣP5}�k\翨 ^9��XC�Q+�(�I��$��f��1 ��t�m�m�ؼ�`������va�ω}�G���,Lp!�+��=���ўS��&l�K]B�z��":n*�a��W��`�a���X!&u�n@&@RՑ�t��<V}J/���{(��/����ꖕa_[#'6����� ��5+�o�R�u[�6�����0DB�*���Qm�Yk⤠I�Q��$��(f-�"9x*i����8M���N�\Ih��eS���q]U1�U�ݞ:r�qL�T�Ppg�:X�K��K�"�,<������5��,�<��>o�K�R�E���N�� ����9�7��p��@8p����=�f�"$�Z��)�)�d<.�Ό���S���!�h9:�"�RxDPJ8�p�1<���B��� �O$a�TI� �|g_��g�E!�f��ְ��F�F���N3��( ��<q����E!��/i���ww�Q�2���xrN_�*d2�U"�T�D̓}q<�evޯ�H �T�65p�/�[|�c*�X(��1.���r��'�<�B�ZU֞���/o��a~�� P4q`��1ԗ�*��Y�9 ����x�u�"�e�+�' ZTҔP��aW�w3#1J@�� ��&^�,��g*��9�S�)"*E��e��K�V�T�>HB�P��?��P�F��T�k� ��:E(���L��'�[XjG�H��l��qGo����o�sjg���7x�����%k↑7�[��L$��3��u�"�H�|��Y'Xfֆ�uA���8�,85��kE���5.������`n�>��>�f��"I�Nw\�]�QP Y�i�c���V�"��p��q���J, �����7=��&���<�o�Z8����!�G�����~<����bX�2�[ ��s��f�ɬ c�`��� i�X�"V.�@��:�p=}�xh<8倨����iṼQ�e_?X\������J� �P�D�,���!�Hh:x-,bE��eC���� �� �V��1M�I�RL�{`�dW�uvX%%U��"���e�y̸���I��/��/�B&?�9 R/� Uǩ`��H7� ? ڴg�PC�0c��/4���FU�5�x��/)D�Mı���\GǕ8�R��)�*߭�[)�k��sÇpk�0� ���D�@&��>))i���а��ț�Z� �[L�$:���x"m(BQ�$�,��ڙ�D�B}XhE�r0;QL� �H��d�ƹ��<�i��{�Z��d6�i�ꎑ�j��#� ��2ܥ�t!#�ї����ӉE��@j��,�� �t�)�JPJ������*ҰU}w��x����d�VH�*���I12H��I��X��y��-D.��oy�v)�%^ ��~���Ӡ�����0�����@��2 ���*�,cfy|~Ȯ(&/ �J�����PD��QQj��L@)�ٱ mp*;���8��·�����I�@�]D�M��������͒�h�^I'a�Y0���=��Dw���rs�1�s��lm�Gb J8G���|�>�p�A�O~�(���s��83��َe��D'XRi�_*tF��s��~x��I�[ ��8*+*P�T0`�A �ׅ��j8�6V���9�>��e�9�����(J<.TT���^d No�(�G���tz-Ø�g��~`�=MjR pi����U�Y�R7���"�n��$ ��3ft����F4Ü�D�kju�1#���{6�B�M��^b�(����3"��IUm �b�'l6Z��b S�=fs���l�6��(���g߃K�_��/Ok x�h,��6��Y��cU�4zYc� ��B���^d*<ɋ�b�<|XX�d��+���G>fP��8��$#U�K6٬p2#1�:B0t\�����| ���B�̘�UbG��7��-��r:PS"C��y.��h&�q�4!��L��r&H�����֒��O�m9��ٳ��+�&GO����@R�����X�I4|�ߧB�?3�H�i_�-V:��Q����-G9��8zS9�B��t��f��'ƵL�#B���H��+��bN�#�d>ИN��2��<�d�e�D���wJ��IEND�B`�PKb��\�胁��3templates/hathor/images/header/icon-48-user-add.pngnu�[����PNG IHDR00W���IDATx^�]hU����I����"Ֆ�� E����}�.(�@m���@%ƪRZHQ)�TԢEp�/�K�'��&T���6-M?���n�c�'\谌f'ղ#�lΰ��s���M�)���4�0V�i��Ȏ@J@)%��d��9����� _r�q�>I�aB�# ��L���i'9-�����2� b�Ri�Ȃ� �F���ݼZ���P�����)h��,,�و����uD�(D��B�"!�RP��b���9���~�]�Y/4B4���+���-$8�q t>p�Ѱj�EE"�X�.4Ci� ��E�o��D��n�0?��������"1�q�?*p�u�9K���J+A������Z�D�\��n2�Q�]��Nr�靹�맑�B͍��hr�����M�;�[&l ��`�'v-Z'�@0t����>�m�|�M�$�#�;�o�+姓y�ڡ���"�P- 4h�w~pQ~ ����ky��9[@_�Pb_7m�!�R�n�N6�v#~ 5���M �h�1�x���|1U@d P0�aӂt�z *eP �Jg"D����,I��x�����|9���@�F�� ej��*��W�� �>�OκHߝG(�;�m-���b��Mv�j����P�$"M=� �#��s0��C#��5_��o�5?SM��bI>>�x�0��G8r)t��1�S��P"���f硶��/��q[GK1�{��a���� �Wa� ,,s��E�Z��D �n��"(��1[�D�8(�}���4�5]��ׄs�����e��P. ��!��g�@��߲����y���a(�V�*\�jq��o��~�?�;'��9l�Z� �*�G�Ƶ}]�C]W �- ���t��ހ�9�R��O���k]�w��VZh�B�{�ic�W?�3��|��Zx(���o��]��h���5����Ǩ0�x�P�lbT��_�E����s�s a�ƭ��x��Vv�ڿ�������^@��"��z5>44��sMN�_&:�6ժ���G�m��V �r��u�(�6�*#Е��q�1����@e�e��I�f�em���o��L���#��n��͇�oqYl�L'�ٺ�����T`��a�2��d���Y����U!��{� ���AW��[&�s�yW���ݱƽ��� �Y�Y���$4`�����%_�AiY���@P�Fc�39<9Cd�`�Au�,���`�\,� C�a��4�%�2@X�å�P�`m����Bg��A����ؓ�փ���o�l���6^�t%"ad_��I�@�W�BP��5��Ϡ��$@�n���_�Y��)zN^IEND�B`�PKb��\���RR1templates/hathor/images/header/icon-48-revert.pngnu�[����PNG IHDR00W��IDATx^�Y L[U~��-�GJ�s�M��nQp�ġѡaP�`���$n����,�22�fƿ%ĸ�IҌ8� �C&��p��6F������}-/�ۤ7�z��=�9���+�1��(��� � �t��<��<� X�{b:��h@��͢�z��-�W�?(n����N!0�;_WQ�f���<�КwT*^���L�l��=��^�2�_�T�ټ�rgVʃ�c�Yt��bkP�k+�Y���s���C���W�LXAs�T�x�����2�n�c%ˎ��߃p�D�דY�_mm��5�`��1�2�{�6�P��H`2a(Q�cR[_.x칲��F��� �V��8��J}���[�N�I�tZǀ@{��Gݿ͏|;�0 �߄�PDx���zf�� �\�%F�@A��mc/��{���Z���E �"��uc�����}����9�l���u:�N=�m7e&��]{�� -�*Y���٧>y��κ�.�Ae"�BCG�Xr��:W��:F�Ҵ�"�04�B)�}5'7d�\�Y��0�R2�Iΐc�'�n��lM+��gxt��-��F�`�/�i�Hcp!SS)�����c��q����O���H��2�n�`&�$�ɿ� Ēe���檞�O�2���%ؘhR��)�����|���_���T�h;�y�jv�1*"�VK+�N"%k���#��i4x�_|�����Ç����y�R� 2��4 �[��|��&�zѝ�w��ޥ} �G~���u���]�63o]Y�G��wh�g��ƍ�NX-��cR,��9�fu�K��j{ˆF�?�L٩��0VKn�Պ�R����( ��x�ա���\{c��J�ݤMJ��ȼ[�'�F���B��g��2���g����s��0F#�=�[�!=��@����W�v���AR!M�� }�L�C^�8�ȏ��O/��֟)�t��51k���~T�{!2��y�F 6شW���v�8侑�P�'�|�q�pG89b��k��qB�=F ��ۨ��B�H�O~����!�:��y������M�0�F�{@qs qy��[�(���h��#�$h�;��@I��0OCC�� 9l �N�D�l6g� �K�>� �m3��o�H�D�� �B�RhTZ��#�H�l��%��H ��@���}��� `O Q����S���\.�r\� 8�n�����n���QI�S��"A A A�_�U.� ��IEND�B`�PKb��\;���4templates/hathor/images/header/icon-48-extension.pngnu�[����PNG IHDR00W���IDATx^ՙ]lU������v�-m-�������h�'c�*�F|0�GC�!111&��^$��>������B%��K���m��n�3��;-����;���Kn&�2���sn���p7�b��u1h{&�]��P�^��㸝����Dк��[�2_.��Nb���� ��-�z�r#�7x�5V�]�|�c+j�00���[W�mn\iǵP��e!��M[��/�0������EѶglj��ޭ͙��mf/��eA�%�j�td�ڐ��k��XZ5����B����Y�)�L*�fx�t �� !��O�L%�T�q�R9wa��c���U�Q&�"���E�Sj�\�! Q~]�X�/L��X��g�#0�<T(*d�|���2P�ؑ��FҎu����u8�v�l�갞�>�/��0{����BD���ɾ�*��ay<��3��B���ޓ�q\�K�[�BX��.���j`�0˫��Zhbч/u�iA�y�����BK��`�;�#@���}"��U��c{� HA��@���{�9@�`�bk���%3�?�s8 ƹ�k�,VYv��G7W<�����p�;�t_<S��.���\:������V�ڹp��#}������9�AS4�N���tt�`!�"�4��B4"��{"��B&����5��^d�B5%!����dq.�"�-�^%�mn���2,h�s�]= 6v�5�d��A�`F \���!lkl�7MG�b��M��}��b&����\%$k�H�%���.�niCo2��`F%En�:t�"�q���}�~\��Ś�w��H�Ԑ\<�WH�E3�0F��`�L���I �ڶ���'W�PFH����@qhӫ��d���B��=�2�)Wg��`�*���r�;�N�@��ܿ�|.b��@@&�@`{���3�)n��� �c�R5s@�����P�.��Z�(��-�<0.���W����j*0�{����T��b��Im�|�Ж�Oc��,~`v�y;���Ÿ0V�.�w6�!��b�~�8x(0���`���|�܂�uː���lE�7.��Se䳅�ɀn�=����N\���@z��%�F)o1�b������ï[�2�9�X����eɯ.�9��į�M�C7�,��#�Ho&�����k��0�g5E�P:��s���K��d����<w \>�19{qӴi �4\�0\u� �T����bʙ�X�+jؼ�?0�g��G0E�D�,�4uu��ޯO�+ @��痠����3���3�j��O�&��|� Bӏ�F���P(1�>�2�������[5.��"�qKB�5*��[�'�]2��0%\�����y��#IEND�B`�PKb��\x���2templates/hathor/images/header/icon-48-checkin.pngnu�[����PNG IHDR00W���IDATh��{SW����J����Z[m�G�qj[GD[���T "�j��M-�q�\���ހ�%aC����G�u��8˲jA�Nޙg6�=��={� ���p�+\� W��g��H������WJ�tV���?!_�4G��A3� �pM��d�wN�D�p�D���'�4����?�G"A�/tZ���b��פƖ�-��H�{������v�n���;���yq���Җ�y6J~d�s���ۏ=����;���`��P%y�k�m�$612�v!{h��%�� ��Q�ZsPfMD��r|k}��B�N%r I�7�`4�*DYV#Բ�ǽ���`�����W)��A;� �@:�� 5 �֢�9���<I�9��ϢI�@�L�"s���f�u9�Uq,�H!n\&H4u_`�DK)�_u|���8�w'��O��?�0�w(��HN��ca�!ܮ�݃8ç�3F��Mei/[.3 ��2S<j�*�� I�_��u�d�Ӻ�<��4%�T�{p�(O{Q����D�O���_�Ȏ�H�b\1UMMũ�Q��& NX�]3�Q�'�?;�?ފ���ds�tI�BQӧD%����U�߶�i��3�KDS��R��OGI�����`2z��m�fT��AQ+��+���]��1��4�Y�=���̪)��]2���Pu�����J�G$ �m;��;>��iʎ��4�G����T�b�k}~{����s-�d%�XT��Wu[ؘr�CW�$��J<�F�0n<��hbZ�v�h"�e%����ű)*M)��@�t Ƌ⬇;qژ��^r�vBh��%���O�Z�ռ���֍��D��Twd7*�~Ij��1Fa{��X�;�d��X4�qA_���� B$�l�)C�㇑M�|ygj�8�?��ƥ�l#�[~4��cn����[����䔼口{k�`�C�7�BG�D��qF��BH�@U�vT�$ACU�C7�0Q�+��4��Gٿ�!%�k!DF�v$4�a�>��S����:/��M;H�ux*�$7��t��nlF�u/��V��s�~�D~�3�^]�B�6�%����UqubLF����&�N�T�iV���!��|���z���3^����m'�� ٥�ࢺ�j[��L_w��,<(f���a�݃a&k��8��z�,:���v��z�IVK�3��q�Va<#���E1�b.�< o��8x3��2c��9fq��!∻svg6���8���{]�_JPI�aD�S�0�R,�X��6�"�ѿ2�|��ެD����dI{�d�D�l�xg��M��ل�'��:Z��Ȱ��$���E��]ij�>�\iOqw�;�w�g $2��4|YO�}<��|Y�h����#�z��Ҽ��m�d�U��rz�ޓ9�6O���p�')�nN�}�o�� ��� �IEND�B`�PKb��\!Qt���/templates/hathor/images/header/icon-48-info.pngnu�[����PNG IHDR00W���IDATx^ՙ��e�?��33;��s�y'^ys�IZ��EA��\ DD�FFR��yRTE�yD�$�F�`�*�Ů�)`�(JG��zgz�w�o���<���X�ٝ�ݻ�|y������{ޗ�yEUy/cx��q��� @ �("R��e�lftb�,dC-$�Y�#L F<�z��T�=*S���E3�W��%D%<C#�-�UQ Q��[P��l`�C���gλ�<p�0ȭ�ҡ!e� �$NQ�X�7�F �b�� e1a �O�Ԝ�% ���aہ�" ��#L#RL�|2>�k�F["�X��:X��P?ɾ]�`�|&�3�k��#�H�o@�:PO�mk�({�K�;gr�kE��ēB.��$���8�n��E��י����m�*5����L5.��&�@�B�`�Pq`cVgA��/)oX@�}5�|SȦ}�*�FB�tG�|�Wn�p�&:hJl�Փ�m�����-�f����s;��N����S�k*ۄ�W�Z<М�bN)��!X��9þa��I禁���߿rXD���7Z��:�a��(ങ�Ԝb�2��k)��Ao�q`��ɗJ �g{^��+}���B�|��,̞:Î����v��!��N���G��l��*>���f����L퓝���>��e�FdA��P��A����B)m`��00��x�3����Q>q�#Ͼ�l���9NY��S�0�S-��Io�t�/��}�Z#A�28�f���U��BBfiPUzМ��o�,���;���@�[�Y�jP]�z\"���4T���(�u:!�=�ׯ_6��NK��(��P���(�F�n'�n'�`��i��(�'�0��G��c%� QS� `�����<���Q���q�̥L|�r:)l��>���cj��a��)`h��>��s�����8�˷�{?p!S= �,!�U[�E�Zl_d�F�1�˔gߠ0�e��t�O�`��� 8�g�~��L =��A��)�� <{�������[@�i�}��� P��xQ@7����`�c`�u�5x�q`T����+ t2��;��(l �wlO�i����1�d���_A'�<�<dF;.b� � 8p�9L��ĮQ�1��0�}]�k���BeC�L4x�,��ʝtR~�8��r�k��i��~q�/�$&o��ĕtr��^����j��8u}��q���hb��<�ƷЍɣo@~��� aq�=�[@�L%C��1@����Kt2�Գ̙4@�Dp^������kf�G��՟���M�IQHGw��N.��4��20aRk�A�)��u�}�$G�Zu"���X�ӓ�"�wo���F/YW��F�Ї�E@��}G�?=#�ɦ�R� p�Z��~d�Nf��м�$��R�Cz!@:;L�V���xO�ɡ��|)�c)n�qĪ4���/������f= ��߹���} ���Efh��֖@8���-����ax���.�^}=�z��6zQ~�8��xF.`-ҩ/7F��)p��� ֿ3����憲EM�R]<��5:a�4wn7���j��_z�=�?�\v3)Vc(��ai�4n��'7���Μ�S���� ��<Պ��`�x*́G��`��gx�这|��?ZDބ�fi�m�Q�EdϹ���dQD�fr?;F=Ih,͡q� I� 4��,Mă0�Z�a��a&G&� �P�;��� ��O�����w�ʃ�Na1=�g�8���n+�@�!LgI��0�'�jT�O�.)�٣?�e�<����ܚ����yC�qT�F5l\����c�?�4�p�Q[|���p����#�o��z0�R���g���N�.����A�r����f@�/�y�1��r��%T��� ��!�wc<Ā���m��amLҨGlL!r��o�(�� H�|����W#2�ȇ��s�w��Op╇ydr�q����9�,�_N�<z���5�1�/r��,4���H$˱�nT�C�0�Y�Y%��h{�[��@X"@7*�r@ 𖥄�!��B@�F{&6"`�* �"!�%V�2�����=�\x �lw���+�^������V�[)�Ql�v|ߵe�s�����ئK���,���^5s�IEND�B`�PKb��\�]�6templates/hathor/images/header/icon-48-newcategory.pngnu�[����PNG IHDR00W���IDATx��� he�)�n8 u�eu�tt��87VQ+*��#u � ��� Ҋ�yC[�:�Z�mr�H�|����\�z��)s6��v�i�M�Ҹev��>����]�븆;����y��OBr�Z.@.@.@.�����GB� O�ew�`vQP�1�"-�BpD��n�!+��>@�Y��#�qK���&�@_���r:#��+�tf<���,"����,"�;�#Й���&4�$�Dk6'��³���`⸾�:���@k'��&!��-��5�ƣϳ�����,�� 8Wr�r����� ��.[��(���2��W"0�{�?2t��G�0I�����m�� ���4�P'��3�k �E �Ee�i��S��&]��� e�ĬQp��Ԝ��14>��%��M�V���=��gO�RC�ۅH��c�O�Lt{����ڀg�1����Vx�c�x_�6_X��)L�L�ד�5�;{���|E��m�R��5�gݿ�|�m���0oW�����Y2^��p�h-�݉'�F��5�ʾ?��w��L!B���x��ѹ�è��1�y^�Ŧ���"�K��V�����]�1H�b�\���P�OE@}̧�E�"�� �Fh���}l����Οpll�-�l4�9}��+���7Ps�o-@�d��Z��Qrh�������{{������|r�<^ �0������ѣ��2h����IL�A}<� �J����T��dcJ��{�|\"���wcmM��w��`<v��8N��#���hmK�y\����Ƨ�̮��5�5���o���/5]�*]s@Kp�>A�9�7:w�pۛk����Ne��v���ք}��h�]��N�:��ʋ������;Z$��q���j��L�׳�η�<�J"1��)�7ڭ$L���Yu����J��pױ�t�I����?(�IEND�B`�PKb��\��� 1templates/hathor/images/header/icon-48-config.pngnu�[����PNG IHDR00W���IDATh�� PSWǕ`!�EAT����X�Z��E���������Z� �|V,1" P�� Zݮ�*j�b���Auu��nϞ��GJ 8Ύo�7��������w�9������xwt���!���A�șB�MK�_�n�Gl�v�9��s�����. G����3�Df^D)���*�����G��|��(��l���m�C �F�Vmw�/���?m������� "fuqi��~�)b����^��W"_t�!h3��- �Ӊ{�#����=>B�w_�͞����#2�?3 u�b���CT~-���{�b�XN�4�c�l�_����������F�2nhD4�J�G�#���iF�r���6�?�lƥW7����d9�!�W�ZQYU�����OK<��]���Hb��c�饇�U��tM3K�����<�1�|N�Ϡͤ�+����!�6G��7#���Z�w�><z�ZZ������Td��>�����w_�]�Sr�+D�b��K6z13`4����ۊ��zGx�.w$��7B�w�Tv���6ܽ�3<x���dG�N��83��2��>s�� �537�3�F��՟ymu�>$g�uĘ���K�C��qX�u�����Fx�����Q� �a��?��̮���'`�(��aU(g�w���\�3�c�8-�I�/(���7�up�칛�YR�<��B����/���S�oAw�ס��o�#5^�Z�hq\Bb �(�3��֏PRzd;� ^O־��A�|C�\RL:p��KJE��o����L���ng�o�}����Q�Љ���=d4�cN��̚ 97��xȮ��Y5ล����ɳ}��0�ף��¨O�ӕ�̡O7��~̟�t�}LI�xY-tw���7�vF���1O[�? 谕UUk���f�cA��3�z:� )֑�Zׯ��Q�e�fl�%%�pO ��=�I�����ږ͝;�r�pVo�~�R#W�i� �(�N�h�)G>�˼:˰��QgM��sJ9��̨�1_��� ���$" �Yk>��������m�zc�?u2�NvO�1���g,��]x5��O����M����O�����m�S"S5�����(,�,�L:�0Y]݅h��\?*DHŘP!&���>}�TU� J�r�'D�F�>y�i���Q�U�v�����N1"��t� �"��D"Q������D����˗Ar�� ��1�~�wm8$�~f��Ɠ&�$O��$[��#��e��r̩���2P�p�_�_�<F��Cb8$W���J���͉`�devg�E����6�e�)J�<� #*�� ��$��EpXး|�8�1G`P���UR����*^���r�hM���;�m�<�>��`��Rh�o����9�Bv�`S�a@h�\�"���xU�P�Qixy�r�H��|�$�<�k�U� �䳺���͖�ö���T��k }�e�~-��K�~'ē��t�城Ag �%"S���"^]d*DMQ�`�����ʗ�����0i���R��Ьz�#�=2�$\��*�BkPQ����u�q½�A�Kb���M�dMf���(|��+b.��=N>�U�?a��*ʼ���V�ߊ�����>���^�Vl�aRTę+v�#"L�J�L#���$|��'Df�`M�o��9�u��0IP� y���9�cy/Ǯ'�����^�+��up[BD��n꿾ڐ�â�>��mڍ#q_W<nW�*[/D����n��PH��a�_)����$��"�!\��Z�6G!χ6Bd͂���vcI:��ו E��̃�H�+u�)����0�Lr�!�9o�uD?d��z^�`Uҫ�|�����M��mT��u�1���~V�u�dAW2��44�9w��ϥ ^H.t���:k�D~���J�>#4���5� �$�lCI(Λ0w�EH���s� #��O�ٯ�i� 3�V��P�5�2�MaچDnOrھ� �Pf&���d4����5ƷV;U:����[���b/Z��ߐ��EB�� � '���X����rZÒ�;1����B�v霈�Y����T��(�x�.� �Li�>�b�*����lO��x�g��G$}�e��Q��&��� �G�����ED}�":ޫ�]��\���h��u��M$�ڼ;��O���K.Q�IEND�B`�PKb��\�V�- 3templates/hathor/images/header/icon-48-massmail.pngnu�[����PNG IHDR00W�� �IDATh��YkPT��ֈ1^�6��ӎN;'���IZM:�Lz�i�Igڎv:�_�646*E�*o`�boXAPX���MDE���u1i:O���~�����u4����<,g�y��{��}�oǍ��p��'O�^��"�HK`' ��梪� ����s�222(d�c���t��ݻ�Z����n���#55��c�<TWW��������+477�ԩS���{�vqq1%���. ��}���W�E�?ǎ{��vMM�L�����6;b��2��.��,x.̂��p��M�Q�����&����1���5<�_���FDf���\�n�:::p��Y=zt��Iz�@�6�6�M���������`��"d�u���7mNl9]�����`1�8q"�Q���@�Q��������Y��� �v8Q�}�����]���U�yCF���NFI��'�}}}���mx�r���ՉVZ���(Ҩ��3�z�b�G���L:�*FO�i3�a��uB "��:�K���F�9���ʕ+�|�2jkk����f��M�$L3�\�)x �nJ!V�:���t|t4M��Qg�+,,��>}ڷb�ߠ�0ڥ���Kr��ʻy%���� 6,Zbee%���%A�<��T$Q}}�%�M��#!��U y~����������c�yF.''G��I��z��5ܾ}�݅UP�MM/���}�����0#�CFE?��+|xCC�^���/�"���-�Rč7܁��x�;�ȪhDNe#�*P{���xo������<��Cia\VҥK�`�X$QވB��"JQF�d�NW4#��Lǂ��[�Ht��݂uI��Ad`X)))-�i$6����2�\~�"Ym=�k¬h��BAB��;�qN4�4a�˶�탥n� HKKCRR�+� ��ʒ�Y1��O���ɨl����&Z�hh�g��R����� ��� ����t o䍬�Q�GM&zm�c\ɓ X.:rQC/�DC��A��.��`���������;����t1+d=y[��n� [d�D�{�a;�ʴhEL+��\"D����DG�d�����5ɾdڙ��Ü��:����Jt���H�R|R���e��{v!B�-�BƋ��;EؘY��ǖc��_�bq۫r"n;\��|���p��> SF��m�T|\�*�m�>��&>��)>mz_}M����,�N�F"�h��E����e"��F�F���D��c���Wx���Q�`�ɷ�{��_��p��� ��KY[� J���:���&G'bSg2�c����������F��}��E��R��~��,F[�Ӓ���hEhkB+@� �tH6Q�l�g����m�v|�"�#����q��>�f����J�C��"f��Ç_5�'��r"�>@ �̍�c�L�d-� Pvj4V��Fz'��sBCCg�(�=,��'z�kо1#�5�@�7e���?�ڪQp�ʨs(�СC�Չ�D��e76��5�-���ȩ�cгo�,t_Ձ���D���?�bŊ���4�`Cʉ����}Â��L�:�_0 �-a�EWa��\�aЉbcccE��$֫��{:s�y�M����0طN½���07��!��6��$Z7M�=}�W�PN$�[*(��7���n�O�2�U���qkx0�q�p/q�('~ NQ��0����}(a��ޛ>K/�,�U�{����H�5,�{�a ~��p�,�p�ϑp����Yr%���V�vw��@��։�soL�=�O���r��������}3��M��5a$��E�fTT��� Sʉ��b:�E�w���;�1�cP\߷+][�e1K!��298p�[� ��3�v�I�A�?��#&ch��zpEO�uC��PE����B��L]�ȉ�[F(����������3�;��g[��7���MLo�Z�K�ł�W�:��lH��}�?��1�#�+x]wxl��`Ǿ��^o�y��_�3����{�i�ck�?86��;�}����:7���7?yI�;ʓ���� T/�&�qLL̟|r"�u�����yH�y�]M�k��=v)���E��{�V�?�X_N&��9m����hsw� �)����M�W3��D��X�����r&�%����u��D���9r�D� �:��T�W˖-[$h��)0�[ ����N٪��i�Z�}�:#��\_��!�r������hU`�kz�Չ}9��<��or�y�iDT�����s$�jݺu����"��+]Hz���z�N'j֟qE(�� ��u�\u�,�x� ѹ.�ވNt�ˁ.�.��/�D�gN��H�5�%��'�={����{!�����SQ�W�ڵk������BT����4�A�����:px�Ep���\y�?'걡�HLt�o3������!�����-IEND�B`�PKb��\���e 1templates/hathor/images/header/icon-48-notice.pngnu�[����PNG IHDR00W���IDATx^ՙ�\W�?�{����I����tEP"`'ҒY�(thE)���e����vAA�����Z�NDT�T�JE�4R�m�������G���0w�H�~�a�{x>�>g�U"Y��"�����)��B)����n=>+��Y菪�E���e@��ā�C �.�9����(. t1@�����t��U�A��2�����<+���{���(�SP @A�,ggDZ=����"���Ӵ�#�X�4`�| n�A�%����j�*�!i�i�S�5�ܔ<�ܾk�K��y��H��qs� ���h;F��1�1��%�d�0a���h�Hc� �!��snq��_�!�4���oWO��̥������`-X�i���1����*�,��!�0܂��lٔw���� UJ�h,�es��:�a� @�X�q�����Ǩc�1m� ˮ�`��E���}��h6�� � � f�.�XN�Wj�:D�0� ��T!�j2� ���EEF���6�-�v��Z��r~�����т�-� !"U�|�*l�~�' `)dB;L��s�\]���_8.`bȥ��P��Fk�v��>i\�#�w�O� \�_~��@R�n���B������.Uңip56�Pm�1�姪������,Q���a� ����&��'98� !jC��@=?S��2.�|�� ���n���g.Zׁ�?p�̏�_���,]�)|h�� �Л��{�(�{���A���ݛ�q �`����0l0nTN�4��`�++/��������6��P@��;}���jz�O3,�j��":�B˾�6�}��6���)��̀P��)�\=�UK0�oΞD�d@b˨�~��`"p����D�+0{�K�VJ<�������X8���h}�\T�������@2 RL���P6�<�V�^��au��_��)?�"X����Fգ�T�}�T �@�Z��ҝ�p�x��k}(he�`���V�S���-�� `+XR�?�����2�W�����돖x��Mh�=��PD�{�� �:�R��+�TA�BQw��C�%u����Q`Ǎ�T��4�$�:��QʁX�La}�m���&l� ��l�To�<(�z��e��k���Ju�P"�=���-�~b����E��U�9z�[�`���$�g��j-��/3ΗIEFjU�e9�k{��^\�����3˼��E��m�X��� �'��@�������ȧ=$�ԯ�-�La��r�|?u��Mp��39M!�����^��pҥ݂lr�=M3��E�����2ۧ��M�ߟ��_l}Sz��暠fx7d�"v�N[S�8�X�x�%^��^��d�>c �D �� c�fW�w{Ħ��Cc�F; �?��%F�c �yh������K`���4x���`T�K��|>y+K��}E6@N3�0h�a>-���Z>x����_�ɳ���<:?�:q�G Ұ�� ��k����Ь�Z)h�>�� �o�7GpwFSp@d�hmC3�$I1i��<+l��%�~��z�tt�fR�;+F�����Gah q&�$.�xT�%^z8/8B�.p�(��H �����,(��QU�A q0C6M��K��R�*�(^����!� 6��E�C��s�������e�@͊7��Ǟ~�Ss ��3Z�iT��?�QƯo����FxM\~p��G�? >��#�5�.T�(4��Ad@��rX �m��LU5�x�@�%=;�0�)04�Q�s�WF���~7�I����e�j�X������3�^�_l ���>T�uJ���p$�x�J�{��=�U5���pm=#T�������D3uIEND�B`�PKb��\���1templates/hathor/images/header/icon-48-levels.pngnu�[����PNG IHDR00W���IDATx��رJA��@ -m���"B Y�4� BH��`y`�i�Y���`!:�p*����a-,,�l$ͦ���}�ϯ��+�ffG��=����f>p�� �>{T!(H(0�㤺Bh!i,`��4�|+� A��H���t1Pܸ�&fF�n������W��L���941пp�40s ��� "c7q��?��B�ꘑ%)��k�\~��D�Ak.&������`IF�Z�i1%X�>�x�'����aA�L!�`H,S(�2���~A�L!�wo�`Y�v��nI�(R���(!X�fJl|�(��`@JQ{����i�"�s*$�ŀ���O!�����eG�����DŽ����)�1q-`l��|Y����ë�pP=���_8�0��4&8F���+%�cD�M�3[�G�������2BNe6o��/v�E9�h�������͙rIEND�B`�PKb��\�sD�% % 3templates/hathor/images/header/icon-48-contacts.pngnu�[����PNG IHDR00W�� �IDATx^�Z�T��νw3��eA` �+`y�`Q#���e-Ķ�E��(IcJc�I�M��h�6��F��j��R@�B���V���.��efgg����q��}̰ i�%_Ι3gf����?w�PJ� ��T1&\�.7(��8�X��Z(�� �|���1}� P)1��%�{p�����C�p�͟�� Gƺ1,��9ko^uӄ0��p�6,8�]:�Ϧ���/�b w�0>�q�9v-�o��l�0��)@?!D�3f�Ƽs*� ̛G8�Vo]�B�@f���Ҟ� ?j_�X�-����7S��a�4�?�V�J�x@r�ڵKt]��~ʬ6�~.��(L�n�H&��U���I�0�(�>���ʛ7b�,�&t���~O1�̄�ށ��͛���۶(�+�'�iny�ͮ�yK�/Zl�x_K4|q���5qx�;��|M�1�jF܀lW@ñ襊u6~lF�&��Q�k���_�6mz����$��2�>;���͢/�U���U�/v�lG��:��JA-��&�pbBr�=��N�X��; 5��S@�^�XϘ�hA�<;^� �͌蠠vY��h� �^e��@ �%��WG�l|�j�-�8ح��N=��7���K��o�0��Q�jP*���MND��?j��{��`O~%·f7ឳ9��F/���9ؖwh�(K�,i]�bŃ��W��(MZ���uF%�P�E25���h��ZԨ�k���l�$1r�,ښ���*l�۠_�8}�I_����ի��nx07j�f�d�6�[�K��L�P���h��o��£���m�D&�kn��P ��<p���v�]:��<( ����zu2 ����`_� ��N�9l����21���#x���5@F��I�B)Ν�{t?Ǝ;1���~ �&��b�( �LI �Z�b.�,!�!!%}��������a~x�y ���V��3 ���D�G/��d ��5@d��%�qK�''�DD�8�A�li��a�3a c�w��q�*��9ޫ���{(B�FJ�Q-H�:���lZ� �X,o��-6�P��#L�u�R^�����]u��J�1?CL����8c5�j�#����ҵ�,��$_�8����KA0�?��JVw_,�G��9Єׯ_��˗?�(J�����2��I��r�䁓9�������n�)��C�� A�R�e HӧOo����a�-;���S� -���>�zu[�(���ށAժT�w@P� 4`l߾��|>/���qG��7i��z�=8�5���!��B�L�}����ŕ�05����Ju�C!�r�{��=��ρU����D=7L@���m[S�>��O �LNG*����1��y|���6�����#>�>`�2"���&*���jp˴:,�X�dD�V_�����8�3��O�8�|8�6��rP�2Z����qϼ&��h��m[�RbZ}�iHc��4��u�l;�q��G�E �r\`>Vc~�)sY=���S�4�Y�4C�e��M`)�����}0ם�SB*����)Z�c�Ժu�V�?���� �X��Q�\�?�<�EJD��sk�p۲��2(k��K�eӒ���Є���uD%��>�Dg��TNoٲeݗ�-���(�� �VQZ��a����]��L��B4�-n@UUG.�H�����S�����Q0��s<� �m�f2�S�x!�0R�4XCC�,�lV-ʉ�!�8���1�8�����%���$0�@1Bd�rz�֭�2�0N^����gH�L�J��h��ZY�b�"O��l���˄64]b ����/�6��0 !6�d�� ;F4EK���7 h�&WU �P(&%������U�� ��3R�aZ�ƅ��`{���>��G��b.�����`��a`������[L�J2��E���L.\�(c�0��B��ԖD��j,�B�*Z�~x��k��Z����CHY�h��o�u�ӑH��ת�L���-��?���]��5�A^���O��֬Yso{{�b�#��m��k�R��$���$�u���L����Fw��B*��JQ��^3�v #�l}�Et�[��*>Q��`�%^����*-�<p��+�#+��\?�m&�95��"Z��>]<��6�w]*�����*��QqR*,�,_�_D��N1���q�4 ��JV?\&HaÉ�4 4�����=��Q��u�@�G����O̱����S�^�e���e����IP{�PG; ������R�f4!):��I6a��x�gdK~������~�� 117$�8mٍ���!h����8>n �bn�1T2n���31�(���ٱ_�m���]TJ��%�L�̚�HY b/��"L�1�.Z�P�/�nX;߶�CIEND�B`�PKb��\�{ ��1templates/hathor/images/header/icon-48-upload.pngnu�[����PNG IHDR00W��`IDATx^ՙ{�\��?�s�;������&Ƹ�$�4I}���F� �M�EZ���Ђ�Wi�lc�F�IJ�BKK�Z�}d��Ģ!�1�)ژl6����ܹ��_�Yf�sw�+����s����QU>�>������@��U�UM*�>�-��iq����v���#�'�5B�Ү�ʃ�z����%�`Ă0�=�g��8& GI���{�?R�IW�e�F7\F�� �`>,�s�(NN�����1M܍���ݳ.`��d�e>�ZS�`r��CP@�T�x�"�� �J5��cFp��3�v�����"`�v̉0�n��5&Oh#�����)^��&�1���8��Vx]��c�E� ��:�-��h]�4a18�H|58�E0�LD`B�xb_�_������7��z�����Wǜ��o�d�΄�#^�]�~p���ɨG�"62��,��X���X"S@D(Sd���ß����������W/zc���n ������_���n�-+;V3�pq��� �. ��nH�*��;uhi}��i�W:��b�ݷ���;~�����'�?��<��$$�yJZ�]���m���?e���]�6�;��ZQ�cS���x��7Մ��?g�mT�7�1_��?�=�o�9��S҄O'_v,�d˭ϰd��4��?�#�+'�H,0a�DB*X XKǴ�0Н��{q�z;wgg�L9-�h��ɰc��Nv��Z�ژ ��,�<��掰�@�6S�%�����F�u�;S��2S ��x��2��h�v|a���|�ݴ�Zy��wi^��+Qr%r6�����h,`��x�*�s�Z!q�F��;:+�a��T�O�ۯ�v��=�;�I(4e�k�|&�����(]�L3i�����徔�����d&�� <l�_�6g@��V0&�ᨲ�դM��JH��{�/� �9S����cޅ��{H�'t«'�2�x��P`�k�:�%�����y��'� ���Z>�+���� �p6 D ��h�.��RZG�_��m�]� �.nZ�Cwn!+��O�����0�����"Hͽ�*J��ڲ���:HQ�R��[�o�NA��b����a��45�&�HM�=)VUPO]�J��QI�R}���ȩJ *�J�A�x��e�jeǂ��������Lx���*x%3�ʀs�P[ęP?�(��~AP��@��aB�B�#�jF!��#FV"��� ]�0��"� YP�i��V+"@��t���'��/i�%AP��#�����>�]Y�@��J��6$u ����d5J_\�fk(��:ud�����o��4\�*¨e*�� �!K�C��MO���l��G+��v�U7�6$�T�c�H�~��6�\���{�;��S{%h342�bQ�������S�_�,�)�#h�M�ꦾ�']7"�� A�ń2����P �=�����8%�삮�.�����Q�)%Q��彲�`|t����F{�ZڞY����e��\���!D��RN"^<��レ�UjY��o�on��dF�K%��?yh�����_�Y{^��}���C��B�)帄O3� D�6�Tb8P:�Sr� 3�r���V�����Ҟ1��B�3֍ ��y%� �='+}��o�훹����i���y��>(�œ��*2��!�(�C��x�̾��U�o�}00+s�Z���%�� >���R P �A�����:� ���4�D��7�v�@�����y]�lY����횼TP��a���M�5���N1.��)�v�*�}����1��B����l��A��E�Vb-a�L<��h�;�F�;N�K����~|�q�NM���z%��]L�lX�־i^�u].�E�ý#��.��H���zdгʏ]u&ƃc�]�YeƯ�j���N%@:V��L@c�\�칺��l� S_��a�� � �𤧇d�����N��������`\�fl���U�gn,x ��n��f�@ ��A���s����$&��!�?.;�?�Ҡ$���SR�sH��{Rl�C4IEND�B`�PKb��\ ��] ] 5templates/hathor/images/header/icon-48-groups-add.pngnu�[����PNG IHDR00W�� $IDATx�՚wXTW��D�P��P��j4�]M�$1�쮚��Fc���(,�� XP�D��� � S���x��eF���ܹ�ށ���V�����q�'��ׯ ���ſ��3�$p��i\�x��ш��Q�>{�,�#%��zo-�?��=8884$$��+���������7�T*Err2bccYFID�4���D�'NL��ߊ�C�o���B�@�1Ҁ�(���<�lY�2eeeHKK�իWY&�[�Opww���WBQ�1 �n=P8/ώFU�X~�*+G ����Z%�0|�~~~��'���!�a, \��ũQ��;5IsP��/Ԧ���_�&�S�I_�,5Nc����D11�p��ݼy������O��~�ڌ�+���K�h ���6�[�<�����x��¤Tk���D���P7��:��ѣG���EF|��=��6 5�sQ��5�צC~i�QB;�+O�1��ɐ�GqZ0YYY�g�7�&��˸�"33�b<=he�T(ö́��(�'Bqe�k>R�)�π��t dN�m~#�����,�J�Ї�J$<~�yyyHOOG��Q8�hz�_C|. �+�NFm�P��_���o�#>�D��w���QZZ�O��G%�-��w���-� �)x�D~N�L�$RSSY��0�D��֭[�7 999�P�}�J�����" �ʐ!Hp����|dd��fR*co#$�2�PT\�mv lN�����F8�*� �<rL�(.���q�|���a��zk��ώ#04;��X�揤�\M%xZ���8FS� j!�.ޅ'������,u#P"2�B�y�`����CZ-�e����Z�G"�h��d� If�F�9��D]�8�� :q��p�u���H��#�Dqf$jC�c�Dt�c�C6*aY*��S%���b9��a�) �Y������ϻ�C7&`MWm���ē4N�)))�v���!y�E���7]���T�ϕa��fEcbd��Ϯ�`uzVfV���)8�]ЦC��/ L��i�(ܨF< s��څ�}� ��C<�Q^Q�����|0��s̾��#0�|!f\���� 1�ο��c|��� �=�d(�b �|p��y����4��W��5�<�Z"�!\V����L��23��0%"S#s1�L���$3�>��ABF�&� ���l�s�pC�a�M(9���P���~ P���t_l�e>z� V=��g2����aH"������� �,�]_ ��A�����#?3 �Q���Z`4���C~���F �O\��t<zX��S�Ga)M2�t:�v�.L̽h�H�H ??���H(DT�æ(�VY��?� wwB�^=<w��K����n9}�e5 �}0I�� A�&a���W0��0&h�t�Pq����R��(�k� 7}T6ċC��ި$��Du���1C��T��B�0�?���(C$�t��O OZ���}���Pyꬹ���R]T����!C<��SOC�{�R����j�nMRw��~�a'�y�b��ߎ�n����,��h5?��ɇ�b����!�Z�m�B&2�s��(u�'��P�n�}��E.�G��>�l�=�@��ч���sP�0�=�.]��Sy��%,,B��=�1*�:�µJ:�kg�<��Csp�=ĖC���&^1T�h��܀1G���6��?�BaА��(��jŊmh��6U�/��C���8t�{=��:ҹ�(�ڣ¹����f�%����y����g�g�D��ZO�ϝ;�#��>y��3�<���:�v����� sn�j�7n��^0Y������a�a��>�9��T˧����?���~��x,(��U�t�Ԧ-�ٶE�~]:o�jB��/tdtQ����ݱ�tگu� �S�����*�����&��8}�ҷ�X��O�q@�6��ݸqC%P��+�U��!sl��}:xf���N���s�{�:�q#�6:��M��1������ڠ��5��?�C㐒���B) 5��g�k�@k��K/\�������'� ���G�}5�^��+��E��>V��zK���rt�芾�>�Ǘ�C���K.��(�X�=��s���ڢ��혰� Ng/##�PM�gͼr����H;��TW�� �l�����v���u����������E��[�v�+�wzSE�1�B�A��ܛ��H����=�9��`��+:���,k/$g�5�&�6�����وET��G�Ƕ�A�q�k1�V=!ݭ�Z붸��3�-[��E06��V'���Jx��V��x�n0��B�F4>�s�Ϣ�B�y�#,�u��4��i*� x�$�pf⍭ؘ+�"�����,ٴ �V��צ����\�ɹnZ� Z��s��ս��-�Yu̍���+�c�#�bA�� ����|||:R�q幗��̰��,ĝ��x{<�J,fQ���Q�ڠ�Z�p&�4f�H�uk�V~�r��U��\U� xz��YWGhjQ���¬T��7� �Lܵ�l%B�{�i��W٢��^c���G֨�7�2�s(#>G]�/���U���S��knWB��RGV[0,�ی����c��+:�d ��,(��J��ٻ�KP��� *j��2������}\��D��6�f�� ��>��������l�5釧@��'�Cv|���G"�P��U�U~��4�=v��m��M�9���rK�/3G����ҝ��h��-P�k�IT�����U�]�P��>��y4hGH��k0�mFܩ�S�xI"��������VY��tmC;��b3th�*�^DO(﹢�����n�w'29m B��-�[!;��$9�/���/��}�;fZ�b�'L�ސ.F*^�*� o�2�.ܫ���n��ގ�ںYH����t�����t$��!!)��p�B|�_��k���e$*�7@q�����G���)�>h��Q�N��ZA�C�I���P��s�W���|��λ�P�v�|�2���F�)A�Q��Sױxf���6=!���G�L �m?f$fw�s]�4�h�ri6Ji��d�N��n�Ixj�~���Gd��0� <��:�ھy�� zO���@ e�Nn�z�]-}J��ߑ`�^���G��83�����s�z��!H\���Mb��|g�]~;e6�@�!�u�!!�wW�^�_��o�D�萺pIEND�B`�PKb��\S���/templates/hathor/images/header/icon-48-user.pngnu�[����PNG IHDR00W���IDATx^�{l[�ǿ�{���y5�6M�Ж����B)X���A���Ve �h�&���Pc+�m��M�i4lc�n���iak�}��G��N�{�9�_��Aqb'���H[I���?��=�i�)�Cʭ��,O�쭨�� _1:8C34Dخ���(v}��EkEƽ��p��lj�Q����"u�N<�U~��t���� ����\sF����s�Lc1�}�]�o�?l~;P&���v � kc� ����� ���=� @�:@���+l��-�0���:p��Ez�_��!�hbf#����gT������tN!�->�mnlo��Ry^Dm�`�8^] J$��>�;��a��p}9&�Q��k¸ت�� �{)Q���:�cY�����Ի�q��XQ�R�*�R�}�<�����6t���iJ����d���i�� �,-�M��dz�$�xW3L���ٹ・��g��)�U�$�V 3��1 0bK*����&���W��+eL8x�:>�ԊK*�p:�'n��[��� νpy��ȧ�������{ܕ__䇘���ޛ�)�#� �b���ТkV���4�mvg4�2���WݎhݬH�O�qo�Ё_~��tN!��B�������3�L�S;"x��q;V�l.k��~�7���P1pf� �#l{s�{���Ν��� a�� <�a�=#�� ��ǫ�v�:���&�+�EK}��.�=������e�]� ���֖����6���1G�h�e��K�p�`��<������G�v=��7=6]X^l������2�fU��p������R_9��B(�#�v�PW���)�UZ�������5"=0���ֽ�*ٹJz(�`E�K���[y�\��KZpS��2K�#\w/$,��3S�<�r=� 54"�`�S�����uf7Xכ&_��0C�� �61�Ś�7���[P,={�2>���o�ҁ��ş�bAK� �:+� �ZȠ�!�CI �x,����$��b�'D���2;�ƭuQ�%TF�"���H��_ �`q�&Bk�Ar��X%�!y�O�����C�U���qG�. �6�N�d�L��aA~R(͝�]�|xm�c"���N������ �q\lZ���'B��%q}�l|�j�"L��崙�l@�02Vq[ d@y �#����Aa�4[C�"v�=QY߈B)�t0����L��8���+a���SfS��h�jB(V ô0��IqƷ��~� Ji �eVL�"�� ;��9��،�8��g�-����!�@��iC�a�JG�g�{.@kGd���m�#�5�?������� ´�6��}�jfX�*n�o���|80�m؍gA AD�?ڝN�D��^UJ>�=r,���ʏ��j��0C)�zA���� b�����,�+xR��0&��ĐM#5�@b�d�I�V al���Uߝ��k3�˷�����*�V�d0 _�q���s%~6ЎH�l#Q�LAך~��`0�)(b �r�$H&���J���On� ��]#��ڰ�慸ln Ί�=` $8��^ 8�Po&����JX��!��%f��3b20H0r���D�R�4Nݭ~��s1�(���&BڰH{�4�U�Ƴ�07d"2����'�[P5��1�$�� 0�iE� � ��h2q祐#H~ C�)���>��W/��weMm�s�0�0�(�K��I`(>�ţ���(O��ZO�hSy��06�f�0��tH� �A��"x���� h(k~wT�s/_3MJ������r!������#%}beYU~P��d$�l(�$8�hR_-R��r0pa@I�r0,x�+p&.-���ݟ�����'L!bZ0�P�Rp</�#��T����.fS+p�kY$vq�*�XZpnk-�ڒC)"��S*S���f�1�'p��3���}(��"��]�)q���j.f��L���t���6hDdf��:J�} ��G>�� d����T�:�3�<g�cX�oZ+�x$���a8i @�!���05��1~V�h�5g^х �� �CBQq/Z~XqJ�W�}��x�IEND�B`�PKb��\(��1templates/hathor/images/header/icon-messaging.pngnu�[����PNG IHDR00W���IDATx^�Y{pT���}>��n6�`BH��LP���M�� ��XA�Iĩ�����m�ڱVG�v�m��GE��@ � &�!�@6!��n���;s�x��$$��t�;�s�{�}���s�^%���]������������q��`#� >�0!8��Z���`$��`��zIZ���wc�3l}��>�@�.�x!��@�s+Ǭ|]��Kؑ��}��0%��rl��3y��r�H�zIޢ�^L!�2$��]� n�o9L�i�ө� ���Y����*i�r�P4�w��LB.�KK+q���0*��Ī��� w�Ųo��G�i3ת� Sk�. {�v|c�Ml��Ib�y9�Cx���:�/�p�g-�ӛ�}�){nG|��o�6G6��:#`v!?02Ѕ?�\�����$V&A� C��;�9w�d�� ��lt��"�����z�0�q�rD��a`��8~|G�nBp"I�HHD��ې_�u���0�`|���پ�N2�`,R:JD!$✀β��®o}�Bx��zޅM��)��*a��ɋ�G�yD�%E.��m�5i�����'�ċ�: "S��$���^��U #��P(�ĥ�ͱDXc�h�e 6 ^L��v�|�~[�W��M�#a� )�B�:EJD�6ֻ�]%����@���㰨�p+��wDROFBz�[��Fr�JAD�s c�1$��H��1c��M@����DZ��RNj�Q�b �b͏*1���T�6�+��5/)! #&�Q��z�*hY�O��mԘ� ���~O�0�^2"<�<��� 2�����)��YZZz���?���p !bxxh����njY��g�Eg#~��o۱��%��X9�H�P�z���^�p�322�WWWo�����t:FGG�<p_�-���[��p��p�`�nj�a�$4yqRs$3�n~:��I���9�%��k6h �dBʾ}�v���/�|�~�_�Bww7�͛6LD�ӆV�nJ"��0�� 0����y�zƊ�^��i�s�֭�W�X�� K�`���ҥK9 |M䅢(b��>� (��B�uz��{��K�&�w���U�w\�������Ę4G�[�zJJ ����� �y5:MMM�?0��'����A__�:� ���L������裏nNJJ���D;::0�|X�Vtuu �zzzDk��o|*z/�0�r�5�������b�ŏ��|��F@��ڷ��{%K�d�T��x�^���mmm��� �������I-�p�L{_���#H��g�áW0}���y�������S�3����-�A�&��R�d��/<�`��ϟ��b�v�\,�6�1�>���sq�=��&�qJ31�tC� ,!$�����db���v�p���<&�������͛�E]�ISu�WZZZ�[o���J����W�dΜ9LLDbƌLT%-}�����'U0Q� @�߳g��x�"-qu�c?��w��g�oTl��4B��={�)�ϝ;'q����B�4�B6�2�&ω�si�����M�߷����M�86l�PN%s~{{;� J$ֵ8�ZmDN�ǃ�F7{Y%�bJ�>�k �ӧO/b��<�6BW^�O%s K�C;w�\.�"t�Z�Z���ĬY�(q���9s ��1��ʡ�OQRrGwL�D���8KJ^�s@�\m�8��r��3����� J!�9�>}eeeZ�s��re�$�����4����?Ef�I+���N�<�x�ׯ���U�]�\�n]%{��O���?%�J����TJn�EK^�2Xn"_��"��.�&����PH�s9�&6@^߿��<�жt>��p2V�!�W �T,X�$me�HOgO��3y���K���i��C������t�=X��R�S���Jg'�&9-��q�4c�̫XF4������IO���X�"���`��s��!��j�1c&����q��AO�st�f���UBH�g2X�=t�`&��e�kO�ii������_���U$������y��z�j�"3#8:�mP'3 r�����!�;Ÿݞ�.~� �" �B���W�i!c���5����9Q��|����`��#~8��gee��H$��ayP���7ƍ��#��0c�1���}�o}��-��V�t�O{jG�w**�W�dgۤ�"�hh��c����C�sL˾XQy�|,�)�1�A�v���2�s��!��z�S���w��Gy�1��ټGapR����#*y�,�Z��f"H�������ag)�En�����%�#P P$" _�ڰa}�]w��g˖ͷ���R2��:�lnnas~0��|�A��7��L�ՠ�����H�Vs (��#,�G�x�jj�<��ߣp%��sr���g�(,,�d��$r3�~'�O�g�$�-K��b#�������v�dݩ��/�|X[{��������V�a�Z�zͺ �חX,f���՝�(((W=�HQr��0�Z�s��������|���ښs]�L��tr@"D(*���X�<��n^v���7��&��Ǩ2�zѢ�hj:+��k�X�f�1�`/s�:�;�6�=z���Oܞ�=n�9&�%̂��C��a�D�Np�쪪�[��V��u��x B���1 K9pE�����ϑ���U�]�2�~�PZIE�bq���l��5��T�jmY\�y��1���YZ��:��}�ĉ���u��M��$?p�F�H0GI*��S�bE��˗'Ϛ�'�U���f���d�?���/���I8|����: ��]Q�Ɛ�۷�.�=ghph�����|�{��$�'x���H_�'&%����M����Y엸������0Ld8j�b�~��+�W�d�}/���#S�s_�! Y������'\��_ �8���IEND�B`�PKb��\y��� � 3templates/hathor/images/header/icon-48-featured.pngnu�[����PNG IHDR00W�� �IDATx�՚kLT��˜33m��fw5�6i�l�v�i���M�d�ڤ��v��4MMSM������U�fue]]�� � ��̀Ό��N���f��2���e���3���_�s�s�<�s����"z>�B�!�Oh�A�|����/��־�t:߲�lxR��+**ތ���6k2�D$��<OO����q�5}���Z�#��B��|����d���*�5��0߀��"���x��v�]�~��j���t8�\���|H}�����MNN��륢������|���|�������[�tww��j]1�Ƽ�5V~��~��JJJV��Irr�iff��ޝ���*--]10���v�ڍ���#���G�/_^1d�y��>�����ʕ+O^���G�1���(��giiiyxx|B�h o:���6mڍ����20==M�6�ھ��Fj�x�ҭ\/5e����w��CCC�����=11�f2����t��a��ٌV�������0)/߀�Y�����f``�����Hs(bw��.�A$�G?��и��я�x��i�<Q���L���������aі]���5�3Zc��6*�gq��?��� c@�R|oݺu���K�1��jY���&�Z]]]kzzz�FWRWσ� �F�đ4Z�(�*eW��ρ��j��hjrB�e *��~��'�����lj���#|�J���Ĩc����xF}��l�+�_c'��(�ϕg�>�|�XTU,K8�t����7fffz"�1���SSֲm�<�A�X�#3 3�`~q�ԩr� H���G�9Z$����H;'�"�|$�V���U���{��7s��7S(..��@�����͛4 N�_E�҇s��$�B$��s�CD��� �74��� U��J��tb;?'�.6�w�}րv6z�yCcµ����Ui�{0��Dp�cAB!Z9G���E���M��xa����� H�o��h�L��� ��� U�0e�_s:��s�#�Q2�<�w�d��cw���������6Q)*��@����k�:��j��Nr��e�Հ���Z��y� �e|| e!tlll��۷o�^*�����k��$�>$�k����:RF�>��T��,$.��|�>ә3�t8�Z\L�/ RSRԶ����*� T�~Z�D��0�gެQx�hU� .�Q�>�`�C(�Ek)*"oGZ�ݮ?6<�M�4Բ�f���,�:;EY��4:�^e���>4��X��b�D'�ټ,H�]傷��QNH��^�a@�5��%a��Ѣ?�(N�������D\�eed���g���ǒ hLo ��0�H���t�SE�7ZZp.Rnin��gB]$m��o���S����� =���]�{t(>-�,���D��]p.3S$����:*��3�*(A���c��� �) ��2D��a2X��m�6T ґ��%�p4W}=JE���!�4P*�uqa!ձ��ӧ��Ҹp�<Du�D������xi��~2�Hof.���x�d�OT�-����;�yS����Ca^���q����_��`������{��I�Sܤ�����٘����U����!V0�- �)C0�0�l)�c�=d��T1���>�A��;�e�?�"9�s�\?ڄ�|^)ј*O�Ì��%�Ţ϶�LLbm̰�0�,$����T2�H��a |)�a�)�`K6��x���)7�x���M�}V���P}����w�Γs��8;��jI>��0��rSB�PH4�>15�ߝV� �Y���7}�nru�i�cdb��n/�����u<��I:�2�rS�h����5���k?�M��F20��6��E�m*H��$��F��(��S����'D�R//Z=����h��f9PF���I/v��!��>�%鰋������2�U�G���V�ٕ�_7�G5������-(��j!i�Y�>� �`�Bx��̈�~����mA�݅U��6E���j2�U ���Rz3��=�$m�a�*�*���ɢ�۰���Ϣ��ۙl`��g�,;�ho�]���'�k I�;H7G�Yh9)w�`��������ر� ˪x�ͱ�SږYJ���)!�/��]�(���|�����=E�� ���ׁg�W��2Z<�f�<v� ����Ԅ*>������J���yW6��Y�$���&yg�;�H�Nf�H�g�v�*�]�W�v~o1[��Dž}�O�+���>��A�S��d/dD�L��rz�H����;N�|��*�0[?>��K�ЅL�B9���F�톗��s�C����퇘�Q]?��E~N�=V��K|?���_IEND�B`�PKb��\yYp�N N 0templates/hathor/images/header/icon-48-links.pngnu�[����PNG IHDR00W�� IDATx^ՙ�\U�߽����/(�[�V+Tؚ�(Y�"�EP�m�(�j�F @)� �+D IQj�H�[��UӅK���������ܹ��xN��d\;�mI�����L�����+J)>�a�!�G dM���#�Ny�R�@^l�T��3���O}�M���%��\S�eT�f �\]<��5 O��@d1Ёm�%T �#�B�%�K�vu�z�2���,�C��j2\� "�@ݩ�O]tT���5!l��A4��Pi��YŘ��Ot���.;.q��c{�A�Ė6B���4Du���^�\���A4/lPV�E���ۀ<�� ؊m�b�V�d �$�dNc@c��%C7L��8�Q�'�Y��i���F�ڀ����0U�dS�<�ŵYz�L�7���A�WϾ�#I�-�B��M�,�w�]�3�x���A�Xp��f ���^-�"���o�X���S ��TW���j���� �m|P��mFS�����环^���z٬Ë�|���s�O����`h��W��� � ����tU�B�Z�->�2�=?r ��<�UE����g�7��o&���U��M��M\wj3��LCMDk�ϳ@�����7�������O�̖��o����t���wE��@[K� ȹQ�T��Ե'wUd܄X��7���G���%Y�1�mbKh*�6A��T8�a琫�����YEڀܻ� �Uh�q�O���3O>�0��V�g�H 4+�<c��+��c� � :�� P���M������@0����^Ȳq|��z�����|�J�k �r�F���9��Ww�]؆���Qt�@p�q0�P�Ȅ�M�����>[�˪= f�R���'hjl��N.�#;Rk�0UP ��*0�����1�(��d��ww�Py�zǡ���={�������?x���RL��f;�+�N��Cf�0'�_�=pz���П�fΌ��ڪ��ر�=>sb+��5SW�����h��8X�ғ���Q�*8Q��Y��n�_������,�O'������*?� y�kT!�� *v�1�O�$�g�r�)-̘ڊ�hu����={�E��e�g�yF �H:�m뷱:��yEkL�S:G�P@e�E�c�����߰�eߺ��f�E��,az<Lv��7�N�����kp���@�'wg�L��F��%�/�V��2�����|���߹�b$��͋���F�J����4H5��k��;�� �P��mJdK�Ĭ��yH����+���9$�<��%,'Ŝ�+��ޱ������5�`YEb�e�kEI۔ɜ�*�@�ىT�)ׁt"?��߇���C~�2����ʳ�z~���-����@Y�rx��*�ni/��'����n�\{��}\�3t��ܔ�5���&ń�½0� �lT�ۈ\�%���m`���G¤ә"�5�=%l�~���/���.,�kp�aQu�C��+��߅癛l�C�o��3N���u4حk_�[�Bm��7�:��jĉ��(e�L��m�jBa��9�iT���e�|�K�� �s]m`�? lQ ��� �-��-������ �@ U�2��5�g�z*������̣|PA� vR<��\�a��v8���Υ���m\��Wv�mR551Ȥ���{���6�� 5��:��9���Q�m�u�_b���"V.�Gss��T.�����w=�o6�3��}b�f�l�Z���+o �#�7���g�6�;�S���|�����o��r�i� ���qr���f���A]�v��G8j~7�a���d�2��Bb�0ܛ� Kg6��y�=�R%��p�<�om>Rc@���R!��TK�/���?��P��p=$��&���sͼ��z ��}������ j�٦Zxc��2 p�n���g�9.��VT�F�$�ⷻ�y|�N�XG4F�#i^�d�=��0�9�T"�JG�!=�L"s����>��I�h�8x�)o6Y�k+��;lZ���3��XܘH���H����#�x��7A��ک�h�}� �Պ2R!�X��%�d�{Y����k��͵����w/m�h�LU��Q�CCj�bE����Aȥ�T�^���b�ފP���p-D�`G�*�8��f@] K�m7t}�/�����n:Mvkt[�k����R*0UqG�5װ���EՃ�To@̯�2]r]���!��e��U۴r�lߺ��� �J)1�a f��! �W#ۈ�&YH|#\#<��Ep��� �*|�L��U�"�0v��ʳ�pR�A`PD2c��m������ �HpX<`����1� ���W�?�5�$ 8�J�oT��� �+�1UnB�������~�����w"�����Ұ�DŤPj��L2LXIEND�B`�PKb��\�|�pp;templates/hathor/images/header/icon-48-jupdate-uptodate.pngnu�[����PNG IHDR00W��7IDATx�Օ{LSW�{��?����%�e�ɒ,5Y�ײ�FuDݘ�Y�ɖl&�6�P��|N�l��@ 0���D�p��@�g�����CZۓ��������s~��OoQ���?�w�*�8s�B�u&���3�PJ�g��RA����g�A��}<C|.���3�p��hU�F\�Ħ�n�`.��D���=�a���ۿ'\�\���#"��c)wC�����9N �J���Њ��C��sQ7\c��7�6� �݅�֊웤�fL\�z��(�r9.�X�><i$�q� ��BϢ��}�׃�Ћ��B?N�l;x�{1ð'S���W�'�/�B?N ���M>B$o "�خy��qY-PB��L#��id�T�q��P���5R��W�Pysn�Z/N �ZD9���?��Ü�B��WG��J�:�8���q�N!�Rt:q� �C)Q�ZB���>�E��v�;l��� \�e�'p�z($l�qǫU>��D��s��N�A�X�ick��A����~��fs��N���$���j������7x��w��Q�fe���1Ї8qz�*] Q�����2@�ثJ�/h���p��aVԀ��RG���oHB���.�@�5�|�FSB��MjW�u4�kJ8]^v��.����0�X� �Ȅ���CX���bʚ���?�ك'� ��Mn�?E]"�6l�V�X#P����p�*����&B���%l��t���}PKTz5��������>hx �j�]P ;O)��>�� $W@���l��X�����U/��O��<v��>����PHp�|T"<b���vO�ڹzp��J1���k&!uj�K��vfԉ�P��>�@R)�����R�;l_���Ȟa�ֆ�� W㰕�C�'�y�������!^m�5�&���tN�\˩*�^���(a��@$��뇗�9�L�'��<f{)"�to���$��2�q��cͼ�H"V5�s��۞�9<���p�˘I�-�t�?���4�K8^��^��N��<�5�u</�w4\`g>x�IE��6���Q����k9Q[q ��M��R������Un���y��ق��<(!VކV,�辈��|͎�X{F��5�@�A$����!^j�dbr���1�+���&�VD�)����4�Jؘ��Df�_B��$��Q�%�V3���U��SǒR���^���*[䐴>p�a2%��l����:&����lqF����M���:x?��3��e�0�,ܳ+��2Y@|~4hL��C�"d_H�m��͘L �y�&o�Z�v˓lH]@�%i�Ȉ=4�� �� ؚ�&a�����x,�/`��i6�-�Hy��5�ӵ0�%1�������,�+����}�"�}.ܼ+a����k�Ov�N�iKz����� �N\XN�-I0@")��][i�Y#:^0/�&�m�Y���� ��V�N���I0/�U�?I�-Ӆ�����5$�kV��;���`��"ȋ��7�`2��q�5t�|wЂ��{9IEND�B`�PKb��\���-��6templates/hathor/images/header/icon-48-help_header.pngnu�[����PNG IHDR00W��]IDATx^�Y �\U������N�-�I\ F��.��Ζ$@lM��"��F+@ h����$D�U�������v���ݖ&����(��[�������}���3Ӯg��yۙw��s�}����0�R �k��y�@���&t)�.(� �@q�@n�bn#���s�1c�f`�D/�U�k�;_�lۆmY�$��H�<�P��y�|���B��A�n���i�u�� G�'���ͤ�� ���t�r�$a/�7@�©٩U@i�P�mۅ:�m��eM�U����܁D*����}a��F�Z}T���*'`�L�I$� ��L�|��D�40'��w? ��K���|�M���jX����?(�mG'�Y��6H`�Fm�V�j�' �� �N$HHڌ���mp������P 6g=��@��Ê���ch�X,��O�%E�+�pA�3"z� hNL*M�M2��-���rk^}��<s=��6��A�W�Q;Y�{>"/Y'ρ@/�#T�mD3�'>D�ёI�a�[��D �6�r}%:[��M�� ��SI�Hh"�O|�FV��II�$G��5�L��S�F�O\�ɔ�S)��m��� P��Դ�1�y�����|����Z#�ӵ��i�|h� u�箠�um�*�|�6�)�X���~�E���C<�H��G���ؿ�C&��j(BT !0����_�Y�mZGN�8e:d��U��U|�����6ƍ!?."p|�&��`�XE��CÊW�Q˶��m;��p˴L�;��d^f �����QB��j(+8A`��_}�Ri�\�� ʥ��Ri��W_4�T�kL���W&�@�U�@� ��T!~ �E+Wᵧa�U>���0٪����e�+x��u�/��_���R`c��N�RwW<���t��Y)�6ǂ,���t��Ð�IG�*�O}!�%?X��o~���Ķm�3����,px���:?����H�Z�� ������Lc+��X��'���z�֡d�V �$BM�O� ��2h���W�AeN'���G��< ����t_���/w����ǁ�٦\���d^���g�@!F��B �O��z���R9ξK�� �W���%p� ���`�y�b T�e���`X�����A�����d���4J| �6�yC�u#�C��s}N�{0��H��L^�m$�a��iԛ�צM�l�~��<��z]�����s� �#�_@�}*�w�{^��4���'Ͼ�:+թ�_�ĕ�����X|�&�-��,���ˊ �#L�aw-Ŭ�y�oeF��y+��w�cH/�����MkZ��!A G�~"�c� LA�Z�y��:3��E�a"Ecjh��3�D�����\S���[<Bl�풋/>�eL ���G�� ��͍��mL\<��$:~'��J��尟��-"�T�b� �mv�EX,@.vef���Ν�d�(%����cS*���F&S!��g���f`�7�<�T�݃<�`�&��LbHk}!n�� �>��C����Eu�S� N��lV�|hG�����xף��~��;��p��qh��p�x����ڍ���ȯ�E��{�||)�A[�Aұ{iY��a�e��1r2NP�=��?���\��e�Yg2� �i:0s< ��}����~9F�����4£P`�t�dR.�XO"N�zx����/�&]d��J1Y���<�Ỗb����M 3����/�����?h Ɔ�������q)�O�c!,N�k�@6�@;�|�D���Vچ��9�t{���\d)זq!�S��cl��Ϛ(<r�G��������^������'f�m!�"����Bp��i7^U��6m�����A�I��6G~v�*Ƕ{�m�\!�"2Iǐ�ֈ�h�[��@up#���@�!&�`�W�>��q��� �!.�B��0oF��r̫ʲ�w�.�j}2���=�0��L�8�����%�a��<,Y{s�ҁ���Ɇ̓��|0��<x u8y�P�AD�F�3)��9s0��+��d��f`��싖��l g�r�����/���@�5�#��u���Jث}O�p�mC)7jmrj���m:!�y`�p�t�0#�Eb�EW������W�>�|<Q:��W����R��o��UX�}��*�j��&� L��B��.��Q��g��s�{�{漠�|,��Y�Z��G�m�V!Ot�ղ,a�Dʼk1�5A�+���,�I��6Nj�����k��fĄHx$�D 'NnK��˅ՄB�y�*e^T���7p��F3s�� :�O!/�*%i!�~���Sz�k�.'�P+��v�<�R���jk'ݑ�`RRL�y�Ǔ <Vc�����8�=�6���Y4�)@�2��l��B!�~�}hɼ �C/�����\�A���cC�g��M�;^�x%6�!�@��=T�E�TCk��=B�K^�a*3qn��2��])��!�?�c1�iX�V�ok7rs��${Q�`�롤<1��x��G��`)Z�QZ�v���3�����E5�Y8Y��c���X�@N)%�ݳ:1�]�Y��� �YU��lAaݍDޓ*@>ö1�-��8ٸ�*@ ��[M'���q�\��UX�����Ȯ�x�dY*zz��ݞl��@V��7-@XEb���{�l����8A�@E>.� |�+;n��d�y�:�V 0�-�}� 4�����x�3��zi�u;�?�А��C8����R<��[��������r\w�0�G���b�ѣGܸ����M�LL�-�Į����a��Z�F�)�U�d� �h.�akƫ�cc���1��*X|�,6;�Jq����.��PIEND�B`�PKb��\�:.�3templates/hathor/images/header/icon-48-calendar.pngnu�[����PNG IHDR00W���IDATx^ՙolg�g�'N�m���Җ�6M�Vmb[�"�0X74J�h�$$ ��4�����A�]�������`뺬i:hI�&��ϱ�b�|w�r:���v��f��t�{~��g�V��|���G���2t��SvׄuH�$�X�t�e��t����,9������E�G��Kx��#O߸���� !� ו�i�����V=����=̡hl9<�XKm�;냄� �����k��n�>��=Q����[*�̈�'a�������OS��ʺPݹh��yY����`D�L�8����B"�DQ�L��uA����y����a� �h��!���3L6Bm#ך����� ԘnY���p��&!���I�/��@������{/��[�ZcE���z�����?��1��p���j�SUU������T/'�l^���(�eIh~KH�s&d�0r9S�����Ey���r�@��D�_tݴ��/���غ*��[�p`�1Ĺ���u-\ ��3.��Z�k����@]E��Ua�4M������Ⱦ�>�P���ǎ�щ Y����s�1��K����,�D���i�~~�O$)\�?��9B8����Y=�<���X�Ekkk�@�J&Sr�2)j!���"�{��H��h$�/OOq�_�/��sS/]L�)�6��f��A��ꏦ-���I�}y�G^��g'c|��(w�`ݾ��ݟ��S&��F��Z��N���1v�5����0 ��R�ॅ�U�ʫL�M҆Ef&r�E���&�_�[[��QG!�Nd���a{n�(N�3 ���/o��R�V�ѷb\HdIfL�g�6�eK��W"l�ʲ�}9��CI�r�9)9���gn^K)�� �� ���<��t�I�Q���5&'Օ�y G!O�c� ��?�&O���eQ���x��`�pS���q�ݴƫ��zc4cN8�K ��<|ϧ�y����#�ѳ�\@������w����Gqq��]�زH�B��G��U��y�u�A�2*T_��:��Q�ަ��F[4���M�җ~d��C��\��9AҢ2�ń�T+F^ �v����%�E2H �Wl�j#ŃM�G�^��Y�P�l�m7T���]!G�6W�tt�Rv��M�BJ��M���si�~��$���sCC�kU�+�-@�l��O�P aY,ᔪ<�)��'4'��F�G�'Y�zc�k��&�x<�ob�t_�"��eF$;��\��尼Xb~�����X̬�D�1�灻���fGF�Y_v� �d�;o�E$m!�=u|h��ֆ�h!˲MK����s&B�Q�$85ʷV��uӖYs�2�? ���rX��L�SQ�༆��t��{�@��Px�&f6��kj¼l��������Sl���1�G3���pPk�5j��K��"�=��J]��� %��H�Isf��'�h�ά����QSS�Z�����O�K�?�<�@12l����iz��yY���a��o'/$�n��1aW�- 0�Sy3���2�����[c���m%LO0Mc���0C���P�|��&#q�,��_�FՀ�f���+�O�sK���w�用�7�4(�#�AړI�����Y�\ܞ�7�a�T �,˅Ʀ�������V�����ƿdcC=��s��}v�=��V �ɐ�U��p;�|w�J�R����.UUYLL�bX��OQ��9]�;<2rsSc�ͪ��b �i���=_��Ł2{���?<W��UTt���DV���Ю��< �(J���@�S9_q��L�4� Ĝ���1 �A T���$������5�r�Ӏ~�&w���@�*(n��x�%��cN�I@��� �SN)e*��s��� �=_$*3�z7L/����&Y��#�pq�t�{Ȫ\1� ^�őp���h�,*����I-GdF�6@IEND�B`�PKb��\82C�2templates/hathor/images/header/icon-48-section.pngnu�[����PNG IHDR00`� �gPLTE�����������I�J���B�C�����:�;����������Z�[���A�B��ն��R�SE�G��״��Y�Z���P�Q���K�L��������������>�?���������N�O�����ϴ��@�A������5�6)a)��������1�2�ٿu�v&[&���j�kr�sr�s��䚝�������J�KR�S���������S�Ty�{��𧬼���)�*��������������ְ�����1t1���[�[�Ӱ���`�a5�6I�J$z!���g�hD�E���L�MW�X���G�G���U�W)j*a�bc�c������^�_����3�4A�B7�8�������)})Z�[�����Qd�eu�v���7�8h�i����������ѿK�L�ӭ�r�s������-�-f�gOfQ���c�c���f�fi�jO�PDuD���Z\[���nnr:b;y~���|�~�ܶ���B�D���.l.��LP�Q�Ū���fjg^�_f�f�ѯ���������Ҁ�٠��e�{�����Z�[c�d{�|:�8d�dk�kQ B�JL�Mu�vJ�K X!���F�ƛ������J�R��Ʉ����ؘ����������͉�����R�Zout�ð�B^tRNS@��fVIDATx^��S�$I��4˶��m�Ƕmk۶m{�FFDf�v����<�]U<���홧���bj�D ~&�NHcc��p�t �)�$ { ��X02%MA��L� ���Hy:3��)�s ��~2q�FF*++GF�s&|}C8Lnq��?�����r?����@H-`�<�.5-i�=�RAe�\����G &�]�`m�U�W'5 ������s`��hZ����C�Q���Ň\`b��oXR��.�۽f��5�@��k �y�ޣ�܄�vA����!Hb�>ݧ!��c���]���U�X@�a�u=�k�1Q1.�OD��= �2���lfsIЊ7�J*1��e��~������U~%�/{�U�9�Πo��f@�Гt�WK}8��S�~~��Ёy>�G��1��~.�� �1��FΡ�-~��v/c���'�(i�e��#Z���֞td��XZN�� *Y�T��wڢ�E�G6����8��KE0hF����������l������^]� �O��ٓ��d,b�'D0b�Z+*~^=�4 ���=Q�N��TA�tyh�ѭ��E�{y#=q@�XU@������"�p��6r��F� 4#�V�]��K/>@��`�S�\��>�`/�10��J�|��� _4���k���̕?�>F�_��t桧{_��bY�f���oX8A��(g[���h�ȳ���� ب�yq9�x4v�(�=A�yޣ'˲�,0$�xe�"�^ӒP�~O<^ྶ�҂�× Q��6��>�/�˛��ꦁ!q���}HB09 �IEND�B`�PKb��\틭�� � /templates/hathor/images/header/icon-48-send.pngnu�[����PNG IHDR00W�� jIDATx^�Z l��fw�k��>���� ��0�)`ZATZ��*��FH�GS( �!@K)MS!�^�-M��4V���#��&��c���k�k���=���{�x�^/�ڴU>��{3ì��|���A�/ÀO����m�y�sF� �y��40���H ���E\�>����I#��)$E��(1�C�%����)�a[�n�?r�Ⱥ�Ǐ�~� 3�.]�|�ʕ�����ӧO��D �l�_�j��4��X�zu�ԩS'6,'...;2225&&f4Amm�;+V�x@���פ�S�Q5�4b#�͛7dɒ%nj3�j��EEE�����"�F�L&��ftuu!�ޝ�Q`��h P�>O�,v��322>GB�ɫ�l6��A`0!��-�k���b#����Ht{�u`��*af9�#�餱c�N���MONN�F,�R`(�� $�2I0����/�^�A��V�cD(@��X)�/]\\��:���u����rrrrSRR&���'��ޤ9S��7}Ј��Lj6�F��c͘�i�Ĵi�rȀ���5`�q'N�ؑ���2B�E�Gٳj��] �x~.�DV�W�Ga��x\��@Q�=�vz�XHdff��!�/�6 f���KX|�<%��Y EhG�z�ڹ��Æ|9w8��n@ p���)#F "�m YG�9C�a���RS3h�Bb|>"ތ��a��<����8��j�"SL�"����Ҁ�B!9�=a�gn�">�w�������n8�$$$d���n���~�Z����ۥ�8L����6��.o��S�Ab�ʕ�E �TWW�@��*�M[<����q�=T5w"�fFVb$}1bD���u �.^�h�z�=���"�:�4��.���������9�RHۉ��$;Oz����V�*��5b�h�l� �δ�|OFa�С#5u�0�m�D i�{n ������0111S�hoo�*�ʈ���Q�p�-^�s�F��щr-�u�'555w!�����~�]���I�O�����{dP�Վ���&CWț6mzV�O!:L�@� z@OU�6C���A��&�ۢ,<��A��#�E�'� #��0��!�% :K�k �'~b/���z��ʚ&ܱ;��E���On�b����E�G���9�q�H���� :��d��ʪ���6��]B�,dU �^��H����upP ٬fd�%a��8��E� �!�(.��3�Yhl���돗���8�d�Jn�G�G7�yh���XrT���ىz{{���l~�a)�-~�ǤRn���ަ�*S��aos�5��O�V�Û�b��v��I�k}��>Y�J��K�;Q�4�yq%{��Ri��T�`��rJĺ����t��Z��H,�4럟�U�'�l�Kسr!G�n�NdQ�" �=��4�yF�Qj���Sw���YE����өp�dm^��U4�@·5�d�/�q5�A��/�7�Nd��8GL%���4�����V��.q��%ڈ��16��^OQ�������ߖ������w5?W��c�]B �X@6<��"��+�5 Gii鯩��Dt)�q8q틎�;�N\HJJ�L�)k�`|z�Z<u/l��:��X�d:N71E��g��i�<�����G5�F���?���(nZT\XX����� 3F��n��)SH�9�� �SI�R���$�ƽ��4�Q^�(��e�"�|�Ji�pb�2�n��U�< �=\Į � �汋��k�<9�������2�Q�$b֡C�����=BZZZ����<�^��8��+9�������}��B�����w�֪��4�xO���=F$P}/���[���f��':Q3�N���GC��B��=9��Eԁ�~�a#�+RÓFX�I|/���*��[�>�9HYq��pp˱�SQ���k֬Y�v���@ߊ�ZW��1�<dg�^�����_/��?��B��K@��#���� �BE�"ƪ:�{ P13UB�҈���s.^�|,=��[1��Ȉ;}�"�2��OѤ����� O��LzO�Fj�x���f@#�v�<r�t���*�S�a@�G UE�`(n�i�4B���0@l��F�D�H&y�E�yH���q���E�y*���>u+mnn�5j�D�j���,R��`��s[�������)�/�ip��� �/=uuu�s��ԕ��ҳ������Ɩ����۷o;._�\�����#��7�"���)�� 2�����o�� �5�K|r�̙2�Q����Q�R�v�mv����tvTTT�Z�_���E��Q��8xvh��L�����vy�7��K���!pj�tѦ�a߾}o|�~��q�\n�������B������ϟ�G�`�e��.���X�iS}�\#� �^��]<@@���b�����j�;V�PI)TC��_R�~Y�Έ�,�kjE����r=����&�F��AP-R�~�XI�NepG�U�$.\�ה7S�� ���G��"\��ՠj�a"��t�#1���y�`=�z�$E�/4|�m�B��.�Ut��S��W����ʧ���z�� U�IEND�B`�PKb��\������2templates/hathor/images/header/icon-48-install.pngnu�[����PNG IHDR00W���IDATx^՚}hVe��s>�ݦ[��++���)(*"""��(�> �?�"��( ��B����"ݴ�ʚN���n�tnZ���y��9�a�}N�~�7�����~�S��g\�Q�b&�Cs����2xba]��>&�]�F�F*Ï�d p<�5�w^�䖚��gL�$"j~��+�奣?�` ��_�嚻���a���鋡�{[?� �:N��_x���g��dg�/�Y�(� P����DZa��R|�X�� ��:�-m��:[|x�%aq�ig�1V=_�B6�m������A��hS/`�����8d_l� ��q���3�c�B�,�j=@�x?n]b[Kdb��,��=�(��j�ȿ��O[���K(�G��L�?��.:�O�9 �Ψc�+[ϝf���}(�E�>h�QǶ�2���v�Gy>�>bKfBlB��^go?��4�@9Nb��w@,�dZ���no;J;h?��k�g@0�;���6�H���òKg�������Rr�T�>�>&����.O����>�]�o(��˟wslp�`��e3xlѹc�֎n*G�p��8a�:�O!!�wm��)�̍Wq��k��������Oс��آ�fԆ��u�T�}�n�4퇏 #D���e��_�uE��s�d�y��d* q]�X���>D���,B|~c�JGO?~c���&k�3�9P�)�X�q+5mc�M7��ylڵA�1�����R�;1��k7ė������ �]��4��~��Pu�/�5 ���~�Ͽaņ-�5�Q�:,���(�4��$���B�!����]l���2��T�ׅ"����$��+h�� ��շ��}�DǏ�+�����b���.���O��v��{���|tm=�uc!���@�+�j� w��6�;�rs�j�����9�ڼ� @�]��1a��\9g:c:ҍ(�g@�t�~�k��[!��PU|[��Y���Җ��T������P�4�mcCֶ�y��G� WfM)��[Is��ٴ��6l#����F)���@Ӟ4�����9���:�C/�E�t�@;�r���x=�<q'�_x����E�j����Kl�!�.�i���5���W�fӶ��V~@���w��yv�:>��y+��[�HJH``�\B\6Ƹ�:(M��C��f=���br��$�PE5Z)rE�<��'Ȱ�B�@��%D��J���N���R��D)�$8���#c(��S��DK+\�N@�$��c1�1U_~�22�@���|,q��LFD�E�,�古���Le��N�X����f_z"[FCIEND�B`�PKb��\���880templates/hathor/images/header/icon-48-media.pngnu�[����PNG IHDR00W���IDATx^�Y]lTi~Ι�N�a��n�i���R�m7*�nc�3�/�H�0Ĩ�&���W��� ��.i�K�1�ݺ�M��V�b��iH���s>���SFJ���¤/<9g��y��}�;3`7v��]�M���;w�p�? M����lF�qyjj�7xAܑ������.I��:��qI����<"�b�x����X����E0^�?��n���� �9!��$�I�I�Jr�T-I�Z?7D�������l'+�y ��W�&�;6O�I*r�53�-I7J�lۆ���u���v07����r���H�B�H����Q">==�����{zzv&�~������2P\F�zSl*e�=g`��b���ơC�P(����)�!�9��т���Nt]�~�['N��n__���f�C��"���Y$}����F�[�$��l6���%$�I�ueВp�R� ��#�˹�2��gd��R�;�$��?�+�O����@5��A<���H�\�Ur�al_F�q��FFF���Um���H���F�yMȞqy�du(�#3ZT�V@���ɓS/^�144�O��՟�D����9/����^]E�41::�0{����o"�V�:I������h�(ZZZj����x�h�%���X h#^"^ᤘ��(��D��7���,[�?mg�͌��4�Fh�ZPgx8�]!ޱ\.�ɓ'XYYy�~`�=��B>��F��k��Je�|I`�� LNN��Ѷ؆��?�}��~�.�C�랠��5�эqwp\��0�h�M��laUH>/�$�x^mf��0y/�b�,�i�Ź�{���Kx��c��r-��������X4�B�6�0�M8��@6'Pd��#|�Σ��1���������}nH����5�Yc�V@�s{òmwQ ��<a ��? �2V���r���:ꉱ�ޞt� P�!�`>M^��p���������Zd?~ܳ��6��&��� �}�au,���� �ô M�#�U���7f�|m,�+rs$+��@�S%/�B�Rk� pLo!9Z�0�ua��@O`��n8B0����� hX|�[�p႗+~P��h¯�]wLo@P��Y��"��z(2U�MP;JK�|�����w���{t�ŋ��=`$C�7�碯+�y�O��-�]��jb�㈶pj,�4P'��BB�7+�~� %�/2�l]*�=�� �~���~�H��]��er<y���� =��0i!C ������H��l�P�쳭6��U�˅�ф�D��+(�TǨ�Y��p�u�*���:h����g�U3� P��J��^��|;�"��Չ�c� `}=���t)��B��J��+ �_6��{!I�����_+�����ZV8~vi���{���U�ĺ����K*��]�sI���B��k�>9w�p� �wA�����1������H0��xR}�X,y������i˶��ҏU���V@�c�� �:������õy��H��@�a��JE�'����\��誴Q���{Y������{�Jx��Ҫ� J��W������<f�&$i��PVY�-���TO��О�^�ՠU�>�ZW�G]�y��?�����_(~qpp��r����0�N�����+�##o��?���z��ȶ��CO!!��r��e�yl�Hd�����{���7o���˧N��� E^"i�<��X���I� *D��_�t)@hD��'�͚L��wXxB�����>���[��I�5�"�����>���B��o�>�I�<�hoo��C� ��uz� ���Zƛ*� a�}v���OL�˕7n$��f��F� Lĉ�+W�|�Y�:z[�.�Z�2I�N[�$/i�֍ �&�j14Q�S��I�m8 � 04t����_�.v���/UX�F�IEND�B`�PKb��\�T��<templates/hathor/images/header/icon-48-banner-categories.pngnu�[����PNG IHDR00W��qIDATx^�kl��wf���6l�!m"p�RD҄Tm��&-mD�Q�DmU�C�Z)���"��QQ���JU��R�iY� ���$��c86^;^{3s;�]��+� �Yh���]���9��\������_l���[͔���p&�i5�f�����fI�Q+cE��t�����{/����+e>O���,��[�baS2Kg��_�/���Ā�y�_>2������Y�ș��^���c\����_���/�@��_��v :��m7�c��z�F�٭;��e�~#�ЧG��~Y�[�c�Bf�<�qMS��%��O]\�'�����'�'9�����w?�̞�f��o��1��)�7�Y�5�ǧI|��:2�f"mru*����Z�~`G��89���{!+cm����o�n���|�,�$\�Y2Tה���99lj��f��v�xACl�vm��2��� u���Ӝ�O��Lta�k���~6/���2}�).'R�L�c�����4��|zӲ��� A.]���'���$3���_�o���;��_ڼ�(o!��k�Zҷ�\[�So]A��aCn��z��*�䣋�YQ�%ht$i36e2<�� �fv]���l۲�CG��u*ֱ��_���C,�c���2CcʲA ! �ؒ�e�?���;`P�Ѱӳ����kh��ph��pg�\�a�2k�O *%�M���Y�j�� &I�� � �Y�e�\�ct��q���W�9v�/��Z@QX߭�� 6a�T�e^JA�r[p����B��n��Zꉜ��6��_���xQ(D�g$Cs�7cXJՆ�Z �k�"k4�B��PP.���pl�A��$��4`�J2c\�!\�9� iI���Y-|nq��+8��T��9<��cƼjC��!�ׂc8��P]�chl ��:?� �H83��u��<ஶ@���ЊYC����1�����F���j#��}���h���6.ȶ!����a�a�L{4*\�9���Up86��D�8��V�("����� ߺ;�5/@"nz'8�sMH�yo��u����&b�yjm��3�_�ϲ^?C߸�ʰ H5�j���Z�@n���yh�"N]A3���>BM�E�#1-���4��4�U�!�h�]uC�t�Ma�6�yp��7w���:8�WZ©ޑ�j7�!�[h��"O~�:���jڛ+X�0���R��)�65TѾ,�Ɔ a��>z ���X�f"i�V�as�ϵ�;Q��� *$D��o���äI���E���Fh�v��wl�t���ڢ*�.ç �3o�F��WhMw�(~+ōԢ]��fv4M�?�������S�q{%���嘹�w�i,S,�~�'��F�VG�������@/X�}���]�d��O��O3���wb�O]"Oϋ��U�#�U�'�S�H���ꯠ�;�\jL��*<�|I�!�L q#-`�G��Є CLMrے�V�{F�N��U����K� (��r�����M<m��ځR�C#&H�F���<͈6��/�̋d\l�G �n�`�(�O�-@gQ.2�ڒ1!J�GĖ�f@�B�Qb�'{#Ź�uO7P��|� x"�NJ*-Z��'"�l����E��֗ο)v�Β�2*?/V����C^J�d��|@� `�m/^����fJ���;�` ���@=��Əm�p�xڣQΧ��Aqh�Ρ��2�0�* Te�'�\�C(n*���!�����I�����:�*?��3o��2�Kǜ����ysK(�7i`nيY�}�ivR���ͯԦ�¨g7kQm�lܒi��<PIEND�B`�PKb��\��b23templates/hathor/images/header/icon-48-download.pngnu�[����PNG IHDR00W���IDATx^ՙ}�\W���LRMC+�"�NUȬ��E6��R(P*��(�cDE�tK�"�E�*-M��Rи,t�H)�j��dw���{��0�@�;�s'����Ü9���s��+�ʻû��AN�g ��� "��Z����3�/2!����v؏0�AD�@W7��*F�$pT�߹� �_�"r�����^��)���P=�ܱp��so͂ߐ #�UP%q�ve�x�AO����% ��>x�[@~��2�<"�L�'�8pN�bK�7= #��|"��v�h�,ZC��/���i�����T1��$���8�19O=�5BÁ�-X]ݣ�U�8���|x���T!�#Vite�� ��x�e�p��.���ɶQ�y㙩R�c�C�~�4� j�FU5�ȕ����u�j�|ò��)��v�t���fE�@)�cc�3?��My�"������"�W�����1�Hh�|0���#��=� soVA�=�ZK#V֥~��/���$-��9M-s'�!��Y_Xv�&�i�{��x-��Pz�#ˆD-��;���!��[k!� Ych `��>�{��P�Xi'��ZPe,�q�at�R �N�*]O��R@��hu�)#q��(����^�s���� �<;� �ؒ UP�C]O8�z8@E'����ٲ>����pZ�D����U��ȹ�X |C� �07"���{�ؒ���TGw�u���u�ҎwA��P�uD���6�"V��)����]�1؍�p���77� �{�ڭ��(���0x���s���SRT����$�թ�,��Ң���6�^/��@��V��j�u���+G���C��(�2��Ð'^�L�5x NSX�#>G�v��wo���{�l�{��83|w�z��L�;�?_g�g>�y��2s��l[��X.]���h^n��}/� 0q��J�=O���R��fM<#X�=oi.��UPǺx>l��}�ޘ$D��'�%ۡ�D��AH���\rF,{�(�؍���{�_ԛm�������yr`�����8w&E�B%�Q�}�-���_.��8��Ұ��e���Uj����z�Dp^���T'2��O���f;�0ga� {��vC��F���O_�^� ����LHK��I��g��<$G�Vs&�+�Yn���V��<��/?0��f@-(��AC��=:ޙ����b��X\�E*���k��p�����;�=�7������D������oz�3�&�;+��vV�G�"_���e��0�b��ӯ��������,���������{���s��0<` e�KW�&���&�I�9d�`xi�fB��v����=x���}���BE�[i._C���|�����J� wj���vM�d�N7�_/⦊[�4�ZU6!_چ�+u�_F;�ED�7���7�*"z��+N�����J��la�H�� �Ш_���E�=�ý��{���cep�� �d�ގ3Qu���1b�����G-��/�.����=R�5/8���Yߘ�b/[1��Gml���-pIO�/�s=]��s���e���}��W��� }�f���2x!�St�M�F\ҡݸF�^u ��'_�WL"º<�T�Fd&B�0�ו�k�=lukc�N�8j`��$"Gy���' C����P*�&>��G�0�P�'��$�+o�{�Ssu@o�돺�/���?z����'��p���h�J1��e�4��@��h�7.�@X���@h�@��@���@R�s@�Tb�h�� �`�t�@C>�}�-@�2G�p@�o�L_�A�8�����l�������mTF@����6C$C�Y ���"v�f/?IEND�B`�PKb��\U���3templates/hathor/images/header/icon-48-category.pngnu�[����PNG IHDR00W��xIDATx���Ok�p��6����V&� �-���:]�S��z�7�� {�^���8�\Sw�(�"x� ^����@BܯM�tv~ �n����Iӆ� `00�t�6[$��Bh���4*K]��$���� ��!�G�; 4��?�[�_���Tg2�l�̈��Of|��X="�����t�B����:sus�<R3X��M��=���m%j� xXNonճ�m�k�A�5'�S�~ <I X�����A��ֻ�ӱ��G��Jk��x���ր��$�&����X>� `��(��t���6������ͻ�8�!`N��o�&W���x9�c} L��N�0�yl��0%䀶�����{E-o����n���x9_�����/�a�8�]�p����X"[z��U̓��rn��������~�̏�䗟��� ����]��!r�=~��!�����>�U.��\��)WM�o+����|�y>�3�kK�ڦ�H�cd��a� #���xHX�I�:L�PI�瀝F�3@i�rB��>�[����GH1Iׂ)j�Q}4�4��"v"�'F�D�ɷ�?~�<|�dIEND�B`�PKb��\���߰�2templates/hathor/images/header/icon-48-menumgr.pngnu�[����PNG IHDR00W��wIDATx^�hTu�?�wo�ݶ;��ln�`���)�$-�4��( MICĬ$ -"0 ��D�(���0(� ,"�����Mn��6���ӻ{�o���{Oߺ�~���������{B)�͌F��%PXn �d!���#K+J4��e�� ���d�%��β��Rjb���y�b0E���2;�y�J��^����\����[-�����[�-�Qb�j� j��S�Z�A�u�_��/�l�P����C6���_A!�N�E�R\4ժ�qS�A��Kl)AQ`©$�W���1��-�}s߅�RX�ɩ�1+2�Y�t����s��j",�*�j�[BF������������Y����#��3K�9�1WJ��h� T��g�8E$?�Sd���X��ǃ5+ ��$f�K1lEv?�ޥ(~h��N����h��N��K�vJKn��� _#T��4M#y���x| tt�E/��eä�~�?��rz���d2�xn/�ʃ̹m~����F*���pҽ��*&�4M�:Nj���X6��|�58?�ppC�6^(%�J95���G@*,�85�k� �o)�B*�����^�}\����a6m�Hee%~p�Q����73�5a�_`?����/�H8�/ʩ�jz/kww�@:��0�8y�����v�JK}JL�`8�'u�dRiL����#X��uϏI�N�:�t`;^<Y]ˆf�:��4 t]���QV�X�ܹwq�(�uw��}��b�U�#Duu5���d����b��E1�[���&b twws�����NY�0����~+�n�::�wr���(��]Ȗ2oY�}�|��"�(�QN��,�D",\��ɠPN��l�\�B!F�{/�@>�N�.J�2)2�ѫ�Ab�t�@ƶ���#R^F1r)9BƽVǙs�Y��(�ms.ޏ-��F荑Q�˱P���hQ��}���D�K���JZ��ʖ�ڗ���l|�͟jc �t}��JP(�"�9o��d�]�����ϸ>�u�0�%N��d*�Nl �$ XJ�T�k�A9�� ���O�/ X����EV�G"+�z�,��Ԡ&����gU}f���x��F�IEND�B`�PKb��\ ��0templates/hathor/images/header/icon-48-stats.pngnu�[����PNG IHDR00W���IDATx�홽Oa�5�8)H����?���AI�b�(�Ĩ.J�d ��@�B�-����w��ߔ[B��m(\�Ԃ�%���=�疻sN5L� 0��UF�L�!�&���=�BmnSYn��om���ռӦ����Ծק���n��*�t���5����F1�[��ʭ�o�(E�6�QL��R�w�2t��@��N-J�QT�|� %La�G�*4��tp?Πiؔ���-_-x6b��~5Z%+h��}́��NtH]h���ntNz������xt+4 �3�ˣyH����<�-Æ�t�\�<�I_X@��h���Z�Ԕ^��|~�A�֡��G(A$C<���f[[)�Flo����I������������xp��y�@fH+��A� �� ���09ϵ�Tj~�X-�*!����A�AL8�0�P)����!�� �Z"�@8B4A,E"G2���d C�yX̋H���a��ٌ�ŢX[�'�Y���o�F|��tźgN@<�^�+�<F�,!�K�%�b ��XBL�=�` ��XBGߍ��s ���ڽY�<t.���ELH���M��H�T���*Ct��@Ec㓶e����~�6�QL��PE86.���{�әm��v�Ė�M�f����y�MH�'&$��7��̅r�r~#+'� �%���\6�����}'fL���8Z�� �IEND�B`�PKb��\�j~�''2templates/hathor/images/header/icon-48-preview.pngnu�[����PNG IHDR00W���IDATx^�khU��ٙ���v�M�J.5��6�"R�Zՠ��jQ@%�JEA��jKA�BS(���J��F�T۵E�)�j�dI��K2�s���.@T�E`�H_x8���w�0�U<�C�B��4P �7B)�S� �p �4L'�uD��H�Q%���١�����3������lHeW�tt��W�6;�y�#O��ܟ��wu��`g e�űkeQf��Z8Q2�؆�"��\���*����w�趪w�܃a3���d�8�|:�TX�`:!�n�b}^e\Ի{p�T�_���nۚ�0�)=B6F:��d� ?��0�RYE>�5��g�]��0���o��_���$�.�Ku�.�"���R�"��e�<Cl}=Ͻ������!�������{F5��:�����y��8�5Mb�t]�l2G���&�"9<���x��T*�hT�Q*��8�T��(�OԱ=�s��*,˂L✋us�,Y��E��}�l�_�Lb*F�~S�� ���#�d2kGH�q�����F?ލgо�W9:pi���7�#��T��|���@-�e����q����s'[�&�w�y�%�I⛙1��v"P#$:P6+�͘��j8re?N��m��#�Q� ��X^�@QB��%N��SHt�0W���pF+!L��w3�hE|��0���gs���h ��kV 1=.Bl�} �z�la|$8�m� �Ʈ�>Aլ����S��;�}2/ر�|��#�ۄ����8�����VB��a��G{��t,pǧ���l�]� �\���@��lL�a�K-w@�� [������kK��#����A h�OQQ���#Cf9�#ֆgOਪj1�D*۶!�8� �&[`MLL\^��r� ��! ��L@�X?00p[>���Z���R�u�X,����� �z�['�D�K~�m&�J�M��`�-��� ��o����7R|IEND�B`�PKb��\S�4templates/hathor/images/header/icon-48-component.pngnu�[����PNG IHDR00W���IDATx^�K�G����ܙ��b{���8v�X��!��.�@"�# #qHx����8�Kd$F\ J (1F�1g7��>��zgvf���ZS��t7���F�_��������=�#�1�����=�9pρ��߾yXN ��l�7Ɯ��>�R�����Ø�P�ak��C�����m?�̀R�۱2�롡��Y)�F���mb)�6�����&'�ې�U���:��i���ҙ��9���u>�%�;� �y��X�+o���|���Ώ���".�7����Q�6P ��[���v�wv@��R)�7.�{�u��f��⯑O<�L��T�¾�%��\n��i3\���C���H��|A^�:�;gY�t�7WX]Z�����x҇ŋP� �5�m��?����b�x���f3P��xe��@kM�U�~���8�"� �>�V���/Ra;�x�ʼn� ���y�ym���ir�<IOGl,7�D��x��i�B�X��lV J�'>���Ԛ�T�a+B��r��RRc��]��: 0�_� V3j�� n���߁I��=��J!L���C�V��X�g�"�m�G�jڭ3��v�]�Z��5��Sf�٩q��hU��s�L�Ƕ�\]W��!f��s�B�Ω���)�=Oh�Ֆ�}������Rt�O�5�&|�����Xg��(�`6�QgA�� �L+�¨�؍�v)DF���C �90�sZ̵�#9�|�sC�f홙U%C��B���r3��)�1�R���k<��&�z���WWY��T�ӑ� kϬ���(ml���z��Hm����P-�����HjG����#�Y�Z>I���P������zp��3U~�5.ߊ2�5e^f��R�g�_�f���S�n�Չ� ŗ��]U����n�; ��x�c3��o��w��H�N��h" A X��Jt0%s�Xٍ�X3�֡����jg�&?=[��6H�⍐?���ȦF��6�h�ZQ�<�:q�A��=ZY��=`�Z��++4*����?��_��5����8 O�1���;g��$��FklT��z=�t"e���K���V��Z�*���� ��?�',/�U����Х��t�G�����!�q�-�q%�d�: �p7ɤ#/2"?l�I��H�2`KhȌ:+��N5�R��2 :�WB�d��Dv8cN��-���}��Kd۞����{B$(jb�3z��)��tr?/�HP2��3���Dg�C2�}1�d@�Q�Bl �,/7F^%�!/�b3ȤO���0!䠄�^%�[�=��=>^m�稑[�"+7i2�)P<Zj�_ߢǴ;]��y=p��+�O��Ǒ�"G+>�6�Tt�������~��WN���/; 6�k��ӹK'��-<\�V�*�E1�ۧ��ݽ�@��t��R�Vq䣇�;�>�.�Ѡ�ci���d���ic�N�c�9#�\.�y�Z ���(�v����=��d��]�'&&���t�����O;v��V�U���$��1bC����:ɜ]A���+7@�V�^� ��:9��ڞ�c[{/�h,�d/�.xf�nΜ9�/`: ��H.�2��I�j@)�a�[��a�XhgC��X�@��V�{����Ck'�[�}Ω\GLyeW�齩��s ��S甓��8���gz��yց�!D^��.<�M����{�Vy��? ��jEb6�IEND�B`�PKb��\��Q/templates/hathor/images/header/icon-48-menu.pngnu�[����PNG IHDR00`� ��PLTE���������������������������ž���������������Ц����������������������ظ�����ǰ��?q������㴴��������������ÿ���i�����:q�Bt����S{����#_�4k����2c���Σ�ԥ��;m����)c�������y��?X|���H�Ks�������������������Ro����`~�Q�u��)Y���ޅ�á�����:UyJq���덪͂��Z�{��u��:`������ɦ��Bi���۔�����7Qu���Ou�d�����$S�������1g�Bk�z�����>Vx���Ln�s��!Z��������������ʌ�����Py�]}�K��Ǿ���Y�'V����x��L����s�� L�.U�i����R�������9c�.[�����:h�Or���Ϧ�Ƙ��Cx��C^(tRNS@��f�IDATx^��U��J�Q�9���������t��~og&u��:W�*���ʼn�?�$��G�Y�r��� ju�į�N?Yv�]�*��?8��8�+��.]K�FFR���/M�/##��d�K�Z5bD��j��|�x������;��]� �dۊ�b��D�J���S�֟��uڰ����� qGf�q��v�?f�z��WF�.Ȩ���UQ�ss}��u�\ߏ����� ɲBI����Ƴ|�3�$���@N�� t]�AW�a{6R!d�n�b�m�g<[��0RԼ��сaG�?��,��ҾR�t�����t�վ{h���7�M����۟���x���/�&~�y`jj۶����g��a�d�T�"T3F��KA�k�@�$LH�������tHa,$����d��HxR��t5���:�N�f�\�+ 1��c����WA\�݈[՜��h.��.���d��<�h����J��@�TX�� Dٲd� ��)*�4�BE�t���o]��`L���� ���ݖ�CH0KD���f����U��d�o�o F��m�ٚ��߳�H��֢����4��?���ƞ����=gΰ���w��c����F��O�l��d�o�ք�1��{�7�G�C���4�U^#t:$G"���C�&"�4�����l�M[~<�f����Њ��o���GÆh�i���-��0G�h��;LΔ�P IEND�B`�PKb��\�!~QQ>templates/hathor/images/header/icon-48-jupdate-updatefound.pngnu�[����PNG IHDR00W��IDATx�Օ�OSgƛ,٭�O�b56��6�3F�\l[2=3qN��3����~���lN�dTT7�s� +XȔ: �P��KtP��g߾[����%�|r�����9��T6�d/�&&,"z���KL<&ӵЋD�E��M <D�9a�X�(�!��R�9��#J���H�"�e��1�w����=�c�N�ϰT��\)p�jػb���%�[OKUޑi�q MB*��qWz!�vZ�ֆsƑ���?>�x��j��@�`ߴV��)��qr�"Ћ� �f9�"?x��A<m\�8r�ÐJ*�����9��Z���.u����1��布��j>I}��8�� ":5�Tb�;�T#� ��q; ��Ƴ�G��F&�ҍ��5�m#e������.w����߇i�����C␊:{���!a�׆�Ӿ�l��?6���>�t� [��(iW;{�(���C��W췔���}Q�pg[�� �uGWD�|� �D��s�� ���(֟}l��9�Q~b��g�ٜ���BS0Ї��z8���5��bl�($��ra�c�'�zȵ~P����������֟:`�'p�F`E H�5=OΑ�#C��1�� ��#HM W`��[8�hҔp�#�|�]8�S�0����ؤXbr��&�\Ne�=�G���=8�o�0��- ��E��9��3�Fa�����.��7���ZҬ�s7'�%����q�G�����0Ї��=�ݏ��Ix�bP��*a��?}8���Ё}�|rk;!��J��"��}C�96υ�e�'`�=DI�I']�c��;�s��� |��E:Q�\O��$\�iZ�3��oB}8�� ha9W�R�_�/���xC��)mT�y��� �-��� |yj8�A+�� ��;YA����鹟�wz��n�^���r��{z�J���%�!�u��(�d�@�q=��D�'�Y)x��Jl�vv������� |Z��g��c��rg��O��f�nG�-ؾ��}�m��=�U��;�8z<R�5D���e����M���H��WA.�`^b1 /غزؼY ݏ��-�M����C����b9s��K�`�<l�dg�QX��80w����e0�#EP�V� .���ձ�T��������X���J���e����V`͚4��v Z�/�\z���\r����t%&�g�W+���\���������X�;df/��d�n$Þ��re�d��b��Bb{}/�b�|��]���F����b���`� M-]:�Df�k�˖����3���"k�QĩИ�<����0SU%\��W�\�B`!X���@�lVٹ�'�6lP��32��p�L&y�XE��\�z���JuQ�$�T<�~�I�%$Hؗ�ne����t�+#��b�����lt��h��d�Z�|�^�{f�=1dž��͒�$�I�����pS�:*�k;�� <��O ,:j�f���A-T�`2���j6[��Ϝ �hn�IEND�B`�PKb��\Oc���0templates/hathor/images/header/icon-48-purge.pngnu�[����PNG IHDR00W���IDATx���oUƝ��#(^RX`�����G^���&i�I�`������1-ДB�R 4��i���Nˊ��� DDň�q���wf�+��GB�~���=�;盙XU'$��_s�A(w�ca �P����$� U>�1���W�S���TL�lL�\���{:�����T��'�� �F����&�b)�r���D�j~�ߺ �b��1�H�8��(�o�V���,�S}3m�!fmNL�i�vQ��`1�'�m�S�U�@�F���E���Pn����I���輟άyڌI�e�=�W�.��u��+�4�Xs�M�r�k�O�)챦�ԇo��^��!Kи�,�?I�b�u��u����|0F����!0�[E� `�c�g����l w頒K!�� ���q��Q��+tf��W��@n�'�>��#�A��r�G�F���!{���=*��wk��@I�c�p��K�nZ� �.vG\�O�/zFC�*1p&QLQ<�s�.�;�1 �l`�K-$a�=7ԭ�<�ʔD�h% ,�x tr����� �ȉ}�j�rK씗��AOH����3��{�w&q(0{A��<�� M� ��� �D�@|���� �Y,λ��|������s�Œ ι��k7F" ����� P]����I*��8��n��ja-���92Hc�z6�O �8�s��w�e$B �Մ��p6p�M8�x���V�2���o+�.0;��8X�R�Q��k>-�A�V�H���h`�5Did�V�+7 ��2i:��8�vk��EᲛG.�I+{��4݈��`d�s;Ҋ��xݜ^���,�ՠ-� =7��h�! '�0�X�Mi�����OkҞ�k1{�I�Mf�,�kz�D���bH;c�p��B�+�G\���Θ&�heZ[ג�� ���e8�z :�X3幑���H��n�)��_�B�ұ8C�Rr9�٧6���$�A����Hk�ˠ�Z����@9^IQ/��ho8��4��;F �����{�Lg�4�P����D��:��h 8��]xo��:�S�@��,��R��ӷ�� � j�V�*���ߑ��o�J�{�yQ ��R�Fտ��o='�o>����3" 2����n���t�h4��ѧD9 W���W�J�ܑ'#sG�P�^۩��w���?.�3��X� U>l ԀZf��l*b3��6��!v� �p_5vj8`�ԁ0�l��"��Y��o u�mu*��z¦� =6Skg�.n� �g�Ax<�4ؘ(n����+6�y; ���XA��40;��z�q7�\�@ �P�ض2ۘ� �~K�ǿ�>cmַ�]��6�Om�+����=��IEND�B`�PKb��\g�؏--4templates/hathor/images/header/icon-48-writemess.pngnu�[����PNG IHDR00W���IDATh��l���{��jDCnn��ܿT�1$*���krso��ITQ�H@D�� QY�2�l�1�F7`�ƶntPh;�ݏ�u-�~�]����0���&��y����}�����&O��v�<��<��9�N��k��<EEK�G��+*��Y��r�3/oiwAA��B���Lﲏ����ػw�+77� ll�7\�ά�� `�����8ܑ�`��N�D�ߏ��a�KATVV�ffgf1f� MԜ��F��� Z������ɇ��!�-���0���I86�,�y�8�����E��p��� v�O"�ٜ�횚8��@���gs �t:q�� }"�2�����V��A�<��ߠ�!���i��vcdd3,�����������ٽ{��d!&ZVv�B햖�B!����$7 k�U�AZM�q��9���mMd!F^̺M">����<E.^�(Z 2��>�[�;��Rl�G�]���4 '��Y=��w�:|o��B�,/d���Q�t��,#�[7�p�'6�rȅ�2�}x�k�� �F�8u��s� �T�ڇ�=��D�#�G���|������;�%;0�&��B��4�S�Cz�[�������F�����i��:�O����eĎӽx!�otm����aU^����,�����͇^l�1�b��xwh�e:14�?\�FU�(��Հ�Y��?U�3 �~f�Xnw�F>ـe;�@\���7��o)Mx�H72�!�?֍G����W6T8��*����2;B�G]��rQQ~�8��R�As��W�\�a�J}��b��$�&l�#��ȸ0/13�_��M����M꒴�4�0�����H�NM߆�s��^��M ��Eڙ^x�g����Wh39���ɩ��Q&����!��B���C�Bh3s~9mU��D������kık^��ӊj�0���RJ��K��h,� �H�1|LB*l)�t4��A���G l;��,ڢ����rG�r� �F����h�����k<��*՚.�/p�� O�aD�^��.(����s���>��D�����A#��-�2"f\�q�O��þ~W%�.9ns���O#�4��.D� ,$���� ���`�pj��A]�ǰVoC��G��<�����TՁ@Sg.//�r�RB `(:>����B�6�(ن���p��JT��6�6l�t �?�g�=x��X�iм����A�J)���������j���%�����+��Z�ʾ@U�:|��J��⿹����_�n�T�@j>fKŬ$◿����{���w���v��� ����uvda���"@�����a�Ə�:���)b�Y���ʨ�-��R�ș61����x4�����uxdm:�l��ҕ�����g�7wcUF)O���:�2:�;� f�FF:�j���@���/۴��T��f��p0�����u�{9��r,N/��6�j#���S����]�����l����FEJ)r��&��,�AoiGRA-ߘS����#c�G��ѳ#ځ���?k�R7n��c�*�?�_(����C9_lq���]!����l��J⍏>����>466���z�~/s�����t� ���+�.��9���>�\t���� �N�dt`t�\0��`Y)((ؽ~��'�{���9��h��� �p!0�S�� T'�.T"�a�[긚�4�Ǐ7gffңJ�����.f��yG��Y.�Ȩ"=�5�;�ml{��u2>�ɨR�}D&ڋ�G�Oף~��+�Zg �ϩ�[�\JO#�LG���M�~����AW|g��E�3RJ�Q@~�hk=fK!�RJ �W���c���/�� �x̎���04vS��E��m] BG��m-b�Z|����Vs}}���E�K�h+��Nv?HSUZ��V��E��Ç�aÆ�l�5�f�G�Ap�G[ ▅��}�~��9!IEND�B`�PKb��\����(templates/hathor/images/j_arrow_down.pngnu�[����PNG IHDR �2ϽeIDAT�c���?1��� �v>��-x�L fcP_s]���,�-�V�y���$� �m0�(ݲ<��C� ���Ѣ Ӏ�?'�Pj#�S<����G�IEND�B`�PKb��\ց5��&templates/hathor/images/admin/tick.pngnu�[����PNG IHDR�a�IDATxڥ��+CQ�A)2~^I�P� ��% DV0+%5(�=[Qޤ)<Dj��� S��'|����XN}�=�v��� �/�#s�� BqX��e_G�F�(�<KڀhgË�;�R��³��O�8���] �|RH̸�?�?j��%jm���%��Q!RQ?ӣ������>�8&x�ގ��4T_'C}[�F���H��=�N5��M4�,�8[�9�����лi_�6�U@�k-C�Q��J1y�������>tZ�֓l�7�}��ָw��ݸ���R���OJ�X�����!�W? P�[z�f!���<����a���݁j�Ŝ ��^��-B��0A�cۭv�r�G��MF� D�(̗I5�`A4!�O��<_B�B"��rB!���}���~�X7�,c9�,?�7����c�s�XIEND�B`�PKb��\+l#*templates/hathor/images/admin/filesave.pngnu�[����PNG IHDR ����IDATHǭUKOW>sg��#tx�H,���Xb�]��D[�EQ�����j+%�_P�"Y�,X"UI����%��1�b��c����s�M'В��̕�����)�/�B/I�B��zCs]7�(�̾zU�'O6烀���Y[��'?:\��}3/˲Ƙ������e��vlǁG�í[�A�� W ���a�^�K��?p���U�00S������Ȁ>���ʗ�!۶���y.�J%<� �����a���eձL����b���T���Z���ɉ�+�:fЂh4JnaD,QA� ����d�iHg�0��'000����|��r3�j婙#�Ð�݃�$t���|<�eA$�B5hs���b�D�����������/.�=��?���_���'{��H��(c8�z�@b~�����E������qQ�b��� 87O�����ӏ?�ij���N�T�7�_���d�xo�Aڇ�^ +�~���b�&Q@"���%�4j�O�ǻ��i���f�t]/��S�{�H&�d´��X�^���r.p�Ї%�F��Yd6�-��2�3ι��b�ɬ5�������m�VW0M3��つȻ�x�����I�E���5�mV�]ס��>W�_�`yy9�����u��Y����A=P�;������@.���KOOO��-�vtt�T�C�z��k0=D ���6�,�+++�������٬X?XNOOap�,C%=���F�1��@5allL8NLL�u{{��`���0����?�ͺLxGp���;�������z���a���W�0�����n\��xJ\���?��m�� ]( M�R1ʤ�J��Id��ڒ�:~P�E��[�Cz ���D�r=X[[z�4��������`�T��hjQ���wqz��&�t&8Om�=N�]=�<�����IEND�B`�PKb��\%e3_88/templates/hathor/images/admin/icon-16-links.pngnu�[����PNG IHDR�a�IDATxڥ��nQſ�&&<�]��\L�q�Iuo�g� )�Ԫ���U��?�NKE���tj �0�t�(���;3D$�ݸ�%g��ɽ`"�������>Hu�X�B�>h}߂i6ۥ�����d&�0 J�X:��Z�؞�V@=���n�t��z{�F��W+�@���6(��Ʃ���~�]��5�4�z�G��@M�S;e�'��C�u����4 ��e*���_@�&��t �2�H �� ��j���C�a�k �:���,$iR� UUq&�X;+�Y�*�����w4���E �o�$�q!V�a���n���-t�]<�i��ќ1�s�en�G���~�q^�`0���6�>�!��Ah���~�"��_?ѳΑ7����:ȳ��������h|�s�Xfj�"��1�z�� �e�%��a�L���ހ������3��{��P���Gf��ȵ�M����~LWp�\h&��,\/@�E��MzL��o���YL*^fIEND�B`�PKb��\,a��+templates/hathor/images/admin/downarrow.pngnu�[����PNG IHDR�a�IDAT8�c���?%�a�*��1[��<x^p�/j�8�[ �k�h� ~���L��@�eG&�G�灘�(�&a��@� ې�s.��(^MV4������ Yn|. č�;%~��,2�2IEND�B`�PKb��\��t��-templates/hathor/images/admin/note_add_16.pngnu�[����PNG IHDR(-S�PLTEF� Y�.K�P�b�9N� R� [�y�TZ���Z��T��@��X��b��I��U�̃��c��,��\��/��E��L�Ϟ��V��Z��P��3��e��z��N��V�Ҕ��?��c��g�눵�z��q��e��~��M���ܼ����x�[���������������������������g�IDAT�=KBa���F���" I56I���ojtp�!p���'�+ |��d�3`N���i���Wp�B�Q�nЃj+tՐ�I�[A�2�!���_W9�-d.GS�G23�����g\�*�j�����U��K�gaS�@�/���{��A_'���3��}�q��=�m���оey ���T�hv��IEND�B`�PKb��\Gb�:��*templates/hathor/images/admin/featured.pngnu�[����PNG IHDR�a�IDATxڥ� JQ��f .!K�%d YB@�`$M�IUiRK)!c��Jtlm��`�EE ����ՊQ(E���Λi�!��ܹ����H���M�]�:����A1�Q��K��W��y��̝"��PjbV�ԅ3�̮-Lkm��2 &kM��u�ǿ==[#Z��\EG�a|�P�uO{�>_x��6� ;2�=$F�����g���T/P�)��O��z�x��߬+���ќ��oD��ؽ�h��k00y�t�Gw�����&�Ε�y|��K+�0�E$כ��j�� ���y��n!��Dr��[V�����6�@v���[���_�+�H~$bE�-���s�5j�w�ߪ^�+���X�x�ދ����{ʗ��Wf�ēy�*Gr$LĐ�8D��K/1/���c�~�#�5ѓ#b��q"2f�3���_<�o���;>IEND�B`�PKb��\±kA--+templates/hathor/images/admin/publish_r.pngnu�[����PNG IHDR�a�IDATxڥ��k�P�O�cDZQq�ƴ�5�8��'�$�A@`���۞ �j����(�93�vm�6#2|�� �`��f�����2DO�{�~�KvEh���h�T�v\�_�F�np/J�+,p�]3V��D�T���S{P��Iu7�ä�(p���wY�j�&��` ��l~/�4�r�y����Ԁ�:D���C"����=+��o2��ֺ_okd�f@�4~ح��u&�ޢ�l-��І����}��t�(*�d��#��!�,���%%�,sxN�>�Բ��慀�=�'i�\:�/�ہp{s���VW�9A��1S�4|�1��'�P��^�ј?�ᏀC�y���ݺ(?7ױpE��ӂ��X�s��'��Lk�Y��(�8ҷ�w��:��g}T)(��`0����>"��~�rU����Ez����$�?h������8�g��>I�rh=R���J3�Ur� 0M�~�P� �K �cW�3">2�IBIEND�B`�PKb��\�0��-templates/hathor/images/admin/collapseall.pngnu�[����PNG IHDR r��|fIDAT(�cX���b�7@�Ĺ��?A�USϔ5DcM�؈Uӛ�1VM�~��X5}��c���Z�������~��0M����`M�X�i��?��D,i7����IEND�B`�PKb��\�tW�zz*templates/hathor/images/admin/sort_asc.pngnu�[����PNG IHDR �=.�PLTE��������@��tRNS@��fIDATcd:g����Q�3�~G�6 �R�hIEND�B`�PKb��\A[�__'templates/hathor/images/admin/blank.pngnu�[����PNG IHDR%�V�PLTE������tRNS@��f IDATc`��5�IEND�B`�PKb��\)�ˇ��)templates/hathor/images/admin/uparrow.pngnu�[����PNG IHDR�a�IDAT8�c���?%�a���EK�e�ת�*@����e�������?ېd�ɴS6@� �bf�������?�$�ن͙@�~�<x *[)�o��?����]@�� �*�+%�Ӓ�o��IEND�B`�PKb��\��0���+templates/hathor/images/admin/uparrow-1.pngnu�[����PNG IHDR(-S9PLTE����KKУ�����ff���ե��__���\\����TT����tt����UU�����Ӕdd�VtRNS@��f5IDATWc`P�#��ge�gE��32rs �0'B����llLL��|\�Qg�',gIEND�B`�PKb��\�[��qq/templates/hathor/images/admin/icon-16-allow.pngnu�[����PNG IHDR�a8IDATx�c���?E�:����(�\���MX���k����0 ɀ�GcV_���w8���c�7_�}�}0Xn��sN�4��@�<�pl�ʋ�������Ɠ�āh�ӏgl��~ɹ��O�o�7��`lu�;���o����ý��b���q�[v��q<���SE�w ��MX~����0�k�к;�}�Π�0<�X��5����uw(X �5� h�`P�=�=�'��1��v[�A�ր�@�;�Ԍ�U[*7��S3΄T�n�f`��%��ύw���f8�IEND�B`�PKb��\Q��-templates/hathor/images/admin/downarrow-1.pngnu�[����PNG IHDR(-S6PLTE����}}Lj�����KK�ll����bb����XX�tt����WW�^^͋����������i��tRNS@��f5IDAT�c`8�����/���`F�.�I3;/3�)�<̨� ��&b�&(IEND�B`�PKb��\#���qq6templates/hathor/images/admin/icon-16-denyinactive.pngnu�[����PNG IHDR�a8IDAT8�c���?%��j ��� /�}^�'�qBX��7d58 x���2#��ExH�3_��g^�`�ˬ���-�9p���EJl�7'��YX`ó����1�x����/~����UÀG!^��m��6<I�Ê��4ܵ1lx�a���t��6� /'�6�X�C��h4�q�H��K݆}]8 x4ࢱz�e3-L.�hX�2�n8k��p��+>im�p�H �1�p�P�ケz�I�"��h<��bpT_�������)q7`�S"��U�b v�b[oR���49P ��IEND�B`�PKb��\:#�2��'templates/hathor/images/admin/trash.pngnu�[����PNG IHDR(-S�PLTE�����ţ����������𨫴������:;B��������̚����ɤ�����RS[229��������ٮ��������������˘��ru{������CDL������pqv��WXc���|~����`akkmv���JLU���]^i�������N�tRNS@��f�IDATx^M�U��@P3����\,y&J��S��J�tw$�!�x}]og�O�y�Ǘ pY�-�>o�~��U����b�nX~hf�Z53G=����μ��_*�s�Wȟ�s�yVT��Z�-50'+�,끬�a� �$)�S��KpY�A;yƸ�IEND�B`�PKb��\"+�+KK.templates/hathor/images/admin/menu_divider.pngnu�[����PNG IHDR���IDATc<p���P�BI����IEND�B`�PKb��\�:d��-templates/hathor/images/admin/checked_out.pngnu�[����PNG IHDR�a]IDAT8Oc���?%�@����θ�s����V��_^״�- �&�׀�ܢ�s�/�miJ�I�,X�r�%+V���p����y����K�V�Y�~�����a�5��t��o����p�<s�t��`����?y�)�f̟7o~�̙��x�� 3f�ݿp����X ��7r؞��h�Sy��/�p��Q��A���m���H��<A�����~����#����� ؓ�AЀ��V�W7�����t��ӧN�?s��˗.����G� kT�b���ص�E��G��߷o���@|�����lڲ�T\2v��USsDA�w�IEND�B`�PKb��\& �4��,templates/hathor/images/admin/downarrow0.pngnu�[����PNG IHDR�a�IDAT8���!� �q7��j�^�c��v���J�Q��p���甩����x$�7^�)i&Dt��Z��h�{��H8P_z�\M�J/��) a����1�"��G3j�{��|PJ�|�'. ��-=�aIEND�B`�PKb��\��߶�*templates/hathor/images/admin/uparrow0.pngnu�[����PNG IHDR�a}IDATx���- �0�a�j�Z=��V�#,�Ȃ������%���������<��!*�n��9M�� (�:¢��Z����ScLL=a�<�֖�%��s.��p��� !`��['��C\IEND�B`�PKb��\����5templates/hathor/images/admin/icon-16-notice-note.pngnu�[����PNG IHDR�a�IDATx^���Ma���{ι3f�HbԔ;�F��RV�&*1Q�ll���)�JS�HD�ņ-P�b���8����j��SYz��[==��VOH)��*���d���Jc�����#�J�H8� �#��2U��m��~k}_� �K���sX�@���T��m�#Fw��=/n��rO1��M�n+��D]��Tv�Q���5ֈf���@X���^$�|+Ӹ��H.�uJǚu�H\� !Tm���Cp�t���C����([Ye=j�~��?�/�ˎ^���n�eм�, �h�y��{e�á���vé=T��)u��L�����S�l�D��F�v~i�� �:V���t��{#y��O8�ka�>�ݼO�]��+Z ]�II��c���J]�UBA�C��)�g�xR@W�X��P�nm4" �MtK����9����Ѧ+�mIEND�B`�PKb��\h�ʂ�+templates/hathor/images/admin/sort_desc.pngnu�[����PNG IHDR ��6YPLTE�����������b���tRNS@��f!IDATx�5� ��?�&�~ż��2�cQX �l�w��IEND�B`�PKb��\�LG2��3templates/hathor/images/admin/icon-16-protected.pngnu�[����PNG IHDR(-S�PLTE���FPUx��������FPUemqFPU���w~�>BE\di������������@AE*/2��ː��FPUemrv}�/<-CQ������ain��Ө�����FPUx�w~� $&Z^c~�2r�&k�������S��������������T����W���������s{����_����e������6[�\bf��������ž����������Ӳ��x�,Pn��%tRNS@��� P`p���P@��0`����� �P��0�OԀ+xIDATx^��E�0оꊻ����G�IGq�W @It��$@��US�� ��R�B�V�U�S�5����w,�sQ��7�v��<dD� E֏Eď�t�����Q?�/���|5��o���$�IEND�B`�PKb��\0�贸�+templates/hathor/images/admin/publish_x.pngnu�[����PNG IHDR�aIDATxڥ��+Ca�ﰘj( ��e�u�R�S��Vr�r�ט]�;��ĩ�v~l���k�V�R�x7���-hO}z���:} @S�br�IWZut�_�|���L";�Fؽ�<Pn�!W�6�u�F����"ְ��!wA�[j,ډ�)j21GAV��9�U�_3^�c݊��na��N��6JmN��� +�;�-�O^)���d. �&BS|�^*�;�gi�\�ya�&+�q}�ⴼe�P5�s��'��J�&.�Z1��6�2Cͽς�0I�!B���8�Sz6�-i�ċ)��/�$��֡�${fcV�y���P��d����?(�N���*�)��'��<8W�.{�|��6w��#� ��R��Ɏ]�)���n��'IEND�B`�PKb��\�.Tz��+templates/hathor/images/admin/expandall.pngnu�[����PNG IHDR r��|~IDATxڍ�a�@���r�+���3DW���vMv5�-����c$�i��dB��%���ԥHsQF�DEY�'ʠ�B}6��MD��l�ˠ��G�ʠ�s@�bt��A��9z�����*F���IEND�B`�PKb��\`!�kk*templates/hathor/images/admin/disabled.pngnu�[����PNG IHDR�a2IDATxڥ�ˍ�0ES%�J��)a*�R�J�0� H@� ��b�ś����b�`_����t:I�e��yn�q̓$�/��v;㘲�n�dYi�J�'QQ�~����UUJ(�N���Gl��WykۖB�A�3I�u]@vܾC�x<`�&�K�}O�����A�ФU��iM�������`�ЪRf�DQ�!�d�����(a������ K�y��W�*��UC���C�<�p]���q# ��mۆ0�y��ec$0M���}�%}^���b�I(hIEND�B`�PKb��\��b�tt7templates/hathor/images/admin/icon-16-allowinactive.pngnu�[����PNG IHDR�a;IDAT8�c���?%�"�pH}GB��.@�S�����Ұ�Z{��S$0�h���K� }����o�|����`�܀�'2$��qh�́�y��X�����5t��IG�@���3%6]�Xr��a�颌�=ApC����P�й/��mo2�{a�Ŧ���q -��f�n�w�(�yW G�X��������pJ ���h���ӏe7���V��RKC���d9 @�Ȁ����*����]X �n���P� 80�f�h�� Q�9���0v���P1�!�5�JHPC"�` ��������e�IEND�B`�PKb��\J9�|}}+templates/hathor/images/admin/publish_y.pngnu�[����PNG IHDR�aDIDAT8�c���?%�*c)���v��$�������U��Q�,��À l�`���R���D9��~Mb����%�[9n�5��[+������m0�������9��/�Yڑ5� x�a�6w��=��Q�>��)��������%A�w����5s�d|��y6� �>;�ՀO]����0�\��Հ����dE���B�p��0��\$��'*d9�� �U+Q ���w�Yl�&�G�@!�0��5�e�v#GR��K�,6kYϽ�a'��L�������9�j�P���\h|=F�IEND�B`�PKb��\~oD��+templates/hathor/images/admin/filter_16.pngnu�[����PNG IHDR�a�IDATx��б �������h-h���tr��@�B��% �0��4\�b.�m�� �R�!�e����d9p�a���v!iGpK ,�F�@R�M�#@�.���DX���I�23�Z�;&�.�({��ü�b`,(�&+�I&ETQ=`4��� 3�O�fg�=��S$yl�8xq�ņ��W�=!���ߪP�IEND�B`�PKb��\a>B�ss.templates/hathor/images/admin/icon-16-deny.pngnu�[����PNG IHDR�a:IDAT8�c���?%��j ���/�}翌 �� a�_�9 ��i��`�� �_�������'��2+�����-�p���EJ�'nNX��Ϣ�c5��³������g�!���:`�(ī��n���$�a�}\�ߵ1��4>l>�� ����9��?.�����L4��q�؏�Æ;���_�u�4�=Ѐ���/�iap�D��������{b�'����3RaL/�2T�`������"��h<���pT_�?7!�SN�@��'�A`���q�� x���F+Nlb�}IEND�B`�PKb��\�r ��+templates/hathor/images/admin/publish_g.pngnu�[����PNG IHDR(-S�PLTE����������������������������S���Q��Ͽ���m�@U�ޞ�}V���K��v������~������c�"I�v�5���g�ߟ�������ʷ|�ヴb^�(M���uf�t�C8����Y���s���Z�˰S����������w�F�ʦH�����zG� �ѸS�X����tRNS@��f�IDATx^M��1@���������w��d;=�w`@S�$�Ywul�4�f��AJJ���1}����n����� o' <r�!i$�'ˎ��{�[��s����@�u}��/Ю�+f�r��7��u�i�.C�(�Њ/�x }y(IEND�B`�PKb��\ ��jj$templates/hathor/images/calendar.pngnu�[����PNG IHDR�a1IDATx^�SMkQ=3�~�j"$LUQE�w�N�ʍ"�AA�t���(�*��(�~�!���Bզ��&�3���KH7����p��Ý73c;�(��F�qY2 $B�Tg���UR0$Q��#î1_�0�3����������}�;y`�H���vpl���~ތ7I�u04�H�b�2Q�6�GHt$A����NB���6��`���x�[u���Ya����~���̒�r��#��8�@JX��b �ebj����r ��;x7C`"�n�hxl�+A4�ʵ_6O%JzR�g�:���(?N?��髮�~���{'`<&�"U�r�>/nÇ0M�/yX���Da� A��%���Ο B�Ё�0�Nqvh�3QDNG��o!�뇷��1��,��(��y0OW�@�XY��?؋���ΗS���3����x�� o>i~���b9��p�k��;�?<�;0�;P��A6�8@n}�ݽȬ�����=���2T"�H<�i��-ɫn�*)�5R�_�n��U�����aJ��IEND�B`�PKb��\��r���)templates/hathor/images/j_arrow_right.pngnu�[����PNG IHDR �2Ͻ�IDAT�c���?ý�7��|��?����e�O��ɫ� *������ �q*)���a�/<:���9g�#+�?����m�1�<Z���qw�k��b*����nS0Vw��I�K����F��9\a���a &^��� ��,�9M7IEND�B`�PKb��\&��337templates/hathor/images/toolbar/icon-32-article-add.pngnu�[����PNG IHDR @{�u��IDATx��Kl�W�I�[�hAtU����E,(B � �ET�� R�ƋV *��*!$DiDҢʍ���*'Np_��؎�:{ƞ��8��/�����9��o�q�����s�?���w.s�91��Q<311�P(t2�z\�� ������_R����i���K����6�xA�TZ@AA�!��zSSSiyyy<���h��O�崀H$R���,��\�~]����*�!ųieee��{����dU���H@���jZ��#G�p��}��'���W���fc��TUUe�|}}]t5d�Su^�H$$??�1�Z�(�G'N��+Μ93n�|��D��ꤣ�]�*+��練)�Dž�T�r|||���mg��!-�χ�:��H�ܱ�,�Cccc� ��c�s�vh�;bmm-�����eN�:�^aaa������eKs������v`hH�==�����deeҭ����0���VTT�cIgtL���V�m�FGehp��{6ޱ�����4.��0�|��� �A�� �7nH�ի��;uș#�3�/^�4�?:wNz��M�_}780 �3�M�>�f���to���J�y�}�6�-� u41D�ss�>7;+�]]��`P�ݻg044�QO���lJ�#P�rNX+�M�����-���M�����W*��FM��jm�ښ�z��c1&1��*�(|Sq�N!F����ё�)��%�).�:;��������3�n�����T����+~n� 2\�:�phI!�]0%�Ύ���8�Y1l��ˢ��`+V���WN-�|>�!�����^//�4dWJK���A>.*��2S�^�$�Z"~1�(~�wvƲ5�r|lL�)��'q��,�*����S3<~%�A0�X,�$&r��3�|q���6�^�fڞ�g���˒���eue�qY\Xh�&�IY�6��\���kX�>(���O�*�� �f-�@�qKKK���(� �I��q����%%�*��8����DQ�H��|��_t�F d,!�pA !��?�k>�%�����{�+��R��WE�9(R:�]<�K6K�I�ef6���߉|��X+}E�3Q�m� nvs9��3JhI�x��xBV=EN���ٗDZ�"��yB�-eG�s%������x<�7?N�HT�]u�OE��ez�k�s�x�r&��xLI�p"5'i=��X8l���;ω�M#�F�A#�OE`.d��=��;�]�S;�df?��Cl��i��b�oE��Q8kũ9��� �<���n.GGF�>fHo�H>��7�H����x�;"�%"�G����g�>��g?T���S��(��/�_�?9↕7�>O�2 x�a@�`8��:��r���ٌ�?:�|y?��L�#�H0�y���+��+�e�O�D|1x:E~`��' �' �' �' �E��g.���a~hHNliS�/+ ���jCZQ^u`�!��3�g���N9���g/A��q�o> �Y`s�1k����~o :�c:D�%��l�S'%�S%G��%(�T2�Zo�L���C^�K���p��94�g����=Z���r��( 9wN��8��C�!ZL&�s��nȹ� n�2%(�w=�V��q�C.�\6�.�s;�*������4��� �dJP@1"�NǐS��1Nq���5�� ̬g���{��V�'(p�pK�+8 it2\�\d�45!�{��ͧNP@ܮd�� ����ݐ�%dLP"U���aa����#��'(��r2��.Hi/ 8�)� "Ő08%D 2ikkK�[�uttL?t���h���%ː���d�pI�d٩�a������Ǐ1 �%.�d}�Ͳ0�ѡ��"Ng#AA�EZ���n�DV]:a鼧��,ͅh�ʹۥjd'Aa;�l۳=�IP����!{OP���e�=AaZ�k���---�YIP��{������a //�[YKP�cǎ����n'�z��>�m9; w�,��D�`s��@�X�^_1IEND�B`�PKb��\���4��4templates/hathor/images/toolbar/icon-32-user-add.pngnu�[����PNG IHDR @{�u��IDATx^�]hU���Mڔ�R�nAD�>����}kJ�)��Ⳛ� (������/��nUDhJ?�P�I��PH^�P�f4��c������u�pY73�����,����{���QF�Gqt`�q�zGM�8�n��`;��8� cEB�^�B�T�v0\�:��b��Sૅ��G'����^m A�Z%d[���J ���JD(�`�P.� �p4�PȅP�B��,�V%'���t�8*�@� B�DD��& ��{�8�B��@J#Xg^��x����:/.���K3]+v�)��x�T�E1@���|t�L�s�w���oCG�>�Q�|4��&�_���o9��i�x�y�O.���/���[Jկ�nNcĠ=岮Z5m�$J��ó&Nu��,�5��a���ZԢK�#�.Mg7���^����Z�U�Pv��ר�"�}��'��?�y��u��"��� m�u��g��q�ܖ��l> 0 ,f���5�\��&h�� +��Z[۽�k1��)<���XE�~ �^Q\_RX7�*�Ę�D�OX4��:P���t�*܇�pkë<����,��B~luNS� �U�S��Ǩޅ�o��5E��yn���T�N� �k��D�T-�먑�.s���˰���<���d��Y�A(�C�J˥d���������� �兗�bS \,�l0��;�c=(5�B���EX/ՋA�bP�~��b�)�\�lO� ��GrZ�Z���+�O�ﰾx�{��t.�N���l�X��ed3i�qz���aތKfS�l�p����'�Q���<Z���M��@1���|j���_Ǐ�y�8s�L�PJ 뾁�<pphh�����b1<����`#��*�<y2��m���v'���T�}�,"H�"�hr�_N�8q"��T��*�J����k!Q8`j�P�Q80L��{[?ؽ{�0�0"��T��� ﭯ�14����|����,A���8��܆�N�J�[�6 p���'�����@1�_�N�>�����(�qݎ���|�!n��<::j���9`ܻ�<b����'����� �C����JA� ��g;;;���Xm��ٝ;w��`B��*n&�]]]B.b�V����H�s�Ν��# �^����===r|��핂���|@����b<x�y�{� ����(�7�"�z�A�T*o߾�����رC�����kU�!�4엾�>���[�_3Y�`�f��M�t��% ��/_����,�D"���ٳ����ɷc�ȕJ˲$S*�hoo����w��ڥ�%i��'��{�ǁ��wQ6*p���`��&%�{x<��;4�Y�E�IEND�B`�PKb��\Cq�� � 1templates/hathor/images/toolbar/icon-32-inbox.pngnu�[����PNG IHDR @{�u� wIDATh��iPU���6D�PE���ؘ8�G;L�t���C�f�L[Ҧ��L��DD�@��b��Q���{Q�Ev�MP@��]dU��y����Ü{/� �7��xf~s�}�>�9��A��OGrr�v&��bN0^߇Rf7S���N���t��m�~�:��i�{���B������F###T��Ki����O�/_���xG�z{���{�. ц� H��7OSs{�Z���Ί���v\�p!�ҥK���K����þ�>a@WW����_cJ�����5�YBUUUt���^a���5���ۗ���B�������D��������TSSC���" ��(J���SZZ!J�����+Un�ʣ�1߸qCxSZZ*~# �����,�v횘���$���#XN�J 0MHHʠ^�*Bn�bb����_vл ��UI7ZzE�Ϟ=�"8�#����A���4::JcccB�NNNj�1��5�7�@�~*������D�~k�%[D(�ʡljj��߿�ƾ��$�EݔW�!jrT*U#�5XA�%�����DGGSCC���#t�?x������k��JD�QHY%բx!'66�^b��'��e�N��+��*ޕRs�AU����B�Rc��{��i�1܃�ueY�p�-j ��>�A%�x���-ak������tn0ĆFϬ�)�M�x���k���9���̼b*�^%�".-���R�T ����X���R�� Y�D�ݿ�Y���; �'֡���䨗����#ǝh�؛K��b.g���P�T��Je���V�S���6S��;��zRs�j�|#u���l�O�䀱3��7)R/ wH=s[i����Iݢ�4{�;6���2�wP�q�����D�o�R�>GZ��Q�:�!td�Ό�H۴hzO����/�h!}�Q����Q�ǂR/yk�A�'�'{�>Ѕ��ݨ���8��O����S�7�����Q��# ���[N��a+R�!=�U"�[R�;v4�)=��Ss�3�m+�J�C\�y��Zq]7���������ߚR���N-�>����~�L��k�(�Ê���C��k���lC�!N�P��8�q�2�"V�����Dw�9��qG��t֣�/��t��zC������5����m���?��s+����UZ2�"�����˦��ߘQ��i.� =���`���_�n6��+{����z�l�dt|jCБ���xk��'�YнP+�=nm&�Z��aKj�P���$W�&]K��Lh�9�5#A�xİN'��+�'I5�D#�$����(�m)�ume��3f�a���s��ҩ)�į���J �H�YR{YR�|�K)IF9�y��u2_�*�C�./ɏu�b�a��@C���x2���5��Y �5�7j�zj�7)��#�̺�}�k�,1�M`�xC��x�Aogb�)��}(u`v3u�-��lZy�ѽ��0v�,���hP`�{�1q4����{H|�c3�:;;�֭[߽?���L,vI��Kx(��e�� 1�90��+���?��̸��=j�����[슔; l��wDȑtL�m:������J����(�`x�咻!---"Ǡ��U�90�AJ�`9+5��Z(�"x��"��������Y:(���TVV&���ǜVdG���v�333K��t~~^��qi���9 {��rƒ-��6\�\V�����r�M#R0BS�,��`A�3�+w4|���0b9勋��7�����"�.97oޤ�W��IJ���rX0./r(�[s����b14�6&%��`���[���)ak����v�94����rG�.4��^���P�|,�(b �C1d���CX�:00�Q/��;���E+��y���xh<�r� a-�^�k<�r��Y�^Xh�C�O�KIIɲ�d�m �9��nŢ������ :�q��y�ۦ�aH4-��_�{k�r�p�c�3@-`/��FPx�/Ɩ��yܶ{^���g�Bes��Y �˭]̃�J0:�N111;�@?�Q��B� ��;�g��3d`\W���.=`5� !xfu�2����a��7�"b0D)ȩ[.�@0B���@0�@�JQ;���8c�U�\�Ф�[�V/�c���/���`�%�8��n ��X��r�tR�������c�e٬k+c��������u����1 Lbdd��Q+HR�Wa�f�L<d���� �]�3̓�h��qc<Of�f�<�a�f�F�ZO�&�zD�Y���"s�7��#�B�����Z\ �ZIEND�B`�PKb��\P�*��1templates/hathor/images/toolbar/icon-32-stats.pngnu�[����PNG IHDR @{�u�aIDATx��_L[e��P��[\`�h�fw��"�n��I��`p"f�p��2/�m,��L��-�ЎҖ�a�0l��h�_FC )a$��w��^�/�ݽ�}�����O8QRC���4q�8Gd%����t�I@�q���*��_{�W�"7����KK���D�a���1��$�s_߷R��g^�짻gp!Y�z����:���i���V$�g>�P��Á���Oꄴo�4���%e�o :nt��n��: ��4����=n�3����h�sA�[F����(� >�9��a6�<�/��)��Q]�>*.��u�`w:�4�z�����?��@?bn.���<�6�������������[���1-�k�Ĝee_PwSp=t�]gBc .�b�beu��E�xs��Q��� �coo���8zf�f n��x�d���D$�H#ht������@���J�Oq� ��:M2;p��*n�%OX[�}k���oҋ+WJ>�fXr�/��g���:]/ff�� 2����c��q�j�I���!U%w���zuA]����{��_���f4 ��&fd��0��ۘ�agZ��FF�2t��و�7�>m+s:�����K��y�RBv3J'N�oo%�7�x�H���QnNJ�����T�肢��XUSS�S]]-7�����@ZP����}���!��ىDS[[��EUU�ݶ�6$���|���hZZZ�,�������J���ɢ��P������ �������W�t:0;;�`0���Q�sXXX@8������dP��ccb���r����&aff$��,..��X�r?���h4*&�$_�Ű���Eq ��Ky���ϋ9i�r���%�d� ��Tl{{�P���������.Z�r�XQ���F� �F�r���e$`J�(P:�|�So��R4�쀊�lAA��5Y~ ����B�������|qr.�j*��{h����v�Z�Z��Z�A��l6f�ۙ�`�E��у�|a&��Q��.��x�����c��I�FF/�j����\qA!��ĂB��r�A#�����IEND�B`�PKb��\Ռ��rr0templates/hathor/images/toolbar/icon-32-lock.pngnu�[����PNG IHDR @LP��HPLTE������������������������������������Ż��������kkk���������uts{{{fff�~ȴ��tRNS@��f�IDATx^���n�0CK�M��$]�����B�4����<���/��Z�Qm�?2��O 9�-�U�3�*:�!RqE_�,N~;�y��7}��@��L�Ы#e�qi�ƅ�P��-S�9��V)(���#4ħ:/�K�!-f(:����h��KJ.�p��\u���D�K�:88��d0J��\�IZ/�b�${I�AҬ���F������d��d/�kN��y�d]Kü�����t:���ad|��RqْR�'���;A��e;e�%���Р�xX3�by�G�x^`<$�BW�� ���:��af��ӓ/ ��ڏ�i��0!��Z�����.�qDp�^\x�ko}����゙�4��,|�/q�`�|X$X��/$�^�D�x������Ii�QSu(�ˈ�6�[��R��Z���&h��G�����&��&{�<����ZIEND�B`�PKb��\�i3pp=templates/hathor/images/toolbar/icon-32-banner-categories.pngnu�[����PNG IHDR @{�u�7IDATx^�Xml��~��N�8ɛ��%�>�&6D�ب��k�ю6ubF�N�S�I[�Mj�M�&��Q�&4-t� �[� �0 ]�))M�G��#�?_�w��Q��#�V�H������s�=�r�6�<������xK,���Ŋ��1���F��\�p̭�Z��]?��U���w*%��vG���܊�`�`C�ز}#J*��Fۯ/�7p8.D8�����d>;x���+i�;�ٷ���=��㥿p��d��p�}�ċo�G�?���9~��>��+���?}���ے6�ӣǪ��ٯ�-J]���"s�c,��jk!��x(�fDg�͎*록uU����а��!i?�%���}W����;o<Պ̀9&�����������}^���ԕ��Ey�^v4��G�@3�f6W���>Ěl�x�����罁݂ܕqN�{��B��st�\0�6��jD�Մu&��LO�KzC�W�E$�����>��X�$�3�8��� ��T ���I@��V9$��[�_����Wܯ��Y X��q�WNQg@4'B\#@e,I*�h�X����&�U�e-�3�۟�]�\O���DR��!�qȲ, ��3�r|8p�>���e�[B�}�0$��DP8 �y!���g&��\hOW�'B��f�uק ��n.Ār�-&�r����PYh���BL��w�P�%�6�p}h �Qj[�]�7ۥM_m�D☊���2�+�I��!��sMI�B$�� k���:�C�_�K�;�N�0�]� ��مo/A�H�D�<a�+|���d�Y�&Q(�%J�g��NH����e-� W���&P�}�(�����J1:��8in�窫�(����㛞?�FMI~�����^<�/�Ș���״v�c1�F���R>����Xz�u��r�e�C�-���GX����멿�v��d��i������(P�ȫ��� �{Q��N�`� {f������!�ߜ���L+#��d"@x�Iȿ�+!?��0%���2�m�/�: ��`�%����2/D2�A�;���R�+���Fc�^��۾�|Y\�nd#�T���'ܹ�̰l1#�o]�2b-?�~�x��!� Ś�!��p���g������Ϋg�<��:�Db(�!)V��> ���JD����Q%$�Z�e�j��xA�A�ߑi�E��Q������jP\�tII$-�TU�4@4���w�u���mP8p � ���.�h4�WVV:L&b��`UUUb055�����a'��B�sQ/^�� �b�Y,;,�]s���?�]��188�����Z� �v����������j�;Q�V+$I"���n���V1?'�I$�����Cb�J?�>� ���all�w���皛�ӿ /\�@q��e�RLq�nEEE�����f� '7�Lw�����(l۶ w��� �o_� �mhhP�j$�?;�+ $�����DfIu����Ј۷o�gOV ��~X�&�\SH���$�������A��<[���(..N���u���}^^^���q��ؠ\�P"�S<@�4m��u�(���Ν;�9��=�c^� O� ��{��E��Qv�!N C<�����?s���(!��-K @a PVS X�z5DѡL���DHǓ>K��������"��F��T�@ @.GII ����u�V:�DJ�O¨�`�-��y{N��8ȕT� � :����CE���ߨfPAғ�N������n���$%������)sV�������+$�v���OZ'������/���^���B�y4=t��d��+֠�iKr4(2JB�X� pez �BV�2oP�yӜ�\NB�x!�2 �uЂ��[� 7d=Z��p!��]�b��͗�-�<����V�7�r�p���ϾAq��ᗏ9�5Mc�s[ \|�\�$��ū*p�ĉO~���YD�F�ǷIEND�B`�PKb��\��dB��4templates/hathor/images/toolbar/icon-32-download.pngnu�[����PNG IHDR @{�u�hIDATh��OTWǏZ5i��i%m���F�(�@�4鯓&��]�"�ӧ�H��u��,�8���K����csXe�7��k���y:�{�&1�$��ǻ����y3\�y{��̄��LZ�t�Ie��RP2%c��ȹ.��"Lg�]��)e�3q�N2��1{���"!O0�Z0�x�M��P�o���k��4P$�s��ө���L�K��>���'�E����!cxd;�J��AƽK/Ӿ��Y��G�{P���/3�Eq}n%��M<�QIpR���C�,�oa=�)�gJ��cD������/ �ω��>o�jX*��[�Tz��\�' �蕂?�m�h��n�^a��Z�� ����3�z��n��l��vR�X�V��1�+r�ۃxG�椃��I�,��8�]�ڱ��1� \�����ݤ�0���&ۘ6汭�O���KLq�L)X��f�<��k�`_�e7I6�)�e��ϫ`��n6����,�m`�~�;�Y�k\@Z+ӟ�n+X��P�6[���Z�-Oit��� ��gl��Yl�_�g��7�%H��iw=��Z�5L��l�\j,~��i}�R����Fq ��L��Q��"��B �oB˿?��MF1�1��� ކ҅H壔�M$Ux������:?q�B��l�m��R������Tf���t�y�P̴.��e�n�C_������@���RbQ�Q���HZ�o��@�(ӏ1�df�=�M���gBA�� ��п��s�d��N��M��G�����(,��4R"ē��&�yKS܉�IDw��\l��g S���~8�6s�)�U�T���@ �Efl:�_�b�I�M�f��R��m�g� f�6pP<E1R�[P���"�0mH��?z.d�E`)x�ޥo�F� ��v��%�*�����~���?�� ���������� ��V�(V�>�S�0�� ��+�$�x�*�����*�c���Ej7��o��]��ʃ�*b���%[��<X��Y���j'���X��/�y��yǘ�����Lf����!�*�1s�\��c��5��}�>���<y?���ӧʘ��-�o�Ϟ=�{���[�xjj�%���|��M����a�!�#�Q$���Ç�t�o�۷o+>���#��)��˝;w���ٍ7��ݻ����=zd����h���1�� Ƀ���3���OY� �x��6;E�����1���Ǖ"��A���=3��pOOό�pxx�������/�H*�GFF��p(��3�QR:588Ⱦ�@�!托��|�j����>!3�d``���ەk���\ �@P���qKKˌ� Y���< �k����ؗ��.nll�������ܬ�j��߆v�=�\WW����Ę(����u�?!A2�H�E[[���(-����W���@�_H���� X�D'������Z��A�'$HhI��wN���d<d0�C $��0�ͳ'��㴴���ֻ� c��+((��^�!Ell�w���{!r�f�5�����{�%v��!��sH�?�P�J#�IEND�B`�PKb��\�+���3templates/hathor/images/toolbar/icon-32-archive.pngnu�[����PNG IHDR @{�u��IDATx^�XQHde��zESQe�wWu,��\�F��� z ���J}\�@|��1��$|��ܧ��@�PwQMuMPGs�i�;��;��^�?�0��ǽ0W��s�9��sttb``@P����i��0XZY lnn4̓W^��%\��x�4M3��������7!�-a�DXYRR���S��с�`����FFF��X,��]aR�����=���qOO�pgg�=(`��C�kkp�R5666��D"Q�L�������s9�����K��`��=�>�t�J��i��]^h�`�O�HU�z}��7��^�B�o�Un,hSSS�I`S�^/Z/�Y�q�@&�����!�<~����z�:~�f�����[[[��B�jM���DYy92���NX0��]{>+D&2xb҈)(���U�P��/��@T�$/�LP�ݟ�88�u+���IЅqaX�`����-(������*�|;�$�V #+++�P*G�a�����)�t�����¢�Zk����5L&���p_��` ���������n�{��&���uT����?*����wx�z+^��Fֆ�D���3�uMZ�W����^��ssv��2@�S��I��2���*�˗��E�\˘ap�� QQ���O�6�k9��l|��{DŽ��k�iUTk���4a��{MӸe�=�����:QPP��C>z�PtL1�<uQQ���˃���L(_I��'x�H$���}loo��(]N�,���J�-?��F��f���\)J���)����h{{{H&�v&PZZ��xO��g܄mQ^Mӄa��a���&��Ϙ��I�@B� ರ����k��M�@\��7��xbC>&3`�/Ԑ]��F�!�J��>RM�&�S4(�z��l.��{&�Bxv�brrMMM������skP��젬���8��p� K 8X�Ǡฝ��������soPp�P�����-�7��:$��7(vww�N��5(�y�Ǡ�|܂,2���B��Y^^FCCZZZ8�T�=������Ř��9��#�S���| )��@� ���F#��ؠ�ķw2(�:??�2�\�u�-C��ˈ��`�� �@:���gh. � �soPtuu�Fss�۠�0(.��� �0(�����~IEND�B`�PKb��\d��//0templates/hathor/images/toolbar/icon-32-back.pngnu�[����PNG IHDR @LP���PLTE����������������̥�����������������R� ������͔�ꗁ�'��sN� �Ƅ��M�艪�D�ؕJ� ���ݷ��u��S�Ϟ�����N�Y�.��;�e� N� ��b�9��l�ב�ݜ��[�n���5x�!��z��/y�Tg�@���a�����>��LY�"n�<��Yf���8h�1���G� s�$���YX�Y���{^���Œ�Q�ᖲ炗�r��c��l��l��,�륯�`��W��@_���a��ƌt���,�ռ[���RS� P� ��|��k��P��?�؍S��̃Z��ʋ�䃫�z��ߌ�q��w��R[�,��I]���9R���H��j��^�1��?K�k�:��~���T��8a�P��븓�q��,��I��i���/��n}�"��a��K_�'��v��V��ap�@h� ��yF� ��e��8�ă��N��[���[��BtRNS@��fIDATx^͔S��JF�F04�m�m۶�c���ӓdwj��8�j&�ꧫ������Y=�<-�G���������MVo���m��yݗ��В<�kW����x~p��-'�n9h�3���DqW2�W2���H��>�jGJ�ܸҫ����\��td-os~���FQ�g��O��+�-j={v�)>��P~���==�����W��!��M��.�oc����}����v��3����Z+2�{�� ����M(&|�N������~��B�P��b T�ee��n� ��Va6�ny��o��m �;3�V�R�PXXx�:��7Ӛ�D��%+$�U�� B�?� ÉH(/��4�ZP6�Z4��+��t��E6{�L�ep��m�y�~�v.Z&������җ+�']+ζ ۻO���=u�{��mV;�J�^������w:~St�9�*�̶=OB !������g۾�F9!0�#�VZ�J��x0��<u���RL)�m�Zp �`.Z �F�a<��h@(�fn�z.�Rj�c�Dǐ)�pfn HPmE�`*͂z�!F�K�.!�DU���Q�s�Q���2�>�Q\ F��deTi\VL�!8$% ��@�sڜiÎ�Gw���1\O#� !h�D��:P .D# "!�Sy`�(g<6,�4\��)(f$�a*\+�c�s�dj1�XC9��~$�\A�4��-�ԃ���s�\��J �%�3�ه�?8�����l�IEND�B`�PKb��\���/templates/hathor/images/toolbar/icon-32-xml.pngnu�[����PNG IHDR @LP���PLTE��������������������������̾�����n����������|�˶��f�������^��d������������������ō�ǹ���b����ؾ�隺�u�Ʊ�����q����Ɇ��q�����c��}������֕��b��m������������⤿�n�ItRNS@��fIDATx^}��� F��������Ov��d���H&C��(`l`%@ ����D/���������~s{q�;���u�_�)D�j������ßG�w_�g��>�?���v�^�}{w��(�j�n��?��������7W�E9ad���s��ِ�@LH�8�9���d���z�(�_#(�:�ETg�"]��F��@�J@PA�ՠ�BPBH+K�� X�<hB!}Ah��Fp6�H�Hf���LD��v��q�P��[&���.�]8 5V�QT����Cd?�՛r�t�-T�"HM�q4V�"C��1�x��2��d5���nbk��<LWe@5��V<�i��`#��;M�2hL1t�e�."-�@"�D� @ҏ�F�!���3������ ���E���N��I/,x0��CuK�] ��0"R -�O�A�e��/�C;�t�����B��;�C�\�����W����Hl_&IEND�B`�PKb��\�S�1templates/hathor/images/toolbar/icon-32-alert.pngnu�[����PNG IHDR @{�u��IDATx��kPT�ǫQ3mZ��˂�@�(r]nrY@ �B�M�U3�:�Lk[?�͇��L�e::%�N�)�L�!��c��]., �Mn�*�`V�����=�;�w9����ߜ��{����|���S��U(U�{/� >ī/��k{g��<��a�rq8��� ��N�q$|'��Qo����7bWqt���$�b�� }l��\)5�������XV���CA�=��ttd�c$'�X;��>D~P+r��7-���FB \�k{�qd�J�oLg���'�8{Θh�Con�_�yA��-��A�˚c�X�Q��V�CA2Xyɏg �c�Z�z�g�wP g��ݰӬ�@�R�:kC������^��������o���/�]:j$P6��J�A_�|���0o�U�<5ĮN�ST�����<|A�e�ؕ��B��m.K}�~��VQ*tb�P�l�t�}$��?@F��$�� ���2�E�3�����{�*�c0E �/��5��F`����{�5�������S�\�T����p�x� ƣ�p����$(X�=43SY�$*0���%�q�2F ר���r��L�z�� �㩊��T%��+��v8�֛�JR`�z�>��v���h���H��Q+EO�8��G��I�y,?J�N��*>Cd��i�>�������K�\~��N���*Q��D��?I�ڛ �'ZI�H���7`�S�N�W��fg0��K�gE���M�Y�J��#A�N� �/Ce��߉K�ì����8��N��{@�Km� �L�k;���I z������x9�FIa�͛h��"j��@�����K�f��$:u~�m��[�RQ���r��G{F����x��䄌����_�䑃�4B��.�a��V�7����xy��/#S�"�A�ђ�F \�S�a$�Q2\���x���N���ߢ�X��� l�Z�Q�|�.=pȢ@u� qJ|�U�_�$S���|��ũXV�1���p#^ULmi6�����Q�i�FM��x�JgE���(�a �"��1� �� ���x���V�X� ��̾���:3d��6�v�<��Gsx7R���GZT�����惻�dM�^˽M(�ȏҒXN�a,��7�t�æ̐���a+u�a˵��p#=x[�Z��.�p�����b��,�m�7��~&M*گz�8��_��ZH��b�����n���ܫ8����.*��x��Al%܅��vBA����D$M�x��"e����ز�m�����G'Q"�p�����1��[����e��cj�1�r�;l���Q^��NG;�E�ĖM��1�;� �p��� <ؔ@!�'lx4��9"�(tv������)��� �������#�$$�.1==���N,..�����2\� ~ a� �h���!���v����MnV@7100���Q���6� B�!��^H�CCC��0���177�� ����l�166���V���KKK��'N{%@�����$�f3\cffV����c�+z��<AO�P��]]],/F���dO��VSSװX,���cy1~)*�F([�;w��������iQ��w�Bz��F��?��k`#��`~ڝQQQ�۷oË�� ������a�m>v.�2|N�%��փ��_�˗/�ڵk�#888�rb� �#� 6z�Ʉ��j��ohh`K�$X^��@www$O�t����J�_��G1�n��A���/�K�.��z��]H�!~ ���{�܆_���)$ ��yYY?��`B����a%$`ЁSH�z��Gqyy9JJJPZZ�֟���+!�\( .�#� l�s��E�?R�={���w���iT���OiV�)D��Hq�ԩ#.\�ur��-t]a��cbbt�}�p'�}��v|�)l�'����t~�r�"IEND�B`�PKb��\h�~��?templates/hathor/images/toolbar/icon-32-contacts-categories.pngnu�[����PNG IHDR @{�u�ZIDATx^��k\EƟ��g7�i6��)%�*նiـ��[�Di�R@���_Q�� z�R�^ �ܕ hhi���6�6擘��1�:�@��9��4Q�<�f�l8g~�y�}� "����o���4?9-+zPL��~kl[d��R(��(�z����[7'@���$J>�3�8�f�B���^���ApR�����%�JU������;' �W�`��q��Z}������D���N��4vB��8|��W@Me�@(�����4}P��/���C��7��Yhm\0��� +=�V������b�U@���7,�Uq��w �5w��H2J4����<� tRt�E�w{��<���.��?��O��>@��*�O��e����~�%�k�g�B'��0��i��$l*��\�C^�G1�<��HD!��E�,)D���" ^�=q�( �8G,�u���uD��[[O;�D����S�R"-���v�t �J۞@����"����S�v;� (�^�@kh20���bW����x+.}�pe:�&���0�eu?����W�]��۸����m�D�P �!�3�0!JUGO�t�$��d���>w��%�~����0��=`@��N~�/LC*��'Q��=�2V�|�]��فXk(�DI)��<� �*�U }��/\R@����^.�c�A�_�G,�P�\�P�8O�{���O�GƐ�@�g@w�@*��%����ic��Q�*�|x3�#���X6D����a�<����h�nG���9��D��I�� (����d@�r���ftHG�D���������.�.@�N�^�zZJ9�.DD�����tB"�Y"�kY !�Qg�Ʊc�&�E "��e��g�(��V����Չ�"ŎM2D� ?{��Ş={`嚎NRJ��ݻh�Z�+W�4�?>��������S�T*���E���N���Y^^��Ғ�x�e�`��3��s�{`eeŤc��Ϯq$OH6� [dr�*OJh{��J�R~�q��e�j ��2�poF3���;�+ƌ�V�TOoo�k��N�bќ yBb ��ֺo�J�Ԣ� �l���Zo�������R��Y�?��l�iV����v����e��Esss��������0]�Ȭ���!DQdf7Lp?��!,�y8[n��Yڷo��\����G��i��0D�\�xB����~���X�\����� ���3A��@b�='$�َNm�o6��MKlR����nL:q�ƍF�Z5��jN���ҕ��!�t������ȱQ�K'$�H�m�K��{IEND�B`�PKb��\wR�T��0templates/hathor/images/toolbar/icon-32-copy.pngnu�[����PNG IHDR @LP��!PLTE�����������������������������,�z�tRNS@��f/IDATx����n� �a<;��$���]쿛�״�Z-}Q.W��?fP�j|gw�w�߀�-z�[����7@l���2"�� ��� I�jx&]�فM��f�(�| �y���Am�h{{Bt����8�����4��ƌ a�[��"Ыa�<���\�;g�������E� N�iM@C+"����0i�CZ�G�g:����-�{�=j�>��-���hI�q'�9��{b��2ܹt ��Aąu)F��� �_`�W�=`�k\ҔZ+��Ͻ#��، IEND�B`�PKb��\�*�C��2templates/hathor/images/toolbar/icon-32-upload.pngnu�[����PNG IHDR @{�u��IDATh��kPSg�=��N�� �Bu]$� �j- (Y��V�����3K��3;u/��n-�N[բ"A� +0.q�!�@�UT� � ��� '4b� �~���oN��>��^�7�2e2~JA�f�S�g��e:&7���M\K���O7�����6�ى��q��Zܷ�97��-�&��|p�9��,�ܶ�(�*���g�i��w8��.Зk.H3�{3M�������"���� �g��c$|�"�4p�S�@���������d�Y7�D���PX�@�V�Or!����saY)V�p!�,�~�>6"�C(��)p�W�gX�t���N�Z>�b���|Xq�%��}���UY�:ʂ��y�v��ubب��B˿M�T�m��l\� �O;+�5�;����@F��#�Z�K�ٰ��?�C��k% >ͫ��xdz�?�7�aޕ�F)���J,���8���qQ�9� �lX^��EROKД���9S�S�{2(cM�ܺ��!�SBP� `q1���Ď�O �� �� �5�I!�N��N� HN�N�<%H�²(5�V�YqGT�AY�5+�İ�V�M�����ɽ�o� &�!�J[�ބ� �aiM��X�:>S�h@QfYR-��cPpaKI*d�@��Un�n/�|�?~[���<p�Tǥ��J�9F�U2���W!�bK� �t�[���@��koO�u�D���PfQᖸ�X��`��� �e� ��U!ja��ryOL�\�{��@T!�e��b���ók ȏD�cϳ)Jp�G�/�S��M ���{!/���G�{�Coe3o�Ų]K���5�S��2�1�C4�JE����T�� ��DrYlot�� �#r'��]���1_H����B�6�&��}� �i�&��R#�R��A^�˃�ȶυ�� C��w��ݽ�ᶎ��H�%�=�r��<��$Ƿ��BT #���$?A3���}�^�1 ������R�Q�Q���WW���b</D@X�����o�Wg��wq2�*:�2���ً�q�;t/f?n�2P.���"+��3��:��*D�X�ԯ:mI8(e�b��@�>��B�{�~�����Aա�N�nїT���&�D�O�쯥LT�_J)J�YU����p۲��BR�̺�(�/Aw�E�߸ ��LC^E~>e���7R[����Z�Kn����Ɛ]�O|��>��~J��~��#�#� S�5@������q Cd�F�!mC�`ć�̘�|m�h�� 1]D: }/���呵L��4z4(o��5zh}ic�N�ѐa����t�3�i���]ce*=��Нx�~=m���dL�W�H9���Pd@rɏU�k?�ꐠ�(�C�؛ �����a���� <{������Ç������`��F3�rW�I����������w&c*�B�D�R��ӧp��=�Z�/T��>������En">@�."�1�w��uY������c{{�|�m�X,�8����5�'AL�)���g�G0��$ȼ���s�Θ���G��y'����.2�2��7�1��q���{���v���6�~�:�?�m�k�իW���)s֢a^��ΐ�M1b6���|�2ܺu�ޞ��B� ���`2p�ҥa�p����hmmuk� p�� p��<(` "�hnnvk��Е+W`�|�y[F�"� �N�ր�h��/�h��n��(!C� �^o_ͮ�|ωA2 ��{��L�:F���Z�����9Μ9�\��x�@�BAH)8A�q|�ܹt&��ՙ�<��80 >�:�����E�qw�:��Ξ���MMM�� 766V���$�hRdee�U��;�Ȟ��:}uu���k�m2�L1�'�O�O����x`���IEND�B`�PKb��\�z+0\\5templates/hathor/images/toolbar/icon-32-extension.pngnu�[����PNG IHDR @{�u�#IDATx^�Ykh\���c2�g�<Lli�jS)���Ңx��[�˂p1��� -�!\�EA)�B� �EPT ժio���jjMjӐԴy5��y̤�<���s���g֙`~pr��{}���Z{o�!�GB��&�����x �`�^� Lc�~�H�a>��$�M}=�6�RU%2܀pAU�BQ����� >��6�RB��G���/h:�┨�r���� �j�������1W�$�$������u��E}@E�h >�^�KW��Qw^�hPS�������`0�1��ְ ��B��� ��US ��_����K@_�Yȧ �צ<$�J�����'N��L���&@0 �� `� ��:_�3 ��~���y���@aF�X��a��D��|�S@Vt����5�-�3���,O�F��cxk`�D���<�q��ir�ܓi��L.&1>���pf�.��&�! P�A2){\ɘ�#�٥!`9ԗ���F�{�~�+���tn# N��4`0T�.��rn�&:�ކ��AXW����'�X�S \x�p�(�a*ը�9]2��w�ۍ�`)���^�> ,%�r&%���-�)����& 4ԇ� �T�P����y@��l�^UYMô��$XR �����d�gd/?���SL,j����ѮC���0��)�`��������o����ap2�/Q/�VY�R��ۄ�đ��(�F�&Fg�$�$�)`�p���$��� �HU�@(lw�RY���,��*q�2l �<b���I��H���Iz�L@����)P��6�� �xs���S���9x �b�#�x��ʩ�ߏ��/��i��`!wb�I(��>��;�Cce�+����( x)�P��JE���S�p�������|X2�ڐ=a*�em4�^�?���>�����A�Gt�n�6��ڑ���l����>����&p��ר^߅X�.:��tD��%~Y�c����|���%_�˩��Ek6bۮWQװ��&�2�����D0�%T��]а8u�>iGY�&(ZX��.!��&�s7�J�ٻ�<��4T�M\� �up�/������(��dؾ}�l���,Oܻ�1���9���!D�SV�����qc�������vi`jρ�/--��ŋgnݺ��j;_�@��͛����F4Mc�S�P(��n�H$d�_EE�3�N�z}yy�u;��Onذ!BlWVV��� hkkC8���u���8{�,)A�B$AUU� ���Ir:�LA�d2����K���z�I�PZZ�u�vl�)"GR�'�._��t:�\|O�!��1 @A��?�122���q����~^$\m�;�MA��<@"CCC��Bߥ9��'@ ���䷧�"C�7�T�#A�X��1��Lbnn�����v����crr��0f�V@%@�������n݊={��ʝ8qB&�@> � 2���v�8���v444�(�H����r}܍r�P��/$B�^�Kn4eR�7�T�%@IV�@f�ʖ?���t.�p ȎlA�w�`>�OVE�۲�ݻV}'SI�&�qff`�/++�;�?֦���n���`߾}���,��:E= �V�9�ءC����Gml?466���m����b[9�5` D'�I��"�m���A�v8�68o���h֤�lCd�@�*��n3�_/�@�T��6$����L0{�d�5s�]�8y�$���l#2(��;�{�(��r N�>͔�)���AA3>|��}":z�(���\D�K�vL�\Y��d�:p��?~\J�/=E�o�$�' � 2�#G`��Ũ<#O߯�S��J�����]� �!剨�q��i���"`�c�:�����u��a)��91{� h��|����&uݎ-g�h��l�c�=����9�ߎ����������@�R��IEND�B`�PKb��\&/��PP3templates/hathor/images/toolbar/icon-32-preview.pngnu�[����PNG IHDR @{�u�IDATx^�]h#U��$3;�m>�&i�mt�ݶ)�]l����� * �( �"�/�Z��ŪX��* �PaQX[6(�>U+mw�nZC��kf�:�2Y\&�3���20��Ͻ�{����fb��0d�B8<�(� @T��R+��� �a*D��� �Zb��&�|g����Ze9^�x�8J�*<����r��~"���b��ᄐ ���w&�J�U�\�<��AR�<�1�����}��m�o�m�6�-�-��E z��* ��e�x�IJ�h��d'��M]y� ����3��<�&��GKWC�>�@���L��nF)��c�Ŷ�@��q|>�Z��睛����x�6T�dYF,3B��S��n�/�l�V��F�����#R��Vl�X`4j ��Jc*���a�}�� ����ЃN�����8��5ǎS��8��� "�;��� �\��b��q�� ,�����~s{ /�P��(W$0����-h0�-��2,�P�%���KO��YC������/�Վ�"?6�s\�R�42b��o �z� ���{x�9t�V�N'�vL�_nx'�*>PE�T*T�:����e� �\.���m �qeAI�P(tcddd^�Q��(����L�~.0�d�i���h h%$��daaa6���� �w?��Q(轸���rp}}���dttt� I��v0�������~����&$�l�'*��6�R��͆��c8$ �ڄdiiiqff�) ����յ��z,����i��v(������ ���������-LLL�(j�J��@fN����P��(@W��������D�$S�Y��dLsC�5���f6G�(�t� ���0.!)����tlll �L6�dY&�� �0�F����^�,)Lx�^���57�����������iH� kj�/@���0����v�KHt>�я�����AU�bs�eE��`�%k�������MIH"��'!i%$t�&�ǹ�IEND�B`�PKb��\�N�� 3templates/hathor/images/toolbar/icon-32-adduser.pngnu�[����PNG IHDR @LP���PLTE��������ֵ����ŭ����楥��J����������������ރ���{R�X�b1�k<��j�ͽ�Skkk�ra�#�xM�쇵ߓ��>��Ki�Sf�,��Czzz���k�3QQQ h�)�Z&�T��]������h�N�^+��j,h�%�`�͍�0�h���W���L��l�S�=��kÅ:�I�����{��:��T��c�M�y�淓��!!!ƋB����\��l��B��~�a"��q��J��ε�s��,��l϶��ų�뭓�d��&{V0�6ĩ��t#_S"��%k�7�h9Կ���G��G��@��4}�F�.ɱ���{�W!ѯ4���f��X`WKߟI��h��H��j��{�zkt�9��=��@�bIII����q��л�@��_�°�Ϡ�wU�,��c���B��пz!��dzQr�#z�LߤV�b(P�ʴ؇�y>���ϐ4�X�b��ɕ{a=��L�wL��l��&�ܦ��tfffхV�$��lm�X~�DŁ(mXEd�+Ր-�ܭ<?"ttt�C��}��ȫ�E�pB�J�r'i�4��l�����8��r�5)��-`�Z����nA�ʕҿ���R�{.��SѕI��ϗQ��ɡce�+��I����~ r�&}�O�W��Rè���@��G��tRNS@��f:IDATx^��S��H�j+��m?�m��ڶm۶m���Jf�ofv�w/�w��9���S����C�+78@[_J�A(�X�0���⾊�>��@1W�>ы*Ἶ��״��"Gե��LF��g����Z�$����u��+u.��e���=6d2�Cj�7����C_���Օ�p���o�9sƌE����N� [����9�]Q�9�|ѻ��ЮAHj�pӦcg�>���՟A�;g\�j�/�?0q�?:���mO�z �����]��222r��b_?3��%K�n�P{�Z�O��\��d�;bz}�C���wo?~���L�����D�y�5�Ϛ5�{��_x�ʕU'v��@�m|"�m<��/�|�gl��S:!����o����ف;�tuu=�!�~�mڴS]�������'>z��ӫ��N姝;���i=�MM�'pN��wQ��ok]p�m��:�1�Y���z�vi�Q{3 H��� �5-S����]Jx~@�%$�׃2�C^r���%��� g�@)g Q W��b-�'H@a��)e��1�B�!J�H�JJH���b���('�FVg8�%���!�+Ą$�|&�!�HDPH���T��*1~rA#Bf�a;9���R*��V��b�$�˖qJ-���ji�DŰYO�M`TX+R _V����J�� 1�s�J�����N�˘j{�Xs�P���"�#�ZpĂ�p��,o��>N�0� � *�q�=.��+?�~_� �2�C�/��2��ֵwAIEND�B`�PKb��\�#�L��1templates/hathor/images/toolbar/icon-32-batch.pngnu�[����PNG IHDR @{�u�bIDATx^řOlWǿ�y3;�7�k'1I�BZP�T"�B� p,�+\PiD�H��K��^8� @ZUBB$(��Q�-��^�ggv�{������$o̡�Z{֚�o��{��3c����!�5���l ���H>���^����=���+E��!�k�Y�FRt�{o��?�f�?�+x�A@��ɥ��� ҍUH��2+�X���Oo|"��}yg�K���ŝ�^��s~k0��~��"��Nr�:#5"�(�<3\� cn�a�5��3IT�A��@A�c ���R��c���/� ��(���\�{��ÜaXJD�=�X�-�G"�dʴ�(؆�f��K�p7hX�����5�ر�R7�2��E�i�ش&����8�� �)�����{���?�J �)�$��H3N�(�־EbM-��+w�{��5�X�b��)#��v��u@FĻ�q�^�@�?�ٱn "�(�iG���uY"�ņ.@A]���ʍ�-���~Sݦ<cK&��0��N��v>y���gv��� <^i,�#�����l���0��{��j����s����_m}g�{��p�����=}��t��z�<�Af�w���~j���B�/�i���~}����o_�y�0�7��{�cL���� ңC��ϔn}t<�_��y�Y���ӱ��^�uU^�1�`kh7L�"��S���sFEF� -ؚFkG�[{L�.[��A�T��-V e�~�бFb�_�f��%���P�S�3��Tꩅb��%K���X�1�g�ZJ5,��*���nU���/��t��*�^��!D@ �2�y"���c+�Q��_��{�Ȅ!<������z7�m�=;Й"�c���5��}�c�_�^6�"8ڊ�ُ"���;����ӱ��g�[�]�&ƍ���@���1%:_�7�fs딀��`��x@\�~�k�8���Y{Ȉ�M����i�/������BS���,�s��>��G_�=�?}�4�{K`f/�icp�?ֲ|��O������9S HJ�՛W�*��$�a� �!Є@ p�i� 6�z�X�ehD�z?�e*�W���x�6<��ָN�)@���F^�t����B�,�����>�C��8N�ҁ4MH��k JKB��Cl���KD0������ �DP���c��2B�21��H�����b�z�(�s߅� j6��L�����|A)�]�����k��/��hs�;��$ќ�"2�$gVx��]�媎�,� �8��y7<a��G�q����<��\����Wql5@c���{Xkc�[/|�h��o��� (����NI�_����vw������V�u�XY^y�}O��J5�cAż�q���Ϲs�i��퀵ƞ�8�ϱ���W���o-u'F�Ρc=��l��7 ���#���/ס�Js���포��}q��ڑ5,�a�+���;�*�`t���>yb�D��¤t���7�.��FA�e4�`�3�0���]W VDL9@�:��R�-<2��4�J�L+?��v�Uձ�m���:VB�gêX�;JI��,j踰!�Tj�iLe4:����Q�$I�mJ���%�ߏ��I2��2;c� _j��JfJ��2�p�M�c��J���:�&6��c��c�>Ddž�3��[��wIR���z;V�٣t�Dy���zR(���V��Xag�B�e�����T�gC@�]Y}��jm/�- �J�i��1��F���.����_�}��_��@�h�B�����뗌ѡo�DD�qk���7��?�IEND�B`�PKb��\V�F���0templates/hathor/images/toolbar/icon-32-html.pngnu�[����PNG IHDR @LP��.PLTE�����������������������������������������������������������������������������������������������������5��>��H��R��V��[��\��_��b��f��i��n��p��q��u��x��{��}�ր�́�ׄ�Յ�׆�و�ω�Ҋ�ҋ�ӌ�Ԍ�Ռ�،�ٍ�Ս�֎��є�ە�ۚ�Л�ѝ�ޞ������������������߷�߷�ุ�����������������ٻ�ڻ�������꼼��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������$.5tRNS ::??```aa�������������������������%L"@IDATH���Mk]U���� �h�����EȤЂ�C�/�2��ș��qԡ�J�ȉs�"�ĢH��BJ������7g�K�sϾ��Ľ�d�ֻ�ͻN�Y��,=' z��<��2�w�zIII��<�#���* !�Θ�H�$!@�/vDTRK��F[BRBtZ��uD��������G���>|k\�a yf�)M���/���Y�~(�J����a�b<ܙ���r�3���K�j �^�����~�ͭ�V�h��m� �,��g�?|��EN&3g���9�_'��ݼw#3����߽�krͯ�{#Sg�Tp�3�8�5��y�ɟc �|�_s�����5�A֘�������7�!�ҁD`����:���n0����N8����g�]��%Y�������䦧�퐇���@`�!�.n*lI�փ ���@���-l��L12��qJ���1@��zp�D��nL���p�@���)�|Yt��z������.��nm��684�<��yG���� T1�"�p��6�����4z�}j<dOt�H!%�8 �����7J���M1�&�X36�T�1I�!R�OU'��iL�ͳ;P3Uu^���ry�p��ӟV�q�Ju��yxx��KL\�jrMUy�&������ �x���5Q�{��\P����6�;�v��������w��� o�o�ox�\����ͷ�.���x)Q̜�`�^��yc�&md$��� �+TA�}�� 7�p�Dz�jƌ�Tr0�Oߣ���2�離� ������?�6�$��IEND�B`�PKb��\����0templates/hathor/images/toolbar/icon-32-save.pngnu�[����PNG IHDR @{�u��IDATx^�OlUǿ��ٿ��)�"�-Bh� ���b���9� ��hBlR� &�W�� �F�h�Pc�"�,�)m�ݒvg��q�e3��iڙi�I^~�}���{�^�$�D%�Pa�U>:uz�� @gww�:5DZ����,��d�>�U/ʨ��8q�c#�i�f�c��i��B�͓�'���H����rH�R�#���W�8��t�X4J��m_(�`����CC�����҆-�n���<(�hT�<q��ȷߜ�]��%U�c�gp���jZ�3�TU'��"_j��,E�R�3n�ZtB��*0-��J�d2���FU-�R`� ��W7M��j�<|� |���x��s����:6�Ԅ����]_/|���3��A%���H�(���u@!6B��**��\T��H�#�iX@�� 5҃w@�YXT�ϻ`�����8v�9���D���ܞ���$�õk�`&���ٜ�;��� {\�|��Wr�o�1,��_ccB}}=��>�����7�n( ����9A��k�n�y[K�F���BB�t"��#��!���4�N�Dt���h<�M�L�hؼy�f&�}y��-�:::�� ^�$5|���"���3T�J�{����Ǥ� W�Eyլ\��nk�l<.��*P��AOO|qE<?t�U`�SC��q�g'��d®��� �pࠡG�!"2�H��r� ��̌�i!��,��F��B�4���$�/�Cb?�\��d�{����I��pM�[Q[Sk�8�^�h����6x���\��(ƹg�B}VUƹ3�T�0A�s_j�� �ϫ*�y [��Ι�{^T�Q��U�s��|_�1���M��N ���9g���#� ���ib�Xhu��y�m�Ŵ,\��zx���uIZ����8!e�����O]�NA�-@@�eD� `8+�:;=���Ȁxn�������M�VM[���s�z��p��}�G� �9�;\�g���G�����O=6l�ٙi!�H`zf/��a���g�<wn}�|jj�jC�3V�a�h/cR�tD����ω�~3�ef����w���죉���j<���ƿ| �|�IEND�B`�PKb��\ٙ� � 9templates/hathor/images/toolbar/icon-32-banner-tracks.pngnu�[����PNG IHDR @{�u� �IDATx�ݘP�e�K/%���Sd[M�U�%pLw)u7�ձl�=k�Nf�1���͎��l7�0W��-�(�臢 rU@��� ������y=sX 8�3{f~#�������{��)?�}͉�ekcM>����+C�|#����}-�0��3����#��K���0��S�]E�k�Ch}/[�*�j�����$��D�!��26E�E��x��t�Q��5�����3Ǭk��Z2���/���d`�;�XIb���p�!�1끍1Ŧ��&�����ϲ�R�w!���lϮ��9&M��h�aӡJKtA3�z��_x����1���@e7��K6;=&�o2L����H�jZ�ʻ�Qm/>�Ym���ڿ�;��v[~� ��?�և���+;�#���X����ۍ��tX���ު�aE~^)�u��빌e����7�[e��ȓ`)�zp>6�;���o��+�{:��w9=`09�Sj�\��3j�4�o��U�����鉧�~�6n�[�g�!���U ���?ՌN������� ��Ô�j�"�s���B^3��9s���g��g�n����;2�Ϧd)N����֗�ߞ��W͘ۈ�q��ZܜT���`Q��[�'�xs��ł�p�B����Y(��Y5H(l�~p�������b[�w�B+&~դJQ���R�&��z����x�b�����:$�b]�i�K�$���ǃi]���'���KqWj5f/{���"��⩧���h�߶�Į�V$��c}x��s�ľ�c�L��w[e������,4KT)j0����T�K̛7O�;�5]Bp~3�QE�`���8J�}���aƅ�����@6�!���bPCN߰���R���8���x'�Bs|&w�u`D�m%��b�7����ؐ��!]#���7E`@)��';ϴ������l�E@PYhA��85�G���:�ཪ~�^�:����*��B�gH��`'��6���s�Ξ=�A�L"��OJN /`�豮/�7"/���2�Z��B�Ɔ�X ��WfϝweɟW�p|���)+���,D�,�k��| 2-Qee/����Y�f�O�(l���nb/�H�R��(pc��@ ۗ�刎���K/���3x6�P�X�����jJ�5���"����L�����y��r�O�ߍ�C)>��@�na1q(=W�O��#p'�S�:%p��Q��2.���E'i9�p8�(^X��8��7 b��d�x�t9�i�V����"��MJ�ٲ2lڲ-d��U�)�m�Gv1p*��5�G�� 04�_��a H?�"_�7���Kz���|�~}�y�Wȃ�$�~샨�"cY�rX>����n%��mC0mƌ�\`o�0�oD�����O�ح���G�>/&>d Y����^ă�����8g��Yd��q���-�,Z�h-��;�2��䬀�����!�jd�ě�V��w%?�<N��;T&\��\F�� d�z�͎�s��D�O�/�]�N��� ���HƓ����A���a8t�)555$99��c>|���HHH@dd����Ǐ7;v�r�� [II ��֦��ݍs�Ή����f�"//����/^Dqq1�= ����%���c�Aq��i˅PWWMӐ�����ޮOJJ� ���"�����'O�K������fKKK� ��� �j���(,,Dnn.rrr$�>���L�7(��G�1i����W]] ��*XYO�ͥ1����l���Aoo/Ξ=����8u�:::��ߠ`p#Sh�����T�---Eyy9���`����ק EXX�L-�>�3g�r��� 6��N�`� eO������ ]"<<����'"r���E��贀4���%�O)N5=#���طo����,DEEI�u���Jɖd��W,�5� �V��p��DHH��������3���k�T�Ɇ`�dd���� Y�K!���K�v�J�J���L�Ȃ�Bz���V$Sx�-$��y���S�@F2��H���ސrM�bNUiH{0KSI�>��܈4��|Ȇ�,p����H%YlPPp�\%��)++��R@^�����R Y�} �=�<���(�hI��tڧ�t~}}=:;;e͗EJV��(�T����ח��% "'er�y�B�Q���~ ��~pT8d�J||���� G D�F�$S��Ȭ�K-.����3@ T'8�vT�G#` 6=�|����3@6� �Up����mPp���y-� �7#�C{!@ L%��%1� 6�g�4��l�a�$uA�)�{��R�� N�$y���¦3#�M�`-��%]�4�_��d6�B3� �B�&~dI%AA +�@�� F!����(r}|�Zd!�̓�G!p�@q�<x]���Jd]hںu�d�m��ٳ瓫��k�*��n"��G84y�rf��x1�!K�R��G]�"ĝ<���9+0��"K���Q���x��,#��I� �#��n�z���'�&F��y�]��$����� W58��s@��5��)IEND�B`�PKb��\s9��0templates/hathor/images/toolbar/icon-32-edit.pngnu�[����PNG IHDR @{�u�WIDATx��_L[u�O�nsn��1�8�8U63���'5��ތ�ɮ�Fg6���5R�`d�� ��BK/�,����,p`c�1�I�^�b�p<� )����O~���s����B �ʪ���������wq�&��D{�1��p���L"g�hbh�4��xo#x��QNܲ ���fD*H�o!4�X?�PE2���)S��%ǔ��%.�wN#�u��nkܭ��у�.,�@MP��i$#Hs�lk�ā�8�v�ݎ�����@�5A)X5�4�M�7��n��q�z��V��} �@�U�ʯ�&�}M����kl[쯪£�b�`��I�(�l�dT7�j��o��k��>t���ޮPL��cA} ��P4�PxEF���>��-���UĿ=�;/�kRm��۰�!ԃ��3'���vޯހ?�g��#� �6`D���XZ�@�/;`q�g�s��h�6p�w��RT�E���ş.�gQ� ��G��]c���wE�S�ڵ ��Cȼ��Y��ޏN�RW�#ȼ$���~ �c��g�7/����ɺ̣�m�� ����j�Q*><��#���܁p�!�o�6`j5�1Jʸ�`jQx��fl=gÎ�fl�����`q����,?���?���>��!��!�q��c��W���z?� ��3�|]�V��k%�7�扃��2��#�q�_+l;��p�^?�"±6��-��;Nq���<p"��Ć��)7�!A�Ӱ�_DI����,ݍ!�!�,:i����v ��e�&�� �pI�]!#���H���C�!�u��7�H�B8T`�\��(��ZLp(/)$�fL�G��N#IEO����_�{�� ����XOlؼ���g3��'fd��o�?���X�h�ܘ��w�w�_R��r��D�������V�Mb�6��x';�x� �55�9bM��UE�%�_�f6�j�Ib��EbG��{���k��V5�U��^ ��骁1�zB$dQ1���+ߞ{<�E���*�6���ࣜ��n��@�D*.����j��2�/�=���7R�0�u��֦�൰T�Z &$I©�)����P�����֞�\.AMD��f�����Y�5�===l����!2����<@Y�qff��|s������s��)P0Ҩ����9�{�����$����#x<N_{�p8DN�Q���|�|�aq^�K8/N��ݞ�>}Z&Paq����a�5�b9����M�������Kǟl�<�ް��5XL��x�\�.�������I���yj]��� �v{$���~TԺڏ��$+**��#�����5���2�8Gkk+^����}M�������yii��8�� 811����aq��xO,Σ�������&hĢ�"looWL����ω�t�����$G 2'����f���F�y�E��y{{^PP ��:&˕���t���s䂴�D�gx-�k�����鱄���Q�/))a��<�2��j5��暨`�Y���y�&�(R�H�]{n6�wfgg'�8q"3''�O8x����755u�=_m�W��o�����4IEND�B`�PKb��\���D D 9templates/hathor/images/toolbar/icon-32-banner-client.pngnu�[����PNG IHDR @{�u� IDATh��XmlS�~�W۱C�4�A P0[���JZi��l���FY�$6m�6�T�9�H�؏Ix[[ 4Q6V!@#^K��b������q|�ksn�u� ��+�����9�y��~x����~]/K2R��o^�I0�a�~�Gj�crY}��o2�B2��o�@��i��B9��ֹ&x�[[�\Y�B���Q�� }�A�8w�4n��xA����M����*q�Fn��c#1l�^=����}��������W�P[�Z����hD?�~�IVp�i������}q>�z��S��}���K�;�U&� ��]��E||�ځٜ����w4U�9��J�����k������Z��j����y�w����d��� u��ƵJ-"*l&$����6SH����I�b���L� ���}cqͱ�R�yU=Fx,~8�@����}�� }�T9�6EO4�PB��m�z��.!V���?G�? �s���˵��_=���7��@c��~��(�7-�\�a����(*�:��C,/4�����"!��Q+I%�V�9�h4�o*5 ��(Bh\V�i���f�*��%5P!a$S̢�o�u"��V�}0'|���@���˜iǪ"��cD�"u��3��jƗ,��-՞9�*�[{�+���l�4�{<�b > B��SsC1D�v_4�~0'��e!�,��u��7�P��J�`|" �r ��pl��Yh%����>o�I�����R�/�=8y/2=�j�@�KMD�"�lN2Qa�݊G�֕=��m)G|K���PM$�D�����i�H�[����>(�gi�V�`"LB�Ҡ3���,|��7��9�G�JN h���?���R{V&��6��%D5�Q�.���Ջ��ʡ��-݅"��`bk�J�|��������2�R*��U�2��X���G�����DV���(�����E�1�9g�H�;��!N�=u?�����I �W� ��ET᰻�p�a�ЅMca���L:�I>P �ۓPZ�� �rg?~&�A�:���H E&��W���G�ֻ��.N�/2F"��O��IPNJSqP�������j�sW����Ȅ��$�q���\N86!<8��F�w��8 �n�*4��&�H͌K�uֱ�o'���Z|�z�(�\K.r��(���ὋW��o�ez �9�ڿUH$�`8�s�V�Kv-�3Z�E4�C�5�s�� Q�epx˪�pM^�dJ��VY��!yK,ó>gX^�E.h4@@��rR�BY^v5���q���(V�m��pdbO�����ᦺU+��H�w/�FF�a���d����sO����8f��P�m�p�PDV��E�7;�C�|��+��x�F�3��S "z���R7��<��/������n)�W%u~⺮��`�{�gEt(0߶Z ��h?����̤;v�����L�S$d�ԌVէ�dƴ`�s_@Xoea ����L�`&��@'+�e���Yo�ߞ���Sp�ĉ��^��ܳg��=�8{�l#9l �w:�^vlNP��=�M��x<^�� �ՊP(���D"�&� ���K��VTT4���}}}��5k�`llw��ٷs�Χs@q���z�����H$`ʽ^��{w_CC��9��~����r���DWWTU�(��v�����|^n߾��p8��/_�e�,2v�VSS�`0ض}���P\�p��b�4���@�5A��6���U�>�%$I�3=�R1������f��2_ii)��0b���$�f06�����#�s�#x��QpÆ �P�;w�K�[W�\�����A��';*,,DAA��[���Qg�����(�m�$�!��d_��-�2d}9c2�`�<�8�����244���r�>c��j��1�tGS�10�J�͛7�x@��|���=��*�f�Ah/g0g�����PP�{�,��l�x��n��(�Pm���c%���!Ȏi�h �� �PytP[͕�J��c��lX�~�� b���l�Ƀ�s�+� ���Ȉ�B.�6���J&#B�7���a@�p�����^�?�����V �?Յ��V�2.L4�je�e�-�j��WĩT^�ccsmm����Ǐq��}-:���Q��@�v�3!�4� �kB3����Q��E�N3+%��z@��<�FGG�|�3�4�ِ+#��Ƣ¨|�s�L9��0�/���}|���^f�~�ސж��4��̗�c�O^<3VWWk�E��i=�u���?����#˞x2��0��g{.��Y$<?0�\T���>Ⱥ�Ō-��ϕ�shɅ���y��@0�,���Ͼ����ĕ�Ř]H�{Mp����8r{�̙{;v�ІWC繦�y ��Pq��Y�yb��0B>�C��w@���6 q7Y 7�}����X�{�h�6�����(�W8Π;v�IEND�B`�PKb��\>N{7��3templates/hathor/images/toolbar/icon-32-refresh.pngnu�[����PNG IHDR @{�u��IDATx���{PTU�.�-oYdEBP7D_)H�bYe4S�3f� C(! 0�D�W V(jMiE���X`�Q��f~}�e����T3��g�{�����seD�2�5���v�Ǣ���-5IP��[�6�\P�8�������h��xK͙��#Uq��T��9էp���}L�B��� �,*y�+��p�b��X=~�|a��u�����oi�G-~�(�y$ ��Eٕ/L_���[�7���fW�f珁�Xs3��k��=�Q;���ڟi�'�&�^s�Xn�ٹ�_��������Xs+m�<'|���F �m�iU����tC�ds�Q�:���B���\y��+��%߰#{��5o�g���a�{n �)Ͽ�{�[h�����G?�̢F6�]6���[��q<�������Њl�����B�A1tL�+���� \z��)�G ���N+��d�LK�5Zk���CKga���_�T��� /��(�zkPM]�F4��*:F���5�������,�8WƏjЀvx`h0��!�_�A��F��X�-8�[��x����`�0�c�A C�\݃�,Ȭ�����s��0��� � ����������!O�y�䡭y<�r����q�����#��OL��|s�z�r?&L�n���`����7�Մa\j� �g�f@Π��.0��|2�ˮ�E9Ui�������'V�֭F�CXğb�u`��p_r�a[ �p�?c�J��k�JBa���W�Ok�Qf�Z[�Ѫ�c;��c4�Z�0��1O:����Fb �^N#�Kz��Yʦ��� [�d����������+�Q��[�,�Ḋ���ȍ�[uo��&���)oW�/ �f���'<'�`�ǥ��crF�i/�4���?�����}r�nԆ|����`�͊�~�]^ �}�q=V��NJDw���X,�C�I��mMn���U`�+tO�u�N/N@�~��������0�|�3�����Ͼ��͂��Y4��}h��.��gM�����`���9���k�̰���],�PP �͞�6�����/g�o|$��sT��It������D�4x9i}�#�6|@��S,(q{�|:���v�_p!)� �A����������m$�g�L�Ƈ�9�������o����F�V������~�}�d��Ӊ�z�5Q��1����=�{�5z�g~]��� �!�a$���t�B�o��n���<W��zyr/�>��y'vQYD\Z$�����K�Y���u�����e�=�q[6n�g�w�6���Q);6Eĥ�zL�p�7y�)@�<�Ѐ� ?��ǩx��Ds�_�`�/�.0T�?��㬥�@g��@ �Hɏ ~ފ�3�h>�������G�M��勈�M��.\�u��E!���v�v�sA-Rg�� �ɗ.]: $�$ƥ��^���c������&��(�1�a�J���@nj��g�Ɣr,�˺!ؔ w��;��X�� $�4@4�u �K��B��n�0?j!�Q @]"���# a?�$���$��vPd�V�{E�.��D�d u�hoo�H@��(>^R�T��"E) ���P�W�^�r�ڵ?\�V\,�+�%�M��ڄ��� 4����`+�[�������J� � � ���� H/6�Z k�� �D�� �H���)R�`{�Dt�*�7h�qp]�v2���Ӓ�(�w��I�0� ���EY �O%�K��Aѿp��yW�t�]��xykkk2�ꇛ��z��@��Ν;7�ZZZ:�$\Ǹ|б:V��pq�hnnN��ਞ}������71����� �҃1�i��_IEND�B`�PKb��\Z��b0templates/hathor/images/toolbar/icon-32-send.pngnu�[����PNG IHDR @{�u��IDATh��OL�E�{��wc<yS��'5�=j�<cL4�j���um$Z�X*J�bSQC���\����� P�-K e[�B6�L������foL����|����y�cǎ�=�4������x�����{X�������4PUU���t����̙3kn���A���q������i���;~{G@�����:��n�������LLLȥK�dnnNd~~^>��w�� ʫ�A���߰^F����7P�� ��dffF�\�"�����a�x��S^*?''{���$����O�}}}:|xE�._��=bQ�N$����G[&��oB����Hz�����j#�6n��^��������ʺ\[]�K���И\�pAG��MK��b�V�]�v-eKKK�����%=r����+�Q��ŋ5O9"#&��2ҁ�-//k3��9�뛔��L*1Y����b��&�� �L&Sf�ؑ0I�Z8�Dڳ�0��r���}��2rqF�_�.��229�"a0Ii�c�@���6���Q9�=(�3s���ƳM �X�<�?.{��#5gR"ѩMX�5���J@�6�� ʣo��H(2!��˨�zeeE���o����!O[*�J��@ljF�cr�5,Um}��g�£����>�Iv��W�-��dT�� SSS����8XѨ=h��7��RD�uDB��Db�dHmd�%�+��2,S���� �ͩ�M2��!��O�����)�g�K�rTV�9r+p��_>m�MJ����^J�l���Hz��pu���������D\ϩ�=.��V�� �R�ov�Q�9?�drK%����jw���7��䳊�c�t^�T���}X�<��}�X�x�#�Gn�+�(;�|�s���F���_��b����9m�a�9�����H(ϑ�§��t�%�E��QE�#��>��Hw�x�;K5/�|��8rC��c5���/v��W�@��$c�0DL�C@a�_������D }ҷבtcv�Y�H��$x��nV����A��J��we2���겊�_E@EG <0ܝ� 䃆3u���Ly>:�K�����h��U9�"��@�n�|��)���>T9�ߑ�}�L��H�-�����\>R��S��;��w�'�L�Z�Vsvf�b"�;��^�L�S��:Qe�껝;����MMM��������} �}V���=,�����&�D�\`��� �`0x��������戦}3w��w����:�r@궜���'�-�M��-��ٳ����>� �eUG����G����f|fLm�tvv꾡��C���3���a�`x�ً�����4���!��`�����M��q��&3�A`mmM��J��A"J�z��&l��y��&*Y�����I��� ��Y�S�Ȉ &�lnp@ә����[�&1Y����`j���4a��$��4ΰ>��,(L`�҅��{>� 0��{7C¬G�eTYJ�� ���O]Z1(M�=����O�p0$P�+�ЫM�����Z[ss��3������z�(<����'�-�@�b�M��Q�F���^C"QhhhH�zm�Y�S �j�;B���@8��Q�"c�i�M���K vxz 8χ�J���h"d�����TB��:�������d���������{�ƕ�D�ڶ�YrK%�ň��c�� [��^C��q�d.dy�o�S���X�&@-GB��<��?#����U��sLs�fNF%�τ�NEr��a���n��dґ0yBTL�a�}�.�y��o �S���S �� �Q�lQ�8�U����� �jQL�g"�;#�'@� g�p՜WHZ��WO?Pu��`���.Y-�SY�1�DĀoX�������I(C4�r��@Q�,�,_}��| 5����)6�IEND�B`�PKb��\;)�<661templates/hathor/images/toolbar/icon-32-error.pngnu�[����PNG IHDR @{�u��IDATx^�X�K\G>��߭�j�ۤ� �[ ��ا�m��B�`_�V �F�м���4�>� �P�(h([���*R���E]��ݽ���0ӹ�� �8�q�8�of���<ϣ��8]�%M����|ss�d<�X,��x�-�H�������Lqf� �[ZZ���DN�J��OWVVD�-�KG�t�����S������zB+�Xf�R��A0���e��z����j5bL�`KhT�V}�9@D�vI=�x&�I��ܤ��N$�]�"* O���89hgg��QGG��(�%��f���������_�� }ʕ�.�.!jmm�F�B���o'��H�ɶ�#�����!_=���H�����7yJ����>�M������d��wA�r�F�?���7ަ?g�tC�K�_���C:?>���3=�8���Ƿ��r�OPU��Y���#��ԡXI�~-�8�noݙ������[*����7 ꓤU�VE�;���ڝ<UO�N>��u����IMc���3����'X��<���=R �G�d�H7��$�ᓛ^���.��g�{�`�@Uy� K���?!TD�d-�"?��u\*�����]�ْ�� Í�2!�g����b�� %�cHQ��@Lc��'`h�H��$z��&�*�`Ss�0�$�d6�%zR��_Ǡ^��&�����{��]�t:�E��iJ-�����=pꂱ��/��!�ж&�y�� /�C� �W�Aq�<(9g Π� �<�y�ge@{�]���q3@��ۓ�N��0��r���"����&&&��H���}��Q���ͩ����.D�>`���Vq�Rj�i.�� " ����T�� 2Q��0X�K�p��$����yL:����3���\��%� ����jjj �<�k�����|3�Ý�[Î��\�������@�y{I�*T� ����wi===��ݍ�ѧ�������hkkKƣ������q����2��ɡ�!��*b�89̭�c�8�W/$��T�$�&@��mll�q�xc[ co���)��p2��cA��c�o��qww�fggi~~�`KKK���@###C[�[��sssإ��l�)�� ��N����WD�")N�n]P�)��m[���"��K��\>��s\0H��,P`y���Bhys��Y������9�<W��,�6�sUc�烃��y��<�ӘAY��X�IEND�B`�PKb��\�Zk%%2templates/hathor/images/toolbar/icon-32-module.pngnu�[����PNG IHDR @{�u� �IDATx���R[��~?Ba�N��3m��Ni�܈'�c;66�l��Y��I�@B$@W��I��߆ܦ�$ά��f��sp��L�!���b�����^{��CD�W~Y�-V�h�8$M�v��좡�d�&���cuw,���"-fah6��Mm�hl�LM�Ir�xG��� �m4�({V���6���1��v�Z�@W��Q��;T�d'���lN��z����nLt�j ����N]���:�+���6]��$�\i��+״c�+j��C��j�� f2;� ]���wx���'9��i2�=t������}�������{�*շ����\�G��`8A�.������&����|~}�~�����;�mh�HkܷE��, ��t{<��lj��G��vrS�#J�q�� ��D�V��E��Ҷ�-�����Ԗ\���2��+dάPe"O����/��R2=C�c�"�Q����Z� �m����2UT#��&9��o*� .l��&��dK��=�'{&O��U˭�k�E�ϯ�����I}�{Oe(��������@hH�`Vr,X���E2��d�OR�@��S�t�9M��,�V����"�g��b2�s�f��El:A���+182F���y3�yZ\Z�"�����Q<�>��$�4�L��/�Ƣ�4�LQ���Rtj��a����AS�D��B������̌e�:}j�"�6'mmo�VW@a}C�24�%o������)9~��3��18k��5t�v����V���Mz��I��UQm��sh��Џ@>/bSI�����|Қ�.i�^���7��dsuRU(�Ĩ*���y2��4�%��Y�����>{!�5SUO�N_����jP�1j����)fz^R_����߀y��F^��M�ٹy��"K�+�($�.�[ 9���Ȗaf���<]�����U�/llP"��<�����)���p�Ug`���Jl��Ml�Z�@�h�̱%�L/3+T�����ӓ��7�B�� �}�.����T�gS?����MS�h�����ǩ���X�Z� ��r}��SS�E_@��z��b�O�t����"n9%���%�n����>2��+����M624��m�LtK��P-S}����Z*�v�U��cC|EE�-�P~�N��B�O��}��#�X�h4�SY��8W����.g.VawEeTRzR���F��|�����7N����������i\T�[�چ&*�)����P���:�I����]�N�������o(26Y�/0���}[�>:C=�K��si*G�!�JS���#1ҟ�Q�/�/%�DS����j����H�1�����Ր�X��$�Z�\M��@f�ފ�!�DV���:uZ_�;g� �]7�7A�y�[����c��AK?�ta�6��ь�֨=S���]�\#ei�� �����K�*+��WU�w7>��k'�E��;��jw������7�Px����,�3t�#N��7�K?�����2��onή��<*��<�r1]F������v�C_��n;��r�Xi626FÑQN� S0��@�z�~����^�x�g�m���70����QUR&&�*�( �zz<�u���?.�y��䫯��x��i���C���G�ν� ���͋�&�?V�r�������Sx��`w���/������|S��w������������t���) ���"�i�F�&&&4����� �G����ܻ�R���b(����0)�B,���$e2���!��)�u��=ސ~C� <4:: ��Ǝ��h�*�P��rd \�� ������'w���J���#-�b�X�w�A��<��*��f������2w�ERX���[��#���%,�G���ҟ��չ����ڢ��`���,�j�w�A8XYY����7���.}��'�/�U�O?��=zdb}��g8?9�$��8g{{��<yB���X�G���~̅���M}�{�B)�.4�#�� �H���n���"�]<:l~�;;;�X�`�嫀���CA}�'dY%B�R�SD����=v � �� ��C'"�3��������S���x���@�pՀ����nu[�z$. *% �ᵑ����r��E�#�+�4��h��T�c�!�t C�lUAՃ���Ռ� \��c�\� ����+ĽUA9�j����kP�."?/^ 9��������Q@a�9x��Wu�'�C8n �Q_��`����"�J�8\;��g�Ee��Σ��PP�_�d��[���r�w��B4�W�� ��W@���;�!����r�a����C�^�<���!w����S��{���k���1,X�-S�1�b�CP3� �d�X���P \��֏D<0_�t ?Gd��8�� ���aq��P�~�D?���Ï� ~F9��= zB �]����k���H-@���Nj�V����c������S�-�c�1�^�����ԣ��炆9�j�Q�}<Y�(*�Bq�`���m9g��`c�Y,���n;����P[m��G0ϩ��������-������oK�={V��_�?���+|� `·"�Y+{{{ �}��<���E�q�MX���ńIEND�B`�PKb��\n���330templates/hathor/images/toolbar/icon-32-info.pngnu�[����PNG IHDR @{�u��IDATx��OTWǏZm�Z;V�J�&M�mZ���?��&M��Iccq�8� R�Q�D�"��("qeTYƕF6\F-���ܾ�cx3o@��x�O���|�yw1�+嵀�o�sE�==����>~�>��5|�/\���8�$L��j^�ɴ��)��iOC����Ş��@y�6���A@�´c>�!���ez9��B��8�?"~���ߔ��K6����I"p���� O��� �9N�9T��"�۵� p<B�dճc�15��T�y�O���ǰ��VM��Ƙes=��e���-�0�5}E���n�E/`Ks�ٜ͍(w9k��8�{���L� �5 ��sF%�64h*��s6�3�>Ô������4?�)��i�E�=�16����C�d]�P�^`J/瘔Bv:��-���E�L�^Y?s���V_�j2cE-�WI�� ��ˋ�zؽkP�U�d�gZyΜ�*�~;��8������,���{3����,.�ߜ���kkv��hv�����Rq��2p��� Oj5.�^��:�,y�1�<�(�>=n����Z��*<�}���F��r�"o�}�*n� ��O�p���2'�������o� �L�ÓZ%�f-��.J=���'N9c;�[:�bg��,9ɴ�"Km����|�G������c�n\��y��{d=<��2z��(N*�R N��07�����YL?�B����,9I,G�bh�� -9Ș3-�`V;wd3��E���o�$J>��.���s4JB�`S<���b{�:\�~�M͝��~Y�4��S8%9�&�)a�md���o�(ɗ A�.$�f�=�mӗ�c�:�ǯ`��d��q뱾��)`A�{l����sм�J�_Ȣ�j;���J�� ��N�'`}�ua���(���F�\N��*@�Y��8��D7Ġ �2<�w<��b�(0� ƃw�{��4��0����F���Wg��O�?�b��>��6F��Y &�����K`߀XsԚ]��|l`�H�&�A>5��JO�uv}�A����Wq�^�Q� }o饝��l`�� ��˨��L�㌵`b�F�h�����>^�w�Z�k#��P����Y�Ǐ�57�ļ6ub{��!߸q��_�.�\��`A`�!�N�g{�� �A�w���7o��O���k#��0���#�v��*�ę��:$�J-�܇�W��8�=}�A���!nݺŽ��*�����o߾��E�!����C�u�*wgg'���rGG���w���{��ܹs��cb�X� H�嵬�_$�;$l�����˪졦WA�"a�!������n6ڥK�d]�"� +===����MMM ����˺�EºC"'��hhhP��M*"�d� ��<�H>�<����ٻ��G�������:nnn�PSS�---�n�u��t6CNZ]]�>�uSo�3g��z4XwHpB;`3��l��g� �nE�$��V��hEEE\VV&�!���;$(i6�ӫ�`f�"P��~����Vl����+**ԗ�n2W�JKK� ����C��`%����O�<�����D��O��P��:$�c`$2�(�ĂXvH�jRddd|�'#a��*t ??���&����3g���v�#���[]\\\(s�366��Ia&�5)��/�I���7)�ϭ��ҏIEND�B`�PKb��\)�ʜ��2templates/hathor/images/toolbar/icon-32-revert.pngnu�[����PNG IHDR @{�u�OIDATx^�XH]U?�>�?�td�&��p1>Ua{.}��A�0�"��b6���� �`ՖLYĄ��Z0(+Zma-Zj,�݇�fi�d�i3����r�v(�����������|�]�RJs�d�Gƿ!�$ � �B��4��H��N�ׇ=/_�l�`W��]�;қu���S��ֻ_�m�u=Q)�˱U����td@�ڞ���������3/Ǿ�ࠄ\��W�td�-`��x�(:����e6�Z:�� �ũ3p��0d06@lܶyC~��"e���]�w�ap��X��D�`�zӊ�ֽ%�y� 5M��n(�Z�_��/�`fPB-%��٢�=��Pl��� �ftX$���`��+�l�YH��t�����k���9b�u���X�c=��[�YN�Ȼ�5["�Z�Hr�f�϶�Y��z�<w��)����=���U �� �&�%��U^�ufp������#�p<@U�|>XfRY�v!���b�^���m�[�\��6�+|F��O�>51(�k��'g�����u;U�:���N|�5z '�:-ᤪgGMC1[��[^��N�!^��@ȥ�O�p��u_>VS�+�r� ( �iY���jo�obhc�ζm������vPA+ֳ����b�֓^���{��l���CУ4d�r )ZDX6ع.U�aﱮ�ƙ@l�h"��;+��*��*�@�lL�l<��}��N��ȍF,cL���Q�l`�����9��z�n�������E��I��0D�N�)���54*1O�^����o�k9�Q�ZPͪ�$�A'LOT�m�ahll,���\������ k���#�4�}Q'ث�}�d8kkkq�)hD�̪�YD��Eu�x�eY&�� 婳����(FQU�����b:����%���������� (��������Մ ڿ�|>��S'6�tf��� )++Sn?� Eq�y����x����~Ol)b���3�o#���]F��.��6꺻��(���ߏ{�pq�"fE@�MIk@��W��-�I{�`��"� �nw�$�^�~�}q@ h>�@Дb���dl��FTRR���S<�bCt�`���������C�@�����T��&Y�z�5��]�Ë�gBL|!��˱����M��C@ <�| �E��� $_�7">z,��"��zS �`����䋿&|@Ċ��VA��1 ���:::Τ�bhh�<�"� lK�t�NM#�G�IEND�B`�PKb��\��3�//2templates/hathor/images/toolbar/icon-32-delete.pngnu�[����PNG IHDR @{�u��IDATx^�X]l����_{���Z���حo�@�dT�Q%hi^����������T��*�A)R�F�� ����:���T���X ����1��k{�?3���WZ{g�Q�>�H�fv��=�ιg�\&��r���� AX|�2���8Vn|���x�ȑ�;::���� ���}Z�3g�<�m۶�۷o��={�8u������ӧ_���y�H�/ c�X"T���U���U---�joou��͝�P�B���KP��鹒�d`�&lܸѹ%���;�@�B�����r�g<�Z�v��/mلg[�0�Q�A���'���6�n� �"�� �>��T�y���_<ye7>�wF`7�� �&��M�'`��7��(�ƴ6��� �����l��a������c����T~�0Z��ax^n���}�] �C<��UX�"X1�w�r4#sY<��a�T�V�5 i[���gpff0�@��UՈ����#�R5�MU�u��9�����9 KIm�6[Mi�`��PP!�`8�PD!���-�5�Yw~,�nI CAE���pRE���jئ�S�y�EN�f� �l���?�8���:��G�xF-����-��T�u �A��L�ݽ�'��7` �i(0�3��;�M�1��/���D�BJp�+�-%���gҶa��@��w�b`R�R������t�9َ�w�$� '4!����!R�PQ1I`L+@�3 p������XI 8�A�m)�&폀i^% p�7�:����)�Ԁ�ྟ�� ���3� �OC1���E�>h��7v�6����~����Dࣣ�ı���?���x��0 l�X��*���N|���|nﺟ.K� �L[B�8�)P�E�?�"??�%-_�i��N�����,!ۙG�w����4Ppr��0����D�㕨'kX?�.r�@NH�/ކQY�R���6f>��z�{�%ﶄ��������"�`�:�bTT!g� 㪀�lX»�f��YG����Xeբ�_��(�t]4>P���dQם �ۻ�O��3f����4'&Q�@@a�Bm��k�zr��d��A�;��weM:ͩ[��RB q"Px0²�s��Ip�^��O�O�>�o����D�?,|�� �R,� �鞋C_��V���D>���^s;r;���-"3�� B���xv�G��ځI)�ZF xӾ_���j�2Ϋ���dΕ9���s��v���%��'��� |f0>����>?Xz�۷���Ɋ��Ά�455����eYP�����(�hkk���|��|��-g,��R)ܽ{�����{��PbF2�|�� � ��֭��������rtu~������n���2 �j?��" �hT>ϩ��zn���Zrt^Ň��) )�|f���:�\�vj5�{R�Ƅ�a(%�f�LNNƼѤ�cS4��$�s��V��|G���T�O����Fԭ$o�Y���t�R�5��y�6o�����-[�t�|���4{���m L�Q� �R��ƈ����Hj?m��*�O�J�!pI��38������������k?�������v�B�m"2?)�Μ�*�gO�z��R@�צ���q�*��?�5J�0�2>} �I��K�O���j�@�Z��ի�����ד� \�z5��U�;�_J*�S�x_!�F@����qN.� "�����^�pztg��R�3E��W��饉x5z��Q�7m��Ҧ7-w��Y�wY�ݚ��f�ǐ_����Y�O=�1��E��4�p��8q�<j�9�v����R�3� +���#�s�<��j�Ǜ��=�&�������|��9����0�f�{چ�x�1�.\��({>���5�^���� Yu�˘ޮ�n����ڟ;{��'O�;8|�p�z�۪�T+�����@�/�H��]�����Q�z�YAA�IEND�B`�PKb��\�����0templates/hathor/images/toolbar/icon-32-move.pngnu�[����PNG IHDR @{�u��IDATx^��KQ���.S���RF�he��K>6=W���E>o�3�>[5EUE�K/ko��`��4E�j�(ڶ����ocvR�nA�?�{��ܳ�ܹ8˄��`顦�<�2�O�b�i��/� /AS��y��⸈�`�e\IP�@!}4SHӫ�垦�ߏgX� 0�k�������ts����j)������y��:4W��z�xf=}B/��|���R�ٲĺ�` ˨D�h��T���jȃ� <`)g'e�7�n��&Q�����VA�_E`t�d���-��U�J������<pC9�&e���_]�3�n�S���v> �<����6^$�so]��:|ma��3mz�˒�8w�q���H�������&�1<tu�=ػ�/d���{t@g�w:�95��gVu�2o��pB��� 豔Ω�����8~yΩ�4燰�'�B'����nF��������JĈ�`P@�����-b�(�<�N�:44�eۊ���p���$ �� c!�@ ��,..��eVVV�kkk&ϟ�痈��fggS������b�A.�~E�\��7��Up]W�D"67�p_߶��|OM �]]]�jjj+ 0==�֥��i�t�5(�}`yy�g7jkk�m�%���PeY�A�$I`����'�=��P�V]]�`Y�l6�M���;�/����h� ԍ� Vs�W ���$��f�*�{�F}}}��������������(�;� %�����^022��~0B����F����L� �A���&��b솉������m�Gqjj�F� ,����f�������D7�ѷi�3�w9�h����b����ؘ9>>^�W��I�h�yB���*"�кh�IEND�B`�PKb��\��Jz��5templates/hathor/images/toolbar/icon-32-messaging.pngnu�[����PNG IHDR @{�u��IDATh��XyP��?*��qo�m�Q�L���t�.����el���h����h�J��!�а?�� ��TV�=" �c�}�ds�'�?NϹ߽��J��i�̏������{��=�#�:�$��a����i'g�#a.���fKA�*b�4:[�',&|�� ��H^�{=����p �Y�(�gKO��e�7�ߑ�ᛄeBП�-��܍naq�Ɣ��A�/��&���r�]n��i�?x�O>Q�m��bp���+���p8a�TD(������j�@3x�#x���T�p�*B�! �'��F|$ᤙp(i�.Q'=�X�{ւ[L��H������d#�8�O�?D8FI���4TIߖx+���$�~�_��l�#�� &%x��rƓ�q�� �D �w��>F�+C8]�r���Y��� ��;�58�O��8���H|u$�� "!o�Tiā� +BX#BD3G#�I���"�)���}�� m��� qu��X��B�$I�FhՈޭA8SKyA��p�!�"߉�Bͮ2��Q��W�o9��trr2���~244�mmmXWW�%%%x��C���������Do��yքޤy݊�ԃs����_�6�#a[r��� p�nKOO�2yKKVWWcqq1666��qtt�;4Fd���V�0� �؎K��@0u!��cBۨ��ϔ�+��~q���d&ojj� 4����ۋ<���!Ə�="��Ј8� ]ab���=�^!@@+o�yTrN�W ��n��q�����r� �(TUU !eeeB��\2l�!I&\�ӈ.ާ(�����+�0z�Uu�UU|8!�$�u^�6~������� �Y@yy� ��ݻw�֭[��tpɫ����p�R9���#��>�U��Ȏ�7o�vd�EI����c�����"�碢"lnn�*B�����π�'����x��mA��o�mpV���z��6m߾�$��I����N�������O%ԃ�kkk��y���h4�ȋd�:'����wP�}¡�,�X��b���P����O#�Zk���"�q�Mm��K@�e���S���OZ��<��3������(�k55�T�VqM��/]�Į��q�\=L���?U".%�$��{zz��W��f��D�^/�Ν;�pZz�~�Zh����9���M��#GZ�l;������ � "���+ݵk�d��� �`ALĞ�0��ac1*�j�U�u���֎4�Y�c9�:55��߯)Ԫ�˯Bdr:y��*!�o[B�G�7{�ag������ZrT �/�׀��;o���啎s!--��4aJ�Ea��)!}��$B7G����j�R90ol��}��E�� x��p9^�����|6��{zz��<��#Ȅ�K��`j;u* A��c��%R��j��m�y�\VV�C~�EEEs��P��}r�!'s~~�L�V?��7�Z�b%;��\Ի�Q��t�ӱ��e��{Ϝ9�NoE4%&b9���+[BN`&�����ȨO�H�7����.�S=g� �~�ӱP� W�j^ d�������sU1����P��֭߰O>��$t��X�'�#óT7%?���W����xh4���!�ꕫVy�ϥ�e��a��6'!�ad�L�u�pᧄ�^$_j3��X�?�h,�/�W�)��I���Κ�3�>�@:_��B)l�͡���x����$�-ϲ9��G����Gs���{��ӧ�����Ӝ,� -����ٳg�Osbǎ����?w��a#���#�`0�q&f������iN�����k Ű�0z�DbLL��n�M��"W�4%SoN�ܹs-�gT�l�(DGG���Xq���������9Aa�L�l��$�((qqqcHHH�Dz�ӵ�לpww�H�)�O"a/m�� ,������Dا( C��٘����=�0!��d�, 99Y���\s�v@���ΏmN�a���,F�<L���$��O���6�Fb�� ޒ1�L68 )))�{\s��9����H��փ0�� x��o�mIl�rss��˗/�kN��4'JKKǑ���Yq?O��<��ػ9�nN���`��ػ9�nN���`��ػ9�nN����Es�9�o���Ӷ�iIEND�B`�PKb��\���5templates/hathor/images/toolbar/icon-32-unpublish.pngnu�[����PNG IHDR @{�u��IDATx��[LU���XX��KO��P/��PZh�u�]���@k��KC�1i"�Om��E��mP�TIj�"�*�e�Y�>��Є7�J�}��}���;gf�!�ē�2�g����9�3Kc�*O�-m�O�@0$#m-y����>��e`�k��H��I>���S� R���r3���v+�.6��R����m�>����᷅E���m[��� ������͖����}��D<�7=�9`žPJ"P<���x��N�r�!7��20�;lb�W�����䀎���eMf|�`.���P��s]�j�l�ʁ�~U�^�5me30�|D7�@Ӽ$40养��bs�v�]� X�ԔǠFP�O^X����ʽA���P��+l�ީ�m�1�h�Ǘ�d�u��"��������V��j�0w��3������\��� X�����2�]�|��Y<�$6��fw H�_�hcj�GCB ^ß�@�fv�Q�!U+�I��t�� &!@Ē6+F�wpQ�σ�`����d`�C$���#:)���k���3��o=$0�C�?/���QCR\��x�`Z��� ���p�M�1���w���d `��-~����?�6�!M�������}�錤yC��^�QN��r�tb勽� �-��e��"l�,�V�ҖL�}RJ.\JX*@�ا�q�io�q5���k�� �i��]$�A �\�\����/��4� �6N&��6��[;����$�#;ɝ�� C�-&��J����������n� �s3�ـ��@g3@5�yU�Ө���\�܄�;����N�x,��F� �c�0����Cg�d�ph@�c_�X2��=�4�¬\S6����6��k2�^�(����o����wUU�������@����絵��A���]TVVf�p^cc#moo������� ���������c0rܐ��.���Ζ�z��A,�S��������h�)��r�ȡC�P�'���Ç�FP+)0Ď�� `�A��7�����Y�9B���p(��p$�ܢj&��ĉ�+\�%4�8�رc���g���Q�s��@ΩS�TŎ?NC�����s��U|֪y�O�ƣC�@ooo�ZVdpp�.//���Μ9#� �8r���0�����r��1J�X<nBɀ��ѣ�����`!!/^j�<y���tvvZ����P5p��u��aMh�"��ǵcy�,=@E\�tI���0U�Q\8ID�:^\\T,�Ũ�p�� �={=V<��~�Qéh^�6�j��ttt4ιs�O+V�#�� �2�W� ��U�~6.����0�:�M��^�F ��ąZ)}��a� /����{A]>�s<O>�{���{^Σkeee[\.W���6�-�6h/B۾죔����y���<�2i{�Y�qIEND�B`�PKb��\�-��1templates/hathor/images/toolbar/icon-32-apply.pngnu�[����PNG IHDR @{�u��IDATh���Su���fF�\B � vh�[k��e����g_�hi��[ �-�K��!�h������h�j)�X ���=�.��T�q��o�;��$���9�{�Px�Wx�`�M�ّV�fu�W_t�W�B�� r�a��m���Vo>yڲ($ҕ$��H<�����8yZ3�Ӟ�Hȟg8���%�F���8A�a!���fmu�$n�~p{�AjH<�q�m/��d!�!��Ɣm GD��&� է�k��s���$�'�t%�W� ���X��6I�[sIn�8�� |&B �K �P����[r"�ǓT�+�?�۳����G6-U�]�e1ր��!�'��G�3I��Yb�g�)��ÆzܔKbK�Ԥ���%��,ȍ��Mـ^� ����~���W�E�K���9#�Q{���\Z�Ċ���eސIr#���Z�*@"��<krݺ�N7�;L�|I�J��Tg�5��� �"��f�Y���k�?�KW[Ђ�KH|WI?�7�c�h�!і"��X��sn�T�E��=�ձOẄ�I|�~}�q$-^0�2ڱMk�TZ�ɠ��LڨN ��6����zKFНO���1�l?J���[&=����*m��n��'q��<�p.�~)���#�Rn&�&H�nK�O����_M����g1�����m � �����y���\<M�Ab ��&M"�p�t��Ӆhz�)vG$*t��J�<|�y��yxp1�~�d��#�T�a�~IԻ!��t=����#y�I�5�M��S�בW��H��<w�g�h$[��[�i�=rZ��H>��]�� �� ��599i�������q�Ӊ�>==-��������9 ����߹w�\� (p��������w���|���`8`�5G�k��<�����v��V�P% t�&p�9B5�B��d�/������Ń�����( �����Og �����V800������.&�%�p����]p-^������522BN��z{{�?�A�WR����{ �s� �������O�Cp!-�jp8߽?����jZ��aGB�*d����� �Q����P$���w$���r���zKtvvROO�2Z;X@{�p�<�P��5�������%� � _��Ih��SX�B�>ܟ�6<�^��}%��C ��>Nuъ����S���H�x�IEND�B`�PKb��\��]AA5templates/hathor/images/toolbar/icon-32-save-copy.pngnu�[����PNG IHDR @{�u�IDATx^�Y]lU����nw��-�$B�BA������k1��&�/��;%<�M6� �$U-�>�'�j��@lK �XLi��n�����\�anvv;��<��ܜ�0����9��s�g ��M@�c8x�H�����%�l�\[ǘ4�L�x���'N��������p�$Iqk@�u�UU�i�i�R)�b1(��h4 �0(�M�#�(@L7g�ٸ5E�}&�B7��{_~�x M�F�|i%���@ ��ܲ����o��8�C�KrιN�MW���A7t�A ѷdUMs֑%%c'�xH��d�N�ᆦi��� gd�<!{HNs������f� D"�Z��,4-^,b,$9/�Rȍ� ��� ��5��';;�pKf�\B��R�Yƒ�K穀��2��N�X�Ulm�܃���[�@W E�# �{�Z��/�I�Y[+���?|( :�cM@H%$Ϲ4_\L�Z�-��D�ۿh�o��-0�JL������������yy�oo����}��{� �r$���a��8JJ"�I���s��Wzz�8��h\��KH�������@SU ?����߷���O�{��$�dA$7G��LM��7n8�<���d��nr���A`��}��7o╆��H�uw��T��!4mo����S)T,���?�-yss3:��Tz�^.�@^6̈́K������o�Ir��/��0��]o��(�Ǔ�?�;�.P�k�]�~�VSW[+1i�L&�4b%%���$�Kr2�%�J�z��0�D���_�X�l����ۏA�!۹s� w�9E����HƴKi�" �V�_� ljp`�Q�"�|X�|a�g=�/�sx�E�رcزu[^`ǎf`����`w��N���^'�okk��W�l����1�� kP�y��US5��!��`��`�@6Y$��s�i�M��yt�(�d����{è��B��R"�dWR@j��z岫<����0�ݵ�.rż�%��ud�0���c�����$�Ƭ�M���C����9�"�L4����X)Y;��E7(rYÞ�@g��� J�h&''im�אÃ������po�3*�I �BOO��cbAݲ�G�Y�E��㗓# �hq�z{{s�W�G,���C@�ś�[\�3S@D�����Y(��n���9�M@��W�[2�z����ܧk��c�ƍ8}���ԉ8 S_����q��]�����d�3���qy��^ۆ#(�21��n�� ԯ���Pf�UՃ�#'⡡!k��W��`��_=.)y�tH]�*��U�I�+W����/��pH������;�ѣG��n�:86:'gOS�KUUU���_?���Z�[��VT,����Z��rB�y, � �`~��̨��Cez((�Z�"������]]]�_y.�E0��^�(��T$��oHIEND�B`�PKb��\�q�� � 0templates/hathor/images/toolbar/icon-32-help.pngnu�[����PNG IHDR @{�u� ~IDATh��XyPTg�#$1+�x5���x�Ulm�n%�P#]� �¨�"�}����hժXn�KVwqͨ�D��170�)8*꿽�k�cqf`5lU���^}߯�_������Ͽv��JJYtť���Q_j4��s.�xo�Ob��8�p���c�VVNvG%UU�PMm������S��Mg y�a���&t���o���NO�>�gϞ�<W噬�]���aIy�#X�E�;�a��d�De�}��N����=J�d��2G�r�'t"ST����?����T�v�G��j�B�K�sT7G����i�-��|�T�_���=�}z�0�9༔%{��Cs�W��yZ7!��@��}���C�LB��W���Ƨ"x���|�X;�@�*��{N0@��1N�"wY� ���Q�ad�7���&QUU��v��H��!�� � p���%fH[؊?�L�/z6ݹ.��q6�������Tp�����G=���=��=`�՜�� n����%)���s����L�C9��ˡt�O!��8s��Z��xrt���zX����,\e�������J�G��}Uaw���Jzx�Uo�A���r�P��;�~���{۲��h5�3Fuqf|/�B��K[D��g9_ 6JJ ���h�W��HBi��lo��K>��&���#S�5��H����z6��� ��=y�Y����%^W�釳�>�F�t �ӟ���l�uS�E�ohpSx��1Ym6�{���e�Ν=t���f�U�с<z�V+;p�g����]W>�0[=9`2S}��O�<���2D ��qB�n`&�E�)�uu�WPx�_'ӿ��7#��أ�辍�5�V��ɽa� v�=�<T�WruC[md�S��jexs �5�r��%`���N`�ZP�2���g��P#ܰ�C��S!�b��C�k�s�nj>\�+�*x?>�.|L'����Ӏ�óFu�,t�iN��*��ߝ$�9���bg�7����n�=��K��¸H���;�]�gNn^��ȅ�+ ��=`�'��.8�0'�1��R�:a`S�jv���9C� �d��`06I�5ʏ${��p�SP½�`���o��^jC�U�Np�Ž�}�JN�S2��ԩ��ԒCEGB��g��w@e��E����:#�7� ܲ��Gd��r(�q���=S����lѽ�� ��r��G2�&�!Mc�@���ʼn�H�L��4���w�:�Vo�j�k��Ct_�8�:@�E��DN`�6|ޅ,3zPc��U.��q�ߥ��~5>_ wd������_��{{��&{T��������:�f�3֪m&��[v}�_"�w���I��@gU Ӌ�/K0��f�+��Br�b����=�l�=�Z^~~����Y���d P��-�� �_������J?u ��U'��.�*�����:��z����n-��i���mu�����֥�5t�5:���E���$��������,�%%%a�����A��#��{!?��ŋ�D�߿_��l )�e���Ԉ�k�[�j����,]_�afQ�.]��\�R���Ux�Px�~A�v��m���W1Ģ[�d N�lذAIMMU����z%77W0�B������q�d͚5ʦM��͛7+[�nU�9��8�de۶m�:kբ��;��u�l˖-B�c�e�Νr��$,{��Cs�W":x��z���B�k�.eϞ=�͛7���GϧO��=`��� p����x(�g���r�8�p�ݻw+{��#�n�|-���0�BGs\�T�k[D/[�LIII�ʖ���4]�FBrrrd {��t�'��Vd�p��7����Ԍ���?�nΜ9�-u���gϞ6o�<��9�g- �Hvv�Σ\�~_QQ�<x�@^��Ǐ� V�6��[�f�N4w�\�jz�8s��|� ��^1QR���%���F�_�|Yٷo��p�B��{K��0`<(o^O�ܰa4ݓ�uuuun�����}z�bbb��\�":�u� ���ȋJ}}���\ j+�y�sY�GB��|�a6�#=:���n ���n�������b��t#�� �Á�vD@�v ��U����P-Z�p�ym�����舧N���s� v�=�<T�WVVJ[��^�W:�\PD"�%�Y�t�j� ==]�4�p��q�� Qȹs甴���*������9s�̮���h`��ʶ֜�����\�zu���R�[�b�hMHk@TIt6������ �5��ᡫ�p�N[� L��Z'l�q*-2|��HAA��`O;�������w�F���˗�А\���˝"�!x>z���m��e���l��:�Q�\��ƍ��r(�.8���m�T$s�:� ���8��oh���C��΅�B�~�zi� �x�b�C�c�,t�߸�=���P'O"�1�)���D~�= �j�:�;�[x�+�?0lذ@��3Q"���\p$9�$�|��kEEE������������s _C�[�q �L�Zff��ѣG������?�_K�t�Q�u%IEND�B`�PKb��\��T�LL1templates/hathor/images/toolbar/icon-32-purge.pngnu�[����PNG IHDR @{�u�IDATh���sE��,���PO�ū��R�����,J,]4U����rwԓ�aK IH0�lv+B�F� 0I�!��^�7鍓afgfY8mW����߷�gfz{��Z�U��J�r@�@m� w���������g�t�����1�T���� �<XVT�K"O�)�3W��s ��W =����/�����(�������N.�ÁJ�b\Q�����0�.?j������=#��r��d��G|��e��~�����Sq�D ׁ���POy͢(����������:�h,��W���R�������1�7Ylw�6�o-a^�u�[�J��b�Jq�p4��9��h���=�|����ת����X~�X���cNy=v��X�%g�]�4�c$n�5�wFbv�]#1�)caP�8�1����'��q'\�ƌ��C]�7N&�W���� ����/u �6�P^J�e^\j�u��pBT���[i��D�_�KCI��gN��]��Tr)���%��N$�ʖ�mC ¾���]Z��=��d� ���P��@�dQ+ۖ�xN��`J�g�q+[Sy_6�4@Vx]lŤ��'���7x�<e�g�L�z���@Zd%��O��$՟֓���=�ȡ��:~-���@�!������@���f�F��q���P�vc��'e�c�i9��xF�8�������3Z� ��g��S<PC��'�2�LuC_�'�]՟b��ʏ��5e�o�B���XZ���.DJ�OL��P�K��d8�C2�IK蛿K����ƛ"|#�� n���D���]�ʡ�]�]���$���V��w��;w��.[���^�j��q��ym�)s���n�`��G^-�UZ�U/sss��M��k&<;;+C�����4??q�*�D�@ רx�&,D��3�a# ���̐ �$���.,���q�4Ԁ�W4�։i�yN@��/�kO�9?��z�h<P�j.���ѧz�t�R����������ŋpJ6��"U������ 8��2���W�x�QS@\�p�����{�i�'���y�'�p}� $ �eΟ?_���`iNߊ���4YԊ0R�+[����\ԝca`��3��`�ܹs2 +<�`��ցb��@Tkkƞ�9�>DH(:L���وU�M�0o�.�L�) T�aA6b���9�5�HA��f"Ww>p��Y���9��H�����`�0��ETk�p�|�u>p]�#�*��&.IEND�B`�PKb��\�V��**2templates/hathor/images/toolbar/icon-32-remove.pngnu�[����PNG IHDR @{�u��IDATh��]o�d��k�@F�w��*!!7��#tC��&0�E�����u�����^Z����U(T�!��P�6I뼵!IW����U���qq�'�����'��y���ĉ3v�D$/!a6�W�h1��W���XQ0h��9 Q�H�`?<v�6�׀���'����� b3��cc-����e� ���p��"4o��/�X/�/~%fC+\�e�]�xC��q5��+�:L�B� ����j�z��R�)�6��%��% ��eXo�J+��߀�P�3��L���H¿@L��[PN��*��I� �[�;&�E= `��=�7�`����H�,�����R�bYW�1����v�ϗ��� �0M�fN]Xg���=�[ ��x\���kf��e��"dB�T1�Wԛ���� |�7�3s�NW�ȂW��tၰ�4qzNq7��_�:��J�N����� ҹ���N���;��C��nν�����Yp#|+�Pޣ���3P��M��s��a�ߢ8���V~�@x,nn��D}���'?�!��v�B<pa����i"�{}���'d��'r�$�<��O �u�,O�V^˭�t�'�Q��>Up"���`ϯ�V��>�e�E9���e�ߐ��A��1��vK�` ��������b�]4���;v��Dz��k?����P;]J��ZaG;uv����}x<�8r2Ď|���/�Toüܨ��ȳ����!N+?����9$k�]���E�ry��*����_q�y�s��Ҽ�@wJ<ñ�[8O9h�Qg�=���G:���0�"Q8:?V���R) �� f2��pCQ�l�x1lgk�ce8�|�J�ۛ;Eݰ�hu�H&�!�Q-�U�j���q�� ��ŀ*_YY���U�f�B1��Q5O'�)��l��\n�ww����ey:{��S��ZЙ��n�.n�A$/��оv"����j�D��,-- ) �LI��_T�{�?�V�cbgg��=z4f����X[[����o���"T��5`�p��i **�K�-�����tg�b��.�H$�pR,+�I�r�u���A�8I����-ݤ�y:��[[[��-���E<WpB&��yQ����G�k@B�F�P�?�X,@�I��C�Ѩ8R�c���B���潠�f��S8B������333�j�6i1;;;9==}s着�������Ŀ݄�<� �IEND�B`�PKb��\$-�-��2templates/hathor/images/toolbar/icon-32-config.pngnu�[����PNG IHDR @{�u��IDATx^�X�ke=��t��M�05I��ֶ�*��lT(E�J�k�Hi� ��h[$R�J� �)V�omSQ��&6��$��Ǧi�}͎��ҙ�d�e聏���{�3���4�0�0�C��o4MÇ}ܳs��F�}�6����g>9�L������i�>�i��7���d�L���ظ133㚀�߬A��+" (�JM�a<�m+��_�@�9�^/tE`' �7����F��CI��W�;�����p���&����Al�� F�00<�7V��`<�ڂ�� 6�?:�����\����Sx��B�;��8t��]����:.\��=O=��u!0��=J�x<*)@!�a��Nu�����������6WB__�~u���`4Ƣ�zǎ��P! x���6lx� �b����a{,-/���ݖ`m�Vfɦ����tw�&lㆦۛD��J%�|>�~�O�*��<f�H&��D4�J��!�:XZZA7t�FS� �"٘������9 �$["555���f0 Ţz����D�`�%�7��BE�m`����zYr�/P*�������ͣ�#�++P��t��(��9�*��U(��l���1+�����^�x=^���7���k�|:(9��h��1���MsT�i�zC!0�J�t2�� ���e ��Y�i00 ��;:��qoaɩ)��N�cCl%*"� ��׃�%����[ܿ��[���( ���E��l֒�.�uJ�pxtO�-}�z "�R��U����N��7D���9�����pm9 ��[Z��Ω�|�j9t�5�0��o��s�x�ĉ�xU�~�i �z/Y��X;@#����R�C��Av5�zH ��-�7!16ff�KHb$��`0���&''�!7��-2���Ϝ���ի �ˍ�BAF��i����n�E���I��o��Ţ�h$�5B:=�Y^^�r����}�7��z@L=��WL�#����^,&2���N�K�$$c�(���@~���z�Y�5a������OVI�(��Eg����U���g{��|`pp=j��V�4�]����ݷo��V��he�%�Dd�U����� 5*j� ����i��GN�����ձKH<@�>#�&� �K�_e��m7/���4MT��vJ��9^�״gP����WV� �\Ō�jXR���`�����ܾ����VJ�p1�3*��+BƯ���X��D�ޑ��L&C6��'�|~~��bT�4&�(�G&�r�B@aa����åJ\FV����GT��$��e& �K�WSȝ�T�z� ���w^�Hc9H�cRFڐJ~��J\�d�� H)h�fs�J��3�8�� VUU�2ʘ��j!�0�2��5+�T62qC�c���VW��UH�=����ou�:'e�IEXrj2$$!��t*�"`ƛ�������gz�.��jV���ٜE�Q���#5������-��&"jp����՜�\K��[T�' ���ȇ�n��H5:yD3�c9e>�S�]B����g*ۻ�W��p�M������u"@ˬ���j1��"��]˙_� �؞�YTH$�ɋ*����&�;�%�Bk|>�����|�_�B^l=�y�IEND�B`�PKb��\�>/��0templates/hathor/images/toolbar/icon-32-deny.pngnu�[����PNG IHDR @{�u�qIDATh��YlGǹQK���� �q氝�ĉIR I�r���>��S�>����@�R�J�� �}�&!q�87!�$�j��>j��Ƭ����^����������3��ϒ%��M*� �� G�K��؆���8�y�J��A:_��Я����+ݛ<#�%����f �C�ւ�x�8��Cۦ���E���?K��4¿qLm��0 {�d����G�AF��Ѐ4���v�$$p�7M��`%I�&=t{��F`��#�n�aQ�S��,Y����̿��A�d���̦(��J>���`>#ht�FCm�����\�L^�t(���u��TU�tz�3 �$ YkL�zO�R}L���cz�e���щ=���d%Lzo<I��_:N0��a��H��xZh`wMI�FA�I�oOS}g�$z�7^��]�(�x/9N�'騋��?A��$E��z�>j40�ȵ���Y�FC����S�j�`�x�3B�1��2Q�wA� 3Fa��o��+種4�/7���3f��۴���H�R��8�xO��[ak]2p;Lb�!M�&psT�@W�� ��1R�y`�<&*�Ӿ����<"��n�t� tFK�;cdQTG�EɉC�8we�9N��ώE�z-�Ng�'�s��>#h�5J�MG��Lk�'�Z)�5R�DJ`p�R�u�D�QR����+� �,A��d��c���,[�z�h; Űw�E��-��!J&4@�+jb���������P���\C���Id��x�N�{q\W�V��ǨX#��5��T�����QHx�^�������u���Q�/� ����ž�D���J��p[�� ��4����v���ܥ��_T'�G��+��T���Ԋ#]@KER J�(�RJrM�+D_��~~�0ĬC�����Sw�\�u�"ԥe����q�WK�#�$\�[��X%��X��D~���PJ�+vY �T�yj�4�pˢ�H��R$w�J�_a�.��X<V�:_�:G�O&����vY�}�b�wGޥ�rb5�����Jc�m�<7�˻�Փ�ڋ^��Fp�?�y���f���5멿��XE,k����D0���F� ��!���n& ?�{ld��&;�$a/��������@x���bo���Jycr;d<l��[���9��J�� gY���*~�����?��e��ۨr�<��u��8K�x]�MN,� ��;K��)�p��ɍp��5���S�-K7�MHߠZX0p3�J>;;�C����4&''111�0�����u�n�LMM�`���ahh���s���Ak��l�M�G�AA&�`�Y��2>>n5b��Tx�ht6>|��O����¿���a����p����#�ش�hmmu����#���텍��6�#$�������z��-���2`ܿ<@ww7l�����j�žtM�����y���C6���f4559LKK��mZ<�oCJ��%} �9�*��(܌����F�D�M�u�s��АC� ��5A}}}0��e$�#�E$?�rrۿ�3g�peee_���>J\YYy�����m���ɓ/\��-%��`0�y�*kS9�[ܤx�6)�ߎ|G��u�IEND�B`�PKb��\���]]2templates/hathor/images/toolbar/icon-32-notice.pngnu�[����PNG IHDR @{�u�$IDATx��]L[��06�P�4ه�I��u��nc���]LH�v���ٴu��U��7[[�ҚhmU�5iZ�$&!��!K�BLB��0�jc�@8u��������c�T��#�t�����}��_(��WaL�"(ĸ�AHF�"rW%$��H�0��� F�pF�l���&J���1�[H� q �Q� y�e7��&���ڵ��.�����nE�C��=L6 >P���]�M�>�1$��]�O�pcd�'�Q ����ZX��f�Nxl�#�#�0˱<��\��?�&�+G��)|Š�[e�I0�"5���y��a�� �-?ߞ@���E����dB�L����;mN.K�m`;�@#��k� ��\��x����$B~�N������H:�<W$�\� ���OЖ������|vY_�P�mr��s��R�+���դ#���>��~��{JހVp9o��ϛ\�Q\�_��X9'�;Q���"�R�F�Ͷ(�Ϛ�GbF�S`� Ar�ٓjޘ� ���$F���q.L��&���3������ r���D8�B�-����d���:�E�g��{G�q��P��|`���l.P#m8���j�˜�c'�1��73��-g��<��:��Ra*� ��ֶ���[ϪK0Y)�v � �� 6ʪm��H^��c.pB~��;Kt�U ���3�_w!p� �>�;*i˳=��5v~���\R���P[���q��w9�v�1nD�J>�*r��Ο�ϲ~��'p�؏jԆ�ip��+W���? _R�G��)v�g篐���5N��Z�\��{M0ҤyQ��s���X�*�znoDo�sp�P�ಪ ��-�ڇ�|Z�Bwj�UP�s�8��ߒo?�;a��� ����*ņ��"���/[0���a+Nj�<;/]ǻ�Q�Wɗ�Ki�<N���w���$B��p�?E�=�c���~���� q�uy�ߊy�B I�S_��[�$?�{Y��|H<��ҟ���*��.mK���/�s{F���d'��|13+�K�E�&�'e�Gd�J�L+��&���\ ����&I�@��)�i��)he�$_�FѢ�F^����X�ݚ��$�h��c�D;�{�Z;Vs}��@�6�6R�a#����#�G9 8��D��$e���c�ӵ�5,,, bhh~���������^��a؉I����@ ���l���*�H$�Q��؉)�\��̌��lx�Xi��i" ajj ���ߏh4 �(ߖ����� �Dj�ayy�"Ğ�'Z� ���� twwcuuU)c�3+6� 0bnnH���%�|>%��HV\N#� tʜ�q㆒7��T�39J`�:Ѯ]������͛7��1P���~߾}���ޮN�,�:M���a����l���U��,�zM�+3�[�:�q��EܺuY�u� ( �166�NDN>u_���3��AA&8��}ohh���%���S����Jԫokk�իW����K��P�f�MFGG���p+��6�K�.)�Lx�ފ�������ß���J>�Yp��#Q�T(�� �|`ވ�m?���q������FuصP�ZZZ�|:|Ğ�7A2|�[qSSjjjPWW���)�T|�n�Bb*QN"ۤR���G�����p����2븳��C��/S?R�(��Hq�߹�����>���S�����g�Ha ��|��v|�)l�����/�E��4��IEND�B`�PKb��\hFs���2templates/hathor/images/toolbar/icon-32-cancel.pngnu�[����PNG IHDR @{�u��IDATh��P���uu���*T�������Q[uV�k���v;v�v�ޭ����ۮkon�sg{�m�UT� �_� �Q��E��w��M�$oB������������/O�<�S�|;�1�aP�� Wc��s�ͱ�L~�r�F$�5O/��=���#l��X�+2��x��$��au�ϳ��c`�s���G�l�5ؼ�x���f���W<O������γ^�OX ����c�UsY�LR76��j��YKo���wĻ�<Ȟ ���K�b��g0�2�Y�Y���Yfb����ޙx��ޜ-��Ef2��!�d�L�ㆭ�u˜�����h`h������0����H��M�����0��ZL�͒�-n��(�-\*��X��z?�r����ѽx�}�uΉ�������r^��(�*�gE����ح���`3K�˒YQHy��>�����#1F?7�?�(��>�s��[���_b1������u�{�%�G�v̵��b��gy�xF8����y�.:h��A���pC�n��Q�~I�$�O��ש�c��f��C����ov�~��vz�D�F�N`��K��>M�;K�q[����]��=�a�=��j��gD�NF�E`�fj�%�бW�g&�&����B�m�����0���@wJ �Ɂ�J�_�ѻ����{q�ͬ1��iRtQ-�6�I @�\¿�B�j:��չ�@��/ѹ"��z^ߝM���A �Ж���wo˂I{��,=�����I �#0��/�N �� |��o��#tl����.(fT7�|�[0?p�44�4�h�B���5h7��%�i�ͩR�Վ����"=Ǿ����C�� 1����A�'!7�Rt���нⳞ%4��p���n�?�n�N�����Q�>oY����G߆>�?�=��H�ͤ����學1˗kI Be| ����r�?OMf,nS��*t�3j�Gbv�7&�n��諹�ο�@u��!^��kd�>]lv�[ж�'�jqTd�,9eI��0aJ�qu�lԒ�z���炆�ښ� �/DI��#��|l��%�ɘ���!�^&�<��o�!+]�oPQ�*�p>5 �f��b ��yϢ`�O��V<E��3��TԺ�Gv1��ZW�@B)�8�����h�Jlj�`�����0% �Kc�{%Q�3 ���3�w8m�4SV�)ֱ+�"�!� �F�X�T��q�\���hO�ÿg1�y�P�AuJ(��ڢ���x����~��%[�,��<A�J2S�L�S�Ҵh�*�t�T�e��G���2���l��x�����CL#�GL'f|��1�d���M 0�ka �$8��:o�$k=�}d�,�$ۯ��akmL�)��G�lEDB�ڐ�.n�s�+gm/zAt�h��6����ϳ�Q�"������w��D��x8i#�6�D�6�"�@��[���ፁ��V}��9�U��f��Z;?���r�����1L�v<ec������N��Z�.��%�J'��bQ�^���KN( x���:����(BI�1Q���6���L�1�n��m9&�L��^_@p�r��[ZU�!r[���%��3�����}w�ރ�6��V�э�45]s�G�pk�j}c;gt7o9������xCc38�wԩ�"�G��R]�!��~��Zm���GO'���އ;=B�!�kT� ���M�a�Xp�p��������o���/0PUU�$���ތ�!���EO����D{���rw�h4��� �h \.-�7�N��`6�Q_�ouJJ.���*��>nݺMWWo��ʋw���`0x��>PVV���E�/( �����eq� ��;�^��� ��#TgϞ�A�l�9���._��W�w�W�U��p�G�(,<���+Z[[ tvjy!{�}��M�L&�7�����V|��)%gΞ+BGG'�S���wιH&����=��҂�g�����ผ�f�sA��c�xB(=�����P�dڙ�W��#G���I�#�w8�ꫯED>� �bZ��|��C??|�K��8�:�sR�����{���^%C��o�?�ak�����>�C���۾g�ޏ�9�B����>��c����5IEND�B`�PKb��\"�hh3templates/hathor/images/toolbar/icon-32-publish.pngnu�[����PNG IHDR @{�u�/IDATh��YPSW�9*�j��$$!PAY[A��v��T���Q;����v��Tk�.X1U*� ��E4*[e;Yd���_�ss��!�3�����|���s�XYʹ7��r��TJw�*i<��V�i/�à��ᵛ�Bz��Oʤ�ӛ��q&�q� x��� �;�7��=�w��MC�u}h� ĒG��'.��P蘤ʧ3����� Q�7��=G���|h�6m�⚕��̱�J6[��?� ĭ���\�2O�c@S@r�@2E@�!H�K��ք��f=�b�z<��2y����ek�`R$�!�hz@�����f�!n�A�U.���1���%��D�Z�T苢bw��"�nL�Q�{�"�~l�S�/�Q�J<�h^�b����EkF1Z�[�U�2�M>j"M\q������V� ��h��>��,n7Ļ�����rb�M2�T�s{/��"r���&2ĺx�-o�2Qk����2�")"أ2/��ɫ�(E:��m���܂��� \Uͻ�p�Y�WD��Η`I#�B�]��dHA�Zу�� \v�E�! I�,}3��E���g��2dW7�$�QD��|�y����(Jݜ&���I��0�0�_i���-D�\n�Oc�p��+�Fc���ds*�(lc�Oa�SH� ��C=��e}���6pQx��D�!r�s��@8�j��B�T��6��c������0����g5$ɞ`� �A�m�� +��/���cA��,���M�;��츘spU���?q��m@.�c{~�Y��Ì�i���$r��a�_ �ǿ�?�~1l�5�Ɂ0/�C���/M��J�� �4�8��9a�kѺ��'�&��h`��ވ�-ޗ�6�'�FsGx�~���&wQ��GR�Z,j9Y�Mp�~��"�&P����Fw��+w$�߲��O� ����RP���%G�L��Gα^�!��u)7�{B �K�w�UG�+Ϻ�{| ��Ai����e4�"���҃<{r���K�O�_��u���'�l}�gu�'��������ON~�m����ld.�h�=�jA0��~�#/���|4�������[�]V��b[d>b�̲��� n� ��A�� �c�о�WĎ̤�m�������l�q��Xhߥ�[��l5���0�--�5&0��BG���2�֖=�ǖձ�tML�Yl%m�A�e�g�؝i3͢�H �5�Q�F��וX;�F*d�t$�cGlI���N5�z����BOO<~��Z-�����DF�-5�b,9M���#x�����x��)�&��©�!4�gϠ�� ���^�������̵�H#bg��R!=��?x�hr}{��!tww3� �Y��|`` =}}}�\ӑ�Ө :Eϟ?C��,�B�)t^���Nj�wuu1qz��8�Z:�ZN:K5��1�NԽ���NF�����롲��dҺ�:�w����0Sf��½� ���.>j���¤���hjjb�Ӹ�Z��� �.�f��9 �rODii�IUUU���&4���T�EEE& � ����D��c���1 L(++���j�(�~b}h)�QXXȬfc���� ���)f?����U�������ِ��5���<P��`,��&Z�hi�i"jү����p�5bg�7�y8��)�F��Y��F�GM9���qdd�����M\�sss�(���'EDD��qqq�1�)�JU����F���_7�'��'��N�Y�1&IEND�B`�PKb��\D���3templates/hathor/images/toolbar/icon-32-article.pngnu�[����PNG IHDR @{�u��IDATx^�XKoW>�g��MqL$£���veQ�G�mŶ� ������T*k�M�*H�J"$�E@(I�rb��$v��̤�;��Z8�n�|���;�;���=����D"�C�X4J����Լ^�av6������BDy���������{ڥ�N��q7̰���۷�<~�����џ����.�\.�n/�,�>88�c{{����2e2���a��!F9�މ��)������m���8�� ��l��[��q���nw�ί���y<�j��Qaȱ��'�������Y�yWI߯ccdd䑻_m%�mh��x����q��~�s�r�^�ό*/�4(��y��k� �p�vD�P��l�Ν�ՕZ\�@�5@�<H�`�&#=77����^���U�l������(���=�u��f�����h4���x�\I���92MS�b��Qrq�<߳g�g�V��^p0����{��x��X�;�d�mU��@lr����ju^�A a�����3L�)H�!�n��K%����S�_S,�B��s(�p�B�'N�qƻr�fl1�nܸ����y��S�����5���݅K�0�HF�#����C�p�T���9�U0����xr�����Kn>@r�\��/Y��/^P8!���>LSSS������D�m���4�ͅB�Z$U��ʡ�0 ��r-d� �Ħ�*`����N�$T>���f$��Xa��)���i��Wa����R����2��3�, �������<�s�2�"+��X�̟|�R����iz�k����sl�F�xp|~�$�-��Bf�a.!*"|^c���-����I�/ڶ���vl6®߀�GFt�+>�@,;"�L"4�H2��P}q�=v��ut`nUT�mǩ߀o�\�\��+ H��D�^�zؙ����K������\��:�L�"�M\�H�l&κ���R��X�;�{�:8T @�e�e@�^V��&9�3Z�m8;;C����7r ��P�K�Ny]��H����NYK� A(�cǏ�o��/u�ZS($�0hk+G�S��o�z��pO�a2M?�`��4�alˮ���`0 _хbQ��|�]�J�&�Q��^�c���FQK�'��i�a�7��x�a�b,0��V��H��7�@��U� �f�v 7\CL}Q5Y���Um������7Dž]��*P� �E�@ah�T(���R�O��P� �U�s9����K���|�J�E�� �>�s9k8����(.\���JO���[����(�fg�D�\J���C �#,��U*�H���Q� �Z-c�41��}���>������@�OC(�D�1Gh��Q#��d���k�4�a�����)�Հ� ��4H��Ñ\e�7��5�G�����e �.B?�@� '�;���p=��b�/@�7�(ĉ,�aR P��q c+P�wZ3ġd0( �$A�@ek�)�:��/P�B��{�a�Q�mm1��9O�C�@��c�a H�C ��˖\Z�T*�a�!HL�'R���c�-P�D�y2��d�����\<���ZP8�9Js��C��P�|h�@��8*�1�y�}!4{�QZ�1���=�U�ȝ�/P|y����@�*P� �E�@�{��V%�ʓIEND�B`�PKb��\�`*BB0templates/hathor/images/toolbar/icon-32-menu.pngnu�[����PNG IHDR @LP��)PLTE������������������������������ž������������������ĺ��������������������������ű�����������������������ؙ�������ơ������ÿ��Ƹ����ދ��k�����y�����d����尲�Ro���܅��u����ɓ����Ղ�����Bi���퍪ͨ�������՞�Ǐ��]}����s������������9c���ͦ��`~����Or�Ln�g������Ǿ���u�Ϙ�Θ�ϓ�ԉ�ʝ�����z�����i�Dp>�tRNS@��f�IDATx^ՓŮ�6@=cv�>f��?�����Q;Q�owU�)��h�:qȿş/-77/?���7;�����E[�����v0���wA�M�<���t���O�>(Cl�E��b�^��#)g��0�� �u�3�WH���f<�X3��1q�|������ �0����:�鐬V����{�,KSE4I�ɨ-��W��}[���:=����~����7�����﵅/���x���w��w������>��>�L��})%�&�~�C� �c�4��YG8��!D��Km��+�5r�+���Ahq�h� n��r��^j8 ��>ʪc�CO��*6�~0O��t� � �+Q�q�l� ,��](a*�q,�ɺC�y���$��@�R�ſQ�9GI9��N��zA��y`�w��w��� ��[E�R�<��ţe��>n�ʲ��t�,P �!�����i��1J!�cI�� jC�I���#P�iA%AO`LXRfvB�P��$.��Y�qB-(D[P$i��r��� F�l��l{�2[�g��,�|��M�!���&�3c����s�t��!#Q���_?�� �a�^j��RK.�J��M�'4]"���n(���}AYA��k3����J���P���p��)� X�)o:��ʿ!�%e�H���JKQ�Jɒ�iW XD(���EB�%H�G��F*i��IEND�B`�PKb��\����3templates/hathor/images/toolbar/icon-32-checkin.pngnu�[����PNG IHDR @{�u�JIDATh�홋OSWǝS���-!ۜ3�{(]ܚ�%q겙h2�'����@���T���f%8�&N�g�K^�x� �m����b���4���nnI�-R�6��I>�ɽ�s���{�CʬY3cf�`es����e�O���Ҍ�Z6"���H��N�L���o�b�d٤py0�yʆ�O"�iKP]�E���� d�CH�E�Ph���(d�S�V1d $A�u�}�e��!�H�yM<�?I�n9Y�3�`�vY>v���'���c�N4�@V�i����.�5"^d��K��g�O���p�c�ą��_�X�ި��z�=�t2z#!L���V�#J���NN�Xq�ua�A*C<i�Q*-��q��i�>��h�A��`�_�I���H5ǁ� ǻ�ۋ�7^�]d�e��j�q�zm_=aGd�R�Ga��Ep�t���_�b����M�#Qe��ҘQ�?����\��I=k�[�K�R��z�CX�� l�y�1���0��ĵ�dY�v( �ж����Ϯc*��6Y&��QM �n CD�wp�pRu"Pt�[��.��VJ:N�m�w&��������|1���-�i����l�S�{rx)��@�?��].�Hb�zJ��|Ds��K�߰�����p�UdW�b�R�����n�O��A�����_i�NP莂�'.GDA.6�՛���_����B��%�y���,[���R>\oI��[N�u�_���P�Z�(��p����^�%�*^�z���Mʕ��*�\09�� ��6��ܠ �\���9�i2�-�C�������c� ����7�L���hCCC�>��6��\�yn���8�q��sX��8�,KT�+�|��xS��'� � �� KKY����v���X�1Q?v���E�%px�ea9� ��YV�s�:9�����b�8�I����,��u�!�n�Ω`R0�)o~Na]�&��]�Ι� ��"�'+ș13�_�ŋ��n�� ���������2�͔�d�FFF�>�j����!jtt��Z���h4R>�������Z�������cx���w�@��B���Tss3UZZ�@nO�D�o��8Y��9G���V����X��G�����0�===�F�q���[��gϞ�t:9�<݊755ɱ8�Q�---�8��V��A Q�Nz�> �Vēv��K,�`�������˗/'�;i�`�f�� �ӧO_�5M�G����ݻG�ۏD��Q�p����)��午������*�������Y�=x�`#�hGG3C�p���S�uF[���s+NN�P� llld�XXXȀ�C0"$2�N�|���8�A�_��q��cӂ�!�}��I`{{;�s|r��dJ�Fv%��ϧ����07:A9�cT��VVVʧ|٠�伖�[�Ut�Q�f� I�#���h}}�ټ�<��kۋ� ߑ���[���ǁ�w�R�0�⎁��.���^�����Ν;B S���l��ͥ�A w�6�������m��-Rr�-���mmm��y�@H�����^5����1�W�k���IEND�B`�PKb��\)�W���4templates/hathor/images/toolbar/icon-32-featured.pngnu�[����PNG IHDR @{�u�gIDATx��[l�G�I�S�B��T!qU�@���+�E�@pS���)�J� D �M�D5% v;>�8;��v��aׇ��:>���i�g���N��=�gY˻v��*#�;���;��3�'D�@��xjll�P(t<d� �`�p8|�����b���O*�(�)i,333>�≘�����<�[^����劦S���h��C�٘����ꥥe ����ի�C۫��)�� ���8q��]Q!�=�V%A�����fmmM4�����c@�����l$���광?x�@t6$�}u^;>>.���c)&��R�w:�7�:uj��҅RW[+m��R]U%�9{v�55 ~�>���)~4<<�����+��7��������K����0444����$)��;w�m{Kܿ?������f����/((Z�.��ljl�V�0�7\����� �u��++++�n$�)����X�0�@m � {���^���=V=Cz�I8����ǏWB�uM��~]*��c�Ewڐ#�3�KK���3yy�y�ޞa���`mV|K�S+@�����6]~��m�����!0]=��(D���L{nvVnvt�������j��חP%C�U���]wN�V�5m���7���&��/�?/��>�--R�vKyY�D#���%@/|I� !F������ȩ��%�).;�����`�Qtߺe�575�������(�(~`� 2\�6�phI!�^p]��mmr����bŰ-//�nH6� +�F,�Ut��^�b!�[M�^u�� Y����P_/Ņ�⪨0���Hk�/.,����^��X�f\ �x4j�!�C��6��J��85��WB��A�D"1=���g��Jϝ��u���Rv�d�<i\^��2.� �Ӆ���ʳUS�Q�_����|��W�@��Y0�`iiI�eQ��Sָ<�5)"�Q2&��18EC�{D�҈8��T@2B!c )��J��Y����i�S��y1��k��P1aqr�{ x�,8���.��,X�W�d��O���}��2{��P��N��J��99��P�v.g�pF -)��1���)yV�A�r�yB��9��N(`;���Y�F�p^N��ʋ��$#���X��&�e��Nq�{��I(�.g��F�T �FG�NZ722���bn�d��%��ܝ ^.�Gﯣ-���p��z�y Cl։i�ߟ]~�K����̮����� q�bS|A���\j{ȐN�H����6���.��Z&Α�G�=�lf�i���U��ƴ �T�i<����'��)�< v�E��v�l�?��u�u� ����ع�go8o�q�zO6��Fv��ȏy�'��Á�c��s�O*v$�Cᬋ�t��:��x����I��9|��yѐ��pM ��$(��J�"��C 5{��%Aa��e����E8��%�|��@�5'b�8�#[�����a<�"��XA��];%}>�$j�r-A����kin�՜iC~M�lKS�4L�s2hϨ93r�{�;��%j��3�d�[��M+D��_�͖��!�J�-|$JP���pF�rM8�P�a3�6�c��7�;8�s�&�Æ5i���D !F�|��rjܱ;�).�b6��0�D=�E����c+W����9��А��A�+^��AJP"b��|�ĭJFM>bqJ����������Aꩯ�����t�ˉ�qԱqJ���bH���J����� ��Ç��P �����LC�g�_ܒ�%�%�NE�# Fب=�+^��+����絴$(�6�F��Y��H��_\\l�---V�ޔ'(N^��v^s�gΜ1��\ҴN�fT�\�B���T'(�r#�L�h�Jkk+��;� ��p'^�&r�%%%|g~���UANN��]|���#(�~ז�E�.T�4�Ga(����v��d�:AA� ~���Hs�z������Oǽ)OP��;��5�`�S�i����f"�p�%A<xJ�z!q�}T�?紜�Er�����bw|�⿓L�T�%zIEND�B`�PKb��\`�Q;mm3templates/hathor/images/toolbar/icon-32-default.pngnu�[����PNG IHDR @{�u�4IDATx��khU�5�����Ep E"�j�6mc/@j[ �B)�@�R��5��P����%MHmbX���t)@ ,mu�{���f���3��f���ζB'{��}�a�$;w�-eM�.0��4��^�W�Q��I4�N�쩵@`��)�����ﲀ�vX}�Ƿ���9�}�:�j%��C�_�\b��Q�P]@�\;L�_��2v�m-��Q�|����wa5��@*�*��ԕwV$}�mcT�!�yl �������;@��C���%��)��X;;rpq^qx/K1~����X�G�K�Rb�0飯U���!J_:HC/��d&��^���WH�@�������)r~wU���<��"�oBHd�_���B���r�g�[}����'�~���/���g(��PS��Y�pk!���i���v�d��Yn[@H�͏�E�G8\�ƓP��l� �WC@I�$]��6s�/��ǩ�?���_o�\�N�� h�uŀ�'6P��6S�8�TR���7Q�G��|>�j�tC�@�Ӈ-�U� ���K��+X��� ���'ۗ����:h��k���y��M��ى�!��#>V- ~ց���`C��܍"Th�p�T�cܷ�&�� ~�b��@��`k<�+�E���$�<� ���{�0���<Ȉ�-b\���!�N�^`|�ܹ�:�yKc�� �������d2]@K�ӊ�R���pJ&���f���T�H, `o�x��H$����V���Xy������f/�����B4CP�cԪ �p#���x0�$t�b|�[��w^e��e��MJ����v��_T$3� ���b1/ ��EZ܄�J(֧�- n%�R�s �z9@q�$t�9~F"P�TC@��Sա��T@�ô%Afcp�Nt�|�T�OQ�( �@Y0�5�|]��p��DЧU, ��(Z#�8���N C `G��@0��333&&&V�~`jj� �����.y? ���>� ��(��{4IEND�B`�PKb��\�m�4templates/hathor/images/toolbar/icon-32-calendar.pngnu�[����PNG IHDR @{�u��IDATx^�XklW�ffߎ�Y;������T&��@�!V#T H�T�����R�$� ?ʏ6�$"�/B����"�����()y�J��Nl'~��^{ߞ�0��Wx<;��� |�͝�ss�w�9��,������k�C���HC��`����c3�$�:�l�̔'�y�X�G;���� y��uowG��<R�Z�p<��>=���lE�a��-A���(j�.9i3;�H���/��CNW$`���� &�:�5���T!B�_��|�PQ�ÈEl ��!(�&�22��������� �qy���=��R�NBݴ�)� �Mm��>������׃�mu�����_!��!(ٿ% �T��P�$�8@���B�hq���ZsssV�����-E�� �J��ڦ�v����q�j��{��ʕ+X�d@0M�;Ĉ���n=d�:k����0M|�5�JH.�-�t�����n�= :��S8��p�oi��Q/~8��ߟ��wG�V�CKx����h��=�~8�.>��遟|���e�n���e���i�n7�Q?3���9�����K�z[��aU<`<�8[�?f �.k�9���u�r�Ar��w�O�u|�ASş�)�{�qy�!����� �B�Z�g:��Sm��.axh�L�20�n��oFV1�H8��kp4�W��Q"��c1x����IR�iY8�)�H���>H�Rbd3&���;�v�����}��#݀a���ߎ��Y��"�4�|µ��g��[P���xg8�W�8k���U����`->J�Ӥ�hȇ`>��}qڷmE^�1^��Z�"~5ЉW2E�tIf^��H ��5b5��t���r��;3M��MeĚ�H�4�d��M!ڭ<N�k�!��aX�(�.}��y�g#��mM��[��Y�vC i���>U~�מ��χ�y0�� �u��I�z��1r�D����s@SU��BZ���l�!�r*g�_[�j��_υP2�KK ��n�5��EU�( �)�;���R��n�z,��Y�l�ɚ�>|�G@4��q@UU�\�� ;����N���*��T*��B?�&aY�)�=C���t�\.�#��~QP3��������� �8��N�� @Z"��+C�}���*�������gq�9�"���Mi��X�jf�VF�?W��U���X�Vk+C� )���9��6�_E��Ȝ�f��A0���oP\�z��$IG�~?8�&ZS��]�&d�8p��Aq�ڵ��h�m�B�����tz����ܠ�w�f @>���ģ<�nho.���g��\��T*ayy X\\����6Da��|���\.B0dD�#5��O!`�B�Pտ ��[������y7(�-w93,�b�!�M�^���̳AAF-�L&c �V����yK�u&(�^ 'FFF`wHP+H����G�{��E�p�q�B7�dd�Y,--�>��u��0� CCC�u�nIe�ϟ���;6�@ׯ_g�s�0== � �h�ܹë"���3k^����J6ŗ�D�*��y��^�Nf����+c$&&&���ݻw#��#�JUk�T��}\���߱Xmmm�e���ޑ�ͽ��D��qGx���P:::h8dv] #�̼�g �}^t�o�Nk�=�ݢq�bMII������ZW��iPxxH�K�Ř�œ\Jƻ������yH��E9�Bs��mz� َ;j���D"A;#}^)�Y>�����q2F�(��s/Yҷq�r��;���NMM�w===tѠ���vSN�B� �4x#�*rd/�/_O�F�g.�����wبJ�)�n/p#�$�!*Xt���H����5��R�Ztc�D�WO�ڵ�ՠ��=m�|���{7(��n�>n'�M��gm�Μ9���ɓ'y���mPp4(<�埕X��Q��0IEND�B`�PKb��\i��QQ2templates/hathor/images/toolbar/icon-32-export.pngnu�[����PNG IHDR @LP��PPLTE������������������������������߭����������Ž�����U� ���M�R�J����O�_� Y� ���W� ���B����G����\� F�����������������̾ޤ��뮰�y�+S�!���b����pwuX�#�����Ӿ���������l��������ea� �ɇghp�˪q�6u�"R���L����c�-�������UW\�����UV\e�B���&&(\�\�0���b�&~~~w�'�̉!sx{�����j����Ʌ{�Nn�W�ĕ��~gy_=�����҉��L{}��慔���4@��܌��G�tRNS@��f�IDATx^͕Ղ�0@'\�n�������:��}��F�ᒴi;�o��ښ��]XX�>&��֫�</�u�`���Z�N�Bi�K��k��ؗ���r�k�r����j��� x�wswe�b��E=0���F�@WA�T��apZ�h 4,:������y���+;��cO]B~�U��׀�#�8�Jʷ�7��Cz��� ��7�����.�p.r�"���S��?�9��J��ž����q�\B#^����GЮ�O=A��"��Q�'@)wY�p��9/|��K7,�1!4Ͷ��}�nvukѲƁ��`��6w c�l�sPX�k7w�|�icݤ*8��� ����[�#,��$��7W�.� X���'�/��-#-1B�����qL�qlM���$��Ta���e(�V$y�"�I�DX��"�JA���8n�b�'4�H t���MF|�o�U�`\���蘠^� ()�͟ԧP�)1|��8�:���_�D����h"���?f��d���LR��k�H c�$XŊ܁$�`�������X� :���`�1�P�4B}3�M! )�I7XW�L�0�Q�f�z:�>BK'��I8����D3B��e�g`1BMA�p������� ���E�S8/�<3���2�`�f"�IEND�B`�PKb��\��5�. . >templates/hathor/images/toolbar/icon-32-new-privatemessage.pngnu�[����PNG IHDR @{�u��IDATx��YiP���Ġ;Z`��G�F5�!��+U��R�h7.BEe���]qD�7ȡ����<�sTfwm�y�.��j) ��UO�t�<�{|_�� �{�cq�cL`���)�`��>b|�0e��1������e�ʕJGG��|n�0.�/�{�Q0�3,�6˖-sݲeK���_-��庶�6z��5�zz��yyy@�i�U9�1�aƘ����r�%K����T�������֛7o�"�����۷o�͛7 I_�|I/^����V�~����`��.� ����.;;;�������*&z���LO�<������jll$�:u� p���dӦMG����5�����.�$"���! ���B��W�vECJmmm��:)�Hށc����=z$������f�|��A�>&�@�t:��SF�����s�6�!��B҅lA4$yii)�8���p�B�i�X��Ԅ�� ��7n�;���W�^E)%������n�+�9�*B�$�n݂|I�1<%������K̹��$�<99�AJ{!�AL���jD����e�����!ɟ={FO�>��˗���$&�������I�_������˗EB��ҥKb��ܹC�o�E"� K�v��)� ��ҍ� �7����q�{��y-�g�Х�jJ��4�m���v1�G��̈́ x`���t"��#�� ��,[�]vUi+��:���[@�B I�� Q�t*�2]�Vӽ{�(==}�L�r� �'��:1���#3+�CQ���PCF�7H�m)�_%E����d�F���_\F7x&�fB~~�?�H$@}}=�I����&��?�kiN���т��-�y��4?\C���dr,�,�������b&�`�R�?~L� b4U1�eM�,<���+�8�����7'��cu;}���Ɵo'E�M���&�i4��ir N!~G���SOO�l&E���H��s���q���e�̸ �YF�b�� �) Y$�>!!����fR�U��oM�8M[���MmV�����7n�fb4 �e$��D `}@�v�h�H�DB�h�$d�H��#N����DB�-2���~���J��v����+Q��t��5�T2"�@�:ġ���r~W ����ζ���\2J�Gv�c!���ՓXK>�4�'��=O�����������r� ݿD�v�浸k�Z����NLLluww��رC�t�R7ccc'G�Ê�����Z�I��MB�u��H8ZDR���y2b3���2d�i@@@>DpC�"##��ߟ�aÆhd�w��˘���P0��Y'�̔��cy �#��k$Ց�,#�;�<R�����i��i��_����c��������(�����i��gYDj{&EUv�� Y�吉����3i���fy��^�&�w:M�WrǼ��n�o��1��FV�DT~oQE/��E���}yE<�O���ͷp汿b��θ/\�͵إ�:M�S6S��jQGF!�4ɷX?�;���HN�gs�m���6�[3iπ}�{gO�Ͽt�k7U�o�K-�����gR����8���s�c�L��������z��H���;� ��X�b�oە۶m]`���������`�ï��~�o���ŋ7�]�֝MUtt��_�G�X�j�.'''����LT1ш��g���ٳ�h^^^=?�G�ؾ}��X�f�X����g,�����?�z��?PXX�~�������@AA���Μ93����͛������8x��`�pD��i����jkk�����{ � ��x`��?r��N�SVV\1�{II ��Bp}�4 65�͗ �� K��bWb�� �X����@��_�x���ddd��;wn���J��F��d���� �����-E.#���J��iiit��I=?���ݻ�� z�L��b����=����'���p�����5�ԄҌ��Z��'$$��?��S�N����j8�Z�n���������a&�A��45�R��qqq�������g��XaT�hd��'N����TJ�\�����s}LLLBXX����Y]vAj�ԣ��L�������0����g1 ��2��ٍ 44t�R����+c�V�2P=�w�g�#̆��������g�P<�)eQ_'%%Ű��������_J���L#IEND�B`�PKb��\N ����6templates/hathor/images/toolbar/icon-32-messanging.pngnu�[����PNG IHDR @{�u��IDATh��XyP��?*��qo�m�Q�L���t�.����eL���h��V���RiA"D����@�ʪ�G$a},��l�v�d���9��?^�J��Ӽ��q��;��9����{�G>3t�I���L �=�N�G�\�s:�#�!̖��U�it�$�OXL�*�k�{��6�z���'{�@`Ƴ Q�ϖ�2ɋ�oV�+�m�˄eBП�-��<����Ɣ��A�/��!���r�]�����6��|�a۾=���<b5r�tB���=S���Jϗ���+���3��}��\��b��WB����Y^5�#'Mt�e�C�ku�:�y��Z�ڳ�c���DJ��~d�7���P��!�1��Cb�"����*�6��[A/N&A��<��w3�tN0)��D�;��8��RN��'J�k$���1�9�����$��,�ΘL蟃�!�±"7kƙ�WG�# � T yHx�Z#"["[8�O�}��oi���c�w�xxc|n���u�:\Z-I�5� �F�n-:�BH��s a��.��Vhr���zGY�_���&������ɵ�����aloo��z,--ŋE���F4j$f&�{������f��f��6��^�ch����I ��e�3w[FF���[[[���KJJ��� �߿�cccX�9�0�Z5D�i�����8B|'��!u��d�}���_��ˣG��0yss3VVV��d¾�>���N1~���I\�F��N���z4��� Zy�ϣ�p"�Bؼu�V��ׯ?$�+W���HD���Z)//��a�I �B�Ft��>E)��/�_�F�3��G���� ����J���������FA�***���>x����n��}eCH^�E�����̎Q�n�@v��y�##-JR������<cKK��V�~<nZ�6��۷9��N��������E�|��i���'9�L�uuu���V����x*�T=XWW7N�cL>44��!XF^$�79�/_����=g9?�Lf��~ddT����A~��R+�U���7hj�ye\�(�����zЂM�1���Ο?/� 6�F�_�����k L~�RvwwO ��ar��q)a%a����+_�Z2�0{�$*�z!w����32�죏�L�TUU�ș��T=9�Je�%����_��7��g^�]+##U��!�b"�D/������Q!Ws����İ����i��Ȳρ�iiiƁM�V\~�"�3�C���P a�[�=j��k;�公��Ց�J�|9���y����t����$�SS/ #lL ���'r�9�5'5W�ʁy��6.Z�xW`�;e,��� T4S%p�Q6���7.�i�A&�\*,,��Dc��S��r��t.�"�/W��l{�s�����å#�sB����$��)BN悂B4�,��..o��b�Jv���8�w��n��$�c a���9s��ފhLJ� z)�Wք��L����QQѵ�^�Q.o��{��]*�z�� �~�ӱP� W�j^ d������sU1Y���0���߰O>��$t��X�'�#óT7%?���V���xh0���!����Vy�/��e��a��V'!�ad�L�u�p�g��^$_j3��X�?�h,�/���)��I���Κ�3�>�@:_��B)l�ա����,I8[��eu4���l����Gs���g��ӧ{����Ӝ *� -����ٳg���Ď;����������g����wabFDD�������ݻ]���LaaaN/�(�����-�)�122R\S�j��d�͉�;w���,g��������A'�1�XBB�8p��7'(̛���5��D%">>~����D�p������=e�I$�5�X��|s��Ea8''���033��gl�F�`)))B%���Jpvv~ls��|\g1��q`���dq/}����:SnN� �`2[�(����� � x��G��{�`��,� �b[�X�)��� [�/_�М�giN���M ��-ҳ�~�2�y�q� �ws�ݜ{7'��� �ws�ݜ{7'��� �ws�ݜ{7'����}s�߬��R��]IEND�B`�PKb��\��q!!3templates/hathor/images/toolbar/icon-32-forward.pngnu�[����PNG IHDR @LP���PLTE����������������̥����ޙ������������R� ���ꗳ艪�D�N� �͔��s���l�ݷ�ؕ��Mb�9��S��6�Ϟn���ϭ�YS� ��'e� J� ��,��<Y�"�Ƅy�T��[��[�ݜ�ă[���?��u��`Z���,N�f�Y�h�1�Y��ŵ�z�ʋ��RP� ��^�x�!G� X���@��N� a��ƌ��V��ͦ�l��{��Q�ב_�Y�.�؍��������N���w��T��P�̃��aS�t���߁�8��q�ռ��k��s�$��>g�@�����rn�<[�,��]�븮�|��j��[��I��:h� ��0��z��H��9���쓾q}�"��P���J��/^�1]���R��8F� ��k�:��ip�@��N��K����?��@��y��8R���E��2��n_�'��v��Ma���~�M�tRNS@��f�IDATx^͔S��8����m�o۶m�m{>�4iڝ��/��<M�~Oެd������<p����Ӎ�b���AS�'zm�b�շrMgZ���r�ꪤ���93{(��7m����`��m�̼}ׯ�|�f*urh(u��Ϗ��j7��=��L^L���ʓ����ͅ� E��7��_y�b�y罣�C�}����9���W��R�B軧�����8��Y>��x�*�=�)-�v�+��j��P(��9����)��h�*�j��i��QR��>U����rgG�+f���癩����~�HW~ꛘ����4��2/�{o�|�Ռ������d>@�|��b8�-U�j}κ������}��1��沖� oKuQ��35T�nX&���\oudddq$���sk���d���ݗgZ��Zf.woߪc�N�t��tϝ��� �~����]�of�8�� ����wA�1�w�qNB@`@m�8���I�������SڔS�)�6t��9P0��@�U��a2g�h@(ef�`�3�Sǎ!.��ɐ�pan`�XzF0ef���K1!z��b����� ����A}-@J�r�:*�(�� $)%��#�QB��+;���t�H � $<�Kl�� W"�mۊ Bba(���$A=���5�����ՠ Z/� iS,H���^ߖ�c���Ƙ�]�9� ʱ���T0�`~ڪ���2�9S9�-DE������<8�qIEND�B`�PKb��\��\JJ?templates/hathor/images/toolbar/icon-32-read-privatemessage.pngnu�[����PNG IHDR @{�u�IDATx^�YklT�>���k{���`l����� Ш i����Z�� T�����WJE�*$TDi�� ���!��e�1�_���zߏ��>���rE�4�OG:��w���9g�[2����f�;��#�X,$�)����qH@�X����m^�x�<x����S��Ç�my�ܹs�`Hz!��%0� �V,_�|�ڵk>a�� �N���cǎ������/������V>/�;��f͚��^���ѣG�#�ҥK��Ǐ�o߾.^�،�H��!@p��v˖-�}����H[2����^���?ܿgϞ�1�E��J K����R�s��]�-�UPP ��E"�|�����/`�Ix 3#����o���/-\�p����p[Mj�����4�x�f�� ����{�W��J���P,%�TZ" M�x�4�D:#6-)u%nI�c2q��{�s�Z���ŏ<��wap���.�p@�xJ�фH�xZhZ6��!�-ۗXH&W��'/W�������1c ʃ�=�﨩���1y�"]���)��/ׁ� |J��v��*�_tp�i��cǎ^�&%K�,�iƝs��������bQ ��v�oc�<���2�+����C� �L&s(Ο>}z�38s�W|��X�v�[d1��<��X��X[�g�5M�S��q�"`����RUQ.CCCr��OZ{��9r� J�٭0�O�{dR]�X��R� ��4t),,,3�@&#z����Ϋ�#�H[g�\�J���AL�v��"R[U.�pXz�"ɸ�t���// Z�u�e�ԩ�攊�VH�M�I �R?v�,�V/�Un)u��e��htx�6�%8c~�K��_N�=/�\�]�[�=�g>�ˋM�Hsk�,^���t5P �ߵbŊ�JfQ��a�`�d5�_2"�Ɖ����.Ⱥk�b�F��]-`�h�"�Ũ# �����[on�5�f(ްa��u��=a�ë���Hnn���r��S�H��@\ZZ*�"�lɔt��OF%7Hj����w�����8��o�}V��QݸqCx2z<����t:��������V&^�J\�W�J{�X�),��3O*�CbI�$�֬������}M'ZI@;{�l|ժU?t��fЛ�{zz�����YF���q]^��e�],���˕�2�)�� !&G5�d��I�ŗN[�\�W��@�U����ࠟ����ctM��+�%|���!i*�(�C~��T�H4��!�`�.���U���+mxb�/�U @mm�Wi@�y(�KʨQ����}�B�B}R���*�f�$ 1H\ILBJ��t2���0�<�Y�NHQQ�q��>� ����9�� ���� C �+-$��&�t*���8.��4���h'�Z��� Mh2����<���e2f�S|�\ �l�"$�xXJr�ҥY$ �K��P�V�\�I���>��Ε+4�y5^�Ʉ`���ׅ:���3> �d�x�A�sڐ�9��!j���W����{?x��'�R�z�Yd3�E����~�]� qq�\g�e@&D�%a��q��Kr��JQw�)O,�~�H/�1%�t�����o�9ݎ�� ^��:w���6���Xo�h�z�X ��v!�A��`����Akqy�奧70}'����F!q���S�2�,s�ȑ2�+;v�ț˖-�0{��E䫐z�XH�^19�S�����l.��d}���#�k�x���'���5.Z_������+\�\˺8 i=s��Ϩ�OfІ)d8OA݃ߟ�%��G�G��;�~�n�s��/�:VI��P�i:q����lݺu�Ds!ņ��$ ��y�{�iӦi��jzY�٧�z�e�ʕ��͛� ���~�;��[@���{�������R^^���ظx�ҥC]�iӦ1͚��`���Q3f��r���?��hh�L�&M�Ԁo6BC�̟?��#s���>d&{q֬Y?⩨��M�a1[YY�"g J�ø�y)���/���s 5<�_���11An7Q���Xjjj�y�ĉ�뛄��r��ʦϙ3g���G�~�F��b1�p��G��Ɛ�H�n��p2��~��h$�\�1i5fKƚ0??_p�����(y ���'O^6s��?@y��V J���)�����(�'T-H"*�!^P�lnn�̸a$�=�?��ѩ�I������nɧV�gbCp5'�A�� �̉���,0Պ���L�)���d�Db����t �}݃|�JC�p@j�ܧ��w���������l��8Q��,pn#�Wƨܒ7&��B����T@�u�R#H"+3��;��`�pK;;;Y=q�J�ё P�2fü!E�ħQF27Y;����n9s� ��������+���ͳ¸q��QzU��^b(�Q�ce�̖yEKP�q+����pL�3�d��"�$>�fU{hs�\��X%�������� ��4CQsһH�s<����ׯo߶m��؟V����D�Rݴ ���<���C e�*����6�oĝ�נ�Cv�a-X���z�VDN� �*\)��r+P�9n<�1? Xp�߃��g��T9S{VZ0�/'W�� �^��6�����M����S�L���8,8H�&�c�fU��� ƭRb&��v�5&$Q�I�p_U�cVB�|�f~G1�)�[�LAsǸ��8N����N��ի�l���1��8W��~x����@����Чu�kN��D�N����'���W�Z���g ��]T�dK_Wv`5�����3$��] ��!uwL9 ��21AF�Հ c!�ϭ.'�T�h��ҁ��HWWW�g�.��u��" ��w��;��(����vg��i�\훊-&�!����d��"a������r�p5�K���@;�p0= b�8v�iYʜ;!^]l��%I�S���y<8��c�v=.��^�z����M��/�赛�L�I����l�r�}�ZUIEND�B`�PKb��\���Wm m 1templates/hathor/images/toolbar/icon-32-print.pngnu�[����PNG IHDR @{�u� 4IDATx^�WYl\g>w��o���lN�qӤqd�A �ByD"��$RR�T�/��yky���J�@",�SP%���*(���&MR�čw�2��;s�ν��#M��u,��;'��9�;�Z�y6� �!s��_�i���� �л��cdZF 4�4���A>�tt&�L^�@�i���t��7y��N~Oֶ��vt�G� �Ic��Hc���43}������6��q�C�}p�lF�9YꬎS.�%'�S�@����C�i�6*x.����5��u� u{ɏ�:�N�H�LӀ4���|�uЦ���������(�w�u�5� �LM�����I\����b�H�vv}A8>1mW���Y0�nD>�w�����5yǥO�S��l�kp���kሶ�<��涉[3��{jN��7��Ig�+/(Q�j�̦��9U�?���D]<���;a߷�z���d����ɿ��إ��/�5Ut{�6 ����~�����{��� b�#� �P*5�Y����G:��hmi}�uC�3gu�zS��o��/V�2^��X$"Z���������i��oC��J* �U�s���YiIJ �!Ӣ�[�t����ٹ�������D�����ngv�Q@}��m��5|/��z,!�<��4L�a�]�թJ�ΐGbz�H,/�` S2�����[���|ʅN.{�`�MX�u�#wK���8\�4��斨������ ������d{HD�y���Xp)� *+Sx�P(l=�a�j=e�P���m �@҉bUd�:E�! ��Z1�Yk�Z�D���Q(��c���d�r]�*M��6q�q/B�`��ߧP�c�P��!����'�A,���-����oS6�\S`�|�� *j�@ĉBs���4�Z�5�<��"�^�t i�� ���K�+�� �$c;� �vz{��fq0��4�aqIw�@p���V�����u�]�ٜ�nDk�klXQŧ�,F#�#�\�� ��&���f+f-K��B��\��:J��6"e�G�<VA~�!�����3OseJ����@0�Wc�i!wʥm���H �.��ߒ�<W̔����JV���mܼ���� n�L0O�G�ur�:��Q%H�&`3pA. �q�*K�O�6M%\����s�@����P<QP��uZ�9(&2�1z���K`��u?����@D*��������,�!C�hfY�%�@��j�:��{�r��0�@;�mJ�Qt���2��Ωl�� ��w���A�3;�)�BSc#422DSS#�h�H?����흓��n���K�aϠ+Y�.̆�g�&�gn�t�JE�T���&�>M��Q��]�ё��яq6�Q���p ���M����JA���/��~ᩍ-�Oj��9��{�h���R!�Trjg��[���N�~_�� ����Ը����I�]��k�i�JQ������KO\�1x%hh�p>�������,�0>:��p���"j��BT����7ι����K�V ����\��lRC�b� �0�2� Z8y�'�hNr+b���b �3555S(V? ��.��,���� ٧�������(l��,�y.�+�eAiТX@�7 �*�YBF�T���0�T(�� ��;������C�z���%"���n���1;��NT��~����{��L����i��N�irr�����<�p����7E�j|k���Ш�|�����5���M�`���yN�1�����r� @��pY��Z��l6�\_.--ٖ��l��t5���2��ڟ��ϟ�d�!t@0C�N"|�1�K�.\��Y^^�����^�S�Z���ŋ��}f�2�����m�VOO.���{��1�mj�._���mڴ)~9��~��^moo�?`hh���˘<�ŊP�ٳg� x�rHd��r7�=������D����ŷ����n��� � ���0ўN$'����>}��`S�p, hj�Xٯ�����5��:�-@x�7�"�F���F|W�K[��bwܱ�2@y���=l�2*�^Ys��x�q�g�1I �S��\��wC�=�!���2���-"�b0�<W�x��P�R�� ���3&V ��+Z����J��I<����"����1F��IP2��� �*�xUU+� ^Լ��b�����2==M(j�w�^$ڊ��: >��4+�w-Fbj>�D9TR�,E�i0�� �ni^#=�wĉ�U*di,8W@��5�-�i�3�k�����R͔�P���!���fff��� �4xYu@I`ʥ��������1Z�|js*�R}ee%�NG���\ٌ|�`F�F]���$��joKK_N8�����a5+`F?�1��|��s~~�-�qÆ��bF�e lCC���},��o��q��q�\`A������a���͛i��y[[[�СC��ǥ�>��%y.c�'N��yΚ�����%(�ć�?�����?��:u�����_<ʾ�Z�XIEND�B`�PKb��\���ll3templates/hathor/images/toolbar/icon-32-unblock.pngnu�[����PNG IHDR @{�u�3IDATx�͘ LTW�� 1Mcc���!ctk��B)@���:�V+�h����]�e-PC7vc��¨�����X�Z���Ɗ�(t`��_u�]vΞss�d���v�%_�̻��s�0sy��� h]��ye�8�av�����A{R����n�2�yL���ь�����r�?�6�Z �O�����6�I̋��\�?*�����^�B�o�2��A�9�μ��q6�+^[ή���f�r8|��N���>�I�/X�N�<s��bE�ĉj����Ⱥ/�!g�BÈ�yg�-Z�$��(�H��Gk��WdE�}>�r?xYw4BLL2oF��K��S=4�d�S�H1�X䘠Ɉ��EX�&-Щ ���UDV`��+�Ê��q��Ѥv�{�� l6a0 �p�m_�ñ�Cp���7����BH��MSB쑜P��>_' �{� ���.A�U9000���044V����j_Bٓ�a�RӼ�����ĆP ��=���'>|( �EՠXUH y�o�$�5�U�2��C$�#��_����^���W������,� �UYAVI@o�,��9�>��U��@I}1���I�8�����ҿ�%�%h}�߿��-��� �c=Z`��w��g�B�'��VX���U���o%�*�;-Pj:�$� $"l��E �������\xho/�p?�@�G�}�@r�K�d�x�D}@w ��1���"N��#?�غ}�Qص�MO�@�'�$�9-����"�d/A�;��! q�{X�>t�B!���GB?LUd�?�?�]���ÐR�.�����X��T�A��k�@��-u ��|� ��7i������ۛ^�F��5 ��gԐ�R���-�h����]�V���?-�� �?�v�To������^��N�$K����'.�\ !��� H�R��Y�f�!�����b�^�'٣�b�ӭ�8��f�K1^_��4c���% �(�ʯsI��$��+�����J"<�� -�1���ؠ��v�[�QpQƐ�� d �42���~a�T���_�n�7�� �ɯ@�^�̩��=��l��0vٜ�}����s*�1�$l��q�����"�H�Wp��� ~ޮ���Y勣��R�g��q Q�×s�F��d ��MckO�yY����1�$ c"�Y��X��9�Gt�S4�al�$K̤`����3/�37n�Ǎ������q��48O��^@�p!3��BS��g�%����.�m���;2���v/�����ljll�g=�6�w���]�^Ss+8CcSK���yߘ0�W����a4�4��G%�'�7��x���9#0M�3�����F+�aH���Y�{�VLVD�*p�ƭ"&�RU��Ճ�U7@�[�u�qk���n��ꆶ�v��X��X�$PQQ���#�_��� zzz��;p���{���D(�b�0HW�0"��etvuAwwt�$��V�բ]��ǫT��UB{{tttb�I�+q[�FM�-U(/�Q[[G%f���J��0�qh����28������,юU� HKA��6�|�@Yٷ��hiiA�6�hU�@z�m�d�o��dE@ZW*-J� ��H�0��F,P�Ej�_���YT���%:ŦƵ���O�^I��8�P�B����ʍt�0��p�B h�2Jg�~�G��Ν���j{ ڐH����g()��b�Ȑ�:}���pUVU�w}��f�Qs.�_�vMU�N�<���cp�u\t��5&������:��qf�rk��*((�!��VD?���{g���1�K�(�3���5�O�Oggr�ɳ����@}ȹ���8ߓ��]���.�������1an�p�df~����>ʡ��:M�xζ��S���;��s����iZZz9T�@Ϩ���rʩy<g��l�,B��0&��|�݃�g�B�|���U�xN�9H��,� ��u�6͎g���x~=�ۦr�I���_w CC�IEND�B`�PKb��\�h���5templates/hathor/images/toolbar/icon-32-component.pngnu�[����PNG IHDR @{�u�XIDATx^�X�O\E��ܻw��R��!�45���h�c|���'}�?@����o>�`#��D�I�Th�RAXv�_w�\�L���ٝ��m_8��ɜ��wΝ{w�(��4��)�O�<�k�q���9�CE�z����%P «�*�BѤ�e8���"�s*�?X\و�+�ce����_��g�"��c�t��3�������p��3��;H%��`���@�TA�d�!����&q�h�@XHa��#����d����Ú��~ �exg^���?#q� �rk��h��b��u�D@����_�=����I�M����H�ʹD�������f R�4�A���d�������!���z}y�ǐd�+�9AP���0�}1�X;VB F����E��� ����/e"p���A�<O������ϖ�:� &��F(�bz�g�<h@�|p� o������1�s:�O~+(ma�"�|![���,�P� R *\`����F�}I���z��"*f B�Cp�@ �S>�g}�����@o��l��R����� �\�V�A�8x(���I��+���U�����B�e�5��r�ޫ�^!�A�):Ā�ǜ�� �BN�r1�c�]&�_��+0 �?vt�� b���E��FE(D(�\���ŔǷ���2G2�p��c� [#�`m��#�ܢ�s�T�X� Ґ� ����%���*�b:�E�+�T p�c�I��n����c(E�@��D�UABZ����,�p�3S'�y���j�z��P*���p~�`8���^(�M��i_lj��_o-ݙh�kh�o��_>w���ㄞP�4%��,���B�+�J��\�T�U��Hw]WƅЍ�1�h"�@__�l����өh��}g��@�rSSSh��z��Z˴�Z�Hk�u�x���x�vE@(�N�4w���n�P��i��7��P߄��R���:>"pD��w����4����L&S��$����fmN����5>!Y__�������i2N�<���eМ��n��[[[���� ��;���O���'$�JD@�r����^loo�} ��҂���J%����W�aMW� @���N���cxx�R�'NPm �͂s.��r�q����������/'J��ԩSf HbR!��)�� ���G�G��Dƹ����e���ՄǍ9u��q�+�17"Ō���(��*W1#N����yT�j�I@=�nnnmmmW��`��M�������*���-R�1[����'@� �����̌$�N��+����F`LF�8�Cc�vT|�LW�\!2@{�$�wwwi�T�*@rc�$p+b�����W�_\\4�6M���jc�1�Z� �h�#��*@$�-x8Ps\����� Ц�mU�ԏK� h7}=�9!�Y�&�㪠j��%�Iڈl�vP�Lj�h��ꢗ�*�þ�m�ts���Ք� E<��H�֬��5AJ4��}I};66���qB����j���e�6Ւ*�P�mHWEL`�&}A�E������J�����'~BB)���'uB�>� �f� �� �c d(�IEND�B`�PKb��\�d2� � 1templates/hathor/images/toolbar/icon-32-links.pngnu�[����PNG IHDR @{�u� �IDATx��yL\��o[5v�%�m�%u�,�U�H��ժ��ʩ�4�)�U*YU��imSRl�m�1�`v�Y�a��0�m؊]o��6���<n�_��<g`�0ح�HE��ys�{�y3�Q>V>T�b�jYLU-w���T�?�:���k��.8��/�W���1��v*B�jºX(��������m@����o�T���G �3���<ע����ٹn�f~��]P��Z��6�f�j��"T�T�(T�9(�U����QP�����L� ��Kؔ�F�篸rm7o��o>�nj�*��9�Ŀ3:�^f���ud��S`������<���!q��mܺu����;�P�/�5� (�ˁg���Xf�f�si�����ݲF��߈6�(fggᛠx���u����~e��kS>����_�����u�b�cx6��SS�v���e�VR9�rX��ꛪ��+�2x\��MXZ�ײ�Q+ԑ.��q�x&щK�/�ʕ+Pi=�F��ho�dʦʮ�ctd�A�k���G[�NԶ#���h6&�`m�����'x�W[��/� �7`��Sœ�Y���ލ[������|�wJ)ޣ�ONNbOy#T�ȣu%�o��S�w�ր|�6�<w~ny<6��Y0<<���Z��������R�Y�8�10��T卯Fg��J���m�Q^��A=6챠��Eoii���x���:�:��q�Jw�6��T�3|�^Zp��tww���Q����(̮n��Uu���?�Bb҄��lwz�L��!<�`��� �� >�^�~(�NrT<�9��:9z�R�蝕8��52�y�����Ⳛ��?���kq����|��>YY �����s���ǂ�~l;l��c�nX�oh��<���Z֬ͱ3�����CqRl����3���$ �(ԉo'T�'����� �}3-�C֬I0�/��#}�*m�N��^��v)8�K��沨x�۱�T�v��J�]�˚5裁Q��3�.Hq���Ap��f`aao$���Rl�C,͝����Zf��۹�32�1O@�xb� n�U)�u����u�~-S�R�4���ۯ��X�xzO1���E���R#�x�J]�����8���]��������Lȇ��<3�"j����IcR�X|=r�'Y�æR�i�v�`��Lė��wU�� ����V��8T ���{x��Dg�~��3�ԡ�d@�q&�E!���O��~��)�p-3y���-���<�4N�+�Tf#��"rA3�hc`�>⠓���y�s�C�%.�P�D���]i�U|�]%S�"b�h� ڗ���38B�)c�R���b��Lx�|�l&/��ԋ[�R�z�H�>e\��\R)�N|���y�Im�[��J~@�G^ 1�3�1�,�1�A�~B~4��O�M��o ��)y��F^'�X��{�l��A����7��`�$#�S�?8i�y�|�|�|�<�����k�K�su�,�����%.��)R��d��dA^o�d�� ������ FGGW!�γ�'���1"L$�*1��Ą�%���]���10���ɵ��uD�^/zzz��ڊ��z��ա���`<C��c�8�5�� �͆���?p��y�mU���~�D��d]�f3������uhoo�l�D�0�;%0ǵX)���nsT�l����N�<�`���������� W��u�J�UĴ�7���ѵa�"�&A�tvv�Re�E&Tѐ�d���H��0�?�B�D�T�G��x�����Ae�nO��ཏ� �����D�h!+���'(���ڝ5b.dmX������yWW��^����_P���x�N��V�C�/� ��."��ѡ����*4fV~nn.�����f�':�w�r�PRR�4��Č�ˣ�:�](7[d�R�#$������Ȯ�L&y� �<s]�����j��e�g%�VNlkkCqq�����,����s�r�&*�����+8 ��z�&S1k�pU�͔��G֬�d�� ���U.H��9c1$�rb"99E���d�b@֬I0~��+=68Q���Pw���'ťW��l���&"�/�ڸ?�����r�?P����b���f�N]\ �b�H-Ț�0��U����Œ�L����z�A��.^�tJ����E�^�?�T�ф��;�aѭ�0��J�d@��5�0��]���pW6y�����ň\;X�999(++��O�ǹ�P\v.&�d}�V�-�^٩<r,�PL�ŀ�������8������T�dԑ�2OD�%y���3wm��@�H(�91�<&�?��۶m{+))���<�%�Á "����cǎ��P��������ٛ��PIEND�B`�PKb��\r�A�� � 5templates/hathor/images/toolbar/icon-32-new-style.pngnu�[����PNG IHDR @{�u� ~IDATx��kpT���OL��]GE�qm��~hSն2ОN�m�2�S�ں3��Zu��� �A-(�[IXC �+w����l.K �\6لM��\N�Mvs#�>�'��=�P����&��y��{{�s��O�*`�0�O�~f4²�2�K ���� ��N;��v��*��|�=V����Sq~��������|�Y�.�T�+"`��2'���܃�3~i�gq*g�Y���q8��0���lI@��ߠ����v�K��]���wTb�kR�o��m�����_�P��+��߆ƦO�->�E_�<�.�>�����֓v��'�.��� �� �ro�Bۻ�#XSM�[�h��>z�'�i�>���Je�.��/��6���h��%��(u܇2���4/��j6?�<o!���?s&m�DWތ�� �1����Dd��7�����p`��A���;Q��b������A4�K�N�%]�&�{�J���rt-Q09�]�CSǐ#����9����z ��6�W�"�F�%�m)���*^�`⛦����?W8�ۆ�w�Ә����"�Wqʗ�A���:^Wv�� uQ�I���i�� �Z,�S�H�6}t�o^g��B����\.���!%��=V�n�~�r�����^Q��s/˨�} �?B0퇨_p=햔��U=m�]O��p�� �5a����̵/³l�����T��Z�)[�\�<G!���hqވP�B�q�ߜ���l�4Us��^��qƟ�t:���Ȯ�a��]�?����Q�a�K�'�S��5�à���r���mm&��G>��7=�:�K]l&�ǰ)E% h{U!�l8��F��`pr��C��W���n�����@�\��::�FMD��* ��Mf/ra�Ӗ�r;ry0e�?�R�����7R���9��u'��Q5V���_�ӡv�ҽ�X��_wV��,��TBh�B<�����u%x�<�8�/���J��2 f߅�W�c�d�`K'�8������C��^F��Q'Gr�B<�O�0~�ڋ��Y ��C���<<�U��6����M����u������CF�_���IR�����o��X�r��v(�&�_�;����� ��D�L�%�+ۉ畳�y��K��K���u� �[�ac���T�4g��Ĺndy��VT�+;���{c/�{,X��-7Y%OV�d��Gf�e�Z|mf����{��pì����6<���;*� �G�Q���Mko�p6}���78k�ꜵ�uΦ�&O(�� V����[��ۊ�X?RPXv����{�|{����Ol<�s�oGg8����% 8���D<z{;B���֡��U�jTVV����B���d~�5ؑS��*?��ը� @���V��]�%� [���ӫqV�]]Z{g�&�#����;����v�}ֻ�����u9�;:�NyN�Z���#��o���oë� �?���:*6A#,�v�d�.8�P�A�`����T���sp��A{��Ç��K~�1�����_Ż�WVV�������'O&�>}�-�!"��{��E0��!�p��)� b*��!.y�vYJJJ8@����F q���|444@.�;w��xP�P�.�>��'N�ā[4�#77�eqf8�ummm5mV�3��_��|>����ѣ8v��G����8c`�E0m��?��)@F��"����{�n�ܹ� ;;�b;1Fw��Y��g���`�DK2b��={�0�0���fsIZ[[���B�X�-b;�߿�"�طo��l�����ncI��h<�0�]@\k.���Y�=.t�M;00��O��h�� �"8+V�\q��4&���4��mT�?��,��#�xD�A9+1�[\�M������bhg�Hخ��_<�i�@�ؔ�b�5uIӏ�z%����9J�Y��X�H` �floog��1� 1�J�c(#I�k8 bar"999���uI�~�܈� ===,�FQ����Ly@����\c53#���S�6 `��D!�FY6l������Y � ��H� ���aV� 0��|?2h\B����"F`�������[�0(���p8��}���L�&�L��F�i��F�{�K��H���z b�� N�.@�8��8j��F�1�1V�i��Ȕn!�Yk��$�]@L�B���$��f~|7H�+����{5Q�Ol�$��gºG��#g��]����2�>b�p�rB6J��v����wD��n b��0��W�%��WWWgP__O�G�̎��%� �(��b�0��E9�&J�)�l0�� �8.�פl��?��nx��P��\G����IEND�B`�PKb��\GSI�EE/templates/hathor/images/toolbar/icon-32-css.pngnu�[����PNG IHDR @{�u�IDATx^�Y�O]E��}<~�<Z mX4-�RӀQ�4.pA����6��vɢTY�T\ 5��֍�馉ЍnL ���G)�7��&��ޙ��$'sϼ�s�9�0s�!`YNS��d�E����;�����-Z����544�C�q%����o�����A0�:�H�� ��x��yW]]�P��W��g+`߅"6D�!J/��^����K�(**R����|N&�����Z x���|�ʞ��M�d�'�z�J����!jO����A���!++�P�9����������' !�j������M�[���a]�@�&aii)��ʼ�" � TI�T�y����|��26�,��8�ڕ4n��7��m�)B֕/9�-m�s<�$�A*$w+�>����WO��U� +܈��_���VU'[����|OREdN �mD*��?���gFQBo4"P~��jPB���n�=4��ql&��t������� d�@��v7Bouc��5l�Ԋ��n����?Bbj��{@�\��*B��& >� ��>�ҫX����!X{�W:�a��/�!p�ўc8sp�N��|���G���=l���(ζ>����(��G��|m!�:��C0��ך��FB�On����Uz`�� NDjtBp���'�t^;�\yn�����[1_rN@�'u���>��V3==-�s��J�ZP����"!Z��|N�(�xx��B�/� r _tQ1��� n�$��<�'�c���UH<7,��K$�����08����������ﲔ�8�8[���?*|ÖW�N|n�ir�����۷oW���50!�!���ў��9�u�3E�j�y��`�����ںD��L, �P��0�Қ�MMV�L�q��� F��~��;���Of�BlV����Oϟ?���qz{{!�����:�/l�����G{������>7��H$@ZO&t�̙ȝ;w�"sb��'� +�a�Iͼ���S� :3�"��ı���\C���;���w� v���YŖ�!��x[F� b����X�+;.((�<�تs@�x�ɍ�y�G��$���\�Q>R�ŋQUU���BP***h����c��f�8�e� �[i������(�d���6[���6�V\sR�,--akk�w>�L<^�a�kf��X�@'G`��eL�^�MMM��|�2�1���A!���3�A4����\�~�׳<199���zz�����/a��x��%���QYYIv���w477s�aMA��㱱�;�'[ZZFu<�*��cR]]�}�k���*��{dmv,��B���q~<Q��$ބD��4^������|Ѝ��NC}z.��W��ۗ zn:�����e��/='i�L�@I��۴쑽��`='�c�r=�W�o��GT�455=�������@oh0d� s6횓8� � :��E�9(�,�:�.;���TK�� �F�V�.=��'�wN��IEND�B`�PKb��\�h���1templates/hathor/images/toolbar/icon-32-trash.pngnu�[����PNG IHDR @{�u��IDATx^�XhG�fv�WR�&�x��J�H��J�҂�� ��P�[� R ���6H+��0��&F���X���R�i~�]�K���L� �����C��N��y�|����C�f+�(�*D��{���]]]�O�<�u{{{�M �!��V]�p������3�oߞ;{�lϱc�~:w��w����7��˗/we�Y9;;+�<y"����7���`����G��D�d <��͛7����`�6��$�mۦ���ñ���oN�:u@�BM��(_4�g�;�$7}�gK�t �y�[�[�N>��H;�݊H$�D"�R����! 455���8~��;w��+r��t$� � ��֏?���D�����\���.�� |�u,� ����5�-,�,��cɊ��H�~���3��Z�V.?�omjy�Z +pm6�WT�/�- $�,`�)����H����8,;;A$^���:$�� �ΚI+�",U[_�a=d~V>k��b�N��u��4e�U�h,�G4�@,��av|��㬯0���H KAE+��KEpRE��-U˵��Z�( .��wKR@��SȞ��#y�ףu�؞l�S��Q^����,�����s�5�������[p�ŴB챜|<'�c��7�L���`hRB A�TL@�.\�BR��1��p�+0���N�"'W+��M`�^ hAf[1c���h2�$����R���P \��5�Q�خ4Ș��^P�3��)�p��h���!�%�HƼH�`�cB�E�!gO� "@ �¬�w�g�N������m�H��� 9�=����kH�����48{&4H��j!������O� ���Q $,00�H/���w(��9�\H�~�-�kJ�|���ԄNdŻ!�3�(���(lPxk��-�x�k�JIx_��� ��w}������B�P�~�� �3�ᗐlqq �C9�+��P���d�´B!}����mW�h�WP��� �9-����,�=�;�w�7�ϛ[�t���o>�s���a��KҖ�'���˷s��AǞ�^���(��^�^�N�>�Q[[{����͐R���8��9��Ą�������R)��� ��]W~:�B��2��|�q�F}�@`iiI����Կ��i�MMM�{�d��S��}nq�X̟� ��yOO�������@��*>66FI�7c����Z�[�n�S�DF��B�?�xJI�[�333k*J��3g�P��$G LA�^_�@�ʙ�j������}���� �)�w�Dd�:_ z�J˘���y?m�����ŋ�����QO�-\^Z5�_�ޔ��q��/<x���9c$�3�5"N�555��z=�M��o�'�6���w��b��'P��<ǪH�!���`�w朇U�_=���MS@Ϫ�'�oT����>�E� �@�5�/�)��D�{�#����T�,K���(oaX� �+�O4`�@�T*�� $�[�ϱ{��P�<�7#�3NV�j�4��d2� �T?��+�?��z��/���P� ��C� �i�����=�k+��6۶��V:I�aVݘ099y��������'Z�]o�"R�@Β�*��?^��s����b���HP���I:IEND�B`�PKb��\�ӕ�# # 8templates/hathor/images/toolbar/icon-32-delete-style.pngnu�[����PNG IHDR @{�u��IDATh��ilT���'�4M5AUM�:m���&M))�/]R)���UU�Hi�&��6 �+�)K��! 6�C�HF��/���/c��=v���g��9���x2I�"��{�=��;W�����Q��L��t�8 :a�"�! ��CB �� ��>�.��'0}|9�O=3�ɟ`�m�K�fݛ9s�S4e�S['�|Y�~&��\��K�#x��ڿ�yS�r$ ����?Iy-T�����^�<aItN�_����a�r?&� 4m�"Z�?@_�GpW�ȴ��ދ�T��u�|%�x�]a��u,�1��| �,�� ��x���{����G�UGRdZ,��X�����8�$�[��Yi���7�j��Bԙ�������b6��w�� ��*\kw�܁52-��Zl���/h����^5 /<�� �I���o��e!��ŇU.��g?;� ߶��%�c��f_���܃K� �(�4���mz������Q�Fy��w+��1vkL�[�ӻM�B[!`��,�D���t=��L�+��A=��8_ӌ��G?fF�nyK$G�$��K�+g�#m��N7!0>���+Bߖ�b�F��](nw�}H�+�{���ܬX����7 ��A�T�]�BO���|ݛ"<?��7���I���eK5���1��ѭ�G�i�j�Eih�0 �`���\�A��S��.��%���GҺ�~��'��r����DǠ'k���Di3�N��Sp�B#d}�= ��`�I��za�ss�_̩������)��а�V��4�B`�o�]��pS�$ɕ�����7~Uoں�Ҽ���k�5;��5����I�1���2ܗ*�F���5�~N+K{��ذ�?<҆��Z���4�I���xagr.9���-���)"ɽJ���g�|_��g ��^��f��� (OK�j_A�+2J�<���e�E�mϮU��I"Y�[��U1�_�[�ҵ�"�=s��g��eG+�B��f-�hY%�k)B'`�����W3�ͻsn�G[�3Mb{=A<�ˮ�-�n�0ծj�j���݇� s_���~#�8/N*/��l}u�:�6ؔ[:��S��,U��� kI�� �'٫\����"ӒM�Z��l:�}G���I���а�� ������S���T���mnw���֨9ʏ�a?��0���Ѡ���z�n[__�������;�\j��;3_봒o�LLL\?%MOO+�@��{<p����щ��v�:���Ҋ��4���67�I���ꀣ� ��NP�088�����$�499����+�*^�O�*�<9�~@���*���>�_�8�g���(�T������X!�I��s���|.���<��0�)N�N��sH��<`444(!>������p���p8���K�h�om�}�Ykll��]�r%��իV�`H�~���\.P:(����;�v,��6!b��7f���8��655�@�������m8��V�E�EqY����7���Z9�RA���eee~'gҹ�����X�ZH'�7�M�8��5�����˗Q\\<GQQ***@�d`n ��8-�ln~AA5Ը ����:u 'N��\�x�.]����t���c�ǂlb_PP��\k�ӧO������0l�.�S� ��� �����*g��s���g��n�tj��K�ύ�bO��p_spWp`���1`�<h����ȏeGDPYY��$p^�X�J��T;�kh��̃&4z����R�Z��k� �F��;���(QAf�v��\#r<'�� �p(_�ّ�=���!;�c��ݮA��"k�y1�I�sm�t:��qA"⻠`C�ٸ�aA�jȋSRR2�F�u������E���/(H������X<B}<�g�w�%� �s�^��ϟ��@��p4x:2�26�M����H8��yPvww뼝�%� ���#ح��������� )�n8`x`E�kN���v� L��`�dl�Ts�k����U��q^���:MYY0��������H!���}�������&�[4�t6��#H���T�|��b�###���з�F�����hp����[��T�L���o����t;�Pp[0���8�p�[�'�}�?�K���Dľ� A&�5����)����o2}�t� ��9��搽��`���������8`�IEND�B`�PKb��\@1�Yj j 4templates/hathor/images/toolbar/icon-32-contacts.pngnu�[����PNG IHDR @{�u� 1IDATx^�Ykl��ff�������� 2�W�BD�Ai������HAB�U����*E�Hi��BZH�� -B�HM�B�x����2lcc{�;��ٙ�9W3��;� ��ӝ��������w ����I���y�~�ֶ�u+_�@6K�B^�=y_`oLX��?|'{�˵XQ ��z�d��+��@���x�{�B댚���"ک�u �0U��ҥK�����YnD��{���h_�P aI��5�v�1y�@����ϰ��n�����{��d��W��� ����r��ҢL@�����K�@H6�����dv�����Ƹ麉Q�)����R�C�(f�״0pIН����+��h��<TF�BIyak݊��T.Wz���I�)P,X#�v�X 3�������# IV���1�LM(�� ��=�g�X�Ϧ�!�JA�4���?��m��[�$ B�O ���w_]�`�F�e8p�^� y�>�"�դ�$��`���YC�0���u�U� ��&`]�曖T:����ئ��Q�t\P-?��B��X����:�6 y�bP$�_3:E���p0�n�OmX�{.N�"v)�ͅ�p�PB$ �S�I�9D�� ���:�4��*� ��4!E���%=�Z{�(**�w����C��0��pMmd��` �]ye��IX=��ɴP������v�4��(�8r%�ʽ9�%���#7���۷��?o�����a�` ȱ(�2�����(���.���i@εɊ�38"�9*�<w=�%����b�ˆ�X�%y�bk�-�����e��t�}� b�@���i������� �,Y����Z���jkNe�^�¶D��X�ʩ���ϧcu�ha�`Ǐ���j ��X�8!J�}�$$�PTK�d2��N�W�A)w��C�w�p�� �p�rd����w��Q&�O֛� ��O�bB,SU�z��H�W5�ehh�d25� ��R�8x�Xb�龯�}�hIKQ;�@�wo��<y��=V��)h�N�J��d/p�M��1�T� �M.&03�[���/V��xZI| ��M�ѣQ�Ѐ@B�P�f\�j��)� Ů���DB�~-�TX2T���DZ�nݺ��K[����O>�fL��B �����i����Ga�t�=��nT@2�� �Ҫ*��"��p��g�"��U,��@T�&�#k�9%�xz���Tn�zB��xׯ_��}�>��4�~��A�6��Q:�ʁ�W�+OQ2�u���O�`�����M���q��J��.I�$�5k���Ъ]F�̚�M�P��������\S���n/h���q���@���U�����TCou�@���1F5���H�'�C I�Ku]��UFH�g��!Q u�`>JkG�"ki>�UߜSPMZ-{#+����!�Նk����<D0���"�[ D�-��Zy��*��tBJ�~�����gI2y6o���6mڔ�����'n�5k�˦i����;���ٳg������lˇ��@�x<�'�T�]���Q�F�@��k�Aސ�I�&5466>_VV�UUaYփ^�\>s��ؠ�����{�ͦ��˖-��2�9s���r����qe=�ʝ� D���VC�>��I�S�N�}� ��>}��V�;w7o�|��dx�d��憆�y����(,�ܻ:!�$!%k1(At�H���� ��������/w^ܯ ���@#�0�\Ӵ���>}:jkk��dD�N�:'N����~!�!�r��WǏ�.��ŭ[�<ʩRX9_3A^����z���z�K�����r�d2�D�#J��5��w$��WTT�+w��S����g>p��11 +�ҋ�H:��0��g��l����I(�� V�����-�tگ��aJ�)L��[��xx>�$!NjVf�)�X,� O�������x�˗/_K��RDvuuyꛕ_�zӦM�-L��� �9�Y}��8Y�k�o�����J*��,ׯ_gb�Ƚ����Ç���x���k܊/^���ţ��^SS��b �t��=?�%!��I(���,��Gq4�:g�nKĽ��cǎ{��A�ݛ2�3�$��@�W�ACL�Ȱ��O>�vvv�%�J�ݹs�(U+��/^�L��ZRP�e�,���ƍ�0D�TWW;��*�W�=!9���3u����g��u�p�`#��w>p��!1�/�O�>��w����1��9P@�&��swP�c0 �$$�6����'-�_�����*A����S:�֑p�=��ϟ����-7NB����t:>�r/i}��ijō� u���S�+��8p@���|H�Z3�����B9WQ;��ɻ�t�;���4@y��)�Gc��}ay����A,����� ��L9�]��|��M���خ�:�X����\�����E�M4���B��Q)���������@ $�ئM�a[�IIEND�B`�PKb��\͌|��2templates/hathor/images/toolbar/icon-32-search.pngnu�[����PNG IHDR @{�u��IDATh��X{LT���v�v��u���6������6���4�vikb)Aj�F4j�1��W�j��41Q�1&Z5���<�O� ��5 o`g��ݹw2���a�&�/|�qs�w���� z��K�7�����`��w�7�o�m�\|o߾}{/\�Pt��u��[�$55U8_�r��ܹs��6m �}�����7o�|��1==]��ۥ��[ZZZ���IL�F�oh��<���9{��M��+��ݻwoIHH�?{�LZ:�%��S2:l��uHn�Cr0?n��:��HRR�\�x�PM��B`yttt콽}R��%�=SRlqHհS�.�qI-fÐS���l�{iY��W r���t<�j� �;������)m�T<����Q�<���g�-�@��-�86�|��S2��� �6�U���[JJJ���$Y�v���1�btxjZF�2���C�� �&�(�ԧ&���K��tğ�x�Ν;�U�Fɩk�B����wM˔�e�;�R] Q��衍Ͼ�D!<<��h����Lcii�<1)=w��ǘ�aW0)3�m8o�pK+�TfqJ|f�B�<�O���ή���%«��:��'�=����� �' ����_�����;��m�ddeC�1jn�,(в�1/�/̛��O�<1梹�[�2デ�;�L�)p"L��[�HUQ�)�+�=��6o&bѷ�J rڌ�!�cj�w��z�j`���)����j{���9rd <5֊�k\*�l��&<����5gj���}u�M�*M�*��W��Յj�_�:0�DQ}��Z-b�L(FX�$bA�i�=����®1II} hbr��?�9+�nŻv� +++��Dq�Y�ڪ~�4X=)acb�1��5OIIר�����$0�u�j#zş((�ѡC��5�5 Rd���q��LJͰC����&��6Ɂh���$--M��HJJ����%�[�.D�K��bűcǢ����$����I���Z)//���b��ϧ� H�p�~��ܻwOn߾msg��i���;���]�����b�DUU��������۷� �}������%))IN�8qNM�_�4�K]bWoذa�ɓ'#�� �*uK�����1A/���y�著66�Vn�B�o�TB/ϒW�y�ƍ[$���#XW�SĉH�?�CCC��Wc�{)0�"����Xl��ر㗈�����t�R!$�v����|Ы�O�ާUHnn�̬��;n�c�� �wW^��<~��aU�2��wH����%+3+��ݻf�<���DQQ��'E�دv$�&ެ# v�� a�T��mv��p8�b�={����۶m���2TB7�S'ו�[�F΅�����a�& �� �=�c���xO�{�u������7��$**�#���x�6&�� HMM�p@�8y���ƦC׀����222"�Ezzz���_���<�**H�L@����J�DWW�b����ᢵ�U���I"% ��q0`S<�F��?��<�n|9����l���n.�@cc��j�������ĄLNN*��nW�[�V%-H����~G8CVzNи�fS�:q:�^LMM)Dx�$�f�F@�7�cH�ߡ�!�C�A��%n����3%ԆO�����?L���*�3��T3>==�F�(P*���{K���z�k\y=W�ע@�$��Ԥ8�7�ɤ�o6��3P�LA@0��`�!��` ��'1~���(@j�5�U�-Z�y��)V�m�"��`%h ��i$hT�f��)@�/�2ڷaA�t �jКC�5#F�Z�f�H��D�B V�`�c$�!�L���L�_mm�p����~��XM�U����h�c�u��E���* �=�+A�@��Ѵ��ass�N#QWW���@F!��F����q�]���M�P�YH01�'��JF��-dL��fƞ�C�f�R��gH����S�r)HT]�oHPmmmV��,bXp����%}�V!�e�#ΔEOHĐwJ _q"�Ne� �F·B�ÒT�F����\��+�� �/ ��:��z �s�����y8�y?u��|���W1��n��?������?~�~/>��f�c����c�9��w�U/��?_���a��IEND�B`�PKb��\�?+�{ { 2templates/hathor/images/toolbar/icon-32-banner.pngnu�[����PNG IHDR @{�u� BIDATx^�XkLT�~��p�p�QT����f+ê.��k/ٵ�(vi��O�Y$�i�!]w���#�dMf5KQ���WEʠ�H��H�;g`n�圾�qN:Df1�K�|g��}��|�A�M���6�T��n����� �n0���`��������_�m��ű��)]k>�6l�h�A��4�+[�E�]k,��|{S�:ii�yz�a������p�s���2M��rU�~�� ��`�l�������:n��~�$�����Ug�Ǘ��*jj�����P�}�ejn���% �\{�����u~�e�#QvE�T���H�/++����O"���̆m፧Z�b��(NMP��dhn<� �ѹ<X���`��}��/�]��{��C����4Z�Vń����q`x���.T�՛2c!.,���:��E缛���F�F,~���>�/3Y�ۉ���l��,p{��,S�ژP6,H��&]p�C�(P�+��y�}��x��� �fa�C���R�G�cC�P�:�m��pA�� �v'Oz��f���9uR��כ5*���xt�O��d�́n�G�VV=�A�D�orz^?8@�/#��(C�G,�@�7�3��r92�!�H�f��0���c�� '%��#��{x �a )A��7>s��j���4b�1^R�=��\��8X;�A_s�0A�����ZU��%%lAt>� �g�� ��`hp��=��oNi6n��M��+�du Ƈ�.(@��W ����b��Q���B$ ���a�Z, sٔqq�]�4~���R!_R���Ӄ�@� ���r��z{��vCHH���dشqs�_<���u�=9SG� ^`/� ���pX�TѰHJ���0�� ���l6��0lLl���?(�5)=��Az�Y_����Y� ;]�2C!@�]$�����+Dp��D@Y�RY�����~,F����,��2���u�T�ف�y�2�c��,��M+=\���P�b ��� 1�!2:ZT���r�:��'+�B����s�{����J�7 ��6�@X��za��<A�A+l�3�>�6o���~�&So�������,�c(�a�X���s��n���1�;����d��%�ӵ�-U�� ���m���%ېDpppQn�F�~@ Ϊ��1HMI����0�Y-�������{�I����f�3PFE�D 1!N?>a�x^������rM��G���1�wp`I��x劬iUx���5�թ)�!Xn�u�%N?O�C�*� �; ��+�G��Z����a�l>r����ߛR��|:�a�a�!-%�����"�����a(�F,CJȢ�6���w�;U�f��Wd���KR��{{�`60�]RRr70Pkw��n�?*�~��<����x���s��8J;8��'��w$��1�p!�^xd�z�RjF��\�"V��v@+�?�{>h��{���}DbA��$x'��F��I���o��������֪�!�@�s��=�r�Jq}}}b,&&�+55Ր��aX�d�x>p����9�~�zQPPP�J�RG�^�r��8X�`��2>~�X<@�|�֭[e �����shoo���IHOO���hkk۽c�ݼ�@SS��e����dx��8�N�y/^d>�瘀�dbq��Ù�4k���a$D��+�m�����k״7o��677O���l�#""Z0�4���$99����h�����466c2�GY5�(qf���kG5&���&&&ȱ�@XX��=�v{�����܀�,KIII4����qz�H" w�,][�VJ0q��5$F�C���j��/������xR"IF� r��$A�K�������1??���2�Z>k9����(%�t ��7�Ĝ���Ra��[9�@�븵�U �A����Bq$�T��} �J��Şz&�"PU�������@������(tvvjΞ=�M`˖-&�ڈeE$�SAr.�ŜH�'uB%&kWuu�&����)*��W� U�D��@�(�X�Ri8w�_���k��.����t���J�F�uD"'�1�����fՈ$<y�<kccc�-Z���H����S��-��ݗ�#b��.�������b��j(_�p!�[q���@3��&�8�w�sP?K� U�� �T1Z���^�Z��TD�0$G6o�|f0L8Ar� ���@"����nW�*�.] �0���� }�!�ȑ��C��шYlB9���ҥKjx�qX��)� ̏�'Nv>��U��b�!���ș Q�{�H��j�T�|��N�R��T�����ٓ[ZZj�k�X%Fi �=v�X@��Ȝƺ/�Rkii)�ϳ:���_��pШ\1�GP���S >�B1��\Yǰڥ�@�|����m[�nm�x���u��Y�`N|���c-�"��Ç˱|��~�9A���998x��ގi�gQ�.T����kCC�ߩ�O��gt{3��a�5�%`E8�\Rq��_��aC����^IEND�B`�PKb��\�ͧ��4templates/hathor/images/toolbar/icon-32-save-new.pngnu�[����PNG IHDR @{�u��IDATx^�X]lU���l�-�2v�"�O!Bk#$�bDM�$!$�+��ɄФ��AL��C)ix2Q� ���K�(-��Rڔ�lw�33;w�97�MY��L(��/�=�MO�w�9�n��,���'�3d�c���U�c�~PUSS�t]Ø���"� ��}[����*�@�E�$�^05M7M$c$6�h4�`0�H$���lp���� Kl��(@L���q�^ E���j08G2�����fT�� X,�����;v^��~_�k�i�6�8�����A QEM�yI ����J�������G*Bk�?�隭�����0�|u=>e�'R�j��1�EEb�ܾ�� �Vj���ӫ�p$��e�rr�@42�� �� j�ݻ�L���܂�1�Na��g�u�;FP��; c,��3��&�cVw�K���(U��/��e1�]'Z�co��x�D�cQ����/x�o��8�m0���_��st�I�i�s"� 0�N����0��8,5 �e� ߆4|Ɵ?���W����*5�����}��= Ӹ� X�K`��f��يu�� e*]�^\�F`헐K�b��J����P��,y���0Ib0\0�9�Q@;� xO�`!�/n����f�10Z=݄�])�eAV�M�����\T!��P�|�IHO@S�E�/,|a�+ђ��3�x~�F��7�`i*D I�cȘ$�}++J��X�9Oc�� p���?xm�~s�����W�z�2J��u���mG��\�v]�5 7o܀����a�t E# :���B_P�g�����V�`�O����-^��KL*WU�&fff���A�!�V"U�|>������� MӚCyy�����Ǔ $��Y��:�N'��� ���s�d�� "�|)�ҁM"@0�SN��T�I� "ӌT���3f�H��{�b��W��W�����'O�J���'<auu�;//_��>��1��K���L�e�##�M��a���� Kl��9,,�&WLn>pO�z{{�u�. � ���Kd�^�IU���^�x���|�9E'\��>�r(��8ya���i%�OI�r��y��"� �b�d�e��\97���@*P P1{�X���a�<����%������ dddd<:���߃Wа��D�4(���;%g=>>.ڱ��Tt�� �l٢�7lĹ=Հ���FFFĠ2ۖ?`/z����y��͛�:t��c �S��$uM�h:BϡP�>�999%�a4mڴI�s�c��<"A�rssi�+H؛#(��{>� ���MLE�����Y��^u)S陀e�'@�����bh=EQ�������&`�[N�w雑� ���˙;�(BL� �h4O*8��'� {zz��sn�E���S��� P�#�N����y��A�1�ڞӿa(,(,�ߢ�w�]ͥeep��$�����X�\FS��m������w_!Y�=}��H��%�����P[�Ξ���5�Bs�يR�ʩ�m��>Y.�sB+ɞ3���#����f��`dhȽ=ohh���3��ÿ�?*SaNIEND�B`�PKb��\˪�� 5templates/hathor/images/toolbar/icon-32-unarchive.pngnu�[����PNG IHDR @{�u� FIDATx^�XMlY��鞞{l�ǿ��ĉp�%֢��BB��-�K.����r���8rB��C" �+� �d�P�I�䍼�' ���8c�tS_�Kz��D���*���_}U����g�fI�8,n(�Plz���,m�K��d�X2��CB��' ʚ,u� 1�8�\(^Z�`1��w:e�d��l5�I9T���u�l�"˶�~�RNJ��)��.�Om��զV�E;;�!��k�:ݾ����� �@L�{al�L�x!��d�Z�Ryw���, }��b�R���(T���7=&��BcЭ�k��v�eG�Y$J����>>9A��I����Ųf�E�Z.��z����Q��I9�s�� �7<���5�M&P�F�AO��ӧOq /�B*hL�i��S�$0�Ы�C*J�r���!��z�I�l��vw�2�pe__��HXU�m�ѱ�����b#�J��6�m���5�ԣ���j��HH<��&�88kW��1!�H��t��m�Kc�#4>6�)� |D��O,�v\-D; Q�����/B�v[�$��;C��x�}��W�6=�t0\�Ԯ*��e��T���J]�%m ���NCC�^(O����Zl-З�ZA��Z��|������L���*{aD6UW'���>پ-�|�'K�,}G��;�M���U8���-*H��*�M}v7�X"b��Z.�G$�H7���T,�h�S5�����C�+ U�6���s���I���uE�I P�M��~�B�/Î�P.��>�3B��ƽ�S<��D|H��UJ�T�O}r�C�i��.-�|:�C�e��R@��� r��s\Y_��O=�ǎ%x��s,ц_�9)�o\�|O�X'���x�[.��~�H�Y ���7�~�㋔�y�7(`t�D��7��/ߥ���=��λr���'k��Ǜ��sԓu魯}�N�x��:A��u�����^��1D���ٗN�W�� �����[oҕ�_�Ԉ�q��_��{4Rx��Js����� C��D��C�~@�q��~�& p������'�~�=��8QD�2�z"X���Z�ϥW^��?\�F����Y`�|�\�fq�t���ȒDX߁%��/�d�z�xzv���y��ؠ��5��P,�M��^2�z�!e����ۄ�k�ؘ:z�z9��/P� rPj�#�h6ɢdXN��ZUQ�VT/4ؚ�o��"��+�md��n�Uxӡ������[6В��& ���/��gNR�X<���^;�{�RT��R���+"�����r�)��VA@T�J�EL��Q&�l�ۃ%6��AE���n�xD���Q�h&��ESj�ܬ���C�X��Hq��Þ\=�.щ�S�L٨씶�������igk[��zA�FN(��ho�V�Yj����R��R�͏`w�^nBL�Y)4�;����K[�����>njϭ�������⁋/�Ç��"��D���!n:V��#�� ���4Y����(�#��Ӻ���@W@z�T�����A�R�5*"�������(��U�E&*b.�Bh�����b�1P8�(�h���ݰ�/�tg��а��� ���@&��镁����:���>�d�~4%��䟒P�*���#�qO���r�p?F q{Wޝ��{�9�8-�}��Ύyl�����uY�h� ��$ဢ�R�w�Ĉj����exx���$�����4��g\�A$��웊T��6(ף;��J%(�g:�йD��b�$��?@�B�@�pCf,'�p�d�F�� ������ȎQރ��W���� ��fm�>B�I� H�L�'�H%{�422b~0���4��rD����, ��\�B�*������ә3g�Q�����ܽ{��ܹ�,�u�oA2��g��ͱ�X��z���+++4??�{PR�/_�,�:u��R �_�~��/NNNґ#GL�gff��#W�^�5�������������(ދbl �1p���{(����ej�ݻ'�q��9x@lj"S�H@��:���G����X,ҭ[����xW��&��+��y!���5���d��vF�)�EϐZ��OMM��&Ƭ�u#e�֘�� �pm��t<p���A�� 4F�Y�k:F��^x� �jEU� D�Qw#t����%P��Q�݊ \]]�EH|G��|@�Q�#�Q����: <�q�E�q�6�����t{�byIEND�B`�PKb��\Z�T�/templates/hathor/images/toolbar/icon-32-new.pngnu�[����PNG IHDR @{�u��IDATx��kle�hE�����K�n�Q��`䟷?��&�S$ԤF�Ul�ʭ\�X�Z�-Ћ���Wh)]Z)�-�V��YZ���{&؝�v�S�8ɓ9s�s��7_g���_y(�o��>�EjI;iӸD�5�yyP�&�(ہ��wP���B@��@լn�{�w�l'��/�PARQ2���y P�E�C�%.�Bq�m�Ր��(P,$3<�|8��\b'�i�\-.�'����yϜ�|e=ʦ�AI<��c�_V��k+��+�s�pr���'e��?I^훀�]8&�Q4��U{˖!�\v��J�c�������U��7� �}�D&T�F�]p���P@�P7��d���?���?�H��' 8���`\�CP0Q�E$�P������M2II'6��*t�k��Z~�V�>�G��/6��:��U���Vj��ڄ���m&��qv���j����z Аω��ׄdEٱm�3 ���@e�����`������~����v�4�0e `���5��� c6��@�9�۵}��+��pV`�r�@%����%��l�r��5"�<n�s\�4��[���+c�������>�-�U6i"֑��jޒU�s5����7J�FZ�sT�dc�$؞��=�]������D���X�z�9�p?D�~0I!$�x��w�NFHQ"�a���=2�/�#X�X�����C\��c�2 �&�a�h�$�|Cr���@I����\�O��W$"|� ���MH��@V����d��ll�;kꍈ�,¶���=��#��l���6����dr�� y��nlv�� �\�8NB1k-���9.p�Ğf� 2�~�D�O�:�[g5#��d,�s���H�^ú�N3�F^�[1mD�aSG)Q>P�^�TY~s�b�R�&U��/�C�˔��?V}>Oy������#d ��D�G���Jf�9!�1��;�L 2����5��'b�6�,Vml���>CF���j1� �߆��ҎЄ��a!��09j�?�D�&H"��0X�A���<`J@�7��IR��AH n�o2�~�;̙����κ���v���Ԅ��F��X/�`R@�{�^\�|N��ϟGss3jjj$���b�$���x<�8qzcL�$'.b [��M���� G����1��İtvv&����Q^^�1&c����ܺu�N ܼy���hii�իW�r��p8�7�dLr$Wj�Vz� hoowܸqgΜAee%JKKQRR���"@o�1ɑ\��Z�^�,1 E��� �5�J��O��YFA���*�k�����a(��ŋ����%���UUU����y� �N�Bqq1�k������9 Ξ=��G����P�d���طo����H��H�ڃ��I0�eO!���Q[[�>�?�n���l�1�ɕ��z,����=�}r8&9�a�Q|��I�.kH�p������G����={�@o999"@rB���c��&�s��1y��f������'�Nn���XL��i�?|�ʳ_&ė�����X��N����&%��#Errr,dV�>7M�?�ܬ����)L �H�t��w222�r�-\�jކ����̙3���&<������@_��)�+[� ���IEND�B`�PKb��\X�#�� � (templates/hathor/images/j_login_lock.pngnu�[����PNG IHDR���H� �IDATx^�[pU��{��%�I�$E�[��AKu���(*Z �:�:����H�Ч��б>��S�%jo�Z�X��XA !�C��9{��^��:�l��8�M��|ko'����묰!.�b�°`�0,Â1,ð`ư`Â1,�8acE�p��B(a�bJ�0}���좴���!�B�vXR5R��u��&a�I�*3��Z�L4]��c'B�==ᮞ����@�)�)X3�9)�F!��l#���4θ�>t�u�1�~����*���3�|��S�H��`c�cm�|M7.���nY��P��鹳����W#��d�V�d�X0ȵ�����E���v��:�n�>���Gi�>����o��5XE���S�����6u���<�&�t�b������@��Yx����;�6��m$Z#6z� {�ޏ���o�� �Lb����/�����$��S��/W��Kk7�^�����70���5�d2�Ég~�/�����6Ⱥ�:e��]��3�������`���-������"~����/���~&C�2[�_��@wO/�!�N����o݃���7x[>x\<p�����rƦ�<�0t]����r�P��$�a��=�k��;�M�>�!s_�촻�Aa��K�Մo���� ����zQ�d*���.\��Z ��l��^�"��O��iՊO$�7���,"V��濤`Y���4���������i��ڲ�n]�t����zP�D"�c':p�� )�H�U,���{�#u�����!�J�TW7\.7��tl�s3>ݳ��X��e���h`f�G;?Y���-M�oB���'O������$�-fS���l��KC��������@�s���x�$���B��j��U���gӲ��h0�\��?���'%��ڶ1�y�N^�یe?�켹s�M���#�a� �c�ǻ�Z��\;,�PÔ��<5���}3Jp��1��i���^L��^���+뮼��5�f]�ήS䃦.��GH���S<p_�*@P �NR2��I���иb�Z�F�B���\5#�x�+m�����ƽ�Y3gnPT���n���˧�y �m�u���^�d]�ڦ���p��I9՜I,ǖ��2rY̝3{��(:�>*���&M����E��Z��:(�Bݫ�غ��b��y���uB�����`���3��r͏�|:Ă� ���!Z�4]6yڏ/��u���3l��ә�^J_�.6��|!D#6���TY�Gc��{����yD�]��nX������o�����ɎNY�ӔO{ykX���[+�d��+�g�{���(`#�yr�o?���C>F�����uS}�u,��`��!� �&�|r�� Z�x����o�,��!�if�nd�������D��GOo�f`pG��"�I��}���oYt�:u�dS��X0!�֎�D�I��y�� di� 1�f��?Ќ<D�%�PU��0F�` 5�!�S�" �b��|���t��#M֪��������ÂZ�tw��x���`[�q�㔬ӧ^�B5���t��ꑂ���ȓ]��g�h`���w�q��i:.f����+Ӂ1}�T!lxi@�h�.�_t���-xq�a��aX0�cX0�a��a��cX0�c�a��c�M�\_����^��\�T��Dkk+�n'<N���Mե*P!0�,|w��g�0C��2�87�5.�EQr�cUU�[u�u0Rp��[U�v��'�H`�'���T'jCU�W�z��H$MӠ�:�ȡ����?�����gl�+� O�n����ʦN%� 8}A��?�tC�DH���!�j0k6���^��L�B�5d�,La�PE �(������K�ZV*fud�;�4�82c#�Ӑ�E����(сl���$q��I��bс���-i?���o�(��K'��umg��� ��$-�t܃T̏tHi��n��~� �)�˗$��& �����aFP (� e�D�lH,�P3U�D�)�"�;S(�KV8��6+�-�5�A��p�8�E�C���Z���N#�H.������` ������9� ��DT�p���e�L����0�%(�/Ia�䂾4L�&O�G��`���8;�),ذð`�0,Â1,ð`�0,ç)��,�=����~�>/�7|>?�t��f��M��^3^8=^��<u`�BV#S)�0���U|��!�� !+p� %{4Ǫ��J��XVUV5{\G��U^�8a�N�����U!��C\�ע�bQ�Ycq�j���c0��\\���*+QQQ)%�|���S�{>��Gry�x�.��43S,�_��H��e�"f��w��aCK4�� I�*�PU�<q�*�L$rz����t'��Z�CB���.c>�UxT�ht�M�Â1,Â1ư`�0,Â1ư`�0,Â1,ð`ư`Â1�K���{�#`.��Y1J;�S$ð`ư`Â1,ð`���|˖�;��B�Ţ),X�ʗ�B�Ja�reR�\��TՆr�{��iQ�� �jG��� Kfv�L��\e��k��r��d� �rNp���>�r����P�AP�l�5�I�ν�1�ZVy%!T�t�ܨ(�`Vl���Ӯ���`�U��ņ{�Tm������`���*���i ��:,�Q&�J�ء���`cm�B)��ko;l~��i=!�{9r�GE�%������X�a�\'������N�o[���}EE�����i�Q;a�|�Z @0�G��q�k����=n7����X�U��Xo\�dEv,k�ߦVN�)J���YU�Co_3����X~m2�������[բQm(�hT�@��Vt��حE#��?'ƂI�Z����g�������,��gJ��A�� ���D#ɼR0��#`BH��jv���� ��_g��f�|c�ȒMͩ�h& S�X�Br��i��tD"Q�,*�Ԏ�]닽�m`��Gd�LX��?��{�ST�bU�퓓���c��Sb�Z1,���i,&JH���fŰ֍0� Vl��V���/�Hf�Q�����9k��1`QR.�HUZ��:Xn'�M�\c| f�V\*�(C0;�����5���m�?E��S�%�jI�<��Y�*��r�(!�͂Yb�^�[�Yݭ��u����l�X'+&��Ę\�أ�B�X�[u�#`!�o���|b�!�r�u0Q�z� �r�/ƀ`9�K)"�(չFq'�:Y�1���,�>�j�(��JH%��S�%S2�%+y�����J=��)���i#�,��"YQ�J#0����5X��ș��[|���l��p,Xi�ʇ�b�F����u��hҎ�NIEND�B`�PKb��\���p��#templates/hathor/images/j_arrow.pngnu�[����PNG IHDR �2Ͻ�IDAT�c���?����3�X�ƅ��Ʀ{[��-��U���� ��߀��B�9���(���X�o���p8�B��%[��?��l �˦n�@��1��+����O�����R+�X�`8��� Ͼ�"�IEND�B`�PKb��\�^���.templates/hathor/images/selector-arrow-rtl.pngnu�[����PNG IHDR X0$� PLTE������Ȳnh� tRNS@��f*IDATx�Mɱ 0���C���@:�~-3�����:�t�q�A4\IEND�B`�PKb��\6g���*templates/hathor/images/selector-arrow.pngnu�[����PNG IHDR X0$�0PLTE������������������ޱ�����������������)��tRNS@��fDIDATx�M�A� ���q���V�����e̬K դ�i����%�:x�;KL:�Z�ΆD:"�4�xo�U�IEND�B`�PKb��\L�i4��$templates/hathor/templateDetails.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE install PUBLIC "-//Joomla! 1.6//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/1.6/template-install.dtd"> <extension type="template" version="3.1" client="administrator"> <name>hathor</name> <creationDate>May 2010</creationDate> <author>Andrea Tarr</author> <authorEmail>hathor@tarrconsulting.com</authorEmail> <authorUrl>http://www.tarrconsulting.com</authorUrl> <copyright>Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.</copyright> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <version>3.0.0</version> <description>TPL_HATHOR_XML_DESCRIPTION</description> <files> <filename>component.php</filename> <filename>cpanel.php</filename> <filename>error.php</filename> <filename>favicon.ico</filename> <filename>index.php</filename> <filename>login.php</filename> <filename>LICENSE.txt</filename> <filename>templateDetails.xml</filename> <filename>template_preview.png</filename> <filename>template_thumbnail.png</filename> <folder>css</folder> <folder>html</folder> <folder>images</folder> <folder>js</folder> <folder>language</folder> </files> <positions> <position>menu</position> <position>submenu</position> <position>toolbar</position> <position>title</position> <position>status</position> <position>icon</position> <position>cp_shell</position> <position>cpanel</position> <position>login</position> <position>debug</position> <position>footer</position> </positions> <languages> <language tag="en-GB">language/en-GB/en-GB.tpl_hathor.ini</language> <language tag="en-GB">language/en-GB/en-GB.tpl_hathor.sys.ini</language> </languages> <config> <fields name="params"> <fieldset name="basic"> <field name="showSiteName" type="radio" class="btn-group btn-group-yesno" default="0" label="TPL_HATHOR_SHOW_SITE_NAME_LABEL" description="TPL_HATHOR_SHOW_SITE_NAME_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="logoFile" class="" type="media" default="" label="TPL_HATHOR_LOGO_LABEL" description="TPL_HATHOR_LOGO_DESC" /> <field name="colourChoice" type="list" default="0" label="TPL_HATHOR_COLOUR_CHOICE_LABEL" description="TPL_HATHOR_COLOUR_CHOICE_DESC" filter="word"> <option value="">TPL_HATHOR_COLOUR_CHOICE_STANDARD</option> <option value="highcontrast">TPL_HATHOR_COLOUR_CHOICE_HIGH_CONTRAST</option> <option value="brown">TPL_HATHOR_COLOUR_CHOICE_BROWN</option> <option value="blue">TPL_HATHOR_COLOUR_CHOICE_BLUE</option> </field> <field name="boldText" type="radio" class="btn-group btn-group-yesno" default="0" label="TPL_HATHOR_BOLD_TEXT_LABEL" description="TPL_HATHOR_BOLD_TEXT_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> </fieldset> </fields> </config> </extension> PKb��\9 � ��templates/system/error.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.system * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" > <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title><?php echo $this->error->getCode(); ?> - <?php echo htmlspecialchars($this->error->getMessage(), ENT_QUOTES, 'UTF-8'); ?></title> <link rel="stylesheet" href="templates/system/css/error.css" type="text/css" /> </head> <body> <table width="550" align="center" class="outline"> <tr> <td align="center"> <h1> <?php echo $this->error->getCode() ?> - <?php echo JText::_('JERROR_AN_ERROR_HAS_OCCURRED') ?> </h1> </td> </tr> <tr> <td width="39%" align="center"> <p><?php echo htmlspecialchars($this->error->getMessage(), ENT_QUOTES, 'UTF-8'); ?></p> <p><a href="index.php"><?php echo JText::_('JGLOBAL_TPL_CPANEL_LINK_TEXT') ?></a></p> <p> <?php if ($this->debug) : echo $this->renderBacktrace(); endif; ?> </p> </td> </tr> </table> </body> </html> PKb��\��NS� � !templates/system/html/modules.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.system * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /* * none (output raw module content) */ function modChrome_none($module, &$params, &$attribs) { echo $module->content; } /* * html5 (chosen html5 tag and font header tags) */ function modChrome_html5($module, &$params, &$attribs) { $moduleTag = $params->get('module_tag'); $headerTag = htmlspecialchars($params->get('header_tag')); $headerClass = $params->get('header_class'); $bootstrapSize = $params->get('bootstrap_size'); $moduleClass = !empty($bootstrapSize) ? ' span' . (int) $bootstrapSize . '' : ''; $moduleClassSfx = htmlspecialchars($params->get('moduleclass_sfx')); if (!empty ($module->content)) { $html = "<{$moduleTag} class=\"moduletable{$moduleClassSfx} {$moduleClass}\">"; if ((bool) $module->showtitle) { $html .= "<{$headerTag} class=\"{$headerClass}\">{$module->title}</{$headerTag}>"; } $html .= $module->content; $html .= "</{$moduleTag}>"; echo $html; } } /* * xhtml (divs and font header tags) * With the new advanced parameter it does the same as the html5 chrome */ function modChrome_xhtml($module, &$params, &$attribs) { $moduleTag = $params->get('module_tag', 'div'); $headerTag = htmlspecialchars($params->get('header_tag', 'h3')); $bootstrapSize = (int) $params->get('bootstrap_size', 0); $moduleClass = $bootstrapSize != 0 ? ' span' . $bootstrapSize : ''; // Temporarily store header class in variable $headerClass = $params->get('header_class'); $headerClass = ($headerClass) ? ' class="' . htmlspecialchars($headerClass) . '"' : ''; $content = trim($module->content); if (!empty ($content)) : ?> <<?php echo $moduleTag; ?> class="module<?php echo htmlspecialchars($params->get('moduleclass_sfx')) . $moduleClass; ?>"> <?php if ($module->showtitle != 0) : ?> <<?php echo $headerTag . $headerClass . '>' . $module->title; ?></<?php echo $headerTag; ?>> <?php endif; ?> <?php echo $content; ?> </<?php echo $moduleTag; ?>> <?php endif; } /* * allows sliders */ function modChrome_sliders($module, &$params, &$attribs) { $content = trim($module->content); if (!empty($content)) { echo JHtml::_('sliders.panel', $module->title, 'module' . $module->id); echo $content; } } /* * allows tabs */ function modChrome_tabs($module, &$params, &$attribs) { $content = trim($module->content); if (!empty($content)) { echo JHtml::_('tabs.panel', $module->title, 'module' . $module->id); echo $content; } } PKb��\�y��templates/system/css/system.cssnu�[���/** * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ /* Import project-level system CSS */ @import url(../../../../media/system/css/system.css);PKb��\�Ե�>>templates/system/css/error.cssnu�[���/** * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ .outline { border: 1px solid #cccccc; background: #ffffff; padding: 2px; } body { margin: 15px; height: 100%; padding: 0; font-family: Arial, Helvetica, Sans Serif; font-size: 11px; color: #333333; background: #ffffff; } .frame { background-color: #FEFCF3; padding: 8px; border: solid 1px #000000; margin-top: 13px; margin-bottom: 25px; } h1 { color: #cc3333; font-size: 18px; } .table { border-collapse: collapse; margin-top: 13px; } td { padding: 3px; padding-left: 5px; padding-right: 5px; border: solid 1px #bbbbbb; font-size: 10px; } .type { background-color: #cc0000; color: #ffffff; font-weight: bold; padding: 3px; }PKb��\�M�>>templates/system/index.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.system * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; include __DIR__ . '/component.php'; PKb��\�����templates/system/component.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.system * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>"> <head> <jdoc:include type="head" /> </head> <body class="contentpane"> <jdoc:include type="message" /> <jdoc:include type="component" /> </body> </html> PKb��\ ��jj$templates/system/images/calendar.pngnu�[����PNG IHDR�a1IDATx^�SMkQ=3�~�j"$LUQE�w�N�ʍ"�AA�t���(�*��(�~�!���Bզ��&�3���KH7����p��Ý73c;�(��F�qY2 $B�Tg���UR0$Q��#î1_�0�3����������}�;y`�H���vpl���~ތ7I�u04�H�b�2Q�6�GHt$A����NB���6��`���x�[u���Ya����~���̒�r��#��8�@JX��b �ebj����r ��;x7C`"�n�hxl�+A4�ʵ_6O%JzR�g�:���(?N?��髮�~���{'`<&�"U�r�>/nÇ0M�/yX���Da� A��%���Ο B�Ё�0�Nqvh�3QDNG��o!�뇷��1��,��(��y0OW�@�XY��?؋���ΗS���3����x�� o>i~���b9��p�k��;�?<�;0�;P��A6�8@n}�ݽȬ�����=���2T"�H<�i��-ɫn�*)�5R�_�n��U�����aJ��IEND�B`�PKb��\�.�j>>templates/isis/cpanel.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Templates.isis * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require_once __DIR__ . '/index.php'; PKb��\���LL%templates/isis/less/template-rtl.lessnu�[���@import "template.less"; @import "../../../../media/jui/less/bootstrap-rtl.less"; .navbar { .admin-logo { float: right; padding: 7px 15px 0px 12px; } .brand { float: left; padding: 6px 10px; } .nav { margin: 0 0 0 10px; > li > a { padding: 6px 10px; } } } .container-logo { padding-top: 0; float: left; text-align: left; } .page-title { [class^="icon-"], [class*=" icon-"] { margin-right: 0; margin-left: 16px; } } @media (max-width: 767px) { .navbar { .admin-logo { margin-right: 10px; padding: 9px 9px 0 9px; } .btn-navbar { float: left; margin-right: 5px; margin-left: 3px; } .nav-collapse .nav.pull-left { float: none; margin-left: 0; margin-right: 0; } } .nav-collapse .nav > li { float: none; } .page-title { [class^="icon-"], [class*=" icon-"] { margin-left: 10px; } } } /* Status module */ #status .badge { margin-left: 0; } /* Menus */ .dropdown-menu > li > a { text-align: right; } /* Dropdown toggle icon align */ .btn-group > .btn + .dropdown-toggle { float: none; } /* For grid.boolean */ a.grid_false { display: inline-block; height: 16px; width: 16px; background-image: url('../images/admin/publish_r.png'); } a.grid_true { display: inline-block; height: 16px; width: 16px; background-image: url('../images/admin/icon-16-allow.png'); } /* Login */ .view-login { .login-joomla { position: absolute; right: 50%; height: 24px; width: 24px; margin-right: -12px; font-size: 22px; } .input-medium { width: 169px; } } .login { .chzn-single { width: 219px !important; } .chzn-container, .chzn-drop { width: 227px !important; max-width: 227px !important; } .input-prepend .chzn-container-single .chzn-single { .border-radius(3px 0 0 3px); border-right:0px; } } /* For collapsible sidebar */ .j-sidebar-container { left: auto; right: -16.5%; margin: -10px -1px 0 0; border-right: 0; border-left: 1px solid #d3d3d3; } .j-sidebar-container.j-sidebar-hidden { left: auto; right: -16.5%; } .j-sidebar-container.j-sidebar-visible { left: auto; right: 0; } .j-toggle-sidebar-header { padding: 10px 19px 10px 0; } .sidebar { padding: 3px 4px 3px 3px; } .j-toggle-button-wrapper { &.j-toggle-hidden { right: auto; left: -24px; } &.j-toggle-visible { right: auto; left: 10px; } } #system-message-container, #j-main-container { padding: 0 5px 0 0; } #system-message-container.j-toggle-main, #j-main-container.j-toggle-main, #system-debug.j-toggle-main { float: left; } @media (max-width: 979px) { .j-toggle-button-wrapper.j-toggle-hidden { right: auto; left: -20px; } } @media (max-width: 767px) { .j-sidebar-container { border-right: 0; border-left: 0; } .j-sidebar-container.j-sidebar-hidden { margin-left: auto; margin-right: 16.5%; } .j-sidebar-container.j-sidebar-visible { margin-left: auto; margin-right: 0; } /* login */ .view-login { select { width: 229px } } } #j-main-container.expanded { margin-right: 0; } /* Modal batch */ @media (min-width: 768px) { .row-fluid [class*="span"] { margin-right: 15px; margin-left: 0; } .row-fluid .modal-batch [class*="span"] { margin-right: 0; } } .row-fluid .modal-batch [class*="span"] { margin-right: 0; } /* Extended Responsive Styles */ @media (max-width: 480px) { .btn-toolbar .btn-wrapper .btn { width: 100% !important; margin-right:0px; } .btn-toolbar .btn-wrapper { margin:0 10px 5px 10px; } } @media (max-width: 420px) { .j-sidebar-container { margin: 0; } /* login */ .view-login { .input-medium { width: 173px; } select { width: 229px } } } PKb��\Y��@@ templates/isis/less/icomoon.lessnu�[���@font-face { font-family: 'IcoMoon'; src: url('../../../../media/jui/fonts/IcoMoon.eot'); src: url('../../../../media/jui/fonts/IcoMoon.eot?#iefix') format('embedded-opentype'), url('../../../../media/jui/fonts/IcoMoon.woff') format('woff'), url('../../../../media/jui/fonts/IcoMoon.ttf') format('truetype'), url('../../../../media/jui/fonts/IcoMoon.svg#IcoMoon') format('svg'); font-weight: normal; font-style: normal; } @import "../../../../media/jui/less/icomoon.less"; .icon-edit:before { color: @btnInfoBackgroundHighlight; } .icon-publish:before, .icon-save:before, .icon-ok:before, .icon-save-new:before, .icon-save-copy:before, .btn-toolbar .icon-copy:before { color: @btnSuccessBackgroundHighlight; } .icon-unpublish:before, .icon-not-ok:before, .icon-eye-close:before, .icon-ban-circle:before, .icon-minus-sign:before, .btn-toolbar .icon-cancel:before { color: @btnDangerBackgroundHighlight; } .icon-featured:before, .icon-default:before, .icon-expired:before, .icon-pending:before { color: @btnWarningBackgroundHighlight; } .icon-back:before { content: "\e008"; } PKb��\�e&��W�W!templates/isis/less/template.lessnu�[���// CSS Reset @import "../../../../media/jui/less/reset.less"; // Core variables and mixins @import "variables.less"; // Custom for this template @import "../../../../media/jui/less/mixins.less"; // Grid system and page structure @import "../../../../media/jui/less/scaffolding.less"; @import "../../../../media/jui/less/grid.less"; @import "../../../../media/jui/less/layouts.less"; // Base CSS @import "../../../../media/jui/less/type.less"; @import "../../../../media/jui/less/code.less"; @import "../../../../media/jui/less/forms.less"; @import "../../../../media/jui/less/tables.less"; // Components: common // @import "../../../../media/jui/less/sprites.less"; @import "../../../../media/jui/less/dropdowns.less"; @import "../../../../media/jui/less/wells.less"; @import "../../../../media/jui/less/component-animations.less"; @import "../../../../media/jui/less/close.less"; // Components: Buttons & Alerts @import "../../../../media/jui/less/buttons.less"; @import "../../../../media/jui/less/button-groups.less"; @import "../../../../media/jui/less/alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less // Components: Nav @import "../../../../media/jui/less/navs.less"; @import "../../../../media/jui/less/navbar.less"; @import "../../../../media/jui/less/breadcrumbs.less"; @import "../../../../media/jui/less/pagination.less"; @import "../../../../media/jui/less/pager.less"; // Components: Popovers @import "../../../../media/jui/less/modals.less"; @import "../../../../media/jui/less/tooltip.less"; @import "../../../../media/jui/less/popovers.less"; // Components: Misc @import "../../../../media/jui/less/thumbnails.less"; @import "../../../../media/jui/less/media.less"; @import "../../../../media/jui/less/labels-badges.less"; @import "../../../../media/jui/less/progress-bars.less"; @import "../../../../media/jui/less/accordion.less"; @import "../../../../media/jui/less/carousel.less"; @import "../../../../media/jui/less/hero-unit.less"; // Utility classes @import "../../../../media/jui/less/utilities.less"; // RESPONSIVE CLASSES // ------------------ @import "../../../../media/jui/less/responsive-utilities.less"; // MEDIA QUERIES // ------------------ // Phones to portrait tablets and narrow desktops @import "../../../../media/jui/less/responsive-767px-max.less"; // Tablets to regular desktops @import "../../../../media/jui/less/responsive-768px-979px.less"; // Large desktops @import "../../../../media/jui/less/responsive-1200px-min.less"; // RESPONSIVE NAVBAR // ------------------ // From 979px and below, show a button to toggle navbar contents @import "../../../../media/jui/less/responsive-navbar.less"; // Extended for JUI @import "../../../../media/jui/less/bootstrap-extended.less"; // Has to be last to override when necessary // div.modal (instead of .modal) @import "../../../../media/jui/less/modals.joomla.less"; @import "../../../../media/jui/less/responsive-767px-max.joomla.less"; // Icon Font @import "icomoon.less"; /* Body */ html { height: 100%; } body { height: 100%; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } a:hover, a:active, a:focus { outline: none; } /* Login */ .view-login { background-color: @loginBackground; padding-top: 0; .container { width: 300px; position: absolute; top: 50%; left: 50%; margin-top: -206px; margin-left: -150px; } .navbar-fixed-bottom { padding-left: 20px; padding-right: 20px; text-align: center; } .navbar-fixed-bottom, .navbar-fixed-bottom a { color: #FCFCFC; } .navbar-inverse.navbar-fixed-bottom, .navbar-inverse.navbar-fixed-bottom a { color: @gray; } .well { padding-bottom: 0; } .login-joomla { position: absolute; left: 50%; height: 24px; width: 24px; margin-left: -12px; font-size: 22px; } .navbar-fixed-bottom { position: absolute; } .input-medium { width: 176px; } } .navbar-inverse { color: @textColor; } .login { .chzn-single { width: 222px !important; } .chzn-container, .chzn-drop { width: 230px !important; max-width: 230px !important; } .btn-large { margin-top: 15px; } .form-inline .btn-group { display:block; } } /* Typography */ .small { font-size: 11px; } .row-even .small, .row-odd .small, .row-even .small a, .row-odd .small a { color: #888; } /* Navbar */ body .navbar, body .navbar-fixed-top { margin-bottom: 0; } .navbar-inner { min-height: 0; background: @navbarBackground; background-image: none; filter: none; .container-fluid { padding-left: 10px; padding-right: 10px; font-size: 15px; } } .navbar-inverse { .navbar-inner { background: @navbarInverseBackground; background-image: none; filter: none; } } .navbar { .navbar-text { line-height: 30px; } .admin-logo { float: left; padding: 7px 12px 0px 15px; font-size: 16px; color: @gray; &:hover { color: @grayDark; } .navbar-inverse& { color: #d9d9d9; &:hover { color: #ffffff; } } } .brand { float: right; display: block; padding: 6px 10px; margin-left: -20px; font-size: inherit; font-weight: normal; &:hover, &:focus { text-decoration: none; } } .nav > li > a { padding: 6px 10px; } .dropdown-menu, .nav-user { font-size: 13px; } } .navbar-fixed-top, .navbar-static-top { .navbar-inner { .box-shadow(none); } } // Fixed to bottom .navbar-fixed-bottom { bottom: 0; .navbar-inner { .box-shadow(none); } } /* Header */ .header { background-color: @headerBackground; border-top: 1px solid rgba(255, 255, 255, 0.2); padding: 5px 25px; } .navbar .btn-navbar { background: #17568c; border: 1px solid #0D2242; margin-bottom: 2px; } @media (max-width: 767px) { .header { padding: 4px 18px; margin-left: -20px; margin-right: -20px; } .navbar .admin-logo { margin-left: 10px; padding: 9px 9px 0 9px; } } .header .navbar-search { margin-top: 0; } @media (max-width: 979px) { .header .navbar-search { border-top: 0; border-bottom: 0; .box-shadow(none); } } /* Search Module */ .navbar-search .search-query { background: rgba(255, 255, 255, 0.3); } /* Logo */ .container-logo { float: right; text-align: right; } .logo { width: 100%; max-width: 143px; height: auto; } /* Page Title */ .page-title { color: white; font-weight: normal; font-size: 20px; line-height: 36px; margin: 0; [class^="icon-"], [class*=" icon-"] { margin-right: 16px; } } @media (max-width: 767px) { .container-logo { display: none; } .page-title { font-size: 18px; line-height: 28px; [class^="icon-"], [class*=" icon-"] { margin-right: 10px; } } } /* Page Title in Content */ .content-title { font-size: 24px; font-weight: normal; line-height: 26px; margin-top: 0; } /* Subhead */ .subhead { background: @wellBackground; border-bottom: 1px solid darken(@wellBackground, 7%); color: #0C192E; text-shadow: 0 1px 0 #FFF; margin-bottom: 10px; min-height: 43px; } .subhead-collapse { margin-bottom: 11px; } .subhead-collapse.collapse { height: auto; overflow: visible; } .btn-toolbar { margin-bottom: 5px; .btn-wrapper { display: inline-block; margin: 0 0 5px 5px; } } .subhead-fixed { position: fixed; width: 100%; top: 30px; z-index: 100; } @media (max-width: 767px) { .subhead { margin-left: -20px; margin-right: -20px; padding-left: 10px; padding-right: 10px; } } .subhead h1 { font-size: 17px; font-weight: normal; margin-left: 10px; margin-top: 6px; } /* Toolbar */ #toolbar .btn-success { width: 148px; } #toolbar #toolbar-options, #toolbar #toolbar-help { float: right; } html[dir=rtl] #toolbar #toolbar-options, html[dir=rtl] #toolbar #toolbar-help { float: left; } /* Content */ .well .page-header { margin: -10px 0 18px 0; padding-bottom: 5px; } .well .row-even p, .well .row-odd p { margin-bottom: 0; } /* Headings */ h1, h2, h3, h4, h5, h6 { margin: (@baseLineHeight / 1.5) 0; } h1 { font-size: 26px; line-height: 28px; } h2 { font-size: 22px; line-height: 24px; } h3 { font-size: 18px; line-height: 20px; } h4 { font-size: 14px; line-height: 16px; } h5 { font-size: 13px; line-height: 15px; } h6 { font-size: 12px; line-height: 14px; } /* Sidebar */ .sidebar-nav .nav-list > li > a { color: #555; } .sidebar-nav .nav-list > li.active > a { color: #fff; margin-right: -16px; } /* Quick-icons */ .quick-icons .nav li + .nav-header { margin-top: 12px; margin-bottom: 2px; } .quick-icons .nav-list > li > a { padding: 5px 15px; } .quick-icons { font-size: 14px; margin-bottom: 20px; } .quick-icons .nav-header, .well .module-title.nav-header { font-size: 13px; } .quick-icons h2.nav-header { margin: 12px 0 5px; } .quick-icons h2.nav-header:first-child { margin: 0px 0 5px; } .well .module-title.nav-header { padding: 0px 15px 7px; margin: 0px; } .quick-icons [class^="icon-"]:before, .quick-icons [class*=" icon-"]:before { font-size: 16px; margin-bottom: 20px; line-height: 18px; } .quick-icons .nav-list [class^="icon-"], .quick-icons .nav-list [class*=" icon-"] { margin-right: 9px; } html[dir=rtl] .quick-icons .nav-list [class^="icon-"], html[dir=rtl] .quick-icons .nav-list [class*=" icon-"] { margin-left: 9px; margin-right: 0px; } /* Links */ .j-links-separator { margin: 20px 0px; width: 100%; height: 0px; border-top: 2px solid #DDDDDD; } /* Main Container & System Debug Padding */ .container-main, #system-debug { padding-bottom: 50px; } /* Status Module */ #status { background: #ebebeb; border-top: 1px solid #d4d4d4; padding: 2px 10px 4px 10px; .box-shadow(~"0px 1px 0px rgba(255, 255, 255, 0.8) inset, 0px -15px 15px rgba(255, 255, 255, 0.6)"); color: #626262; .btn-toolbar, p { margin: 0px; } .btn-toolbar, .btn-group { font-size: 12px; } a { color: #626262; } } /* Status Module in top position */ #status.status-top { background: @headerBackground; .box-shadow(~"0px 1px 0px rgba(255, 255, 255, 0.2) inset, 0px -1px 0px rgba(0, 0, 0, 0.3) inset, 0px -1px 0px rgba(0, 0, 0, 0.3)"); border-top: 0; color: @navbarInverseText; padding: 2px 20px 6px 20px; a { color: @navbarInverseLinkColor; } } /* Pagination in toolbar */ .pagination-toolbar { margin: 0; } .pagination-toolbar a { line-height: 26px; } /* Toolbar dropdown */ .pull-right > .dropdown-menu { left: auto; right: 0; } /* Disabled (generic) */ .disabled { cursor: default; background-image: none; .opacity(65); .box-shadow(none); } /* Nav list filters */ .nav-filters hr { margin: 5px 0; } /* Module Assignment Tab */ #assignment.tab-pane { min-height: 500px; } // Button color .btn-primary.active, .btn-warning.active, .btn-danger.active, .btn-success.active, .btn-info.active, .btn-inverse.active { color: rgba(255, 255, 255, .95); } /* Chosen Max Width */ .chzn-container, .chzn-drop { max-width: 100% !important; } @media (max-width: 979px) { .navbar { .nav { font-size: 13px; margin: 0 2px 0 0; > li { > a { padding: 6px; } } } } .container-fluid { padding-left: 10px; padding-right: 10px; } } @media (min-width: 768px) { body { padding-top: 30px; } body.component { padding-top: 0; } .row-fluid [class*="span"] { margin-left: 15px; } .row-fluid .modal-batch [class*="span"] { margin-left: 0; } .nav-collapse.collapse.in { height: auto !important; } } @media (max-width: 767px) { .navbar-search.pull-right { float: none; text-align: center; } .subhead-fixed { position: static; width: auto; } .container-fluid { padding-left: 0; padding-right: 0; } } @media (min-width: 738px) { body.component { padding-top: 0; } } @media (max-width: 738px) { .navbar { .brand { font-size: 16px; } } } /* Subhead (toolbar) Collapse Button */ .btn-subhead { display: none; } @media (min-width: 481px) { #filter-bar { // Fix for Firefox height: 29px; } } /* Extended Responsive Styles */ @media (max-width: 480px) { .table th:nth-of-type(n+5), .table th:nth-of-type(3), .table th:nth-of-type(2), .table td:nth-of-type(n+5), .table td:nth-of-type(2), .table td:nth-of-type(3) { white-space: normal; } .pagination a { padding: 5px; } .btn-group.divider, .header .row-fluid .span3, .header .row-fluid .span7 { display: none; } .navbar .btn { margin: 0; } .btn-subhead { display: block; margin: 10px 0; } .chzn-container, .chzn-container .chzn-results, .chzn-container-single .chzn-drop { width: 99% !important; } .subhead-collapse.collapse { height: 0; overflow: hidden; } .btn-toolbar .btn-wrapper { display: block; margin:0px 10px 5px 10px; } .btn-toolbar .btn-wrapper .btn { width: 100% !important; } .subhead { background: none repeat scroll 0 0 transparent; border-bottom: 0 solid darken(@wellBackground, 7%); } .btn-group + .btn-group { margin-left: 10px; } .login .chzn-single { width: 222px !important; } .login .chzn-container, .login .chzn-drop { width: 230px !important; } } @media (max-width: 320px) { .view-login .navbar-fixed-bottom { display: none; } .btn-toolbar .btn-wrapper .btn { width: 100% !important; } } // Navbar .nav-collapse .nav li a, .dropdown-menu a { background-image: none; } .nav-collapse .dropdown-menu > li > span { display: block; padding: 3px 20px; } @media (max-width: @navbarCollapseWidth) { .navbar-fixed-top .navbar-inner, .navbar-fixed-top .navbar-inner .container-fluid { padding: 0; } .navbar .brand { margin-top: 2px; float: none; text-align: center; } .navbar .btn-navbar { margin-top: 3px; margin-right: 3px; margin-bottom: 3px; } .nav-collapse .nav .nav-header { color: @white; } .nav-collapse .nav, .navbar .nav-collapse .nav.pull-right { margin: 0; } .nav-collapse .dropdown-menu { margin: 0; } .nav-collapse .dropdown-menu > li > span { display: block; padding: 4px 15px; } .navbar-inverse .nav-collapse .dropdown-menu > li > span { color: @navbarInverseLinkColor; } .nav-collapse .nav > li > a.dropdown-toggle { background-color: rgba(255, 255, 255, 0.07); font-size: 12px; font-weight: bold; color: @grayLighter; text-transform: uppercase; padding-left: 15px; } .nav-collapse .nav li a { margin-bottom: 0; border-top: 1px solid rgba(255, 255, 255, 0.25); border-bottom: 1px solid rgba(0, 0, 0, 0.5); } .nav-collapse .nav li ul li ul.dropdown-menu, .nav-collapse .nav li ul li:hover ul.dropdown-menu, .nav-collapse .caret { display: none !important; } .nav-collapse .nav > li > a, .nav-collapse .dropdown-menu a { font-size: 15px; font-weight: normal; color: @white; .border-radius(0); } .navbar .nav-collapse .nav > li > .dropdown-menu::before, .navbar .nav-collapse .nav > li > .dropdown-menu::after, .navbar .nav-collapse .dropdown-submenu > a::after { display: none; } .nav-collapse .dropdown-menu li + li a { margin-bottom: 0; } } /* Sortable list*/ .sortable-handler.inactive { opacity: 0.3; filter: alpha(opacity=30); } /* Joomla and Extension update message */ .alert-joomlaupdate { text-align: center; button { vertical-align: baseline; } } // Normalize LTR Label (JBS request) // -------------------------- .form-horizontal { // Float the labels left .control-label { width: auto; padding-right: 5px; text-align: left; // Set a width for the spacer hr so it shows .spacer hr { width: 380px; @media (max-width: 420px) { width: 220px; } } } #jform_catid_chzn { vertical-align: middle; } } .form-vertical { .control-label { > label { display: inline-block; .ie7-inline-block(); } } .controls { margin-left: 0; } } @media (max-width: 979px) { .form-horizontal-desktop { .control-label { float: none; width: auto; padding-right: 0; padding-top: 0; text-align: left; > label { display: inline-block; .ie7-inline-block(); } } .controls { margin-left: 0; } } } @media (max-width: 1200px) { .row-fluid .row-fluid .form-horizontal-desktop { .control-label { float: none; width: auto; padding-right: 0; padding-top: 0; text-align: left; > label { display: inline-block; .ie7-inline-block(); } } .controls { margin-left: 0; } } } .form-inline-header { margin: 5px 0; .control-group, .control-label, .controls { display: inline-block; .ie7-inline-block(); } .control-label { width: auto; padding-right: 10px; } .controls { padding-right: 20px; } } /* Display checkboxes without bullets in list */ fieldset.checkboxes input { float: left; } fieldset.checkboxes li { list-style: none; } /* Media Manager folder icon override */ ul.manager .height-50 .icon-folder-2 { height: 35px; width: 35px; line-height: 35px; font-size: 30px; } /* Flash uploader */ .upload-queue > li > span, .upload-queue > li > a { margin: 0 2px; } .upload-queue .file-remove { float: right; } /* z-index issues */ .moor-box { z-index: 3; } .admin .chzn-container .chzn-drop { z-index: 1060; } /* Tree Select */ ul.treeselect, ul.treeselect li { margin: 0; padding: 0; } ul.treeselect { margin-top: 8px; } ul.treeselect li { padding: 2px 10px 2px; list-style: none; } ul.treeselect i.treeselect-toggle { line-height: 18px; } ul.treeselect label { font-size: 1em; margin-left: 8px; } ul.treeselect label.nav-header { padding: 0; } ul.treeselect input { margin: 2px 0 0 8px; } ul.treeselect .treeselect-menu { margin: 0 6px; } ul.treeselect ul.dropdown-menu { margin: 0; } ul.treeselect ul.dropdown-menu li { padding: 0 5px; border: none; } /* Tables */ td.has-context { // Fixes difference in height between normal and hover on cell with context height: 23px; } td.nowrap.has-context { width: 45%; } /* Item associations */ .item-associations { margin: 0; } .item-associations li { list-style: none; display: inline-block; margin: 0 0 3px 0; } .item-associations li a { color: #ffffff; } /* Content Languages flag */ #flag img { padding-top: 6px; vertical-align: top; } /* Tweaking of tooltips */ .tooltip { max-width: 400px; } .tooltip-inner { max-width: none; text-align: left; text-shadow: none; } th .tooltip-inner { font-weight: normal; } .tooltip.hasimage { opacity: 1; } /* Permissions dropdown display */ #permissions-sliders .chzn-container { position: absolute; } /* Component pop-up */ .container-popup { padding: 15px; } /* Min-width on buttons */ .controls .btn-group > .btn { min-width: 50px; } .controls .btn-group.btn-group-yesno > .btn { min-width: 84px; padding: 2px 12px; } .img-preview > img { max-height: 100%; } /* Help site refresh button*/ #helpsite-refresh { vertical-align: top; } .alert-no-items { margin-top: 20px; } @media (max-width: 767px) { html[dir=rtl] #toolbar #toolbar-options, html[dir=rtl] #toolbar #toolbar-help, #toolbar #toolbar-options, #toolbar #toolbar-help { float: none; } } /* Title field */ input.input-large-text { font-size: 18px; line-height: 22px; height: auto; } /* Extension type labels */ .info-labels { margin-top: -5px; margin-bottom: 10px; } /* Chosen color styles */ [class^="chzn-color"].chzn-single, [class*=" chzn-color"].chzn-single, [class^="chzn-color"].chzn-single .chzn-single-with-drop, [class*=" chzn-color"].chzn-single .chzn-single-with-drop { .box-shadow(none); } .chzn-color.chzn-single[rel="value_1"], .chzn-color-reverse.chzn-single[rel="value_0"], .chzn-color-state.chzn-single[rel="value_1"] { .buttonBackground(@btnSuccessBackground, @btnSuccessBackgroundHighlight); } .chzn-color.chzn-single[rel="value_0"], .chzn-color-reverse.chzn-single[rel="value_1"], .chzn-color-state.chzn-single[rel="value_0"], .chzn-color-state.chzn-single[rel="value_-1"], .chzn-color-state.chzn-single[rel="value_-2"] { .buttonBackground(@btnDangerBackground, @btnDangerBackgroundHighlight); } /* Widen the drop downs for the Permissions Field */ #permissions-sliders .input-small { width: 120px; } .editor { overflow: hidden; position: relative } .editor textarea.mce_editable { box-sizing: border-box; } /* For grid.boolean */ a.grid_false { display: inline-block; height: 16px; width: 16px; background-image: url('../images/admin/publish_r.png'); } a.grid_true { display: inline-block; height: 16px; width: 16px; background-image: url('../images/admin/icon-16-allow.png'); } /* For collapsible sidebar */ .j-sidebar-container { position: absolute; display: block; left: -16.5%; width: 16.5%; margin: -10px 0 0 -1px; padding-top: 28px; padding-bottom: 10px; background-color: @wellBackground; border-bottom: 1px solid darken(@wellBackground, 7%); border-right: 1px solid darken(@wellBackground, 7%); .border-radius(0 0 @baseBorderRadius 0); &.j-sidebar-hidden { left: -16.5%; } &.j-sidebar-visible { left: 0; } .filter-select { padding: 0 14px; } } .j-toggle-button-wrapper { position: absolute; display: block; top: 7px; padding: 0; &.j-toggle-hidden { right: -24px; } &.j-toggle-visible { right: 7px; } } .j-toggle-sidebar-button { font-size: 16px; color: @linkColor; text-decoration: none; cursor: pointer; &:hover { color: @linkColorHover; } } #system-message-container, #j-main-container { padding: 0 0 0 5px; min-height: 0; } #system-message-container.j-toggle-main, #j-main-container.j-toggle-main, #system-debug.j-toggle-main { float: right; } @media (min-width: 768px) { .j-toggle-transition { .transition(all 0.3s ease); } } @media (max-width: 979px) { .j-toggle-button-wrapper.j-toggle-hidden { right: -20px; } } @media (max-width: 767px) { .j-sidebar-container { position: relative; width: 100%; margin: 0 0 20px 0; padding: 0; background: transparent; border-right: 0; border-bottom: 0; } .j-sidebar-container.j-sidebar-hidden { margin-left: 16.5%; } .j-sidebar-container.j-sidebar-visible { margin-left: 0; } .j-toggle-sidebar-header, .j-toggle-button-wrapper { display: none; } .view-login { select { width: 232px; } } } @media (max-width: 420px) { .j-sidebar-container { margin: 0; } .view-login { .input-medium { width: 180px; } select { width: 232px } } } .break-word { word-break: break-all; word-wrap: break-word; } /* Customize Textarea Resizing */ textarea { resize: both; } textarea.vert { resize: vertical; } textarea.noResize { resize: none; } /* Prevent scrolling on the parent window of a modal */ body.modal-open { overflow: hidden; -ms-overflow-style: none; }PKb��\E�s&s&"templates/isis/less/variables.lessnu�[���// // Variables // -------------------------------------------------- // Global values // -------------------------------------------------- // Grays // ------------------------- @black: #000; @grayDarker: #222; @grayDark: #333; @gray: #555; @grayLight: #999; @grayLighter: #eee; @white: #fff; // Accent colors // ------------------------- @blue: #049cdb; @blueDark: #0064cd; @green: #46a546; @red: #9d261d; @yellow: #ffc40d; @orange: #f89406; @pink: #c3325f; @purple: #7a43b6; // Scaffolding // ------------------------- @bodyBackground: @white; @textColor: @grayDark; // Links // ------------------------- @linkColor: darken(#428bca, 10%); @linkColorHover: darken(@linkColor, 15%); // Typography // ------------------------- @sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif; @serifFontFamily: Georgia, "Times New Roman", Times, serif; @monoFontFamily: Monaco, Menlo, Consolas, "Courier New", monospace; // > Joomla JUI @baseFontSize: 13px; // < Joomla JUI @baseFontFamily: @sansFontFamily; // > Joomla JUI @baseLineHeight: 18px; // < Joomla JUI @altFontFamily: @serifFontFamily; @headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily @headingsFontWeight: bold; // instead of browser default, bold @headingsColor: inherit; // empty to use BS default, @textColor // Component sizing // ------------------------- // Based on 14px font-size and 20px line-height @fontSizeLarge: @baseFontSize * 1.25; // ~18px // > Joomla JUI @fontSizeSmall: ceil(@baseFontSize * 0.85); // ~12px // < Joomla JUI @fontSizeMini: @baseFontSize * 0.75; // ~11px @paddingLarge: 11px 19px; // 44px @paddingSmall: 2px 10px; // 26px @paddingMini: 0 6px; // 22px @baseBorderRadius: 4px; @borderRadiusLarge: 6px; @borderRadiusSmall: 3px; // Tables // ------------------------- @tableBackground: transparent; // overall background-color @tableBackgroundAccent: #f9f9f9; // for striping @tableBackgroundHover: #f5f5f5; // for hover @tableBorder: #ddd; // table and cell border // Buttons // ------------------------- @btnBackground: @white; @btnBackgroundHighlight: darken(@white, 10%); @btnBorder: #bbb; // > Joomla JUI @btnPrimaryBackground: #2384d3; @btnPrimaryBackgroundHighlight: #15497c; // < Joomla JUI @btnInfoBackground: #2f96b4; @btnInfoBackgroundHighlight: darken(@btnInfoBackground, 10%); @btnSuccessBackground: #46a546; @btnSuccessBackgroundHighlight: darken(@btnSuccessBackground, 10%); @btnWarningBackground: @orange; @btnWarningBackgroundHighlight: darken(@btnWarningBackground, 10%); @btnDangerBackground: #bd362f; @btnDangerBackgroundHighlight: darken(@btnDangerBackground, 10%); @btnInverseBackground: #444; @btnInverseBackgroundHighlight: @grayDarker; // Forms // ------------------------- @inputBackground: @white; @inputBorder: #ccc; @inputBorderRadius: 3px; @inputDisabledBackground: @grayLighter; @formActionsBackground: #f5f5f5; @inputHeight: @baseLineHeight + 10px; // base line-height + 8px vertical padding + 2px top/bottom border // Dropdowns // ------------------------- @dropdownBackground: @white; @dropdownBorder: rgba(0,0,0,.2); @dropdownDividerTop: #e5e5e5; @dropdownDividerBottom: @white; @dropdownLinkColor: @grayDark; @dropdownLinkColorHover: @white; @dropdownLinkColorActive: @dropdownLinkColor; @dropdownLinkBackgroundHover: @dropdownLinkBackgroundActive; @dropdownLinkBackgroundActive: @linkColor; // COMPONENT VARIABLES // -------------------------------------------------- // Z-index master list // ------------------------- // Used for a bird's eye view of components dependent on the z-axis // Try to avoid customizing these :) @zindexDropdown: 1000; @zindexPopover: 1010; @zindexTooltip: 1030; @zindexFixedNavbar: 1030; @zindexModalBackdrop: 1040; @zindexModal: 1050; // Sprite icons path // ------------------------- @iconSpritePath: "../img/glyphicons-halflings.png"; @iconWhiteSpritePath: "../img/glyphicons-halflings-white.png"; // Input placeholder text color // ------------------------- @placeholderText: @grayLight; // Hr border color // ------------------------- @hrBorder: @grayLighter; // Horizontal forms & lists // ------------------------- @horizontalComponentOffset: 180px; // Wells // ------------------------- @wellBackground: #f5f5f5; // Navbar // ------------------------- // > Joomla JUI @navbarCollapseWidth: 767px; // < Joomla JUI @navbarCollapseDesktopWidth: (@navbarCollapseWidth + 1); @navbarHeight: 40px; @navbarBackgroundHighlight: #ffffff; @navbarBackground: darken(@navbarBackgroundHighlight, 5%); @navbarBorder: darken(@navbarBackground, 12%); @navbarText: @gray; @navbarLinkColor: @gray; @navbarLinkColorHover: @grayDark; @navbarLinkColorActive: @gray; @navbarLinkBackgroundHover: transparent; @navbarLinkBackgroundActive: darken(@navbarBackground, 5%); @navbarBrandColor: @navbarLinkColor; // Inverted navbar // > Joomla JUI @navbarInverseBackground: darken(@headerBackground, 10%); @navbarInverseBackgroundHighlight: darken(@headerBackground, 5%); @navbarInverseBorder: darken(@headerBackground, 15%); @navbarInverseText: lighten(@grayLight, 25%); @navbarInverseLinkColor: lighten(@grayLight, 25%); // < Joomla JUI @navbarInverseLinkColorHover: @white; @navbarInverseLinkColorActive: @navbarInverseLinkColorHover; @navbarInverseLinkBackgroundHover: transparent; @navbarInverseLinkBackgroundActive: @navbarInverseBackground; @navbarInverseSearchBackground: lighten(@navbarInverseBackground, 25%); @navbarInverseSearchBackgroundFocus: @white; @navbarInverseSearchBorder: @navbarInverseBackground; @navbarInverseSearchPlaceholderColor: #ccc; @navbarInverseBrandColor: @navbarInverseLinkColor; // Pagination // ------------------------- @paginationBackground: #fff; @paginationBorder: #ddd; @paginationActiveBackground: #f5f5f5; // Hero unit // ------------------------- @heroUnitBackground: @grayLighter; @heroUnitHeadingColor: inherit; @heroUnitLeadColor: inherit; // Form states and alerts // ------------------------- @warningText: #8a6d3b; @warningBackground: #fcf8e3; @warningBorder: darken(spin(@warningBackground, -10), 5%); @errorText: #a94442; @errorBackground: #f2dede; @errorBorder: darken(spin(@errorBackground, -10), 5%); @successText: #3c763d; @successBackground: #dff0d8; @successBorder: darken(spin(@successBackground, -10), 5%); @infoText: #31708f; @infoBackground: #d9edf7; @infoBorder: darken(spin(@infoBackground, -10), 7%); // Tooltips and popovers // ------------------------- @tooltipColor: #fff; @tooltipBackground: #000; @tooltipArrowWidth: 5px; @tooltipArrowColor: @tooltipBackground; @popoverBackground: #fff; @popoverArrowWidth: 10px; @popoverArrowColor: #fff; @popoverTitleBackground: darken(@popoverBackground, 3%); // Special enhancement for popovers @popoverArrowOuterWidth: @popoverArrowWidth + 1; @popoverArrowOuterColor: rgba(0,0,0,.25); // GRID // -------------------------------------------------- // Default 940px grid // ------------------------- @gridColumns: 12; @gridColumnWidth: 60px; @gridGutterWidth: 20px; @gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1)); // 1200px min @gridColumnWidth1200: 70px; @gridGutterWidth1200: 30px; @gridRowWidth1200: (@gridColumns * @gridColumnWidth1200) + (@gridGutterWidth1200 * (@gridColumns - 1)); // 768px-979px @gridColumnWidth768: 42px; @gridGutterWidth768: 20px; @gridRowWidth768: (@gridColumns * @gridColumnWidth768) + (@gridGutterWidth768 * (@gridColumns - 1)); // Fluid grid // ------------------------- @fluidGridColumnWidth: percentage(@gridColumnWidth/@gridRowWidth); @fluidGridGutterWidth: percentage(@gridGutterWidth/@gridRowWidth); // 1200px min @fluidGridColumnWidth1200: percentage(@gridColumnWidth1200/@gridRowWidth1200); @fluidGridGutterWidth1200: percentage(@gridGutterWidth1200/@gridRowWidth1200); // 768px-979px @fluidGridColumnWidth768: percentage(@gridColumnWidth768/@gridRowWidth768); @fluidGridGutterWidth768: percentage(@gridGutterWidth768/@gridRowWidth768); // > Joomla JUI // Login // ------------------------- @loginBackground: @navbarInverseBackground; @loginBackgroundHighlight: @navbarInverseBackgroundHighlight; // Header // ------------------------- @headerBackground: #1a3867; @headerBackgroundHighlight: #17568c; // < Joomla JUI PKb��\�P5+5+templates/isis/error.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Templates.isis * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; // Getting params from template $params = JFactory::getApplication()->getTemplate(true)->params; $app = JFactory::getApplication(); $doc = JFactory::getDocument(); $lang = JFactory::getLanguage(); $this->language = $doc->language; $this->direction = $doc->direction; $input = $app->input; $user = JFactory::getUser(); // Detecting Active Variables $option = $input->get('option', ''); $view = $input->get('view', ''); $layout = $input->get('layout', ''); $task = $input->get('task', ''); $itemid = $input->get('Itemid', ''); $sitename = $app->get('sitename'); $cpanel = ($option === 'com_cpanel'); $showSubmenu = false; $this->submenumodules = JModuleHelper::getModules('submenu'); foreach ($this->submenumodules as $submenumodule) { $output = JModuleHelper::renderModule($submenumodule); if (strlen($output)) { $showSubmenu = true; break; } } // Logo file if ($params->get('logoFile')) { $logo = JUri::root() . $params->get('logoFile'); } else { $logo = $this->baseurl . '/templates/' . $this->template . '/images/logo.png'; } // Template Parameters $displayHeader = $params->get('displayHeader', '1'); $statusFixed = $params->get('statusFixed', '1'); $stickyToolbar = $params->get('stickyToolbar', '1'); ?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title><?php echo $this->title; ?> <?php echo htmlspecialchars($this->error->getMessage(), ENT_QUOTES, 'UTF-8'); ?></title> <?php if ($app->get('debug_lang', '0') == '1' || $app->get('debug', '0') == '1') : ?> <!-- Load additional CSS styles for debug mode--> <link rel="stylesheet" href="<?php echo JUri::root(); ?>/media/cms/css/debug.css" type="text/css" /> <?php endif; ?> <?php // If Right-to-Left ?> <?php if ($this->direction == 'rtl') : ?> <link rel="stylesheet" href="<?php echo JUri::root(); ?>/media/jui/css/bootstrap-rtl.css" type="text/css" /> <?php endif; ?> <?php // Load specific language related CSS ?> <?php $file = 'language/' . $lang->getTag() . '/' . $lang->getTag() . '.css'; ?> <?php if (is_file($file)) : ?> <link rel="stylesheet" href="<?php echo $file; ?>" type="text/css" /> <?php endif; ?> <link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/template<?php echo ($this->direction == 'rtl' ? '-rtl' : ''); ?>.css" type="text/css" /> <link href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template; ?>/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" /> <?php // Template color ?> <?php if ($params->get('templateColor')) : ?> <style type="text/css"> .navbar-inner, .navbar-inverse .navbar-inner, .nav-list > .active > a, .nav-list > .active > a:hover, .dropdown-menu li > a:hover, .dropdown-menu .active > a, .dropdown-menu .active > a:hover, .navbar-inverse .nav li.dropdown.open > .dropdown-toggle, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { background: <?php echo $params->get('templateColor');?>; } .navbar-inner, .navbar-inverse .nav li.dropdown.open > .dropdown-toggle, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle{ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, .25), inset 0 -1px 0 rgba(0, 0, 0, .1), inset 0 30px 10px rgba(0, 0, 0, .2); -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .25), inset 0 -1px 0 rgba(0, 0, 0, .1), inset 0 30px 10px rgba(0, 0, 0, .2); box-shadow: 0 1px 3px rgba(0, 0, 0, .25), inset 0 -1px 0 rgba(0, 0, 0, .1), inset 0 30px 10px rgba(0, 0, 0, .2); } </style> <?php endif; ?> <?php // Template header color ?> <?php if ($params->get('headerColor')) : ?> <style type="text/css"> .header { background: <?php echo $params->get('headerColor');?>; } </style> <?php endif; ?> <?php // Sidebar background color ?> <?php if ($params->get('sidebarColor')) : ?> <style type="text/css"> .nav-list > .active > a, .nav-list > .active > a:hover { background: <?php echo $params->get('sidebarColor'); ?>; } </style> <?php endif; ?> <script src="<?php echo JUri::root(true); ?>/media/jui/js/jquery.js" type="text/javascript"></script> <script src="<?php echo JUri::root(true); ?>/media/jui/js/jquery-noconflict.js" type="text/javascript"></script> <script src="<?php echo JUri::root(true); ?>/media/jui/js/bootstrap.js" type="text/javascript"></script> <script src="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/js/template.js" type="text/javascript"></script> <!--[if lt IE 9]> <script src="<?php echo JUri::root(true); ?>/media/jui/js/html5.js"></script> <![endif]--> </head> <body class="admin <?php echo $option . " view-" . $view . " layout-" . $layout . " task-" . $task . " ";?>" data-spy="scroll" data-target=".subhead" data-offset="87"> <!-- Top Navigation --> <nav class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar-inner"> <div class="container-fluid"> <?php if ($params->get('admin_menus') != '0') : ?> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <?php endif; ?> <a class="admin-logo" href="<?php echo $this->baseurl; ?>"><span class="icon-joomla"></span></a> <a class="brand hidden-desktop hidden-tablet" href="<?php echo JUri::root(); ?>" title="<?php echo JText::sprintf('TPL_ISIS_PREVIEW', $sitename); ?>" target="_blank"><?php echo JHtml::_('string.truncate', $sitename, 14, false, false); ?> <span class="icon-out-2 small"></span></a> <?php if ($params->get('admin_menus') != '0') : ?> <div class="nav-collapse"> <?php else : ?> <div> <?php endif; ?> <?php // Display menu modules ?> <?php $this->menumodules = JModuleHelper::getModules('menu'); ?> <?php foreach ($this->menumodules as $menumodule) : ?> <?php $output = JModuleHelper::renderModule($menumodule, array('style' => 'none')); ?> <?php $params = new Registry; ?> <?php $params->loadString($menumodule->params); ?> <?php echo $output; ?> <?php endforeach; ?> <ul class="nav nav-user<?php echo ($this->direction == 'rtl') ? ' pull-left' : ' pull-right'; ?>"> <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#"><span class="icon-cog"></span> <span class="caret"></span></a> <ul class="dropdown-menu"> <li> <span> <span class="icon-user"></span> <strong><?php echo $user->name; ?></strong> </span> </li> <li class="divider"></li> <li class=""> <a href="index.php?option=com_admin&task=profile.edit&id=<?php echo $user->id; ?>"><?php echo JText::_('TPL_ISIS_EDIT_ACCOUNT'); ?></a> </li> <li class="divider"></li> <li class=""> <a href="<?php echo JRoute::_('index.php?option=com_login&task=logout&' . JSession::getFormToken() . '=1'); ?>"><?php echo JText::_('TPL_ISIS_LOGOUT'); ?></a> </li> </ul> </li> </ul> <a class="brand visible-desktop visible-tablet" href="<?php echo JUri::root(); ?>" title="<?php echo JText::sprintf('TPL_ISIS_PREVIEW', $sitename); ?>" target="_blank"><?php echo JHtml::_('string.truncate', $sitename, 14, false, false); ?> <span class="icon-out-2 small"></span></a> </div> <!--/.nav-collapse --> </div> </div> </nav> <!-- Header --> <header class="header"> <?php if ($displayHeader) : ?> <div class="container-logo"> <img src="<?php echo $logo; ?>" class="logo" /> </div> <?php endif; ?> <div class="container-title"> <h1 class="page-title"><?php echo JText::_('ERROR'); ?></h1> </div> </header> <?php if ((!$statusFixed) && ($this->getInstance()->countModules('status'))) : ?> <!-- Begin Status Module --> <div id="status" class="navbar status-top hidden-phone"> <div class="btn-toolbar"> <div class="btn-group pull-right"> <p> © <?php echo date('Y'); ?> <?php echo $sitename; ?> </p> </div> <?php // Display status modules ?> <?php $this->statusmodules = JModuleHelper::getModules('status'); ?> <?php foreach ($this->statusmodules as $statusmodule) : ?> <?php $output = JModuleHelper::renderModule($statusmodule, array('style' => 'no')); ?> <?php $params = new Registry; ?> <?php $params->loadString($statusmodule->params); ?> <?php echo $output; ?> <?php endforeach; ?> </div> <div class="clearfix"></div> </div> <!-- End Status Module --> <?php endif; ?> <div class="subhead-spacer" style="margin-bottom: 20px"></div> <!-- container-fluid --> <div class="container-fluid container-main"> <section id="content"> <!-- Begin Content --> <div class="row-fluid"> <div class="span12"> <!-- Begin Content --> <h1 class="page-header"><?php echo JText::_('JERROR_AN_ERROR_HAS_OCCURRED'); ?></h1> <blockquote> <span class="label label-inverse"><?php echo $this->error->getCode(); ?></span> <?php echo htmlspecialchars($this->error->getMessage(), ENT_QUOTES, 'UTF-8');?> </blockquote> <?php if ($this->debug) : ?> <?php echo $this->renderBacktrace(); ?> <?php endif; ?> <p><a href="<?php echo $this->baseurl; ?>" class="btn"><span class="icon-dashboard"></span> <?php echo JText::_('JGLOBAL_TPL_CPANEL_LINK_TEXT'); ?></a></p> <!-- End Content --> </div> </div> <!-- End Content --> </section> <hr /> </div> <script> (function($){ // fix sub nav on scroll var $win = $(window) , $nav = $('.subhead') , navTop = $('.subhead').length && $('.subhead').offset().top - 40 , isFixed = 0 processScroll() // hack sad times - holdover until rewrite for 2.1 $nav.on('click', function () { if (!isFixed) setTimeout(function () { $win.scrollTop($win.scrollTop() - 47) }, 10) }) $win.on('scroll', processScroll) function processScroll() { var i, scrollTop = $win.scrollTop() if (scrollTop >= navTop && !isFixed) { isFixed = 1 $nav.addClass('subhead-fixed') } else if (scrollTop <= navTop && isFixed) { isFixed = 0 $nav.removeClass('subhead-fixed') } } })(jQuery); </script> </body> </html> PKb��\+r����+templates/isis/html/mod_version/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage mod_version * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <?php if (!empty($version)) : ?> <?php echo $version; ?> <?php echo " — "; ?> <?php endif; ?> PKb��\����5templates/isis/html/layouts/joomla/system/message.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.Isis * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $msgList = $displayData['msgList']; $alert = array('error' => 'alert-error', 'warning' => '', 'notice' => 'alert-info', 'message' => 'alert-success'); ?> <div id="system-message-container"> <?php if (is_array($msgList) && $msgList) : ?> <button type="button" class="close" data-dismiss="alert">×</button> <?php foreach ($msgList as $type => $msgs) : ?> <div class="alert <?php echo $alert[$type]; ?>"> <h4 class="alert-heading"><?php echo JText::_($type); ?></h4> <?php if ($msgs) : ?> <?php foreach ($msgs as $msg) : ?> <p class="alert-message"><?php echo $msg; ?></p> <?php endforeach; ?> <?php endif; ?> </div> <?php endforeach; ?> <?php endif; ?> </div> PKb��\0�+�templates/isis/html/modules.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Templates.isis * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * This is a file to add template specific chrome to module rendering. To use it you would * set the style attribute for the given module(s) include in your template to use the style * for each given modChrome function. * * eg. To render a module mod_test in the submenu style, you would use the following include: * <jdoc:include type="module" name="test" style="submenu" /> * * This gives template designers ultimate control over how modules are rendered. * * NOTICE: All chrome wrapping methods should be named: modChrome_{STYLE} and take the same * two arguments. */ /* * Module chrome for rendering the module in a submenu */ function modChrome_title($module, &$params, &$attribs) { if ($module->content) { echo "<div class=\"module-title\"><h6>" . $module->title . "</h6></div>"; echo $module->content; } } function modChrome_no($module, &$params, &$attribs) { if ($module->content) { echo $module->content; } } function modChrome_well($module, &$params, &$attribs) { if ($module->content) { $moduleTag = $params->get('module_tag', 'div'); $bootstrapSize = (int) $params->get('bootstrap_size'); $moduleClass = ($bootstrapSize) ? ' span' . $bootstrapSize : ''; $headerTag = htmlspecialchars($params->get('header_tag', 'h2')); // Temporarily store header class in variable $headerClass = $params->get('header_class'); $headerClass = ($headerClass) ? ' ' . htmlspecialchars($headerClass) : ''; echo '<' . $moduleTag . ' class="well well-small' . $moduleClass . '">'; if ($module->showtitle) { echo '<' . $headerTag . ' class="module-title nav-header' . $headerClass . '">' . $module->title . '</' . $headerTag . '>'; } echo $module->content; echo '</' . $moduleTag . '>'; } } PKb��\�|�4&templates/isis/html/editor_content.cssnu�[���body { background: #000; font-family: Arial,sans-serif; line-height: 1.3em; font-size: 96%; color: #333; } h1 { font-family:Helvetica ,Arial,sans-serif; font-size: 16px; font-weight: bold; color: #ff0000; } h2 { font-family: Arial, Helvetica,sans-serif; font-size: 14px; font-weight: normal; color: #333; } h3 { font-weight: bold; font-family: Helvetica,Arial,sans-serif; font-size: 19px; color: #135cae; } h4 { font-weight: bold; font-family: Arial, Helvetica, sans-serif; color: #333; } a:link, a:visited { color: #1B57B1; text-decoration: none; font-weight: normal; } a:hover { color: #00c; text-decoration: underline; font-weight: normal; } div.caption { padding: 0 10px 0 10px; } div.caption img { border: 1px solid #CCC; } div.caption p { font-size: .90em; color: #666; text-align: center; } div.teaser { background:#ccc; } PKb��\�9��"templates/isis/html/pagination.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Template.Isis * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * This is a file to add template specific chrome to pagination rendering. * * pagination_list_footer * Input variable $list is an array with offsets: * $list[limit] : int * $list[limitstart] : int * $list[total] : int * $list[limitfield] : string * $list[pagescounter] : string * $list[pageslinks] : string * * pagination_list_render * Input variable $list is an array with offsets: * $list[all] * [data] : string * [active] : boolean * $list[start] * [data] : string * [active] : boolean * $list[previous] * [data] : string * [active] : boolean * $list[next] * [data] : string * [active] : boolean * $list[end] * [data] : string * [active] : boolean * $list[pages] * [{PAGE}][data] : string * [{PAGE}][active] : boolean * * pagination_item_active * Input variable $item is an object with fields: * $item->base : integer * $item->link : string * $item->text : string * * pagination_item_inactive * Input variable $item is an object with fields: * $item->base : integer * $item->link : string * $item->text : string * * This gives template designers ultimate control over how pagination is rendered. * * NOTE: If you override pagination_item_active OR pagination_item_inactive you MUST override them both */ /** * Renders the pagination footer * * @param array $list Array containing pagination footer * * @return string HTML markup for the full pagination footer * * @since 3.0 */ function pagination_list_footer($list) { $html = "<div class=\"pagination pagination-toolbar\">\n"; $html .= $list['pageslinks']; $html .= "\n<input type=\"hidden\" name=\"" . $list['prefix'] . "limitstart\" value=\"" . $list['limitstart'] . "\" />"; $html .= "\n</div>"; return $html; } /** * Renders the pagination list * * @param array $list Array containing pagination information * * @return string HTML markup for the full pagination object * * @since 3.0 */ function pagination_list_render($list) { // Calculate to display range of pages $currentPage = 1; $range = 1; $step = 5; foreach ($list['pages'] as $k => $page) { if (!$page['active']) { $currentPage = $k; } } if ($currentPage >= $step) { if ($currentPage % $step == 0) { $range = ceil($currentPage / $step) + 1; } else { $range = ceil($currentPage / $step); } } $html = '<ul class="pagination-list">'; $html .= $list['start']['data']; $html .= $list['previous']['data']; foreach ($list['pages'] as $k => $page) { if (in_array($k, range($range * $step - ($step + 1), $range * $step))) { if (($k % $step == 0 || $k == $range * $step - ($step + 1)) && $k != $currentPage && $k != $range * $step - $step) { $page['data'] = preg_replace('#(<a.*?>).*?(</a>)#', '$1...$2', $page['data']); } } $html .= $page['data']; } $html .= $list['next']['data']; $html .= $list['end']['data']; $html .= '</ul>'; return $html; } /** * Renders an active item in the pagination block * * @param JPaginationObject $item The current pagination object * * @return string HTML markup for active item * * @since 3.0 */ function pagination_item_active(&$item) { $class = ''; // Check for "Start" item if ($item->text == JText::_('JLIB_HTML_START')) { $display = '<span class="icon-first"></span>'; } // Check for "Prev" item if ($item->text == JText::_('JPREV')) { $item->text = JText::_('JPREVIOUS'); $display = '<span class="icon-previous"></span>'; } // Check for "Next" item if ($item->text == JText::_('JNEXT')) { $display = '<span class="icon-next"></span>'; } // Check for "End" item if ($item->text == JText::_('JLIB_HTML_END')) { $display = '<span class="icon-last"></span>'; } // If the display object isn't set already, just render the item with its text if (!isset($display)) { $display = $item->text; $class = ' class="hidden-phone"'; } if ($item->base > 0) { $limit = 'limitstart.value=' . $item->base; } else { $limit = 'limitstart.value=0'; } $title = ''; if (!is_numeric($item->text)) { JHtml::_('bootstrap.tooltip'); $title = ' class="hasTooltip" title="' . $item->text . '"'; } return '<li' . $class . '><a' . $title . ' href="#" onclick="document.adminForm.' . $item->prefix . $limit . '; Joomla.submitform();return false;">' . $display . '</a></li>'; } /** * Renders an inactive item in the pagination block * * @param JPaginationObject $item The current pagination object * * @return string HTML markup for inactive item * * @since 3.0 */ function pagination_item_inactive(&$item) { // Check for "Start" item if ($item->text == JText::_('JLIB_HTML_START')) { return '<li class="disabled"><a><span class="icon-first"></span></a></li>'; } // Check for "Prev" item if ($item->text == JText::_('JPREV')) { return '<li class="disabled"><a><span class="icon-previous"></span></a></li>'; } // Check for "Next" item if ($item->text == JText::_('JNEXT')) { return '<li class="disabled"><a><span class="icon-next"></span></a></li>'; } // Check for "End" item if ($item->text == JText::_('JLIB_HTML_END')) { return '<li class="disabled"><a><span class="icon-last"></span></a></li>'; } // Check if the item is the active page if (isset($item->active) && ($item->active)) { return '<li class="active hidden-phone"><a>' . $item->text . '</a></li>'; } // Doesn't match any other condition, render a normal item return '<li class="disabled hidden-phone"><a>' . $item->text . '</a></li>'; } PKb��\�<J/����templates/isis/css/template.cssnu�[���article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; } audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } audio:not([controls]) { display: none; } html { font-size: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } a:hover, a:active { outline: 0; } sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } img { max-width: 100%; width: auto \9; height: auto; vertical-align: middle; border: 0; -ms-interpolation-mode: bicubic; } #map_canvas img, .google-maps img, .gm-style img { max-width: none; } button, input, select, textarea { margin: 0; font-size: 100%; vertical-align: middle; } button, input { *overflow: visible; line-height: normal; } button::-moz-focus-inner, input::-moz-focus-inner { padding: 0; border: 0; } button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; cursor: pointer; } label, select, button, input[type="button"], input[type="reset"], input[type="submit"], input[type="radio"], input[type="checkbox"] { cursor: pointer; } input[type="search"] { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; -webkit-appearance: textfield; } input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; } textarea { overflow: auto; vertical-align: top; } @media print { * { text-shadow: none !important; color: #000 !important; background: transparent !important; box-shadow: none !important; } a, a:visited { text-decoration: underline; } a[href]:after { content: " (" attr(href) ")"; } abbr[title]:after { content: " (" attr(title) ")"; } .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } thead { display: table-header-group; } tr, img { page-break-inside: avoid; } img { max-width: 100% !important; } @page { margin: 0.5cm; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } } .clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; content: ""; line-height: 0; } .clearfix:after { clear: both; } .hide-text { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .input-block-level { display: block; width: 100%; min-height: 28px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } body { margin: 0; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 13px; line-height: 18px; color: #333; background-color: #fff; } a { color: #3071a9; text-decoration: none; } a:hover, a:focus { color: #1f496e; text-decoration: underline; } .img-rounded { -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .img-polaroid { padding: 4px; background-color: #fff; border: 1px solid #ccc; border: 1px solid rgba(0,0,0,0.2); -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.1); -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.1); box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .img-circle { -webkit-border-radius: 500px; -moz-border-radius: 500px; border-radius: 500px; } .row { margin-left: -20px; *zoom: 1; } .row:before, .row:after { display: table; content: ""; line-height: 0; } .row:after { clear: both; } [class*="span"] { float: left; min-height: 1px; margin-left: 20px; } .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 940px; } .span12 { width: 940px; } .span11 { width: 860px; } .span10 { width: 780px; } .span9 { width: 700px; } .span8 { width: 620px; } .span7 { width: 540px; } .span6 { width: 460px; } .span5 { width: 380px; } .span4 { width: 300px; } .span3 { width: 220px; } .span2 { width: 140px; } .span1 { width: 60px; } .offset12 { margin-left: 980px; } .offset11 { margin-left: 900px; } .offset10 { margin-left: 820px; } .offset9 { margin-left: 740px; } .offset8 { margin-left: 660px; } .offset7 { margin-left: 580px; } .offset6 { margin-left: 500px; } .offset5 { margin-left: 420px; } .offset4 { margin-left: 340px; } .offset3 { margin-left: 260px; } .offset2 { margin-left: 180px; } .offset1 { margin-left: 100px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; content: ""; line-height: 0; } .row-fluid:after { clear: both; } .row-fluid [class*="span"] { display: block; width: 100%; min-height: 28px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; margin-left: 2.1276595744681%; *margin-left: 2.0744680851064%; } .row-fluid [class*="span"]:first-child { margin-left: 0; } .row-fluid .controls-row [class*="span"] + [class*="span"] { margin-left: 2.1276595744681%; } .row-fluid .span12 { width: 100%; *width: 99.946808510638%; } .row-fluid .span11 { width: 91.489361702128%; *width: 91.436170212766%; } .row-fluid .span10 { width: 82.978723404255%; *width: 82.925531914894%; } .row-fluid .span9 { width: 74.468085106383%; *width: 74.414893617021%; } .row-fluid .span8 { width: 65.957446808511%; *width: 65.904255319149%; } .row-fluid .span7 { width: 57.446808510638%; *width: 57.393617021277%; } .row-fluid .span6 { width: 48.936170212766%; *width: 48.882978723404%; } .row-fluid .span5 { width: 40.425531914894%; *width: 40.372340425532%; } .row-fluid .span4 { width: 31.914893617021%; *width: 31.86170212766%; } .row-fluid .span3 { width: 23.404255319149%; *width: 23.351063829787%; } .row-fluid .span2 { width: 14.893617021277%; *width: 14.840425531915%; } .row-fluid .span1 { width: 6.3829787234043%; *width: 6.3297872340426%; } .row-fluid .offset12 { margin-left: 104.25531914894%; *margin-left: 104.14893617021%; } .row-fluid .offset12:first-child { margin-left: 102.12765957447%; *margin-left: 102.02127659574%; } .row-fluid .offset11 { margin-left: 95.744680851064%; *margin-left: 95.63829787234%; } .row-fluid .offset11:first-child { margin-left: 93.617021276596%; *margin-left: 93.510638297872%; } .row-fluid .offset10 { margin-left: 87.234042553191%; *margin-left: 87.127659574468%; } .row-fluid .offset10:first-child { margin-left: 85.106382978723%; *margin-left: 85%; } .row-fluid .offset9 { margin-left: 78.723404255319%; *margin-left: 78.617021276596%; } .row-fluid .offset9:first-child { margin-left: 76.595744680851%; *margin-left: 76.489361702128%; } .row-fluid .offset8 { margin-left: 70.212765957447%; *margin-left: 70.106382978723%; } .row-fluid .offset8:first-child { margin-left: 68.085106382979%; *margin-left: 67.978723404255%; } .row-fluid .offset7 { margin-left: 61.702127659574%; *margin-left: 61.595744680851%; } .row-fluid .offset7:first-child { margin-left: 59.574468085106%; *margin-left: 59.468085106383%; } .row-fluid .offset6 { margin-left: 53.191489361702%; *margin-left: 53.085106382979%; } .row-fluid .offset6:first-child { margin-left: 51.063829787234%; *margin-left: 50.957446808511%; } .row-fluid .offset5 { margin-left: 44.68085106383%; *margin-left: 44.574468085106%; } .row-fluid .offset5:first-child { margin-left: 42.553191489362%; *margin-left: 42.446808510638%; } .row-fluid .offset4 { margin-left: 36.170212765957%; *margin-left: 36.063829787234%; } .row-fluid .offset4:first-child { margin-left: 34.042553191489%; *margin-left: 33.936170212766%; } .row-fluid .offset3 { margin-left: 27.659574468085%; *margin-left: 27.553191489362%; } .row-fluid .offset3:first-child { margin-left: 25.531914893617%; *margin-left: 25.425531914894%; } .row-fluid .offset2 { margin-left: 19.148936170213%; *margin-left: 19.042553191489%; } .row-fluid .offset2:first-child { margin-left: 17.021276595745%; *margin-left: 16.914893617021%; } .row-fluid .offset1 { margin-left: 10.63829787234%; *margin-left: 10.531914893617%; } .row-fluid .offset1:first-child { margin-left: 8.5106382978723%; *margin-left: 8.4042553191489%; } [class*="span"].hide, .row-fluid [class*="span"].hide { display: none; } [class*="span"].pull-right, .row-fluid [class*="span"].pull-right { float: right; } .container { margin-right: auto; margin-left: auto; *zoom: 1; } .container:before, .container:after { display: table; content: ""; line-height: 0; } .container:after { clear: both; } .container-fluid { padding-right: 20px; padding-left: 20px; *zoom: 1; } .container-fluid:before, .container-fluid:after { display: table; content: ""; line-height: 0; } .container-fluid:after { clear: both; } p { margin: 0 0 9px; } .lead { margin-bottom: 18px; font-size: 19.5px; font-weight: 200; line-height: 27px; } small { font-size: 85%; } strong { font-weight: bold; } em { font-style: italic; } cite { font-style: normal; } .muted { color: #999; } a.muted:hover, a.muted:focus { color: #808080; } .text-warning { color: #8a6d3b; } a.text-warning:hover, a.text-warning:focus { color: #66512c; } .text-error { color: #a94442; } a.text-error:hover, a.text-error:focus { color: #843534; } .text-info { color: #31708f; } a.text-info:hover, a.text-info:focus { color: #245269; } .text-success { color: #3c763d; } a.text-success:hover, a.text-success:focus { color: #2b542c; } .text-left { text-align: left; } .text-right { text-align: right; } .text-center { text-align: center; } h1, h2, h3, h4, h5, h6 { margin: 9px 0; font-family: inherit; font-weight: bold; line-height: 18px; color: inherit; text-rendering: optimizelegibility; } h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { font-weight: normal; line-height: 1; color: #999; } h1, h2, h3 { line-height: 36px; } h1 { font-size: 35.75px; } h2 { font-size: 29.25px; } h3 { font-size: 22.75px; } h4 { font-size: 16.25px; } h5 { font-size: 13px; } h6 { font-size: 11.05px; } h1 small { font-size: 22.75px; } h2 small { font-size: 16.25px; } h3 small { font-size: 13px; } h4 small { font-size: 13px; } .page-header { padding-bottom: 8px; margin: 18px 0 27px; border-bottom: 1px solid #eee; } ul, ol { padding: 0; margin: 0 0 9px 25px; } ul ul, ul ol, ol ol, ol ul { margin-bottom: 0; } li { line-height: 18px; } ul.unstyled, ol.unstyled { margin-left: 0; list-style: none; } ul.inline, ol.inline { margin-left: 0; list-style: none; } ul.inline > li, ol.inline > li { display: inline-block; *display: inline; *zoom: 1; padding-left: 5px; padding-right: 5px; } dl { margin-bottom: 18px; } dt, dd { line-height: 18px; } dt { font-weight: bold; } dd { margin-left: 9px; } .dl-horizontal { *zoom: 1; } .dl-horizontal:before, .dl-horizontal:after { display: table; content: ""; line-height: 0; } .dl-horizontal:after { clear: both; } .dl-horizontal dt { float: left; width: 160px; clear: left; text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .dl-horizontal dd { margin-left: 180px; } hr { margin: 18px 0; border: 0; border-top: 1px solid #eee; border-bottom: 1px solid #fff; } abbr[title], abbr[data-original-title] { cursor: help; border-bottom: 1px dotted #999; } abbr.initialism { font-size: 90%; text-transform: uppercase; } blockquote { padding: 0 0 0 15px; margin: 0 0 18px; border-left: 5px solid #eee; } blockquote p { margin-bottom: 0; font-size: 16.25px; font-weight: 300; line-height: 1.25; } blockquote small { display: block; line-height: 18px; color: #999; } blockquote small:before { content: '\2014 \00A0'; } blockquote.pull-right { float: right; padding-right: 15px; padding-left: 0; border-right: 5px solid #eee; border-left: 0; } blockquote.pull-right p, blockquote.pull-right small { text-align: right; } blockquote.pull-right small:before { content: ''; } blockquote.pull-right small:after { content: '\00A0 \2014'; } q:before, q:after, blockquote:before, blockquote:after { content: ""; } address { display: block; margin-bottom: 18px; font-style: normal; line-height: 18px; } code, pre { padding: 0 3px 2px; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 11px; color: #333; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } code { padding: 2px 4px; color: #d14; background-color: #f7f7f9; border: 1px solid #e1e1e8; white-space: nowrap; } pre { display: block; padding: 8.5px; margin: 0 0 9px; font-size: 12px; line-height: 18px; word-break: break-all; word-wrap: break-word; white-space: pre; white-space: pre-wrap; background-color: #f5f5f5; border: 1px solid #ccc; border: 1px solid rgba(0,0,0,0.15); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } pre.prettyprint { margin-bottom: 18px; } pre code { padding: 0; color: inherit; white-space: pre; white-space: pre-wrap; background-color: transparent; border: 0; } .pre-scrollable { max-height: 340px; overflow-y: scroll; } form { margin: 0 0 18px; } fieldset { padding: 0; margin: 0; border: 0; } legend { display: block; width: 100%; padding: 0; margin-bottom: 18px; font-size: 19.5px; line-height: 36px; color: #333; border: 0; border-bottom: 1px solid #e5e5e5; } legend small { font-size: 13.5px; color: #999; } label, input, button, select, textarea { font-size: 13px; font-weight: normal; line-height: 18px; } input, button, select, textarea { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } label { display: block; margin-bottom: 5px; } select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { display: inline-block; height: 18px; padding: 4px 6px; margin-bottom: 9px; font-size: 13px; line-height: 18px; color: #555; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; vertical-align: middle; } input, textarea, .uneditable-input { width: 206px; } textarea { height: auto; } textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { background-color: #fff; border: 1px solid #ccc; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); -webkit-transition: border linear .2s, box-shadow linear .2s; -moz-transition: border linear .2s, box-shadow linear .2s; -o-transition: border linear .2s, box-shadow linear .2s; transition: border linear .2s, box-shadow linear .2s; } textarea:focus, input[type="text"]:focus, input[type="password"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="date"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, input[type="number"]:focus, input[type="email"]:focus, input[type="url"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="color"]:focus, .uneditable-input:focus { border-color: rgba(82,168,236,0.8); outline: 0; outline: thin dotted \9; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); } input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; *margin-top: 0; margin-top: 1px \9; line-height: normal; } input[type="file"], input[type="image"], input[type="submit"], input[type="reset"], input[type="button"], input[type="radio"], input[type="checkbox"] { width: auto; } select, input[type="file"] { height: 28px; *margin-top: 4px; line-height: 28px; } select { width: 220px; border: 1px solid #ccc; background-color: #fff; } select[multiple], select[size] { height: auto; } select:focus, input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .uneditable-input, .uneditable-textarea { color: #999; background-color: #fcfcfc; border-color: #ccc; -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.025); -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.025); box-shadow: inset 0 1px 2px rgba(0,0,0,0.025); cursor: not-allowed; } .uneditable-input { overflow: hidden; white-space: nowrap; } .uneditable-textarea { width: auto; height: auto; } input:-moz-placeholder, textarea:-moz-placeholder { color: #999; } input:-ms-input-placeholder, textarea:-ms-input-placeholder { color: #999; } input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color: #999; } .radio, .checkbox { min-height: 18px; padding-left: 20px; } .radio input[type="radio"], .checkbox input[type="checkbox"] { float: left; margin-left: -20px; } .controls > .radio:first-child, .controls > .checkbox:first-child { padding-top: 5px; } .radio.inline, .checkbox.inline { display: inline-block; padding-top: 5px; margin-bottom: 0; vertical-align: middle; } .radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { margin-left: 10px; } .input-mini { width: 60px; } .input-small { width: 90px; } .input-medium { width: 150px; } .input-large { width: 210px; } .input-xlarge { width: 270px; } .input-xxlarge { width: 530px; } input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"] { float: none; margin-left: 0; } .input-append input[class*="span"], .input-append .uneditable-input[class*="span"], .input-prepend input[class*="span"], .input-prepend .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"], .row-fluid .input-prepend [class*="span"], .row-fluid .input-append [class*="span"] { display: inline-block; } input, textarea, .uneditable-input { margin-left: 0; } .controls-row [class*="span"] + [class*="span"] { margin-left: 20px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 926px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 846px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 766px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 686px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 606px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 526px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 446px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 366px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 286px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 206px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 126px; } input.span1, textarea.span1, .uneditable-input.span1 { width: 46px; } .controls-row { *zoom: 1; } .controls-row:before, .controls-row:after { display: table; content: ""; line-height: 0; } .controls-row:after { clear: both; } .controls-row [class*="span"], .row-fluid .controls-row [class*="span"] { float: left; } .controls-row .checkbox[class*="span"], .controls-row .radio[class*="span"] { padding-top: 5px; } input[disabled], select[disabled], textarea[disabled], input[readonly], select[readonly], textarea[readonly] { cursor: not-allowed; background-color: #eee; } input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"][readonly], input[type="checkbox"][readonly] { background-color: transparent; } .control-group.warning .control-label, .control-group.warning .help-block, .control-group.warning .help-inline { color: #8a6d3b; } .control-group.warning .checkbox, .control-group.warning .radio, .control-group.warning input, .control-group.warning select, .control-group.warning textarea { color: #8a6d3b; } .control-group.warning input, .control-group.warning select, .control-group.warning textarea { border-color: #8a6d3b; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); } .control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { border-color: #66512c; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #c0a16b; -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #c0a16b; box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #c0a16b; } .control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on { color: #8a6d3b; background-color: #fcf8e3; border-color: #8a6d3b; } .control-group.error .control-label, .control-group.error .help-block, .control-group.error .help-inline { color: #a94442; } .control-group.error .checkbox, .control-group.error .radio, .control-group.error input, .control-group.error select, .control-group.error textarea { color: #a94442; } .control-group.error input, .control-group.error select, .control-group.error textarea { border-color: #a94442; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); } .control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { border-color: #843534; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #ce8483; -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #ce8483; box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #ce8483; } .control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on { color: #a94442; background-color: #f2dede; border-color: #a94442; } .control-group.success .control-label, .control-group.success .help-block, .control-group.success .help-inline { color: #3c763d; } .control-group.success .checkbox, .control-group.success .radio, .control-group.success input, .control-group.success select, .control-group.success textarea { color: #3c763d; } .control-group.success input, .control-group.success select, .control-group.success textarea { border-color: #3c763d; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); } .control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { border-color: #2b542c; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #67b168; -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #67b168; box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #67b168; } .control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on { color: #3c763d; background-color: #dff0d8; border-color: #3c763d; } .control-group.info .control-label, .control-group.info .help-block, .control-group.info .help-inline { color: #31708f; } .control-group.info .checkbox, .control-group.info .radio, .control-group.info input, .control-group.info select, .control-group.info textarea { color: #31708f; } .control-group.info input, .control-group.info select, .control-group.info textarea { border-color: #31708f; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); } .control-group.info input:focus, .control-group.info select:focus, .control-group.info textarea:focus { border-color: #245269; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #5ea5c8; -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #5ea5c8; box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #5ea5c8; } .control-group.info .input-prepend .add-on, .control-group.info .input-append .add-on { color: #31708f; background-color: #d9edf7; border-color: #31708f; } input:focus:invalid, textarea:focus:invalid, select:focus:invalid { color: #b94a48; border-color: #ee5f5b; } input:focus:invalid:focus, textarea:focus:invalid:focus, select:focus:invalid:focus { border-color: #e9322d; -webkit-box-shadow: 0 0 6px #f8b9b7; -moz-box-shadow: 0 0 6px #f8b9b7; box-shadow: 0 0 6px #f8b9b7; } .form-actions { padding: 17px 20px 18px; margin-top: 18px; margin-bottom: 18px; background-color: #f5f5f5; border-top: 1px solid #e5e5e5; *zoom: 1; } .form-actions:before, .form-actions:after { display: table; content: ""; line-height: 0; } .form-actions:after { clear: both; } .help-block, .help-inline { color: #595959; } .help-block { display: block; margin-bottom: 9px; } .help-inline { display: inline-block; *display: inline; *zoom: 1; vertical-align: middle; padding-left: 5px; } .input-append, .input-prepend { display: inline-block; margin-bottom: 9px; vertical-align: middle; font-size: 0; white-space: nowrap; } .input-append input, .input-append select, .input-append .uneditable-input, .input-append .dropdown-menu, .input-append .popover, .input-prepend input, .input-prepend select, .input-prepend .uneditable-input, .input-prepend .dropdown-menu, .input-prepend .popover { font-size: 13px; } .input-append input, .input-append select, .input-append .uneditable-input, .input-prepend input, .input-prepend select, .input-prepend .uneditable-input { position: relative; margin-bottom: 0; *margin-left: 0; vertical-align: top; -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-append input:focus, .input-append select:focus, .input-append .uneditable-input:focus, .input-prepend input:focus, .input-prepend select:focus, .input-prepend .uneditable-input:focus { z-index: 2; } .input-append .add-on, .input-prepend .add-on { display: inline-block; width: auto; height: 18px; min-width: 16px; padding: 4px 5px; font-size: 13px; font-weight: normal; line-height: 18px; text-align: center; text-shadow: 0 1px 0 #fff; background-color: #eee; border: 1px solid #ccc; } .input-append .add-on, .input-append .btn, .input-append .btn-group > .dropdown-toggle, .input-prepend .add-on, .input-prepend .btn, .input-prepend .btn-group > .dropdown-toggle { vertical-align: top; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-append .active, .input-prepend .active { background-color: #a9dba9; border-color: #46a546; } .input-prepend .add-on, .input-prepend .btn { margin-right: -1px; } .input-prepend .add-on:first-child, .input-prepend .btn:first-child { -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-append input, .input-append select, .input-append .uneditable-input { -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-append input + .btn-group .btn:last-child, .input-append select + .btn-group .btn:last-child, .input-append .uneditable-input + .btn-group .btn:last-child { -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-append .add-on, .input-append .btn, .input-append .btn-group { margin-left: -1px; } .input-append .add-on:last-child, .input-append .btn:last-child, .input-append .btn-group:last-child > .dropdown-toggle { -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-prepend.input-append input, .input-prepend.input-append select, .input-prepend.input-append .uneditable-input { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-prepend.input-append input + .btn-group .btn, .input-prepend.input-append select + .btn-group .btn, .input-prepend.input-append .uneditable-input + .btn-group .btn { -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-prepend.input-append .add-on:first-child, .input-prepend.input-append .btn:first-child { margin-right: -1px; -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-prepend.input-append .add-on:last-child, .input-prepend.input-append .btn:last-child { margin-left: -1px; -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-prepend.input-append .btn-group:first-child { margin-left: 0; } input.search-query { padding-right: 14px; padding-right: 4px \9; padding-left: 14px; padding-left: 4px \9; margin-bottom: 0; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } .form-search .input-append .search-query, .form-search .input-prepend .search-query { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .form-search .input-append .search-query { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search .input-append .btn { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .search-query { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .btn { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search input, .form-search textarea, .form-search select, .form-search .help-inline, .form-search .uneditable-input, .form-search .input-prepend, .form-search .input-append, .form-inline input, .form-inline textarea, .form-inline select, .form-inline .help-inline, .form-inline .uneditable-input, .form-inline .input-prepend, .form-inline .input-append, .form-horizontal input, .form-horizontal textarea, .form-horizontal select, .form-horizontal .help-inline, .form-horizontal .uneditable-input, .form-horizontal .input-prepend, .form-horizontal .input-append { display: inline-block; *display: inline; *zoom: 1; margin-bottom: 0; vertical-align: middle; } .form-search .hide, .form-inline .hide, .form-horizontal .hide { display: none; } .form-search label, .form-inline label, .form-search .btn-group, .form-inline .btn-group { display: inline-block; } .form-search .input-append, .form-inline .input-append, .form-search .input-prepend, .form-inline .input-prepend { margin-bottom: 0; } .form-search .radio, .form-search .checkbox, .form-inline .radio, .form-inline .checkbox { padding-left: 0; margin-bottom: 0; vertical-align: middle; } .form-search .radio input[type="radio"], .form-search .checkbox input[type="checkbox"], .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { float: left; margin-right: 3px; margin-left: 0; } .control-group { margin-bottom: 9px; } legend + .control-group { margin-top: 18px; -webkit-margin-top-collapse: separate; } .form-horizontal .control-group { margin-bottom: 18px; *zoom: 1; } .form-horizontal .control-group:before, .form-horizontal .control-group:after { display: table; content: ""; line-height: 0; } .form-horizontal .control-group:after { clear: both; } .form-horizontal .control-label { float: left; width: 160px; padding-top: 5px; text-align: right; } .form-horizontal .controls { *display: inline-block; *padding-left: 20px; margin-left: 180px; *margin-left: 0; } .form-horizontal .controls:first-child { *padding-left: 180px; } .form-horizontal .help-block { margin-bottom: 0; } .form-horizontal input + .help-block, .form-horizontal select + .help-block, .form-horizontal textarea + .help-block, .form-horizontal .uneditable-input + .help-block, .form-horizontal .input-prepend + .help-block, .form-horizontal .input-append + .help-block { margin-top: 9px; } .form-horizontal .form-actions { padding-left: 180px; } .control-label .hasTooltip { display: inline-block; } table { max-width: 100%; background-color: transparent; border-collapse: collapse; border-spacing: 0; } .table { width: 100%; margin-bottom: 18px; } .table th, .table td { padding: 8px; line-height: 18px; text-align: left; vertical-align: top; border-top: 1px solid #ddd; } .table th { font-weight: bold; } .table thead th { vertical-align: bottom; } .table caption + thead tr:first-child th, .table caption + thead tr:first-child td, .table colgroup + thead tr:first-child th, .table colgroup + thead tr:first-child td, .table thead:first-child tr:first-child th, .table thead:first-child tr:first-child td { border-top: 0; } .table tbody + tbody { border-top: 2px solid #ddd; } .table .table { background-color: #fff; } .table-condensed th, .table-condensed td { padding: 4px 5px; } .table-bordered { border: 1px solid #ddd; border-collapse: separate; *border-collapse: collapse; border-left: 0; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .table-bordered th, .table-bordered td { border-left: 1px solid #ddd; } .table-bordered caption + thead tr:first-child th, .table-bordered caption + tbody tr:first-child th, .table-bordered caption + tbody tr:first-child td, .table-bordered colgroup + thead tr:first-child th, .table-bordered colgroup + tbody tr:first-child th, .table-bordered colgroup + tbody tr:first-child td, .table-bordered thead:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child td { border-top: 0; } .table-bordered thead:first-child tr:first-child > th:first-child, .table-bordered tbody:first-child tr:first-child > td:first-child, .table-bordered tbody:first-child tr:first-child > th:first-child { -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; border-top-left-radius: 4px; } .table-bordered thead:first-child tr:first-child > th:last-child, .table-bordered tbody:first-child tr:first-child > td:last-child, .table-bordered tbody:first-child tr:first-child > th:last-child { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; } .table-bordered thead:last-child tr:last-child > th:first-child, .table-bordered tbody:last-child tr:last-child > td:first-child, .table-bordered tbody:last-child tr:last-child > th:first-child, .table-bordered tfoot:last-child tr:last-child > td:first-child, .table-bordered tfoot:last-child tr:last-child > th:first-child { -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; border-bottom-left-radius: 4px; } .table-bordered thead:last-child tr:last-child > th:last-child, .table-bordered tbody:last-child tr:last-child > td:last-child, .table-bordered tbody:last-child tr:last-child > th:last-child, .table-bordered tfoot:last-child tr:last-child > td:last-child, .table-bordered tfoot:last-child tr:last-child > th:last-child { -webkit-border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; border-bottom-right-radius: 4px; } .table-bordered tfoot + tbody:last-child tr:last-child td:first-child { -webkit-border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; border-bottom-left-radius: 0; } .table-bordered tfoot + tbody:last-child tr:last-child td:last-child { -webkit-border-bottom-right-radius: 0; -moz-border-radius-bottomright: 0; border-bottom-right-radius: 0; } .table-bordered caption + thead tr:first-child th:first-child, .table-bordered caption + tbody tr:first-child td:first-child, .table-bordered colgroup + thead tr:first-child th:first-child, .table-bordered colgroup + tbody tr:first-child td:first-child { -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; border-top-left-radius: 4px; } .table-bordered caption + thead tr:first-child th:last-child, .table-bordered caption + tbody tr:first-child td:last-child, .table-bordered colgroup + thead tr:first-child th:last-child, .table-bordered colgroup + tbody tr:first-child td:last-child { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; } .table-striped tbody > tr:nth-child(odd) > td, .table-striped tbody > tr:nth-child(odd) > th { background-color: #f9f9f9; } .table-hover tbody tr:hover > td, .table-hover tbody tr:hover > th { background-color: #f5f5f5; } table td[class*="span"], table th[class*="span"], .row-fluid table td[class*="span"], .row-fluid table th[class*="span"] { display: table-cell; float: none; margin-left: 0; } .table td.span1, .table th.span1 { float: none; width: 44px; margin-left: 0; } .table td.span2, .table th.span2 { float: none; width: 124px; margin-left: 0; } .table td.span3, .table th.span3 { float: none; width: 204px; margin-left: 0; } .table td.span4, .table th.span4 { float: none; width: 284px; margin-left: 0; } .table td.span5, .table th.span5 { float: none; width: 364px; margin-left: 0; } .table td.span6, .table th.span6 { float: none; width: 444px; margin-left: 0; } .table td.span7, .table th.span7 { float: none; width: 524px; margin-left: 0; } .table td.span8, .table th.span8 { float: none; width: 604px; margin-left: 0; } .table td.span9, .table th.span9 { float: none; width: 684px; margin-left: 0; } .table td.span10, .table th.span10 { float: none; width: 764px; margin-left: 0; } .table td.span11, .table th.span11 { float: none; width: 844px; margin-left: 0; } .table td.span12, .table th.span12 { float: none; width: 924px; margin-left: 0; } .table tbody tr.success > td { background-color: #dff0d8; } .table tbody tr.error > td { background-color: #f2dede; } .table tbody tr.warning > td { background-color: #fcf8e3; } .table tbody tr.info > td { background-color: #d9edf7; } .table-hover tbody tr.success:hover > td { background-color: #d0e9c6; } .table-hover tbody tr.error:hover > td { background-color: #ebcccc; } .table-hover tbody tr.warning:hover > td { background-color: #faf2cc; } .table-hover tbody tr.info:hover > td { background-color: #c4e3f3; } .dropup, .dropdown { position: relative; } .dropdown-toggle { *margin-bottom: -3px; } .dropdown-toggle:active, .open .dropdown-toggle { outline: 0; } .caret { display: inline-block; width: 0; height: 0; vertical-align: top; border-top: 4px solid #000; border-right: 4px solid transparent; border-left: 4px solid transparent; content: ""; } .dropdown .caret { margin-top: 8px; margin-left: 2px; } .dropdown-menu { position: absolute; top: 100%; left: 0; z-index: 1000; display: none; float: left; min-width: 160px; padding: 5px 0; margin: 2px 0 0; list-style: none; background-color: #fff; border: 1px solid #ccc; border: 1px solid rgba(0,0,0,0.2); *border-right-width: 2px; *border-bottom-width: 2px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0,0,0,0.2); -moz-box-shadow: 0 5px 10px rgba(0,0,0,0.2); box-shadow: 0 5px 10px rgba(0,0,0,0.2); -webkit-background-clip: padding-box; -moz-background-clip: padding; background-clip: padding-box; } .dropdown-menu.pull-right { right: 0; left: auto; } .dropdown-menu .divider { *width: 100%; height: 1px; margin: 8px 1px; *margin: -5px 0 5px; overflow: hidden; background-color: #e5e5e5; border-bottom: 1px solid #fff; } .dropdown-menu > li > a { display: block; padding: 3px 20px; clear: both; font-weight: normal; line-height: 18px; color: #333; white-space: nowrap; } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus, .dropdown-submenu:hover > a, .dropdown-submenu:focus > a { text-decoration: none; color: #fff; background-color: #2d6ca2; background-image: -moz-linear-gradient(top,#3071a9,#2a6496); background-image: -webkit-gradient(linear,0 0,0 100%,from(#3071a9),to(#2a6496)); background-image: -webkit-linear-gradient(top,#3071a9,#2a6496); background-image: -o-linear-gradient(top,#3071a9,#2a6496); background-image: linear-gradient(to bottom,#3071a9,#2a6496); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f70a9', endColorstr='#ff296395', GradientType=0); } .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { color: #333; text-decoration: none; outline: 0; background-color: #2d6ca2; background-image: -moz-linear-gradient(top,#3071a9,#2a6496); background-image: -webkit-gradient(linear,0 0,0 100%,from(#3071a9),to(#2a6496)); background-image: -webkit-linear-gradient(top,#3071a9,#2a6496); background-image: -o-linear-gradient(top,#3071a9,#2a6496); background-image: linear-gradient(to bottom,#3071a9,#2a6496); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f70a9', endColorstr='#ff296395', GradientType=0); } .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { color: #999; } .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { text-decoration: none; background-color: transparent; background-image: none; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); cursor: default; } .open { *z-index: 1000; } .open > .dropdown-menu { display: block; } .dropdown-backdrop { position: fixed; left: 0; right: 0; bottom: 0; top: 0; z-index: 990; } .pull-right > .dropdown-menu { right: 0; left: auto; } .dropup .caret, .navbar-fixed-bottom .dropdown .caret { border-top: 0; border-bottom: 4px solid #000; content: ""; } .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { top: auto; bottom: 100%; margin-bottom: 1px; } .dropdown-submenu { position: relative; } .dropdown-submenu > .dropdown-menu { top: 0; left: 100%; margin-top: -6px; margin-left: -1px; -webkit-border-radius: 6px 6px 6px 6px; -moz-border-radius: 6px 6px 6px 6px; border-radius: 6px 6px 6px 6px; } .dropdown-submenu:hover > .dropdown-menu { display: block; } .dropup .dropdown-submenu > .dropdown-menu { top: auto; bottom: 0; margin-top: 0; margin-bottom: -2px; -webkit-border-radius: 5px 5px 5px 0; -moz-border-radius: 5px 5px 5px 0; border-radius: 5px 5px 5px 0; } .dropdown-submenu > a:after { display: block; content: " "; float: right; width: 0; height: 0; border-color: transparent; border-style: solid; border-width: 5px 0 5px 5px; border-left-color: #cccccc; margin-top: 5px; margin-right: -10px; } .dropdown-submenu:hover > a:after { border-left-color: #fff; } .dropdown-submenu.pull-left { float: none; } .dropdown-submenu.pull-left > .dropdown-menu { left: -100%; margin-left: 10px; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; } .dropdown .dropdown-menu .nav-header { padding-left: 20px; padding-right: 20px; } .typeahead { z-index: 1051; margin-top: 2px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .well { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: #f5f5f5; border: 1px solid #e3e3e3; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.05); -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.05); box-shadow: inset 0 1px 1px rgba(0,0,0,0.05); } .well blockquote { border-color: #ddd; border-color: rgba(0,0,0,0.15); } .well-large { padding: 24px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .well-small { padding: 9px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .fade { opacity: 0; -webkit-transition: opacity .15s linear; -moz-transition: opacity .15s linear; -o-transition: opacity .15s linear; transition: opacity .15s linear; } .fade.in { opacity: 1; } .collapse { position: relative; height: 0; overflow: hidden; -webkit-transition: height .35s ease; -moz-transition: height .35s ease; -o-transition: height .35s ease; transition: height .35s ease; } .collapse.in { height: auto; } .close { float: right; font-size: 20px; font-weight: bold; line-height: 18px; color: #000; text-shadow: 0 1px 0 #ffffff; opacity: 0.2; filter: alpha(opacity=20); } .close:hover, .close:focus { color: #000; text-decoration: none; cursor: pointer; opacity: 0.4; filter: alpha(opacity=40); } button.close { padding: 3; cursor: pointer; background: transparent; border: 0; -webkit-appearance: none; } .btn { display: inline-block; *display: inline; *zoom: 1; padding: 4px 12px; margin-bottom: 0; font-size: 13px; line-height: 18px; text-align: center; vertical-align: middle; cursor: pointer; color: #333; text-shadow: 0 1px 1px rgba(255,255,255,0.75); background-color: #f5f5f5; background-image: -moz-linear-gradient(top,#fff,#e6e6e6); background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); background-image: -o-linear-gradient(top,#fff,#e6e6e6); background-image: linear-gradient(to bottom,#fff,#e6e6e6); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe5e5e5', GradientType=0); border-color: #e6e6e6 #e6e6e6 #bfbfbf; *background-color: #e6e6e6; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); border: 1px solid #bbb; *border: 0; border-bottom-color: #a2a2a2; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; *margin-left: .3em; -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); } .btn:hover, .btn:focus, .btn:active, .btn.active, .btn.disabled, .btn[disabled] { color: #333; background-color: #e6e6e6; *background-color: #d9d9d9; } .btn:active, .btn.active { background-color: #cccccc \9; } .btn:first-child { *margin-left: 0; } .btn:hover, .btn:focus { color: #333; text-decoration: none; background-position: 0 -15px; -webkit-transition: background-position .1s linear; -moz-transition: background-position .1s linear; -o-transition: background-position .1s linear; transition: background-position .1s linear; } .btn:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .btn.active, .btn:active { background-image: none; outline: 0; -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); } .btn.disabled, .btn[disabled] { cursor: default; background-image: none; opacity: 0.65; filter: alpha(opacity=65); -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .btn-large { padding: 11px 19px; font-size: 16.25px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .btn-large [class^="icon-"], .btn-large [class*=" icon-"] { margin-top: 4px; } .btn-small { padding: 2px 10px; font-size: 12px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .btn-small [class^="icon-"], .btn-small [class*=" icon-"] { margin-top: 0; } .btn-mini [class^="icon-"], .btn-mini [class*=" icon-"] { margin-top: -1px; } .btn-mini { padding: 0 6px; font-size: 9.75px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .btn-block { display: block; width: 100%; padding-left: 0; padding-right: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .btn-block + .btn-block { margin-top: 5px; } input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { width: 100%; } .btn-primary.active, .btn-warning.active, .btn-danger.active, .btn-success.active, .btn-info.active, .btn-inverse.active { color: rgba(255,255,255,0.75); } .btn-primary { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #1d6cb0; background-image: -moz-linear-gradient(top,#2384d3,#15497c); background-image: -webkit-gradient(linear,0 0,0 100%,from(#2384d3),to(#15497c)); background-image: -webkit-linear-gradient(top,#2384d3,#15497c); background-image: -o-linear-gradient(top,#2384d3,#15497c); background-image: linear-gradient(to bottom,#2384d3,#15497c); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2384d3', endColorstr='#ff15497c', GradientType=0); border-color: #15497c #15497c #0a223b; *background-color: #15497c; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { color: #fff; background-color: #15497c; *background-color: #113c66; } .btn-primary:active, .btn-primary.active { background-color: #0e2f50 \9; } .btn-warning { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #e48806; background-image: -moz-linear-gradient(top,#f89406,#c67605); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f89406),to(#c67605)); background-image: -webkit-linear-gradient(top,#f89406,#c67605); background-image: -o-linear-gradient(top,#f89406,#c67605); background-image: linear-gradient(to bottom,#f89406,#c67605); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff89406', endColorstr='#ffc67604', GradientType=0); border-color: #c67605 #c67605 #7c4a03; *background-color: #c67605; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .btn-warning.disabled, .btn-warning[disabled] { color: #fff; background-color: #c67605; *background-color: #ad6704; } .btn-warning:active, .btn-warning.active { background-color: #945904 \9; } .btn-danger { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #ad312b; background-image: -moz-linear-gradient(top,#bd362f,#942a25); background-image: -webkit-gradient(linear,0 0,0 100%,from(#bd362f),to(#942a25)); background-image: -webkit-linear-gradient(top,#bd362f,#942a25); background-image: -o-linear-gradient(top,#bd362f,#942a25); background-image: linear-gradient(to bottom,#bd362f,#942a25); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbd362f', endColorstr='#ff942a24', GradientType=0); border-color: #942a25 #942a25 #571916; *background-color: #942a25; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .btn-danger.disabled, .btn-danger[disabled] { color: #fff; background-color: #942a25; *background-color: #802420; } .btn-danger:active, .btn-danger.active { background-color: #6b1f1b \9; } .btn-success { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #409740; background-image: -moz-linear-gradient(top,#46a546,#378137); background-image: -webkit-gradient(linear,0 0,0 100%,from(#46a546),to(#378137)); background-image: -webkit-linear-gradient(top,#46a546,#378137); background-image: -o-linear-gradient(top,#46a546,#378137); background-image: linear-gradient(to bottom,#46a546,#378137); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff46a546', endColorstr='#ff368136', GradientType=0); border-color: #378137 #378137 #204b20; *background-color: #378137; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .btn-success.disabled, .btn-success[disabled] { color: #fff; background-color: #378137; *background-color: #2f6f2f; } .btn-success:active, .btn-success.active { background-color: #285d28 \9; } .btn-info { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #2b89a4; background-image: -moz-linear-gradient(top,#2f96b4,#24748c); background-image: -webkit-gradient(linear,0 0,0 100%,from(#2f96b4),to(#24748c)); background-image: -webkit-linear-gradient(top,#2f96b4,#24748c); background-image: -o-linear-gradient(top,#2f96b4,#24748c); background-image: linear-gradient(to bottom,#2f96b4,#24748c); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f96b4', endColorstr='#ff24748b', GradientType=0); border-color: #24748c #24748c #15424f; *background-color: #24748c; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .btn-info.disabled, .btn-info[disabled] { color: #fff; background-color: #24748c; *background-color: #1f6377; } .btn-info:active, .btn-info.active { background-color: #1a5363 \9; } .btn-inverse { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #363636; background-image: -moz-linear-gradient(top,#444,#222); background-image: -webkit-gradient(linear,0 0,0 100%,from(#444),to(#222)); background-image: -webkit-linear-gradient(top,#444,#222); background-image: -o-linear-gradient(top,#444,#222); background-image: linear-gradient(to bottom,#444,#222); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); border-color: #222 #222 #000000; *background-color: #222; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-inverse:hover, .btn-inverse:focus, .btn-inverse:active, .btn-inverse.active, .btn-inverse.disabled, .btn-inverse[disabled] { color: #fff; background-color: #222; *background-color: #151515; } .btn-inverse:active, .btn-inverse.active { background-color: #090909 \9; } button.btn, input[type="submit"].btn { *padding-top: 3px; *padding-bottom: 3px; } button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner { padding: 0; border: 0; } button.btn.btn-large, input[type="submit"].btn.btn-large { *padding-top: 7px; *padding-bottom: 7px; } button.btn.btn-small, input[type="submit"].btn.btn-small { *padding-top: 3px; *padding-bottom: 3px; } button.btn.btn-mini, input[type="submit"].btn.btn-mini { *padding-top: 1px; *padding-bottom: 1px; } .btn-link, .btn-link:active, .btn-link[disabled] { background-color: transparent; background-image: none; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .btn-link { border-color: transparent; cursor: pointer; color: #3071a9; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-link:hover, .btn-link:focus { color: #1f496e; text-decoration: underline; background-color: transparent; } .btn-link[disabled]:hover, .btn-link[disabled]:focus { color: #333; text-decoration: none; } .btn-group { position: relative; display: inline-block; *display: inline; *zoom: 1; font-size: 0; vertical-align: middle; white-space: nowrap; *margin-left: .3em; } .btn-group:first-child { *margin-left: 0; } .btn-group + .btn-group { margin-left: 5px; } .btn-toolbar { font-size: 0; margin-top: 9px; margin-bottom: 9px; } .btn-toolbar > .btn + .btn, .btn-toolbar > .btn-group + .btn, .btn-toolbar > .btn + .btn-group { margin-left: 5px; } .btn-group > .btn { position: relative; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-group > .btn + .btn { margin-left: -1px; } .btn-group > .btn, .btn-group > .dropdown-menu, .btn-group > .popover { font-size: 13px; } .btn-group > .btn-mini { font-size: 9.75px; } .btn-group > .btn-small { font-size: 12px; } .btn-group > .btn-large { font-size: 16.25px; } .btn-group > .btn:first-child { margin-left: 0; -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; border-top-left-radius: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; border-bottom-left-radius: 4px; } .btn-group > .btn:last-child, .btn-group > .dropdown-toggle { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; -webkit-border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; border-bottom-right-radius: 4px; } .btn-group > .btn.large:first-child { margin-left: 0; -webkit-border-top-left-radius: 6px; -moz-border-radius-topleft: 6px; border-top-left-radius: 6px; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomleft: 6px; border-bottom-left-radius: 6px; } .btn-group > .btn.large:last-child, .btn-group > .large.dropdown-toggle { -webkit-border-top-right-radius: 6px; -moz-border-radius-topright: 6px; border-top-right-radius: 6px; -webkit-border-bottom-right-radius: 6px; -moz-border-radius-bottomright: 6px; border-bottom-right-radius: 6px; } .btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active { z-index: 2; } .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { outline: 0; } .btn-group > .btn + .dropdown-toggle { padding-left: 8px; padding-right: 8px; -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); *padding-top: 5px; *padding-bottom: 5px; } .btn-group > .btn-mini + .dropdown-toggle { padding-left: 5px; padding-right: 5px; *padding-top: 2px; *padding-bottom: 2px; } .btn-group > .btn-small + .dropdown-toggle { *padding-top: 5px; *padding-bottom: 4px; } .btn-group > .btn-large + .dropdown-toggle { padding-left: 12px; padding-right: 12px; *padding-top: 7px; *padding-bottom: 7px; } .btn-group.open .dropdown-toggle { background-image: none; -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); } .btn-group.open .btn.dropdown-toggle { background-color: #e6e6e6; } .btn-group.open .btn-primary.dropdown-toggle { background-color: #15497c; } .btn-group.open .btn-warning.dropdown-toggle { background-color: #c67605; } .btn-group.open .btn-danger.dropdown-toggle { background-color: #942a25; } .btn-group.open .btn-success.dropdown-toggle { background-color: #378137; } .btn-group.open .btn-info.dropdown-toggle { background-color: #24748c; } .btn-group.open .btn-inverse.dropdown-toggle { background-color: #222; } .btn .caret { margin-top: 8px; margin-left: 0; } .btn-large .caret { margin-top: 6px; } .btn-large .caret { border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; } .btn-mini .caret, .btn-small .caret { margin-top: 8px; } .dropup .btn-large .caret { border-bottom-width: 5px; } .btn-primary .caret, .btn-warning .caret, .btn-danger .caret, .btn-info .caret, .btn-success .caret, .btn-inverse .caret { border-top-color: #fff; border-bottom-color: #fff; } .btn-group-vertical { display: inline-block; *display: inline; *zoom: 1; } .btn-group-vertical > .btn { display: block; float: none; max-width: 100%; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-group-vertical > .btn + .btn { margin-left: 0; margin-top: -1px; } .btn-group-vertical > .btn:first-child { -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .btn-group-vertical > .btn:last-child { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; } .btn-group-vertical > .btn-large:first-child { -webkit-border-radius: 6px 6px 0 0; -moz-border-radius: 6px 6px 0 0; border-radius: 6px 6px 0 0; } .btn-group-vertical > .btn-large:last-child { -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; } .alert { padding: 8px 35px 8px 14px; margin-bottom: 18px; text-shadow: 0 1px 0 rgba(255,255,255,0.5); background-color: #fcf8e3; border: 1px solid #faebcc; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .alert, .alert h4 { color: #8a6d3b; } .alert h4 { margin: 0; } .alert .close { position: relative; top: -2px; right: -21px; line-height: 18px; } .alert-success { background-color: #dff0d8; border-color: #d6e9c6; color: #3c763d; } .alert-success h4 { color: #3c763d; } .alert-danger, .alert-error { background-color: #f2dede; border-color: #ebccd1; color: #a94442; } .alert-danger h4, .alert-error h4 { color: #a94442; } .alert-info { background-color: #d9edf7; border-color: #bce8f1; color: #31708f; } .alert-info h4 { color: #31708f; } .alert-block { padding-top: 14px; padding-bottom: 14px; } .alert-block > p, .alert-block > ul { margin-bottom: 0; } .alert-block p + p { margin-top: 5px; } .nav { margin-left: 0; margin-bottom: 18px; list-style: none; } .nav > li > a { display: block; } .nav > li > a:hover, .nav > li > a:focus { text-decoration: none; background-color: #eee; } .nav > li > a > img { max-width: none; } .nav > .pull-right { float: right; } .nav-header { display: block; padding: 3px 15px; font-size: 11px; font-weight: bold; line-height: 18px; color: #999; text-shadow: 0 1px 0 rgba(255,255,255,0.5); text-transform: uppercase; } .nav li + .nav-header { margin-top: 9px; } .nav-list { padding-left: 15px; padding-right: 15px; margin-bottom: 0; } .nav-list > li > a, .nav-list .nav-header { margin-left: -15px; margin-right: -15px; text-shadow: 0 1px 0 rgba(255,255,255,0.5); } .nav-list > li > a { padding: 3px 15px; } .nav-list > .active > a, .nav-list > .active > a:hover, .nav-list > .active > a:focus { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.2); background-color: #3071a9; } .nav-list [class^="icon-"], .nav-list [class*=" icon-"] { margin-right: 2px; } .nav-list .divider { *width: 100%; height: 1px; margin: 8px 1px; *margin: -5px 0 5px; overflow: hidden; background-color: #e5e5e5; border-bottom: 1px solid #fff; } .nav-tabs, .nav-pills { *zoom: 1; } .nav-tabs:before, .nav-tabs:after, .nav-pills:before, .nav-pills:after { display: table; content: ""; line-height: 0; } .nav-tabs:after, .nav-pills:after { clear: both; } .nav-tabs > li, .nav-pills > li { float: left; } .nav-tabs > li > a, .nav-pills > li > a { padding-right: 12px; padding-left: 12px; margin-right: 2px; line-height: 14px; } .nav-tabs { border-bottom: 1px solid #ddd; } .nav-tabs > li { margin-bottom: -1px; } .nav-tabs > li > a { padding-top: 8px; padding-bottom: 8px; line-height: 18px; border: 1px solid transparent; -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .nav-tabs > li > a:hover, .nav-tabs > li > a:focus { border-color: #eee #eee #ddd; } .nav-tabs > .active > a, .nav-tabs > .active > a:hover, .nav-tabs > .active > a:focus { color: #555; background-color: #fff; border: 1px solid #ddd; border-bottom-color: transparent; cursor: default; } .nav-pills > li > a { padding-top: 8px; padding-bottom: 8px; margin-top: 2px; margin-bottom: 2px; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .nav-pills > .active > a, .nav-pills > .active > a:hover, .nav-pills > .active > a:focus { color: #fff; background-color: #3071a9; } .nav-stacked > li { float: none; } .nav-stacked > li > a { margin-right: 0; } .nav-tabs.nav-stacked { border-bottom: 0; } .nav-tabs.nav-stacked > li > a { border: 1px solid #ddd; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .nav-tabs.nav-stacked > li:first-child > a { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; border-top-left-radius: 4px; } .nav-tabs.nav-stacked > li:last-child > a { -webkit-border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; border-bottom-right-radius: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; border-bottom-left-radius: 4px; } .nav-tabs.nav-stacked > li > a:hover, .nav-tabs.nav-stacked > li > a:focus { border-color: #ddd; z-index: 2; } .nav-pills.nav-stacked > li > a { margin-bottom: 3px; } .nav-pills.nav-stacked > li:last-child > a { margin-bottom: 1px; } .nav-tabs .dropdown-menu { -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; } .nav-pills .dropdown-menu { -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .nav .dropdown-toggle .caret { border-top-color: #3071a9; border-bottom-color: #3071a9; margin-top: 6px; } .nav .dropdown-toggle:hover .caret, .nav .dropdown-toggle:focus .caret { border-top-color: #1f496e; border-bottom-color: #1f496e; } .nav-tabs .dropdown-toggle .caret { margin-top: 8px; } .nav .active .dropdown-toggle .caret { border-top-color: #fff; border-bottom-color: #fff; } .nav-tabs .active .dropdown-toggle .caret { border-top-color: #555; border-bottom-color: #555; } .nav > .dropdown.active > a:hover, .nav > .dropdown.active > a:focus { cursor: pointer; } .nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > li.dropdown.open.active > a:hover, .nav > li.dropdown.open.active > a:focus { color: #fff; background-color: #999; border-color: #999; } .nav li.dropdown.open .caret, .nav li.dropdown.open.active .caret, .nav li.dropdown.open a:hover .caret, .nav li.dropdown.open a:focus .caret { border-top-color: #fff; border-bottom-color: #fff; opacity: 1; filter: alpha(opacity=100); } .tabs-stacked .open > a:hover, .tabs-stacked .open > a:focus { border-color: #999; } .tabbable { *zoom: 1; } .tabbable:before, .tabbable:after { display: table; content: ""; line-height: 0; } .tabbable:after { clear: both; } .tab-content { overflow: auto; } .tabs-below > .nav-tabs, .tabs-right > .nav-tabs, .tabs-left > .nav-tabs { border-bottom: 0; } .tab-content > .tab-pane, .pill-content > .pill-pane { display: none; } .tab-content > .active, .pill-content > .active { display: block; } .tabs-below > .nav-tabs { border-top: 1px solid #ddd; } .tabs-below > .nav-tabs > li { margin-top: -1px; margin-bottom: 0; } .tabs-below > .nav-tabs > li > a { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; } .tabs-below > .nav-tabs > li > a:hover, .tabs-below > .nav-tabs > li > a:focus { border-bottom-color: transparent; border-top-color: #ddd; } .tabs-below > .nav-tabs > .active > a, .tabs-below > .nav-tabs > .active > a:hover, .tabs-below > .nav-tabs > .active > a:focus { border-color: transparent #ddd #ddd #ddd; } .tabs-left > .nav-tabs > li, .tabs-right > .nav-tabs > li { float: none; } .tabs-left > .nav-tabs > li > a, .tabs-right > .nav-tabs > li > a { min-width: 74px; margin-right: 0; margin-bottom: 3px; } .tabs-left > .nav-tabs { float: left; margin-right: 19px; border-right: 1px solid #ddd; } .tabs-left > .nav-tabs > li > a { margin-right: -1px; -webkit-border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; } .tabs-left > .nav-tabs > li > a:hover, .tabs-left > .nav-tabs > li > a:focus { border-color: #eee #ddd #eee #eee; } .tabs-left > .nav-tabs .active > a, .tabs-left > .nav-tabs .active > a:hover, .tabs-left > .nav-tabs .active > a:focus { border-color: #ddd transparent #ddd #ddd; *border-right-color: #fff; } .tabs-right > .nav-tabs { float: right; margin-left: 19px; border-left: 1px solid #ddd; } .tabs-right > .nav-tabs > li > a { margin-left: -1px; -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .tabs-right > .nav-tabs > li > a:hover, .tabs-right > .nav-tabs > li > a:focus { border-color: #eee #eee #eee #ddd; } .tabs-right > .nav-tabs .active > a, .tabs-right > .nav-tabs .active > a:hover, .tabs-right > .nav-tabs .active > a:focus { border-color: #ddd #ddd #ddd transparent; *border-left-color: #fff; } .nav > .disabled > a { color: #999; } .nav > .disabled > a:hover, .nav > .disabled > a:focus { text-decoration: none; background-color: transparent; cursor: default; } .navbar { overflow: visible; margin-bottom: 18px; *position: relative; *z-index: 2; } .navbar-inner { min-height: 40px; padding-left: 20px; padding-right: 20px; background-color: #fafafa; background-image: -moz-linear-gradient(top,#ffffff,#f2f2f2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#ffffff),to(#f2f2f2)); background-image: -webkit-linear-gradient(top,#ffffff,#f2f2f2); background-image: -o-linear-gradient(top,#ffffff,#f2f2f2); background-image: linear-gradient(to bottom,#ffffff,#f2f2f2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); border: 1px solid #d4d4d4; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 4px rgba(0,0,0,0.065); -moz-box-shadow: 0 1px 4px rgba(0,0,0,0.065); box-shadow: 0 1px 4px rgba(0,0,0,0.065); *zoom: 1; } .navbar-inner:before, .navbar-inner:after { display: table; content: ""; line-height: 0; } .navbar-inner:after { clear: both; } .navbar .container { width: auto; } .nav-collapse.collapse { height: auto; overflow: visible; } .navbar .brand { float: left; display: block; padding: 11px 20px 11px; margin-left: -20px; font-size: 20px; font-weight: 200; color: #555; text-shadow: 0 1px 0 #ffffff; } .navbar .brand:hover, .navbar .brand:focus { text-decoration: none; } .navbar-text { margin-bottom: 0; line-height: 40px; color: #555; } .navbar-link { color: #555; } .navbar-link:hover, .navbar-link:focus { color: #333; } .navbar .divider-vertical { height: 40px; margin: 0 9px; border-left: 1px solid #f2f2f2; border-right: 1px solid #ffffff; } .navbar .btn, .navbar .btn-group { margin-top: 5px; } .navbar .btn-group .btn, .navbar .input-prepend .btn, .navbar .input-append .btn, .navbar .input-prepend .btn-group, .navbar .input-append .btn-group { margin-top: 0; } .navbar-form { margin-bottom: 0; *zoom: 1; } .navbar-form:before, .navbar-form:after { display: table; content: ""; line-height: 0; } .navbar-form:after { clear: both; } .navbar-form input, .navbar-form select, .navbar-form .radio, .navbar-form .checkbox { margin-top: 5px; } .navbar-form input, .navbar-form select, .navbar-form .btn { display: inline-block; margin-bottom: 0; } .navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] { margin-top: 3px; } .navbar-form .input-append, .navbar-form .input-prepend { margin-top: 5px; white-space: nowrap; } .navbar-form .input-append input, .navbar-form .input-prepend input { margin-top: 0; } .navbar-search { position: relative; float: left; margin-top: 5px; margin-bottom: 0; } .navbar-search .search-query { margin-bottom: 0; padding: 4px 14px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } .navbar-static-top { position: static; margin-bottom: 0; } .navbar-static-top .navbar-inner { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .navbar-fixed-top, .navbar-fixed-bottom { position: fixed; right: 0; left: 0; z-index: 1030; margin-bottom: 0; } .navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { border-width: 0 0 1px; } .navbar-fixed-bottom .navbar-inner { border-width: 1px 0 0; } .navbar-fixed-top .navbar-inner, .navbar-fixed-bottom .navbar-inner { padding-left: 0; padding-right: 0; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 940px; } .navbar-fixed-top { top: 0; } .navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1); -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1); box-shadow: 0 1px 10px rgba(0,0,0,.1); } .navbar-fixed-bottom { bottom: 0; } .navbar-fixed-bottom .navbar-inner { -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1); -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1); box-shadow: 0 -1px 10px rgba(0,0,0,.1); } .navbar .nav { position: relative; left: 0; display: block; float: left; margin: 0 10px 0 0; } .navbar .nav.pull-right { float: right; margin-right: 0; } .navbar .nav > li { float: left; } .navbar .nav > li > a { float: none; padding: 11px 15px 11px; color: #555; text-decoration: none; text-shadow: 0 1px 0 #ffffff; } .navbar .nav .dropdown-toggle .caret { margin-top: 8px; } .navbar .nav > li > a:focus, .navbar .nav > li > a:hover { background-color: transparent; color: #333; text-decoration: none; } .navbar .nav > .active > a, .navbar .nav > .active > a:hover, .navbar .nav > .active > a:focus { color: #555; text-decoration: none; background-color: #e6e6e6; -webkit-box-shadow: inset 0 3px 8px rgba(0,0,0,0.125); -moz-box-shadow: inset 0 3px 8px rgba(0,0,0,0.125); box-shadow: inset 0 3px 8px rgba(0,0,0,0.125); } .navbar .btn-navbar { display: none; float: right; padding: 7px 10px; margin-left: 5px; margin-right: 5px; color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #ededed; background-image: -moz-linear-gradient(top,#f2f2f2,#e6e6e6); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e6e6e6)); background-image: -webkit-linear-gradient(top,#f2f2f2,#e6e6e6); background-image: -o-linear-gradient(top,#f2f2f2,#e6e6e6); background-image: linear-gradient(to bottom,#f2f2f2,#e6e6e6); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); border-color: #e6e6e6 #e6e6e6 #bfbfbf; *background-color: #e6e6e6; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); } .navbar .btn-navbar:hover, .navbar .btn-navbar:focus, .navbar .btn-navbar:active, .navbar .btn-navbar.active, .navbar .btn-navbar.disabled, .navbar .btn-navbar[disabled] { color: #fff; background-color: #e6e6e6; *background-color: #d9d9d9; } .navbar .btn-navbar:active, .navbar .btn-navbar.active { background-color: #cccccc \9; } .navbar .btn-navbar .icon-bar { display: block; width: 18px; height: 2px; background-color: #f5f5f5; -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; -webkit-box-shadow: 0 1px 0 rgba(0,0,0,0.25); -moz-box-shadow: 0 1px 0 rgba(0,0,0,0.25); box-shadow: 0 1px 0 rgba(0,0,0,0.25); } .btn-navbar .icon-bar + .icon-bar { margin-top: 3px; } .navbar .nav > li > .dropdown-menu:before { content: ''; display: inline-block; border-left: 7px solid transparent; border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-bottom-color: rgba(0,0,0,0.2); position: absolute; top: -7px; left: 9px; } .navbar .nav > li > .dropdown-menu:after { content: ''; display: inline-block; border-left: 6px solid transparent; border-right: 6px solid transparent; border-bottom: 6px solid #fff; position: absolute; top: -6px; left: 10px; } .navbar-fixed-bottom .nav > li > .dropdown-menu:before { border-top: 7px solid #ccc; border-top-color: rgba(0,0,0,0.2); border-bottom: 0; bottom: -7px; top: auto; } .navbar-fixed-bottom .nav > li > .dropdown-menu:after { border-top: 6px solid #fff; border-bottom: 0; bottom: -6px; top: auto; } .navbar .nav li.dropdown > a:hover .caret, .navbar .nav li.dropdown > a:focus .caret { border-top-color: #333; border-bottom-color: #333; } .navbar .nav li.dropdown.open > .dropdown-toggle, .navbar .nav li.dropdown.active > .dropdown-toggle, .navbar .nav li.dropdown.open.active > .dropdown-toggle { background-color: #e6e6e6; color: #555; } .navbar .nav li.dropdown > .dropdown-toggle .caret { border-top-color: #555; border-bottom-color: #555; } .navbar .nav li.dropdown.open > .dropdown-toggle .caret, .navbar .nav li.dropdown.active > .dropdown-toggle .caret, .navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { border-top-color: #555; border-bottom-color: #555; } .navbar .pull-right > li > .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right { left: auto; right: 0; } .navbar .pull-right > li > .dropdown-menu:before, .navbar .nav > li > .dropdown-menu.pull-right:before { left: auto; right: 12px; } .navbar .pull-right > li > .dropdown-menu:after, .navbar .nav > li > .dropdown-menu.pull-right:after { left: auto; right: 13px; } .navbar .pull-right > li > .dropdown-menu .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { left: auto; right: 100%; margin-left: 0; margin-right: -1px; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; } .navbar-inverse .navbar-inner { background-color: #13294a; background-image: -moz-linear-gradient(top,#152d53,#10223e); background-image: -webkit-gradient(linear,0 0,0 100%,from(#152d53),to(#10223e)); background-image: -webkit-linear-gradient(top,#152d53,#10223e); background-image: -o-linear-gradient(top,#152d53,#10223e); background-image: linear-gradient(to bottom,#152d53,#10223e); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff142c52', endColorstr='#ff0f213e', GradientType=0); border-color: #0b172a; } .navbar-inverse .brand, .navbar-inverse .nav > li > a { color: #d9d9d9; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); } .navbar-inverse .brand:hover, .navbar-inverse .brand:focus, .navbar-inverse .nav > li > a:hover, .navbar-inverse .nav > li > a:focus { color: #fff; } .navbar-inverse .brand { color: #d9d9d9; } .navbar-inverse .navbar-text { color: #d9d9d9; } .navbar-inverse .nav > li > a:focus, .navbar-inverse .nav > li > a:hover { background-color: transparent; color: #fff; } .navbar-inverse .nav .active > a, .navbar-inverse .nav .active > a:hover, .navbar-inverse .nav .active > a:focus { color: #fff; background-color: #10223e; } .navbar-inverse .navbar-link { color: #d9d9d9; } .navbar-inverse .navbar-link:hover, .navbar-inverse .navbar-link:focus { color: #fff; } .navbar-inverse .divider-vertical { border-left-color: #10223e; border-right-color: #152d53; } .navbar-inverse .nav li.dropdown.open > .dropdown-toggle, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { background-color: #10223e; color: #fff; } .navbar-inverse .nav li.dropdown > a:hover .caret, .navbar-inverse .nav li.dropdown > a:focus .caret { border-top-color: #fff; border-bottom-color: #fff; } .navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { border-top-color: #d9d9d9; border-bottom-color: #d9d9d9; } .navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { border-top-color: #fff; border-bottom-color: #fff; } .navbar-inverse .navbar-search .search-query { color: #fff; background-color: #2959a4; border-color: #10223e; -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); -webkit-transition: none; -moz-transition: none; -o-transition: none; transition: none; } .navbar-inverse .navbar-search .search-query:-moz-placeholder { color: #ccc; } .navbar-inverse .navbar-search .search-query:-ms-input-placeholder { color: #ccc; } .navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { color: #ccc; } .navbar-inverse .navbar-search .search-query:focus, .navbar-inverse .navbar-search .search-query.focused { padding: 5px 15px; color: #333; text-shadow: 0 1px 0 #fff; background-color: #fff; border: 0; -webkit-box-shadow: 0 0 3px rgba(0,0,0,0.15); -moz-box-shadow: 0 0 3px rgba(0,0,0,0.15); box-shadow: 0 0 3px rgba(0,0,0,0.15); outline: 0; } .navbar-inverse .btn-navbar { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #0e1d36; background-image: -moz-linear-gradient(top,#10223e,#0b172a); background-image: -webkit-gradient(linear,0 0,0 100%,from(#10223e),to(#0b172a)); background-image: -webkit-linear-gradient(top,#10223e,#0b172a); background-image: -o-linear-gradient(top,#10223e,#0b172a); background-image: linear-gradient(to bottom,#10223e,#0b172a); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0f213e', endColorstr='#ff0a1629', GradientType=0); border-color: #0b172a #0b172a #000000; *background-color: #0b172a; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .navbar-inverse .btn-navbar:hover, .navbar-inverse .btn-navbar:focus, .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active, .navbar-inverse .btn-navbar.disabled, .navbar-inverse .btn-navbar[disabled] { color: #fff; background-color: #0b172a; *background-color: #050c16; } .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active { background-color: #000101 \9; } .breadcrumb { padding: 8px 15px; margin: 0 0 18px; list-style: none; background-color: #f5f5f5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .breadcrumb > li { display: inline-block; *display: inline; *zoom: 1; text-shadow: 0 1px 0 #fff; } .breadcrumb > li > .divider { padding: 0 5px; color: #ccc; } .breadcrumb > .active { color: #999; } .pagination { margin: 18px 0; } .pagination ul { display: inline-block; *display: inline; *zoom: 1; margin-left: 0; margin-bottom: 0; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.05); -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.05); box-shadow: 0 1px 2px rgba(0,0,0,0.05); } .pagination ul > li { display: inline; } .pagination ul > li > a, .pagination ul > li > span { float: left; padding: 4px 12px; line-height: 18px; text-decoration: none; background-color: #fff; border: 1px solid #ddd; border-left-width: 0; } .pagination ul > li > a:hover, .pagination ul > li > a:focus, .pagination ul > .active > a, .pagination ul > .active > span { background-color: #f5f5f5; } .pagination ul > .active > a, .pagination ul > .active > span { color: #999; cursor: default; } .pagination ul > .disabled > span, .pagination ul > .disabled > a, .pagination ul > .disabled > a:hover, .pagination ul > .disabled > a:focus { color: #999; background-color: transparent; cursor: default; } .pagination ul > li:first-child > a, .pagination ul > li:first-child > span { border-left-width: 1px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; border-top-left-radius: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; border-bottom-left-radius: 4px; } .pagination ul > li:last-child > a, .pagination ul > li:last-child > span { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; -webkit-border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; border-bottom-right-radius: 4px; } .pagination-centered { text-align: center; } .pagination-right { text-align: right; } .pagination-large ul > li > a, .pagination-large ul > li > span { padding: 11px 19px; font-size: 16.25px; } .pagination-large ul > li:first-child > a, .pagination-large ul > li:first-child > span { -webkit-border-top-left-radius: 6px; -moz-border-radius-topleft: 6px; border-top-left-radius: 6px; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomleft: 6px; border-bottom-left-radius: 6px; } .pagination-large ul > li:last-child > a, .pagination-large ul > li:last-child > span { -webkit-border-top-right-radius: 6px; -moz-border-radius-topright: 6px; border-top-right-radius: 6px; -webkit-border-bottom-right-radius: 6px; -moz-border-radius-bottomright: 6px; border-bottom-right-radius: 6px; } .pagination-mini ul > li:first-child > a, .pagination-mini ul > li:first-child > span, .pagination-small ul > li:first-child > a, .pagination-small ul > li:first-child > span { -webkit-border-top-left-radius: 3px; -moz-border-radius-topleft: 3px; border-top-left-radius: 3px; -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px; border-bottom-left-radius: 3px; } .pagination-mini ul > li:last-child > a, .pagination-mini ul > li:last-child > span, .pagination-small ul > li:last-child > a, .pagination-small ul > li:last-child > span { -webkit-border-top-right-radius: 3px; -moz-border-radius-topright: 3px; border-top-right-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-border-radius-bottomright: 3px; border-bottom-right-radius: 3px; } .pagination-small ul > li > a, .pagination-small ul > li > span { padding: 2px 10px; font-size: 12px; } .pagination-mini ul > li > a, .pagination-mini ul > li > span { padding: 0 6px; font-size: 9.75px; } .pager { margin: 18px 0; list-style: none; text-align: center; *zoom: 1; } .pager:before, .pager:after { display: table; content: ""; line-height: 0; } .pager:after { clear: both; } .pager li { display: inline; } .pager li > a, .pager li > span { display: inline-block; padding: 5px 14px; background-color: #fff; border: 1px solid #ddd; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } .pager li > a:hover, .pager li > a:focus { text-decoration: none; background-color: #f5f5f5; } .pager .next > a, .pager .next > span { float: right; } .pager .previous > a, .pager .previous > span { float: left; } .pager .disabled > a, .pager .disabled > a:hover, .pager .disabled > a:focus, .pager .disabled > span { color: #999; background-color: #fff; cursor: default; } .modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1040; background-color: #000; } .modal-backdrop.fade { opacity: 0; } .modal-backdrop, .modal-backdrop.fade.in { opacity: 0.8; filter: alpha(opacity=80); } .modal-header { padding: 9px 15px; border-bottom: 1px solid #eee; } .modal-header .close { margin-top: 2px; } .modal-header h3 { margin: 0; line-height: 30px; } .modal-body { width: 98%; position: relative; max-height: 400px; padding: 1%; } .modal-body iframe { width: 100%; max-height: none; border: 0 !important; } .modal-form { margin-bottom: 0; } .modal-footer { padding: 14px 15px 15px; margin-bottom: 0; text-align: right; background-color: #f5f5f5; border-top: 1px solid #ddd; -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; -webkit-box-shadow: inset 0 1px 0 #fff; -moz-box-shadow: inset 0 1px 0 #fff; box-shadow: inset 0 1px 0 #fff; *zoom: 1; } .modal-footer:before, .modal-footer:after { display: table; content: ""; line-height: 0; } .modal-footer:after { clear: both; } .modal-footer .btn + .btn { margin-left: 5px; margin-bottom: 0; } .modal-footer .btn-group .btn + .btn { margin-left: -1px; } .modal-footer .btn-block + .btn-block { margin-left: 0; } .tooltip { position: absolute; z-index: 1030; display: block; visibility: visible; font-size: 11px; line-height: 1.4; opacity: 0; filter: alpha(opacity=0); } .tooltip.in { opacity: 0.8; filter: alpha(opacity=80); } .tooltip.top { margin-top: -3px; padding: 5px 0; } .tooltip.right { margin-left: 3px; padding: 0 5px; } .tooltip.bottom { margin-top: 3px; padding: 5px 0; } .tooltip.left { margin-left: -3px; padding: 0 5px; } .tooltip-inner { max-width: 200px; padding: 8px; color: #fff; text-align: center; text-decoration: none; background-color: #000; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .tooltip-arrow { position: absolute; width: 0; height: 0; border-color: transparent; border-style: solid; } .tooltip.top .tooltip-arrow { bottom: 0; left: 50%; margin-left: -5px; border-width: 5px 5px 0; border-top-color: #000; } .tooltip.right .tooltip-arrow { top: 50%; left: 0; margin-top: -5px; border-width: 5px 5px 5px 0; border-right-color: #000; } .tooltip.left .tooltip-arrow { top: 50%; right: 0; margin-top: -5px; border-width: 5px 0 5px 5px; border-left-color: #000; } .tooltip.bottom .tooltip-arrow { top: 0; left: 50%; margin-left: -5px; border-width: 0 5px 5px; border-bottom-color: #000; } .popover { position: absolute; top: 0; left: 0; z-index: 1010; display: none; max-width: 276px; padding: 1px; text-align: left; background-color: #fff; -webkit-background-clip: padding-box; -moz-background-clip: padding; background-clip: padding-box; border: 1px solid #ccc; border: 1px solid rgba(0,0,0,0.2); -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0,0,0,0.2); -moz-box-shadow: 0 5px 10px rgba(0,0,0,0.2); box-shadow: 0 5px 10px rgba(0,0,0,0.2); white-space: normal; } .popover.top { margin-top: -10px; } .popover.right { margin-left: 10px; } .popover.bottom { margin-top: 10px; } .popover.left { margin-left: -10px; } .popover-title { margin: 0; padding: 8px 14px; font-size: 14px; font-weight: normal; line-height: 18px; background-color: #f7f7f7; border-bottom: 1px solid #ebebeb; -webkit-border-radius: 5px 5px 0 0; -moz-border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0; } .popover-title:empty { display: none; } .popover-content { padding: 9px 14px; } .popover .arrow, .popover .arrow:after { position: absolute; display: block; width: 0; height: 0; border-color: transparent; border-style: solid; } .popover .arrow { border-width: 11px; } .popover .arrow:after { border-width: 10px; content: ""; } .popover.top .arrow { left: 50%; margin-left: -11px; border-bottom-width: 0; border-top-color: #999; border-top-color: rgba(0,0,0,0.25); bottom: -11px; } .popover.top .arrow:after { bottom: 1px; margin-left: -10px; border-bottom-width: 0; border-top-color: #fff; } .popover.right .arrow { top: 50%; left: -11px; margin-top: -11px; border-left-width: 0; border-right-color: #999; border-right-color: rgba(0,0,0,0.25); } .popover.right .arrow:after { left: 1px; bottom: -10px; border-left-width: 0; border-right-color: #fff; } .popover.bottom .arrow { left: 50%; margin-left: -11px; border-top-width: 0; border-bottom-color: #999; border-bottom-color: rgba(0,0,0,0.25); top: -11px; } .popover.bottom .arrow:after { top: 1px; margin-left: -10px; border-top-width: 0; border-bottom-color: #fff; } .popover.left .arrow { top: 50%; right: -11px; margin-top: -11px; border-right-width: 0; border-left-color: #999; border-left-color: rgba(0,0,0,0.25); } .popover.left .arrow:after { right: 1px; border-right-width: 0; border-left-color: #fff; bottom: -10px; } .thumbnails { margin-left: -20px; list-style: none; *zoom: 1; } .thumbnails:before, .thumbnails:after { display: table; content: ""; line-height: 0; } .thumbnails:after { clear: both; } .row-fluid .thumbnails { margin-left: 0; } .thumbnails > li { float: left; margin-bottom: 18px; margin-left: 20px; } .thumbnail { display: block; padding: 4px; line-height: 18px; border: 1px solid #ddd; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.055); -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.055); box-shadow: 0 1px 3px rgba(0,0,0,0.055); -webkit-transition: all .2s ease-in-out; -moz-transition: all .2s ease-in-out; -o-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } a.thumbnail:hover, a.thumbnail:focus { border-color: #3071a9; -webkit-box-shadow: 0 1px 4px rgba(0,105,214,0.25); -moz-box-shadow: 0 1px 4px rgba(0,105,214,0.25); box-shadow: 0 1px 4px rgba(0,105,214,0.25); } .thumbnail > img { display: block; max-width: 100%; margin-left: auto; margin-right: auto; } .thumbnail .caption { padding: 9px; color: #555; } .media, .media-body { overflow: hidden; *overflow: visible; zoom: 1; } .media, .media .media { margin-top: 15px; } .media:first-child { margin-top: 0; } .media-object { display: block; } .media-heading { margin: 0 0 5px; } .media > .pull-left { margin-right: 10px; } .media > .pull-right { margin-left: 10px; } .media-list { margin-left: 0; list-style: none; } .label, .badge { display: inline-block; padding: 2px 4px; font-size: 10.998px; font-weight: bold; line-height: 14px; color: #fff; vertical-align: baseline; white-space: nowrap; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #999; } .label { -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .badge { padding-left: 9px; padding-right: 9px; -webkit-border-radius: 9px; -moz-border-radius: 9px; border-radius: 9px; } .label:empty, .badge:empty { display: none; } a.label:hover, a.label:focus, a.badge:hover, a.badge:focus { color: #fff; text-decoration: none; cursor: pointer; } .label-important, .badge-important { background-color: #a94442; } .label-important[href], .badge-important[href] { background-color: #843534; } .label-warning, .badge-warning { background-color: #f89406; } .label-warning[href], .badge-warning[href] { background-color: #c67605; } .label-success, .badge-success { background-color: #3c763d; } .label-success[href], .badge-success[href] { background-color: #2b542c; } .label-info, .badge-info { background-color: #31708f; } .label-info[href], .badge-info[href] { background-color: #245269; } .label-inverse, .badge-inverse { background-color: #333; } .label-inverse[href], .badge-inverse[href] { background-color: #1a1a1a; } .btn .label, .btn .badge { position: relative; top: -1px; } .btn-mini .label, .btn-mini .badge { top: 0; } @-webkit-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-moz-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-ms-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-o-keyframes progress-bar-stripes { from { background-position: 0 0; } to { background-position: 40px 0; } } @keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } .progress { overflow: hidden; height: 18px; margin-bottom: 18px; background-color: #f7f7f7; background-image: -moz-linear-gradient(top,#f5f5f5,#f9f9f9); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9)); background-image: -webkit-linear-gradient(top,#f5f5f5,#f9f9f9); background-image: -o-linear-gradient(top,#f5f5f5,#f9f9f9); background-image: linear-gradient(to bottom,#f5f5f5,#f9f9f9); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1); -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1); box-shadow: inset 0 1px 2px rgba(0,0,0,0.1); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .progress .bar { width: 0%; height: 100%; color: #fff; float: left; font-size: 12px; text-align: center; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #0e90d2; background-image: -moz-linear-gradient(top,#149bdf,#0480be); background-image: -webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be)); background-image: -webkit-linear-gradient(top,#149bdf,#0480be); background-image: -o-linear-gradient(top,#149bdf,#0480be); background-image: linear-gradient(to bottom,#149bdf,#0480be); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15); -moz-box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15); box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-transition: width .6s ease; -moz-transition: width .6s ease; -o-transition: width .6s ease; transition: width .6s ease; } .progress .bar + .bar { -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); } .progress-striped .bar { background-color: #149bdf; background-image: -webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,0.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,0.15)),color-stop(.75,rgba(255,255,255,0.15)),color-stop(.75,transparent),to(transparent)); background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); -webkit-background-size: 40px 40px; -moz-background-size: 40px 40px; -o-background-size: 40px 40px; background-size: 40px 40px; } .progress.active .bar { -webkit-animation: progress-bar-stripes 2s linear infinite; -moz-animation: progress-bar-stripes 2s linear infinite; -ms-animation: progress-bar-stripes 2s linear infinite; -o-animation: progress-bar-stripes 2s linear infinite; animation: progress-bar-stripes 2s linear infinite; } .progress-danger .bar, .progress .bar-danger { background-color: #dd514c; background-image: -moz-linear-gradient(top,#ee5f5b,#c43c35); background-image: -webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35)); background-image: -webkit-linear-gradient(top,#ee5f5b,#c43c35); background-image: -o-linear-gradient(top,#ee5f5b,#c43c35); background-image: linear-gradient(to bottom,#ee5f5b,#c43c35); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); } .progress-danger.progress-striped .bar, .progress-striped .bar-danger { background-color: #ee5f5b; background-image: -webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,0.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,0.15)),color-stop(.75,rgba(255,255,255,0.15)),color-stop(.75,transparent),to(transparent)); background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); } .progress-success .bar, .progress .bar-success { background-color: #5eb95e; background-image: -moz-linear-gradient(top,#62c462,#57a957); background-image: -webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957)); background-image: -webkit-linear-gradient(top,#62c462,#57a957); background-image: -o-linear-gradient(top,#62c462,#57a957); background-image: linear-gradient(to bottom,#62c462,#57a957); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); } .progress-success.progress-striped .bar, .progress-striped .bar-success { background-color: #62c462; background-image: -webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,0.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,0.15)),color-stop(.75,rgba(255,255,255,0.15)),color-stop(.75,transparent),to(transparent)); background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); } .progress-info .bar, .progress .bar-info { background-color: #4bb1cf; background-image: -moz-linear-gradient(top,#5bc0de,#339bb9); background-image: -webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9)); background-image: -webkit-linear-gradient(top,#5bc0de,#339bb9); background-image: -o-linear-gradient(top,#5bc0de,#339bb9); background-image: linear-gradient(to bottom,#5bc0de,#339bb9); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); } .progress-info.progress-striped .bar, .progress-striped .bar-info { background-color: #5bc0de; background-image: -webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,0.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,0.15)),color-stop(.75,rgba(255,255,255,0.15)),color-stop(.75,transparent),to(transparent)); background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); } .progress-warning .bar, .progress .bar-warning { background-color: #faa732; background-image: -moz-linear-gradient(top,#fbb450,#f89406); background-image: -webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406)); background-image: -webkit-linear-gradient(top,#fbb450,#f89406); background-image: -o-linear-gradient(top,#fbb450,#f89406); background-image: linear-gradient(to bottom,#fbb450,#f89406); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffab44f', endColorstr='#fff89406', GradientType=0); } .progress-warning.progress-striped .bar, .progress-striped .bar-warning { background-color: #fbb450; background-image: -webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,0.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,0.15)),color-stop(.75,rgba(255,255,255,0.15)),color-stop(.75,transparent),to(transparent)); background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); } .accordion { margin-bottom: 18px; } .accordion-group { margin-bottom: 2px; border: 1px solid #e5e5e5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .accordion-heading { border-bottom: 0; } .accordion-heading .accordion-toggle { display: block; padding: 8px 15px; } .accordion-toggle { cursor: pointer; } .accordion-inner { padding: 9px 15px; border-top: 1px solid #e5e5e5; } .carousel { position: relative; margin-bottom: 18px; line-height: 1; } .carousel-inner { overflow: hidden; width: 100%; position: relative; } .carousel-inner > .item { display: none; position: relative; -webkit-transition: .6s ease-in-out left; -moz-transition: .6s ease-in-out left; -o-transition: .6s ease-in-out left; transition: .6s ease-in-out left; } .carousel-inner > .item > img, .carousel-inner > .item > a > img { display: block; line-height: 1; } .carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev { display: block; } .carousel-inner > .active { left: 0; } .carousel-inner > .next, .carousel-inner > .prev { position: absolute; top: 0; width: 100%; } .carousel-inner > .next { left: 100%; } .carousel-inner > .prev { left: -100%; } .carousel-inner > .next.left, .carousel-inner > .prev.right { left: 0; } .carousel-inner > .active.left { left: -100%; } .carousel-inner > .active.right { left: 100%; } .carousel-control { position: absolute; top: 40%; left: 15px; width: 40px; height: 40px; margin-top: -20px; font-size: 60px; font-weight: 100; line-height: 30px; color: #fff; text-align: center; background: #222; border: 3px solid #fff; -webkit-border-radius: 23px; -moz-border-radius: 23px; border-radius: 23px; opacity: 0.5; filter: alpha(opacity=50); } .carousel-control.right { left: auto; right: 15px; } .carousel-control:hover, .carousel-control:focus { color: #fff; text-decoration: none; opacity: 0.9; filter: alpha(opacity=90); } .carousel-indicators { position: absolute; top: 15px; right: 15px; z-index: 5; margin: 0; list-style: none; } .carousel-indicators li { display: block; float: left; width: 10px; height: 10px; margin-left: 5px; text-indent: -999px; background-color: #ccc; background-color: rgba(255,255,255,0.25); border-radius: 5px; } .carousel-indicators .active { background-color: #fff; } .carousel-caption { position: absolute; left: 0; right: 0; bottom: 0; padding: 15px; background: #333; background: rgba(0,0,0,0.75); } .carousel-caption h4, .carousel-caption p { color: #fff; line-height: 18px; } .carousel-caption h4 { margin: 0 0 5px; } .carousel-caption p { margin-bottom: 0; } .hero-unit { padding: 60px; margin-bottom: 30px; font-size: 18px; font-weight: 200; line-height: 27px; color: inherit; background-color: #eee; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .hero-unit h1 { margin-bottom: 0; font-size: 60px; line-height: 1; color: inherit; letter-spacing: -1px; } .hero-unit li { line-height: 27px; } .pull-right { float: right; } .pull-left { float: left; } .hide { display: none; } .show { display: block; } .invisible { visibility: hidden; } .affix { position: fixed; } .hidden { display: none; visibility: hidden; } .visible-phone { display: none !important; } .visible-tablet { display: none !important; } .hidden-desktop { display: none !important; } .visible-desktop { display: inherit !important; } @media (min-width: 768px) and (max-width: 979px) { .hidden-desktop { display: inherit !important; } .visible-desktop { display: none !important; } .visible-tablet { display: inherit !important; } .hidden-tablet { display: none !important; } } @media (max-width: 767px) { .hidden-desktop { display: inherit !important; } .visible-desktop { display: none !important; } .visible-phone { display: inherit !important; } .hidden-phone { display: none !important; } } .visible-print { display: none !important; } @media print { .visible-print { display: inherit !important; } .hidden-print { display: none !important; } } @media (max-width: 767px) { body { padding-left: 20px; padding-right: 20px; } .navbar-fixed-top, .navbar-fixed-bottom, .navbar-static-top { margin-left: -20px; margin-right: -20px; } .container-fluid { padding: 0; } .dl-horizontal dt { float: none; clear: none; width: auto; text-align: left; } .dl-horizontal dd { margin-left: 0; } .container { width: auto; } .row-fluid { width: 100%; } .row, .thumbnails { margin-left: 0; } .thumbnails > li { float: none; margin-left: 0; } [class*="span"], .uneditable-input[class*="span"], .row-fluid [class*="span"] { float: none; display: block; width: 100%; margin-left: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .span12, .row-fluid .span12 { width: 100%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .row-fluid [class*="offset"]:first-child { margin-left: 0; } .input-large, .input-xlarge, .input-xxlarge, input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input { display: block; width: 100%; min-height: 28px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .input-prepend input, .input-append input, .input-prepend input[class*="span"], .input-append input[class*="span"] { display: inline-block; width: auto; } .controls-row [class*="span"] + [class*="span"] { margin-left: 0; } } @media (max-width: 480px) { .nav-collapse { -webkit-transform: translate3d(0,0,0); } .page-header h1 small { display: block; line-height: 18px; } input[type="checkbox"], input[type="radio"] { border: 1px solid #ccc; } .form-horizontal .control-label { float: none; width: auto; padding-top: 0; text-align: left; } .form-horizontal .controls { margin-left: 0; } .form-horizontal .control-list { padding-top: 0; } .form-horizontal .form-actions { padding-left: 10px; padding-right: 10px; } .media .pull-left, .media .pull-right { float: none; display: block; margin-bottom: 10px; } .media-object { margin-right: 0; margin-left: 0; } .modal-header .close { padding: 10px; margin: -10px; } .carousel-caption { position: static; } } @media (min-width: 768px) and (max-width: 979px) { .row { margin-left: -20px; *zoom: 1; } .row:before, .row:after { display: table; content: ""; line-height: 0; } .row:after { clear: both; } [class*="span"] { float: left; min-height: 1px; margin-left: 20px; } .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 724px; } .span12 { width: 724px; } .span11 { width: 662px; } .span10 { width: 600px; } .span9 { width: 538px; } .span8 { width: 476px; } .span7 { width: 414px; } .span6 { width: 352px; } .span5 { width: 290px; } .span4 { width: 228px; } .span3 { width: 166px; } .span2 { width: 104px; } .span1 { width: 42px; } .offset12 { margin-left: 764px; } .offset11 { margin-left: 702px; } .offset10 { margin-left: 640px; } .offset9 { margin-left: 578px; } .offset8 { margin-left: 516px; } .offset7 { margin-left: 454px; } .offset6 { margin-left: 392px; } .offset5 { margin-left: 330px; } .offset4 { margin-left: 268px; } .offset3 { margin-left: 206px; } .offset2 { margin-left: 144px; } .offset1 { margin-left: 82px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; content: ""; line-height: 0; } .row-fluid:after { clear: both; } .row-fluid [class*="span"] { display: block; width: 100%; min-height: 28px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; margin-left: 2.7624309392265%; *margin-left: 2.7092394498648%; } .row-fluid [class*="span"]:first-child { margin-left: 0; } .row-fluid .controls-row [class*="span"] + [class*="span"] { margin-left: 2.7624309392265%; } .row-fluid .span12 { width: 100%; *width: 99.946808510638%; } .row-fluid .span11 { width: 91.489361702128%; *width: 91.436170212766%; } .row-fluid .span10 { width: 82.978723404255%; *width: 82.925531914894%; } .row-fluid .span9 { width: 74.468085106383%; *width: 74.414893617021%; } .row-fluid .span8 { width: 65.957446808511%; *width: 65.904255319149%; } .row-fluid .span7 { width: 57.446808510638%; *width: 57.393617021277%; } .row-fluid .span6 { width: 48.936170212766%; *width: 48.882978723404%; } .row-fluid .span5 { width: 40.425531914894%; *width: 40.372340425532%; } .row-fluid .span4 { width: 31.914893617021%; *width: 31.86170212766%; } .row-fluid .span3 { width: 23.404255319149%; *width: 23.351063829787%; } .row-fluid .span2 { width: 14.893617021277%; *width: 14.840425531915%; } .row-fluid .span1 { width: 6.3829787234043%; *width: 6.3297872340426%; } .row-fluid .offset12 { margin-left: 105.52486187845%; *margin-left: 105.41847889973%; } .row-fluid .offset12:first-child { margin-left: 102.76243093923%; *margin-left: 102.6560479605%; } .row-fluid .offset11 { margin-left: 95.744680851064%; *margin-left: 95.63829787234%; } .row-fluid .offset11:first-child { margin-left: 93.617021276596%; *margin-left: 93.510638297872%; } .row-fluid .offset10 { margin-left: 87.234042553191%; *margin-left: 87.127659574468%; } .row-fluid .offset10:first-child { margin-left: 85.106382978723%; *margin-left: 85%; } .row-fluid .offset9 { margin-left: 78.723404255319%; *margin-left: 78.617021276596%; } .row-fluid .offset9:first-child { margin-left: 76.595744680851%; *margin-left: 76.489361702128%; } .row-fluid .offset8 { margin-left: 70.212765957447%; *margin-left: 70.106382978723%; } .row-fluid .offset8:first-child { margin-left: 68.085106382979%; *margin-left: 67.978723404255%; } .row-fluid .offset7 { margin-left: 61.702127659574%; *margin-left: 61.595744680851%; } .row-fluid .offset7:first-child { margin-left: 59.574468085106%; *margin-left: 59.468085106383%; } .row-fluid .offset6 { margin-left: 53.191489361702%; *margin-left: 53.085106382979%; } .row-fluid .offset6:first-child { margin-left: 51.063829787234%; *margin-left: 50.957446808511%; } .row-fluid .offset5 { margin-left: 44.68085106383%; *margin-left: 44.574468085106%; } .row-fluid .offset5:first-child { margin-left: 42.553191489362%; *margin-left: 42.446808510638%; } .row-fluid .offset4 { margin-left: 36.170212765957%; *margin-left: 36.063829787234%; } .row-fluid .offset4:first-child { margin-left: 34.042553191489%; *margin-left: 33.936170212766%; } .row-fluid .offset3 { margin-left: 27.659574468085%; *margin-left: 27.553191489362%; } .row-fluid .offset3:first-child { margin-left: 25.531914893617%; *margin-left: 25.425531914894%; } .row-fluid .offset2 { margin-left: 19.148936170213%; *margin-left: 19.042553191489%; } .row-fluid .offset2:first-child { margin-left: 17.021276595745%; *margin-left: 16.914893617021%; } .row-fluid .offset1 { margin-left: 10.63829787234%; *margin-left: 10.531914893617%; } .row-fluid .offset1:first-child { margin-left: 8.5106382978723%; *margin-left: 8.4042553191489%; } input, textarea, .uneditable-input { margin-left: 0; } .controls-row [class*="span"] + [class*="span"] { margin-left: 20px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 710px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 648px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 586px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 524px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 462px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 400px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 338px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 276px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 214px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 152px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 90px; } input.span1, textarea.span1, .uneditable-input.span1 { width: 28px; } } @media (min-width: 1200px) { .row { margin-left: -30px; *zoom: 1; } .row:before, .row:after { display: table; content: ""; line-height: 0; } .row:after { clear: both; } [class*="span"] { float: left; min-height: 1px; margin-left: 30px; } .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 1170px; } .span12 { width: 1170px; } .span11 { width: 1070px; } .span10 { width: 970px; } .span9 { width: 870px; } .span8 { width: 770px; } .span7 { width: 670px; } .span6 { width: 570px; } .span5 { width: 470px; } .span4 { width: 370px; } .span3 { width: 270px; } .span2 { width: 170px; } .span1 { width: 70px; } .offset12 { margin-left: 1230px; } .offset11 { margin-left: 1130px; } .offset10 { margin-left: 1030px; } .offset9 { margin-left: 930px; } .offset8 { margin-left: 830px; } .offset7 { margin-left: 730px; } .offset6 { margin-left: 630px; } .offset5 { margin-left: 530px; } .offset4 { margin-left: 430px; } .offset3 { margin-left: 330px; } .offset2 { margin-left: 230px; } .offset1 { margin-left: 130px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; content: ""; line-height: 0; } .row-fluid:after { clear: both; } .row-fluid [class*="span"] { display: block; width: 100%; min-height: 28px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; margin-left: 2.5641025641026%; *margin-left: 2.5109110747409%; } .row-fluid [class*="span"]:first-child { margin-left: 0; } .row-fluid .controls-row [class*="span"] + [class*="span"] { margin-left: 2.5641025641026%; } .row-fluid .span12 { width: 100%; *width: 99.946808510638%; } .row-fluid .span11 { width: 91.436464088398%; *width: 91.383272599036%; } .row-fluid .span10 { width: 82.872928176796%; *width: 82.819736687434%; } .row-fluid .span9 { width: 74.309392265193%; *width: 74.256200775832%; } .row-fluid .span8 { width: 65.745856353591%; *width: 65.692664864229%; } .row-fluid .span7 { width: 57.182320441989%; *width: 57.129128952627%; } .row-fluid .span6 { width: 48.618784530387%; *width: 48.565593041025%; } .row-fluid .span5 { width: 40.055248618785%; *width: 40.002057129423%; } .row-fluid .span4 { width: 31.491712707182%; *width: 31.438521217821%; } .row-fluid .span3 { width: 22.92817679558%; *width: 22.874985306218%; } .row-fluid .span2 { width: 14.364640883978%; *width: 14.311449394616%; } .row-fluid .span1 { width: 5.8011049723757%; *width: 5.747913483014%; } .row-fluid .offset12 { margin-left: 105.12820512821%; *margin-left: 105.02182214948%; } .row-fluid .offset12:first-child { margin-left: 102.5641025641%; *margin-left: 102.45771958538%; } .row-fluid .offset11 { margin-left: 96.961325966851%; *margin-left: 96.854942988127%; } .row-fluid .offset11:first-child { margin-left: 94.198895027624%; *margin-left: 94.092512048901%; } .row-fluid .offset10 { margin-left: 88.397790055249%; *margin-left: 88.291407076525%; } .row-fluid .offset10:first-child { margin-left: 85.635359116022%; *margin-left: 85.528976137299%; } .row-fluid .offset9 { margin-left: 79.834254143646%; *margin-left: 79.727871164923%; } .row-fluid .offset9:first-child { margin-left: 77.07182320442%; *margin-left: 76.965440225696%; } .row-fluid .offset8 { margin-left: 71.270718232044%; *margin-left: 71.164335253321%; } .row-fluid .offset8:first-child { margin-left: 68.508287292818%; *margin-left: 68.401904314094%; } .row-fluid .offset7 { margin-left: 62.707182320442%; *margin-left: 62.600799341719%; } .row-fluid .offset7:first-child { margin-left: 59.944751381215%; *margin-left: 59.838368402492%; } .row-fluid .offset6 { margin-left: 54.14364640884%; *margin-left: 54.037263430116%; } .row-fluid .offset6:first-child { margin-left: 51.381215469613%; *margin-left: 51.27483249089%; } .row-fluid .offset5 { margin-left: 45.580110497238%; *margin-left: 45.473727518514%; } .row-fluid .offset5:first-child { margin-left: 42.817679558011%; *margin-left: 42.711296579288%; } .row-fluid .offset4 { margin-left: 37.016574585635%; *margin-left: 36.910191606912%; } .row-fluid .offset4:first-child { margin-left: 34.254143646409%; *margin-left: 34.147760667685%; } .row-fluid .offset3 { margin-left: 28.453038674033%; *margin-left: 28.34665569531%; } .row-fluid .offset3:first-child { margin-left: 25.690607734807%; *margin-left: 25.584224756083%; } .row-fluid .offset2 { margin-left: 19.889502762431%; *margin-left: 19.783119783708%; } .row-fluid .offset2:first-child { margin-left: 17.127071823204%; *margin-left: 17.020688844481%; } .row-fluid .offset1 { margin-left: 11.325966850829%; *margin-left: 11.219583872105%; } .row-fluid .offset1:first-child { margin-left: 8.5635359116022%; *margin-left: 8.4571529328788%; } input, textarea, .uneditable-input { margin-left: 0; } .controls-row [class*="span"] + [class*="span"] { margin-left: 30px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 1156px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 1056px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 956px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 856px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 756px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 656px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 556px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 456px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 356px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 256px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 156px; } input.span1, textarea.span1, .uneditable-input.span1 { width: 56px; } .thumbnails { margin-left: -30px; } .thumbnails > li { margin-left: 30px; } .row-fluid .thumbnails { margin-left: 0; } } @media (max-width: 767px) { body { padding-top: 0; } .navbar-fixed-top, .navbar-fixed-bottom { position: static; } .navbar-fixed-top { margin-bottom: 18px; } .navbar-fixed-bottom { margin-top: 18px; } .navbar-fixed-top .navbar-inner, .navbar-fixed-bottom .navbar-inner { padding: 5px; } .navbar .container { width: auto; padding: 0; } .navbar .brand { padding-left: 10px; padding-right: 10px; margin: 0 0 0 -5px; } .nav-collapse { clear: both; } .nav-collapse .nav { float: none; margin: 0 0 9px; } .nav-collapse .nav > li { float: none; } .nav-collapse .nav > li > a { margin-bottom: 2px; } .nav-collapse .nav > .divider-vertical { display: none; } .nav-collapse .nav .nav-header { color: #555; text-shadow: none; } .nav-collapse .nav > li > a, .nav-collapse .dropdown-menu a { padding: 9px 15px; font-weight: bold; color: #555; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .nav-collapse .btn { padding: 4px 10px 4px; font-weight: normal; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .nav-collapse .dropdown-menu li + li a { margin-bottom: 2px; } .nav-collapse .nav > li > a:hover, .nav-collapse .nav > li > a:focus, .nav-collapse .dropdown-menu a:hover, .nav-collapse .dropdown-menu a:focus { background-color: #f2f2f2; } .navbar-inverse .nav-collapse .nav > li > a, .navbar-inverse .nav-collapse .dropdown-menu a { color: #d9d9d9; } .navbar-inverse .nav-collapse .nav > li > a:hover, .navbar-inverse .nav-collapse .nav > li > a:focus, .navbar-inverse .nav-collapse .dropdown-menu a:hover, .navbar-inverse .nav-collapse .dropdown-menu a:focus { background-color: #10223e; } .nav-collapse.in .btn-group { margin-top: 5px; padding: 0; } .nav-collapse .dropdown-menu { position: static; top: auto; left: auto; float: none; display: none; max-width: none; margin: 0 15px; padding: 0; background-color: transparent; border: none; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .nav-collapse .open > .dropdown-menu { display: block; } .nav-collapse .dropdown-menu:before, .nav-collapse .dropdown-menu:after { display: none; } .nav-collapse .dropdown-menu .divider { display: none; } .nav-collapse .nav > li > .dropdown-menu:before, .nav-collapse .nav > li > .dropdown-menu:after { display: none; } .nav-collapse .navbar-form, .nav-collapse .navbar-search { float: none; padding: 9px 15px; margin: 9px 0; border-top: 1px solid #f2f2f2; border-bottom: 1px solid #f2f2f2; -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); } .navbar-inverse .nav-collapse .navbar-form, .navbar-inverse .nav-collapse .navbar-search { border-top-color: #10223e; border-bottom-color: #10223e; } .navbar .nav-collapse .nav.pull-right { float: none; margin-left: 0; } .nav-collapse, .nav-collapse.collapse { overflow: hidden; height: 0; } .navbar .btn-navbar { display: block; } .navbar-static .navbar-inner { padding-left: 10px; padding-right: 10px; } } @media (min-width: 768px) { .nav-collapse.collapse { height: auto !important; overflow: visible !important; } } .small { font-size: 11px; } iframe, svg { max-width: 100%; } .nowrap { white-space: nowrap; } .center, .table td.center, .table th.center { text-align: center; } a.disabled, a.disabled:hover { color: #999999; background-color: transparent; cursor: default; text-decoration: none; } .hero-unit { text-align: center; } .hero-unit .lead { margin-bottom: 18px; font-size: 20px; font-weight: 200; line-height: 27px; } .btn .caret { margin-bottom: 7px; } .btn.btn-micro .caret { margin: 5px 0; } .blog-row-rule, .blog-item-rule { border: 0; } body.modal { padding-top: 0; } .row-even, .row-odd { padding: 5px; width: 99%; border-bottom: 1px solid #ddd; } .row-odd { background-color: transparent; } .row-even { background-color: #f9f9f9; } .blog-row-rule, .blog-item-rule { border: 0; } .row-fluid .row-reveal { visibility: hidden; } .row-fluid:hover .row-reveal { visibility: visible; } .btn-wide { width: 80%; } .nav-list > li.offset > a { padding-left: 30px; font-size: 12px; } .blog-row-rule, .blog-item-rule { border: 0; } .row-fluid .offset1 { margin-left: 8.382978723%; } .row-fluid .offset2 { margin-left: 16.89361702%; } .row-fluid .offset3 { margin-left: 25.404255317%; } .row-fluid .offset4 { margin-left: 33.914893614%; } .row-fluid .offset5 { margin-left: 42.425531911%; } .row-fluid .offset6 { margin-left: 50.93617020799999%; } .row-fluid .offset7 { margin-left: 59.446808505%; } .row-fluid .offset8 { margin-left: 67.95744680199999%; } .row-fluid .offset9 { margin-left: 76.468085099%; } .row-fluid .offset10 { margin-left: 84.97872339599999%; } .row-fluid .offset11 { margin-left: 91.489361693%; } .navbar .nav > li > a.btn { padding: 4px 10px; line-height: 18px; } .nav-tabs.nav-dark { border-bottom: 1px solid #333; text-shadow: 1px 1px 1px #000; } .nav-tabs.nav-dark > li > a { color: #F8F8F8; } .nav-tabs.nav-dark > li > a:hover { border-color: #333 #333 #111; background-color: #777777; } .nav-tabs.nav-dark > .active > a, .nav-tabs.nav-dark > .active > a:hover { color: #ffffff; background-color: #555555; border: 1px solid #222; border-bottom-color: transparent; } .thumbnail.pull-left { margin: 0 10px 10px 0; } .thumbnail.pull-right { margin: 0 0 10px 10px; } .width-10 { width: 10px; } .width-20 { width: 20px; } .width-30 { width: 30px; } .width-40 { width: 40px; } .width-50 { width: 50px; } .width-60 { width: 60px; } .width-70 { width: 70px; } .width-80 { width: 80px; } .width-90 { width: 90px; } .width-100 { width: 100px; } .height-10 { height: 10px; } .height-20 { height: 20px; } .height-30 { height: 30px; } .height-40 { height: 40px; } .height-50 { height: 50px; } .height-60 { height: 60px; } .height-70 { height: 70px; } .height-80 { height: 80px; } .height-90 { height: 90px; } .height-100 { height: 100px; } hr.hr-condensed { margin: 10px 0; } .list-striped, .row-striped { list-style: none; line-height: 18px; text-align: left; vertical-align: middle; border-top: 1px solid #ddd; margin-left: 0; } .list-striped li, .list-striped dd, .row-striped .row, .row-striped .row-fluid { border-bottom: 1px solid #ddd; padding: 8px; } .list-striped li:nth-child(odd), .list-striped dd:nth-child(odd), .row-striped .row:nth-child(odd), .row-striped .row-fluid:nth-child(odd) { background-color: #f9f9f9; } .list-striped li:hover, .list-striped dd:hover, .row-striped .row:hover, .row-striped .row-fluid:hover { background-color: #f5f5f5; } .row-striped .row-fluid { width: 97%; } .row-striped .row-fluid [class*="span"] { min-height: 10px; } .row-striped .row-fluid [class*="span"] { margin-left: 8px; } .row-striped .row-fluid [class*="span"]:first-child { margin-left: 0; } .list-condensed li { padding: 4px 5px; } .row-condensed .row, .row-condensed .row-fluid { padding: 4px 5px; } .list-bordered, .row-bordered { list-style: none; line-height: 18px; text-align: left; vertical-align: middle; margin-left: 0; border: 1px solid #ddd; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .radio.btn-group input[type=radio] { display: none; } .radio.btn-group > label:first-of-type { margin-left: 0; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-topleft: 4px; } fieldset.radio.btn-group { padding-left: 0; } .iframe-bordered { border: 1px solid #ddd; } .tab-content { overflow: visible; } .tabs-left .tab-content { overflow: auto; } .nav-tabs > li > span { display: block; margin-right: 2px; padding-right: 12px; padding-left: 12px; padding-top: 8px; padding-bottom: 8px; line-height: 18px; border: 1px solid transparent; -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .btn-micro { padding: 1px 4px; font-size: 10px; line-height: 8px; } .btn-group > .btn-micro { font-size: 10px; } .tip-wrap { max-width: 200px; padding: 3px 8px; color: #fff; text-align: center; text-decoration: none; background-color: #000; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; z-index: 100; } .page-header { margin: 2px 0px 10px 0px; padding-bottom: 5px; } .input-prepend .chzn-container-single .chzn-single, .input-append .chzn-container-single .chzn-single { border-color: #ccc; height: 26px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; } .input-prepend .chzn-container-single .chzn-drop, .input-append .chzn-container-single .chzn-drop { border-color: #ccc; } .input-prepend > .add-on, .input-append > .add-on { vertical-align: top; } .input-prepend .chzn-container-single .chzn-single { -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-prepend .chzn-container-single .chzn-single-with-drop { -webkit-border-radius: 0 3px 0 0; -moz-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0; } .input-append .chzn-container-single .chzn-single { -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-append .chzn-container-single .chzn-single-with-drop { -webkit-border-radius: 3px 0 0 0; -moz-border-radius: 3px 0 0 0; border-radius: 3px 0 0 0; } .input-prepend.input-append .chzn-container-single .chzn-single, .input-prepend.input-append .chzn-container-single .chzn-single-with-drop { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .element-invisible { position: absolute; padding: 0; margin: 0; border: 0; height: 1px; width: 1px; overflow: hidden; } .form-vertical .control-label { float: none; width: auto; padding-right: 0; padding-top: 0; text-align: left; } .form-vertical .controls { margin-left: 0; } .width-auto { width: auto; } .btn-group .chzn-results { white-space: normal; } .accordion-body.in:hover { overflow: visible; } .invalid { color: #9d261d; font-weight: bold; } input.invalid { border: 1px solid #9d261d; } select.chzn-done.invalid + .chzn-container.chzn-container-single > a.chzn-single, select.chzn-done.invalid + .chzn-container.chzn-container-multi > ul.chzn-choices { border-color: #9d261d; color: #9d261d; } .tooltip { max-width: 400px; } .tooltip-inner { max-width: none; text-align: left; text-shadow: none; } th .tooltip-inner { font-weight: normal; } .tooltip.hasimage { opacity: 1; } .tip-text { text-align: left; } .btn-group > .btn + .dropdown-backdrop + .btn { margin-left: -1px; } .btn-group > .btn + .dropdown-backdrop + .dropdown-toggle { padding-left: 8px; padding-right: 8px; -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); *padding-top: 5px; *padding-bottom: 5px; } .btn-group > .btn-mini + .dropdown-backdrop + .dropdown-toggle { padding-left: 5px; padding-right: 5px; *padding-top: 2px; *padding-bottom: 2px; } .btn-group > .btn-small + .dropdown-backdrop + .dropdown-toggle { *padding-top: 5px; *padding-bottom: 4px; } .btn-group > .btn-large + .dropdown-backdrop + .dropdown-toggle { padding-left: 12px; padding-right: 12px; *padding-top: 7px; *padding-bottom: 7px; } .dropdown-menu { text-align: left; } div.modal { position: fixed; top: 5%; left: 50%; z-index: 1050; width: 80%; margin-left: -40%; background-color: #fff; border: 1px solid #999; border: 1px solid rgba(0,0,0,0.3); *border: 1px solid #999; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 3px 7px rgba(0,0,0,0.3); -moz-box-shadow: 0 3px 7px rgba(0,0,0,0.3); box-shadow: 0 3px 7px rgba(0,0,0,0.3); -webkit-background-clip: padding-box; -moz-background-clip: padding-box; background-clip: padding-box; outline: none; } div.modal.fade { -webkit-transition: opacity .3s linear, top .3s ease-out; -moz-transition: opacity .3s linear, top .3s ease-out; -o-transition: opacity .3s linear, top .3s ease-out; transition: opacity .3s linear, top .3s ease-out; top: -25%; } div.modal.fade.in { top: 5%; } .modal-batch { overflow-y: visible; } @media (max-width: 767px) { div.modal { position: fixed; top: 20px; left: 20px; right: 20px; width: auto; margin: 0; } div.modal.fade { top: -100px; } div.modal.fade.in { top: 20px; } } @media (max-width: 480px) { div.modal { top: 10px; left: 10px; right: 10px; } } @font-face { font-family: 'IcoMoon'; src: url('../../../../media/jui/fonts/IcoMoon.eot'); src: url('../../../../media/jui/fonts/IcoMoon.eot?#iefix') format('embedded-opentype'), url('../../../../media/jui/fonts/IcoMoon.woff') format('woff'), url('../../../../media/jui/fonts/IcoMoon.ttf') format('truetype'), url('../../../../media/jui/fonts/IcoMoon.svg#IcoMoon') format('svg'); font-weight: normal; font-style: normal; } [data-icon]:before { font-family: 'IcoMoon'; content: attr(data-icon); speak: none; } [class^="icon-"], [class*=" icon-"] { display: inline-block; width: 14px; height: 14px; margin-right: .25em; line-height: 14px; } [class^="icon-"]:before, [class*=" icon-"]:before { font-family: 'IcoMoon'; font-style: normal; speak: none; } [class^="icon-"].disabled, [class*=" icon-"].disabled { font-weight: normal; } .icon-joomla:before { content: "\e200"; } .icon-chevron-up:before, .icon-uparrow:before, .icon-arrow-up:before { content: "\e005"; } .icon-chevron-right:before, .icon-rightarrow:before, .icon-arrow-right:before { content: "\e006"; } .icon-chevron-down:before, .icon-downarrow:before, .icon-arrow-down:before { content: "\e007"; } .icon-chevron-left:before, .icon-leftarrow:before, .icon-arrow-left:before { content: "\e008"; } .icon-arrow-first:before { content: "\e003"; } .icon-arrow-last:before { content: "\e004"; } .icon-arrow-up-2:before { content: "\e009"; } .icon-arrow-right-2:before { content: "\e00a"; } .icon-arrow-down-2:before { content: "\e00b"; } .icon-arrow-left-2:before { content: "\e00c"; } .icon-arrow-up-3:before { content: "\e00f"; } .icon-arrow-right-3:before { content: "\e010"; } .icon-arrow-down-3:before { content: "\e011"; } .icon-arrow-left-3:before { content: "\e012"; } .icon-menu-2:before { content: "\e00e"; } .icon-arrow-up-4:before { content: "\e201"; } .icon-arrow-right-4:before { content: "\e202"; } .icon-arrow-down-4:before { content: "\e203"; } .icon-arrow-left-4:before { content: "\e204"; } .icon-share:before, .icon-redo:before { content: "\27"; } .icon-undo:before { content: "\28"; } .icon-forward-2:before { content: "\e205"; } .icon-backward-2:before, .icon-reply:before { content: "\e206"; } .icon-unblock:before, .icon-refresh:before, .icon-redo-2:before { content: "\6c"; } .icon-undo-2:before { content: "\e207"; } .icon-move:before { content: "\7a"; } .icon-expand:before { content: "\66"; } .icon-contract:before { content: "\67"; } .icon-expand-2:before { content: "\68"; } .icon-contract-2:before { content: "\69"; } .icon-play:before { content: "\e208"; } .icon-pause:before { content: "\e209"; } .icon-stop:before { content: "\e210"; } .icon-previous:before, .icon-backward:before { content: "\7c"; } .icon-next:before, .icon-forward:before { content: "\7b"; } .icon-first:before { content: "\7d"; } .icon-last:before { content: "\e000"; } .icon-play-circle:before { content: "\e00d"; } .icon-pause-circle:before { content: "\e211"; } .icon-stop-circle:before { content: "\e212"; } .icon-backward-circle:before { content: "\e213"; } .icon-forward-circle:before { content: "\e214"; } .icon-loop:before { content: "\e001"; } .icon-shuffle:before { content: "\e002"; } .icon-search:before { content: "\53"; } .icon-zoom-in:before { content: "\64"; } .icon-zoom-out:before { content: "\65"; } .icon-apply:before, .icon-edit:before, .icon-pencil:before { content: "\2b"; } .icon-pencil-2:before { content: "\2c"; } .icon-brush:before { content: "\3b"; } .icon-save-new:before, .icon-plus-2:before { content: "\5d"; } .icon-minus-sign:before, .icon-minus-2:before { content: "\5e"; } .icon-delete:before, .icon-remove:before, .icon-cancel-2:before { content: "\49"; } .icon-publish:before, .icon-save:before, .icon-ok:before, .icon-checkmark:before { content: "\47"; } .icon-new:before, .icon-plus:before { content: "\2a"; } .icon-plus-circle:before { content: "\e215"; } .icon-minus:before, .icon-not-ok:before { content: "\4b"; } .icon-ban-circle:before, .icon-minus-circle:before { content: "\e216"; } .icon-unpublish:before, .icon-cancel:before { content: "\4a"; } .icon-cancel-circle:before { content: "\e217"; } .icon-checkmark-2:before { content: "\e218"; } .icon-checkmark-circle:before { content: "\e219"; } .icon-info:before { content: "\e220"; } .icon-info-2:before, .icon-info-circle:before { content: "\e221"; } .icon-question:before, .icon-question-sign:before, .icon-help:before { content: "\45"; } .icon-question-2:before, .icon-question-circle:before { content: "\e222"; } .icon-notification:before { content: "\e223"; } .icon-notification-2:before, .icon-notification-circle:before { content: "\e224"; } .icon-pending:before, .icon-warning:before { content: "\48"; } .icon-warning-2:before, .icon-warning-circle:before { content: "\e225"; } .icon-checkbox-unchecked:before { content: "\3d"; } .icon-checkin:before, .icon-checkbox:before, .icon-checkbox-checked:before { content: "\3e"; } .icon-checkbox-partial:before { content: "\3f"; } .icon-square:before { content: "\e226"; } .icon-radio-unchecked:before { content: "\e227"; } .icon-radio-checked:before, .icon-generic:before { content: "\e228"; } .icon-circle:before { content: "\e229"; } .icon-signup:before { content: "\e230"; } .icon-grid:before, .icon-grid-view:before { content: "\58"; } .icon-grid-2:before, .icon-grid-view-2:before { content: "\59"; } .icon-menu:before { content: "\5a"; } .icon-list:before, .icon-list-view:before { content: "\31"; } .icon-list-2:before { content: "\e231"; } .icon-menu-3:before { content: "\e232"; } .icon-folder-open:before, .icon-folder:before { content: "\2d"; } .icon-folder-close:before, .icon-folder-2:before { content: "\2e"; } .icon-folder-plus:before { content: "\e234"; } .icon-folder-minus:before { content: "\e235"; } .icon-folder-3:before { content: "\e236"; } .icon-folder-plus-2:before { content: "\e237"; } .icon-folder-remove:before { content: "\e238"; } .icon-file:before { content: "\e016"; } .icon-file-2:before { content: "\e239"; } .icon-file-add:before, .icon-file-plus:before { content: "\29"; } .icon-file-minus:before { content: "\e017"; } .icon-file-check:before { content: "\e240"; } .icon-file-remove:before { content: "\e241"; } .icon-save-copy:before, .icon-copy:before { content: "\e018"; } .icon-stack:before { content: "\e242"; } .icon-tree:before { content: "\e243"; } .icon-tree-2:before { content: "\e244"; } .icon-paragraph-left:before { content: "\e246"; } .icon-paragraph-center:before { content: "\e247"; } .icon-paragraph-right:before { content: "\e248"; } .icon-paragraph-justify:before { content: "\e249"; } .icon-screen:before { content: "\e01c"; } .icon-tablet:before { content: "\e01d"; } .icon-mobile:before { content: "\e01e"; } .icon-box-add:before { content: "\51"; } .icon-box-remove:before { content: "\52"; } .icon-download:before { content: "\e021"; } .icon-upload:before { content: "\e022"; } .icon-home:before { content: "\21"; } .icon-home-2:before { content: "\e250"; } .icon-out-2:before, .icon-new-tab:before { content: "\e024"; } .icon-out-3:before, .icon-new-tab-2:before { content: "\e251"; } .icon-link:before { content: "\e252"; } .icon-picture:before, .icon-image:before { content: "\2f"; } .icon-pictures:before, .icon-images:before { content: "\30"; } .icon-palette:before, .icon-color-palette:before { content: "\e014"; } .icon-camera:before { content: "\55"; } .icon-camera-2:before, .icon-video:before { content: "\e015"; } .icon-play-2:before, .icon-video-2:before, .icon-youtube:before { content: "\56"; } .icon-music:before { content: "\57"; } .icon-user:before { content: "\22"; } .icon-users:before { content: "\e01f"; } .icon-vcard:before { content: "\6d"; } .icon-address:before { content: "\70"; } .icon-share-alt:before, .icon-out:before { content: "\26"; } .icon-enter:before { content: "\e257"; } .icon-exit:before { content: "\e258"; } .icon-comment:before, .icon-comments:before { content: "\24"; } .icon-comments-2:before { content: "\25"; } .icon-quote:before, .icon-quotes-left:before { content: "\60"; } .icon-quote-2:before, .icon-quotes-right:before { content: "\61"; } .icon-quote-3:before, .icon-bubble-quote:before { content: "\e259"; } .icon-phone:before { content: "\e260"; } .icon-phone-2:before { content: "\e261"; } .icon-envelope:before, .icon-mail:before { content: "\4d"; } .icon-envelope-opened:before, .icon-mail-2:before { content: "\4e"; } .icon-unarchive:before, .icon-drawer:before { content: "\4f"; } .icon-archive:before, .icon-drawer-2:before { content: "\50"; } .icon-briefcase:before { content: "\e020"; } .icon-tag:before { content: "\e262"; } .icon-tag-2:before { content: "\e263"; } .icon-tags:before { content: "\e264"; } .icon-tags-2:before { content: "\e265"; } .icon-options:before, .icon-cog:before { content: "\38"; } .icon-cogs:before { content: "\37"; } .icon-screwdriver:before, .icon-tools:before { content: "\36"; } .icon-wrench:before { content: "\3a"; } .icon-equalizer:before { content: "\39"; } .icon-dashboard:before { content: "\78"; } .icon-switch:before { content: "\e266"; } .icon-filter:before { content: "\54"; } .icon-purge:before, .icon-trash:before { content: "\4c"; } .icon-checkedout:before, .icon-lock:before, .icon-locked:before { content: "\23"; } .icon-unlock:before { content: "\e267"; } .icon-key:before { content: "\5f"; } .icon-support:before { content: "\46"; } .icon-database:before { content: "\62"; } .icon-scissors:before { content: "\e268"; } .icon-health:before { content: "\6a"; } .icon-wand:before { content: "\6b"; } .icon-eye-open:before, .icon-eye:before { content: "\3c"; } .icon-eye-close:before, .icon-eye-blocked:before, .icon-eye-2:before { content: "\e269"; } .icon-clock:before { content: "\6e"; } .icon-compass:before { content: "\6f"; } .icon-broadcast:before, .icon-connection:before, .icon-wifi:before { content: "\e01b"; } .icon-book:before { content: "\e271"; } .icon-lightning:before, .icon-flash:before { content: "\79"; } .icon-print:before, .icon-printer:before { content: "\e013"; } .icon-feed:before { content: "\71"; } .icon-calendar:before { content: "\43"; } .icon-calendar-2:before { content: "\44"; } .icon-calendar-3:before { content: "\e273"; } .icon-pie:before { content: "\77"; } .icon-bars:before { content: "\76"; } .icon-chart:before { content: "\75"; } .icon-power-cord:before { content: "\32"; } .icon-cube:before { content: "\33"; } .icon-puzzle:before { content: "\34"; } .icon-attachment:before, .icon-paperclip:before, .icon-flag-2:before { content: "\72"; } .icon-lamp:before { content: "\74"; } .icon-pin:before, .icon-pushpin:before { content: "\73"; } .icon-location:before { content: "\63"; } .icon-shield:before { content: "\e274"; } .icon-flag:before { content: "\35"; } .icon-flag-3:before { content: "\e275"; } .icon-bookmark:before { content: "\e023"; } .icon-bookmark-2:before { content: "\e276"; } .icon-heart:before { content: "\e277"; } .icon-heart-2:before { content: "\e278"; } .icon-thumbs-up:before { content: "\5b"; } .icon-thumbs-down:before { content: "\5c"; } .icon-unfeatured:before, .icon-asterisk:before, .icon-star-empty:before { content: "\40"; } .icon-star-2:before { content: "\41"; } .icon-featured:before, .icon-default:before, .icon-star:before { content: "\42"; } .icon-smiley:before, .icon-smiley-happy:before { content: "\e279"; } .icon-smiley-2:before, .icon-smiley-happy-2:before { content: "\e280"; } .icon-smiley-sad:before { content: "\e281"; } .icon-smiley-sad-2:before { content: "\e282"; } .icon-smiley-neutral:before { content: "\e283"; } .icon-smiley-neutral-2:before { content: "\e284"; } .icon-cart:before { content: "\e019"; } .icon-basket:before { content: "\e01a"; } .icon-credit:before { content: "\e286"; } .icon-credit-2:before { content: "\e287"; } .icon-expired:before { content: "\4b"; } .icon-edit:before { color: #24748c; } .icon-publish:before, .icon-save:before, .icon-ok:before, .icon-save-new:before, .icon-save-copy:before, .btn-toolbar .icon-copy:before { color: #378137; } .icon-unpublish:before, .icon-not-ok:before, .icon-eye-close:before, .icon-ban-circle:before, .icon-minus-sign:before, .btn-toolbar .icon-cancel:before { color: #942a25; } .icon-featured:before, .icon-default:before, .icon-expired:before, .icon-pending:before { color: #c67605; } .icon-back:before { content: "\e008"; } html { height: 100%; } body { height: 100%; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } a:hover, a:active, a:focus { outline: none; } .view-login { background-color: #10223e; padding-top: 0; } .view-login .container { width: 300px; position: absolute; top: 50%; left: 50%; margin-top: -206px; margin-left: -150px; } .view-login .navbar-fixed-bottom { padding-left: 20px; padding-right: 20px; text-align: center; } .view-login .navbar-fixed-bottom, .view-login .navbar-fixed-bottom a { color: #FCFCFC; } .view-login .navbar-inverse.navbar-fixed-bottom, .view-login .navbar-inverse.navbar-fixed-bottom a { color: #555; } .view-login .well { padding-bottom: 0; } .view-login .login-joomla { position: absolute; left: 50%; height: 24px; width: 24px; margin-left: -12px; font-size: 22px; } .view-login .navbar-fixed-bottom { position: absolute; } .view-login .input-medium { width: 176px; } .navbar-inverse { color: #333; } .login .chzn-single { width: 222px !important; } .login .chzn-container, .login .chzn-drop { width: 230px !important; max-width: 230px !important; } .login .btn-large { margin-top: 15px; } .login .form-inline .btn-group { display: block; } .small { font-size: 11px; } .row-even .small, .row-odd .small, .row-even .small a, .row-odd .small a { color: #888; } body .navbar, body .navbar-fixed-top { margin-bottom: 0; } .navbar-inner { min-height: 0; background: #f2f2f2; background-image: none; filter: none; } .navbar-inner .container-fluid { padding-left: 10px; padding-right: 10px; font-size: 15px; } .navbar-inverse .navbar-inner { background: #10223e; background-image: none; filter: none; } .navbar .navbar-text { line-height: 30px; } .navbar .admin-logo { float: left; padding: 7px 12px 0px 15px; font-size: 16px; color: #555; } .navbar .admin-logo:hover { color: #333; } .navbar-inverse.navbar .admin-logo { color: #d9d9d9; } .navbar-inverse.navbar .admin-logo:hover { color: #ffffff; } .navbar .brand { float: right; display: block; padding: 6px 10px; margin-left: -20px; font-size: inherit; font-weight: normal; } .navbar .brand:hover, .navbar .brand:focus { text-decoration: none; } .navbar .nav > li > a { padding: 6px 10px; } .navbar .dropdown-menu, .navbar .nav-user { font-size: 13px; } .navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .navbar-fixed-bottom { bottom: 0; } .navbar-fixed-bottom .navbar-inner { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .header { background-color: #1a3867; border-top: 1px solid rgba(255,255,255,0.2); padding: 5px 25px; } .navbar .btn-navbar { background: #17568c; border: 1px solid #0D2242; margin-bottom: 2px; } @media (max-width: 767px) { .header { padding: 4px 18px; margin-left: -20px; margin-right: -20px; } .navbar .admin-logo { margin-left: 10px; padding: 9px 9px 0 9px; } } .header .navbar-search { margin-top: 0; } @media (max-width: 979px) { .header .navbar-search { border-top: 0; border-bottom: 0; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } } .navbar-search .search-query { background: rgba(255,255,255,0.3); } .container-logo { float: right; text-align: right; } .logo { width: 100%; max-width: 143px; height: auto; } .page-title { color: white; font-weight: normal; font-size: 20px; line-height: 36px; margin: 0; } .page-title [class^="icon-"], .page-title [class*=" icon-"] { margin-right: 16px; } @media (max-width: 767px) { .container-logo { display: none; } .page-title { font-size: 18px; line-height: 28px; } .page-title [class^="icon-"], .page-title [class*=" icon-"] { margin-right: 10px; } } .content-title { font-size: 24px; font-weight: normal; line-height: 26px; margin-top: 0; } .subhead { background: #f5f5f5; border-bottom: 1px solid #e3e3e3; color: #0C192E; text-shadow: 0 1px 0 #FFF; margin-bottom: 10px; min-height: 43px; } .subhead-collapse { margin-bottom: 11px; } .subhead-collapse.collapse { height: auto; overflow: visible; } .btn-toolbar { margin-bottom: 5px; } .btn-toolbar .btn-wrapper { display: inline-block; margin: 0 0 5px 5px; } .subhead-fixed { position: fixed; width: 100%; top: 30px; z-index: 100; } @media (max-width: 767px) { .subhead { margin-left: -20px; margin-right: -20px; padding-left: 10px; padding-right: 10px; } } .subhead h1 { font-size: 17px; font-weight: normal; margin-left: 10px; margin-top: 6px; } #toolbar .btn-success { width: 148px; } #toolbar #toolbar-options, #toolbar #toolbar-help { float: right; } html[dir=rtl] #toolbar #toolbar-options, html[dir=rtl] #toolbar #toolbar-help { float: left; } .well .page-header { margin: -10px 0 18px 0; padding-bottom: 5px; } .well .row-even p, .well .row-odd p { margin-bottom: 0; } h1, h2, h3, h4, h5, h6 { margin: 12px 0; } h1 { font-size: 26px; line-height: 28px; } h2 { font-size: 22px; line-height: 24px; } h3 { font-size: 18px; line-height: 20px; } h4 { font-size: 14px; line-height: 16px; } h5 { font-size: 13px; line-height: 15px; } h6 { font-size: 12px; line-height: 14px; } .sidebar-nav .nav-list > li > a { color: #555; } .sidebar-nav .nav-list > li.active > a { color: #fff; margin-right: -16px; } .quick-icons .nav li + .nav-header { margin-top: 12px; margin-bottom: 2px; } .quick-icons .nav-list > li > a { padding: 5px 15px; } .quick-icons { font-size: 14px; margin-bottom: 20px; } .quick-icons .nav-header, .well .module-title.nav-header { font-size: 13px; } .quick-icons h2.nav-header { margin: 12px 0 5px; } .quick-icons h2.nav-header:first-child { margin: 0px 0 5px; } .well .module-title.nav-header { padding: 0px 15px 7px; margin: 0px; } .quick-icons [class^="icon-"]:before, .quick-icons [class*=" icon-"]:before { font-size: 16px; margin-bottom: 20px; line-height: 18px; } .quick-icons .nav-list [class^="icon-"], .quick-icons .nav-list [class*=" icon-"] { margin-right: 9px; } html[dir=rtl] .quick-icons .nav-list [class^="icon-"], html[dir=rtl] .quick-icons .nav-list [class*=" icon-"] { margin-left: 9px; margin-right: 0px; } .j-links-separator { margin: 20px 0px; width: 100%; height: 0px; border-top: 2px solid #DDDDDD; } .container-main, #system-debug { padding-bottom: 50px; } #status { background: #ebebeb; border-top: 1px solid #d4d4d4; padding: 2px 10px 4px 10px; -webkit-box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.8) inset, 0px -15px 15px rgba(255, 255, 255, 0.6); -moz-box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.8) inset, 0px -15px 15px rgba(255, 255, 255, 0.6); box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.8) inset, 0px -15px 15px rgba(255, 255, 255, 0.6); color: #626262; } #status .btn-toolbar, #status p { margin: 0px; } #status .btn-toolbar, #status .btn-group { font-size: 12px; } #status a { color: #626262; } #status.status-top { background: #1a3867; -webkit-box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.2) inset, 0px -1px 0px rgba(0, 0, 0, 0.3) inset, 0px -1px 0px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.2) inset, 0px -1px 0px rgba(0, 0, 0, 0.3) inset, 0px -1px 0px rgba(0, 0, 0, 0.3); box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.2) inset, 0px -1px 0px rgba(0, 0, 0, 0.3) inset, 0px -1px 0px rgba(0, 0, 0, 0.3); border-top: 0; color: #d9d9d9; padding: 2px 20px 6px 20px; } #status.status-top a { color: #d9d9d9; } .pagination-toolbar { margin: 0; } .pagination-toolbar a { line-height: 26px; } .pull-right > .dropdown-menu { left: auto; right: 0; } .disabled { cursor: default; background-image: none; opacity: 0.65; filter: alpha(opacity=65); -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .nav-filters hr { margin: 5px 0; } #assignment.tab-pane { min-height: 500px; } .btn-primary.active, .btn-warning.active, .btn-danger.active, .btn-success.active, .btn-info.active, .btn-inverse.active { color: rgba(255,255,255,0.95); } .chzn-container, .chzn-drop { max-width: 100% !important; } @media (max-width: 979px) { .navbar .nav { font-size: 13px; margin: 0 2px 0 0; } .navbar .nav > li > a { padding: 6px; } .container-fluid { padding-left: 10px; padding-right: 10px; } } @media (min-width: 768px) { body { padding-top: 30px; } body.component { padding-top: 0; } .row-fluid [class*="span"] { margin-left: 15px; } .row-fluid .modal-batch [class*="span"] { margin-left: 0; } .nav-collapse.collapse.in { height: auto !important; } } @media (max-width: 767px) { .navbar-search.pull-right { float: none; text-align: center; } .subhead-fixed { position: static; width: auto; } .container-fluid { padding-left: 0; padding-right: 0; } } @media (min-width: 738px) { body.component { padding-top: 0; } } @media (max-width: 738px) { .navbar .brand { font-size: 16px; } } .btn-subhead { display: none; } @media (min-width: 481px) { #filter-bar { height: 29px; } } @media (max-width: 480px) { .table th:nth-of-type(n+5), .table th:nth-of-type(3), .table th:nth-of-type(2), .table td:nth-of-type(n+5), .table td:nth-of-type(2), .table td:nth-of-type(3) { white-space: normal; } .pagination a { padding: 5px; } .btn-group.divider, .header .row-fluid .span3, .header .row-fluid .span7 { display: none; } .navbar .btn { margin: 0; } .btn-subhead { display: block; margin: 10px 0; } .chzn-container, .chzn-container .chzn-results, .chzn-container-single .chzn-drop { width: 99% !important; } .subhead-collapse.collapse { height: 0; overflow: hidden; } .btn-toolbar .btn-wrapper { display: block; margin: 0px 10px 5px 10px; } .btn-toolbar .btn-wrapper .btn { width: 100% !important; } .subhead { background: none repeat scroll 0 0 transparent; border-bottom: 0 solid #e3e3e3; } .btn-group + .btn-group { margin-left: 10px; } .login .chzn-single { width: 222px !important; } .login .chzn-container, .login .chzn-drop { width: 230px !important; } } @media (max-width: 320px) { .view-login .navbar-fixed-bottom { display: none; } .btn-toolbar .btn-wrapper .btn { width: 100% !important; } } .nav-collapse .nav li a, .dropdown-menu a { background-image: none; } .nav-collapse .dropdown-menu > li > span { display: block; padding: 3px 20px; } @media (max-width: 767px) { .navbar-fixed-top .navbar-inner, .navbar-fixed-top .navbar-inner .container-fluid { padding: 0; } .navbar .brand { margin-top: 2px; float: none; text-align: center; } .navbar .btn-navbar { margin-top: 3px; margin-right: 3px; margin-bottom: 3px; } .nav-collapse .nav .nav-header { color: #fff; } .nav-collapse .nav, .navbar .nav-collapse .nav.pull-right { margin: 0; } .nav-collapse .dropdown-menu { margin: 0; } .nav-collapse .dropdown-menu > li > span { display: block; padding: 4px 15px; } .navbar-inverse .nav-collapse .dropdown-menu > li > span { color: #d9d9d9; } .nav-collapse .nav > li > a.dropdown-toggle { background-color: rgba(255,255,255,0.07); font-size: 12px; font-weight: bold; color: #eee; text-transform: uppercase; padding-left: 15px; } .nav-collapse .nav li a { margin-bottom: 0; border-top: 1px solid rgba(255,255,255,0.25); border-bottom: 1px solid rgba(0,0,0,0.5); } .nav-collapse .nav li ul li ul.dropdown-menu, .nav-collapse .nav li ul li:hover ul.dropdown-menu, .nav-collapse .caret { display: none !important; } .nav-collapse .nav > li > a, .nav-collapse .dropdown-menu a { font-size: 15px; font-weight: normal; color: #fff; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .navbar .nav-collapse .nav > li > .dropdown-menu::before, .navbar .nav-collapse .nav > li > .dropdown-menu::after, .navbar .nav-collapse .dropdown-submenu > a::after { display: none; } .nav-collapse .dropdown-menu li + li a { margin-bottom: 0; } } .sortable-handler.inactive { opacity: 0.3; filter: alpha(opacity=30); } .alert-joomlaupdate { text-align: center; } .alert-joomlaupdate button { vertical-align: baseline; } .form-horizontal .control-label { width: auto; padding-right: 5px; text-align: left; } .form-horizontal .control-label .spacer hr { width: 380px; } @media (max-width: 420px) { .form-horizontal .control-label .spacer hr { width: 220px; } } .form-horizontal #jform_catid_chzn { vertical-align: middle; } .form-vertical .control-label > label { display: inline-block; *display: inline; *zoom: 1; } .form-vertical .controls { margin-left: 0; } @media (max-width: 979px) { .form-horizontal-desktop .control-label { float: none; width: auto; padding-right: 0; padding-top: 0; text-align: left; } .form-horizontal-desktop .control-label > label { display: inline-block; *display: inline; *zoom: 1; } .form-horizontal-desktop .controls { margin-left: 0; } } @media (max-width: 1200px) { .row-fluid .row-fluid .form-horizontal-desktop .control-label { float: none; width: auto; padding-right: 0; padding-top: 0; text-align: left; } .row-fluid .row-fluid .form-horizontal-desktop .control-label > label { display: inline-block; *display: inline; *zoom: 1; } .row-fluid .row-fluid .form-horizontal-desktop .controls { margin-left: 0; } } .form-inline-header { margin: 5px 0; } .form-inline-header .control-group, .form-inline-header .control-label, .form-inline-header .controls { display: inline-block; *display: inline; *zoom: 1; } .form-inline-header .control-label { width: auto; padding-right: 10px; } .form-inline-header .controls { padding-right: 20px; } fieldset.checkboxes input { float: left; } fieldset.checkboxes li { list-style: none; } ul.manager .height-50 .icon-folder-2 { height: 35px; width: 35px; line-height: 35px; font-size: 30px; } .upload-queue > li > span, .upload-queue > li > a { margin: 0 2px; } .upload-queue .file-remove { float: right; } .moor-box { z-index: 3; } .admin .chzn-container .chzn-drop { z-index: 1060; } ul.treeselect, ul.treeselect li { margin: 0; padding: 0; } ul.treeselect { margin-top: 8px; } ul.treeselect li { padding: 2px 10px 2px; list-style: none; } ul.treeselect i.treeselect-toggle { line-height: 18px; } ul.treeselect label { font-size: 1em; margin-left: 8px; } ul.treeselect label.nav-header { padding: 0; } ul.treeselect input { margin: 2px 0 0 8px; } ul.treeselect .treeselect-menu { margin: 0 6px; } ul.treeselect ul.dropdown-menu { margin: 0; } ul.treeselect ul.dropdown-menu li { padding: 0 5px; border: none; } td.has-context { height: 23px; } td.nowrap.has-context { width: 45%; } .item-associations { margin: 0; } .item-associations li { list-style: none; display: inline-block; margin: 0 0 3px 0; } .item-associations li a { color: #ffffff; } #flag img { padding-top: 6px; vertical-align: top; } .tooltip { max-width: 400px; } .tooltip-inner { max-width: none; text-align: left; text-shadow: none; } th .tooltip-inner { font-weight: normal; } .tooltip.hasimage { opacity: 1; } #permissions-sliders .chzn-container { position: absolute; } .container-popup { padding: 15px; } .controls .btn-group > .btn { min-width: 50px; } .controls .btn-group.btn-group-yesno > .btn { min-width: 84px; padding: 2px 12px; } .img-preview > img { max-height: 100%; } #helpsite-refresh { vertical-align: top; } .alert-no-items { margin-top: 20px; } @media (max-width: 767px) { html[dir=rtl] #toolbar #toolbar-options, html[dir=rtl] #toolbar #toolbar-help, #toolbar #toolbar-options, #toolbar #toolbar-help { float: none; } } input.input-large-text { font-size: 18px; line-height: 22px; height: auto; } .info-labels { margin-top: -5px; margin-bottom: 10px; } [class^="chzn-color"].chzn-single, [class*=" chzn-color"].chzn-single, [class^="chzn-color"].chzn-single .chzn-single-with-drop, [class*=" chzn-color"].chzn-single .chzn-single-with-drop { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .chzn-color.chzn-single[rel="value_1"], .chzn-color-reverse.chzn-single[rel="value_0"], .chzn-color-state.chzn-single[rel="value_1"] { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #409740; background-image: -moz-linear-gradient(top,#46a546,#378137); background-image: -webkit-gradient(linear,0 0,0 100%,from(#46a546),to(#378137)); background-image: -webkit-linear-gradient(top,#46a546,#378137); background-image: -o-linear-gradient(top,#46a546,#378137); background-image: linear-gradient(to bottom,#46a546,#378137); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff46a546', endColorstr='#ff368136', GradientType=0); border-color: #378137 #378137 #204b20; *background-color: #378137; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .chzn-color.chzn-single[rel="value_1"]:hover, .chzn-color.chzn-single[rel="value_1"]:focus, .chzn-color.chzn-single[rel="value_1"]:active, .chzn-color.chzn-single[rel="value_1"].active, .chzn-color.chzn-single[rel="value_1"].disabled, .chzn-color.chzn-single[rel="value_1"][disabled], .chzn-color-reverse.chzn-single[rel="value_0"]:hover, .chzn-color-reverse.chzn-single[rel="value_0"]:focus, .chzn-color-reverse.chzn-single[rel="value_0"]:active, .chzn-color-reverse.chzn-single[rel="value_0"].active, .chzn-color-reverse.chzn-single[rel="value_0"].disabled, .chzn-color-reverse.chzn-single[rel="value_0"][disabled], .chzn-color-state.chzn-single[rel="value_1"]:hover, .chzn-color-state.chzn-single[rel="value_1"]:focus, .chzn-color-state.chzn-single[rel="value_1"]:active, .chzn-color-state.chzn-single[rel="value_1"].active, .chzn-color-state.chzn-single[rel="value_1"].disabled, .chzn-color-state.chzn-single[rel="value_1"][disabled] { color: #fff; background-color: #378137; *background-color: #2f6f2f; } .chzn-color.chzn-single[rel="value_1"]:active, .chzn-color.chzn-single[rel="value_1"].active, .chzn-color-reverse.chzn-single[rel="value_0"]:active, .chzn-color-reverse.chzn-single[rel="value_0"].active, .chzn-color-state.chzn-single[rel="value_1"]:active, .chzn-color-state.chzn-single[rel="value_1"].active { background-color: #285d28 \9; } .chzn-color.chzn-single[rel="value_0"], .chzn-color-reverse.chzn-single[rel="value_1"], .chzn-color-state.chzn-single[rel="value_0"], .chzn-color-state.chzn-single[rel="value_-1"], .chzn-color-state.chzn-single[rel="value_-2"] { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #ad312b; background-image: -moz-linear-gradient(top,#bd362f,#942a25); background-image: -webkit-gradient(linear,0 0,0 100%,from(#bd362f),to(#942a25)); background-image: -webkit-linear-gradient(top,#bd362f,#942a25); background-image: -o-linear-gradient(top,#bd362f,#942a25); background-image: linear-gradient(to bottom,#bd362f,#942a25); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbd362f', endColorstr='#ff942a24', GradientType=0); border-color: #942a25 #942a25 #571916; *background-color: #942a25; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .chzn-color.chzn-single[rel="value_0"]:hover, .chzn-color.chzn-single[rel="value_0"]:focus, .chzn-color.chzn-single[rel="value_0"]:active, .chzn-color.chzn-single[rel="value_0"].active, .chzn-color.chzn-single[rel="value_0"].disabled, .chzn-color.chzn-single[rel="value_0"][disabled], .chzn-color-reverse.chzn-single[rel="value_1"]:hover, .chzn-color-reverse.chzn-single[rel="value_1"]:focus, .chzn-color-reverse.chzn-single[rel="value_1"]:active, .chzn-color-reverse.chzn-single[rel="value_1"].active, .chzn-color-reverse.chzn-single[rel="value_1"].disabled, .chzn-color-reverse.chzn-single[rel="value_1"][disabled], .chzn-color-state.chzn-single[rel="value_0"]:hover, .chzn-color-state.chzn-single[rel="value_0"]:focus, .chzn-color-state.chzn-single[rel="value_0"]:active, .chzn-color-state.chzn-single[rel="value_0"].active, .chzn-color-state.chzn-single[rel="value_0"].disabled, .chzn-color-state.chzn-single[rel="value_0"][disabled], .chzn-color-state.chzn-single[rel="value_-1"]:hover, .chzn-color-state.chzn-single[rel="value_-1"]:focus, .chzn-color-state.chzn-single[rel="value_-1"]:active, .chzn-color-state.chzn-single[rel="value_-1"].active, .chzn-color-state.chzn-single[rel="value_-1"].disabled, .chzn-color-state.chzn-single[rel="value_-1"][disabled], .chzn-color-state.chzn-single[rel="value_-2"]:hover, .chzn-color-state.chzn-single[rel="value_-2"]:focus, .chzn-color-state.chzn-single[rel="value_-2"]:active, .chzn-color-state.chzn-single[rel="value_-2"].active, .chzn-color-state.chzn-single[rel="value_-2"].disabled, .chzn-color-state.chzn-single[rel="value_-2"][disabled] { color: #fff; background-color: #942a25; *background-color: #802420; } .chzn-color.chzn-single[rel="value_0"]:active, .chzn-color.chzn-single[rel="value_0"].active, .chzn-color-reverse.chzn-single[rel="value_1"]:active, .chzn-color-reverse.chzn-single[rel="value_1"].active, .chzn-color-state.chzn-single[rel="value_0"]:active, .chzn-color-state.chzn-single[rel="value_0"].active, .chzn-color-state.chzn-single[rel="value_-1"]:active, .chzn-color-state.chzn-single[rel="value_-1"].active, .chzn-color-state.chzn-single[rel="value_-2"]:active, .chzn-color-state.chzn-single[rel="value_-2"].active { background-color: #6b1f1b \9; } #permissions-sliders .input-small { width: 120px; } .editor { overflow: hidden; position: relative; } .editor textarea.mce_editable { box-sizing: border-box; } a.grid_false { display: inline-block; height: 16px; width: 16px; background-image: url('../images/admin/publish_r.png'); } a.grid_true { display: inline-block; height: 16px; width: 16px; background-image: url('../images/admin/icon-16-allow.png'); } .j-sidebar-container { position: absolute; display: block; left: -16.5%; width: 16.5%; margin: -10px 0 0 -1px; padding-top: 28px; padding-bottom: 10px; background-color: #f5f5f5; border-bottom: 1px solid #e3e3e3; border-right: 1px solid #e3e3e3; -webkit-border-radius: 0 0 4px 0; -moz-border-radius: 0 0 4px 0; border-radius: 0 0 4px 0; } .j-sidebar-container.j-sidebar-hidden { left: -16.5%; } .j-sidebar-container.j-sidebar-visible { left: 0; } .j-sidebar-container .filter-select { padding: 0 14px; } .j-toggle-button-wrapper { position: absolute; display: block; top: 7px; padding: 0; } .j-toggle-button-wrapper.j-toggle-hidden { right: -24px; } .j-toggle-button-wrapper.j-toggle-visible { right: 7px; } .j-toggle-sidebar-button { font-size: 16px; color: #3071a9; text-decoration: none; cursor: pointer; } .j-toggle-sidebar-button:hover { color: #1f496e; } #system-message-container, #j-main-container { padding: 0 0 0 5px; min-height: 0; } #system-message-container.j-toggle-main, #j-main-container.j-toggle-main, #system-debug.j-toggle-main { float: right; } @media (min-width: 768px) { .j-toggle-transition { -webkit-transition: all 0.3s ease; -moz-transition: all 0.3s ease; -o-transition: all 0.3s ease; transition: all 0.3s ease; } } @media (max-width: 979px) { .j-toggle-button-wrapper.j-toggle-hidden { right: -20px; } } @media (max-width: 767px) { .j-sidebar-container { position: relative; width: 100%; margin: 0 0 20px 0; padding: 0; background: transparent; border-right: 0; border-bottom: 0; } .j-sidebar-container.j-sidebar-hidden { margin-left: 16.5%; } .j-sidebar-container.j-sidebar-visible { margin-left: 0; } .j-toggle-sidebar-header, .j-toggle-button-wrapper { display: none; } .view-login select { width: 232px; } } @media (max-width: 420px) { .j-sidebar-container { margin: 0; } .view-login .input-medium { width: 180px; } .view-login select { width: 232px; } } .break-word { word-break: break-all; word-wrap: break-word; } textarea { resize: both; } textarea.vert { resize: vertical; } textarea.noResize { resize: none; } body.modal-open { overflow: hidden; -ms-overflow-style: none; } PKb��\������#templates/isis/css/template-rtl.cssnu�[���article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; } audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } audio:not([controls]) { display: none; } html { font-size: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } a:hover, a:active { outline: 0; } sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } img { max-width: 100%; width: auto \9; height: auto; vertical-align: middle; border: 0; -ms-interpolation-mode: bicubic; } #map_canvas img, .google-maps img, .gm-style img { max-width: none; } button, input, select, textarea { margin: 0; font-size: 100%; vertical-align: middle; } button, input { *overflow: visible; line-height: normal; } button::-moz-focus-inner, input::-moz-focus-inner { padding: 0; border: 0; } button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; cursor: pointer; } label, select, button, input[type="button"], input[type="reset"], input[type="submit"], input[type="radio"], input[type="checkbox"] { cursor: pointer; } input[type="search"] { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; -webkit-appearance: textfield; } input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; } textarea { overflow: auto; vertical-align: top; } @media print { * { text-shadow: none !important; color: #000 !important; background: transparent !important; box-shadow: none !important; } a, a:visited { text-decoration: underline; } a[href]:after { content: " (" attr(href) ")"; } abbr[title]:after { content: " (" attr(title) ")"; } .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } thead { display: table-header-group; } tr, img { page-break-inside: avoid; } img { max-width: 100% !important; } @page { margin: 0.5cm; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } } .clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; content: ""; line-height: 0; } .clearfix:after { clear: both; } .hide-text { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .input-block-level { display: block; width: 100%; min-height: 28px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } body { margin: 0; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 13px; line-height: 18px; color: #333; background-color: #fff; } a { color: #3071a9; text-decoration: none; } a:hover, a:focus { color: #1f496e; text-decoration: underline; } .img-rounded { -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .img-polaroid { padding: 4px; background-color: #fff; border: 1px solid #ccc; border: 1px solid rgba(0,0,0,0.2); -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.1); -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.1); box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .img-circle { -webkit-border-radius: 500px; -moz-border-radius: 500px; border-radius: 500px; } .row { margin-left: -20px; *zoom: 1; } .row:before, .row:after { display: table; content: ""; line-height: 0; } .row:after { clear: both; } [class*="span"] { float: left; min-height: 1px; margin-left: 20px; } .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 940px; } .span12 { width: 940px; } .span11 { width: 860px; } .span10 { width: 780px; } .span9 { width: 700px; } .span8 { width: 620px; } .span7 { width: 540px; } .span6 { width: 460px; } .span5 { width: 380px; } .span4 { width: 300px; } .span3 { width: 220px; } .span2 { width: 140px; } .span1 { width: 60px; } .offset12 { margin-left: 980px; } .offset11 { margin-left: 900px; } .offset10 { margin-left: 820px; } .offset9 { margin-left: 740px; } .offset8 { margin-left: 660px; } .offset7 { margin-left: 580px; } .offset6 { margin-left: 500px; } .offset5 { margin-left: 420px; } .offset4 { margin-left: 340px; } .offset3 { margin-left: 260px; } .offset2 { margin-left: 180px; } .offset1 { margin-left: 100px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; content: ""; line-height: 0; } .row-fluid:after { clear: both; } .row-fluid [class*="span"] { display: block; width: 100%; min-height: 28px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; margin-left: 2.1276595744681%; *margin-left: 2.0744680851064%; } .row-fluid [class*="span"]:first-child { margin-left: 0; } .row-fluid .controls-row [class*="span"] + [class*="span"] { margin-left: 2.1276595744681%; } .row-fluid .span12 { width: 100%; *width: 99.946808510638%; } .row-fluid .span11 { width: 91.489361702128%; *width: 91.436170212766%; } .row-fluid .span10 { width: 82.978723404255%; *width: 82.925531914894%; } .row-fluid .span9 { width: 74.468085106383%; *width: 74.414893617021%; } .row-fluid .span8 { width: 65.957446808511%; *width: 65.904255319149%; } .row-fluid .span7 { width: 57.446808510638%; *width: 57.393617021277%; } .row-fluid .span6 { width: 48.936170212766%; *width: 48.882978723404%; } .row-fluid .span5 { width: 40.425531914894%; *width: 40.372340425532%; } .row-fluid .span4 { width: 31.914893617021%; *width: 31.86170212766%; } .row-fluid .span3 { width: 23.404255319149%; *width: 23.351063829787%; } .row-fluid .span2 { width: 14.893617021277%; *width: 14.840425531915%; } .row-fluid .span1 { width: 6.3829787234043%; *width: 6.3297872340426%; } .row-fluid .offset12 { margin-left: 104.25531914894%; *margin-left: 104.14893617021%; } .row-fluid .offset12:first-child { margin-left: 102.12765957447%; *margin-left: 102.02127659574%; } .row-fluid .offset11 { margin-left: 95.744680851064%; *margin-left: 95.63829787234%; } .row-fluid .offset11:first-child { margin-left: 93.617021276596%; *margin-left: 93.510638297872%; } .row-fluid .offset10 { margin-left: 87.234042553191%; *margin-left: 87.127659574468%; } .row-fluid .offset10:first-child { margin-left: 85.106382978723%; *margin-left: 85%; } .row-fluid .offset9 { margin-left: 78.723404255319%; *margin-left: 78.617021276596%; } .row-fluid .offset9:first-child { margin-left: 76.595744680851%; *margin-left: 76.489361702128%; } .row-fluid .offset8 { margin-left: 70.212765957447%; *margin-left: 70.106382978723%; } .row-fluid .offset8:first-child { margin-left: 68.085106382979%; *margin-left: 67.978723404255%; } .row-fluid .offset7 { margin-left: 61.702127659574%; *margin-left: 61.595744680851%; } .row-fluid .offset7:first-child { margin-left: 59.574468085106%; *margin-left: 59.468085106383%; } .row-fluid .offset6 { margin-left: 53.191489361702%; *margin-left: 53.085106382979%; } .row-fluid .offset6:first-child { margin-left: 51.063829787234%; *margin-left: 50.957446808511%; } .row-fluid .offset5 { margin-left: 44.68085106383%; *margin-left: 44.574468085106%; } .row-fluid .offset5:first-child { margin-left: 42.553191489362%; *margin-left: 42.446808510638%; } .row-fluid .offset4 { margin-left: 36.170212765957%; *margin-left: 36.063829787234%; } .row-fluid .offset4:first-child { margin-left: 34.042553191489%; *margin-left: 33.936170212766%; } .row-fluid .offset3 { margin-left: 27.659574468085%; *margin-left: 27.553191489362%; } .row-fluid .offset3:first-child { margin-left: 25.531914893617%; *margin-left: 25.425531914894%; } .row-fluid .offset2 { margin-left: 19.148936170213%; *margin-left: 19.042553191489%; } .row-fluid .offset2:first-child { margin-left: 17.021276595745%; *margin-left: 16.914893617021%; } .row-fluid .offset1 { margin-left: 10.63829787234%; *margin-left: 10.531914893617%; } .row-fluid .offset1:first-child { margin-left: 8.5106382978723%; *margin-left: 8.4042553191489%; } [class*="span"].hide, .row-fluid [class*="span"].hide { display: none; } [class*="span"].pull-right, .row-fluid [class*="span"].pull-right { float: right; } .container { margin-right: auto; margin-left: auto; *zoom: 1; } .container:before, .container:after { display: table; content: ""; line-height: 0; } .container:after { clear: both; } .container-fluid { padding-right: 20px; padding-left: 20px; *zoom: 1; } .container-fluid:before, .container-fluid:after { display: table; content: ""; line-height: 0; } .container-fluid:after { clear: both; } p { margin: 0 0 9px; } .lead { margin-bottom: 18px; font-size: 19.5px; font-weight: 200; line-height: 27px; } small { font-size: 85%; } strong { font-weight: bold; } em { font-style: italic; } cite { font-style: normal; } .muted { color: #999; } a.muted:hover, a.muted:focus { color: #808080; } .text-warning { color: #8a6d3b; } a.text-warning:hover, a.text-warning:focus { color: #66512c; } .text-error { color: #a94442; } a.text-error:hover, a.text-error:focus { color: #843534; } .text-info { color: #31708f; } a.text-info:hover, a.text-info:focus { color: #245269; } .text-success { color: #3c763d; } a.text-success:hover, a.text-success:focus { color: #2b542c; } .text-left { text-align: left; } .text-right { text-align: right; } .text-center { text-align: center; } h1, h2, h3, h4, h5, h6 { margin: 9px 0; font-family: inherit; font-weight: bold; line-height: 18px; color: inherit; text-rendering: optimizelegibility; } h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { font-weight: normal; line-height: 1; color: #999; } h1, h2, h3 { line-height: 36px; } h1 { font-size: 35.75px; } h2 { font-size: 29.25px; } h3 { font-size: 22.75px; } h4 { font-size: 16.25px; } h5 { font-size: 13px; } h6 { font-size: 11.05px; } h1 small { font-size: 22.75px; } h2 small { font-size: 16.25px; } h3 small { font-size: 13px; } h4 small { font-size: 13px; } .page-header { padding-bottom: 8px; margin: 18px 0 27px; border-bottom: 1px solid #eee; } ul, ol { padding: 0; margin: 0 0 9px 25px; } ul ul, ul ol, ol ol, ol ul { margin-bottom: 0; } li { line-height: 18px; } ul.unstyled, ol.unstyled { margin-left: 0; list-style: none; } ul.inline, ol.inline { margin-left: 0; list-style: none; } ul.inline > li, ol.inline > li { display: inline-block; *display: inline; *zoom: 1; padding-left: 5px; padding-right: 5px; } dl { margin-bottom: 18px; } dt, dd { line-height: 18px; } dt { font-weight: bold; } dd { margin-left: 9px; } .dl-horizontal { *zoom: 1; } .dl-horizontal:before, .dl-horizontal:after { display: table; content: ""; line-height: 0; } .dl-horizontal:after { clear: both; } .dl-horizontal dt { float: left; width: 160px; clear: left; text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .dl-horizontal dd { margin-left: 180px; } hr { margin: 18px 0; border: 0; border-top: 1px solid #eee; border-bottom: 1px solid #fff; } abbr[title], abbr[data-original-title] { cursor: help; border-bottom: 1px dotted #999; } abbr.initialism { font-size: 90%; text-transform: uppercase; } blockquote { padding: 0 0 0 15px; margin: 0 0 18px; border-left: 5px solid #eee; } blockquote p { margin-bottom: 0; font-size: 16.25px; font-weight: 300; line-height: 1.25; } blockquote small { display: block; line-height: 18px; color: #999; } blockquote small:before { content: '\2014 \00A0'; } blockquote.pull-right { float: right; padding-right: 15px; padding-left: 0; border-right: 5px solid #eee; border-left: 0; } blockquote.pull-right p, blockquote.pull-right small { text-align: right; } blockquote.pull-right small:before { content: ''; } blockquote.pull-right small:after { content: '\00A0 \2014'; } q:before, q:after, blockquote:before, blockquote:after { content: ""; } address { display: block; margin-bottom: 18px; font-style: normal; line-height: 18px; } code, pre { padding: 0 3px 2px; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 11px; color: #333; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } code { padding: 2px 4px; color: #d14; background-color: #f7f7f9; border: 1px solid #e1e1e8; white-space: nowrap; } pre { display: block; padding: 8.5px; margin: 0 0 9px; font-size: 12px; line-height: 18px; word-break: break-all; word-wrap: break-word; white-space: pre; white-space: pre-wrap; background-color: #f5f5f5; border: 1px solid #ccc; border: 1px solid rgba(0,0,0,0.15); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } pre.prettyprint { margin-bottom: 18px; } pre code { padding: 0; color: inherit; white-space: pre; white-space: pre-wrap; background-color: transparent; border: 0; } .pre-scrollable { max-height: 340px; overflow-y: scroll; } form { margin: 0 0 18px; } fieldset { padding: 0; margin: 0; border: 0; } legend { display: block; width: 100%; padding: 0; margin-bottom: 18px; font-size: 19.5px; line-height: 36px; color: #333; border: 0; border-bottom: 1px solid #e5e5e5; } legend small { font-size: 13.5px; color: #999; } label, input, button, select, textarea { font-size: 13px; font-weight: normal; line-height: 18px; } input, button, select, textarea { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } label { display: block; margin-bottom: 5px; } select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { display: inline-block; height: 18px; padding: 4px 6px; margin-bottom: 9px; font-size: 13px; line-height: 18px; color: #555; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; vertical-align: middle; } input, textarea, .uneditable-input { width: 206px; } textarea { height: auto; } textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { background-color: #fff; border: 1px solid #ccc; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); -webkit-transition: border linear .2s, box-shadow linear .2s; -moz-transition: border linear .2s, box-shadow linear .2s; -o-transition: border linear .2s, box-shadow linear .2s; transition: border linear .2s, box-shadow linear .2s; } textarea:focus, input[type="text"]:focus, input[type="password"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="date"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, input[type="number"]:focus, input[type="email"]:focus, input[type="url"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="color"]:focus, .uneditable-input:focus { border-color: rgba(82,168,236,0.8); outline: 0; outline: thin dotted \9; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); } input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; *margin-top: 0; margin-top: 1px \9; line-height: normal; } input[type="file"], input[type="image"], input[type="submit"], input[type="reset"], input[type="button"], input[type="radio"], input[type="checkbox"] { width: auto; } select, input[type="file"] { height: 28px; *margin-top: 4px; line-height: 28px; } select { width: 220px; border: 1px solid #ccc; background-color: #fff; } select[multiple], select[size] { height: auto; } select:focus, input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .uneditable-input, .uneditable-textarea { color: #999; background-color: #fcfcfc; border-color: #ccc; -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.025); -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.025); box-shadow: inset 0 1px 2px rgba(0,0,0,0.025); cursor: not-allowed; } .uneditable-input { overflow: hidden; white-space: nowrap; } .uneditable-textarea { width: auto; height: auto; } input:-moz-placeholder, textarea:-moz-placeholder { color: #999; } input:-ms-input-placeholder, textarea:-ms-input-placeholder { color: #999; } input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color: #999; } .radio, .checkbox { min-height: 18px; padding-left: 20px; } .radio input[type="radio"], .checkbox input[type="checkbox"] { float: left; margin-left: -20px; } .controls > .radio:first-child, .controls > .checkbox:first-child { padding-top: 5px; } .radio.inline, .checkbox.inline { display: inline-block; padding-top: 5px; margin-bottom: 0; vertical-align: middle; } .radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { margin-left: 10px; } .input-mini { width: 60px; } .input-small { width: 90px; } .input-medium { width: 150px; } .input-large { width: 210px; } .input-xlarge { width: 270px; } .input-xxlarge { width: 530px; } input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"] { float: none; margin-left: 0; } .input-append input[class*="span"], .input-append .uneditable-input[class*="span"], .input-prepend input[class*="span"], .input-prepend .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"], .row-fluid .input-prepend [class*="span"], .row-fluid .input-append [class*="span"] { display: inline-block; } input, textarea, .uneditable-input { margin-left: 0; } .controls-row [class*="span"] + [class*="span"] { margin-left: 20px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 926px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 846px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 766px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 686px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 606px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 526px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 446px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 366px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 286px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 206px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 126px; } input.span1, textarea.span1, .uneditable-input.span1 { width: 46px; } .controls-row { *zoom: 1; } .controls-row:before, .controls-row:after { display: table; content: ""; line-height: 0; } .controls-row:after { clear: both; } .controls-row [class*="span"], .row-fluid .controls-row [class*="span"] { float: left; } .controls-row .checkbox[class*="span"], .controls-row .radio[class*="span"] { padding-top: 5px; } input[disabled], select[disabled], textarea[disabled], input[readonly], select[readonly], textarea[readonly] { cursor: not-allowed; background-color: #eee; } input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"][readonly], input[type="checkbox"][readonly] { background-color: transparent; } .control-group.warning .control-label, .control-group.warning .help-block, .control-group.warning .help-inline { color: #8a6d3b; } .control-group.warning .checkbox, .control-group.warning .radio, .control-group.warning input, .control-group.warning select, .control-group.warning textarea { color: #8a6d3b; } .control-group.warning input, .control-group.warning select, .control-group.warning textarea { border-color: #8a6d3b; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); } .control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { border-color: #66512c; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #c0a16b; -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #c0a16b; box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #c0a16b; } .control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on { color: #8a6d3b; background-color: #fcf8e3; border-color: #8a6d3b; } .control-group.error .control-label, .control-group.error .help-block, .control-group.error .help-inline { color: #a94442; } .control-group.error .checkbox, .control-group.error .radio, .control-group.error input, .control-group.error select, .control-group.error textarea { color: #a94442; } .control-group.error input, .control-group.error select, .control-group.error textarea { border-color: #a94442; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); } .control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { border-color: #843534; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #ce8483; -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #ce8483; box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #ce8483; } .control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on { color: #a94442; background-color: #f2dede; border-color: #a94442; } .control-group.success .control-label, .control-group.success .help-block, .control-group.success .help-inline { color: #3c763d; } .control-group.success .checkbox, .control-group.success .radio, .control-group.success input, .control-group.success select, .control-group.success textarea { color: #3c763d; } .control-group.success input, .control-group.success select, .control-group.success textarea { border-color: #3c763d; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); } .control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { border-color: #2b542c; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #67b168; -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #67b168; box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #67b168; } .control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on { color: #3c763d; background-color: #dff0d8; border-color: #3c763d; } .control-group.info .control-label, .control-group.info .help-block, .control-group.info .help-inline { color: #31708f; } .control-group.info .checkbox, .control-group.info .radio, .control-group.info input, .control-group.info select, .control-group.info textarea { color: #31708f; } .control-group.info input, .control-group.info select, .control-group.info textarea { border-color: #31708f; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); box-shadow: inset 0 1px 1px rgba(0,0,0,0.075); } .control-group.info input:focus, .control-group.info select:focus, .control-group.info textarea:focus { border-color: #245269; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #5ea5c8; -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #5ea5c8; box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #5ea5c8; } .control-group.info .input-prepend .add-on, .control-group.info .input-append .add-on { color: #31708f; background-color: #d9edf7; border-color: #31708f; } input:focus:invalid, textarea:focus:invalid, select:focus:invalid { color: #b94a48; border-color: #ee5f5b; } input:focus:invalid:focus, textarea:focus:invalid:focus, select:focus:invalid:focus { border-color: #e9322d; -webkit-box-shadow: 0 0 6px #f8b9b7; -moz-box-shadow: 0 0 6px #f8b9b7; box-shadow: 0 0 6px #f8b9b7; } .form-actions { padding: 17px 20px 18px; margin-top: 18px; margin-bottom: 18px; background-color: #f5f5f5; border-top: 1px solid #e5e5e5; *zoom: 1; } .form-actions:before, .form-actions:after { display: table; content: ""; line-height: 0; } .form-actions:after { clear: both; } .help-block, .help-inline { color: #595959; } .help-block { display: block; margin-bottom: 9px; } .help-inline { display: inline-block; *display: inline; *zoom: 1; vertical-align: middle; padding-left: 5px; } .input-append, .input-prepend { display: inline-block; margin-bottom: 9px; vertical-align: middle; font-size: 0; white-space: nowrap; } .input-append input, .input-append select, .input-append .uneditable-input, .input-append .dropdown-menu, .input-append .popover, .input-prepend input, .input-prepend select, .input-prepend .uneditable-input, .input-prepend .dropdown-menu, .input-prepend .popover { font-size: 13px; } .input-append input, .input-append select, .input-append .uneditable-input, .input-prepend input, .input-prepend select, .input-prepend .uneditable-input { position: relative; margin-bottom: 0; *margin-left: 0; vertical-align: top; -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-append input:focus, .input-append select:focus, .input-append .uneditable-input:focus, .input-prepend input:focus, .input-prepend select:focus, .input-prepend .uneditable-input:focus { z-index: 2; } .input-append .add-on, .input-prepend .add-on { display: inline-block; width: auto; height: 18px; min-width: 16px; padding: 4px 5px; font-size: 13px; font-weight: normal; line-height: 18px; text-align: center; text-shadow: 0 1px 0 #fff; background-color: #eee; border: 1px solid #ccc; } .input-append .add-on, .input-append .btn, .input-append .btn-group > .dropdown-toggle, .input-prepend .add-on, .input-prepend .btn, .input-prepend .btn-group > .dropdown-toggle { vertical-align: top; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-append .active, .input-prepend .active { background-color: #a9dba9; border-color: #46a546; } .input-prepend .add-on, .input-prepend .btn { margin-right: -1px; } .input-prepend .add-on:first-child, .input-prepend .btn:first-child { -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-append input, .input-append select, .input-append .uneditable-input { -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-append input + .btn-group .btn:last-child, .input-append select + .btn-group .btn:last-child, .input-append .uneditable-input + .btn-group .btn:last-child { -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-append .add-on, .input-append .btn, .input-append .btn-group { margin-left: -1px; } .input-append .add-on:last-child, .input-append .btn:last-child, .input-append .btn-group:last-child > .dropdown-toggle { -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-prepend.input-append input, .input-prepend.input-append select, .input-prepend.input-append .uneditable-input { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-prepend.input-append input + .btn-group .btn, .input-prepend.input-append select + .btn-group .btn, .input-prepend.input-append .uneditable-input + .btn-group .btn { -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-prepend.input-append .add-on:first-child, .input-prepend.input-append .btn:first-child { margin-right: -1px; -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-prepend.input-append .add-on:last-child, .input-prepend.input-append .btn:last-child { margin-left: -1px; -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-prepend.input-append .btn-group:first-child { margin-left: 0; } input.search-query { padding-right: 14px; padding-right: 4px \9; padding-left: 14px; padding-left: 4px \9; margin-bottom: 0; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } .form-search .input-append .search-query, .form-search .input-prepend .search-query { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .form-search .input-append .search-query { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search .input-append .btn { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .search-query { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .btn { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search input, .form-search textarea, .form-search select, .form-search .help-inline, .form-search .uneditable-input, .form-search .input-prepend, .form-search .input-append, .form-inline input, .form-inline textarea, .form-inline select, .form-inline .help-inline, .form-inline .uneditable-input, .form-inline .input-prepend, .form-inline .input-append, .form-horizontal input, .form-horizontal textarea, .form-horizontal select, .form-horizontal .help-inline, .form-horizontal .uneditable-input, .form-horizontal .input-prepend, .form-horizontal .input-append { display: inline-block; *display: inline; *zoom: 1; margin-bottom: 0; vertical-align: middle; } .form-search .hide, .form-inline .hide, .form-horizontal .hide { display: none; } .form-search label, .form-inline label, .form-search .btn-group, .form-inline .btn-group { display: inline-block; } .form-search .input-append, .form-inline .input-append, .form-search .input-prepend, .form-inline .input-prepend { margin-bottom: 0; } .form-search .radio, .form-search .checkbox, .form-inline .radio, .form-inline .checkbox { padding-left: 0; margin-bottom: 0; vertical-align: middle; } .form-search .radio input[type="radio"], .form-search .checkbox input[type="checkbox"], .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { float: left; margin-right: 3px; margin-left: 0; } .control-group { margin-bottom: 9px; } legend + .control-group { margin-top: 18px; -webkit-margin-top-collapse: separate; } .form-horizontal .control-group { margin-bottom: 18px; *zoom: 1; } .form-horizontal .control-group:before, .form-horizontal .control-group:after { display: table; content: ""; line-height: 0; } .form-horizontal .control-group:after { clear: both; } .form-horizontal .control-label { float: left; width: 160px; padding-top: 5px; text-align: right; } .form-horizontal .controls { *display: inline-block; *padding-left: 20px; margin-left: 180px; *margin-left: 0; } .form-horizontal .controls:first-child { *padding-left: 180px; } .form-horizontal .help-block { margin-bottom: 0; } .form-horizontal input + .help-block, .form-horizontal select + .help-block, .form-horizontal textarea + .help-block, .form-horizontal .uneditable-input + .help-block, .form-horizontal .input-prepend + .help-block, .form-horizontal .input-append + .help-block { margin-top: 9px; } .form-horizontal .form-actions { padding-left: 180px; } .control-label .hasTooltip { display: inline-block; } table { max-width: 100%; background-color: transparent; border-collapse: collapse; border-spacing: 0; } .table { width: 100%; margin-bottom: 18px; } .table th, .table td { padding: 8px; line-height: 18px; text-align: left; vertical-align: top; border-top: 1px solid #ddd; } .table th { font-weight: bold; } .table thead th { vertical-align: bottom; } .table caption + thead tr:first-child th, .table caption + thead tr:first-child td, .table colgroup + thead tr:first-child th, .table colgroup + thead tr:first-child td, .table thead:first-child tr:first-child th, .table thead:first-child tr:first-child td { border-top: 0; } .table tbody + tbody { border-top: 2px solid #ddd; } .table .table { background-color: #fff; } .table-condensed th, .table-condensed td { padding: 4px 5px; } .table-bordered { border: 1px solid #ddd; border-collapse: separate; *border-collapse: collapse; border-left: 0; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .table-bordered th, .table-bordered td { border-left: 1px solid #ddd; } .table-bordered caption + thead tr:first-child th, .table-bordered caption + tbody tr:first-child th, .table-bordered caption + tbody tr:first-child td, .table-bordered colgroup + thead tr:first-child th, .table-bordered colgroup + tbody tr:first-child th, .table-bordered colgroup + tbody tr:first-child td, .table-bordered thead:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child td { border-top: 0; } .table-bordered thead:first-child tr:first-child > th:first-child, .table-bordered tbody:first-child tr:first-child > td:first-child, .table-bordered tbody:first-child tr:first-child > th:first-child { -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; border-top-left-radius: 4px; } .table-bordered thead:first-child tr:first-child > th:last-child, .table-bordered tbody:first-child tr:first-child > td:last-child, .table-bordered tbody:first-child tr:first-child > th:last-child { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; } .table-bordered thead:last-child tr:last-child > th:first-child, .table-bordered tbody:last-child tr:last-child > td:first-child, .table-bordered tbody:last-child tr:last-child > th:first-child, .table-bordered tfoot:last-child tr:last-child > td:first-child, .table-bordered tfoot:last-child tr:last-child > th:first-child { -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; border-bottom-left-radius: 4px; } .table-bordered thead:last-child tr:last-child > th:last-child, .table-bordered tbody:last-child tr:last-child > td:last-child, .table-bordered tbody:last-child tr:last-child > th:last-child, .table-bordered tfoot:last-child tr:last-child > td:last-child, .table-bordered tfoot:last-child tr:last-child > th:last-child { -webkit-border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; border-bottom-right-radius: 4px; } .table-bordered tfoot + tbody:last-child tr:last-child td:first-child { -webkit-border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; border-bottom-left-radius: 0; } .table-bordered tfoot + tbody:last-child tr:last-child td:last-child { -webkit-border-bottom-right-radius: 0; -moz-border-radius-bottomright: 0; border-bottom-right-radius: 0; } .table-bordered caption + thead tr:first-child th:first-child, .table-bordered caption + tbody tr:first-child td:first-child, .table-bordered colgroup + thead tr:first-child th:first-child, .table-bordered colgroup + tbody tr:first-child td:first-child { -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; border-top-left-radius: 4px; } .table-bordered caption + thead tr:first-child th:last-child, .table-bordered caption + tbody tr:first-child td:last-child, .table-bordered colgroup + thead tr:first-child th:last-child, .table-bordered colgroup + tbody tr:first-child td:last-child { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; } .table-striped tbody > tr:nth-child(odd) > td, .table-striped tbody > tr:nth-child(odd) > th { background-color: #f9f9f9; } .table-hover tbody tr:hover > td, .table-hover tbody tr:hover > th { background-color: #f5f5f5; } table td[class*="span"], table th[class*="span"], .row-fluid table td[class*="span"], .row-fluid table th[class*="span"] { display: table-cell; float: none; margin-left: 0; } .table td.span1, .table th.span1 { float: none; width: 44px; margin-left: 0; } .table td.span2, .table th.span2 { float: none; width: 124px; margin-left: 0; } .table td.span3, .table th.span3 { float: none; width: 204px; margin-left: 0; } .table td.span4, .table th.span4 { float: none; width: 284px; margin-left: 0; } .table td.span5, .table th.span5 { float: none; width: 364px; margin-left: 0; } .table td.span6, .table th.span6 { float: none; width: 444px; margin-left: 0; } .table td.span7, .table th.span7 { float: none; width: 524px; margin-left: 0; } .table td.span8, .table th.span8 { float: none; width: 604px; margin-left: 0; } .table td.span9, .table th.span9 { float: none; width: 684px; margin-left: 0; } .table td.span10, .table th.span10 { float: none; width: 764px; margin-left: 0; } .table td.span11, .table th.span11 { float: none; width: 844px; margin-left: 0; } .table td.span12, .table th.span12 { float: none; width: 924px; margin-left: 0; } .table tbody tr.success > td { background-color: #dff0d8; } .table tbody tr.error > td { background-color: #f2dede; } .table tbody tr.warning > td { background-color: #fcf8e3; } .table tbody tr.info > td { background-color: #d9edf7; } .table-hover tbody tr.success:hover > td { background-color: #d0e9c6; } .table-hover tbody tr.error:hover > td { background-color: #ebcccc; } .table-hover tbody tr.warning:hover > td { background-color: #faf2cc; } .table-hover tbody tr.info:hover > td { background-color: #c4e3f3; } .dropup, .dropdown { position: relative; } .dropdown-toggle { *margin-bottom: -3px; } .dropdown-toggle:active, .open .dropdown-toggle { outline: 0; } .caret { display: inline-block; width: 0; height: 0; vertical-align: top; border-top: 4px solid #000; border-right: 4px solid transparent; border-left: 4px solid transparent; content: ""; } .dropdown .caret { margin-top: 8px; margin-left: 2px; } .dropdown-menu { position: absolute; top: 100%; left: 0; z-index: 1000; display: none; float: left; min-width: 160px; padding: 5px 0; margin: 2px 0 0; list-style: none; background-color: #fff; border: 1px solid #ccc; border: 1px solid rgba(0,0,0,0.2); *border-right-width: 2px; *border-bottom-width: 2px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0,0,0,0.2); -moz-box-shadow: 0 5px 10px rgba(0,0,0,0.2); box-shadow: 0 5px 10px rgba(0,0,0,0.2); -webkit-background-clip: padding-box; -moz-background-clip: padding; background-clip: padding-box; } .dropdown-menu.pull-right { right: 0; left: auto; } .dropdown-menu .divider { *width: 100%; height: 1px; margin: 8px 1px; *margin: -5px 0 5px; overflow: hidden; background-color: #e5e5e5; border-bottom: 1px solid #fff; } .dropdown-menu > li > a { display: block; padding: 3px 20px; clear: both; font-weight: normal; line-height: 18px; color: #333; white-space: nowrap; } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus, .dropdown-submenu:hover > a, .dropdown-submenu:focus > a { text-decoration: none; color: #fff; background-color: #2d6ca2; background-image: -moz-linear-gradient(top,#3071a9,#2a6496); background-image: -webkit-gradient(linear,0 0,0 100%,from(#3071a9),to(#2a6496)); background-image: -webkit-linear-gradient(top,#3071a9,#2a6496); background-image: -o-linear-gradient(top,#3071a9,#2a6496); background-image: linear-gradient(to bottom,#3071a9,#2a6496); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f70a9', endColorstr='#ff296395', GradientType=0); } .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { color: #333; text-decoration: none; outline: 0; background-color: #2d6ca2; background-image: -moz-linear-gradient(top,#3071a9,#2a6496); background-image: -webkit-gradient(linear,0 0,0 100%,from(#3071a9),to(#2a6496)); background-image: -webkit-linear-gradient(top,#3071a9,#2a6496); background-image: -o-linear-gradient(top,#3071a9,#2a6496); background-image: linear-gradient(to bottom,#3071a9,#2a6496); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f70a9', endColorstr='#ff296395', GradientType=0); } .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { color: #999; } .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { text-decoration: none; background-color: transparent; background-image: none; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); cursor: default; } .open { *z-index: 1000; } .open > .dropdown-menu { display: block; } .dropdown-backdrop { position: fixed; left: 0; right: 0; bottom: 0; top: 0; z-index: 990; } .pull-right > .dropdown-menu { right: 0; left: auto; } .dropup .caret, .navbar-fixed-bottom .dropdown .caret { border-top: 0; border-bottom: 4px solid #000; content: ""; } .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { top: auto; bottom: 100%; margin-bottom: 1px; } .dropdown-submenu { position: relative; } .dropdown-submenu > .dropdown-menu { top: 0; left: 100%; margin-top: -6px; margin-left: -1px; -webkit-border-radius: 6px 6px 6px 6px; -moz-border-radius: 6px 6px 6px 6px; border-radius: 6px 6px 6px 6px; } .dropdown-submenu:hover > .dropdown-menu { display: block; } .dropup .dropdown-submenu > .dropdown-menu { top: auto; bottom: 0; margin-top: 0; margin-bottom: -2px; -webkit-border-radius: 5px 5px 5px 0; -moz-border-radius: 5px 5px 5px 0; border-radius: 5px 5px 5px 0; } .dropdown-submenu > a:after { display: block; content: " "; float: right; width: 0; height: 0; border-color: transparent; border-style: solid; border-width: 5px 0 5px 5px; border-left-color: #cccccc; margin-top: 5px; margin-right: -10px; } .dropdown-submenu:hover > a:after { border-left-color: #fff; } .dropdown-submenu.pull-left { float: none; } .dropdown-submenu.pull-left > .dropdown-menu { left: -100%; margin-left: 10px; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; } .dropdown .dropdown-menu .nav-header { padding-left: 20px; padding-right: 20px; } .typeahead { z-index: 1051; margin-top: 2px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .well { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: #f5f5f5; border: 1px solid #e3e3e3; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.05); -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.05); box-shadow: inset 0 1px 1px rgba(0,0,0,0.05); } .well blockquote { border-color: #ddd; border-color: rgba(0,0,0,0.15); } .well-large { padding: 24px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .well-small { padding: 9px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .fade { opacity: 0; -webkit-transition: opacity .15s linear; -moz-transition: opacity .15s linear; -o-transition: opacity .15s linear; transition: opacity .15s linear; } .fade.in { opacity: 1; } .collapse { position: relative; height: 0; overflow: hidden; -webkit-transition: height .35s ease; -moz-transition: height .35s ease; -o-transition: height .35s ease; transition: height .35s ease; } .collapse.in { height: auto; } .close { float: right; font-size: 20px; font-weight: bold; line-height: 18px; color: #000; text-shadow: 0 1px 0 #ffffff; opacity: 0.2; filter: alpha(opacity=20); } .close:hover, .close:focus { color: #000; text-decoration: none; cursor: pointer; opacity: 0.4; filter: alpha(opacity=40); } button.close { padding: 3; cursor: pointer; background: transparent; border: 0; -webkit-appearance: none; } .btn { display: inline-block; *display: inline; *zoom: 1; padding: 4px 12px; margin-bottom: 0; font-size: 13px; line-height: 18px; text-align: center; vertical-align: middle; cursor: pointer; color: #333; text-shadow: 0 1px 1px rgba(255,255,255,0.75); background-color: #f5f5f5; background-image: -moz-linear-gradient(top,#fff,#e6e6e6); background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6)); background-image: -webkit-linear-gradient(top,#fff,#e6e6e6); background-image: -o-linear-gradient(top,#fff,#e6e6e6); background-image: linear-gradient(to bottom,#fff,#e6e6e6); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe5e5e5', GradientType=0); border-color: #e6e6e6 #e6e6e6 #bfbfbf; *background-color: #e6e6e6; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); border: 1px solid #bbb; *border: 0; border-bottom-color: #a2a2a2; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; *margin-left: .3em; -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); } .btn:hover, .btn:focus, .btn:active, .btn.active, .btn.disabled, .btn[disabled] { color: #333; background-color: #e6e6e6; *background-color: #d9d9d9; } .btn:active, .btn.active { background-color: #cccccc \9; } .btn:first-child { *margin-left: 0; } .btn:hover, .btn:focus { color: #333; text-decoration: none; background-position: 0 -15px; -webkit-transition: background-position .1s linear; -moz-transition: background-position .1s linear; -o-transition: background-position .1s linear; transition: background-position .1s linear; } .btn:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .btn.active, .btn:active { background-image: none; outline: 0; -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); } .btn.disabled, .btn[disabled] { cursor: default; background-image: none; opacity: 0.65; filter: alpha(opacity=65); -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .btn-large { padding: 11px 19px; font-size: 16.25px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .btn-large [class^="icon-"], .btn-large [class*=" icon-"] { margin-top: 4px; } .btn-small { padding: 2px 10px; font-size: 12px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .btn-small [class^="icon-"], .btn-small [class*=" icon-"] { margin-top: 0; } .btn-mini [class^="icon-"], .btn-mini [class*=" icon-"] { margin-top: -1px; } .btn-mini { padding: 0 6px; font-size: 9.75px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .btn-block { display: block; width: 100%; padding-left: 0; padding-right: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .btn-block + .btn-block { margin-top: 5px; } input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { width: 100%; } .btn-primary.active, .btn-warning.active, .btn-danger.active, .btn-success.active, .btn-info.active, .btn-inverse.active { color: rgba(255,255,255,0.75); } .btn-primary { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #1d6cb0; background-image: -moz-linear-gradient(top,#2384d3,#15497c); background-image: -webkit-gradient(linear,0 0,0 100%,from(#2384d3),to(#15497c)); background-image: -webkit-linear-gradient(top,#2384d3,#15497c); background-image: -o-linear-gradient(top,#2384d3,#15497c); background-image: linear-gradient(to bottom,#2384d3,#15497c); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2384d3', endColorstr='#ff15497c', GradientType=0); border-color: #15497c #15497c #0a223b; *background-color: #15497c; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { color: #fff; background-color: #15497c; *background-color: #113c66; } .btn-primary:active, .btn-primary.active { background-color: #0e2f50 \9; } .btn-warning { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #e48806; background-image: -moz-linear-gradient(top,#f89406,#c67605); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f89406),to(#c67605)); background-image: -webkit-linear-gradient(top,#f89406,#c67605); background-image: -o-linear-gradient(top,#f89406,#c67605); background-image: linear-gradient(to bottom,#f89406,#c67605); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff89406', endColorstr='#ffc67604', GradientType=0); border-color: #c67605 #c67605 #7c4a03; *background-color: #c67605; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .btn-warning.disabled, .btn-warning[disabled] { color: #fff; background-color: #c67605; *background-color: #ad6704; } .btn-warning:active, .btn-warning.active { background-color: #945904 \9; } .btn-danger { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #ad312b; background-image: -moz-linear-gradient(top,#bd362f,#942a25); background-image: -webkit-gradient(linear,0 0,0 100%,from(#bd362f),to(#942a25)); background-image: -webkit-linear-gradient(top,#bd362f,#942a25); background-image: -o-linear-gradient(top,#bd362f,#942a25); background-image: linear-gradient(to bottom,#bd362f,#942a25); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbd362f', endColorstr='#ff942a24', GradientType=0); border-color: #942a25 #942a25 #571916; *background-color: #942a25; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .btn-danger.disabled, .btn-danger[disabled] { color: #fff; background-color: #942a25; *background-color: #802420; } .btn-danger:active, .btn-danger.active { background-color: #6b1f1b \9; } .btn-success { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #409740; background-image: -moz-linear-gradient(top,#46a546,#378137); background-image: -webkit-gradient(linear,0 0,0 100%,from(#46a546),to(#378137)); background-image: -webkit-linear-gradient(top,#46a546,#378137); background-image: -o-linear-gradient(top,#46a546,#378137); background-image: linear-gradient(to bottom,#46a546,#378137); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff46a546', endColorstr='#ff368136', GradientType=0); border-color: #378137 #378137 #204b20; *background-color: #378137; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .btn-success.disabled, .btn-success[disabled] { color: #fff; background-color: #378137; *background-color: #2f6f2f; } .btn-success:active, .btn-success.active { background-color: #285d28 \9; } .btn-info { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #2b89a4; background-image: -moz-linear-gradient(top,#2f96b4,#24748c); background-image: -webkit-gradient(linear,0 0,0 100%,from(#2f96b4),to(#24748c)); background-image: -webkit-linear-gradient(top,#2f96b4,#24748c); background-image: -o-linear-gradient(top,#2f96b4,#24748c); background-image: linear-gradient(to bottom,#2f96b4,#24748c); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f96b4', endColorstr='#ff24748b', GradientType=0); border-color: #24748c #24748c #15424f; *background-color: #24748c; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .btn-info.disabled, .btn-info[disabled] { color: #fff; background-color: #24748c; *background-color: #1f6377; } .btn-info:active, .btn-info.active { background-color: #1a5363 \9; } .btn-inverse { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #363636; background-image: -moz-linear-gradient(top,#444,#222); background-image: -webkit-gradient(linear,0 0,0 100%,from(#444),to(#222)); background-image: -webkit-linear-gradient(top,#444,#222); background-image: -o-linear-gradient(top,#444,#222); background-image: linear-gradient(to bottom,#444,#222); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); border-color: #222 #222 #000000; *background-color: #222; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-inverse:hover, .btn-inverse:focus, .btn-inverse:active, .btn-inverse.active, .btn-inverse.disabled, .btn-inverse[disabled] { color: #fff; background-color: #222; *background-color: #151515; } .btn-inverse:active, .btn-inverse.active { background-color: #090909 \9; } button.btn, input[type="submit"].btn { *padding-top: 3px; *padding-bottom: 3px; } button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner { padding: 0; border: 0; } button.btn.btn-large, input[type="submit"].btn.btn-large { *padding-top: 7px; *padding-bottom: 7px; } button.btn.btn-small, input[type="submit"].btn.btn-small { *padding-top: 3px; *padding-bottom: 3px; } button.btn.btn-mini, input[type="submit"].btn.btn-mini { *padding-top: 1px; *padding-bottom: 1px; } .btn-link, .btn-link:active, .btn-link[disabled] { background-color: transparent; background-image: none; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .btn-link { border-color: transparent; cursor: pointer; color: #3071a9; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-link:hover, .btn-link:focus { color: #1f496e; text-decoration: underline; background-color: transparent; } .btn-link[disabled]:hover, .btn-link[disabled]:focus { color: #333; text-decoration: none; } .btn-group { position: relative; display: inline-block; *display: inline; *zoom: 1; font-size: 0; vertical-align: middle; white-space: nowrap; *margin-left: .3em; } .btn-group:first-child { *margin-left: 0; } .btn-group + .btn-group { margin-left: 5px; } .btn-toolbar { font-size: 0; margin-top: 9px; margin-bottom: 9px; } .btn-toolbar > .btn + .btn, .btn-toolbar > .btn-group + .btn, .btn-toolbar > .btn + .btn-group { margin-left: 5px; } .btn-group > .btn { position: relative; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-group > .btn + .btn { margin-left: -1px; } .btn-group > .btn, .btn-group > .dropdown-menu, .btn-group > .popover { font-size: 13px; } .btn-group > .btn-mini { font-size: 9.75px; } .btn-group > .btn-small { font-size: 12px; } .btn-group > .btn-large { font-size: 16.25px; } .btn-group > .btn:first-child { margin-left: 0; -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; border-top-left-radius: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; border-bottom-left-radius: 4px; } .btn-group > .btn:last-child, .btn-group > .dropdown-toggle { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; -webkit-border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; border-bottom-right-radius: 4px; } .btn-group > .btn.large:first-child { margin-left: 0; -webkit-border-top-left-radius: 6px; -moz-border-radius-topleft: 6px; border-top-left-radius: 6px; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomleft: 6px; border-bottom-left-radius: 6px; } .btn-group > .btn.large:last-child, .btn-group > .large.dropdown-toggle { -webkit-border-top-right-radius: 6px; -moz-border-radius-topright: 6px; border-top-right-radius: 6px; -webkit-border-bottom-right-radius: 6px; -moz-border-radius-bottomright: 6px; border-bottom-right-radius: 6px; } .btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active { z-index: 2; } .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { outline: 0; } .btn-group > .btn + .dropdown-toggle { padding-left: 8px; padding-right: 8px; -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); *padding-top: 5px; *padding-bottom: 5px; } .btn-group > .btn-mini + .dropdown-toggle { padding-left: 5px; padding-right: 5px; *padding-top: 2px; *padding-bottom: 2px; } .btn-group > .btn-small + .dropdown-toggle { *padding-top: 5px; *padding-bottom: 4px; } .btn-group > .btn-large + .dropdown-toggle { padding-left: 12px; padding-right: 12px; *padding-top: 7px; *padding-bottom: 7px; } .btn-group.open .dropdown-toggle { background-image: none; -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); } .btn-group.open .btn.dropdown-toggle { background-color: #e6e6e6; } .btn-group.open .btn-primary.dropdown-toggle { background-color: #15497c; } .btn-group.open .btn-warning.dropdown-toggle { background-color: #c67605; } .btn-group.open .btn-danger.dropdown-toggle { background-color: #942a25; } .btn-group.open .btn-success.dropdown-toggle { background-color: #378137; } .btn-group.open .btn-info.dropdown-toggle { background-color: #24748c; } .btn-group.open .btn-inverse.dropdown-toggle { background-color: #222; } .btn .caret { margin-top: 8px; margin-left: 0; } .btn-large .caret { margin-top: 6px; } .btn-large .caret { border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; } .btn-mini .caret, .btn-small .caret { margin-top: 8px; } .dropup .btn-large .caret { border-bottom-width: 5px; } .btn-primary .caret, .btn-warning .caret, .btn-danger .caret, .btn-info .caret, .btn-success .caret, .btn-inverse .caret { border-top-color: #fff; border-bottom-color: #fff; } .btn-group-vertical { display: inline-block; *display: inline; *zoom: 1; } .btn-group-vertical > .btn { display: block; float: none; max-width: 100%; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-group-vertical > .btn + .btn { margin-left: 0; margin-top: -1px; } .btn-group-vertical > .btn:first-child { -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .btn-group-vertical > .btn:last-child { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; } .btn-group-vertical > .btn-large:first-child { -webkit-border-radius: 6px 6px 0 0; -moz-border-radius: 6px 6px 0 0; border-radius: 6px 6px 0 0; } .btn-group-vertical > .btn-large:last-child { -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; } .alert { padding: 8px 35px 8px 14px; margin-bottom: 18px; text-shadow: 0 1px 0 rgba(255,255,255,0.5); background-color: #fcf8e3; border: 1px solid #faebcc; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .alert, .alert h4 { color: #8a6d3b; } .alert h4 { margin: 0; } .alert .close { position: relative; top: -2px; right: -21px; line-height: 18px; } .alert-success { background-color: #dff0d8; border-color: #d6e9c6; color: #3c763d; } .alert-success h4 { color: #3c763d; } .alert-danger, .alert-error { background-color: #f2dede; border-color: #ebccd1; color: #a94442; } .alert-danger h4, .alert-error h4 { color: #a94442; } .alert-info { background-color: #d9edf7; border-color: #bce8f1; color: #31708f; } .alert-info h4 { color: #31708f; } .alert-block { padding-top: 14px; padding-bottom: 14px; } .alert-block > p, .alert-block > ul { margin-bottom: 0; } .alert-block p + p { margin-top: 5px; } .nav { margin-left: 0; margin-bottom: 18px; list-style: none; } .nav > li > a { display: block; } .nav > li > a:hover, .nav > li > a:focus { text-decoration: none; background-color: #eee; } .nav > li > a > img { max-width: none; } .nav > .pull-right { float: right; } .nav-header { display: block; padding: 3px 15px; font-size: 11px; font-weight: bold; line-height: 18px; color: #999; text-shadow: 0 1px 0 rgba(255,255,255,0.5); text-transform: uppercase; } .nav li + .nav-header { margin-top: 9px; } .nav-list { padding-left: 15px; padding-right: 15px; margin-bottom: 0; } .nav-list > li > a, .nav-list .nav-header { margin-left: -15px; margin-right: -15px; text-shadow: 0 1px 0 rgba(255,255,255,0.5); } .nav-list > li > a { padding: 3px 15px; } .nav-list > .active > a, .nav-list > .active > a:hover, .nav-list > .active > a:focus { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.2); background-color: #3071a9; } .nav-list [class^="icon-"], .nav-list [class*=" icon-"] { margin-right: 2px; } .nav-list .divider { *width: 100%; height: 1px; margin: 8px 1px; *margin: -5px 0 5px; overflow: hidden; background-color: #e5e5e5; border-bottom: 1px solid #fff; } .nav-tabs, .nav-pills { *zoom: 1; } .nav-tabs:before, .nav-tabs:after, .nav-pills:before, .nav-pills:after { display: table; content: ""; line-height: 0; } .nav-tabs:after, .nav-pills:after { clear: both; } .nav-tabs > li, .nav-pills > li { float: left; } .nav-tabs > li > a, .nav-pills > li > a { padding-right: 12px; padding-left: 12px; margin-right: 2px; line-height: 14px; } .nav-tabs { border-bottom: 1px solid #ddd; } .nav-tabs > li { margin-bottom: -1px; } .nav-tabs > li > a { padding-top: 8px; padding-bottom: 8px; line-height: 18px; border: 1px solid transparent; -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .nav-tabs > li > a:hover, .nav-tabs > li > a:focus { border-color: #eee #eee #ddd; } .nav-tabs > .active > a, .nav-tabs > .active > a:hover, .nav-tabs > .active > a:focus { color: #555; background-color: #fff; border: 1px solid #ddd; border-bottom-color: transparent; cursor: default; } .nav-pills > li > a { padding-top: 8px; padding-bottom: 8px; margin-top: 2px; margin-bottom: 2px; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .nav-pills > .active > a, .nav-pills > .active > a:hover, .nav-pills > .active > a:focus { color: #fff; background-color: #3071a9; } .nav-stacked > li { float: none; } .nav-stacked > li > a { margin-right: 0; } .nav-tabs.nav-stacked { border-bottom: 0; } .nav-tabs.nav-stacked > li > a { border: 1px solid #ddd; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .nav-tabs.nav-stacked > li:first-child > a { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; border-top-left-radius: 4px; } .nav-tabs.nav-stacked > li:last-child > a { -webkit-border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; border-bottom-right-radius: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; border-bottom-left-radius: 4px; } .nav-tabs.nav-stacked > li > a:hover, .nav-tabs.nav-stacked > li > a:focus { border-color: #ddd; z-index: 2; } .nav-pills.nav-stacked > li > a { margin-bottom: 3px; } .nav-pills.nav-stacked > li:last-child > a { margin-bottom: 1px; } .nav-tabs .dropdown-menu { -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; } .nav-pills .dropdown-menu { -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .nav .dropdown-toggle .caret { border-top-color: #3071a9; border-bottom-color: #3071a9; margin-top: 6px; } .nav .dropdown-toggle:hover .caret, .nav .dropdown-toggle:focus .caret { border-top-color: #1f496e; border-bottom-color: #1f496e; } .nav-tabs .dropdown-toggle .caret { margin-top: 8px; } .nav .active .dropdown-toggle .caret { border-top-color: #fff; border-bottom-color: #fff; } .nav-tabs .active .dropdown-toggle .caret { border-top-color: #555; border-bottom-color: #555; } .nav > .dropdown.active > a:hover, .nav > .dropdown.active > a:focus { cursor: pointer; } .nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > li.dropdown.open.active > a:hover, .nav > li.dropdown.open.active > a:focus { color: #fff; background-color: #999; border-color: #999; } .nav li.dropdown.open .caret, .nav li.dropdown.open.active .caret, .nav li.dropdown.open a:hover .caret, .nav li.dropdown.open a:focus .caret { border-top-color: #fff; border-bottom-color: #fff; opacity: 1; filter: alpha(opacity=100); } .tabs-stacked .open > a:hover, .tabs-stacked .open > a:focus { border-color: #999; } .tabbable { *zoom: 1; } .tabbable:before, .tabbable:after { display: table; content: ""; line-height: 0; } .tabbable:after { clear: both; } .tab-content { overflow: auto; } .tabs-below > .nav-tabs, .tabs-right > .nav-tabs, .tabs-left > .nav-tabs { border-bottom: 0; } .tab-content > .tab-pane, .pill-content > .pill-pane { display: none; } .tab-content > .active, .pill-content > .active { display: block; } .tabs-below > .nav-tabs { border-top: 1px solid #ddd; } .tabs-below > .nav-tabs > li { margin-top: -1px; margin-bottom: 0; } .tabs-below > .nav-tabs > li > a { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; } .tabs-below > .nav-tabs > li > a:hover, .tabs-below > .nav-tabs > li > a:focus { border-bottom-color: transparent; border-top-color: #ddd; } .tabs-below > .nav-tabs > .active > a, .tabs-below > .nav-tabs > .active > a:hover, .tabs-below > .nav-tabs > .active > a:focus { border-color: transparent #ddd #ddd #ddd; } .tabs-left > .nav-tabs > li, .tabs-right > .nav-tabs > li { float: none; } .tabs-left > .nav-tabs > li > a, .tabs-right > .nav-tabs > li > a { min-width: 74px; margin-right: 0; margin-bottom: 3px; } .tabs-left > .nav-tabs { float: left; margin-right: 19px; border-right: 1px solid #ddd; } .tabs-left > .nav-tabs > li > a { margin-right: -1px; -webkit-border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; } .tabs-left > .nav-tabs > li > a:hover, .tabs-left > .nav-tabs > li > a:focus { border-color: #eee #ddd #eee #eee; } .tabs-left > .nav-tabs .active > a, .tabs-left > .nav-tabs .active > a:hover, .tabs-left > .nav-tabs .active > a:focus { border-color: #ddd transparent #ddd #ddd; *border-right-color: #fff; } .tabs-right > .nav-tabs { float: right; margin-left: 19px; border-left: 1px solid #ddd; } .tabs-right > .nav-tabs > li > a { margin-left: -1px; -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .tabs-right > .nav-tabs > li > a:hover, .tabs-right > .nav-tabs > li > a:focus { border-color: #eee #eee #eee #ddd; } .tabs-right > .nav-tabs .active > a, .tabs-right > .nav-tabs .active > a:hover, .tabs-right > .nav-tabs .active > a:focus { border-color: #ddd #ddd #ddd transparent; *border-left-color: #fff; } .nav > .disabled > a { color: #999; } .nav > .disabled > a:hover, .nav > .disabled > a:focus { text-decoration: none; background-color: transparent; cursor: default; } .navbar { overflow: visible; margin-bottom: 18px; *position: relative; *z-index: 2; } .navbar-inner { min-height: 40px; padding-left: 20px; padding-right: 20px; background-color: #fafafa; background-image: -moz-linear-gradient(top,#ffffff,#f2f2f2); background-image: -webkit-gradient(linear,0 0,0 100%,from(#ffffff),to(#f2f2f2)); background-image: -webkit-linear-gradient(top,#ffffff,#f2f2f2); background-image: -o-linear-gradient(top,#ffffff,#f2f2f2); background-image: linear-gradient(to bottom,#ffffff,#f2f2f2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); border: 1px solid #d4d4d4; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 4px rgba(0,0,0,0.065); -moz-box-shadow: 0 1px 4px rgba(0,0,0,0.065); box-shadow: 0 1px 4px rgba(0,0,0,0.065); *zoom: 1; } .navbar-inner:before, .navbar-inner:after { display: table; content: ""; line-height: 0; } .navbar-inner:after { clear: both; } .navbar .container { width: auto; } .nav-collapse.collapse { height: auto; overflow: visible; } .navbar .brand { float: left; display: block; padding: 11px 20px 11px; margin-left: -20px; font-size: 20px; font-weight: 200; color: #555; text-shadow: 0 1px 0 #ffffff; } .navbar .brand:hover, .navbar .brand:focus { text-decoration: none; } .navbar-text { margin-bottom: 0; line-height: 40px; color: #555; } .navbar-link { color: #555; } .navbar-link:hover, .navbar-link:focus { color: #333; } .navbar .divider-vertical { height: 40px; margin: 0 9px; border-left: 1px solid #f2f2f2; border-right: 1px solid #ffffff; } .navbar .btn, .navbar .btn-group { margin-top: 5px; } .navbar .btn-group .btn, .navbar .input-prepend .btn, .navbar .input-append .btn, .navbar .input-prepend .btn-group, .navbar .input-append .btn-group { margin-top: 0; } .navbar-form { margin-bottom: 0; *zoom: 1; } .navbar-form:before, .navbar-form:after { display: table; content: ""; line-height: 0; } .navbar-form:after { clear: both; } .navbar-form input, .navbar-form select, .navbar-form .radio, .navbar-form .checkbox { margin-top: 5px; } .navbar-form input, .navbar-form select, .navbar-form .btn { display: inline-block; margin-bottom: 0; } .navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] { margin-top: 3px; } .navbar-form .input-append, .navbar-form .input-prepend { margin-top: 5px; white-space: nowrap; } .navbar-form .input-append input, .navbar-form .input-prepend input { margin-top: 0; } .navbar-search { position: relative; float: left; margin-top: 5px; margin-bottom: 0; } .navbar-search .search-query { margin-bottom: 0; padding: 4px 14px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } .navbar-static-top { position: static; margin-bottom: 0; } .navbar-static-top .navbar-inner { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .navbar-fixed-top, .navbar-fixed-bottom { position: fixed; right: 0; left: 0; z-index: 1030; margin-bottom: 0; } .navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { border-width: 0 0 1px; } .navbar-fixed-bottom .navbar-inner { border-width: 1px 0 0; } .navbar-fixed-top .navbar-inner, .navbar-fixed-bottom .navbar-inner { padding-left: 0; padding-right: 0; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 940px; } .navbar-fixed-top { top: 0; } .navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1); -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1); box-shadow: 0 1px 10px rgba(0,0,0,.1); } .navbar-fixed-bottom { bottom: 0; } .navbar-fixed-bottom .navbar-inner { -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1); -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1); box-shadow: 0 -1px 10px rgba(0,0,0,.1); } .navbar .nav { position: relative; left: 0; display: block; float: left; margin: 0 10px 0 0; } .navbar .nav.pull-right { float: right; margin-right: 0; } .navbar .nav > li { float: left; } .navbar .nav > li > a { float: none; padding: 11px 15px 11px; color: #555; text-decoration: none; text-shadow: 0 1px 0 #ffffff; } .navbar .nav .dropdown-toggle .caret { margin-top: 8px; } .navbar .nav > li > a:focus, .navbar .nav > li > a:hover { background-color: transparent; color: #333; text-decoration: none; } .navbar .nav > .active > a, .navbar .nav > .active > a:hover, .navbar .nav > .active > a:focus { color: #555; text-decoration: none; background-color: #e6e6e6; -webkit-box-shadow: inset 0 3px 8px rgba(0,0,0,0.125); -moz-box-shadow: inset 0 3px 8px rgba(0,0,0,0.125); box-shadow: inset 0 3px 8px rgba(0,0,0,0.125); } .navbar .btn-navbar { display: none; float: right; padding: 7px 10px; margin-left: 5px; margin-right: 5px; color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #ededed; background-image: -moz-linear-gradient(top,#f2f2f2,#e6e6e6); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e6e6e6)); background-image: -webkit-linear-gradient(top,#f2f2f2,#e6e6e6); background-image: -o-linear-gradient(top,#f2f2f2,#e6e6e6); background-image: linear-gradient(to bottom,#f2f2f2,#e6e6e6); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); border-color: #e6e6e6 #e6e6e6 #bfbfbf; *background-color: #e6e6e6; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); } .navbar .btn-navbar:hover, .navbar .btn-navbar:focus, .navbar .btn-navbar:active, .navbar .btn-navbar.active, .navbar .btn-navbar.disabled, .navbar .btn-navbar[disabled] { color: #fff; background-color: #e6e6e6; *background-color: #d9d9d9; } .navbar .btn-navbar:active, .navbar .btn-navbar.active { background-color: #cccccc \9; } .navbar .btn-navbar .icon-bar { display: block; width: 18px; height: 2px; background-color: #f5f5f5; -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; -webkit-box-shadow: 0 1px 0 rgba(0,0,0,0.25); -moz-box-shadow: 0 1px 0 rgba(0,0,0,0.25); box-shadow: 0 1px 0 rgba(0,0,0,0.25); } .btn-navbar .icon-bar + .icon-bar { margin-top: 3px; } .navbar .nav > li > .dropdown-menu:before { content: ''; display: inline-block; border-left: 7px solid transparent; border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-bottom-color: rgba(0,0,0,0.2); position: absolute; top: -7px; left: 9px; } .navbar .nav > li > .dropdown-menu:after { content: ''; display: inline-block; border-left: 6px solid transparent; border-right: 6px solid transparent; border-bottom: 6px solid #fff; position: absolute; top: -6px; left: 10px; } .navbar-fixed-bottom .nav > li > .dropdown-menu:before { border-top: 7px solid #ccc; border-top-color: rgba(0,0,0,0.2); border-bottom: 0; bottom: -7px; top: auto; } .navbar-fixed-bottom .nav > li > .dropdown-menu:after { border-top: 6px solid #fff; border-bottom: 0; bottom: -6px; top: auto; } .navbar .nav li.dropdown > a:hover .caret, .navbar .nav li.dropdown > a:focus .caret { border-top-color: #333; border-bottom-color: #333; } .navbar .nav li.dropdown.open > .dropdown-toggle, .navbar .nav li.dropdown.active > .dropdown-toggle, .navbar .nav li.dropdown.open.active > .dropdown-toggle { background-color: #e6e6e6; color: #555; } .navbar .nav li.dropdown > .dropdown-toggle .caret { border-top-color: #555; border-bottom-color: #555; } .navbar .nav li.dropdown.open > .dropdown-toggle .caret, .navbar .nav li.dropdown.active > .dropdown-toggle .caret, .navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { border-top-color: #555; border-bottom-color: #555; } .navbar .pull-right > li > .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right { left: auto; right: 0; } .navbar .pull-right > li > .dropdown-menu:before, .navbar .nav > li > .dropdown-menu.pull-right:before { left: auto; right: 12px; } .navbar .pull-right > li > .dropdown-menu:after, .navbar .nav > li > .dropdown-menu.pull-right:after { left: auto; right: 13px; } .navbar .pull-right > li > .dropdown-menu .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { left: auto; right: 100%; margin-left: 0; margin-right: -1px; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; } .navbar-inverse .navbar-inner { background-color: #13294a; background-image: -moz-linear-gradient(top,#152d53,#10223e); background-image: -webkit-gradient(linear,0 0,0 100%,from(#152d53),to(#10223e)); background-image: -webkit-linear-gradient(top,#152d53,#10223e); background-image: -o-linear-gradient(top,#152d53,#10223e); background-image: linear-gradient(to bottom,#152d53,#10223e); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff142c52', endColorstr='#ff0f213e', GradientType=0); border-color: #0b172a; } .navbar-inverse .brand, .navbar-inverse .nav > li > a { color: #d9d9d9; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); } .navbar-inverse .brand:hover, .navbar-inverse .brand:focus, .navbar-inverse .nav > li > a:hover, .navbar-inverse .nav > li > a:focus { color: #fff; } .navbar-inverse .brand { color: #d9d9d9; } .navbar-inverse .navbar-text { color: #d9d9d9; } .navbar-inverse .nav > li > a:focus, .navbar-inverse .nav > li > a:hover { background-color: transparent; color: #fff; } .navbar-inverse .nav .active > a, .navbar-inverse .nav .active > a:hover, .navbar-inverse .nav .active > a:focus { color: #fff; background-color: #10223e; } .navbar-inverse .navbar-link { color: #d9d9d9; } .navbar-inverse .navbar-link:hover, .navbar-inverse .navbar-link:focus { color: #fff; } .navbar-inverse .divider-vertical { border-left-color: #10223e; border-right-color: #152d53; } .navbar-inverse .nav li.dropdown.open > .dropdown-toggle, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { background-color: #10223e; color: #fff; } .navbar-inverse .nav li.dropdown > a:hover .caret, .navbar-inverse .nav li.dropdown > a:focus .caret { border-top-color: #fff; border-bottom-color: #fff; } .navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { border-top-color: #d9d9d9; border-bottom-color: #d9d9d9; } .navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { border-top-color: #fff; border-bottom-color: #fff; } .navbar-inverse .navbar-search .search-query { color: #fff; background-color: #2959a4; border-color: #10223e; -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); -webkit-transition: none; -moz-transition: none; -o-transition: none; transition: none; } .navbar-inverse .navbar-search .search-query:-moz-placeholder { color: #ccc; } .navbar-inverse .navbar-search .search-query:-ms-input-placeholder { color: #ccc; } .navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { color: #ccc; } .navbar-inverse .navbar-search .search-query:focus, .navbar-inverse .navbar-search .search-query.focused { padding: 5px 15px; color: #333; text-shadow: 0 1px 0 #fff; background-color: #fff; border: 0; -webkit-box-shadow: 0 0 3px rgba(0,0,0,0.15); -moz-box-shadow: 0 0 3px rgba(0,0,0,0.15); box-shadow: 0 0 3px rgba(0,0,0,0.15); outline: 0; } .navbar-inverse .btn-navbar { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #0e1d36; background-image: -moz-linear-gradient(top,#10223e,#0b172a); background-image: -webkit-gradient(linear,0 0,0 100%,from(#10223e),to(#0b172a)); background-image: -webkit-linear-gradient(top,#10223e,#0b172a); background-image: -o-linear-gradient(top,#10223e,#0b172a); background-image: linear-gradient(to bottom,#10223e,#0b172a); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0f213e', endColorstr='#ff0a1629', GradientType=0); border-color: #0b172a #0b172a #000000; *background-color: #0b172a; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .navbar-inverse .btn-navbar:hover, .navbar-inverse .btn-navbar:focus, .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active, .navbar-inverse .btn-navbar.disabled, .navbar-inverse .btn-navbar[disabled] { color: #fff; background-color: #0b172a; *background-color: #050c16; } .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active { background-color: #000101 \9; } .breadcrumb { padding: 8px 15px; margin: 0 0 18px; list-style: none; background-color: #f5f5f5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .breadcrumb > li { display: inline-block; *display: inline; *zoom: 1; text-shadow: 0 1px 0 #fff; } .breadcrumb > li > .divider { padding: 0 5px; color: #ccc; } .breadcrumb > .active { color: #999; } .pagination { margin: 18px 0; } .pagination ul { display: inline-block; *display: inline; *zoom: 1; margin-left: 0; margin-bottom: 0; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.05); -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.05); box-shadow: 0 1px 2px rgba(0,0,0,0.05); } .pagination ul > li { display: inline; } .pagination ul > li > a, .pagination ul > li > span { float: left; padding: 4px 12px; line-height: 18px; text-decoration: none; background-color: #fff; border: 1px solid #ddd; border-left-width: 0; } .pagination ul > li > a:hover, .pagination ul > li > a:focus, .pagination ul > .active > a, .pagination ul > .active > span { background-color: #f5f5f5; } .pagination ul > .active > a, .pagination ul > .active > span { color: #999; cursor: default; } .pagination ul > .disabled > span, .pagination ul > .disabled > a, .pagination ul > .disabled > a:hover, .pagination ul > .disabled > a:focus { color: #999; background-color: transparent; cursor: default; } .pagination ul > li:first-child > a, .pagination ul > li:first-child > span { border-left-width: 1px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; border-top-left-radius: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; border-bottom-left-radius: 4px; } .pagination ul > li:last-child > a, .pagination ul > li:last-child > span { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; -webkit-border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; border-bottom-right-radius: 4px; } .pagination-centered { text-align: center; } .pagination-right { text-align: right; } .pagination-large ul > li > a, .pagination-large ul > li > span { padding: 11px 19px; font-size: 16.25px; } .pagination-large ul > li:first-child > a, .pagination-large ul > li:first-child > span { -webkit-border-top-left-radius: 6px; -moz-border-radius-topleft: 6px; border-top-left-radius: 6px; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomleft: 6px; border-bottom-left-radius: 6px; } .pagination-large ul > li:last-child > a, .pagination-large ul > li:last-child > span { -webkit-border-top-right-radius: 6px; -moz-border-radius-topright: 6px; border-top-right-radius: 6px; -webkit-border-bottom-right-radius: 6px; -moz-border-radius-bottomright: 6px; border-bottom-right-radius: 6px; } .pagination-mini ul > li:first-child > a, .pagination-mini ul > li:first-child > span, .pagination-small ul > li:first-child > a, .pagination-small ul > li:first-child > span { -webkit-border-top-left-radius: 3px; -moz-border-radius-topleft: 3px; border-top-left-radius: 3px; -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px; border-bottom-left-radius: 3px; } .pagination-mini ul > li:last-child > a, .pagination-mini ul > li:last-child > span, .pagination-small ul > li:last-child > a, .pagination-small ul > li:last-child > span { -webkit-border-top-right-radius: 3px; -moz-border-radius-topright: 3px; border-top-right-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-border-radius-bottomright: 3px; border-bottom-right-radius: 3px; } .pagination-small ul > li > a, .pagination-small ul > li > span { padding: 2px 10px; font-size: 12px; } .pagination-mini ul > li > a, .pagination-mini ul > li > span { padding: 0 6px; font-size: 9.75px; } .pager { margin: 18px 0; list-style: none; text-align: center; *zoom: 1; } .pager:before, .pager:after { display: table; content: ""; line-height: 0; } .pager:after { clear: both; } .pager li { display: inline; } .pager li > a, .pager li > span { display: inline-block; padding: 5px 14px; background-color: #fff; border: 1px solid #ddd; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } .pager li > a:hover, .pager li > a:focus { text-decoration: none; background-color: #f5f5f5; } .pager .next > a, .pager .next > span { float: right; } .pager .previous > a, .pager .previous > span { float: left; } .pager .disabled > a, .pager .disabled > a:hover, .pager .disabled > a:focus, .pager .disabled > span { color: #999; background-color: #fff; cursor: default; } .modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1040; background-color: #000; } .modal-backdrop.fade { opacity: 0; } .modal-backdrop, .modal-backdrop.fade.in { opacity: 0.8; filter: alpha(opacity=80); } .modal-header { padding: 9px 15px; border-bottom: 1px solid #eee; } .modal-header .close { margin-top: 2px; } .modal-header h3 { margin: 0; line-height: 30px; } .modal-body { width: 98%; position: relative; max-height: 400px; padding: 1%; } .modal-body iframe { width: 100%; max-height: none; border: 0 !important; } .modal-form { margin-bottom: 0; } .modal-footer { padding: 14px 15px 15px; margin-bottom: 0; text-align: right; background-color: #f5f5f5; border-top: 1px solid #ddd; -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; -webkit-box-shadow: inset 0 1px 0 #fff; -moz-box-shadow: inset 0 1px 0 #fff; box-shadow: inset 0 1px 0 #fff; *zoom: 1; } .modal-footer:before, .modal-footer:after { display: table; content: ""; line-height: 0; } .modal-footer:after { clear: both; } .modal-footer .btn + .btn { margin-left: 5px; margin-bottom: 0; } .modal-footer .btn-group .btn + .btn { margin-left: -1px; } .modal-footer .btn-block + .btn-block { margin-left: 0; } .tooltip { position: absolute; z-index: 1030; display: block; visibility: visible; font-size: 11px; line-height: 1.4; opacity: 0; filter: alpha(opacity=0); } .tooltip.in { opacity: 0.8; filter: alpha(opacity=80); } .tooltip.top { margin-top: -3px; padding: 5px 0; } .tooltip.right { margin-left: 3px; padding: 0 5px; } .tooltip.bottom { margin-top: 3px; padding: 5px 0; } .tooltip.left { margin-left: -3px; padding: 0 5px; } .tooltip-inner { max-width: 200px; padding: 8px; color: #fff; text-align: center; text-decoration: none; background-color: #000; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .tooltip-arrow { position: absolute; width: 0; height: 0; border-color: transparent; border-style: solid; } .tooltip.top .tooltip-arrow { bottom: 0; left: 50%; margin-left: -5px; border-width: 5px 5px 0; border-top-color: #000; } .tooltip.right .tooltip-arrow { top: 50%; left: 0; margin-top: -5px; border-width: 5px 5px 5px 0; border-right-color: #000; } .tooltip.left .tooltip-arrow { top: 50%; right: 0; margin-top: -5px; border-width: 5px 0 5px 5px; border-left-color: #000; } .tooltip.bottom .tooltip-arrow { top: 0; left: 50%; margin-left: -5px; border-width: 0 5px 5px; border-bottom-color: #000; } .popover { position: absolute; top: 0; left: 0; z-index: 1010; display: none; max-width: 276px; padding: 1px; text-align: left; background-color: #fff; -webkit-background-clip: padding-box; -moz-background-clip: padding; background-clip: padding-box; border: 1px solid #ccc; border: 1px solid rgba(0,0,0,0.2); -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0,0,0,0.2); -moz-box-shadow: 0 5px 10px rgba(0,0,0,0.2); box-shadow: 0 5px 10px rgba(0,0,0,0.2); white-space: normal; } .popover.top { margin-top: -10px; } .popover.right { margin-left: 10px; } .popover.bottom { margin-top: 10px; } .popover.left { margin-left: -10px; } .popover-title { margin: 0; padding: 8px 14px; font-size: 14px; font-weight: normal; line-height: 18px; background-color: #f7f7f7; border-bottom: 1px solid #ebebeb; -webkit-border-radius: 5px 5px 0 0; -moz-border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0; } .popover-title:empty { display: none; } .popover-content { padding: 9px 14px; } .popover .arrow, .popover .arrow:after { position: absolute; display: block; width: 0; height: 0; border-color: transparent; border-style: solid; } .popover .arrow { border-width: 11px; } .popover .arrow:after { border-width: 10px; content: ""; } .popover.top .arrow { left: 50%; margin-left: -11px; border-bottom-width: 0; border-top-color: #999; border-top-color: rgba(0,0,0,0.25); bottom: -11px; } .popover.top .arrow:after { bottom: 1px; margin-left: -10px; border-bottom-width: 0; border-top-color: #fff; } .popover.right .arrow { top: 50%; left: -11px; margin-top: -11px; border-left-width: 0; border-right-color: #999; border-right-color: rgba(0,0,0,0.25); } .popover.right .arrow:after { left: 1px; bottom: -10px; border-left-width: 0; border-right-color: #fff; } .popover.bottom .arrow { left: 50%; margin-left: -11px; border-top-width: 0; border-bottom-color: #999; border-bottom-color: rgba(0,0,0,0.25); top: -11px; } .popover.bottom .arrow:after { top: 1px; margin-left: -10px; border-top-width: 0; border-bottom-color: #fff; } .popover.left .arrow { top: 50%; right: -11px; margin-top: -11px; border-right-width: 0; border-left-color: #999; border-left-color: rgba(0,0,0,0.25); } .popover.left .arrow:after { right: 1px; border-right-width: 0; border-left-color: #fff; bottom: -10px; } .thumbnails { margin-left: -20px; list-style: none; *zoom: 1; } .thumbnails:before, .thumbnails:after { display: table; content: ""; line-height: 0; } .thumbnails:after { clear: both; } .row-fluid .thumbnails { margin-left: 0; } .thumbnails > li { float: left; margin-bottom: 18px; margin-left: 20px; } .thumbnail { display: block; padding: 4px; line-height: 18px; border: 1px solid #ddd; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.055); -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.055); box-shadow: 0 1px 3px rgba(0,0,0,0.055); -webkit-transition: all .2s ease-in-out; -moz-transition: all .2s ease-in-out; -o-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } a.thumbnail:hover, a.thumbnail:focus { border-color: #3071a9; -webkit-box-shadow: 0 1px 4px rgba(0,105,214,0.25); -moz-box-shadow: 0 1px 4px rgba(0,105,214,0.25); box-shadow: 0 1px 4px rgba(0,105,214,0.25); } .thumbnail > img { display: block; max-width: 100%; margin-left: auto; margin-right: auto; } .thumbnail .caption { padding: 9px; color: #555; } .media, .media-body { overflow: hidden; *overflow: visible; zoom: 1; } .media, .media .media { margin-top: 15px; } .media:first-child { margin-top: 0; } .media-object { display: block; } .media-heading { margin: 0 0 5px; } .media > .pull-left { margin-right: 10px; } .media > .pull-right { margin-left: 10px; } .media-list { margin-left: 0; list-style: none; } .label, .badge { display: inline-block; padding: 2px 4px; font-size: 10.998px; font-weight: bold; line-height: 14px; color: #fff; vertical-align: baseline; white-space: nowrap; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #999; } .label { -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .badge { padding-left: 9px; padding-right: 9px; -webkit-border-radius: 9px; -moz-border-radius: 9px; border-radius: 9px; } .label:empty, .badge:empty { display: none; } a.label:hover, a.label:focus, a.badge:hover, a.badge:focus { color: #fff; text-decoration: none; cursor: pointer; } .label-important, .badge-important { background-color: #a94442; } .label-important[href], .badge-important[href] { background-color: #843534; } .label-warning, .badge-warning { background-color: #f89406; } .label-warning[href], .badge-warning[href] { background-color: #c67605; } .label-success, .badge-success { background-color: #3c763d; } .label-success[href], .badge-success[href] { background-color: #2b542c; } .label-info, .badge-info { background-color: #31708f; } .label-info[href], .badge-info[href] { background-color: #245269; } .label-inverse, .badge-inverse { background-color: #333; } .label-inverse[href], .badge-inverse[href] { background-color: #1a1a1a; } .btn .label, .btn .badge { position: relative; top: -1px; } .btn-mini .label, .btn-mini .badge { top: 0; } @-webkit-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-moz-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-ms-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-o-keyframes progress-bar-stripes { from { background-position: 0 0; } to { background-position: 40px 0; } } @keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } .progress { overflow: hidden; height: 18px; margin-bottom: 18px; background-color: #f7f7f7; background-image: -moz-linear-gradient(top,#f5f5f5,#f9f9f9); background-image: -webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9)); background-image: -webkit-linear-gradient(top,#f5f5f5,#f9f9f9); background-image: -o-linear-gradient(top,#f5f5f5,#f9f9f9); background-image: linear-gradient(to bottom,#f5f5f5,#f9f9f9); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1); -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1); box-shadow: inset 0 1px 2px rgba(0,0,0,0.1); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .progress .bar { width: 0%; height: 100%; color: #fff; float: left; font-size: 12px; text-align: center; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #0e90d2; background-image: -moz-linear-gradient(top,#149bdf,#0480be); background-image: -webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be)); background-image: -webkit-linear-gradient(top,#149bdf,#0480be); background-image: -o-linear-gradient(top,#149bdf,#0480be); background-image: linear-gradient(to bottom,#149bdf,#0480be); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15); -moz-box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15); box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-transition: width .6s ease; -moz-transition: width .6s ease; -o-transition: width .6s ease; transition: width .6s ease; } .progress .bar + .bar { -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); } .progress-striped .bar { background-color: #149bdf; background-image: -webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,0.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,0.15)),color-stop(.75,rgba(255,255,255,0.15)),color-stop(.75,transparent),to(transparent)); background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); -webkit-background-size: 40px 40px; -moz-background-size: 40px 40px; -o-background-size: 40px 40px; background-size: 40px 40px; } .progress.active .bar { -webkit-animation: progress-bar-stripes 2s linear infinite; -moz-animation: progress-bar-stripes 2s linear infinite; -ms-animation: progress-bar-stripes 2s linear infinite; -o-animation: progress-bar-stripes 2s linear infinite; animation: progress-bar-stripes 2s linear infinite; } .progress-danger .bar, .progress .bar-danger { background-color: #dd514c; background-image: -moz-linear-gradient(top,#ee5f5b,#c43c35); background-image: -webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35)); background-image: -webkit-linear-gradient(top,#ee5f5b,#c43c35); background-image: -o-linear-gradient(top,#ee5f5b,#c43c35); background-image: linear-gradient(to bottom,#ee5f5b,#c43c35); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); } .progress-danger.progress-striped .bar, .progress-striped .bar-danger { background-color: #ee5f5b; background-image: -webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,0.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,0.15)),color-stop(.75,rgba(255,255,255,0.15)),color-stop(.75,transparent),to(transparent)); background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); } .progress-success .bar, .progress .bar-success { background-color: #5eb95e; background-image: -moz-linear-gradient(top,#62c462,#57a957); background-image: -webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957)); background-image: -webkit-linear-gradient(top,#62c462,#57a957); background-image: -o-linear-gradient(top,#62c462,#57a957); background-image: linear-gradient(to bottom,#62c462,#57a957); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); } .progress-success.progress-striped .bar, .progress-striped .bar-success { background-color: #62c462; background-image: -webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,0.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,0.15)),color-stop(.75,rgba(255,255,255,0.15)),color-stop(.75,transparent),to(transparent)); background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); } .progress-info .bar, .progress .bar-info { background-color: #4bb1cf; background-image: -moz-linear-gradient(top,#5bc0de,#339bb9); background-image: -webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9)); background-image: -webkit-linear-gradient(top,#5bc0de,#339bb9); background-image: -o-linear-gradient(top,#5bc0de,#339bb9); background-image: linear-gradient(to bottom,#5bc0de,#339bb9); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); } .progress-info.progress-striped .bar, .progress-striped .bar-info { background-color: #5bc0de; background-image: -webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,0.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,0.15)),color-stop(.75,rgba(255,255,255,0.15)),color-stop(.75,transparent),to(transparent)); background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); } .progress-warning .bar, .progress .bar-warning { background-color: #faa732; background-image: -moz-linear-gradient(top,#fbb450,#f89406); background-image: -webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406)); background-image: -webkit-linear-gradient(top,#fbb450,#f89406); background-image: -o-linear-gradient(top,#fbb450,#f89406); background-image: linear-gradient(to bottom,#fbb450,#f89406); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffab44f', endColorstr='#fff89406', GradientType=0); } .progress-warning.progress-striped .bar, .progress-striped .bar-warning { background-color: #fbb450; background-image: -webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,0.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,0.15)),color-stop(.75,rgba(255,255,255,0.15)),color-stop(.75,transparent),to(transparent)); background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: -o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); } .accordion { margin-bottom: 18px; } .accordion-group { margin-bottom: 2px; border: 1px solid #e5e5e5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .accordion-heading { border-bottom: 0; } .accordion-heading .accordion-toggle { display: block; padding: 8px 15px; } .accordion-toggle { cursor: pointer; } .accordion-inner { padding: 9px 15px; border-top: 1px solid #e5e5e5; } .carousel { position: relative; margin-bottom: 18px; line-height: 1; } .carousel-inner { overflow: hidden; width: 100%; position: relative; } .carousel-inner > .item { display: none; position: relative; -webkit-transition: .6s ease-in-out left; -moz-transition: .6s ease-in-out left; -o-transition: .6s ease-in-out left; transition: .6s ease-in-out left; } .carousel-inner > .item > img, .carousel-inner > .item > a > img { display: block; line-height: 1; } .carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev { display: block; } .carousel-inner > .active { left: 0; } .carousel-inner > .next, .carousel-inner > .prev { position: absolute; top: 0; width: 100%; } .carousel-inner > .next { left: 100%; } .carousel-inner > .prev { left: -100%; } .carousel-inner > .next.left, .carousel-inner > .prev.right { left: 0; } .carousel-inner > .active.left { left: -100%; } .carousel-inner > .active.right { left: 100%; } .carousel-control { position: absolute; top: 40%; left: 15px; width: 40px; height: 40px; margin-top: -20px; font-size: 60px; font-weight: 100; line-height: 30px; color: #fff; text-align: center; background: #222; border: 3px solid #fff; -webkit-border-radius: 23px; -moz-border-radius: 23px; border-radius: 23px; opacity: 0.5; filter: alpha(opacity=50); } .carousel-control.right { left: auto; right: 15px; } .carousel-control:hover, .carousel-control:focus { color: #fff; text-decoration: none; opacity: 0.9; filter: alpha(opacity=90); } .carousel-indicators { position: absolute; top: 15px; right: 15px; z-index: 5; margin: 0; list-style: none; } .carousel-indicators li { display: block; float: left; width: 10px; height: 10px; margin-left: 5px; text-indent: -999px; background-color: #ccc; background-color: rgba(255,255,255,0.25); border-radius: 5px; } .carousel-indicators .active { background-color: #fff; } .carousel-caption { position: absolute; left: 0; right: 0; bottom: 0; padding: 15px; background: #333; background: rgba(0,0,0,0.75); } .carousel-caption h4, .carousel-caption p { color: #fff; line-height: 18px; } .carousel-caption h4 { margin: 0 0 5px; } .carousel-caption p { margin-bottom: 0; } .hero-unit { padding: 60px; margin-bottom: 30px; font-size: 18px; font-weight: 200; line-height: 27px; color: inherit; background-color: #eee; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .hero-unit h1 { margin-bottom: 0; font-size: 60px; line-height: 1; color: inherit; letter-spacing: -1px; } .hero-unit li { line-height: 27px; } .pull-right { float: right; } .pull-left { float: left; } .hide { display: none; } .show { display: block; } .invisible { visibility: hidden; } .affix { position: fixed; } .hidden { display: none; visibility: hidden; } .visible-phone { display: none !important; } .visible-tablet { display: none !important; } .hidden-desktop { display: none !important; } .visible-desktop { display: inherit !important; } @media (min-width: 768px) and (max-width: 979px) { .hidden-desktop { display: inherit !important; } .visible-desktop { display: none !important; } .visible-tablet { display: inherit !important; } .hidden-tablet { display: none !important; } } @media (max-width: 767px) { .hidden-desktop { display: inherit !important; } .visible-desktop { display: none !important; } .visible-phone { display: inherit !important; } .hidden-phone { display: none !important; } } .visible-print { display: none !important; } @media print { .visible-print { display: inherit !important; } .hidden-print { display: none !important; } } @media (max-width: 767px) { body { padding-left: 20px; padding-right: 20px; } .navbar-fixed-top, .navbar-fixed-bottom, .navbar-static-top { margin-left: -20px; margin-right: -20px; } .container-fluid { padding: 0; } .dl-horizontal dt { float: none; clear: none; width: auto; text-align: left; } .dl-horizontal dd { margin-left: 0; } .container { width: auto; } .row-fluid { width: 100%; } .row, .thumbnails { margin-left: 0; } .thumbnails > li { float: none; margin-left: 0; } [class*="span"], .uneditable-input[class*="span"], .row-fluid [class*="span"] { float: none; display: block; width: 100%; margin-left: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .span12, .row-fluid .span12 { width: 100%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .row-fluid [class*="offset"]:first-child { margin-left: 0; } .input-large, .input-xlarge, .input-xxlarge, input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input { display: block; width: 100%; min-height: 28px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .input-prepend input, .input-append input, .input-prepend input[class*="span"], .input-append input[class*="span"] { display: inline-block; width: auto; } .controls-row [class*="span"] + [class*="span"] { margin-left: 0; } } @media (max-width: 480px) { .nav-collapse { -webkit-transform: translate3d(0,0,0); } .page-header h1 small { display: block; line-height: 18px; } input[type="checkbox"], input[type="radio"] { border: 1px solid #ccc; } .form-horizontal .control-label { float: none; width: auto; padding-top: 0; text-align: left; } .form-horizontal .controls { margin-left: 0; } .form-horizontal .control-list { padding-top: 0; } .form-horizontal .form-actions { padding-left: 10px; padding-right: 10px; } .media .pull-left, .media .pull-right { float: none; display: block; margin-bottom: 10px; } .media-object { margin-right: 0; margin-left: 0; } .modal-header .close { padding: 10px; margin: -10px; } .carousel-caption { position: static; } } @media (min-width: 768px) and (max-width: 979px) { .row { margin-left: -20px; *zoom: 1; } .row:before, .row:after { display: table; content: ""; line-height: 0; } .row:after { clear: both; } [class*="span"] { float: left; min-height: 1px; margin-left: 20px; } .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 724px; } .span12 { width: 724px; } .span11 { width: 662px; } .span10 { width: 600px; } .span9 { width: 538px; } .span8 { width: 476px; } .span7 { width: 414px; } .span6 { width: 352px; } .span5 { width: 290px; } .span4 { width: 228px; } .span3 { width: 166px; } .span2 { width: 104px; } .span1 { width: 42px; } .offset12 { margin-left: 764px; } .offset11 { margin-left: 702px; } .offset10 { margin-left: 640px; } .offset9 { margin-left: 578px; } .offset8 { margin-left: 516px; } .offset7 { margin-left: 454px; } .offset6 { margin-left: 392px; } .offset5 { margin-left: 330px; } .offset4 { margin-left: 268px; } .offset3 { margin-left: 206px; } .offset2 { margin-left: 144px; } .offset1 { margin-left: 82px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; content: ""; line-height: 0; } .row-fluid:after { clear: both; } .row-fluid [class*="span"] { display: block; width: 100%; min-height: 28px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; margin-left: 2.7624309392265%; *margin-left: 2.7092394498648%; } .row-fluid [class*="span"]:first-child { margin-left: 0; } .row-fluid .controls-row [class*="span"] + [class*="span"] { margin-left: 2.7624309392265%; } .row-fluid .span12 { width: 100%; *width: 99.946808510638%; } .row-fluid .span11 { width: 91.489361702128%; *width: 91.436170212766%; } .row-fluid .span10 { width: 82.978723404255%; *width: 82.925531914894%; } .row-fluid .span9 { width: 74.468085106383%; *width: 74.414893617021%; } .row-fluid .span8 { width: 65.957446808511%; *width: 65.904255319149%; } .row-fluid .span7 { width: 57.446808510638%; *width: 57.393617021277%; } .row-fluid .span6 { width: 48.936170212766%; *width: 48.882978723404%; } .row-fluid .span5 { width: 40.425531914894%; *width: 40.372340425532%; } .row-fluid .span4 { width: 31.914893617021%; *width: 31.86170212766%; } .row-fluid .span3 { width: 23.404255319149%; *width: 23.351063829787%; } .row-fluid .span2 { width: 14.893617021277%; *width: 14.840425531915%; } .row-fluid .span1 { width: 6.3829787234043%; *width: 6.3297872340426%; } .row-fluid .offset12 { margin-left: 105.52486187845%; *margin-left: 105.41847889973%; } .row-fluid .offset12:first-child { margin-left: 102.76243093923%; *margin-left: 102.6560479605%; } .row-fluid .offset11 { margin-left: 95.744680851064%; *margin-left: 95.63829787234%; } .row-fluid .offset11:first-child { margin-left: 93.617021276596%; *margin-left: 93.510638297872%; } .row-fluid .offset10 { margin-left: 87.234042553191%; *margin-left: 87.127659574468%; } .row-fluid .offset10:first-child { margin-left: 85.106382978723%; *margin-left: 85%; } .row-fluid .offset9 { margin-left: 78.723404255319%; *margin-left: 78.617021276596%; } .row-fluid .offset9:first-child { margin-left: 76.595744680851%; *margin-left: 76.489361702128%; } .row-fluid .offset8 { margin-left: 70.212765957447%; *margin-left: 70.106382978723%; } .row-fluid .offset8:first-child { margin-left: 68.085106382979%; *margin-left: 67.978723404255%; } .row-fluid .offset7 { margin-left: 61.702127659574%; *margin-left: 61.595744680851%; } .row-fluid .offset7:first-child { margin-left: 59.574468085106%; *margin-left: 59.468085106383%; } .row-fluid .offset6 { margin-left: 53.191489361702%; *margin-left: 53.085106382979%; } .row-fluid .offset6:first-child { margin-left: 51.063829787234%; *margin-left: 50.957446808511%; } .row-fluid .offset5 { margin-left: 44.68085106383%; *margin-left: 44.574468085106%; } .row-fluid .offset5:first-child { margin-left: 42.553191489362%; *margin-left: 42.446808510638%; } .row-fluid .offset4 { margin-left: 36.170212765957%; *margin-left: 36.063829787234%; } .row-fluid .offset4:first-child { margin-left: 34.042553191489%; *margin-left: 33.936170212766%; } .row-fluid .offset3 { margin-left: 27.659574468085%; *margin-left: 27.553191489362%; } .row-fluid .offset3:first-child { margin-left: 25.531914893617%; *margin-left: 25.425531914894%; } .row-fluid .offset2 { margin-left: 19.148936170213%; *margin-left: 19.042553191489%; } .row-fluid .offset2:first-child { margin-left: 17.021276595745%; *margin-left: 16.914893617021%; } .row-fluid .offset1 { margin-left: 10.63829787234%; *margin-left: 10.531914893617%; } .row-fluid .offset1:first-child { margin-left: 8.5106382978723%; *margin-left: 8.4042553191489%; } input, textarea, .uneditable-input { margin-left: 0; } .controls-row [class*="span"] + [class*="span"] { margin-left: 20px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 710px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 648px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 586px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 524px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 462px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 400px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 338px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 276px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 214px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 152px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 90px; } input.span1, textarea.span1, .uneditable-input.span1 { width: 28px; } } @media (min-width: 1200px) { .row { margin-left: -30px; *zoom: 1; } .row:before, .row:after { display: table; content: ""; line-height: 0; } .row:after { clear: both; } [class*="span"] { float: left; min-height: 1px; margin-left: 30px; } .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 1170px; } .span12 { width: 1170px; } .span11 { width: 1070px; } .span10 { width: 970px; } .span9 { width: 870px; } .span8 { width: 770px; } .span7 { width: 670px; } .span6 { width: 570px; } .span5 { width: 470px; } .span4 { width: 370px; } .span3 { width: 270px; } .span2 { width: 170px; } .span1 { width: 70px; } .offset12 { margin-left: 1230px; } .offset11 { margin-left: 1130px; } .offset10 { margin-left: 1030px; } .offset9 { margin-left: 930px; } .offset8 { margin-left: 830px; } .offset7 { margin-left: 730px; } .offset6 { margin-left: 630px; } .offset5 { margin-left: 530px; } .offset4 { margin-left: 430px; } .offset3 { margin-left: 330px; } .offset2 { margin-left: 230px; } .offset1 { margin-left: 130px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; content: ""; line-height: 0; } .row-fluid:after { clear: both; } .row-fluid [class*="span"] { display: block; width: 100%; min-height: 28px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; margin-left: 2.5641025641026%; *margin-left: 2.5109110747409%; } .row-fluid [class*="span"]:first-child { margin-left: 0; } .row-fluid .controls-row [class*="span"] + [class*="span"] { margin-left: 2.5641025641026%; } .row-fluid .span12 { width: 100%; *width: 99.946808510638%; } .row-fluid .span11 { width: 91.436464088398%; *width: 91.383272599036%; } .row-fluid .span10 { width: 82.872928176796%; *width: 82.819736687434%; } .row-fluid .span9 { width: 74.309392265193%; *width: 74.256200775832%; } .row-fluid .span8 { width: 65.745856353591%; *width: 65.692664864229%; } .row-fluid .span7 { width: 57.182320441989%; *width: 57.129128952627%; } .row-fluid .span6 { width: 48.618784530387%; *width: 48.565593041025%; } .row-fluid .span5 { width: 40.055248618785%; *width: 40.002057129423%; } .row-fluid .span4 { width: 31.491712707182%; *width: 31.438521217821%; } .row-fluid .span3 { width: 22.92817679558%; *width: 22.874985306218%; } .row-fluid .span2 { width: 14.364640883978%; *width: 14.311449394616%; } .row-fluid .span1 { width: 5.8011049723757%; *width: 5.747913483014%; } .row-fluid .offset12 { margin-left: 105.12820512821%; *margin-left: 105.02182214948%; } .row-fluid .offset12:first-child { margin-left: 102.5641025641%; *margin-left: 102.45771958538%; } .row-fluid .offset11 { margin-left: 96.961325966851%; *margin-left: 96.854942988127%; } .row-fluid .offset11:first-child { margin-left: 94.198895027624%; *margin-left: 94.092512048901%; } .row-fluid .offset10 { margin-left: 88.397790055249%; *margin-left: 88.291407076525%; } .row-fluid .offset10:first-child { margin-left: 85.635359116022%; *margin-left: 85.528976137299%; } .row-fluid .offset9 { margin-left: 79.834254143646%; *margin-left: 79.727871164923%; } .row-fluid .offset9:first-child { margin-left: 77.07182320442%; *margin-left: 76.965440225696%; } .row-fluid .offset8 { margin-left: 71.270718232044%; *margin-left: 71.164335253321%; } .row-fluid .offset8:first-child { margin-left: 68.508287292818%; *margin-left: 68.401904314094%; } .row-fluid .offset7 { margin-left: 62.707182320442%; *margin-left: 62.600799341719%; } .row-fluid .offset7:first-child { margin-left: 59.944751381215%; *margin-left: 59.838368402492%; } .row-fluid .offset6 { margin-left: 54.14364640884%; *margin-left: 54.037263430116%; } .row-fluid .offset6:first-child { margin-left: 51.381215469613%; *margin-left: 51.27483249089%; } .row-fluid .offset5 { margin-left: 45.580110497238%; *margin-left: 45.473727518514%; } .row-fluid .offset5:first-child { margin-left: 42.817679558011%; *margin-left: 42.711296579288%; } .row-fluid .offset4 { margin-left: 37.016574585635%; *margin-left: 36.910191606912%; } .row-fluid .offset4:first-child { margin-left: 34.254143646409%; *margin-left: 34.147760667685%; } .row-fluid .offset3 { margin-left: 28.453038674033%; *margin-left: 28.34665569531%; } .row-fluid .offset3:first-child { margin-left: 25.690607734807%; *margin-left: 25.584224756083%; } .row-fluid .offset2 { margin-left: 19.889502762431%; *margin-left: 19.783119783708%; } .row-fluid .offset2:first-child { margin-left: 17.127071823204%; *margin-left: 17.020688844481%; } .row-fluid .offset1 { margin-left: 11.325966850829%; *margin-left: 11.219583872105%; } .row-fluid .offset1:first-child { margin-left: 8.5635359116022%; *margin-left: 8.4571529328788%; } input, textarea, .uneditable-input { margin-left: 0; } .controls-row [class*="span"] + [class*="span"] { margin-left: 30px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 1156px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 1056px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 956px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 856px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 756px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 656px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 556px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 456px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 356px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 256px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 156px; } input.span1, textarea.span1, .uneditable-input.span1 { width: 56px; } .thumbnails { margin-left: -30px; } .thumbnails > li { margin-left: 30px; } .row-fluid .thumbnails { margin-left: 0; } } @media (max-width: 767px) { body { padding-top: 0; } .navbar-fixed-top, .navbar-fixed-bottom { position: static; } .navbar-fixed-top { margin-bottom: 18px; } .navbar-fixed-bottom { margin-top: 18px; } .navbar-fixed-top .navbar-inner, .navbar-fixed-bottom .navbar-inner { padding: 5px; } .navbar .container { width: auto; padding: 0; } .navbar .brand { padding-left: 10px; padding-right: 10px; margin: 0 0 0 -5px; } .nav-collapse { clear: both; } .nav-collapse .nav { float: none; margin: 0 0 9px; } .nav-collapse .nav > li { float: none; } .nav-collapse .nav > li > a { margin-bottom: 2px; } .nav-collapse .nav > .divider-vertical { display: none; } .nav-collapse .nav .nav-header { color: #555; text-shadow: none; } .nav-collapse .nav > li > a, .nav-collapse .dropdown-menu a { padding: 9px 15px; font-weight: bold; color: #555; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .nav-collapse .btn { padding: 4px 10px 4px; font-weight: normal; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .nav-collapse .dropdown-menu li + li a { margin-bottom: 2px; } .nav-collapse .nav > li > a:hover, .nav-collapse .nav > li > a:focus, .nav-collapse .dropdown-menu a:hover, .nav-collapse .dropdown-menu a:focus { background-color: #f2f2f2; } .navbar-inverse .nav-collapse .nav > li > a, .navbar-inverse .nav-collapse .dropdown-menu a { color: #d9d9d9; } .navbar-inverse .nav-collapse .nav > li > a:hover, .navbar-inverse .nav-collapse .nav > li > a:focus, .navbar-inverse .nav-collapse .dropdown-menu a:hover, .navbar-inverse .nav-collapse .dropdown-menu a:focus { background-color: #10223e; } .nav-collapse.in .btn-group { margin-top: 5px; padding: 0; } .nav-collapse .dropdown-menu { position: static; top: auto; left: auto; float: none; display: none; max-width: none; margin: 0 15px; padding: 0; background-color: transparent; border: none; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .nav-collapse .open > .dropdown-menu { display: block; } .nav-collapse .dropdown-menu:before, .nav-collapse .dropdown-menu:after { display: none; } .nav-collapse .dropdown-menu .divider { display: none; } .nav-collapse .nav > li > .dropdown-menu:before, .nav-collapse .nav > li > .dropdown-menu:after { display: none; } .nav-collapse .navbar-form, .nav-collapse .navbar-search { float: none; padding: 9px 15px; margin: 9px 0; border-top: 1px solid #f2f2f2; border-bottom: 1px solid #f2f2f2; -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); } .navbar-inverse .nav-collapse .navbar-form, .navbar-inverse .nav-collapse .navbar-search { border-top-color: #10223e; border-bottom-color: #10223e; } .navbar .nav-collapse .nav.pull-right { float: none; margin-left: 0; } .nav-collapse, .nav-collapse.collapse { overflow: hidden; height: 0; } .navbar .btn-navbar { display: block; } .navbar-static .navbar-inner { padding-left: 10px; padding-right: 10px; } } @media (min-width: 768px) { .nav-collapse.collapse { height: auto !important; overflow: visible !important; } } .small { font-size: 11px; } iframe, svg { max-width: 100%; } .nowrap { white-space: nowrap; } .center, .table td.center, .table th.center { text-align: center; } a.disabled, a.disabled:hover { color: #999999; background-color: transparent; cursor: default; text-decoration: none; } .hero-unit { text-align: center; } .hero-unit .lead { margin-bottom: 18px; font-size: 20px; font-weight: 200; line-height: 27px; } .btn .caret { margin-bottom: 7px; } .btn.btn-micro .caret { margin: 5px 0; } .blog-row-rule, .blog-item-rule { border: 0; } body.modal { padding-top: 0; } .row-even, .row-odd { padding: 5px; width: 99%; border-bottom: 1px solid #ddd; } .row-odd { background-color: transparent; } .row-even { background-color: #f9f9f9; } .blog-row-rule, .blog-item-rule { border: 0; } .row-fluid .row-reveal { visibility: hidden; } .row-fluid:hover .row-reveal { visibility: visible; } .btn-wide { width: 80%; } .nav-list > li.offset > a { padding-left: 30px; font-size: 12px; } .blog-row-rule, .blog-item-rule { border: 0; } .row-fluid .offset1 { margin-left: 8.382978723%; } .row-fluid .offset2 { margin-left: 16.89361702%; } .row-fluid .offset3 { margin-left: 25.404255317%; } .row-fluid .offset4 { margin-left: 33.914893614%; } .row-fluid .offset5 { margin-left: 42.425531911%; } .row-fluid .offset6 { margin-left: 50.93617020799999%; } .row-fluid .offset7 { margin-left: 59.446808505%; } .row-fluid .offset8 { margin-left: 67.95744680199999%; } .row-fluid .offset9 { margin-left: 76.468085099%; } .row-fluid .offset10 { margin-left: 84.97872339599999%; } .row-fluid .offset11 { margin-left: 91.489361693%; } .navbar .nav > li > a.btn { padding: 4px 10px; line-height: 18px; } .nav-tabs.nav-dark { border-bottom: 1px solid #333; text-shadow: 1px 1px 1px #000; } .nav-tabs.nav-dark > li > a { color: #F8F8F8; } .nav-tabs.nav-dark > li > a:hover { border-color: #333 #333 #111; background-color: #777777; } .nav-tabs.nav-dark > .active > a, .nav-tabs.nav-dark > .active > a:hover { color: #ffffff; background-color: #555555; border: 1px solid #222; border-bottom-color: transparent; } .thumbnail.pull-left { margin: 0 10px 10px 0; } .thumbnail.pull-right { margin: 0 0 10px 10px; } .width-10 { width: 10px; } .width-20 { width: 20px; } .width-30 { width: 30px; } .width-40 { width: 40px; } .width-50 { width: 50px; } .width-60 { width: 60px; } .width-70 { width: 70px; } .width-80 { width: 80px; } .width-90 { width: 90px; } .width-100 { width: 100px; } .height-10 { height: 10px; } .height-20 { height: 20px; } .height-30 { height: 30px; } .height-40 { height: 40px; } .height-50 { height: 50px; } .height-60 { height: 60px; } .height-70 { height: 70px; } .height-80 { height: 80px; } .height-90 { height: 90px; } .height-100 { height: 100px; } hr.hr-condensed { margin: 10px 0; } .list-striped, .row-striped { list-style: none; line-height: 18px; text-align: left; vertical-align: middle; border-top: 1px solid #ddd; margin-left: 0; } .list-striped li, .list-striped dd, .row-striped .row, .row-striped .row-fluid { border-bottom: 1px solid #ddd; padding: 8px; } .list-striped li:nth-child(odd), .list-striped dd:nth-child(odd), .row-striped .row:nth-child(odd), .row-striped .row-fluid:nth-child(odd) { background-color: #f9f9f9; } .list-striped li:hover, .list-striped dd:hover, .row-striped .row:hover, .row-striped .row-fluid:hover { background-color: #f5f5f5; } .row-striped .row-fluid { width: 97%; } .row-striped .row-fluid [class*="span"] { min-height: 10px; } .row-striped .row-fluid [class*="span"] { margin-left: 8px; } .row-striped .row-fluid [class*="span"]:first-child { margin-left: 0; } .list-condensed li { padding: 4px 5px; } .row-condensed .row, .row-condensed .row-fluid { padding: 4px 5px; } .list-bordered, .row-bordered { list-style: none; line-height: 18px; text-align: left; vertical-align: middle; margin-left: 0; border: 1px solid #ddd; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .radio.btn-group input[type=radio] { display: none; } .radio.btn-group > label:first-of-type { margin-left: 0; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-topleft: 4px; } fieldset.radio.btn-group { padding-left: 0; } .iframe-bordered { border: 1px solid #ddd; } .tab-content { overflow: visible; } .tabs-left .tab-content { overflow: auto; } .nav-tabs > li > span { display: block; margin-right: 2px; padding-right: 12px; padding-left: 12px; padding-top: 8px; padding-bottom: 8px; line-height: 18px; border: 1px solid transparent; -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .btn-micro { padding: 1px 4px; font-size: 10px; line-height: 8px; } .btn-group > .btn-micro { font-size: 10px; } .tip-wrap { max-width: 200px; padding: 3px 8px; color: #fff; text-align: center; text-decoration: none; background-color: #000; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; z-index: 100; } .page-header { margin: 2px 0px 10px 0px; padding-bottom: 5px; } .input-prepend .chzn-container-single .chzn-single, .input-append .chzn-container-single .chzn-single { border-color: #ccc; height: 26px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; } .input-prepend .chzn-container-single .chzn-drop, .input-append .chzn-container-single .chzn-drop { border-color: #ccc; } .input-prepend > .add-on, .input-append > .add-on { vertical-align: top; } .input-prepend .chzn-container-single .chzn-single { -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-prepend .chzn-container-single .chzn-single-with-drop { -webkit-border-radius: 0 3px 0 0; -moz-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0; } .input-append .chzn-container-single .chzn-single { -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-append .chzn-container-single .chzn-single-with-drop { -webkit-border-radius: 3px 0 0 0; -moz-border-radius: 3px 0 0 0; border-radius: 3px 0 0 0; } .input-prepend.input-append .chzn-container-single .chzn-single, .input-prepend.input-append .chzn-container-single .chzn-single-with-drop { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .element-invisible { position: absolute; padding: 0; margin: 0; border: 0; height: 1px; width: 1px; overflow: hidden; } .form-vertical .control-label { float: none; width: auto; padding-right: 0; padding-top: 0; text-align: left; } .form-vertical .controls { margin-left: 0; } .width-auto { width: auto; } .btn-group .chzn-results { white-space: normal; } .accordion-body.in:hover { overflow: visible; } .invalid { color: #9d261d; font-weight: bold; } input.invalid { border: 1px solid #9d261d; } select.chzn-done.invalid + .chzn-container.chzn-container-single > a.chzn-single, select.chzn-done.invalid + .chzn-container.chzn-container-multi > ul.chzn-choices { border-color: #9d261d; color: #9d261d; } .tooltip { max-width: 400px; } .tooltip-inner { max-width: none; text-align: left; text-shadow: none; } th .tooltip-inner { font-weight: normal; } .tooltip.hasimage { opacity: 1; } .tip-text { text-align: left; } .btn-group > .btn + .dropdown-backdrop + .btn { margin-left: -1px; } .btn-group > .btn + .dropdown-backdrop + .dropdown-toggle { padding-left: 8px; padding-right: 8px; -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); *padding-top: 5px; *padding-bottom: 5px; } .btn-group > .btn-mini + .dropdown-backdrop + .dropdown-toggle { padding-left: 5px; padding-right: 5px; *padding-top: 2px; *padding-bottom: 2px; } .btn-group > .btn-small + .dropdown-backdrop + .dropdown-toggle { *padding-top: 5px; *padding-bottom: 4px; } .btn-group > .btn-large + .dropdown-backdrop + .dropdown-toggle { padding-left: 12px; padding-right: 12px; *padding-top: 7px; *padding-bottom: 7px; } .dropdown-menu { text-align: left; } div.modal { position: fixed; top: 5%; left: 50%; z-index: 1050; width: 80%; margin-left: -40%; background-color: #fff; border: 1px solid #999; border: 1px solid rgba(0,0,0,0.3); *border: 1px solid #999; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 3px 7px rgba(0,0,0,0.3); -moz-box-shadow: 0 3px 7px rgba(0,0,0,0.3); box-shadow: 0 3px 7px rgba(0,0,0,0.3); -webkit-background-clip: padding-box; -moz-background-clip: padding-box; background-clip: padding-box; outline: none; } div.modal.fade { -webkit-transition: opacity .3s linear, top .3s ease-out; -moz-transition: opacity .3s linear, top .3s ease-out; -o-transition: opacity .3s linear, top .3s ease-out; transition: opacity .3s linear, top .3s ease-out; top: -25%; } div.modal.fade.in { top: 5%; } .modal-batch { overflow-y: visible; } @media (max-width: 767px) { div.modal { position: fixed; top: 20px; left: 20px; right: 20px; width: auto; margin: 0; } div.modal.fade { top: -100px; } div.modal.fade.in { top: 20px; } } @media (max-width: 480px) { div.modal { top: 10px; left: 10px; right: 10px; } } @font-face { font-family: 'IcoMoon'; src: url('../../../../media/jui/fonts/IcoMoon.eot'); src: url('../../../../media/jui/fonts/IcoMoon.eot?#iefix') format('embedded-opentype'), url('../../../../media/jui/fonts/IcoMoon.woff') format('woff'), url('../../../../media/jui/fonts/IcoMoon.ttf') format('truetype'), url('../../../../media/jui/fonts/IcoMoon.svg#IcoMoon') format('svg'); font-weight: normal; font-style: normal; } [data-icon]:before { font-family: 'IcoMoon'; content: attr(data-icon); speak: none; } [class^="icon-"], [class*=" icon-"] { display: inline-block; width: 14px; height: 14px; margin-right: .25em; line-height: 14px; } [class^="icon-"]:before, [class*=" icon-"]:before { font-family: 'IcoMoon'; font-style: normal; speak: none; } [class^="icon-"].disabled, [class*=" icon-"].disabled { font-weight: normal; } .icon-joomla:before { content: "\e200"; } .icon-chevron-up:before, .icon-uparrow:before, .icon-arrow-up:before { content: "\e005"; } .icon-chevron-right:before, .icon-rightarrow:before, .icon-arrow-right:before { content: "\e006"; } .icon-chevron-down:before, .icon-downarrow:before, .icon-arrow-down:before { content: "\e007"; } .icon-chevron-left:before, .icon-leftarrow:before, .icon-arrow-left:before { content: "\e008"; } .icon-arrow-first:before { content: "\e003"; } .icon-arrow-last:before { content: "\e004"; } .icon-arrow-up-2:before { content: "\e009"; } .icon-arrow-right-2:before { content: "\e00a"; } .icon-arrow-down-2:before { content: "\e00b"; } .icon-arrow-left-2:before { content: "\e00c"; } .icon-arrow-up-3:before { content: "\e00f"; } .icon-arrow-right-3:before { content: "\e010"; } .icon-arrow-down-3:before { content: "\e011"; } .icon-arrow-left-3:before { content: "\e012"; } .icon-menu-2:before { content: "\e00e"; } .icon-arrow-up-4:before { content: "\e201"; } .icon-arrow-right-4:before { content: "\e202"; } .icon-arrow-down-4:before { content: "\e203"; } .icon-arrow-left-4:before { content: "\e204"; } .icon-share:before, .icon-redo:before { content: "\27"; } .icon-undo:before { content: "\28"; } .icon-forward-2:before { content: "\e205"; } .icon-backward-2:before, .icon-reply:before { content: "\e206"; } .icon-unblock:before, .icon-refresh:before, .icon-redo-2:before { content: "\6c"; } .icon-undo-2:before { content: "\e207"; } .icon-move:before { content: "\7a"; } .icon-expand:before { content: "\66"; } .icon-contract:before { content: "\67"; } .icon-expand-2:before { content: "\68"; } .icon-contract-2:before { content: "\69"; } .icon-play:before { content: "\e208"; } .icon-pause:before { content: "\e209"; } .icon-stop:before { content: "\e210"; } .icon-previous:before, .icon-backward:before { content: "\7c"; } .icon-next:before, .icon-forward:before { content: "\7b"; } .icon-first:before { content: "\7d"; } .icon-last:before { content: "\e000"; } .icon-play-circle:before { content: "\e00d"; } .icon-pause-circle:before { content: "\e211"; } .icon-stop-circle:before { content: "\e212"; } .icon-backward-circle:before { content: "\e213"; } .icon-forward-circle:before { content: "\e214"; } .icon-loop:before { content: "\e001"; } .icon-shuffle:before { content: "\e002"; } .icon-search:before { content: "\53"; } .icon-zoom-in:before { content: "\64"; } .icon-zoom-out:before { content: "\65"; } .icon-apply:before, .icon-edit:before, .icon-pencil:before { content: "\2b"; } .icon-pencil-2:before { content: "\2c"; } .icon-brush:before { content: "\3b"; } .icon-save-new:before, .icon-plus-2:before { content: "\5d"; } .icon-minus-sign:before, .icon-minus-2:before { content: "\5e"; } .icon-delete:before, .icon-remove:before, .icon-cancel-2:before { content: "\49"; } .icon-publish:before, .icon-save:before, .icon-ok:before, .icon-checkmark:before { content: "\47"; } .icon-new:before, .icon-plus:before { content: "\2a"; } .icon-plus-circle:before { content: "\e215"; } .icon-minus:before, .icon-not-ok:before { content: "\4b"; } .icon-ban-circle:before, .icon-minus-circle:before { content: "\e216"; } .icon-unpublish:before, .icon-cancel:before { content: "\4a"; } .icon-cancel-circle:before { content: "\e217"; } .icon-checkmark-2:before { content: "\e218"; } .icon-checkmark-circle:before { content: "\e219"; } .icon-info:before { content: "\e220"; } .icon-info-2:before, .icon-info-circle:before { content: "\e221"; } .icon-question:before, .icon-question-sign:before, .icon-help:before { content: "\45"; } .icon-question-2:before, .icon-question-circle:before { content: "\e222"; } .icon-notification:before { content: "\e223"; } .icon-notification-2:before, .icon-notification-circle:before { content: "\e224"; } .icon-pending:before, .icon-warning:before { content: "\48"; } .icon-warning-2:before, .icon-warning-circle:before { content: "\e225"; } .icon-checkbox-unchecked:before { content: "\3d"; } .icon-checkin:before, .icon-checkbox:before, .icon-checkbox-checked:before { content: "\3e"; } .icon-checkbox-partial:before { content: "\3f"; } .icon-square:before { content: "\e226"; } .icon-radio-unchecked:before { content: "\e227"; } .icon-radio-checked:before, .icon-generic:before { content: "\e228"; } .icon-circle:before { content: "\e229"; } .icon-signup:before { content: "\e230"; } .icon-grid:before, .icon-grid-view:before { content: "\58"; } .icon-grid-2:before, .icon-grid-view-2:before { content: "\59"; } .icon-menu:before { content: "\5a"; } .icon-list:before, .icon-list-view:before { content: "\31"; } .icon-list-2:before { content: "\e231"; } .icon-menu-3:before { content: "\e232"; } .icon-folder-open:before, .icon-folder:before { content: "\2d"; } .icon-folder-close:before, .icon-folder-2:before { content: "\2e"; } .icon-folder-plus:before { content: "\e234"; } .icon-folder-minus:before { content: "\e235"; } .icon-folder-3:before { content: "\e236"; } .icon-folder-plus-2:before { content: "\e237"; } .icon-folder-remove:before { content: "\e238"; } .icon-file:before { content: "\e016"; } .icon-file-2:before { content: "\e239"; } .icon-file-add:before, .icon-file-plus:before { content: "\29"; } .icon-file-minus:before { content: "\e017"; } .icon-file-check:before { content: "\e240"; } .icon-file-remove:before { content: "\e241"; } .icon-save-copy:before, .icon-copy:before { content: "\e018"; } .icon-stack:before { content: "\e242"; } .icon-tree:before { content: "\e243"; } .icon-tree-2:before { content: "\e244"; } .icon-paragraph-left:before { content: "\e246"; } .icon-paragraph-center:before { content: "\e247"; } .icon-paragraph-right:before { content: "\e248"; } .icon-paragraph-justify:before { content: "\e249"; } .icon-screen:before { content: "\e01c"; } .icon-tablet:before { content: "\e01d"; } .icon-mobile:before { content: "\e01e"; } .icon-box-add:before { content: "\51"; } .icon-box-remove:before { content: "\52"; } .icon-download:before { content: "\e021"; } .icon-upload:before { content: "\e022"; } .icon-home:before { content: "\21"; } .icon-home-2:before { content: "\e250"; } .icon-out-2:before, .icon-new-tab:before { content: "\e024"; } .icon-out-3:before, .icon-new-tab-2:before { content: "\e251"; } .icon-link:before { content: "\e252"; } .icon-picture:before, .icon-image:before { content: "\2f"; } .icon-pictures:before, .icon-images:before { content: "\30"; } .icon-palette:before, .icon-color-palette:before { content: "\e014"; } .icon-camera:before { content: "\55"; } .icon-camera-2:before, .icon-video:before { content: "\e015"; } .icon-play-2:before, .icon-video-2:before, .icon-youtube:before { content: "\56"; } .icon-music:before { content: "\57"; } .icon-user:before { content: "\22"; } .icon-users:before { content: "\e01f"; } .icon-vcard:before { content: "\6d"; } .icon-address:before { content: "\70"; } .icon-share-alt:before, .icon-out:before { content: "\26"; } .icon-enter:before { content: "\e257"; } .icon-exit:before { content: "\e258"; } .icon-comment:before, .icon-comments:before { content: "\24"; } .icon-comments-2:before { content: "\25"; } .icon-quote:before, .icon-quotes-left:before { content: "\60"; } .icon-quote-2:before, .icon-quotes-right:before { content: "\61"; } .icon-quote-3:before, .icon-bubble-quote:before { content: "\e259"; } .icon-phone:before { content: "\e260"; } .icon-phone-2:before { content: "\e261"; } .icon-envelope:before, .icon-mail:before { content: "\4d"; } .icon-envelope-opened:before, .icon-mail-2:before { content: "\4e"; } .icon-unarchive:before, .icon-drawer:before { content: "\4f"; } .icon-archive:before, .icon-drawer-2:before { content: "\50"; } .icon-briefcase:before { content: "\e020"; } .icon-tag:before { content: "\e262"; } .icon-tag-2:before { content: "\e263"; } .icon-tags:before { content: "\e264"; } .icon-tags-2:before { content: "\e265"; } .icon-options:before, .icon-cog:before { content: "\38"; } .icon-cogs:before { content: "\37"; } .icon-screwdriver:before, .icon-tools:before { content: "\36"; } .icon-wrench:before { content: "\3a"; } .icon-equalizer:before { content: "\39"; } .icon-dashboard:before { content: "\78"; } .icon-switch:before { content: "\e266"; } .icon-filter:before { content: "\54"; } .icon-purge:before, .icon-trash:before { content: "\4c"; } .icon-checkedout:before, .icon-lock:before, .icon-locked:before { content: "\23"; } .icon-unlock:before { content: "\e267"; } .icon-key:before { content: "\5f"; } .icon-support:before { content: "\46"; } .icon-database:before { content: "\62"; } .icon-scissors:before { content: "\e268"; } .icon-health:before { content: "\6a"; } .icon-wand:before { content: "\6b"; } .icon-eye-open:before, .icon-eye:before { content: "\3c"; } .icon-eye-close:before, .icon-eye-blocked:before, .icon-eye-2:before { content: "\e269"; } .icon-clock:before { content: "\6e"; } .icon-compass:before { content: "\6f"; } .icon-broadcast:before, .icon-connection:before, .icon-wifi:before { content: "\e01b"; } .icon-book:before { content: "\e271"; } .icon-lightning:before, .icon-flash:before { content: "\79"; } .icon-print:before, .icon-printer:before { content: "\e013"; } .icon-feed:before { content: "\71"; } .icon-calendar:before { content: "\43"; } .icon-calendar-2:before { content: "\44"; } .icon-calendar-3:before { content: "\e273"; } .icon-pie:before { content: "\77"; } .icon-bars:before { content: "\76"; } .icon-chart:before { content: "\75"; } .icon-power-cord:before { content: "\32"; } .icon-cube:before { content: "\33"; } .icon-puzzle:before { content: "\34"; } .icon-attachment:before, .icon-paperclip:before, .icon-flag-2:before { content: "\72"; } .icon-lamp:before { content: "\74"; } .icon-pin:before, .icon-pushpin:before { content: "\73"; } .icon-location:before { content: "\63"; } .icon-shield:before { content: "\e274"; } .icon-flag:before { content: "\35"; } .icon-flag-3:before { content: "\e275"; } .icon-bookmark:before { content: "\e023"; } .icon-bookmark-2:before { content: "\e276"; } .icon-heart:before { content: "\e277"; } .icon-heart-2:before { content: "\e278"; } .icon-thumbs-up:before { content: "\5b"; } .icon-thumbs-down:before { content: "\5c"; } .icon-unfeatured:before, .icon-asterisk:before, .icon-star-empty:before { content: "\40"; } .icon-star-2:before { content: "\41"; } .icon-featured:before, .icon-default:before, .icon-star:before { content: "\42"; } .icon-smiley:before, .icon-smiley-happy:before { content: "\e279"; } .icon-smiley-2:before, .icon-smiley-happy-2:before { content: "\e280"; } .icon-smiley-sad:before { content: "\e281"; } .icon-smiley-sad-2:before { content: "\e282"; } .icon-smiley-neutral:before { content: "\e283"; } .icon-smiley-neutral-2:before { content: "\e284"; } .icon-cart:before { content: "\e019"; } .icon-basket:before { content: "\e01a"; } .icon-credit:before { content: "\e286"; } .icon-credit-2:before { content: "\e287"; } .icon-expired:before { content: "\4b"; } .icon-edit:before { color: #24748c; } .icon-publish:before, .icon-save:before, .icon-ok:before, .icon-save-new:before, .icon-save-copy:before, .btn-toolbar .icon-copy:before { color: #378137; } .icon-unpublish:before, .icon-not-ok:before, .icon-eye-close:before, .icon-ban-circle:before, .icon-minus-sign:before, .btn-toolbar .icon-cancel:before { color: #942a25; } .icon-featured:before, .icon-default:before, .icon-expired:before, .icon-pending:before { color: #c67605; } .icon-back:before { content: "\e008"; } html { height: 100%; } body { height: 100%; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } a:hover, a:active, a:focus { outline: none; } .view-login { background-color: #10223e; padding-top: 0; } .view-login .container { width: 300px; position: absolute; top: 50%; left: 50%; margin-top: -206px; margin-left: -150px; } .view-login .navbar-fixed-bottom { padding-left: 20px; padding-right: 20px; text-align: center; } .view-login .navbar-fixed-bottom, .view-login .navbar-fixed-bottom a { color: #FCFCFC; } .view-login .navbar-inverse.navbar-fixed-bottom, .view-login .navbar-inverse.navbar-fixed-bottom a { color: #555; } .view-login .well { padding-bottom: 0; } .view-login .login-joomla { position: absolute; left: 50%; height: 24px; width: 24px; margin-left: -12px; font-size: 22px; } .view-login .navbar-fixed-bottom { position: absolute; } .view-login .input-medium { width: 176px; } .navbar-inverse { color: #333; } .login .chzn-single { width: 222px !important; } .login .chzn-container, .login .chzn-drop { width: 230px !important; max-width: 230px !important; } .login .btn-large { margin-top: 15px; } .login .form-inline .btn-group { display: block; } .small { font-size: 11px; } .row-even .small, .row-odd .small, .row-even .small a, .row-odd .small a { color: #888; } body .navbar, body .navbar-fixed-top { margin-bottom: 0; } .navbar-inner { min-height: 0; background: #f2f2f2; background-image: none; filter: none; } .navbar-inner .container-fluid { padding-left: 10px; padding-right: 10px; font-size: 15px; } .navbar-inverse .navbar-inner { background: #10223e; background-image: none; filter: none; } .navbar .navbar-text { line-height: 30px; } .navbar .admin-logo { float: left; padding: 7px 12px 0px 15px; font-size: 16px; color: #555; } .navbar .admin-logo:hover { color: #333; } .navbar-inverse.navbar .admin-logo { color: #d9d9d9; } .navbar-inverse.navbar .admin-logo:hover { color: #ffffff; } .navbar .brand { float: right; display: block; padding: 6px 10px; margin-left: -20px; font-size: inherit; font-weight: normal; } .navbar .brand:hover, .navbar .brand:focus { text-decoration: none; } .navbar .nav > li > a { padding: 6px 10px; } .navbar .dropdown-menu, .navbar .nav-user { font-size: 13px; } .navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .navbar-fixed-bottom { bottom: 0; } .navbar-fixed-bottom .navbar-inner { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .header { background-color: #1a3867; border-top: 1px solid rgba(255,255,255,0.2); padding: 5px 25px; } .navbar .btn-navbar { background: #17568c; border: 1px solid #0D2242; margin-bottom: 2px; } @media (max-width: 767px) { .header { padding: 4px 18px; margin-left: -20px; margin-right: -20px; } .navbar .admin-logo { margin-left: 10px; padding: 9px 9px 0 9px; } } .header .navbar-search { margin-top: 0; } @media (max-width: 979px) { .header .navbar-search { border-top: 0; border-bottom: 0; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } } .navbar-search .search-query { background: rgba(255,255,255,0.3); } .container-logo { float: right; text-align: right; } .logo { width: 100%; max-width: 143px; height: auto; } .page-title { color: white; font-weight: normal; font-size: 20px; line-height: 36px; margin: 0; } .page-title [class^="icon-"], .page-title [class*=" icon-"] { margin-right: 16px; } @media (max-width: 767px) { .container-logo { display: none; } .page-title { font-size: 18px; line-height: 28px; } .page-title [class^="icon-"], .page-title [class*=" icon-"] { margin-right: 10px; } } .content-title { font-size: 24px; font-weight: normal; line-height: 26px; margin-top: 0; } .subhead { background: #f5f5f5; border-bottom: 1px solid #e3e3e3; color: #0C192E; text-shadow: 0 1px 0 #FFF; margin-bottom: 10px; min-height: 43px; } .subhead-collapse { margin-bottom: 11px; } .subhead-collapse.collapse { height: auto; overflow: visible; } .btn-toolbar { margin-bottom: 5px; } .btn-toolbar .btn-wrapper { display: inline-block; margin: 0 0 5px 5px; } .subhead-fixed { position: fixed; width: 100%; top: 30px; z-index: 100; } @media (max-width: 767px) { .subhead { margin-left: -20px; margin-right: -20px; padding-left: 10px; padding-right: 10px; } } .subhead h1 { font-size: 17px; font-weight: normal; margin-left: 10px; margin-top: 6px; } #toolbar .btn-success { width: 148px; } #toolbar #toolbar-options, #toolbar #toolbar-help { float: right; } html[dir=rtl] #toolbar #toolbar-options, html[dir=rtl] #toolbar #toolbar-help { float: left; } .well .page-header { margin: -10px 0 18px 0; padding-bottom: 5px; } .well .row-even p, .well .row-odd p { margin-bottom: 0; } h1, h2, h3, h4, h5, h6 { margin: 12px 0; } h1 { font-size: 26px; line-height: 28px; } h2 { font-size: 22px; line-height: 24px; } h3 { font-size: 18px; line-height: 20px; } h4 { font-size: 14px; line-height: 16px; } h5 { font-size: 13px; line-height: 15px; } h6 { font-size: 12px; line-height: 14px; } .sidebar-nav .nav-list > li > a { color: #555; } .sidebar-nav .nav-list > li.active > a { color: #fff; margin-right: -16px; } .quick-icons .nav li + .nav-header { margin-top: 12px; margin-bottom: 2px; } .quick-icons .nav-list > li > a { padding: 5px 15px; } .quick-icons { font-size: 14px; margin-bottom: 20px; } .quick-icons .nav-header, .well .module-title.nav-header { font-size: 13px; } .quick-icons h2.nav-header { margin: 12px 0 5px; } .quick-icons h2.nav-header:first-child { margin: 0px 0 5px; } .well .module-title.nav-header { padding: 0px 15px 7px; margin: 0px; } .quick-icons [class^="icon-"]:before, .quick-icons [class*=" icon-"]:before { font-size: 16px; margin-bottom: 20px; line-height: 18px; } .quick-icons .nav-list [class^="icon-"], .quick-icons .nav-list [class*=" icon-"] { margin-right: 9px; } html[dir=rtl] .quick-icons .nav-list [class^="icon-"], html[dir=rtl] .quick-icons .nav-list [class*=" icon-"] { margin-left: 9px; margin-right: 0px; } .j-links-separator { margin: 20px 0px; width: 100%; height: 0px; border-top: 2px solid #DDDDDD; } .container-main, #system-debug { padding-bottom: 50px; } #status { background: #ebebeb; border-top: 1px solid #d4d4d4; padding: 2px 10px 4px 10px; -webkit-box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.8) inset, 0px -15px 15px rgba(255, 255, 255, 0.6); -moz-box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.8) inset, 0px -15px 15px rgba(255, 255, 255, 0.6); box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.8) inset, 0px -15px 15px rgba(255, 255, 255, 0.6); color: #626262; } #status .btn-toolbar, #status p { margin: 0px; } #status .btn-toolbar, #status .btn-group { font-size: 12px; } #status a { color: #626262; } #status.status-top { background: #1a3867; -webkit-box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.2) inset, 0px -1px 0px rgba(0, 0, 0, 0.3) inset, 0px -1px 0px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.2) inset, 0px -1px 0px rgba(0, 0, 0, 0.3) inset, 0px -1px 0px rgba(0, 0, 0, 0.3); box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.2) inset, 0px -1px 0px rgba(0, 0, 0, 0.3) inset, 0px -1px 0px rgba(0, 0, 0, 0.3); border-top: 0; color: #d9d9d9; padding: 2px 20px 6px 20px; } #status.status-top a { color: #d9d9d9; } .pagination-toolbar { margin: 0; } .pagination-toolbar a { line-height: 26px; } .pull-right > .dropdown-menu { left: auto; right: 0; } .disabled { cursor: default; background-image: none; opacity: 0.65; filter: alpha(opacity=65); -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .nav-filters hr { margin: 5px 0; } #assignment.tab-pane { min-height: 500px; } .btn-primary.active, .btn-warning.active, .btn-danger.active, .btn-success.active, .btn-info.active, .btn-inverse.active { color: rgba(255,255,255,0.95); } .chzn-container, .chzn-drop { max-width: 100% !important; } @media (max-width: 979px) { .navbar .nav { font-size: 13px; margin: 0 2px 0 0; } .navbar .nav > li > a { padding: 6px; } .container-fluid { padding-left: 10px; padding-right: 10px; } } @media (min-width: 768px) { body { padding-top: 30px; } body.component { padding-top: 0; } .row-fluid [class*="span"] { margin-left: 15px; } .row-fluid .modal-batch [class*="span"] { margin-left: 0; } .nav-collapse.collapse.in { height: auto !important; } } @media (max-width: 767px) { .navbar-search.pull-right { float: none; text-align: center; } .subhead-fixed { position: static; width: auto; } .container-fluid { padding-left: 0; padding-right: 0; } } @media (min-width: 738px) { body.component { padding-top: 0; } } @media (max-width: 738px) { .navbar .brand { font-size: 16px; } } .btn-subhead { display: none; } @media (min-width: 481px) { #filter-bar { height: 29px; } } @media (max-width: 480px) { .table th:nth-of-type(n+5), .table th:nth-of-type(3), .table th:nth-of-type(2), .table td:nth-of-type(n+5), .table td:nth-of-type(2), .table td:nth-of-type(3) { white-space: normal; } .pagination a { padding: 5px; } .btn-group.divider, .header .row-fluid .span3, .header .row-fluid .span7 { display: none; } .navbar .btn { margin: 0; } .btn-subhead { display: block; margin: 10px 0; } .chzn-container, .chzn-container .chzn-results, .chzn-container-single .chzn-drop { width: 99% !important; } .subhead-collapse.collapse { height: 0; overflow: hidden; } .btn-toolbar .btn-wrapper { display: block; margin: 0px 10px 5px 10px; } .btn-toolbar .btn-wrapper .btn { width: 100% !important; } .subhead { background: none repeat scroll 0 0 transparent; border-bottom: 0 solid #e3e3e3; } .btn-group + .btn-group { margin-left: 10px; } .login .chzn-single { width: 222px !important; } .login .chzn-container, .login .chzn-drop { width: 230px !important; } } @media (max-width: 320px) { .view-login .navbar-fixed-bottom { display: none; } .btn-toolbar .btn-wrapper .btn { width: 100% !important; } } .nav-collapse .nav li a, .dropdown-menu a { background-image: none; } .nav-collapse .dropdown-menu > li > span { display: block; padding: 3px 20px; } @media (max-width: 767px) { .navbar-fixed-top .navbar-inner, .navbar-fixed-top .navbar-inner .container-fluid { padding: 0; } .navbar .brand { margin-top: 2px; float: none; text-align: center; } .navbar .btn-navbar { margin-top: 3px; margin-right: 3px; margin-bottom: 3px; } .nav-collapse .nav .nav-header { color: #fff; } .nav-collapse .nav, .navbar .nav-collapse .nav.pull-right { margin: 0; } .nav-collapse .dropdown-menu { margin: 0; } .nav-collapse .dropdown-menu > li > span { display: block; padding: 4px 15px; } .navbar-inverse .nav-collapse .dropdown-menu > li > span { color: #d9d9d9; } .nav-collapse .nav > li > a.dropdown-toggle { background-color: rgba(255,255,255,0.07); font-size: 12px; font-weight: bold; color: #eee; text-transform: uppercase; padding-left: 15px; } .nav-collapse .nav li a { margin-bottom: 0; border-top: 1px solid rgba(255,255,255,0.25); border-bottom: 1px solid rgba(0,0,0,0.5); } .nav-collapse .nav li ul li ul.dropdown-menu, .nav-collapse .nav li ul li:hover ul.dropdown-menu, .nav-collapse .caret { display: none !important; } .nav-collapse .nav > li > a, .nav-collapse .dropdown-menu a { font-size: 15px; font-weight: normal; color: #fff; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .navbar .nav-collapse .nav > li > .dropdown-menu::before, .navbar .nav-collapse .nav > li > .dropdown-menu::after, .navbar .nav-collapse .dropdown-submenu > a::after { display: none; } .nav-collapse .dropdown-menu li + li a { margin-bottom: 0; } } .sortable-handler.inactive { opacity: 0.3; filter: alpha(opacity=30); } .alert-joomlaupdate { text-align: center; } .alert-joomlaupdate button { vertical-align: baseline; } .form-horizontal .control-label { width: auto; padding-right: 5px; text-align: left; } .form-horizontal .control-label .spacer hr { width: 380px; } @media (max-width: 420px) { .form-horizontal .control-label .spacer hr { width: 220px; } } .form-horizontal #jform_catid_chzn { vertical-align: middle; } .form-vertical .control-label > label { display: inline-block; *display: inline; *zoom: 1; } .form-vertical .controls { margin-left: 0; } @media (max-width: 979px) { .form-horizontal-desktop .control-label { float: none; width: auto; padding-right: 0; padding-top: 0; text-align: left; } .form-horizontal-desktop .control-label > label { display: inline-block; *display: inline; *zoom: 1; } .form-horizontal-desktop .controls { margin-left: 0; } } @media (max-width: 1200px) { .row-fluid .row-fluid .form-horizontal-desktop .control-label { float: none; width: auto; padding-right: 0; padding-top: 0; text-align: left; } .row-fluid .row-fluid .form-horizontal-desktop .control-label > label { display: inline-block; *display: inline; *zoom: 1; } .row-fluid .row-fluid .form-horizontal-desktop .controls { margin-left: 0; } } .form-inline-header { margin: 5px 0; } .form-inline-header .control-group, .form-inline-header .control-label, .form-inline-header .controls { display: inline-block; *display: inline; *zoom: 1; } .form-inline-header .control-label { width: auto; padding-right: 10px; } .form-inline-header .controls { padding-right: 20px; } fieldset.checkboxes input { float: left; } fieldset.checkboxes li { list-style: none; } ul.manager .height-50 .icon-folder-2 { height: 35px; width: 35px; line-height: 35px; font-size: 30px; } .upload-queue > li > span, .upload-queue > li > a { margin: 0 2px; } .upload-queue .file-remove { float: right; } .moor-box { z-index: 3; } .admin .chzn-container .chzn-drop { z-index: 1060; } ul.treeselect, ul.treeselect li { margin: 0; padding: 0; } ul.treeselect { margin-top: 8px; } ul.treeselect li { padding: 2px 10px 2px; list-style: none; } ul.treeselect i.treeselect-toggle { line-height: 18px; } ul.treeselect label { font-size: 1em; margin-left: 8px; } ul.treeselect label.nav-header { padding: 0; } ul.treeselect input { margin: 2px 0 0 8px; } ul.treeselect .treeselect-menu { margin: 0 6px; } ul.treeselect ul.dropdown-menu { margin: 0; } ul.treeselect ul.dropdown-menu li { padding: 0 5px; border: none; } td.has-context { height: 23px; } td.nowrap.has-context { width: 45%; } .item-associations { margin: 0; } .item-associations li { list-style: none; display: inline-block; margin: 0 0 3px 0; } .item-associations li a { color: #ffffff; } #flag img { padding-top: 6px; vertical-align: top; } .tooltip { max-width: 400px; } .tooltip-inner { max-width: none; text-align: left; text-shadow: none; } th .tooltip-inner { font-weight: normal; } .tooltip.hasimage { opacity: 1; } #permissions-sliders .chzn-container { position: absolute; } .container-popup { padding: 15px; } .controls .btn-group > .btn { min-width: 50px; } .controls .btn-group.btn-group-yesno > .btn { min-width: 84px; padding: 2px 12px; } .img-preview > img { max-height: 100%; } #helpsite-refresh { vertical-align: top; } .alert-no-items { margin-top: 20px; } @media (max-width: 767px) { html[dir=rtl] #toolbar #toolbar-options, html[dir=rtl] #toolbar #toolbar-help, #toolbar #toolbar-options, #toolbar #toolbar-help { float: none; } } input.input-large-text { font-size: 18px; line-height: 22px; height: auto; } .info-labels { margin-top: -5px; margin-bottom: 10px; } [class^="chzn-color"].chzn-single, [class*=" chzn-color"].chzn-single, [class^="chzn-color"].chzn-single .chzn-single-with-drop, [class*=" chzn-color"].chzn-single .chzn-single-with-drop { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .chzn-color.chzn-single[rel="value_1"], .chzn-color-reverse.chzn-single[rel="value_0"], .chzn-color-state.chzn-single[rel="value_1"] { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #409740; background-image: -moz-linear-gradient(top,#46a546,#378137); background-image: -webkit-gradient(linear,0 0,0 100%,from(#46a546),to(#378137)); background-image: -webkit-linear-gradient(top,#46a546,#378137); background-image: -o-linear-gradient(top,#46a546,#378137); background-image: linear-gradient(to bottom,#46a546,#378137); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff46a546', endColorstr='#ff368136', GradientType=0); border-color: #378137 #378137 #204b20; *background-color: #378137; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .chzn-color.chzn-single[rel="value_1"]:hover, .chzn-color.chzn-single[rel="value_1"]:focus, .chzn-color.chzn-single[rel="value_1"]:active, .chzn-color.chzn-single[rel="value_1"].active, .chzn-color.chzn-single[rel="value_1"].disabled, .chzn-color.chzn-single[rel="value_1"][disabled], .chzn-color-reverse.chzn-single[rel="value_0"]:hover, .chzn-color-reverse.chzn-single[rel="value_0"]:focus, .chzn-color-reverse.chzn-single[rel="value_0"]:active, .chzn-color-reverse.chzn-single[rel="value_0"].active, .chzn-color-reverse.chzn-single[rel="value_0"].disabled, .chzn-color-reverse.chzn-single[rel="value_0"][disabled], .chzn-color-state.chzn-single[rel="value_1"]:hover, .chzn-color-state.chzn-single[rel="value_1"]:focus, .chzn-color-state.chzn-single[rel="value_1"]:active, .chzn-color-state.chzn-single[rel="value_1"].active, .chzn-color-state.chzn-single[rel="value_1"].disabled, .chzn-color-state.chzn-single[rel="value_1"][disabled] { color: #fff; background-color: #378137; *background-color: #2f6f2f; } .chzn-color.chzn-single[rel="value_1"]:active, .chzn-color.chzn-single[rel="value_1"].active, .chzn-color-reverse.chzn-single[rel="value_0"]:active, .chzn-color-reverse.chzn-single[rel="value_0"].active, .chzn-color-state.chzn-single[rel="value_1"]:active, .chzn-color-state.chzn-single[rel="value_1"].active { background-color: #285d28 \9; } .chzn-color.chzn-single[rel="value_0"], .chzn-color-reverse.chzn-single[rel="value_1"], .chzn-color-state.chzn-single[rel="value_0"], .chzn-color-state.chzn-single[rel="value_-1"], .chzn-color-state.chzn-single[rel="value_-2"] { color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,0.25); background-color: #ad312b; background-image: -moz-linear-gradient(top,#bd362f,#942a25); background-image: -webkit-gradient(linear,0 0,0 100%,from(#bd362f),to(#942a25)); background-image: -webkit-linear-gradient(top,#bd362f,#942a25); background-image: -o-linear-gradient(top,#bd362f,#942a25); background-image: linear-gradient(to bottom,#bd362f,#942a25); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbd362f', endColorstr='#ff942a24', GradientType=0); border-color: #942a25 #942a25 #571916; *background-color: #942a25; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .chzn-color.chzn-single[rel="value_0"]:hover, .chzn-color.chzn-single[rel="value_0"]:focus, .chzn-color.chzn-single[rel="value_0"]:active, .chzn-color.chzn-single[rel="value_0"].active, .chzn-color.chzn-single[rel="value_0"].disabled, .chzn-color.chzn-single[rel="value_0"][disabled], .chzn-color-reverse.chzn-single[rel="value_1"]:hover, .chzn-color-reverse.chzn-single[rel="value_1"]:focus, .chzn-color-reverse.chzn-single[rel="value_1"]:active, .chzn-color-reverse.chzn-single[rel="value_1"].active, .chzn-color-reverse.chzn-single[rel="value_1"].disabled, .chzn-color-reverse.chzn-single[rel="value_1"][disabled], .chzn-color-state.chzn-single[rel="value_0"]:hover, .chzn-color-state.chzn-single[rel="value_0"]:focus, .chzn-color-state.chzn-single[rel="value_0"]:active, .chzn-color-state.chzn-single[rel="value_0"].active, .chzn-color-state.chzn-single[rel="value_0"].disabled, .chzn-color-state.chzn-single[rel="value_0"][disabled], .chzn-color-state.chzn-single[rel="value_-1"]:hover, .chzn-color-state.chzn-single[rel="value_-1"]:focus, .chzn-color-state.chzn-single[rel="value_-1"]:active, .chzn-color-state.chzn-single[rel="value_-1"].active, .chzn-color-state.chzn-single[rel="value_-1"].disabled, .chzn-color-state.chzn-single[rel="value_-1"][disabled], .chzn-color-state.chzn-single[rel="value_-2"]:hover, .chzn-color-state.chzn-single[rel="value_-2"]:focus, .chzn-color-state.chzn-single[rel="value_-2"]:active, .chzn-color-state.chzn-single[rel="value_-2"].active, .chzn-color-state.chzn-single[rel="value_-2"].disabled, .chzn-color-state.chzn-single[rel="value_-2"][disabled] { color: #fff; background-color: #942a25; *background-color: #802420; } .chzn-color.chzn-single[rel="value_0"]:active, .chzn-color.chzn-single[rel="value_0"].active, .chzn-color-reverse.chzn-single[rel="value_1"]:active, .chzn-color-reverse.chzn-single[rel="value_1"].active, .chzn-color-state.chzn-single[rel="value_0"]:active, .chzn-color-state.chzn-single[rel="value_0"].active, .chzn-color-state.chzn-single[rel="value_-1"]:active, .chzn-color-state.chzn-single[rel="value_-1"].active, .chzn-color-state.chzn-single[rel="value_-2"]:active, .chzn-color-state.chzn-single[rel="value_-2"].active { background-color: #6b1f1b \9; } #permissions-sliders .input-small { width: 120px; } .editor { overflow: hidden; position: relative; } .editor textarea.mce_editable { box-sizing: border-box; } a.grid_false { display: inline-block; height: 16px; width: 16px; background-image: url('../images/admin/publish_r.png'); } a.grid_true { display: inline-block; height: 16px; width: 16px; background-image: url('../images/admin/icon-16-allow.png'); } .j-sidebar-container { position: absolute; display: block; left: -16.5%; width: 16.5%; margin: -10px 0 0 -1px; padding-top: 28px; padding-bottom: 10px; background-color: #f5f5f5; border-bottom: 1px solid #e3e3e3; border-right: 1px solid #e3e3e3; -webkit-border-radius: 0 0 4px 0; -moz-border-radius: 0 0 4px 0; border-radius: 0 0 4px 0; } .j-sidebar-container.j-sidebar-hidden { left: -16.5%; } .j-sidebar-container.j-sidebar-visible { left: 0; } .j-sidebar-container .filter-select { padding: 0 14px; } .j-toggle-button-wrapper { position: absolute; display: block; top: 7px; padding: 0; } .j-toggle-button-wrapper.j-toggle-hidden { right: -24px; } .j-toggle-button-wrapper.j-toggle-visible { right: 7px; } .j-toggle-sidebar-button { font-size: 16px; color: #3071a9; text-decoration: none; cursor: pointer; } .j-toggle-sidebar-button:hover { color: #1f496e; } #system-message-container, #j-main-container { padding: 0 0 0 5px; min-height: 0; } #system-message-container.j-toggle-main, #j-main-container.j-toggle-main, #system-debug.j-toggle-main { float: right; } @media (min-width: 768px) { .j-toggle-transition { -webkit-transition: all 0.3s ease; -moz-transition: all 0.3s ease; -o-transition: all 0.3s ease; transition: all 0.3s ease; } } @media (max-width: 979px) { .j-toggle-button-wrapper.j-toggle-hidden { right: -20px; } } @media (max-width: 767px) { .j-sidebar-container { position: relative; width: 100%; margin: 0 0 20px 0; padding: 0; background: transparent; border-right: 0; border-bottom: 0; } .j-sidebar-container.j-sidebar-hidden { margin-left: 16.5%; } .j-sidebar-container.j-sidebar-visible { margin-left: 0; } .j-toggle-sidebar-header, .j-toggle-button-wrapper { display: none; } .view-login select { width: 232px; } } @media (max-width: 420px) { .j-sidebar-container { margin: 0; } .view-login .input-medium { width: 180px; } .view-login select { width: 232px; } } .break-word { word-break: break-all; word-wrap: break-word; } textarea { resize: both; } textarea.vert { resize: vertical; } textarea.noResize { resize: none; } body.modal-open { overflow: hidden; -ms-overflow-style: none; } .pull-right { float: left; } .pull-left { float: right; } .table th, .table td { text-align: right; } .navbar .brand { float: right; padding: 8px 20px 8px 12px; margin-right: -20px; margin-left: 0; } .navbar .nav, .navbar .nav > li { float: left; } .navbar .nav.pull-right { margin-right: 10px; margin-left: 0px; } .pull-right > .dropdown-menu { left: 0; right: auto; } [class*="span"] { float: right; margin-right: 20px; margin-left: 0px; } .row-fluid [class*="span"] { float: right; margin-right: 2.127659574%; *margin-right: 2.0744680846382977%; margin-left: 0px !important; *margin-left: 0px !important; } .row-fluid [class*="span"]:first-child { margin-right: 0; } .form-horizontal .control-label { float: right; width: auto; padding-left: 5px; padding-right: 0; text-align: right; } .form-horizontal .controls { *display: inline-block; *padding-right: 20px; margin-right: 160px; *margin-right: 0; margin-left: 0; text-align: right; margin-top: 6px; } .form-horizontal .controls:first-child { *padding-right: 160px; } .form-vertical .controls { *display: inline-block; *padding-right: 20px; margin-right: 0; *margin-right: 0; margin-left: 0; text-align: right; margin-top: 6px; } .form-vertical .control-label { float: none; padding-right: 0; padding-top: 0; text-align: right; width: auto; } .chzn-container-single-nosearch .chzn-search input { position: absolute; left: -9000px; display: none; } .nav-tabs > li, .nav-pills > li { float: right; } .nav-stacked > li { float: none; } .btn-group > .btn { float: right; margin-right: -1px; margin-left: 0; } .btn-group > .btn:first-child { margin-right: 0; } .btn-group > .btn:first-child, .radio.btn-group > label:first-of-type { margin-left: 0; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-topleft: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -moz-border-radius-topright: 4px; } .btn-group > .btn:last-child, .btn-group > .dropdown-toggle { -webkit-border-top-right-radius: 0px; border-top-right-radius: 0px; -webkit-border-bottom-right-radius: 0px; border-bottom-right-radius: 0px; -moz-border-radius-topright: 0px; -moz-border-radius-bottomright: 0px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-topleft: 4px; -moz-border-radius-bottomleft: 4px; } .btn-group > .btn.large:first-child { -webkit-border-bottom-left-radius: 0px; border-bottom-left-radius: 0px; -webkit-border-top-left-radius: 0px; border-top-left-radius: 0px; -moz-border-radius-bottomleft: 0px; -moz-border-radius-topleft: 0px; margin-right: 0; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-bottomright: 6px; -moz-border-radius-topright: 6px; } .btn-group > .btn.large:last-child, .btn-group > .large.dropdown-toggle { -webkit-border-top-right-radius: 0px; border-top-right-radius: 0px; -webkit-border-bottom-right-radius: 0px; border-bottom-right-radius: 0px; -moz-border-radius-topright: 0px; -moz-border-radius-bottomright: 0px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -moz-border-radius-topleft: 6px; -moz-border-radius-bottomleft: 6px; } .btn-group > .btn:first-child:last-child { margin-left: 0; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-topleft: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -moz-border-radius-topright: 4px; } .input-prepend .add-on { float: right; } .input-append .add-on { float: none; } .input-prepend .add-on, .input-prepend .btn { margin-left: -1px; margin-right: 0; } .input-prepend .add-on:first-child, .input-prepend .btn:first-child { -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-append input, .input-append select, .input-append .uneditable-input { -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .input-append .uneditable-input { border-left-color: #ccc; border-right-color: #eee; } .input-append .add-on:last-child, .input-append .btn:last-child { -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-prepend.input-append input, .input-prepend.input-append select, .input-prepend.input-append .uneditable-input { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-prepend.input-append .add-on:first-child, .input-prepend.input-append .btn:first-child { margin-left: -1px; margin-right: 0px; -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; float: right; } .input-prepend.input-append .add-on:last-child, .input-prepend.input-append .btn:last-child { margin-right: -1px; margin-left: 0px; -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .input-prepend input, .input-prepend select, .input-prepend .uneditable-input { -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } body { direction: rtl; } .pager .next a { float: left; } .pager .previous a { float: right; } .btn-group > .btn:first-child, .radio.btn-group > label:first-of-type { margin-left: 0; -webkit-border-bottom-left-radius: 0px; border-bottom-left-radius: 0px; -webkit-border-top-left-radius: 0px; border-top-left-radius: 0px; -moz-border-radius-bottomleft: 0px; -moz-border-radius-topleft: 0px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -moz-border-radius-topright: 4px; } .icon-arrow-right { background-position: -241px -94px; float: left; padding-right: 3px; } .icon-arrow-left { background-position: -264px -95px; } .icon-refresh { background-position: -240px -23px; } #refresh-status { background-position: right center; padding-left: 0; padding-right: 25px; } .radio input[type="radio"], .checkbox input[type="checkbox"] { float: right; margin-right: 2px; margin-left: 5px; } .list-striped, .row-striped { list-style: none; line-height: 18px; text-align: right; } .btn-group + .btn-group { margin-right: 5px; margin-left: 0px; } .tabs-left > .nav-tabs { float: right; margin-left: 19px; border-left: 1px solid #DDD; margin-right: 0px; border-right: 0px; } .tabs-left > .nav-tabs .active > a, .tabs-left > .nav-tabs .active > a:hover { border-color: #DDD #DDD #DDD transparent; } .tabs-left > .nav-tabs > li > a { margin-left: -1px; -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; margin-right: 0px; } .controls > .radio:first-child, .controls > .checkbox:first-child { padding-top: 0px; } .btn-toolbar { margin-top: 14px; margin-bottom: 3px; } .navbar .nav > li { float: right; } .icon-folder-2 { line-height: 25px; padding-left: 5px; } .navbar .nav > li > a { padding: 8px 10px; color: #FFFFFF; } .navigation .nav li li .nav-child { left: auto; right: 100%; } .navigation .nav li li .nav-child:before { left: auto; right: -7px; border-left: 7px solid rgba(0,0,0,0.2); border-right-width: 0; } .navigation .nav li li .nav-child:after { left: auto; right: -6px; border-left: 6px solid #ffffff; border-right-width: 0; } .container-logo { padding-top: 6px; float: left; text-align: left; } .modal-header .close { float: left; } .pagination a { float: right; } .pagination ul { display: inline-block; *display: inline; *zoom: 1; margin-right: 0; margin-bottom: 0; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.05); -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.05); box-shadow: 0 1px 2px rgba(0,0,0,0.05); } .pagination a { float: right; padding: 0 14px; line-height: 34px; text-decoration: none; border: 1px solid #ddd; border-right-width: 0; } .pagination li:first-child a { border-right-width: 1px; -webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; } .pagination li:last-child a { -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .pagination-centered { text-align: center; } .pagination-right { text-align: right; } .icon-first:before { content: "\e000"; } .icon-previous:before { content: "\7d"; } .icon-last:before { content: "\7b"; } .icon-next:before { content: "\7c"; } .dl-horizontal dt { float: right; } .profile> ul { margin: 9px 25px 0 0; } .dropdown-submenu > a:after { float: left; border-width: 5px 5px 5px 0; margin-left: -10px; border-left-color: transparent; border-right-color: #CCC; } .badge { margin-left: 10px; } .tip-text { text-align: right; } .icon-file-add:before { content: "("; } .icon-eye-open:before, .icon-eye:before { content: ">"; } .icon-checkin:before, .icon-checkbox:before { content: "<"; } .icon-save-new:before, .icon-plus-2:before { content: "["; } .btn-toolbar .btn + .btn, .btn-toolbar .btn-group + .btn, .btn-toolbar .btn + .btn-group { margin-left: 0; margin-right: 5px; } .btn-toolbar .btn-wrapper { display: inline-block; margin: 0 5px 5px 0; } .btn-group > .btn + .btn { margin-left: 0; margin-right: -1px; } .input-append .add-on, .input-append .btn, .input-prepend .add-on, .input-prepend .btn { margin-left: 0; margin-right: -1px; } .table-bordered { border-right-width: 0; border-left-width: 1px; border-right-style: none; border-left-style: solid; border-right-color: -moz-use-text-color; border-left-color: #DDDDDD; } .chzn-container-single .chzn-single { padding-right: 8px; padding-left: 0; } .chzn-container-single .chzn-single span { margin-left: 26px; margin-right: 0; } .chzn-container-single .chzn-single abbr { left: 26px; right: auto; } .chzn-container-single .chzn-single div { left: 0; right: auto; } .chzn-container-multi .chzn-choices li { float: right; } .chzn-container-multi .chzn-choices .search-choice { margin-right: 5px; margin-left: 0; padding-right: 5px; padding-left: 20px; } .chzn-container-multi .chzn-choices .search-choice .search-choice-close { left: 3px; right: auto; } .chzn-container.chzn-with-drop .chzn-drop { right: 0; left: auto; } .chzn-container-single.chzn-container-single-nosearch .chzn-search { position: absolute; right: -9999px; left: auto; } .chzn-container .chzn-drop { right: -9999px; left: auto; } .alert { padding-right: 14px; padding-left: 35px; } .alert .close { left: -21px; right: auto; } .close { float: left; } .form-search .radio, .form-search .checkbox, .form-inline .radio, .form-inline .checkbox { margin-bottom: 9px; } .form-search .radio input[type="radio"], .form-search .checkbox input[type="checkbox"], .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { float: right; margin-left: 3px; margin-right: 0; } .com_media .container-main .media { display: inline-block; } .thumbnails > li { float: right; margin-bottom: 18px; margin-right: 20px; } #mediamanager-form .description, #mediamanager-form .filesize, #mediamanager-form .dimensions { direction: ltr; } .tooltip-inner { text-align: right; } @media (max-width: 480px) { .btn-toolbar .btn-wrapper { display: block; margin: 0 0 5px 0; } .btn-toolbar .btn-wrapper .btn { margin-left: 0px; margin-right: 10px; } } #pop-print { float: left; margin: 10px; } #install_url, #install_directory, #jform_customurl, #jform_link, #jform_params_url, input[type="url"] { text-align: left; direction: ltr; } #aside .nav .nav-child { border-left: 0; border-right: 2px solid #ddd; padding-left: 0; padding-right: 5px; } .dropdown-menu { text-align: right; } [class^="icon-"], [class*=" icon-"] { margin-left: .25em; } .navbar .admin-logo { float: right; padding: 7px 15px 0px 12px; } .navbar .brand { float: left; padding: 6px 10px; } .navbar .nav { margin: 0 0 0 10px; } .navbar .nav > li > a { padding: 6px 10px; } .container-logo { padding-top: 0; float: left; text-align: left; } .page-title [class^="icon-"], .page-title [class*=" icon-"] { margin-right: 0; margin-left: 16px; } @media (max-width: 767px) { .navbar .admin-logo { margin-right: 10px; padding: 9px 9px 0 9px; } .navbar .btn-navbar { float: left; margin-right: 5px; margin-left: 3px; } .navbar .nav-collapse .nav.pull-left { float: none; margin-left: 0; margin-right: 0; } .nav-collapse .nav > li { float: none; } .page-title [class^="icon-"], .page-title [class*=" icon-"] { margin-left: 10px; } } #status .badge { margin-left: 0; } .dropdown-menu > li > a { text-align: right; } .btn-group > .btn + .dropdown-toggle { float: none; } a.grid_false { display: inline-block; height: 16px; width: 16px; background-image: url('../images/admin/publish_r.png'); } a.grid_true { display: inline-block; height: 16px; width: 16px; background-image: url('../images/admin/icon-16-allow.png'); } .view-login .login-joomla { position: absolute; right: 50%; height: 24px; width: 24px; margin-right: -12px; font-size: 22px; } .view-login .input-medium { width: 169px; } .login .chzn-single { width: 219px !important; } .login .chzn-container, .login .chzn-drop { width: 227px !important; max-width: 227px !important; } .login .input-prepend .chzn-container-single .chzn-single { -webkit-border-radius: 3px 0 0 3px; -moz-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; border-right: 0px; } .j-sidebar-container { left: auto; right: -16.5%; margin: -10px -1px 0 0; border-right: 0; border-left: 1px solid #d3d3d3; } .j-sidebar-container.j-sidebar-hidden { left: auto; right: -16.5%; } .j-sidebar-container.j-sidebar-visible { left: auto; right: 0; } .j-toggle-sidebar-header { padding: 10px 19px 10px 0; } .sidebar { padding: 3px 4px 3px 3px; } .j-toggle-button-wrapper.j-toggle-hidden { right: auto; left: -24px; } .j-toggle-button-wrapper.j-toggle-visible { right: auto; left: 10px; } #system-message-container, #j-main-container { padding: 0 5px 0 0; } #system-message-container.j-toggle-main, #j-main-container.j-toggle-main, #system-debug.j-toggle-main { float: left; } @media (max-width: 979px) { .j-toggle-button-wrapper.j-toggle-hidden { right: auto; left: -20px; } } @media (max-width: 767px) { .j-sidebar-container { border-right: 0; border-left: 0; } .j-sidebar-container.j-sidebar-hidden { margin-left: auto; margin-right: 16.5%; } .j-sidebar-container.j-sidebar-visible { margin-left: auto; margin-right: 0; } .view-login select { width: 229px; } } #j-main-container.expanded { margin-right: 0; } @media (min-width: 768px) { .row-fluid [class*="span"] { margin-right: 15px; margin-left: 0; } .row-fluid .modal-batch [class*="span"] { margin-right: 0; } } .row-fluid .modal-batch [class*="span"] { margin-right: 0; } @media (max-width: 480px) { .btn-toolbar .btn-wrapper .btn { width: 100% !important; margin-right: 0px; } .btn-toolbar .btn-wrapper { margin: 0 10px 5px 10px; } } @media (max-width: 420px) { .j-sidebar-container { margin: 0; } .view-login .input-medium { width: 173px; } .view-login select { width: 229px; } } PKb��\�̞%s%s#templates/isis/template_preview.pngnu�[����PNG IHDR���ja�PLTE'�33s<M7l����Ar��jI}*R��m�a�+������h�� #I���K\z�|6]���|���i?l Cb�����,%.Z�L��>��(\s��.T{��δ��@m*J2A]Zn���𥟚!:��3���L��'BBsY�&�ҙ��:j 1S9����YR���̥��1Zrrr������7MkQ�=������*I9cK����3䆋�\W�����u|��iV���u��0��(D�������� ;"B�������ண�Lm�0R���[�0`eu&{� 9c`�ٙ��.I��CzP���:kCJ_���S�4b����֘���e|����ô������w������)J$9Y�������JE???���fffe��?k�� 2Z���J����zzz�����掐����O��b�� 1������;`�JJJ������Bz���vx�[[[7Ic������y��:cj��I|���v��ۉQHTm���z�ޥ���&Bs��뻫�333]u�ߡ�S�������{r����nl���(((��͟��%a�2R����������jf:NJ���(E��������r���Ӏ�����zӺ�qho���8i]������4;V�����ȓ��Kr���������Ō����� 1&S�RRRH�������4=gp���Ň�����q�������DStJ�C���u��3���u�����ѽ������㺸m�Qd��~�qsz]���ୄ���GE*����|}��Co�IDATx��]}P�wN�@i�znj �(ƚ!#�9\LT�MǩȮ������C���$�!+�W��xҎ�p��z�St"�\HR�I��.�q �#�\�]7�=�~�c 2qk��I���y��}���>��.�2��#�b����:�jZ)ˁө�w 2%�$5Úw�˄��Jr)3��3��e%1@P��=J�.P +F)>SY;�e����f��h�@@��I�v�,*�, �*w%gp�9r���pė��5;�N;�!�ݝ|](D�0B�p)$A)�J� Rr9��*�K9Ŋ��B�b9`�\��>����f��i�2�sB�n��s]s���6�K��V9�)� I'�;��|'����͎�Ҏ��em�a(#4 {r�`ɧ �p�#�����9�N��eYC��� ��{�]%�]%d�(�>bJ��l$�%��7@v���O��ܻj���kvܝv���R778�fp���6'�|�`�LF�9!�r�kvܝv,sBL� Eq~*v�)��*T�Iu݅PnNh��)�CY���� @���cC<y��ԄL�+Cw�bM-�Q���xHZ�T�^�sBY�;P|��. �> �L͎��nV#��B(�!�^ �(>Rj l�ZW���/��C�r�`!( �+>��kvܝv�,�S�"(sM��t�r�N��jv( :ӄ���qwڱL�ڲC�!���"�gS��]ݑi#��'`�jERr�={L�᷌�~'酓�e|��mE�f��C���W��M�|A��4���'����> �� @㡆t!�s��+����@�$�����U���ɹ%�/j��߾P���vp�����+u�C���<t�gpxa˯ ݲ�a��4Uz��q{�p*�P�|�-���8d��W�V���5;n���(J^%l�����d�0�^�gI!A�Ч�+��WY|����bJ�*i�B⽊�k$^%P\���l��a EQ� ��3!(\� �� �Y�\�;7J�3��za�'ʁ>�WB�gd���W <@Q�{o�G\�u��V�}�Y���A�a��z]S�`�;@^�D���HQ���P��� ߁�$��<A���'ȅ�� �:��y���*�/�QL�x%� b0+�nP ~ƨ�����Pg�{��#�g��}=H,a�a�*p���-w|'(�9$�n��������*ȩCe�/����m�U�TN]-p��KO`U}���EbV~�F���qSH&�k ��o��W߽\���/��?H<��;�<�,�3��m��vvu�/��|���w=�'����|�q����!ו����3.���ޘz�y����֙6����I�k���K�2����B*d*8�گ���7`~�̃x�=A�|�st�O�z���J%� }���v��]V60e����M���� �_���Е�����3��Z���P���jj����VN�5��1%���#���쌋�_Xp�y�8�$��%�!F0�wy ����o~ӯ����%�,]SS ������ò��~���aʧgйg���cM>���ߩ�L���v�1��꙯n:�!bJ�^IL� +�%X�@�3h��߸�YҨ*Ѓ�z�2½��f�#��$��?��p 1_3���0���J^��Cp�U0W ����F���lriH�{�xV`��F�r|�m�8��t3�)��``�X�� �,���Ёp !�c�+� cM�|��B.�D�PN��(_.�&���*�MĤLe#1E��(&��J������7%vk�`� 0���c��p�>�0�<�L6���`^��BXA@`��-�q6h�jw���X�!I���B��!!��9s�䇄����J sW�����B�v���C"DH� H��ہU�:^<��*�b8���� I�@H��� ����7_^�k:9x�H4|!N��j8%"�t��>)�B���:B��K�Hr����j���Z�� �G `�8T!�����_�@j���>�uS����b�OI�1�}���qn&�5��Hװ��H� I�۷���a8����5/��>�!F��3�H��aj+M�?ED�NB,��E�b*��A$$NBNu:�&�d����1�!B�hQ�&�h��*@S�a�>Wg�08D��(ǐM/��^�Pn�9H�`�[ ��!��5 �r0�r�%p�`\�,�,è-n�:<C5�X�Mf�U:�a,�>~�� !l��_~��i����W�-��^;�ٻ�����������w��v��6,������xd��)�� �C���pb���(���"�F���@��` ���b!��5h$\$h�s�@@��Y |��5`8~��#�ԍ�,�~=���@@��= QB������ׯg�e���6V��p���!b��LC�͠+��-q"�v�6S��睿{�q���1�/�K�;�~r���v���6D��OH܀���R�{�g�l������\4�öμ~���]dN��f0������T�t?�5�~o�A �MX�H��yp)Y�Дc��8�X��ջ�clGn�kH �s�� B�.G ������nƵ��t}��q�1(䚱n�8a5^�r�|֘��b8��?��/�o�����C�C-�;�e>k��T��W�m@��R����M����X��X~��g)H���8e8���l8�� �Rx��0O0P�+���~�"�a�8� �ׄalS!6�X #���>�F���08�Ta��̭�e���bXc�1�T ���Xֵ���pc�����P�] ��8�я����?�5X�1��d�F��{a��q��#2P*N�2"��(E�+d�U�8�~/���Y%p)��^`V�箽��Y���!r�f��d�q�� �`(�E�e���ڄ�"b D�jA3Brfc�ia9i��C���r .���N_�ˊʚ�W��q0g��S��au,V����}`��8�<���U�D�&�Sm�"�����s �82� ċ�X����c�R�}*p�61�$�QÓ/��|�v�F�,R �`; �"դ,Ԅ�r�I" D!�RB)!�1!OV��,��B �HH��(������TUoJӭ���g6E�aj��(��߮�x�<;U�(� �U���#p]9����p�\Y�AC:�Tz@�R������ ���o#:;Y��L$`��T;˝��pybO�Mb��J���rx�;�J@�b��ܡ&sB�9q-�UZOa_b�b��k��w:��!�9n���J�@J�S"{�0�4��"=��p是���؝������a�q��FP��6�A#�@5�*�G�=\NR"\Td��)l�9h%�i<����X A�E��&�:j;����r 59���E&�P f�P��4? m�-q�m2��i+�,��69��O0�Ɯ"(b*BH& `P��t��*�=�����t�m�qxSoyq��s�.̳��*�=/*T�l�[v5�l�Qcs��(Z���1XԳ�����=�w���� �hOesQyȜ�uR�O��h�ɢr[Qhw��J��68T���o���]e��cmiE�-�l������P����g��)��p�X��xU���h*Jh���>Oh�k�������D8g�\����n.��:�G�{8��p�C��� �yoQO%/S'���`��K�܅�;��؉��n4t*���|�,wشq�m� ����o�����z,#[f�cO�Z�\��H4���z���&��ƹ��-��/��E�����K��NK0�ϕ����E�e�4� n�=���sBFcH��lSt�2�O�" ��r傝�m�L�fc�n�h-�t,����D�����7Xܺ1�i�щ�--ET洎5�g-�+ѥ{��NĜM��F<c�h4�����&�m�(�z(g�?L& �����e�_.�`�C�^�py�šf�uYn�i�n�1����;Gk�e�Gs�r�E�?z<�.���U�Cc[F$Δ�ڃ����]��7��NT!����# �m}Wi�� �kJBS�բ�l�=l�K�/3'j`��Z��j�^��=}�u����ַG��<�Ĵe���U�t��͌��^��\5�r��Tz�'���'�m�~����$�O���!{�c��}?��Qtv��Y.�p����[tl��v�r��)�Ƅ����x@G>��0����s��|�uG/}a�r�g���>>k�0��h�Ƭ.�ݖ;a�3��{͕���=d����+��Gs��z�}��� s}�X� �/U��8=�ƾhE�,��<����F��l��+�$T�8��s��i���K�E|?�\���Ѿ+n�ηW�4��P5��ƕ�挨��1�7����&�f=B�EN_YŜ}��|��Es�����Y8�^��9?�c�n4�N������[�a�U0t�~S��������VL��dw����l��|�XE��d9���pp1g��xq����t@���O�*� ��vq�P� 5$Δ����bT �MI5!��/ԢT:q��Φ�g��*D8s��Zˮ�r��<���Q_�[Q��9���*���b�����#dp���������@��J��z�:�v���̑�.t#����AƢ(��̖�`1�<��thаpT��= N�'��L����G�p�z@yƻ_��t�֤�_����!3�{� ��-;�l>,����I�=�<��?��{4hTnD�`Q�}��#{6o�\ײ9��mޣA�F@�!�؉���_�������[�fz3��R�Q�$�;��G�R�_���!x՞#�@|�o��A��{ơ\Jdu�e �����#�4���=`ؙƳ�4�<`˚WZ^YӲ�c�c�YYuuY�겼G��/�f�ezQ"+kkkkW�J��2�uu{�D�8���LH+CR�L��`uxěG�?�}�5��[�͂t]��=�y�{�F�����ں̮�I]�.��&���3�pJt��j0���u����,��eU���ĉ}�����n��;GV��=�/��P���?���{� �xbҲ�b9Ѫ?Qj��vn���ZJ�l����m����^�;1�����d���˯�f�O��d�w�V��g�����e��-�/�����q�7�Ϋ�E�L��� ؽ��|P�ϫ�Y<� ���̼��[�33�[:GZu���n|�2t�ѡ�M��S���3֞d���������_����^��=�z�?�o/d�~�?Xqm���k{�y5���J^�Rs5�?��&��{� ��۟7��V�ݽ���,���gk����Ο7k�rY%2O3Uj�ӛEY���^3=�ό^{7���?�?X��)�^������}���gJ#����=�,B�z�S����{>���G��jI�7ϛ94��m����w���v;k3u�0�sh$���:�ח��N �~��'����K�k����ky;B��VY�~��h���^;�6���>��pg»v��vfs��"<$>��W��%����?|����W?-�,���֥���9�m\�52ҹmK��˯kZ�}�ΑΑ�H�H�ߖ�@�������m�<u�*��gZw�>�{�Rp'"�:�ϟf��~|i^����?�.�pG(�O|P��6�v�D� e�d���M)[9r�瀒O_�ו���W��v�ҕ�ۗ��������w��o%���+��պ��3n����}ޕWBy6���\ɪɕO��ޔW�o���]U���&����|�C��6��!�����\�W��_���ê}�)}n�N�]�OF�u� ����%�����k�c �6�L��r0}�����z� ��-q� ��Rb��WiР��?��� \~�d� G�S�����t�?��Z �S����ވ���Z ����%��� ���9�M_��x!U�rl^�AC:0+�&Dm^��`�֠!�ljT��$�Z��t`���Vq&y� ȧ�y0��#�AkР�!�Y�ȫ�}@^"�I(2x���j��5h��2 T"�?2k������A �H����0]�C0�s3� �)aPHSC(��4k��ki�wh��t�O#��(�`a9%J@\& �����q�òȍ3Vvu�D4h�@���V%�,�rRA��l�"�t�g�:N_Xo��q�#p�p��H;H4hH&�� �CZ�ޔ�N�,w�s?Z�V�~��>|u�e��p��v���a^¬O��RL��!��D@2BXg���ig����I!5j��A�lim���#2H��/y��v�t��9�P��ʓ�n��� ArY5�G@ī�!��!8B�I�!R�#� "�\�6̓�B(F8 �Y"��@5�4$Pz�ē؆IzW ��v�4()�A},/On�6L�6�jH���/#$��!X�I@#���a�!8�'!5ܖ!x�OHJ�����d���X�*�]��sv�m\�'0H�\�ɥ4/�c��_ ��Ӹ��ıb<\0� 6�4iA�5��dhM¸���W�d�[UH��'!1����@ �����{$˒e)�-�%��1N �����k��w�q�`��Q��Ez�(�!�m�EI���<f=�i@"@G�ئ ��<��.� ۻ!���!��0�=@G]�z �j{��u}��O��v[��pP��;j�/L��Sm���L��vW�@ ��NU���tnWu��Q�?�2[-l��w��Q��\�=�<��Q'Lx\y@@�,`u<���P�b���~O¤�b���5�S�]�5o�R5n� �F�M�4T�6:�13����m\p�{�����`#�IKFA�y2�nQ�������$O�Dt� ��;.�rt�@R s���;��/M$s1o "i�^d]m�B���I'���Z@��q<w��7(iT����ES7CQҐ��&<b4g�&G^�1O�Ih��5#�0|��L�{��!j��۟YܔE�ʬ�<��5�b��y2 �<�x�6<m�ʂ�&mJ4x�� #�E-=��l��{�N��N��/���m���wo�4����D�`2��X��F ��7��~4y��� C+��|Lu=��7��1#ٞH�ߞ��*φ��ջ�ڽ��>~��돮���z���G�N/]�di��p&��VѼ.�=��C��J�8A�WY�� ��Y@QwcIZ%����w<X�0\�MY:�\qv��^�--M���Y��r�ε��n�iՁ��^�0 F�n���"�M���G7��.�~4�4������t�ҝ�_�]�>Xe��(�ZG���HT��[М={�ŋs��}~����,�+q��w�B�r�F��$"= �ks��O��}9��Ypw����s� ��'�k��?J@[#B�<ݠVA�८��dO��k��-!l3Y�U��z�z�)���XVV�$���,�z �ڴ! ����g�p��'���x��O>��#^��j�3��T�X���K�t��/���Y�`��t��e�c�9g<�ή{�4 �ݒ�5�!��$��}=�-�x�����ŋ?�]�s����;�CKg���woN��xI�z�+l m(��>V��7�D)%��67[����1� Y���o���f���@�Il{]��rl��i��jLDO�Y@�����'�Sd�1��t��@��sצ?��^�]����A�G�4��l��j@1��O0�������%�8���8b��e.��.�I@�Y�?d���35�/^�����B�&Ou����.%��S����"^�v����kK�)ڸ�8�ԏQ��9�0��F�X����Co��4�K �>Mc�J��x_�J�ïvhLM�%�UK����Y���%�i�悧N���ԩO���_O���7H��|jl�E�]c*�" ��%�������DI�E�ǐ�"@�+Q���@�4����"��ǖD��'���0�&V� `�w����}�/P�(�H_�y+��0F�. ��AyU~����Pe ����"F6B�����e���Y�~�p���iF�D4�x���d�\�����['݃����� WY���`M���BS���e���l�d��?�e18'!��S��'5�]�Ի�`*h&s�����������&���>�P,` �� "��*&r�j��{��Q� F�N9VU�a5L3�a�X@�Z�����, Q �ڝ����0�Ĺl/`�EH����H}�\��4�_mQ�E�?��!,�.�EA*T2�d�0Pd�lWxj��<��5���{3�= XO�GF�������[!e��]��4SjQ��ag��(��5ײ,��p��s7�������e��`�pՌ��0�5��^hj��S�t���s�xQ�S�t bܟ�I��M?��K@t�ڙ��.��ٔ��z2���x5�%7 ��J[-o��8�_&�A|��� �Td0*&7�UXV�}�.�� b������}s���Qo>�+#�߃=-��fy@�7=��j��2�ij��Ȑ�?�������tP�(�*�1�zt��.�yBJ���@����5_�>F 2��q�'c��(�s��pnll�fG�R���rOSv&EU ��KK +`���#�ov�vVr<!&¾�}����ls|��/ �<`Crj��S}%?l�x�Mꟻ����+s�-YO��x����1,����]?;�8���'ׯ�X\<�m�}�O�I��3�E}��c;Hb5U�!�Fr���ث~��OG��A/�!���y����bH���I� X�#�*I���r����֒գ��äk_V�5�ή�XoPU�3�9�c8����OD��-53t����zzcl����/dž���ݕ���/�Q�B����<W��l�2Q��-$��r��o�E9��f�8�Y̐�sԱ��ÿ%��Z�E���Y8��� .� `'y@�Tqu#K�X��F����$����` ȃ���lp/�<���$��<�{����~X��I�`W��M��Ts�{�2�N"�V 6��ni��2n���dF��B�b���{Q �>�����*�'c�A����T&��s���z�$�`w���:�˷�/T��`�S�ò�Q\kl�Gt�ǣ�$�p����(��PR��^� �&������e������w�"�h`}��������l*�bn����Y��B��(G�H�y<P�H�~3���Eb�9{��~F�D��j�u���#k������������B�?��lEY�Mz�FTQXE����t,B�f�]��rqV6Ր���f~:�T�w)QOUà? @�o}��/w �4�[�y�c��0�< #^������ oS�o�M�d���aD�0�A����,��,VaӃ���X���s\���H�\�( !k��"��P�Ǐ� .w6j��f�F�L�=�1�ܗ_~���@=|}�� ��&��qh <pQ��x�ْ�ع���!D���&i>��a���3)W>u)�qzM��\L�9���-�$�$Ra� �J#s##<��hF��ҫ�^1j��,]�N�|�����z斬'|=;q�xe.�BoFW �\*ɞ��8�(�$!^�T��JY��4���=�e���y@���uR C*^lX�0�'/�Nl�*W���j��9�kМ�(�-�TÄ����@�˕��c�#ɜf������@�ſє�d�����c�0���>x���F߈6w�U��fh!W���O������j� �__ZX\| 9�x��qOP�3&mx�B��->�Y���5Ŕ ��c?=�Ɍ/@�a��(�v O���� ��7&F\[���/?+�j���hԷk�J&�c'��WD7H~����^:�>�����Cc��P��t����͍K���Fz�#I���z����[�t�fYM�%،{�F]�6 ԫ@F]�+lj�c�I�d$� �� ���"l\鐭 R�x��λ��"�n�� �Ht��X=T�@ڞ��P]c{H�l@V�7'=E�6:Zjcs��c��Q���U��A�UF�PҦ�%u�,�BΥ�N���P>3fB�n���g� �q3)�4�e]N1�S s� �> S�o)�L`��oRV�P��+~\�ԝ~���44�9�{W�4�- }�4LM��C�1���TC7FBUҀBSZ���h��N5�S �vx����<t|�$�)�r� s̓�#���z�:��:{�c�����{@T��Fc�]^����,�h7�(4�9�3 ���CY�� ?��l`�%iM�.�Ν�ț<ar��V���(=�s�}}eVN�gw���Ad��U-Fhi-[��\BKg�X~Kq��]P����:���s�:�����]Vy���3#�k[W�=�vW��\p3��jVM��V���2*$<l��3����b|t\2�ˁ`4�yO,��}�{h����|�d�ʻ)x��vƯ��ȳ��M�U�˱���Z&僢Yd=��n�f�<�d%v6�G�ӱD@�# ��-�äM�xӻ��l�y�|<@�'G�fy;8���F[�� �bM���Ҫ/>�����얬�jTQU7_�_���* ���HUk��ʕ@d`�< q��{����-<BE4ǭ �H��|��%�]� p��W��<��Kp����Gq5k�avh�^�#��Y��G������vt��r��QY����v,�I�OB���`"��p��z��D���(�J`��nJ�"_�z �c���aj��-�Z�: c�Ub�).�E�U����@q %���ɺ�S-�0dBlQ��6ljl`r����Xb��σ]�'X��'dO�fb#�IDw; :-A�Pw7��ތ���Dς[��t<Cl:����+*0���*���.jj($�&���Б�w��Ɏ�<�ħQ�0�xy�0=�Hy�����N��=�Dml��l0�����0��&�f0f �Θ*�ql *<�i)���/�ۘ���?e ��'Æd��h�ȍ�'���Q��@��>���Z�aM��]�T��9���;#ˡ�,��|����o�l���s�hɶ�����(�����@iĠ%w�ް#�����V�~?�5�[�jh����%�ƷG&$���:�K�8�p�m���H��,�I1�����0#�%��%4���:RH�+v��.��6���AQO�U � �$�E�Ν�ފk�T�l��i₫��u,�s-�.��Q\�%PX5�.���E��PY�7Y�EK� I�d�<H/}��Q�A�W��f[!' *b��(f ���/ݧ���!s��rQ:D� !3�!( vV� ����1f��`QI�q�c�}%-ni�i��ք���f)k:m�m�m��FX_�e�d�T\c�Z_�)��p&gҞ`z� �k�ka:G�&]�!Ơ�q������`�[@LF��y���(IY�X k��Ux&�� ����/!�^���@,Zb,�5 �����3i#�x� ��Ț@<�N�*(K��t�ϲ�Ұ��,�R.�Y2���Ni��o�H�$��ٰ�D`��}l����^W^�VȊ��= ����1��v[w;c�o's�L�Rˇs�9��i��y�wJ� ���5�ј�x|t���ކ���/_G�юAq����T�ܠ9���Uf�&dg���LX@b�Z�N}�y�G�d����|X,l8)7�>�q.���lz�ɷ��mt���Y�o��{��@�]��0��zO�G!�X���NOf�9������|�|�@�阙ٻ��W;�U^5�8� �h��Pȟ�J�ɶ;�����@?7�x��~�/�δw�{��,�h%{�t�L��� �t>������1 ���7)�xƏU\%}.�O$P��e0�� pGς}�����`!�b��-~V^�����:�akP�ά�c��{F���������c�`3��R���z���N {!�q�M���&��Vz��?�BH\OF]Tȯ��h��h;����0D@ղ[��(��&k�����nx<�չ��]�=�}H�g�;�M�N���'Û�;s�pk��N$�;K�(g }�J 'i�r_G�d0�g\{n�o���w!����Q�<�@=`������mc]]���&/$�~kiۏĝ�k�}����v'�����x���"fR)�r�gLJF�����g}�^ﷶb{�#xn�ۙ^�:�k�?�$��pck��X؉'7��Rk�ua!�Y �,�K�ɤ�X�2q �Uo�V9ݔ���t�9n��V9�4d��Q&z@�x�C�3 �C)�<���Z�pxE9<��y�� 4ؘ�� �ٙ�H�- -�����U�H�}Uy�5D��/+<�!�1��nN�{�u@����B�1P�V��k����n)VU1Z��-�6�o�>Թ�aC�Z 9�h?�i1 �E�̶8�=_���0�yY!PF}0|�+��A%���5�j�e����A��ς�/�I\z�_w}[�Wae���^5@��� @���J\�^ ��=����0|�j~�*�R��������kY�Zք,��e�8�/P���+��@$Ļ�n�����:X�����2�x�4�C�wv��]�7�:��P<YWb%�r�e�s�@*��{A|˃�<_Y%dE ���u��nꦞ� �;�v����� s�KϹ�I��es�4M�hz�A�*"L��6�#�om�I�֬Xt�|*�����a�B�,�k�!�\=�R͆T��HX3Bpq7���P*%�`2\�Ϲ��֥�ҙ�u}��+FX7̥ɾ����}�^&վ�R��;��Z� �>�V�`����]�xN^�nq��?�_8Ӻ�� ��v�%j]�|&`e�2P��z��0�o9#�g}���m���_�yE!ڬ�`n}���r����cN\ �x"�m0��n<ĺ��n�^�m�X7�M��d�<7^N/���7"X' �1$!h뀟�T���1y[҄�*ᥕ=���A�D�du��:Kqh�M�&!(���G�Sb��雒�?�OOBjʪR©���whȂk�^�;~�'��'ꭄ�j�Av���ڌ ^rU*�\�xX�hp���,�8�B�Je�RG���N �lӳV�1f#�lF������*>���|����糶�����1㴠�j�����~�U'!�oȁ*{��. wf��S|�y{Sfrffrf�x��W E- ��$$V# ����{@3$���Q�4pT/��#�� �FpQI��W{��K.g}�x~�O}��!���r�rP�G��s@���[�V���9�F9ec���P&6X�Jb*��@�I�F;sGP�T*�"�iu��'��)��'�\iJ��[�֝�j�`k�Ǽ]-�?��}��ϐ�ԳV�oƣ��8D?MFӴ��D�F ���~'�4ݶ�ɺ���m��p/�^=z39��m�����ha-��A�i�L�GZj�M.�w��p��AH�3s���Ƥ����vÌnM�U��w��"�/+)�<Y�0l h\ A�U+!�9�Yz��:���.��|��/5��D wc��� .!����sA�j�2��+�k������{�C }�ٓ�7x�����:��Y�N��b�n���ޮ��@������B)���^�n%�t��L$vN�R�y�,���d���6�G�W|�=�E4��� �W �`��XO&�a9ׅI�bI����(�c7<Q �jŬґ����Mؙ]��nc��a�2���S�Fتu(�����X��cьv!�Mx,Ӑkt67W�a�8ӗ�t�M�<`ld��R�ء�b�J��h7#XgkZ)՟����`%ՅT� �N\��u�m- �{{��2<����v���#ER���X���^!ڰl7�ZdkyO�\�~�5����y���\�ʕL�5=@������/Cp��]Zy-XoɷߔT �� ���ѳ�g�s��m��p����E��;�� ������M�$ׯ(��*��Q�y*�O�_|�蓑�����.\yp�����LGo��K���냉�4ѰB;�ѥ=��F�<�}ab��<E;������,�8�'$�7�mʡ�^���a����0 >���$�,O��'@W|>Y�x���>+6�ޚ�Na��� vK3�\���#���-��L_Or�Dz)��~�[:Mr�uO:�S0��p��K��G:��K��D���3��t�����L4�V7��#(e�z*̄g�E��7�6T���k @�:c6 @}o��b�̺a��$�ݸ%�;���vTt�����}gnۿ���ݍɥ9�ߝX?�w�M$P(�RF��}���зw����|�5�/���9�`�N'4�y�`s���[�_�8�E��K�Ɲ��R)<�q���*��K��Nɽ����N��mi����� {QME��ɛ�vÌ��"�[}��m`2���*Q���,�P,-�D"�l5΄�۳=n���=[ng'^J$�7�s�`ܳ���A)ϕ���R����&���\ҳ��^oM���nN�����I��|zʼn ����2� s�ւU�T����N1��t��!�S6�D/�}x#�VdQ>��,�C{k �;�5Q�e����I�I�=�!���;L۩K3��T'�e�]<�!��=a��k�� CF�Y �_�����B0�� ;T1S�^��|cQ���+m��Z�9`O���f�uà��}D#�U����IBBpsO�lP ������B�����K�}k<M�}�Ow/AE n�.����m}X�t��7#W�B�b��%_�ޞ�*���|N`�wvk�A_`���\z1�w�C�[��/� W�?��2��+��b�/<�'�%!H`��ZS�,X�à�_�j(�L�N���ro�����y�����A��<(ޙ)�z?\��@o*U�9$��V^�>�m�v,����d�h0h*��������A��H+wrJ�'��2��T*�"y����h��x'����.� Ng�EW|�ϼ�u�����ah�$_ٯ�ۙ�4��(p��8�vP�.�q$ @,�_��w�eY�F;$�rT��C�SI��LG�Y�=)��2���<�F�JFWE������u@4�p�4a�an��ĽaZ ww���`"��S:��.� n�q��c��_{�;��� ���sV����0����u!Ea������Lt��w��cP�@c>�l�����~l��0���8J���pҽ�3n��36��q��n��;]�Y�/Z~���Y@�Iɰ����ȍ�[���콌opzNZP��&�4��� � �֘�c�î��sC���B�t!~!�$�9���d��.� ��a��i�oC�K.F_�E"�� 3(l�V7��L�b��Z*�`,v6�܋U�l�J��D�--�:�������.$��zc0O{( z<�h<��L7��\��"!X��T\2�n8�+t4+ ��m.Px4����[ Q��0�ca!�1�T���Y��*�m�`�"��SQK� J�w@�*y��`��7v @�f|5/�m�Jǧ��Z�kF�T�b�`�U�`/v( �NB03��D�lp��d!x'�19#��IF�c\���N�j�aP�~j��ԫC�Z[�$���3d�h���� C� ?�怚� �t:٭�i��y�4� �\�7'�ݣ�=!ous"j�]���7J�*e}h�����qR�i���C�@���IH�vrk0�$���u@e)���5d[i�Xđ��Ʃ��B�jh�;8�p���8������Y0k�C� �ѓ���, �m�}�Z03b�6���π! ѺaT���B� ҆!X�L��le�_�C�[sC� �z�h�u�y� f6=�-[�!�s�.��T0<kV}�t�����6���@k�i�� ��@�@�I1[�j����Q<����3�d�̨����:�l-�����V�`@v�4�� C�瀶~�<Q��RaC�Xd���$@[�/�R���oJR�jX��UKq��֛h\ ���!X����B��AC�[�[�� *I:���AF]�c���PAT-D��E�hK�t�+�U���������j���b���?���_�ղ�u5Ų`�?��8�.joϦI��F�D�SςYMȘ��P� �Bp�$ڲ��%�U�`�+�Ѫ�Qu�'h�^G�x �k���7�1X�y(Q�oy�v����: �`\�j�]CCm@��뀟�.������W�~�O���F����T�X5��]�:`}X(�ł(:�������]NA�E�! M�C|Q���y_�J#��hr��r(������@%����Tw����8�9�������e����b��W��RF50s��*�E'~ߖm�#��x��ȕ Z��C�e�����Q���Л�H�ȧ֤������A�ՕKskVНY$��m<j�n�� _È�](��5��~��4��R�Z�U,�|�B��|�뤕L*Ż轛.��*��8�#�R.���O�G+7E[����ȑlk�j��3�-{�el]B� H֙G#�7�~cd�4/��1.(ٱ�����2n:��:"���x���uw�9�En��:��|�����U�jIu�NWV�̈�*�<q"2�]����7�|���{}��Z��ǯ��f����/���ޜ��p���: �w�e�s.0��܈��|2{�AJ��Ռ�0�f��t �����߿��~����t������/��n6{�͛ٳ/�[3"��~��+�s��l��߿;{���/f3"��Rx�ųg/f�����n��/���~9������'�}��W��/�d����=>{�J�����/_����g��|��� �����$3 h]�33�srBG����of�7�~����qv���_�����1��\?���| �����8��9;��n��x�g���Q���߿��������������ߐ��`"��_�mF4g�N��7�;��8;~v6��?�;�W�p��hL����_����of�g��tv|�3Ҁ��ٗ�P�+��v��R��JH�.����3��9�5h���1 ����!�=y}�R���>y�Y�>�駟^���b^����ǔ�zVў"O^��w�����?=~M�$��_i&�[���������W������[�oN�"���ϯ~���?DQ����B��x�Y���g��+� >3� 0d��63�HJ/��ŋ��/�<�s�y�!E�?[�e�D�'��oT�\o�I'!��%v@Ȗ��|2�l��]p�.���ub��m��Ng����ǟZ��\���D@��8���d�h��+!��� A圀��>�U�$W��je���a����rR|�Xx�p�s�%�WO��%2��'��� 1J��iZZ��dqi-ip��-�ǁ#m����`��(p�^��:���/�L�!�j#� r��ѣ�M�!}�?��ל�"�R��&�����!v�� 7��Ʉ�>s�>Z�h#�D��7�qtt�(3!`� u�;�� 8���T�@`�õ�G�@���>�"4���O�e�ύ�]h�;��a)D�G�@��T����|��K��l3BU��+#`�@ �ah8f�P�,�?y}�kjD�%���߂�?��|D8��d���,i=���� {��)��.]�c�"���nӀ�~L�^5�!��@`.j'����~:���J����� �Fƙ5�EY-ѕ�7�kq ��e%�H�DŽc_�I������qX�]pQ�,�D�Sq���X����V�9'`�p�(����#o�&-��e��JLF��L���8��m���>H&þ�O����"���㠮Rƀ�)h�Ү.$��ݨ��?�0 ֵ����t�|g<e��һ�R�K8�g ���I��������Y�)i/R}��;`�V]�C�¨ C@ᕑ�? �1Sq� &!`�@�������i{��w*���^�>8�4��p-��c�$D%'����_����$�������KN#5*}��~�8)�d;`J@�t�1��[ N��` �1����2�1��Y<+G�d�`. �ČVci �#I���֢�b��2^Mz�Z�G��H�� �}D�I��w.�A��o �)ٺ�$c�} �w.�>��;p�@�9p\�I�K�9p��z_����$[.hE�Zh�-Y0�@�Kϯ!�<&� �%╒̋K�O� �J@�4��.���&d>gfK��&_sI��Dp��k��RG"=,vR�A�^�8�&�g�j�����!�Q�l���%Fd��������!���9��L�ה�e}���,�Ⱦ̪z�ef��8x7��+��,qo%V�?r�=XeHs�����ǥT��N�^4&��ݼ,�|b/����&��HQ��@�\1���%�o�Z�+�d< gZI㵤y���T6~��%�#g�ۈc����X�{,���֚q��$ a�)������CPg+NDt.2.s-�'���]J�@����E�U��=�<,)�Z�vq�|e�rP&l��� ̈́�W�\�{���O�I7^1�ą���X���a�9B�����a�Ov!r��yYD�w��G�T;F�D�e��H�e�<uUի�*����+��NIu���Iz;�ו7�#m h�p�.��,b]"�<��� �"�p��R��P��ٽ�R�TD�v0�����-�t�;;` ���S�濬ኋ,.k8|6o8�tZ0����(CE}r�4�[☊���ai{X�.��8�3�� ��YąA���;?m�#^���(v��ƀ�����Bu.�e'R��"��%�pgg�mwijK=+�̜,K��h���c���r��Y� ]{��� �\�0��S�G�H��a*����� 9���A �(�ҵ�n6����踣��r-g�����ր2�Ԟ���F �:��0����mیc��p�:f�i�,vBYT�< ����*B "�|�ʅ�s��u�,e��Yo� �%�vDz��8|Kr�g-,-$�@)�t�ʺ[D��8JD��RE^r�1M��y�L̀��,�"��E���* �J�'��4&R�GK&W��x�I�J���J�*G�s5y�*W�q��%�G%�՝E@��9� ျN,�upx�"�N�� ��Ծt8Hǘ����ė�;8���oK����gC{*�<��N&�`��E����ܸ��R"(������ɫ~�q��C�^Y�)�mE$� &��w��3�֕˞��i7��<���p��e�Ö�Z8�C�(���X�y��.�2^�i@�#�ӡLu6�%�?�NH��0��'ْBH9��ரg�G���8�I�@H�_��F��!\�)8U���G��R5׆X �;O����ݞse��*�k8�a�\N����?}Z�p#8����p��GHZ7���̗''�^�m�?n� -?��c��4 ��H�猞3ښ��I1BhrU�C���]$9���z/�;�R. ���PNq}�V�}��WXt�<�҇�V�</���[������i��<�Zv�����n獋��{u�";b�i���wx8��� ���ՏQ^�$$'B�F(���>�!�;�HpF� [��*E�\��D232��]��'9\��"$��π��g���� N�z%�"U�4����`_�/j��خ���U���C�r���_�n��G�7���8ɢ��fgm��b98��m�WB�H:v��)g�K.]�a|))�b��\�D�a Ǯ�h '!9B\�H�Y�� v�|�7���W��ܵeՖE[����|�.V�ZP,�"<$).�8�08���&�C��o�e����>�(!ơtn �r��ʎ�Aΐ�L@ݴ��ԁ$a`��3"�q6�R���l�8DJ<J�sN�U@:�k@�� ��3qBd�D ɬ�/u�!V-���m�a����ڼ��+�/SF�����=�/I?'K�[�Gac�p8!�ג��PR����j���hׂ��F�.UNV��,����?�[�����v�^���<jv;/���=���i�[rz���GS�A�iۈ�ĵ�i��7�O݄� E���*�a� 8��8Γ@��m��\����E�,�d��E��8n�d����f���m@@c`E���3�S���﯀s��\����D�H�.e�Oo�Õ����n�Ԏh��M���&+�"4�r�������q?��=r����A����n�7�y���\wMJ@pWէ0UA3ʏ�G(��^x�AG�d�)kw�<r�I�c���~Ù��4G���q��x�l��b�ES�f�7G��PŌ,IrQ�����B�?��=��{# �y#��[jjsQ����(\G�,s�I:���JqItQ�%�"ȩ��,g��=shod�cV�C#5<�9��� ��\ۨ���:���"kV����!K^�q"��;��=�Ia�.��������a��2��-on���Z8l? D� D*�un�j�n��PfE�����*�!�`5��P)�C�K�����a �ޔ���N�f�+ˢ.�i1-�����u�0�oi{�`^��#�������A�pSgL�;"W�a�G�Z�D��(�� �CS˻^�NC�퍵Aoz�If �����f8d>�j��9��XV�}g��j�BG�*p�B�*�a|�8���AN� k��l���e)`��@̃��q�B.�z�>�(IFl��w��g��L��T�Q���g�p�V�E.p�,�_5�EO���t�b35�VW �y#R>L^%aY��$�[!���0��V�&�o�=&��Az�p��1K�-��Wőh���V�Iһg�����1Sw�� ;}���ZYV����N�4�z϶�yӶ��e5�R���\ K۴�Ri�n`�~q���cq���aK�Ĉf�i��c��qF�T~E���;�t��`���D������1� ���|�`�p�q�̂l�tZNYJ{��2P&*�&��芉� �pX|E���H��u��h$���w�9��qB��O��}0�����(`?9���ӿ��G���Nꧪ9���23_Ě��֦^��Mp80�h��R�.� �*dnjV���0� ���0�cJgD8���RP����~���=���/}�̎i �d��G:�kfW8[�IrJԮ�@�u0I�Z��j �ˆ1���IkD�,� �b�M0 ����q�@q&X�y���ڽ#P�](#`�3)b>���Q��]�=�dz8���2�ַ��C�Mq(c��dW� U��%����A!:=��O���:�%g���"�����n�Χo��=�3�eC�+�S�z: EY� J]f�����:���Z����$�q�����߸=$u\�e{`!�q;D���n�"�|j�_��2�}�Yx���b��]{_�I�N��N��g6����g��6�ؔ�yia��w9�G¾�ު�D��+��+?�+aش3�l8���C�Ȓk�j���ñk#6��h��m{d����K���a}{X�,���V�^jE<Xv��>�p>8�Ԫ��vv����SS�^�qH\��O�pg�|�7�4˔�`�aT��1�t�aT��9� ܨ=C4 �D����:�M�lDQ{�Kq�a��46ƀT�Dt [�eQP��'!ހrR 8]� ��� ݤ7�@���^��d&U(��6:����tHҫ��|eE�U`u�����L�>���0#���@�C�ؤ=tk@����=��&EQn��63�H�Ge�~�2]���8!V�'_eگ�/�͂u�U��*�J,�\�ի!��7۳��T��a�b�Pp(a�8Z��k��� �>���:�O(���l�یW����Q��� ���n��Fg=��4��R�v���ͪ^""nD�u8�D�;X�SB���4��͍nF���(42 $8<gX���c�FI �=vu{Lǿ��Ɏ�e؈WCf��Baם�7[̃e�������V�m�t��~O�d�d��K����ZyE�*0���b�R@��d�Wh���%6e1�!3�ЫMq����,��H_��Uה���ڃ�o/�4d?(��̓����9���� =>�(�x�e�.�)�:ק�!��g]c��t����d#�"��� �^FG��S�Y�e% !pe"�'8ւ9�R���H���X�>ސ�b½��-����Bt��8t;�"��U�9H�(�]c��!m��w�+ep \lx!A��%h�VD���u��k-���!f��Te9��EMT J#���6�1J�8��/����=&L���� �uzY��`��G:LW�9�����8Н���<C�U>\p:�����Xl���&���Q��i�S������Z�������`���3��|%p5��r_��8�VP�������kqؖ|�H��5%63� ��.�@ժb�3phO�(�DMv��Gk�y�p��Q�E|o��8Ȋ�D��UK����^�R3��� �,6U��H�Uc8L [�� �̽���{{�w��?�*e�z6 1�����\�%�CH�1`w0���%c�.y�ҕB�9}h�&��ֳ^4�T���B.�[�0����w캈��.��c�e��o�_�`�ZЀ��#��f9 �2P6���!�5�.3-�+S��I��펳���8�q:���[��d�5,mK��="n/�]_�Z9�h�R} h#<g8.!`e{���k�1y|��� ˟c� EvE�!��~ ��Χ����t|��_�;Λʏ��wa��������1����eR��5��z�RD��z]�3��2a.�B�<%��k�p�F� q�D�x �=����'2N���1L@/�s�ʳi��7�ジo8<>���hC�I[��jţ��q 1F��8������Ǹ�p�kχ�PyZwy9�[��>r����x*�T�\��سƜ��?K��0�q,�Ӛu�On��"*E,�>�3Q�8�ݧ0#g��gf��oF(��jv� J�FĔ��`B�T^p�oNJ��nG�&�=���y9�L^��#٥8Hz5{[_�U�&�S-;P{�@�?h�� ����eۘ.��qV� z-bH^��{}%�/�n3¹�}f��.���Ƹn��PQ�5 h8j�Ӥ��"bq�V�P���A,0'���2E�9w)Հ�D�=h��d�:P$��|LqP˵hou�w�X!ޏ�a�W�>gVoϛ3�j��ܽ���&=���?BC�C.�N&�/h@�њ�D�F.�h�u8F~���L��×�XfK^�p����0����;�T�@���"9� �ah�U��V�C`�;p�T�[8X�eA��=��@�EL���z� ��V}Kd�g�?��|á4��h8��]�c����ã�e��������8���`��� ��N2�(`����x1 �w2J@>}�nD�x`WU��or@/��N���՜g�5�B���GR�p�� �*�_��0Ww���2�}�v����Q�z6�b#+ـu�e2s�m6입��g]�[M� Ik�ׁ�n!�mEh�~�vŌ�b�e��`t� �e��*�9eR��n[����&8���S�F�ouAk^�#�au�ߖ�� a���[LZ��'a�>�o��O�@c���D�Y���m�L�Vk�t@Ύf�su�?�!UHv>Fעq�1� 0��"oS�M��Pr�"s��S>Dސj8(8����ԭi�]�p�њ�?�0��=q�:s1�$���n�2IN��b8z�dQ��XK����n�<����sw.-w�U��L+�?�甯���>����IH�#Ղ��$D= �#8b��٢����{���� �в�ϸ�M�!��\QV��ٞӽ��jw���re���u'!�0�b��}��`��shW�U뜇O�f�����#9% L8�#��tlb8b ��p�q�V������D�����哆�����T�D�)��Y��D � `����)q �w S~�R�<�h�A�s��Y�D! ��J1��Í?��⨢>u���#��8�_x���<=X�HXv���Y1��8���i^��WBll��p�/���/Ԫ��F�k��p����.ڜ�G�fߴ��@���^axU"S���?r��0���c�h{����B[��/y��;X*��8���3L`d��ȤӬa�x��j�ym��8 ���>��2��7�m<<l˶m���[�u�*I��at�(8¥\p�ڣ}y���"�Ҩ�1�{~�h)[�����wx}���p]�΄�l�I�`��5.+(qmDnX���7��[K@��E�0����X.�}K��O8�&q�+!Re��̈��]_{Л.~���N�믄��1�t�A{A*Ct��3�۵�SWp o8����PB�5���j���0g;�#'��CJLH���_tz��a:�&7ccKXv����~��JEV˯a.��f�r�5�H��J��VD$Vv�ZSI�pH*6���ݐ��������Җ�������j]��m�C �b3L��8������-m��8#�O_�E:| �D8��0������$�s���W7}%�д_�F�����X\?�O^ k�c蕰����.�mZр�o��]��4�8��U)��zԁ�8�'8����nq{�h���3�ڎ廥�v��7�xq:���A0I�A����� l�%��Y��Dz�۱���\��ǁI�&�4m;�?�4�$�;�㈷�ˌ�%8�rC۱��:�QI����=��G����B�2�8l;���L�ձ���i�nyנg7�h�� ���8L�K�dU ]��&��=��;#y�8;����ǁ6��$KZ ��k8�b��V��g�`1 ��ÃN�%$|���e��������A�v.dv��R�I������� G�Z��O)[�G8��� ��Jx ��`YI$�t'�$ۑA�� �^Xō�hbE8����Ɗ�N/ȉ��i�Wd2��������p��t[U�V�J �jsV�����6��x ���놬�8��=B����WND��}�3!��U���Ě�.���<�4�3��g�i��gB�7b��].� g���^@�_�*�uτ��O%C}&�f��G�tʲ��o�#P�j*��)������Lս/�ǁ�&��M�CJ(�D 6-����("�QA[BZ��PĤB�-�����|�i&?ҟ���p��q�Ӓ�;���l�5��(Z�P�����G ��>����-��e&A���N:s��-�L�κ ���n"������ D^į�e��$ր]���jc �^"�˷䇣T¦8��=:�3O�=x��D4=voRz���"eH��[�G�~�'Ǘ��>��п�3I �H�,�R#�q�I�8FWB�}[� 8��=�^P������b"����O�gJ� �q)`x�Vt�NWdI����XH����@V���[^NId%Ą���߬��px��_����.��ql{`4���nyC8��zf�2pGx(L����{�1@<��A�c��ޣ3a�)�_b�X�I�8(��m)��o�F�D��/�]� �j��H[6� ��W�;�!���mj�`t��|�g�����*��|�#;�%��+! �_ր?��#��8��=&�J���� [ �+��Xr�.U�v���a�/�a��8 �w2 ��c�X��``��_��y���[�Y�1���f����>�n�!F�Y������!�z��=b�M��$��EOR�g/��F\�?$^r(���aç�ÆOv6|2���B�zG�d�s2�L��z�wU�.h^�#� ��m����S^e��;��l�FG����! �&�dp>8�2�:���Ui�f��Z��n�t�rù*���J�_�pm��8��=��N-;!2vt?m�-�x�ǽC��os �]��LskJ�ר7��c��ϱ�o�v �8�e�ŏ�h��\jl�|m�@��DZ���C� 6yyo��1�'��;�����&�^JGh��]r�P`xڏ,��^)DҢ �Ex�r|�N��|1��W�^*��5[���=��8�[�}��6g;�,�� O�d֥���k�(�t��"!N1Āv�z���1`)�\�SA` ��i]U���> �e�?o��?l{`�g�ڑ:�P��Too�,E����ڀ%�5���8?4�ͺ��8�n��h|(��R����L@y%Ʉxx4-����/sبa|�a#;K�z����2�ߌ� ���ʿ��N�pkB�]��=K��#����;�j�,Z����a�̺�t�5��,�u�M3�P��pl�Q �_6�u����Ƚ�rr��>W���_#i���8ph���5����E���Y���>�Џ� �Y�ԖT� �6�h��(v���x����Y5`��10�Ck�w���,`-N��xڟo:��73_�����Af��v����g ސ5{&���XIuʐS%qcN2�'m����x�� ���G�x��Q�����|QZF���?�)x������<�q���{뛡��LWv!��Cy�:�ܧrȚ�aI��U��y4�c��K��g[�[�|-2�~.Wd-P� {�0��h�;S.���X3�x��B�VcUs�_�U5Ǩ�V�y�;��^i.k�ӗ�Σ)a�}�Єv7T�EL���y����[z�S��t:Q�˩9RC�9<L����!�Oz�4�t�ix���wm�2���*j��^>��IEND�B`�PKb��\ �oV..templates/isis/index.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Templates.isis * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @since 3.0 */ defined('_JEXEC') or die; $app = JFactory::getApplication(); $doc = JFactory::getDocument(); $lang = JFactory::getLanguage(); $this->language = $doc->language; $this->direction = $doc->direction; $input = $app->input; $user = JFactory::getUser(); // Add JavaScript Frameworks JHtml::_('bootstrap.framework'); $doc->addScriptVersion($this->baseurl . '/templates/' . $this->template . '/js/template.js'); // Add Stylesheets $doc->addStyleSheetVersion($this->baseurl . '/templates/' . $this->template . '/css/template' . ($this->direction == 'rtl' ? '-rtl' : '') . '.css'); // Load custom.css $file = 'templates/' . $this->template . '/css/custom.css'; if (is_file($file)) { $doc->addStyleSheetVersion($file); } // Load specific language related CSS $file = 'language/' . $lang->getTag() . '/' . $lang->getTag() . '.css'; if (is_file($file)) { $doc->addStyleSheetVersion($file); } // Detecting Active Variables $option = $input->get('option', ''); $view = $input->get('view', ''); $layout = $input->get('layout', ''); $task = $input->get('task', ''); $itemid = $input->get('Itemid', ''); $sitename = htmlspecialchars($app->get('sitename', ''), ENT_QUOTES, 'UTF-8'); $cpanel = ($option === 'com_cpanel'); $hidden = JFactory::getApplication()->input->get('hidemainmenu'); $showSubmenu = false; $this->submenumodules = JModuleHelper::getModules('submenu'); foreach ($this->submenumodules as $submenumodule) { $output = JModuleHelper::renderModule($submenumodule); if (strlen($output)) { $showSubmenu = true; break; } } // Template Parameters $displayHeader = $this->params->get('displayHeader', '1'); $statusFixed = $this->params->get('statusFixed', '1'); $stickyToolbar = $this->params->get('stickyToolbar', '1'); // Header classes $template_is_light = ($this->params->get('templateColor') && colorIsLight($this->params->get('templateColor'))); $header_is_light = ($displayHeader && $this->params->get('headerColor') && colorIsLight($this->params->get('headerColor'))); if ($displayHeader) { // Logo file if ($this->params->get('logoFile')) { $logo = JUri::root() . $this->params->get('logoFile'); } else { $logo = $this->baseurl . '/templates/' . $this->template . '/images/logo' . ($header_is_light ? '-inverse' : '') . '.png'; } } function colorIsLight($color) { $r = hexdec(substr($color, 1, 2)); $g = hexdec(substr($color, 3, 2)); $b = hexdec(substr($color, 5, 2)); $yiq = (($r * 299) + ($g * 587) + ($b * 114)) / 1000; return $yiq >= 200; } ?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>"> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <jdoc:include type="head" /> <!-- Template color --> <?php if ($this->params->get('templateColor')) : ?> <style type="text/css"> .navbar-inner, .navbar-inverse .navbar-inner, .dropdown-menu li > a:hover, .dropdown-menu .active > a, .dropdown-menu .active > a:hover, .navbar-inverse .nav li.dropdown.open > .dropdown-toggle, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle, #status.status-top { background: <?php echo $this->params->get('templateColor'); ?>; } </style> <?php endif; ?> <!-- Template header color --> <?php if ($displayHeader && $this->params->get('headerColor')) : ?> <style type="text/css"> .header { background: <?php echo $this->params->get('headerColor'); ?>; } </style> <?php endif; ?> <!-- Sidebar background color --> <?php if ($this->params->get('sidebarColor')) : ?> <style type="text/css"> .nav-list > .active > a, .nav-list > .active > a:hover { background: <?php echo $this->params->get('sidebarColor'); ?>; } </style> <?php endif; ?> <!-- Link color --> <?php if ($this->params->get('linkColor')) : ?> <style type="text/css"> a, .j-toggle-sidebar-button { color: <?php echo $this->params->get('linkColor'); ?>; } </style> <?php endif; ?> <!--[if lt IE 9]> <script src="<?php echo JUri::root(true); ?>/media/jui/js/html5.js"></script> <![endif]--> </head> <body class="admin <?php echo $option . ' view-' . $view . ' layout-' . $layout . ' task-' . $task . ' itemid-' . $itemid; ?>"> <!-- Top Navigation --> <nav class="navbar<?php echo $template_is_light ? '' : ' navbar-inverse'; ?> navbar-fixed-top"> <div class="navbar-inner"> <div class="container-fluid"> <?php if ($this->params->get('admin_menus') != '0') : ?> <a href="#" class="btn btn-navbar collapsed" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <?php endif; ?> <a class="admin-logo <?php echo ($hidden ? 'disabled' : ''); ?>" <?php echo ($hidden ? '' : 'href="' . $this->baseurl . '"'); ?>><span class="icon-joomla"></span></a> <a class="brand hidden-desktop hidden-tablet" href="<?php echo JUri::root(); ?>" title="<?php echo JText::sprintf('TPL_ISIS_PREVIEW', $sitename); ?>" target="_blank"><?php echo JHtml::_('string.truncate', $sitename, 14, false, false); ?> <span class="icon-out-2 small"></span></a> <div<?php echo ($this->params->get('admin_menus') != '0') ? ' class="nav-collapse collapse"' : ''; ?>> <jdoc:include type="modules" name="menu" style="none" /> <ul class="nav nav-user<?php echo ($this->direction == 'rtl') ? ' pull-left' : ' pull-right'; ?>"> <li class="dropdown"> <a class="<?php echo ($hidden ? ' disabled' : 'dropdown-toggle'); ?>" data-toggle="<?php echo ($hidden ? '' : 'dropdown'); ?>" <?php echo ($hidden ? '' : 'href="#"'); ?>><span class="icon-cog"></span> <span class="caret"></span></a> <ul class="dropdown-menu"> <?php if (!$hidden) : ?> <li> <span> <span class="icon-user"></span> <strong><?php echo $user->name; ?></strong> </span> </li> <li class="divider"></li> <li> <a href="index.php?option=com_admin&task=profile.edit&id=<?php echo $user->id; ?>"><?php echo JText::_('TPL_ISIS_EDIT_ACCOUNT'); ?></a> </li> <li class="divider"></li> <li class=""> <a href="<?php echo JRoute::_('index.php?option=com_login&task=logout&' . JSession::getFormToken() . '=1'); ?>"><?php echo JText::_('TPL_ISIS_LOGOUT'); ?></a> </li> <?php endif; ?> </ul> </li> </ul> <a class="brand visible-desktop visible-tablet" href="<?php echo JUri::root(); ?>" title="<?php echo JText::sprintf('TPL_ISIS_PREVIEW', $sitename); ?>" target="_blank"><?php echo JHtml::_('string.truncate', $sitename, 14, false, false); ?> <span class="icon-out-2 small"></span></a> </div> <!--/.nav-collapse --> </div> </div> </nav> <!-- Header --> <?php if ($displayHeader) : ?> <header class="header<?php echo $header_is_light ? ' header-inverse' : ''; ?>"> <div class="container-logo"> <img src="<?php echo $logo; ?>" class="logo" alt="<?php echo $sitename;?>" /> </div> <div class="container-title"> <jdoc:include type="modules" name="title" /> </div> </header> <?php endif; ?> <?php if ((!$statusFixed) && ($this->countModules('status'))) : ?> <!-- Begin Status Module --> <div id="status" class="navbar status-top hidden-phone"> <div class="btn-toolbar"> <jdoc:include type="modules" name="status" style="no" /> </div> <div class="clearfix"></div> </div> <!-- End Status Module --> <?php endif; ?> <?php if (!$cpanel) : ?> <!-- Subheader --> <a class="btn btn-subhead" data-toggle="collapse" data-target=".subhead-collapse"><?php echo JText::_('TPL_ISIS_TOOLBAR'); ?> <span class="icon-wrench"></span></a> <div class="subhead-collapse collapse"> <div class="subhead"> <div class="container-fluid"> <div id="container-collapse" class="container-collapse"></div> <div class="row-fluid"> <div class="span12"> <jdoc:include type="modules" name="toolbar" style="no" /> </div> </div> </div> </div> </div> <?php else : ?> <div style="margin-bottom: 20px"></div> <?php endif; ?> <!-- container-fluid --> <div class="container-fluid container-main"> <section id="content"> <!-- Begin Content --> <jdoc:include type="modules" name="top" style="xhtml" /> <div class="row-fluid"> <?php if ($showSubmenu) : ?> <div class="span2"> <jdoc:include type="modules" name="submenu" style="none" /> </div> <div class="span10"> <?php else : ?> <div class="span12"> <?php endif; ?> <jdoc:include type="message" /> <?php // Show the page title here if the header is hidden if (!$displayHeader) : ?> <h1 class="content-title"><?php echo JHtml::_('string.truncate', $app->JComponentTitle, 0, false, false); ?></h1> <?php endif; ?> <jdoc:include type="component" /> </div> </div> <?php if ($this->countModules('bottom')) : ?> <jdoc:include type="modules" name="bottom" style="xhtml" /> <?php endif; ?> <!-- End Content --> </section> <?php if (!$this->countModules('status') || (!$statusFixed && $this->countModules('status'))) : ?> <footer class="footer"> <p align="center"> <jdoc:include type="modules" name="footer" style="no" /> © <?php echo $sitename; ?> <?php echo date('Y'); ?></p> </footer> <?php endif; ?> </div> <?php if (($statusFixed) && ($this->countModules('status'))) : ?> <!-- Begin Status Module --> <div id="status" class="navbar navbar-fixed-bottom hidden-phone"> <div class="btn-toolbar"> <div class="btn-group pull-right"> <p> <jdoc:include type="modules" name="footer" style="no" /> © <?php echo date('Y'); ?> <?php echo $sitename; ?> </p> </div> <jdoc:include type="modules" name="status" style="no" /> </div> </div> <!-- End Status Module --> <?php endif; ?> <jdoc:include type="modules" name="debug" style="none" /> <?php if ($stickyToolbar) : ?> <script> jQuery(function($) { var navTop; var isFixed = false; processScrollInit(); processScroll(); $(window).on('resize', processScrollInit); $(window).on('scroll', processScroll); function processScrollInit() { if ($('.subhead').length) { navTop = $('.subhead').length && $('.subhead').offset().top - <?php echo ($displayHeader || !$statusFixed) ? 30 : 20;?>; // Fix the container top $(".container-main").css("top", $('.subhead').height() + $('nav.navbar').height()); // Only apply the scrollspy when the toolbar is not collapsed if (document.body.clientWidth > 480) { $('.subhead-collapse').height($('.subhead').height()); $('.subhead').scrollspy({offset: {top: $('.subhead').offset().top - $('nav.navbar').height()}}); } } } function processScroll() { if ($('.subhead').length) { var scrollTop = $(window).scrollTop(); if (scrollTop >= navTop && !isFixed) { isFixed = true; $('.subhead').addClass('subhead-fixed'); // Fix the container top $(".container-main").css("top", $('.subhead').height() + $('nav.navbar').height()); } else if (scrollTop <= navTop && isFixed) { isFixed = false; $('.subhead').removeClass('subhead-fixed'); } } } }); </script> <?php endif; ?> </body> </html> PKb��\" ����templates/isis/favicon.iconu�[����PNG IHDR�asRGB��� pHYs��$iTXtXML:com.adobe.xmp<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.4.0"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/"> <tiff:ResolutionUnit>2</tiff:ResolutionUnit> <tiff:Compression>5</tiff:Compression> <tiff:XResolution>72</tiff:XResolution> <tiff:Orientation>1</tiff:Orientation> <tiff:YResolution>72</tiff:YResolution> <exif:PixelXDimension>16</exif:PixelXDimension> <exif:ColorSpace>1</exif:ColorSpace> <exif:PixelYDimension>16</exif:PixelYDimension> <dc:subject> <rdf:Seq/> </dc:subject> <xmp:ModifyDate>2015:03:15 13:03:46</xmp:ModifyDate> <xmp:CreatorTool>Pixelmator 3.3.1</xmp:CreatorTool> </rdf:Description> </rdf:RDF> </x:xmpmeta> >Iv]XIDAT8}�]h\E�ϙ�{wﺻI]m�XClK4�RE�w-E��(->�f|)y�~(Z�"ȢA�R�h�Z�B46M��-$ӆ6&-k41����c�xn��S��\����s��g;^��t}�Pc{���յ�� �uQ��{VJ�5"I"�:�����X���7���O))����:L;�j8�lQ�P ��%!��럒|2��qye��4��m�m<3�@�!��$�+c粒���J�ۤ-S�R��Hk�A8$��k��� )��[�O�/�ov,�6�˔�}�O0|� ��n�����N�ҀF�{Ӂ�{ǽLK�)��{�|�G�� ʭ�"W���?��X-����Y�W�~Rn�2�˰o.� x�*S߇�Kê: �4`DF�oԝ.(Y�&pKq��ѵX�n���9�bbn��|��cc�N��ݛZĴ�&��ܖۑ�t�B���Trj]ޱ*�Sxqd�w?�� p�|���n�)3^E8Y��⑷g"rU`Wn�A�O�5���?�H�lpY[��Q8��+��]��r�q�oޱe��t����j Z�G�O\}�����r���7�wَ�C����V6t�b70j�#Ū�!��_WH+��R����F&/������Ϗ��j.9W���xZA!�/�W> `[�X;���GP���w6�V���R�{4w�e��WD�0�Α�h�������Lȣ��%J�Л��z����=i ZϰŠ��Q����^"���O:58՛�k��~h���l`M��ǽS�qV1DZ���m���hb��w�yu�K����o��;�������DS(IEND�B`�PKb��\x�qHcctemplates/isis/login.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Templates.isis * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $app = JFactory::getApplication(); $doc = JFactory::getDocument(); $lang = JFactory::getLanguage(); // Color Params $template_is_light = ($this->params->get('templateColor') && colorIsLight($this->params->get('templateColor'))); // Add JavaScript Frameworks JHtml::_('bootstrap.framework'); JHtml::_('bootstrap.tooltip'); // Add Stylesheets $doc->addStyleSheet($this->baseurl . '/templates/' . $this->template . '/css/template' . ($this->direction == 'rtl' ? '-rtl' : '') . '.css'); // Load optional RTL Bootstrap CSS JHtml::_('bootstrap.loadCss', false, $this->direction); // Load specific language related CSS $file = 'language/' . $lang->getTag() . '/' . $lang->getTag() . '.css'; if (is_file($file)) { $doc->addStyleSheet($file); } // Detecting Active Variables $option = $app->input->getCmd('option', ''); $view = $app->input->getCmd('view', ''); $layout = $app->input->getCmd('layout', ''); $task = $app->input->getCmd('task', ''); $itemid = $app->input->getCmd('Itemid', ''); $sitename = $app->get('sitename'); function colorIsLight($color) { $r = hexdec(substr($color, 1, 2)); $g = hexdec(substr($color, 3, 2)); $b = hexdec(substr($color, 5, 2)); $yiq = (($r * 299) + ($g * 587) + ($b * 114)) / 1000; return $yiq >= 200; } ?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" > <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <jdoc:include type="head" /> <style type="text/css"> /* Template color */ <?php if ($this->params->get('templateColor')) : ?> .view-login { background: <?php echo $this->params->get('templateColor'); ?>; } <?php endif; ?> /* Responsive Styles */ @media (max-width: 480px) { .view-login .container { margin-top: -170px; } .btn { font-size: 13px; padding: 4px 10px 4px; } } <?php // Check if debug is on ?> <?php if ($app->get('debug_lang', 1) || $app->get('debug', 1)) : ?> .view-login .container { position: static; margin-top: 20px; margin-left: auto; margin-right: auto; } .view-login .navbar-fixed-bottom { display: none; } <?php endif; ?> </style> <!--[if lt IE 9]> <script src="<?php echo JUri::root(true); ?>/media/jui/js/html5.js"></script> <![endif]--> </head> <body class="site <?php echo $option . " view-" . $view . " layout-" . $layout . " task-" . $task . " itemid-" . $itemid . " "; ?>"> <!-- Container --> <div class="container"> <div id="content"> <!-- Begin Content --> <div id="element-box" class="login well"> <?php if ($loginLogoFile = $this->params->get('loginLogoFile')) : ?> <img src="<?php echo JUri::root() . $loginLogoFile; ?>" alt="<?php echo $sitename; ?>" /> <?php else: ?> <img src="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/images/joomla.png" alt="<?php echo $sitename; ?>" /> <?php endif; ?> <hr /> <jdoc:include type="message" /> <jdoc:include type="component" /> </div> <noscript> <?php echo JText::_('JGLOBAL_WARNJAVASCRIPT'); ?> </noscript> <!-- End Content --> </div> </div> <div class="navbar<?php echo $template_is_light ? ' navbar-inverse' : ''; ?> navbar-fixed-bottom hidden-phone"> <p class="pull-right"> © <?php echo date('Y'); ?> <?php echo $sitename; ?> </p> <a class="login-joomla hasTooltip" href="http://www.joomla.org" target="_blank" title="<?php echo JHtml::tooltipText('TPL_ISIS_ISFREESOFTWARE'); ?>"><span class="icon-joomla"></span></a> <a href="<?php echo JUri::root(); ?>" target="_blank" class="pull-left"><span class="icon-out-2"></span> <?php echo JText::_('COM_LOGIN_RETURN_TO_SITE_HOME_PAGE'); ?></a> </div> <jdoc:include type="modules" name="debug" style="none" /> </body> </html> PKb��\mg7��0templates/isis/language/en-GB/en-GB.tpl_isis.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 ISIS="Isis Administrator template" TPL_ISIS_CLEAR_CACHE="Clear Cache" TPL_ISIS_COLOR_DESC="Choose a colour for the navigation bar. If left blank the Default (#10223e) is used." TPL_ISIS_COLOR_HEADER_DESC="Choose a colour for the header. If left blank the Default (#1a3867) is used." TPL_ISIS_COLOR_HEADER_LABEL="Header Colour" TPL_ISIS_COLOR_LABEL="Nav Bar Colour" TPL_ISIS_COLOR_SIDEBAR_DESC="Choose a colour for the Sidebar Background. If left blank the Default (#0088cc) is used." TPL_ISIS_COLOR_SIDEBAR_LABEL="Sidebar Colour" TPL_ISIS_COLOR_LINK_DESC="Choose a colour for the Link. If left blank the Default (#0088cc) is used." TPL_ISIS_COLOR_LINK_LABEL="Link Colour" TPL_ISIS_EDIT_ACCOUNT="Edit Account" TPL_ISIS_FIELD_ADMIN_MENUS_DESC="If you intend to use Joomla Administrator on a monitor, set this to 'No'. It will prevent the collapse of the Administrator menus when reducing the width of the window. Default is 'Yes'." TPL_ISIS_FIELD_ADMIN_MENUS_LABEL="Collapse Administrator Menu" TPL_ISIS_HEADER_DESC="Optional display of header." TPL_ISIS_HEADER_LABEL="Display Header" TPL_ISIS_INSTALLER="Installer" TPL_ISIS_ISFREESOFTWARE="Joomla is free software released under the GNU General Public License." TPL_ISIS_LOGIN_LOGO_DESC="Select or upload a custom logo for the login area of administrator template." TPL_ISIS_LOGIN_LOGO_LABEL="Login Logo" TPL_ISIS_LOGO_DESC="Upload a custom logo for the administrator template." TPL_ISIS_LOGO_LABEL="Logo" TPL_ISIS_LOGOUT="Logout" TPL_ISIS_PREVIEW="Preview %s" TPL_ISIS_STATUS_BOTTOM="Fixed bottom" TPL_ISIS_STATUS_DESC="Choose the location of the status module." TPL_ISIS_STATUS_LABEL="Status Module Position" TPL_ISIS_STATUS_TOP="Top" TPL_ISIS_STICKY_DESC="Optionally set the toolbar to a fixed (pinned) location." TPL_ISIS_STICKY_LABEL="Pinned Toolbar" TPL_ISIS_TOOLBAR="Toolbar" TPL_ISIS_XML_DESCRIPTION="Continuing the Egyptian god/goddess theme (Khepri from 1.5 and Hathor from 1.6), Isis is the Joomla 3 administrator template based on Bootstrap from Twitter and the launch of the Joomla User Interface library (JUI)." PKb��\�*���4templates/isis/language/en-GB/en-GB.tpl_isis.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 ISIS="Isis Administrator template" TPL_ISIS_POSITION_BOTTOM="Bottom" TPL_ISIS_POSITION_CPANEL="Cpanel" TPL_ISIS_POSITION_CP_SHELL="Unused" TPL_ISIS_POSITION_DEBUG="Debug" TPL_ISIS_POSITION_FOOTER="Footer" TPL_ISIS_POSITION_ICON="Quick Icons" TPL_ISIS_POSITION_LOGIN="Login" TPL_ISIS_POSITION_MENU="Menu" TPL_ISIS_POSITION_POSTINSTALL="Postinstall" TPL_ISIS_POSITION_STATUS="Status" TPL_ISIS_POSITION_SUBMENU="Submenu" TPL_ISIS_POSITION_TITLE="Title" TPL_ISIS_POSITION_TOOLBAR="Toolbar" TPL_ISIS_XML_DESCRIPTION="Continuing the Egyptian god/goddess theme (Khepri from 1.5 and Hathor from 1.6), Isis is the Joomla 3 administrator template based on Bootstrap from Twitter and the launch of the Joomla User Interface library (JUI)."PKb��\a�?"?"1templates/isis/img/glyphicons-halflings-white.pngnu�[����PNG IHDR���ӳ{�PLTE���������������mmm�����������������������������������������������������ⰰ���������������������������������������ᒒ�������������ttt��������������������bbb�������������������������������������������������������eeeggg������������������������������xxx�����������������������������������������������������������Ƽ�������������������������������������������������������������������������������������������������������������������������������������������������������몪����������������֢���������UUU������������������������������������������������������������������鿿���������������rO��tRNS���#�_ /�����oS��?��C� kD���OS_������6��>4!~a�@1�_'o�n�ҋ���M���3�BQj��p&%!l��"Xqr;�� A[�<`�am}4�3/0I��PCM!6(*gK&YQ�GDP,�`�{VP�-�x�)h�7�e1]��W��$��1�b�zSܕcO��]����U;Zi<N#�) 86pV��:h�#�0Z�Q�JN��EDT��~��^#IDATx^읇#Ǚ��b' 4A$Ah� )�p�3�<M�F9Y9X��,�r�i��ھ��|�s��t9�s��X� k��jv�@�l_��I��*~h��>�'y�"�������؆�K64�Y�*.v�@���c.};��tN%�DI���� !Z�Џ5L�H�2�6 ��ɯ��"��-b�E,,)�ʏ� B���>m����n��6pm�R�O wm@���V�#?�'C�ȑZ#��q���b��|$�:�)��/E�%��nR�q�C�hn��%�i�̓�����}l�m ?i�d�d�"�,���`�H�"r.z�����~��(b�Q�U&��)�5��X#�����EM���R<�*p[�[%.�O�̣��k7�lIo�������J�F��lV!̡ăuH�`��������&�,�z��Rk$���|$�l���Xb�����jߪ�dU��?Σ$H���W��$U�'���H�E3*խ����U\}��(� �zhVk}g�u�Rk$��%�|�T�|��ck�獳"��D���_W+����.Q���)�@���ƽ�H����b�s��l��T���D��R�2Xm�#a ��3lY��z�j����㒚#!� 4�J��8�(��c�v���t]�a��T��� ��D ΅��Q?^-��_^$:\���V �$��N|�=(v�Z'q�6�Z�׆��B5V���!y���3��K��㱿b�v4��x����R]al��!�I�o�P�@�t��Vy����L�٪ml�ڿI�Ub|[*��lke'*�Wd���d���D�ӝ}\W��_Wߝ����r�N�?���vޫ�۲X%��0u��oui*��JV��Ʀ�b%�}���i5I�YlN�E-w�ς�f_W3m�I������-�m����Q)�S��k��TC7��m�<"��܌�b�T|��'��$�Ҙ�����R&>��O p��������6����t���S��N\�ׯL��m�\�����r@�3�u�T b7��t.5.q���3�r0�=�8T����i�J�\��6uF ��R�32^���'Ū����x��I� ��F�8O{%8��kJ��MS�ȴd�BEd����W��CY�O:/O�N/�I��_=��xFE��! �=��i:o�~��� y�?��'��'��[͓[͓[͓[͓[ͭ��.�U>�$�P�Ʀ�c%�]��\c��:�| �,e�S�Z,�o��Xr����X�!�R����@�Z�v� �0��>?�*� �<��|����N6�0��;{�a�d��2��v+D��^t���[q!�۞V}�f��ۨϏ���Y��eॗ��)Vy�l|"f�U��q��@�Ǽ�4Y-��Y��-!�6a���B:o%�J��I���UQ|�U�K�O�`��=\����:�0���x��Pa��u�@��!�K��P�d�xhw1>�$j��v��Zd���x��S�UA�&[UR�d��7�ø��z�k��/���r�U^������w:I.�VǮ��c>q�.!�zS�r&���2�)Wg� ��R -�i�Q 8���Pa\О�U%�iݡ��U�_=��p� �Lu��(�N�?���0?�Æ:]�ά���t�B%�U|�����NsorN��f�� �,�P !�v" Y�6�hL�_�@@�b�s�c���qg�v4|��|0lϟ���$S��9����bʱ��j#���~�����?o��}����}7sAPm:IV�=n��� !��{��{��h��Eࢪ�8�s�u��oL���T�$�;V���s��cq�D�3����༂3.D�B����B4�&�V'��T� `��D�6����Ϸ�q�y�j�8V����*���X%���@s�\�jrN�$�|�=5�Ά '�mU��i��K��i�%C��I�:ssaƅ`*`��=�l��)>�uMeuS����I�_�O��L��_�}�o&���jz���p��{�����lu�:O���)�s�%Q@��$�<]f� ��xO%��PCbhr2�������PK���p�f5�Në3^o�����]�e�J��i�B��464��^t���uٲ�U:G4'���22Y�p���u�G'/Py�4?���.��SB�P_>����I 1t3Γ�B�ɭ�ɭ�ɭ�ɭ�V��V��V��V��Vs���]�!�67(��g�����y��@��4>Q�� ��V�F�}^Xׇ�ڼ���j���e�26 L���%��Y�G�h���l�C�}�)��< �!�E����E�P�ZWZ���V+�@�R 5{@ou�ɐ�4���&����H���6�e�y V��݀�Vť����cqZ�ޒ�r��J��yB��y���Fz��FN�$��Hb����*+�jՏq�э� ګ�kݿU�X��l�e�����1����d�0d^�-�B%���}����{Y���%r�*�j5Ak5�u��"�,�:~�Ҹ�Y��~ h����SA�~��6���fu�lՇf��{ȵQtATH�Z�k���ƭ/_���S��n� �u']b�]|m`�B��ā���J,O$�du]�Zs� �FL�:�����a�����Ǚ���T4�o�~by?wp�j滥�A����(�x�]�����f��~an֧/����^�d�ڲ�c���Շ,!��1��i&�xi_VK@ip�̓9���Vi%a;��L?�0J�*���Ū5���U����'���x^�6�V[�^ �{�eU���|�:0�=0���d۫o���*J�q%�[��Y�N��.sQ�L�ud�[2��9�I��:W�n�������m�Xl�ڃ�6�!l�Nl��V�էKU���jV�\J%�Uߊ��B��LcKf�b��>a�=�b�~�R]aG%[����js@�<i�[Х*^.d;UI�R+�OD�2e�ܶ� ��Q��N3�4"1������g�0��u�\��I}���wFV�4y/D��j��j��jn5On5On5On5On5��h�,ҷUr��]��]L^����%J��D��iɭ��G�ԝ ߴ�/�%='q�å)����:��Q�<�X�.��'�[�@�P����v�/ɼ����>/9�MطݘU�>yɲX�@}� ���F��t�g^��vO\��Ӹwv�p���z3��K5i�!$P>�ā����'��Vƛ���L�2r��@�UM��K�Z�����6���tw�맟¦b�m�1�h|�|�]}~�0��MjA����(J����JP68�C&yr��e}�j�_c�J�?�I0��k��>�W��� �����|�B�ޝ�."TEXd� ��8��!cw�*E(�J)���!�[W"�j_���ТeX_��XB;���o��O0~?�:P�C�(.��[�����!Wq�%��*le�Y)E�<^�K�Z�T�60�.�#���A\���5;Rm�tkd�/8�)5~����^0� #�Ckg���e��y)����Ͷ��Ժ��6ĥ�<�(?��&��u�A��V���m0^h�.�t�xR*��a�'�:,�H�|�ō���l5z�;8+e�#b'#|�}2�w(|Kc�J� �l6 �����w��^�Տ�o��i��3H� �R ��̔9�,Y�gP�ְ:N�[5S���R��!���[)��]���i}`���m���N�4Х���v�`|;f�(��F�lt���L�8��÷Z#�AO%�Y)N�U�5Y��e��d�J�E�3dZذ���<�x����ɝ��e �@�Pڧ���F�TR ��2S�·�Φ/u�Z�~�C�3���X�z���U���x�\2�s���e �D��D.���fBO&en�'i��R%��?Fy�VsS~$u��m��w()��r��o�0*D���i!3�:On[B�!sʇB�p>ݣHT�1��;�8M�jnʏ��Ӥ��qp�1h�^�<��<��<���j��j��j��j��jn����q�(qp�Ok���}��I?TY8H��mh�yK�̝u5�����I�t�e�nQBޗ`�R��`��E�P� �ڦ����x�����>�>����yt�{?|��'j)�����}YU���U���{�@V�/�J1�F+���7䀉[OW�O[� ����y���UY������!?B��D%�D��Wj�>-Ai6x�z)���U R�����7d���@�g����\�so�)�a�4�zf�[�W+���>�����P��>� |��qL��G8�v���ȣ��l�j���2Z��t��+��V��A�6g<�/��Q �H��SrΣ����d}�Y�q��g]�sY]�;]F�C�@5�Y��Ֆ�5�C�3�8o�)k�1'��d6�>T*�ʆ��Uz(�m)��CD `��He/�.�:�zN��9pgo &N�C�׃�އ�>�W�հ_��Hj��)�Xe6F��7p�m�-�`'�c���.����AZ=���^�e8��F�;<���J1{��+8'�ɪ'�և\A�*���[���R$U�Y)V� �AyɃ�w)�Ec#<�T����\vW<�U1�IؘCDo��Yo��]�wm�aw��:B� :'�Z+�v�}�|�0��q���1�P��*��u��T��7 �F3��9���A}$���f�+�o���[��I�5��ʰ�x(&����i��ʼY���:c�Pp*��b��¸J���j�V7l�jtsNk��v����[�fy3��g]�����u����鲱���g�J��E�0)Vił��ù���\vW<�Ug�t�e�~B�[����A�����H�J��'�.��n��& 1Ԕ�� ��o%gͱ_��N� ���5�.W��3y/D��d�yr���<��<��<��<��<���j�ܪ{�����waw�:6�dJ�;&��3�p tl���as������W_U���T�_'9{?�a���Ԭ���l/0���dHgqll�c��8�R�y�����m=ˢ�_�ͺ�[Է71�x"�"��S�IfV��r�x3�3y�)h� ���h�ՠ��0���?�r��5�x�����_�-���j����� ���чoO:��$���XBXJ��ѣ�1����#ֈu7�`�zu2�{�\;��uܗ�9@�0��V$2X���S����&���Ba�[�O�~��j�N2ߠȪ/����jz_���nA��������~���u��h@GL�O�eɵ��?T���f<V�����e��@���*�-}�e��@� �0Zt�/~������Xm0�*���*��H'\������u��S�E��m�Lֻ��6����;+{l��5۽����?u*����_� Ni-:�I@,;�]����W�Y�` *���߀n�SO�~�n���W�P�.��c����Z�T�u���Po^ǃ7���w��B�RB�W�_m�dj��������B��6�:��*��H����]�����d�Q>�{R�������t�n(��z�!S�7o ����Ie���w�3]��bܗ���8�5|�i��Ϡ��R��JkʱZ�RO+�8�U&�:]�Z�ieR����<I��~�|�d���,�j��릟�{��;�7�U��X�B���`����[�u5~�=z�q굵Ű�e��b�c5���o���{;���ߩ�@;���n*T�ĵ2�$ܨ��0�'�Y-? �j�[�Z��j����ӭ�v���i�-�*rD{�mL-,L�=��y��m��x���c:���We����vұ�oÏń� ��"dF���8[�T}ӵF�-�I��V�lV[P�����)DVC�8ݪ}|kZ������{����Y�|��xrr��xa��G_���>�(��J�M�ޗ7����Z@��5�a^�\G�z��s���ρU��*�rM�e�zT�^�:ɬ��ͦX=>�$ bi>�U&X�Qoybb�G�k��8� � �Ҙ�n).Ս����o� ��^M�m�d�Z���i�$s��o�o��*{�4���eLb�Lٳ"�"mx:�`:m�k�[�geT���ެ)���'0*T��B�{!��I��'��'��'��'��[͓[͓[͓[͓[]�Z���jQ�.e�'/��y�vQ�71�(Z&���X��?(_��Z�����){t�ڀm�Z�W�Ϗ�)��-C���� jq�n�,̋�"�Iv���UL�!h������s�k��AcrN��佚ф���VE4�0�y�X��~�4zʸV㳰%��,��)f��qt�p�u�~� �����*���^��0:���ܲ�3�3���J��O�(�����ZB?K�^ �v]�un��l��W����i0�p6��[착�C_5X�#�[��wX3�b��廫�R�{���NK�A����e S���e�|���w��x���s��o>�P\儔ԕ6�;nV�m�f�I$��V͓J-�J%��0��Uw�YЎ�S����n�u��m�藮��xz��˗V�ƫ�I�vn�W��_�qL�Z����"_�X�z����8�]Ap�����?��C�����5�4��3�zw(�{7e�*Ȳ`۰�!A�Q�:�KUn����z�]�1y�V���Ga��C��m0�PY ٚUx6TT&�hV�9V� ���Ӭ�zÑ� 1[�X�z�Z�����9�e�r�q�J���ND�/���g��X��*9o���N6�D��` �{�I�%�M�z9�T�Q�����7f�\"j��_3���~xB�'���ܷ��Y��]*KЌ�%"���5�"��qxq~���ƕ=����j���S�>j�V�&~]2�xz�F����1X��_y�D��<#N����RB��}K���/���i��y����� !V^��˿e�J���}/Fk��A�7��� ��S���+.�(ec���J:�z��W�Z���몖w���Q������~a����̈́�p�6,e5�,�+����,���������t�v�%O^O��O}�ן -O��7>e��kC�6�wa�_��C� ��|���9���*�����W��A�)�U�Jg�8<�Z���x^?���2�u��Y���*^?��ڇKC�Z�[�����0.���C��@m�����$-��/~�|�Y��[e�w�eQ���&c��O�4s|��c��J�ws�X�8/��6�/ڼ;�'F�LN^�8]��ead�Z1'������^������L��sBd�%�+M��`��SK��8פ����*��)gl�#�3"��gъ�S�����qtcxx��|H>���=��:�����m�j�����U���v�q�y��s�ܒ�Lgl�C6+[F�SWg���9���wV3�1�A ��N��D�<����$5e�(s������;�a� �F$��]���IEND�B`�PKb��\���1�1+templates/isis/img/glyphicons-halflings.pngnu�[����PNG IHDR����1iIDATx��}]l\Ǖ& �\���F�%��[d��R-�Iڴ~�4CoV�V6�T"3�`K�ǰˎ��@�ȁ����x��9%��C"[Z�Yg���ĆL�5OC��y���unu����[u��-ћ:dw�߭[��|U��v}UWg͚�Ug��-2p�E�����,1�16�)hp�l�]��c���@�j��%s�-dz��:�uד������?�~���:���GnI��R�04��@�1�paHsY��ka=D ��!ݐ���Ѥl�t��`�l��?�Es,D*�D7�1� 1���sK2�o諹�A����>T�J��P��ʨ(���@plV�F�S�硝ߟ�q;ȼ���0@\eù��ׂ��������HT�W'')�G_N�Q6�����8��/ո�Y��ڮtsD "�.w�W��m�R$]?��_�+�+�=�j�!�y�;�_Tn!h�ޫ����W*�r��i���5�2Q�"���N��c���*���$�歺Te���Z�A�S��Y���DoZz��ۍt��;�[GTY��٩�셴*�]�t`���^�yz���Rn;U��h;Uz,Y�y�Rz�@���Y������x��;n�y��!��O�����7�� �q����ԇ��h�(���>��,�1�76�D�^I8�E��������o��.P�Հ�O�d�˝�����Ϲ��VD�2���h)\�B�r��*� 8g��R���U#�I��k�������ͩ�}h1Ui�*���M.}��KZu"Q���o��Mq��[���D��G�š�o|���'ܱ��̛�R�5��b�]��uf�pɪk���i8Y�4����@������뀟���A�<^��#��b�靥!����~�թ�0�0t`�/���G)7�W��X�%�:����!T�K7���ݧ��徜�y� Ac_.��I��6��v��4�o}�%ԩ+�).�Fw��H�b�b�z�6�Uk6_����Eu�j��zpQ@�S��pVE$h���Y=>���F��k�nP����?�5�=']Q�)��zߡ�U���ϫ�X�%BK�8�ш*�7�@��4r� +�K�E�?/=��j�ƴ7��E��w����K�9���w\Ui�X+ɉSЪ��qI�����rj�D���<DX{V�QY"��Wx'���|'��S�z���/��v��hx�N�U���T���p�Ǫ�Sn0��D�z_9fU��\���������>�%R��$���(z���4��þ��Ǥ7���R�Xi��| 'ͳ,+�3rM��F�0C_�D���)����u`�U�M��E<��>_�Z=� ��2?�2��X�6\��o�MK��}�U5�j�?����;��/x�<�}��TS�b��p؍��uiW��l�]�Z�(a<��8��Pd"��Z .<ATLi*^������J#�����@��q�6��4x��f��� �7��cU���zZb�[OW����e`!��P��lg�[L�Ss��0m8�X�7U�ꆥ��9�g��;Οܣ��@/`��a�kv/�ԭ4��jdKw��%�������W��?�=y3��^���Z�ܬ��?W5-}��V��qT����y�A��/�AL���$�1Ґ�`d8;��`������E8�o��?B���|&: =��(�P��}�Ud�G��ʬ��|uv�)y�v�{��<Cㅡ��O���N��W-�V��=WEʍ�ӈ���^��t��խ����1�������;���^�}�SU\婽G崙P_��~|Q��3�|{�ZW�A���j%����@́��P��×��Ip�V���ߘ�P�j�h�����HB��G��{���fj�i(.�t��2N��:k�n��X�f͚5k֬Y�f͚5k֬Y�f͚5k֬Y�f͚5k֬Y[}V���5k�n4Q3�!FY���$;�P��,�A`M�?�|m��6�1ó1V*c5V��,�3�\m�9}�G1MZ�R�E�$�õ�Fx���c��֡�K�&+~ ��P�3,��EId������j�\o.�� ���gg�u�7)EB��3͏)>���U)����eE��j��_q��/me k�����.�dž8!�O����� (����*�AW�N;y�m����� r�N��o�(�����q�pEH!����^g5�GL������՞�.UM�c��e�u�?�]~p5���K�r*νε�^O����$j���R'ujd�e٨&�1�Ȝم�8�k"#��������xZ��"u�=�+\:�TU�s��W�bR�G���,$����DgT� A�v=(H��??@�~���+��B�U���I~�S�)]��ó&=�s.��^Z.�J�TaoL�;;�������0�nsc�9z���u@�j#�o[����w}��[\"�G� ��RuAG>?U�˾Qg��2hG�W��vP�~d�h���`���Ϗ���#�l0� ��:<�X�J����eY���<M"�դ~���T��T����B�m�/J���K�^G?���5��2:�T=6!�����:Ec�ǣ�I�/)cO��r�W�ݧj�����e����Gё��Q�<�U�=��j�S��}����O5ŗe^�4a�??"G�<k��;n��5i�ہ������Ё�o���c@xX��s����>��z�T�IA����G*�ۣ% *(;s`�ځ�� |]�#Ė�1%⿹�P�7X,�N���&T�e U��]Y���d����h��Ye )y��(�$��q����e~�+L%��ʏ�C=�y��E�*<�3�������k��ë�e]~pr�L�v90<M��@�j����P娪R�u`���o3m�����(��(�z����L�zψ��{F��?�+�=U�����)��Y�ծ�Y����.�+�Hu !.���@l��Ώ�y�j����yJ���_ .#/��W��]�C����i2��ֹ5�U+�*k�>}�̮� �)'����0����Bأb��z㉭�L���Ď�,��*`��v���r���T5�Y�S��b~�R����c�� 65Z� �e~�q"3��F]~���;U��M�w3�+#/}.�֬O�|y>xH�d/C+�ѫB=$a 4���^�̘�A��y�h�(xN�k�����l�;��r_m�<��e[Q\:!S}��鬲1��A�9�x��1E��!��}��ݍtx�7��T_�ү��К�� �����kݫ���'2�:�yJ�W��<��7�]E�O�T�ޗ���{<ճ��hkd�*C�UFU3���_�4�=~�}��FP���F��\��_�uU9�m~0G���_��*�P}y%U��q#F��x�楇�N����\U��)��b]v?7��&:�=�2ͱ����K�s������꾚�ͩZi~pBj8�Ǐ�C����t�ە_+ο��w�w[0���Q�~u����3̍�h�x_1�َ|_I��C�{oRuV} �aѦ�P�TtM�c�7�����j;A�6��{Ltn t��e�iu��d�]����!r�ns3?�J�^tSg͚5k֬Y�f͚5k֬Y�f͚5k֬Y�f͚5k֬Y�f͚5k֬Y�Vd�/eg��,CРmBA����m��L}�f%�j� �6CN}2FVw���H�,[I�Z[u��� ���Ȗ�ug�^L.��$U��t���"' t�H3�~�S�&�ێ���B�,a -S��q^�t��D]����1T���ҕ4,�*nh���i�B[y��g֨�,Ϳ�ғ��,]��'k�Ւ@�4�*J��D�6+b�996^#�ΕfXsaȁ�?Q+��'h5:�,��.Cr�#*����[Z�����,h�����KӦ,�.�+E9`J=]���59���)3P.���Z�تK��'�h�p��dE�3�&Z�W#gR@وA�Ŭ��T��~WN�SqG�+����� �t 1"����iS��5�� -�&T-��|{V�n(��*��L��&km��DCAO��;��������Our��u�s��[]C�*K��r`�9*U�Tu"n�%g�К(in�c�q�� ��y�5�*EUBU��U��ݔ��<�+��^E�;�*���*�֖�����E��甀������i� ���������&��E_�X亐��qhA!\m�j�aa��Non,��Z���H>cR>B{[U�ȱ� Qq��kr�1#k>����j���L�~`���u��� ���d�ɭ��x�� N��G�)�����|��jX��^�����_"�2���I�E��LD����-���E�=�HԸ+��z1�/G�-�+2���z��jOU�V���.|����d&! (�/�&zR@����!��H'�v��S��Ge�g��� ��p����{�MEx ��.#���G�7��,��x�߮>����>4��,���gUFՁ�3�(=^eT��y�3���>'4��X�!��ۇRI�'H�M!R���vTe�n�5I!��|��&j�`�Q���{-�;����g��+]�n�?e��'�����D����N~���Bl�Nm뫾B��m'�����N����'M+��d�5� �J�d<0X;�����<���j �Kg��"��3�}\]R�?����.��H�Q�Z�W�<UG�U7'7��\h��vBI3q�&��>]x�1�w��\�%�_L+���H'��9�k-n�o��S ���T� �� �3����8Bܣ�i��� ��D��٤��A!@0� ��(J�a,����d�q��mI�ً���Rp�:�6N:���̊sZ�h˼��x�IO)'=�GL�U?@]]3�����U�*P՝y��$+���j�T�[D�@�6�E�T���J���V�Z�ۢ��S6V�^ȣ)e��NjI��)�8W���V�C�O%�ƕ��R%`����g��/֬Y�f͚5k֬Y�f͚5k֬Y�f͚5k֬Y�f͚5k֬�cM,�*�1g�5Q[/�/�+q�l��esY0}�]f��, �˹���U�،����Д��Y���7��_J)W�7l�n��v��!Jv���\���,E¤�=:>� �o����f�b��W�����;̚�D����ڲXV�X�Yfx~����#�B�x�$�v�+�M��+uz���V�/:y���с��G�>� g'2��:�Y1� 1�Y.ڝ��D[/j3z8�j&�^�i}~)�X�ʚFn�zz`!H�S�rS�q��:`�)����˝��,ӥ�!ue"�.�?�X�Yf�$���1�0H�ݬT�Euz�pY��V�Œ8�Y�W�QR���On���(�W$�'�!UB�r���F{���R�:.���Z����l�+��h��O��� ����z���M��|Z�$�8Љn٤M�"�N�p�iuA��U^�"B�A�:B��K;�����5�ĝ�����"���e�����^����g�HV�W��y&��R�뿴�V�B4��{I�GU��i}��*R��n��CnXR�x��C���[�xTXm�q�<��ϸ��KT�|��\��_T�H�W�z7����L��S�,�o6U��:$j���J����'���Tc�L�^b~ � C�)�x� �&��rbY���R����$`_-F�����̿��z.ƱbC���4��L�X���n�؝W�w �ݚ��U��'�pyX�Y~Ǣ]ū�8��}OV[� ��Q��*nF�˓�#s�*�jFԺ����v�0s��P���W{se�(��G籯.�|J� ���!�f��^H��LC�����˥�[jI)�����m�f) I�j��&���N��K�� �Ԟ�����u)�b��g_d�s�wC���WK�ה�uu�E�����ɻ��HDü��� ����I�P5�X<���Ia�4���Т�^^����%QUjF�5�o�oME�ө�a)g��d�/���{��|���!8*��S��-��^}�'����$��W<�1!*nP4>��D����w`ù�*���*����-���C����E��ڪ/��|�D�6'��$j��H���3�a"��*ũ<,�,��H����ׇ˸Et^Q{��o:���JU�tW���`�&Zz�����:Q�~��U>����q[�`9�o�TRe[��a�φ.H�z'p�����K���_�:�C�� +�0ȏU3�����)�ǥX�Y�x)�:uz)2n����MZwRO�U�X3EDs��!*�Q>�1���c����|����ٌA�E��R�Om��E��}99�?�Dɶm��Y�'n�xR�6��� ��+�����x��Рu5<���J����)�c+Q��j��~YGx��V�x���y@��ꉇ��<���lon���$N��h8��n \�;L����Cb�-�w�>kn�OV�_!�֪��RΒ(�1�����5��{��i�.ݕ5��>����[��R7yXSr��nu�A[+�F�W��C��CQ��䥵#z��5<]������:��9�^�����,P��ux�z�1�)^�|���z�ja�zh��f�ڍhv�k��f͚5k֬Y�f͚5k֬Y�f͚5k֬Y�f͚5k֬Y�f͚�*��N�_�=�,;�:�_s �%LJ�� �U��J,�fV+M�:�I�����YBF�^�N�7g��Z�o���MB�]j^���<k���s��]�%BK`37���[�[C�-Պ���V����wm�w �f�N_�3�u�k�����1�_�;���R��i���[�Yc�1���ku����q<5�7�G��0�Oq/}��Z�JT����5$ږ 2h��+.+���:����:����q���q�-=})���U���|e/=���Ek;ճ��p�/r�S��q^�x��i��D��#u�݅�x��F�? ��-ō�N 6)���BrSWg�l?�W�zx*�����y > m�xf�yT�Ԟ\�-0}�ryS����.����C�����;\��k��g��?���=�":���a�Y�Z{J�RT�K̚���hq���;�� Z���E93�w���H���/KH���f�C ��J ڰ��Z�5J_l���0[C'd܉�}$��K�8��� �vT���K�u�����e�ø�|O�����ǧ|aQ۩!}���"�����:|D>ݼ�5Ł�yz]biqpDG��ϠR�Q��=���yܳft�{^��:�Y�Vh;E���+�E��7�k�t�]~��wS�f;�w����H�$�k�Br���Y�y�|U?Fe%%J��D����J |���"S��V��e�j�?; ͐�z�z��*As�)�ΰij�("�9�Q�^ H����ݛS��l'��x^H����ڨƷ]��v���!�6}M`�f\���+�3�p�!�,.tP�*g��ODOg43-��Wp�1�Yd��j�^�o_�����z~����C�Lb��Z<�AT�3������Fܑ�s{VT}R�z�c��{V|�R��sQ܅�?�'��!O�R��a�OΎ��c�r��� ��8c1>�1��%��X�Y�Jf�kOUze�WB��� D�m�ӻ�u�uz=��P�S��?��pv+EHߕ��D������2���C��<N&!nӷ{����*h�{���#�7�����uA.ҡǷM~��Ј)��~��X�ІB 3�B���<�{O�%��Qg�:��it{!���V2K\\6D�B#}C� Y7`���-�fQ��zx����a�"���.Ɖ��n))������u�19Ӟ�2� &e��u��0n���#���#�1'<n��û�Y��X���JzjT2��5R�}|4�r���BD��#����V2K\�i�}��?��)��\��}���)��tz+���Z�_;�pv�x�^q��=f�m#���Nt��'��HW�jT��!~��"�;�>D�O&��߀`a����k7���S.�:�}T�0�<K��S�R���(?��{������ʜ����Wգ�rw^�Y��%�=U��h^[����tz���r�AƮ�כ��zȨ�PE�¶�Y�R����n�Y�f͚5k֬Y�f͚5k֬Y�f͚5k֬Y�f͚5k֬Y�f�Z�5����Y+����,;�P�c�}?��?lp�A~�Y�,#�l�|��=ǀ*��s}�(�N᠀��� ���b�<�G�O_J�N��a}]w-���&�XH.��Ͱ�0$�o��2���.��7�5 ����] �R��4���Wh_Jg�1�]ڒ��ئ���HUéH_6 l�|��Ee�����Q�ӗѺ�@��g.�K�r�$*�N�������gq�# �J�����2�z��uv��=U7^s`�n_֤-��0tR�����ý?/E<G�xr5b �eR� �I��=K�EA��ZK�M?զ�P[��Q�6�R�H+㶢i�T����T�T(2qfx��y����*uq`���B����k�g�z�)�Sk/��Wch)�W�90��(�������E]ݝ�Q7(w�a7D� �i?���>>���l B/RK�FՕb��UU�%���z����a{��?�J5 �r\ٿ�{���3�]Xy�c/��p ���{���x�-�+.��'���\�O�e�.��_t�w=���.-E�rSǡ��H�RvL�T,��l�u\9n}#�i)�-��x\�� /�.��W�UWj��/��8C�uF��Ԯ�2Y鏒[�����<D��Z�9 �M"2��ʚRz���mRj�")��{�FA��xu��?eZ�L!���Y�� j�\2�d���)`M����^���x�2�ڧwN�d����c�e����Oq�`�o��� �u����ӟ@=tㅡ��Df�����Q��zQ�F���\��o������_�IT�DV�#�[��R2"B��S��?����ןXy���L�_����$�*UE�T��'���z,�^��_<���OJ��8�;�f���n �w��iol`A�|I���q`�?A�pv����Q�Yh��O��/ ��/:��$�5/'�6_�w�����1�� !�&�w�FG\�����}���vot���lfT��*7-��5Y j�ԞP^6q����;�`C���Sk��9�_�~��u�K�~=]���V�)Zz(�jG_��gCK�B�H�`|�mo��-drkиj8�=�;��vS~'�='�B8�A<��8��2�x9��~���o�[=4�������w�wǕ�� ���?�� �'j�{mn�3����GTޯ��Ѥ~�+��j�9�*G�7A��i����d�9��JU1&/�x��L�:�uu�AHQ�^y���>i���;i�-aa�X�)���I,tA�9~ �X2�X���+ > �o����,��G�x�P����Ѓ��n�|���BK�9.�ݓ�y�Ӈzs��j��I�̩nDԦ�.u\Y�W��d ��M0鶞�5�M����*GVQW:8���a�� >G�ˍ�]5���_�?��AC5ƪX��υ������X��Ɗ&}�@��rdtp�ظ�QW���]�.�s^v��;����8v��v�?�PH���3�@��6|�퀯������n=ǥ!�ȼ��9�s�j���j����zW��#>V4���B��`�r,o�\�IGVU��0n��Ӯ��/��yS��Pw��>�|�i`��4�.�U[/�_:����[�\�^��6$6�l�|U���F�|�Cߌ����R�~���)��x>]q�v�������n� ���s#������U*�c �S�^UR���c�(H ������_� WZ4""A�t��ϓ?'�c�ݲ+�� �i�&Uۏ����Y�RU���Q��w���[�D��{8�[p6�@ӹ�f�$$��f�5���f�;�8��Umr��2�yh���5����:W4��4��6�U�g�F���J���HD�@y;��͛�T�x�<��g�a�uU��t]�B����S%3')4 �+��un ��ZAjh�!š<��Q����Pe��J��z�ё���/��ԗ��W �G¾CϛH�Z�B�V�5k֬Y�f͚5k֬Y�f͚5k֬Y�f͚5k֬Y�f͚5k֬��k�*���r��r�P��Uy��*Mn�M��dL���'^���B�K�D�.V�+Y+/�G��E���*����2�=i�sg�2:\UO6��*��u�YZ�+��~��� O�݈���0����%���^l�� ��ȵ��)0��l�4�d�Z4s��h����"�<�F|�'C�0���O��3=�7p�4_�V�n��\��'N�-NO���x������� �ɾ[u�8�o�����ԾX���4�]��� =כ�a�C��f/�����0��S�]��� �˷��l'5��'o�G�ҩ�uu�p�r3�S��:���s���)M[��`N$�v�DZ�(�0�?Q"h�5\�L�������gc���c����"q�E���*��G�u�R�&> 8nf�r�ǩ�$@�N�.�_�i�a`!��,���a�.�ƋP���ǥ"�'�u��ojӟ[�t� ��J�³��_@�'�/�9B(�RWw����u���r��\S�)R�Y,l.�����R�}�c����\i�{A:|_�����'O<��q��6#��KT�\H���W��@r�m`��)��Y�&m*����K#����I�M�W-�lZ�V��6=W��/Iw�_R�u�?���5cT(mu�u/�x8��[-���$t��x>�Y��=� \ff �t��1�{<\�$�y{7?[=���!ԩ��{9�ݑ���w�ޭ� Ɩ=�3��MhR��%G� �Ʒ��܁i�xg���{���@ŋЧ�3��s���wI�B��vJ����/x���S�r��{29}��S�*$�&�b|w�q7Vɯ�e�� ��A*�&}�f:���,jQ�Ta�*���կS�^2 �U�.��@�U���������٩Ż��"��̮�g�б�| F-��8[U>�_�� I�.�n�t��������VCD=>:�rD-����e~`�+7�x�$�"q�VC��qt�R��S�;�w���):�-/�-$gN<T��*���>����L�]B��Q�{�\���M�Od`A��_V}��7�Q��N�`0@��[�!�3���������?8�-�Hm�Wl�����^+�{m-V�9��:�B8�9�*��1TMm ���{�S=[�.��\�շ݁�ۛS�/m����xW�D"D�tx4�>D����/����rϟ }�4��ο����$�;�cU�W�MOB�,�?>���@����0X�ro��j��n(�aJUvxE@����V�;�S��9[�ؿ�_����[N,����h����Iq�'q���:;ʖ�ۯ�}�8q�T��{��m�XF5R����a����Fr�ע��{�� 6Z�+u�G��I�����W��:|w~��C 5~�M�ە��G~'j�zD�4�g:�cU�W���^��)N��?�Ԯ���z��i2�a�t�d�X=��9�>4>��*��ɮ��RL���*(�L��ҿ��A�r�}ñ݉e���)��O=6�����[���5��3��T����ܤg��`�փ�v�������;UڞγlN�1�<| ��yg��T���y�%:���í.~�D�>90��;�U?��d�*�`w`��#�J٥����}E\q����_��=�k�8�MTT}�k�8�!z������EzD�+�Z���l���c����o��x*E�18֗CY����=pB���`�o=���(H�a�����;^��T�����bx�L��+�n�γ��7�<MGZ��]�ݔA�)y)�3������4���p�`wxQ:����i�ז�B�B�Q�D&���$�?9���~>��ZU�Ѿ[�����t� �U�����M}��M&2ӹho�M�'��,�u�f��i8��U�s�H�\@{ �����T�F��7L��6Ʋ��u�sU�XU����X�n�P�՚t}��Ҥ�;��|���p�Ԉ>`X��~��_(�E�g1�u�Y���%L�"��r'aL"{�B��$����f�/��{ļt�1���*�N���}���Ϫ����>W��U��˕�N�/�u]i�nn��TQ�h�jfnowS�W��䯩�϶^�f����yƈ��K��~ �T���WV�Q�-��J����bw`�k��/�E�|=�W�IEND�B`�PKb��\I�\��templates/isis/component.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Templates.isis * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $app = JFactory::getApplication(); $doc = JFactory::getDocument(); $lang = JFactory::getLanguage(); $this->language = $doc->language; $this->direction = $doc->direction; // Add JavaScript Frameworks JHtml::_('bootstrap.framework'); $doc->addScript($this->baseurl . '/templates/' . $this->template . '/js/template.js'); // Add Stylesheets $doc->addStyleSheet($this->baseurl . '/templates/' . $this->template . '/css/template.css'); // Load optional RTL Bootstrap CSS JHtml::_('bootstrap.loadCss', false, $this->direction); // Load specific language related CSS $file = 'language/' . $lang->getTag() . '/' . $lang->getTag() . '.css'; if (is_file($file)) { $doc->addStyleSheet($file); } ?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>"> <head> <jdoc:include type="head" /> <!--[if lt IE 9]> <script src="<?php echo JUri::root(true); ?>/media/jui/js/html5.js"></script> <![endif]--> <!-- Link color --> <?php if ($this->params->get('linkColor')) : ?> <style type="text/css"> a { color: <?php echo $this->params->get('linkColor'); ?>; } </style> <?php endif; ?> </head> <body class="contentpane component"> <jdoc:include type="message" /> <jdoc:include type="component" /> </body> </html> PKb��\]y�YQYQ"templates/isis/js/bootstrap.min.jsnu�[���!function(a){a(function(){"use strict",a.support.transition=function(){var b=document.body||document.documentElement,c=b.style,d=c.transition!==undefined||c.WebkitTransition!==undefined||c.MozTransition!==undefined||c.MsTransition!==undefined||c.OTransition!==undefined;return d&&{end:function(){var b="TransitionEnd";return a.browser.webkit?b="webkitTransitionEnd":a.browser.mozilla?b="transitionend":a.browser.opera&&(b="oTransitionEnd"),b}()}}()})}(window.jQuery),!function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype={constructor:c,close:function(b){function f(){e.trigger("closed").remove()}var c=a(this),d=c.attr("data-target"),e;d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),e=a(d),e.trigger("close"),b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.trigger("close").removeClass("in"),a.support.transition&&e.hasClass("fade")?e.on(a.support.transition.end,f):f()}},a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a(function(){a("body").on("click.alert.data-api",b,c.prototype.close)})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype={constructor:b,setState:function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},toggle:function(){var a=this.$element.parent('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active"),this.$element.toggleClass("active")}},a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f=typeof c=="object"&&c;e||d.data("button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a(function(){a("body").on("click.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.carousel.defaults,c),this.options.slide&&this.slide(this.options.slide)};b.prototype={cycle:function(){return this.interval=setInterval(a.proxy(this.next,this),this.options.interval),this},to:function(b){var c=this.$element.find(".active"),d=c.parent().children(),e=d.index(c),f=this;if(b>d.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){f.to(b)}):e==b?this.pause().cycle():this.slide(b>e?"next":"prev",a(d[b]))},pause:function(){return clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(b,c){var d=this.$element.find(".active"),e=c||d[b](),f=this.interval,g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this;if(!e.length)return;return this.sliding=!0,f&&this.pause(),e=e.length?e:this.$element.find(".item")[h](),!a.support.transition&&this.$element.hasClass("slide")?(this.$element.trigger("slide"),d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")):(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),this.$element.trigger("slide"),this.$element.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)})),f&&this.cycle(),this}},a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=typeof c=="object"&&c;e||d.data("carousel",e=new b(this,f)),typeof c=="number"?e.to(c):typeof c=="string"||(c=f.slide)?e[c]():e.cycle()})},a.fn.carousel.defaults={interval:5e3},a.fn.carousel.Constructor=b,a(function(){a("body").on("click.carousel.data-api","[data-slide]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=!e.data("modal")&&a.extend({},e.data(),c.data());e.carousel(f),b.preventDefault()})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find(".in"),e;d&&d.length&&(e=d.data("collapse"),d.collapse("hide"),e||d.data("collapse",null)),this.$element[b](0),this.transition("addClass","show","shown"),this.$element[b](this.$element[0][c])},hide:function(){var a=this.dimension();this.reset(this.$element[a]()),this.transition("removeClass","hide","hidden"),this.$element[a](0)},reset:function(a){var b=this.dimension();this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element.addClass("collapse")},transition:function(b,c,d){var e=this,f=function(){c=="show"&&e.reset(),e.$element.trigger(d)};this.$element.trigger(c)[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=typeof c=="object"&&c;e||d.data("collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a(function(){a("body").on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c=a(this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":c.data();a(e).collapse(f)})})}(window.jQuery),!function(a){function d(){a(b).parent().removeClass("open")}"use strict";var b='[data-toggle="dropdown"]',c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),e=c.attr("data-target"),f,g;return e||(e=c.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,"")),f=a(e),f.length||(f=c.parent()),g=f.hasClass("open"),d(),!g&&f.toggleClass("open"),!1}},a.fn.dropdown=function(b){return this.each(function(){var d=a(this),e=d.data("dropdown");e||d.data("dropdown",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.dropdown.Constructor=c,a(function(){a("html").on("click.dropdown.data-api",d),a("body").on("click.dropdown.data-api",b,c.prototype.toggle)})}(window.jQuery),!function(a){function c(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),d.call(b)},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),d.call(b)})}function d(a){this.$element.hide().trigger("hidden"),e.call(this)}function e(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(document.body),this.options.backdrop!="static"&&this.$backdrop.click(a.proxy(this.hide,this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),e?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,a.proxy(f,this)):f.call(this)):b&&b()}function f(){this.$backdrop.remove(),this.$backdrop=null}function g(){var b=this;this.isShown&&this.options.keyboard?a(document).on("keyup.dismiss.modal",function(a){a.which==27&&b.hide()}):this.isShown||a(document).off("keyup.dismiss.modal")}"use strict";var b=function(b,c){this.options=c,this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this))};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this;if(this.isShown)return;a("body").addClass("modal-open"),this.isShown=!0,this.$element.trigger("show"),g.call(this),e.call(this,function(){var c=a.support.transition&&b.$element.hasClass("fade");!b.$element.parent().length&&b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in"),c?b.$element.one(a.support.transition.end,function(){b.$element.trigger("shown")}):b.$element.trigger("shown")})},hide:function(b){b&&b.preventDefault();if(!this.isShown)return;var e=this;this.isShown=!1,a("body").removeClass("modal-open"),g.call(this),this.$element.trigger("hide").removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?c.call(this):d.call(this)}},a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=a.extend({},a.fn.modal.defaults,d.data(),typeof c=="object"&&c);e||d.data("modal",e=new b(this,f)),typeof c=="string"?e[c]():f.show&&e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},a.fn.modal.Constructor=b,a(function(){a("body").on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({},e.data(),c.data());b.preventDefault(),e.modal(f)})})}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouseenter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.show?c.show():(c.hoverState="in",setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show))},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.hide?c.hide():(c.hoverState="out",setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide))},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.remove().css({top:0,left:0,display:"block"}).appendTo(b?this.$element:document.body),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.css(g).addClass(f).addClass("in")}},setContent:function(){var a=this.tip();a.find(".tooltip-inner").html(this.getTitle()),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).remove()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.remove()})}var b=this,c=this.tip();c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.remove()},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,delay:0,selector:!1,placement:"top",trigger:"hover",title:"",template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'}}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var b=this.tip(),c=this.getTitle(),d=this.getContent();b.find(".popover-title")[a.type(c)=="object"?"append":"html"](c),b.find(".popover-content > *")[a.type(d)=="object"?"append":"html"](d),b.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",content:"",template:'<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'})}(window.jQuery),!function(a){function b(b,c){var d=a.proxy(this.process,this),e=a(b).is("body")?a(window):a(b),f;this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=e.on("scroll.scroll.data-api",d),this.selector=(this.options.target||(f=a(b).attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body").on("click.scroll.data-api",this.selector,d),this.refresh(),this.process()}"use strict",b.prototype={constructor:b,refresh:function(){this.targets=this.$body.find(this.selector).map(function(){var b=a(this).attr("href");return/^#\w/.test(b)&&a(b).length?b:null}),this.offsets=a.map(this.targets,function(b){return a(b).position().top})},process:function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.offsets,c=this.targets,d=this.activeTarget,e;for(e=b.length;e--;)d!=c[e]&&a>=b[e]&&(!b[e+1]||a<=b[e+1])&&this.activate(c[e])},activate:function(a){var b;this.activeTarget=a,this.$body.find(this.selector).parent(".active").removeClass("active"),b=this.$body.find(this.selector+'[href="'+a+'"]').parent("li").addClass("active"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active")}},a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f=typeof c=="object"&&c;e||d.data("scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:10},a(function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target"),e,f;d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;e=c.find(".active a").last()[0],b.trigger({type:"show",relatedTarget:e}),f=a(d),this.activate(b.parent("li"),c),this.activate(f,f.parent(),function(){b.trigger({type:"shown",relatedTarget:e})})},activate:function(b,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g):g(),e.removeClass("in")}},a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a(function(){a("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.$menu=a(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(a),this.hide()},show:function(){var b=a.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:b.top+b.height,left:b.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(b){var c=this,d,e;return this.query=this.$element.val(),this.query?(d=a.grep(this.source,function(a){if(c.matcher(a))return a}),d=this.sorter(d),d.length?this.render(d.slice(0,this.options.items)).show():this.shown?this.hide():this):this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){var b=[],c=[],d=[],e;while(e=a.shift())e.toLowerCase().indexOf(this.query.toLowerCase())?~e.indexOf(this.query)?c.push(e):d.push(e):b.push(e);return b.concat(c,d)},highlighter:function(a){return a.replace(new RegExp("("+this.query+")","ig"),function(a,b){return"<strong>"+b+"</strong>"})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(b){var c=this.$menu.find(".active").removeClass("active"),d=c.next();d.length||(d=a(this.$menu.find("li")[0])),d.addClass("active")},prev:function(a){var b=this.$menu.find(".active").removeClass("active"),c=b.prev();c.length||(c=this.$menu.find("li").last()),c.addClass("active")},listen:function(){this.$element.on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),(a.browser.webkit||a.browser.msie)&&this.$element.on("keydown",a.proxy(this.keypress,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this))},keyup:function(a){a.stopPropagation(),a.preventDefault();switch(a.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:this.hide();break;default:this.lookup()}},keypress:function(a){a.stopPropagation();if(!this.shown)return;switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault(),this.prev();break;case 40:a.preventDefault(),this.next()}},blur:function(a){var b=this;a.stopPropagation(),a.preventDefault(),setTimeout(function(){b.hide()},150)},click:function(a){a.stopPropagation(),a.preventDefault(),this.select()},mouseenter:function(b){this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")}},a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f=typeof c=="object"&&c;e||d.data("typeahead",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>'},a.fn.typeahead.Constructor=b,a(function(){a("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(b){var c=a(this);if(c.data("typeahead"))return;b.preventDefault(),c.typeahead(c.data())})})}(window.jQuery);PKb��\������templates/isis/js/template.jsnu�[���/** * @package Joomla.Administrator * @subpackage Templates.isis * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @since 3.0 */ (function($) { $(document).ready(function() { $('*[rel=tooltip]').tooltip(); // Turn radios into btn-group $('.radio.btn-group label').addClass('btn'); $('.btn-group label:not(.active)').click(function() { var label = $(this); var input = $('#' + label.attr('for')); if (!input.prop('checked')) { label.closest('.btn-group').find('label').removeClass('active btn-success btn-danger btn-primary'); if (input.val() == '') { label.addClass('active btn-primary'); } else if (input.val() == 0) { label.addClass('active btn-danger'); } else { label.addClass('active btn-success'); } input.prop('checked', true); input.trigger('change'); } }); $('.btn-group input[checked=checked]').each(function() { if ($(this).val() == '') { $('label[for=' + $(this).attr('id') + ']').addClass('active btn-primary'); } else if ($(this).val() == 0) { $('label[for=' + $(this).attr('id') + ']').addClass('active btn-danger'); } else { $('label[for=' + $(this).attr('id') + ']').addClass('active btn-success'); } }); // add color classes to chosen field based on value $('select[class^="chzn-color"], select[class*=" chzn-color"]').on('liszt:ready', function(){ var select = $(this); var cls = this.className.replace(/^.(chzn-color[a-z0-9-_]*)$.*/, '\1'); var container = select.next('.chzn-container').find('.chzn-single'); container.addClass(cls).attr('rel', 'value_' + select.val()); select.on('change click', function() { container.attr('rel', 'value_' + select.val()); }); }); /** * USED IN: All list views to hide/show the sidebar */ window.toggleSidebar = function(force) { var context = 'jsidebar'; var $sidebar = $('#j-sidebar-container'), $main = $('#j-main-container'), $message = $('#system-message-container'), $debug = $('#system-debug'), $toggleSidebarIcon = $('#j-toggle-sidebar-icon'), $toggleButtonWrapper = $('#j-toggle-button-wrapper'), $toggleButton = $('#j-toggle-sidebar-button'), $sidebarToggle = $('#j-toggle-sidebar'); var openIcon = 'icon-arrow-left-2', closedIcon = 'icon-arrow-right-2'; var $visible = $sidebarToggle.is(":visible"); if (jQuery(document.querySelector("html")).attr('dir') == 'rtl') { openIcon = 'icon-arrow-right-2'; closedIcon = 'icon-arrow-left-2'; } var isComponent = $('body').hasClass('component'); $sidebar.removeClass('span2').addClass('j-sidebar-container'); $message.addClass('j-toggle-main'); $main.addClass('j-toggle-main'); if (!isComponent) { $debug.addClass('j-toggle-main'); } var mainHeight = $main.outerHeight()+30, sidebarHeight = $sidebar.outerHeight(), bodyWidth = $('body').outerWidth(), sidebarWidth = $sidebar.outerWidth(), contentWidth = $('#content').outerWidth(), contentWidthRelative = contentWidth / bodyWidth * 100, mainWidthRelative = (contentWidth - sidebarWidth) / bodyWidth * 100; if (force) { // Load the value from localStorage if (typeof(Storage) !== "undefined") { $visible = localStorage.getItem(context); } // Need to convert the value to a boolean $visible = ($visible == 'true'); } else { $message.addClass('j-toggle-transition'); $sidebar.addClass('j-toggle-transition'); $toggleButtonWrapper.addClass('j-toggle-transition'); $main.addClass('j-toggle-transition'); if (!isComponent) { $debug.addClass('j-toggle-transition'); } } if ($visible) { $sidebarToggle.hide(); $sidebar.removeClass('j-sidebar-visible').addClass('j-sidebar-hidden'); $toggleButtonWrapper.removeClass('j-toggle-visible').addClass('j-toggle-hidden'); $toggleSidebarIcon.removeClass('j-toggle-visible').addClass('j-toggle-hidden'); $message.removeClass('span10').addClass('span12'); $main.removeClass('span10').addClass('span12 expanded'); $toggleSidebarIcon.removeClass(openIcon).addClass(closedIcon); $toggleButton.attr( 'data-original-title', Joomla.JText._('JTOGGLE_SHOW_SIDEBAR') ); $sidebar.attr('aria-hidden', true); $sidebar.find('a').attr('tabindex', '-1'); $sidebar.find(':input').attr('tabindex', '-1'); if (!isComponent) { $debug.css( 'width', contentWidthRelative + '%' ); } if (typeof(Storage) !== "undefined") { // Set the last selection in localStorage localStorage.setItem(context, true); } } else { $sidebarToggle.show(); $sidebar.removeClass('j-sidebar-hidden').addClass('j-sidebar-visible'); $toggleButtonWrapper.removeClass('j-toggle-hidden').addClass('j-toggle-visible'); $toggleSidebarIcon.removeClass('j-toggle-hidden').addClass('j-toggle-visible'); $message.removeClass('span12').addClass('span10'); $main.removeClass('span12 expanded').addClass('span10'); $toggleSidebarIcon.removeClass(closedIcon).addClass(openIcon); $toggleButton.attr( 'data-original-title', Joomla.JText._('JTOGGLE_HIDE_SIDEBAR') ); $sidebar.removeAttr('aria-hidden'); $sidebar.find('a').removeAttr('tabindex'); $sidebar.find(':input').removeAttr('tabindex'); if (!isComponent && bodyWidth > 768 && mainHeight < sidebarHeight) { $debug.css( 'width', mainWidthRelative + '%' ); } else if (!isComponent) { $debug.css( 'width', contentWidthRelative + '%' ); } if (typeof(Storage) !== "undefined") { // Set the last selection in localStorage localStorage.setItem( context, false ); } } } }); })(jQuery); PKb��\TE-�n�ntemplates/isis/js/jquery.jsnu�[���/*! jQuery v1.7.1 jquery.com | jquery.org/license */ (function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() {for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);PKb��\r�;�tttemplates/isis/js/classes.jsnu�[���// Add classes window.onload=function() { var input = document.getElementsByTagName("input"); for (var i = 0; i < input.length; i++) { if (input[i].className == 'button') { input[i].className = 'btn btn-primary'; } } var button = document.getElementsByTagName("button"); for (var i = 0; i < input.length; i++) { if (button[i].className == 'button') { button[i].className = 'btn btn-primary'; } } var p = document.getElementsByTagName("p"); for (var i = 0; i < p.length; i++) { if (p[i].className == 'readmore') { p[i].className = 'btn'; } } var table = document.getElementsByTagName("table"); for (var i = 0; i < table.length; i++) { if (table[i].className == 'category') { table[i].className = 'table table-striped'; } } var ul = document.getElementsByTagName("ul"); for (var i = 0; i < ul.length; i++) { if (ul[i].className == 'actions') { ul[i].className = 'nav nav-pills'; } } var ul = document.getElementsByTagName("ul"); for (var i = 0; i < ul.length; i++) { if (ul[i].className == 'pagenav') { ul[i].className = 'pagination'; } } }PKb��\D�;��� templates/isis/js/application.jsnu�[���$('.dropdown-toggle').dropdown() $('.collapse').collapse('show') $('#myModal').modal('hide') $('.typeahead').typeahead() $('.tabs').button() $('.tip').tooltip() $(".alert-message").alert()PKb��\D�I�%templates/isis/template_thumbnail.pngnu�[����PNG IHDR���Gl�PLTE;�33PPP@l�������1@\3f��Azh�:���P�W��,P���bq�X������̿��-U�>l$G����p/`�=i�����d�E���F����8�� 2XBr̙����WdtLMM���(D{�� *II{~��z�P�����:clz�Yj� "@Gv���*I�/ 6\���fff}��|��0SHXt�ff���-Rw�oI幻n��R��������G���J�I{Fb�{�� 0R�����𗛦�0I'J������rw�Ez$9Zڇ@!B���ATq2[�Ң�3��JZk\���� x�Lm�p��㜚Raz������2eh�����Br2Ik��സ����������;~O������1:j0ST���ڧ��x���̫�۶�����@mAs�ʛ���\y�N�������GVc���W�?Z����c�ښ��V�����r���{����ϽS�I[z33f��������z�ެ���fb��l{�������t��_n����S]t���3Jw�����Ŭ����Gv������\j�-lo��B|;e�n��!4So����ȭ8Gc���'D���`~�������s���DW���J�dl�鯵s�Ğ�Ճ�������$Ht :��������ɛ������������J{�����쪦����旕 �ɡ��E�����Gq�Q�ct�k����趺�����ț��������ž�Iavcy*R9cRj�=l:e6]Pl�$DjRe�Qt�#����IDATx^�R� � �����B�ea��^�`�$E.��������^�) ��;�̢�pXߊu�6m�b���~pf"�JF��)e̫�^n� ,ӌ0�Ǝ�"}&���6��x�c�8xl�4*�z�Z"r��Е�I��V&�ˌQaw q�"Xl��4(�)���%3\s�ux�7oe�7��,�kxZ��:��pC!{��v7t�0QCբ���p]2��*���-.�����ұ��O�9c蔆����g=l�d]Vo�˕���(�����!���}�#��Uo+X��*g��s���}�7;����+à��,Ɣ�7~� ��v�����p�s��G�t5o³�3��b�۶]�v��9>7A7��/���^� p�9j���0d0���F��>���Iv�V�1О3�9ö���Z��K6.u�doN��ĸ�:�c�(0M1�-�Ʊ�,�,[7��pҜ�7F�e!Mq�߇���]|��M�T��T� �����BaK����Tk�< 䖿k��U�vhu�RFQ䭙���$��x\���8��2_�e\��@=.���4r��(�2�/�B��<�;/Ɏxء�浮��:���5秜�\��&aOM�B��� r�վ���ЃMØ��:�!?��y<�w�_��X5r���eqs�A�1*���ep�N]�+� �\�j ��[p�0jRl�"q����˂��%/���-��˒F���u� k���&X�0�!Ҡ�I�7�˰RCR�M� K��I?����,f �^�|�c����שׁ쭪�IR���l?�n�hr֥����z7A�VNM����\�;�lZ)���YX���^���<�ݠ��:�J� �*�29��|�P ��l_^���<�/�Z�~�5Lܦ㌙2 ��UZ�cN�F;�c�ކ�BL?ƶ5rJ�͙�j�cz�D�۩䫲v8};����)w&��H�������E���e �b!a���G���"鴩|:K)(��x�4;i����&�O���>�R����p��k{��� r���v�t���;Т�Tr�ƺ����'���1�x�L"�'���KϏK(�ǵ�딇� _AE�d����'N(F�f��k���G�Y��)�n�:7��ܻK��w����ᐒ R������V����vϜ!�k���#��t@��45�]y�9�xf�M�e}�T� � ) �����s���w��RG�ڎ���.}�w.]�.}�w&��F�B9��P���??�(�l�1��8��U�_Ay��م�meq�.�`E�;���!;�/���@h �Bn ��Ofa��K�jq�`Chv�����%��!�r�s�/+�6!��\V�n�XN��JͨrЕ�v�ci�`���9�>�\§�.q������!���F����8���ڌ����g�~�;q��R{�� �����������:��Ƽs ȩ6�����9�q�q�k�'�t���$w~3u�ۜށ�3���1�ނ�zG���[�L柜 �#�q~rV�q�ty5���(t��ΛQ�t'�?��mk�&�!7?,I�#�Ǐ�@ �?.�g���_/�p���\~�Ÿ�{?āw�iPI5���Sv�8���N�D ���Υ��n�ݸ1���v��C\n�<��)����z �C��;!�N���rh�,��K�K����"�@�8.�#�a`��� i���ɇ��aڶN�7��q�[�oM��]���q{�4��.%,��_5�QD-J���n8�o��?����pov{m��A��p�r�.��-�|��p���ٶ�S{V'� �U�~8�/>��O(`X�f���5:��CUKE�����,�;g;�P��YV@Q����JV#f�o|�>�j���'ޡ�k�Z��j�P˅�R����u.s:!:���<��N���vYuWo��{�<[�r8р0l=۶�{�6����N�R8lq~z�_[X��/�z�Cȕ��ݕ��AٶiU�Jm��Y��������`��h�`�&J^�3�,�"2��w��i0�Aą�Ǐ�I��ȸa�z �;��E8�;��W��ZݰW�i����g�!�z=K�;0l!RV���A���=��$ �8l��n���n��\7<�֮��ګrq&·�C��F�O�j�Y�0;R8��a��p�f�~����٦���G�^���[7�@���!8�IzH��j��d����:���f�������d�Gn��l��8 f �+1Λ���i �� �l)H)���E���"�~�;y����;�j�9���2��lo��T���j�i��h��0@�[v�T�+T9*�ꬖ���LQ�3��C?\b��Ñ��_Ւ� 3!<��ɕ@�ugT���: �W���_,f��T�!ށ���|\����S'�6Nc� -��E�uUjYyxƂmiT�DuT�~ye������3S�W)oT8r�Ì��f���>���Y����T�����h^��4��сw<<��ZDO|�{��R~���Q���kPO�?���`3��:?N2 ( ?��x�[�������Yu�����A�8R����iNL���2�E�[NPd��m���+����mI ߾��?���=��6;�U~{�+Ã�U�+@�fS��c�p�<�~��p��O�\83�՜�n5��f��E�4���z�wD&��Rl�/�;J��ʨ���w� � ����;R����b�߈��!��t�ޱg�HH�o��;o��;J�ųGg���Ts�[��0uCoPWo�d� �DEBE�;�/r8�����lsa{m{����`TqW>G�s4C3q`���S�p������E����v�p�A�D�^&��}�a�]ƛ�̮�6 u�g��|�~c���\�0���� Xƺ1�!*E��N��*������)��>�㣻wj�W���W�ݺ�\jmhn/�,�`Y�uV;p-��p����\�������W���XG�iU��n&�I���G2w�π`�`�Y�E�LyGb�Ư�rB�%��0ndF׆�R ߖ⺾�4���>{�P�f�,w�����=\�rh�\�̝���8KR���^v���^����썽���y��~W�]Fo�fI�J��4�+ >S�� W��B����;������������ݽͽ�4y�Z�ױ��P�ќS�`S�@��;y|`É����8�y�8�-(���q����u���^���4LGC�r��l'��.��ɝ���-(�m>\���``Lj��38d�.9�r��!������꺙GǑ�p=?�=�V���/��"9\����gtt�&00$p�`�§'�[�������&$�kK= (Y8~!;��7���5�b◉�"�0`,5d'u�� �h���Q�,> ;賡��8�;9�� ��q����aG|Np��9�&��Ã�������KC��,��1y�f��X3F� ���v�n��U��;�����A�-�u����Rk>A���m���,�mȆyn�%�Q��ȭ��_[9ݨ��09�`�=�6X!�O�A��Ŷ�)�a�[9�͉��CE~~:,8���p�H`��7��ETE=a���/^���x�伜Zq$�%�/��>V�L�ry�֮�~I�T��b/Ҕ���i����vZ���^�p��r�ۓ�Y#t50�V�^۴?D����6V�f� u#��(X�2-0�"�!�����`��%�orp��c�J��#��%a�f<�:U�CwOj��{~��)J� �������<�D���W��x��8�<�<���iRj� ��{��/��Z�̰�q��L����\'O�����ymD@V��H�a�*�è��{u�� ����}}Jqކ����82})g����� K��H>�eP��Ķ�\�l]�iZ˺1�D$�O�pq$��}�Wt���~��qn�2o[���j��3>$g�� �@����kt3ՂsU_ U���&y�R��3����x����1��:�������Ҁ��PXҐh�D⥦Y�XT�������b����s�0ϳ,sF�"PW{���G-מ�4��ڰ t� �2�[����f�7���6z���v�Ku} ��+]`��?� ��b��=�F�@�ހO�ڽ}t��Y���/��VIf[ L��W�U9.��s��]e������bg��R��.ߢ�Y�45�K��eC�}�Rq�r;.���-6c����U��)<�Eh��6�Q�kÀ+*�j7�Bw�|�V�{J%s�� ���!��8�)���j�gL������ނ���.�m3(�c�.:Т���ς 3��k;`����>�8�r���_b�e�Bnhz������%�Z�*[a���s��#�5~h�������{��[�S�x~ ���0��WFҏ��ix�t����>��1�:������?�`.��>��� :Җt-V���I���đ���M���|�� ��&��K�1Q�����[��?��o�! G��[� ����Qm}�Xm���Y�%3��<�v�����:�' q��BCs�8��G�c��:Q�p�'��,L��@]�Z7���pH��ض�i��GC�}�����@��q�>#����Q �XW�(�g� ���E�8ȳ�%G�c�^�����9w@3?p�F�he��E���-�ک��[� �dE����%�-qؖ�p\�A�V��յ��ך<�F(ql�;�g��L������{c���Gv/p~P�ȝ���e_]>�.]7C��Z���}r������nư��:~��{�:G��_8�:�P'�탍���3GT�����qU��)+�����q{~e����GS�cS��3w�'����w�R�n#f���@��!XK�&w�>�q|�dS�����r*�$��z�~Xߛ��+�9ʷ�0�>�&jY�Wx���V���`��yh��*�?�;�q�H�����!�*��?s�}spua��VV8��T+s�&��TH�0hM���G�k�9DM��2w� ��8��M��� ��v8��[���!�(-TU��aIΝq<���h���2ƴo�=,�J=�Zx���a�F���'c��%8.�L!��Ӟ�lJ��U��Օgy�8�yd`����$��+>��?�*��v��+dn`{uP��8;��C�a�Hr$J �ٽQ�Q$�ȓ��I��&M�=^���h�uu���.�S`�p�8���ک� p(B �,���[pص���x�_�{�8\�Pґ[���<�u,j�ƾP�l��0ۉ8�ɭ��F�U�u�Z���wo�~�4Yɝ��k��<� �De���86�@��q3���ڡd��+g�s�gY�2Nu˜��S�'�����~��Z��������º�B�D8udȉ��`�`�T����zB2��� t�9�\� Aپ��")��`���q�^U�ݚ���x���TZݜw�͟�g$?O���r��9��X��� Aq�Z��N��j�>S,){��뗿�x;|��>�O(��l�q���D�G�sv��1��va��8TG���WN����oXmL�q��m����|x�%�YYM��:e%�h7_�'rgP�x�̺�"�N͆܁�z*mI��qrF=3��S�����]��ʡ���qMO�o��{0B�l�J3��PN7�ȉ�e�3d�l�X��u��/vڼ h<ب��'�fLAđ�c�1�};��(@'˿�L�8�e�ޭ�]�v�tN���2/G�N��DȰ���B5�T��QF6����8��H����� /Dߒu?��}��8�e9%�\4�g�!�7�n�eY� �a�9����8�xTGzu�q|>�E��������� �{��8��(�ظ���ܬa�wN˂�O�2�<m�ɖ�� ���-4%�ܩ��!*i_ ���<�:nmZ���$á:�Y~.k��{N&OŁG�B�C�kO�quX��K�-�����}xy+�6�</`x��yY�sv��]}r�!��*���;+�J��Ź/�c�q� �^���Qނj��k �tl�]�c���&�TG��8�|�s6�}\=��5�xU/倐'����oĘMN�L���v�KU�<��;̘�k^��u��}?�=�\p��w�+q��k]�,8�p+�}�hs.������-��cc�&GQ�8w��Nn��H�-���O�ܾ�:��� ��iUg�A��$SE�:ZΨ�m�*\Ń:��N�N����1��`T�8Ce�?���p`_��,�1N�Wljq�.i�����b��q�T@S�é�,-��R@o!��+�n�1�5��'��h��R�S�<���Z����1�Y�xwK�/�2E��p� �*�ڻ��ǹ) >��W5�l�<�s�S0���`@ [�g��� �. ǎs���0���C��sC��}�,��LFu=�F�Mu�a�]�6�!O�>�ȡ�������7Y��d�T.��Sh&P�q P�.����M�,��`)P��+���۾S���|��K����߾�}t��8�� f/Ե� �`��p״>*W��q}�s$"� �8,�ԂMJ���L��魩�~W���`�+�4��ٗK�E��(\m�4)Kg'�-�|�W/qй_ 8PK��X�[��ӏ5\gtl�}���{��X��sB[�����[��Oj��w{@膥�}���+w~|&L|����-r�,���+���o�f�Ǜ�ovpzu�s�6�wF��1���{���+���`s���"HQg?#��5:csH�9���Km՜IEND�B`�PKb��\G�k�%�%templates/isis/images/logo.pngnu�[����PNG IHDR9�D� pHYs.#.#x�?v MiCCPPhotoshop ICC profilexڝSwX��>�eVB��l�"#��Y��a�@Ņ� V�HUĂ� H���(�gA��Z�U\8�ܧ�}z��������y��&��j9R�<:��OH�ɽ�H� ���g��yx~t�?��op�.$���P&W ��"��R�.T���S�d �ly|B"� ��I>ة��آ���(G$@�`U�R,����@".���Y�2G��v�X�@`��B,� 8C� L�0ҿ�_p��H�˕͗K�3���w����!��l�Ba)f �"���#H�L����8?������f�l��Ţ�k�o">!����N���_���p��u�k�[�Vh�]3� �Z �z��y8�@��P�< �%b��0�>�3�o�~��@��z�q�@������qanv�R���B1n��#�Dž��)��4�\,��X��P"M�y�R�D!ɕ��2��� �w ��O�N���l�~��X�v@~�-��g42y�����@+͗����\��L�D��*�A�������aD@$�<B� ��AT�:��������18 ��\��p`���� A�a!:�b��"���"aH4��� �Q"��r��Bj�]H#�-r9�\@���� 2����G1���Q�u@���Ơs�t4]���k��=�����K�ut}��c��1f��a\��E`�X&�c�X5V�5cX7v��a�$���^��l���GXLXC�%�#��W ��1�'"��O�%z��xb:��XF�&�!!�%^'_�H$ɒ�N !%�2IIkH�H-�S�>�i�L&�m������ �����O�����:ň�L �$R��J5e?���2B���Qͩ����:�ZIm�vP/S��4u�%͛Cˤ-��Кigi�h/�t� ݃E�З�k�����w � ��Hb(k{��/�L�ӗ��T0�2�g��oUX*�*|���:�V�~��TUsU?�y�T�U�^V}�FU�P� ��թU��6��RwR�P�Q_��_���c ���F��H�Tc���!�2e�XB�rV�,k�Mb[���Lv�v/{LSCs�f�f�f��q�Ʊ��9ٜJ�!� �{--?-��j�f�~�7�zھ�b�r�����up�@�,��:m:�u �6�Q����u��>�c�y� �����G�m������7046�l18c�̐c�k�i�����h���h��I�'�&�g�5x>f�ob�4�e�k<abi2ۤĤ��)͔k�f�Ѵ�t���,ܬج��9՜k�a�ټ����E��J�6�ǖږ|��M����V>VyV�VI�\�,�m�WlPW��:�˶�����v�m���)�)�Sn�1�� ���9�a�%�m����;t;|rtu�vlp���4éĩ��Wgg�s��5�K���v�Sm���n�z˕��ҵ�����ܭ�m���=�}��M.��]�=�A��X�q�㝧�����/^v^Y^��O��&��0m���[��{`:>=e���>�>�z�����"�=�#~�~�~���;������y��N`������k��5��/>B Yr�o���c3�g,����Z�0�&L�����~o��L�̶��Gl��i��})*2�.�Q�Stqt�,֬�Y�g���;�j�rvg�jlRlc웸�����x��E�t$ �����=��s�l�3��T�tc��ܢ����˞w<Y5Y�|8����?� BP/O�nMOE����Q���J<��V��8�;}C�h�OFu�3 OR+y���#�MVD�ެ��q�-9�����R i��+�0�(�Of++� �y�m�����#�s��l�Lѣ�R�PL/�+x[[x�H�HZ�3�f��#�|���P���ظxY��"�E�#�Sw.1]R�dxi��}�h˲��P�XRU�jy��R�ҥ�C+�W4�����n��Z�ca�dU�j��[V*�_�p�����F���WN_�|�ym���J����H��n��Y��J�jA�І� ���_mJ�t�zj��ʹ���5a5�[̶���6��z�]�V������&�ֿ�w{��;��켵+xWk�E}�n��ݏb���~ݸGwOŞ�{�{�E��jtolܯ��� mR6�H:p囀oڛ�w�pZ*�A�'ߦ|{�P������ߙ���Hy+�:�u�-�m�=���茣�^G���~�1�cu�5�W���(=�䂓�d���N?=ԙ�y�L��k]Q]�gCϞ?t�L�_�����]�p�"�b�%�K�=�=G~p��H�[o�e���W<�t�M�;����j��s��.]�y�����n&��%���v��w �L�]z�x����������e�m�`�`��Y� �����Ӈ��G�G�#F#��� ��dΓ᧲���~V�y�s����K�X�����Ͽ�y��r�:�#���y=���}���ǽ�(�@�P��cǧ�O�>�|��/���%ҟ3 cHRMz%������u0�`:�o�_�F�IDATx��y�������g�f�EPD����₲�����)1.�&.�3�{\p��&.�h�fCA4�QQA��fff�������������}�zfz��u���s�9�kf���#�^@X�<T�#� ��w��S�݀���^@1�=�6�2�W� ;��D�"e w�\�w�.H�#� p%�J��`0��~0X��㶐d����t���t�� x ����{2�z ��b�h==�zu��@j���*�D���/p[w�*� <��\�A�K�R @�gDL���m�)�]+38(/W�⨊] THM�y ��4��d��h�3�p��=_W`j��,?M�Q��HL�y����E9G1i������Y���^�.D�<�J�[�s��.$��ʲ���� @���_~p����Q����s!0=C;�n�=�Em"����'�:� $&@�<�Z��t�"` 0��r�8�#�6������eAIw�a�� @��v�� �x9��e�.B/�*�=V�ɖ��c;U�?���H<��BQ��Dٹw�3-�}�m��ϓk�C��s�I���G��?�?j7�Q�}cL�Zm�f�X\��O�nf%0�8�҆cDó��?Do�� �y.y�p��=�v����x� �}<�#?.iM�>1��]e'�<\@�I�tr�v�c�ާ�m��z�0 �m�<�P�H<����o�y�`�0&���0�<k:�>1&�Ye��/�� ��Ε� Vc��,jk[��i���ۦ�n�/����i@):or :��u�n�忠�ǟ��E;�Gg�M���s��h�8OŲ#��k����|�hE�4��}<�����o'@��p(�T�S�[>3�f������f��O���x��?( ��⊻v�2��*��"�1ӷ�a�+㱝EXN���%Dr��f&�'�^��n��c��� w�B�K��c�P��U鴐n���th�i9@Bi/SE7:�.��Q�\T��%ߺ; �E�S�ؤ�/Eu�@� �ԗ�]9:Ù�����@u�c��� 7��)����d`���^�g$����A���P�]��q���Y��]l)�ˊt"�|���ӭ�UӰ��O65����]1v���$�G|�g@^�̊���*��O���]�Z�|��B;��f:��9�R[Ag�����C��yhov6��Y�)֜��`�I��(�:U�z�o�P�B ��|V��1i��D'@���5:��5���������/Š ��-q��:�7K���f�5�z�:A��(� �q@�t#�K��ߥ~+�� ���:��Ftڒl���*����*�q�588�4�%�xm^���Tߎ� ��8�YLu��)�&�#�p��9kM@<lUxR�n���&?HG<��}�������C LK��=�%�,��לa�[}1R:�&�x��=�^�3z �r�3�K� wޚf P����B��Ł-2��v@�zH�Jh��GG�֠C%��L3YtD>�(!/�68腐Zt�ӆ{�^� ɵ�������ЋA�"��D،�mȢ�M�|���#��&���Kt�AZy_LQ�h�aY�G��5"�؟�ޭ���ӐN�Q������~KSѱt����c����ܚ��1��4�C�]S�,)$1�_�c(�#E+ۡ]{�ȱ��̰�+i�&h������l�/:.ˑ���c�F�7#�]�)B�jJ�ˁ��F�����8���Q�I2SB�qt0�Wr�����Nr����`�}+Gс����S>E;���[|2�.y,k�HG<q� ���`6<�|wc�YU��],�!�E� �כWaSM(� �EuQճ�Jcx�!D�t+W�ҩm3���_����@8��SY�F��V��N@_�jhW��?-�-����?���ݙ�+$��M�a�|6xx<Ռ�A0�����:Ƨ_"r�)�UBz�Ϥ���h��Q�k�Q(�|�Qt���cu: o4����^&d5Q>��S�â ��#����x@흟��!�ȷE��Dc��j����K���z!�i��^��u�s��NU=�3�ؽ럈�CӴuC�z"^�9l ƀ�;�pF��H�ܹ:�;� �����L8C�Y� ��V$(Com4 �a�Z+�k2�z��,�{�� ��6��E=����_�B%� f����=�>R�x���R���.�k�߳R��2!wo�=��y���<����Bܙ̙u҇��'e»J���&y���F������Y&�1b�Ȧxe/?��1�*��2�=����%�¯&���vηfW�� ��]g�wt}�k�Y���n�:T���#/�p�:R�*�i�Y���.M&�y��D�"��IB<I��� ��Y�i��T� �BG�.���=gg�CD��(4��Ѕ����p���q�ciK��T$&�Dtfuc�����yߐ��D�i�G��U�{��<I"��xtK��%��q)>�HS��%�R�D�h�C�]��Ȥ�s�[�,�TAW)v����0-Q��QN8��Vf1C�g��� ��x�ge�����1�q�1�˛.���s$�t;�G�:�=��"Q���'>��8p����g�cJ'��ˠ��=��2�~zU«ֿ"�GY�JR��H�=L_�^}���H� �>N�ɖ�E����-0�~CC���0ܓ�m�2�~O�={�O�ڻ�Է�ݢ��A&��]A�([��K��C��^d{� #N��V�J��"�[��O�0Vԙ\��,�pT�aEȁ������8/b��1ۯ��8�z��J{A�X�ͯ1���-LE���NU֏�Q3ڋt��'S��c2��:G�AH�q���<��@`�k���8t���t�Bo0^|j��G�I�Z��N�B�C�L:к�Y⟚���űܚ� [��`�@�EH���s�K:w��xw���$�_��3=rX�M�B��~%=� È^T�n�m�w�����=�SO��0'��3e:4�������G[���[*����6��fֻ�&��~%%�����.� ���#I����w5�ݷ����B��lo�K=��+��ۤ�H�"�+do����@���1#�W��u.؈�5w��x��u�|�hn �tM��V��V�9�i�Ϻ=K��zJ�Eh����1��P���o��˻�'�*��RdS�*��R���z�M<�g�ȋ�2�h2Ecf�������w&"V�Ҹ�L>gYs�B��|�4l!4jg�YJ:]e�� �Y��B*7������{7�|���Ĕh�e�Ur�9.3���b�d��k�u��d����~G(9I���-[� ��y�~ڧXX���txD��|�6�t�1��_�͙Wl�>�(Ì}�ʬe��x1��`�~�<�I�����q�|{�Qso9�'C%� �q_0�:�y�1�r::>@�<���T�s�=q���'I�O�����ۂ��7�E�^�3��p�o<������ni��'z4ͥ�U�Zt�F������cJ%8SW}s�U��k����GAD�� &(� ����ɣ��د��g���y}���]�K�w�����d��@���GGϡ��O�R%��|��h�~� �rq����/�|ըT|\�b���uR�F>�]�������?��ܞ�G�6}p?�L��Hv�R6J%�W�>��uߝ0�4bK��G����t�9X��{}�w�w����۳"�!k���6F�ݠ/B�8H��a��u�Z��@d�ڱ�ƾ�|M��:_�*[ݺz�ލH&����4E��$C%�_���k�Ws�iD�dѧEb�O��u@���bƧ4���;;��;���لa��}N��ZuTq)��;�x*����B��浟K=���hH�'OmK��1��~��Srϥ�+�\�z��1�ؔ���[_y�$�Hd���%��C�,Be�L���^���=#�|&f=�ԮC�w���q��0wޑBN��]�N!d��oV�$�N� T��/�Ll�����OW��OR��R����_�Ht>V){��)m��w�~w|]���gF|�_�J�[z�}���y��%�F���"d�Nؼ5��>B(ґB���9J�8���1�.sʛzR^�>�y������ܚh!&#���go��ڷ����8F�m��3��+n���c'�[3�v�at��wm؎=�9V��c!����7�� �=���+9���P��� �� �DM13�ի==�m/���3�X����9$5�C�43�/����ws��?��NĢ=PFbځ�ޫ���֯=�����0T���2#���ySy�F�Z�113�?��WV��X�������!g�Ž�Գi������|Iӊ�<�z�+�3��À��X�s�o-��ru�]���{�#�J�_j�!̆��P���hg�7JY(���� kW���R��Ȓt���åٰ��[�c�h毳0���P��4����]�?D�%��耮�ĩ)�ĝw�-� �M��'��#�ݘ��������|Z�;���`<'�~��|��C1`��5��i�>f�l\��5^��3wͷS�]�ݘ������t���ym�,�is��>��0勧Q�I��O��Xs��1��5��߂��йIn��(td����Bg��q��א�Pogo:�z7�{ �(�c{k�����Z�^�S��%:t&��e�h����7�"�(�ISʱC�\v+�Mcӆ}��*�ۉ�C�[yʥ�W��r�'č0�q����i�_0��ǹm�e�q Ѧ-���?�z<�mCY�B ����:�#s�Ǘ�S1-����ѱ��Ϧ����I�n\���!m�N2ȼ��]� �Yn��3���w����-2q#� ���22?�/]cF��(=�5�MF�i�HB�:���'�e3M��`�4�J�iӒ+/���G�7|O��&� ��"b��N}ѹ;~6j~Q� ߠ�輕U���}�#���U�\�x���$�љ�3iJ�,E�9U���6<�� �R�|'�K@�����d��D��UH(��k}���2V�v��m�X��`~�E�ѹeO����2�s+t`��D�eiw�h�}� ��k"�L<��1gg�V?$3���0t��e��2�eC:k�M����[�yԌ\o��f��vFG?���O�i�I�ШB!��k�Jd�R�i"�qtN�2y������x��s�h)��!#H]L�RT�TX#�� �C揔c�Fͧ�<�L��a�GҎ���o�\�ND�ħO�5�&��/��̕�T���ǵ>��/��YtO1q\�Id �.k���4Β �ut���d���S"��Q�O��~��� ��c_(mm5�,d�m�Agɀ�vV�K�(���~��k�ޛ+_��vB�b8C:!��N��d� ��LQWg6��0���X�a�5*�:�u���د�B�Dڔ�p�����:ˇд���8�=�1m�@�H? @��c=:�vҗ��^t���M��L� BΕB�I�2"r�_|8]���r{/�f�B&�+��S���b��a�i*�k�&���kLW�f���[d�p!-c�B����xv�%��89��CC�k�]|�{�/꽹��P�[�;O�F(�sd33E)�h#��^LG<;ȃ�'?;�&�g���6��At��9�x:���v~X,~���\�&>F�n9H��8���B>k 6�< ���y�F�V،,}��<ok�Y�v��N�~�h��F���/�d_+�C��RM^�kU"kH��Q 5����M�~r�{��{K���'"ҩ��;K�t"1�U�'��1|D�:R�k(�A�=��t�P��]\/�ȫr|�C��ѫH���3Jl�Dk03v�ք��,�:�ps�t�ё��������6+s�<{[ژ-�o�U�}��[<m�2�7�,���ѻs�,}? �#�P1�3�%}��K&� ��{O��x��)w�� Z���N���)2+�;F�jW��~���?4�JKU�Gi���� ڈ�#%��*�.�����Ut'�3���]��}��{�Q.&`���^k��� ��]���NB<ݥ��% �ZL� �ʅ4���נ���!���y&���H~6C�.2�<��}�I?%?�L�0��'��&2�M�I��O��]�u�ĔS�d<��&�`���[K</���}� _q��_�5j���["]�N�T�j��S���RtŶ�� @�a�5O���/�c�UdE�����+z��ר�e$�z{��@ ��i��?G>� `+tq�dm{�$�O�0q�j�?=#��:�xڣ�b�q:�#U�u�%�Q貗��ܵ�W�@�z�������˾ $!@�"���8%��֢c8�t�Ѵ������B/�@��@;Ȕ��њ^%��0kh���]�v#��^$2��@( �<�#��(_����4����˽�x,#F��>y�Q @�L��i�����w���/� P���/��/�!@�O\4�����/��o|E�/3a:�#s�R8�v��@( �ǜ��Ԣ�R�M��I`*�ۭ|��W;{rl��!@���$��? ������+Po��Evp���s>:��7:��]��%�_gS�Ϊ�@(�9��u�`�IEND�B`�PKb��\,�Aɧ�)templates/isis/images/system/sort_asc.pngnu�[����PNG IHDR�[A�PLTE���333222333222333���:tRNS��ߚ���;IDATx^c��d�*) �[�����9a@�JZ2sZ s��Y2�1��)�� ���lIEND�B`�PKb��\b�K��*templates/isis/images/system/sort_desc.pngnu�[����PNG IHDR�[A�PLTE���333222333222333���:tRNS��ߚ���?IDATx^c�`��l���f�`�̠��̜������䦥(0�@��0�F���D ״��IEND�B`�PKb��\A�ͣMM.templates/isis/images/login-joomla-inverse.pngnu�[����PNG IHDR�w=�sRGB��� pHYs��$iTXtXML:com.adobe.xmp<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.4.0"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/"> <tiff:ResolutionUnit>2</tiff:ResolutionUnit> <tiff:Compression>5</tiff:Compression> <tiff:XResolution>72</tiff:XResolution> <tiff:Orientation>1</tiff:Orientation> <tiff:YResolution>72</tiff:YResolution> <exif:PixelXDimension>24</exif:PixelXDimension> <exif:ColorSpace>1</exif:ColorSpace> <exif:PixelYDimension>24</exif:PixelYDimension> <dc:subject> <rdf:Seq/> </dc:subject> <xmp:ModifyDate>2015:03:15 13:03:61</xmp:ModifyDate> <xmp:CreatorTool>Pixelmator 3.3.1</xmp:CreatorTool> </rdf:Description> </rdf:RDF> </x:xmpmeta> =�k��IDATH ��Y�NaǏe0���ʒ�� r�nHQ"n�eRJ�[K"r�p7�pA֔�d5D��R��3!�~��L�3N������w;�˲��K��`���1�����YU-���wBv=tV�:&�a�����u�j4�/x�88U�X �RM�ym��O�'�V��MX ���� ��nK�K[kg�J:�İ]�.�[�:�J� �)����?�em�\W[������3`4�5H�]�,�������ܚ�h!^x�=,��O{)�3��]�E1�����m���6��s0B�1>�~����f���tx������l���Ƹmj3xۼ���o�I[���X���|+�y��l:��c�{ �^[K[�q�܁�-�!{�.4� �\��sս�]��\��:�xK�6_��{�,��^��9y�cs���>� fh{,4��Y?'i�R��j"ѯ`��r��~�- ��4�]�&u�"1�-p�>�q� �<Ĩ_��8ޱ#���xK��ShBD��a� j.D��U,�{5L3��1�WO{̄��{`<(�P� �AP�]�� ·��<���%��mkZ���bg���F(�/�}�Ŏ�����P��^�~+9�ƒD?�`��+j�=�P,�o��B�P��p;+s+�ְ�����o4�z����1�������p�6��ր�IEND�B`�PKb��\�jˀ��%templates/isis/images/printButton.pngnu�[����PNG IHDR�aIDAT8�u�OhcU��߽/iBC@��H��NU��C�BA�"�R]9@d�U�"�N$""Bqcu#t����t�0�ŝE`�4)-D��ھƤy�@MlK<p/��;����1��^z��R:�zC /���Q�/~��e.I�^�������RB�6��|��1�Z�t�������zu��� ZQ;��=�l �7`|t�Wg�0~-������;�g*����S���57�N����r�2, ��Z�>~�JhĒ�T*�/����!�4�% $�`�0�Ԥ��B�$=�k,--��"rsll����]Cqv�N�LJ a4#��<���f������l��B�\.�3'���'�.�T_?3���2������}i�SSS�E&''�����m�ضM�R�jEQ����Z��m�8�3�l�6;;;��y\�+C��*���y�Vk ���l6��j�����t:�0����0i��|��<� �T�J�@�ۥ�n�j�p]�u1�0==��A��~|rr���,�����so�l��G~����z�8��<�jcc��S���[����1D�!�"�8f���7ge�6Ƙ߀o/��7�6#K+�ֿdz]D�8^_��{���:��IEND�B`�PKb��\�bhkPP%templates/isis/images/emailButton.pngnu�[����PNG IHDR�aIDAT8�œ�nQ��s�z<v<^H�Dq�H���W� (y:^������tH EP�(�� %�ټ%�dl�v/ELX����9b��6�n���{;^ѿ����i���%3c-��cɌ!3��X�dI2�췿���z����f9J�xy�/v����=�Rge+�FS���85��� �~LY���й0�\���Z�:��goN8#�כ*�2����2�t��JX*9\Gp��j���(fk���2��<���4`c���r���]������:P�a���ea�Lk����S�4@;��R�^+�j��0��x�� � ��6�J�V�DA�c8I�4I�r�f��۽.���N��O]�U|7C�W�vV���q��0����9����P�f���|�ps�X��XXA���f��� �Y�)x9��Z,��XD�uC]��QoĤZk��GQ���]-H��DT��I����h�k�98 �Q�}�����۵�?7��h��Q����@nd�,�������C��3ݚ�'�o�gЂ�IEND�B`�PKb��\��/bb&templates/isis/images/login-joomla.pngnu�[����PNG IHDR�w=�sRGB��� pHYs��$iTXtXML:com.adobe.xmp<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.4.0"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/"> <tiff:ResolutionUnit>2</tiff:ResolutionUnit> <tiff:Compression>5</tiff:Compression> <tiff:XResolution>72</tiff:XResolution> <tiff:Orientation>1</tiff:Orientation> <tiff:YResolution>72</tiff:YResolution> <exif:PixelXDimension>24</exif:PixelXDimension> <exif:ColorSpace>1</exif:ColorSpace> <exif:PixelYDimension>24</exif:PixelYDimension> <dc:subject> <rdf:Seq/> </dc:subject> <xmp:ModifyDate>2015:03:15 13:03:12</xmp:ModifyDate> <xmp:CreatorTool>Pixelmator 3.3.1</xmp:CreatorTool> </rdf:Description> </rdf:RDF> </x:xmpmeta> ����IDATH ��MHTQ��r��"+��S�E��Zբ�F�Hp��H�H�MA����]�ZYI!Ade�'�RA �ՈZ���^93sN~s��sϽs�{���a�l�����y��4ƍU ժ��$�X�Q_������I��ͪ&�"n��0�p2�X +���M�B=h���Qx{5 ^�O�;P�Oж�,�����?�/$w� �z�]{�Ĵ�U�&�Z�Z8]0� �M��X�?����t�kWj�� ��$}!��|6�ӧ�!��Ļ$:�����}��=�9!�� q�&l���� �?��]F�����Z^ŧ`*a!t�����A�3�$q�k�}�� ��r�ִϏ��C��>9ͻk/]c^a� a<s�rz�4I7����A�7mgt�L�'o�@�� ���ڶQ�&�N�V7�x"�wZ�c�Ъ/��v�F,���U��G����2 ����5���ܵ�;D0�x��a��'.��4�n��&�J5�[�� '����oq9r��{��� i�s�z` �o�-�(�>�:7=�E0��~�����Jf�� �^@=9k�G�����f��u4� dz���h�r�N��:d�Y��?��.���+պ5A����䜄JX �@��,� �c�t}�K/���T�6��d�k�$�k4����ʁ�rAc��f2J'��}�7� �D�bq�Ƹ���ZU�=Іnܷ��IEND�B`�PKb��\���[��$templates/isis/images/admin/tick.pngnu�[����PNG IHDR���R*PLTE���333333333333333333333333333333333333�ȣ� tRNS/_o�������æ_IDATx^c�$��@��;go)\7X�.2b'00p^2�:0���2�0$�-8 d�a�{K��1�i�"��`�� @��X��Z�i;q�!�;˸zIEND�B`�PKb��\��(templates/isis/images/admin/filesave.pngnu�[����PNG IHDR ����IDATHǭUKOW>sg��#tj$؊�ja,��.��F��-ɢ���mB[���/(d��R,��$����I�pC1�1O�NϹئhIՎt����|��s����G��$I��z�����QE f_�*'��A�u��ϓ.�徙�eYcLJ�U�vӲ�v� ��G��֭Ϡ�h�������`�0F/����8�{���j�)�����@Qd@�}O�b���m[yO�<J��քf�����0�UU���X&Tt��}j�X��X���P�V���D�t3hA4%�0"�� d�B~{�2�4�3i���M��u���{ �h���̑�a���A�Z��]�|F>۲ �h��9�Sz�x���X�omjj�������Í� �n�/w^��yaÓ=���FS�1�k=zZ 1��{����]S�A� �8��O1�����'���Q����4�W�N't*Лׯarr�W��o�� �Cy���c�\�W��|�( ���Ғd��'�����4|�CS3�g���\�)ˌ=O$��X2aZxc�]��}l98m��v�y��,2��UuH�s.!��C2k pm+���c�6���L���x )�n,���#<��EAfpQ�v@|Mb��q�u�v���ϕ�=X^^m���k�y�u��vvvP�����j��w���:z����ӷqK�A*��=h�8w�LH��(��8����z`w�p�l6+�փ��S<ː@I�����r�d2�FM�b��� �:�z033�m�.����+�Nz������lllD&��F:������ۍz�O鏫������=�mѶ����#��T*F��R��6��L[[["^���H=pHd�y"�(�]�kkkB��7�9�i�J��J�Z�����\0xW��k�H�`���f���Ճ?<��ʭa.�IEND�B`�PKb��\%e3_88-templates/isis/images/admin/icon-16-links.pngnu�[����PNG IHDR�a�IDATxڥ��nQſ�&&<�]��\L�q�Iuo�g� )�Ԫ���U��?�NKE���tj �0�t�(���;3D$�ݸ�%g��ɽ`"�������>Hu�X�B�>h}߂i6ۥ�����d&�0 J�X:��Z�؞�V@=���n�t��z{�F��W+�@���6(��Ʃ���~�]��5�4�z�G��@M�S;e�'��C�u����4 ��e*���_@�&��t �2�H �� ��j���C�a�k �:���,$iR� UUq&�X;+�Y�*�����w4���E �o�$�q!V�a���n���-t�]<�i��ќ1�s�en�G���~�q^�`0���6�>�!��Ah���~�"��_?ѳΑ7����:ȳ��������h|�s�Xfj�"��1�z�� �e�%��a�L���ހ������3��{��P���Gf��ȵ�M����~LWp�\h&��,\/@�E��MzL��o���YL*^fIEND�B`�PKb��\��j�,,)templates/isis/images/admin/downarrow.pngnu�[����PNG IHDR�2j�IDATx^���ka�?9�3!���-����łP�RUAp���� ��� �:88vp�' ����"f 1 I{�ޝ���Φ���� �>_O�}�����.G����/����[�)H)J8�]0_OƲ�V�c.e��Y��(pĻ�����os/��dR&a�}V,�=X�D��Ǟ�p� @<Dz,z�/�6�3=���j3��ܫ�\9l W� #���va�s 8p��ͩ�^�o8<�u�*���G�1�|��X�Id�{��Y ��=p½s\�LPv� ,)4��� w����q����u��.U*��.e�٩K�:2\��%��J�L��Z�f$�z��7�Hj��/gcIV �v)�.��i�E�V�E��\�h�y �v;��8�C�L���d�m��vQJ��N���y;]����P2����l�D��K���l6 �G\���\.�H�]�NbM�\�.�r��]*�Jڥ|>�å_��;X���IEND�B`�PKb��\ɨ���+templates/isis/images/admin/note_add_16.pngnu�[����PNG IHDR(-S�PLTEF� �����g����������E�Ҕ��3�̃�눵�M�[�����V������V��e��z[�y�TZ�������Y�.��Z��?��c��T��@��X��zR� �����ȕ�\b�9��N���N� ��q��e��~��P��/��U��x��I��b��L�Ϟ��ZP���c��,�ܼK��▂�A�IDATx^]��nE!FQ��uw��?Vڤ���E ��]>��E�DZR�-��Li�QJD�se�{p-,�$�z��3�@�mƖr�sř��}�B���~���y�5���x-%��u��l�lY�6* ��� Ɠ�a/�i<�c��(���>�0�V�'}�1��44�IEND�B`�PKb��\,�55��(templates/isis/images/admin/featured.pngnu�[����PNG IHDR���R0PLTE���333333333333333333333333333333333333333333� �tRNS/O_o�������7�XIDATx^c�$�0��+�����b�����灌# )��2�,��e���f�`�f�:0��NL���hCj��:JIEND�B`�PKb��\saq�__)templates/isis/images/admin/publish_r.pngnu�[����PNG IHDR�a&IDATx^��QHSa���l�D��+��ƈH�Q�� �� ���̴�%" �� ț�� K��,1sCȐ$�J�J��u�:� ����ߗ��6�b Q����2�ʠ�D<�ң�t�F��Y]0V�c��V!��PJ������$�*�<]>@�-0p�:�+k��ւ�f Z����SRBac3�����ãUY�H����㊤���u�P�������6��e���\��^��f��6Ӝ�K_'˓Qv�4���9ŷz����� �_��9z� `�>�_<*�J����L\�e�o��T;a?�o_d��̟dm �)��$6` ��̽�g%��8��^�P�?�[P� 4`GM�.�c-�㼻Z��4�"zP�1[ m��&�\�p����l+.�@{��:`����q$���0�k��SQ>ܽ��n�8%9�6�}�ˋ�hG�Γ7�!yU�G��J3��2�^���K��'�Q��az�S~X�M��9ᆳc��m�� H� -Z� 0�1zct��l�w� EJA��{+IEND�B`�PKb��\i����+templates/isis/images/admin/collapseall.pngnu�[����PNG IHDR ��O$PLTE���E|���������������������� ��tRNS@��fCIDATc2&FA ```b�������gK`�g͚�$_ll��ECCC��C՟��M}���QIEND�B`�PKb��\�tW�zz(templates/isis/images/admin/sort_asc.pngnu�[����PNG IHDR �=.�PLTE��������@��tRNS@��fIDATcd:g����Q�3�~G�6 �R�hIEND�B`�PKb��\A[�__%templates/isis/images/admin/blank.pngnu�[����PNG IHDR%�V�PLTE������tRNS@��f IDATc`��5�IEND�B`�PKb��\�$��::'templates/isis/images/admin/uparrow.pngnu�[����PNG IHDR�2jIDATx^��Ah�`���$Y��7��vQJ�^T���v�)�o�$�&C�*AT@xQ-��ta�]L�-V�fK~_~���Mx~ |E�AC���L�A������uq���R�o�|pQ{/���q+t�b�<��CDxt*�d�5����p�┆��� 8Jz0�/�;'23��>��`��:����𣽟��S��1�UUqe2�ˏC�]�@L.�~|09s�]:<�Cĝ�Y�� d5�0\��q���I�����o�q��2� �� =��<�i��i7�,� ��>���3^�4ꅧ ��s����T�l�X,ڈ� RW�*6�������h4��w*�h��R>��b��l6�Pi۶�z��j����Ba7qK�l�LF������v-*$���'��˖Ð�i��[ �@�dY��- t:�tK�C����.����0���o��j�Tl�kj���_[*�J۷T�VeK�r���~��7ci�EIEND�B`�PKb��\��0���)templates/isis/images/admin/uparrow-1.pngnu�[����PNG IHDR(-S9PLTE����KKУ�����ff���ե��__���\\����TT����tt����UU�����Ӕdd�VtRNS@��f5IDATWc`P�#��ge�gE��32rs �0'B����llLL��|\�Qg�',gIEND�B`�PKb��\o�y��-templates/isis/images/admin/icon-16-allow.pngnu�[����PNG IHDR�aYIDATx^c���?%���R@����(�Y.�z<6AQ�ྲ��2H2`���1n����_fx�ᆀ��� p/�<�a0�TNC��`t��&��X���`���A`<�H�v0�x���k���?�t��=ApC��&��P��s_���A�x>�1�0��;�/ |���A�G�@�Oa�@G.6�I>����`���XP�.n��WW� ^}z� �+i�)iz�� �_^j������ � �qG����@����F� p�p4xn�P�-����,h�kF2 ��6\�ڂӐ�`��r�φ@��?�ь?/��� �č`�x���F�R��E�BIEND�B`�PKb��\Q��+templates/isis/images/admin/downarrow-1.pngnu�[����PNG IHDR(-S6PLTE����}}Lj�����KK�ll����bb����XX�tt����WW�^^͋����������i��tRNS@��f5IDAT�c`8�����/���`F�.�I3;/3�)�<̨� ��&b�&(IEND�B`�PKb��\���?��4templates/isis/images/admin/icon-16-denyinactive.pngnu�[����PNG IHDR�atIDATx^�ӁGa����u-�����T�*��DD���HɊ��[��6�iU�kewڽ�t�ru� ���zw��"�?�ǡ�af\�:� ��jx^']W�{�����~ia�N��2{��d� �-%V+�����nPr�;�����6@�l���}_A� � ��?�y4b??A���d�o�`����^�a�%79���%I|K��uy ����zr���:�x�r�`6�14B�D`�ex�0E����r�#���j��=�٪M4m1[n44RE TO vqm��������&3Z�܁�����F#p��O]�=���3���e(�� ;{�������G$�t����IEND�B`�PKb��\���y##%templates/isis/images/admin/trash.pngnu�[����PNG IHDR�a�IDATx^u�1hQƿ��\���BlU�\��5C$c7WG'�58��f�q0KA[:�T*(N�'�Q-����4�ݻ�����>�M���}����8,D�0�8�cń�%�E@�q���~��v���� DTP�V@D�^����ٕJ�t�ѸR���z�V��<�@fN��u~^z�o=�ĭ�o/���缴��7�d�/�����K6��\*�=5{�h[x5`<"�}p(����>�� ������Ջ�T��Ν��3����`��?9A8Y4!x���AFP�K��r�jO �#�I����d����DC�A�Y��B�!܌�@J��� ��c;+`l���7H$HZF~�pl� m�ϒ�;W����MWJ�E|�v�}& HӀ��uF@D �Q�s�X̌�t��MI��vw�,� :����y[�+�t���}^~o��cQ��Q��0 �F��YPP1�L�Ҳ�`�IEND�B`�PKb��\N�"?NN,templates/isis/images/admin/menu_divider.pngnu�[����PNG IHDR���IDATx^c8p���`hR�} � IEND�B`�PKb��\V���+templates/isis/images/admin/checked_out.pngnu�[����PNG IHDR�afIDATx^c���?Ed�!����θ�s����V��_^״�- �]3100�i.J06�_�����Sg&n۽�P_[� ."d�A,\��}bf�~dC/^���b���W���� ����>>Y\_O����W7(�ɡ�� >~����!������_?�ܜ�#��~���lll?����u떂��k���*��]�������� ��X�23T�S���EeFFFB@DDw�034�����E*��O2��b`�=��9`���o|�1| 9�p�d5�X ����\���3��?2|����g ��D�0X�㇏���c@gg��ή�N�IEND�B`�PKb��\��j�,,*templates/isis/images/admin/downarrow0.pngnu�[����PNG IHDR�2j�IDATx^���ka�?9�3!���-����łP�RUAp���� ��� �:88vp�' ����"f 1 I{�ޝ���Φ���� �>_O�}�����.G����/����[�)H)J8�]0_OƲ�V�c.e��Y��(pĻ�����os/��dR&a�}V,�=X�D��Ǟ�p� @<Dz,z�/�6�3=���j3��ܫ�\9l W� #���va�s 8p��ͩ�^�o8<�u�*���G�1�|��X�Id�{��Y ��=p½s\�LPv� ,)4��� w����q����u��.U*��.e�٩K�:2\��%��J�L��Z�f$�z��7�Hj��/gcIV �v)�.��i�E�V�E��\�h�y �v;��8�C�L���d�m��vQJ��N���y;]����P2����l�D��K���l6 �G\���\.�H�]�NbM�\�.�r��]*�Jڥ|>�å_��;X���IEND�B`�PKb��\�$��::(templates/isis/images/admin/uparrow0.pngnu�[����PNG IHDR�2jIDATx^��Ah�`���$Y��7��vQJ�^T���v�)�o�$�&C�*AT@xQ-��ta�]L�-V�fK~_~���Mx~ |E�AC���L�A������uq���R�o�|pQ{/���q+t�b�<��CDxt*�d�5����p�┆��� 8Jz0�/�;'23��>��`��:����𣽟��S��1�UUqe2�ˏC�]�@L.�~|09s�]:<�Cĝ�Y�� d5�0\��q���I�����o�q��2� �� =��<�i��i7�,� ��>���3^�4ꅧ ��s����T�l�X,ڈ� RW�*6�������h4��w*�h��R>��b��l6�Pi۶�z��j����Ba7qK�l�LF������v-*$���'��˖Ð�i��[ �@�dY��- t:�tK�C����.����0���o��j�Tl�kj���_[*�J۷T�VeK�r���~��7ci�EIEND�B`�PKb��\����3templates/isis/images/admin/icon-16-notice-note.pngnu�[����PNG IHDR�a�IDATx^���Ma���{ι3f�HbԔ;�F��RV�&*1Q�ll���)�JS�HD�ņ-P�b���8����j��SYz��[==��VOH)��*���d���Jc�����#�J�H8� �#��2U��m��~k}_� �K���sX�@���T��m�#Fw��=/n��rO1��M�n+��D]��Tv�Q���5ֈf���@X���^$�|+Ӹ��H.�uJǚu�H\� !Tm���Cp�t���C����([Ye=j�~��?�/�ˎ^���n�eм�, �h�y��{e�á���vé=T��)u��L�����S�l�D��F�v~i�� �:V���t��{#y��O8�ka�>�ݼO�]��+Z ]�II��c���J]�UBA�C��)�g�xR@W�X��P�nm4" �MtK����9����Ѧ+�mIEND�B`�PKb��\�2���)templates/isis/images/admin/sort_desc.pngnu�[����PNG IHDR e}�XPLTE�����������b���tRNS@��f#IDATcpgFCg ���G�����BIEND�B`�PKb��\�c���1templates/isis/images/admin/icon-16-protected.pngnu�[����PNG IHDR(-S�PLTE���FPU��� $&FPUFPU*/2@AEFPUemqFPUemr\di���������w~�>BEx�������/<-CQZ^cainv}�w~�x�������ː�����������������S�T�W�[�\bf_�e�k�r�&s{�x�,~�2��6������������������������������������������������������������������-�i�%tRNS 00@@PPP``p������������������������yc|IDATx^����`�#��fwww���ǂ����E,��ty��'������5.�� �0�e ^Z�����ԙ.��\�>��N�?�'S��"�h�_���>����v��O����HZ��kr<UIEND�B`�PKb��\eE����)templates/isis/images/admin/publish_x.pngnu�[����PNG IHDR�a�IDATx^��AkQ���}�� �A@��x�XP�*/ x��L��7�'�E?��M�"PD ۈ�t�R�)���dw��.ݥT�?o��ӌ�BQ��`�_�za�E���튬(��� �Z�螛YN"}K�`��(%$c�5�>YW����*Aq]Sy@Rn fG�ˮ�q�o�������e�5��+�����K�a� `��#KQ�A,d��5�P>�����R5��c��y��;G���]N�k�kߞy��Y$�ܤt�|:�����{��[��j>,m�:����]s(���X�l�>�r�<���0��k�O��"�8K0l3�0̞4���zL�!���$P��`�6�Ͽ�f�ӏ��4�@�m�⎷�p�� ,���i��ͭr�}�z7�.���+7<R逽��o�|���8rIEND�B`�PKb��\±�~��)templates/isis/images/admin/expandall.pngnu�[����PNG IHDR ��O'PLTE���Fz�������������������������]|tRNS@��fPIDAT[c2&FA ```b�������g�J�h��P�L�Zpj!�n60��b liL���g����]c�=�fc1IEND�B`�PKb��\B;�\��(templates/isis/images/admin/disabled.pngnu�[����PNG IHDR���R!PLTE���333333333333333333333333333sd{5 tRNS/_�����u-X\eIDATx^c�$K�4 ��j�� @�2�U@�W��%@F��)K����+ f�̳&3�2�<W0/)^5�� ��}�sV��,��@+0m4�hAp�IEND�B`�PKb��\!d���5templates/isis/images/admin/icon-16-allowinactive.pngnu�[����PNG IHDR�ahIDATx^c���?%���R@����1Y.�z<�@Q��@Yȸ`� ��|4�@�[)���?���UM�>,7`��9�r�s�k�x��G)�����f���3��9���1`��L I>�^ ^���=ApC����*<x{��?��11А/*�=`aa.Ʉ;�/r|���A�Gh�BB�\l<�|����`����P�n� ��� \��O�Dy%%4%M3���'p��E��(��܁����wJ�g`H��`�.4zn�k����sË�m�f�3�B�7B3�(h���jNC.��5J�m>^5,�x4���pCn��f<`�s#�6��u���IEND�B`�PKb��\p��ۢ�)templates/isis/images/admin/publish_y.pngnu�[����PNG IHDR(-S�PLTE����n�n�p�k�o�n�q�s�s�r�t�t�t�v�w�t�{�{�}��}����������� ������ ����������������w��7��G��'�����Έ�Ԙ�ڨ��,�')tRNS<<WWWWppppp�����������������������j^g��IDATx^e�����{7���X�����E��,sZ�B���,{�.�@�������H��&:�<Eb���.#�b��8�L�/�fj��Ź`�y���0Q�L**�VnrM��|��J.� �{[�TPq��~����Na�|dIEND�B`�PKb��\�)���+templates/isis/images/admin/icon-16-add.pngnu�[����PNG IHDR�aSIDATx^}�1hA����M�����9�1Q�5+���X��&�������4^Z���`a A��DTAA� �r��w�;�s�f�|�v��g3C��g�ܯ�=W�К3X)@i0�*�XvN��"&�K�����%18X�Å���&8���JKi����\�< ���@=�-ɂ�^8Ejw�Z�έ���=@�V��sf�nǮAʢ���X�:r �� ����Ոă�-��k�E�R���#�tss��̰&�CN�#AZ}��9��9T8gǏ �ڀ�m���n8�7N�w+v�Q�����G�'�O^0���#p��qBĞ�V�+�fT���'��i ����vH������L��ٯ� �_�����.��@�-#�~�1e�k�kz̤4D�:����d���K���;��ng�M�=����²<C3�2�$�<M_�0 ץ;���.R��*����П����+�� �h��V�U���p��x��U����,���b Kʍ�]�!#��]/��k�"��� �|4�*B�[�u��l�j�n�t��P!bϖ�8�F��hZШ"���u2�%IEND�B`�PKb��\/��� )templates/isis/images/admin/filter_16.pngnu�[����PNG IHDR(-ScPLTE�����������������Ǡ�ʪ�б�ӵ�չ�ػ��h�����i�����s����������뀜������������fU�tRNS+�/4xSIDATx^��7� CQ��s�?��K�����U1���ٴ��e���mH�Y)�̧��y;Y�P��2�o:g������Kp3IEND�B`�PKb��\ax�9��,templates/isis/images/admin/icon-16-deny.pngnu�[����PNG IHDR(-S�PLTE����-"�1&�8+�-"�6*�0%�OE�A5�PF�.#�/$�-"�4(�TJ�-"�<1�qg�.#�/$�SI�SI�2&�_V�WM�`V�ZP�[P�]S�B8�6*�.#�3'�WT�d]莊�h`�jc�7-�2&�3'�4(�7+�9-�</�<1�F=�LD�B;�G=�FB�c^�JI�MJ�VQ�[S�[T�.#�/$�OI�0%�;3鑍�������!�-"tRNS @@@@``ppp������������������\��IDATx^����@����R\[�.����C1�����wJ���(tu�W �嘻����֚�1dK�1O�����u��Ş�A�N����Fޅ�6!5��r�Ϣ�V�>�!IEӔ߾/u8&D��IEND�B`�PKb��\�r ��)templates/isis/images/admin/publish_g.pngnu�[����PNG IHDR(-S�PLTE����������������������������S���Q��Ͽ���m�@U�ޞ�}V���K��v������~������c�"I�v�5���g�ߟ�������ʷ|�ヴb^�(M���uf�t�C8����Y���s���Z�˰S����������w�F�ʦH�����zG� �ѸS�X����tRNS@��f�IDATx^M��1@���������w��d;=�w`@S�$�Ywul�4�f��AJJ���1}����n����� o' <r�!i$�'ˎ��{�[��s����@�u}��/Ю�+f�r��7��u�i�.C�(�Њ/�x }y(IEND�B`�PKb��\�w� ��&templates/isis/images/logo-inverse.pngnu�[����PNG IHDR���?�sRGB��� pHYs��%iTXtXML:com.adobe.xmp<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.4.0"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/"> <tiff:ResolutionUnit>2</tiff:ResolutionUnit> <tiff:Compression>5</tiff:Compression> <tiff:XResolution>72</tiff:XResolution> <tiff:Orientation>1</tiff:Orientation> <tiff:YResolution>72</tiff:YResolution> <exif:PixelXDimension>143</exif:PixelXDimension> <exif:ColorSpace>1</exif:ColorSpace> <exif:PixelYDimension>29</exif:PixelYDimension> <dc:subject> <rdf:Seq/> </dc:subject> <xmp:ModifyDate>2015:03:15 13:03:47</xmp:ModifyDate> <xmp:CreatorTool>Pixelmator 3.3.1</xmp:CreatorTool> </rdf:Description> </rdf:RDF> </x:xmpmeta> �45IDATx�[ tE����g&!!�"7�.r���aHH��<�/��z�+�����7*� O�Q�U�B&�r�x�"J�!r'�df����L2��]q�=&�U]�U�W�]%�pOavI��\c-K�M+( ;�g0's��(a�m�<��5[�Wk�_���݅�����vSeۖ�m�%����ԒjU��/��M�>���kTW}ma�&�i��`QKp����R��]�=�2�������I!5W�p�},S�\t���7J)� �%����)ǂ���/�1�=�`q´f'%!�_� �vO���3�P��m��fx�lh�)g1sI�0bˁD�I�>[��m�óL!���z ���'��ĭ/�5 h��lllSPu0c]4&��P���1o�D�P��9)�k��0J��W���,h�fp����1�M�k-�x� ˹N�dg �aDêж��aW�}v���� �i�4mMhll�С�S.��iuK����:���7m�lI�_Q[����Q���˫������Ut6MS�y�^K�C�F�I��ܻW��.�<+ ��=������h.F�#��5��ެ*�]'I�/�U�����v����G���d��Kj��ZV���ˈې��aZ�z�zZ���u���|����3�+���q���A1A�OI�8��,�%59�/III�٬�nI�"h�G)���vODK�P�� !7����: �;���&��+?F)ʈ4-�:��-�]c�HB��u²�AC]�l�7 ��|ڋ1v���1t�Ut�,�B��m�.�T�v�l���J9 {~�m�-b(uMwvynZ���o:0f�SV�����}��c�ú��*��Ԑ 6��O��-ے5��f�����e�Q�yʵz �CI��̿�3c�,,��˔D �������M��S�W��,Eg�*�U����`�#0ڌ��נ"N����A�9�|A�!�O~�qf 7�c��:��v��|�[N��>̗�L� :�hy���WH�q:+d7����( ��_�����#�=������P���O)�]T!�J����|��@aj,�0�{����L�.;���,�3e=�g�%��Z"L��Y\Z�C�\�0I疔�n����ͫ�{]�f0M���lJ�pi�CzUYa��8`7�8����y;�r<�^58p1���雵��Sj��� �������!q�"GB�a�nS顒��1���,:W��ܒ�FwӐ���*���t�J�����If����r��z!E��R)���P$�zA��!����ݒ��M�#F���i��g#C�s�1���� �G3�F\��$ �ȎĜaf�I3���݊4�i늋�lu�� ����u�"+'� �xJ0LAD9��Arl۾P5������e��]+�.�L�l-brG�s[����&�3ҋ°`���_���k��Sb��)�1��>���A������m;^�<�t��b���n�I��OE�)S�<��Ҳ������sIN} #bpL��m�c����PΤ/�/cX������4������S���?a:�b&܄{1&�C� ����2����e�'�OM�,���Ů�Dކ%�B%����-3Ư$Lԥ��/��ދ��q��ﱵ�� ��ob����o�ʍ��4�y���@ �R�3�?y�0y+H���{$�9lHR#�9�B�2������ߕ���˕`�s�q��':o��u�k��^��+c��ADߍ��=4�ŷ�Ty�=�{�5�r|� 9 �:-a���c7a��mi#�<���dx|[ϙ�`}mK�r��]��0?9yԭ��IMJ?A�:��7aA�ZB��k�)�Rx����ϸ ,q)�sm��۹��.���@��tJd��T�?-�NT8�9; |,Zn`\�.,�>e���ǶcԼU;�7�2��m���t��? T�;�����vޓ��;�q�sM{ڪ=��"�Kx�)\ ��UϒD�#l�<0�Z�4�ɷ��$>,��l�.����s?t��`�x� �-���1�Y⢮�}�z��K�����U_���UY��XbN @�B�TΧ�����?`Ύy���DHpj�d{�V94ĔҒ�����\���T?H�4B�Ӑ�'F����92�?B�d�;X���V�)//o.�Q�>W�s�9�h�Eذ�ɯ�=ڦ��JR*msT�F��uМ�~f�z3Fq���7�dby}�-��2����f��*�K1%99}ּW��9��nd�� �䒲F��O�~��;��a�Zr��ĶԳ%�yT���K.��_���)\������Y����i}"?��K������cO~�%M�+��� =����{��x��'�%� �j���R^�9�9lH8/@ʟ�PA�����?�>G[Xo���q�p��u Ư��3'�,U��UI��)�4�~�=��\��k�q�*��X���mPm���LRt���Ïq|�p�f���� ��b�D��h^yM��ӄ-���"h �D$.� w��o�,s�������.&F��?f-�\�c�!Ձj����2��L��v��?�JGj�)��R�G-A/5��ł/�?91�/��p'u��+-�SV��L�\1�Q\�r`���2�q�W@��4\TO`�S�'�-���τ� : q(?.--<̏kl}����"0�Ҧj�ZQ�m{�] Ҫ���곻�����q<��f��C$�{���Ws�/�jbd�+�g����q���P�b���Vi,ө8��`!EiT�s4�x4� L�6Mú��CG�?� U�@ml[������P[��߸�6M�gOX��U{vU��2m�tD@n��5�\�40O�0R4�v����v%"��R����hu�%�ݻw^�G� �1_�D�Ƙ� 6�k^9c� �$��;����RfDN�'��Ъ!�Mr'����%�?6���B#�j�6�E"j?ʄ��-)�b���?���!14/�NiM���q��{��r�"��\��8G쨄��<} A�tFh�0��SLMԾ�И��.�rh�w��ܹ����΅V�Q��Nq�GX������;�xtj vsi�(��p��[Z B��!�u���Ñ��w���檣E��21��� ��-�N�囪�d�F8�]���l�`<�!@����-������� )���կ�������#�j��G1=�w��ɖdk���q�k���>�3(כ�8]j�s�0k䪪!}�'m�2����g�Ϙ�f[ӑ�Y��ę�A@�! M�S���#F�'&fa�B�8�}���k唖�_ �3z h`������1�j�\�Ee�[���cY�7�:[}�\�-�Z�q�t)������£�k��1*�� =Ha<�d&Y���C��߷�:��cVB<��͌��J-���/ ���~jΐ�F�4�i���Y���6��QI�^���gb��*�t!8*ב@��7x����`���0�\�!�6��]|��`V�ɶ�_B�'"K:-| ȏTdj/���#��|��w۶�)2k�,�:��9�#G"�˨�uڏ�=>���i��,=PV��NJ�>Vx�aϥ&e)'C��Q�!7���B�6"��Mq��u#��f6��<D-���|X�[���nWx>�$�&sx�ej=ə*BX���ޅ&��%q�s��@�$���ԫ5-kV �{@� ��� �F?���j~�-��/��QDKK�9�/�郸���%��Q~�7B�T*s��3���Qɲ��:��@l�~���O�V�b�i�e�.nW�J$a'7wwJ���іrÓ$�p|�18�xwx,�}�IJ.�Rf LE,n�`�e-�9�kF�i��uYؕ�TOd=:�0z��d_f��6�*�����.J�]�;��TL"�3�$�FjJ��qT��d�ٓ�w\��/�e/A���¸ ����8Q8h�Ǚ3���@��0����_֔ ��,�թ#�_"�B��1��dK�֡%(lI����P|����0������ɫ��șF�� ,��6L��%��iI��V���(�X���X�$p��*��rm�0��4]--�ֲ�Bc��SJ�u��&�U�%>>�q~"��҉On����{�h����3W�6�Q�����wd"7�ۏOa����s�[,��Z!�ͯ��X�F��&M� ��]�����P������ʜ�5�WDA9�O�T�>�;c�n�=�'��@Eii�Et9�kjjj;��za�z��6�/r�;����E� "ιoT�nݚ/��F�`��[��+�.���]Rf71:��Z[[{����=�5�5��n �~z"����$D�X�����äI����V��eqq��V�Z������Z��6x���g*��,߮����0š�C�m���}��<��ѯֶ���W�ʎ���/��eVAPS��_��Ʈ���Nk���|bQ�Aq��{�DBH�ԂY`*H��>Hs)� _X��a�2`���2������A���b$r '˴�a�(0ză=e��T�l����[� �맮�b���9x��f#��+�!��h�ԓ_Q�G����4�p��WY���;���]58���HJ�!�F���ybS�Q >�q��]0_�:�* ΩUM3i�mCw�t�'�l� �q%c�:(E&�9pA��ޮ����ՄV8�)�>X�EO|8�Wn�t����^��ߨ�c� �gu��T!������b�"�m�_�\���)p�IEND�B`�PKb��\�);�;;$templates/isis/images/pdf_button.pngnu�[����PNG IHDR(-SPLTE������ �������������������������������������������������������������xq�y�]R憀������������TN�OE������{u�|v�h_����uh�~sﷳ�g\����~r�kd��������d\������me�7,뢞����uk�tl������������TK����w�¿������i_韚��������������훖�7��tRNS 346>����������2�l��IDATx^=��r�0�Q%�#+T��+�f�233��s�F���gf !+���I��nY�r�0����k�0[]J����\; n�� ��F]��1|��]/�p�`z (~m����"_�����dW�>�ON��G�7�~ir�ԩ���r�/Υ|����f0�BX���B��b���ަ��⨱��֦�IEND�B`�PKb��\��?"a"a templates/isis/images/joomla.pngnu�[����PNG IHDRf�J)� pHYs.#.#x�?v OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*! J�!��Q�EEȠ�����Q,� ��!��������{�kּ�����>�����H3Q5��B������.@� $p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ �b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(�� A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8, �c˱"����V����cϱw�E� 6wB aAHXLXN�H� $4� 7 �Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[ �b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w ��Ljg(�gw��L�Ӌ�T071���oUX*�*|�� �J�&�*/T����ުU�U�T��^S}�FU3S� Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k ��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN �(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ �M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��= ���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%� y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y- �B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy� �+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U �}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n �ڴ �V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#����=TR��+�G�����w- 6 U����#pDy�� � :�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ ��8>99�?r��C�d�&����ˮ/~�����јѡ�m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�FVMIDATx��w�$e����zfvg�`�I�D�(%��HFT��sFD1^WPD0 zET� �TQQ��]��6�LO��Tu�Uꞙ���_��t��ޓ�k_�K�{��`� ���J�j��1�-�g��'�3ʸ��s��[^c�uu��0N`�������?+���C�݀gc�F�����X �ל@�]�EO�7����A4 �±���2C��⁖�]��u�Lr�=5�����zM��=#��� �!����[��u-��w�,y�z�6��=Ocʼ ͟���������ދ䜣�u�=W�^kYk���+���gu�������͜U�'�/�GC(����8U����eS�=����i��h�,q��n̒�9��}�5�$��(S��Z���U}�|!�?u�.�>�X��ʖ���>fp�e�2�Y�f��]�q�kn�[���s�o�(���J*��1� �Á[��)�Y�F�A��B$���g��m��de1�&��č���2,���J*i"(��lf �E�сc���͟�c�+p�PO�[���HcG�+�וK���J*���T�#�* ��ȶ,��v.�= �m���v�J��{N����r9�TRI%�4f �����e���;����~h�e�����X�1 �)0����5����nB������)���J*i�ZO�;rːW�,����')%�$>����0 E@�����i�o�u�icz��'a]�)>_%�TRI%�)�ئ=���dP �> l���p��$"K�I���8��:$�ĿkJ���J*�i��Nʒ{E�幵��� ��!_�y'Л���� y�V �C~vƘ>�m�*A�IJ*����� ��ih��EF������ dOݱ��q�7E�JhC�zYQ��k/`�c�X�FܳD�T�MRRI%��t�.�v�`�� ��~�`���Q�j�3�)�GWˀ�c<¢G3�<�ϓ�k[[�E�A�r`��V�����kQ���O,~����J*�i�(�6���Y��Z��q`*pQ$h76��0���u��#�߁?V|��� �)�{�m���s?�j�r��ѽ�*��y�d:`^��� �2n��:��?A�/���Jz�#�[ �,����0�}����lDXC�x� �Z�<�<�\� �����k�OCLCl��w���� ������F� �������� RRI%��t� ��3 �v�[R1(2r���F4�����?� ��>�q�?�c-z�k=I�>/��r`�J|L7���G�,��K*����� �@;ֽeX�Y�˓kE��J(���n�"�S�����M�ϣ�Ⱥx�#+�o8���2���x,��n��"q�z���QRI%��tW�Ѧ<K�X�1;��͐!k��>���r���2.��ϲ��� y��(!-�?ju��j��_RI%��LP�MK������C����7!Dޕq�i�_ >�{���TMEm|/K�(jќ��|ט[���ww\�@L-#�K*����� ���I�>)�[U�SK_CP,ڑ� �|���)��K�W�4TU��7(�D�ZS^!�p"nL! �xT�`�*8�2濆J*陡��ʒYy+Y9��E��k��R�8~~�&o2`Sk�s�����A��*x�<�@<�4V@@P���\a�R1�,�SRI%��.��?�-hU�]�?�=`-��"|��w�������A�e5�e�7���� �v�Z����=\��� 7�#��_�zƴScwt�]���P�ȒJz����{��ܯ#�BT;�D�F�Pir4o�D��)�ɞ��7��ݱ�k�r�o yr4a�~��NZV[8�j����r#�R�>y7e(��1:����=0��\�nc�wZ��Tâ!X8nk�Ww�bf�I�(���"���"�e�q� 8X���S'�� ;x�gbvPwy��(�E���<�&�1����4�+T�t��O����e�#�-tpf���E�lj�,�8Oȓ���y�I�Ϋگ�⠶��Vpm����&*����|x|�t�<&�]0�{���f� �����n��XRI#TzչM=lK�iEF�a}f�ޯ���=�!˷Nh�m��,`3k�0�������̮���L3��g>h����r4�/)lD�ڤ��6�V���s��d��_ܷ~��NZ>�`$�_^h�A�y(A�B��'�\�{��[`����?=�f�O띦A���5f��)�V�%=c���٩��2aSm�G[�D�Sh|L�0���Da�D,�4�;����r�_,y�� � ��@�z7�M��9,K�%��O��E��/̩ >8�j�V�P��.��[ei'Y��;O�"|����2�7�� ���I g�-£P�gPRI���2�p긂�v�%9(N��%��K��w�KL^�$30�t3f?� ����9��8����v�];�-�o���/n�S��OZV{l^�.�����{E�HV���^Ej���Y�ekS5�s�g�z�Uz���+��h0>y��*���J*i��'E��J��3�ᩈ�Y<#\,�GfC��>�����38%�I,��:3�>IX�����~�d��H0�'�[��(A�z���>���[؏`�p�'� ������������:����$,*t%p/��y&��Ů�B�����ƍ�S��3�����*���g�r�j^��3�?��I%��![��u�_��߮�Xo���e���d31{%�V� քiT;D�� @?4���`?�t��/*�r��������`�V���^��J����q���QX�k�m#��95;��e�%�vI5�\��H���S�OG�?I�ga� �m��G��o� ��1~\6^˴�W�Q���Ƴ��b$�:��P ��J�� �3������i�dE���j���b���l ���� >���*B�>`^*�ca��߀][�}�'LA���|�"�V�}�DZ7����7�b�������F�viU�Tf��SNC-��*����1�l�ա�~?p$� 8)�A���~Y�6~�$��z����^��TR���H�X�Ů;u��<��a1 9�ڶtn�5��N�H�b�1���Y_t{�%��j�4Ʒ�K+�;�07���VԠBu�.�C� ZpҲڪ����U�+d���(��3H�!�A��5���8qa���еx0&c���t�UwV��Q1�g���욿g� �?%���#�ٲ^���<�� `C�N��H&X$������5�2/5cvt�s���ot��u����d�CQ�^�L^-xw�Pԁ~A�3hlR���u��㻮�O�h�.�ڷeU�,T �ZWwpZ��5�UQ��̟�fwL���ր��_�8�Э`d�@�EW��0���??�{�@�l)+��r������K*��R|8�e�ERnĈ��p����'���8�<2�O��B���s�`wT`m��.[�t&��v[�l(��7aEp��/뽾���k�<���b��T�a�ϲ�_V�~�B�ݠ<�Ф���V}���7��=*Bӻ�<k][M�k���-��g#� ��M7̯?��x��J7\yG�����]gj&\�EE��d$%�4��ť�"�]i���5�,~m��&�O������ &�@��jp���g��x�E�*s��Yr���Bp�9��H�쳺�K�ԙ[ ߯ �f�D쟙J���'-���^�mթ��. ��}����A��`���T6�g�T�`Ք��G���,��=�x���6��jFJ*[��nR�"�TҨ��J���E���Q<�7�P�.[s��(2�P�kƗ1{�y�6�e�`�|Xߌ=��dt�L�z���?���I�s}��Α+j@5��O(�a��e�j-g5� -�ӫ���t���_M�#&E5���9T�*�a�k�/���ftaiiypxf�Cq�YaAvU:��ۡ�?��A�����FsϸA�~%�w+��|ĕJY�so��9��H�b��<g�Kx���9¬��1�}�Y�3�r5+?㵵$:�Հ�5x�� ��c�Y��d���@B��?W}���寢����h�]��D���W��ǓP���7��������3�[!�Y��5�MI%=��?�4�f,�Fx�g�7��!��P���çU�{�!p�ā���f"m v�'�`�� l?�=��^��u}v�B�D��oU�Y5��/���_b��o�� ���P��O�_���P�G�,=�@�D.��5�'`��vZ�`f%��8'��yJ �� %u'��K@�q ���@I% u�X���ܳ�dx��p��3n�Z�iʓ|�(�SҾ_�x��׃ꈵӢ��5fv��t�����"�&AV�M�vw��]��'W�z�%��s��x|����D��+� �O �4 �� �s��~��1�ը=�Ge�tl��^cǔ&�NZ��lB��F��H�ź4�j�e��J�.T[[';?]CF���ʒ0��Q&��ԉ����N��"�9����v��8�&������@�ٛ��#��@�7� �5%,xq�Zc6�lR��V}����TC�gv�s��qN���T���4���2U��B���� ���D[~��_��O�KӒ:�(�J�^T���r�[�z� �,��X<ACCR��ɼ+� ���9mh�aPf�@�^l a�����ԛuw��/��l-4�yhRpF�_�>���I��%V��\������*�55���;�OD���w�X����F��!�@K�d)�K*�c y��Y�#���pu;��qnǭ����;FF]m�G?a㞭�*�f�L�fP�G�Ok r���t?�G498�z���a�� t���T�FO:��Ա��h�$��;⃙c�W���}�.�p�#�K��R�/\�����Q�1&��z��7�G�Z����]�p�bj���h<��ϧMz"��@Gk�.��/���tb�q]t�#��v�[�k�����Q�{8F�5��|�:`�M�"f��Hi5�6�Ak�n�:r��+���ɨ�?�kؖ�uS�z�/Vo_���k���ɺ�f��{���s��t?�[ v.zS9�Y�Oz@�D�T*P�C�c�v:����@1�5겵0Fe����� u]�n4! bDay��-"�qiCU�)E��ؖ�o� ��sQ8f�U �*ay����Ñ��Em�{}�"YT�xΒ��a�����6mZ/J�uե~�'@�F�t;�w¦f���sm����M06DL�I����>����;�gEC�� K�� Z�[� mlh��{�B%nR`1w �� �S����a����H��5�7d%���G�E�8��Y ��^�[+��198���T��^S�UO��\؋X]�|��՟�f��~�ҵr" eYA��=�l��O�?iWl��4gݛ �����9n�u?|�w]ܷL�T&$���f�ˎ��g�/��B�7fn *�>��w�),k�{A��]K��r��[��?��-0�>z#� F�z�{^�p�6���Q� +����s� �jYanC�s�u���t9�$���=�#@JlL��M�Y�Ғ�O�k��q�WC�R�/���{>:�x5ơ�Έi�1p����q��ņ��٘������o)`D �ډ�o���1�x ��ϕ�c9��c,���y��K�=jƿ�끫˾�Z�� �����K/�R��-K %O��Z�nY�>m��c�ퟓU?V���,<�~[3fe������8�ڂ�P�E��`7�/��2�b�%��� ��)й={Ϝi�Y�J@+y$~>�n�g_W��{f��[Cyl�0%�Y��P@s�W�^�'��T�a|��`f�Q�s߱(1Ռ�v���2B�~\��A�x����4���x����I�B�d� �-z}�3f;K:�L�ͼ�xr�K%��3м��l��n��@�5��)��!�͛fG�������th$�Q�5��H�i�^���!�H�s�@O31�2���������S�L��yBU��2�vn� �.�3^�t���ʹdž��Z��}5(�{����$^f��m�Yi?K�e�9��|3�Q��d����Zӕbɦh���0���HH<6�:6>;�8�b�]��b�qY fZԖku��I�к5^���vx�IH�Xa��;�~��+Ͱ/M�kV��U��6�D¸PW�t���������8z���!XZe�%�<��0^�wO��)q�%a%�J���7����AB�D�)8\�p3 ߣ��Ҏ��G������Q����6�qH�"��s�;tDM��0�恑���M"�Ԫ���iW�{u��ޔa$D�~�JK,d�G���V���Pr�N�t���x��{��a Ib���t�9C�@?$��_�>C�v}hƄ������f��8���2�Y�=�5e�������n�]�v}�� %]7!���i�xqP Dj�t�f����c�ᬭ�����L�s��'��Ϊ�T�Z��2�[O�U�> |!�#��T=�"�BZn����༁��xK��W~���#�W L�|cY�A��<�X��|}Kj�f�M<��6�P���W~�M$Xn�7���l聖�I �H�[�fWF�dž0���7��m.飠�"�l<�{3~ q3f��b�Y�.:֒k�$a��o�O���ߡ }v��V��b���/�67�$3;��vM�%r����F�1�g#��K�E�4��ӑ�g��Gz�f�3*�o��11�>c��!��G0��G'���텠ˑ�c�,9��ucTg�Q�Bj����� � ��͋ 2s�_ƻk���>Ɖ(|���`:�h3� 8�fC7E�K�}��:��"����Nu�|u4]Og������.��5�����u�1�k�U�75�%�3���l�D|��>�8�[��bL%GS���{��?�y�gM�{�l�~f��þ1v%���G~��}KŔ��BGArL}��Y&�}��֑��/:䣗zX�����K�֚�QǬ��4U� �cS�V�е�LmLv�Yf��&B��wFax���23_r7��%�X$X�Xhf���@+"����tة��`�i3�V��$��Z0it�96s�#��FN�T���|��yA.�D:ܸ��V���q��-�V�Y�,�6mefϗ��%!��~���ڌS"���0;>�\����'ǰ�@���0�R�ʤ�%i��m l)���m�T���d��&D}��.�i?О�%i@ȯ�1<�_�,�v��oǿ�h�3fOHZhؽfZ<,�X���$f�1Ub�#mJ���)�)I<��F���.�1�W��uCuWfX��y�o�n�X�Rs�0�F�-�uYk8G�X�����Mn�)����Ǭ�V1G �o��)(�i%v̭a�J5̭�WQOp���+ ��I{ΔU�g���<]a������ �_L�4*�Nܩ���)�M��|���Cm2���5�73]#�G3��aP���:�6�l'�����7�e��1G���m�C"�� ��w�� =%d#��V�k%�����1F�Y�����I�����3\�2�{ƹ!r�Ʉ��m�����;��;�_�j�̞#�L�4؞0��u��y��\Y����1��>Ɓn��6 ͽ�HW���o��J�Hz�/��z`7�G���g�v5�A$3��D�.�b�A} 㓆�xhB��~�un��D��V�I�9؎�^l��Jlc���$fb|t0foCZ���I���H����0�}�;7u���y�r�'�mJ`���^Q;�b���D��X��td5�K��C1~��1S#I)��K����Yi�����)�ֿ��[��1�]�������i=Û�1�զ�T��GG��Lw}�q�(���'����ա�y��E�Xv�$q��m��Ա��$_af7�F�m$�v�Y5I�Ģ��$�Ȍ_wuhJ�{��b3&���&�ט1�G���t.i��"��I��,�HƮ��_2�_^L_U�7ė0;�c&v�Ly�y��d�@��������WҷmhA��� �63}�������s�oE���x1�*�9A�2����^ۄ�=~g�D��h�.���Zt��I�?�[ØM��>� ��t=�xJJ����T�]>�DG�h�pk����0��j%��)uN�۔�/�U������k2��T��a��"�a����U�d�))?TE=�y�7�<C]�Ǜ���b���X���'�m����0�kb7�R��%��!���đ�F$�Nv>孅�� �'����N5�G�l��47��5��\��H���8X�uq'��1v%�~�(�E?pp����K��ů&��j������(�ܹ8xK��X��B� ��$�k������4�oH��-�нՀ_�E�0k xޮ��]Nr7^�^pd�L�%�m�!�-A���������?��E��uf�v��D�%��[���(��$��C��l���Ј7��.n�@�|��mef��e�e-��uN�uJp���*7�ሊ��S�ώ�b[HX��v���~L@�ZE=����'�0�g�;���U�2�ˑݓᶅ�_w�DC��8E�4��O�����4:�P�f��9��^+�X�yD�YI� ����+8d0S��f�������2h^�� cZ:����X�"���]�J�t �M�Д�$����R������\��g[vث�'q��̍җc6��ͣto��P�����g���� �-=�Z#��~ v�����\V��G ��\P������#��Z+T��ȭ��NQ_s"�e��̣�4�yEuz��4ޟR礿N �s���u8�K#���7�`��b.�W~M<%�Gy� 7�����S�1;��=2��=)��v�dL��uj�0�$&d�>A���k���-�O��)����EH�K�`��+2OPu���yC8��#�c%Ή`�����?;�?I��-8:���![±�fp��m�G:'�;Q��2_�C�a����7������@�e�c�>�:�5�����F~�7�[��`k�8�噁X������C�j\�R��0~�+E����f+���Xl4cw�n ���vU*�F����̺d������~o�w��70f�W�����[z�`0e����jD%y쁡1;�����*�S�fb5 �z�B�~���l�^3~�ٿ�w�T��Uh��H��Q�N/�!�E��<�n��]���9��F;�M�Q�����}�~A8��0bY�K�"�u�ۘq��T)UǸ�͂eL!��7ʳ�0��k}�<I/&����t�T4~]p�Я�7Z*���%�w����Qt�}�C�v��g��e��dD��vO�ե7��j���2!��ޛ [3��J��0Z�Ǵ8�|�7 er;�9�k��L������В�r4��E�߂��]6}�o�:}��������2�m�[��PU60jRbp}�t �|˗�v��zn��p�_��U/��z���z�WV��Q��7Q' ��n�h�'���Y0����=]�XE�i��dE��2���,�<&J�<�Yj�3B�*0�1!aTy|I7��+J����[�WW#m@"J;L��]A� ��EF��%��M|�}=a\��9v�ᡅ�l7u�yԽ#���!5?E����c��q�X)�Φ�"p���fk͟cܖ��������>�f6 ��%�,�W���Yȸcׁ�dp��Ox��������" ~�+�v��"�-�/�_�:R��H��z��C�uҠ�X��r�^s6�ܷN�~���cڱ�[-��u�y����ə�=�����/�Y/$��ݠtor�F����N}�k�\�_���T� ��o�&c,�V�X f?++����B3��$�?�J���ڍ"�O�x ҫ�J>.`#��4o��¿��� ���4�p�2�|@���b:8��f�� ��݃�nN2�b�7����1�$�,���Cf\U�īI3���c6��+���KWs`_*[I�����eX+�(���G��#Bo���*f�� ]t�D�����"���d �����RY�p� <&W*�/�զ�y��[����u?$C`� @Ѳ�1��[盽u(<"���j�V����_y�}3���{��r�_:�����*[��V�.Ԥ�0�G��Q�Yt }$�R�ĉ�}���Q������O jT?���$�Ʉ�3ی�d���S�-:>�[������ej(�tȐ����j���ğ�P5I�#�G�N"��h��3WO�kt:���h��?��k\�R�m�Y�d� %��w��{��!�P�S�����x���o���84�iE��$(�{�q{R��T�"�!qG*6�C�<����+�{�s�<��c+�u(Q]=�oC#�� ����pb�)յ{�7s��?��i+�N���Z߿�� �14�ï��$�n������D���~�@��0-��Z��^�nSJ��Y�O;��;e���+���d�͆Mj��u��5$��q\KE?Dr\�j��װ-� P��V��'��3Z� k>[��=� -�mi[��0�T��i�d>�=܊���Jse}Σ]âTn���E�F���l���s{�ԞuF%F����|�=���7��E���T�M%<�nR��^��=�|ΒG^~LP� ��3ʨ�Ҵ߭�)��El߸���5��7k��?��i+��np��;E1���yE�{��+��zXI��< @�(���1ѝ1�ԓj�/�o�GϢZ\�r��7���N e���,,S�c�E��O�%K� ���_�K���'A86��ˎ���O�&�2���3�<�YQ㑀^6�2�k�fp�V��苭M/�������~�8�h� =N}{GxJ|{4Q����<{�$/�&Y)F%�R�s��_t.�́�ֿ�H|*��+����jץ�_qLP���Fb��{�H@(��yIA3ep������}ڲe��8���"�M* �r�X��!M��+�� � FElAdv� Kz����Xԗ����gs����gY���g��}3�~_���l���?��3B�37RޅO�NB����k�#��;�*J��(,^�uNM�p��R��.�y�k<��X��7�#���*�K�,��h��x���.�30^3���F"�q�f��(�0��ߎ����J�����w�.z�K9�hW (�R�^S�|}3�)an����)�k��w�֗���i˖��9���X�O����to�a*Xm���$����pf��O6������-����L5�J#��c^t��B�KB�Mm�R�c��fI�:&X:��!4��X�B� Pd9���9��~����s� !�oІ^ҥ0�Li^���λH�m�3Kw��/V3x�+T��ܪ��QK�3]W?s�vs�u)���_�O�0*,��c4��oǖ��`�w�.|�.K����c%���h~�NCO0��_k�>7�`��c��@u�fm}��{��dY��hc��W�>wo�cf��h!8�{yȺ':ԝ��z����O5���z�Rir��'��>|��W!�l�v�1��FR�a��6��X|�q,j��U9�js)�R��==�;�V9V��+���#,�6�1��_3�L퍙��� �ˀ�7P�3g��$�h���m��-�T� �U;��@�F�0�q�C(��%��w}�JP��c���e�#/?*�����M��%c���G?��B �$����)b}��T��`�6����g_�;�e�k}w��kU�h&a��Q���I� ur/����&94�5��/{�h���y�'��c����S�f�Y��=��?j�AF�� @#�����ss�͘�2Z�|nމu9��F��g�G'�_"w_1�_0����r�g�\?�m����(�c<�t�+�]��<Z:�מ�$b�`H�8c^KAؼ�� ���P��$Q����S���f��Y��C�-��)�5/�g���}v��<��w��&��&A�b(�%��-����su��V����G�����lxV�k�6��#\0�N��4?n�n�ٲa1� `%FJL�%XMn�)H�Π�|�ک��!���gS���/X���)�"���aA�������Jb�N�a|���[?G`����+�;7�*K�i%`�np��!_�@�2i�V�,���UqLz%�����A����˒Gz���O�N����>��4أ����M��S�Bb���3{�ߞ��g���}ȤZ�=��"髶���9��uy˥n��l ��P��`n�=<���}%�3nG�T��&c��HL)����3Klh�^�u��S*.�/[[����;K�#�|z��ФeZ~1�m#W�!�q@����e˵������ .�2�Nt��^Og^Ф�&�[~!7m:�̒�Q�\O���]��_9��b+�e/C蜗A[b���b)�|*��1,�a�팱C����w� �W?���֮� %+@�@P�ۮo�n�I��!vL�2���41������������<����=~��Tt��� w��t+=�����S��a20ߏo����*D�k��I����;82���<��Fmm#e,��uH�B*�"�ٌ��2����f�ӟ�樸*İ���T�͈��ǯ3�.K�-&#� ���.�t f�����-���/h�y��0���F���a���*�bL��PbF��1��o��k�f�+֭ٴ*Վ\�N�"H��U���/\pҜ��9�I�;��o�W�)[T뭮��ݳ����}]��C�)'\��d"0v#�H��P��p�����?�0��Y�v��7hDoDBre�s~��h�l6DW�(�P7?��S$���ˀA���k��T\�LjY�,u�� �W�n f�,e�Rh��n�'�uBRA ��)9�k<����oyV�23[+ �t�l6�%5jJѐ]��J�kS���w�ł?N�Ԩv�=��^�u}���ρ�� ����q_?,ͥ�u����-\���_T�w�-쑅��Ȉ�ۀ�l��:H@����Fp!��S�uj�v�֦�����'��s��w��T��κ�Ь$B�؝�t�EF�;m��|̶t�'Z$��`���e�G���Y9ʘvnטOWw�Č�q�9��/s2 �BF���ts[�S�Pc �kU�ᴜ!HEh[B#O}i)a��� X����e1Q�����?�9���vZGXy���ЋxNn�~��� � p�N㍪�[.&@��}W���w�CNZo�o��B�ᆰx!뢢���� ��-e�ՋT��fgb�o��}�`�NMZx� �ش��|�xZ�r�/Հ��x���+r�J��5�m�[n�0�l�Z���D��Z��\7��^ 1��)���vQ����I�L��qMuKFB�w,�'���-�B�r�;�0�lzqI���u������}��7lW�9-ݝc���+>�P�=^��Zȟ��J�{#:�u��� �����~����X�f̺\�~T���(��C�UA��L��G��t� 4���.6}�!f�[�#6�s���9��s�1H�M��d��P��"�bBV���q���]��-�:�����j7`'�6f�r��a� '�!�'K�ȕ[4G5�Z�5����61���ca6�֔��_ o�Jy�cks�s�v����['����ѝ�E̯�>�I@@��uv#K(vEAov]._��T��^�"bɴD<�U�_�k2���\>��ym��,`Jf�d�]z���y1 ҷf3֮~6 \%���� &6Nt����� {h�;��ͽ2����:����V?@88��v=���Gn��>�����o�u�� �I�N�%�5pq}Ƅ.�ۚ�ڼd�#ڗa�%��f�:L��O�����l�Bb�Bow�W�������[P��T��qf�Ŭ��71�Ef��u��U��_��.9�I>�gI�4�*r�c<�|$����P���?/�T�w\���^K���W�F����h����~ f��(��7�pyD��ӯ�Wk$�چ����7~z�^�Ī;��yJ��t0S�_�jŎ�>t�;��mpEP��%��������q���_3�W���Z��Dչ���k3;�C�^��4��L���x!�f[��<��'L���KSM�c�y�LA�6�xH���*��ؒ��@-���vE���Rv�˪L7ax�ϊ���$�4*��f�AVN��D][u��Z�4�XؑUnw<�4S3p-w"�W���Ð���+���Һ����R�0�c#�#�S9.�|i�]v��o�i����L͍�Ȳ�ca��(������'����� �I$��;���f��=]���s�*���ovAa���X�3�}^Ϧ��t%����>����)ö��5&.����?P�c_� a�����@�ո�����d�:�շRlb|Z�_"w_�Pp�������[S&9��dAV��??/�G\����q/��,-��1����P|ԁe4�B@R��E��=�e9��(]0(�U��8�/Ds?|Y�NQͧm0�p��^/���? c��㟄 �F�О�y2�(Zi�� L�X��38�K��wT�܁���_*�X�t�C����C��]R�w����}���� k������9|�%T�����Ē��[��C4��i��&Mx����!xocR̒�(��&ߏ�̿���Xg kqZ((�|b�ǚqj����Ϙٓ9�p��&[)Z얚I`�,��K�n�&$!�h}Jbula&MY�aP�`�#�s縨PL۩�#��2zVuϔK�ҍ�R5�S��`?�fd���64�'f�4��|�@3�=?-�pM���'�ko.�����݈��v��b��<p�{Y�r{$#�� X?؛�.�t���ʥ{�����G\���mf��ls��j~�I߯�B_�d�u�2up ���E�y�����Ocg;礼��Fh���s� �;Y��P�HM �`��ʁ5�0�k����蓒�����HW�L�Q8��U4nկ�p�q3�e._�}���9fv%��]����~p�ğ��RF���ȼÉ"p-n:ؙ�w�Zrrг�֓�N3��Z#�A���=$~̟�kuةfv�ij<������_��g��x��^��]YB4C[!������*������~ٜ֭����I���9��L��I���J@P=r�=k��?j.��E�9�׳���x���uݽ�W��M��3m`�z�-�����y���k�Jw�Z7��z�NůT!������$�{*D��-���/�L��Wc�8LV�q4���D�o�^p�EY����-+��9�BǷy�%�������\�:�=�O'�X���q�%�e�Q�1�k�uĥ`��3#��#��5�\Č�Y�`�(�M�p��j��@����a�x3� ׳���~�k��&�z)�y�}A�t�[(� ���^���S�`< Lo!��`;������5����ͨT���]ԑ���o�gWI9�_�5\xo�J7S�kOx�ݿ���5������c�Տ�E���Y�=�@e��`a{K�H��P��?3�����?[�oi�{�������6�w3�Ѡ�!u��@ԃ���C��w���f����@��-�U-ä2���^ <6�qر�~d�~v+VG��~"q����X�9�1ތ8��b���0�R�aC�A�����"�����%?�� Gv�N(.t�I%��%�ԲY�F9�R�དྷ�in`���m��_�L�y5^�;�Б.oI���$J�Eb���G��(�$����ֹ��]�/|*�و�F)�]�&�ٿv���I��+�mז6n�T�n�k�N����w�{T&�4� � `��MU={���x_J�g! �n #�X1~4��p�f�P~�p?� $�;: ���Mo�Hqjl%�$�X^ ��M�u�o�GL�ff���~:�k��Gp(�����5r��`!�p ���Ϣ���W�;o#t/� �=Fc�k��{D�z2���_I��+ ���2`FQ�R��mdgp���' �ܝ�P_��P����>GC��[aλ������n3�(�7���)ţ@���I:��`,R���֭���՝��Mܡ������u����~9 ��NvG{��F:�Pa�=���� S�\PmX���xn�Eop�2����z����s�z�O�Y9i�W��B�Se�_ zS�s��\.�E��FP쯊�"M����$1�23;� �4��@��{B��?��#�`5a����i��F�����l�P�O��\+s*��-%���������� ��8Ό�G���Q�S�7�7�v4��dq�t���/f�7evJ�c�p�s#����{1�������Qb�ۃ^�Q�f$\�j���� �1���>"�Q~���`��`*�c���J��QX ���Vw����X|7.���f�U��D��b�'u����#���v���(J��&��$�{VK����w�N�Q��;��["��턁�c�|\ �_i!�6eI��t����-1>�X0Gg`l�j<T�s��FT+�t�O��-g����>yuϴ��>�Ķ4�����N�)�ulkރ#�e�JP|���`�#nN�v� ��`�<H����ƫ��%lc3��L������W�L�'���=aF=��T` b��4���������m $���5R@��o��tp��[% X3z�������0��S�x$Rvڥ��fl�'�~�-D?��-S�\��4�8�t�a�uH����34c��{h �Н���}�B0���x�wd��4ݤN��%,j��"}���dIkQhi�=!H�B�W'~��FT�� ;>!���!J!�+@ ��!g����=��s 06N�8���'��g��X Y�r.�G�)�h��<WB�)r�H3����-��>�m1�d��G���[0;��`� �q �Q7�m`6�]��W��M�ً4^{"��a�ҿ���5w�~f���ǟq�J7]��I���s�\�w��̈́�P��!������30� �ϭ��j�n2;�-P#v]|�@;h@ �I�ݴ��YC)����fMa,�VR��t`�[�Œ܀Z�<��F,ʘ"%`3�ALJ��M�EV� ���k��YW?��A:ČC���'�x��� �~�c6�l���g!�b6�c�^LH6S�P��T��:I�Mz�F3;�ַ�Ԕ?1�� $n���d�7cQ���$t]�cs���1���\3M��C,�q�7;��?�}��i_1h� F��1�o���3by��u*�A~$���'�o3�Ϛ���Q�����x����1߭�o �&�����q`��q�a��"�r����V��u�>����J��+Ks�����Ef�4�8݇2±�9z��*o�ì��0/b��e��)�E��� �x���Ȱ��B�,P:��.�����g~w�E7�ku��o�u��|졡2�8��2�~˹?�K7�g�;#��u�2��[k��f�x���-��!�_����}ɟ�2d�|m����Vw�H'b\ա����Y�ڼ�� �,#� zm�����,��4�OD�1�."��]���nL�OA��x��=��Ӕ�˝�����n����[F�}v`[�V�b( ��߅�f�O(x*��S���Q�PH���YB�w���u��j�Y���8�d����~�_���E}g7{z�"�`��.�_���dl�T%�F�=f��HW��u>࢙I�V{x�L8wٳ� � �Ar�ɦD��n)�ʀ�y��������t�U���C���{/��;C��R5�ɨt���dX�yU�����M�F�!����� i���ؘL� �;��:�&�� �%&<��,���g���`,�C��=�� Z|#D�tpS�`�͡�-TEmd��5U�:�R�T[B}�����ծ�u�"�c�u�]%ށ��4�]%�U��mʭ����î��Su�5a�{?�E�s��v^���i)��G�pj�v���s�E}�ˤ�{%�� ��+>��w�H�%\jI+;Zs�5��M���TCQt]GM=�������n�d�"sƭ�n��[Jܝ���a��{FZ@*yt9�,��u�����|�h�ȏ2���ׇn9�;�,��{�};u��i�����\���\����o���V��4���<zZ�Gal$��ϗ���6'�LP܆6�����)Or����|�"�t�ķ c F����=��ly�`qJ���%�)�$���n��ෘ]*���^ �/�9���4��@�5��<��b��D���܍����c\�W�c\&q �17�MԪr�yf�\y�< `D3&�:!n�")�4A!�aL�Bb�xʐ"�`���/�^e�2�-<�ꢌ�c=��t��D �?�s DЌ'$nB�Č߅=Hr�!y"��� ={t�aǂ*��ɬ���i��p����5���U@����ݬ�:e|�9�`�EW�v�o>�;�,���=ӾM�]c*|53� G�[��yϝ_!1� ����A���j}�Uܣ�\l3�m�.��0��n��hVB��6Gl.c��66��"ٴ�s�|,��JL(ix�Wc>~O�c�bF7E��1� io3�i�6z�B͒N��f�T��kA�������fC Nm�PM�� x��>�3���C�R�Iʀ�����!��A7��)CCB=�ʗ����v�� 2�.�:P�̵����6B�bD�fX=r��������;Q��h��~B�q�`���Ҟ`�mhƤD�{q�V��Ҍ��[��zI7��G걆�K�Ij�n��&3�2�YΚ]l��A�uz�u�Wo!��\���ZW��!Wx��kA�*���W�``�>t��Ϣ�߱�g�wH@�����w+x��~�V��s�/$���Bs��ks��*yA��8�c����C�����`6G�T3�#��hD�T��GZ�}f,��ߌu�qJ� �['<dR��H�WӒ�5cc�V���lKI�"Td���C=z��� ���f�_I�ٽ���R��EKc�?�|��zP�ӆ��>��v�Gs�,I[��撶4����� b�?�<dRv?��{�X�����).��#R뢐&C�*�\6��\��j#᭳0��8�q�_��(�6|`$_��� Nu�gMҿI��M3�m�BK1ܒ�������4��^�&� l�x6��`�G�i0�n��i�̨��IZ,7x����I�M��G���F��;ڐ˜ր��]�ҌY��N ӱo3���Ѱt��n���0iVG��r�B` }r���j���픿~��}^w��ig�DR�CV��B!�4T��=���W#m�K��l�=�A�[;CH"dZ�J_@��&r�'���Dh����D������=Cz!?��;�Hr�"-���=� @����#�: ����\�ʑc9 @���-hw����tPH��LF_� �ȅ[eҹn��CSY��� �]���:MpxJ�+no��t�|Q��bZ�s����o;��_]x�C8duw$�S�B��i�6%��x����I�~?﹒+.�"�}�-i;��#������0��F��Y/����ʵ�t���B�����!|n���n��눷�]�����F�Ƙ�9(C���� �7��2�TT�rb�_����L��lK?�� PRI%�T��g�%7��*G`CvZŬ��{\C�+��@�Q���gZܖ!��9It�r���4�"%�es�-���9(1W�UY�`��TRI%�Զ��nW�ʫ����%R$$�B �?�0��3>8���@�Y�E $@������4�πH�2���k�\�5�z��������G�p[�TRI%��C�R*�LV�^���@�[�ϛY�>�?�x�//�9�ESӢ7��d!�t����A�9��x���ͪSh�(P�ꈩ�8���S�]pI%�TRIc�4�y[E�gZ�d�,A�u���2ф˅N���7�F�v���(����$�ӊ���9l%Xu(����b�*Q��J*����F͌���*!�=p^'�,�:�ޣ��"!~a����p6b7�c��AkSA�^���y�,��%$y+w|V�C��GZw����e�kI%�TRI-��� �s3u��j'��W(����aw���7�b1KG��ƒŶ�.��ٖ����1v$l�4�u�1���p/�&���"�K�%��1 C�j��n��ZhVQ�}�g�!�d .�&XSԒJ*���&���}MSXU�+Jk�=���!.7< ���iV�6�E�����8/���a0�z��7 v��ލl�YsJ"��C�lS�Se���C��dg��r[�TJ*���J*Pĥg��j0K�c�gU����\�5+!����B�����.���w�%J���⺑<̋��+m:�Ps���J*�����(�N����-G�Lw��#�=^$�-N��HB+H�D��d�!rДx\�X=�6�&��>fR�^���J*��� �3��B*��/��O+����Q&<Y�o�s��HR��J+Y�xcz���:j�k�-�G�TJ*���Jj�<�x� � ����������0���]ĕ>�a�h �[� 6�w�����S�ZJ*���J*)S����1��Y�Y�@Q��4Zp�ާ��a�Ʊ�ۋ%���~2�ѯ��A�����ZW��TRI%��h���d���+�נ ��)z4�K�7o�Y^ڟ�>|��7�[�%�TRI% A��8`i[2$����q��i<v"�� ��>��^���A*���J*�������>�;�l���ֿ+�)s.�8�C�����x+p(�T)L�4HY������pi�K*���Jk�*xᅣ�{�����!�,߳����ˀ�?C���О�����H��VG<� \-t�a��˯��J*���qc[Z,�$bIEND�B`�PKb��\v5�"templates/isis/templateDetails.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE install PUBLIC "-//Joomla! 2.5//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/2.5/template-install.dtd"> <extension version="3.1" type="template" client="administrator"> <name>isis</name> <version>1.0</version> <creationDate>3/30/2012</creationDate> <author>Kyle Ledbetter</author> <authorEmail>admin@joomla.org</authorEmail> <copyright>Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.</copyright> <description>TPL_ISIS_XML_DESCRIPTION</description> <files> <filename>component.php</filename> <filename>cpanel.php</filename> <filename>favicon.ico</filename> <filename>index.php</filename> <filename>login.php</filename> <filename>templateDetails.xml</filename> <filename>template_preview.png</filename> <filename>template_thumbnail.png</filename> <folder>css</folder> <folder>html</folder> <folder>images</folder> <folder>img</folder> <folder>js</folder> <folder>language</folder> <folder>less</folder> </files> <positions> <position>menu</position> <position>submenu</position> <position>toolbar</position> <position>title</position> <position>status</position> <position>icon</position> <position>cp_shell</position> <position>cpanel</position> <position>bottom</position> <position>footer</position> <position>login</position> <position>debug</position> </positions> <languages folder="language"> <language tag="en-GB">en-GB/en-GB.tpl_isis.ini</language> <language tag="en-GB">en-GB/en-GB.tpl_isis.sys.ini</language> </languages> <config> <fields name="params"> <fieldset name="advanced"> <field name="templateColor" class="" type="color" default="#10223E" validate="color" label="TPL_ISIS_COLOR_LABEL" description="TPL_ISIS_COLOR_DESC" /> <field name="headerColor" class="" type="color" default="#1A3867" validate="color" label="TPL_ISIS_COLOR_HEADER_LABEL" description="TPL_ISIS_COLOR_HEADER_DESC" /> <field name="sidebarColor" class="" type="color" default="#0088CC" validate="color" label="TPL_ISIS_COLOR_SIDEBAR_LABEL" description="TPL_ISIS_COLOR_SIDEBAR_DESC" /> <field name="linkColor" class="" type="color" default="#0088CC" validate="color" label="TPL_ISIS_COLOR_LINK_LABEL" description="TPL_ISIS_COLOR_LINK_DESC" /> <field name="logoFile" class="" type="media" default="" label="TPL_ISIS_LOGO_LABEL" description="TPL_ISIS_LOGO_DESC" /> <field name="loginLogoFile" class="" type="media" default="" label="TPL_ISIS_LOGIN_LOGO_LABEL" description="TPL_ISIS_LOGIN_LOGO_DESC" /> <field name="admin_menus" type="radio" class="btn-group btn-group-yesno" default="1" label="TPL_ISIS_FIELD_ADMIN_MENUS_LABEL" description="TPL_ISIS_FIELD_ADMIN_MENUS_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="displayHeader" type="radio" class="btn-group btn-group-yesno" default="1" label="TPL_ISIS_HEADER_LABEL" description="TPL_ISIS_HEADER_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="statusFixed" type="list" default="1" label="TPL_ISIS_STATUS_LABEL" description="TPL_ISIS_STATUS_DESC" filter="integer"> <option value="1">TPL_ISIS_STATUS_BOTTOM</option> <option value="0">TPL_ISIS_STATUS_TOP</option> </field> <field name="stickyToolbar" type="radio" class="btn-group btn-group-yesno" default="1" label="TPL_ISIS_STICKY_LABEL" description="TPL_ISIS_STICKY_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> </fieldset> </fields> </config> </extension> PKb��\�N��TTincludes/framework.phpnu�[���<?php /** * @package Joomla.Administrator * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Joomla system checks. @ini_set('magic_quotes_runtime', 0); // System includes require_once JPATH_LIBRARIES . '/import.legacy.php'; // Set system error handling JError::setErrorHandling(E_NOTICE, 'message'); JError::setErrorHandling(E_WARNING, 'message'); JError::setErrorHandling(E_ERROR, 'message', array('JError', 'customErrorPage')); // Bootstrap the CMS libraries. require_once JPATH_LIBRARIES . '/cms.php'; $version = new JVersion; // Installation check, and check on removal of the install directory. if (!file_exists(JPATH_CONFIGURATION . '/configuration.php') || (filesize(JPATH_CONFIGURATION . '/configuration.php') < 10) || (file_exists(JPATH_INSTALLATION . '/index.php') && (false === $version->isInDevelopmentState()))) { if (file_exists(JPATH_INSTALLATION . '/index.php')) { header('Location: ../installation/index.php'); exit(); } else { echo 'No configuration file found and no installation code available. Exiting...'; exit; } } // Pre-Load configuration. Don't remove the Output Buffering due to BOM issues, see JCode 26026 ob_start(); require_once JPATH_CONFIGURATION . '/configuration.php'; ob_end_clean(); // System configuration. $config = new JConfig; // Set the error_reporting switch ($config->error_reporting) { case 'default': case '-1': break; case 'none': case '0': error_reporting(0); break; case 'simple': error_reporting(E_ERROR | E_WARNING | E_PARSE); ini_set('display_errors', 1); break; case 'maximum': error_reporting(E_ALL); ini_set('display_errors', 1); break; case 'development': error_reporting(-1); ini_set('display_errors', 1); break; default: error_reporting($config->error_reporting); ini_set('display_errors', 1); break; } define('JDEBUG', $config->debug); unset($config); // System profiler if (JDEBUG) { $_PROFILER = JProfiler::getInstance('Application'); } PKb��\����--includes/defines.phpnu�[���<?php /** * @package Joomla.Administrator * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Global definitions $parts = explode(DIRECTORY_SEPARATOR, JPATH_BASE); array_pop($parts); // Defines define('JPATH_ROOT', implode(DIRECTORY_SEPARATOR, $parts)); define('JPATH_SITE', JPATH_ROOT); define('JPATH_CONFIGURATION', JPATH_ROOT); define('JPATH_ADMINISTRATOR', JPATH_ROOT . DIRECTORY_SEPARATOR . 'administrator'); define('JPATH_LIBRARIES', JPATH_ROOT . DIRECTORY_SEPARATOR . 'libraries'); define('JPATH_PLUGINS', JPATH_ROOT . DIRECTORY_SEPARATOR . 'plugins'); define('JPATH_INSTALLATION', JPATH_ROOT . DIRECTORY_SEPARATOR . 'installation'); define('JPATH_THEMES', JPATH_BASE . DIRECTORY_SEPARATOR . 'templates'); define('JPATH_CACHE', JPATH_BASE . DIRECTORY_SEPARATOR . 'cache'); define('JPATH_MANIFESTS', JPATH_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'manifests'); PKb��\*nh��includes/subtoolbar.phpnu�[���<?php /** * @package Joomla.Administrator * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Utility class for the submenu. * * @package Joomla.Administrator * @since 1.5 * @deprecated 4.0 Use JHtmlSidebar instead. */ abstract class JSubMenuHelper { /** * Menu entries * * @var array * @since 3.0 * @deprecated 4.0 */ protected static $entries = array(); /** * Filters * * @var array * @since 3.0 * @deprecated 4.0 */ protected static $filters = array(); /** * Value for the action attribute of the form. * * @var string * @since 3.0 * @deprecated 4.0 */ protected static $action = ''; /** * Method to add a menu item to submenu. * * @param string $name Name of the menu item. * @param string $link URL of the menu item. * @param boolean $active True if the item is active, false otherwise. * * @return void * * @since 1.5 * @deprecated 4.0 Use JHtmlSidebar::addEntry() instead. */ public static function addEntry($name, $link = '', $active = false) { JLog::add('JSubMenuHelper::addEntry() is deprecated. Use JHtmlSidebar::addEntry() instead.', JLog::WARNING, 'deprecated'); array_push(self::$entries, array($name, $link, $active)); } /** * Returns an array of all submenu entries * * @return array * * @since 3.0 * @deprecated 4.0 Use JHtmlSidebar::getEntries() instead. */ public static function getEntries() { JLog::add('JSubMenuHelper::getEntries() is deprecated. Use JHtmlSidebar::getEntries() instead.', JLog::WARNING, 'deprecated'); return self::$entries; } /** * Method to add a filter to the submenu * * @param string $label Label for the menu item. * @param string $name name for the filter. Also used as id. * @param string $options options for the select field. * @param boolean $noDefault Don't the label as the empty option * * @return void * * @since 3.0 * @deprecated 4.0 Use JHtmlSidebar::addFilter() instead. */ public static function addFilter($label, $name, $options, $noDefault = false) { JLog::add('JSubMenuHelper::addFilter() is deprecated. Use JHtmlSidebar::addFilter() instead.', JLog::WARNING, 'deprecated'); array_push(self::$filters, array('label' => $label, 'name' => $name, 'options' => $options, 'noDefault' => $noDefault)); } /** * Returns an array of all filters * * @return array * * @since 3.0 * @deprecated 4.0 Use JHtmlSidebar::getFilters() instead. */ public static function getFilters() { JLog::add('JSubMenuHelper::getFilters() is deprecated. Use JHtmlSidebar::getFilters() instead.', JLog::WARNING, 'deprecated'); return self::$filters; } /** * Set value for the action attribute of the filter form * * @param string $action Value for the action attribute of the form * * @return void * * @since 3.0 * @deprecated 4.0 Use JHtmlSidebar::setAction() instead. */ public static function setAction($action) { JLog::add('JSubMenuHelper::setAction() is deprecated. Use JHtmlSidebar::setAction() instead.', JLog::WARNING, 'deprecated'); self::$action = $action; } /** * Get value for the action attribute of the filter form * * @return string Value for the action attribute of the form * * @since 3.0 * @deprecated 4.0 Use JHtmlSidebar::getAction() instead. */ public static function getAction() { JLog::add('JSubMenuHelper::getAction() is deprecated. Use JHtmlSidebar::getAction() instead.', JLog::WARNING, 'deprecated'); return self::$action; } } PKb��\d�%��includes/helper.phpnu�[���<?php /** * @package Joomla.Administrator * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Joomla! Administrator Application helper class. * Provide many supporting API functions. * * @since 1.5 */ class JAdministratorHelper { /** * Return the application option string [main component]. * * @return string The component to access. * * @since 1.5 */ public static function findOption() { $app = JFactory::getApplication(); $option = strtolower($app->input->get('option')); $app->loadIdentity(); $user = $app->getIdentity(); if ($user->get('guest') || !$user->authorise('core.login.admin')) { $option = 'com_login'; } if (empty($option)) { $option = 'com_cpanel'; } $app->input->set('option', $option); return $option; } } PKb��\1���oEoEincludes/toolbar.phpnu�[���<?php /** * @package Joomla.Administrator * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JLoader::register('JSubMenuHelper', JPATH_BASE . '/includes/subtoolbar.php'); /** * Utility class for the button bar. * * @since 1.5 */ abstract class JToolbarHelper { /** * Title cell. * For the title and toolbar to be rendered correctly, * this title fucntion must be called before the starttable function and the toolbars icons * this is due to the nature of how the css has been used to postion the title in respect to the toolbar. * * @param string $title The title. * @param string $icon The space-separated names of the image. * * @return void * * @since 1.5 */ public static function title($title, $icon = 'generic.png') { $layout = new JLayoutFile('joomla.toolbar.title'); $html = $layout->render(array('title' => $title, 'icon' => $icon)); $app = JFactory::getApplication(); $app->JComponentTitle = $html; JFactory::getDocument()->setTitle($app->get('sitename') . ' - ' . JText::_('JADMINISTRATION') . ' - ' . strip_tags($title)); } /** * Writes a spacer cell. * * @param string $width The width for the cell * * @return void * * @since 1.5 */ public static function spacer($width = '') { $bar = JToolbar::getInstance('toolbar'); // Add a spacer. $bar->appendButton('Separator', 'spacer', $width); } /** * Writes a divider between menu buttons * * @return void * * @since 1.5 */ public static function divider() { $bar = JToolbar::getInstance('toolbar'); // Add a divider. $bar->appendButton('Separator', 'divider'); } /** * Writes a custom option and task button for the button bar. * * @param string $task The task to perform (picked up by the switch($task) blocks. * @param string $icon The image to display. * @param string $iconOver The image to display when moused over. * @param string $alt The alt text for the icon image. * @param bool $listSelect True if required to check that a standard list item is checked. * * @return void * * @since 1.5 */ public static function custom($task = '', $icon = '', $iconOver = '', $alt = '', $listSelect = true) { $bar = JToolbar::getInstance('toolbar'); // Strip extension. $icon = preg_replace('#\.[^.]*$#', '', $icon); // Add a standard button. $bar->appendButton('Standard', $icon, $alt, $task, $listSelect); } /** * Writes a preview button for a given option (opens a popup window). * * @param string $url The name of the popup file (excluding the file extension) * @param bool $updateEditors Unused * * @return void * * @since 1.5 */ public static function preview($url = '', $updateEditors = false) { $bar = JToolbar::getInstance('toolbar'); // Add a preview button. $bar->appendButton('Popup', 'preview', 'Preview', $url . '&task=preview'); } /** * Writes a preview button for a given option (opens a popup window). * * @param string $ref The name of the popup file (excluding the file extension for an xml file). * @param bool $com Use the help file in the component directory. * @param string $override Use this URL instead of any other * @param string $component Name of component to get Help (null for current component) * * @return void * * @since 1.5 */ public static function help($ref, $com = false, $override = null, $component = null) { $bar = JToolbar::getInstance('toolbar'); // Add a help button. $bar->appendButton('Help', $ref, $com, $override, $component); } /** * Writes a cancel button that will go back to the previous page without doing * any other operation. * * @param string $alt Alternative text. * @param string $href URL of the href attribute. * * @return void * * @since 1.5 */ public static function back($alt = 'JTOOLBAR_BACK', $href = 'javascript:history.back();') { $bar = JToolbar::getInstance('toolbar'); // Add a back button. $bar->appendButton('Link', 'back', $alt, $href); } /** * Writes a media_manager button. * * @param string $directory The sub-directory to upload the media to. * @param string $alt An override for the alt text. * * @return void * * @since 1.5 */ public static function media_manager($directory = '', $alt = 'JTOOLBAR_UPLOAD') { $bar = JToolbar::getInstance('toolbar'); // Add an upload button. $bar->appendButton('Popup', 'upload', $alt, 'index.php?option=com_media&tmpl=component&task=popupUpload&folder=' . $directory, 800, 520); } /** * Writes a common 'default' button for a record. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * * @return void * * @since 1.5 */ public static function makeDefault($task = 'default', $alt = 'JTOOLBAR_DEFAULT') { $bar = JToolbar::getInstance('toolbar'); // Add a default button. $bar->appendButton('Standard', 'default', $alt, $task, true); } /** * Writes a common 'assign' button for a record. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * * @return void * * @since 1.5 */ public static function assign($task = 'assign', $alt = 'JTOOLBAR_ASSIGN') { $bar = JToolbar::getInstance('toolbar'); // Add an assign button. $bar->appendButton('Standard', 'assign', $alt, $task, true); } /** * Writes the common 'new' icon for the button bar. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * @param boolean $check True if required to check that a standard list item is checked. * * @return void * * @since 1.5 */ public static function addNew($task = 'add', $alt = 'JTOOLBAR_NEW', $check = false) { $bar = JToolbar::getInstance('toolbar'); // Add a new button. $bar->appendButton('Standard', 'new', $alt, $task, $check); } /** * Writes a common 'publish' button. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * @param boolean $check True if required to check that a standard list item is checked. * * @return void * * @since 1.5 */ public static function publish($task = 'publish', $alt = 'JTOOLBAR_PUBLISH', $check = false) { $bar = JToolbar::getInstance('toolbar'); // Add a publish button. $bar->appendButton('Standard', 'publish', $alt, $task, $check); } /** * Writes a common 'publish' button for a list of records. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * * @return void * * @since 1.5 */ public static function publishList($task = 'publish', $alt = 'JTOOLBAR_PUBLISH') { $bar = JToolbar::getInstance('toolbar'); // Add a publish button (list). $bar->appendButton('Standard', 'publish', $alt, $task, true); } /** * Writes a common 'unpublish' button. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * @param boolean $check True if required to check that a standard list item is checked. * * @return void * * @since 1.5 */ public static function unpublish($task = 'unpublish', $alt = 'JTOOLBAR_UNPUBLISH', $check = false) { $bar = JToolbar::getInstance('toolbar'); // Add an unpublish button $bar->appendButton('Standard', 'unpublish', $alt, $task, $check); } /** * Writes a common 'unpublish' button for a list of records. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * * @return void * * @since 1.5 */ public static function unpublishList($task = 'unpublish', $alt = 'JTOOLBAR_UNPUBLISH') { $bar = JToolbar::getInstance('toolbar'); // Add an unpublish button (list). $bar->appendButton('Standard', 'unpublish', $alt, $task, true); } /** * Writes a common 'archive' button for a list of records. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * * @return void * * @since 1.5 */ public static function archiveList($task = 'archive', $alt = 'JTOOLBAR_ARCHIVE') { $bar = JToolbar::getInstance('toolbar'); // Add an archive button. $bar->appendButton('Standard', 'archive', $alt, $task, true); } /** * Writes an unarchive button for a list of records. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * * @return void * * @since 1.5 */ public static function unarchiveList($task = 'unarchive', $alt = 'JTOOLBAR_UNARCHIVE') { $bar = JToolbar::getInstance('toolbar'); // Add an unarchive button (list). $bar->appendButton('Standard', 'unarchive', $alt, $task, true); } /** * Writes a common 'edit' button for a list of records. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * * @return void * * @since 1.5 */ public static function editList($task = 'edit', $alt = 'JTOOLBAR_EDIT') { $bar = JToolbar::getInstance('toolbar'); // Add an edit button. $bar->appendButton('Standard', 'edit', $alt, $task, true); } /** * Writes a common 'edit' button for a template html. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * * @return void * * @since 1.5 */ public static function editHtml($task = 'edit_source', $alt = 'JTOOLBAR_EDIT_HTML') { $bar = JToolbar::getInstance('toolbar'); // Add an edit html button. $bar->appendButton('Standard', 'edithtml', $alt, $task, true); } /** * Writes a common 'edit' button for a template css. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * * @return void * * @since 1.5 */ public static function editCss($task = 'edit_css', $alt = 'JTOOLBAR_EDIT_CSS') { $bar = JToolbar::getInstance('toolbar'); // Add an edit css button (hide). $bar->appendButton('Standard', 'editcss', $alt, $task, true); } /** * Writes a common 'delete' button for a list of records. * * @param string $msg Postscript for the 'are you sure' message. * @param string $task An override for the task. * @param string $alt An override for the alt text. * * @return void * * @since 1.5 */ public static function deleteList($msg = '', $task = 'remove', $alt = 'JTOOLBAR_DELETE') { $bar = JToolbar::getInstance('toolbar'); // Add a delete button. if ($msg) { $bar->appendButton('Confirm', $msg, 'delete', $alt, $task, true); } else { $bar->appendButton('Standard', 'delete', $alt, $task, true); } } /** * Writes a common 'trash' button for a list of records. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * @param bool $check True to allow lists. * * @return void * * @since 1.5 */ public static function trash($task = 'remove', $alt = 'JTOOLBAR_TRASH', $check = true) { $bar = JToolbar::getInstance('toolbar'); // Add a trash button. $bar->appendButton('Standard', 'trash', $alt, $task, $check, false); } /** * Writes a save button for a given option. * Apply operation leads to a save action only (does not leave edit mode). * * @param string $task An override for the task. * @param string $alt An override for the alt text. * * @return void * * @since 1.5 */ public static function apply($task = 'apply', $alt = 'JTOOLBAR_APPLY') { $bar = JToolbar::getInstance('toolbar'); // Add an apply button $bar->appendButton('Standard', 'apply', $alt, $task, false); } /** * Writes a save button for a given option. * Save operation leads to a save and then close action. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * * @return void * * @since 1.5 */ public static function save($task = 'save', $alt = 'JTOOLBAR_SAVE') { $bar = JToolbar::getInstance('toolbar'); // Add a save button. $bar->appendButton('Standard', 'save', $alt, $task, false); } /** * Writes a save and create new button for a given option. * Save and create operation leads to a save and then add action. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * * @return void * * @since 1.6 */ public static function save2new($task = 'save2new', $alt = 'JTOOLBAR_SAVE_AND_NEW') { $bar = JToolbar::getInstance('toolbar'); // Add a save and create new button. $bar->appendButton('Standard', 'save-new', $alt, $task, false); } /** * Writes a save as copy button for a given option. * Save as copy operation leads to a save after clearing the key, * then returns user to edit mode with new key. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * * @return void * * @since 1.6 */ public static function save2copy($task = 'save2copy', $alt = 'JTOOLBAR_SAVE_AS_COPY') { $bar = JToolbar::getInstance('toolbar'); // Add a save and create new button. $bar->appendButton('Standard', 'save-copy', $alt, $task, false); } /** * Writes a checkin button for a given option. * * @param string $task An override for the task. * @param string $alt An override for the alt text. * @param boolean $check True if required to check that a standard list item is checked. * * @return void * * @since 1.7 */ public static function checkin($task = 'checkin', $alt = 'JTOOLBAR_CHECKIN', $check = true) { $bar = JToolbar::getInstance('toolbar'); // Add a save and create new button. $bar->appendButton('Standard', 'checkin', $alt, $task, $check); } /** * Writes a cancel button and invokes a cancel operation (eg a checkin). * * @param string $task An override for the task. * @param string $alt An override for the alt text. * * @return void * * @since 1.5 */ public static function cancel($task = 'cancel', $alt = 'JTOOLBAR_CANCEL') { $bar = JToolbar::getInstance('toolbar'); // Add a cancel button. $bar->appendButton('Standard', 'cancel', $alt, $task, false); } /** * Writes a configuration button and invokes a cancel operation (eg a checkin). * * @param string $component The name of the component, eg, com_content. * @param integer $height The height of the popup. [UNUSED] * @param integer $width The width of the popup. [UNUSED] * @param string $alt The name of the button. * @param string $path An alternative path for the configuation xml relative to JPATH_SITE. * * @return void * * @since 1.5 */ public static function preferences($component, $height = '550', $width = '875', $alt = 'JToolbar_Options', $path = '') { $component = urlencode($component); $path = urlencode($path); $bar = JToolBar::getInstance('toolbar'); $uri = (string) JUri::getInstance(); $return = urlencode(base64_encode($uri)); // Add a button linking to config for component. $bar->appendButton( 'Link', 'options', $alt, 'index.php?option=com_config&view=component&component=' . $component . '&path=' . $path . '&return=' . $return ); } /** * Writes a version history * * @param string $typeAlias The component and type, for example 'com_content.article' * @param integer $itemId The id of the item, for example the article id. * @param integer $height The height of the popup. * @param integer $width The width of the popup. * @param string $alt The name of the button. * * @return void * * @since 3.2 */ public static function versions($typeAlias, $itemId, $height = 800, $width = 500, $alt = 'JTOOLBAR_VERSIONS') { JHtml::_('behavior.modal', 'a.modal_jform_contenthistory'); $contentTypeTable = JTable::getInstance('Contenttype'); $typeId = $contentTypeTable->getTypeId($typeAlias); // Options array for JLayout $options = array(); $options['title'] = JText::_($alt); $options['height'] = $height; $options['width'] = $width; $options['itemId'] = $itemId; $options['typeId'] = $typeId; $options['typeAlias'] = $typeAlias; $bar = JToolbar::getInstance('toolbar'); $layout = new JLayoutFile('joomla.toolbar.versions'); $bar->appendButton('Custom', $layout->render($options), 'versions'); } /** * Displays a modal button * * @param string $targetModalId ID of the target modal box * @param string $icon Icon class to show on modal button * @param string $alt Title for the modal button * * @return void * * @since 3.2 */ public static function modal($targetModalId, $icon, $alt) { JHtml::_('bootstrap.framework'); $title = JText::_($alt); $dhtml = "<button data-toggle='modal' data-target='#" . $targetModalId . "' class='btn btn-small'> <span class='" . $icon . "' title='" . $title . "'></span> " . $title . "</button>"; $bar = JToolbar::getInstance('toolbar'); $bar->appendButton('Custom', $dhtml, $alt); } } PKb��\�33 index.phpnu�[���<?php /** * @package Joomla.Administrator * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ /** * Define the application's minimum supported PHP version as a constant so it can be referenced within the application. */ define('JOOMLA_MINIMUM_PHP', '5.3.10'); if (version_compare(PHP_VERSION, JOOMLA_MINIMUM_PHP, '<')) { die('Your host needs to use PHP ' . JOOMLA_MINIMUM_PHP . ' or higher to run this version of Joomla!'); } /** * Constant that is checked in included files to prevent direct access. * define() is used in the installation folder rather than "const" to not error for PHP 5.2 and lower */ define('_JEXEC', 1); if (file_exists(__DIR__ . '/defines.php')) { include_once __DIR__ . '/defines.php'; } if (!defined('_JDEFINES')) { define('JPATH_BASE', __DIR__); require_once JPATH_BASE . '/includes/defines.php'; } require_once JPATH_BASE . '/includes/framework.php'; require_once JPATH_BASE . '/includes/helper.php'; require_once JPATH_BASE . '/includes/toolbar.php'; // Mark afterLoad in the profiler. JDEBUG ? $_PROFILER->mark('afterLoad') : null; // Instantiate the application. $app = JFactory::getApplication('administrator'); // Execute the application. $app->execute(); PKb��\�V�language/overrides/index.htmlnu�[���<!DOCTYPE html><title></title> PKb��\�z��,language/en-GB/en-GB.com_postinstall.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_POSTINSTALL="Post-installation Messages" COM_POSTINSTALL_XML_DESCRIPTION="Displays post-installation and post-upgrade messages for Joomla! and its extensions."PKb��\N���0language/en-GB/en-GB.plg_finder_contacts.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_FINDER_CONTACTS="Smart Search - Contacts" PLG_FINDER_CONTACTS_ERROR_ACTIVATING_PLUGIN="Could not automatically activate the "Smart Search - Contacts" plugin." PLG_FINDER_CONTACTS_XML_DESCRIPTION="This plugin indexes Joomla! Contacts." PLG_FINDER_STATISTICS_CONTACT="Contact" PKb��\�}�G%%,language/en-GB/en-GB.plg_editors_tinymce.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_EDITORS_TINYMCE="Editor - TinyMCE" PLG_TINY_BUTTON_TOGGLE_EDITOR="Toggle editor" PLG_TINY_ERR_CUSTOMCSSFILENOTPRESENT="The file name %s was entered in the TinyMCE Custom CSS field. This file could not be found in the default template folder. No styles are available." PLG_TINY_ERR_EDITORCSSFILENOTPRESENT="Could not find the file 'editor.css' in the template or templates/system folder. No styles are available." PLG_TINY_FIELD_ADVIMAGE_DESC="Turn on/off a more advanced image dialog." PLG_TINY_FIELD_ADVIMAGE_LABEL="Advanced Image" PLG_TINY_FIELD_ADVLIST_DESC="Turn on/off to enable to set number formats and bullet types in ordered and unordered lists." PLG_TINY_FIELD_ADVLIST_LABEL="Advanced List" PLG_TINY_FIELD_ALIGN_DESC="Turn on/off to enable the alignment of the text. Only works in Extended mode." PLG_TINY_FIELD_ALIGN_LABEL="Text Alignment" PLG_TINY_FIELD_BLOCKQUOTE_DESC="Turn on/off blockquotes." PLG_TINY_FIELD_BLOCKQUOTE_LABEL="Blockquote" PLG_TINY_FIELD_COLORS_DESC="Show or hide the Colours control buttons. Only works in Extended mode." PLG_TINY_FIELD_COLORS_LABEL="Colours" PLG_TINY_FIELD_CONTEXTMENU_DESC="Turn on/off Context Menu." PLG_TINY_FIELD_CONTEXTMENU_LABEL="Context Menu" PLG_TINY_FIELD_CSS_DESC="By default the Plugin looks for an editor.css file. If it can't find one in the default template CSS folder, it loads the editor.css file from the system template." PLG_TINY_FIELD_CSS_LABEL="Template CSS Classes" PLG_TINY_FIELD_CUSTOM_CSS_DESC="Optional CSS file that will override the standard editor.css file. Enter a file name to point to a file in the CSS folder of the default template (for example, templates/beez3/css/). Or enter a full URL path to the custom CSS file. If you enter a value in this field, this file will be used instead of the editor.css file." PLG_TINY_FIELD_CUSTOM_CSS_LABEL="Custom CSS Classes" PLG_TINY_FIELD_CUSTOMBUTTON_DESC="Add custom button(s)." PLG_TINY_FIELD_CUSTOMBUTTON_LABEL="Custom Button" PLG_TINY_FIELD_CUSTOMPLUGIN_DESC="Add custom plugin(s)." PLG_TINY_FIELD_CUSTOMPLUGIN_LABEL="Custom Plugin" PLG_TINY_FIELD_DATE_DESC="Show or hide the Insert Date button. Only works in Extended mode." PLG_TINY_FIELD_DATE_LABEL="Insert Date" PLG_TINY_FIELD_DIRECTION_DESC="Choose default text direction." PLG_TINY_FIELD_DIRECTION_LABEL="Text Direction" PLG_TINY_FIELD_ELEMENTS_DESC="Allows the addition of specific valid elements to the existing rule set." PLG_TINY_FIELD_ELEMENTS_LABEL="Extended Valid Elements" PLG_TINY_FIELD_ENCODING_DESC="Controls how HTML entities are encoded. Recommended setting is 'raw'. 'named' = used named entity encoding (for example, '<'). 'numeric' = use numeric HTML encoding (for example, '%03c'). raw = Do not encode HTML entities. Note that searching content may not work properly if setting is not 'raw'." PLG_TINY_FIELD_ENCODING_LABEL="Entity Encoding" PLG_TINY_FIELD_FONTS_DESC="Show or hide the Font control selectors. Only applies in Extended mode." PLG_TINY_FIELD_FONTS_LABEL="Fonts" PLG_TINY_FIELD_FULLSCREEN_DESC="Show or hide the Fullscreen button. Only applies in Extended mode." PLG_TINY_FIELD_FULLSCREEN_LABEL="Fullscreen" PLG_TINY_FIELD_FUNCTIONALITY_DESC="Select level of functionality." PLG_TINY_FIELD_FUNCTIONALITY_LABEL="Functionality" PLG_TINY_FIELD_HR_DESC="Show or hide the Horizontal Rule button." PLG_TINY_FIELD_HR_LABEL="Horizontal Rule" PLG_TINY_FIELD_HTMLHEIGHT_DESC="Height of HTML editor. Only applies in Advanced and Extended mode." PLG_TINY_FIELD_HTMLHEIGHT_LABEL="HTML Height" PLG_TINY_FIELD_HTMLWIDTH_DESC="Width of HTML editor. Should normally be left empty to let it flow. Only applies in Advanced and Extended mode." PLG_TINY_FIELD_HTMLWIDTH_LABEL="HTML Width" PLG_TINY_FIELD_INLINEPOPUPS_DESC="All dialogs to open as floating div layers instead of popup windows. This option can be very useful in order to get around popup blockers." PLG_TINY_FIELD_INLINEPOPUPS_LABEL="Inline Popups" PLG_TINY_FIELD_LABEL_ADVANCEDPARAMS="Advanced" PLG_TINY_FIELD_LANGCODE_DESC="Editor UI Language. The value will be used if Automatic language is not set." PLG_TINY_FIELD_LANGCODE_LABEL="Language Code" PLG_TINY_FIELD_LANGSELECT_DESC="If Yes, editor language will automatically match selected UI language. If the tiny language does not exist, the editor language will default to English." PLG_TINY_FIELD_LANGSELECT_LABEL="Automatic Language Selection" PLG_TINY_FIELD_LINK_DESC="Select to enable the link icons. Only applies in Extended mode." PLG_TINY_FIELD_LINK_LABEL="Links" PLG_TINY_FIELD_MEDIA_DESC="Show or hide the Media button. Only applies in Extended mode." PLG_TINY_FIELD_MEDIA_LABEL="Media" PLG_TINY_FIELD_MOBILE_DESC="This mode puts any mobile devices into the simple functionality with enlarged buttons for easy access." PLG_TINY_FIELD_MOBILE_LABEL="Mobile Mode" PLG_TINY_FIELD_NAME_EXTENDED_LABEL="<strong>Extended Mode Options</strong><br />These options only work in Extended mode." PLG_TINY_FIELD_NEWLINES_DESC="New lines will be created using the selected option." PLG_TINY_FIELD_NEWLINES_LABEL="New Lines" PLG_TINY_FIELD_NONBREAKING_DESC="Insert non-breaking space entities." PLG_TINY_FIELD_NONBREAKING_LABEL="Non-breaking" PLG_TINY_FIELD_PASTE_DESC="Show or hide the Paste buttons. Only applies in Extended mode." PLG_TINY_FIELD_PASTE_LABEL="Paste" PLG_TINY_FIELD_PATH_DESC="If set to ON, it displays the set classes for the marked text." PLG_TINY_FIELD_PATH_LABEL="Element Path" PLG_TINY_FIELD_PRINT_DESC="Turn on/off the print and print preview icons in the editor. Only applies in Extended mode." PLG_TINY_FIELD_PRINT_LABEL="Print/Preview" PLG_TINY_FIELD_PROHIBITED_DESC="Elements that will be cleaned from the text. Do not leave empty - if you do not want to prohibit anything enter dummy text eg cms." PLG_TINY_FIELD_PROHIBITED_LABEL="Prohibited Elements" PLG_TINY_FIELD_RESIZE_HORIZONTAL_DESC="Enable/disable the horizontal resizing." PLG_TINY_FIELD_RESIZE_HORIZONTAL_LABEL="Horizontal resizing" PLG_TINY_FIELD_RESIZING_DESC="Enable/disable the resizing of the editor area (vertically and also horizontally if 'Horizontal Resizing' is enabled)." PLG_TINY_FIELD_RESIZING_LABEL="Resizing" PLG_TINY_FIELD_RTL_DESC="Select whether to display the RTL button. Only applies in Extended mode." PLG_TINY_FIELD_RTL_LABEL="Directionality" PLG_TINY_FIELD_SAVEWARNING_DESC="Save Warning: gives warning if you cancel without saving changes." PLG_TINY_FIELD_SAVEWARNING_LABEL="Save Warning" PLG_TINY_FIELD_SEARCH-REPLACE_DESC="Show or hide the Search & Replace button. Only applies in Extended mode." PLG_TINY_FIELD_SEARCH-REPLACE_LABEL="Search & Replace" PLG_TINY_FIELD_SKIN_ADMIN_DESC="Select skin for the Administrator Backend interface." PLG_TINY_FIELD_SKIN_ADMIN_LABEL="Administrator Skin" PLG_TINY_FIELD_SKIN_DESC="Select skin for the Frontend interface." PLG_TINY_FIELD_SKIN_INFO_DESC="Copy your new skins to: /media/editors/tinymce/skins." PLG_TINY_FIELD_SKIN_INFO_LABEL="For customised skins go to: <a href="_QQ_"http://skin.tinymce.com"_QQ_" target="_QQ_"_blank"_QQ_">Skin Creator</a>" PLG_TINY_FIELD_SKIN_LABEL="Site Skin" PLG_TINY_FIELD_SMILIES_DESC="Show or hide the smilies buttons. Only applies in Extended mode." PLG_TINY_FIELD_SMILIES_LABEL="Smilies" PLG_TINY_FIELD_TABLE_DESC="Show or hide the table control buttons. Only applies in Extended mode." PLG_TINY_FIELD_TABLE_LABEL="Table" PLG_TINY_FIELD_TEMPLATE_DESC="Show or hide the Insert predefined template content button. Only applies in Extended mode." PLG_TINY_FIELD_TEMPLATE_LABEL="Template" PLG_TINY_FIELD_URLS_DESC="URL behaviour." PLG_TINY_FIELD_URLS_LABEL="URLs" PLG_TINY_FIELD_VALIDELEMENTS_DESC="Defines which elements will remain in the edited text when the editor saves (the default rule set for this option is a mixture of the full HTML5 and HTML4 specification)." PLG_TINY_FIELD_VALIDELEMENTS_LABEL="Valid Elements" PLG_TINY_FIELD_VALUE_ABSOLUTE="Absolute" PLG_TINY_FIELD_VALUE_ADVANCED="Advanced" PLG_TINY_FIELD_VALUE_ALWAYS="Always" PLG_TINY_FIELD_VALUE_BOTTOM="Bottom" PLG_TINY_FIELD_VALUE_BR="BR Elements" PLG_TINY_FIELD_VALUE_CENTER="Center" PLG_TINY_FIELD_VALUE_DEFAULT="Default" PLG_TINY_FIELD_VALUE_EXTENDED="Extended" PLG_TINY_FIELD_VALUE_FRONT="Front Only" PLG_TINY_FIELD_VALUE_LEFT="Left" PLG_TINY_FIELD_VALUE_LTR="Left to Right" PLG_TINY_FIELD_VALUE_NAMED="named" PLG_TINY_FIELD_VALUE_NEVER="Never" PLG_TINY_FIELD_VALUE_NUMERIC="numeric" PLG_TINY_FIELD_VALUE_P="P Elements" PLG_TINY_FIELD_VALUE_RAW="raw" PLG_TINY_FIELD_VALUE_RELATIVE="Relative" PLG_TINY_FIELD_VALUE_RIGHT="Right" PLG_TINY_FIELD_VALUE_RTL="Right to Left" PLG_TINY_FIELD_VALUE_SIMPLE="Simple" PLG_TINY_FIELD_VALUE_TOP="Top" PLG_TINY_FIELD_VISUALCHARS_DESC="See invisible characters, specifically non-breaking spaces." PLG_TINY_FIELD_VISUALCHARS_LABEL="Visualchars" PLG_TINY_FIELD_VISUALBLOCKS_DESC="See the outline of HTML block elements." PLG_TINY_FIELD_VISUALBLOCKS_LABEL="Visualblocks" PLG_TINY_FIELD_WORDCOUNT_DESC="Turn on/off Wordcount." PLG_TINY_FIELD_WORDCOUNT_LABEL="Wordcount" PLG_TINY_TEMPLATE_LAYOUT1_DESC="HTML layout." PLG_TINY_TEMPLATE_LAYOUT1_TITLE="Layout" PLG_TINY_TEMPLATE_SNIPPET1_DESC="Simple HTML snippet." PLG_TINY_TEMPLATE_SNIPPET1_TITLE="Simple Snippet" PLG_TINY_XML_DESCRIPTION="TinyMCE is a platform independent web based JavaScript HTML WYSIWYG Editor."PKb��\u=�U8U8$language/en-GB/en-GB.com_banners.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_BANNERS="Banners" COM_BANNERS_BANNER_DETAILS="Details" COM_BANNERS_BANNER_SAVE_SUCCESS="Banner successfully saved." COM_BANNERS_BANNERS_HTML_PIN_BANNER="Pinned banner" COM_BANNERS_BANNERS_HTML_UNPIN_BANNER="Unpinned banner" COM_BANNERS_BANNERS_N_ITEMS_ARCHIVED="%d banners successfully archived." COM_BANNERS_BANNERS_N_ITEMS_ARCHIVED_1="%d banner successfully archived." COM_BANNERS_BANNERS_N_ITEMS_CHECKED_IN_0="No banner successfully checked in." COM_BANNERS_BANNERS_N_ITEMS_CHECKED_IN_1="%d banner successfully checked in." COM_BANNERS_BANNERS_N_ITEMS_CHECKED_IN_MORE="%d banners successfully checked in." COM_BANNERS_BANNERS_N_ITEMS_DELETED="%d banners successfully deleted." COM_BANNERS_BANNERS_N_ITEMS_DELETED_1="%d banner successfully deleted." COM_BANNERS_BANNERS_N_ITEMS_PUBLISHED="%d banners successfully published." COM_BANNERS_BANNERS_N_ITEMS_PUBLISHED_1="%d banner successfully published." COM_BANNERS_BANNERS_N_ITEMS_TRASHED="%d banners successfully trashed." COM_BANNERS_BANNERS_N_ITEMS_TRASHED_1="%d banner successfully trashed." COM_BANNERS_BANNERS_N_ITEMS_UNPUBLISHED="%d banners successfully unpublished." COM_BANNERS_BANNERS_N_ITEMS_UNPUBLISHED_1="%d banner successfully unpublished." COM_BANNERS_BANNERS_NO_ITEM_SELECTED="No Banners selected." COM_BANNERS_BANNERS_PINNED="Pinned Banner" COM_BANNERS_BANNERS_UNPINNED="Unpinned Banner" COM_BANNERS_BATCH_CLIENT_LABEL="Set Client" COM_BANNERS_BATCH_CLIENT_LABEL_DESC="Not making a selection will keep the original client when processing." COM_BANNERS_BATCH_CLIENT_NOCHANGE="- Keep original Client -" COM_BANNERS_BATCH_OPTIONS="Batch process the selected banners" COM_BANNERS_BATCH_TIP="If a category is selected for move/copy, any actions selected will be applied to the copied or moved banners. Otherwise, all actions are applied to the selected banners." COM_BANNERS_BEGIN_LABEL="Begin Date:" COM_BANNERS_CANCEL="Cancel" COM_BANNERS_CLICK="Click" COM_BANNERS_CLIENT_SAVE_SUCCESS="Client successfully saved." COM_BANNERS_CLIENTS_N_ITEMS_ARCHIVED="%d clients successfully archived." COM_BANNERS_CLIENTS_N_ITEMS_ARCHIVED_1="%d client successfully archived." COM_BANNERS_CLIENTS_N_ITEMS_CHECKED_IN_0="No client successfully checked in." COM_BANNERS_CLIENTS_N_ITEMS_CHECKED_IN_1="%d client successfully checked in." COM_BANNERS_CLIENTS_N_ITEMS_CHECKED_IN_MORE="%d clients successfully checked in." COM_BANNERS_CLIENTS_N_ITEMS_DELETED="%d clients successfully deleted." COM_BANNERS_CLIENTS_N_ITEMS_DELETED_1="%d client successfully deleted." COM_BANNERS_CLIENTS_N_ITEMS_PUBLISHED="%d clients successfully published." COM_BANNERS_CLIENTS_N_ITEMS_PUBLISHED_1="%d client successfully published." COM_BANNERS_CLIENTS_N_ITEMS_TRASHED="%d clients successfully trashed." COM_BANNERS_CLIENTS_N_ITEMS_TRASHED_1="%d client successfully trashed." COM_BANNERS_CLIENTS_N_ITEMS_UNPUBLISHED="%d clients successfully unpublished." COM_BANNERS_CLIENTS_N_ITEMS_UNPUBLISHED_1="%d client successfully unpublished." COM_BANNERS_CLIENTS_NO_ITEM_SELECTED="No clients selected." COM_BANNERS_CONFIGURATION="Banners: Options" COM_BANNERS_DEFAULT="Default (%s)" COM_BANNERS_DELETE_MSG="Are you sure you want to delete all these tracks?" COM_BANNERS_EDIT_BANNER="Edit Banner" COM_BANNERS_EDIT_CLIENT="Details" COM_BANNERS_END_LABEL="End Date:" COM_BANNERS_ERR_ZIP_ADAPTER_FAILURE="Zip adapter failure" COM_BANNERS_ERR_ZIP_CREATE_FAILURE="Zip create failure" COM_BANNERS_ERR_ZIP_DELETE_FAILURE="Zip delete failure" COM_BANNERS_ERROR_UNIQUE_ALIAS="Another Banner from this category has the same alias (remember it may be a trashed item)." COM_BANNERS_EXTRA="Additional Information" COM_BANNERS_FIELD_ALIAS_DESC="The alias is for internal use only. Leave this blank and Joomla will fill in a default value from the title. It has to be unique for each banner in the same category." COM_BANNERS_FIELD_ALT_DESC="Alternative text for the banner image." COM_BANNERS_FIELD_ALT_LABEL="Alternative Text" COM_BANNERS_FIELD_BANNEROWNPREFIX_DESC="Use own prefix or the client prefix." COM_BANNERS_FIELD_BANNEROWNPREFIX_LABEL="Use Own Prefix" COM_BANNERS_FIELD_BASENAME_DESC="File name pattern which can contain<br />__SITE__ for the site name<br />__CATID__ for the category ID<br />__CATNAME__ for the category name<br />__CLIENTID__ for the client ID<br />__CLIENTNAME__ for the client name<br />__TYPE__ for the type<br />__TYPENAME__ for the type name<br />__BEGIN__ for the begin date<br />__END__ for the end date." COM_BANNERS_FIELD_BASENAME_LABEL="File Name" COM_BANNERS_FIELD_CATEGORY_DESC="Choose a category for this banner." COM_BANNERS_FIELD_CLICKS_DESC="Displays the number of clicks on the banner. Select reset if desired." COM_BANNERS_FIELD_CLICKS_LABEL="Total Clicks" COM_BANNERS_FIELD_CLICKURL_DESC="The URL used when the banner is clicked on." COM_BANNERS_FIELD_CLICKURL_LABEL="Click URL" COM_BANNERS_FIELD_CLIENT_DESC="Choose a client for this banner." COM_BANNERS_FIELD_CLIENT_LABEL="Client" COM_BANNERS_FIELD_CLIENT_METAKEYWORDPREFIX_DESC="When matching Meta keywords, only search for Meta keywords with this prefix (improves performance)." COM_BANNERS_FIELD_CLIENT_METAKEYWORDPREFIX_LABEL="Meta Keyword Prefix" COM_BANNERS_FIELD_CLIENT_METAKEYWORDS_DESC="Enter the meta keywords for the clients' banners." COM_BANNERS_FIELD_CLIENT_NAME_DESC="Enter a name for the client." COM_BANNERS_FIELD_CLIENT_NAME_LABEL="Client Name" COM_BANNERS_FIELD_CLIENT_STATE_DESC="Defines the status of the client." COM_BANNERS_FIELD_CLIENTOWNPREFIX_DESC="Use own prefix or the component prefix." COM_BANNERS_FIELD_CLIENTOWNPREFIX_LABEL="Use Own Prefix" COM_BANNERS_FIELD_COMPRESSED_DESC="Option to compress file for export." COM_BANNERS_FIELD_COMPRESSED_LABEL="Compressed" COM_BANNERS_FIELD_CONTACT_DESC="Enter the name of a user as contact." COM_BANNERS_FIELD_CONTACT_LABEL="Contact Name" COM_BANNERS_FIELD_CREATED_BY_ALIAS_DESC="Enter an alias to be displayed instead of the name of the user who created the banner." COM_BANNERS_FIELD_CREATED_BY_ALIAS_LABEL="Created by Alias" COM_BANNERS_FIELD_CREATED_BY_DESC="Select the name of the user who created the banner." COM_BANNERS_FIELD_CREATED_BY_LABEL="Created By" COM_BANNERS_FIELD_CREATED_DESC="Banner created date." COM_BANNERS_FIELD_CREATED_LABEL="Created Date" COM_BANNERS_FIELD_CUSTOMCODE_DESC="Enter your custom code for the banner." COM_BANNERS_FIELD_CUSTOMCODE_LABEL="Custom Code" COM_BANNERS_FIELD_DESCRIPTION_DESC="Enter a description for the banner." COM_BANNERS_FIELD_EMAIL_DESC="Enter a valid Contact email." COM_BANNERS_FIELD_EMAIL_LABEL="Contact Email" COM_BANNERS_FIELD_EXTRAINFO_DESC="Enter extra information for this client." COM_BANNERS_FIELD_EXTRAINFO_LABEL="Additional Information" COM_BANNERS_FIELD_HEIGHT_DESC="The height of the banner." COM_BANNERS_FIELD_HEIGHT_LABEL="Height" COM_BANNERS_FIELD_IMAGE_DESC="Select or upload an image for this banner. Images have to be in the /images/banners/ folder." COM_BANNERS_FIELD_IMAGE_LABEL="Image" COM_BANNERS_FIELD_IMPMADE_DESC="Displays the number of impressions made for the banner." COM_BANNERS_FIELD_IMPMADE_LABEL="Total Impressions" COM_BANNERS_FIELD_IMPTOTAL_DESC="Total limit of impressions defined for the banner." COM_BANNERS_FIELD_IMPTOTAL_LABEL="Max. Impressions" COM_BANNERS_FIELD_LANGUAGE_DESC="Assign a language to this banner." COM_BANNERS_FIELD_METAKEYWORDPREFIX_DESC="When matching Meta keywords, only search for Meta keywords with this prefix (improves performance)." COM_BANNERS_FIELD_METAKEYWORDPREFIX_LABEL="Meta Keyword Prefix" COM_BANNERS_FIELD_METAKEYWORDS_DESC="Enter the meta keywords for the banner." COM_BANNERS_FIELD_NAME_DESC="Enter a name for the banner." COM_BANNERS_FIELD_NAME_LABEL="Name" COM_BANNERS_FIELD_PUBLISH_DOWN_DESC="An optional date to Finish Publishing the banner." COM_BANNERS_FIELD_PUBLISH_DOWN_LABEL="Finish Publishing" COM_BANNERS_FIELD_PUBLISH_UP_DESC="An optional date to Start Publishing the banner." COM_BANNERS_FIELD_PUBLISH_UP_LABEL="Start Publishing" COM_BANNERS_FIELD_PURCHASETYPE_DESC="Select the type of purchase in the list." COM_BANNERS_FIELD_PURCHASETYPE_LABEL="Purchase Type" COM_BANNERS_FIELD_STATE_DESC="Defines the status of the banner." COM_BANNERS_FIELD_STICKY_DESC="Whether or not the Banner is 'pinned'. If one or more Banners in a Category are pinned, they will take priority over Banners that are not pinned. For example, if two Banners in a Category are pinned and a third Banner is not pinned, the third Banner will not display if the module setting is 'Pinned, Randomise'. Only the two pinned Banners will display." COM_BANNERS_FIELD_STICKY_LABEL="Pinned" COM_BANNERS_FIELD_TRACKCLICK_DESC="Record the number of clicks on the banners on a daily basis." COM_BANNERS_FIELD_TRACKCLICK_LABEL="Track Clicks" COM_BANNERS_FIELD_TRACKIMPRESSION_DESC="Record the impressions (views) of the banners on a daily basis." COM_BANNERS_FIELD_TRACKIMPRESSION_LABEL="Track Impressions" COM_BANNERS_FIELD_TYPE_DESC="Choose the type of banner. Select Image to display an image from /images/banners/ folder. Select Custom to enter you custom code." COM_BANNERS_FIELD_TYPE_LABEL="Type" COM_BANNERS_FIELD_VALUE_1="Unlimited" COM_BANNERS_FIELD_VALUE_2="Yearly" COM_BANNERS_FIELD_VALUE_3="Monthly" COM_BANNERS_FIELD_VALUE_4="Weekly" COM_BANNERS_FIELD_VALUE_5="Daily" COM_BANNERS_FIELD_VALUE_CUSTOM="Custom" COM_BANNERS_FIELD_VALUE_IMAGE="Image" COM_BANNERS_FIELD_VALUE_USECLIENTDEFAULT="-- Use Client Default --" COM_BANNERS_FIELD_VALUE_USECOMPONENTDEFAULT="-- Use Component Default --" COM_BANNERS_FIELD_VERSION_LABEL="Revision" COM_BANNERS_FIELD_VERSION_DESC="A count of the number of times this banner has been revised." COM_BANNERS_FIELD_WIDTH_LABEL="Width" COM_BANNERS_FIELD_WIDTH_DESC="The width of the banner." COM_BANNERS_FIELDSET_CONFIG_BANNER_OPTIONS_DESC="These settings apply to version history for Banners, Banner Categories and Banner Clients." COM_BANNERS_FIELDSET_CONFIG_BANNER_OPTIONS_LABEL="History" COM_BANNERS_FIELDSET_CONFIG_CLIENT_OPTIONS_LABEL="Client" COM_BANNERS_FIELDSET_CONFIG_CLIENT_OPTIONS_DESC="These settings apply for all clients unless they are changed for a specific client." COM_BANNERS_FILENAME="%1$s-banners-tracks-%2$s" COM_BANNERS_GROUP_LABEL_PUBLISHING_DETAILS="Publishing Options" COM_BANNERS_GROUP_LABEL_BANNER_DETAILS="Banner Details" COM_BANNERS_HEADING_ACTIVE="Active" COM_BANNERS_HEADING_ACTIVE_ASC="Active ascending" COM_BANNERS_HEADING_ACTIVE_DESC="Active descending" COM_BANNERS_HEADING_BANNERS="Banners" COM_BANNERS_HEADING_BANNERS_ASC="Banners ascending" COM_BANNERS_HEADING_BANNERS_DESC="Banners descending" COM_BANNERS_HEADING_CLICKS="Clicks" COM_BANNERS_HEADING_CLICKS_ASC="Clicks ascending" COM_BANNERS_HEADING_CLICKS_DESC="Clicks descending" COM_BANNERS_HEADING_CLIENT="Client" COM_BANNERS_HEADING_CLIENT_ASC="Client ascending" COM_BANNERS_HEADING_CLIENT_DESC="Client descending" COM_BANNERS_HEADING_CONTACT="Contact" COM_BANNERS_HEADING_CONTACT_ASC="Contact ascending" COM_BANNERS_HEADING_CONTACT_DESC="Contact descending" COM_BANNERS_HEADING_COUNT="Count" COM_BANNERS_HEADING_IMPRESSIONS="Impressions" COM_BANNERS_HEADING_IMPRESSIONS_ASC="Impressions ascending" COM_BANNERS_HEADING_IMPRESSIONS_DESC="Impressions descending" COM_BANNERS_HEADING_METAKEYWORDS="Meta Keywords" COM_BANNERS_HEADING_NAME="Name" COM_BANNERS_HEADING_NAME_ASC="Name ascending" COM_BANNERS_HEADING_NAME_DESC="Name descending" COM_BANNERS_HEADING_PURCHASETYPE="Purchase Type" COM_BANNERS_HEADING_PURCHASETYPE_ASC="Purchase Type ascending" COM_BANNERS_HEADING_PURCHASETYPE_DESC="Purchase Type descending" COM_BANNERS_HEADING_STICKY="Pinned" COM_BANNERS_HEADING_STICKY_ASC="Pinned ascending" COM_BANNERS_HEADING_STICKY_DESC="Pinned descending" COM_BANNERS_HEADING_TYPE="Type" COM_BANNERS_IMPRESSION="Impression" COM_BANNERS_IMPRESSIONS="%1$s of %2$s" COM_BANNERS_MANAGER="Banners" COM_BANNERS_MANAGER_BANNER_EDIT="Banners: Edit" COM_BANNERS_MANAGER_BANNER_NEW="Banners: New" COM_BANNERS_MANAGER_BANNERS="Banners" COM_BANNERS_MANAGER_CLIENT_EDIT="Banners: Edit Client" COM_BANNERS_MANAGER_CLIENT_NEW="Banners: New Client" COM_BANNERS_MANAGER_CLIENTS="Banners: Clients" COM_BANNERS_MANAGER_TRACKS="Banners: Tracks" COM_BANNERS_METADATA="Metadata" COM_BANNERS_FIELD_MODIFIED_DESC="The date and time that the banner was last modified." COM_BANNERS_N_BANNERS_STUCK="%d banners successfully pinned." COM_BANNERS_N_BANNERS_STUCK_1="%d banner successfully pinned." COM_BANNERS_N_BANNERS_UNSTUCK="%d banners successfully unpinned." COM_BANNERS_N_BANNERS_UNSTUCK_1="%d banner successfully unpinned." COM_BANNERS_NEW_BANNER="New Banner" COM_BANNERS_NEW_CLIENT="New Client" COM_BANNERS_NO_BANNERS_SELECTED="No banners selected." COM_BANNERS_NO_CLIENT="- No client -" COM_BANNERS_NO_CLIENTS_SELECTED="No clients selected." COM_BANNERS_NOCATEGORYNAME="No category" COM_BANNERS_NOCLIENTNAME="No client" COM_BANNERS_RESET_CLICKS="Reset clicks" COM_BANNERS_RESET_IMPMADE="Reset impressions" COM_BANNERS_SEARCH_IN_TITLE="Search in title" COM_BANNERS_SELECT_CLIENT="- Select Client -" COM_BANNERS_SELECT_TYPE="- Select Type -" COM_BANNERS_SUBMENU_BANNERS="Banners" COM_BANNERS_SUBMENU_CATEGORIES="Categories" COM_BANNERS_SUBMENU_CLIENTS="Clients" COM_BANNERS_SUBMENU_TRACKS="Tracks" COM_BANNERS_TRACKS_DELETE="Delete Tracks" COM_BANNERS_TRACKS_DOWNLOAD="Download tracks" COM_BANNERS_TRACKS_EXPORT="Export" COM_BANNERS_TRACKS_NO_ITEMS_DELETED="No Tracks to Delete." COM_BANNERS_TRACKS_N_ITEMS_DELETED="%d tracks successfully deleted." COM_BANNERS_TRACKS_N_ITEMS_DELETED_1="%d track successfully deleted." COM_BANNERS_TYPE1="Impressions" COM_BANNERS_TYPE2="Clicks" COM_BANNERS_UNLIMITED="Unlimited" COM_BANNERS_XML_DESCRIPTION="This component manages banners and banner clients." JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings." PKb��\ƽ ���-language/en-GB/en-GB.plg_extension_joomla.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_EXTENSION_JOOMLA="Extension - Joomla" PLG_EXTENSION_JOOMLA_XML_DESCRIPTION="Manage the update sites for extensions." PLG_EXTENSION_JOOMLA_UNKNOWN_SITE="Unknown Site" PKb��\W|�??-language/en-GB/en-GB.plg_system_cache.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CACHE_XML_DESCRIPTION="Provides page caching." PLG_SYSTEM_CACHE="System - Page Cache" PKb��\�O����(language/en-GB/en-GB.mod_popular.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_POPULAR_XML_DESCRIPTION="This module shows a list of the most popular published Articles that are still current. Some that are shown may have expired even though they are the most recent." MOD_POPULAR="Popular Articles" MOD_POPULAR_LAYOUT_DEFAULT="Default" PKb��\h�����'language/en-GB/en-GB.mod_latest.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_LATEST="Articles - Latest" MOD_LATEST_XML_DESCRIPTION="This Module shows a list of the most recently published Articles that are still current. Some that are shown may have expired even though they are the most recent." MOD_LATEST_LAYOUT_DEFAULT="Default" PKb��\���B��4language/en-GB/en-GB.plg_system_languagecode.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SYSTEM_LANGUAGECODE="System - Language Code" PLG_SYSTEM_LANGUAGECODE_XML_DESCRIPTION="Provides ability to change the language code in the generated HTML document to improve SEO." PKb��\E���,,(language/en-GB/en-GB.com_checkin.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CHECKIN="Check-in" COM_CHECKIN_XML_DESCRIPTION="Check-in Component" PKb��\Ĩ!ee&language/en-GB/en-GB.mod_title.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_TITLE="Title" MOD_TITLE_XML_DESCRIPTION="This module shows the Toolbar Component Title." MOD_TITLE_LAYOUT_DEFAULT="Default" PKb��\W�ʺ,language/en-GB/en-GB.plg_search_contacts.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SEARCH_CONTACTS="Search - Contacts" PLG_SEARCH_CONTACTS_CONTACTS="Contacts" PLG_SEARCH_CONTACTS_FIELD_SEARCHLIMIT_DESC="Number of search items to return." PLG_SEARCH_CONTACTS_FIELD_SEARCHLIMIT_LABEL="Search Limit" PLG_SEARCH_CONTACTS_XML_DESCRIPTION="Enables searching of the Contact Component."PKb��\Ѷlj��(language/en-GB/en-GB.com_banners.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_BANNERS="Banners" COM_BANNERS_BANNERS="Banners" COM_BANNERS_CATEGORY_ADD_TITLE="Banners: Add Category" COM_BANNERS_CATEGORY_EDIT_TITLE="Banners: Edit Category" COM_BANNERS_CATEGORIES="Categories" COM_BANNERS_CONTENT_TYPE_BANNER="Banner" COM_BANNERS_CONTENT_TYPE_CLIENT="Banner Client" COM_BANNERS_CONTENT_TYPE_CATEGORY="Banner Category" COM_BANNERS_CLIENTS="Clients" COM_BANNERS_TRACKS="Tracks" COM_BANNERS_XML_DESCRIPTION="This component manages banners and banner clients." PKb��\�� ���'language/en-GB/en-GB.com_categories.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 CATEGORIES_FIELDSET_OPTIONS="Options" COM_CATEGORIES="Categories" COM_CATEGORIES_ACCESS_CREATE_DESC="New setting for <strong>create actions</strong> in this category and the calculated setting based on the parent category and group permissions." COM_CATEGORIES_ACCESS_DELETE_DESC="New setting for <strong>delete actions</strong> on this category and the calculated setting based on the parent category and group permissions." COM_CATEGORIES_ACCESS_EDIT_DESC="New setting for <strong>edit actions</strong> on this category and the calculated setting based on the parent category and group permissions." COM_CATEGORIES_ACCESS_EDITOWN_DESC="New setting for <strong>edit own actions</strong> on this category and the calculated setting based on the parent category and group permissions." COM_CATEGORIES_ACCESS_EDITSTATE_DESC="New setting for <strong>edit state actions</strong> on this category and the calculated setting based on the parent category and group permissions." COM_CATEGORIES_BASIC_FIELDSET_LABEL="Options" COM_CATEGORIES_BATCH_CANNOT_CREATE="You are not allowed to create new categories in this category." COM_CATEGORIES_BATCH_CANNOT_EDIT="You are not allowed to edit one or more of these categories." ; COM_CATEGORIES_BATCH_CATEGORY_LABEL is deprecated, use JLIB_HTML_BATCH_MENU_LABEL instead. COM_CATEGORIES_BATCH_CATEGORY_LABEL="To Move or Copy your selection please select a Category." COM_CATEGORIES_BATCH_OPTIONS="Batch process the selected categories." COM_CATEGORIES_BATCH_TIP="If a category is selected for move/copy, any actions selected will be applied to the copied or moved categories. Otherwise, all actions are applied to the selected categories." COM_CATEGORIES_CATEGORIES_BASE_TITLE="Category Manager" COM_CATEGORIES_CATEGORIES_TITLE="%s: Categories" COM_CATEGORIES_CATEGORY_ADD_TITLE="Category Manager: Add A New %s Category" COM_CATEGORIES_CATEGORY_BASE_ADD_TITLE="Category Manager: Add New Category" COM_CATEGORIES_CATEGORY_BASE_EDIT_TITLE="Category Manager: Edit Category" COM_CATEGORIES_CATEGORY_EDIT_TITLE="Category Manager: Edit A %s Category" COM_CATEGORIES_CATEGORY_OPTIONS="Category" COM_CATEGORIES_CHANGE_CATEGORY="Change Category" COM_CATEGORIES_DELETE_NOT_ALLOWED="Delete not allowed for category %s." COM_CATEGORIES_DESCRIPTION_DESC="Enter an optional category description in the text area." COM_CATEGORIES_EDIT_CATEGORY="Edit Category" COM_CATEGORIES_ERROR_ALL_LANGUAGE_ASSOCIATED="A category item set to All languages can't be associated. Associations have not been set." COM_CATEGORIES_FIELD_BASIC_LABEL="Options" COM_CATEGORIES_FIELD_HITS_DESC="Number of hits for this category." COM_CATEGORIES_FIELD_IMAGE_ALT_LABEL="Alt Text" COM_CATEGORIES_FIELD_IMAGE_ALT_DESC="Alternative text used for visitors without access to images." COM_CATEGORIES_FIELD_IMAGE_DESC="Select or upload an image for this category." COM_CATEGORIES_FIELD_IMAGE_LABEL="Image" COM_CATEGORIES_FIELD_LANGUAGE_DESC="Assign a language to this category." COM_CATEGORIES_FIELD_NOTE_DESC="An optional note to display in the category list." COM_CATEGORIES_FIELD_NOTE_LABEL="Note" COM_CATEGORIES_FIELD_PARENT_DESC="Select a parent category." COM_CATEGORIES_FIELD_PARENT_LABEL="Parent" COM_CATEGORIES_FIELDSET_DETAILS="Category Details" COM_CATEGORIES_FIELDSET_PUBLISHING="Publishing" COM_CATEGORIES_FIELDSET_RULES="Permissions" COM_CATEGORIES_HAS_SUBCATEGORY_ITEMS="%d items are assigned to this category's subcategories." COM_CATEGORIES_HAS_SUBCATEGORY_ITEMS_1="%d item is assigned to one of this category's subcategories." COM_CATEGORY_HEADING_ASSOCIATION="Association" COM_CATEGORIES_ITEM_ASSOCIATIONS_FIELDSET_LABEL="Category Item Associations" COM_CATEGORIES_ITEM_ASSOCIATIONS_FIELDSET_DESC="Multilingual only! This choice will only display if the Language Filter parameter 'Item Associations' is set to 'Yes'. Choose a category item for the target language. This association will let the Language Switcher module redirect to the associated category item in another language. If used, make sure to display the Language switcher module on the concerned pages. A category item set to language 'All' can't be associated." COM_CATEGORIES_ITEMS_SEARCH_FILTER="Search" COM_CATEGORIES_N_ITEMS_ARCHIVED="%d categories successfully archived." COM_CATEGORIES_N_ITEMS_ARCHIVED_1="%d category successfully archived." COM_CATEGORIES_N_ITEMS_ASSIGNED="%d items are assigned to this category." COM_CATEGORIES_N_ITEMS_ASSIGNED_1="%d item is assigned to this category." COM_CATEGORIES_N_ITEMS_CHECKED_IN_0="No category successfully checked in." COM_CATEGORIES_N_ITEMS_CHECKED_IN_1="%d category successfully checked in." COM_CATEGORIES_N_ITEMS_CHECKED_IN_MORE="%d categories successfully checked in." COM_CATEGORIES_N_ITEMS_DELETED="%d categories successfully deleted." COM_CATEGORIES_N_ITEMS_DELETED_1="%d category successfully deleted." COM_CATEGORIES_N_ITEMS_PUBLISHED="%d categories successfully published." COM_CATEGORIES_N_ITEMS_PUBLISHED_1="%d category successfully published." COM_CATEGORIES_N_ITEMS_TRASHED="%d categories successfully trashed." COM_CATEGORIES_N_ITEMS_TRASHED_1="%d category successfully trashed." COM_CATEGORIES_N_ITEMS_UNPUBLISHED="%d categories successfully unpublished." COM_CATEGORIES_N_ITEMS_UNPUBLISHED_1="%d category successfully unpublished." COM_CATEGORIES_NO_ITEM_SELECTED="Please first make a selection from the list." COM_CATEGORIES_PATH_LABEL="Category Path" COM_CATEGORIES_REBUILD_FAILURE="Failed rebuilding Categories tree data." COM_CATEGORIES_REBUILD_SUCCESS="Categories tree data successfully rebuilt." COM_CATEGORIES_SAVE_SUCCESS="Category successfully saved." COM_CATEGORIES_SELECT_A_CATEGORY="Select a Category" COM_CATEGORIES_TIP_ASSOCIATION="Associated categories" COM_CATEGORIES_TIP_ASSOCIATED_LANGUAGE="%s %s" COM_CATEGORIES_XML_DESCRIPTION="This component manages categories." JGLOBAL_NO_ITEM_SELECTED="No categories selected." JLIB_HTML_ACCESS_SUMMARY_DESC="Shown below is an overview of the permission settings for this category. Select the tabs above to customise these settings by action." JLIB_RULES_SETTING_NOTES_ITEM="1. Changes apply to this category and all child categories.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings." PKb��\�YZ��"�"%language/en-GB/en-GB.com_weblinks.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_WEBLINKS="Weblinks" COM_WEBLINKS_ACCESS_HEADING="Access" COM_WEBLINKS_BATCH_OPTIONS="Batch process the selected links" COM_WEBLINKS_BATCH_TIP="If a category is selected for move/copy, any actions selected will be applied to the copied or moved links. Otherwise, all actions are applied to the selected links." COM_WEBLINKS_CATEGORIES_DESC="These settings apply for Web Links Categories Options unless they are changed for a specific menu item." COM_WEBLINKS_CATEGORY_DESC="These settings apply for Web Links Category Options unless they are changed for a specific menu item." COM_WEBLINKS_COMPONENT_DESC="These settings apply for Web Links unless they are changed for a specific menu item or web link." COM_WEBLINKS_COMPONENT_LABEL="Web Link" COM_WEBLINKS_CONFIG_INTEGRATION_SETTINGS_DESC="These settings determine how the Web Links Component will integrate with other extensions." COM_WEBLINKS_CONFIGURATION="Web Links Manager Options" COM_WEBLINKS_EDIT_WEBLINK="Edit Web Link" COM_WEBLINKS_ERR_TABLES_NAME="There is already a Web Link with that name in this category. Please try again." COM_WEBLINKS_ERR_TABLES_PROVIDE_URL="Please provide a valid URL" COM_WEBLINKS_ERR_TABLES_TITLE="Your web link must contain a title." COM_WEBLINKS_ERROR_UNIQUE_ALIAS="Another web link from this category has the same alias (remember it may be a trashed item)." COM_WEBLINKS_FIELD_ALIAS_DESC="The alias is for internal use only. Leave this blank and Joomla will fill in a default value from the title. It has to be unique for each web link in the same category." COM_WEBLINKS_FIELD_CATEGORY_DESC="Choose a category for this Web link." COM_WEBLINKS_FIELD_CATEGORYCHOOSE_DESC="Please choose a Web Links category to display." COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_DESC="Show or hide the number of Web Links in each Category." COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_LABEL="# Web Links" COM_WEBLINKS_FIELD_CONFIG_COUNTCLICKS_DESC="If set to yes, the number of times the link has been clicked will be recorded." COM_WEBLINKS_FIELD_CONFIG_COUNTCLICKS_LABEL="Count Clicks" COM_WEBLINKS_FIELD_CONFIG_DESCRIPTION_DESC="Show or hide the description below." COM_WEBLINKS_FIELD_CONFIG_HITS_DESC="Show or hide hits." COM_WEBLINKS_FIELD_CONFIG_ICON_DESC="If Icon is chosen above, select an icon to display with the Web Links. If none is selected, the default icon will be used." COM_WEBLINKS_FIELD_CONFIG_ICON_LABEL="Select Icon" COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_DESC="Show or hide the links description." COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_LABEL="Links Description" COM_WEBLINKS_FIELD_CONFIG_OTHERCATS_DESC="Show or hide other categories." COM_WEBLINKS_FIELD_CONFIG_OTHERCATS_LABEL="Other Categories" COM_WEBLINKS_FIELD_CONFIG_SHOWREPORT_DESC="Show or hide the Report Bad Link option." COM_WEBLINKS_FIELD_CONFIG_SHOWREPORT_LABEL="Reports" COM_WEBLINKS_FIELD_COUNTCLICKS_DESC="If set to yes, the number of times the link has been clicked will be recorded." COM_WEBLINKS_FIELD_COUNTCLICKS_LABEL="Count Clicks" COM_WEBLINKS_FIELD_DESCRIPTION_DESC="Enter a description for the web link." COM_WEBLINKS_FIELD_DISPLAY_NUM_DESC="Default number of Web links to list on a page." COM_WEBLINKS_FIELD_DISPLAY_NUM_LABEL="# of Web links to List" COM_WEBLINKS_FIELD_FIRST_DESC="The image to be displayed." COM_WEBLINKS_FIELD_FIRST_LABEL="First Image" COM_WEBLINKS_FIELD_HEIGHT_DESC="Height of the target popup or modal window. Defaults to 600x500 if one field is left empty." COM_WEBLINKS_FIELD_HEIGHT_LABEL="Height" COM_WEBLINKS_FIELD_ICON_DESC="Displays a text, an icon or nothing with the Web links. Default is 'Icon'." COM_WEBLINKS_FIELD_ICON_LABEL="Text/Icon/Web Link Only" COM_WEBLINKS_FIELD_ICON_OPTION_ICON="Icon" COM_WEBLINKS_FIELD_ICON_OPTION_TEXT="Text" COM_WEBLINKS_FIELD_ICON_OPTION_WEBLINK="Web Link Only" COM_WEBLINKS_FIELD_IMAGE_ALT_DESC="Alternative text used for visitors without access to images. Replaced with caption text if it is present." COM_WEBLINKS_FIELD_IMAGE_ALT_LABEL="Alt Text" COM_WEBLINKS_FIELD_IMAGE_CAPTION_DESC="Caption attached to the image." COM_WEBLINKS_FIELD_IMAGE_CAPTION_LABEL="Caption" COM_WEBLINKS_FIELD_LANGUAGE_DESC="Assign a language to this web link." COM_WEBLINKS_FIELD_MODIFIED_DESC="The date and time the link was last modified." COM_WEBLINKS_FIELD_SECOND_DESC="The second image to be displayed." COM_WEBLINKS_FIELD_SECOND_LABEL="Second Image" COM_WEBLINKS_FIELD_SELECT_CATEGORY_DESC="Select a web links category to display." COM_WEBLINKS_FIELD_SELECT_CATEGORY_LABEL="Select a Category" COM_WEBLINKS_FIELD_SHOW_CAT_TAGS_DESC="Show the tags for a category." COM_WEBLINKS_FIELD_SHOW_CAT_TAGS_LABEL="Show Tags" COM_WEBLINKS_FIELD_SHOW_TAGS_DESC="Show the tags for a web link." COM_WEBLINKS_FIELD_SHOW_TAGS_LABEL="Show Tags" COM_WEBLINKS_FIELD_STATE_DESC="Set publication status." COM_WEBLINKS_FIELD_TARGET_DESC="Target browser window when the link is selected." COM_WEBLINKS_FIELD_TARGET_LABEL="Target" COM_WEBLINKS_FIELD_TITLE_DESC="Web Link must have a title." COM_WEBLINKS_FIELD_URL_DESC="You must enter a URL. IDN (International) Links are converted to punycode when they are saved." COM_WEBLINKS_FIELD_URL_LABEL="URL" COM_WEBLINKS_FIELD_VALUE_REPORTED="Reported" COM_WEBLINKS_FIELD_VERSION_DESC="A count of the number of times this web link has been revised." COM_WEBLINKS_FIELD_VERSION_LABEL="Revision" COM_WEBLINKS_FIELD_WIDTH_DESC="Width of the target popup or modal window. Defaults to 600x500 if one field is left empty." COM_WEBLINKS_FIELD_WIDTH_LABEL="Width" COM_WEBLINKS_FIELDSET_IMAGES="Images" COM_WEBLINKS_FIELDSET_OPTIONS="Options" COM_WEBLINKS_FILTER_CATEGORY="Filter Category" COM_WEBLINKS_FILTER_STATE="Filter State" COM_WEBLINKS_FLOAT_DESC="Controls placement of the image." COM_WEBLINKS_FLOAT_LABEL="Image Float" COM_WEBLINKS_HITS_DESC="Number of hits for this web link." COM_WEBLINKS_LEFT="Left" COM_WEBLINKS_LIST_LAYOUT_DESC="These settings apply for Web Links List Layout Options unless they are changed for a specific menu item." COM_WEBLINKS_MANAGER_WEBLINK="Web Links" COM_WEBLINKS_MANAGER_WEBLINKS="Web Links" COM_WEBLINKS_MANAGER_WEBLINK_EDIT="Web Link: Edit" COM_WEBLINKS_MANAGER_WEBLINK_NEW="Web Link: New" COM_WEBLINKS_N_ITEMS_ARCHIVED="%d web links successfully archived." COM_WEBLINKS_N_ITEMS_ARCHIVED_1="%d web link successfully archived." COM_WEBLINKS_N_ITEMS_CHECKED_IN_0="No web link successfully checked in." COM_WEBLINKS_N_ITEMS_CHECKED_IN_1="%d web link successfully checked in." COM_WEBLINKS_N_ITEMS_CHECKED_IN_MORE="%d web links successfully checked in." COM_WEBLINKS_N_ITEMS_DELETED="%d web links successfully deleted." COM_WEBLINKS_N_ITEMS_DELETED_1="%d web link successfully deleted." COM_WEBLINKS_N_ITEMS_PUBLISHED="%d web links successfully published." COM_WEBLINKS_N_ITEMS_PUBLISHED_1="%d web link successfully published." COM_WEBLINKS_N_ITEMS_TRASHED="%d web links successfully trashed." COM_WEBLINKS_N_ITEMS_TRASHED_1="%d web link successfully trashed." COM_WEBLINKS_N_ITEMS_UNPUBLISHED="%d web links successfully unpublished." COM_WEBLINKS_N_ITEMS_UNPUBLISHED_1="%d web link successfully unpublished." COM_WEBLINKS_NEW_WEBLINK="New Web Link" COM_WEBLINKS_NONE="None" COM_WEBLINKS_OPTION_FILTER_ACCESS="- Filter Access -" COM_WEBLINKS_OPTION_FILTER_CATEGORY="- Filter Category -" COM_WEBLINKS_OPTION_FILTER_PUBLISHED="- Filter State -" COM_WEBLINKS_OPTIONS="Options" COM_WEBLINKS_ORDER_HEADING="Order" COM_WEBLINKS_RIGHT="Right" COM_WEBLINKS_SAVE_SUCCESS="Web link successfully saved" COM_WEBLINKS_SEARCH_IN_TITLE="Search in title" COM_WEBLINKS_SHOW_EMPTY_CATEGORIES_DESC="If Show, empty categories will display. A category is only empty - if it has no Web links or subcategories." COM_WEBLINKS_SUBMENU_CATEGORIES="Categories" COM_WEBLINKS_SUBMENU_WEBLINKS="Web Links" COM_WEBLINKS_XML_DESCRIPTION="Component for web links management" JGLOBAL_NO_ITEM_SELECTED="No web links selected" JGLOBAL_NEWITEMSLAST_DESC="New Web links default to the last position. Ordering can be changed after this Web link is saved." JLIB_APPLICATION_ERROR_BATCH_CANNOT_CREATE="You are not allowed to create new web links in this category." JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT="You are not allowed to edit one or more of these web links." JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings."PKb��\�i����0language/en-GB/en-GB.plg_content_contact.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTENT_CONTACT="Content - Contact" PLG_CONTENT_CONTACT_XML_DESCRIPTION="Provides a link between the content author and the contact item that can be used for an Author Profile." PKb��\�$?#language/en-GB/en-GB.com_cpanel.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CPANEL="Control Panel" COM_CPANEL_HEADER_SUBMENU="Submenu" COM_CPANEL_HEADER_SYSTEM="System" COM_CPANEL_LINK_CHECKIN="Global Check-in" COM_CPANEL_LINK_CLEAR_CACHE="Clear Cache" COM_CPANEL_LINK_DASHBOARD="Dashboard" COM_CPANEL_LINK_EXTENSIONS="Install Extensions" COM_CPANEL_LINK_GLOBAL_CONFIG="Global Configuration" COM_CPANEL_LINK_SYSINFO="System Information" COM_CPANEL_MESSAGES_BODY_NOCLOSE="There are important post-installation messages that require your attention. To view those messages please select the Review Messages button below." COM_CPANEL_MESSAGES_BODYMORE_NOCLOSE="You can review the messages at any time by selecting the Components, Post-installation messages menu item of your site's Administrator section. This information area won't appear when you have hidden all messages." COM_CPANEL_MESSAGES_REVIEW="Review Messages" COM_CPANEL_MESSAGES_TITLE="You have post-installation messages" COM_CPANEL_MSG_EACCELERATOR_BODY="eAccelerator is not compatible with Joomla! By selecting the Change to File Caching button below we will change the cache handler to file. If you want to use a different cache handler, please change it in the Global Configuration page." COM_CPANEL_MSG_EACCELERATOR_BUTTON="Change to File." COM_CPANEL_MSG_EACCELERATOR_TITLE="eAccelerator is not compatible with Joomla!" COM_CPANEL_MSG_HTACCESS_BODY="A change to the default .htaccess and web.config files was made in Joomla! 3.4 to disallow folder listings by default. Users are recommended to implement this change in their files. Please see <a href="_QQ_"https://docs.joomla.org/Preconfigured_htaccess"_QQ_">this page</a> for more information." COM_CPANEL_MSG_HTACCESS_TITLE=".htaccess & web.config Update" COM_CPANEL_MSG_LANGUAGEACCESS340_TITLE="You have possible issues with your multilingual settings" COM_CPANEL_MSG_LANGUAGEACCESS340_BODY="Since Joomla! 3.4.0 you may have issues with the System - Language Filter plugin on your web site. To fix them please open the <a href="_QQ_"index.php?option=com_languages&view=languages"_QQ_">Language Manager</a> and save each content language manually to make sure an Access level is saved." COM_CPANEL_MSG_PHPVERSION_BODY="Beginning with Joomla! 3.3, the version of PHP this site is using will no longer be supported. Joomla! 3.3 will require at least <a href="_QQ_"http://community.joomla.org/blogs/leadership/1798-raising-the-bar-on-security.html"_QQ_">PHP version 5.3.10 in order to provide enhanced security features to its users</a>." COM_CPANEL_MSG_PHPVERSION_TITLE="Your PHP Version Will Be Unsupported in Joomla! 3.3" COM_CPANEL_MSG_ROBOTS_TITLE="robots.txt Update" COM_CPANEL_MSG_ROBOTS_BODY="A change to the default robots.txt files was made in Joomla! 3.3 to allow Google to access templates and media files by default to improve SEO. This change is not applied automatically on upgrades and users are recommended to review the changes in the robots.txt.dist file and implement these change in their own robots.txt file." COM_CPANEL_WELCOME_BEGINNERS_MESSAGE="<p>Community resources are available for new users</p><ul><li><a href="_QQ_"https://docs.joomla.org/Portal:Beginners"_QQ_">Joomla! Beginners Guide</a></li><li><a href="_QQ_"http://forum.joomla.org/viewforum.php?f=706"_QQ_">New to Joomla! Forum</a></li><ul>" COM_CPANEL_WELCOME_BEGINNERS_TITLE="Welcome to Joomla!" COM_CPANEL_XML_DESCRIPTION="Control Panel component" PKb��\rΎ��(language/en-GB/en-GB.com_postinstall.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_POSTINSTALL="Post-installation Messages" COM_POSTINSTALL_BTN_HIDE="Hide this message" COM_POSTINSTALL_BTN_RESET="Reset Messages" COM_POSTINSTALL_CONFIGURATION="Post-installation Messages: Options" COM_POSTINSTALL_LBL_MESSAGES="Post-installation and Upgrade Messages" COM_POSTINSTALL_LBL_NOMESSAGES_DESC="You have already seen and hidden all the messages. To display them again please select the Reset Messages button below." COM_POSTINSTALL_LBL_NOMESSAGES_TITLE="No Messages" COM_POSTINSTALL_LBL_RELEASENEWS="Release news <a href="_QQ_"http://www.joomla.org/announcements/release-news/"_QQ_">from the Joomla! Project</a>" COM_POSTINSTALL_LBL_SINCEVERSION="Since version %s" COM_POSTINSTALL_MESSAGES_FOR="Showing messages for" COM_POSTINSTALL_MESSAGES_TITLE="Post-installation Messages for %s" COM_POSTINSTALL_TITLE_JOOMLA="Joomla" COM_POSTINSTALL_XML_DESCRIPTION="Displays post-installation and post-upgrade messages for Joomla and its extensions." PKb��\�m���S�S#language/en-GB/en-GB.com_config.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CONFIG="Configuration Manager" COM_CONFIG_ACTION_ADMIN_DESC="Allows users in the group to perform any action over the whole site regardless of any other permission settings." COM_CONFIG_ACTION_CREATE_DESC="Allows users in the group to create any content in any extension." COM_CONFIG_ACTION_DELETE_DESC="Allows users in the group to delete any content in any extension." COM_CONFIG_ACTION_EDIT_DESC="Allows users in the group to edit any content in any extension." COM_CONFIG_ACTION_EDITOWN_DESC="Allows users in the group to edit any content they own in any extension." COM_CONFIG_ACTION_EDITSTATE_DESC="Allows users in the group to edit the state of any content in any extension." COM_CONFIG_ACTION_LOGIN_ADMIN_DESC="Allows users in the group to login to the Backend Administrator site." COM_CONFIG_ACTION_LOGIN_OFFLINE_DESC="Allows users in the group to access the Frontend site when site is offline." COM_CONFIG_ACTION_LOGIN_SITE_DESC="Allows users in the group to login to the Frontend site." COM_CONFIG_ACTION_MANAGE_DESC="Allows users in the group to access all of the administration interface except Global Configuration." COM_CONFIG_CACHE_SETTINGS="Cache Settings" COM_CONFIG_CACHE_WARNING="Failed to clear cache automatically, you may need to do so manually." COM_CONFIG_COMPONENT_FIELDSET_LABEL="Component" COM_CONFIG_COOKIE_SETTINGS="Cookie Settings" COM_CONFIG_DATABASE_SETTINGS="Database Settings" COM_CONFIG_DEBUG_SETTINGS="Debug Settings" COM_CONFIG_ERROR_CACHE_PATH_NOTWRITABLE="The cache folder is not writable: %s" COM_CONFIG_ERROR_COMPONENT_ASSET_NOT_FOUND="The asset for the component could not be found. Permissions have not been saved." COM_CONFIG_ERROR_CONFIG_EXTENSION_NOT_FOUND="The Global Configuration extension could not be found. Text filter settings have not been saved." COM_CONFIG_ERROR_CONFIGURATION_PHP_NOTUNWRITABLE="Could not make configuration.php unwritable." COM_CONFIG_ERROR_CONFIGURATION_PHP_NOTWRITABLE="Could not make configuration.php writable." COM_CONFIG_ERROR_HELPREFRESH_ERROR_STORE="The new Help Sites list could not be saved." COM_CONFIG_ERROR_HELPREFRESH_FETCH="The current Help Sites list could not be fetched from the remote server." COM_CONFIG_ERROR_ROOT_ASSET_NOT_FOUND="The asset for global configuration could not be found. Permissions have not been saved." COM_CONFIG_ERROR_REMOVING_SUPER_ADMIN="You can't remove your own Super User permissions." COM_CONFIG_ERROR_WRITE_FAILED="Could not write to the configuration file" COM_CONFIG_FIELD_CACHE_HANDLER_DESC="Choose cache handler to enable caching. Native caching mechanism is file-based. Please make sure the cache folders are writable." COM_CONFIG_FIELD_CACHE_HANDLER_LABEL="Cache Handler" COM_CONFIG_FIELD_CACHE_LABEL="Cache" COM_CONFIG_FIELD_CACHE_DESC="Enable or disable caching and set caching level. Conservative level: smaller system cache, Progressive level (default): faster, bigger system cache, includes module renderers cache. Not appropriate for extremely large sites." COM_CONFIG_FIELD_CACHE_TIME_DESC="The maximum length of time in minutes for a cache file to be stored before it is refreshed." COM_CONFIG_FIELD_CACHE_TIME_LABEL="Cache Time" COM_CONFIG_FIELD_COOKIE_DOMAIN_DESC="Domain to use when setting session cookies. Precede domain with '.' if cookie should be valid for all subdomains." COM_CONFIG_FIELD_COOKIE_DOMAIN_LABEL="Cookie Domain" COM_CONFIG_FIELD_COOKIE_PATH_DESC="Path the cookie should be valid for." COM_CONFIG_FIELD_COOKIE_PATH_LABEL="Cookie Path" COM_CONFIG_FIELD_DATABASE_HOST_DESC="The hostname for your database entered during the installation process. Do not edit this field unless absolutely necessary (eg the transfer of the database to a new hosting provider)." COM_CONFIG_FIELD_DATABASE_HOST_LABEL="Host" COM_CONFIG_FIELD_DATABASE_NAME_DESC="The name for your database entered during the installation process. Do not edit this field unless absolutely necessary (eg the transfer of the database to a new hosting provider)." COM_CONFIG_FIELD_DATABASE_NAME_LABEL="Database Name" COM_CONFIG_FIELD_DATABASE_PREFIX_DESC="The prefix used for your database tables entered during the installation process. Do not edit field unless absolutely necessary (eg the transfer of the database to a new hosting provider)." COM_CONFIG_FIELD_DATABASE_PREFIX_LABEL="Database Tables Prefix" COM_CONFIG_FIELD_DATABASE_TYPE_DESC="The type of database in use entered during the installation process. Do not edit this field unless you are having to migrate to a different type of database, perhaps due to changing your hosting provider." COM_CONFIG_FIELD_DATABASE_TYPE_LABEL="Database Type" COM_CONFIG_FIELD_DATABASE_USERNAME_DESC="The username for access to your database entered during the installation process. Do not edit this field unless absolutely necessary (eg the transfer of the database to a new hosting provider)." COM_CONFIG_FIELD_DATABASE_USERNAME_LABEL="Database Username" COM_CONFIG_FIELD_DEBUG_LANG_DESC="Select whether the debugging indicators (<bold>**...**</bold>) or (<bold>??...??</bold>) for the Joomla Language files will be displayed. Debug Language will work without Debug System being activated, but you will not get the additional detailed references that will help you correct any errors." COM_CONFIG_FIELD_DEBUG_LANG_LABEL="Debug Language" COM_CONFIG_FIELD_DEBUG_SYSTEM_DESC="If enabled, diagnostic information, language translation and SQL errors (if present) will be displayed. The information will be displayed at the foot of every page you view within the Joomla Backend and Frontend. It is not advisable to leave the debug mode activated when running a live website." COM_CONFIG_FIELD_DEBUG_SYSTEM_LABEL="Debug System" COM_CONFIG_FIELD_DEFAULT_ACCESS_LEVEL_DESC="Select the default access level for new content, menu items and other items created on your site." COM_CONFIG_FIELD_DEFAULT_ACCESS_LEVEL_LABEL="Default Access Level" COM_CONFIG_FIELD_DEFAULT_EDITOR_DESC="Select the default text editor for your site. Registered Users will be able to change their preference in their personal details if you allow that option." COM_CONFIG_FIELD_DEFAULT_EDITOR_LABEL="Default Editor" COM_CONFIG_FIELD_DEFAULT_CAPTCHA_DESC="Select the default captcha for your site. You may need to enter required information for your captcha plugin in the Plugin Manager." COM_CONFIG_FIELD_DEFAULT_CAPTCHA_LABEL="Default Captcha" COM_CONFIG_FIELD_DEFAULT_FEED_LIMIT_DESC="Select the number of content items to show in the feed(s)." COM_CONFIG_FIELD_DEFAULT_FEED_LIMIT_LABEL="Default Feed Limit" COM_CONFIG_FIELD_DEFAULT_LIST_LIMIT_DESC="Sets the default length of lists in the Control Panel for all users." COM_CONFIG_FIELD_DEFAULT_LIST_LIMIT_LABEL="Default List Limit" COM_CONFIG_FIELD_ERROR_REPORTING_DESC="Select the appropriate level of reporting from the drop down list. See the Help Screen for full details." COM_CONFIG_FIELD_ERROR_REPORTING_LABEL="Error Reporting" COM_CONFIG_FIELD_FEED_EMAIL_DESC="The RSS and Atom news feeds include the author's email address. Select Author Email Address to use each author's email address (from the User Manager) in the news feed. Select Site Email Address to include the site 'Mail from' email address for each article." COM_CONFIG_FIELD_FEED_EMAIL_LABEL="Feed Email Address" COM_CONFIG_FIELD_FILTERS_DEFAULT_BLACK_LIST="Default Black List" COM_CONFIG_FIELD_FILTERS_CUSTOM_BLACK_LIST="Custom Black List" COM_CONFIG_FIELD_FILTERS_NO_HTML="No HTML" COM_CONFIG_FIELD_FILTERS_NO_FILTER="No Filtering" COM_CONFIG_FIELD_FILTERS_WHITE_LIST="White List" COM_CONFIG_FRONTEDITING_DESC="Select if you want mouse-over edit icons for modules and menu items (support may depend on your template)." COM_CONFIG_FRONTEDITING_LABEL="Mouse-over Edit Icons for" COM_CONFIG_FRONTEDITING_MENUSANDMODULES="Modules & Menus" COM_CONFIG_FRONTEDITING_MENUSANDMODULES_ADMIN_TOO="Modules & Menus (administrator too)" COM_CONFIG_FRONTEDITING_MODULES="Modules" COM_CONFIG_FIELD_FORCE_SSL_DESC="Force site access to always occur under SSL (https) for selected areas. You will not be able to access selected areas under non-ssl. Note, you must have SSL enabled on your server to utilise this option." COM_CONFIG_FIELD_FORCE_SSL_LABEL="Force SSL" COM_CONFIG_FIELD_FTP_ENABLE_DESC="Enable the built in FTP (File Transfer Protocol) functionality which is needed in some server environments to be used instead of the normal upload functionality of Joomla." COM_CONFIG_FIELD_FTP_ENABLE_LABEL="Enable FTP" COM_CONFIG_FIELD_FTP_HOST_DESC="Enter the name of the host of your FTP server." COM_CONFIG_FIELD_FTP_HOST_LABEL="FTP Host" COM_CONFIG_FIELD_FTP_PASSWORD_DESC="Enter your FTP password." COM_CONFIG_FIELD_FTP_PASSWORD_LABEL="FTP Password" COM_CONFIG_FIELD_FTP_PORT_DESC="Enter the port that FTP should be accessed by. The default is port 21." COM_CONFIG_FIELD_FTP_PORT_LABEL="FTP Port" COM_CONFIG_FIELD_FTP_ROOT_DESC="The path to the root folder of the FTP server. The root folder is the base folder to which the FTP server is allowed access." COM_CONFIG_FIELD_FTP_ROOT_LABEL="FTP Root" COM_CONFIG_FIELD_FTP_USERNAME_DESC="The username used to access the FTP server." COM_CONFIG_FIELD_FTP_USERNAME_LABEL="FTP Username" COM_CONFIG_FIELD_GZIP_COMPRESSION_DESC="Compress buffered output if supported." COM_CONFIG_FIELD_GZIP_COMPRESSION_LABEL="Gzip Page Compression" COM_CONFIG_FIELD_HELP_SERVER_DESC="Select the name of the help server from which your system will collect the help screen displays." COM_CONFIG_FIELD_HELP_SERVER_LABEL="Help Server" COM_CONFIG_FIELD_LOG_PATH_DESC="For logging of Joomla. Please specify a folder." COM_CONFIG_FIELD_LOG_PATH_LABEL="Path to Log Folder" COM_CONFIG_FIELD_MAIL_FROM_EMAIL_DESC="The email address that will be used to send site email." COM_CONFIG_FIELD_MAIL_FROM_EMAIL_LABEL="From email" COM_CONFIG_FIELD_MAIL_FROM_NAME_DESC="Text displayed in the header "From:" field when sending a site email. Usually the site name." COM_CONFIG_FIELD_MAIL_FROM_NAME_LABEL="From Name" COM_CONFIG_FIELD_MAIL_MAILONLINE_DESC="Select Yes to turn on mail sending, select No to turn off mail sending. Warning: It is advised to put the site offline when disabling the mail function!" COM_CONFIG_FIELD_MAIL_MAILONLINE_LABEL="Send Mail" COM_CONFIG_FIELD_MAIL_MASSMAILOFF_DESC="Select Yes to disable the Mass Mail Users function, select No to make it active." COM_CONFIG_FIELD_MAIL_MASSMAILOFF_LABEL="Disable Mass Mail" COM_CONFIG_FIELD_MAIL_MAILER_DESC="Select which mailer for the delivery of site email." COM_CONFIG_FIELD_MAIL_MAILER_LABEL="Mailer" COM_CONFIG_FIELD_MAIL_SENDMAIL_PATH_DESC="Enter the path to the sendmail program folder on the host server." COM_CONFIG_FIELD_MAIL_SENDMAIL_PATH_LABEL="Sendmail Path" COM_CONFIG_FIELD_MAIL_SMTP_AUTH_DESC="Select Yes if your SMTP Host requires SMTP Authentication." COM_CONFIG_FIELD_MAIL_SMTP_AUTH_LABEL="SMTP Authentication" COM_CONFIG_FIELD_MAIL_SMTP_HOST_DESC="Enter the name of the SMTP host." COM_CONFIG_FIELD_MAIL_SMTP_HOST_LABEL="SMTP Host" COM_CONFIG_FIELD_MAIL_SMTP_PASSWORD_DESC="Enter the password for the SMTP host." COM_CONFIG_FIELD_MAIL_SMTP_PASSWORD_LABEL="SMTP Password" COM_CONFIG_FIELD_MAIL_SMTP_PORT_DESC="Enter the port number of your SMTP server. Use 25 for most unsecured servers and 465 for most secure servers." COM_CONFIG_FIELD_MAIL_SMTP_PORT_LABEL="SMTP Port" COM_CONFIG_FIELD_MAIL_SMTP_SECURE_DESC="Select the security model that your SMTP server uses." COM_CONFIG_FIELD_MAIL_SMTP_SECURE_LABEL="SMTP Security" COM_CONFIG_FIELD_MAIL_SMTP_USERNAME_DESC="Enter the username for access to the SMTP host." COM_CONFIG_FIELD_MAIL_SMTP_USERNAME_LABEL="SMTP Username" COM_CONFIG_FIELD_MEMCACHE_COMPRESSION_DESC="Memcache(d) compression." COM_CONFIG_FIELD_MEMCACHE_COMPRESSION_LABEL="Memcache(d) Compression" COM_CONFIG_FIELD_MEMCACHE_HOST_DESC="Memcache(d) server host." COM_CONFIG_FIELD_MEMCACHE_HOST_LABEL="Memcache(d) Server Host" COM_CONFIG_FIELD_MEMCACHE_PERSISTENT_DESC="Persistent Memcache(d)." COM_CONFIG_FIELD_MEMCACHE_PERSISTENT_LABEL="Persistent Memcache(d)" COM_CONFIG_FIELD_MEMCACHE_PORT_DESC="Memcache(d) server port." COM_CONFIG_FIELD_MEMCACHE_PORT_LABEL="Memcache(d) Server Port" COM_CONFIG_FIELD_REDIS_AUTH_DESC="Redis server authentication." COM_CONFIG_FIELD_REDIS_AUTH_LABEL="Redis Server Authentication" COM_CONFIG_FIELD_REDIS_DB_DESC="Redis database." COM_CONFIG_FIELD_REDIS_DB_LABEL="Redis Database" COM_CONFIG_FIELD_REDIS_HOST_DESC="Redis server host." COM_CONFIG_FIELD_REDIS_HOST_LABEL="Redis Server Host" COM_CONFIG_FIELD_REDIS_PERSISTENT_DESC="Persistent Redis." COM_CONFIG_FIELD_REDIS_PERSISTENT_LABEL="Persistent Redis" COM_CONFIG_FIELD_REDIS_PORT_DESC="Redis server port." COM_CONFIG_FIELD_REDIS_PORT_LABEL="Redis Server Port" COM_CONFIG_FIELD_METAAUTHOR_DESC="Show the author meta tag when viewing articles." COM_CONFIG_FIELD_METAAUTHOR_LABEL="Show Author Meta Tag" COM_CONFIG_FIELD_METADESC_DESC="Enter a description of the overall website that may be used by search engines. Generally, a maximum of 20 words is optimal." COM_CONFIG_FIELD_METADESC_LABEL="Site Meta Description" COM_CONFIG_FIELD_METAKEYS_DESC="Enter the keywords and phrases that best describe your website. Separate keywords and phrases with a comma." COM_CONFIG_FIELD_METAKEYS_LABEL="Site Meta Keywords" COM_CONFIG_FIELD_METALANGUAGE_DESC="Places the selected language in the metadata for the site." COM_CONFIG_FIELD_METALANGUAGE_LABEL="Site Meta Language" COM_CONFIG_FIELD_METAVERSION_LABEL="Show Joomla Version" COM_CONFIG_FIELD_METAVERSION_DESC="Show the Joomla version number in the generator meta tag." COM_CONFIG_FIELD_OFFLINE_IMAGE_DESC="Select or upload an optional image to be displayed on the default offline page. Make sure the image is less than 400px wide." COM_CONFIG_FIELD_OFFLINE_IMAGE_LABEL="Offline Image" COM_CONFIG_FIELD_OFFLINE_MESSAGE_DESC="The custom offline message will be used if the 'Offline Message' field is set to 'Use Custom Message'." COM_CONFIG_FIELD_OFFLINE_MESSAGE_LABEL="Custom Message" COM_CONFIG_FIELD_PROXY_ENABLE_DESC="Enable Joomla to use a proxy which is needed in some server environments in order to fetch URLs like in the Joomla Update component." COM_CONFIG_FIELD_PROXY_ENABLE_LABEL="Enable Proxy" COM_CONFIG_FIELD_PROXY_HOST_DESC="Enter the name of the host of your Proxy server." COM_CONFIG_FIELD_PROXY_HOST_LABEL="Proxy Host" COM_CONFIG_FIELD_PROXY_PASSWORD_DESC="Enter your Proxy password." COM_CONFIG_FIELD_PROXY_PASSWORD_LABEL="Proxy Password" COM_CONFIG_FIELD_PROXY_PORT_DESC="Enter the port that Proxy should be accessed by." COM_CONFIG_FIELD_PROXY_PORT_LABEL="Proxy Port" COM_CONFIG_FIELD_PROXY_USERNAME_DESC="The username used to access the Proxy server." COM_CONFIG_FIELD_PROXY_USERNAME_LABEL="Proxy Username" COM_CONFIG_FIELD_SECRET_DESC="This is an auto-generated, unique alphanumeric code for every Joomla installation. It is used for security functions." COM_CONFIG_FIELD_SECRET_LABEL="Secret" COM_CONFIG_FIELD_SEF_REWRITE_DESC="Select to use a server's rewrite engine to catch URLs that meet specific conditions and rewrite them as directed. Available for IIS 7 and Apache. <br /><strong>Apache users only!</strong><br />Rename htaccess.txt to .htaccess before activating.<br /><strong>IIS 7 users only!</strong><br />Rename web.config.txt to web.config and install IIS URL Rewrite Module before activating.<br />" COM_CONFIG_FIELD_SEF_REWRITE_LABEL="Use URL Rewriting" COM_CONFIG_FIELD_SEF_SUFFIX_DESC="If yes, the system will add a suffix to the URL based on the document type." COM_CONFIG_FIELD_SEF_SUFFIX_LABEL="Adds Suffix to URL" COM_CONFIG_FIELD_SEF_URL_DESC="Select whether or not the URLs are optimised for Search Engines." COM_CONFIG_FIELD_SEF_URL_LABEL="Search Engine Friendly URLs" COM_CONFIG_FIELD_SERVER_TIMEZONE_DESC="Choose a city in the list to configure the date and time for display." COM_CONFIG_FIELD_SERVER_TIMEZONE_LABEL="Server Time Zone" COM_CONFIG_FIELD_SESSION_HANDLER_DESC="The mechanism by which Joomla identifies a User once they are connected to the website using non-persistent cookies." COM_CONFIG_FIELD_SESSION_HANDLER_LABEL="Session Handler" COM_CONFIG_FIELD_SESSION_TIME_DESC="Auto log out a User after they have been inactive for the entered number of minutes. Do not set too high." COM_CONFIG_FIELD_SESSION_TIME_LABEL="Session Lifetime" COM_CONFIG_FIELD_SITE_DISPLAY_MESSAGE_DESC="Display or not a Frontend message when the site is offline. The custom offline message uses the value defined in the 'Custom message' field. The language offline message uses the value defined in the site language ini file." COM_CONFIG_FIELD_SITE_DISPLAY_MESSAGE_LABEL="Offline Message" COM_CONFIG_FIELD_SITE_NAME_DESC="Enter the name of your website. This will be used in various locations (eg the Backend browser title bar and <em>Site Offline</em> pages)." COM_CONFIG_FIELD_SITE_NAME_LABEL="Site Name" COM_CONFIG_FIELD_SITE_OFFLINE_DESC="Select whether access to the Site Frontend is available. If Yes, the Frontend will display or not a message depending on the settings below." COM_CONFIG_FIELD_SITE_OFFLINE_LABEL="Site Offline" COM_CONFIG_FIELD_SITENAME_PAGETITLES_DESC="Begin or end all Page Titles with the site name (for example, My Site Name - My Article Name)." COM_CONFIG_FIELD_SITENAME_PAGETITLES_LABEL="Include Site Name in Page Titles" COM_CONFIG_FIELD_TEMP_PATH_DESC="Please select a writable Temp folder." COM_CONFIG_FIELD_TEMP_PATH_LABEL="Path to Temp Folder" COM_CONFIG_FIELD_UNICODESLUGS_DESC="Choose between transliteration and unicode aliases. Transliteration is default." COM_CONFIG_FIELD_UNICODESLUGS_LABEL="Unicode Aliases" COM_CONFIG_FIELD_VALUE_ADMINISTRATOR_ONLY="Administrator Only" COM_CONFIG_FIELD_VALUE_AFTER="After" COM_CONFIG_FIELD_VALUE_AUTHOR_EMAIL="Author Email" COM_CONFIG_FIELD_VALUE_BEFORE="Before" COM_CONFIG_FIELD_VALUE_CACHE_OFF="OFF - Caching disabled" COM_CONFIG_FIELD_VALUE_CACHE_CONSERVATIVE="ON - Conservative caching" COM_CONFIG_FIELD_VALUE_CACHE_PROGRESSIVE="ON - Progressive caching" COM_CONFIG_FIELD_VALUE_DEVELOPMENT="Development" COM_CONFIG_FIELD_VALUE_DISPLAY_OFFLINE_MESSAGE_CUSTOM="Use Custom Message" COM_CONFIG_FIELD_VALUE_DISPLAY_OFFLINE_MESSAGE_LANGUAGE="Use Site Language Default Message" COM_CONFIG_FIELD_VALUE_ENTIRE_SITE="Entire Site" COM_CONFIG_FIELD_VALUE_MAXIMUM="Maximum" COM_CONFIG_FIELD_VALUE_NO_EMAIL="No Email" COM_CONFIG_FIELD_VALUE_NONE="None" COM_CONFIG_FIELD_VALUE_PHP_MAIL="PHP Mail" COM_CONFIG_FIELD_VALUE_SENDMAIL="Sendmail" COM_CONFIG_FIELD_VALUE_SIMPLE="Simple" COM_CONFIG_FIELD_VALUE_SITE_EMAIL="Site Email" COM_CONFIG_FIELD_VALUE_SMTP="SMTP" COM_CONFIG_FIELD_VALUE_SSL="SSL" COM_CONFIG_FIELD_VALUE_SYSTEM_DEFAULT="System Default" COM_CONFIG_FIELD_VALUE_TLS="TLS" COM_CONFIG_FTP_DETAILS="FTP Login Details" COM_CONFIG_FTP_DETAILS_TIP="For updating your configuration.php file, Joomla will most likely need your FTP account details. Please enter them in the form fields below." COM_CONFIG_FTP_SETTINGS="FTP Settings" COM_CONFIG_GLOBAL_CONFIGURATION="Global Configuration" COM_CONFIG_HELPREFRESH_SUCCESS="The Help Sites list has been refreshed." COM_CONFIG_LOCATION_SETTINGS="Location Settings" COM_CONFIG_MAIL_SETTINGS="Mail Settings" COM_CONFIG_METADATA_SETTINGS="Metadata Settings" COM_CONFIG_PERMISSION_SETTINGS="Permission Settings" COM_CONFIG_PERMISSIONS="Permissions" COM_CONFIG_PROXY_SETTINGS="Proxy Settings" COM_CONFIG_SAVE_SUCCESS="Configuration successfully saved." COM_CONFIG_SEO_SETTINGS="SEO Settings" COM_CONFIG_SERVER="Server" COM_CONFIG_SERVER_SETTINGS="Server Settings" COM_CONFIG_SESSION_SETTINGS="Session Settings" COM_CONFIG_SITE_SETTINGS="Site Settings" COM_CONFIG_SYSTEM="System" COM_CONFIG_SYSTEM_SETTINGS="System Settings" COM_CONFIG_TEXT_FILTER_SETTINGS="Text Filter Settings" COM_CONFIG_TEXT_FILTERS="Text Filters" COM_CONFIG_TEXT_FILTERS_DESC="These text filter settings will be applied to all text editor fields submitted by users in the selected groups.<br />These filtering options give more control over the HTML your content providers submit. You can be as strict or as liberal as you require to suit your site needs. The filtering is opt-in and the default settings provide good protection against markup commonly associated with website attacks." COM_CONFIG_XML_DESCRIPTION="Configuration Manager" JLIB_RULES_SETTING_NOTES="1. If you change the setting, it will apply to this and all child groups, components and content. Note that:<br /><em>Inherited</em> means that the permissions from the parent group will be used.<br /><em>Denied</em> means that no matter what the parent group's setting is, the group being edited can't take this action.<br /><em>Allowed</em> means that the group being edited will be able to take this action (but if this is in conflict with the parent group it will have no impact; a conflict will be indicated by <em>Not Allowed (Locked)</em> under Calculated Settings).<br /><em>Not Set</em> is used only for the Public group in global configuration. The Public group is the parent of all other groups. If a permission is not set, it is treated as deny but can be changed for child groups, components, categories and items.<br />2. If you select a new setting, select <em>Save</em> to refresh the calculated settings." PKb��\(�u dd'language/en-GB/en-GB.tpl_hathor.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 HATHOR="Hathor Administrator template" TPL_HATHOR_POSITION_CP_SHELL="Unused" TPL_HATHOR_POSITION_CPANEL="Control Panel" TPL_HATHOR_POSITION_DEBUG="Debug" TPL_HATHOR_POSITION_FOOTER="Footer" TPL_HATHOR_POSITION_ICON="Quick Icons" TPL_HATHOR_POSITION_LOGIN="Login" TPL_HATHOR_POSITION_MENU="Menu" TPL_HATHOR_POSITION_POSTINSTALL="Postinstall" TPL_HATHOR_POSITION_STATUS="Status" TPL_HATHOR_POSITION_SUBMENU="Submenu" TPL_HATHOR_POSITION_TITLE="Title" TPL_HATHOR_POSITION_TOOLBAR="Toolbar" TPL_HATHOR_XML_DESCRIPTION="Hathor is an accessible Administrator template for Joomla! The Colour CSS files can also be used for custom colour branding."PKb��\;��II/language/en-GB/en-GB.com_contenthistory.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CONTENTHISTORY="Content History" COM_CONTENTHISTORY_XML_DESCRIPTION="Content History Component." PKb��\t�ErMM+language/en-GB/en-GB.plg_system_log.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_LOG_XML_DESCRIPTION="Provides logging when the user login fails." PLG_SYSTEM_LOG="System - User Log" PKb��\Tl�.��+language/en-GB/en-GB.plg_search_content.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SEARCH_CONTENT="Search - Content" PLG_SEARCH_CONTENT_FIELD_ARCHIVED_DESC="Enables searching of Archived Articles?" PLG_SEARCH_CONTENT_FIELD_ARCHIVED_LABEL="Archived Articles" PLG_SEARCH_CONTENT_FIELD_CONTENT_DESC="Enables searching of all Articles." PLG_SEARCH_CONTENT_FIELD_CONTENT_LABEL="Articles" PLG_SEARCH_CONTENT_FIELD_SEARCHLIMIT_DESC="Number of search items to return." PLG_SEARCH_CONTENT_FIELD_SEARCHLIMIT_LABEL="Search Limit" PLG_SEARCH_CONTENT_XML_DESCRIPTION="Enables searching in Articles."PKb��\��D���6language/en-GB/en-GB.plg_editors-xtd_pagebreak.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_EDITORS-XTD_PAGEBREAK="Button - Page Break" PLG_EDITORSXTD_PAGEBREAK_XML_DESCRIPTION="Provides a button to enable a page break to be inserted into an Article. A popup allows you to configure the settings to be used." PKb��\_�����$language/en-GB/en-GB.com_wrapper.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_WRAPPER="Wrapper" COM_WRAPPER_FIELD_ADD_DESC="By default, http:// will be added unless it detects http:// or https:// in the URL you provide. This allows you to switch off this functionality." COM_WRAPPER_FIELD_ADD_LABEL="Auto Add" COM_WRAPPER_FIELD_FRAME_DESC="Show frame border which wrap the iframe." COM_WRAPPER_FIELD_FRAME_LABEL="Frame border" COM_WRAPPER_FIELD_HEIGHT_DESC="Height of the iframe window in pixels." COM_WRAPPER_FIELD_HEIGHT_LABEL="Height" COM_WRAPPER_FIELD_HEIGHTAUTO_DESC="If height is set to auto, the height will automatically be set to the size of the external page. This will only work for pages on your own domain. If you see a JavaScript error, make sure this parameter is disabled. This will break XHTML compatibility for this page." COM_WRAPPER_FIELD_HEIGHTAUTO_LABEL="Auto Height" COM_WRAPPER_FIELD_LABEL_SCROLLBARSPARAMS="Scroll bars parameters" COM_WRAPPER_FIELD_SCROLLBARS_DESC="Show or hide the horizontal & vertical scrollbars. If you choose 'Auto', make sure the Auto advanced parameter is set." COM_WRAPPER_FIELD_SCROLLBARS_LABEL="Scroll Bars" COM_WRAPPER_FIELD_URL_DESC="URL to site/file you wish to display within the iframe." COM_WRAPPER_FIELD_URL_LABEL="URL" COM_WRAPPER_FIELD_VALUE_AUTO="Auto" COM_WRAPPER_FIELD_WIDTH_DESC="Width of the iframe window. You may enter an absolute figure in pixels or a relative figure by adding a %." COM_WRAPPER_XML_DESCRIPTION="Displays an iframe to wrap an external page or site into Joomla!" PKb��\�g� ��(language/en-GB/en-GB.plg_search_tags.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SEARCH_TAGS="Search - Tags" PLG_SEARCH_TAGS_FIELD_SEARCHLIMIT_DESC="Number of search items to return." PLG_SEARCH_TAGS_FIELD_SEARCHLIMIT_LABEL="Search Limit" PLG_SEARCH_TAGS_FIELD_SHOW_TAGGED_ITEMS_DESC="Display or not the items that hold the tags related to the search." PLG_SEARCH_TAGS_FIELD_SHOW_TAGGED_ITEMS_LABEL="Show Tagged Items" PLG_SEARCH_TAGS_ITEM_TAGGED_WITH="%s tagged with: %s" PLG_SEARCH_TAGS_TAGS="Tags" PLG_SEARCH_TAGS_XML_DESCRIPTION="Enables searching in Tags." PKb��\y�RW��2language/en-GB/en-GB.plg_editors-xtd_image.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_EDITORS-XTD_IMAGE="Button - Image" PLG_IMAGE_XML_DESCRIPTION="Displays a button to make it possible to insert images into an Article. Displays a popup allowing you to configure an image's properties and upload new image files." PKb��\��ؓ�,language/en-GB/en-GB.plg_finder_contacts.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_FINDER_CONTACTS="Smart Search - Contacts" PLG_FINDER_CONTACTS_XML_DESCRIPTION="This plugin indexes Joomla! Contacts." PLG_FINDER_QUERY_FILTER_BRANCH_P_CONTACT="Contacts" PLG_FINDER_QUERY_FILTER_BRANCH_P_COUNTRY="Countries" PLG_FINDER_QUERY_FILTER_BRANCH_P_REGION="Regions" PLG_FINDER_QUERY_FILTER_BRANCH_S_CONTACT="Contact" PLG_FINDER_QUERY_FILTER_BRANCH_S_COUNTRY="Country" PLG_FINDER_QUERY_FILTER_BRANCH_S_REGION="Region" PKb��\F��rr0language/en-GB/en-GB.mod_multilangstatus.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_MULTILANGSTATUS="Multilingual Status" MOD_MULTILANGSTATUS_XML_DESCRIPTION="This module shows the status of the multilingual parameters." PKb��\_�w*CC%language/en-GB/en-GB.com_ajax.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_AJAX="Ajax Interface" COM_AJAX_XML_DESCRIPTION="An extendable Ajax interface for Joomla." PKb��\�z��T2T2"language/en-GB/en-GB.com_menus.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_MENUS="Menus" COM_MENUS_ADD_MENU_MODULE="Add a module for this menu type." COM_MENUS_ADVANCED_FIELDSET_LABEL="Advanced" COM_MENUS_BASIC_FIELDSET_LABEL="Options" COM_MENUS_BATCH_MENU_ITEM_CANNOT_CREATE="You are not allowed to create new menu items." COM_MENUS_BATCH_MENU_ITEM_CANNOT_EDIT="You are not allowed to edit menu items." COM_MENUS_BATCH_MENU_LABEL="To Move or Copy your selection please select a Menu or parent item." COM_MENUS_BATCH_OPTIONS="Batch process the selected menu items" COM_MENUS_BATCH_TIP="If a menu or parent is selected for move/copy, any actions selected will be applied to the copied or moved menu items. Otherwise, all actions are applied to the selected menu items." COM_MENUS_CONFIGURATION="Menus: Options" COM_MENUS_EDIT_MODULE_SETTINGS="Edit module settings" COM_MENUS_ERROR_ALL_LANGUAGE_ASSOCIATED="A menu item set to All languages can't be associated. Associations have not been set." COM_MENUS_ERROR_ALREADY_HOME="Menu item already set to home." COM_MENUS_ERROR_MENUTYPE="Please change the Menu type. The terms 'menu' and 'main' are reserved for Backend usage." COM_MENUS_ERROR_ONE_HOME="Only one menu item can be a home link for each language." COM_MENUS_EXTENSION_PUBLISHED_DISABLED="Component disabled and menu item published." COM_MENUS_EXTENSION_PUBLISHED_ENABLED="Component enabled and menu item published." COM_MENUS_EXTENSION_UNPUBLISHED_DISABLED="Component disabled and menu item unpublished." COM_MENUS_EXTENSION_UNPUBLISHED_ENABLED="Component enabled and menu item unpublished." COM_MENUS_FIELD_FEEDLINK_DESC="Display a feed link for this menu item." COM_MENUS_FIELD_FEEDLINK_LABEL="Feed link" COM_MENUS_FIELD_VALUE_IGNORE="Ignore" COM_MENUS_FIELD_VALUE_NEW_WITH_NAV="New Window With Navigation" COM_MENUS_FIELD_VALUE_NEW_WITHOUT_NAV="New Without Navigation" COM_MENUS_FIELD_VALUE_PARENT="Parent" COM_MENUS_GRID_UNSET_LANGUAGE="Unset %s Default" COM_MENUS_HEADING_ASSIGN_MODULE="Module" COM_MENUS_HEADING_ASSOCIATION="Association" COM_MENUS_HEADING_DISPLAY="Display" COM_MENUS_HEADING_HOME="Home" COM_MENUS_HEADING_HOME_ASC="Home ascending" COM_MENUS_HEADING_HOME_DESC="Home descending" COM_MENUS_HEADING_LEVELS="View level" COM_MENUS_HEADING_LINKED_MODULES="Linked Modules" COM_MENUS_HEADING_NUMBER_MENU_ITEMS="Number of Menu Items" COM_MENUS_HEADING_POSITION="Position" COM_MENUS_HEADING_PUBLISHED_ITEMS="Published" COM_MENUS_HEADING_TRASHED_ITEMS="Trashed" COM_MENUS_HEADING_UNPUBLISHED_ITEMS="Unpublished" COM_MENUS_HTML_PUBLISH="Publish menu item" COM_MENUS_HTML_PUBLISH_ALIAS="Publish the menu item alias" COM_MENUS_HTML_PUBLISH_DISABLED="Publish menu item::Component disabled" COM_MENUS_HTML_PUBLISH_ENABLED="Publish menu item::Component enabled" COM_MENUS_HTML_PUBLISH_HEADING="Publish the heading menu item" COM_MENUS_HTML_PUBLISH_SEPARATOR="Publish the separator menu item" COM_MENUS_HTML_PUBLISH_URL="Publish the external URL menu item" COM_MENUS_HTML_UNPUBLISH_ALIAS="Unpublish the menu item alias" COM_MENUS_HTML_UNPUBLISH_DISABLED="Unpublish menu item::Component disabled" COM_MENUS_HTML_UNPUBLISH_ENABLED="Unpublish menu item::Component enabled" COM_MENUS_HTML_UNPUBLISH_HEADING="Unpublish the heading menu item" COM_MENUS_HTML_UNPUBLISH_SEPARATOR="Unpublish the separator menu item" COM_MENUS_HTML_UNPUBLISH_URL="Unpublish the external URL menu item" COM_MENUS_INTEGRATION_FIELDSET_LABEL="Integration" COM_MENUS_ITEM_ASSOCIATIONS_FIELDSET_LABEL="Menu Item Associations" COM_MENUS_ITEM_ASSOCIATIONS_FIELDSET_DESC="Multilingual only! This choice will only display if the Language Filter parameter 'Item Associations' is set to 'Yes'. Choose a menu item for the target language. This association will let the Language Switcher module redirect to the associated menu item in another language. If used, make sure to display the Language switcher module on the concerned pages. A menu item set to language 'All' can't be associated." COM_MENUS_ITEM_DETAILS="Details" COM_MENUS_ITEM_FIELD_ALIAS_DESC="The alias is used in the URL when SEF is on." COM_MENUS_ITEM_FIELD_ALIAS_MENU_DESC="Menu Item to link to." COM_MENUS_ITEM_FIELD_ALIAS_MENU_LABEL="Menu Item" COM_MENUS_ITEM_FIELD_ANCHOR_CSS_DESC="An optional, custom style to apply to the menu hyperlink." COM_MENUS_ITEM_FIELD_ANCHOR_CSS_LABEL="Link CSS Style" COM_MENUS_ITEM_FIELD_ANCHOR_TITLE_DESC="An optional, custom description for the title attribute of the menu hyperlink." COM_MENUS_ITEM_FIELD_ANCHOR_TITLE_LABEL="Link Title Attribute" COM_MENUS_ITEM_FIELD_ASSIGNED_DESC="Shows which menu the link will appear in." COM_MENUS_ITEM_FIELD_ASSIGNED_LABEL=" Menu Location" COM_MENUS_ITEM_FIELD_ASSOCIATION_NO_VALUE="- No association -" COM_MENUS_ITEM_FIELD_BROWSERNAV_DESC="Target browser window when the menu item is selected." COM_MENUS_ITEM_FIELD_BROWSERNAV_LABEL="Target Window" COM_MENUS_ITEM_FIELD_HIDE_UNASSIGNED="Hide Unassigned Modules" COM_MENUS_ITEM_FIELD_HIDE_UNASSIGNED_DESC="Shows or hide modules unassigned to this menu item." COM_MENUS_ITEM_FIELD_HIDE_UNASSIGNED_LABEL="Unassigned Modules" COM_MENUS_ITEM_FIELD_HOME_DESC="Sets this menu item as the default or home page of the site. You must have a default page set at all times." COM_MENUS_ITEM_FIELD_HOME_LABEL="Default Page" COM_MENUS_ITEM_FIELD_LANGUAGE_DESC="Assign a language to this menu item." COM_MENUS_ITEM_FIELD_LINK_DESC="Link for this menu." COM_MENUS_ITEM_FIELD_LINK_LABEL="Link" COM_MENUS_ITEM_FIELD_MENU_IMAGE_DESC="Select or upload an optional image to be used with the menu hyperlink." COM_MENUS_ITEM_FIELD_MENU_IMAGE_LABEL="Link Image" COM_MENUS_ITEM_FIELD_MENU_TEXT_DESC="If the optional image is added, adds the menu title next to the image. Default is 'Yes'." COM_MENUS_ITEM_FIELD_MENU_TEXT_LABEL="Add Menu Title" COM_MENUS_ITEM_FIELD_NOTE_DESC="An optional note to display in the Menu Manager." COM_MENUS_ITEM_FIELD_ORDERING_DESC="The menu item will be placed in the menu after the selected menu item." COM_MENUS_ITEM_FIELD_ORDERING_LABEL="Ordering" COM_MENUS_ITEM_FIELD_ORDERING_TEXT="Ordering will be available after saving." COM_MENUS_ITEM_FIELD_ORDERING_VALUE_FIRST="- First -" COM_MENUS_ITEM_FIELD_ORDERING_VALUE_LAST="- Last -" COM_MENUS_ITEM_FIELD_PAGE_CLASS_DESC="Optional CSS class to add to elements in this page. This allows CSS styling specific to this page." COM_MENUS_ITEM_FIELD_PAGE_CLASS_LABEL="Page Class" COM_MENUS_ITEM_FIELD_PAGE_HEADING_DESC="Optional alternative text for the Page heading." COM_MENUS_ITEM_FIELD_PAGE_HEADING_LABEL="Page Heading" COM_MENUS_ITEM_FIELD_PAGE_TITLE_DESC="Optional text for the "Browser page title" element. If blank, a default value is used based on the Menu Item Title." COM_MENUS_ITEM_FIELD_PAGE_TITLE_LABEL="Browser Page Title" COM_MENUS_ITEM_FIELD_PARENT_DESC="Select a parent item." COM_MENUS_ITEM_FIELD_PARENT_LABEL="Parent Item" COM_MENUS_ITEM_FIELD_SECURE_DESC="Selects whether or not this link should use SSL and the Secure Site URL." COM_MENUS_ITEM_FIELD_SECURE_LABEL="Secure" COM_MENUS_ITEM_FIELD_SHOW_PAGE_HEADING_DESC="Show or hide the Browser Page Title in the heading of the page ( If no optional text entered - will default to value based on the Menu Item Title ). The Page heading is usually displayed inside the "H1" tag." COM_MENUS_ITEM_FIELD_SHOW_PAGE_HEADING_LABEL="Show Page Heading" COM_MENUS_ITEM_FIELD_TEMPLATE_DESC="Select a specific template style for this menu item or use the default template." COM_MENUS_ITEM_FIELD_TEMPLATE_LABEL="Template Style" COM_MENUS_ITEM_FIELD_TITLE_DESC="The title of the menu item that will display in the menu." COM_MENUS_ITEM_FIELD_TITLE_LABEL="Menu Title" COM_MENUS_ITEM_FIELD_TYPE_DESC="The type of link: Component, URL, Alias, Separator or Heading." COM_MENUS_ITEM_FIELD_TYPE_LABEL="Menu Item Type" COM_MENUS_ITEM_IS_DEFAULT="Is default" COM_MENUS_ITEM_MODULE_ASSIGNMENT="Module Assignment" COM_MENUS_ITEM_REQUIRED="Required" COM_MENUS_ITEM_ROOT="Menu Item Root" COM_MENUS_ITEMS_REBUILD_FAILED="Failed rebuilding Menu Items list." COM_MENUS_ITEMS_REBUILD_SUCCESS="Menu items list successfully rebuilt." COM_MENUS_ITEMS_SEARCH_FILTER="Search title or alias. Prefix with ID: to search for a menu ID." COM_MENUS_ITEMS_SET_HOME_0="No menu item set to home." COM_MENUS_ITEMS_SET_HOME_1="1 menu item successfully set to home." COM_MENUS_ITEMS_SET_HOME_MORE="%d menu items successfully set to home." COM_MENUS_ITEMS_UNSET_HOME="1 menu item successfully unset to home." COM_MENUS_LAYOUT_FEATURED_OPTIONS="Layout" COM_MENUS_LAYOUT_MENUTYPE_OPTIONS_LABEL="Menu Type" COM_MENUS_LINKTYPE_OPTIONS_LABEL="Link Type" COM_MENUS_MENU_CONFIRM_DELETE="Are you sure you want to delete these menus? Confirming will delete the selected menu types, all their menu items and the associated menu modules." COM_MENUS_MENU_DESCRIPTION_DESC="A description about the purpose of the menu." COM_MENUS_MENU_DETAILS="Menu Details" COM_MENUS_MENU_ITEM_SAVE_SUCCESS="Menu item successfully saved." COM_MENUS_MENU_MENUTYPE_DESC="The system name of the menu." COM_MENUS_MENU_MENUTYPE_LABEL="Menu Type" COM_MENUS_MENU_SAVE_SUCCESS="Menu successfully saved" COM_MENUS_MENU_SEARCH_FILTER="Search in Title or Menu type" COM_MENUS_TYPE_SYSTEM="System Links" COM_MENUS_MENU_TITLE_DESC="The title of the menu to display in the Administrator Menubar and lists." COM_MENUS_MENU_TYPE_NOT_ALLOWED="This is a reserved menutype." COM_MENUS_PAGE_OPTIONS_LABEL="Page Display" ; in the following string ; %1$s is for module title, %2$s is for access-title, %3$s is for position COM_MENUS_MODULE_ACCESS_POSITION="%1$s <small>(%2$s in %3$s)</small>" COM_MENUS_MODULE_SHOW_VARIES="Varies" COM_MENUS_MODULES="Modules" COM_MENUS_N_ITEMS_CHECKED_IN_0="No menu item successfully checked in." COM_MENUS_N_ITEMS_CHECKED_IN_1="%d menu item successfully checked in." COM_MENUS_N_ITEMS_CHECKED_IN_MORE="%d menu items successfully checked in." COM_MENUS_N_ITEMS_DELETED="%d menu items successfully deleted." COM_MENUS_N_ITEMS_DELETED_1="%d menu item successfully deleted." COM_MENUS_N_ITEMS_PUBLISHED="%d menu items successfully published." COM_MENUS_N_ITEMS_PUBLISHED_1="%d menu item successfully published." COM_MENUS_N_ITEMS_TRASHED="%d menu items successfully trashed." COM_MENUS_N_ITEMS_TRASHED_1="%d menu item successfully trashed." COM_MENUS_N_ITEMS_UNPUBLISHED="%d menu items successfully unpublished." COM_MENUS_N_ITEMS_UNPUBLISHED_1="%d menu item successfully unpublished." COM_MENUS_N_MENUS_DELETED="%d menu types successfully deleted." COM_MENUS_N_MENUS_DELETED_1="Menu type successfully deleted." COM_MENUS_NO_ITEM_SELECTED="No menu items selected." COM_MENUS_NO_MENUS_SELECTED="No menu selected." COM_MENUS_OPTION_SELECT_LEVEL="- Select Max Levels -" COM_MENUS_REQUEST_FIELDSET_LABEL="Required Settings" COM_MENUS_SAVE_SUCCESS="Menu item successfully saved." COM_MENUS_SUBMENU_ITEMS="Menu Items" COM_MENUS_SUBMENU_MENUS="Menus" COM_MENUS_SUCCESS_REORDERED="Menu item successfully reordered." COM_MENUS_TIP_ALIAS_LABEL="<strong>Warning!</strong><br />Leave the alias field empty if the menu item alias and the menu item linked to by the alias have the same parent." COM_MENUS_TIP_ASSOCIATION="Associated menu items" COM_MENUS_TIP_ASSOCIATED_LANGUAGE="%s %s (%s)" COM_MENUS_TITLE_EDIT_ITEM="Menu Manager: Title Edit Item" COM_MENUS_TOOLBAR_SET_HOME="Home" COM_MENUS_TYPE_ALIAS="Menu Item Alias" COM_MENUS_TYPE_ALIAS_DESC="Create an alias to another menu item." COM_MENUS_TYPE_CHOOSE="Select a Menu Item Type:" COM_MENUS_TYPE_EXTERNAL_URL="External URL" COM_MENUS_TYPE_EXTERNAL_URL_DESC="An external or internal URL." COM_MENUS_TYPE_HEADING="Menu Heading" COM_MENUS_TYPE_HEADING_DESC="A heading for use within menus, useful when separating menus with a separator." COM_MENUS_TYPE_SEPARATOR="Text Separator" COM_MENUS_TYPE_SEPARATOR_DESC="A text separator." COM_MENUS_TYPE_UNEXISTING="Component '%s' does not exist." COM_MENUS_TYPE_UNKNOWN="Unknown" COM_MENUS_VIEW_EDIT_ITEM_TITLE="Menus: Edit Item" COM_MENUS_VIEW_EDIT_MENU_TITLE="Menus: Edit" COM_MENUS_VIEW_ITEMS_TITLE="Menus: Items" COM_MENUS_VIEW_MENUS_TITLE="Menus" COM_MENUS_VIEW_NEW_ITEM_TITLE="Menus: New Item" COM_MENUS_VIEW_NEW_MENU_TITLE="Menus: Add" COM_MENUS_XML_DESCRIPTION="Component for creating menus." JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings." PKb��\M0կ��&language/en-GB/en-GB.mod_login.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_LOGIN_XML_DESCRIPTION="This module displays a username and password login form. It can't be unpublished." MOD_LOGIN="Login Form" MOD_LOGIN_LAYOUT_DEFAULT="Default" PKb��\�?v")language/en-GB/en-GB.plg_content_vote.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTENT_VOTE="Content - Vote" PLG_VOTE_LABEL="Please Rate" PLG_VOTE_RATE="Rate" PLG_VOTE_STAR_ACTIVE="Star Active" PLG_VOTE_STAR_INACTIVE="Star Inactive" PLG_VOTE_USER_RATING="User Rating: %1$s / %2$s" PLG_VOTE_VOTE="Vote %s" PLG_VOTE_XML_DESCRIPTION="Add Voting functionality to Articles." PKb��\�-��%language/en-GB/en-GB.com_tags.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_TAGS="Tags" COM_TAGS_CONTENT_TYPE_ARTICLE="Article" COM_TAGS_CONTENT_TYPE_ARTICLE_CATEGORY="Article Category" COM_TAGS_CONTENT_TYPE_BANNER="Banner" COM_TAGS_CONTENT_TYPE_BANNER_CLIENT="Banner Client" COM_TAGS_CONTENT_TYPE_BANNERS_CATEGORY="Banner Category" COM_TAGS_CONTENT_TYPE_CONTACT="Contact" COM_TAGS_CONTENT_TYPE_CONTACT_CATEGORY="Contact Category" COM_TAGS_CONTENT_TYPE_NEWSFEED="News Feed" COM_TAGS_CONTENT_TYPE_NEWSFEEDS_CATEGORY="News Feed Category" COM_TAGS_CONTENT_TYPE_TAG="Tag" COM_TAGS_CONTENT_TYPE_USER="User" COM_TAGS_CONTENT_TYPE_USER_NOTES="User Notes" COM_TAGS_CONTENT_TYPE_USER_NOTES_CATEGORY="User Notes Category" COM_TAGS_CONTENT_TYPE_WEBLINK="Web Link" COM_TAGS_CONTENT_TYPE_WEBLINKS_CATEGORY="Web Links Category" COM_TAGS_TAG="Tag" COM_TAGS_TAG_VIEW_DEFAULT_DESC="This links to a list of items with specific tags." COM_TAGS_TAG_VIEW_DEFAULT_OPTION="Default" COM_TAGS_TAG_VIEW_DEFAULT_TITLE="Tagged Items" COM_TAGS_TAG_VIEW_LIST_COMPACT_OPTION="Compact layout" COM_TAGS_TAG_VIEW_LIST_COMPACT_TITLE="Compact list of tagged items" COM_TAGS_TAG_VIEW_LIST_DESC="List of items that have been tagged with the selected tags." COM_TAGS_TAG_VIEW_LIST_OPTION="List view options" COM_TAGS_TAG_VIEW_LIST_TITLE="Tagged items list" COM_TAGS_TAGS="Tags" COM_TAGS_TAGS_VIEW_COMPACT_DESC="Compact list of tags." COM_TAGS_TAGS_VIEW_COMPACT_TITLE="Compact Tags View" COM_TAGS_TAGS_VIEW_DEFAULT_DESC="This links to a detailed list of all tags." COM_TAGS_TAGS_VIEW_DEFAULT_TITLE="List of all tags" COM_TAGS_XML_DESCRIPTION="A component for tagging content items." PKb��\�$ HH)language/en-GB/en-GB.plg_system_cache.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CACHE_FIELD_BROWSERCACHE_DESC="If yes, use mechanism for storing page cache in the browser." PLG_CACHE_FIELD_BROWSERCACHE_LABEL="Use Browser Caching" PLG_CACHE_FIELD_LIFETIME_DESC="Page cache lifetime in minutes." PLG_CACHE_FIELD_LIFETIME_LABEL="Cache Lifetime" PLG_CACHE_XML_DESCRIPTION="Provides page caching." PLG_SYSTEM_CACHE="System - Page Cache" PKb��\���3rr%language/en-GB/en-GB.mod_feed.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_FEED="Feed Display" MOD_FEED_XML_DESCRIPTION="This module allows the displaying of a syndicated feed." MOD_FEED_LAYOUT_DEFAULT="Default" PKb��\e"$2language/en-GB/en-GB.plg_finder_categories.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_FINDER_CATEGORIES="Smart Search - Categories" PLG_FINDER_CATEGORIES_ERROR_ACTIVATING_PLUGIN="Could not automatically activate the "Smart Search - Categories" plugin." PLG_FINDER_CATEGORIES_XML_DESCRIPTION="This plugin indexes Joomla! Categories." PLG_FINDER_STATISTICS_CATEGORY="Category" PKb��\��q��0language/en-GB/en-GB.plg_system_redirect.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SYSTEM_REDIRECT="System - Redirect" PLG_SYSTEM_REDIRECT_XML_DESCRIPTION="The system redirect plugin enables the Joomla Redirect system to catch missing pages and redirect users." PKb��\\�wp�R�R$language/en-GB/en-GB.com_contact.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CONTACT="Contacts" COM_CONTACT_BASIC_OPTIONS_FIELDSET_LABEL="Contact Display Options" ; COM_CONTACT_BATCH_MENU_LABEL is deprecated, use JLIB_HTML_BATCH_MENU_LABEL instead. COM_CONTACT_BATCH_MENU_LABEL="To Move or Copy your selection please select a Category." COM_CONTACT_BATCH_OPTIONS="Batch process the selected contacts" COM_CONTACT_BATCH_TIP="If a category is selected for move/copy, any actions selected will be applied to the copied or moved contacts. Otherwise, all actions are applied to the selected contacts." COM_CONTACT_CATEGORIES_VIEW_DEFAULT_DESC="Shows a list of contact categories within a category." COM_CONTACT_CATEGORY_VIEW_DEFAULT_DESC="This view lists the contacts in a category." COM_CONTACT_CHANGE_CONTACT="Change Contact" COM_CONTACT_CHANGE_CONTACT_BUTTON="Change Contact" COM_CONTACT_CONFIG_INTEGRATION_SETTINGS_DESC="These settings determine how the Contact Component will integrate with other extensions." COM_CONTACT_CONFIGURATION="Contacts: Options" COM_CONTACT_CONTACT_DETAILS="Details" COM_CONTACT_CONTACT_DISPLAY_DETAILS="Display options for the individual contact page." COM_CONTACT_CONTACT_SETTINGS_LABEL="Contact Options" COM_CONTACT_CONTACT_VIEW_DEFAULT_DESC="This links to the contact information for one contact." COM_CONTACT_DETAILS="Contact Information" COM_CONTACT_EDIT_CONTACT="Contact" COM_CONTACT_EDIT_DETAILS="Edit contact information displayed on an individual page." COM_CONTACT_ERROR_UNIQUE_ALIAS="Another Contact from this category has the same alias (remember it may be a trashed item)." COM_CONTACT_ERROR_ALL_LANGUAGE_ASSOCIATED="A contact item set to All languages can't be associated. Associations have not been set." COM_CONTACT_FIELD_ARTICLES_DISPLAY_NUM_DESC="Number of articles to list." COM_CONTACT_FIELD_ARTICLES_DISPLAY_NUM_LABEL="# Articles to List" COM_CONTACT_FIELD_ARTICLES_SHOW_DESC="If this contact is mapped to a user, and if this is set to Show, then a list of articles created by this user will show." COM_CONTACT_FIELD_ARTICLES_SHOW_LABEL="Show User Articles" COM_CONTACT_FIELD_BREADCRUMBS_DESC="Show or hide category breadcrumbs." COM_CONTACT_FIELD_BREADCRUMBS_LABEL="Show Category Breadcrumbs" COM_CONTACT_FIELD_CAPTCHA_DESC="Select the captcha plugin that will be used in the contact form. You may need to enter required information for your captcha plugin in the Plugin Manager.<br />If 'Use Default' is selected, make sure a captcha plugin is selected in Global Configuration." COM_CONTACT_FIELD_CAPTCHA_LABEL="Allow Captcha on Contact" COM_CONTACT_FIELD_CATEGORIES_DESC="Displays a list of contact categories within a category." COM_CONTACT_FIELD_CATEGORIES_LABEL="Choose a Parent Category" COM_CONTACT_FIELD_CATEGORY_DESC="Select a contact category to display." COM_CONTACT_FIELD_CATEGORY_LABEL="Select a Category" COM_CONTACT_FIELD_CONFIG_ALLOW_VCARD_DESC="Allow vCard to be displayed." COM_CONTACT_FIELD_CONFIG_ALLOW_VCARD_LABEL="Allow vCard" COM_CONTACT_FIELD_CONFIG_BANNED_EMAIL_DESC="Email addresses not allowed to submit contact form." COM_CONTACT_FIELD_CONFIG_BANNED_EMAIL_LABEL="Banned Email" COM_CONTACT_FIELD_CONFIG_BANNED_SUBJECT_DESC="Subjects not allowed in contact form." COM_CONTACT_FIELD_CONFIG_BANNED_SUBJECT_LABEL="Banned Subject" COM_CONTACT_FIELD_CONFIG_BANNED_TEXT_DESC="Text not allowed in contact form body." COM_CONTACT_FIELD_CONFIG_BANNED_TEXT_LABEL="Banned Text" COM_CONTACT_FIELD_CONFIG_CATEGORIES_DESC="These settings apply for Contact Categories Options unless they are changed for a specific menu item." COM_CONTACT_FIELD_CONFIG_CATEGORY_DESC="These settings apply for Contact Category Options unless they are changed for a specific menu item." COM_CONTACT_FIELD_CONFIG_CONTACT_FORM="Form" COM_CONTACT_FIELD_CONFIG_COUNTRY_DESC="Show or hide a Country column in the list of Contacts." COM_CONTACT_FIELD_CONFIG_COUNTRY_LABEL="Country" COM_CONTACT_FIELD_CONFIG_CUSTOM_REPLY_DESC="Turns off the automated reply, allowing for Plugins to handle integration with other systems." COM_CONTACT_FIELD_CONFIG_CUSTOM_REPLY_LABEL="Custom Reply" COM_CONTACT_FIELD_CONFIG_EMAIL_DESC="Show or hide an Email column in the list of Contacts." COM_CONTACT_FIELD_CONFIG_FAX_DESC="Show or hide a Fax column in the list of Contacts." COM_CONTACT_FIELD_CONFIG_FAX_LABEL="Fax" COM_CONTACT_FIELD_CONFIG_INDIVIDUAL_CONTACT_DESC="These settings apply for single Contact unless they are changed for a specific menu item or Contact." COM_CONTACT_FIELD_CONFIG_INDIVIDUAL_CONTACT_DISPLAY="Contact" COM_CONTACT_FIELD_CONFIG_MOBILE_DESC="Show or hide show a Mobile column in the list of Contacts." COM_CONTACT_FIELD_CONFIG_MOBILE_LABEL="Mobile" COM_CONTACT_FIELD_CONFIG_PHONE_DESC="Show or hide a Phone column in the list of Contacts." COM_CONTACT_FIELD_CONFIG_PHONE_LABEL="Phone" COM_CONTACT_FIELD_CONFIG_POSITION_DESC="Show or hide a Position column in the list of Contacts." COM_CONTACT_FIELD_CONFIG_POSITION_LABEL="Position" COM_CONTACT_FIELD_CONFIG_REDIRECT_DESC="Enter an alternative URL where the user will be redirected to after mail is sent." COM_CONTACT_FIELD_CONFIG_REDIRECT_LABEL="Contact Redirect" COM_CONTACT_FIELD_CONFIG_SESSION_CHECK_DESC="Check for the existence of session cookie. This means that users without cookies enabled will not be able to send emails." COM_CONTACT_FIELD_CONFIG_SESSION_CHECK_LABEL="Session Check" COM_CONTACT_FIELD_CONFIG_STATE_LABEL="State or County" COM_CONTACT_FIELD_CONFIG_STATE_DESC="Show or hide a State or County column in the list of Contacts." COM_CONTACT_FIELD_CONFIG_SUBURB_DESC="Show or hide a City or Suburb column in the list of Contacts." COM_CONTACT_FIELD_CONFIG_SUBURB_LABEL="City or Suburb" COM_CONTACT_FIELD_CONFIG_TABLE_OF_CONTACTS_DESC="These settings apply for Contact List Options unless they are changed for a specific menu item." COM_CONTACT_FIELD_CONFIG_VCARD_DESC="Show or hide a vCard column in the list of Contacts." COM_CONTACT_FIELD_CONFIG_VCARD_LABEL="vCard" COM_CONTACT_FIELD_CONTACT_SHOW_CATEGORY_DESC="If "Hide", the Contact Category will not show. If "Show Without Link", Category will show as text. If "Show With Link", Category will show as a link to a Single Category Menu Item." COM_CONTACT_FIELD_CONTACT_SHOW_CATEGORY_LABEL="Contact Category" COM_CONTACT_FIELD_CONTACT_SHOW_LIST_DESC="If Show, the user will be able to change which contact is shown by selecting a contact from a dropdown list of all contacts in the current contact category." COM_CONTACT_FIELD_CONTACT_SHOW_LIST_LABEL="Show Contact List" COM_CONTACT_FIELD_CREATED_BY_ALIAS_DESC="Enter an alias to be displayed instead of the name of the user who created the contact." COM_CONTACT_FIELD_CREATED_BY_ALIAS_LABEL="Created By Alias" COM_CONTACT_FIELD_CREATED_BY_DESC="Select the name of the user who created the contact." COM_CONTACT_FIELD_CREATED_DESC="Date contact was created." COM_CONTACT_FIELD_CREATED_LABEL="Created Date" COM_CONTACT_FIELD_EMAIL_BANNED_EMAIL_DESC="Email addresses not allowed to submit contact form." COM_CONTACT_FIELD_EMAIL_BANNED_EMAIL_LABEL="Banned Email" COM_CONTACT_FIELD_EMAIL_BANNED_SUBJECT_DESC="Subjects not allowed in contact form." COM_CONTACT_FIELD_EMAIL_BANNED_SUBJECT_LABEL="Banned Subject" COM_CONTACT_FIELD_EMAIL_BANNED_TEXT_DESC="Text not allowed in contact form body." COM_CONTACT_FIELD_EMAIL_BANNED_TEXT_LABEL="Banned Text" COM_CONTACT_FIELD_EMAIL_EMAIL_COPY_DESC="Hide or Show checkbox to allow copy of email to be sent to submitter." COM_CONTACT_FIELD_EMAIL_EMAIL_COPY_LABEL="Send Copy to Submitter" COM_CONTACT_FIELD_EMAIL_SHOW_FORM_DESC="Show or hide contact form." COM_CONTACT_FIELD_EMAIL_SHOW_FORM_LABEL="Show Contact Form" COM_CONTACT_FIELD_FEATURED_DESC="If marked yes, will be displayed in featured view." COM_CONTACT_FIELD_FEEDLINK_DESC="Show or hide a feed link for this contact category." COM_CONTACT_FIELD_FEEDLINK_LABEL="Feed Link" COM_CONTACT_FIELD_ICONS_ADDRESS_DESC="Select or upload an image for the Address icon. If none selected, the default icon will be displayed." COM_CONTACT_FIELD_ICONS_ADDRESS_LABEL="Address Icon" COM_CONTACT_FIELD_ICONS_EMAIL_DESC="Select or upload an image for the Email icon. If none selected, the default icon will be displayed." COM_CONTACT_FIELD_ICONS_EMAIL_LABEL="Email Icon" COM_CONTACT_FIELD_ICONS_FAX_DESC="Select or upload an image for the Fax icon. If none selected, the default icon will be displayed." COM_CONTACT_FIELD_ICONS_FAX_LABEL="Fax Icon" COM_CONTACT_FIELD_ICONS_MISC_DESC="Select or upload an image for the Misc icon. If none selected, the default icon will be displayed." COM_CONTACT_FIELD_ICONS_MISC_LABEL="Misc Icon" COM_CONTACT_FIELD_ICONS_MOBILE_DESC="Select or upload an image for the Mobile icon. If none selected, the default icon will be displayed." COM_CONTACT_FIELD_ICONS_MOBILE_LABEL="Mobile Icon" COM_CONTACT_FIELD_ICONS_SETTINGS_DESC="Choose whether to display icons, text or nothing next to the information." COM_CONTACT_FIELD_ICONS_SETTINGS_LABEL="Settings" COM_CONTACT_FIELD_ICONS_TELEPHONE_DESC="Select or upload an image for the Telephone icon. If none selected, the default icon will be displayed." COM_CONTACT_FIELD_ICONS_TELEPHONE_LABEL="Telephone Icon" COM_CONTACT_FIELD_IMAGE_ALIGN_DESC="Alignment of the image." COM_CONTACT_FIELD_IMAGE_ALIGN_LABEL="Image Alignment" COM_CONTACT_FIELD_INFORMATION_ADDRESS_DESC="Contact's address." COM_CONTACT_FIELD_INFORMATION_ADDRESS_LABEL="Address" COM_CONTACT_FIELD_INFORMATION_COUNTRY_DESC="Contact's country." COM_CONTACT_FIELD_INFORMATION_COUNTRY_LABEL="Country" COM_CONTACT_FIELD_INFORMATION_EMAIL_DESC="Contact's email." COM_CONTACT_FIELD_INFORMATION_FAX_DESC="Contact's fax." COM_CONTACT_FIELD_INFORMATION_FAX_LABEL="Fax" COM_CONTACT_FIELD_INFORMATION_MISC_DESC="Contact's miscellaneous information." COM_CONTACT_FIELD_INFORMATION_MISC_LABEL="Miscellaneous Information" COM_CONTACT_FIELD_INFORMATION_MOBILE_DESC="Contact's mobile phone." COM_CONTACT_FIELD_INFORMATION_MOBILE_LABEL="Mobile" COM_CONTACT_FIELD_INFORMATION_POSITION_DESC="Contact's position." COM_CONTACT_FIELD_INFORMATION_POSITION_LABEL="Position" COM_CONTACT_FIELD_INFORMATION_POSTCODE_DESC="Contact's postal code." COM_CONTACT_FIELD_INFORMATION_POSTCODE_LABEL="Postal/ZIP Code" COM_CONTACT_FIELD_INFORMATION_STATE_DESC="Contact's state or province." COM_CONTACT_FIELD_INFORMATION_STATE_LABEL="State or Province" COM_CONTACT_FIELD_INFORMATION_SUBURB_DESC="Contact's city or suburb." COM_CONTACT_FIELD_INFORMATION_SUBURB_LABEL="City or Suburb" COM_CONTACT_FIELD_INFORMATION_TELEPHONE_DESC="Contact's telephone." COM_CONTACT_FIELD_INFORMATION_TELEPHONE_LABEL="Telephone" COM_CONTACT_FIELD_INFORMATION_WEBPAGE_DESC="Contact's Website. IDN (International) Links are converted to punycode when they are saved." COM_CONTACT_FIELD_INFORMATION_WEBPAGE_LABEL="Website" COM_CONTACT_FIELD_INITIAL_SORT_DESC="Choose the field or fields by which contacts will be sorted." COM_CONTACT_FIELD_INITIAL_SORT_LABEL="Sort By" COM_CONTACT_FIELD_LANGUAGE_DESC="Assign a language for this contact." COM_CONTACT_FIELD_LIMIT_BOX_DESC="Show or hide limit box." COM_CONTACT_FIELD_LIMIT_BOX_LABEL="Limit box" COM_CONTACT_FIELD_LINK_NAME_DESC="An additional link for this contact." COM_CONTACT_FIELD_LINKA_DESC="Enter a URL for Link A." COM_CONTACT_FIELD_LINKA_LABEL="Link A URL" COM_CONTACT_FIELD_LINKA_NAME_LABEL="Link A Label" COM_CONTACT_FIELD_LINKB_DESC="Enter a URL for Link B." COM_CONTACT_FIELD_LINKB_LABEL="Link B URL" COM_CONTACT_FIELD_LINKB_NAME_LABEL="Link B Label" COM_CONTACT_FIELD_LINKC_DESC="Enter a URL for Link C." COM_CONTACT_FIELD_LINKC_LABEL="Link C URL" COM_CONTACT_FIELD_LINKC_NAME_LABEL="Link C Label" COM_CONTACT_FIELD_LINKD_DESC="Enter a URL for Link D." COM_CONTACT_FIELD_LINKD_LABEL="Link D URL" COM_CONTACT_FIELD_LINKD_NAME_LABEL="Link D Label" COM_CONTACT_FIELD_LINKE_DESC="Enter a URL for Link E." COM_CONTACT_FIELD_LINKE_LABEL="Link E URL" COM_CONTACT_FIELD_LINKE_NAME_LABEL="Link E Label" COM_CONTACT_FIELD_LINKED_USER_DESC="Linked Joomla User." COM_CONTACT_FIELD_LINKED_USER_LABEL="Linked User" COM_CONTACT_FIELD_MODIFIED_DESC="The date and time that the contact was last modified." COM_CONTACT_FIELD_NAME_DESC="Contact name." COM_CONTACT_FIELD_NAME_LABEL="Name" COM_CONTACT_FIELD_NUM_CONTACTS_DESC="Number of Contacts to display as list." COM_CONTACT_FIELD_NUM_CONTACTS_LABEL="Number of Contacts" COM_CONTACT_FIELD_PARAMS_CONTACT_E_MAIL_DESC="Show or hide contact email." COM_CONTACT_FIELD_PARAMS_CONTACT_POSITION_DESC="Show or hide position." COM_CONTACT_FIELD_PARAMS_CONTACT_POSITION_LABEL="Contact's Position" COM_CONTACT_FIELD_PARAMS_COUNTRY_DESC="Show or hide country." COM_CONTACT_FIELD_PARAMS_COUNTRY_LABEL="Country" COM_CONTACT_FIELD_PARAMS_FAX_DESC="Show or hide fax number." COM_CONTACT_FIELD_PARAMS_FAX_LABEL="Fax" COM_CONTACT_FIELD_PARAMS_IMAGE_DESC="Select or upload the contact image." COM_CONTACT_FIELD_PARAMS_IMAGE_LABEL="Image" COM_CONTACT_FIELD_PARAMS_MISC_INFO_DESC="Show or hide miscellaneous information." COM_CONTACT_FIELD_PARAMS_MISC_INFO_LABEL="Misc. Information" COM_CONTACT_FIELD_PARAMS_MOBILE_DESC="Show or hide mobile number." COM_CONTACT_FIELD_PARAMS_MOBILE_LABEL="Mobile Phone" COM_CONTACT_FIELD_PARAMS_NAME_DESC="Show name of the contact." COM_CONTACT_FIELD_PARAMS_NAME_LABEL="Name" COM_CONTACT_FIELD_PARAMS_POST-ZIP_CODE_DESC="Show or hide postal or zip code." COM_CONTACT_FIELD_PARAMS_POST-ZIP_CODE_LABEL="Postal Code" COM_CONTACT_FIELD_PARAMS_SHOW_IMAGE_DESC="Show or hide image." COM_CONTACT_FIELD_PARAMS_SHOW_IMAGE_LABEL="Image" COM_CONTACT_FIELD_PARAMS_STATE-COUNTY_DESC="Show or hide state or county." COM_CONTACT_FIELD_PARAMS_STATE-COUNTY_LABEL="State or County" COM_CONTACT_FIELD_PARAMS_STREET_ADDRESS_DESC="Show or hide street address." COM_CONTACT_FIELD_PARAMS_STREET_ADDRESS_LABEL="Street Address" COM_CONTACT_FIELD_PARAMS_TELEPHONE_DESC="Show or hide telephone number." COM_CONTACT_FIELD_PARAMS_TELEPHONE_LABEL="Telephone" COM_CONTACT_FIELD_PARAMS_TOWN-SUBURB_DESC="Show or hide city or suburb." COM_CONTACT_FIELD_PARAMS_TOWN-SUBURB_LABEL="City or Suburb" COM_CONTACT_FIELD_PARAMS_VCARD_DESC="Whether or not to allow export to vCard format." COM_CONTACT_FIELD_PARAMS_VCARD_LABEL="vCard" COM_CONTACT_FIELD_PARAMS_WEBPAGE_DESC="Show or hide webpage." COM_CONTACT_FIELD_PARAMS_WEBPAGE_LABEL="Webpage" COM_CONTACT_FIELD_PRESENTATION_DESC="Determines the style used to display sections of the contact form." COM_CONTACT_FIELD_PRESENTATION_LABEL="Display Format" COM_CONTACT_FIELD_PROFILE_SHOW_DESC="If this contact is mapped to a user, and if this is set to Show, then the profile of this user will show." COM_CONTACT_FIELD_PROFILE_SHOW_LABEL="Show Profile" COM_CONTACT_FIELD_PUBLISH_DOWN_DESC="An optional date to Finish Publishing the contact." COM_CONTACT_FIELD_PUBLISH_DOWN_LABEL="Finish Publishing" COM_CONTACT_FIELD_PUBLISH_UP_DESC="An optional date to Start Publishing the contact." COM_CONTACT_FIELD_PUBLISH_UP_LABEL="Start Publishing" COM_CONTACT_FIELD_SHOW_CAT_ITEMS_DESC="Show or hide the number of contacts in category." COM_CONTACT_FIELD_SHOW_CAT_ITEMS_LABEL="# Contacts in Category" COM_CONTACT_FIELD_SHOW_CATEGORY_DESC="Displays the category." COM_CONTACT_FIELD_SHOW_LINKS_DESC="Show or hide the links." COM_CONTACT_FIELD_SHOW_LINKS_LABEL="Show Links" COM_CONTACT_FIELD_SHOW_CAT_TAGS_DESC="Show the tags for a contact category." COM_CONTACT_FIELD_SHOW_CAT_TAGS_LABEL="Show Tags" COM_CONTACT_FIELD_SHOW_TAGS_DESC="Show the tags for a contact." COM_CONTACT_FIELD_SHOW_TAGS_LABEL="Show Tags" COM_CONTACT_FIELD_SORTNAME1_DESC="The part of the name to use as the first sort field." COM_CONTACT_FIELD_SORTNAME1_LABEL="First Sort Field" COM_CONTACT_FIELD_SORTNAME2_DESC="The part of the name to use as the second sort field." COM_CONTACT_FIELD_SORTNAME2_LABEL="Second Sort Field" COM_CONTACT_FIELD_SORTNAME3_DESC="The part of the name to use as the third sort field." COM_CONTACT_FIELD_SORTNAME3_LABEL="Third Sort Field" COM_CONTACT_FIELD_VALUE_ICONS="Icons" COM_CONTACT_FIELD_VALUE_NAME="Name" COM_CONTACT_FIELD_VALUE_NO_LINK="Show Without Link" COM_CONTACT_FIELD_VALUE_NONE="None" COM_CONTACT_FIELD_VALUE_ORDERING="Ordering" COM_CONTACT_FIELD_VALUE_PLAIN="Plain" COM_CONTACT_FIELD_VALUE_SLIDERS="Sliders" COM_CONTACT_FIELD_VALUE_SORT_NAME="Sort Name" COM_CONTACT_FIELD_VALUE_TABS="Tabs" COM_CONTACT_FIELD_VALUE_TEXT="Text" COM_CONTACT_FIELD_VALUE_USE_CONTACT_SETTINGS="Use Contact Settings" COM_CONTACT_FIELD_VALUE_WITH_LINK="Show With Link" COM_CONTACT_FIELD_VERSION_LABEL="Revision" COM_CONTACT_FIELD_VERSION_DESC="A count of the number of times this contact has been revised." COM_CONTACT_FIELDSET_CONTACT_FORM="Contact form" COM_CONTACT_FIELDSET_CONTACT_LABEL="Form" COM_CONTACT_FIELDSET_CONTACTFORM_LABEL="Mail Options" COM_CONTACT_FIELDSET_OPTIONS="Display Options" COM_CONTACT_FILTER_DESC="Choose the type of filter to display per default." COM_CONTACT_FILTER_LABEL="Filter field" COM_CONTACT_FILTER_SEARCH_DESC="Enter text to show matching contacts." COM_CONTACT_ICONS_SETTINGS="Icons" COM_CONTACT_HEADING_ASSOCIATION="Association" COM_CONTACT_HITS_DESC="Number of hits for this contact." COM_CONTACT_ID_LABEL="ID" COM_CONTACT_ITEM_ASSOCIATIONS_FIELDSET_LABEL="Contact Item Associations" COM_CONTACT_ITEM_ASSOCIATIONS_FIELDSET_DESC="Multilingual only! This choice will only display if the Language Filter parameter 'Item Associations' is set to 'Yes'. Choose a contact item for the target language. This association will let the Language Switcher module redirect to the associated contact item in another language. If used, make sure to display the Language switcher module on the concerned pages. A contact item set to language 'All' can't be associated." COM_CONTACT_MAIL_FIELDSET_LABEL="Mail Options" COM_CONTACT_MANAGER_CONTACT="Contacts: New/Edit" COM_CONTACT_MANAGER_CONTACT_EDIT="Contacts: Edit" COM_CONTACT_MANAGER_CONTACT_NEW="Contacts: New" COM_CONTACT_MANAGER_CONTACTS="Contacts" COM_CONTACT_N_ITEMS_ARCHIVED="%d contacts successfully archived." COM_CONTACT_N_ITEMS_ARCHIVED_1="%d contact successfully archived." COM_CONTACT_N_ITEMS_CHECKED_IN_0="No contact successfully checked in." COM_CONTACT_N_ITEMS_CHECKED_IN_1="%d contact successfully checked in." COM_CONTACT_N_ITEMS_CHECKED_IN_MORE="%d contacts successfully checked in." COM_CONTACT_N_ITEMS_DELETED="%d contacts successfully deleted." COM_CONTACT_N_ITEMS_DELETED_1="%d contact successfully deleted." COM_CONTACT_N_ITEMS_PUBLISHED="%d contacts successfully published." COM_CONTACT_N_ITEMS_PUBLISHED_1="%d contact successfully published." COM_CONTACT_N_ITEMS_TRASHED="%d contacts successfully trashed." COM_CONTACT_N_ITEMS_TRASHED_1="%d contact successfully trashed." COM_CONTACT_N_ITEMS_UNPUBLISHED="%d contacts successfully unpublished." COM_CONTACT_N_ITEMS_UNPUBLISHED_1="%d contact successfully unpublished." COM_CONTACT_NAME_DESC="Contact name." COM_CONTACT_NEW_CONTACT="New Contact" COM_CONTACT_NO_ITEM_SELECTED="No contacts selected." COM_CONTACT_OPTIONS="Options" COM_CONTACT_SAVE_SUCCESS="Contact successfully saved." COM_CONTACT_SEARCH_IN_NAME="Search contacts by name" COM_CONTACT_SELECT_A_CONTACT="Select a Contact" COM_CONTACT_SELECT_CONTACT_DESC="Press the button to show and select a contact from the list." COM_CONTACT_SELECT_CONTACT_LABEL="Select Contact" COM_CONTACT_SELECT_USER="Select User" COM_CONTACT_SHOW_EMAIL_ADDRESS_DESC="Show email address." COM_CONTACT_SHOW_EMAIL_ADDRESS_LABEL="Email Address" COM_CONTACT_SHOW_EMPTY_CATEGORIES_DESC="If Show, empty categories will display. A category is only empty - if it has no Contacts or subcategories." COM_CONTACT_SUBMENU_CATEGORIES="Categories" COM_CONTACT_SUBMENU_CONTACTS="Contacts" COM_CONTACT_TIP_ASSOCIATION="Associated contacts" COM_CONTACT_TIP_ASSOCIATED_LANGUAGE="%s %s (%s)" COM_CONTACT_TOGGLE_TO_FEATURE="Toggle to change contact state to 'Featured'." COM_CONTACT_TOGGLE_TO_UNFEATURE="Toggle to change contact state to 'Unfeatured'." COM_CONTACT_UNFEATURED="Unfeatured contact" COM_CONTACT_WARNING_CATEGORY="This category is invalid." COM_CONTACT_WARNING_PROVIDE_VALID_NAME="Please provide a valid name." COM_CONTACT_WARNING_PROVIDE_VALID_URL="Please provide a valid URL." COM_CONTACT_WARNING_SELECT_CONTACT_TOPUBLISH="Please select a contact to publish." COM_CONTACT_XML_DESCRIPTION="This component shows a listing of contact information." JGLOBAL_FIELDSET_MISCELLANEOUS="Miscellaneous Information" JGLOBAL_NEWITEMSLAST_DESC="New Contacts default to the last position. Ordering can be changed after this Contact is saved." JLIB_HTML_BATCH_USER_LABEL="Set Linked User" JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings."PKb��\���m�+�+!language/en-GB/en-GB.com_tags.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_TAGS="Tags" COM_TAGS_ALL="All" COM_TAGS_ALL_TAGS_DESCRIPTION_DESC="Description to display at the heading of tags list." COM_TAGS_ALL_TAGS_DESCRIPTION_LABEL="Heading Description" COM_TAGS_ALL_TAGS_MEDIA_DESC="Select or upload the image to display in the heading of the tags list." COM_TAGS_ALL_TAGS_MEDIA_LABEL="Heading Image File" COM_TAGS_ANY="Any" COM_TAGS_BASE_ADD_TITLE="Tags: New" COM_TAGS_BASE_EDIT_TITLE="Tags: Edit" COM_TAGS_BASIC_FIELDSET_LABEL="Options" COM_TAGS_BATCH_CANNOT_CREATE="You are not allowed to create new tags." COM_TAGS_BATCH_CANNOT_EDIT="You are not allowed to edit tags." COM_TAGS_BATCH_OPTIONS="Batch process the selected tags" COM_TAGS_BATCH_TIP="Actions will apply to chosen Tags." COM_TAGS_COMPACT_COLUMNS_LABEL="Number of Columns" COM_TAGS_CONFIG_TAG_MIN_LENGTH_LABEL="Minimum Search Length" COM_TAGS_CONFIG_TAG_MIN_LENGTH_DESC="This setting controls the minimum character length for the search and adding tags using the tags field Ajax mode." COM_TAGS_CONFIG_ALL_TAGS_FIELD_LAYOUT_DESC="Choose a default layout for List of all tags." COM_TAGS_CONFIG_ALL_TAGS_FIELD_LAYOUT_LABEL="Default List All Tags Layout" COM_TAGS_CONFIG_ALL_TAGS_SETTINGS_DESC="These settings apply for a List of all Tags unless they are changed for a specific menu item." COM_TAGS_CONFIG_ALL_TAGS_SETTINGS_LABEL="List All Tags" COM_TAGS_CONFIG_DATA_ENTRY_SETTINGS_DESC="These settings control the way tags are entered." COM_TAGS_CONFIG_DATA_ENTRY_SETTINGS_LABEL="Data Entry" COM_TAGS_CONFIG_INTEGRATION_SETTINGS_DESC="These settings determine how the Tags Component will integrate with other extensions." COM_TAGS_CONFIG_NUMBER_OF_ITEMS="Number of Items Tagged" COM_TAGS_CONFIG_SELECTION_SETTINGS_DESC="These settings control which items get selected in the Tagged Items list layouts." COM_TAGS_CONFIG_SELECTION_SETTINGS_LABEL="Item Selection" COM_TAGS_CONFIG_SHARED_SETTINGS_DESC="These settings apply to all tag layouts unless they are changed for a specific menu item." COM_TAGS_CONFIG_SHARED_SETTINGS_LABEL="Shared Layout" COM_TAGS_CONFIG_TAG_SETTINGS_DESC="These settings apply for a Tagged Items List or Compact List of Tagged Items unless they are changed for a specific menu item." COM_TAGS_CONFIG_TAG_SETTINGS_LABEL="Tagged Items" COM_TAGS_CONFIG_TAGGED_ITEMS_FIELD_LAYOUT_DESC="Choose a default layout for tagged items. This layout will be used when a user selects a tag that doesn't have a menu item defined." COM_TAGS_CONFIG_TAGGED_ITEMS_FIELD_LAYOUT_LABEL="Default Tagged Items Layout" COM_TAGS_CONFIGURATION="Tags: Options" COM_TAGS_DELETE_NOT_ALLOWED="Delete not allowed for tag %s." COM_TAGS_DESCRIPTION_DESC="Enter an optional tag description in the text area." COM_TAGS_ERROR_UNIQUE_ALIAS="Another Tag has the same alias (remember it may be a trashed item)." COM_TAGS_EXCLUDE="Exclude" COM_TAGS_FIELD_CONFIG_HITS_DESC="Displays the number of hits." COM_TAGS_FIELD_CONFIG_TAGDESCRIPTION_DESC="Configure com_tags." COM_TAGS_FIELD_CONFIG_TAGDESCRIPTION_LABEL="Tags" COM_TAGS_FIELD_CONTENT_TYPE_DESC="Only tagged items of these types will be displayed." COM_TAGS_FIELD_CONTENT_TYPE_LABEL="Content types" COM_TAGS_FIELD_FULL_DESC="Select or upload an image that will be displayed in the single tag view." COM_TAGS_FIELD_FULL_LABEL="Full Image" COM_TAGS_FIELD_HITS_DESC="Number of hits for this tag." COM_TAGS_FIELD_IMAGE_ALT_DESC="Alt text for the image." COM_TAGS_FIELD_IMAGE_ALT_LABEL="Alt" COM_TAGS_FIELD_IMAGE_CAPTION_DESC="Caption for the image." COM_TAGS_FIELD_IMAGE_CAPTION_LABEL="Caption" COM_TAGS_FIELD_IMAGE_DESC="Select or upload an image for this tag." COM_TAGS_FIELD_IMAGE_LABEL="Image" COM_TAGS_FIELD_INTRO_DESC="Select or upload an image that will be displayed as part of a list." COM_TAGS_FIELD_INTRO_LABEL="Teaser Image" COM_TAGS_FIELD_ITEM_BODY_DESC="Show the body for each item." COM_TAGS_FIELD_LANGUAGE_DESC="Assign a language to this tag." COM_TAGS_FIELD_LANGUAGE_FILTER_DESC="Optionally filter the list of tags based on language." COM_TAGS_FIELD_LANGUAGE_FILTER_LABEL="Language Filter" COM_TAGS_FIELD_NOTE_DESC="An optional note to display in the tag list." COM_TAGS_FIELD_NOTE_LABEL="Note" COM_TAGS_FIELD_PARENT_DESC="Select a parent tag." COM_TAGS_FIELD_PARENT_LABEL="Parent" COM_TAGS_FIELD_PARENT_TAG_DESC="If set only tags that are direct children of the selected tag will be displayed." COM_TAGS_FIELD_PARENT_TAG_LABEL="Parent Tag" COM_TAGS_FIELD_SELECT_TAG_DESC="Select the tag to use." COM_TAGS_FIELD_TAG_BODY_DESC="Show or hide the tag description." COM_TAGS_FIELD_TAG_BODY_LABEL="Description." COM_TAGS_FIELD_TAG_LABEL="Tag" COM_TAGS_FIELD_TAG_LINK_CLASS="CSS Class for tag link." COM_TAGS_FIELD_TAG_LINK_CLASS_DESC="Add specific CSS classes for the tag link. If empty 'label label-info' will be added by the default tag layout." COM_TAGS_FIELD_TYPE_DESC="Only tags of the selected types will be displayed (optional)." COM_TAGS_FIELD_TYPE_LABEL="Content Type" COM_TAGS_FIELDSET_DETAILS="Tag Details" COM_TAGS_FIELDSET_OPTIONS="Options" COM_TAGS_FIELDSET_PUBLISHING="Publishing" COM_TAGS_FIELDSET_TAGGED_ITEMS="Tagged Items" COM_TAGS_FIELDSET_URLS_AND_IMAGES="Links and Images" COM_TAGS_FLOAT_DESC="Float attribute for the image." COM_TAGS_FLOAT_LABEL="Float" COM_TAGS_HAS_SUBCATEGORY_ITEMS="%d items are assigned to this tag's subtags." COM_TAGS_HAS_SUBCATEGORY_ITEMS_1="%d item is assigned to one of this tag's subtags." COM_TAGS_INCLUDE="Include" COM_TAGS_INCLUDE_CHILDREN_DESC="Include or exclude child tags from the result list for a tag." COM_TAGS_INCLUDE_CHILDREN_LABEL="Child Tags" COM_TAGS_ITEM_OPTIONS="Item Options" COM_TAGS_ITEMS_SEARCH_FILTER="Search" COM_TAGS_LEFT="Left" COM_TAGS_LIST_ALL_SELECTION_OPTIONS="Selection Options" COM_TAGS_LIST_MAX_CHARACTERS_DESC="The maximum number of characters to display from the description in each tag." COM_TAGS_LIST_MAX_CHARACTERS_LABEL="Maximum Characters" COM_TAGS_LIST_MAX_DESC="The maximum number of results to return." COM_TAGS_LIST_MAX_LABEL="Maximum Items" COM_TAGS_LIST_SELECTION_OPTIONS="Item Selection Options" COM_TAGS_MANAGER_TAGS="Tags" COM_TAGS_MATCH_COUNT="Number of matching tags" COM_TAGS_N_ITEMS_ARCHIVED="%d tags successfully archived." COM_TAGS_N_ITEMS_ARCHIVED_1="%d tag successfully archived." COM_TAGS_N_ITEMS_CHECKED_IN_0="No tag successfully checked in." COM_TAGS_N_ITEMS_CHECKED_IN_1="%d tag successfully checked in." COM_TAGS_N_ITEMS_CHECKED_IN_MORE="%d tags successfully checked in." COM_TAGS_N_ITEMS_DELETED="%d tags successfully deleted." COM_TAGS_N_ITEMS_DELETED_1="%d tag successfully deleted." COM_TAGS_N_ITEMS_PUBLISHED="%d tags successfully published." COM_TAGS_N_ITEMS_PUBLISHED_1="%d tag successfully published." COM_TAGS_N_ITEMS_TRASHED="%d tags successfully trashed." COM_TAGS_N_ITEMS_TRASHED_1="%d tag successfully trashed." COM_TAGS_N_ITEMS_UNPUBLISHED="%d tags successfully unpublished." COM_TAGS_N_ITEMS_UNPUBLISHED_1="%d tag successfully unpublished." COM_TAGS_NONE="None" COM_TAGS_NUMBER_COLUMNS_DESC="Number of columns to arrange the tags in. Note that this may not be the number displayed if 12 does not divide evenly into it because display is based on a 12 column grid." COM_TAGS_NUMBER_TAG_ITEMS_DESC="Shows the number of items with a given tag." COM_TAGS_NUMBER_TAG_ITEMS_LABEL="Show Number of Items" COM_TAGS_OPTIONS="Tag Options" COM_TAGS_PAGINATION_OPTIONS="Pagination Options" COM_TAGS_REBUILD_FAILURE="Failed rebuilding Tags tree data." COM_TAGS_REBUILD_SUCCESS="Tags tree data successfully rebuilt." COM_TAGS_RIGHT="Right" COM_TAGS_SAVE_SUCCESS="Tag successfully saved." COM_TAGS_SEARCH_TYPE_DESC="All will return items that have all of the tags. Any will return items that have at least one of the tags." COM_TAGS_SEARCH_TYPE_LABEL="Match Type" COM_TAGS_SHOW_ALL_TAGS_DESCRIPTION_DESC="Optional description to show at the top of the all tags list." COM_TAGS_SHOW_ALL_TAGS_DESCRIPTION_LABEL="Heading Description" COM_TAGS_SHOW_ALL_TAGS_IMAGE_DESC="Shows an image at the heading of the tags list." COM_TAGS_SHOW_ALL_TAGS_IMAGE_LABEL="Show Heading Image" COM_TAGS_SHOW_EMPTY_TAG_DESC="Show empty tags." COM_TAGS_SHOW_ITEM_BODY_DESC="Show or hide the body text for the tagged items." COM_TAGS_SHOW_ITEM_BODY_LABEL="Item Body" COM_TAGS_SHOW_ITEM_DESCRIPTION_DESC="Shows or hides the description for each tag listed." COM_TAGS_SHOW_ITEM_DESCRIPTION_LABEL="Tag Descriptions" COM_TAGS_SHOW_ITEM_IMAGE_DESC="Shows the first image for each item in the list." COM_TAGS_SHOW_ITEM_IMAGE_LABEL="Item Images" COM_TAGS_SHOW_TAG_BODY_DESC="For a layout with one tag, show the tag description." COM_TAGS_SHOW_TAG_BODY_LABEL="Show Tag Description" COM_TAGS_SHOW_TAG_DESCRIPTION_DESC="Show or hide the description for the tag (only used when a single tag is selected)." COM_TAGS_SHOW_TAG_DESCRIPTION_LABEL="Tag Description" COM_TAGS_SHOW_TAG_IMAGE_DESC="For a layout with one tag, show the image for the tag." COM_TAGS_SHOW_TAG_IMAGE_LABEL="Tag Image" COM_TAGS_SHOW_TAG_LIST_DESCRIPTION_LABEL="Description" COM_TAGS_SHOW_TAG_TITLE_DESC="For a layout with one tag, show the tag name." COM_TAGS_SHOW_TAG_TITLE_LABEL="Show Tag Name" COM_TAGS_SUBSLIDER_DRILL_TAG_LIST_LABEL="Options for each item in the list." COM_TAGS_TAG_FIELD_MODE_AJAX="AJAX" COM_TAGS_TAG_FIELD_MODE_DESC="Ajax mode searches tags while typing and allows you on the fly tag creation. Nested tags show you a nested view with all the available tags." COM_TAGS_TAG_FIELD_MODE_LABEL="Tag Entry Mode" COM_TAGS_TAG_FIELD_MODE_NESTED="Nested" COM_TAGS_TAG_LIST_DESCRIPTION_DESC="Optional description to show at the top of the list. For example, this can be used when you have a layout that includes more than one tag." COM_TAGS_TAG_LIST_DESCRIPTION_LABEL="Layout Description" COM_TAGS_TAG_LIST_FIELD_ITEM_DESCRIPTION_LABEL="Item Body" COM_TAGS_TAG_LIST_ITEM_DESCRIPTION_DESC="Shows the body text for the individual items (depends on the source table)." COM_TAGS_TAG_LIST_ITEM_HITS_DESC="Shows the number of hits for each individual item." COM_TAGS_TAG_LIST_MEDIA_DESC="Select or upload the tag image (full image)." COM_TAGS_TAG_LIST_MEDIA_LABEL="Image" COM_TAGS_TAG_LIST_SHOW_ITEM_IMAGE_DESC="Shows the image for each item." COM_TAGS_TAG_LIST_SHOW_ITEM_IMAGE_LABEL="Item Image" COM_TAGS_TAG_LIST_SHOW_ITEM_DESCRIPTION_DESC="Whether to show or hide the description for each item in the list. The length may be limited using the Maximum Characters option." COM_TAGS_TAG_LIST_SHOW_ITEM_DESCRIPTION_LABEL="Item Description" COM_TAGS_TAG_VIEW_LIST_DESC="Displays a compact list of items that have been tagged with the selected tags." COM_TAGS_TAG_VIEW_LIST_OPTION="List view options" COM_TAGS_TAG_VIEW_LIST_TITLE="Tagged items list" COM_TAGS_TAGGED_ITEMS_ACCESS="Access" COM_TAGS_TAGGED_ITEMS_AUTHOR="Author" COM_TAGS_TAGGED_ITEMS_DATE="Date" COM_TAGS_TAGGED_ITEMS_ID="ID" COM_TAGS_TAGGED_ITEMS_LANGUAGE="Language" COM_TAGS_TAGGED_ITEMS_TITLE="Title" COM_TAGS_XML_DESCRIPTION="This component manages tags." JGLOBAL_NO_ITEM_SELECTED="No tags selected" PKb��\�4L>$$'language/en-GB/en-GB.plg_system_sef.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SEF_XML_DESCRIPTION="Adds SEF support to links in the document. It operates directly on the HTML and does not require a special tag." PLG_SYSTEM_SEF="System - SEF" PLG_SEF_DOMAIN_LABEL="Site Domain" PLG_SEF_DOMAIN_DESCRIPTION="If your site can be accessed through more than one domain enter the canonical one here." PKb��\�k� (language/en-GB/en-GB.com_content.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CONTENT="Articles" COM_CONTENT_ARCHIVE_VIEW_DEFAULT_DESC="Display all archived articles." COM_CONTENT_ARCHIVE_VIEW_DEFAULT_OPTION="Default" COM_CONTENT_ARCHIVE_VIEW_DEFAULT_TITLE="Archived Articles" COM_CONTENT_ARTICLE_MANAGER="Articles" COM_CONTENT_ARTICLE_VIEW_DEFAULT_DESC="Display a single article." COM_CONTENT_ARTICLE_VIEW_DEFAULT_OPTION="Default" COM_CONTENT_ARTICLE_VIEW_DEFAULT_TITLE="Single Article" COM_CONTENT_ARTICLES="Articles" COM_CONTENT_CATEGORIES="Categories" COM_CONTENT_CATEGORIES_VIEW_DEFAULT_DESC="Shows a list of all the article categories within a category." COM_CONTENT_CATEGORIES_VIEW_DEFAULT_OPTION="Default" COM_CONTENT_CATEGORIES_VIEW_DEFAULT_TITLE="List All Categories" COM_CONTENT_CATEGORY_ADD_TITLE="Articles: New Category" COM_CONTENT_CATEGORY_EDIT_TITLE="Articles: Edit Category" COM_CONTENT_CATEGORY_VIEW_BLOG_DESC="Displays article introductions in a single or multi-column layout." COM_CONTENT_CATEGORY_VIEW_BLOG_OPTION="Blog" COM_CONTENT_CATEGORY_VIEW_BLOG_TITLE="Category Blog" COM_CONTENT_CATEGORY_VIEW_DEFAULT_DESC="Displays a list of articles in a category." COM_CONTENT_CATEGORY_VIEW_DEFAULT_OPTION="List" COM_CONTENT_CATEGORY_VIEW_DEFAULT_TITLE="Category List" COM_CONTENT_CATEGORY_VIEW_FEATURED_DESC="Show all featured articles from one or multiple categories in a single or multi-column layout." COM_CONTENT_CATEGORY_VIEW_FEATURED_OPTION="Default" COM_CONTENT_CATEGORY_VIEW_FEATURED_TITLE="Featured Articles Single Category" COM_CONTENT_CONTENT_TYPE_ARTICLE="Article" COM_CONTENT_CONTENT_TYPE_CATEGORY="Article Category" COM_CONTENT_FEATURED="Featured" COM_CONTENT_FEATURED_VIEW_DEFAULT_DESC="Displays article introductions in a single or multi-column layout for featured articles from all categories." COM_CONTENT_FEATURED_VIEW_DEFAULT_OPTION="Default" COM_CONTENT_FEATURED_VIEW_DEFAULT_TITLE="Featured Articles" COM_CONTENT_FORM_VIEW_DEFAULT_DESC="Create a new article." COM_CONTENT_FORM_VIEW_DEFAULT_OPTION="Create" COM_CONTENT_FORM_VIEW_DEFAULT_TITLE="Create Article" COM_CONTENT_XML_DESCRIPTION="Article management component." PKb��\�x�T�A�A#language/en-GB/en-GB.com_finder.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_FINDER="Smart Search" COM_FINDER_ALLOW_EMPTY_QUERY_DESC="Only if a filter is selected, allow an empty search string to initiate a search within the filter constraints." COM_FINDER_ALLOW_EMPTY_QUERY_LABEL="Allow Empty Search" COM_FINDER_AN_ERROR_HAS_OCCURRED="An Error Has Occurred" COM_FINDER_CONFIG_ALLOW_EMPTY_QUERY_DESCRIPTION="Only if a filter is selected, allow an empty search string to initiate a search within the filter restraints." COM_FINDER_CONFIG_ALLOW_EMPTY_QUERY_LABEL="Allow Empty Search" COM_FINDER_CONFIG_BATCH_SIZE_DESCRIPTION="The batch size controls how many items are processed per batch. Large batch sizes require lots of memory whereas small batch sizes require less memory but execute more requests which tends to take longer." COM_FINDER_CONFIG_BATCH_SIZE_LABEL="Indexer Batch Size" COM_FINDER_CONFIG_DESCRIPTION_LENGTH_DESC="Description text for search results will be truncated to the specified character length." COM_FINDER_CONFIG_DESCRIPTION_LENGTH_DESCRIPTION="Description text for search results will be truncated to the specified character length." COM_FINDER_CONFIG_DESCRIPTION_LENGTH_LABEL="Description Length" COM_FINDER_CONFIG_ENABLE_LOGGING_DESCRIPTION="Enable this option to create a log file in your site's logs folder during the index process. This file is useful for troubleshooting issues with the index process. It is recommended that logging be disabled unless necessary." COM_FINDER_CONFIG_ENABLE_LOGGING_LABEL="Enable Logging" COM_FINDER_CONFIG_EXPAND_ADVANCED_DESC="Toggle whether the advanced search options should be expanded by default." COM_FINDER_CONFIG_EXPAND_ADVANCED_DESCRIPTION="Toggle whether the advanced search options should be expanded by default." COM_FINDER_CONFIG_EXPAND_ADVANCED_LABEL="Expand Advanced Search" COM_FINDER_CONFIG_FIELD_OPENSEARCH_DESCRIPTON_DESCRIPTION="Description displayed for this site as a search provider." COM_FINDER_CONFIG_FIELD_OPENSEARCH_DESCRIPTON_LABEL="OpenSearch Description" COM_FINDER_CONFIG_FIELD_OPENSEARCH_NAME_DESCRIPTION="Name displayed for this site as a search provider." COM_FINDER_CONFIG_FIELD_OPENSEARCH_NAME_LABEL="OpenSearch Name" COM_FINDER_CONFIG_GATHER_SEARCH_STATISTICS_DESCRIPTION="Record the search phrases submitted by visitors." COM_FINDER_CONFIG_GATHER_SEARCH_STATISTICS_LABEL="Gather Search Statistics" COM_FINDER_CONFIG_HILIGHT_CONTENT_SEARCH_TERMS_DESCRIPTION="Toggle whether search terms should be highlighted in search results." COM_FINDER_CONFIG_HILIGHT_CONTENT_SEARCH_TERMS_LABEL="Highlight Search Terms" COM_FINDER_CONFIG_IMPORT_EXPORT="Import/Export" COM_FINDER_CONFIG_IMPORT_EXPORT_HELP="Help" COM_FINDER_CONFIG_IMPORT_EXPORT_INSTRUCTIONS="To export your configuration options, select the Export button in the toolbar above.<br /><br />To import an existing configuration, select the browse button to choose a file from your hard drive or copy/paste the data into the text field below and then select the Import button in the toolbar above." COM_FINDER_CONFIG_IMPORT_FROM_FILE="Import From File:" COM_FINDER_CONFIG_IMPORT_FROM_STRING="Import From Text:" COM_FINDER_CONFIG_IMPORT_TOOLBAR_TITLE="Smart Search: Import/Export Configuration" COM_FINDER_CONFIG_MEMORY_TABLE_LIMIT_DESCRIPTION="The memory table limit should not be changed unless you are getting errors indicating that the finder_tokens or finder_tokens_aggregate tables are full. The default is 30,000." COM_FINDER_CONFIG_MEMORY_TABLE_LIMIT_LABEL="Memory Table Limit" COM_FINDER_CONFIG_META_MULTIPLIER_DESCRIPTION="The multiplier is used to control how much influence matching text has on the overall relevance score of a search result. A multiplier is considered in relationship to the other multipliers. The meta data comes from a number of sources including the meta keywords and meta description, author names, etc." COM_FINDER_CONFIG_META_MULTIPLIER_LABEL="Meta Data Weight Multiplier" COM_FINDER_CONFIG_MISC_MULTIPLIER_DESCRIPTION="The multiplier is used to control how much influence matching text has on the overall relevance score of a search result. A multiplier is considered in relationship to the other multipliers. The miscellaneous text comes from a number of sources including comments and other associated data." COM_FINDER_CONFIG_MISC_MULTIPLIER_LABEL="Miscellaneous Text Weight Multiplier" COM_FINDER_CONFIG_PATH_MULTIPLIER_DESCRIPTION="The multiplier is used to control how much influence matching text has on the overall relevance score of a search result. A multiplier is considered in relationship to the other multipliers. The path text comes from the SEF URL of the content." COM_FINDER_CONFIG_PATH_MULTIPLIER_LABEL="Path Text Weight Multiplier" COM_FINDER_CONFIG_SHOW_ADVANCED_DESC="Toggle whether users should be able to see advanced search options." COM_FINDER_CONFIG_SHOW_ADVANCED_DESCRIPTION="Toggle whether users should be able to see advanced search options." COM_FINDER_CONFIG_SHOW_ADVANCED_LABEL="Advanced Search" COM_FINDER_CONFIG_SHOW_ADVANCED_TIPS_DESCRIPTION="Toggle whether users should be able to see advanced search tips." COM_FINDER_CONFIG_SHOW_ADVANCED_TIPS_LABEL="Advanced Tips" COM_FINDER_CONFIG_SHOW_AUTOSUGGEST_DESCRIPTION="Toggle whether automatic search suggestions should be displayed." COM_FINDER_CONFIG_SHOW_AUTOSUGGEST_LABEL="Search Suggestions" COM_FINDER_CONFIG_SHOW_DATE_FILTERS_DESC="Show the start and end date filters in the advanced search." COM_FINDER_CONFIG_SHOW_DATE_FILTERS_DESCRIPTION="Show the start and end date filters in the advanced search." COM_FINDER_CONFIG_SHOW_DATE_FILTERS_LABEL="Date Filters" COM_FINDER_CONFIG_SHOW_DESCRIPTION_DESC="Toggle whether the description should be displayed with search results." COM_FINDER_CONFIG_SHOW_DESCRIPTION_DESCRIPTION="Toggle whether the description should be displayed with search results." COM_FINDER_CONFIG_SHOW_DESCRIPTION_LABEL="Result Description" COM_FINDER_CONFIG_SHOW_EXPLAINED_QUERY_DESC="Whether to show a detailed explanation of the search requested." COM_FINDER_CONFIG_SHOW_EXPLAINED_QUERY_LABEL="Query Explanation" COM_FINDER_CONFIG_SHOW_FEED_DESC="Show the syndication feed link." COM_FINDER_CONFIG_SHOW_FEED_LABEL="Show Feed" COM_FINDER_CONFIG_SHOW_FEED_TEXT_DESC="Show the associated text with the feed, otherwise just the title is shown in the feed." COM_FINDER_CONFIG_SHOW_FEED_TEXT_LABEL="Show Feed Text" COM_FINDER_CONFIG_SHOW_SUGGESTED_QUERY_DESC="Whether to suggest alternative search terms when a search produces no results." COM_FINDER_CONFIG_SHOW_SUGGESTED_QUERY_LABEL="Did you mean" COM_FINDER_CONFIG_SHOW_URL_DESC="Show the associated URL that for the item." COM_FINDER_CONFIG_SHOW_URL_DESCRIPTION="Show the associated URL for the item." COM_FINDER_CONFIG_SHOW_URL_LABEL="Result URL" COM_FINDER_CONFIG_SORT_DIRECTION_DESC="The direction in which to sort the search results." COM_FINDER_CONFIG_SORT_DIRECTION_LABEL="Sort Direction" COM_FINDER_CONFIG_SORT_OPTION_ASCENDING="Ascending" COM_FINDER_CONFIG_SORT_OPTION_DESCENDING="Descending" COM_FINDER_CONFIG_SORT_OPTION_LIST_PRICE="List price" COM_FINDER_CONFIG_SORT_OPTION_RELEVANCE="Relevance" COM_FINDER_CONFIG_SORT_OPTION_START_DATE="Date" COM_FINDER_CONFIG_SORT_ORDER_DESC="The field on which to sort the search results." COM_FINDER_CONFIG_SORT_ORDER_LABEL="Sort Field" COM_FINDER_CONFIG_STEMMER_DESCRIPTION="The language stemmer to use. Choose snowball if a stemmer for your language is not available or you have multilingual content." COM_FINDER_CONFIG_STEMMER_ENABLE_DESCRIPTION="Enable language stemming if available." COM_FINDER_CONFIG_STEMMER_ENABLE_LABEL="Enable Stemmer" COM_FINDER_CONFIG_STEMMER_FR="French Only" COM_FINDER_CONFIG_STEMMER_LABEL="Stemmer" COM_FINDER_CONFIG_STEMMER_PORTER_EN="English Only" COM_FINDER_CONFIG_STEMMER_SNOWBALL="Snowball" COM_FINDER_CONFIG_TEXT_MULTIPLIER_DESCRIPTION="The multiplier is used to control how much influence matching text has on the overall relevance score of a search result. A multiplier is considered in relationship to the other multipliers. The body text comes from the summary and/or body of the content." COM_FINDER_CONFIG_TEXT_MULTIPLIER_LABEL="Body Text Weight Multiplier" COM_FINDER_CONFIG_TITLE_MULTIPLIER_DESCRIPTION="The multiplier is used to control how much influence matching text has on the overall relevance score of a search result. A multiplier is considered in relationship to the other multipliers. The title text comes from the title of the content." COM_FINDER_CONFIG_TITLE_MULTIPLIER_LABEL="Title Text Weight Multiplier" COM_FINDER_CONFIGURATION="Smart Search: Options" COM_FINDER_CREATE_FILTER="Create a filter." COM_FINDER_EDIT_FILTER="Edit Filter" COM_FINDER_EXPORT="Export" COM_FINDER_FIELD_CREATED_BY_ALIAS_DESC="Displayed name of the filter creator." COM_FINDER_FIELD_CREATED_BY_ALIAS_LABEL="Alias" COM_FINDER_FIELD_CREATED_BY_DESC="Creator of the filter." COM_FINDER_FIELD_CREATED_BY_LABEL="Created By" COM_FINDER_FIELD_MODIFIED_DESCRIPTION="The date and time that the filter was last modified." COM_FINDER_FIELDSET_INDEX_OPTIONS_DESCRIPTION="Indexing options" COM_FINDER_FIELDSET_INDEX_OPTIONS_LABEL="Index" COM_FINDER_FIELDSET_SEARCH_OPTIONS_DESCRIPTION="Search options" COM_FINDER_FIELDSET_SEARCH_OPTIONS_LABEL="Search" COM_FINDER_FILTER_BRANCH_LABEL="Search by %s" COM_FINDER_FILTER_BY="Show %s:" COM_FINDER_FILTER_EDIT_TOOLBAR_TITLE="Smart Search: Filter Edit" COM_FINDER_FILTER_NEW_TOOLBAR_TITLE="Smart Search: Filter New" COM_FINDER_FILTER_END_DATE_DESCRIPTION="Format YYYY-MM-DD" COM_FINDER_FILTER_END_DATE_LABEL="End Date" COM_FINDER_FILTER_FIELDSET_DETAILS="Filter Details" COM_FINDER_FILTER_FIELDSET_PARAMS="Filter Timeline" COM_FINDER_FILTER_MAP_COUNT="Map Count" COM_FINDER_FILTER_MAP_COUNT_DESCRIPTION="The number of maps included in the filter." COM_FINDER_FILTER_SEARCH_DESCRIPTION="Filter the list by a title." COM_FINDER_FILTER_SELECT_ALL_LABEL="Search All" COM_FINDER_FILTER_START_DATE_DESCRIPTION="Format YYYY-MM-DD" COM_FINDER_FILTER_START_DATE_LABEL="Start Date" COM_FINDER_FILTER_TIMESTAMP="Created On" COM_FINDER_FILTER_TITLE_DESCRIPTION="The title of the filter." COM_FINDER_FILTER_WHEN_AFTER="After" COM_FINDER_FILTER_WHEN_BEFORE="Before" COM_FINDER_FILTER_WHEN_END_DATE_DESCRIPTION="When to search relative to the end date (before, after or exactly)" COM_FINDER_FILTER_WHEN_END_DATE_LABEL="When (End Date)" COM_FINDER_FILTER_WHEN_EXACTLY="Exactly" COM_FINDER_FILTER_WHEN_START_DATE_DESCRIPTION="When to search relative to the start date (before, after or exactly)" COM_FINDER_FILTER_WHEN_START_DATE_LABEL="When (Start Date)" COM_FINDER_FILTERS="Filters" COM_FINDER_FILTERS_DELETE_CONFIRMATION="Are you sure you want to delete the selected filters(s)?" COM_FINDER_FILTERS_TOOLBAR_TITLE="Smart Search: Search Filters" COM_FINDER_GO="Go" COM_FINDER_HEADING_INDEXER="Smart Search Indexer" COM_FINDER_IMPORT="Import" COM_FINDER_INDEX="Index" COM_FINDER_INDEX_CONFIRM_DELETE_PROMPT="Are you sure you want to delete the selected item(s)?" COM_FINDER_INDEX_CONFIRM_PURGE_PROMPT="Are you sure you want to delete ALL items from the index? This can take a long time on large sites." COM_FINDER_INDEX_DATE_INFO="Link Date Information::Published Start: %s<br />Published End: %s<br />Content Start: %s<br />Content End: %s" COM_FINDER_INDEX_FILTER_BY_STATE="Any Published State" COM_FINDER_INDEX_HEADING_INDEX_DATE="Last Updated" COM_FINDER_INDEX_HEADING_INDEX_TYPE="Type" COM_FINDER_INDEX_HEADING_LINK_URL="Raw URL" COM_FINDER_INDEX_NO_CONTENT="No content matches your search criteria." COM_FINDER_INDEX_NO_DATA="No content has been indexed." ; Change 'Content%20-%20Smart%20Search' to the value for PLG_CONTENT_FINDER in plg_content_finder.sys.ini for your language COM_FINDER_INDEX_PLUGIN_CONTENT_NOT_ENABLED="Smart Search content plugin is not enabled. Changes to content will not update the Smart Search index if you do not <a href="_QQ_"index.php?option=com_plugins&view=plugins&filter[search]=Content%20-%20Smart%20Search"_QQ_">enable this plugin</a>." COM_FINDER_INDEX_PURGE_SUCCESS="All items have been successfully deleted." COM_FINDER_INDEX_TIP="Start the indexer by pressing the Index button in the toolbar." COM_FINDER_INDEX_TOOLBAR_PURGE="Clear Index" COM_FINDER_INDEX_TOOLBAR_TITLE="Smart Search: Indexed Content" COM_FINDER_INDEX_TYPE_FILTER="Any Type of Content" COM_FINDER_INDEXER_HEADER_COMPLETE="Indexing Complete" COM_FINDER_INDEXER_HEADER_ERROR="An Error Has Occurred" COM_FINDER_INDEXER_HEADER_INIT="Starting Indexer" COM_FINDER_INDEXER_HEADER_OPTIMIZE="Optimising Index" COM_FINDER_INDEXER_HEADER_RUNNING="Indexer Running" COM_FINDER_INDEXER_INVALID_DRIVER="The indexer does not support processing on the %s database driver." COM_FINDER_INDEXER_INVALID_PARSER="Invalid parser type %s" COM_FINDER_INDEXER_INVALID_STEMMER="Invalid stemmer type %s" COM_FINDER_INDEXER_MESSAGE_COMPLETE="The indexing process is complete. It is now safe to close this window." COM_FINDER_INDEXER_MESSAGE_INIT="The indexer is being initialised. Do not close this window." COM_FINDER_INDEXER_MESSAGE_OPTIMIZE="The index tables are being optimised for the best possible performance. Do not close this window." COM_FINDER_INDEXER_MESSAGE_RUNNING="Your content is being indexed. Do not close this window." COM_FINDER_ITEM_X_ONLY="%s Only" COM_FINDER_ITEMS="Content" COM_FINDER_MAP_PUBLISH_FAILED="The selected map(s) could not be published. The returned error message is: %s." COM_FINDER_MAP_PUBLISH_SUCCESS="The selected map(s) were successfully published." COM_FINDER_MAP_UNPUBLISH_FAILED="The selected map(s) could not be unpublished. The returned error message is: %s." COM_FINDER_MAP_UNPUBLISH_SUCCESS="The selected map(s) were successfully unpublished." COM_FINDER_MAPS="Maps" COM_FINDER_MAPS_BRANCH_LINK="Select to show the children in this branch." COM_FINDER_MAPS_BRANCHES="Branches Only" COM_FINDER_MAPS_CONFIRM_DELETE_PROMPT="Are you sure you want to delete the selected maps(s)?" COM_FINDER_MAPS_MULTILANG="Note: Language filter system plugin has been enabled, so this branch will not be used." COM_FINDER_MAPS_NO_CONTENT="No results to display. Either no content has been indexed or no content meets your filter criteria." COM_FINDER_MAPS_RETURN_TO_BRANCHES="Return to Branches" COM_FINDER_MAPS_TOOLBAR_TITLE="Smart Search: Content Maps" COM_FINDER_MESSAGE_RETURNED="The following message was returned by the server:" COM_FINDER_N_ITEMS_CHECKED_IN_0="No item successfully checked in." COM_FINDER_N_ITEMS_CHECKED_IN_1="%d item successfully checked in." COM_FINDER_N_ITEMS_CHECKED_IN_MORE="%d items successfully checked in." COM_FINDER_N_ITEMS_DELETED="%d items successfully deleted." COM_FINDER_N_ITEMS_DELETED_1="%d item successfully deleted." COM_FINDER_N_ITEMS_PUBLISHED="%d items successfully published." COM_FINDER_N_ITEMS_PUBLISHED_1="%d item successfully published." COM_FINDER_N_ITEMS_TRASHED="%d items successfully trashed." COM_FINDER_N_ITEMS_TRASHED_1="%d item successfully trashed." COM_FINDER_N_ITEMS_UNPUBLISHED="%d items successfully unpublished." COM_FINDER_N_ITEMS_UNPUBLISHED_1="%d item successfully unpublished." COM_FINDER_NO_ERROR_RETURNED="No error was returned. Make sure error reporting is enabled." COM_FINDER_NO_FILTERS="No filters have been created yet." COM_FINDER_NO_RESULTS="No results match your search criteria." COM_FINDER_QUERY_FILTER_TODAY="Today" COM_FINDER_QUERY_OPERATOR_AND="And" COM_FINDER_QUERY_OPERATOR_NOT="Not" COM_FINDER_QUERY_OPERATOR_OR="Or" COM_FINDER_SEARCH_FILTER_SEARCH_DESC="Selecting a Search Filter will limit any searches submitted to use the selected filter." COM_FINDER_SEARCH_FILTER_SEARCH_LABEL="Search Filter" COM_FINDER_SEARCH_LABEL="Search %s:" COM_FINDER_SEARCH_SEARCH_QUERY_DESC="Entering search terms will make this menu item automatically return the results for the predefined terms." COM_FINDER_SEARCH_SEARCH_QUERY_LABEL="Search Query" COM_FINDER_SELECT_SEARCH_FILTER="Select filter" COM_FINDER_STATISTICS="Statistics" COM_FINDER_STATISTICS_LINK_TYPE_COUNT="Count" COM_FINDER_STATISTICS_LINK_TYPE_HEADING="Link Type" COM_FINDER_STATISTICS_LINK_TYPE_TOTAL="Total" COM_FINDER_STATISTICS_STATS_DESCRIPTION="The indexed content on this site includes %s terms across %s links with %s attributes in %s branches." COM_FINDER_STATISTICS_TITLE="Smart Search Statistics" COM_FINDER_SUBMENU_FILTERS="Search Filters" COM_FINDER_SUBMENU_INDEX="Indexed Content" COM_FINDER_SUBMENU_MAPS="Content Maps" COM_FINDER_UPDATER_MESSAGE_COMPLETE="Smart Search is up to date." COM_FINDER_UPDATER_MESSAGE_OPTIMIZE="Smart Search is optimising." COM_FINDER_UPDATER_MESSAGE_PROCESS="Smart Search is updating." COM_FINDER_XML_DESCRIPTION="Smart Search." PKb��\�!b(language/en-GB/en-GB.mod_submenu.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_SUBMENU="Administrator Sub-Menu" MOD_SUBMENU_XML_DESCRIPTION="This module shows the Sub-Menu Navigation Module." MOD_SUBMENU_LAYOUT_DEFAULT="Default" PKb��\fcXA��6language/en-GB/en-GB.plg_system_languagefilter.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SYSTEM_LANGUAGEFILTER="System - Language Filter" PLG_SYSTEM_LANGUAGEFILTER_XML_DESCRIPTION="This plugin filters the displayed content depending on language." PKb��\��Tbb1language/en-GB/en-GB.plg_editors-xtd_readmore.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_EDITORS-XTD_READMORE="Button - Readmore" PLG_READMORE_ALREADY_EXISTS="There is already a Read more ... link that has been inserted. Only one link is permitted. Use {pagebreak} to split the page up further." PLG_READMORE_BUTTON_READMORE="Read More" PLG_READMORE_XML_DESCRIPTION="Enables a button which allows you to easily insert the <em>Read more ...</em> link into an Article."PKb��\c�� � .language/en-GB/en-GB.plg_content_pagebreak.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTENT_PAGEBREAK="Content - Page Break" PLG_CONTENT_PAGEBREAK_ALL_PAGES=" All Pages" PLG_CONTENT_PAGEBREAK_ARTICLE_INDEX="Article Index" PLG_CONTENT_PAGEBREAK_NO_TITLE="No title" PLG_CONTENT_PAGEBREAK_PAGES="Pages" PLG_CONTENT_PAGEBREAK_PAGE_NUM="Page %s" PLG_CONTENT_PAGEBREAK_SHOW_ALL_DESC="Displays the full article." PLG_CONTENT_PAGEBREAK_SHOW_ALL_LABEL="Show All" PLG_CONTENT_PAGEBREAK_SITE_ARTICLEINDEXTEXT="Custom Article Index Heading" PLG_CONTENT_PAGEBREAK_SITE_ARTICLEINDEXTEXT_DESC="Enter a custom text for the Article Index Heading. If empty, standard will be used." PLG_CONTENT_PAGEBREAK_SITE_ARTICLEINDEX_DESC="Show or hide Article Index Heading. The Heading displays on top of the Table of Contents." PLG_CONTENT_PAGEBREAK_SITE_ARTICLEINDEX_LABEL="Article Index Heading" PLG_CONTENT_PAGEBREAK_SITE_TITLE_DESC="Title and heading attributes from Plugin added to Site Title tag." PLG_CONTENT_PAGEBREAK_SITE_TITLE_LABEL="Show Site Title" PLG_CONTENT_PAGEBREAK_SLIDERS="Sliders" PLG_CONTENT_PAGEBREAK_STYLE_DESC="Choose whether to layout the article with separate pages, tabs or sliders." PLG_CONTENT_PAGEBREAK_STYLE_LABEL="Presentation Style" PLG_CONTENT_PAGEBREAK_TABS="Tabs" PLG_CONTENT_PAGEBREAK_TOC_DESC="Display a table of contents on multipage Articles." PLG_CONTENT_PAGEBREAK_TOC_LABEL="Table of Contents" PLG_CONTENT_PAGEBREAK_XML_DESCRIPTION="Allow the creation of a paginated article with an optional table of contents.<br /><br />Insert page breaks through the use of the page break button normally found beneath the text panel in an Article. The location of the page break in an article will be displayed in the editor as a simple horizontal line.<br /><br />The text displayed will depend on the options chosen and may be either the title, alternate text (if provided) or page numbers. <br /><br />The HTML usage is:<br /><hr class="system-pagebreak" /><br /><hr class="system-pagebreak" title="The page title" /> or <br /><hr class="system-pagebreak" alt="The first page" /> or <br /><hr class="system-pagebreak" title="The page title" alt="The first page" /> or <br /><hr class="system-pagebreak" alt="The first page" title="The page title" />" PKb��\��z(language/en-GB/en-GB.com_wrapper.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_WRAPPER="Wrapper" COM_WRAPPER_XML_DESCRIPTION="Displays an iframe to wrap an external page or site into Joomla!" COM_WRAPPER_WRAPPER_VIEW_DEFAULT_DESC="Displays a URL in an iframe." COM_WRAPPER_WRAPPER_VIEW_DEFAULT_OPTION="Default" COM_WRAPPER_WRAPPER_VIEW_DEFAULT_TITLE="Iframe Wrapper" PKb��\�i����,language/en-GB/en-GB.plg_content_contact.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTENT_CONTACT="Content - Contact" PLG_CONTENT_CONTACT_XML_DESCRIPTION="Provides a link between the content author and the contact item that can be used for an Author Profile." PKb��\d���,language/en-GB/en-GB.plg_system_remember.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_REMEMBER_XML_DESCRIPTION="Provides remember me functionality. The cookie authentication plugin must be enabled for this plugin to function." PLG_SYSTEM_REMEMBER="System - Remember Me" PKb��\�-����(language/en-GB/en-GB.mod_toolbar.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_TOOLBAR="Toolbar" MOD_TOOLBAR_XML_DESCRIPTION="This module shows the toolbar icons used to control actions throughout the Administrator area." MOD_TOOLBAR_LAYOUT_DEFAULT="Default" PKb��\��`cc6language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_TWOFACTORAUTH_YUBIKEY="Two Factor Authentication - YubiKey" PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from http://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." PKb��\��h6>>3language/en-GB/en-GB.plg_content_pagenavigation.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTENT_PAGENAVIGATION="Content - Page Navigation" PLG_PAGENAVIGATION_FIELD_DISPLAY_DESC="Choose what to display as the link text." PLG_PAGENAVIGATION_FIELD_DISPLAY_LABEL="Link Text" PLG_PAGENAVIGATION_FIELD_POSITION_DESC="The position of the <em>Page Navigation</em> function on the viewed page in relation to the text." PLG_PAGENAVIGATION_FIELD_POSITION_LABEL="Position" PLG_PAGENAVIGATION_FIELD_RELATIVE_DESC="Assigns the relative location for the Position parameter. Text will place it directly above or below the article content. Full Article will place it above or below the full display including title and readmore." PLG_PAGENAVIGATION_FIELD_RELATIVE_LABEL="Relative To" PLG_PAGENAVIGATION_FIELD_VALUE_ABOVE="Above" PLG_PAGENAVIGATION_FIELD_VALUE_ARTICLE="Full Article" PLG_PAGENAVIGATION_FIELD_VALUE_BELOW="Below" PLG_PAGENAVIGATION_FIELD_VALUE_NEXTPREV="Next/Previous (static text)" PLG_PAGENAVIGATION_FIELD_VALUE_TEXT="Text" PLG_PAGENAVIGATION_FIELD_VALUE_TITLE="Title of the Article" PLG_PAGENAVIGATION_XML_DESCRIPTION="Enables you to add <em>Next & Previous</em> functionality to an Article." PKb��\_W�5>>#language/en-GB/en-GB.mod_logged.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_LOGGED="Logged-in Users" MOD_LOGGED_ADMINISTRATOR="Administrator" MOD_LOGGED_EDIT_USER="Edit user" MOD_LOGGED_FIELD_COUNT_DESC="The number of items to display (default 5)." MOD_LOGGED_FIELD_COUNT_LABEL="Count" MOD_LOGGED_FIELD_NAME_DESC="Displays name or username." MOD_LOGGED_LAST_ACTIVITY="Last Activity" MOD_LOGGED_LOGOUT="Logout" MOD_LOGGED_NAME="Name" MOD_LOGGED_SITE="Site" MOD_LOGGED_TITLE="Last Logged-in Users" MOD_LOGGED_TITLE_1="Last Logged-in User" MOD_LOGGED_TITLE_MORE="Last %s Logged-in Users" MOD_LOGGED_XML_DESCRIPTION="This module shows a list of the currently Logged-in Users." PKb��\�##!language/en-GB/en-GB.mod_menu.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_MENU="Administrator Menu" MOD_MENU_CLEAR_CACHE="Clear Cache" MOD_MENU_COMPONENTS="Components" MOD_MENU_COM_CONTENT="Content" MOD_MENU_COM_CONTENT_ARTICLE_MANAGER="Articles" MOD_MENU_COM_CONTENT_CATEGORY_MANAGER="Categories" MOD_MENU_COM_CONTENT_FEATURED="Featured Articles" MOD_MENU_COM_CONTENT_NEW_ARTICLE="Add New Article" MOD_MENU_COM_CONTENT_NEW_CATEGORY="Add New Category" MOD_MENU_COM_USERS="Users" MOD_MENU_COM_USERS_ADD_GROUP="Add New Group" MOD_MENU_COM_USERS_ADD_LEVEL="Add New Access Level" MOD_MENU_COM_USERS_ADD_USER="Add New User" MOD_MENU_COM_USERS_GROUPS="Groups" MOD_MENU_COM_USERS_LEVELS="Access Levels" MOD_MENU_COM_USERS_USERS="Users" MOD_MENU_COM_USERS_USER_MANAGER="Manage" MOD_MENU_COM_USERS_ADD_NOTE="Add User Note" MOD_MENU_COM_USERS_NOTES="User Notes" MOD_MENU_COM_USERS_NOTE_CATEGORIES="User Note Categories" MOD_MENU_CONFIGURATION="Global Configuration" MOD_MENU_CONTROL_PANEL="Control Panel" MOD_MENU_EXTENSIONS_EXTENSIONS="Extensions" MOD_MENU_EXTENSIONS_EXTENSION_MANAGER="Manage" MOD_MENU_EXTENSIONS_LANGUAGE_MANAGER="Language(s)" MOD_MENU_EXTENSIONS_MODULE_MANAGER="Modules" MOD_MENU_EXTENSIONS_PLUGIN_MANAGER="Plugins" MOD_MENU_EXTENSIONS_TEMPLATE_MANAGER="Templates" MOD_MENU_FIELD_FORUMURL_DESC="Enter the URL to a forum other than the default." MOD_MENU_FIELD_FORUMURL_LABEL="Custom Support Forum" MOD_MENU_FIELD_SHOWHELP="Help Menu" MOD_MENU_FIELD_SHOWHELP_DESC="Show or hide the Help menu which includes links to various joomla.org sites useful to users." MOD_MENU_FIELD_SHOWNEW="Add New Shortcuts" MOD_MENU_FIELD_SHOWNEW_DESC="Show or hide various 'Add New ...' shortcuts against users, groups, access levels, articles and categories." MOD_MENU_GLOBAL_CHECKIN="Global Check-in" MOD_MENU_HELP="Help" MOD_MENU_HELP_COMMUNITY="Community Portal" MOD_MENU_HELP_CURRENT="Help with this page" MOD_MENU_HELP_DEVELOPER="Developer Resources" MOD_MENU_HELP_DOCUMENTATION="Documentation Wiki" MOD_MENU_HELP_EXTENSIONS="Joomla! Extensions" MOD_MENU_HELP_JOOMLA="Joomla! Help" MOD_MENU_HELP_LINKS="Useful Joomla! links" MOD_MENU_HELP_RESOURCES="Joomla! Resources" MOD_MENU_HELP_SECURITY="Security Centre" MOD_MENU_HELP_SHOP="Joomla! Shop" MOD_MENU_HELP_SUPPORT_OFFICIAL_FORUM="Official Support Forum" ; the string below will be used if the localised sample data contains a URL for the desired community forum or if the 'Custom Support Forum' field parameter in the Administrator Menu module contains a URL MOD_MENU_HELP_SUPPORT_CUSTOM_FORUM="Custom Support Forum" ; the string below will be used if MOD_MENU_HELP_SUPPORT_OFFICIAL_LANGUAGE_FORUM_VALUE has a value, i.e the # of the specific language forum in forum.joomla.org MOD_MENU_HELP_SUPPORT_OFFICIAL_LANGUAGE_FORUM="Official [language] forum" MOD_MENU_HELP_SUPPORT_OFFICIAL_LANGUAGE_FORUM_VALUE="" MOD_MENU_HELP_TRANSLATIONS="Joomla! Translations" MOD_MENU_HELP_XCHANGE="Stack Exchange" MOD_MENU_HOME_DEFAULT="Home" MOD_MENU_HOME_MULTIPLE="Warning! Multiple homes!" MOD_MENU_LOGOUT="Logout" MOD_MENU_MASS_MAIL_USERS="Mass Mail Users" MOD_MENU_MEDIA_MANAGER="Media" MOD_MENU_MENUS="Menus" MOD_MENU_MENU_MANAGER="Manage" MOD_MENU_MENU_MANAGER_NEW_MENU="Add New Menu" MOD_MENU_MENU_MANAGER_NEW_MENU_ITEM="Add New Menu Item" MOD_MENU_NEW_PRIVATE_MESSAGE="New Private Message" MOD_MENU_PURGE_EXPIRED_CACHE="Clear Expired Cache" MOD_MENU_READ_PRIVATE_MESSAGES="Read Private Messages" MOD_MENU_SETTINGS="Settings" MOD_MENU_MAINTENANCE="Maintenance" MOD_MENU_SYSTEM_INFORMATION="System Information" MOD_MENU_SYSTEM="System" MOD_MENU_TOOLS="Tools" MOD_MENU_USER_PROFILE="My Profile" MOD_MENU_XML_DESCRIPTION="This module shows the main administrator navigation module." PKb��\rMx�7�7$language/en-GB/en-GB.com_content.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CATEGORIES_CATEGORY_EDIT_TITLE="Article: Edit Category" COM_CONTENT="Articles" COM_CONTENT_ACCESS_DELETE_DESC="New setting for <strong>delete actions</strong> on this article and the calculated setting based on the parent category and group permissions." COM_CONTENT_ACCESS_EDIT_DESC="New setting for <strong>edit actions</strong> on this article and the calculated setting based on the parent category and group permissions." COM_CONTENT_ACCESS_EDITSTATE_DESC="New setting for <strong>edit state actions</strong> on this article and the calculated setting based on the parent category and group permissions." COM_CONTENT_ARTICLE_CONTENT="Content" COM_CONTENT_ARTICLE_DETAILS="Article Details" COM_CONTENT_ARTICLES_TITLE="Articles" COM_CONTENT_ATTRIBS_ARTICLE_SETTINGS_LABEL="Options" COM_CONTENT_ATTRIBS_FIELDSET_LABEL="Options" ; COM_CONTENT_BATCH_MENU_LABEL is deprecated, use JLIB_HTML_BATCH_MENU_LABEL instead. COM_CONTENT_BATCH_MENU_LABEL="To Move or Copy your selection please select a Category." COM_CONTENT_BATCH_OPTIONS="Batch process the selected articles" COM_CONTENT_BATCH_TIP="If a category is selected for move/copy, any actions selected will be applied to the copied or moved articles. Otherwise, all actions are applied to the selected articles." COM_CONTENT_CHANGE_ARTICLE="Select or Change article" COM_CONTENT_CHANGE_ARTICLE_BUTTON="Select/Change" COM_CONTENT_CHOOSE_CATEGORY_DESC="Select a parent category." COM_CONTENT_CONFIG_ARTICLE_SETTINGS_DESC="These settings apply for article layouts unless they are changed for a specific menu item." COM_CONTENT_CONFIG_BLOG_SETTINGS_DESC="These settings apply for blog or featured layouts unless they are changed for a specific menu item." COM_CONTENT_CONFIG_BLOG_SETTINGS_LABEL="Blog/Featured Layouts" COM_CONTENT_CONFIG_CATEGORIES_SETTINGS_DESC="These settings apply for Articles Categories Options, unless they are changed by the individual category or menu settings." COM_CONTENT_CONFIG_CATEGORY_SETTINGS_DESC="These settings apply for Articles Category Options unless they are changed by the individual category or menu settings." COM_CONTENT_CONFIG_EDITOR_LAYOUT="These options control the layout of the article editing page." COM_CONTENT_CONFIG_INTEGRATION_SETTINGS_DESC="These settings determine how the Article Component will integrate with other extensions." COM_CONTENT_CONFIG_LIST_SETTINGS_DESC="These settings apply for List Layouts Options unless they are changed for a specific menu item or category." COM_CONTENT_CONFIGURATION="Articles: Options" COM_CONTENT_CREATE_ARTICLE_CATEGORY_LABEL="Default Category" COM_CONTENT_CREATE_ARTICLE_CATEGORY_DESC="If set to 'Yes', this page will only let you create articles in the category selected below." COM_CONTENT_DRILL_CATEGORIES_LABEL="List or Blog: after choosing the display,<br />make sure you define the Options in the desired layout." COM_CONTENT_DRILL_DOWN_LAYOUT_DESC="When drilling down to a category, whether to show articles in a list or blog layout." COM_CONTENT_DRILL_DOWN_LAYOUT_LABEL="List or Blog Layout" COM_CONTENT_EDIT_ARTICLE="Edit Article" COM_CONTENT_EDITORCONFIG_FIELDSET_LABEL="Configure Edit Screen" COM_CONTENT_EDITING_LAYOUT="Editing Layout" COM_CONTENT_ERROR_ALL_LANGUAGE_ASSOCIATED="A content item set to All languages can't be associated. Associations have not been set." COM_CONTENT_FEATURED="Featured Article" COM_CONTENT_FEATURED_ARTICLES="Featured Articles" COM_CONTENT_FEATURED_CATEGORIES_DESC="Optional list of categories. If selected, only featured articles from the selected categories will show. Use Ctrl+Click to select or unselect." COM_CONTENT_FEATURED_CATEGORIES_LABEL="Select Categories" COM_CONTENT_FEATURED_ORDER="Featured Articles Order" COM_CONTENT_FEATURED_TITLE="Articles: Featured" COM_CONTENT_FIELD_ARTICLETEXT_DESC="Enter the article content in the text area." COM_CONTENT_FIELD_ARTICLETEXT_LABEL="Article Text" COM_CONTENT_FIELD_CREATED_BY_ALIAS_DESC="Enter an alias to be displayed instead of the name of the user who created the article." COM_CONTENT_FIELD_CREATED_BY_ALIAS_LABEL="Created by Alias" COM_CONTENT_FIELD_CREATED_BY_DESC="Select the name of the user who created the article." COM_CONTENT_FIELD_CREATED_BY_LABEL="Created By" COM_CONTENT_FIELD_CREATED_DESC="Created date." COM_CONTENT_FIELD_CREATED_LABEL="Created Date" COM_CONTENT_FIELD_FEATURED_DESC="Assign the article to the featured blog layout." COM_CONTENT_FIELD_FULL_DESC="Select or upload an image for the single article display." COM_CONTENT_FIELD_FULL_LABEL="Full Article Image" COM_CONTENT_FIELD_FULLTEXT="Full text" COM_CONTENT_FIELD_HITS_DESC="Number of hits for this article." COM_CONTENT_FIELD_IMAGE_DESC="The image to be displayed." COM_CONTENT_FIELD_IMAGE_ALT_DESC="Alternative text used for visitors without access to images. Replaced with caption text if it is present." COM_CONTENT_FIELD_IMAGE_ALT_LABEL="Alt Text" COM_CONTENT_FIELD_IMAGE_CAPTION_DESC="Caption attached to the image." COM_CONTENT_FIELD_IMAGE_CAPTION_LABEL="Caption" COM_CONTENT_FIELD_IMAGE_OPTIONS="Image Options" COM_CONTENT_FIELD_INFOBLOCK_POSITION_DESC="Puts the article information block above or below the text or splits it into two separate blocks, one above and the other below." COM_CONTENT_FIELD_INFOBLOCK_POSITION_LABEL="Position of Article Info" COM_CONTENT_FIELD_INTRO_DESC="Image for the intro text layouts such as blogs and featured." COM_CONTENT_FIELD_INTRO_LABEL="Intro Image" COM_CONTENT_FIELD_INTROTEXT="Intro Text" COM_CONTENT_FIELD_LANGUAGE_DESC="The language that the article is assigned to." COM_CONTENT_FIELD_MODIFIED_DESC="The date and time that the article was last modified." COM_CONTENT_FIELD_OPTION_ABOVE="Above" COM_CONTENT_FIELD_OPTION_BELOW="Below" COM_CONTENT_FIELD_OPTION_SPLIT="Split" COM_CONTENT_FIELD_PUBLISH_DOWN_DESC="An optional date to Finish Publishing the article." COM_CONTENT_FIELD_PUBLISH_DOWN_LABEL="Finish Publishing" COM_CONTENT_FIELD_PUBLISH_UP_DESC="An optional date to Start Publishing the article." COM_CONTENT_FIELD_PUBLISH_UP_LABEL="Start Publishing" COM_CONTENT_FIELD_SELECT_ARTICLE_DESC="Select the desired article from the list." COM_CONTENT_FIELD_SELECT_ARTICLE_LABEL="Select Article" COM_CONTENT_FIELD_SHOW_CAT_TAGS_DESC="Show the tags for the category." COM_CONTENT_FIELD_SHOW_CAT_TAGS_LABEL="Show Tags" COM_CONTENT_FIELD_SHOW_TAGS_DESC="Show the tags for each article." COM_CONTENT_FIELD_SHOW_TAGS_LABEL="Show Tags" COM_CONTENT_FIELD_URL_DESC="The actual link to which users will be redirected." COM_CONTENT_FIELD_URL_LINK_TEXT_DESC="Text to display for the link." COM_CONTENT_FIELD_URL_LINK_TEXT_LABEL="Link Text" COM_CONTENT_FIELD_URLA_LABEL="Link A" COM_CONTENT_FIELD_URLA_LINK_TEXT_LABEL="Link A Text" COM_CONTENT_FIELD_URLB_LABEL="Link B" COM_CONTENT_FIELD_URLB_LINK_TEXT_LABEL="Link B Text" COM_CONTENT_FIELD_URLC_LABEL="Link C" COM_CONTENT_FIELD_URLC_LINK_TEXT_LABEL="Link C Text" COM_CONTENT_FIELD_URLS_OPTIONS="URL Options" COM_CONTENT_FIELD_URLSPOSITION_LABEL="Positioning of the Links" COM_CONTENT_FIELD_URLSPOSITION_DESC="Display the links above or below the content." COM_CONTENT_FIELD_VALUE_USE_ARTICLE_SETTINGS="Use Article Settings" COM_CONTENT_FIELD_VERSION_DESC="A count of the number of times this article has been revised." COM_CONTENT_FIELD_VERSION_LABEL="Revision" COM_CONTENT_FIELD_XREFERENCE_DESC="An optional reference used to link to external data sources." COM_CONTENT_FIELD_XREFERENCE_LABEL="External Reference" COM_CONTENT_FIELDSET_PUBLISHING="Publishing" COM_CONTENT_FIELDSET_RULES="Permissions" COM_CONTENT_FIELDSET_URLS_AND_IMAGES="Images and links" COM_CONTENT_FILTER_SEARCH_DESC="Search title or alias. Prefix with ID: to search for an article ID." COM_CONTENT_FLOAT_DESC="Controls placement of the image." COM_CONTENT_FLOAT_FULLTEXT_LABEL="Full Text Image Float" COM_CONTENT_FLOAT_LABEL="Image Float" COM_CONTENT_FLOAT_INTRO_LABEL="Intro Image Float" COM_CONTENT_HEADING_ASSOCIATION="Association" COM_CONTENT_ID_LABEL="ID" COM_CONTENT_ITEM_ASSOCIATIONS_FIELDSET_LABEL="Content Item Associations" COM_CONTENT_ITEM_ASSOCIATIONS_FIELDSET_DESC="Multilingual only! This choice will only display if the Language Filter parameter 'Item Associations' is set to 'Yes'. Choose a content item for the target language. This association will let the Language Switcher module redirect to the associated content item in another language. If used, make sure to display the Language switcher module on the concerned pages. A content item set to language 'All' can't be associated." COM_CONTENT_LEFT="Left" COM_CONTENT_MONTH="Month" COM_CONTENT_N_ITEMS_ARCHIVED="%s articles archived." COM_CONTENT_N_ITEMS_ARCHIVED_1="%s article archived." COM_CONTENT_N_ITEMS_CHECKED_IN_0="No article successfully checked in." COM_CONTENT_N_ITEMS_CHECKED_IN_1="%d article successfully checked in." COM_CONTENT_N_ITEMS_CHECKED_IN_MORE="%d articles successfully checked in." COM_CONTENT_N_ITEMS_DELETED="%s articles deleted." COM_CONTENT_N_ITEMS_DELETED_1="%s article deleted." COM_CONTENT_N_ITEMS_FEATURED="%s articles featured." COM_CONTENT_N_ITEMS_FEATURED_1="%s article featured." COM_CONTENT_N_ITEMS_PUBLISHED="%s articles published." COM_CONTENT_N_ITEMS_PUBLISHED_1="%s article published." COM_CONTENT_N_ITEMS_TRASHED="%s articles trashed." COM_CONTENT_N_ITEMS_TRASHED_1="%s article trashed." COM_CONTENT_N_ITEMS_UNFEATURED="%s articles unfeatured." COM_CONTENT_N_ITEMS_UNFEATURED_1="%s article unfeatured." COM_CONTENT_N_ITEMS_UNPUBLISHED="%s articles unpublished." COM_CONTENT_N_ITEMS_UNPUBLISHED_1="%s article unpublished." COM_CONTENT_NEW_ARTICLE="New Article" COM_CONTENT_NO_ARTICLES_DESC="If Show, the message 'There are no articles in this category' will display when there are no articles in the category or when 'Empty Categories' is set to show." COM_CONTENT_NO_ARTICLES_LABEL="No Articles Message" COM_CONTENT_NO_ITEM_SELECTED="Please first make a selection from the list." COM_CONTENT_NONE="None" COM_CONTENT_NUMBER_CATEGORY_ITEMS_DESC="If Show, the number of articles in the category will show." COM_CONTENT_NUMBER_CATEGORY_ITEMS_LABEL="# Articles in Category" COM_CONTENT_PAGE_ADD_ARTICLE="Articles: New" COM_CONTENT_PAGE_EDIT_ARTICLE="Articles: Edit" COM_CONTENT_PAGE_VIEW_ARTICLE="Articles: View" COM_CONTENT_PAGEBREAK_DOC_TITLE="Page Break" COM_CONTENT_PAGEBREAK_INSERT_BUTTON="Insert Page Break" COM_CONTENT_PAGEBREAK_TITLE="Page Title:" COM_CONTENT_PAGEBREAK_TOC="Table of Contents Alias:" COM_CONTENT_RIGHT="Right" COM_CONTENT_SAVE_SUCCESS="Article successfully saved." COM_CONTENT_SAVE_WARNING="Alias already existed so a number was added at the end. You can re-edit the article to customise the alias." COM_CONTENT_SELECT_AN_ARTICLE="Select an Article" COM_CONTENT_SHARED_DESC="These settings apply for Shared Options in List, Blog and Featured unless they are changed by the menu settings." COM_CONTENT_SHARED_LABEL="Shared" COM_CONTENT_SHOW_ARTICLE_OPTIONS_DESC="Show or hide article options slider in the Backend article edit view. These options allow overriding of the global options." COM_CONTENT_SHOW_ARTICLE_OPTIONS_LABEL="Show Article Options" COM_CONTENT_SHOW_EMPTY_CATEGORIES_DESC="If Show, empty categories will display. A category is only empty - if it has no articles or subcategories." COM_CONTENT_SHOW_IMAGES_URLS_BACK_DESC="Show or hide fields to insert images and links in the Administrator." COM_CONTENT_SHOW_IMAGES_URLS_BACK_LABEL="Administrator Images and Links" COM_CONTENT_SHOW_IMAGES_URLS_FRONT_DESC="Show or hide fields to insert images and links when Frontend editing." COM_CONTENT_SHOW_IMAGES_URLS_FRONT_LABEL="Frontend Images and Links" COM_CONTENT_SHOW_PUBLISHING_OPTIONS_DESC="Show or hide the publishing options slider in the article edit view. These options allow changes in dates and author identities." COM_CONTENT_SHOW_PUBLISHING_OPTIONS_LABEL="Show Publishing Options" COM_CONTENT_SLIDER_EDITOR_CONFIG="Configure Edit Screen" COM_CONTENT_SUBMENU_CATEGORIES="Categories" COM_CONTENT_SUBMENU_FEATURED="Featured Articles" COM_CONTENT_TIP_ASSOCIATION="Associated articles" COM_CONTENT_TIP_ASSOCIATED_LANGUAGE="%s %s (%s)" COM_CONTENT_TOGGLE_TO_FEATURE="Toggle to change article state to 'Featured'" COM_CONTENT_TOGGLE_TO_UNFEATURE="Toggle to change article state to 'Unfeatured'" COM_CONTENT_UNFEATURED="Unfeatured Article" COM_CONTENT_URL_FIELD_BROWSERNAV_LABEL="URL Target Window" COM_CONTENT_URL_FIELD_BROWSERNAV_DESC="Target browser window when the menu item is selected." COM_CONTENT_URL_FIELD_A_BROWSERNAV_LABEL="URL A Target Window" COM_CONTENT_URL_FIELD_B_BROWSERNAV_LABEL="URL B Target Window" COM_CONTENT_URL_FIELD_C_BROWSERNAV_LABEL="URL C Target Window" COM_CONTENT_WARNING_PROVIDE_VALID_NAME="Please provide a valid, non-blank title." COM_CONTENT_XML_DESCRIPTION="Article management component." JGLOBAL_NO_ITEM_SELECTED="No articles selected" JLIB_APPLICATION_ERROR_BATCH_CANNOT_CREATE="You are not allowed to create new articles in this category." JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT="You are not allowed to edit one or more of these articles." JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings." JLIB_RULES_SETTING_NOTES_ITEM="1. Changes apply to this article only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings."PKb��\K���w�w�language/en-GB/en-GB.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 ; Common boolean values ; Note: YES, NO, TRUE, FALSE are reserved words in INI format. ; Double quotes in the values have to be formatted as "_QQ_". ; Keep this string on top JERROR_PARSING_LANGUAGE_FILE=" : error(s) in line(s) %s" J1="1" J2="2" J3="3" J4="4" J5="5" J6="6" J7="7" J8="8" J9="9" J10="10" J15="15" J20="20" J25="25" J30="30" J50="50" J75="75" J100="100" J150="150" J200="200" J250="250" J300="300" JH1="h1" JH2="h2" JH3="h3" JH4="h4" JH5="h5" JH6="h6" ERROR="Error" MESSAGE="Message" NOTICE="Notice" WARNING="Warning" JADMINISTRATION="Administration" JADMINISTRATOR="Administrator" JALL="All" JALL_LANGUAGE="All" JAPPLY="Save" JARCHIVED="Archived" JAUTHOR="Author" JAUTHOR_ASC="Author ascending" JAUTHOR_DESC="Author descending" JASSOCIATIONS_ASC="Associations ascending" JASSOCIATIONS_DESC="Associations descending" JCANCEL="Cancel" JCATEGORIES="Categories" JCATEGORY="Category" JCATEGORY_ASC="Category ascending" JCATEGORY_DESC="Category descending" JCLEAR="Clear" JCLIENT="Location" JCONFIG_PERMISSIONS_DESC="Default permissions used for all content in this component." JCONFIG_PERMISSIONS_LABEL="Permissions" JCURRENT="Current" JDATE="Date" JDATE_ASC="Date ascending" JDATE_DESC="Date descending" JDEFAULT="Default" JDEFAULTLANGUAGE="Language - Default" JDETAILS="Details" JDISABLED="Disabled" JENABLED="Enabled" JFALSE="False" JFEATURED="Featured" JFEATURED_ASC="Featured ascending" JFEATURED_DESC="Featured descending" JUNFEATURED="Unfeatured" JFEATURE="Feature" JUNFEATURE="Unfeature" JHELP="Help" JHIDE="Hide" JINVALID_TOKEN="The most recent request was denied because it contained an invalid security token. Please refresh the page and try again." JLOGIN="Log in" JLOGOUT="Log out" JMODIFY="Modify" JNEVER="Never" JNEXT="Next" JNO="No" JNONE="None" JOFF="Off" JON="On" JONLY="Only" JOPTIONS="Options" JPREV="Prev" JPREVIOUS="Previous" JPROTECTED="Protected" JPUBLISHED="Published" JRECORD_NUMBER="Record Number" JREGISTER="Register" JORDERINGDISABLED="Please sort by order to enable reordering" JSAVE="Save & Close" JSELECT="Select" JSTATUS="Status" JSTATUS_ASC="Status ascending" JSTATUS_DESC="Status descending" JSHOW="Show" JSITE="Site" JSUBMIT="Submit" JTAG="Tags" JTAG_DESC="Assign tags to content items. You may select a tag from the pre-defined list or enter your own by typing the name in the field and pressing enter." JTRASH="Trash" JTRASHED="Trashed" JTRUE="True" JUNARCHIVE="Remove from archive status" JUNDEFINED="Undefined" JUNPROTECTED="Unprotected" JUNPUBLISHED="Unpublished" JVERSION="Version" JYES="Yes" JACTIONS="Actions for: %s" JACTION_ADMIN="Configure ACL & Options" JACTION_ADMIN_COMPONENT_DESC="Allows users in the group to edit the options and permissions of this extension." JACTION_ADMIN_GLOBAL="Super User" JACTION_ADMIN_GLOBAL_DESC="Allows users in the group to perform any action regardless of the settings." JACTION_COMPONENT_SETTINGS="Component Settings" JACTION_CREATE="Create" JACTION_CREATE_COMPONENT_DESC="Allows users in the group to create any content in this extension." JACTION_DELETE="Delete" JACTION_DELETE_COMPONENT_DESC="Allows users in the group to delete any content in this extension." JACTION_EDIT="Edit" JACTION_EDIT_COMPONENT_DESC="Allows users in the group to edit any content in this extension." JACTION_EDITOWN="Edit Own" JACTION_EDITOWN_COMPONENT_DESC="Allows users in the group to edit any content they submitted in this extension." JACTION_EDITSTATE="Edit State" JACTION_EDITSTATE_COMPONENT_DESC="Allows users in the group to change the state of any content in this extension." JACTION_LOGIN_ADMIN="Administrator Login" JACTION_LOGIN_OFFLINE="Offline Access" JACTION_LOGIN_SITE="Site Login" JACTION_MANAGE="Access Administration Interface" JACTION_MANAGE_COMPONENT_DESC="Allows users in the group to access the administration interface for this extension." JACTION_OPTIONS="Configure Options Only" JACTION_OPTIONS_COMPONENT_DESC="Allows users in the group to edit the options except the permissions of this extension." JBROWSERTARGET_MODAL="Modal" JBROWSERTARGET_NEW="Open in new window" JBROWSERTARGET_PARENT="Open in parent window" JBROWSERTARGET_POPUP="Open in popup" JERROR_ALERTNOAUTHOR="You are not authorised to view this resource." JERROR_ALERTNOTEMPLATE="The template for this display is not available." JERROR_AN_ERROR_HAS_OCCURRED="An error has occurred." JERROR_CORE_CREATE_NOT_PERMITTED="Create not permitted." JERROR_CORE_DELETE_NOT_PERMITTED="Delete not permitted." JERROR_COULD_NOT_FIND_TEMPLATE="Could not find template "_QQ_"%s"_QQ_"." JERROR_INVALID_CONTROLLER="Invalid controller" JERROR_INVALID_CONTROLLER_CLASS="Invalid controller class" JERROR_LOADFILE_FAILED="Error loading form file" JERROR_LOADING_MENUS="Error loading Menus: %s" JERROR_LOGIN_DENIED="You do not have access to the Administrator section of this site." JERROR_MAGIC_QUOTES="Your host needs to disable magic_quotes_gpc to run this version of Joomla!" JERROR_NO_ITEMS_SELECTED="No item(s) selected." JERROR_NOLOGIN_BLOCKED="Login denied! Your account has either been blocked or you have not activated it yet." JERROR_SENDING_EMAIL="Email could not be sent." JERROR_SESSION_STARTUP="Error initialising the session." JERROR_SAVE_FAILED="Could not save data. Error: %s" JFIELD_ACCESS_DESC="The access level group that is allowed to view this item." JFIELD_ACCESS_LABEL="Access" JFIELD_ALIAS_DESC="The Alias will be used in the SEF URL. Leave this blank and Joomla will fill in a default value from the title. This value will depend on the SEO settings (Global Configuration->Site). <br />Using Unicode will produce UTF-8 aliases. You may also enter manually any UTF-8 character. Spaces and some forbidden characters will be changed to hyphens.<br />When using default transliteration it will produce an alias in lower case and with dashes instead of spaces. You may enter the Alias manually. Use lowercase letters and hyphens (-). No spaces or underscores are allowed. Default value will be a date and time if the title is typed in non-latin letters ." JFIELD_ALIAS_LABEL="Alias" JFIELD_ALIAS_PLACEHOLDER="Auto-generate from title" JFIELD_ALT_COMPONENT_LAYOUT_DESC="Use a different layout from the supplied component view or overrides in the templates." JFIELD_ALT_LAYOUT_LABEL="Alternative Layout" JFIELD_ALT_MODULE_LAYOUT_DESC="Use a different layout from the supplied module or overrides in the templates." JFIELD_ALT_PAGE_TITLE_DESC="An optional alternative page title to set that will change the TITLE tag in the HTML output." JFIELD_ALT_PAGE_TITLE_LABEL="Alternative Page Title" JFIELD_BASIS_LOGIN_DESCRIPTION_DESC="Text to display on login page." JFIELD_BASIS_LOGIN_DESCRIPTION_LABEL="Login Description Text" JFIELD_BASIS_LOGIN_DESCRIPTION_SHOW_DESC="Show or hide login description." JFIELD_BASIS_LOGIN_DESCRIPTION_SHOW_LABEL="Login Description" JFIELD_BASIS_LOGOUT_DESCRIPTION_DESC="Text for logout page." JFIELD_BASIS_LOGOUT_DESCRIPTION_LABEL="Logout Description Text" JFIELD_BASIS_LOGOUT_DESCRIPTION_SHOW_DESC="Show or hide logout description." JFIELD_BASIS_LOGOUT_DESCRIPTION_SHOW_LABEL="Logout Text" JFIELD_CATEGORY_DESC="The category that this item is assigned to." JFIELD_ENABLED_DESC="The enabled status of this item." JFIELD_KEY_REFERENCE_DESC="Used to store information referring to an external resource." JFIELD_KEY_REFERENCE_LABEL="Key Reference" JFIELD_LANGUAGE_DESC="Assign a language to this article." JFIELD_LANGUAGE_LABEL="Language" JFIELD_LOGIN_IMAGE_DESC="Select or upload an image to display on login page." JFIELD_LOGIN_IMAGE_LABEL="Login Image" JFIELD_LOGIN_REDIRECT_URL_DESC="If an URL is entered here, users will be redirected to it after login. The URL must not be an external one." JFIELD_LOGIN_REDIRECT_URL_LABEL="Login Redirect" JFIELD_LOGOUT_IMAGE_DESC="Select or upload an image to display on logout page." JFIELD_LOGOUT_IMAGE_LABEL="Logout Image" JFIELD_LOGOUT_REDIRECT_URL_DESC="If an URL is entered here, users will be redirected to it after logout. The URL must not be an external one." JFIELD_LOGOUT_REDIRECT_URL_LABEL="Logout Redirect" JFIELD_META_DESCRIPTION_DESC="An optional paragraph to be used as the description of the page in the HTML output. This will generally display in the results of search engines." JFIELD_META_DESCRIPTION_LABEL="Meta Description" JFIELD_META_KEYWORDS_DESC="An optional comma-separated list of keywords and/or phrases to be used in the HTML output." JFIELD_META_KEYWORDS_LABEL="Meta Keywords" JFIELD_META_RIGHTS_DESC="Describe what rights others have to use this content." JFIELD_META_RIGHTS_LABEL="Content Rights" JFIELD_METADATA_AUTHOR_DESC="The author of this content." JFIELD_METADATA_RIGHTS_DESC="Publication rights for the content." JFIELD_METADATA_RIGHTS_LABEL="Rights" JFIELD_METADATA_ROBOTS_DESC="Robots instructions." JFIELD_METADATA_ROBOTS_LABEL="Robots" JFIELD_METADATA_XREFERENCE_DESC="An optional reference used to link to external data sources." JFIELD_METADATA_XREFERENCE_LABEL="Cross Reference" JFIELD_MODULE_LANGUAGE_DESC="Assign a language to this module." JFIELD_NOTE_DESC="Note" JFIELD_NOTE_LABEL="Note" JFIELD_OPTION_NONE="None" JFIELD_ORDERING_DESC="Select the ordering." JFIELD_ORDERING_LABEL="Ordering" JFIELD_PARAMS_LABEL="Options" JFIELD_PLG_SEARCH_ALL_DESC="Indicate whether to include published items in the search." JFIELD_PLG_SEARCH_ALL_LABEL="Search Published" JFIELD_PLG_SEARCH_ARCHIVED_DESC="Indicate whether to include archived items in the search." JFIELD_PLG_SEARCH_ARCHIVED_LABEL="Search Archived" JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC="Sets the maximum number of results to return." JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL="Search Limit" JFIELD_PUBLISHED_DESC="Set publication status." JFIELD_READMORE_DESC="Add a custom text instead of Read More." JFIELD_READMORE_LABEL="Read More Text" JFIELD_SPACER_LABEL="<span style="_QQ_"width:auto"_QQ_"><hr /></span>" JFIELD_TITLE_DESC="Title" JFIELD_VERSION_HISTORY_DESC="This button allows you to open a window to view older versions of this item." JFIELD_VERSION_HISTORY_LABEL="Prior Versions" JFIELD_VERSION_HISTORY_SELECT="View Prior Versions" JFIELD_XREFERENCE_DESC="An optional field to allow this record to be cross-referenced to an external data system if required." JFIELD_XREFERENCE_LABEL="External Reference" JGLOBAL_ACROSS="Across" JGLOBAL_ACTION_PERMISSIONS_LABEL="Permissions" JGLOBAL_ACTION_PERMISSIONS_DESCRIPTION="Set the action permissions for this asset" JGLOBAL_ALL_ARTICLE="Max Levels Articles" JGLOBAL_ALL_LIST="Max Levels as List" JGLOBAL_ALLOW_COMMENTS_DESC="If Yes, viewers will be able to add and view comments for the article." JGLOBAL_ALLOW_COMMENTS_LABEL="Allow Comments" JGLOBAL_ALLOW_RATINGS_DESC="If Yes, viewers will be able to add and view ratings for the article." JGLOBAL_ALLOW_RATINGS_LABEL="Allow Ratings" JGLOBAL_ARCHIVE_ARTICLES_FIELD_INTROTEXTLIMIT_DESC="Please enter in a numeric character limit value. The introtext will be trimmed to the number of characters you enter." JGLOBAL_ARCHIVE_ARTICLES_FIELD_INTROTEXTLIMIT_LABEL="Intro text Limit" JGLOBAL_ARCHIVE_OPTIONS="Archive" JGLOBAL_ARTICLE_COUNT_DESC="Whether to show or hide a count of articles in each category." JGLOBAL_ARTICLE_COUNT_LABEL="Article Count" JGLOBAL_ARTICLE_MANAGER_ORDER="Ordering" JGLOBAL_ARTICLE_ORDER_DESC="The order that articles will show in." JGLOBAL_ARTICLE_ORDER_LABEL="Article Order" JGLOBAL_ARTICLES="Articles" JGLOBAL_AUTH_ACCESS_DENIED="Access Denied" JGLOBAL_AUTH_ACCESS_GRANTED="Access Granted" JGLOBAL_AUTH_BIND_FAILED="Failed binding to LDAP server" JGLOBAL_AUTH_CANCEL="Authentication cancelled" JGLOBAL_AUTH_CURL_NOT_INSTALLED="Curl isn't installed" JGLOBAL_AUTH_EMPTY_PASS_NOT_ALLOWED="Empty password not allowed." JGLOBAL_AUTH_FAIL="Authentication failed" JGLOBAL_AUTH_FAILED="Failed to authenticate: %s" JGLOBAL_AUTH_INCORRECT="Incorrect username/password" JGLOBAL_AUTH_INVALID_PASS="Username and password do not match or you do not have an account yet." JGLOBAL_AUTH_INVALID_SECRETKEY="The two factor authentication Secret Key is invalid." JGLOBAL_AUTH_NO_BIND="Unable to bind to LDAP" JGLOBAL_AUTH_NO_CONNECT="Unable to connect to LDAP server" JGLOBAL_AUTH_NO_REDIRECT="Could not redirect to server: %s" JGLOBAL_AUTH_NO_USER="Username and password do not match or you do not have an account yet." JGLOBAL_AUTH_NOT_CREATE_DIR="Could not create the FileStore folder %s. Please check the effective permissions." JGLOBAL_AUTH_PASS_BLANK="LDAP can't have blank password" JGLOBAL_AUTH_UNKNOWN_ACCESS_DENIED="Result Unknown. Access Denied" JGLOBAL_AUTH_USER_BLACKLISTED="User is blacklisted." JGLOBAL_AUTH_USER_NOT_FOUND="Unable to find user." JGLOBAL_AUTHOR_ALPHABETICAL="Author Alphabetical" JGLOBAL_AUTHOR_REVERSE_ALPHABETICAL="Author Reverse Alphabetical" JGLOBAL_AUTO="Auto" JGLOBAL_BATCH_MOVE_PARENT_NOT_FOUND="Can't find the destination parent for this move." JGLOBAL_BATCH_PROCESS="Process" JGLOBAL_BLOG="Blog" JGLOBAL_BLOG_LAYOUT_OPTIONS="Blog Layout" JGLOBAL_CATEGORIES_OPTIONS="Categories" JGLOBAL_CATEGORY_LAYOUT_DESC="Layout" JGLOBAL_CATEGORY_LAYOUT_LABEL="Choose a Layout" JGLOBAL_CATEGORY_MANAGER_ORDER="Category Order" JGLOBAL_CATEGORY_NOT_FOUND="Category not found" JGLOBAL_CATEGORY_OPTIONS="Category" JGLOBAL_CATEGORY_ORDER_DESC="The order that categories will show in." JGLOBAL_CATEGORY_ORDER_LABEL="Category Order" JGLOBAL_CENTER="Center" JGLOBAL_CHECK_ALL="Check All" JGLOBAL_CHOOSE_CATEGORY_DESC="Choose a category from the list." JGLOBAL_CHOOSE_CATEGORY_LABEL="Choose a Category" JGLOBAL_CLICK_TO_SORT_THIS_COLUMN="Select to sort by this column" JGLOBAL_CLICK_TO_TOGGLE_STATE="Select icon to toggle state." JGLOBAL_COPY="(copy)" JGLOBAL_CREATED="Created" JGLOBAL_CREATED_DATE="Created Date" JGLOBAL_DATE_FORMAT_DESC="Optional format string for showing the date. If left blank, it uses DATE_FORMAT_LC1 from your language file (for example, D M Y for day month year or you can use d-m-y for a short version eg. 10-07-10. See http://www.php.net/manual/en/function.date.php)." JGLOBAL_DATE_FORMAT_LABEL="Date Format" JGLOBAL_DESCRIPTION="Description" JGLOBAL_DISPLAY_NUM="Display #" JGLOBAL_DISPLAY_SELECT_DESC="Whether to show or hide the Display Select dropdown listbox." JGLOBAL_DISPLAY_SELECT_LABEL="Display Select" JGLOBAL_DOWN="Down" JGLOBAL_EDIT_ITEM="Edit item" JGLOBAL_EDIT_PREFERENCES="Edit Preferences" JGLOBAL_EMAIL="Email" JGLOBAL_EMPTY_CATEGORIES_DESC="Whether to show or hide categories that contain no articles and no subcategories." JGLOBAL_EMPTY_CATEGORIES_LABEL="Empty Categories" JGLOBAL_ERROR_INSUFFICIENT_BATCH_INFORMATION="Insufficient information to perform the batch operation" JGLOBAL_FEED_SHOW_READMORE_DESC="Displays a "Read More" link in the news feeds if Intro Text is set to Show." JGLOBAL_FEED_SHOW_READMORE_LABEL="Show "Read More"" JGLOBAL_FEED_SUMMARY_DESC="If set to Intro Text, only the Intro Text of each article will show in the news feed. If set to Full Text, the whole article will show in the news feed." JGLOBAL_FEED_SUMMARY_LABEL="For each feed item show" JGLOBAL_FIELD_CATEGORIES_CHOOSE_CATEGORY_DESC="Categories that are within this category will be displayed." JGLOBAL_FIELD_CATEGORIES_CHOOSE_CATEGORY_LABEL="Select a Top Level Category" JGLOBAL_FIELD_CATEGORIES_DESC_DESC="If you enter some text in this field, it will override the Top Level Category Description, if it has one." JGLOBAL_FIELD_CATEGORIES_DESC_LABEL="Top Level Category Description" JGLOBAL_FIELD_CREATED_BY_ALIAS_DESC="Uses another name than the author's for display." JGLOBAL_FIELD_CREATED_BY_ALIAS_LABEL="Author's Alias" JGLOBAL_FIELD_CREATED_BY_DESC="The user who created this." JGLOBAL_FIELD_CREATED_BY_LABEL="Created By" JGLOBAL_FIELD_CREATED_DESC="Created Date." JGLOBAL_FIELD_CREATED_LABEL="Created Date" JGLOBAL_FIELD_FIELD_CACHETIME_DESC="The number of minutes before the cache is refreshed." JGLOBAL_FIELD_FIELD_ORDERING_LABEL="Order" JGLOBAL_FIELD_FIELD_ORDERING_DESC="Order items will be displayed in." JGLOBAL_FIELD_ID_DESC="Record number in the database." JGLOBAL_FIELD_ID_LABEL="ID" JGLOBAL_FIELD_LAYOUT_DESC="Default layout to use for items." JGLOBAL_FIELD_LAYOUT_LABEL="Choose a Layout" JGLOBAL_FIELD_MODIFIED_LABEL="Modified Date" JGLOBAL_FIELD_MODIFIED_BY_DESC="The user who did the last modification." JGLOBAL_FIELD_MODIFIED_BY_LABEL="Modified By" JGLOBAL_FIELD_NUM_CATEGORY_ITEMS_DESC="Number of categories to display for each level." JGLOBAL_FIELD_NUM_CATEGORY_ITEMS_LABEL="Number of Categories" JGLOBAL_FIELD_PUBLISH_DOWN_DESC="An optional date to stop publishing." JGLOBAL_FIELD_PUBLISH_DOWN_LABEL="Finish Publishing" JGLOBAL_FIELD_PUBLISH_UP_DESC="An optional date to start publishing." JGLOBAL_FIELD_PUBLISH_UP_LABEL="Start Publishing" JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_DESC="Show description of the top level category or optionally override with the text from the description field found in menu item. If using Root as top level category, the description field has to be filled." JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_LABEL="Top Level Category Description" JGLOBAL_FIELD_VERSION_NOTE_DESC="Enter an optional note for this version of the item." JGLOBAL_FIELD_VERSION_NOTE_LABEL="Version Note" JGLOBAL_FIELDSET_ASSOCIATIONS="Associations" JGLOBAL_FIELDSET_DISPLAY_OPTIONS="Display" JGLOBAL_FIELDSET_IMAGE_OPTIONS="Images" JGLOBAL_FIELDSET_INTEGRATION="Integration" JGLOBAL_FIELDSET_METADATA_OPTIONS="Metadata" JGLOBAL_FIELDSET_OPTIONS="Options" JGLOBAL_FIELDSET_CONTENT="Content" JGLOBAL_FIELDSET_PUBLISHING="Publishing" JGLOBAL_FIELDSET_DESCRIPTION="Description" JGLOBAL_FIELDSET_ADVANCED="Advanced" JGLOBAL_FIELDSET_BASIC="Options" JGLOBAL_FILTER_ATTRIBUTES_DESC="3. List additional attributes, separating each attribute name with a space or comma. For example: <i>class,title,id</i>." JGLOBAL_FILTER_ATTRIBUTES_LABEL="Filter Attributes<sup>3</sup>" JGLOBAL_FILTER_CLIENT="- Select Location -" JGLOBAL_FILTER_FIELD_DESC="Whether to show a Filter field for the list. Select Hide to hide the filter field." JGLOBAL_FILTER_FIELD_LABEL="Filter Field" JGLOBAL_FILTER_GROUPS_DESC="This sets the user groups that you want filters applied to. Other groups will have no filtering performed." JGLOBAL_FILTER_GROUPS_LABEL="Filter Groups" JGLOBAL_FILTER_TAGS_DESC="2. List additional tags, separating each tag name with a space or comma. For example: <i>p,div,span</i>." JGLOBAL_FILTER_TAGS_LABEL="Filter Tags<sup>2</sup>" JGLOBAL_FILTER_TYPE_DESC="1. Black List allows all tags and attributes except for those in the black list.<br /><strong>--</strong> Tags for the Default Black List include: 'applet', 'body', 'bgsound', 'base', 'basefont', 'embed', 'frame', 'frameset', 'head', 'html', 'id', 'iframe', 'ilayer', 'layer', 'link', 'meta', 'name', 'object', 'script', 'style', 'title', 'xml'<br /><strong>--</strong> Attributes for the Default Black List include: 'action', 'background', 'codebase', 'dynsrc', 'lowsrc'<br /><strong>--</strong> You can black list additional tags and attributes by adding to the Filter Tags and Filter Attributes fields, separating each tag or attribute name with a comma.<br /><strong>--</strong> Custom Black List allows you to override the Default Black List. Add the tags and attributes to be black listed in the Filter Tags and Filter Attributes fields.</p><p>White List allows only the tags listed in the Filter Tags and Filter Attributes fields.</p><p>No HTML removes all HTML tags from the content when it is saved.</p><p>Please note that these settings work regardless of the editor that you are using. <br />Even if you are using a WYSIWYG editor, the filtering settings may strip additional tags and attributes prior to saving information in the database." JGLOBAL_FILTER_TYPE_LABEL="Filter Type<sup>1</sup>" JGLOBAL_FULL_TEXT="Full Text" JGLOBAL_GT=">" JGLOBAL_HELPREFRESH_BUTTON="Refresh" JGLOBAL_HISTORY_LIMIT_OPTIONS_DESC="The maximum number of old versions of an item to save. If zero, all old versions will be saved." JGLOBAL_HISTORY_LIMIT_OPTIONS_LABEL="Maximum Versions" JGLOBAL_HITS="Hits" JGLOBAL_HITS_ASC="Hits ascending" JGLOBAL_HITS_DESC="Hits descending" JGLOBAL_INDEX_FOLLOW="Index, Follow" JGLOBAL_INDEX_NOFOLLOW="Index, No follow" JGLOBAL_INHERIT="Inherit" JGLOBAL_INTEGRATION_LABEL="Integration" JGLOBAL_INTRO_TEXT="Intro Text" JGLOBAL_ISFREESOFTWARE="%s is free software released under the <a href="_QQ_"http://www.gnu.org/licenses/gpl-2.0.html"_QQ_" target="_QQ_"_blank"_QQ_">GNU General Public License</a>." JGLOBAL_KEEP_TYPING="Keep typing ..." JGLOBAL_LANGUAGE_VERSION_NOT_PLATFORM="Language pack does not match this Joomla! version. Some strings may be missing." JGLOBAL_LEAST_HITS="Least Hits" JGLOBAL_LEFT="Left" JGLOBAL_LINK_AUTHOR_DESC="If set to Yes, the Name of the article's Author will be linked to its contact page. You must create a contact linked to the author's user record, <strong>and the "Content - Contact" plugin must be enabled</strong>, for this to be in effect. This is a global setting but can be changed at the Category, Menu and Article levels." JGLOBAL_LINK_AUTHOR_LABEL="Link Author" JGLOBAL_LINK_CATEGORY_DESC="If set to Yes, and if Show Category is set to 'Show', the Category Title will link to a layout showing articles in that Category." JGLOBAL_LINK_CATEGORY_LABEL="Link Category" JGLOBAL_LINK_PARENT_CATEGORY_DESC="If set to Yes, and if Show Parent is set to 'Show', the Parent Category Title will link to a layout showing articles in that Category." JGLOBAL_LINK_PARENT_CATEGORY_LABEL="Link Parent" JGLOBAL_LINKED_TITLES_DESC="If set to Yes, the article title will be a link to the article." JGLOBAL_LINKED_TITLES_LABEL="Linked Titles" JGLOBAL_LIST="List" JGLOBAL_LIST_ALIAS="(<span>Alias</span>: %s)" JGLOBAL_LIST_ALIAS_NOTE="(<span>Alias</span>: %s, <span>Note</span>: %s)" JGLOBAL_LIST_AUTHOR_DESC="Whether to show article author in the list of articles." JGLOBAL_LIST_AUTHOR_LABEL="Show Author in List" JGLOBAL_LIST_HITS_DESC="Whether to show article hits in the list of articles." JGLOBAL_LIST_HITS_LABEL="Show Hits in List" JGLOBAL_LIST_LAYOUT_OPTIONS="List Layouts" JGLOBAL_LIST_NOTE="(<span>Note</span>: %s)" JGLOBAL_LIST_TITLE_DESC="If Show, Category Title will show in the list of categories." JGLOBAL_LIST_TITLE_LABEL="Category Title" JGLOBAL_LOOKING_FOR="Looking for" JGLOBAL_LT="<" JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC="The number of subcategory levels to display." JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL="Subcategory Levels" JGLOBAL_MAXLEVEL_DESC="Maximum number of levels of subcategories to show." JGLOBAL_MAXLEVEL_LABEL="Subcategory Levels" JGLOBAL_MENU_SELECTION="Menu Selection:" JGLOBAL_MODIFIED="Modified" JGLOBAL_MODIFIED_DATE="Modified Date" JGLOBAL_MOST_HITS="Most Hits" JGLOBAL_MOST_RECENT_FIRST="Most recent first" JGLOBAL_MULTI_COLUMN_ORDER_DESC="Order articles down or across columns." JGLOBAL_MULTI_COLUMN_ORDER_LABEL="Multi Column Order" JGLOBAL_MULTI_LEVEL="Multi Level" JGLOBAL_NEWITEMSFIRST_DESC="New items default to the first position. The ordering can be changed after this item is saved." JGLOBAL_NEWITEMSLAST_DESC="New items default to the last position. The ordering can be changed after this item is saved." JGLOBAL_NO_ITEM_SELECTED="No items selected" JGLOBAL_NO_ORDER="No Order" JGLOBAL_NOINDEX_FOLLOW="No index, follow" JGLOBAL_NOINDEX_NOFOLLOW="No index, no follow" JGLOBAL_NUM_COLUMNS_DESC="The number of columns in which to show Intro Articles. Normally 1, 2, or 3." JGLOBAL_NUM_COLUMNS_LABEL="# Columns" JGLOBAL_NUM_INTRO_ARTICLES_DESC="Number of articles to show after the leading article. Articles will be shown in columns." JGLOBAL_NUM_INTRO_ARTICLES_LABEL="# Intro Articles" JGLOBAL_NUM_LEADING_ARTICLES_DESC="Number of leading articles to display as full-width at the beginning of the page." JGLOBAL_NUM_LEADING_ARTICLES_LABEL="# Leading Articles" JGLOBAL_NUM_LINKS_DESC="Number of articles to display as links, normally below the Intro Articles." JGLOBAL_NUM_LINKS_LABEL="# Links" JGLOBAL_NUMBER_CATEGORY_ITEMS_DESC="If Show, the number of articles in the category will show." JGLOBAL_NUMBER_CATEGORY_ITEMS_LABEL="Show Article Count" JGLOBAL_NUMBER_ITEMS_LIST_DESC="Default number of articles to list on a page." JGLOBAL_NUMBER_ITEMS_LIST_LABEL="# Articles to List" JGLOBAL_NO_MATCHING_RESULTS="No Matching Results" JGLOBAL_OLDEST_FIRST="Oldest first" JGLOBAL_ORDER_ASCENDING="Ascending" JGLOBAL_ORDER_DESCENDING="Descending" JGLOBAL_ORDER_DIRECTION_LABEL="Direction" JGLOBAL_ORDER_DIRECTION_DESC="Sort order. Descending is highest to lowest. Ascending is lowest to highest." JGLOBAL_ORDERING="Article Order" JGLOBAL_ORDERING_DATE_DESC="If articles are ordered by date, which date to use." JGLOBAL_ORDERING_DATE_LABEL="Date for Ordering" JGLOBAL_OTPMETHOD_NONE="Disable Two Factor Authentication" JGLOBAL_PAGINATION_DESC="Show or hide Pagination support. Pagination provides page links at the bottom of the page that allow the User to navigate to additional pages. These are needed if the Information will not fit on one page." JGLOBAL_PAGINATION_LABEL="Pagination" JGLOBAL_PAGINATION_RESULTS_DESC="Show or hide pagination results information, for example, "Page 1 of 4"." JGLOBAL_PAGINATION_RESULTS_LABEL="Pagination Results" JGLOBAL_PASSWORD="Password" JGLOBAL_PASSWORD_RESET_REQUIRED="You are required to reset your password before proceeding." JGLOBAL_PERMISSIONS_ANCHOR="Set Permissions" JGLOBAL_PREVIEW="Preview" JGLOBAL_PUBLISHED_DATE="Published Date" JGLOBAL_RECORD_NUMBER="Record ID: %d" JGLOBAL_REMEMBER_ME="Remember Me" JGLOBAL_RIGHT="Right" JGLOBAL_ROOT="Root" JGLOBAL_ROOT_PARENT="- No parent -" JGLOBAL_SAVE_HISTORY_OPTIONS_DESC="Whether to automatically save old versions of an item. If set to Yes, old versions of items are saved automatically. When editing, you may restore from a previous version of the item." JGLOBAL_SAVE_HISTORY_OPTIONS_LABEL="Enable Versions" JGLOBAL_SECRETKEY="Secret Key" JGLOBAL_SECRETKEY_HELP="If you have enabled two factor authentication in your user account please enter your secret key. If you do not know what this means, you can leave this field blank." JGLOBAL_SELECT_ALLOW_DENY_GROUP="Change %s permission for %s group." JGLOBAL_SELECT_AN_OPTION="Select an option" JGLOBAL_SELECT_NO_RESULTS_MATCH="No results match" JGLOBAL_SELECT_SOME_OPTIONS="Select some options" JGLOBAL_SELECTION_ALL="Select All" JGLOBAL_SELECTION_INVERT="Toggle Selection" JGLOBAL_SELECTION_INVERT_ALL="Toggle All Selections" JGLOBAL_SELECTION_NONE="Clear Selection" JGLOBAL_SHOW_AUTHOR_DESC="If set to Show, the Name of the article's Author will be displayed. This is a global setting but can be changed at the Category, Menu and Article levels." JGLOBAL_SHOW_AUTHOR_LABEL="Show Author" JGLOBAL_SHOW_CATEGORY_DESC="If set to Show, the title of the article’s category will show." JGLOBAL_SHOW_CATEGORY_DESCRIPTION_DESC="Show or hide the description of the selected Category." JGLOBAL_SHOW_CATEGORY_DESCRIPTION_LABEL="Category Description" JGLOBAL_SHOW_CATEGORY_IMAGE_DESC="Show or hide the image of the selected Category." JGLOBAL_SHOW_CATEGORY_IMAGE_LABEL="Category Image" JGLOBAL_SHOW_CATEGORY_HEADING_TITLE_TEXT_LABEL="Show Subcategories Text" JGLOBAL_SHOW_CATEGORY_HEADING_TITLE_TEXT_DESC="If Show, the "Subcategories" will show as a subheading on the page. The subheading is usually displayed inside the "H3" tag." JGLOBAL_SHOW_CATEGORY_LABEL="Show Category" JGLOBAL_SHOW_CATEGORY_TITLE="Category Title" JGLOBAL_SHOW_CATEGORY_TITLE_DESC="If Show, the Category Title will show as a subheading on the page. The subheading is usually displayed inside the "H2" tag." JGLOBAL_SHOW_CREATE_DATE_DESC="If set to Show, the date and time an Article was created will be displayed. This a global setting but can be changed at Menu and Article levels." JGLOBAL_SHOW_CREATE_DATE_LABEL="Show Create Date" JGLOBAL_SHOW_DATE_DESC="Whether to show a date column in the list of articles. Select Hide to hide the date, or select which date you wish to show." JGLOBAL_SHOW_DATE_LABEL="Show Date" JGLOBAL_SHOW_EMAIL_ICON_DESC="Show or hide the email icon. This allows you to email an article." JGLOBAL_SHOW_EMAIL_ICON_LABEL="Show Email Icon" JGLOBAL_SHOW_EMPTY_CATEGORIES_DESC="If Show, empty categories will display. A category is only empty - if it has no items or subcategories." JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL="Empty Categories" JGLOBAL_SHOW_FEATURED_ARTICLES_DESC="Select to show, hide or only display featured articles." JGLOBAL_SHOW_FEATURED_ARTICLES_LABEL="Featured Articles" JGLOBAL_SHOW_FEED_LINK_DESC="Show or hide an RSS Feed Link. (A Feed Link will show up as a feed icon in the address bar of most modern browsers)." JGLOBAL_SHOW_FEED_LINK_LABEL="Show Feed Link" JGLOBAL_SHOW_FULL_DESCRIPTION="Show full description ..." JGLOBAL_SHOW_HEADINGS_DESC="Show or hide the headings in list layouts." JGLOBAL_SHOW_HEADINGS_LABEL="Table Headings" JGLOBAL_SHOW_HITS_DESC="If set to Show, the number of Hits on a particular Article will be displayed. This is a global setting but can be changed at the Category, Menu and Article levels." JGLOBAL_SHOW_HITS_LABEL="Show Hits" JGLOBAL_SHOW_ICONS_DESC="Print and email will utilise icons or text." JGLOBAL_SHOW_ICONS_LABEL="Show Icons" JGLOBAL_SHOW_INTRO_DESC="If set to Show, the Intro Text of the article will show when you drill down to the article. If set to Hide, only the part of the article after the "Read More" break will show." JGLOBAL_SHOW_INTRO_LABEL="Show Intro Text" JGLOBAL_SHOW_MODIFY_DATE_DESC="If set to Show, the date and time an Article was last modified will be displayed. This is a global setting but can be changed at the Category, Menu and Article levels." JGLOBAL_SHOW_MODIFY_DATE_LABEL="Show Modify Date" JGLOBAL_SHOW_NAVIGATION_DESC="If set to Show, shows a navigation link (Next, Previous) between articles." JGLOBAL_SHOW_NAVIGATION_LABEL="Show Navigation" JGLOBAL_SHOW_PARENT_CATEGORY_DESC="If set to Show, the title of the article’s parent category will show." JGLOBAL_SHOW_PARENT_CATEGORY_LABEL="Show Parent" JGLOBAL_SHOW_PRINT_ICON_DESC="Show or hide the Item Print button." JGLOBAL_SHOW_PRINT_ICON_LABEL="Show Print Icon" JGLOBAL_SHOW_PUBLISH_DATE_DESC="If set to Show, the date and time an Article was published will be displayed. This is a global setting but can be changed at the Category, Menu and Article levels." JGLOBAL_SHOW_PUBLISH_DATE_LABEL="Show Publish Date" JGLOBAL_SHOW_READMORE_DESC="If set to Show, the Read more ...Link will show if Main text has been provided for the Article." JGLOBAL_SHOW_READMORE_LABEL="Show "Read More"" JGLOBAL_SHOW_READMORE_TITLE_DESC="If set to show the title of the Article will be shown on the Read More button." JGLOBAL_SHOW_READMORE_TITLE_LABEL="Show Title with Read More" JGLOBAL_SHOW_READMORE_LIMIT_DESC="Set a limit of number of characters in Article Title to show in Read More button." JGLOBAL_SHOW_READMORE_LIMIT_LABEL="Read More Limit" JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC="Show or hide the subcategories descriptions." JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL="Subcategories Descriptions" JGLOBAL_SHOW_SUBCATEGORY_CONTENT_LABEL="Include Subcategories" JGLOBAL_SHOW_SUBCATEGORY_CONTENT_DESC="If None, only articles from this category will show. If a number, all articles from the category and the subcategories up to and including that level will show in the blog." JGLOBAL_SHOW_TAGS_DESC="Show the tags for this link." JGLOBAL_SHOW_TAGS_LABEL="Show Tags" JGLOBAL_SHOW_TITLE_DESC="If set to Show, the article title is shown." JGLOBAL_SHOW_TITLE_LABEL="Show Title" JGLOBAL_SHOW_UNAUTH_LINKS_DESC="If set to Yes, links to registered content will be shown even if you are not logged-in. You will need to log in to access the full item." JGLOBAL_SHOW_UNAUTH_LINKS_LABEL="Show Unauthorised Links" JGLOBAL_SHOW_VOTE_DESC="If set to show, a voting system will be enabled for Articles." JGLOBAL_SHOW_VOTE_LABEL="Show Voting" JGLOBAL_SINGLE_LEVEL="Single Level" JGLOBAL_SORT_BY="Sort Table By:" JGLOBAL_START_PUBLISH_AFTER_FINISH="Item start publishing date must be before finish publishing date" JGLOBAL_SUBHEADING_DESC="Optional text to show as a subheading." JGLOBAL_SUBHEADING_LABEL="Page Subheading" JGLOBAL_SUBMENU_CHECKIN="Check-in" JGLOBAL_SUBMENU_CLEAR_CACHE="Clear Cache" JGLOBAL_SUBMENU_PURGE_EXPIRED_CACHE="Clear Expired Cache" JGLOBAL_SUBSLIDER_BLOG_EXTENDED_LABEL="The option below gives the ability to include articles from subcategories in the Blog layout." JGLOBAL_SUBSLIDER_BLOG_LAYOUT_LABEL="If a field is left blank, global settings will be used." JGLOBAL_SUBSLIDER_DRILL_CATEGORIES_LABEL="These options are also used when you select <br />one of the category links, on the first page and/or thereafter,<br />unless they are changed for a specific menu item." JGLOBAL_TITLE="Title" JGLOBAL_TITLE_ASC="Title ascending" JGLOBAL_TITLE_DESC="Title descending" JGLOBAL_TITLE_ALPHABETICAL="Title Alphabetical" JGLOBAL_TITLE_REVERSE_ALPHABETICAL="Title Reverse Alphabetical" JGLOBAL_TOGGLE_FEATURED="Toggle featured status." JGLOBAL_TOP="Top" JGLOBAL_TPL_CPANEL_LINK_TEXT="Return to Control Panel" JGLOBAL_USE_GLOBAL="Use Global" JGLOBAL_USERNAME="Username" JGLOBAL_VALIDATION_FORM_FAILED="Invalid form" JGLOBAL_VIEW_SITE="View Site" JGLOBAL_WARNJAVASCRIPT="Warning! JavaScript must be enabled for proper operation of the Administrator Backend." JGLOBAL_WIDTH="Width" JGRID_HEADING_ACCESS="Access" JGRID_HEADING_ACCESS_ASC="Access ascending" JGRID_HEADING_ACCESS_DESC="Access descending" JGRID_HEADING_CREATED_BY="Created by" JGRID_HEADING_ID="ID" JGRID_HEADING_ID_ASC="ID ascending" JGRID_HEADING_ID_DESC="ID descending" JGRID_HEADING_LANGUAGE="Language" JGRID_HEADING_LANGUAGE_ASC="Language ascending" JGRID_HEADING_LANGUAGE_DESC="Language descending" JGRID_HEADING_MENU_ITEM_TYPE="Menu Item Type" JGRID_HEADING_ORDERING="Ordering" JGRID_HEADING_ORDERING_ASC="Ordering ascending" JGRID_HEADING_ORDERING_DESC="Ordering descending" JHELP_COMPONENTS_BANNERS_BANNERS_EDIT="Components_Banners_Banners_Edit" JHELP_COMPONENTS_BANNERS_BANNERS="Components_Banners_Banners" JHELP_COMPONENTS_BANNERS_CATEGORIES="Components_Banners_Categories" JHELP_COMPONENTS_BANNERS_CATEGORY_ADD="Components_Banners_Categories_Edit" JHELP_COMPONENTS_BANNERS_CATEGORY_EDIT="Components_Banners_Categories_Edit" JHELP_COMPONENTS_BANNERS_CLIENTS_EDIT="Components_Banners_Clients_Edit" JHELP_COMPONENTS_BANNERS_CLIENTS="Components_Banners_Clients" JHELP_COMPONENTS_BANNERS_TRACKS="Components_Banners_Tracks" JHELP_COMPONENTS_CACHE_MANAGER_SETTINGS="Components_Cache_Manager_Settings" JHELP_COMPONENTS_CHECK-IN_CONFIGURATION="Components_Check-in_Configuration" JHELP_COMPONENTS_COM_BANNERS_OPTIONS="Components_Banner_Manager_Options" JHELP_COMPONENTS_COM_CACHE_OPTIONS="Components_Cache_Manager_Settings" JHELP_COMPONENTS_COM_CHECKIN_OPTIONS="Components_Check_in_Configuration" JHELP_COMPONENTS_COM_CONTACT_OPTIONS="Components_Contact_Manager_Options" JHELP_COMPONENTS_COM_CONTENT_OPTIONS="Components_Article_Manager_Options" JHELP_COMPONENTS_COM_FINDER_OPTIONS="Components_Smart_Search_Configuration" JHELP_COMPONENTS_COM_INSTALLER_OPTIONS="Components_Installer_Configuration" JHELP_COMPONENTS_COM_JOOMLAUPDATE_OPTIONS="Components_Joomla_Update_Configuration" JHELP_COMPONENTS_COM_LANGUAGES_OPTIONS="Components_Language_Manager_Options" JHELP_COMPONENTS_COM_MEDIA_OPTIONS="Components_Media_Manager_Options" JHELP_COMPONENTS_COM_MENUS_OPTIONS="Components_Menus_Configuration" JHELP_COMPONENTS_COM_MESSAGES_OPTIONS="Components_Messages_Configuration" JHELP_COMPONENTS_COM_MODULES_OPTIONS="Components_Module_Manager_Options" JHELP_COMPONENTS_COM_NEWSFEEDS_OPTIONS="Components_News_Feed_Manager_Options" JHELP_COMPONENTS_COM_PLUGINS_OPTIONS="Components_Plug-in_Manager_Options" JHELP_COMPONENTS_COM_POSTINSTALL_OPTIONS="Components_Post_installation_Messages_Configuration" JHELP_COMPONENTS_COM_REDIRECT_OPTIONS="Components_Redirect_Manager_Options" JHELP_COMPONENTS_COM_SEARCH_OPTIONS="Components_Search_Manager_Options" JHELP_COMPONENTS_COM_TAGS_OPTIONS="Components_Tags_Manager_Options" JHELP_COMPONENTS_COM_TEMPLATES_OPTIONS="Components_Template_Manager_Options" JHELP_COMPONENTS_COM_USERS_OPTIONS="Components_Users_Configuration" JHELP_COMPONENTS_COM_WEBLINKS_OPTIONS="Components_Web_Links_Manager_Options" JHELP_COMPONENTS_CONTACT_CATEGORIES="Components_Contacts_Categories" JHELP_COMPONENTS_CONTACT_CATEGORY_ADD="Components_Contacts_Categories_Edit" JHELP_COMPONENTS_CONTACT_CATEGORY_EDIT="Components_Contacts_Categories_Edit" JHELP_COMPONENTS_CONTACTS_CONTACTS_EDIT="Components_Contacts_Contacts_Edit" JHELP_COMPONENTS_CONTACTS_CONTACTS="Components_Contacts_Contacts" JHELP_COMPONENTS_CONTENT_CATEGORIES="Components_Content_Categories" JHELP_COMPONENTS_CONTENT_CATEGORY_ADD="Components_Content_Categories_Edit" JHELP_COMPONENTS_CONTENT_CATEGORY_EDIT="Components_Content_Categories_Edit" JHELP_COMPONENTS_FINDER_MANAGE_CONTENT_MAPS="Components_Finder_Manage_Content_Maps" JHELP_COMPONENTS_FINDER_MANAGE_INDEXED_CONTENT="Components_Finder_Manage_Indexed_Content" JHELP_COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS_EDIT="Components_Finder_Manage_Search_Filters_Edit" JHELP_COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS="Components_Finder_Manage_Search_Filters" JHELP_COMPONENTS_INSTALLER_CONFIGURATION="Components_Installer_Configuration" JHELP_COMPONENTS_JOOMLA_UPDATE="Components_Joomla_Update" JHELP_COMPONENTS_JOOMLA_UPDATE_CONFIGURATION="Components_Joomla_Update_Configuration" JHELP_COMPONENTS_MENUS_CONFIGURATION="Components_Menus_Configuration" JHELP_COMPONENTS_MESSAGES_CONFIGURATION="Components_Messages_Configuration" JHELP_COMPONENTS_MESSAGING_INBOX="Components_Messaging_Inbox" JHELP_COMPONENTS_MESSAGING_READ="Components_Messaging_Read" JHELP_COMPONENTS_MESSAGING_WRITE="Components_Messaging_Write" JHELP_COMPONENTS_NEWSFEEDS_CATEGORIES="Components_Newsfeeds_Categories" JHELP_COMPONENTS_NEWSFEEDS_CATEGORY_ADD="Components_Newsfeeds_Categories_Edit" JHELP_COMPONENTS_NEWSFEEDS_CATEGORY_EDIT="Components_Newsfeeds_Categories_Edit" JHELP_COMPONENTS_NEWSFEEDS_FEEDS_EDIT="Components_Newsfeeds_Feeds_Edit" JHELP_COMPONENTS_NEWSFEEDS_FEEDS="Components_Newsfeeds_Feeds" JHELP_COMPONENTS_POST_INSTALLATION_MESSAGES="Components_Post_installation_Messages" JHELP_COMPONENTS_REDIRECT_MANAGER_EDIT="Components_Redirect_Manager_Edit" JHELP_COMPONENTS_REDIRECT_MANAGER="Components_Redirect_Manager" JHELP_COMPONENTS_SEARCH="Components_Search" JHELP_COMPONENTS_SMART_SEARCH_CONFIGURATION="Components_Smart_Search_Configuration" JHELP_COMPONENTS_TAGS_MANAGER="Components_Tags_Manager" JHELP_COMPONENTS_TAGS_MANAGER_EDIT="Components_Tags_Manager_Edit" JHELP_COMPONENTS_USERS_CATEGORIES="Users_User_Note_Categories" JHELP_COMPONENTS_USERS_CATEGORY_ADD="Users_User_Note_Category_Edit" JHELP_COMPONENTS_USERS_CATEGORY_EDIT="Users_User_Note_Category_Edit" JHELP_COMPONENTS_WEBLINKS_CATEGORIES="Components_Weblinks_Categories" JHELP_COMPONENTS_WEBLINKS_CATEGORY_ADD="Components_Weblinks_Categories_Edit" JHELP_COMPONENTS_WEBLINKS_CATEGORY_EDIT="Components_Weblinks_Categories_Edit" JHELP_COMPONENTS_WEBLINKS_LINKS_EDIT="Components_Weblinks_Links_Edit" JHELP_COMPONENTS_WEBLINKS_LINKS="Components_Weblinks_Links" JHELP_CONTENT_ARTICLE_MANAGER="Content_Article_Manager" JHELP_CONTENT_ARTICLE_MANAGER_EDIT="Content_Article_Manager_Edit" JHELP_CONTENT_FEATURED_ARTICLES="Content_Featured_Articles" JHELP_CONTENT_MEDIA_MANAGER="Content_Media_Manager" JHELP_EXTENSIONS_EXTENSION_MANAGER_DATABASE="Extensions_Extension_Manager_Database" JHELP_EXTENSIONS_EXTENSION_MANAGER_DISCOVER="Extensions_Extension_Manager_Discover" JHELP_EXTENSIONS_EXTENSION_MANAGER_INSTALL="Extensions_Extension_Manager_Install" JHELP_EXTENSIONS_EXTENSION_MANAGER_LANGUAGES="Extensions_Extension_Manager_languages" JHELP_EXTENSIONS_EXTENSION_MANAGER_MANAGE="Extensions_Extension_Manager_Manage" JHELP_EXTENSIONS_EXTENSION_MANAGER_UPDATE="Extensions_Extension_Manager_Update" JHELP_EXTENSIONS_EXTENSION_MANAGER_UPDATESITES="Extensions_Extension_Manager_Updatesites" JHELP_EXTENSIONS_EXTENSION_MANAGER_WARNINGS="Extensions_Extension_Manager_Warnings" JHELP_EXTENSIONS_LANGUAGE_MANAGER_CONTENT="Extensions_Language_Manager_Content" JHELP_EXTENSIONS_LANGUAGE_MANAGER_EDIT="Extensions_Language_Manager_Edit" JHELP_EXTENSIONS_LANGUAGE_MANAGER_INSTALLED="Extensions_Language_Manager_Installed" JHELP_EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES="Extensions_Language_Manager_Overrides" JHELP_EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES_EDIT="Extensions_Language_Manager_Overrides_Edit" JHELP_EXTENSIONS_MODULE_MANAGER="Extensions_Module_Manager" JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_CUSTOM="Extensions_Module_Manager_Admin_Custom" JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_FEED="Extensions_Module_Manager_Admin_Feed" JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_LATEST="Extensions_Module_Manager_Admin_Latest" JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_LOGGED="Extensions_Module_Manager_Admin_Logged" JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_LOGIN="Extensions_Module_Manager_Admin_Login" JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_MENU="Extensions_Module_Manager_Admin_Menu" JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_MULTILANG="Extensions_Module_Manager_Admin_Multilang" JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_ONLINE="Extensions_Module_Manager_Admin_Online" JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_POPULAR="Extensions_Module_Manager_Admin_Popular" JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_QUICKICON="Extensions_Module_Manager_Admin_Quickicon" JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_STATUS="Extensions_Module_Manager_Admin_Status" JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_SUBMENU="Extensions_Module_Manager_Admin_Submenu" JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_TITLE="Extensions_Module_Manager_Admin_Title" JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_TOOLBAR="Extensions_Module_Manager_Admin_Toolbar" JHELP_EXTENSIONS_MODULE_MANAGER_ADMIN_UNREAD="Extensions_Module_Manager_Admin_Unread" JHELP_EXTENSIONS_MODULE_MANAGER_ARTICLES_ARCHIVE="Extensions_Module_Manager_Articles_Archive" JHELP_EXTENSIONS_MODULE_MANAGER_ARTICLES_CATEGORIES="Extensions_Module_Manager_Articles_Categories" JHELP_EXTENSIONS_MODULE_MANAGER_ARTICLES_CATEGORY="Extensions_Module_Manager_Articles_Category" JHELP_EXTENSIONS_MODULE_MANAGER_ARTICLES_NEWSFLASH="Extensions_Module_Manager_Articles_Newsflash" JHELP_EXTENSIONS_MODULE_MANAGER_ARTICLES_RELATED="Extensions_Module_Manager_Articles_Related" JHELP_EXTENSIONS_MODULE_MANAGER_BANNERS="Extensions_Module_Manager_Banners" JHELP_EXTENSIONS_MODULE_MANAGER_BREADCRUMBS="Extensions_Module_Manager_Breadcrumbs" JHELP_EXTENSIONS_MODULE_MANAGER_CUSTOM_HTML="Extensions_Module_Manager_Custom_HTML" JHELP_EXTENSIONS_MODULE_MANAGER_EDIT="Extensions_Module_Manager_Edit" JHELP_EXTENSIONS_MODULE_MANAGER_FEED_DISPLAY="Extensions_Module_Manager_Feed_Display" JHELP_EXTENSIONS_MODULE_MANAGER_FOOTER="Extensions_Module_Manager_Footer" JHELP_EXTENSIONS_MODULE_MANAGER_LANGUAGE_SWITCHER="Extensions_Module_Manager_Language_Switcher" JHELP_EXTENSIONS_MODULE_MANAGER_LATEST_NEWS="Extensions_Module_Manager_Latest_News" JHELP_EXTENSIONS_MODULE_MANAGER_LATEST_USERS="Extensions_Module_Manager_Latest_Users" JHELP_EXTENSIONS_MODULE_MANAGER_LOGIN="Extensions_Module_Manager_Login" JHELP_EXTENSIONS_MODULE_MANAGER_MENU="Extensions_Module_Manager_Menu" JHELP_EXTENSIONS_MODULE_MANAGER_MOST_READ="Extensions_Module_Manager_Most_Read" JHELP_EXTENSIONS_MODULE_MANAGER_RANDOM_IMAGE="Extensions_Module_Manager_Random_Image" JHELP_EXTENSIONS_MODULE_MANAGER_SEARCH="Extensions_Module_Manager_Search" JHELP_EXTENSIONS_MODULE_MANAGER_SMART_SEARCH="Extensions_Module_Manager_Smart_Search" JHELP_EXTENSIONS_MODULE_MANAGER_STATISTICS="Extensions_Module_Manager_Statistics" JHELP_EXTENSIONS_MODULE_MANAGER_SYNDICATION_FEEDS="Extensions_Module_Manager_Syndication_Feeds" JHELP_EXTENSIONS_MODULE_MANAGER_TAGS_POPULAR="Extensions_Module_Manager_Tags_Popular" JHELP_EXTENSIONS_MODULE_MANAGER_TAGS_SIMILAR="Extensions_Module_Manager_Tags_Similar" JHELP_EXTENSIONS_MODULE_MANAGER_WEBLINKS="Extensions_Module_Manager_Weblinks" JHELP_EXTENSIONS_MODULE_MANAGER_WHO_ONLINE="Extensions_Module_Manager_Who_Online" JHELP_EXTENSIONS_MODULE_MANAGER_WRAPPER="Extensions_Module_Manager_Wrapper" JHELP_EXTENSIONS_PLUGIN_MANAGER="Extensions_Plugin_Manager" JHELP_EXTENSIONS_PLUGIN_MANAGER_EDIT="Extensions_Plugin_Manager_Edit" JHELP_EXTENSIONS_TEMPLATE_MANAGER_STYLES="Extensions_Template_Manager_Styles" JHELP_EXTENSIONS_TEMPLATE_MANAGER_STYLES_EDIT="Extensions_Template_Manager_Styles_Edit" JHELP_EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES="Extensions_Template_Manager_Templates" JHELP_EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT="Extensions_Template_Manager_Templates_Edit" JHELP_EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT_SOURCE="Extensions_Template_Manager_Templates_Edit_Source" JHELP_GLOSSARY="Glossary" JHELP_MENUS_MENU_ITEM_ARTICLE_ARCHIVED="Menus_Menu_Item_Article_Archived" JHELP_MENUS_MENU_ITEM_ARTICLE_CATEGORIES="Menus_Menu_Item_Article_Categories" JHELP_MENUS_MENU_ITEM_ARTICLE_CATEGORY_BLOG="Menus_Menu_Item_Article_Category_Blog" JHELP_MENUS_MENU_ITEM_ARTICLE_CATEGORY_LIST="Menus_Menu_Item_Article_Category_List" JHELP_MENUS_MENU_ITEM_ARTICLE_CREATE="Menus_Menu_Item_Article_Create" JHELP_MENUS_MENU_ITEM_ARTICLE_FEATURED="Menus_Menu_Item_Article_Featured" JHELP_MENUS_MENU_ITEM_ARTICLE_SINGLE_ARTICLE="Menus_Menu_Item_Article_Single_Article" JHELP_MENUS_MENU_ITEM_CONTACT_CATEGORIES="Menus_Menu_Item_Contact_Categories" JHELP_MENUS_MENU_ITEM_CONTACT_CATEGORY="Menus_Menu_Item_Contact_Category" JHELP_MENUS_MENU_ITEM_CONTACT_FEATURED="Menus_Menu_Item_Contact_Featured" JHELP_MENUS_MENU_ITEM_CONTACT_SINGLE_CONTACT="Menus_Menu_Item_Contact_Single_Contact" JHELP_MENUS_MENU_ITEM_DISPLAY_SITE_CONFIGURATION="Menus_Menu_Item_Display_Site_Configuration" JHELP_MENUS_MENU_ITEM_DISPLAY_TEMPLATE_OPTIONS="Menus_Menu_Item_Display_Template_Options" JHELP_MENUS_MENU_ITEM_EXTERNAL_URL="Menus_Menu_Item_External_URL" JHELP_MENUS_MENU_ITEM_FINDER_SEARCH="Menus_Menu_Item_Finder_Search" JHELP_MENUS_MENU_ITEM_MANAGER="Menus_Menu_Item_Manager" JHELP_MENUS_MENU_ITEM_MANAGER_EDIT="Menus_Menu_Item_Manager_Edit" JHELP_MENUS_MENU_ITEM_MENU_ITEM_ALIAS="Menus_Menu_Item_Menu_Item_Alias" JHELP_MENUS_MENU_ITEM_MENU_ITEM_HEADING="Menus_Menu_Item_Menu_Item_Heading" JHELP_MENUS_MENU_ITEM_NEWSFEED_CATEGORIES="Menus_Menu_Item_Newsfeed_Categories" JHELP_MENUS_MENU_ITEM_NEWSFEED_CATEGORY="Menus_Menu_Item_Newsfeed_Category" JHELP_MENUS_MENU_ITEM_NEWSFEED_SINGLE_NEWSFEED="Menus_Menu_Item_Newsfeed_Single_Newsfeed" JHELP_MENUS_MENU_ITEM_SEARCH_RESULTS="Menus_Menu_Item_Search_Results" JHELP_MENUS_MENU_ITEM_TAGS_ITEMS_COMPACT_LIST="Menus_Menu_Item_Tags_Items_Compact_List" JHELP_MENUS_MENU_ITEM_TAGS_ITEMS_LIST="Menus_Menu_Item_Tags_Items_List" JHELP_MENUS_MENU_ITEM_TAGS_ITEMS_LIST_ALL="Menus_Menu_Item_Tags_Items_List_All" JHELP_MENUS_MENU_ITEM_TEXT_SEPARATOR="Menus_Menu_Item_Text_Separator" JHELP_MENUS_MENU_ITEM_USER_LOGIN="Menus_Menu_Item_User_Login" JHELP_MENUS_MENU_ITEM_USER_PASSWORD_RESET="Menus_Menu_Item_User_Password_Reset" JHELP_MENUS_MENU_ITEM_USER_PROFILE="Menus_Menu_Item_User_Profile" JHELP_MENUS_MENU_ITEM_USER_PROFILE_EDIT="Menus_Menu_Item_User_Profile_Edit" JHELP_MENUS_MENU_ITEM_USER_REGISTRATION="Menus_Menu_Item_User_Registration" JHELP_MENUS_MENU_ITEM_USER_REMINDER="Menus_Menu_Item_User_Reminder" JHELP_MENUS_MENU_ITEM_WEBLINK_CATEGORIES="Menus_Menu_Item_Weblink_Categories" JHELP_MENUS_MENU_ITEM_WEBLINK_CATEGORY="Menus_Menu_Item_Weblink_Category" JHELP_MENUS_MENU_ITEM_WEBLINK_SUBMIT="Menus_Menu_Item_Weblink_Submit" JHELP_MENUS_MENU_ITEM_WRAPPER="Menus_Menu_Item_Wrapper" JHELP_MENUS_MENU_MANAGER="Menus_Menu_Manager" JHELP_MENUS_MENU_MANAGER_EDIT="Menus_Menu_Manager_Edit" JHELP_SITE_GLOBAL_CONFIGURATION="Site_Global_Configuration" JHELP_SITE_MAINTENANCE_CLEAR_CACHE="Site_Maintenance_Clear_Cache" JHELP_SITE_MAINTENANCE_GLOBAL_CHECK-IN="Site_Maintenance_Global_Check-in" JHELP_SITE_MAINTENANCE_PURGE_EXPIRED_CACHE="Site_Maintenance_Purge_Expired_Cache" JHELP_SITE_SYSTEM_INFORMATION="Site_System_Information" JHELP_ADMIN_USER_PROFILE_EDIT="Site_My_Profile" JHELP_START_HERE="Start_Here" JHELP_USERS_ACCESS_LEVELS="Users_Access_Levels" JHELP_USERS_ACCESS_LEVELS_EDIT="Users_Access_Levels_Edit" JHELP_USERS_DEBUG_GROUPS="Users_Debug_Groups" JHELP_USERS_DEBUG_USERS="Users_Debug_Users" JHELP_USERS_GROUPS="Users_Groups" JHELP_USERS_GROUPS_EDIT="Users_Groups_Edit" JHELP_USERS_MASS_MAIL_USERS="Users_Mass_Mail_Users" JHELP_USERS_USER_MANAGER="Users_User_Manager" JHELP_USERS_USER_MANAGER_EDIT="Users_User_Manager_Edit" JHELP_USERS_USER_NOTES="Users_User_Notes" JHELP_USERS_USER_NOTES_EDIT="Users_User_Notes_Edit" ; if there is an error connecting database before initialisation, en-GB.lib_joomla.ini can't be loaded ; we therefore have to load the strings from en-GB.ini JLIB_DATABASE_ERROR_ADAPTER_MYSQL="The MySQL adapter 'mysql' is not available." JLIB_DATABASE_ERROR_ADAPTER_MYSQLI="The MySQL adapter 'mysqli' is not available." JLIB_DATABASE_ERROR_CONNECT_DATABASE="Unable to connect to the Database: %s" JLIB_DATABASE_ERROR_CONNECT_MYSQL="Could not connect to MySQL." JLIB_DATABASE_ERROR_DATABASE_CONNECT="Could not connect to database" JLIB_DATABASE_ERROR_LOAD_DATABASE_DRIVER="Unable to load Database Driver: %s" JLIB_ERROR_INFINITE_LOOP="Infinite loop detected in JError" JOPTION_ACCESS_SHOW_ALL_ACCESS="Show All Access" JOPTION_ACCESS_SHOW_ALL_GROUPS="Show All Groups" JOPTION_ACCESS_SHOW_ALL_LEVELS="Show All Access Levels" JOPTION_ALL_CATEGORIES="- All Categories -" JOPTION_ANY_CATEGORY="Any Category" JOPTION_ANY="Any" JOPTION_DO_NOT_USE="- None Selected -" JOPTION_FROM_COMPONENT="---From Component---" JOPTION_FROM_MODULE="---From Module---" JOPTION_FROM_TEMPLATE="---From %s Template---" JOPTION_FROM_STANDARD="---From Global Options---" JOPTION_MENUS="Menus" JOPTION_NO_USER="- No User -" JOPTION_OPTIONAL="Optional" JOPTION_ORDER_FIRST="Order First" JOPTION_ORDER_LAST="Order Last" JOPTION_REQUIRED="Required" JOPTION_SELECT_ACCESS="- Select Access -" JOPTION_SELECT_AUTHOR_ALIAS="- Select Author Alias -" JOPTION_SELECT_AUTHOR_ALIASES="- Select Author Aliases -" JOPTION_SELECT_AUTHOR="- Select Author -" JOPTION_SELECT_AUTHORS="- Select Authors -" JOPTION_SELECT_CATEGORY="- Select Category -" JOPTION_SELECT_EDITOR="- Select Editor -" JOPTION_SELECT_IMAGE="- Select Image -" JOPTION_SELECT_LANGUAGE="- Select Language -" JOPTION_SELECT_MENU="- Select Menu -" JOPTION_SELECT_MENU_ITEM="- Select Menu Item -" JOPTION_SELECT_PUBLISHED="- Select Status -" JOPTION_SELECT_TEMPLATE="- Select Template -" JOPTION_SELECT_MAX_LEVELS="- Select Max Levels -" JOPTION_SELECT_TAG="- Select Tag -" JOPTION_UNASSIGNED="Unassigned" JOPTION_USE_DEFAULT_MODULE_SETTING="- Use Default Module Setting -" JOPTION_USE_DEFAULT="- Use Default -" JOPTION_USE_MENU_REQUEST_SETTING="- Use Menu or Request Setting -" JSEARCH_FILTER_LABEL="Filter:" JSEARCH_FILTER_CLEAR="Clear" JSEARCH_FILTER_SUBMIT="Search" JSEARCH_FILTER="Search" JSEARCH_TITLE="Search %s" JSEARCH_RESET="Reset" JTOGGLE_SIDEBAR_LABEL="Sidebar" JTOGGLE_HIDE_SIDEBAR="Hide the sidebar" JTOGGLE_SHOW_SIDEBAR="Show the sidebar" JTOOLBAR_APPLY="Save" JTOOLBAR_ARCHIVE="Archive" JTOOLBAR_ASSIGN="Assign" JTOOLBAR_BACK="Back" JTOOLBAR_BATCH="Batch" JTOOLBAR_CANCEL="Cancel" JTOOLBAR_CHECKIN="Check-in" JTOOLBAR_CLOSE="Close" JTOOLBAR_DEFAULT="Default" JTOOLBAR_DELETE="Delete" JTOOLBAR_DISABLE="Disable" JTOOLBAR_DUPLICATE="Duplicate" JTOOLBAR_EDIT="Edit" JTOOLBAR_EDIT_CSS="Edit CSS" JTOOLBAR_EDIT_HTML="Edit HTML" JTOOLBAR_EMPTY_TRASH="Empty trash" JTOOLBAR_ENABLE="Enable" JTOOLBAR_EXPORT="Export" JTOOLBAR_HELP="Help" JTOOLBAR_INSTALL="Install" JTOOLBAR_NEW="New" JTOOLBAR_OPTIONS="Options" JTOOLBAR_PUBLISH="Publish" JTOOLBAR_PURGE_CACHE="Clear Cache" JTOOLBAR_REBUILD="Rebuild" JTOOLBAR_REBUILD_FAILED="Rebuild failed: %s" JTOOLBAR_REBUILD_SUCCESS="Successfully rebuilt" JTOOLBAR_REFRESH_CACHE="Refresh Cache" JTOOLBAR_REMOVE="Remove" JTOOLBAR_SAVE="Save & Close" JTOOLBAR_SAVE_AND_NEW="Save & New" JTOOLBAR_SAVE_AS_COPY="Save as Copy" JTOOLBAR_UNARCHIVE="Unarchive" JTOOLBAR_UNINSTALL="Uninstall" JTOOLBAR_UNPUBLISH="Unpublish" JTOOLBAR_UPLOAD="Upload" JTOOLBAR_TRASH="Trash" JTOOLBAR_UNTRASH="Untrash" JTOOLBAR_VERSIONS="Versions" JWARNING_PUBLISH_MUST_SELECT="You must select at least one item to publish." JWARNING_ARCHIVE_MUST_SELECT="You must select at least one item to archive." JWARNING_UNPUBLISH_MUST_SELECT="You must select at least one item to unpublish." JWARNING_TRASH_MUST_SELECT="You must select at least one item to remove." JWARNING_DELETE_MUST_SELECT="You must select at least one item to permanently delete." JWARNING_REMOVE_ROOT_USER="You are logged-in using the emergency Root User setting in configuration.php.<br />You should remove $root_user from configuration.php as soon as you have restored control to your site to avoid future security breaches.<br /><a href='%s'>Select here to try to do it automatically.</a>" ; Date format DATE_FORMAT_LC="l, d F Y" DATE_FORMAT_LC1="l, d F Y" DATE_FORMAT_LC2="l, d F Y H:i" DATE_FORMAT_LC3="d F Y" DATE_FORMAT_LC4="Y-m-d" DATE_FORMAT_JS1="y-m-d" ; Months JANUARY_SHORT="Jan" JANUARY="January" FEBRUARY_SHORT="Feb" FEBRUARY="February" MARCH_SHORT="Mar" MARCH="March" APRIL_SHORT="Apr" APRIL="April" MAY_SHORT="May" MAY="May" JUNE_SHORT="Jun" JUNE="June" JULY_SHORT="Jul" JULY="July" AUGUST_SHORT="Aug" AUGUST="August" SEPTEMBER_SHORT="Sep" SEPTEMBER="September" OCTOBER_SHORT="Oct" OCTOBER="October" NOVEMBER_SHORT="Nov" NOVEMBER="November" DECEMBER_SHORT="Dec" DECEMBER="December" ; Days of the Week SAT="Sat" SATURDAY="Saturday" SUN="Sun" SUNDAY="Sunday" MON="Mon" MONDAY="Monday" TUE="Tue" TUESDAY="Tuesday" WED="Wed" WEDNESDAY="Wednesday" THU="Thu" THURSDAY="Thursday" FRI="Fri" FRIDAY="Friday" ; Localised number format DECIMALS_SEPARATOR="." THOUSANDS_SEPARATOR="," ; Time Zones - this data has been removed as it is no longer used by Joomla 3.x ; Mailer Codes PHPMAILER_PROVIDE_ADDRESS="You must provide at least one recipient email address." PHPMAILER_MAILER_IS_NOT_SUPPORTED="Mailer is not supported." PHPMAILER_EXECUTE="Could not execute: " PHPMAILER_INSTANTIATE="Could not start mail function." PHPMAILER_AUTHENTICATE="SMTP Error! Could not authenticate." PHPMAILER_FROM_FAILED="The following from address failed: " PHPMAILER_RECIPIENTS_FAILED="SMTP Error! The following recipients failed: " PHPMAILER_DATA_NOT_ACCEPTED="SMTP Error! Data not accepted." PHPMAILER_CONNECT_HOST="SMTP Error! Could not connect to SMTP host." PHPMAILER_FILE_ACCESS="Could not access file: " PHPMAILER_FILE_OPEN="File Error: Could not open file: " PHPMAILER_ENCODING="Unknown encoding: " PHPMAILER_SIGNING_ERROR="Signing error: " PHPMAILER_SMTP_ERROR="SMTP server error: " PHPMAILER_EMPTY_MESSAGE="Empty message body" PHPMAILER_INVALID_ADDRESS="Invalid address" PHPMAILER_VARIABLE_SET="Can't set or reset variable: " PHPMAILER_SMTP_CONNECT_FAILED="SMTP connect failed" PHPMAILER_TLS="Could not start TLS" ; Database types (allows for a more descriptive label than the internal name) MYSQL="MySQL" MYSQLI="MySQLi" ORACLE="Oracle" PDOMYSQL="MySQL (PDO)" POSTGRESQL="PostgreSQL" SQLAZURE="Microsoft SQL Azure" SQLITE="SQLite" SQLSRV="Microsoft SQL Server" ; Search tools JSEARCH_TOOLS="Search Tools" JSEARCH_TOOLS_DESC="Filter the list items." JSEARCH_TOOLS_ORDERING="Order by:" PKb��\�êf22&language/en-GB/en-GB.com_cache.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CACHE="Cache" COM_CACHE_XML_DESCRIPTION="Component for cache management." PKb��\[ETXX1language/en-GB/en-GB.plg_search_newsfeeds.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SEARCH_NEWSFEEDS="Search - News Feeds" PLG_SEARCH_NEWSFEEDS_XML_DESCRIPTION="Enables searching of news feeds." PKb��\�1AA*language/en-GB/en-GB.com_languages.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_LANGUAGES="Languages" COM_LANGUAGES_XML_DESCRIPTION="Component for language management." PKb��\h�����.language/en-GB/en-GB.plg_editors-xtd_image.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_EDITORS-XTD_IMAGE="Button - Image" PLG_IMAGE_BUTTON_IMAGE="Image" PLG_IMAGE_XML_DESCRIPTION="Displays a button to make it possible to insert images into an Article. Displays a popup allowing you to configure an image's properties and upload new image files." PKb��\pk���2language/en-GB/en-GB.plg_content_pagebreak.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTENT_PAGEBREAK="Content - Page Break" PLG_CONTENT_PAGEBREAK_XML_DESCRIPTION="Allow the creation of a paginated article with an optional table of contents.<br /><br />Insert page breaks through the use of the page break button normally found beneath the text panel in an Article. The location of the page break in an article will be displayed in the editor as a simple horizontal line.<br /><br />The text displayed will depend on the options chosen and may be either the title, alternate text (if provided) or page numbers. <br /><br />The HTML usage is:<br /><hr class="system-pagebreak" /><br /><hr class="system-pagebreak" title="The page title" /> or <br /><hr class="system-pagebreak" alt="The first page" /> or <br /><hr class="system-pagebreak" title="The page title" alt="The first page" /> or <br /><hr class="system-pagebreak" alt="The first page" title="The page title" />" PKb��\#�N���'language/en-GB/en-GB.plg_system_log.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_LOG_XML_DESCRIPTION="Provides logging when the user login fails." PLG_SYSTEM_LOG="System - User Log" PLG_SYSTEM_LOG_FIELD_LOG_USERNAME_DESC="This option will log the username used when an authentication fails." PLG_SYSTEM_LOG_FIELD_LOG_USERNAME_LABEL="Log Usernames" PKb��\�@.��)language/en-GB/en-GB.com_joomlaupdate.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_JOOMLAUPDATE_CONFIG_CUSTOMURL_DESC="This is a custom XML update source URL, used only when the "Update Source" option is set to "Custom URL"." COM_JOOMLAUPDATE_CONFIG_CUSTOMURL_LABEL="Custom URL" COM_JOOMLAUPDATE_CONFIG_SOURCES_DESC="Configure where Joomla gets its update information from." COM_JOOMLAUPDATE_CONFIG_SOURCES_LABEL="Update Source" COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_CUSTOM="Custom URL" COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_CUSTOM_ERROR="The custom URL field is empty." COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT="Default" COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DESC="The update channel Joomla will use to find out if there is an update available." COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_LABEL="Update Channel" COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT="Joomla! Next" COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_TESTING="Testing" COM_JOOMLAUPDATE_CONFIGURATION="Joomla! Update: Options" COM_JOOMLAUPDATE_OVERVIEW="Joomla! Update" COM_JOOMLAUPDATE_UPDATE_LOG_CLEANUP="Cleaning up after installation." COM_JOOMLAUPDATE_UPDATE_LOG_COMPLETE="Update to version %s is complete." COM_JOOMLAUPDATE_UPDATE_LOG_DELETE_FILES="Deleting removed files and folders." COM_JOOMLAUPDATE_UPDATE_LOG_FILE="File %s successfully downloaded." COM_JOOMLAUPDATE_UPDATE_LOG_FINALISE="Finalising installation." COM_JOOMLAUPDATE_UPDATE_LOG_START="Update started by user %2$s (%1$s). Old version is %3$s." COM_JOOMLAUPDATE_UPDATE_LOG_INSTALL="Starting installation of new version." COM_JOOMLAUPDATE_UPDATE_LOG_URL="Downloading update file from %s." COM_JOOMLAUPDATE_VIEW_COMPLETE_HEADING="Joomla Version Update Status" COM_JOOMLAUPDATE_VIEW_COMPLETE_MESSAGE="Your site has been successfully updated. Your Joomla version is now %s." COM_JOOMLAUPDATE_VIEW_DEFAULT_DOWNLOAD_IN_PROGRESS="Downloading update file. Please wait ..." COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_DIRECTORY="FTP folder" COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_HOSTNAME="FTP host" COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_PASSWORD="FTP password" COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_PORT="FTP port" COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_USERNAME="FTP username" COM_JOOMLAUPDATE_VIEW_DEFAULT_INFOURL="Additional Information" COM_JOOMLAUPDATE_VIEW_DEFAULT_INSTALLED="Installed Joomla version" COM_JOOMLAUPDATE_VIEW_DEFAULT_INSTALLUPDATE="Install the Update" COM_JOOMLAUPDATE_VIEW_DEFAULT_LATEST="Latest Joomla version" COM_JOOMLAUPDATE_VIEW_DEFAULT_METHOD_DIRECT="Write files directly" COM_JOOMLAUPDATE_VIEW_DEFAULT_METHOD_FTP="Write files using FTP" COM_JOOMLAUPDATE_VIEW_DEFAULT_METHOD="Installation method" COM_JOOMLAUPDATE_VIEW_DEFAULT_NOUPDATES="No updates available." COM_JOOMLAUPDATE_VIEW_DEFAULT_NOUPDATESNOTICE="You already have the latest Joomla version, %s." COM_JOOMLAUPDATE_VIEW_DEFAULT_PACKAGE="Update package URL" COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATEFOUND="A Joomla update was found." COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATE_NOTICE="Before you update Joomla, ensure that the installed extensions are available for the new Joomla version." COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_CUSTOM="You are on the "%s" update channel. This is not an official Joomla! update channel." COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_DEFAULT="You are on the "%s" update channel. Through this channel you'll receive notifications for all updates of the current Joomla! release (3.x)" COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_NEXT="You are on the "%s" update channel. Through this channel you'll receive notifications for all updates of the current Joomla! release (3.x) and you will also be notified when the future major release (4.x) will be available. Before upgrading to 4.x you'll need to assess its compatibility with your environment." COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_TESTING="You are on the "%s" update channel. This channel is designed for testing new releases and fixes in Joomla.<br />It is only intended for JBS (Joomla! Bug Squad™) members and others within the Joomla community who are testing. Do not use this setting on a production site." COM_JOOMLAUPDATE_VIEW_PROGRESS="Update progress" COM_JOOMLAUPDATE_VIEW_UPDATE_BYTESEXTRACTED="Bytes extracted" COM_JOOMLAUPDATE_VIEW_UPDATE_BYTESREAD="Bytes read" COM_JOOMLAUPDATE_VIEW_UPDATE_DOWNLOADFAILED="Download of update package failed." COM_JOOMLAUPDATE_VIEW_UPDATE_FILESEXTRACTED="Files extracted" COM_JOOMLAUPDATE_VIEW_UPDATE_INPROGRESS="Updating your Joomla files. Please wait ..." COM_JOOMLAUPDATE_VIEW_UPDATE_PERCENT="Percent complete" COM_JOOMLAUPDATE_XML_DESCRIPTION="Updates Joomla to the latest version with one click." PKb��\� �AA"language/en-GB/en-GB.mod_title.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_TITLE="Title" MOD_TITLE_XML_DESCRIPTION="This module shows the Toolbar Component Title." PKb��\���,language/en-GB/en-GB.plg_finder_tags.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_FINDER_STATISTICS_TAG="Tag" PLG_FINDER_TAGS="Smart Search - Tags" PLG_FINDER_TAGS_ERROR_ACTIVATING_PLUGIN="Could not automatically activate the "Smart Search - Tags" plugin." PLG_FINDER_TAGS_XML_DESCRIPTION="This plugin indexes Joomla! Tags." PKb��\O�Lk??(language/en-GB/en-GB.com_plugins.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_PLUGINS="Plugins" COM_PLUGINS_XML_DESCRIPTION="This component manages Joomla plugins." PKb��\=&%'language/en-GB/en-GB.mod_logged.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_LOGGED="Logged-in Users" MOD_LOGGED_XML_DESCRIPTION="This module shows a list of the currently Logged-in Users." MOD_LOGGED_LAYOUT_DEFAULT="Default" PKb��\\7EE-language/en-GB/en-GB.plg_editors_none.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_EDITORS_NONE="Editor - None" PLG_NONE_XML_DESCRIPTION="This loads a basic text entry field." PKb��\���.nn+language/en-GB/en-GB.com_contenthistory.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CONTENTHISTORY_BUTTON_COMPARE_ALL_ROWS_DESC="Select to see all values for the item, including ones that haven't changed." COM_CONTENTHISTORY_BUTTON_COMPARE_ALL_ROWS="All Values" COM_CONTENTHISTORY_BUTTON_COMPARE_CHANGED_ROWS_DESC="Select to see only those values that have changed." COM_CONTENTHISTORY_BUTTON_COMPARE_CHANGED_ROWS="Changed Values" COM_CONTENTHISTORY_BUTTON_COMPARE_DESC="Choose two versions and select to compare them." COM_CONTENTHISTORY_BUTTON_COMPARE_HTML_DESC="Select to see the HTML source code for the changes." COM_CONTENTHISTORY_BUTTON_COMPARE_HTML="Show HTML Code" COM_CONTENTHISTORY_BUTTON_COMPARE_TEXT_DESC="Select to see the item changes as text." COM_CONTENTHISTORY_BUTTON_COMPARE_TEXT="Show Text" COM_CONTENTHISTORY_BUTTON_COMPARE="Compare" COM_CONTENTHISTORY_BUTTON_DELETE_DESC="Choose one or more versions and select to permanently delete them." COM_CONTENTHISTORY_BUTTON_DELETE="Delete" COM_CONTENTHISTORY_BUTTON_KEEP_DESC="Choose one or more versions and select to toggle the keep forever on or off." COM_CONTENTHISTORY_BUTTON_KEEP_TOGGLE_OFF="Select to allow this version to be deleted automatically according to the delete schedule." COM_CONTENTHISTORY_BUTTON_KEEP_TOGGLE_ON="Select to prevent this version being deleted automatically." COM_CONTENTHISTORY_BUTTON_KEEP="Keep On/Off" COM_CONTENTHISTORY_BUTTON_LOAD_DESC="This button loads the selected version into the edit form." COM_CONTENTHISTORY_BUTTON_LOAD="Restore" COM_CONTENTHISTORY_BUTTON_PREVIEW_DESC="This button allows you to see a preview of the selected version." COM_CONTENTHISTORY_BUTTON_PREVIEW="Preview" COM_CONTENTHISTORY_BUTTON_SELECT_ONE="Please select one version." COM_CONTENTHISTORY_BUTTON_SELECT_TWO="Please select two versions." COM_CONTENTHISTORY_CHARACTER_COUNT="Character Count" COM_CONTENTHISTORY_COMPARE_DIFF="Changes" COM_CONTENTHISTORY_COMPARE_TITLE="Compare View" COM_CONTENTHISTORY_COMPARE_VALUE1="Saved on %s %s" COM_CONTENTHISTORY_COMPARE_VALUE2="Saved on %s %s" COM_CONTENTHISTORY_ERROR_KEEP_NOT_PERMITTED="You are not permitted to change the keep forever status." COM_CONTENTHISTORY_KEEP_VERSION="Keep Forever" COM_CONTENTHISTORY_MODAL_TITLE="Item Version History" COM_CONTENTHISTORY_N_ITEMS_DELETED_1="%s history version successfully deleted." COM_CONTENTHISTORY_N_ITEMS_DELETED="%s history versions successfully deleted." COM_CONTENTHISTORY_N_ITEMS_KEEP_TOGGLE_1="Successfully changed the keep forever value for %s history version." COM_CONTENTHISTORY_N_ITEMS_KEEP_TOGGLE="Successfully changed the keep forever value for %s history versions." COM_CONTENTHISTORY_NO_ITEM_SELECTED="No history version selected." COM_CONTENTHISTORY_PREVIEW_FIELD="Field" COM_CONTENTHISTORY_PREVIEW_SUBTITLE_DATE="Preview of version from %s" COM_CONTENTHISTORY_PREVIEW_SUBTITLE="Version note: %s" COM_CONTENTHISTORY_PREVIEW_TITLE="Preview of Selected Item" COM_CONTENTHISTORY_PREVIEW_VALUE="Value" COM_CONTENTHISTORY_VERSION_NOTE="Version Note" PKb��\�#T��7language/en-GB/en-GB.plg_installer_webinstaller.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_INSTALLER_WEBINSTALLER="Installer - Install from Web" PLG_INSTALLER_WEBINSTALLER_XML_DESCRIPTION="This plugin offers functionality for the 'Install from Web' tab." PKb��\S)c8RR0language/en-GB/en-GB.plg_system_remember.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_REMEMBER_XML_DESCRIPTION="Provides remember me functionality." PLG_SYSTEM_REMEMBER="System - Remember Me" PKb��\����%language/en-GB/en-GB.com_redirect.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_REDIRECT="Redirect" COM_REDIRECT_ADVANCED_OPTIONS="Advanced" COM_REDIRECT_BATCH_OPTIONS="Batch process to add new URLs" COM_REDIRECT_BATCH_TIP="Enter expired URL (mandatory) with a new URL (optional) separated with | (eg old-url|new-url). Each line one entry!" COM_REDIRECT_BUTTON_UPDATE_LINKS="Update Links" COM_REDIRECT_COLLECT_URLS_ENABLED="The option 'Collect URLs' is enabled." COM_REDIRECT_COLLECT_URLS_DISABLED="The option 'Collect URLs' is disabled." COM_REDIRECT_CONFIGURATION="Redirect: Options" COM_REDIRECT_DISABLE_LINK="Disable Link" COM_REDIRECT_EDIT_LINK="Edit Link #%d" COM_REDIRECT_ENABLE_LINK="Enable Link" COM_REDIRECT_ERROR_DESTINATION_URL_REQUIRED="The redirect must have a destination URL" COM_REDIRECT_ERROR_DUPLICATE_OLD_URL="The source URL must be unique." COM_REDIRECT_ERROR_DUPLICATE_URLS="The source and destination URLs can't be the same." COM_REDIRECT_ERROR_SOURCE_URL_REQUIRED="The redirect must have a source URL." COM_REDIRECT_FIELD_COMMENT_DESC="Sometimes it is helpful to describe the URLs for redirect management later on." COM_REDIRECT_FIELD_COMMENT_LABEL="Comment" COM_REDIRECT_FIELD_CREATED_DATE_LABEL="Created Date" COM_REDIRECT_FIELD_NEW_URL_DESC="Enter the URL to be redirected to." COM_REDIRECT_FIELD_NEW_URL_LABEL="Destination URL" COM_REDIRECT_FIELD_OLD_URL_DESC="Enter the URL that has to be redirected." COM_REDIRECT_FIELD_OLD_URL_LABEL="Source URL" COM_REDIRECT_FIELD_REFERRER_LABEL="Link Referrer" COM_REDIRECT_FIELD_REDIRECT_STATUS_CODE_LABEL="Redirect Status Code" COM_REDIRECT_FIELD_REDIRECT_STATUS_CODE_DESC="Choose the HTTP 1.1 status code to associate with the redirect." COM_REDIRECT_FIELD_UPDATED_DATE_LABEL="Last Updated Date" COM_REDIRECT_HEADING_CREATED_DATE="Created Date" COM_REDIRECT_HEADING_HITS="404 Hits" COM_REDIRECT_HEADING_NEW_URL="New URL" COM_REDIRECT_HEADING_OLD_URL="Expired URL" COM_REDIRECT_HEADING_REFERRER="Referring Page" COM_REDIRECT_HEADING_UPDATE_LINKS="Update selected links to the following new URL." COM_REDIRECT_MANAGER_LINK="Redirects: New/Edit" COM_REDIRECT_MANAGER_LINK_EDIT="Redirects: Edit" COM_REDIRECT_MANAGER_LINK_NEW="Redirects: New" COM_REDIRECT_MANAGER_LINKS="Redirects: Links" COM_REDIRECT_MODE_LABEL="Activate Advanced Mode" COM_REDIRECT_MODE_DESC="Enable more advanced functionality for the component. Only use this if you know what you're doing." COM_REDIRECT_N_ITEMS_ARCHIVED="%d links successfully archived." COM_REDIRECT_N_ITEMS_ARCHIVED_1="Link successfully archived." COM_REDIRECT_N_ITEMS_DELETED="%d links successfully deleted." COM_REDIRECT_N_ITEMS_DELETED_1="Link successfully deleted." COM_REDIRECT_N_ITEMS_PUBLISHED="%d links successfully enabled." COM_REDIRECT_N_ITEMS_PUBLISHED_1="Link successfully enabled." COM_REDIRECT_N_ITEMS_TRASHED="%d links successfully trashed." COM_REDIRECT_N_ITEMS_TRASHED_1="Link successfully trashed." COM_REDIRECT_N_ITEMS_UNPUBLISHED="%d links successfully disabled." COM_REDIRECT_N_ITEMS_UNPUBLISHED_1="Link successfully disabled." COM_REDIRECT_N_LINKS_ADDED="%d links added." COM_REDIRECT_N_LINKS_ADDED_1="1 link has been added." COM_REDIRECT_N_LINKS_UPDATED="%d links updated." COM_REDIRECT_N_LINKS_UPDATED_1="1 link has been updated." COM_REDIRECT_NEW_LINK="New Link" COM_REDIRECT_NO_ITEM_ADDED="No links added." COM_REDIRECT_NO_ITEM_SELECTED="No links selected." ; Change 'System%20-%20Redirect' to the value in plg_system_redirect.sys.ini for your language COM_REDIRECT_PLUGIN_DISABLED="The Redirect Plugin is disabled. <a href="_QQ_"index.php?option=com_plugins&view=plugins&filter[search]=System%20-%20Redirect"_QQ_">Enable it in the Plugin Manager</a>." COM_REDIRECT_PLUGIN_ENABLED="The Redirect Plugin is enabled." COM_REDIRECT_REDIRECTED_ON="Redirected on: %s." COM_REDIRECT_SAVE_SUCCESS="Link successfully saved." COM_REDIRECT_SEARCH_LINKS="Search in link fields." COM_REDIRECT_XML_DESCRIPTION="This component implements link redirection." JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings."PKb��\����6language/en-GB/en-GB.plg_authentication_joomla.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_AUTH_JOOMLA_XML_DESCRIPTION="Handles Joomla's default User authentication.<br /><strong> Warning! You must have at least one authentication plugin enabled or you will lose all access to your site.</strong>" PLG_AUTHENTICATION_JOOMLA="Authentication - Joomla"PKb��\JK)��7language/en-GB/en-GB.plg_content_pagenavigation.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTENT_PAGENAVIGATION="Content - Page Navigation" PLG_PAGENAVIGATION_XML_DESCRIPTION="Enables you to add <em>Next & Previous</em> functionality to an Article." PKb��\�C����/language/en-GB/en-GB.plg_content_loadmodule.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTENT_LOADMODULE="Content - Load Modules" PLG_LOADMODULE_FIELD_STYLE_DESC="Code that will wrap Modules." PLG_LOADMODULE_FIELD_STYLE_LABEL="Style" PLG_LOADMODULE_FIELD_VALUE_DIVS="Wrapped by Divs" PLG_LOADMODULE_FIELD_VALUE_HORIZONTAL="Wrapped by table (horizontal)" PLG_LOADMODULE_FIELD_VALUE_MULTIPLEDIVS="Wrapped by Multiple Divs" PLG_LOADMODULE_FIELD_VALUE_RAW="No wrapping (raw output)" PLG_LOADMODULE_FIELD_VALUE_TABLE="Wrapped by table (column)" PLG_LOADMODULE_XML_DESCRIPTION="Within content this plugin loads Module positions, Syntax: {loadposition user1} or Modules by name, Syntax: {loadmodule mod_login}. Optionally can specify module style and for loadmodule a specific module title." PKb��\���vv$language/en-GB/en-GB.mod_toolbar.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_TOOLBAR="Toolbar" MOD_TOOLBAR_XML_DESCRIPTION="This module shows the toolbar icons used to control actions throughout the Administrator area."PKb��\Yق���*language/en-GB/en-GB.com_newsfeeds.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_NEWSFEEDS="News Feeds" COM_NEWSFEEDS_CATEGORIES="Categories" COM_NEWSFEEDS_CATEGORIES_VIEW_DEFAULT_DESC="Show all the news feed categories within a category." COM_NEWSFEEDS_CATEGORIES_VIEW_DEFAULT_OPTION="Default" COM_NEWSFEEDS_CATEGORIES_VIEW_DEFAULT_TITLE="List All News Feed Categories" COM_NEWSFEEDS_CATEGORY_ADD_TITLE="News Feed: Add Category" COM_NEWSFEEDS_CATEGORY_EDIT_TITLE="News Feed: Edit Category" COM_NEWSFEEDS_CATEGORY_VIEW_DEFAULT_DESC="Show all news feeds within a category." COM_NEWSFEEDS_CATEGORY_VIEW_DEFAULT_OPTION="Default" COM_NEWSFEEDS_CATEGORY_VIEW_DEFAULT_TITLE="List News Feeds in a Category" COM_NEWSFEEDS_CONTENT_TYPE_NEWSFEED="News feed" COM_NEWSFEEDS_CONTENT_TYPE_CATEGORY="News Feed Category" COM_NEWSFEEDS_FEEDS="Feeds" COM_NEWSFEEDS_NEWSFEED_VIEW_DEFAULT_DESC="Show a single news feed." COM_NEWSFEEDS_NEWSFEED_VIEW_DEFAULT_OPTION="Default" COM_NEWSFEEDS_NEWSFEED_VIEW_DEFAULT_TITLE="Single News Feed" COM_NEWSFEEDS_XML_DESCRIPTION="This component manages RSS and Atom news feeds." PKb��\](�cc&language/en-GB/en-GB.mod_quickicon.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_QUICKICON="Quick Icons" MOD_QUICKICON_ADD_NEW_ARTICLE="New Article" MOD_QUICKICON_ARTICLE_MANAGER="Articles" MOD_QUICKICON_CATEGORY_MANAGER="Categories" MOD_QUICKICON_CLEAR_CACHE="Clear Cache" MOD_QUICKICON_CONFIGURATION="Configuration" MOD_QUICKICON_CONTENT="Content" MOD_QUICKICON_EXTENSIONS="Extensions" MOD_QUICKICON_EXTENSION_MANAGER="Extension Manager" MOD_QUICKICON_FRONTPAGE_MANAGER="Front Page Manager" MOD_QUICKICON_GLOBAL_CHECKIN="Global Check-in" MOD_QUICKICON_GLOBAL_CONFIGURATION="Global" MOD_QUICKICON_GROUP_DESC="The group of this module (this value is compared with the group value used in <b>Quick Icons</b> plugins to inject icons). The 'mod_quickicon' group always displays the Joomla! core icons." MOD_QUICKICON_GROUP_LABEL="Group" MOD_QUICKICON_INSTALL_EXTENSIONS="Install Extensions" MOD_QUICKICON_LANGUAGE_MANAGER="Language(s)" MOD_QUICKICON_MAINTENANCE="Maintenance" MOD_QUICKICON_MEDIA_MANAGER="Media" MOD_QUICKICON_MENU_MANAGER="Menu(s)" MOD_QUICKICON_MODULE_MANAGER="Modules" MOD_QUICKICON_PROFILE="Edit Profile" MOD_QUICKICON_STRUCTURE="Structure" MOD_QUICKICON_SYSTEM_INFORMATION="System Information" MOD_QUICKICON_TEMPLATE_MANAGER="Templates" MOD_QUICKICON_TITLE="Quick Icons" MOD_QUICKICON_USER_MANAGER="Users" MOD_QUICKICON_USERS="Users" MOD_QUICKICON_XML_DESCRIPTION="This module shows Quick Icons that are visible on the Control Panel (administrator area home page)." PKb��\�q���$language/en-GB/en-GB.com_checkin.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CHECKIN="Check-in" COM_CHECKIN_CONFIGURATION="Check-in: Options" COM_CHECKIN_DATABASE_TABLE="Database Table" COM_CHECKIN_FILTER_SEARCH_DESC="Search table." COM_CHECKIN_GLOBAL_CHECK_IN="Maintenance: Global Check-in" COM_CHECKIN_ITEMS_TO_CHECK_IN="Items to check-in" COM_CHECKIN_N_ITEMS_CHECKED_IN_0="No item checked in." COM_CHECKIN_N_ITEMS_CHECKED_IN_1="1 item checked in." COM_CHECKIN_N_ITEMS_CHECKED_IN_MORE="%s items checked in." COM_CHECKIN_TABLE="<em>%s</em> table" COM_CHECKIN_XML_DESCRIPTION="Check-in Component." JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings."PKb��\�Bթ�+�+language/en-GB/install.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension version="3.4" client="administrator" type="language" method="upgrade"> <name>English (United Kingdom)</name> <tag>en-GB</tag> <version>3.4.2</version> <creationDate>2013-03-07</creationDate> <author>Joomla! Project</author> <authorEmail>admin@joomla.org</authorEmail> <authorUrl>www.joomla.org</authorUrl> <copyright>Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.</copyright> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <description>en-GB administrator language</description> <files> <filename>en-GB.com_admin.ini</filename> <filename>en-GB.com_admin.sys.ini</filename> <filename>en-GB.com_ajax.ini</filename> <filename>en-GB.com_ajax.sys.ini</filename> <filename>en-GB.com_banners.ini</filename> <filename>en-GB.com_banners.sys.ini</filename> <filename>en-GB.com_cache.ini</filename> <filename>en-GB.com_cache.sys.ini</filename> <filename>en-GB.com_categories.ini</filename> <filename>en-GB.com_categories.sys.ini</filename> <filename>en-GB.com_checkin.ini</filename> <filename>en-GB.com_checkin.sys.ini</filename> <filename>en-GB.com_config.ini</filename> <filename>en-GB.com_config.sys.ini</filename> <filename>en-GB.com_contact.ini</filename> <filename>en-GB.com_contact.sys.ini</filename> <filename>en-GB.com_content.ini</filename> <filename>en-GB.com_content.sys.ini</filename> <filename>en-GB.com_contenthistory.ini</filename> <filename>en-GB.com_contenthistory.sys.ini</filename> <filename>en-GB.com_cpanel.ini</filename> <filename>en-GB.com_cpanel.sys.ini</filename> <filename>en-GB.com_finder.ini</filename> <filename>en-GB.com_finder.sys.ini</filename> <filename>en-GB.com_installer.ini</filename> <filename>en-GB.com_installer.sys.ini</filename> <filename>en-GB.com_joomlaupdate.ini</filename> <filename>en-GB.com_joomlaupdate.sys.ini</filename> <filename>en-GB.com_languages.ini</filename> <filename>en-GB.com_languages.sys.ini</filename> <filename>en-GB.com_login.ini</filename> <filename>en-GB.com_login.sys.ini</filename> <filename>en-GB.com_mailto.sys.ini</filename> <filename>en-GB.com_media.ini</filename> <filename>en-GB.com_media.sys.ini</filename> <filename>en-GB.com_menus.ini</filename> <filename>en-GB.com_menus.sys.ini</filename> <filename>en-GB.com_messages.ini</filename> <filename>en-GB.com_messages.sys.ini</filename> <filename>en-GB.com_modules.ini</filename> <filename>en-GB.com_modules.sys.ini</filename> <filename>en-GB.com_newsfeeds.ini</filename> <filename>en-GB.com_newsfeeds.sys.ini</filename> <filename>en-GB.com_plugins.ini</filename> <filename>en-GB.com_plugins.sys.ini</filename> <filename>en-GB.com_postinstall.ini</filename> <filename>en-GB.com_postinstall.sys.ini</filename> <filename>en-GB.com_redirect.ini</filename> <filename>en-GB.com_redirect.sys.ini</filename> <filename>en-GB.com_search.ini</filename> <filename>en-GB.com_search.sys.ini</filename> <filename>en-GB.com_tags.ini</filename> <filename>en-GB.com_tags.sys.ini</filename> <filename>en-GB.com_templates.ini</filename> <filename>en-GB.com_templates.sys.ini</filename> <filename>en-GB.com_users.ini</filename> <filename>en-GB.com_users.sys.ini</filename> <filename>en-GB.com_weblinks.ini</filename> <filename>en-GB.com_weblinks.sys.ini</filename> <filename>en-GB.com_wrapper.ini</filename> <filename>en-GB.com_wrapper.sys.ini</filename> <filename>en-GB.ini</filename> <filename>en-GB.lib_joomla.ini</filename> <filename>en-GB.localise.php</filename> <filename>en-GB.mod_custom.ini</filename> <filename>en-GB.mod_custom.sys.ini</filename> <filename>en-GB.mod_feed.ini</filename> <filename>en-GB.mod_feed.sys.ini</filename> <filename>en-GB.mod_latest.ini</filename> <filename>en-GB.mod_latest.sys.ini</filename> <filename>en-GB.mod_logged.ini</filename> <filename>en-GB.mod_logged.sys.ini</filename> <filename>en-GB.mod_login.ini</filename> <filename>en-GB.mod_login.sys.ini</filename> <filename>en-GB.mod_menu.ini</filename> <filename>en-GB.mod_menu.sys.ini</filename> <filename>en-GB.mod_multilangstatus.ini</filename> <filename>en-GB.mod_multilangstatus.sys.ini</filename> <filename>en-GB.mod_popular.ini</filename> <filename>en-GB.mod_popular.sys.ini</filename> <filename>en-GB.mod_quickicon.ini</filename> <filename>en-GB.mod_quickicon.sys.ini</filename> <filename>en-GB.mod_stats_admin.ini</filename> <filename>en-GB.mod_stats_admin.sys.ini</filename> <filename>en-GB.mod_status.ini</filename> <filename>en-GB.mod_status.sys.ini</filename> <filename>en-GB.mod_submenu.ini</filename> <filename>en-GB.mod_submenu.sys.ini</filename> <filename>en-GB.mod_title.ini</filename> <filename>en-GB.mod_title.sys.ini</filename> <filename>en-GB.mod_toolbar.ini</filename> <filename>en-GB.mod_toolbar.sys.ini</filename> <filename>en-GB.mod_version.ini</filename> <filename>en-GB.mod_version.sys.ini</filename> <filename>en-GB.plg_authentication_cookie.ini</filename> <filename>en-GB.plg_authentication_cookie.sys.ini</filename> <filename>en-GB.plg_authentication_gmail.ini</filename> <filename>en-GB.plg_authentication_gmail.sys.ini</filename> <filename>en-GB.plg_authentication_joomla.ini</filename> <filename>en-GB.plg_authentication_joomla.sys.ini</filename> <filename>en-GB.plg_authentication_ldap.ini</filename> <filename>en-GB.plg_authentication_ldap.sys.ini</filename> <filename>en-GB.plg_captcha_recaptcha.ini</filename> <filename>en-GB.plg_captcha_recaptcha.sys.ini</filename> <filename>en-GB.plg_content_contact.ini</filename> <filename>en-GB.plg_content_contact.sys.ini</filename> <filename>en-GB.plg_content_emailcloak.ini</filename> <filename>en-GB.plg_content_emailcloak.sys.ini</filename> <filename>en-GB.plg_content_finder.ini</filename> <filename>en-GB.plg_content_finder.sys.ini</filename> <filename>en-GB.plg_content_joomla.ini</filename> <filename>en-GB.plg_content_joomla.sys.ini</filename> <filename>en-GB.plg_content_loadmodule.ini</filename> <filename>en-GB.plg_content_loadmodule.sys.ini</filename> <filename>en-GB.plg_content_pagebreak.ini</filename> <filename>en-GB.plg_content_pagebreak.sys.ini</filename> <filename>en-GB.plg_content_pagenavigation.ini</filename> <filename>en-GB.plg_content_pagenavigation.sys.ini</filename> <filename>en-GB.plg_content_vote.ini</filename> <filename>en-GB.plg_content_vote.sys.ini</filename> <filename>en-GB.plg_editors_codemirror.ini</filename> <filename>en-GB.plg_editors_codemirror.sys.ini</filename> <filename>en-GB.plg_editors_none.ini</filename> <filename>en-GB.plg_editors_none.sys.ini</filename> <filename>en-GB.plg_editors_tinymce.ini</filename> <filename>en-GB.plg_editors_tinymce.sys.ini</filename> <filename>en-GB.plg_editors-xtd_article.ini</filename> <filename>en-GB.plg_editors-xtd_article.sys.ini</filename> <filename>en-GB.plg_editors-xtd_image.ini</filename> <filename>en-GB.plg_editors-xtd_image.sys.ini</filename> <filename>en-GB.plg_editors-xtd_pagebreak.ini</filename> <filename>en-GB.plg_editors-xtd_pagebreak.sys.ini</filename> <filename>en-GB.plg_editors-xtd_readmore.ini</filename> <filename>en-GB.plg_editors-xtd_readmore.sys.ini</filename> <filename>en-GB.plg_extension_joomla.ini</filename> <filename>en-GB.plg_extension_joomla.sys.ini</filename> <filename>en-GB.plg_finder_categories.ini</filename> <filename>en-GB.plg_finder_categories.sys.ini</filename> <filename>en-GB.plg_finder_contacts.ini</filename> <filename>en-GB.plg_finder_contacts.sys.ini</filename> <filename>en-GB.plg_finder_content.ini</filename> <filename>en-GB.plg_finder_content.sys.ini</filename> <filename>en-GB.plg_finder_newsfeeds.ini</filename> <filename>en-GB.plg_finder_newsfeeds.sys.ini</filename> <filename>en-GB.plg_finder_tags.ini</filename> <filename>en-GB.plg_finder_tags.sys.ini</filename> <filename>en-GB.plg_finder_weblinks.ini</filename> <filename>en-GB.plg_finder_weblinks.sys.ini</filename> <filename>en-GB.plg_installer_webinstaller.ini</filename> <filename>en-GB.plg_installer_webinstaller.sys.ini</filename> <filename>en-GB.plg_quickicon_extensionupdate.ini</filename> <filename>en-GB.plg_quickicon_extensionupdate.sys.ini</filename> <filename>en-GB.plg_quickicon_joomlaupdate.ini</filename> <filename>en-GB.plg_quickicon_joomlaupdate.sys.ini</filename> <filename>en-GB.plg_search_categories.ini</filename> <filename>en-GB.plg_search_categories.sys.ini</filename> <filename>en-GB.plg_search_contacts.ini</filename> <filename>en-GB.plg_search_contacts.sys.ini</filename> <filename>en-GB.plg_search_content.ini</filename> <filename>en-GB.plg_search_content.sys.ini</filename> <filename>en-GB.plg_search_newsfeeds.ini</filename> <filename>en-GB.plg_search_newsfeeds.sys.ini</filename> <filename>en-GB.plg_search_tags.ini</filename> <filename>en-GB.plg_search_tags.sys.ini</filename> <filename>en-GB.plg_search_weblinks.ini</filename> <filename>en-GB.plg_search_weblinks.sys.ini</filename> <filename>en-GB.plg_system_cache.ini</filename> <filename>en-GB.plg_system_cache.sys.ini</filename> <filename>en-GB.plg_system_debug.ini</filename> <filename>en-GB.plg_system_debug.sys.ini</filename> <filename>en-GB.plg_system_highlight.ini</filename> <filename>en-GB.plg_system_highlight.sys.ini</filename> <filename>en-GB.plg_system_languagecode.ini</filename> <filename>en-GB.plg_system_languagecode.sys.ini</filename> <filename>en-GB.plg_system_languagefilter.ini</filename> <filename>en-GB.plg_system_languagefilter.sys.ini</filename> <filename>en-GB.plg_system_log.ini</filename> <filename>en-GB.plg_system_log.sys.ini</filename> <filename>en-GB.plg_system_logout.ini</filename> <filename>en-GB.plg_system_logout.sys.ini</filename> <filename>en-GB.plg_system_p3p.ini</filename> <filename>en-GB.plg_system_p3p.sys.ini</filename> <filename>en-GB.plg_system_redirect.ini</filename> <filename>en-GB.plg_system_redirect.sys.ini</filename> <filename>en-GB.plg_system_remember.ini</filename> <filename>en-GB.plg_system_remember.sys.ini</filename> <filename>en-GB.plg_system_sef.ini</filename> <filename>en-GB.plg_system_sef.sys.ini</filename> <filename>en-GB.plg_twofactorauth_totp.ini</filename> <filename>en-GB.plg_twofactorauth_totp.sys.ini</filename> <filename>en-GB.plg_twofactorauth_yubikey.ini</filename> <filename>en-GB.plg_twofactorauth_yubikey.sys.ini</filename> <filename>en-GB.plg_user_contactcreator.ini</filename> <filename>en-GB.plg_user_contactcreator.sys.ini</filename> <filename>en-GB.plg_user_joomla.ini</filename> <filename>en-GB.plg_user_joomla.sys.ini</filename> <filename>en-GB.plg_user_profile.ini</filename> <filename>en-GB.plg_user_profile.sys.ini</filename> <filename>en-GB.tpl_hathor.ini</filename> <filename>en-GB.tpl_hathor.sys.ini</filename> <filename>en-GB.tpl_isis.ini</filename> <filename>en-GB.tpl_isis.sys.ini</filename> <filename file="meta">en-GB.xml</filename> <filename file="meta">install.xml</filename> </files> <params /> </extension> PKb��\�k#language/en-GB/en-GB.mod_custom.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_CUSTOM="Custom HTML" MOD_CUSTOM_FIELD_PREPARE_CONTENT_DESC="Optionally prepare the content with Joomla Content Plugins." MOD_CUSTOM_FIELD_PREPARE_CONTENT_LABEL="Prepare Content" MOD_CUSTOM_XML_DESCRIPTION="This module allows you to create your own HTML Module using a WYSIWYG editor." PKb��\0� [[3language/en-GB/en-GB.plg_editors_codemirror.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CODEMIRROR_XML_DESCRIPTION="This plugin loads the CodeMirror editor." PLG_EDITORS_CODEMIRROR="Editor - CodeMirror" PKb��\�^wFrr/language/en-GB/en-GB.plg_content_emailcloak.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTENT_EMAILCLOAK="Content - Email Cloaking" PLG_CONTENT_EMAILCLOAK_LINKABLE="As linkable mailto address" PLG_CONTENT_EMAILCLOAK_MODE_DESC="Select how email addresses will be displayed." PLG_CONTENT_EMAILCLOAK_MODE_LABEL="Mode" PLG_CONTENT_EMAILCLOAK_NONLINKABLE="Non-linkable Text" PLG_CONTENT_EMAILCLOAK_XML_DESCRIPTION="Cloaks all email addresses in content from spambots using JavaScript."PKb��\�c�||%language/en-GB/en-GB.mod_menu.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_MENU="Administrator Menu" MOD_MENU_XML_DESCRIPTION="This module shows the main administrator navigation module." MOD_MENU_LAYOUT_DEFAULT="Default" PKb��\Q���#language/en-GB/en-GB.mod_latest.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_LATEST="Articles - Latest" MOD_LATEST_CREATED="Created" MOD_LATEST_CREATED_BY="Created By" MOD_LATEST_FIELD_AUTHORS_DESC="A filter for the authors." MOD_LATEST_FIELD_AUTHORS_LABEL="Authors" MOD_LATEST_FIELD_CATEGORY_DESC="Select Articles from a specific Category or set of Categories." MOD_LATEST_FIELD_COUNT_DESC="The number of items to display (default 5)." MOD_LATEST_FIELD_COUNT_LABEL="Count" MOD_LATEST_FIELD_ORDERING_DESC="Ordering options." MOD_LATEST_FIELD_ORDERING_LABEL="Order" MOD_LATEST_FIELD_VALUE_AUTHORS_ANYONE="Anyone" MOD_LATEST_FIELD_VALUE_AUTHORS_BY_ME="Added or modified by me" MOD_LATEST_FIELD_VALUE_AUTHORS_NOT_BY_ME="Not added or modified by me" MOD_LATEST_FIELD_VALUE_ORDERING_ADDED="Recently Added First" MOD_LATEST_FIELD_VALUE_ORDERING_MODIFIED="Recently Modified First" MOD_LATEST_LATEST_ITEMS="Latest Items" MOD_LATEST_NO_MATCHING_RESULTS="No Matching Results" MOD_LATEST_TITLE="Recently Created Articles" MOD_LATEST_TITLE_CREATED="Last Added Articles" MOD_LATEST_TITLE_CREATED_1="Last Added Article" MOD_LATEST_TITLE_CREATED_MORE="Last %1$s Added Articles" MOD_LATEST_TITLE_CREATED_NOT_ME="Last Added Articles Not By Me" MOD_LATEST_TITLE_CREATED_NOT_ME_1="Last Added Article Not By Me" MOD_LATEST_TITLE_CREATED_NOT_ME_MORE="Last %1$s Added Articles Not By Me" MOD_LATEST_TITLE_CREATED_BY_ME="Last Added Articles By Me" MOD_LATEST_TITLE_CREATED_BY_ME_1="Last Added Article By Me" MOD_LATEST_TITLE_CREATED_BY_ME_MORE="Last %1$s Added Articles By Me" MOD_LATEST_TITLE_CREATED_CATEGORY="Last Added Articles (%2$s category)" MOD_LATEST_TITLE_CREATED_CATEGORY_1="Last Added Article (%2$s category)" MOD_LATEST_TITLE_CREATED_CATEGORY_MORE="Last %1$s Added Articles (%2$s category)" MOD_LATEST_TITLE_CREATED_CATEGORY_BY_ME="Last Added Articles By Me (%2$s category)" MOD_LATEST_TITLE_CREATED_CATEGORY_BY_ME_1="Last Added Article By Me (%2$s category)" MOD_LATEST_TITLE_CREATED_CATEGORY_BY_ME_MORE="Last %1$s Added Articles By Me (%2$s category)" MOD_LATEST_TITLE_CREATED_CATEGORY_NOT_ME="Last Added Articles Not By Me (%2$s category)" MOD_LATEST_TITLE_CREATED_CATEGORY_NOT_ME_1="Last Added Article Not By Me (%2$s category)" MOD_LATEST_TITLE_CREATED_CATEGORY_NOT_ME_MORE="Last %1$s Added Articles Not By Me (%2$s category)" MOD_LATEST_TITLE_MODIFIED="Last Modified Articles" MOD_LATEST_TITLE_MODIFIED_1="Last Modified Article" MOD_LATEST_TITLE_MODIFIED_MORE="Last %1$s Modified Articles" MOD_LATEST_TITLE_MODIFIED_BY_ME="Last Modified Articles By Me" MOD_LATEST_TITLE_MODIFIED_BY_ME_1="Last Modified Article By Me" MOD_LATEST_TITLE_MODIFIED_BY_ME_MORE="Last %1$s Modified Articles By Me" MOD_LATEST_TITLE_MODIFIED_NOT_ME="Last Modified Articles Not By Me" MOD_LATEST_TITLE_MODIFIED_NOT_ME_1="Last Modified Article Not By Me" MOD_LATEST_TITLE_MODIFIED_NOT_ME_MORE="Last %1$s Modified Articles Not By Me" MOD_LATEST_TITLE_MODIFIED_CATEGORY="Last Modified Articles (%2$s category)" MOD_LATEST_TITLE_MODIFIED_CATEGORY_1="Last Modified Article (%2$s category)" MOD_LATEST_TITLE_MODIFIED_CATEGORY_MORE="Last %1$s Modified Articles (%2$s category)" MOD_LATEST_TITLE_MODIFIED_CATEGORY_BY_ME="Last Modified Articles By Me (%2$s category)" MOD_LATEST_TITLE_MODIFIED_CATEGORY_BY_ME_1="Last Modified Article By Me (%2$s category)" MOD_LATEST_TITLE_MODIFIED_CATEGORY_BY_ME_MORE="Last %1$s Modified Articles By Me (%2$s category)" MOD_LATEST_TITLE_MODIFIED_CATEGORY_NOT_ME="Last Modified Articles Not By Me (%2$s category)" MOD_LATEST_TITLE_MODIFIED_CATEGORY_NOT_ME_1="Last Modified Article Not By Me (%2$s category)" MOD_LATEST_TITLE_MODIFIED_CATEGORY_NOT_ME_MORE="Last %1$s Modified Articles Not By Me (%2$s category)" MOD_LATEST_UNEXISTING="<i>Non existent</i>" MOD_LATEST_XML_DESCRIPTION="This module shows a list of the most recently published Articles that are still current. Some that are shown may have expired even though they are the most recent." PKb��\��ܲ�'language/en-GB/en-GB.plg_system_p3p.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_P3P_XML_DESCRIPTION="The system P3P policy plugin allows Joomla! to send a customised string of P3P policy tags in the HTTP header. This is required for the sessions to work on certain browsers, ie Internet Explorer 6 and 7." PLG_SYSTEM_P3P="System - P3P Policy" PLG_P3P_HEADER_DESCRIPTION="Enter your P3P policy tags. For more information consult The Platform for Privacy Preferences specification, http://www.w3.org/TR/P3P/" PLG_P3P_HEADER_LABEL="P3P Tags"PKb��\_����(�($language/en-GB/en-GB.com_modules.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_MODULES="Modules Manager" COM_MODULES_ACTION_EDITFRONTEND="Frontend Editing" COM_MODULES_ACTION_EDITFRONTEND_COMPONENT_DESC="Allows users in the group to edit in Frontend." COM_MODULES_ADVANCED_FIELDSET_LABEL="Advanced" COM_MODULES_ASSIGNED_VARIES_EXCEPT="All except selected" COM_MODULES_ASSIGNED_VARIES_ONLY="Selected" COM_MODULES_BASIC_FIELDSET_LABEL="Options" COM_MODULES_BATCH_POSITION_LABEL="Set Position" COM_MODULES_BATCH_POSITION_NOCHANGE="Keep original Position" COM_MODULES_BATCH_POSITION_NOPOSITION="No Module Position" COM_MODULES_BATCH_OPTIONS="Batch process the selected modules" COM_MODULES_BATCH_TIP="If choosing to copy a module, any other actions selected will be applied to the copied module. Otherwise, all actions are applied to the selected module. When copying and not changing position, it is nevertheless necessary to select 'Keep Original Position' in the dropdown." COM_MODULES_CHANGE_POSITION_BUTTON="Select" COM_MODULES_CHANGE_POSITION_TITLE="Change" COM_MODULES_CONFIGURATION="Module: Options" COM_MODULES_CUSTOM_OUTPUT="Custom Output" COM_MODULES_ERR_XML="Module XML data not available" COM_MODULES_ERROR_CANNOT_FIND_MODULE="Can't find module" COM_MODULES_ERROR_CANNOT_GET_MODULE="Can't get module" COM_MODULES_ERROR_INVALID_EXTENSION="Invalid module" COM_MODULES_ERROR_NO_MODULES_SELECTED="No module selected." COM_MODULES_EXTENSION_PUBLISHED_DISABLED="Module disabled and published." COM_MODULES_EXTENSION_PUBLISHED_ENABLED="Module enabled and published." COM_MODULES_EXTENSION_UNPUBLISHED_DISABLED="Module disabled and unpublished." COM_MODULES_EXTENSION_UNPUBLISHED_ENABLED="Module enabled and unpublished." COM_MODULES_FIELD_AUTOMATIC_TITLE_LABEL="Automatic Title" COM_MODULES_FIELD_AUTOMATIC_TITLE_DESC="Set yes if you want an automatic translated title. Its use depends on the Administrator template." COM_MODULES_FIELD_CACHE_TIME_DESC="The time in seconds before the module is recached." COM_MODULES_FIELD_CACHE_TIME_LABEL="Cache Time" COM_MODULES_FIELD_CACHING_DESC="Select whether to cache the content of this module." COM_MODULES_FIELD_CACHING_LABEL="Caching" COM_MODULES_FIELD_CLIENT_ID_DESC="The location of the module, Frontend or Backend. You can't change this value." COM_MODULES_FIELD_CLIENT_ID_LABEL="Module Location" COM_MODULES_FIELD_CONTENT_DESC="Text" COM_MODULES_FIELD_CONTENT_LABEL="Text" COM_MODULES_FIELD_MODULE_DESC="Module type." COM_MODULES_FIELD_MODULE_LABEL="Module Type" COM_MODULES_FIELD_MODULECLASS_SFX_DESC="A suffix to be applied to the CSS class of the module. This allows for individual module styling." COM_MODULES_FIELD_MODULECLASS_SFX_LABEL="Module Class Suffix" COM_MODULES_FIELD_NOTE_DESC="An optional note to display in the Module Manager." COM_MODULES_FIELD_NOTE_LABEL="Note" COM_MODULES_FIELD_POSITION_DESC="You may select a module position from the list of pre-defined positions or enter your own module position by typing the name in the field and pressing enter." COM_MODULES_FIELD_POSITION_LABEL="Position" COM_MODULES_FIELD_PUBLISH_DOWN_DESC="An optional date to Finish Publishing the module." COM_MODULES_FIELD_PUBLISH_DOWN_LABEL="Finish Publishing" COM_MODULES_FIELD_PUBLISH_UP_DESC="An optional date to Start Publishing the module." COM_MODULES_FIELD_PUBLISH_UP_LABEL="Start Publishing" COM_MODULES_FIELD_PUBLISHED_DESC="If published, this module will display on your site Frontend or Backend depending on the module." COM_MODULES_FIELD_SHOWTITLE_DESC="Show or hide module title on display. Effect will depend on the chrome style in the template." COM_MODULES_FIELD_SHOWTITLE_LABEL="Show Title" COM_MODULES_FIELD_TITLE_DESC="Module must have a title." COM_MODULES_FIELD_VALUE_NOCACHING="No caching" COM_MODULES_FIELD_MODULE_TAG_LABEL="Module Tag" COM_MODULES_FIELD_MODULE_TAG_DESC="The HTML tag for module." COM_MODULES_FIELD_BOOTSTRAP_SIZE_LABEL="Bootstrap Size" COM_MODULES_FIELD_BOOTSTRAP_SIZE_DESC="An option to specify how many columns the module will use." COM_MODULES_FIELD_HEADER_TAG_LABEL="Header Tag" COM_MODULES_FIELD_HEADER_TAG_DESC="The HTML tag for module header/title." COM_MODULES_FIELD_HEADER_CLASS_LABEL="Header Class" COM_MODULES_FIELD_HEADER_CLASS_DESC="The CSS class for module header/title." COM_MODULES_FIELD_MODULE_STYLE_LABEL="Module Style" COM_MODULES_FIELD_MODULE_STYLE_DESC="Use this option to override the template style for it's position." COM_MODULES_FIELDSET_RULES="Module Permissions" COM_MODULES_FILTER_SEARCH_DESC="Filter by position name." COM_MODULES_HEADING_MODULE="Type" COM_MODULES_HEADING_PAGES="Pages" COM_MODULES_HEADING_POSITION="Position" COM_MODULES_HEADING_TEMPLATES="Templates" COM_MODULES_HTML_PUBLISH_DISABLED="Publish module::Extension disabled" COM_MODULES_HTML_PUBLISH_ENABLED="Publish module::Extension enabled" COM_MODULES_HTML_UNPUBLISH_DISABLED="Unpublish module::Extension disabled" COM_MODULES_HTML_UNPUBLISH_ENABLED="Unpublish module::Extension enabled" COM_MODULES_MANAGER_MODULE="Modules: %s" COM_MODULES_MANAGER_MODULE_ADD="Modules: Add New Module" COM_MODULES_MANAGER_MODULE_EDIT="Modules: Edit Module" COM_MODULES_MANAGER_MODULES="Modules" COM_MODULES_MENU_ASSIGNMENT="Menu Assignment" COM_MODULES_MODULE_ASSIGN="Module Assignment" COM_MODULES_MODULE="Module" COM_MODULES_MODULE_DESCRIPTION="Module Description" COM_MODULES_MODULE_TEMPLATE_POSITION="%1$s (%2$s)" COM_MODULES_MODULES="Modules" COM_MODULES_MODULES_FILTER_SEARCH_DESC="Search in module title. Prefix with ID: to search for a module ID" COM_MODULES_MSG_MANAGE_NO_MODULES="There are no modules matching your query" COM_MODULES_N_ITEMS_ARCHIVED="%d modules successfully archived." COM_MODULES_N_ITEMS_ARCHIVED_1="%d module successfully archived." COM_MODULES_N_ITEMS_CHECKED_IN_0="No module successfully checked in." COM_MODULES_N_ITEMS_CHECKED_IN_1="%d module successfully checked in." COM_MODULES_N_ITEMS_CHECKED_IN_MORE="%d modules successfully checked in." COM_MODULES_N_ITEMS_DELETED="%d modules successfully deleted." COM_MODULES_N_ITEMS_DELETED_1="%d module successfully deleted." COM_MODULES_N_ITEMS_PUBLISHED="%d modules successfully published." COM_MODULES_N_ITEMS_PUBLISHED_1="%d module successfully published." COM_MODULES_N_ITEMS_TRASHED="%d modules successfully trashed." COM_MODULES_N_ITEMS_TRASHED_1="%d module successfully trashed." COM_MODULES_N_ITEMS_UNPUBLISHED="%d modules successfully unpublished." COM_MODULES_N_ITEMS_UNPUBLISHED_1="%d module successfully unpublished." COM_MODULES_N_MODULES_DUPLICATED="%d modules successfully duplicated." COM_MODULES_N_MODULES_DUPLICATED_1="%d module successfully duplicated." COM_MODULES_NO_ITEM_SELECTED="No modules selected." COM_MODULES_NODESCRIPTION="No description available." COM_MODULES_OPTION_MENU_ALL="On all pages" COM_MODULES_OPTION_MENU_EXCLUDE="On all pages except those selected" COM_MODULES_OPTION_MENU_INCLUDE="Only on the pages selected" COM_MODULES_OPTION_MENU_NONE="No pages" COM_MODULES_OPTION_ORDER_POSITION="%d. %s" COM_MODULES_OPTION_POSITION_TEMPLATE_DEFINED="Template" COM_MODULES_OPTION_POSITION_USER_DEFINED="User" COM_MODULES_OPTION_SELECT_CLIENT="- Select Type -" COM_MODULES_OPTION_SELECT_MODULE="- Select Type -" COM_MODULES_OPTION_SELECT_POSITION="- Select Position -" COM_MODULES_OPTION_SELECT_TYPE="- Select type -" COM_MODULES_POSITION_ANALYTICS="Analytics" COM_MODULES_POSITION_BANNER="Banner" COM_MODULES_POSITION_BOTTOM="Bottom" COM_MODULES_POSITION_BREADCRUMB="Breadcrumb" COM_MODULES_POSITION_BREADCRUMBS="Breadcrumbs" COM_MODULES_POSITION_DEBUG="Debug" COM_MODULES_POSITION_FOOTER="Footer" COM_MODULES_POSITION_HEADER="Header" COM_MODULES_POSITION_LEFT2="Left 2" COM_MODULES_POSITION_LEFT="Left" COM_MODULES_POSITION_MAINNAV="Main Navigation" COM_MODULES_POSITION_NAV="Navigation" COM_MODULES_POSITION_OFFLINE="Offline" COM_MODULES_POSITION_POSITION-0="Position 0" COM_MODULES_POSITION_POSITION-10="Position 10" COM_MODULES_POSITION_POSITION-11="Position 11" COM_MODULES_POSITION_POSITION-12="Position 12" COM_MODULES_POSITION_POSITION-13="Position 13" COM_MODULES_POSITION_POSITION-14="Position 14" COM_MODULES_POSITION_POSITION-15="Position 15" COM_MODULES_POSITION_POSITION-1="Position 1" COM_MODULES_POSITION_POSITION-2="Position 2" COM_MODULES_POSITION_POSITION-3="Position 3" COM_MODULES_POSITION_POSITION-4="Position 4" COM_MODULES_POSITION_POSITION-5="Position 5" COM_MODULES_POSITION_POSITION-6="Position 6" COM_MODULES_POSITION_POSITION-7="Position 7" COM_MODULES_POSITION_POSITION-8="Position 8" COM_MODULES_POSITION_POSITION-9="Position 9" COM_MODULES_POSITION_RIGHT2="Right 2" COM_MODULES_POSITION_RIGHT="Right" COM_MODULES_POSITION_SUB1="Sub 1" COM_MODULES_POSITION_SUB2="Sub 2" COM_MODULES_POSITION_SUB3="Sub 3" COM_MODULES_POSITION_SUB4="Sub 4" COM_MODULES_POSITION_SUB5="Sub 5" COM_MODULES_POSITION_SUB6="Sub 6" COM_MODULES_POSITION_SUB="Sub" COM_MODULES_POSITION_SUBNAV="Sub Navigation" COM_MODULES_POSITION_SYNDICATE="Syndicate" COM_MODULES_POSITION_TOP2="Top 2" COM_MODULES_POSITION_TOP3="Top 3" COM_MODULES_POSITION_TOP4="Top 4" COM_MODULES_POSITION_TOP="Top" COM_MODULES_POSITION_USER1="User 1" COM_MODULES_POSITION_USER2="User 2" COM_MODULES_POSITION_USER3="User 3" COM_MODULES_POSITION_USER4="User 4" COM_MODULES_POSITION_USER5="User 5" COM_MODULES_POSITION_USER6="User 6" COM_MODULES_POSITION_USER7="User 7" COM_MODULES_POSITION_USER8="User 8" COM_MODULES_SAVE_SUCCESS="Module successfully saved" COM_MODULES_TYPE_CHOOSE="Select a Module Type:" COM_MODULES_XML_DESCRIPTION="Component for module management in Backend" COM_MODULES_ADD_CUSTOM_POSITION="Add custom position" COM_MODULES_CUSTOM_POSITION="Active Positions" COM_MODULES_TYPE_OR_SELECT_POSITION="Type or Select a Position" COM_MODULES_DESELECT="Deselect" COM_MODULES_EXPAND="Expand" COM_MODULES_COLLAPSE="Collapse" COM_MODULES_SUBITEMS="Sub-items:" JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings."PKb��\4"D0language/en-GB/en-GB.plg_system_languagecode.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SYSTEM_LANGUAGECODE="System - Language Code" PLG_SYSTEM_LANGUAGECODE_FIELD_DESC="Changes the language code used for the <em>%s</em> language." PLG_SYSTEM_LANGUAGECODE_FIELDSET_DESC="Changes the language code for the generated HTML document. Example of use: You have installed the fr-FR language pack and want the Search Engines to recognise the page as aimed at French-speaking Canada. Add the tag 'fr-CA' to the corresponding field for 'fr-FR' to resolve this." PLG_SYSTEM_LANGUAGECODE_FIELDSET_LABEL="Language Codes" PLG_SYSTEM_LANGUAGECODE_XML_DESCRIPTION="Provides the ability to change the language code in the generated HTML document to improve SEO.<br />The fields will appear when the plugin is enabled and saved.<br />More information at <a href="_QQ_"http://www.w3.org/TR/xhtml1/#docconf"_QQ_">W3.org</a>." PKb��\��11"language/en-GB/en-GB.com_cache.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CACHE="Cache" COM_CACHE_BACK_CACHE_MANAGER="Return to Cache" COM_CACHE_CLEAR_CACHE_ADMIN="Clear Cache Administrator" COM_CACHE_CLEAR_CACHE="Maintenance: Clear Cache" COM_CACHE_PURGE_EXPIRED_CACHE="Maintenance: Clear Expired Cache" COM_CACHE_CONFIGURATION="Cache: Options" COM_CACHE_EXPIRED_ITEMS_HAVE_BEEN_PURGED="Expired items have been cleared." COM_CACHE_EXPIRED_ITEMS_PURGING_ERROR="Error clearing expired items." COM_CACHE_GROUP="Cache Group" COM_CACHE_MANAGER="Cache" COM_CACHE_NUMBER_OF_FILES="Number of Files" COM_CACHE_PURGE_CACHE_ADMIN="Clear Cache Administrator" COM_CACHE_PURGE_EXPIRED="Clear Expired Cache" COM_CACHE_PURGE_EXPIRED_ITEMS="Clear expired items" COM_CACHE_PURGE_INSTRUCTIONS="Select the Clear Expired Cache icon in the toolbar to delete all expired cache files. Note: Cache files that are still current will not be deleted." COM_CACHE_RESOURCE_INTENSIVE_WARNING="WARNING: This can be resource intensive on sites with a large number of items!" COM_CACHE_SIZE="Size" COM_CACHE_SELECT_CLIENT="- Select Location -" COM_CACHE_XML_DESCRIPTION="Component for cache management." JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings." PKb��\�,6��(language/en-GB/en-GB.mod_stats_admin.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_STATS_ADMIN="Statistics" MOD_STATS_ARTICLES="Articles" MOD_STATS_ARTICLES_VIEW_HITS="Articles View Hits" MOD_STATS_CACHING="Caching" MOD_STATS_FIELD_COUNTER_DESC="Display hit counter." MOD_STATS_FIELD_COUNTER_LABEL="Hit Counter" MOD_STATS_FIELD_INCREASECOUNTER_DESC="Enter the number of hits to increase the counter by." MOD_STATS_FIELD_INCREASECOUNTER_LABEL="Increase Counter" MOD_STATS_FIELD_SERVERINFO_DESC="Display server information." MOD_STATS_FIELD_SERVERINFO_LABEL="Server Information" MOD_STATS_FIELD_SITEINFO_DESC="Display site information." MOD_STATS_FIELD_SITEINFO_LABEL="Site Information" MOD_STATS_GZIP="GZip" MOD_STATS_MYSQL="MySQL" MOD_STATS_OS="OS" MOD_STATS_PHP="PHP" MOD_STATS_TIME="Time" MOD_STATS_USERS="Users" MOD_STATS_WEBLINKS="Web Links" MOD_STATS_XML_DESCRIPTION="The Statistics Module shows information about your server installation together with statistics on the website users, number of Articles in your database and the number of Web links you provide." PKb��\�@��"language/en-GB/en-GB.com_login.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_LOGIN="Login" COM_LOGIN_JOOMLA_ADMINISTRATION_LOGIN="Joomla! Administration Login" COM_LOGIN_RETURN_TO_SITE_HOME_PAGE="Go to site home page." COM_LOGIN_VALID="Use a valid username and password to gain access to the Administrator Backend." COM_LOGIN_XML_DESCRIPTION="This component lets users login to the site."PKb��\��N���+language/en-GB/en-GB.plg_finder_content.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_FINDER_CONTENT="Smart Search - Content" PLG_FINDER_CONTENT_XML_DESCRIPTION="Updates the indexes of Joomla! Articles whenever an article is created, modified or deleted. NOTE the Content - Smart Search plugin must be enabled." PLG_FINDER_QUERY_FILTER_BRANCH_P_ARTICLE="Articles" PLG_FINDER_QUERY_FILTER_BRANCH_P_AUTHOR="Authors" PLG_FINDER_QUERY_FILTER_BRANCH_S_ARTICLE="Article" PLG_FINDER_QUERY_FILTER_BRANCH_S_AUTHOR="Author" PKb��\x4DX��$language/en-GB/en-GB.mod_version.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_VERSION="Joomla! Version Information" MOD_VERSION_FORMAT_DESC="The long version includes code name and date." MOD_VERSION_FORMAT_LABEL="Version Format" MOD_VERSION_FORMAT_LONG="Long" MOD_VERSION_FORMAT_SHORT="Short" MOD_VERSION_PRODUCT_DESC="Include the text string "Joomla!" when using short format." MOD_VERSION_PRODUCT_LABEL="Show Joomla!" MOD_VERSION_XML_DESCRIPTION="This module displays the Joomla! version."PKb��\�D�?aa*language/en-GB/en-GB.com_installer.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_INSTALLER="Installer" COM_INSTALLER_XML_DESCRIPTION="Installer component for adding, removing and upgrading extensions." PKb��\��:.language/en-GB/en-GB.plg_search_categories.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SEARCH_CATEGORIES_CATEGORIES="Categories" PLG_SEARCH_CATEGORIES="Search - Categories" PLG_SEARCH_CATEGORIES_FIELD_SEARCHLIMIT_DESC="Number of search items to return." PLG_SEARCH_CATEGORIES_FIELD_SEARCHLIMIT_LABEL="Search Limit" PLG_SEARCH_CATEGORIES_XML_DESCRIPTION="Enables searching of Category information."PKb��\��;{{(language/en-GB/en-GB.mod_version.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_VERSION="Joomla! Version Information" MOD_VERSION_LAYOUT_DEFAULT="Default" MOD_VERSION_XML_DESCRIPTION="This module displays the Joomla! version." PKb��\e���)language/en-GB/en-GB.com_messages.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_MESSAGES="Messaging" COM_MESSAGES_ADD="New Private Message" COM_MESSAGES_READ="Read Private Messages" COM_MESSAGES_XML_DESCRIPTION="Component for private messaging support in the Backend."PKb��\�ץ���#language/en-GB/en-GB.tpl_hathor.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 HATHOR="Hathor Administrator template" TPL_HATHOR_ALTERNATE_MENU_DESC="Use the alternative menu which integrates mouse and keyboard. JavaScript Required. The regular menu for Hathor is accessible with or without JavaScript, but leaves the mouse and keyboard independent." TPL_HATHOR_ALTERNATE_MENU_LABEL="Alternative Menu" TPL_HATHOR_BOLD_TEXT_DESC="Use bold text." TPL_HATHOR_BOLD_TEXT_LABEL="Bold Text" TPL_HATHOR_CHECKMARK_ALL="Checkmark All" TPL_HATHOR_COLOUR_CHOICE_BLUE="Blue" TPL_HATHOR_COLOUR_CHOICE_DESC="Select the colour palette to use with the template. You can use this option to select a high contrast version or use it to create custom branding." TPL_HATHOR_COLOUR_CHOICE_LABEL="Select Colour" TPL_HATHOR_COLOUR_CHOICE_STANDARD="Standard" TPL_HATHOR_COLOUR_CHOICE_HIGH_CONTRAST="High Contrast" TPL_HATHOR_COLOUR_CHOICE_BROWN="Brown" TPL_HATHOR_COM_MENUS_MENU="Menu" TPL_HATHOR_COM_MODULES_CUSTOM_POSITION_LABEL="Select" TPL_HATHOR_CPANEL_LINK_TEXT="Return to Control Panel" TPL_HATHOR_GO="Go" TPL_HATHOR_LOGO_DESC="Select or upload a custom logo for the administrator template." TPL_HATHOR_LOGO_LABEL="Logo" TPL_HATHOR_MAIN_MENU="Main Menu" TPL_HATHOR_SHOW_SITE_NAME_DESC="Show the site name in the template header." TPL_HATHOR_SHOW_SITE_NAME_LABEL="Show Site Name" TPL_HATHOR_SKIP_TO_MAIN_CONTENT="Skip to Main Content" TPL_HATHOR_SUB_MENU="Sub Menu" TPL_HATHOR_XML_DESCRIPTION="Hathor is an accessible Administrator template for Joomla! The Colour CSS files can also be used for custom colour branding." PKb��\��@��+language/en-GB/en-GB.plg_system_sef.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SEF_XML_DESCRIPTION="Adds SEF support to links in the document. It operates directly on the HTML and does not require a special tag." PLG_SYSTEM_SEF="System - SEF"PKb��\��oƯ�!language/en-GB/en-GB.mod_feed.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_FEED="Feed Display" MOD_FEED_ERR_CACHE="Please make cache folder writable." MOD_FEED_ERR_NO_URL="No feed URL specified." MOD_FEED_ERR_FEED_NOT_RETRIEVED="Feed not found." MOD_FEED_FIELD_DESCRIPTION_DESC="Show the description text for the whole Feed." MOD_FEED_FIELD_DESCRIPTION_LABEL="Feed Description" MOD_FEED_FIELD_IMAGE_DESC="Show the image associated with the whole feed." MOD_FEED_FIELD_IMAGE_LABEL="Feed Image" MOD_FEED_FIELD_ITEMDESCRIPTION_DESC="Show the Description or Intro text of individual RSS Items." MOD_FEED_FIELD_ITEMDESCRIPTION_LABEL="Item Description" MOD_FEED_FIELD_ITEMS_DESC="Enter number of RSS items to display." MOD_FEED_FIELD_ITEMS_LABEL="Items" MOD_FEED_FIELD_RSSTITLE_DESC="Display news feed title." MOD_FEED_FIELD_RSSTITLE_LABEL="Feed Title" MOD_FEED_FIELD_RSSURL_DESC="Enter the URL of the RSS/RDF/ATOM feed." MOD_FEED_FIELD_RSSURL_LABEL="Feed URL" MOD_FEED_FIELD_RTL_DESC="Display feed in RTL direction." MOD_FEED_FIELD_RTL_LABEL="RTL Feed" MOD_FEED_FIELD_WORDCOUNT_DESC="Allows you to limit the amount of visible Item description text. 0 will show all the text." MOD_FEED_FIELD_WORDCOUNT_LABEL="Word Count" MOD_FEED_XML_DESCRIPTION="This module allows the displaying of a syndicated feed." PKb��\_��;FF-language/en-GB/en-GB.plg_content_vote.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTENT_VOTE="Content - Vote" PLG_VOTE_XML_DESCRIPTION="Add Voting functionality to Articles."PKb��\y����-language/en-GB/en-GB.plg_system_debug.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_DEBUG_XML_DESCRIPTION="This plugin provides a variety of system information and assistance for the creation of translation files." PLG_SYSTEM_DEBUG="System - Debug" PKb��\V&&)language/en-GB/en-GB.plg_system_debug.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_DEBUG_BYTES="Bytes" PLG_DEBUG_CALL_STACK="Call Stack" PLG_DEBUG_ERRORS="Errors" PLG_DEBUG_EXPLAIN="Explain" PLG_DEBUG_FIELD_ALLOWED_GROUPS_DESC="Optionally restrict users that can see debug information to those in the selected user groups. If none selected, all users will see the debug information." PLG_DEBUG_FIELD_ALLOWED_GROUPS_LABEL="Allowed Groups" PLG_DEBUG_FIELD_EXECUTEDSQL_DESC="If enabled, executed SQL queries will be logged. Only use this setting for short periods of time and for benchmarking purposes." PLG_DEBUG_FIELD_EXECUTEDSQL_LABEL="Log Executed Queries" PLG_DEBUG_FIELD_LANGUAGE_ERRORFILES_DESC="Display a list of the language files that are in error according to the Joomla ini specification." PLG_DEBUG_FIELD_LANGUAGE_ERRORFILES_LABEL="Show Errors When Parsing Language Files" PLG_DEBUG_FIELD_LANGUAGE_FILES_DESC="Display a list of the language files that Joomla has tried to load." PLG_DEBUG_FIELD_LANGUAGE_FILES_LABEL="Show Language Files" PLG_DEBUG_FIELD_LANGUAGE_STRING_DESC="Display a list of the untranslated language strings." PLG_DEBUG_FIELD_LANGUAGE_STRING_LABEL="Show Language String" PLG_DEBUG_FIELD_LOGS_DESC="Display a list of logged messages." PLG_DEBUG_FIELD_LOGS_LABEL="Show Log Entries" PLG_DEBUG_FIELD_LOG_CATEGORIES_DESC="A comma separated list of log categories to include. Common log categories include but are not limited to: database, databasequery, database-error, deprecated and jerror. If empty, all categories will be shown." PLG_DEBUG_FIELD_LOG_CATEGORIES_LABEL="Log Categories" PLG_DEBUG_FIELD_LOG_CATEGORY_MODE_DESC="Select whether the listed categories should be included or excluded." PLG_DEBUG_FIELD_LOG_CATEGORY_MODE_EXCLUDE="Exclude" PLG_DEBUG_FIELD_LOG_CATEGORY_MODE_INCLUDE="Include" PLG_DEBUG_FIELD_LOG_CATEGORY_MODE_LABEL="Log Category Mode" PLG_DEBUG_FIELD_LOG_DEPRECATED_DESC="If enabled, API marked as deprecated will be logged. Only use this setting for short periods of time for refactoring purposes." PLG_DEBUG_FIELD_LOG_DEPRECATED_LABEL="Log Deprecated API" PLG_DEBUG_FIELD_LOG_EVERYTHING_DESC="If enabled, all log messages produced by Joomla! will be logged except for deprecated API and database queries. Only use this setting for short periods of time for site debugging purposes." PLG_DEBUG_FIELD_LOG_EVERYTHING_LABEL="Log Almost Everything" PLG_DEBUG_FIELD_LOG_PRIORITIES_ALERT="Alert" PLG_DEBUG_FIELD_LOG_PRIORITIES_ALL="All" PLG_DEBUG_FIELD_LOG_PRIORITIES_CRITICAL="Critical" PLG_DEBUG_FIELD_LOG_PRIORITIES_DEBUG="Debug" PLG_DEBUG_FIELD_LOG_PRIORITIES_DESC="Select which log priority levels to display." PLG_DEBUG_FIELD_LOG_PRIORITIES_EMERGENCY="Emergency" PLG_DEBUG_FIELD_LOG_PRIORITIES_ERROR="Error" PLG_DEBUG_FIELD_LOG_PRIORITIES_INFO="Info" PLG_DEBUG_FIELD_LOG_PRIORITIES_LABEL="Log Priorities" PLG_DEBUG_FIELD_LOG_PRIORITIES_NOTICE="Notice" PLG_DEBUG_FIELD_LOG_PRIORITIES_WARNING="Warning" PLG_DEBUG_FIELD_MEMORY_DESC="Display the total memory usage." PLG_DEBUG_FIELD_MEMORY_LABEL="Show Memory Usage" PLG_DEBUG_FIELD_PROFILING_DESC="Display the profiling waypoints." PLG_DEBUG_FIELD_PROFILING_LABEL="Show Profiling" PLG_DEBUG_FIELD_QUERIES_DESC="Display a list of the queries executed while displaying the page." PLG_DEBUG_FIELD_QUERIES_LABEL="Show Queries" PLG_DEBUG_FIELD_QUERY_TYPES_DESC="Display a list of unique query types and their number of occurrences for the current page. Useful for finding out about repeated queries that are either redundant or which can be grouped into a single, more efficient query." PLG_DEBUG_FIELD_QUERY_TYPES_LABEL="Show Query Types" PLG_DEBUG_FIELD_STRIP_FIRST_DESC="In multi-word strings, always strip the first word." PLG_DEBUG_FIELD_STRIP_FIRST_LABEL="Strip First Word" PLG_DEBUG_FIELD_STRIP_PREFIX_DESC="Strip words from the beginning of the string. For multiple words, use the format: (word1|word2)." PLG_DEBUG_FIELD_STRIP_PREFIX_LABEL="Strip From Start" PLG_DEBUG_FIELD_STRIP_SUFFIX_DESC="Strip words from the end of the string. For multiple words, use the format: (word1|word2)." PLG_DEBUG_FIELD_STRIP_SUFFIX_LABEL="Strip From End" PLG_DEBUG_LANGUAGE_FIELDSET_LABEL="Language" PLG_DEBUG_LANGUAGE_FILES_IN_ERROR="Parsing errors in language files" PLG_DEBUG_LANGUAGE_FILES_LOADED="Language Files Loaded" PLG_DEBUG_LANG_LOADED="Loaded" PLG_DEBUG_LANG_NOT_LOADED="Not loaded" PLG_DEBUG_LINK_FORMAT="Add xdebug.file_link_format directive to your php.ini file to have links for files." PLG_DEBUG_LOGGING_FIELDSET_LABEL="Logging" PLG_DEBUG_LOGS="Log Messages" PLG_DEBUG_MEMORY="Memory" PLG_DEBUG_MEMORY_USED_FOR_QUERY="Query memory: %s Memory before query: %s" PLG_DEBUG_MEMORY_USAGE="Memory Usage" PLG_DEBUG_NO_PROFILE="No SHOW PROFILE (maybe because there are more than 100 queries)" PLG_DEBUG_OTHER_QUERIES="OTHER Tables:" PLG_DEBUG_PROFILE="Profile" PLG_DEBUG_PROFILE_INFORMATION="Profile Information" PLG_DEBUG_QUERIES="Database Queries" PLG_DEBUG_QUERIES_LOGGED="%d Queries Logged" PLG_DEBUG_QUERIES_TIME="Database queries total: %s" PLG_DEBUG_QUERY_AFTER_LAST="After last query: %s" PLG_DEBUG_QUERY_DUPLICATES="Duplicate queries" PLG_DEBUG_QUERY_DUPLICATES_FOUND="Duplicate found!" PLG_DEBUG_QUERY_DUPLICATES_NUMBER="%s duplicates" PLG_DEBUG_QUERY_DUPLICATES_TOTAL_NUMBER="%s duplicate found!" PLG_DEBUG_QUERY_EXPLAIN_NOT_POSSIBLE="EXPLAIN not possible on query: %s" PLG_DEBUG_QUERY_TIME="Query Time: %s" PLG_DEBUG_QUERY_TYPES_LOGGED="%d Query Types Logged, Sorted by Occurrences." PLG_DEBUG_QUERY_TYPE_AND_OCCURRENCES="%2$d × %1$s" PLG_DEBUG_ROWS_RETURNED_BY_QUERY="Rows returned: %s" PLG_DEBUG_SELECT_QUERIES="SELECT Tables:" PLG_DEBUG_SESSION="Session" PLG_DEBUG_TIME="Time" PLG_DEBUG_TITLE="Joomla! Debug Console" PLG_DEBUG_UNKNOWN_FILE="Unknown file" PLG_DEBUG_UNTRANSLATED_STRINGS="Untranslated Strings" PLG_DEBUG_WARNING_NO_INDEX="NO INDEX KEY COULD BE USED" PLG_DEBUG_WARNING_NO_INDEX_DESC="This table probably has a missing index on WHERE equalities and/or JOIN ON column(s) or is written in a way that no index can be used, causing a time-consuming full table scan." PLG_DEBUG_WARNING_USING_FILESORT="Using filesort" PLG_DEBUG_WARNING_USING_FILESORT_DESC="This table probably has a missing index on WHERE/ON equality column(s) ending by the ORDER BY column(s) or is written in a way that no index can be used, causing a time-consuming filesort." PLG_DEBUG_XML_DESCRIPTION="This plugin provides a variety of system information as well as assistance for the creation of translation files." PLG_SYSTEM_DEBUG="System - Debug" PKb��\&�0�ff.language/en-GB/en-GB.plg_finder_categories.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_FINDER_CATEGORIES="Smart Search - Categories" PLG_FINDER_CATEGORIES_XML_DESCRIPTION="This plugin indexes Joomla! Categories." PKb��\� 8���4language/en-GB/en-GB.plg_editors-xtd_article.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_ARTICLE_XML_DESCRIPTION="Displays a button to make it possible to insert links to articles into an Article. Displays a popup allowing you to choose the article." PLG_EDITORS-XTD_ARTICLE="Button - Article" PKb��\mg7��!language/en-GB/en-GB.tpl_isis.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 ISIS="Isis Administrator template" TPL_ISIS_CLEAR_CACHE="Clear Cache" TPL_ISIS_COLOR_DESC="Choose a colour for the navigation bar. If left blank the Default (#10223e) is used." TPL_ISIS_COLOR_HEADER_DESC="Choose a colour for the header. If left blank the Default (#1a3867) is used." TPL_ISIS_COLOR_HEADER_LABEL="Header Colour" TPL_ISIS_COLOR_LABEL="Nav Bar Colour" TPL_ISIS_COLOR_SIDEBAR_DESC="Choose a colour for the Sidebar Background. If left blank the Default (#0088cc) is used." TPL_ISIS_COLOR_SIDEBAR_LABEL="Sidebar Colour" TPL_ISIS_COLOR_LINK_DESC="Choose a colour for the Link. If left blank the Default (#0088cc) is used." TPL_ISIS_COLOR_LINK_LABEL="Link Colour" TPL_ISIS_EDIT_ACCOUNT="Edit Account" TPL_ISIS_FIELD_ADMIN_MENUS_DESC="If you intend to use Joomla Administrator on a monitor, set this to 'No'. It will prevent the collapse of the Administrator menus when reducing the width of the window. Default is 'Yes'." TPL_ISIS_FIELD_ADMIN_MENUS_LABEL="Collapse Administrator Menu" TPL_ISIS_HEADER_DESC="Optional display of header." TPL_ISIS_HEADER_LABEL="Display Header" TPL_ISIS_INSTALLER="Installer" TPL_ISIS_ISFREESOFTWARE="Joomla is free software released under the GNU General Public License." TPL_ISIS_LOGIN_LOGO_DESC="Select or upload a custom logo for the login area of administrator template." TPL_ISIS_LOGIN_LOGO_LABEL="Login Logo" TPL_ISIS_LOGO_DESC="Upload a custom logo for the administrator template." TPL_ISIS_LOGO_LABEL="Logo" TPL_ISIS_LOGOUT="Logout" TPL_ISIS_PREVIEW="Preview %s" TPL_ISIS_STATUS_BOTTOM="Fixed bottom" TPL_ISIS_STATUS_DESC="Choose the location of the status module." TPL_ISIS_STATUS_LABEL="Status Module Position" TPL_ISIS_STATUS_TOP="Top" TPL_ISIS_STICKY_DESC="Optionally set the toolbar to a fixed (pinned) location." TPL_ISIS_STICKY_LABEL="Pinned Toolbar" TPL_ISIS_TOOLBAR="Toolbar" TPL_ISIS_XML_DESCRIPTION="Continuing the Egyptian god/goddess theme (Khepri from 1.5 and Hathor from 1.6), Isis is the Joomla 3 administrator template based on Bootstrap from Twitter and the launch of the Joomla User Interface library (JUI)." PKb��\/b��0language/en-GB/en-GB.plg_authentication_ldap.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_AUTHENTICATION_LDAP="Authentication - LDAP" PLG_LDAP_FIELD_AUTHMETHOD_DESC="The authorisation method to validate the credentials." PLG_LDAP_FIELD_AUTHMETHOD_LABEL="Authorisation Method" PLG_LDAP_FIELD_BASEDN_DESC="The base DN of your LDAP server, eg o=example.com." PLG_LDAP_FIELD_BASEDN_LABEL="Base DN" PLG_LDAP_FIELD_EMAIL_DESC="LDAP attribute which contains the User's email address." PLG_LDAP_FIELD_EMAIL_LABEL="Map: Email" PLG_LDAP_FIELD_FULLNAME_DESC="LDAP attribute which contains the User's full name." PLG_LDAP_FIELD_FULLNAME_LABEL="Map: Full Name" PLG_LDAP_FIELD_HOST_DESC="Eg: openldap.example.com." PLG_LDAP_FIELD_HOST_LABEL="Host" PLG_LDAP_FIELD_NEGOCIATE_DESC="Negotiate TLS encryption with the LDAP server. This requires all traffic to and from the LDAP server to be encrypted." PLG_LDAP_FIELD_NEGOCIATE_LABEL="Negotiate TLS" PLG_LDAP_FIELD_PASSWORD_DESC="The Connect Password is the password of an administrative account. This is used in Authenticate then Bind and Authenticated Compare authorisation methods." PLG_LDAP_FIELD_PASSWORD_LABEL="Connect Password" PLG_LDAP_FIELD_PORT_DESC="Default port is 389." PLG_LDAP_FIELD_PORT_LABEL="Port" PLG_LDAP_FIELD_REFERRALS_DESC="This option sets the value of the LDAP_OPT_REFERRALS flag. You will need to set it to No for Windows 2003 servers." PLG_LDAP_FIELD_REFERRALS_LABEL="Follow Referrals" PLG_LDAP_FIELD_SEARCHSTRING_DESC="A query string used to search for a given User. The [search] keyword is dynamically replaced by the User-provided login. An example string is: uid=[search]. Several strings can be used separated by semicolons. Only used when searching." PLG_LDAP_FIELD_SEARCHSTRING_LABEL="Search String" PLG_LDAP_FIELD_UID_DESC="LDAP Attribute which contains the User's Login ID. For Active Directory this is sAMAccountName." PLG_LDAP_FIELD_UID_LABEL="Map: User ID" PLG_LDAP_FIELD_USERNAME_DESC="The Connect Username and Connect Password define connection parameters for the DN lookup phase. Two options are available:- Anonymous DN lookup (leave both fields blank); Administrative connection: Connect Username is the username of an administrative account, for example Administrator. Connect password is the actual password of your administrative account." PLG_LDAP_FIELD_USERNAME_LABEL="Connect Username" PLG_LDAP_FIELD_USERSDN_DESC="The [username] keyword is dynamically replaced by the User-provided login. An example string is: uid=[username], dc=my-domain, dc=com. Several strings can be used, separated by semicolons. Only used for direct binds." PLG_LDAP_FIELD_USERSDN_LABEL="User's DN" PLG_LDAP_FIELD_V3_DESC="Default is LDAP2, but the latest versions of OpenLdap require clients to use LDAPV3." PLG_LDAP_FIELD_V3_LABEL="LDAP V3" PLG_LDAP_FIELD_VALUE_BINDSEARCH="Bind and Search" PLG_LDAP_FIELD_VALUE_BINDUSER="Bind Directly as User" PLG_LDAP_XML_DESCRIPTION="Handles User Authentication against an LDAP server.<br /><strong> Warning! You must have at least one authentication plugin enabled or you will lose all access to your site.</strong>" PKb��\]t*77.language/en-GB/en-GB.plg_captcha_recaptcha.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a site and secret key for your domain, go to <a href="_QQ_"http://www.google.com/recaptcha"_QQ_" target="_QQ_"_blank"_QQ_">http://www.google.com/recaptcha</a>. To use this for new account registration, go to Options in the User Manager and select CAPTCHA - reCAPTCHA as the CAPTCHA." PLG_CAPTCHA_RECAPTCHA="CAPTCHA - reCAPTCHA" ; Params PLG_RECAPTCHA_VERSION_1_WARNING_LABEL="You have selected Version 1.0. All new sites should be using Version 2.0. Version 1.0 is only maintained to provide support for Global Site keys which are no longer available from Google." PLG_RECAPTCHA_VERSION_LABEL="Version" PLG_RECAPTCHA_VERSION_DESC="Version 2.0 is the recommended version. Version 1.0 is required if using deprecated Global reCAPTCHA keys." PLG_RECAPTCHA_VERSION_1="1.0" PLG_RECAPTCHA_VERSION_2="2.0" PLG_RECAPTCHA_PUBLIC_KEY_LABEL="Site key" PLG_RECAPTCHA_PUBLIC_KEY_DESC="Used in the JavaScript code that is served to your users. See the plugin description for instructions on getting a site key." PLG_RECAPTCHA_PRIVATE_KEY_LABEL="Secret key" PLG_RECAPTCHA_PRIVATE_KEY_DESC="Used in the communication between your server and the reCAPTCHA server. Be sure to keep it a secret. See the plugin description for instructions on getting a secret key." PLG_RECAPTCHA_THEME_LABEL="Theme" PLG_RECAPTCHA_THEME_DESC="Defines which theme to use for reCAPTCHA." PLG_RECAPTCHA_THEME_RED="Red" PLG_RECAPTCHA_THEME_WHITE="White" PLG_RECAPTCHA_THEME_BLACKGLASS="BlackGlass" PLG_RECAPTCHA_THEME_CLEAN="Clean" PLG_RECAPTCHA_THEME_LIGHT="Light" PLG_RECAPTCHA_THEME_DARK="Dark" PLG_RECAPTCHA_LANG_LABEL="Language" PLG_RECAPTCHA_LANG_DESC="Select the language for the reCAPTCHA. If default is set and the language file has a custom translation, it will be used." ; Error messages PLG_RECAPTCHA_ERROR_NO_PRIVATE_KEY="reCAPTCHA plugin needs a secret key to be set in its parameters. Please contact a site administrator." PLG_RECAPTCHA_ERROR_NO_PUBLIC_KEY="reCAPTCHA plugin needs a site key to be set in its parameters. Please contact a site administrator." PLG_RECAPTCHA_ERROR_EMPTY_SOLUTION="Empty solution not allowed." PLG_RECAPTCHA_ERROR_NO_IP="For security reasons, you must pass the remote IP address to reCAPTCHA." PLG_RECAPTCHA_ERROR_UNKNOWN="Unknown error." PLG_RECAPTCHA_ERROR_INVALID_SITE_PUBLIC_KEY="We weren't able to verify the site key." PLG_RECAPTCHA_ERROR_INVALID_SITE_PRIVATE_KEY="We weren't able to verify the secret key." PLG_RECAPTCHA_ERROR_INVALID_REQUEST_COOKIE="The challenge parameter of the verify script was incorrect." PLG_RECAPTCHA_ERROR_INCORRECT_CAPTCHA_SOL="The CAPTCHA solution was incorrect." PLG_RECAPTCHA_ERROR_VERIFY_PARAMS_INCORRECT="The parameters to verify were incorrect, make sure you are passing all the required parameters." PLG_RECAPTCHA_ERROR_INVALID_REFERRER="reCAPTCHA API keys are tied to a specific domain name for security reasons." PLG_RECAPTCHA_ERROR_RECAPTCHA_NOT_REACHABLE="Unable to contact the reCAPTCHA verify server." ; Uncomment(remove the ";" from the beginning of the line) the following lines if reCAPTCHA is not available in your language ; When uncommenting, do NOT translate PLG_RECAPTCHA_CUSTOM_LANG ; As of 01/01/2012, the following languages do not need translation: en, nl, fr, de, pt, ru, es, tr ;PLG_RECAPTCHA_CUSTOM_LANG="true" ;PLG_RECAPTCHA_INSTRUCTIONS_VISUAL="Type the two words:" ;PLG_RECAPTCHA_INSTRUCTIONS_AUDIO="Type what you hear:" ;PLG_RECAPTCHA_PLAY_AGAIN="Play sound again" ;PLG_RECAPTCHA_CANT_HEAR_THIS="Download sound as MP3" ;PLG_RECAPTCHA_VISUAL_CHALLENGE="Get a visual challenge" ;PLG_RECAPTCHA_AUDIO_CHALLENGE="Get an audio challenge" ;PLG_RECAPTCHA_REFRESH_BTN="Get a new challenge" ;PLG_RECAPTCHA_HELP_BTN="Help" ;PLG_RECAPTCHA_INCORRECT_TRY_AGAIN="Incorrect. Try again." PKb��\j6R��<�<&language/en-GB/en-GB.com_templates.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_TEMPLATES="Templates" COM_TEMPLATES_ADVANCED_FIELDSET_LABEL="Advanced" COM_TEMPLATES_ARE_YOU_SURE="Are you sure?" COM_TEMPLATES_ASSIGNED_1="Assigned to one menu item." COM_TEMPLATES_ASSIGNED_MORE="Assigned to %d menu items." COM_TEMPLATES_BASIC_FIELDSET_LABEL="Options" COM_TEMPLATES_BUTTON_CLOSE_FILE="Close File" COM_TEMPLATES_BUTTON_COPY_TEMPLATE="Copy Template" COM_TEMPLATES_BUTTON_COPY_FILE="Copy File" COM_TEMPLATES_BUTTON_CREATE="Create" COM_TEMPLATES_BUTTON_CROP="Crop" COM_TEMPLATES_BUTTON_DELETE="Delete" COM_TEMPLATES_BUTTON_DELETE_FILE="Delete File" COM_TEMPLATES_BUTTON_EXTRACT_ARCHIVE="Extract Here" COM_TEMPLATES_BUTTON_FILE="New File" COM_TEMPLATES_BUTTON_FOLDERS="Manage Folders" COM_TEMPLATES_BUTTON_LESS="Compile LESS" COM_TEMPLATES_BUTTON_PREVIEW="Template Preview" COM_TEMPLATES_BUTTON_RENAME="Rename" COM_TEMPLATES_BUTTON_RENAME_FILE="Rename File" COM_TEMPLATES_BUTTON_RESIZE="Resize" COM_TEMPLATES_BUTTON_UPLOAD="Upload" COM_TEMPLATES_CHECK_FILE_OWNERSHIP="Check file ownership" COM_TEMPLATES_CLICK_TO_ENLARGE="Select to enlarge." COM_TEMPLATES_COMPILE_ERROR="An error occurred. Failed to compile." COM_TEMPLATES_COMPILE_LESS="You should compile %s to generate a CSS file." COM_TEMPLATES_COMPILE_SUCCESS="Successfully compiled LESS." COM_TEMPLATES_CONFIG_FIELDSET_DESC="Global configuration for templates." COM_TEMPLATES_CONFIG_POSITIONS_DESC="Enable the preview of the module positions in the template by appending tp=1 to the web address. Also enables the Preview button in the list of templates. Please refresh the page after changing this setting." COM_TEMPLATES_CONFIG_POSITIONS_LABEL="Preview Module Positions" COM_TEMPLATES_CONFIG_FONT_DESC="These file types will be available for font preview." COM_TEMPLATES_CONFIG_FONT_LABEL="Valid Font Formats" COM_TEMPLATES_CONFIG_IMAGE_DESC="These file types will be available for cropping and resizing." COM_TEMPLATES_CONFIG_IMAGE_LABEL="Valid Image Formats" COM_TEMPLATES_CONFIG_SOURCE_DESC="These file types will be available for editing in editor." COM_TEMPLATES_CONFIG_SOURCE_LABEL="Valid Source Formats" COM_TEMPLATES_CONFIG_SUPPORTED_DESC="Be careful before changing the file types. Read the tool tips before editing." COM_TEMPLATES_CONFIG_SUPPORTED_LABEL="Supported File Formats" COM_TEMPLATES_CONFIG_UPLOAD_DESC="The maximum upload size for files inside Template Manager." COM_TEMPLATES_CONFIG_UPLOAD_LABEL="Upload Size (MB)" COM_TEMPLATES_CONFIGURATION="Template: Options" COM_TEMPLATES_COPY_SUCCESS="New template called %s was installed successfully." COM_TEMPLATES_CROP_AREA_ERROR="Crop area not selected." COM_TEMPLATES_DIRECTORY_NOT_WRITABLE="The template folder is not writable. Some features may not work." COM_TEMPLATES_ERR_XML="Template XML data not available" COM_TEMPLATES_ERROR_CANNOT_DELETE_LAST_STYLE="Can't delete the last style of a template. To uninstall/delete a template go to: Extensions-> Extension manager-> Manage-> Select template to be deleted-> Select 'Uninstall'." COM_TEMPLATES_ERROR_CANNOT_UNSET_DEFAULT_STYLE="Can't unset default style." COM_TEMPLATES_ERROR_COULD_NOT_COPY="Unable to copy template files to temporary folder." COM_TEMPLATES_ERROR_COULD_NOT_INSTALL="Unable to install new template from temporary folder." COM_TEMPLATES_ERROR_COULD_NOT_WRITE="Unable to delete temporary folder." COM_TEMPLATES_ERROR_CREATE_NOT_PERMITTED="Unable to create temporary folder." COM_TEMPLATES_ERROR_DUPLICATE_TEMPLATE_NAME="A template with this name already is installed." COM_TEMPLATES_ERROR_EDITOR_DISABLED="Either the CodeMirror or the None editor plugin should be enabled to edit template files." COM_TEMPLATES_ERROR_EXECUTABLE="Can't upload executable files." COM_TEMPLATES_ERROR_EXTENSION_RECORD_NOT_FOUND="Extension record not found in database." COM_TEMPLATES_ERROR_FAILED_TO_SAVE_FILENAME="An error occurred. The file %s could not be saved." COM_TEMPLATES_ERROR_FILE_CREATE="Failed to create file." COM_TEMPLATES_ERROR_FILE_DELETE="An error occurred. Failed to delete the file." COM_TEMPLATES_ERROR_FILE_FORMAT="File format not supported." COM_TEMPLATES_ERROR_FILE_RENAME="An error occurred. Failed to rename file." COM_TEMPLATES_ERROR_FILE_UPLOAD="Failed to upload file." COM_TEMPLATES_ERROR_FOLDER_CREATE="Failed to create folder." COM_TEMPLATES_ERROR_FONT_FILE_NOT_FOUND="Font file not found." COM_TEMPLATES_ERROR_IMAGE_FILE_NOT_FOUND="Image file not found." COM_TEMPLATES_ERROR_INDEX_DELETE="The file index.php can't be deleted. Make changes in the editor if you want to change the file." COM_TEMPLATES_ERROR_INVALID_FROM_NAME="Template to copy from can't be found." COM_TEMPLATES_ERROR_INVALID_TEMPLATE_NAME="Invalid template name. Please use only letters, numbers, dashes and underscores." COM_TEMPLATES_ERROR_RENAME_INDEX="The file index.php can't be renamed." COM_TEMPLATES_ERROR_ROOT_DELETE="The root folder can't be deleted." COM_TEMPLATES_ERROR_SAVE_DISABLED_TEMPLATE="Unable to save a style associated to a disabled template." COM_TEMPLATES_ERROR_SOURCE_FILE_NOT_FOUND="Source file not found." COM_TEMPLATES_ERROR_SOURCE_FILE_NOT_UNWRITABLE="Source file can't be returned to unwritable status." COM_TEMPLATES_ERROR_SOURCE_FILE_NOT_WRITABLE="Source file not writable." COM_TEMPLATES_ERROR_SOURCE_ID_FILENAME_MISMATCH="Stored ID does not match the submitted one." COM_TEMPLATES_ERROR_STYLE_NOT_FOUND="Style not found." COM_TEMPLATES_ERROR_STYLE_REQUIRES_TITLE="The style requires a title." COM_TEMPLATES_ERROR_TEMPLATE_FOLDER_NOT_FOUND="Template folder not found." COM_TEMPLATES_ERROR_UPLOAD_INPUT="No file was found." COM_TEMPLATES_ERROR_WARNFILENAME="Invalid file name. Please correct the name of the file and upload again." COM_TEMPLATES_ERROR_WARNFILETOOLARGE="File bigger than 2 MB can't be uploaded." COM_TEMPLATES_ERROR_WARNFILETYPE="File format not supported." COM_TEMPLATES_ERROR_WARNIEXSS="Can't be uploaded. Contains XSS." COM_TEMPLATES_FIELD_CLIENT_DESC="Whether this template is used for the Frontend (0) or the Backend (1)." COM_TEMPLATES_FIELD_CLIENT_LABEL="Location" COM_TEMPLATES_FIELD_HOME_ADMINISTRATOR_DESC="This template style is defined as the default." COM_TEMPLATES_FIELD_HOME_LABEL="Default" COM_TEMPLATES_FIELD_HOME_SITE_DESC="If the multilingual functionality is not implemented, please limit your choice between <b>No</b> and <b>All</b>. This template style will be defined as the global default template style.<br />If the <b>System - Language Filter</b> plugin is enabled and you use different template styles depending on your content languages please assign a language to this style." COM_TEMPLATES_FIELD_SOURCE_DESC="Source code." COM_TEMPLATES_FIELD_SOURCE_LABEL="Source Code" COM_TEMPLATES_FIELD_TEMPLATE_DESC="Template name." COM_TEMPLATES_FIELD_TEMPLATE_LABEL="Template" COM_TEMPLATES_FIELD_TITLE_DESC="Style name." COM_TEMPLATES_FIELD_TITLE_LABEL="Style Name" COM_TEMPLATES_FILE_ARCHIVE_OPEN_FAIL="Failed to open the archive file." COM_TEMPLATES_FILE_ARCHIVE_EXISTS="Some files with the same name already exist." COM_TEMPLATES_FILE_ARCHIVE_NOT_FOUND="Archive file not found." COM_TEMPLATES_FILE_ARCHIVE_EXTRACT_SUCCESS="Successfully extracted the archive file." COM_TEMPLATES_FILE_ARCHIVE_EXTRACT_FAIL="Failed to extract the archive file." COM_TEMPLATES_FILE_CREATE_ERROR="An error occurred creating the file." COM_TEMPLATES_FILE_CREATE_SUCCESS="File created successfully." COM_TEMPLATES_FILE_CONTENT_PREVIEW="File Content Preview" COM_TEMPLATES_FILE_COPY_FAIL="Failed to copy the file." COM_TEMPLATES_FILE_COPY_SUCCESS="The current file was successfully copied as %s." COM_TEMPLATES_FILE_CROP_ERROR="Failed to crop image." COM_TEMPLATES_FILE_CROP_SUCCESS="Image cropped successfully." COM_TEMPLATES_FILE_DELETE_ERROR="Not able to delete the file." COM_TEMPLATES_FILE_DELETE_FAIL="Not able to delete the file." COM_TEMPLATES_FILE_DELETE_SUCCESS="File deleted successfully." COM_TEMPLATES_FILE_NEW_NAME_DESC="Enter the name of the new copied file." COM_TEMPLATES_FILE_NEW_NAME_LABEL="Copied File Name" COM_TEMPLATES_FILE_EXISTS="File with the same name already exists." COM_TEMPLATES_FILE_INFO="File Information" COM_TEMPLATES_FILE_NAME="File Name" COM_TEMPLATES_FILE_PERMISSIONS="The File Permissions are " COM_TEMPLATES_FILE_RENAME_ERROR="An error occurred renaming the file." COM_TEMPLATES_FILE_RENAME_SUCCESS="File renamed successfully." COM_TEMPLATES_FILE_RESIZE_ERROR="Failed to resize image." COM_TEMPLATES_FILE_RESIZE_SUCCESS="Image resized successfully." COM_TEMPLATES_FILE_SAVE_SUCCESS="File successfully saved." COM_TEMPLATES_FILE_UNSUPPORTED_ARCHIVE="Unsupported files present inside the zip file." COM_TEMPLATES_FILE_UPLOAD_ERROR="There was an error uploading the file." COM_TEMPLATES_FILE_UPLOAD_SUCCESS="Successfully uploaded file." COM_TEMPLATES_FILTER_TEMPLATE="- Select Template -" COM_TEMPLATES_FOLDER_CREATE_ERROR="There was an error creating the folder." COM_TEMPLATES_FOLDER_CREATE_SUCCESS="Folder created successfully." COM_TEMPLATES_FOLDER_DELETE_ERROR="An error occurred. Failed to delete folder." COM_TEMPLATES_FOLDER_DELETE_SUCCESS="Folder deleted successfully." COM_TEMPLATES_FOLDER_ERROR="Not able to create folder." COM_TEMPLATES_FOLDER_EXISTS="Folder with the same name already exists." COM_TEMPLATES_FOLDER_NAME="Folder Name" COM_TEMPLATES_FOLDER_NOT_EXISTS="The folder does not exist." COM_TEMPLATES_FTP_DESC="For updating the template source files, Joomla will most likely need your FTP account details. Please enter them in the form fields below." COM_TEMPLATES_FTP_TITLE="FTP Login Details" COM_TEMPLATES_GRID_UNSET_LANGUAGE="Unset %s Default" COM_TEMPLATES_HOME_BUTTON="Documentation" COM_TEMPLATES_HOME_HEADING="Select a File" COM_TEMPLATES_HOME_TEXT="You can select from a number of options for customising the look of your templates. The Template Manager supports Source files, Image files, Font files, Zip archives and most of the operations that can be performed on those files. Just select a file and you are good to go. Check the documentation if you want to know more." COM_TEMPLATES_HEADING_ASSIGNED="Assigned" COM_TEMPLATES_HEADING_DEFAULT="Default" COM_TEMPLATES_HEADING_STYLE="Style" COM_TEMPLATES_HEADING_TEMPLATE="Template" COM_TEMPLATES_IMAGE_HEIGHT="Height" COM_TEMPLATES_IMAGE_WIDTH="Width" COM_TEMPLATES_INVALID_FILE_NAME="Invalid file name. Please choose a file name containing a-z, A-Z, 0-9, - and _." COM_TEMPLATES_INVALID_FILE_TYPE="File type not selected." COM_TEMPLATES_INVALID_FOLDER_NAME="Invalid folder name. Please choose a folder name containing a-z, A-Z, 0-9, - and _." COM_TEMPLATES_MANAGER="Templates" COM_TEMPLATES_MANAGER_ADD_STYLE="Templates: Add Style" COM_TEMPLATES_MANAGER_EDIT_FILE="Templates: Edit File" COM_TEMPLATES_MANAGER_EDIT_STYLE="Templates: Edit Style" COM_TEMPLATES_MANAGE_FOLDERS="Manage Folders" COM_TEMPLATES_MANAGER_STYLES="Templates: Styles" COM_TEMPLATES_MANAGER_TEMPLATES="Templates" COM_TEMPLATES_MANAGER_VIEW_TEMPLATE="Templates: Customise" COM_TEMPLATES_MENU_CHANGED_1="1 menu item has been assigned or unassigned to this style." COM_TEMPLATES_MENU_CHANGED_MORE="%d menu items have been assigned or unassigned to this style." COM_TEMPLATES_MENUS_ASSIGNMENT="Menus assignment" COM_TEMPLATES_MODAL_FILE_DELETE="The file %s will be deleted." COM_TEMPLATES_MSG_MANAGE_NO_STYLES="There are no styles installed matching your query." COM_TEMPLATES_MSG_MANAGE_NO_TEMPLATES="There are no templates installed matching your query." COM_TEMPLATES_N_ITEMS_DELETED="%d template styles successfully deleted." COM_TEMPLATES_N_ITEMS_DELETED_1="Template style successfully deleted." COM_TEMPLATES_NEW_FILE_HEADER="Create or Upload a new file." COM_TEMPLATES_NEW_FILE_NAME="New File Name" COM_TEMPLATES_NEW_FILE_SELECT="Select a file type" COM_TEMPLATES_NEW_FILE_TYPE="File Type" COM_TEMPLATES_NO_TEMPLATE_SELECTED="No template selected." COM_TEMPLATES_OVERRIDE_CREATED="Override created in " COM_TEMPLATES_OVERRIDE_EXISTS="Override already exists." COM_TEMPLATES_OVERRIDE_FAILED="Failed to create override." COM_TEMPLATES_OVERRIDE_SUCCESS="Successfully created the override." COM_TEMPLATES_OVERRIDES_COMPONENTS="Components" COM_TEMPLATES_OVERRIDES_MODULES="Modules" COM_TEMPLATES_OVERRIDES_LAYOUTS="Layouts" COM_TEMPLATES_PREVIEW="Preview" COM_TEMPLATES_RENAME_FILE="Rename file %s" COM_TEMPLATES_RESIZE_IMAGE="Resize Image" COM_TEMPLATES_SOURCE_CODE="Source" COM_TEMPLATES_SITE_PREVIEW="Site Preview" COM_TEMPLATES_STYLE_CANNOT_DELETE_DEFAULT_STYLE="Can't delete default style." COM_TEMPLATES_STYLE_SAVE_SUCCESS="Style successfully saved." COM_TEMPLATES_STYLES_FILTER_SEARCH_DESC="Search in style description." COM_TEMPLATES_SUBMENU_STYLES="Styles" COM_TEMPLATES_SUBMENU_TEMPLATES="Templates" COM_TEMPLATES_SUCCESS_DUPLICATED="Style successfully duplicated." COM_TEMPLATES_SUCCESS_HOME_SET="Default style successfully set." COM_TEMPLATES_SUCCESS_HOME_UNSET="Default style successfully unset." COM_TEMPLATES_TAB_DESCRIPTION="Template Description" COM_TEMPLATES_TAB_EDITOR="Editor" COM_TEMPLATES_TAB_OVERRIDES="Create Overrides" COM_TEMPLATES_TEMPLATE_ADD_CSS="Add new stylesheet" COM_TEMPLATES_TEMPLATE_ADD_ERROR="Add custom error page template (optional)." COM_TEMPLATES_TEMPLATE_CLOSE="Close" COM_TEMPLATES_TEMPLATE_COPY="Copy Template" COM_TEMPLATES_TEMPLATE_CSS="Stylesheets" COM_TEMPLATES_TEMPLATE_DESCRIPTION="Template description." COM_TEMPLATES_TEMPLATE_DETAILS="%s Details and Files" COM_TEMPLATES_TEMPLATE_EDIT_CSS="Edit %s" COM_TEMPLATES_TEMPLATE_EDIT_ERROR="Edit error page template" COM_TEMPLATES_TEMPLATE_EDIT_MAIN="Edit main page template" COM_TEMPLATES_TEMPLATE_EDIT_OFFLINEVIEW="Edit offline page template" COM_TEMPLATES_TEMPLATE_EDIT_PRINTVIEW="Edit print view template" COM_TEMPLATES_TEMPLATE_FILENAME="Editing file "%s" in template "%s"." COM_TEMPLATES_TEMPLATE_FILES="Template Files" COM_TEMPLATES_TEMPLATE_HTML="HTML files" COM_TEMPLATES_TEMPLATE_MASTER_FILES="Template Master Files" COM_TEMPLATES_TEMPLATE_NEW_NAME_DESC="New Template Name::Enter the name of the new template. Please use letters, numbers and underscore only." COM_TEMPLATES_TEMPLATE_NEW_NAME_LABEL="New Template Name" COM_TEMPLATES_TEMPLATE_NO_PREVIEW="No preview available. You can enable preview in the options." COM_TEMPLATES_TEMPLATE_NO_PREVIEW_ADMIN="No preview available for Administrator templates" COM_TEMPLATES_TEMPLATE_NO_PREVIEW_DESC="To enable template previews, enable the Preview Module Positions option in Template Options." COM_TEMPLATES_TEMPLATE_NOT_SPECIFIED="Template not specified." COM_TEMPLATES_TEMPLATE_PREVIEW="Preview" COM_TEMPLATES_TEMPLATES_FILTER_SEARCH_DESC="Search in template name or folder name." COM_TEMPLATES_TOGGLE_FULL_SCREEN="Press Ctrl-Q to toggle Full Screen editing." COM_TEMPLATES_TOOLBAR_SET_HOME="Default" COM_TEMPLATES_XML_DESCRIPTION="This component manages templates" JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings." PKb��\�s��55&language/en-GB/en-GB.com_media.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_MEDIA="Media" COM_MEDIA_XML_DESCRIPTION="Component for managing site media." PKb��\FN/�(language/en-GB/en-GB.com_modules.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_MODULES="Modules" COM_MODULES_GENERAL="General" COM_MODULES_REDIRECT_EDIT_DESC="Select if module editing should be opened in the site or administration interface." COM_MODULES_REDIRECT_EDIT_LABEL="Edit module" COM_MODULES_XML_DESCRIPTION="Component for module management on the Backend." PKb��\Y���-language/en-GB/en-GB.plg_search_newsfeeds.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SEARCH_NEWSFEEDS="Search - News Feeds" PLG_SEARCH_NEWSFEEDS_FIELD_SEARCHLIMIT_DESC="Number of search items to return." PLG_SEARCH_NEWSFEEDS_FIELD_SEARCHLIMIT_LABEL="Search Limit" PLG_SEARCH_NEWSFEEDS_NEWSFEEDS="News Feeds" PLG_SEARCH_NEWSFEEDS_XML_DESCRIPTION="Enables searching of News feeds." PKb��\�h��//-language/en-GB/en-GB.plg_user_profile.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_USER_PROFILE="User - Profile" PLG_USER_PROFILE_XML_DESCRIPTION="User Profile Plugin" PKb��\?�FF)language/en-GB/en-GB.com_redirect.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_REDIRECT="Redirect" COM_REDIRECT_XML_DESCRIPTION="This component implements link redirection."PKb��\�0� 2language/en-GB/en-GB.plg_system_languagefilter.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SYSTEM_LANGUAGEFILTER="System - Language Filter" PLG_SYSTEM_LANGUAGEFILTER_BROWSER_SETTINGS="Browser Settings" PLG_SYSTEM_LANGUAGEFILTER_FIELD_ALTERNATE_META_DESC="Add alternative meta tags for menu items with associated menu items in other languages." PLG_SYSTEM_LANGUAGEFILTER_FIELD_ALTERNATE_META_LABEL="Add Alternate Meta Tags" PLG_SYSTEM_LANGUAGEFILTER_FIELD_AUTOMATIC_CHANGE_DESC="This option will automatically change the content language used in the Frontend when a user site language is changed." PLG_SYSTEM_LANGUAGEFILTER_FIELD_AUTOMATIC_CHANGE_LABEL="Automatic Language Change" PLG_SYSTEM_LANGUAGEFILTER_FIELD_COOKIE_DESC="Language cookies can be set to expire at the end of the session or after a year. Default is session." PLG_SYSTEM_LANGUAGEFILTER_FIELD_COOKIE_LABEL="Cookie Lifetime" PLG_SYSTEM_LANGUAGEFILTER_FIELD_DETECT_BROWSER_DESC="Choose site default language or try to detect the browser settings language. It will default to site language if browser settings can't be found." PLG_SYSTEM_LANGUAGEFILTER_FIELD_DETECT_BROWSER_LABEL="Language Selection for new Visitors." PLG_SYSTEM_LANGUAGEFILTER_FIELD_ITEM_ASSOCIATIONS_DESC="This option will allow item associations when switching from one language to another." PLG_SYSTEM_LANGUAGEFILTER_FIELD_ITEM_ASSOCIATIONS_LABEL="Item Associations" PLG_SYSTEM_LANGUAGEFILTER_FIELD_REMOVE_DEFAULT_PREFIX_DESC="Remove the defined URL Language Code of the Content Language that corresponds to the default site language when Search Engine Friendly URLs is set to 'Yes'." PLG_SYSTEM_LANGUAGEFILTER_FIELD_REMOVE_DEFAULT_PREFIX_LABEL="Remove URL Language Code" PLG_SYSTEM_LANGUAGEFILTER_OPTION_SESSION="Session" PLG_SYSTEM_LANGUAGEFILTER_OPTION_YEAR="Year" PLG_SYSTEM_LANGUAGEFILTER_SITE_LANGUAGE="Site Language" PLG_SYSTEM_LANGUAGEFILTER_XML_DESCRIPTION="This plugin filters the displayed content depending on language.<br /><strong>This plugin is to be enabled only when the Language Switcher module is published.</strong><br />If this plugin is activated, it is recommended to also publish the Administrator multilingual status module." PKb��\�Q�r 0language/en-GB/en-GB.plg_finder_weblinks.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_FINDER_STATISTICS_WEB_LINK="Web Link" PLG_FINDER_WEBLINKS="Smart Search - Web Links" PLG_FINDER_WEBLINKS_ERROR_ACTIVATING_PLUGIN="Could not automatically activate the "Smart Search - Web Links" plugin." PLG_FINDER_WEBLINKS_XML_DESCRIPTION="This plugin indexes Joomla! Web Links." PKb��\��� $language/en-GB/en-GB.mod_popular.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_POPULAR="Popular Articles" MOD_POPULAR_CREATED="Created" MOD_POPULAR_FIELD_AUTHORS_DESC="A filter for the Authors." MOD_POPULAR_FIELD_AUTHORS_LABEL="Authors" MOD_POPULAR_FIELD_CATEGORY_DESC="Select Articles from a specific Category or set of Categories." MOD_POPULAR_FIELD_COUNT_DESC="The number of items to display (default 5)." MOD_POPULAR_FIELD_COUNT_LABEL="Count" MOD_POPULAR_FIELD_VALUE_ADDED_OR_MODIFIED_BY_ME="Added or modified by me" MOD_POPULAR_FIELD_VALUE_ANYONE="Anyone" MOD_POPULAR_FIELD_VALUE_NOT_ADDED_OR_MODIFIED_BY_ME="Not added or modified by me" MOD_POPULAR_ITEMS="Popular Items" MOD_POPULAR_NO_MATCHING_RESULTS="No Matching Results" MOD_POPULAR_TITLE="Popular Articles" MOD_POPULAR_TITLE_1="Top Popular Article" MOD_POPULAR_TITLE_MORE="Top %1$s Popular Articles" MOD_POPULAR_TITLE_BY_ME="Top Popular Articles By Me" MOD_POPULAR_TITLE_BY_ME_1="Top Popular Article By Me" MOD_POPULAR_TITLE_BY_ME_MORE="Top %1$s Popular Articles By Me" MOD_POPULAR_TITLE_NOT_ME="Top Popular Articles Not By Me" MOD_POPULAR_TITLE_NOT_ME_1="Top Popular Article Not By Me" MOD_POPULAR_TITLE_NOT_ME_MORE="Top %1$s Popular Articles Not By Me" MOD_POPULAR_TITLE_CATEGORY="Top Popular Articles (%2$s category)" MOD_POPULAR_TITLE_CATEGORY_1="Top Popular Article (%2$s category)" MOD_POPULAR_TITLE_CATEGORY_MORE="Top %1$s Popular Articles (%2$s category)" MOD_POPULAR_TITLE_CATEGORY_BY_ME="Top Popular Articles By Me (%2$s category)" MOD_POPULAR_TITLE_CATEGORY_BY_ME_1="Top Popular Article By Me (%2$s category)" MOD_POPULAR_TITLE_CATEGORY_BY_ME_MORE="Top %1$s Popular Articles By Me (%2$s category)" MOD_POPULAR_TITLE_CATEGORY_NOT_ME="Top Popular Articles Not By Me (%2$s category)" MOD_POPULAR_TITLE_CATEGORY_NOT_ME_1="Top Popular Article Not By Me (%2$s category)" MOD_POPULAR_TITLE_CATEGORY_NOT_ME_MORE="Top %1$s Popular Articles Not By Me (%2$s category)" MOD_POPULAR_UNEXISTING="<i>Non existent</i>" MOD_POPULAR_XML_DESCRIPTION="This module shows a list of the most popular published Articles that are still current. Some that are shown may have expired even though they are the most recent." PKb��\��V V $language/en-GB/en-GB.com_plugins.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_PLUGINS="Plugin Manager" COM_PLUGINS_ADVANCED_FIELDSET_LABEL="Advanced" COM_PLUGINS_BASIC_FIELDSET_LABEL="Basic" COM_PLUGINS_CONFIGURATION="Plugin: Options" COM_PLUGINS_ELEMENT_HEADING="Element" COM_PLUGINS_ERROR_FILE_NOT_FOUND="The file %s could not be found." COM_PLUGINS_FIELD_ELEMENT_DESC="Plugin main file name." COM_PLUGINS_FIELD_ELEMENT_LABEL="Plugin File" COM_PLUGINS_FIELD_ENABLED_DESC="The enabled status of this plugin." COM_PLUGINS_FIELD_FOLDER_DESC="Category/folder of plugins this plugin belongs to." COM_PLUGINS_FIELD_FOLDER_LABEL="Plugin Type" COM_PLUGINS_FIELD_NAME_DESC="The name of the plugin as defined in its xml." COM_PLUGINS_FIELD_NAME_LABEL="Plugin Name" COM_PLUGINS_FOLDER_HEADING="Type" COM_PLUGINS_MANAGER_PLUGIN="Plugins: %s" COM_PLUGINS_MANAGER_PLUGINS="Plugins" COM_PLUGINS_MSG_MANAGE_NO_PLUGINS="There are no plugins installed matching your query." COM_PLUGINS_N_ITEMS_CHECKED_IN_0="No plugin successfully checked in." COM_PLUGINS_N_ITEMS_CHECKED_IN_1="%d plugin successfully checked in." COM_PLUGINS_N_ITEMS_CHECKED_IN_MORE="%d plugins successfully checked in." COM_PLUGINS_N_ITEMS_PUBLISHED="%d plugins successfully enabled." COM_PLUGINS_N_ITEMS_PUBLISHED_1="Plugin successfully enabled." COM_PLUGINS_N_ITEMS_UNPUBLISHED="%d plugins successfully disabled." COM_PLUGINS_N_ITEMS_UNPUBLISHED_1="Plugin successfully disabled." COM_PLUGINS_NAME_HEADING="Plugin Name" COM_PLUGINS_NO_ITEM_SELECTED="No plugins selected." COM_PLUGINS_OPTION_FOLDER="- Select Type -" COM_PLUGINS_PLUGIN="Plugin" COM_PLUGINS_PLUGINS="Plugins" COM_PLUGINS_SAVE_SUCCESS="Plugin successfully saved." COM_PLUGINS_SEARCH_IN_TITLE="Search in plugin title. Prefix with ID: to search for a plugin ID" COM_PLUGINS_XML_DESCRIPTION="This component manages Joomla plugins." COM_PLUGINS_XML_ERR="Plugins XML data not available." JLIB_HTML_PUBLISH_ITEM="Enable plugin" JLIB_HTML_UNPUBLISH_ITEM="Disable plugin" JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings."PKb��\rV�V"language/en-GB/en-GB.com_users.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CATEGORIES_CATEGORY_ADD_TITLE="User Notes: New Category" COM_CATEGORIES_CATEGORY_EDIT_TITLE="User Notes: Edit Category" COM_USERS_OPTION_FILTER_DATE="- Registration Date -" COM_USERS_OPTION_RANGE_PAST_1MONTH="in the last month" COM_USERS_OPTION_RANGE_PAST_3MONTH="in the last 3 months" COM_USERS_OPTION_RANGE_PAST_6MONTH="in the last 6 months" COM_USERS_OPTION_RANGE_PAST_WEEK="in the last week" COM_USERS_OPTION_RANGE_PAST_YEAR="in the last year" COM_USERS_OPTION_RANGE_POST_YEAR="more than a year ago" COM_USERS_OPTION_RANGE_TODAY="today" COM_USERS="Users" COM_USERS_ACTIONS_AVAILABLE="Actions Permitted" COM_USERS_ACTIVATED="Activated" COM_USERS_ADD_NOTE="Add a Note" COM_USERS_ASSIGNED_GROUPS="Assigned User Groups" COM_USERS_BATCH_ADD="Add To Group" COM_USERS_BATCH_DELETE="Delete From Group" COM_USERS_BATCH_GROUP="Select Group" COM_USERS_BATCH_OPTIONS="Batch process the selected users" COM_USERS_BATCH_SET="Set To Group" COM_USERS_CATEGORIES_TITLE="User Notes: Categories" COM_USERS_CATEGORY_HEADING="Category" COM_USERS_CONFIG_FIELD_ALLOWREGISTRATION_DESC="If set to Yes, new Users are allowed to self-register." COM_USERS_CONFIG_FIELD_ALLOWREGISTRATION_LABEL="Allow User Registration" COM_USERS_CONFIG_FIELD_CAPTCHA_DESC="Select the captcha plugin that will be used in the registration, password and username reminder forms. You may need to enter required information for your captcha plugin in the Plugin Manager.<br />If 'Use Default' is selected, make sure a captcha plugin is selected in Global Configuration." COM_USERS_CONFIG_FIELD_CAPTCHA_LABEL="Captcha" COM_USERS_CONFIG_FIELD_CHANGEUSERNAME_DESC="Allow users to change their Login name when editing their profile." COM_USERS_CONFIG_FIELD_CHANGEUSERNAME_LABEL="Change Login Name" COM_USERS_CONFIG_FIELD_FRONTEND_LANG_DESC="If 'Frontend User Parameters' is set to 'Show', users will be able to select their Frontend language preference when registering." COM_USERS_CONFIG_FIELD_FRONTEND_LANG_LABEL="Frontend Language" COM_USERS_CONFIG_FIELD_FRONTEND_RESET_COUNT_DESC="The maximum number of password resets allowed within the time period. Zero indicates no limit." COM_USERS_CONFIG_FIELD_FRONTEND_RESET_COUNT_LABEL="Maximum Reset Count" COM_USERS_CONFIG_FIELD_FRONTEND_RESET_TIME_DESC="The time period, in hours, for the reset counter." COM_USERS_CONFIG_FIELD_FRONTEND_RESET_TIME_LABEL="Time in Hours" COM_USERS_CONFIG_FIELD_FRONTEND_USERPARAMS_DESC="If set to Show, Users will be able to select their language, editor and Help Site preferences on their details screen when logged-in to the Frontend." COM_USERS_CONFIG_FIELD_FRONTEND_USERPARAMS_LABEL="Frontend User Parameters" COM_USERS_CONFIG_FIELD_GUEST_USER_GROUP_DESC="The default Group that will be applied to Guest (not logged-in) Users." COM_USERS_CONFIG_FIELD_GUEST_USER_GROUP_LABEL="Guest User Group" COM_USERS_CONFIG_FIELD_MAILBODY_SUFFIX_DESC="This is added after the mail text." COM_USERS_CONFIG_FIELD_MAILBODY_SUFFIX_LABEL="Mailbody Suffix" COM_USERS_CONFIG_FIELD_MAILTOADMIN_DESC="If set to Yes then a notification mail will be sent to administrators if 'New User Account Activation' is set to 'None' or 'Self'." COM_USERS_CONFIG_FIELD_MAILTOADMIN_LABEL="Notification Mail to Administrators" COM_USERS_CONFIG_FIELD_MINIMUM_INTEGERS="Password Minimum Integers" COM_USERS_CONFIG_FIELD_MINIMUM_INTEGERS_DESC="Set the minimum number of integers that must be included in a password." COM_USERS_CONFIG_FIELD_MINIMUM_PASSWORD_LENGTH="Password Minimum Length" COM_USERS_CONFIG_FIELD_MINIMUM_PASSWORD_LENGTH_DESC="Set the minimum length for a password." COM_USERS_CONFIG_FIELD_MINIMUM_SYMBOLS="Password Minimum Symbols" COM_USERS_CONFIG_FIELD_MINIMUM_SYMBOLS_DESC="Set the minimum number of symbols (such as !@#$) required in a password." COM_USERS_CONFIG_FIELD_MINIMUM_UPPERCASE="Password Minimum Upper Case" COM_USERS_CONFIG_FIELD_MINIMUM_UPPERCASE_DESC="Set the minimum number of upper case ASCII characters required for a password." COM_USERS_CONFIG_FIELD_NEW_USER_TYPE_DESC="The default group that will be applied to New Users Registering via the Frontend." COM_USERS_CONFIG_FIELD_NEW_USER_TYPE_LABEL="New User Registration Group" COM_USERS_CONFIG_FIELD_NOTES_HISTORY="User Notes History" COM_USERS_CONFIG_FIELD_SENDPASSWORD_LABEL="Send Password" COM_USERS_CONFIG_FIELD_SENDPASSWORD_DESC="If set to Yes the user's initial password will be emailed to the user as part of the registration mail." COM_USERS_CONFIG_FIELD_SUBJECT_PREFIX_DESC="This is added in front of each mail subject." COM_USERS_CONFIG_FIELD_SUBJECT_PREFIX_LABEL="Subject Prefix" COM_USERS_CONFIG_FIELD_USERACTIVATION_DESC="If set to None the user will be registered immediately. If set to Self the User will be emailed a link to activate their account before they can log in. If set to Administrator the user will be emailed a link to verify their email address and then all users set to receive system emails and who have the permission to create users will be notified to activate the user's account." COM_USERS_CONFIG_FIELD_USERACTIVATION_LABEL="New User Account Activation" COM_USERS_CONFIG_FIELD_USERACTIVATION_OPTION_ADMINACTIVATION="Administrator" COM_USERS_CONFIG_FIELD_USERACTIVATION_OPTION_SELFACTIVATION="Self" COM_USERS_CONFIG_IMPORT_FAILED="An error was encountered while importing the configuration: %s." COM_USERS_CONFIG_SAVE_FAILED="An error was encountered while saving the configuration: %s." COM_USERS_CONFIGURATION="Users: Options" COM_USERS_DEBUG_EXPLICIT_ALLOW="Allowed" COM_USERS_DEBUG_EXPLICIT_DENY="Forbidden" COM_USERS_DEBUG_GROUP="Debug Permissions Report" COM_USERS_DEBUG_IMPLICIT_DENY="Not Allowed" COM_USERS_DEBUG_LEGEND="Legend:" COM_USERS_DEBUG_USER="Debug Permissions Report" COM_USERS_DELETE_ERROR_INVALID_GROUP="You can't delete user groups to which you belong." COM_USERS_DESIRED_PASSWORD="Enter your desired password." COM_USERS_EDIT_NOTE_N="Editing note with ID #%d" COM_USERS_EDIT_USER="Edit User %s" COM_USERS_EMPTY_REVIEW="-" COM_USERS_EMPTY_SUBJECT="- No subject -" COM_USERS_ERROR_INVALID_GROUP="Invalid Group" COM_USERS_ERROR_LEVELS_NOLEVELS_SELECTED="No View Permission Level(s) selected." COM_USERS_ERROR_NO_ADDITIONS="The selected user(s) are already assigned to the selected group." COM_USERS_ERROR_VIEW_LEVEL_IN_USE="You can't delete the view access level '%d:%s' because it is being used by content." COM_USERS_ERROR_SECRET_CODE_WITHOUT_TFA="You have entered a Secret Code but two factor authentication is not enabled in your user account. If you want to use a secret code to secure your login please edit your user profile and enable two factor authentication." COM_USERS_FIELD_CATEGORY_ID_LABEL="Category" COM_USERS_FIELD_ID_LABEL="ID" COM_USERS_FIELD_NOTEBODY_DESC="Note" COM_USERS_FIELD_NOTEBODY_LABEL="Note" COM_USERS_FIELD_REVIEW_TIME_DESC="Review Date is a manually entered date you can use as fits in your workflow. Examples would be to put in a date when you want to review a user or the last date you reviewed the user." COM_USERS_FIELD_REVIEW_TIME_LABEL="Review Date" COM_USERS_FIELD_STATE_DESC="Set publication status." COM_USERS_FIELD_SUBJECT_DESC="The subject line for the note." COM_USERS_FIELD_SUBJECT_LABEL="Subject" COM_USERS_FIELD_USER_ID_LABEL="User" COM_USERS_FILTER_ACTIVE="- Active -" COM_USERS_FILTER_LABEL="Filter Users by: " COM_USERS_FILTER_NOTES="Show notes list for this user" COM_USERS_FILTER_STATE="- State -" COM_USERS_FILTER_USER_GROUP="Filter User Group" COM_USERS_FILTER_USERGROUP="- Group -" COM_USERS_GROUP_FIELD_PARENT_DESC="Choose a Parent for this Group." COM_USERS_GROUP_FIELD_PARENT_LABEL="Group Parent" COM_USERS_GROUP_FIELD_TITLE_DESC="Enter a Title for the Group." COM_USERS_GROUP_FIELD_TITLE_LABEL="Group Title" COM_USERS_GROUP_SAVE_SUCCESS="Group successfully saved." COM_USERS_GROUPS_CONFIRM_DELETE="Are you sure you wish to delete groups that have users?" COM_USERS_GROUPS_N_ITEMS_DELETED="%d User Groups successfully deleted." COM_USERS_GROUPS_N_ITEMS_DELETED_1="1 User Group successfully deleted." COM_USERS_GROUPS_NO_ITEM_SELECTED="No User Groups selected." COM_USERS_HEADING_ACTIVATED="Activated" COM_USERS_HEADING_ACTIVATED_ASC="Activated ascending" COM_USERS_HEADING_ACTIVATED_DESC="Activated descending" COM_USERS_HEADING_ASSET_NAME="Asset Name" COM_USERS_HEADING_ASSET_TITLE="Asset Title" COM_USERS_HEADING_EMAIL_ASC="Email ascending" COM_USERS_HEADING_EMAIL_DESC="Email descending" COM_USERS_HEADING_ENABLED="Enabled" COM_USERS_HEADING_ENABLED_ASC="Enabled ascending" COM_USERS_HEADING_ENABLED_DESC="Enabled descending" COM_USERS_HEADING_GROUP_TITLE="Group Title" COM_USERS_HEADING_GROUPS="User Groups" COM_USERS_HEADING_LAST_VISIT_DATE="Last Visit Date" COM_USERS_HEADING_LAST_VISIT_DATE_ASC="Last visit date ascending" COM_USERS_HEADING_LAST_VISIT_DATE_DESC="Last visit date descending" COM_USERS_HEADING_LEVEL_NAME="Level Name" COM_USERS_HEADING_LFT="LFT" COM_USERS_HEADING_NAME="Name" COM_USERS_HEADING_NAME_ASC="Name ascending" COM_USERS_HEADING_NAME_DESC="Name descending" COM_USERS_HEADING_USERNAME_ASC="Username ascending" COM_USERS_HEADING_USERNAME_DESC="Username descending" COM_USERS_HEADING_REGISTRATION_DATE="Registration Date" COM_USERS_HEADING_REGISTRATION_DATE_ASC="Registration date ascending" COM_USERS_HEADING_REGISTRATION_DATE_DESC="Registration date descending" COM_USERS_HEADING_USERS_IN_GROUP="Users in group" COM_USERS_LEVEL_DETAILS="Level Details" COM_USERS_LEVEL_FIELD_TITLE_DESC="Enter a Title for this Access level." COM_USERS_LEVEL_FIELD_TITLE_LABEL="Level Title" COM_USERS_LEVEL_HEADER_ERROR="User header access level error." COM_USERS_LEVEL_SAVE_SUCCESS="Access level successfully saved." COM_USERS_LEVELS_N_ITEMS_DELETED="%d View Permission Level successfully deleted." COM_USERS_LEVELS_N_ITEMS_DELETED_1="1 View Permission Level successfully deleted." COM_USERS_MAIL_DETAILS="Details" COM_USERS_MAIL_EMAIL_SENT_TO_N_USERS="Email sent to %s users." COM_USERS_MAIL_EMAIL_SENT_TO_N_USERS_1="Email sent to one user." COM_USERS_MAIL_FIELD_EMAIL_DISABLED_USERS_DESC="If checked, disabled users will be included when sending mail." COM_USERS_MAIL_FIELD_EMAIL_DISABLED_USERS_LABEL="Send to Disabled Users." COM_USERS_MAIL_FIELD_GROUP_DESC="Choose a group to send the mail to." COM_USERS_MAIL_FIELD_GROUP_LABEL="Group:" COM_USERS_MAIL_FIELD_MESSAGE_DESC="Enter a default message." COM_USERS_MAIL_FIELD_MESSAGE_LABEL="Message" COM_USERS_MAIL_FIELD_RECURSE_DESC="If checked, the email will also be sent to users who are members of any child groups of the selected groups." COM_USERS_MAIL_FIELD_RECURSE_LABEL="Mail to Child User Groups" COM_USERS_MAIL_FIELD_SEND_AS_BLIND_CARBON_COPY_DESC="Hides recipient list and adds copy to site email." COM_USERS_MAIL_FIELD_SEND_AS_BLIND_CARBON_COPY_LABEL="Recipients as BCC" COM_USERS_MAIL_FIELD_SEND_IN_HTML_MODE_DESC="If checked, the email will be sent with HTML tags. If not checked, email will be sent in plain text." COM_USERS_MAIL_FIELD_SEND_IN_HTML_MODE_LABEL="Send in HTML Mode" COM_USERS_MAIL_FIELD_SUBJECT_DESC="Enter the subject of the mail." COM_USERS_MAIL_FIELD_SUBJECT_LABEL="Subject" COM_USERS_MAIL_FIELD_VALUE_ALL_USERS_GROUPS="All Users Groups" COM_USERS_MAIL_MESSAGE="Message" COM_USERS_MAIL_NO_USERS_COULD_BE_FOUND_IN_THIS_GROUP="No users could be found in this group." COM_USERS_MAIL_ONLY_YOU_COULD_BE_FOUND_IN_THIS_GROUP="You are the only user in this group." COM_USERS_MAIL_PLEASE_FILL_IN_THE_FORM_CORRECTLY="Please fill in the form correctly." COM_USERS_MAIL_PLEASE_FILL_IN_THE_MESSAGE="Please enter a message" COM_USERS_MAIL_PLEASE_FILL_IN_THE_SUBJECT="Please enter a subject" COM_USERS_MAIL_PLEASE_SELECT_A_GROUP="Please select a Group" COM_USERS_MAIL_THE_MAIL_COULD_NOT_BE_SENT="The mail could not be sent." COM_USERS_MASS_MAIL="Mass Mail" COM_USERS_MASS_MAIL_DESC="Mass Mail options." COM_USERS_MSG_NOT_ENOUGH_INTEGERS_N="Password does not contain enough digits. At least %s digits are required." COM_USERS_MSG_NOT_ENOUGH_INTEGERS_N_1="Password does not contain enough digits. At least 1 digit is required." COM_USERS_MSG_NOT_ENOUGH_SYMBOLS_N="Password does not contain enough symbols. At least %s symbols are required." COM_USERS_MSG_NOT_ENOUGH_SYMBOLS_N_1="Password does not contain enough symbols. At least 1 symbol is required." COM_USERS_MSG_NOT_ENOUGH_UPPERCASE_LETTERS_N="Password does not contain enough uppercase characters. At least %s upper case characters are required." COM_USERS_MSG_NOT_ENOUGH_UPPERCASE_LETTERS_N_1="Password does not contain enough uppercase characters. At least 1 upper case character is required." COM_USERS_MSG_PASSWORD_TOO_LONG="Password is too long. Passwords must be less than 100 characters." COM_USERS_MSG_PASSWORD_TOO_SHORT_N="Password is too short. Passwords must have at least %s characters." COM_USERS_MSG_SPACES_IN_PASSWORD="Password must not contain spaces at the beginning or end." COM_USERS_N_LEVELS_DELETED="%d View Access Levels successfully removed." COM_USERS_N_LEVELS_DELETED_0="No View Access Levels removed." COM_USERS_N_LEVELS_DELETED_1="%d View Access Level successfully removed." COM_USERS_N_USER_NOTES="Display %d notes" COM_USERS_N_USER_NOTES_1="Display %d note" COM_USERS_N_USER_NOTES_0="No notes to display" COM_USERS_N_USERS_ACTIVATED="%s Users successfully activated." COM_USERS_N_USERS_ACTIVATED_0="No user activated." COM_USERS_N_USERS_ACTIVATED_1="User successfully activated." COM_USERS_N_USERS_BLOCKED="%s Users blocked." COM_USERS_N_USERS_BLOCKED_0="No User blocked." COM_USERS_N_USERS_BLOCKED_1="User blocked." COM_USERS_N_USERS_UNBLOCKED="%s Users enabled." COM_USERS_N_USERS_UNBLOCKED_0="No User enabled." COM_USERS_N_USERS_UNBLOCKED_1="User enabled." COM_USERS_NEW_NOTE="New Note" COM_USERS_NO_ACTION="No Action" COM_USERS_NO_NOTES="No notes available for this user." COM_USERS_NO_LEVELS_SELECTED="No Viewing Access Levels selected." COM_USERS_NOTE_N_SUBJECT="#%d %s" COM_USERS_NOTES="User Notes: New/Edit" COM_USERS_NOTES_FOR_USER="Notes for user %s (ID #%d)" COM_USERS_NOTES_N_ITEMS_ARCHIVED="%d User Notes successfully archived." COM_USERS_NOTES_N_ITEMS_ARCHIVED_1="%d User Note successfully archived." COM_USERS_NOTES_N_ITEMS_CHECKED_IN="%d User Notes successfully checked in." COM_USERS_NOTES_N_ITEMS_CHECKED_IN_1="%d User Note successfully checked in." COM_USERS_NOTES_N_ITEMS_DELETED="%d User Notes successfully deleted." COM_USERS_NOTES_N_ITEMS_DELETED_1="%d User Note successfully deleted." COM_USERS_NOTES_N_ITEMS_PUBLISHED="%d User Notes successfully published." COM_USERS_NOTES_N_ITEMS_PUBLISHED_1="%d User Note successfully published." COM_USERS_NOTES_N_ITEMS_TRASHED="%d User Notes successfully trashed." COM_USERS_NOTES_N_ITEMS_TRASHED_1="%d User Note successfully trashed." COM_USERS_NOTES_N_ITEMS_UNPUBLISHED="%d User Notes successfully unpublished." COM_USERS_NOTES_N_ITEMS_UNPUBLISHED_1="%d User Note successfully unpublished." COM_USERS_OPTION_LEVEL_CATEGORY="%d (top category)" COM_USERS_OPTION_LEVEL_COMPONENT="%d (component)" COM_USERS_OPTION_LEVEL_DEEPER="%d (deeper)" COM_USERS_OPTION_SELECT_COMPONENT="- Select Component -" COM_USERS_OPTION_SELECT_LEVEL_END="- Select End Level -" COM_USERS_OPTION_SELECT_LEVEL_START="- Select Start Level -" COM_USERS_PASSWORD_RESET_REQUIRED="Password Reset Required" COM_USERS_REQUIRE_PASSWORD_RESET="Require Password Reset" COM_USERS_REVIEW_HEADING="Review Date" COM_USERS_SEARCH_ACCESS_LEVELS="Search Viewing Access Levels" COM_USERS_SEARCH_ASSETS="Search Assets" COM_USERS_SEARCH_GROUPS_LABEL="Search User Groups" COM_USERS_SEARCH_IN_GROUPS="Search in title" COM_USERS_SEARCH_IN_NAME="Search in name" COM_USERS_SEARCH_IN_NOTE_TITLE="Search in notes, subject or username." COM_USERS_SEARCH_TITLE_LEVELS="Search for Access Levels." COM_USERS_SEARCH_USERS="Search Users" COM_USERS_SETTINGS_FIELDSET_LABEL="Basic Settings" COM_USERS_SUBMENU_GROUPS="User Groups" COM_USERS_SUBMENU_LEVELS="Viewing Access Levels" COM_USERS_SUBMENU_NOTES="User Notes" COM_USERS_SUBMENU_NOTE_CATEGORIES="Note Categories" COM_USERS_SUBMENU_USERS="Users" COM_USERS_SUBJECT_HEADING="Subject" COM_USERS_TOOLBAR_ACTIVATE="Activate" COM_USERS_TOOLBAR_BLOCK="Block" COM_USERS_TOOLBAR_MAIL_SEND_MAIL="Send email" COM_USERS_TOOLBAR_UNBLOCK="Unblock" COM_USERS_UNACTIVATED="Unactivated" COM_USERS_USER_ACCOUNT_DETAILS="Account Details" COM_USERS_USER_BATCH_FAILED="An error was encountered while performing the batch operation: %s." COM_USERS_USER_BATCH_SUCCESS="Batch operation completed successfully." COM_USERS_USER_FIELD_BACKEND_LANGUAGE_DESC="Select the Language for the Administrator Backend interface. This will only affect this User." COM_USERS_USER_FIELD_BACKEND_LANGUAGE_LABEL="Backend Language" COM_USERS_USER_FIELD_BACKEND_TEMPLATE_DESC="Select the template style for the Administrator Backend interface. This will only affect this User." COM_USERS_USER_FIELD_BACKEND_TEMPLATE_LABEL="Backend Template Style" COM_USERS_USER_FIELD_BLOCK_DESC="Block this user." COM_USERS_USER_FIELD_BLOCK_LABEL="Block this User" COM_USERS_USER_FIELD_EDITOR_DESC="Editor for this user." COM_USERS_USER_FIELD_EDITOR_LABEL="Editor" COM_USERS_USER_FIELD_EMAIL_DESC="Enter an email address for the user." COM_USERS_USER_FIELD_FRONTEND_LANGUAGE_DESC="Select the Language for the Frontend interface. This will only affect this User." COM_USERS_USER_FIELD_FRONTEND_LANGUAGE_LABEL="Frontend Language" COM_USERS_USER_FIELD_HELPSITE_DESC="Help site for this user." COM_USERS_USER_FIELD_HELPSITE_LABEL="Help Site" COM_USERS_USER_FIELD_LASTRESET_DESC="Date and time of last password reset." COM_USERS_USER_FIELD_LASTRESET_LABEL="Last Reset Date" COM_USERS_USER_FIELD_LASTVISIT_DESC="Last visit date." COM_USERS_USER_FIELD_LASTVISIT_LABEL="Last Visit Date" COM_USERS_USER_FIELD_NAME_DESC="Enter the name of the user." COM_USERS_USER_FIELD_NAME_LABEL="Name" COM_USERS_USER_FIELD_PASSWORD1_MESSAGE="The passwords you entered do not match. Please enter your desired password in the password field and confirm your entry by entering it in the confirm password field." COM_USERS_USER_FIELD_PASSWORD2_DESC="Confirm the user's password." COM_USERS_USER_FIELD_PASSWORD2_LABEL="Confirm Password" COM_USERS_USER_FIELD_PASSWORD_DESC="Enter the password for the user." COM_USERS_USER_FIELD_REGISTERDATE_DESC="Registration date." COM_USERS_USER_FIELD_REGISTERDATE_LABEL="Registration Date" COM_USERS_USER_FIELD_REQUIRERESET_DESC="Setting this option to yes requires the user to reset their password the next time they log into the site." COM_USERS_USER_FIELD_REQUIRERESET_LABEL="Require Password Reset" COM_USERS_USER_FIELD_RESETCOUNT_DESC="Number of password resets since last reset date." COM_USERS_USER_FIELD_RESETCOUNT_LABEL="Password Reset Count" COM_USERS_USER_FIELD_SENDEMAIL_DESC="If set to yes, the user will receive system emails." COM_USERS_USER_FIELD_SENDEMAIL_LABEL="Receive System Emails" COM_USERS_USER_FIELD_TIMEZONE_DESC="Time zone for this user." COM_USERS_USER_FIELD_TIMEZONE_LABEL="Time Zone" COM_USERS_USER_FIELD_TWOFACTOR_LABEL="Authentication Method" COM_USERS_USER_FIELD_TWOFACTOR_DESC="Which two factor authentication method you want to activate on the user account." COM_USERS_USER_FIELD_USERNAME_DESC="Enter the login name (Username) for the user." COM_USERS_USER_FIELD_USERNAME_LABEL="Login Name" COM_USERS_USER_GROUPS_HAVING_ACCESS="User Groups Having Viewing Access" COM_USERS_USER_HEADING="User" COM_USERS_USER_OTEPS="One time emergency passwords" COM_USERS_USER_OTEPS_DESC="If you do not have access to your two factor authentication device you can use any of the following passwords instead of a regular security code. Each one of these emergency passwords is immediately destroyed upon use. We recommend printing these passwords out and keeping the printout in a safe and accessible location, eg your wallet or a safety deposit box." COM_USERS_USER_OTEPS_WAIT_DESC="There are currently no emergency one time passwords generated in your account. The passwords will be generated automatically and displayed here as soon as you activate two factor authentication." COM_USERS_USER_SAVE_FAILED="An error was encountered while saving the member: %s." COM_USERS_USER_SAVE_SUCCESS="User successfully saved." COM_USERS_USER_TWO_FACTOR_AUTH="Two Factor Authentication" COM_USERS_USERGROUP_DETAILS="User Group Details" COM_USERS_USERS_ERROR_CANNOT_BLOCK_SELF="You can't block yourself." COM_USERS_USERS_ERROR_CANNOT_DELETE_SELF="You can't delete yourself." COM_USERS_USERS_ERROR_CANNOT_DEMOTE_SELF="You can't remove your own Super User permissions." COM_USERS_USERS_MULTIPLE_GROUPS="Multiple groups" COM_USERS_USERS_N_ITEMS_DELETED="%d users successfully deleted." COM_USERS_USERS_N_ITEMS_DELETED_1="1 user successfully deleted." COM_USERS_USERS_NO_ITEM_SELECTED="No Users selected." COM_USERS_VIEW_DEBUG_GROUP_TITLE="Debug Permissions Report for Group #%d, %s" COM_USERS_VIEW_DEBUG_USER_TITLE="Debug Permissions Report for User #%d, %s" COM_USERS_VIEW_EDIT_GROUP_TITLE="Users: Edit Group" COM_USERS_VIEW_EDIT_LEVEL_TITLE="Users: Edit Viewing Access Level" COM_USERS_VIEW_EDIT_PROFILE_TITLE="Users: Edit Profile" COM_USERS_VIEW_EDIT_USER_TITLE="Users: Edit" COM_USERS_VIEW_GROUPS_TITLE="Users: Groups" COM_USERS_VIEW_LEVELS_TITLE="Users: Viewing Access Levels" COM_USERS_VIEW_NEW_GROUP_TITLE="Users: New Group" COM_USERS_VIEW_NEW_LEVEL_TITLE="Users: New Viewing Access Level" COM_USERS_VIEW_NEW_USER_TITLE="Users: New" COM_USERS_VIEW_NOTES_TITLE="User Notes" COM_USERS_VIEW_USERS_TITLE="Users" COM_USERS_XML_DESCRIPTION="Component for managing users" JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings."PKb��\ȏ�++6language/en-GB/en-GB.plg_authentication_cookie.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_AUTH_COOKIE_XML_DESCRIPTION="Handles Joomla's cookie User authentication.<br /><strong> Warning! You must have at least one other authentication plugin enabled.</strong><br />You will also need a plugin such as the System - Remember Me plugin to implement cookie login." PLG_AUTHENTICATION_COOKIE="Authentication - Cookie" PKb��\oP5ZZ$language/en-GB/en-GB.mod_submenu.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_SUBMENU="Administrator Sub-Menu" MOD_SUBMENU_XML_DESCRIPTION="This module shows the Sub-Menu Navigation Module." PKb��\1М�??&language/en-GB/en-GB.com_login.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_LOGIN="Login" COM_LOGIN_XML_DESCRIPTION="This component lets users login to the site." PKb��\8I���"language/en-GB/en-GB.mod_login.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_LOGIN="Login Form" MOD_LOGIN_FIELD_USESECURE_DESC="Submit encrypted login data (requires SSL). Do not enable this option if Joomla is not accessible using the https:// protocol prefix." MOD_LOGIN_FIELD_USESECURE_LABEL="Encrypt Login Form" MOD_LOGIN_LANGUAGE="Language" MOD_LOGIN_LOGIN="Log in" MOD_LOGIN_XML_DESCRIPTION="This module displays a username and password login form. It should not be unpublished." MOD_LOGIN_REMIND="Forgot your username?" MOD_LOGIN_RESET="Forgot your password?" PKb��\4��11&language/en-GB/en-GB.com_menus.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_MENUS="Menus" COM_MENUS_XML_DESCRIPTION="Component for creating menus." PKb��\� ن��%language/en-GB/en-GB.tpl_isis.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 ISIS="Isis Administrator template" TPL_ISIS_POSITION_BOTTOM="Bottom" TPL_ISIS_POSITION_CPANEL="Cpanel" TPL_ISIS_POSITION_CP_SHELL="Unused" TPL_ISIS_POSITION_DEBUG="Debug" TPL_ISIS_POSITION_FOOTER="Footer" TPL_ISIS_POSITION_ICON="Quick Icons" TPL_ISIS_POSITION_LOGIN="Login" TPL_ISIS_POSITION_MENU="Menu" TPL_ISIS_POSITION_POSTINSTALL="Postinstall" TPL_ISIS_POSITION_STATUS="Status" TPL_ISIS_POSITION_SUBMENU="Submenu" TPL_ISIS_POSITION_TITLE="Title" TPL_ISIS_POSITION_TOOLBAR="Toolbar" TPL_ISIS_XML_DESCRIPTION="Continuing the Egyptian god/goddess theme (Khepri from 1.5 and Hathor from 1.6), Isis is the Joomla 3 administrator template based on Bootstrap from Twitter and the launch of the Joomla User Interface library (JUI)." PKb��\��n��0language/en-GB/en-GB.plg_user_contactcreator.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTACTCREATOR_ERR_FAILED_CREATING_CONTACT="Automatic contact creation failed. Please contact a site administrator." PLG_CONTACTCREATOR_ERR_NO_CATEGORY="Contact automatic creation failed because contact category is not set!" PLG_CONTACTCREATOR_FIELD_AUTOMATIC_WEBPAGE_DESC="A formatted string to automatically generate a contact's web page. [name] is replaced with the name, [username] is replaced with the username, [userid] is replaced with the user ID and [email] is replaced with the email." PLG_CONTACTCREATOR_FIELD_AUTOMATIC_WEBPAGE_LABEL="Automatic Webpage" PLG_CONTACTCREATOR_FIELD_AUTOPUBLISH_DESC="Optionally have the contact default to published or unpublished." PLG_CONTACTCREATOR_FIELD_AUTOPUBLISH_LABEL="Automatically Publish the Contact" PLG_CONTACTCREATOR_FIELD_CATEGORY_DESC="Category to assign contacts to by default." PLG_CONTACTCREATOR_XML_DESCRIPTION="Plugin to automatically create contact information for new users." PLG_USER_CONTACTCREATOR="User - Contact Creator" PKb��\�)� DD+language/en-GB/en-GB.com_categories.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CATEGORIES="Categories" COM_CATEGORIES_XML_DESCRIPTION="This component manages categories." PKb��\Y�q//+language/en-GB/en-GB.plg_content_joomla.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTENT_JOOMLA="Content - Joomla" PLG_CONTENT_JOOMLA_FIELD_CHECK_CATEGORIES_DESC="Check that categories are fully empty before they are deleted." PLG_CONTENT_JOOMLA_FIELD_CHECK_CATEGORIES_LABEL="Check Category Deletion" PLG_CONTENT_JOOMLA_FIELD_EMAIL_NEW_FE_DESC="Email users if 'Send email' is on when there is a new article submitted via the Frontend." PLG_CONTENT_JOOMLA_FIELD_EMAIL_NEW_FE_LABEL="Email on New Site Article" PLG_CONTENT_JOOMLA_XML_DESCRIPTION="This plugin does category processing for core extensions; sends an email when new article is submitted in the Frontend."PKb��\�!�kNN3language/en-GB/en-GB.plg_twofactorauth_totp.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_TWOFACTORAUTH_TOTP="Two Factor Authentication - Google Authenticator" PLG_TWOFACTORAUTH_TOTP_XML_DESCRIPTION="Allows users on your site to use two factor authentication using Google Authenticator or other compatible time-based One Time Password generators. To use two factor authentication please edit the user profile and enable two factor authentication." PKb��\Hp[��(language/en-GB/en-GB.plg_finder_tags.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_FINDER_QUERY_FILTER_BRANCH_P_TAG="Tags" PLG_FINDER_QUERY_FILTER_BRANCH_S_TAG="Tag" PLG_FINDER_TAGS="Smart Search - Tags" PLG_FINDER_TAGS_XML_DESCRIPTION="This plugin indexes Joomla! Tags." PKb��\FĩG��'language/en-GB/en-GB.com_config.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CONFIG="Configuration Manager" COM_CONFIG_XML_DESCRIPTION="Configuration Manager" COM_CONFIG_CONFIG_VIEW_DEFAULT_DESC="Displays basic site configuration options." COM_CONFIG_CONFIG_VIEW_DEFAULT_TITLE="Display Site Configuration Options" COM_CONFIG_TEMPLATES_VIEW_DEFAULT_DESC="Displays template parameter options if the template allows this." COM_CONFIG_TEMPLATES_VIEW_DEFAULT_TITLE="Display Template Options" PKb��\y���,language/en-GB/en-GB.plg_system_redirect.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SYSTEM_REDIRECT="System - Redirect" PLG_SYSTEM_REDIRECT_ERROR_UPDATING_DATABASE="An error occurred while updating the database." PLG_SYSTEM_REDIRECT_FIELD_COLLECT_URLS_DESC="This option controls the collection of URLs. This is useful to avoid unnecessary load on the database." PLG_SYSTEM_REDIRECT_FIELD_COLLECT_URLS_LABEL="Collect URLs" PLG_SYSTEM_REDIRECT_XML_DESCRIPTION="The system redirect plugin enables the Joomla Redirect system to catch missing pages and redirect users." PKb��\~qq,language/en-GB/en-GB.mod_multilangstatus.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_MULTILANGSTATUS="Multilingual Status" MOD_MULTILANGSTATUS_XML_DESCRIPTION="This module shows the status of the multilingual parameters." PKb��\�����/language/en-GB/en-GB.plg_editors_codemirror.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CODEMIRROR_FIELD_ACTIVELINE_COLOR_DESC="The colour to use for highlighting the active line. Will be displayed at 50% opacity." PLG_CODEMIRROR_FIELD_ACTIVELINE_COLOR_LABEL="Active Line Colour" PLG_CODEMIRROR_FIELD_ACTIVELINE_DESC="Adds a highlight to the line the cursor is currently on." PLG_CODEMIRROR_FIELD_ACTIVELINE_LABEL="Highlight Active Line" PLG_CODEMIRROR_FIELD_AUTOCLOSEBRACKET_DESC="Automatic bracket completion." PLG_CODEMIRROR_FIELD_AUTOCLOSEBRACKET_LABEL="Bracket Completion" PLG_CODEMIRROR_FIELD_AUTOCLOSETAGS_DESC="Automatic tag completion." PLG_CODEMIRROR_FIELD_AUTOCLOSETAGS_LABEL="Tag Completion" PLG_CODEMIRROR_FIELD_AUTOFOCUS_DESC="Auto focus." PLG_CODEMIRROR_FIELD_AUTOFOCUS_LABEL="Auto Focus" PLG_CODEMIRROR_FIELD_CODEFOLDING_DESC="Allow blocks of code to be folded." PLG_CODEMIRROR_FIELD_CODEFOLDING_LABEL="Code Folding" PLG_CODEMIRROR_FIELD_FONT_FAMILY_DESC="The font to use in the editor. If not installed, will be loaded from http://www.google.com/webfonts." PLG_CODEMIRROR_FIELD_FONT_FAMILY_LABEL="Font" PLG_CODEMIRROR_FIELD_FONT_SIZE_DESC="The size of the font in the editor." PLG_CODEMIRROR_FIELD_FONT_SIZE_LABEL="Font Size (px)" PLG_CODEMIRROR_FIELD_FULLSCREEN_DESC="Select the function key to use to toggle fullscreen mode." PLG_CODEMIRROR_FIELD_FULLSCREEN_LABEL="Toggle Fullscreen" PLG_CODEMIRROR_FIELD_FULLSCREEN_MOD_DESC="Select any modifier keys to use with the fullscreen toggle key." PLG_CODEMIRROR_FIELD_FULLSCREEN_MOD_LABEL="Use Modifiers" PLG_CODEMIRROR_FIELD_HIGHLIGHT_MATCH_COLOR_DESC="The background colour to use for highlighting matching tags. Will be displayed at 50% opacity." PLG_CODEMIRROR_FIELD_HIGHLIGHT_MATCH_COLOR_LABEL="Matching Tag Colour" PLG_CODEMIRROR_FIELD_LINE_HEIGHT_DESC="The height of one line of text. This is in ems, meaning that 1.0 is equal to the font size and 2.0 is equal to 2x the font size." PLG_CODEMIRROR_FIELD_LINE_HEIGHT_LABEL="Line Height (em)" PLG_CODEMIRROR_FIELD_LINENUMBERS_DESC="Display line numbers." PLG_CODEMIRROR_FIELD_LINENUMBERS_LABEL="Line Numbers" PLG_CODEMIRROR_FIELD_LINEWRAPPING_DESC="Enable/Disable line wrapping." PLG_CODEMIRROR_FIELD_LINEWRAPPING_LABEL="Line Wrapping" PLG_CODEMIRROR_FIELD_MARKERGUTTER_DESC="Code Marker and Code Folding." PLG_CODEMIRROR_FIELD_MARKERGUTTER_LABEL="Gutters" PLG_CODEMIRROR_FIELD_MATCHBRACKETS_DESC="Highlight matching brackets." PLG_CODEMIRROR_FIELD_MATCHBRACKETS_LABEL="Match Brackets" PLG_CODEMIRROR_FIELD_MATCHTAGS_DESC="Highlight matching tags." PLG_CODEMIRROR_FIELD_MATCHTAGS_LABEL="Match Tags" PLG_CODEMIRROR_FIELD_THEME_DESC="Sets the colours for the editor." PLG_CODEMIRROR_FIELD_THEME_LABEL="Theme" PLG_CODEMIRROR_FIELD_VALUE_FONT_FAMILY_DEFAULT="Browser Default" PLG_CODEMIRROR_FIELD_VALUE_FULLSCREEN_MOD_ALT="Alt" PLG_CODEMIRROR_FIELD_VALUE_FULLSCREEN_MOD_CMD="Command" PLG_CODEMIRROR_FIELD_VALUE_FULLSCREEN_MOD_CTRL="Control" PLG_CODEMIRROR_FIELD_VALUE_FULLSCREEN_MOD_SHIFT="Shift" PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_DEFAULT="Default" PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_DESC="Select the scrollbar style you'd like CodeMirror to use." PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_LABEL="Scrollbar Style" PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_OVERLAY="Overlay" PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_SIMPLE="Simple" PLG_CODEMIRROR_FIELD_VALUE_THEME_DARK="Dark" PLG_CODEMIRROR_FIELD_VALUE_THEME_LIGHT="Light" PLG_CODEMIRROR_FIELD_VIM_KEYBINDING_DESC="Select this option to make CodeMirror work in Vim mode." PLG_CODEMIRROR_FIELD_VIM_KEYBINDING_LABEL="Vim Keybinding" PLG_CODEMIRROR_FIELDSET_APPEARANCE_OPTIONS_LABEL="Appearance Options" PLG_CODEMIRROR_TOGGLE_FULL_SCREEN="Press %1$s to toggle Full Screen editing." PLG_CODEMIRROR_XML_DESCRIPTION="This plugin loads the CodeMirror editor." PLG_EDITORS_CODEMIRROR="Editor - CodeMirror" PKb��\�P�i��+language/en-GB/en-GB.plg_content_finder.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTENT_FINDER="Content - Smart Search" PLG_CONTENT_FINDER_XML_DESCRIPTION="Changes to content will not update the Smart Search index if you do not enable this plugin." PLG_FINDER_QUERY_FILTER_BRANCH_P__="All" PLG_FINDER_QUERY_FILTER_BRANCH_S_TYPE="Type" PLG_FINDER_QUERY_FILTER_BRANCH_S_LANGUAGE="Language" PLG_FINDER_QUERY_FILTER_BRANCH_S_CATEGORY="Category" PLG_FINDER_QUERY_FILTER_BRANCH_P_TYPE="Types" PLG_FINDER_QUERY_FILTER_BRANCH_P_LANGUAGE="Languages" PLG_FINDER_QUERY_FILTER_BRANCH_P_CATEGORY="Categories" PKb��\y�ؓ�5language/en-GB/en-GB.plg_editors-xtd_readmore.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_EDITORS-XTD_READMORE="Button - Readmore" PLG_READMORE_XML_DESCRIPTION="Enables a button which allows you to easily insert the <em>Read more ...</em> link into an Article."PKb��\ހ����0language/en-GB/en-GB.plg_editors-xtd_article.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_ARTICLE_BUTTON_ARTICLE="Article" PLG_ARTICLE_XML_DESCRIPTION="Displays a button to make it possible to insert links to articles into an Article. Displays a popup allowing you to choose the article." PLG_EDITORS-XTD_ARTICLE="Button - Article" PKb��\V�||4language/en-GB/en-GB.plg_user_contactcreator.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTACTCREATOR_XML_DESCRIPTION="Plugin to automatically create contact information for new users." PLG_USER_CONTACTCREATOR="User - Contact Creator" PKb��\���$��2language/en-GB/en-GB.plg_captcha_recaptcha.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION="This CAPTCHA plugin uses the reCAPTCHA service to prevent spammers while it helps to digitize books, newspapers and old radio shows. To get a site and secret key for your domain, go to http://www.google.com/recaptcha. To use this for new account registration, go to Options in the User Manager and select Captcha - reCaptcha as the Captcha." PLG_CAPTCHA_RECAPTCHA="Captcha - ReCaptcha" PKb��\tb�I@@*language/en-GB/en-GB.com_templates.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_TEMPLATES="Templates" COM_TEMPLATES_XML_DESCRIPTION="This component manages templates." PKb��\�çXX-language/en-GB/en-GB.com_joomlaupdate.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_JOOMLAUPDATE="Joomla! Update" COM_JOOMLAUPDATE_XML_DESCRIPTION="One-click update to the latest Joomla release." PKb��\�@ ��#language/en-GB/en-GB.mod_status.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_STATUS="User Status" MOD_STATUS_BACKEND_USERS_0="Administrators" MOD_STATUS_BACKEND_USERS_1="Administrator" MOD_STATUS_BACKEND_USERS_MORE="Administrators" MOD_STATUS_FIELD_SHOW_LOGGEDIN_USERS_ADMIN_DESC="Show the number of users logged-in to the Backend." MOD_STATUS_FIELD_SHOW_LOGGEDIN_USERS_ADMIN_LABEL="Show Logged-in Backend Users" MOD_STATUS_FIELD_SHOW_LOGGEDIN_USERS_DESC="Show the number of users logged-in for both Frontend and Backend." MOD_STATUS_FIELD_SHOW_LOGGEDIN_USERS_LABEL="Show Logged-in Users" MOD_STATUS_FIELD_SHOW_MESSAGES_DESC="Show the messages count for the current user's inbox." MOD_STATUS_FIELD_SHOW_MESSAGES_LABEL="Show Messages" MOD_STATUS_LOG_OUT="Log out" MOD_STATUS_MESSAGES_0="%d Messages" MOD_STATUS_MESSAGES_1="%d Message" MOD_STATUS_MESSAGES_MORE="%d Messages" MOD_STATUS_USERS_0="Visitors" MOD_STATUS_USERS_1="Visitor" MOD_STATUS_USERS_MORE="Visitors" MOD_STATUS_XML_DESCRIPTION="This module shows the status of the logged-in users." PKb��\ى5%��2language/en-GB/en-GB.plg_editors-xtd_pagebreak.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_EDITORS-XTD_PAGEBREAK="Button - Page Break" PLG_EDITORSXTD_PAGEBREAK_BUTTON_PAGEBREAK="Page Break" PLG_EDITORSXTD_PAGEBREAK_XML_DESCRIPTION="Provides a button to enable a page break to be inserted into an Article. A popup allows you to configure the settings to be used." PKb��\ޟ9� 3language/en-GB/en-GB.plg_content_loadmodule.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTENT_LOADMODULE="Content - Load Modules" PLG_LOADMODULE_XML_DESCRIPTION="Within content this plugin loads Module positions, Syntax: {loadposition user1} or Modules by name, Syntax: {loadmodule mod_login}. Optionally can specify module style and for loadmodule a specific module title." PKb��\���CC)language/en-GB/en-GB.plg_user_profile.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CONTENT_CHANGE_ARTICLE="Select or Change article" COM_CONTENT_CHANGE_ARTICLE_BUTTON="Select/Change" COM_CONTENT_SELECT_AN_ARTICLE="Select an Article" PLG_USER_PROFILE="User - Profile" PLG_USER_PROFILE_ERROR_INVALID_DOB="The date of birth you entered is invalid. Please enter valid date." PLG_USER_PROFILE_FIELD_ABOUT_ME_DESC="Choose an option for the field About Me." PLG_USER_PROFILE_FIELD_ABOUT_ME_LABEL="About Me:" PLG_USER_PROFILE_FIELD_ADDRESS1_DESC="Choose an option for the field Address1." PLG_USER_PROFILE_FIELD_ADDRESS1_LABEL="Address 1:" PLG_USER_PROFILE_FIELD_ADDRESS2_DESC="Choose an option for the field Address2." PLG_USER_PROFILE_FIELD_ADDRESS2_LABEL="Address 2:" PLG_USER_PROFILE_FIELD_CITY_DESC="Choose an option for the field City." PLG_USER_PROFILE_FIELD_CITY_LABEL="City:" PLG_USER_PROFILE_FIELD_COUNTRY_DESC="Choose an option for the field Country." PLG_USER_PROFILE_FIELD_COUNTRY_LABEL="Country:" PLG_USER_PROFILE_FIELD_DOB_DESC="Choose an option for the field Date of Birth." PLG_USER_PROFILE_FIELD_DOB_LABEL="Date of Birth:" PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_DESC="Choose an option for the field Favourite Book." PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_LABEL="Favourite Book:" PLG_USER_PROFILE_FIELD_NAME_PROFILE_REQUIRE_USER="User profile fields for profile edit form" PLG_USER_PROFILE_FIELD_NAME_REGISTER_REQUIRE_USER="User profile fields for registration and administrator user forms" PLG_USER_PROFILE_FIELD_PHONE_DESC="Choose an option for the field Phone." PLG_USER_PROFILE_FIELD_PHONE_LABEL="Phone:" PLG_USER_PROFILE_FIELD_POSTAL_CODE_DESC="Choose an option for the field Postal Code." PLG_USER_PROFILE_FIELD_POSTAL_CODE_LABEL="Postal/ZIP Code:" PLG_USER_PROFILE_FIELD_REGION_DESC="Choose an option for the field Region." PLG_USER_PROFILE_FIELD_REGION_LABEL="Region:" PLG_USER_PROFILE_FIELD_TOS_ARTICLE_DESC="Select the desired Terms of Service article from the list." PLG_USER_PROFILE_FIELD_TOS_ARTICLE_LABEL="Select TOS Article:" PLG_USER_PROFILE_FIELD_TOS_DESC="Agree to terms of service." PLG_USER_PROFILE_FIELD_TOS_DESC_SITE="Please read the Terms of Service. You will not be able to register if you do not agree with them." PLG_USER_PROFILE_FIELD_TOS_LABEL="Terms of Service:" PLG_USER_PROFILE_FIELD_WEB_SITE_DESC="Choose an option for the field website." PLG_USER_PROFILE_FIELD_WEB_SITE_LABEL="Website:" PLG_USER_PROFILE_FILL_FIELD_DESC_SITE="If required, please fill this field." PLG_USER_PROFILE_OPTION_AGREE="Agree" PLG_USER_PROFILE_SLIDER_LABEL="User Profile" PLG_USER_PROFILE_SPACER_DOB="The date of birth entered should use the format Year-Month-Day, ie 0000-00-00" PLG_USER_PROFILE_XML_DESCRIPTION="User Profile Plugin" PKb��\w��'language/en-GB/en-GB.mod_custom.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_CUSTOM="Custom HTML" MOD_CUSTOM_XML_DESCRIPTION="This module allows you to create your own HTML Module using a WYSIWYG editor." MOD_CUSTOM_LAYOUT_DEFAULT="Default" PKb��\ -0303&language/en-GB/en-GB.com_languages.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_LANGUAGES="Languages" COM_LANGUAGES_CONFIGURATION="Languages: Options" COM_LANGUAGES_ERR_DELETE="Select a language to delete" COM_LANGUAGES_ERR_NO_LANGUAGE_SELECTED="No language selected." COM_LANGUAGES_ERROR_LANG_TAG="<br />The Language Tag should contain 2 or 3 lowercase letters corresponding to the ISO language, a dash and 2 uppercase letters corresponding to the ISO country code. <br />This should be the exact prefix used for the language installed or to be installed. Example: en-GB, srp-ME." COM_LANGUAGES_ERR_PUBLISH="Select a language to publish." COM_LANGUAGES_FIELD_DESCRIPTION_DESC="Enter a description for the language." COM_LANGUAGES_FIELD_IMAGE_DESC="Prefix of the image file for this language when using the "Use image flags" Language Switcher basic option. Example: if 'en' is chosen, then the image will be en.gif. Images and CSS for this module are in media/mod_languages/." COM_LANGUAGES_FIELD_IMAGE_LABEL="Image Prefix" COM_LANGUAGES_FIELD_LANG_TAG_DESC="Enter the language tag – example: en-GB for English (UK). This should be the exact prefix used for the language installed or to be installed." COM_LANGUAGES_FIELD_LANG_TAG_LABEL="Language Tag" COM_LANGUAGES_INSTALL="Install Language" COM_LANGUAGES_OVERRIDE_ERROR_RESERVED_WORDS="YES, NO, NULL, FALSE, ON, OFF, NONE, TRUE are reserved words and can't be used as language constants." COM_LANGUAGES_OVERRIDE_FIELD_BOTH_LABEL="For both locations" COM_LANGUAGES_OVERRIDE_FIELD_BOTH_DESC="If this box is checked the override will be stored for both administrator (Backend) and site (Frontend). This is essential for creating language overrides for some plugins because their language files, while stored in backend, are also used in frontend (example: plg_content_vote).<br />Please note that the two overrides will be completely independent from each other after storing them." COM_LANGUAGES_OVERRIDE_FIELD_CLIENT_LABEL="Location" COM_LANGUAGES_OVERRIDE_FIELD_CLIENT_DESC="Indicates whether the override is created for the site (Frontend) or Administrator (Backend) client." COM_LANGUAGES_OVERRIDE_FIELD_FILE_LABEL="File" COM_LANGUAGES_OVERRIDE_FIELD_FILE_DESC="Language overrides are stored in a specific INI file (as it's the case for the original texts, too). Here you can see in which file the current override is stored." COM_LANGUAGES_OVERRIDE_FIELD_LANGUAGE_LABEL="Language" COM_LANGUAGES_OVERRIDE_FIELD_LANGUAGE_DESC="Language for which the constant is overridden." COM_LANGUAGES_OVERRIDE_FIELD_KEY_LABEL="Language Constant" COM_LANGUAGES_OVERRIDE_FIELD_KEY_DESC="The language constant of the string you want to override.<br />All text on your site is identified by a specific language constant which you have to use for creating an override of the text.<br />If you don't know the corresponding constant you can search for text you want to change on the right. By selecting the desired result the correct constant will automatically be inserted into the form." COM_LANGUAGES_OVERRIDE_FIELD_OVERRIDE_LABEL="Text" COM_LANGUAGES_OVERRIDE_FIELD_OVERRIDE_DESC="Enter the text that you want to be displayed instead of the original one.<br /><strong>Please note</strong> that there may be placeholders (eg %s, %d or %1$s) in the text which could be important (they will be replaced by other texts before displaying), so you should leave them in there." COM_LANGUAGES_OVERRIDE_FIELD_SEARCHSTRING_LABEL="Search Text" COM_LANGUAGES_OVERRIDE_FIELD_SEARCHSTRING_DESC="Please enter the text to search for here. It may be in any of the language files." COM_LANGUAGES_OVERRIDE_FIELD_SEARCHTYPE_LABEL="Search For" COM_LANGUAGES_OVERRIDE_FIELD_SEARCHTYPE_DESC="Select whether you want to search for constant names or the values (the actual text)." COM_LANGUAGES_OVERRIDE_FIELD_SEARCHTYPE_CONSTANT="Constant" COM_LANGUAGES_OVERRIDE_FIELD_SEARCHTYPE_TEXT="Value" COM_LANGUAGES_FIELD_PUBLISHED_DESC="Whether this content language is published or not. If published, it will display as a choice in the Language Switcher module in Frontend." COM_LANGUAGES_FIELD_LANG_CODE_DESC="This Language Code will be appended to the site URL. When SEF is enabled, you will get http://example.com/en/. If SEF is disabled the suffix &lang=en will be appended at the end of the URL. Note <em>the Language Code must be unique among all the languages</em>." COM_LANGUAGES_FIELD_LANG_CODE_LABEL="URL Language Code" COM_LANGUAGES_FIELD_SITE_NAME_DESC="Enter a custom site name for this content language. If the site name is set to display, this custom site name will be used instead of the Global Configuration setting." COM_LANGUAGES_FIELD_SITE_NAME_LABEL="Custom Site Name" COM_LANGUAGES_FIELDSET_SITE_NAME_LABEL="Site Name" COM_LANGUAGES_FIELD_TITLE_DESC="The name of the language as it will appear in the lists." COM_LANGUAGES_FIELD_TITLE_NATIVE_DESC="Title in native language." COM_LANGUAGES_FIELD_TITLE_NATIVE_LABEL="Title Native" COM_LANGUAGES_FILTER_CLIENT_LABEL="Filter Location:" COM_LANGUAGES_FTP_DESC="For setting Languages as default, Joomla will most likely need your FTP account details. Please enter them in the form fields below." COM_LANGUAGES_FTP_TITLE="FTP Login Details" COM_LANGUAGES_HEADING_AUTHOR_EMAIL="Author Email" COM_LANGUAGES_HEADING_DEFAULT="Default" COM_LANGUAGES_HEADING_LANG_IMAGE="Image Prefix" COM_LANGUAGES_HEADING_LANGUAGE="Language" COM_LANGUAGES_HEADING_TITLE_NATIVE="Native Title" COM_LANGUAGES_HOMEPAGE="Home" COM_LANGUAGES_MSG_DEFAULT_LANGUAGE_SAVED="Default Language Saved. This does not affect users that have chosen a specific language on their profile or on the login page.<br /><strong class="_QQ_"red"_QQ_">Warning!</strong> When using the multilingual functionality (ie when the plugin System - Languagefilter is enabled) the Site Default Language has to also be a published Content language." COM_LANGUAGES_MULTILANGSTATUS_CONTACTS_ERROR="Some of the contacts linked to the user <strong>%s</strong> are incorrect." COM_LANGUAGES_MULTILANGSTATUS_CONTACTS_ERROR_TIP="Warning! A user/author should have only one contact to which is assigned language 'All' OR one contact for each published Content Language." COM_LANGUAGES_MULTILANGSTATUS_CONTENT_LANGUAGE_PUBLISHED="Published Content Languages" COM_LANGUAGES_MULTILANGSTATUS_ERROR_CONTENT_LANGUAGE="A Default Home page is assigned to the <strong>%s</strong> Content Language although a Site Language for this Content Language is not installed or published AND/OR the Content Language is not published." COM_LANGUAGES_MULTILANGSTATUS_ERROR_LANGUAGE_TAG="The Content Language tag <strong>%s</strong> does not match the Site Language tag. Check that the Site Language is installed and published and the correct language tag is used for the Content Language. Example: for English(UK) both tags should be 'en-GB'." COM_LANGUAGES_MULTILANGSTATUS_HOMES_MISSING="This site is set as a multilingual site. One or more of the Default Home pages for the published Content languages are missing although the Language Filter plugin is enabled OR/AND one or more Language Switcher modules are published." COM_LANGUAGES_MULTILANGSTATUS_HOMES_PUBLISHED="Published Default Home pages" COM_LANGUAGES_MULTILANGSTATUS_HOMES_PUBLISHED_ALL="1 assigned to language 'All'." COM_LANGUAGES_MULTILANGSTATUS_HOMES_PUBLISHED_INCLUDING_ALL="Published Default Home pages (including 1 assigned to language "All")." COM_LANGUAGES_MULTILANGSTATUS_LANGSWITCHER_PUBLISHED="Published Language Switcher Modules." COM_LANGUAGES_MULTILANGSTATUS_LANGSWITCHER_UNPUBLISHED="This site is set as a multilingual site, at least one Language Switcher module set to language "All" has to be published. Disregard this message if you do not use a language switcher module but direct links." COM_LANGUAGES_MULTILANGSTATUS_LANGUAGEFILTER="Language Filter Plugin" COM_LANGUAGES_MULTILANGSTATUS_LANGUAGEFILTER_DISABLED="This site is set as a multilingual site. The Language Filter plugin is not enabled although one or more Language Switcher modules OR/AND one or more specific Content language Default Home pages are published." COM_LANGUAGES_MULTILANGSTATUS_NONE="This site is not set as a multilingual site." COM_LANGUAGES_MULTILANGSTATUS_SITE_LANG_PUBLISHED="Published Site Languages" COM_LANGUAGES_MULTILANGSTATUS_USELESS_HOMES="This site is not set as a multilingual site.<br /><strong>Note</strong>: at least one Default Home page is assigned to a Content Language. This will not break a monolingual site but is useless." COM_LANGUAGES_N_ITEMS_DELETED="%d Content Languages successfully deleted." COM_LANGUAGES_N_ITEMS_DELETED_1="%d Content Language successfully deleted." COM_LANGUAGES_N_ITEMS_PUBLISHED="%d Content Languages successfully published." COM_LANGUAGES_N_ITEMS_PUBLISHED_1="%d Content Language successfully published." COM_LANGUAGES_N_ITEMS_TRASHED="%d Content Languages successfully trashed." COM_LANGUAGES_N_ITEMS_TRASHED_1="%d Content Language successfully trashed." COM_LANGUAGES_N_ITEMS_UNPUBLISHED="%d Content Languages successfully unpublished. <br /><strong class="_QQ_"red"_QQ_">Warning!</strong> When using the multilingual functionality (ie when the plugin System - Languagefilter is enabled) the Site Default Language has to also be a published Content language." COM_LANGUAGES_N_ITEMS_UNPUBLISHED_1="%d Content Language successfully unpublished. <br /><strong class="_QQ_"red"_QQ_">Warning!</strong> When using the multilingual functionality (ie when the plugin System - Languagefilter is enabled) the Site Default Language has to also be a published Content language." COM_LANGUAGES_NO_ITEM_SELECTED="No languages selected." COM_LANGUAGES_SAVE_SUCCESS="Content Language successfully saved." COM_LANGUAGES_SEARCH_IN_TITLE="Search in title" COM_LANGUAGES_SUBMENU_CONTENT="Content Languages" COM_LANGUAGES_SUBMENU_INSTALLED_ADMINISTRATOR="Installed - Administrator" COM_LANGUAGES_SUBMENU_INSTALLED_SITE="Installed - Site" COM_LANGUAGES_SUBMENU_OVERRIDES="Overrides" COM_LANGUAGES_VIEW_INSTALLED_TITLE="Languages: Installed" COM_LANGUAGES_VIEW_LANGUAGE_EDIT_EDIT_TITLE="Languages: Edit Content Language" COM_LANGUAGES_VIEW_LANGUAGE_EDIT_NEW_TITLE="Languages: New Content Language" COM_LANGUAGES_VIEW_LANGUAGES_TITLE="Languages: Content" COM_LANGUAGES_VIEW_OVERRIDE_CLIENT_SITE="Site" COM_LANGUAGES_VIEW_OVERRIDE_CLIENT_ADMINISTRATOR="Administrator" COM_LANGUAGES_VIEW_OVERRIDE_EDIT_TITLE="Languages: Edit Override" COM_LANGUAGES_VIEW_OVERRIDE_EDIT_NEW_OVERRIDE_LEGEND="Create a New Override" COM_LANGUAGES_VIEW_OVERRIDE_EDIT_EDIT_OVERRIDE_LEGEND="Edit this Override" COM_LANGUAGES_VIEW_OVERRIDE_LANGUAGE="%1$s [%2$s]" COM_LANGUAGES_VIEW_OVERRIDE_MORE_RESULTS="More Results" COM_LANGUAGES_VIEW_OVERRIDE_NO_RESULTS="No matching texts found." COM_LANGUAGES_VIEW_OVERRIDE_REFRESHING="Please wait while the cache is recreated." COM_LANGUAGES_VIEW_OVERRIDE_REQUEST_ERROR="Error while performing an Ajax request." COM_LANGUAGES_VIEW_OVERRIDE_RESULTS_LEGEND="Search Results" COM_LANGUAGES_VIEW_OVERRIDE_SAVE_SUCCESS="Language Override was saved successfully." COM_LANGUAGES_VIEW_OVERRIDE_SEARCH_BUTTON="Search" COM_LANGUAGES_VIEW_OVERRIDE_SEARCH_LEGEND="Search text you want to change." COM_LANGUAGES_VIEW_OVERRIDE_SEARCH_TIP="A language string is composed of two parts: a specific language constant and its value.<br />For example, in the string: COM_CONTENT_READ_MORE="Read more: "<br />'<u>COM_CONTENT_READ_MORE</u>' is the constant and '<u>Read more: </u>' is the value.<br />You have to use the specific language constant in order to create an override of the value.<br />Therefore, you can search for the constant or the value you want to change with the search field below.<br />By selecting the desired result the correct constant will automatically be inserted into the form." COM_LANGUAGES_VIEW_OVERRIDES_FILTER_SEARCH_DESC="Search constant or text." COM_LANGUAGES_VIEW_OVERRIDES_KEY="Constant" COM_LANGUAGES_VIEW_OVERRIDES_LANGUAGES_BOX_ITEM="%1$s - %2$s" COM_LANGUAGES_VIEW_OVERRIDES_N_ITEMS_DELETED="%d language overrides were successfully deleted." COM_LANGUAGES_VIEW_OVERRIDES_N_ITEMS_DELETED_1="%d language override was successfully deleted." COM_LANGUAGES_VIEW_OVERRIDES_NO_ITEM_SELECTED="You haven't selected any overrides." COM_LANGUAGES_VIEW_OVERRIDES_TEXT="Text" COM_LANGUAGES_VIEW_OVERRIDES_TITLE="Languages: Overrides" COM_LANGUAGES_XML_DESCRIPTION="Component for language management" JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings." PKb��\f�Y_��.language/en-GB/en-GB.plg_system_logout.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SYSTEM_LOGOUT_XML_DESCRIPTION="The system logout plugin enables Joomla to redirect the user to the home page if he chooses to logout while he is on a protected access page." PLG_SYSTEM_LOGOUT="System - Logout" PKb��\�&O��3language/en-GB/en-GB.plg_content_emailcloak.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTENT_EMAILCLOAK="Content - Email Cloaking" PLG_CONTENT_EMAILCLOAK_XML_DESCRIPTION="Cloaks all email addresses in content from spambots using JavaScript."PKb��\d+�;;'language/en-GB/en-GB.com_mailto.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_MAILTO="Mail to" COM_MAILTO_XML_DESCRIPTION="A generic mail to friend component." PKb��\T��]��-language/en-GB/en-GB.plg_finder_newsfeeds.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_FINDER_NEWSFEEDS="Smart Search - News Feeds" PLG_FINDER_NEWSFEEDS_XML_DESCRIPTION="This plugin indexes Joomla! News feeds." PLG_FINDER_QUERY_FILTER_BRANCH_P_NEWS_FEED="News feeds" PLG_FINDER_QUERY_FILTER_BRANCH_S_NEWS_FEED="News feed" PKb��\!�80bb2language/en-GB/en-GB.plg_search_categories.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SEARCH_CATEGORIES="Search - Categories" PLG_SEARCH_CATEGORIES_XML_DESCRIPTION="Enables searching of Category information."PKb��\~���/language/en-GB/en-GB.plg_twofactorauth_totp.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_TWOFACTORAUTH_TOTP="Two Factor Authentication - Google Authenticator" PLG_TWOFACTORAUTH_TOTP_ERR_VALIDATIONFAILED="You did not enter a valid security code. Please check your Google Authenticator setup and make sure that the time on your device matches the time on the site." PLG_TWOFACTORAUTH_TOTP_INTRO="This feature allows you to use Google Authenticator, or a compatible application, for two factor authentication. In addition to your username and password you will also need to provide a six digit security code generated by Google Authenticator to be able to login to this site. The security code is rotated every 30 seconds. This provides extra protection against hackers logging in to your account even if they were able to get hold of your password." PLG_TWOFACTORAUTH_TOTP_METHOD_TITLE="Google Authenticator" PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_TITLE="Two Factor Authentication is Available" PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_BODY="Joomla! comes with a built-in two factor authentication system. It secures your site login with a secondary secret code that's changing every 30 seconds. You can use your mobile device and the <a href="_QQ_"http://en.wikipedia.org/wiki/Google_Authenticator"_QQ_" target="_QQ_"_blank"_QQ_">Google Authenticator</a> app to produce that code.<br />By selecting the button below:<ul><li>Joomla! will enable the two factor authentication plugins</li><li>Two Factor Authentication is going to be available for all users.</li><li>Each user can configure Two Factor Authentication in User Details.</li><li>You can always disable Two Factor Authentication plugin, or configure it for Backend usage only.</li><li>You will be taken to your user profile page where you can find more information on two factor authentication and enable it for your user account.</li></ul>" PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_ACTION="Enable two factor authentication" PLG_TWOFACTORAUTH_TOTP_SECTION_ADMIN="Administrator (Backend)" PLG_TWOFACTORAUTH_TOTP_SECTION_BOTH="Both" PLG_TWOFACTORAUTH_TOTP_SECTION_DESC="In which sections of your site do you want to enable two factor authentication?" PLG_TWOFACTORAUTH_TOTP_SECTION_LABEL="Site Section" PLG_TWOFACTORAUTH_TOTP_SECTION_SITE="Site (Frontend)" PLG_TWOFACTORAUTH_TOTP_STEP1_HEAD="Step 1 - Get Google Authenticator" PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM1="Official Google Authenticator app for Android, iOS and BlackBerry" ; Check the URL and change the part hl=en to your language tag if this is available (example hl=de; hl=zh-cn; hl=zh-tw) PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM1_LINK="http://support.google.com/accounts/bin/answer.py?hl=en&answer=1066447" PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM2="Compatible clients for other devices and operating system (listed in Wikipedia)." ; Change and check this link if there is a translation in your language available. (current: German, Spanish, French, Japanese, Polish) PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM2_LINK="http://en.wikipedia.org/wiki/Google_Authenticator#Implementation" PLG_TWOFACTORAUTH_TOTP_STEP1_TEXT="Download and install Google Authenticator, or a compatible application, on your smartphone or desktop. Use one of the following:" PLG_TWOFACTORAUTH_TOTP_STEP1_WARN="Please remember to sync your device's clock with a time-server. Time drift in your device may cause an inability to log in to your site." PLG_TWOFACTORAUTH_TOTP_STEP2_ACCOUNT="Account" PLG_TWOFACTORAUTH_TOTP_STEP2_ALTTEXT="Alternatively, you can scan the following QR code in Google Authenticator." PLG_TWOFACTORAUTH_TOTP_STEP2_HEAD="Step 2 - Set up" PLG_TWOFACTORAUTH_TOTP_STEP2_KEY="Key" PLG_TWOFACTORAUTH_TOTP_STEP2_RESET="If you want to change the key, disable the two factor authentication. When you try enabling it again it will generate a new key." PLG_TWOFACTORAUTH_TOTP_STEP2_TEXT="You will need to enter the following information to Google Authenticator or a compatible app." PLG_TWOFACTORAUTH_TOTP_STEP3_HEAD="Step 3 - Activate Two Factor Authentication" PLG_TWOFACTORAUTH_TOTP_STEP3_SECURITYCODE="Security Code" PLG_TWOFACTORAUTH_TOTP_STEP3_TEXT="In order to verify that everything is set up properly, please enter the security code displayed in Google Authenticator in the field below and select the button. If the code is correct, the Two Factor Authentication feature will be enabled." PLG_TWOFACTORAUTH_TOTP_XML_DESCRIPTION="Allows users on your site to use two factor authentication using Google Authenticator or other compatible time-based One Time Password generators. To use two factor authentication please edit the user profile and enable two factor authentication." PKb��\#%�+aa-language/en-GB/en-GB.plg_system_highlight.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SYSTEM_HIGHLIGHT="System - Highlight" PLG_SYSTEM_HIGHLIGHT_XML_DESCRIPTION="System plugin to highlight specified terms." PKb��\s0�55'language/en-GB/en-GB.com_cpanel.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CPANEL="Control Panel" COM_CPANEL_XML_DESCRIPTION="Control Panel component." PKb��\��m��(language/en-GB/en-GB.com_contact.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_CONTACT="Contacts" COM_CONTACT_CATEGORIES="Categories" COM_CONTACT_CATEGORIES_VIEW_DEFAULT_DESC="Shows a list of contact categories within a category." COM_CONTACT_CATEGORIES_VIEW_DEFAULT_OPTION="Default" COM_CONTACT_CATEGORIES_VIEW_DEFAULT_TITLE="List All Contact Categories" COM_CONTACT_CATEGORY_ADD_TITLE="Contacts: New Category" COM_CONTACT_CATEGORY_EDIT_TITLE="Contacts: Edit Category" COM_CONTACT_CATEGORY_VIEW_DEFAULT_DESC="This view lists the contacts in a category." COM_CONTACT_CATEGORY_VIEW_DEFAULT_OPTION="Default" COM_CONTACT_CATEGORY_VIEW_DEFAULT_TITLE="List Contacts in a Category" COM_CONTACT_CONTACT_VIEW_DEFAULT_DESC="This links to the contact information for one contact." COM_CONTACT_CONTACT_VIEW_DEFAULT_OPTION="Default" COM_CONTACT_CONTACT_VIEW_DEFAULT_TITLE="Single Contact" COM_CONTACT_CONTENT_TYPE_CONTACT="Contact" COM_CONTACT_CONTENT_TYPE_CATEGORY="Contact Category" COM_CONTACT_FEATURED_VIEW_DEFAULT_DESC="This view lists the featured contacts." COM_CONTACT_FEATURED_VIEW_DEFAULT_OPTION="Default" COM_CONTACT_FEATURED_VIEW_DEFAULT_TITLE="Featured Contacts" COM_CONTACT_CONTACTS="Contacts" COM_CONTACT_XML_DESCRIPTION="This component shows a listing of Contact Information." PKb��\�n���&language/en-GB/en-GB.com_users.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_USERS_CONTENT_TYPE_USER="User" COM_USERS_CONTENT_TYPE_NOTE="User Notes" COM_USERS_CONTENT_TYPE_CATEGORY="User Notes Category" COM_USER_LOGIN_VIEW_DEFAULT_DESC="Displays a login form." COM_USER_LOGIN_VIEW_DEFAULT_OPTION="Login Form" COM_USER_LOGIN_VIEW_DEFAULT_TITLE="Login Form" COM_USER_PROFILE_EDIT_DEFAULT_DESC="Edit a user profile." COM_USER_PROFILE_EDIT_DEFAULT_OPTION="Edit User Profile" COM_USER_PROFILE_EDIT_DEFAULT_TITLE="Edit User Profile" COM_USER_PROFILE_VIEW_DEFAULT_DESC="Displays a user profile." COM_USER_PROFILE_VIEW_DEFAULT_OPTION="User Profile" COM_USER_PROFILE_VIEW_DEFAULT_TITLE="User Profile" COM_USER_REGISTRATION_VIEW_DEFAULT_DESC="Displays a registration form." COM_USER_REGISTRATION_VIEW_DEFAULT_OPTION="Default" COM_USER_REGISTRATION_VIEW_DEFAULT_TITLE="Registration Form" COM_USER_REMIND_VIEW_DEFAULT_DESC="Displays a username reminder request." COM_USER_REMIND_VIEW_DEFAULT_OPTION="Default" COM_USER_REMIND_VIEW_DEFAULT_TITLE="Username Reminder Request" COM_USER_RESET_VIEW_DEFAULT_DESC="Displays a request to reset password." COM_USER_RESET_VIEW_DEFAULT_OPTION="Default" COM_USER_RESET_VIEW_DEFAULT_TITLE="Password Reset" COM_USERS="Users" COM_USERS_XML_DESCRIPTION="Component for managing users." PKb��\\7EE)language/en-GB/en-GB.plg_editors_none.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_EDITORS_NONE="Editor - None" PLG_NONE_XML_DESCRIPTION="This loads a basic text entry field." PKb��\Z�G�]]0language/en-GB/en-GB.plg_search_contacts.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SEARCH_CONTACTS="Search - Contacts" PLG_SEARCH_CONTACTS_XML_DESCRIPTION="Enables searching of the Contact Component."PKb��\3-HE��6language/en-GB/en-GB.plg_quickicon_extensionupdate.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_QUICKICON_EXTENSIONUPDATE="Quick Icon - Joomla! Extensions Updates Notification" PLG_QUICKICON_EXTENSIONUPDATE_CHECKING="Checking extensions ..." PLG_QUICKICON_EXTENSIONUPDATE_ERROR="Unknown extensions ..." PLG_QUICKICON_EXTENSIONUPDATE_GROUP_DESC="The group of this plugin (this value is compared with the group value used in <strong>Quick Icons</strong> modules to inject icons)." PLG_QUICKICON_EXTENSIONUPDATE_GROUP_LABEL="Group" PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND="Updates are available! <span class='label label-important'>%s</span>" PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND_BUTTON="View Updates" PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND_MESSAGE="<span class='label label-important'>%s</span> Extension Update(s) are available:" PLG_QUICKICON_EXTENSIONUPDATE_UPTODATE="All extensions are up-to-date." PLG_QUICKICON_EXTENSIONUPDATE_XML_DESCRIPTION="Checks for updates of your installed third-party extensions and notifies you when you visit the Control Panel page." PKb��\A�Y���2language/en-GB/en-GB.plg_authentication_cookie.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_AUTH_COOKIE_ERROR_LOG_INVALIDATED_COOKIES="The authentication tokens were invalidated for user %u because there was no matching record." PLG_AUTH_COOKIE_ERROR_LOG_LOGIN_FAILED="Cookie login failed for user %u." PLG_AUTH_COOKIE_FIELD_COOKIE_LIFETIME_DESC="The number of days until the authentication cookie will expire. Other factors may cause it to expire before this. Longer lengths are less secure." PLG_AUTH_COOKIE_FIELD_COOKIE_LIFETIME_LABEL="Cookie Lifetime" PLG_AUTH_COOKIE_FIELD_KEY_LENGTH_DESC="The length of the key to use to encrypt the cookie. Longer lengths are more secure, but they will slow performance." PLG_AUTH_COOKIE_FIELD_KEY_LENGTH_LABEL="Key Length" PLG_AUTH_COOKIE_XML_DESCRIPTION="Handles Joomla's cookie User authentication.<br /><strong> Warning! You must have at least one other authentication plugin enabled.</strong> <br />You will also need a plugin such as the System - Remember Me plugin to implement cookie login." PLG_AUTHENTICATION_COOKIE="Authentication - Cookie" PKb��\ �X8*language/en-GB/en-GB.plg_system_logout.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SYSTEM_LOGOUT_XML_DESCRIPTION="The system logout plugin enables Joomla to redirect the user to the home page if he chooses to logout while he is on a protected access page." PLG_SYSTEM_LOGOUT="System - Logout" PLG_SYSTEM_LOGOUT_REDIRECT="You have been redirected to the home page following logout." PKb��\�I��,language/en-GB/en-GB.plg_search_weblinks.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SEARCH_WEBLINKS="Search - Web Links" PLG_SEARCH_WEBLINKS_FIELD_SEARCHLIMIT_DESC="Number of search items to return." PLG_SEARCH_WEBLINKS_FIELD_SEARCHLIMIT_LABEL="Search Limit" PLG_SEARCH_WEBLINKS_WEBLINKS="Web Links" PLG_SEARCH_WEBLINKS_XML_DESCRIPTION="Enables searching of Web Links Component." PKb��\�7��\\&language/en-GB/en-GB.com_admin.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_ADMIN="Administrator - System Information" COM_ADMIN_XML_DESCRIPTION="Administration system information component." PKb��\��]]0language/en-GB/en-GB.plg_search_weblinks.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SEARCH_WEBLINKS="Search - Web Links" PLG_SEARCH_WEBLINKS_XML_DESCRIPTION="Enables searching of Web Links Component." PKb��\Wr_��%�%&language/en-GB/en-GB.com_newsfeeds.ininu�[���; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; Joomla! Project ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_NEWSFEEDS="News Feeds" ; COM_NEWSFEEDS_BATCH_MENU_LABEL is deprecated, use JLIB_HTML_BATCH_MENU_LABEL instead. COM_NEWSFEEDS_BATCH_MENU_LABEL="To Move or Copy your selection please select a Category." COM_NEWSFEEDS_BATCH_OPTIONS="Batch process the selected news feeds" COM_NEWSFEEDS_BATCH_TIP="If a category is selected for move/copy, any actions selected will be applied to the copied or moved news feeds. Otherwise, all actions are applied to the selected news feeds." COM_NEWSFEEDS_CACHE_TIME_HEADING="Cache Time" COM_NEWSFEEDS_CATEGORIES_DESC="These settings apply for News Feeds Categories Options unless they are changed for a specific menu item." COM_NEWSFEEDS_CHANGE_FEED_BUTTON="Select Feed" COM_NEWSFEEDS_CONFIGURATION="News Feed: Options" COM_NEWSFEEDS_EDIT_NEWSFEED="Edit News Feed" COM_NEWSFEEDS_ERROR_UNIQUE_ALIAS="Another News feed from this category has the same alias (remember it may be a trashed item)." COM_NEWSFEEDS_ERROR_ALL_LANGUAGE_ASSOCIATED="A news feed item set to All languages can't be associated. Associations have not been set." COM_NEWSFEEDS_FEED_CATEGORY_OPTIONS_LABEL="Feeds Category Display Options" COM_NEWSFEEDS_FIELD_CACHETIME_DESC="The number of minutes before the news feed cache is refreshed." COM_NEWSFEEDS_FIELD_CACHETIME_LABEL="Cache Time" COM_NEWSFEEDS_FIELD_CATEGORIES_OPTIONS_LABEL="Feeds Categories Display Options" COM_NEWSFEEDS_FIELD_CATEGORY_DESC="The category that this feed is assigned to." COM_NEWSFEEDS_FIELD_CHARACTER_COUNT_DESC="Number of characters to display per feed." COM_NEWSFEEDS_FIELD_CHARACTER_COUNT_LABEL="Characters Count" COM_NEWSFEEDS_FIELD_CHARACTERS_COUNT_DESC="Number of characters to include in the feed." COM_NEWSFEEDS_FIELD_CHARACTERS_COUNT_LABEL="Characters Count" COM_NEWSFEEDS_FIELD_CONFIG_CATEGORY_SETTINGS_DESC="These settings apply for News Feeds Category Options unless they are changed for a specific menu item." COM_NEWSFEEDS_FIELD_CONFIG_LIST_SETTINGS_DESC="These settings apply for List Layout Options unless they are changed for a specific menu item." COM_NEWSFEEDS_FIELD_CONFIG_NEWSFEED_SETTINGS_DESC="These settings apply for single news feeds unless they are changed for a specific menu item or news feed." COM_NEWSFEEDS_FIELD_CONFIG_NEWSFEED_SETTINGS_LABEL="News Feed" COM_NEWSFEEDS_FIELD_DESCRIPTION_DESC="Enter a description for the feed." COM_NEWSFEEDS_FIELD_FEED_DISPLAY_ORDER_DESC="The order used to display the feed." COM_NEWSFEEDS_FIELD_FEED_DISPLAY_ORDER_LABEL="Feed Display Order" COM_NEWSFEEDS_FIELD_FEED_OPTIONS_DESC="Feeds display options." COM_NEWSFEEDS_FIELD_FEED_OPTIONS_LABEL="Feeds Display Options" COM_NEWSFEEDS_FIELD_FIRST_DESC="Select or upload the image to be displayed." COM_NEWSFEEDS_FIELD_FIRST_LABEL="First Image" COM_NEWSFEEDS_FIELD_IMAGE_ALT_DESC="Alternative text used for visitors without access to images. Replaced with caption text if it is present." COM_NEWSFEEDS_FIELD_IMAGE_ALT_LABEL="Alt Text" COM_NEWSFEEDS_FIELD_IMAGE_CAPTION_DESC="Caption attached to the image." COM_NEWSFEEDS_FIELD_IMAGE_CAPTION_LABEL="Caption" COM_NEWSFEEDS_FIELD_LANGUAGE_DESC="Assign a language to this news feed." COM_NEWSFEEDS_FIELD_LINK_DESC="Link to the news feed. IDN (International) Links are converted to punycode when they are saved." COM_NEWSFEEDS_FIELD_LINK_LABEL="Link" COM_NEWSFEEDS_FIELD_MODIFIED_DESC="The date and time the news feed was last modified." COM_NEWSFEEDS_FIELD_NUM_ARTICLES_COLUMN_DESC="Show or hide the Number of Articles in each Feed (You can set this value in each News feed)." COM_NEWSFEEDS_FIELD_NUM_ARTICLES_COLUMN_LABEL="# Articles" COM_NEWSFEEDS_FIELD_NUM_ARTICLES_DESC="Number of articles from the feed to display." COM_NEWSFEEDS_FIELD_NUM_ARTICLES_LABEL="Number of Articles" COM_NEWSFEEDS_FIELD_NUMBER_ITEMS_LIST_DESC="Default number of feeds to list on a page." COM_NEWSFEEDS_FIELD_NUMBER_ITEMS_LIST_LABEL="# Feeds to List" COM_NEWSFEEDS_FIELD_NUMFEEDS_DESC="Number of feeds to display." COM_NEWSFEEDS_FIELD_NUMFEEDS_LABEL="Number of Feeds" COM_NEWSFEEDS_FIELD_OPTIONS="Feed" COM_NEWSFEEDS_FIELD_RTL_DESC="Select the language direction of the feed." COM_NEWSFEEDS_FIELD_RTL_LABEL="Language Direction" COM_NEWSFEEDS_FIELD_SECOND_DESC="Select or upload the second image to be displayed." COM_NEWSFEEDS_FIELD_SECOND_LABEL="Second Image" COM_NEWSFEEDS_FIELD_SELECT_CATEGORY_DESC="Choose a feed category to display." COM_NEWSFEEDS_FIELD_SELECT_FEED_DESC="Select a feed to display." COM_NEWSFEEDS_FIELD_SELECT_FEED_LABEL="Feed" COM_NEWSFEEDS_FIELD_SHOW_CAT_ITEMS_DESC="Show or hide the number of news feeds in category." COM_NEWSFEEDS_FIELD_SHOW_CAT_ITEMS_LABEL="# Feeds in Category" COM_NEWSFEEDS_FIELD_SHOW_CAT_TAGS_DESC="Show the tags for a category." COM_NEWSFEEDS_FIELD_SHOW_CAT_TAGS_LABEL="Show Tags" COM_NEWSFEEDS_FIELD_SHOW_FEED_DESCRIPTION_DESC="Show or hide feed description." COM_NEWSFEEDS_FIELD_SHOW_FEED_DESCRIPTION_LABEL="Feed Description" COM_NEWSFEEDS_FIELD_SHOW_FEED_IMAGE_DESC="Show or hide feed images." COM_NEWSFEEDS_FIELD_SHOW_FEED_IMAGE_LABEL="Feed Image" COM_NEWSFEEDS_FIELD_SHOW_ITEM_DESCRIPTION_DESC="Show or hide feed content." COM_NEWSFEEDS_FIELD_SHOW_ITEM_DESCRIPTION_LABEL="Feed Content" COM_NEWSFEEDS_FIELD_SHOW_LINKS_DESC="Show or hide feed links URL." COM_NEWSFEEDS_FIELD_SHOW_LINKS_LABEL="Feed Links" COM_NEWSFEEDS_FIELD_SHOW_TAGS_DESC="Show the tags for a news feed." COM_NEWSFEEDS_FIELD_SHOW_TAGS_LABEL="Show Tags" COM_NEWSFEEDS_FIELD_VALUE_LTR="Left to Right Direction" COM_NEWSFEEDS_FIELD_VALUE_NONE="None" COM_NEWSFEEDS_FIELD_VALUE_RTL="Right to Left Direction" COM_NEWSFEEDS_FIELD_VALUE_SITE="Site Language Direction" COM_NEWSFEEDS_FIELD_VERSION_LABEL="Revision" COM_NEWSFEEDS_FIELD_VERSION_DESC="A count of the number of times this news feed has been revised." COM_NEWSFEEDS_FIELDSET_IMAGES="Images" COM_NEWSFEEDS_FIELDSET_MORE_OPTIONS_LABEL="Feed Display Options" COM_NEWSFEEDS_FILTER_SEARCH_DESC="Enter a news feed title to search." COM_NEWSFEEDS_FLOAT_DESC="Controls placement of the image." COM_NEWSFEEDS_FLOAT_LABEL="Image Float" COM_NEWSFEEDS_HEADING_ASSOCIATION="Association" COM_NEWSFEEDS_ITEM_ASSOCIATIONS_FIELDSET_LABEL="News Feed Item Association" COM_NEWSFEEDS_ITEM_ASSOCIATIONS_FIELDSET_DESC="Multilingual only! This choice will only display if the Language Filter parameter 'Item Associations' is set to 'Yes'. Choose a news feed item for the target language. This association will let the Language Switcher module redirect to the associated news feed item in another language. If used, make sure to display the Language switcher module on the concerned pages. A news feed item set to language 'All' can't be associated." COM_NEWSFEEDS_LEFT="Left" COM_NEWSFEEDS_MANAGER_NEWSFEED="News Feeds: New/Edit" COM_NEWSFEEDS_MANAGER_NEWSFEED_NEW="News Feeds: New" COM_NEWSFEEDS_MANAGER_NEWSFEED_EDIT="News Feeds: Edit" COM_NEWSFEEDS_MANAGER_NEWSFEEDS="News Feeds" COM_NEWSFEEDS_N_ITEMS_ARCHIVED="%d news feeds successfully archived." COM_NEWSFEEDS_N_ITEMS_ARCHIVED_1="News feed successfully archived." COM_NEWSFEEDS_N_ITEMS_CHECKED_IN_0="No news feed successfully checked in." COM_NEWSFEEDS_N_ITEMS_CHECKED_IN_1="News feed successfully checked in." COM_NEWSFEEDS_N_ITEMS_CHECKED_IN_MORE="%d news feeds successfully checked in." COM_NEWSFEEDS_N_ITEMS_DELETED="%d news feeds successfully deleted." COM_NEWSFEEDS_N_ITEMS_DELETED_1="News feed successfully deleted." COM_NEWSFEEDS_N_ITEMS_PUBLISHED="%d news feeds successfully published." COM_NEWSFEEDS_N_ITEMS_PUBLISHED_1="News feed successfully published." COM_NEWSFEEDS_N_ITEMS_TRASHED="%d news feeds successfully trashed." COM_NEWSFEEDS_N_ITEMS_TRASHED_1="News feed successfully trashed." COM_NEWSFEEDS_N_ITEMS_UNPUBLISHED="%d news feeds successfully unpublished." COM_NEWSFEEDS_N_ITEMS_UNPUBLISHED_1="News feed successfully unpublished." COM_NEWSFEEDS_NEW_NEWSFEED="New News Feed" COM_NEWSFEEDS_NO_ITEM_SELECTED="No news feeds selected." COM_NEWSFEEDS_NONE="None" COM_NEWSFEEDS_NUM_ARTICLES_HEADING="# Articles" COM_NEWSFEEDS_PUBLISH_ITEM="Publish News Feed" COM_NEWSFEEDS_RIGHT="Right" COM_NEWSFEEDS_SAVE_SUCCESS="News feed successfully saved." COM_NEWSFEEDS_SEARCH_IN_TITLE="Search" COM_NEWSFEEDS_SELECT_A_FEED="Select feed" COM_NEWSFEEDS_SELECT_FEED="Select feed" COM_NEWSFEEDS_SHOW_EMPTY_CATEGORIES_DESC="If Show, empty categories will display. A category is only empty - if it has no news feeds or subcategories." COM_NEWSFEEDS_SUBMENU_CATEGORIES="Categories" COM_NEWSFEEDS_SUBMENU_NEWSFEEDS="News Feeds" COM_NEWSFEEDS_TIP_ASSOCIATION="Associated news feeds" COM_NEWSFEEDS_TIP_ASSOCIATED_LANGUAGE="%s %s (%s)" COM_NEWSFEEDS_UNPUBLISH_ITEM="Unpublish News Feed" COM_NEWSFEEDS_WARNING_PROVIDE_VALID_NAME="Please provide a valid name." COM_NEWSFEEDS_XML_DESCRIPTION="This component manages RSS and Atom news feeds." JGLOBAL_NEWITEMSLAST_DESC="New news feeds default to the last position. The ordering can be changed after this news feed has been saved." JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings."PKb��\Q�uFMM/language/en-GB/en-GB.plg_search_content.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SEARCH_CONTENT="Search - Content" PLG_SEARCH_CONTENT_XML_DESCRIPTION="Enables searching in Articles."PKb��\��a��7language/en-GB/en-GB.plg_quickicon_joomlaupdate.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_QUICKICON_JOOMLAUPDATE="Quick Icon - Joomla! Update Notification" PLG_QUICKICON_JOOMLAUPDATE_XML_DESCRIPTION="Checks for Joomla! updates and notifies you when you visit the Control Panel page." PKb��\�yW���'language/en-GB/en-GB.com_search.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_SEARCH="Search" COM_SEARCH_SEARCH_VIEW_DEFAULT_DESC="Display search results." COM_SEARCH_SEARCH_VIEW_DEFAULT_OPTION="Default" COM_SEARCH_SEARCH_VIEW_DEFAULT_TITLE="Search Form or Search Results" COM_SEARCH_XML_DESCRIPTION="Component for search functions." PKb��\|&Pw�M�M&language/en-GB/en-GB.com_installer.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_INSTALLER="Installer" COM_INSTALLER_AUTHOR_INFORMATION="Author Information" COM_INSTALLER_CACHETIMEOUT_DESC="For how many hours should Joomla cache extension update information." COM_INSTALLER_CACHETIMEOUT_LABEL="Updates Caching (in hours)" COM_INSTALLER_CONFIGURATION="Installer: Options" COM_INSTALLER_ENABLED_UPDATES_1=", 1 disabled site was enabled." COM_INSTALLER_ENABLED_UPDATES_MORE=", %s disabled sites were enabled." COM_INSTALLER_ERROR_DISABLE_DEFAULT_TEMPLATE_NOT_PERMITTED="Disable default template is not permitted." COM_INSTALLER_ERROR_METHOD="Method Not Implemented" COM_INSTALLER_ERROR_NO_EXTENSIONS_SELECTED="No extensions selected." COM_INSTALLER_ERROR_NO_UPDATESITES_SELECTED="No update sites selected." COM_INSTALLER_EXTENSION_DISABLE="Disable extension" COM_INSTALLER_EXTENSION_DISABLED="Disabled extension" COM_INSTALLER_EXTENSION_ENABLE="Enable extension" COM_INSTALLER_EXTENSION_ENABLED="Enabled extension" COM_INSTALLER_EXTENSION_PACKAGE_FILE="Extension package file" COM_INSTALLER_EXTENSION_PROTECTED="Protected extension" COM_INSTALLER_EXTENSION_PUBLISHED="Extension successfully enabled." COM_INSTALLER_EXTENSION_UNPUBLISHED="Extension successfully disabled." COM_INSTALLER_FAILED_TO_ENABLE_UPDATES=", failed to enable updates" COM_INSTALLER_FILTER_LABEL="Search by Extension Name" COM_INSTALLER_HEADER_DATABASE="Extensions: Database" COM_INSTALLER_HEADER_DISCOVER="Extensions: Discover" COM_INSTALLER_HEADER_INSTALL="Extensions: Install" COM_INSTALLER_HEADER_LANGUAGES="Extensions: Install Languages" COM_INSTALLER_HEADER_MANAGE="Extensions: Manage" COM_INSTALLER_HEADER_UPDATE="Extensions: Update" COM_INSTALLER_HEADER_UPDATESITES="Extensions: Update Sites" COM_INSTALLER_HEADER_WARNINGS="Extensions: Warnings" COM_INSTALLER_HEADING_CLIENT="Client" COM_INSTALLER_HEADING_DETAILS_URL="Details URL" COM_INSTALLER_HEADING_DETAILSURL="URL Details" COM_INSTALLER_HEADING_FOLDER="Folder" COM_INSTALLER_HEADING_ID="ID" COM_INSTALLER_HEADING_INSTALLTYPE="Install Type" COM_INSTALLER_HEADING_LOCATION="Location" COM_INSTALLER_HEADING_NAME="Name" COM_INSTALLER_HEADING_TYPE="Type" COM_INSTALLER_HEADING_UPDATESITE_NAME="Update Site" COM_INSTALLER_HEADING_UPDATESITEID="ID" COM_INSTALLER_INSTALL_BUTTON="Install" COM_INSTALLER_INSTALL_DIRECTORY="Install Folder" COM_INSTALLER_INSTALL_ERROR="Error installing %s" COM_INSTALLER_INSTALL_FROM_DIRECTORY="Install from Folder" COM_INSTALLER_INSTALL_FROM_URL="Install from URL" COM_INSTALLER_INSTALL_FROM_WEB="Install from Web" COM_INSTALLER_INSTALL_FROM_WEB_ADD_TAB="Add "Install from Web" tab" COM_INSTALLER_INSTALL_FROM_WEB_INFO="<a href="_QQ_"http://extensions.joomla.org"_QQ_" target="_QQ_"_blank"_QQ_">Joomla! Extensions Directory™ (JED)</a> now available with <a href="_QQ_"https://docs.joomla.org/Install_from_Web"_QQ_" target="_QQ_"_blank"_QQ_">Install from Web</a> on this page." COM_INSTALLER_INSTALL_FROM_WEB_TOS="By selecting "_QQ_"Add Install from Web tab"_QQ_" below, you agree to the JED <a href="_QQ_"http://extensions.joomla.org/tos"_QQ_" target="_QQ_"_blank"_QQ_">Terms of Service</a> and all applicable third party license terms." COM_INSTALLER_INSTALL_SUCCESS="Installation of the %s was successful." COM_INSTALLER_INSTALL_URL="Install URL" COM_INSTALLER_INVALID_EXTENSION_UPDATE="Invalid extension update" COM_INSTALLER_LABEL_HIDEPROTECTED_DESC="Hide protected extensions. Protected extensions can't be uninstalled." COM_INSTALLER_LABEL_HIDEPROTECTED_LABEL="Hide Protected Extensions" COM_INSTALLER_LANGUAGES_AVAILABLE_LANGUAGES="Available Languages" COM_INSTALLER_LANGUAGES_FILTER_SEARCH_DESC="Search by language name." COM_INSTALLER_MINIMUM_STABILITY_ALPHA="Alpha" COM_INSTALLER_MINIMUM_STABILITY_BETA="Beta" COM_INSTALLER_MINIMUM_STABILITY_DESC="The minimum stability of the extension updates you would like to see. Development is the least stable, Stable is production quality. If an extension doesn't specify a level it is assumed to be Stable." COM_INSTALLER_MINIMUM_STABILITY_DEV="Development" COM_INSTALLER_MINIMUM_STABILITY_LABEL="Minimum Stability" COM_INSTALLER_MINIMUM_STABILITY_STABLE="Stable" COM_INSTALLER_MINIMUM_STABILITY_RC="Release Candidate" COM_INSTALLER_MSG_DATABASE="This screen allows to you check that your database table structure is up to date with changes from the previous versions." COM_INSTALLER_MSG_DATABASE_ADD_COLUMN="Table %2$s does not have column %3$s. (From file %1$s.)" COM_INSTALLER_MSG_DATABASE_ADD_INDEX="Table %2$s does not have index %3$s. (From file %1$s.)" COM_INSTALLER_MSG_DATABASE_CHANGE_COLUMN_TYPE="Table %2$s does not have column %3$s with type %4$s. (From file %1$s.)" COM_INSTALLER_MSG_DATABASE_CHECKED_OK="%s database changes were checked successfully." COM_INSTALLER_MSG_DATABASE_CREATE_TABLE="Table %2$s does not exist. (From file %1$s.)" COM_INSTALLER_MSG_DATABASE_DRIVER="Database driver: %s." COM_INSTALLER_MSG_DATABASE_DROP_COLUMN="Table %2$s should not have column %3$s. (From file %1$s.)" COM_INSTALLER_MSG_DATABASE_DROP_INDEX="Table %2$s should not have index %3$s. (From file %1$s.)" COM_INSTALLER_MSG_DATABASE_ERRORS="Warning: Database is not up to date!" COM_INSTALLER_MSG_DATABASE_FILTER_ERROR="No default text filters found." COM_INSTALLER_MSG_DATABASE_INFO="Other Information" COM_INSTALLER_MSG_DATABASE_OK="Database table structure is up to date." COM_INSTALLER_MSG_DATABASE_SCHEMA_ERROR="Database schema version (%s) does not match CMS version (%s)." COM_INSTALLER_MSG_DATABASE_SCHEMA_VERSION="Database schema version (in #__schemas): %s." COM_INSTALLER_MSG_DATABASE_SKIPPED="%s database changes did not alter table structure and were skipped." COM_INSTALLER_MSG_DATABASE_UPDATE_VERSION="Update version (in #__extensions): %s." COM_INSTALLER_MSG_DATABASE_UPDATEVERSION_ERROR="Database update version (%s) does not match CMS version (%s)." COM_INSTALLER_MSG_DESCFTP="For installing or uninstalling Extensions, Joomla will most likely need your FTP account details. Please enter them in the form fields below." COM_INSTALLER_MSG_DESCFTPTITLE="FTP Login Details" COM_INSTALLER_MSG_DISCOVER_DESCRIPTION="This screen allows you to discover extensions that have not gone through the normal installation process. <br />For example, some extensions are too large in file size to upload using the web interface due to limitations of the web hosting environment. Using this feature you can upload extension files directly to your web server using some other means such as FTP or SFTP and place those extension files into the appropriate folder. <br />You can then use the discover feature to find the newly uploaded extension and activate it in your Joomla installation. <br />Using the discover operation you can also discover and install multiple extensions at the same time." COM_INSTALLER_MSG_DISCOVER_FAILEDTOPURGEEXTENSIONS="Failed to clear discovered extensions" COM_INSTALLER_MSG_DISCOVER_INSTALLFAILED="Discover install failed." COM_INSTALLER_MSG_DISCOVER_INSTALLSUCCESSFUL="Discover install successful." COM_INSTALLER_MSG_DISCOVER_NOEXTENSION="<strong>No extensions have been discovered.</strong> Select Discover to find new extensions that might be available for install." COM_INSTALLER_MSG_DISCOVER_NOEXTENSIONSELECTED="No extension selected." COM_INSTALLER_MSG_DISCOVER_PURGEDDISCOVEREDEXTENSIONS="Cleared discovered extensions." COM_INSTALLER_MSG_INSTALL_ENTER_A_URL="Please enter a URL" COM_INSTALLER_MSG_INSTALL_INVALID_URL="Invalid URL" COM_INSTALLER_MSG_INSTALL_NO_FILE_SELECTED="No file selected." COM_INSTALLER_MSG_INSTALL_PATH_DOES_NOT_HAVE_A_VALID_PACKAGE="Path does not have a valid package." COM_INSTALLER_MSG_INSTALL_PLEASE_ENTER_A_PACKAGE_DIRECTORY="Please enter a package folder." COM_INSTALLER_MSG_INSTALL_PLEASE_SELECT_A_DIRECTORY="Please select a folder." COM_INSTALLER_MSG_INSTALL_PLEASE_SELECT_A_PACKAGE="Please select a package location." COM_INSTALLER_MSG_INSTALL_WARNINSTALLFILE="The installer can't continue until file uploads are enabled for the server." COM_INSTALLER_MSG_INSTALL_WARNINSTALLUPLOADERROR="There was an error uploading this file to the server." COM_INSTALLER_MSG_INSTALL_WARNINSTALLZLIB="The installer can't continue until Zlib is installed." COM_INSTALLER_MSG_LANGUAGES_CANT_FIND_REMOTE_MANIFEST="The installer can't get the URL to the XML manifest file of the %s language." COM_INSTALLER_MSG_LANGUAGES_CANT_FIND_REMOTE_PACKAGE="The installer can't get the URL to the remote %s language." COM_INSTALLER_MSG_LANGUAGES_NOLANGUAGES="There are no available languages to install at the moment. Please select the "Find languages" button to check for updates on the Joomla! Languages server. You will need an internet connection for this to work." COM_INSTALLER_MSG_LANGUAGES_TRY_LATER="Try again later or <a href="_QQ_"http://community.joomla.org/translations/joomla-3-translations.html"_QQ_">contact the language team coordinator</a>" COM_INSTALLER_MSG_MANAGE_NOEXTENSION="There are no extensions installed matching your query." COM_INSTALLER_MSG_MANAGE_NOUPDATESITE="There are no update sites matching your query." COM_INSTALLER_MSG_N_DATABASE_ERROR_PANEL="%d Database Problems Found." COM_INSTALLER_MSG_N_DATABASE_ERROR_PANEL_1="1 Database Problem Found." COM_INSTALLER_MSG_UPDATE_ERROR="Error updating %s." COM_INSTALLER_MSG_UPDATE_NODESC="No description available for this item." COM_INSTALLER_MSG_UPDATE_NOUPDATES="There are no updates available at the moment. Please check again later." COM_INSTALLER_MSG_UPDATE_SITES_COUNT_CHECK="Some update sites are disabled. You may want to check the <a href="_QQ_"%s"_QQ_">Update Sites Manager</a>." COM_INSTALLER_MSG_UPDATE_SUCCESS="Updating %s was successful." COM_INSTALLER_MSG_UPDATE_UPDATE="Update" COM_INSTALLER_MSG_WARNINGFURTHERINFO="Further information on warnings" COM_INSTALLER_MSG_WARNINGFURTHERINFODESC="For more information on warnings, see the <a href="_QQ_"https://docs.joomla.org"_QQ_" target="_QQ_"_blank"_QQ_">Joomla! Documentation Site</a>." COM_INSTALLER_MSG_WARNINGS_FILEUPLOADISDISABLEDDESC="File uploads are required to upload extensions into the installer." COM_INSTALLER_MSG_WARNINGS_FILEUPLOADSDISABLED="File uploads disabled." COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTSET="The Joomla temporary folder is not set." COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTSETDESC="The Joomla temporary folder is where Joomla copies an extension, extracts the extension and the files are copied into the correct directories. If this configuration is not set in configuration.php ($tmp_path) then you won't be able to upload extensions. Create a folder to enable Joomla to write to the folder to fix the issue." COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTWRITEABLE="The Joomla temporary folder is not writable or does not exist." COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTWRITEABLEDESC="The Joomla temporary folder is not writeable by the Joomla instance, or may not exist, which may cause issues when attempting to upload extensions to Joomla. If you are having issues uploading extensions, make sure the folder defined in your configuration.php exists or check the '%s' and set it to be writeable and see if this fixes the issue." COM_INSTALLER_MSG_WARNINGS_LOWMEMORYDESC="Low PHP memory limit." COM_INSTALLER_MSG_WARNINGS_LOWMEMORYWARN="Your PHP memory limit is set below 8MB which may cause some issues when installing large extensions. Please set your memory limit to at least 16MB." COM_INSTALLER_MSG_WARNINGS_MEDMEMORYDESC="Potentially low PHP memory limit." COM_INSTALLER_MSG_WARNINGS_MEDMEMORYWARN="Your PHP memory limit is set below 16MB which may cause some issues when installing large extensions. Please set your memory limit to at least 16MB." COM_INSTALLER_MSG_WARNINGS_NONE="No warnings detected." COM_INSTALLER_MSG_WARNINGS_NOTCOMPLETE="<h1>Warning: Update Not Complete!</h1><p>The update is only partially complete. Please do the second update to complete the process.</p>" COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSET="The PHP temporary folder is not set." COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSETDESC="The PHP temporary folder is the folder that PHP uses to store an uploaded file before Joomla can access this file. Whilst the folder not being set isn't always a problem, if you are having issues with manifest files not being detected or uploaded files not being detected, setting this in your php.ini file might fix the issue." COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLE="The PHP temporary folder is not writeable." COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLEDESC="The PHP temporary folder is not writeable by the Joomla! instance, which may cause issues when attempting to upload extensions to Joomla. If you are having issues uploading extensions, check the '%s' and set it to be writeable and see if this fixes the issue." COM_INSTALLER_MSG_WARNINGS_SMALLPOSTSIZE="Small PHP maximum POST size." COM_INSTALLER_MSG_WARNINGS_SMALLPOSTSIZEDESC="The maximum POST size sets the most amount of data that can be sent via POST to the server. This includes form submissions for articles, media (images, videos) and extensions. This value is less than 8MB which may impact on uploading large extensions. This is set in the php.ini under post_max_size." COM_INSTALLER_MSG_WARNINGS_SMALLUPLOADSIZE="Maximum PHP file upload size is too small: This is set in php.ini in both upload_max_filesize and post_max_size settings of your PHP settings (located in php.ini and/or .htaccess file)." COM_INSTALLER_MSG_WARNINGS_SMALLUPLOADSIZEDESC="The maximum file size for uploads is set to less than 8MB which may impact on uploading large extensions." COM_INSTALLER_MSG_WARNINGS_UPDATE_NOTICE="Before updating ensure that the update is compatible with your Joomla! installation." COM_INSTALLER_MSG_WARNINGS_UPLOADBIGGERTHANPOST="PHP Upload Size bigger than POST size." COM_INSTALLER_MSG_WARNINGS_UPLOADBIGGERTHANPOSTDESC="The value of the upload_max_filesize in the php.ini file is greater than the post_max_size variable. The post_max_size variable will take precedence and block requests larger than it. This is generally a server misconfiguration when trying to increase upload sizes. Please increase the upload_max_filesize to at least match the post_max_size variable or vice versa." COM_INSTALLER_N_EXTENSIONS_PUBLISHED="%d extensions successfully enabled." COM_INSTALLER_N_EXTENSIONS_PUBLISHED_1="%d extension successfully enabled." COM_INSTALLER_N_EXTENSIONS_UNPUBLISHED="%d extensions successfully disabled." COM_INSTALLER_N_EXTENSIONS_UNPUBLISHED_1="%d extension successfully disabled." COM_INSTALLER_N_UPDATESITES_PUBLISHED="%d update sites successfully enabled." COM_INSTALLER_N_UPDATESITES_PUBLISHED_1="%d update site successfully enabled." COM_INSTALLER_N_UPDATESITES_UNPUBLISHED="%d update sites successfully disabled." COM_INSTALLER_N_UPDATESITES_UNPUBLISHED_1="%d update site successfully disabled." COM_INSTALLER_NEW_INSTALL="New Install" COM_INSTALLER_NO_INSTALL_TYPE_FOUND="No Install Type Found" COM_INSTALLER_PACKAGE_DOWNLOAD_FAILED="Failed to download package. Download it and install manually from <a href='%1$s'>%1$s</a>." COM_INSTALLER_PACKAGE_FILE="Package File" COM_INSTALLER_PREFERENCES_DESCRIPTION="Fine tune how extensions installation and updates work." COM_INSTALLER_PREFERENCES_LABEL="Preferences" COM_INSTALLER_SHOW_JED_INFORMATION_DESC="Show or hide the information at the top of the installer page about the Joomla! Extensions Directory™." COM_INSTALLER_SHOW_JED_INFORMATION_HIDE_MESSAGE="Hide message" COM_INSTALLER_SHOW_JED_INFORMATION_LABEL="Joomla! Extensions Directory" COM_INSTALLER_SHOW_JED_INFORMATION_SHOW_MESSAGE="Show message" COM_INSTALLER_SHOW_JED_INFORMATION_TOOLTIP="Opens Installer Options for setting to hide this Joomla! Extensions Directory™ message." COM_INSTALLER_SUBMENU_DATABASE="Database" COM_INSTALLER_SUBMENU_DISCOVER="Discover" COM_INSTALLER_SUBMENU_INSTALL="Install" COM_INSTALLER_SUBMENU_LANGUAGES="Install Languages" COM_INSTALLER_SUBMENU_MANAGE="Manage" COM_INSTALLER_SUBMENU_UPDATE="Update" COM_INSTALLER_SUBMENU_UPDATESITES="Update Sites" COM_INSTALLER_SUBMENU_WARNINGS="Warnings" COM_INSTALLER_TITLE_DATABASE="Extensions: Database" COM_INSTALLER_TITLE_DISCOVER="Extensions: Discover" COM_INSTALLER_TITLE_INSTALL="Extensions: Install" COM_INSTALLER_TITLE_LANGUAGES="Extensions: Install Languages" COM_INSTALLER_TITLE_MANAGE="Extension: Manage" COM_INSTALLER_TITLE_UPDATE="Extension: Update" COM_INSTALLER_TITLE_UPDATESITES="Extensions: Update Sites" COM_INSTALLER_TITLE_WARNINGS="Extensions: Warnings" COM_INSTALLER_TOOLBAR_DATABASE_FIX="Fix" COM_INSTALLER_TOOLBAR_DISCOVER="Discover" COM_INSTALLER_TOOLBAR_FIND_LANGUAGES="Find languages" COM_INSTALLER_TOOLBAR_FIND_UPDATES="Find Updates" COM_INSTALLER_TOOLBAR_INSTALL="Install" COM_INSTALLER_TOOLBAR_PURGE="Clear Cache" COM_INSTALLER_TOOLBAR_UPDATE="Update" COM_INSTALLER_TYPE_CLIENT="Location" COM_INSTALLER_TYPE_COMPONENT="Component" COM_INSTALLER_TYPE_FILE="File" COM_INSTALLER_TYPE_LANGUAGE="Language" COM_INSTALLER_TYPE_LIBRARY="Library" COM_INSTALLER_TYPE_MODULE="Module" COM_INSTALLER_TYPE_NONAPPLICABLE="N/A" COM_INSTALLER_TYPE_PACKAGE="Package" COM_INSTALLER_TYPE_PLUGIN="Plugin" COM_INSTALLER_TYPE_TEMPLATE="Template" COM_INSTALLER_TYPE_TYPE_COMPONENT="component" COM_INSTALLER_TYPE_TYPE_FILE="file" COM_INSTALLER_TYPE_TYPE_LANGUAGE="language" COM_INSTALLER_TYPE_TYPE_LIBRARY="library" COM_INSTALLER_TYPE_TYPE_MODULE="module" COM_INSTALLER_TYPE_TYPE_PACKAGE="package" COM_INSTALLER_TYPE_TYPE_PLUGIN="plugin" COM_INSTALLER_TYPE_TYPE_TEMPLATE="template" COM_INSTALLER_UNABLE_TO_FIND_INSTALL_PACKAGE="Unable to find install package" COM_INSTALLER_UNINSTALL_ERROR="Error uninstalling %s." COM_INSTALLER_UNINSTALL_LANGUAGE="A language should always have been installed as a package. <br />To uninstall a language, filter type by package and uninstall the package." COM_INSTALLER_UNINSTALL_SUCCESS="Uninstalling the %s was successful." COM_INSTALLER_UPLOAD_AND_INSTALL="Upload & Install" COM_INSTALLER_UPLOAD_INSTALL_JOOMLA_EXTENSION="Upload & Install Joomla Extension" COM_INSTALLER_UPLOAD_PACKAGE_FILE="Upload Package File" COM_INSTALLER_VALUE_CLIENT_SELECT="- Select Location -" COM_INSTALLER_VALUE_FOLDER_NONAPPLICABLE="N/A" COM_INSTALLER_VALUE_FOLDER_SELECT="- Select Folder -" COM_INSTALLER_VALUE_STATE_SELECT="- Select Status -" COM_INSTALLER_VALUE_TYPE_SELECT="- Select Type -" COM_INSTALLER_WEBINSTALLER_INSTALL_OBSOLETE="The Install from Web plugin has become obsolete and needs to be updated." COM_INSTALLER_WEBINSTALLER_INSTALL_UPDATE_AVAILABLE="There is a new update available for the Install from Web plugin. It is advisable that you update as soon as possible." COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM="Please confirm the installation by selecting the Install button" COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM_NAME="Extension Name" COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM_URL="Install from" COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_LOADING="Loading ..." COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_LOADING_ERROR="Can't connect to the Joomla! server. Please try again later." COM_INSTALLER_WEBINSTALLER_LOAD_APPS="Select to load extensions browser" COM_INSTALLER_XML_DESCRIPTION="Installer component for adding, removing and upgrading extensions" JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings." PKb��\r\\1language/en-GB/en-GB.plg_extension_joomla.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_EXTENSION_JOOMLA="Extension - Joomla" PLG_EXTENSION_JOOMLA_XML_DESCRIPTION="Manage the update sites for extensions."PKb��\硸Ǧ�/language/en-GB/en-GB.plg_content_joomla.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTENT_JOOMLA="Content - Joomla" PLG_CONTENT_JOOMLA_XML_DESCRIPTION="This plugin does category processing for core extensions; sends an email when new article is submitted in the Frontend."PKb��\� ��L L #language/en-GB/en-GB.com_search.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_SEARCH="Search" COM_SEARCH_ALL_WORDS="All words" COM_SEARCH_ALPHABETICAL="Alphabetical" COM_SEARCH_ANY_WORDS="Any words" COM_SEARCH_CONFIG_FIELD_CREATED_DATE_DESC="Show created date." COM_SEARCH_CONFIG_FIELD_CREATED_DATE_LABEL="Created Date" COM_SEARCH_CONFIG_GATHER_SEARCH_STATISTICS_DESC="Record the search phrases submitted by visitors." COM_SEARCH_CONFIG_GATHER_SEARCH_STATISTICS_LABEL="Gather Search Statistics" COM_SEARCH_CONFIG_FIELD_OPENSEARCH_NAME_LABEL="OpenSearch Name" COM_SEARCH_CONFIG_FIELD_OPENSEARCH_NAME_DESC="Name displayed for this site as a search provider." COM_SEARCH_CONFIG_FIELD_OPENSEARCH_DESCRIPTON_LABEL="OpenSearch Description" COM_SEARCH_CONFIG_FIELD_OPENSEARCH_DESCRIPTON_DESC="Description displayed for this site as a search provider." COM_SEARCH_CONFIGURATION="Search: Options" COM_SEARCH_EXACT_PHRASE="Exact phrase" COM_SEARCH_FIELD_DESC="Word, words or phrase to search for." COM_SEARCH_FIELD_LABEL="Search Term (Optional)" COM_SEARCH_FIELD_SEARCH_PHRASES_DESC="Show the search options." COM_SEARCH_FIELD_SEARCH_PHRASES_LABEL="Use Search Options" COM_SEARCH_FIELD_SEARCH_AREAS_DESC="Show the search areas checkboxes." COM_SEARCH_FIELD_SEARCH_AREAS_LABEL="Use Search Areas" COM_SEARCH_FIELDSET_OPTIONAL_LABEL="Optional Search Term" COM_SEARCH_FOR_DESC="The type of search." COM_SEARCH_FOR_LABEL="Search For" COM_SEARCH_HEADING_PHRASE="Search Phrase" COM_SEARCH_HEADING_RESULTS="Results" COM_SEARCH_HIDE_SEARCH_RESULTS="Hide Search Results" COM_SEARCH_LOGGING_DISABLED="Gathering statistics disabled. Enable it in the Options." COM_SEARCH_LOGGING_ENABLED="Gathering statistics enabled" COM_SEARCH_MANAGER_SEARCHES="Search Term Analysis" COM_SEARCH_MOST_POPULAR="Popularity" COM_SEARCH_NEWEST_FIRST="Newest First" COM_SEARCH_NO_RESULTS="Off" COM_SEARCH_OLDEST_FIRST="Oldest First" COM_SEARCH_ORDERING_DESC="Defines what ordering results are listed in." COM_SEARCH_ORDERING_LABEL="Results ordering" COM_SEARCH_SAVED_SEARCH_OPTIONS="Saved search options" COM_SEARCH_SEARCH_IN_PHRASE="Search in phrases." COM_SEARCH_SHOW_SEARCH_RESULTS="Show Search Results" COM_SEARCH_XML_DESCRIPTION="Component for search functions." PKb��\��AA,language/en-GB/en-GB.plg_search_tags.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SEARCH_TAGS="Search - Tags" PLG_SEARCH_TAGS_XML_DESCRIPTION="Enables searching in Tags." PKb��\Z1g�1language/en-GB/en-GB.plg_finder_newsfeeds.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_FINDER_NEWSFEEDS="Smart Search - News Feeds" PLG_FINDER_NEWSFEEDS_ERROR_ACTIVATING_PLUGIN="Could not automatically activate the "Smart Search - Joomla! News Feeds" plugin." PLG_FINDER_NEWSFEEDS_XML_DESCRIPTION="This plugin indexes Joomla! News feeds." PLG_FINDER_STATISTICS_NEWS_FEED="News Feed" PKb��\,^QQ3language/en-GB/en-GB.plg_quickicon_joomlaupdate.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_QUICKICON_JOOMLAUPDATE="Quick Icon - Joomla! Update Notification" PLG_QUICKICON_JOOMLAUPDATE_CHECKING="Checking Joomla! ..." PLG_QUICKICON_JOOMLAUPDATE_ERROR="Unknown Joomla! ..." PLG_QUICKICON_JOOMLAUPDATE_GROUP_DESC="The group of this plugin (this value is compared with the group value used in <strong>Quick Icons</strong> modules to inject icons)." PLG_QUICKICON_JOOMLAUPDATE_GROUP_LABEL="Group" PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND="Joomla! <span class='label label-important'>%s</span>, Update now!" PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND_BUTTON="Update Now" PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND_MESSAGE="Joomla! <span class='label label-important'>%s</span> is available:" PLG_QUICKICON_JOOMLAUPDATE_UPTODATE="Joomla! is up-to-date." PLG_QUICKICON_JOOMLAUPDATE_XML_DESCRIPTION="Checks for Joomla! updates and notifies you when you visit the Control Panel page." PKb��\�.]DD%language/en-GB/en-GB.com_messages.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_MESSAGES="Messaging" COM_MESSAGES_ADD="New Private Message" COM_MESSAGES_CONFIG_SAVED="Configuration successfully saved." COM_MESSAGES_CONFIGURATION="Messages: Options" COM_MESSAGES_ERR_INVALID_USER="Invalid user" COM_MESSAGES_ERR_SEND_FAILED="The user has locked their mailbox. Message failed." COM_MESSAGES_ERROR_INVALID_FROM_USER="Invalid sender" COM_MESSAGES_ERROR_INVALID_MESSAGE="Invalid message content" COM_MESSAGES_ERROR_INVALID_SUBJECT="Invalid subject" COM_MESSAGES_ERROR_INVALID_TO_USER="Invalid recipient" COM_MESSAGES_FIELD_AUTO_PURGE_DESC="Automatically delete private messages after the given number of days." COM_MESSAGES_FIELD_AUTO_PURGE_LABEL="Auto-delete Messages (days)" COM_MESSAGES_FIELD_DATE_TIME_LABEL="Posted" COM_MESSAGES_FIELD_LOCK_DESC="Lock your private message inbox." COM_MESSAGES_FIELD_LOCK_LABEL="Lock Inbox" COM_MESSAGES_FIELD_MAIL_ON_NEW_DESC="Email me when a new private message arrives." COM_MESSAGES_FIELD_MAIL_ON_NEW_LABEL="Email New Messages" COM_MESSAGES_FIELD_MESSAGE_DESC="You must enter a message." COM_MESSAGES_FIELD_MESSAGE_LABEL="Message" COM_MESSAGES_FIELD_SUBJECT_DESC="You must enter a subject." COM_MESSAGES_FIELD_SUBJECT_LABEL="Subject" COM_MESSAGES_FIELD_USER_ID_FROM_LABEL="From" COM_MESSAGES_FIELD_USER_ID_TO_DESC="You must select a recipient." COM_MESSAGES_FIELD_USER_ID_TO_LABEL="Recipient" COM_MESSAGES_HEADING_FROM="From" COM_MESSAGES_HEADING_READ="Read" COM_MESSAGES_HEADING_SUBJECT="Subject" COM_MESSAGES_INVALID_REPLY_ID="Invalid recipient" COM_MESSAGES_MANAGER_MESSAGES="Private Messages" COM_MESSAGES_MARK_AS_READ="Mark As Read" COM_MESSAGES_MARK_AS_UNREAD="Mark as Unread" COM_MESSAGES_MY_SETTINGS="My Settings" COM_MESSAGES_N_ITEMS_DELETED="%d messages successfully deleted." COM_MESSAGES_N_ITEMS_DELETED_1="Message successfully deleted." COM_MESSAGES_N_ITEMS_PUBLISHED="%d messages successfully marked as read." COM_MESSAGES_N_ITEMS_PUBLISHED_1="Message successfully marked as read." COM_MESSAGES_N_ITEMS_TRASHED="%d messages successfully trashed." COM_MESSAGES_N_ITEMS_TRASHED_1="Message successfully trashed." COM_MESSAGES_N_ITEMS_UNPUBLISHED="%d messages successfully marked as unread." COM_MESSAGES_N_ITEMS_UNPUBLISHED_1="Message successfully marked as unread." COM_MESSAGES_NEW_MESSAGE_ARRIVED="A new private message has arrived from %s" COM_MESSAGES_NO_ITEM_SELECTED="No messages selected." COM_MESSAGES_OPTION_READ="Read" COM_MESSAGES_OPTION_UNREAD="Unread" COM_MESSAGES_PLEASE_LOGIN="Please log in to %s to read your message." COM_MESSAGES_RE="Re:" COM_MESSAGES_READ="Messages" COM_MESSAGES_READ_PRIVATE_MESSAGE="Read Private Message" COM_MESSAGES_SEARCH_IN_SUBJECT="Search in message subject or description." COM_MESSAGES_TOOLBAR_MARK_AS_READ="Mark As Read" COM_MESSAGES_TOOLBAR_MARK_AS_UNREAD="Mark as Unread" COM_MESSAGES_TOOLBAR_MY_SETTINGS="My Settings" COM_MESSAGES_TOOLBAR_REPLY="Reply" COM_MESSAGES_TOOLBAR_SEND="Send" COM_MESSAGES_VIEW_PRIVATE_MESSAGE="Private Messages: View" COM_MESSAGES_WRITE_PRIVATE_MESSAGE="Private Messages: Write" COM_MESSAGES_XML_DESCRIPTION="Component for private messaging support in Backend." JLIB_APPLICATION_SAVE_SUCCESS="Message successfully sent." JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings."PKb��\!�ܹ��"language/en-GB/en-GB.com_media.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_MEDIA="Media" COM_MEDIA_ALIGN="Image Float" COM_MEDIA_ALIGN_DESC="This will apply the classes 'pull-left', 'pull-center' or 'pull-right' to the '<figure>' or '<img>' element." COM_MEDIA_BROWSE_FILES="Browse files" COM_MEDIA_CAPTION="Caption" COM_MEDIA_CAPTION_CLASS_LABEL="Caption Class" COM_MEDIA_CAPTION_CLASS_DESC="This will apply the entered class to the '<figcaption>' element. For example: 'text-left', 'text-right', 'text-center'." COM_MEDIA_CLEAR_LIST="Clear List" COM_MEDIA_CONFIGURATION="Media: Options" COM_MEDIA_CREATE_COMPLETE="Create Complete: %s" COM_MEDIA_CREATE_FOLDER="Create Folder" COM_MEDIA_CREATE_NEW_FOLDER="Create New Folder" COM_MEDIA_CURRENT_PROGRESS="Current progress" COM_MEDIA_DELETE_COMPLETE="Delete Complete: %s" COM_MEDIA_DESCFTPTITLE="FTP Login Details" COM_MEDIA_DESCFTP="To upload, change and delete media files, Joomla will most likely need your FTP account details. Please enter them in the form fields below." COM_MEDIA_DETAIL_VIEW="Detail View" COM_MEDIA_DIRECTORY="Folder" COM_MEDIA_DIRECTORY_UP="Folder Up" COM_MEDIA_ERROR_BAD_REQUEST="Bad Request" COM_MEDIA_ERROR_BEFORE_DELETE_0="Some error occurs before deleting the media." COM_MEDIA_ERROR_BEFORE_DELETE_1="An error occurs before deleting the media: %s" COM_MEDIA_ERROR_BEFORE_DELETE_MORE="Some errors occur before deleting the media: %s" COM_MEDIA_ERROR_BEFORE_SAVE_0="Some error occurs before saving the media." COM_MEDIA_ERROR_BEFORE_SAVE_1="An error occurs before saving the media: %s" COM_MEDIA_ERROR_BEFORE_SAVE_MORE="Some errors occur before saving the media: %s" COM_MEDIA_ERROR_CREATE_NOT_PERMITTED="Create not permitted." COM_MEDIA_ERROR_FILE_EXISTS="File already exists." COM_MEDIA_ERROR_UNABLE_TO_CREATE_FOLDER_WARNDIRNAME="Unable to create folder. Folder name must only contain alphanumeric characters and no spaces." COM_MEDIA_ERROR_UNABLE_TO_BROWSE_FOLDER_WARNDIRNAME="Unable to browse: %s. Folder name must only contain alphanumeric characters and no spaces." COM_MEDIA_ERROR_UNABLE_TO_DELETE_FILE_WARNFILENAME="Unable to delete: %s. File name must only contain alphanumeric characters and no spaces." COM_MEDIA_ERROR_UNABLE_TO_DELETE_FOLDER_NOT_EMPTY="Unable to delete: %s. Folder is not empty!" COM_MEDIA_ERROR_UNABLE_TO_DELETE_FOLDER_WARNDIRNAME="Unable to delete: %s." COM_MEDIA_ERROR_UNABLE_TO_DELETE=" Unable to delete: " COM_MEDIA_ERROR_UNABLE_TO_UPLOAD_FILE="Unable to upload file." COM_MEDIA_ERROR_UPLOAD_INPUT="Please input a file for upload" COM_MEDIA_ERROR_WARNFILENAME="File name must only contain alphanumeric characters and no spaces." COM_MEDIA_ERROR_WARNFILETOOLARGE="This file is too large to upload." COM_MEDIA_ERROR_WARNFILETYPE="This file type is not supported." COM_MEDIA_ERROR_WARNIEXSS="Possible IE XSS Attack found." COM_MEDIA_ERROR_WARNINVALID_IMG="Not a valid image." COM_MEDIA_ERROR_WARNINVALID_MIME="Illegal or invalid mime type detected." COM_MEDIA_ERROR_WARNNOTADMIN="Uploaded file is not an image file and you are not a manager or higher." COM_MEDIA_ERROR_WARNNOTEMPTY="Not empty!" COM_MEDIA_ERROR_WARNUPLOADTOOLARGE="Total size of upload exceeds the limit." COM_MEDIA_FIELD_CHECK_MIME_DESC="Use MIME Magic or Fileinfo to attempt to verify files. Try disabling this if you get invalid mime type errors." COM_MEDIA_FIELD_CHECK_MIME_LABEL="Check MIME Types" COM_MEDIA_FIELD_IGNORED_EXTENSIONS_DESC="Ignored file extensions for MIME type checking and restricted uploads." COM_MEDIA_FIELD_IGNORED_EXTENSIONS_LABEL="Ignored Extensions" COM_MEDIA_FIELD_ILLEGAL_MIME_TYPES_DESC="A comma separated list of illegal MIME types for upload (blacklist)." COM_MEDIA_FIELD_ILLEGAL_MIME_TYPES_LABEL="Illegal MIME Types" COM_MEDIA_FIELD_LEGAL_EXTENSIONS_DESC=" Extensions (file types) you are allowed to upload (comma separated)." COM_MEDIA_FIELD_LEGAL_EXTENSIONS_LABEL="Legal Extensions (File Types)" COM_MEDIA_FIELD_LEGAL_IMAGE_EXTENSIONS_DESC=" Image extensions (file types) you are allowed to upload (comma separated). These are used to check for valid image headers." COM_MEDIA_FIELD_LEGAL_IMAGE_EXTENSIONS_LABEL="Legal Image Extensions (File Types)" COM_MEDIA_FIELD_LEGAL_MIME_TYPES_DESC="A comma separated list of legal MIME types for upload." COM_MEDIA_FIELD_LEGAL_MIME_TYPES_LABEL="Legal MIME Types" COM_MEDIA_FIELD_MAXIMUM_SIZE_DESC="The maximum size for an upload (in megabytes). Use zero for no limit. Note: your server has a maximum limit." COM_MEDIA_FIELD_MAXIMUM_SIZE_LABEL="Maximum Size (in MB)" COM_MEDIA_FIELD_PATH_FILE_FOLDER_DESC="Enter the path to the files folder relative to the root of your webspace. Warning! Changing to another path than the default 'images' may break your links. Note: Do not start the path with a slash!" COM_MEDIA_FIELD_PATH_FILE_FOLDER_LABEL="Path to Files Folder" COM_MEDIA_FIELD_PATH_IMAGE_FOLDER_DESC="Enter the path to the images folder relative to the root of your webspace. This path <strong>has to be the same as path to files (default) or to a subfolder of the path to file folder.</strong>. Note: Do not start the path with a slash!" COM_MEDIA_FIELD_PATH_IMAGE_FOLDER_LABEL="Path to Images Folder" COM_MEDIA_FIELD_RESTRICT_UPLOADS_DESC="Restrict uploads for lower than manager users to just images if Fileinfo or MIME Magic isn't installed." COM_MEDIA_FIELD_RESTRICT_UPLOADS_LABEL="Restrict Uploads" COM_MEDIA_FILES="Files" COM_MEDIA_FILESIZE="File size" COM_MEDIA_FOLDER="Folder" COM_MEDIA_FOLDERS="Media Folders" COM_MEDIA_FOLDERS_PATH_LABEL="<strong>Warning! Path Folder</strong><br />Changing the default 'Path to files folder' to another folder other than default 'images' may break your links.<br />The 'Path to images' folder has to be the same or a subfolder of 'Path to files'." COM_MEDIA_IMAGE_DESCRIPTION="Image Description" COM_MEDIA_IMAGE_TITLE="%1$s - %2$s" COM_MEDIA_IMAGE_DIMENSIONS="%1$s x %2$s" COM_MEDIA_IMAGE_URL="Image URL" COM_MEDIA_INSERT_IMAGE="Insert Image" COM_MEDIA_INSERT="Insert" COM_MEDIA_INVALID_REQUEST="Invalid Request" COM_MEDIA_MEDIA="Media" COM_MEDIA_NAME="Image Name" COM_MEDIA_NO_IMAGES_FOUND="No Images Found" COM_MEDIA_NOT_SET="Not Set" COM_MEDIA_OVERALL_PROGRESS="Overall Progress" COM_MEDIA_PIXEL_DIMENSIONS="Dimensions (px)" COM_MEDIA_START_UPLOAD="Start Upload" COM_MEDIA_THUMBNAIL_VIEW="Thumbnail View" COM_MEDIA_TITLE="Image Title" COM_MEDIA_UPLOAD_COMPLETE="Upload Complete: %s" COM_MEDIA_UPLOAD_FILES_NOLIMIT="Upload files (No maximum size)" COM_MEDIA_UPLOAD_FILES="Upload files (Maximum Size: %s MB)" COM_MEDIA_UPLOAD_FILE="Upload file" COM_MEDIA_UPLOAD_SUCCESSFUL="Upload Successful" COM_MEDIA_UPLOAD="Upload" COM_MEDIA_UP="Up" COM_MEDIA_XML_DESCRIPTION="Component for managing site media" JLIB_RULES_SETTING_NOTES="1. Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting.<br /><br />2. Select Save to refresh the calculated settings."PKb��\��j�[[!language/en-GB/en-GB.localise.phpnu�[���<?php /** * @package Joomla.Language * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * en-GB localise class. * * @since 1.6 */ abstract class En_GBLocalise { /** * Returns the potential suffixes for a specific number of items * * @param integer $count The number of items. * * @return array An array of potential suffixes. * * @since 1.6 */ public static function getPluralSuffixes($count) { if ($count == 0) { return array('0'); } elseif ($count == 1) { return array('1'); } else { return array('MORE'); } } /** * Returns the ignored search words * * @return array An array of ignored search words. * * @since 1.6 */ public static function getIgnoredSearchWords() { return array('and', 'in', 'on'); } /** * Returns the lower length limit of search words * * @return integer The lower length limit of search words. * * @since 1.6 */ public static function getLowerLimitSearchWord() { return 3; } /** * Returns the upper length limit of search words * * @return integer The upper length limit of search words. * * @since 1.6 */ public static function getUpperLimitSearchWord() { return 20; } /** * Returns the number of chars to display when searching * * @return integer The number of chars to display when searching. * * @since 1.6 */ public static function getSearchDisplayedCharactersNumber() { return 200; } } PKb��\N6<�,language/en-GB/en-GB.mod_stats_admin.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_STATS_ADMIN="Statistics" MOD_STATS_LAYOUT_DEFAULT="Default" MOD_STATS_XML_DESCRIPTION="The Statistics Module shows information about your server installation together with statistics on the website users, number of Articles in your database and the number of Web links you provide." PKb��\@ h�5language/en-GB/en-GB.plg_authentication_gmail.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_AUTHENTICATION_GMAIL="Authentication - Gmail" PLG_GMAIL_XML_DESCRIPTION="Handles User Authentication with a Gmail or Googlemail account (Requires cURL).<br />Users may need to enable <em>Access for less secure apps</em> at <a href="_QQ_"https://www.google.com/settings/security/lesssecureapps"_QQ_" target="_QQ_"_blank"_QQ_">https://www.google.com/settings/security/lesssecureapps</a> to be able to log in using this method.<br /><strong> Warning! You must have at least one authentication plugin enabled or you will lose all access to your site.</strong>" PKb��\�呫�*language/en-GB/en-GB.mod_quickicon.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_QUICKICON="Quick Icons" MOD_QUICKICON_XML_DESCRIPTION="This module shows Quick Icons that are visible on the Control Panel (administrator area home page)" MOD_QUICKICON_LAYOUT_DEFAULT="Default" PKb��\)�s����#language/en-GB/en-GB.lib_joomla.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 ; Common boolean values ; Note: YES, NO, TRUE, FALSE are reserved words in INI format. ; Double quotes in the values have to be formatted as "_QQ_". ; Keep this string on top JERROR_PARSING_LANGUAGE_FILE=" : error(s) in line(s) %s" JLIB_APPLICATION_ERROR_ACCESS_FORBIDDEN="Access forbidden." JLIB_APPLICATION_ERROR_APPLICATION_GET_NAME="JApplication: :getName() : Can't get or parse class name." JLIB_APPLICATION_ERROR_APPLICATION_LOAD="Unable to load application: %s" JLIB_APPLICATION_ERROR_BATCH_CANNOT_CREATE="You are not allowed to create new items in this category." JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT="You are not allowed to edit one or more of these items." JLIB_APPLICATION_ERROR_BATCH_FAILED="Batch process failed with following error: %s" JLIB_APPLICATION_ERROR_BATCH_MOVE_CATEGORY_NOT_FOUND="Can't find the destination category for this move." JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND="Can't find the item being moved." JLIB_APPLICATION_ERROR_CHECKIN_FAILED="Check-in failed with the following error: %s" JLIB_APPLICATION_ERROR_CHECKIN_NOT_CHECKED="Item is not checked out." JLIB_APPLICATION_ERROR_CHECKIN_USER_MISMATCH="The user checking in does not match the user who checked out the item." JLIB_APPLICATION_ERROR_CHECKOUT_FAILED="Check-out failed with the following error: %s" JLIB_APPLICATION_ERROR_CHECKOUT_USER_MISMATCH="The user checking out does not match the user who checked out the item." JLIB_APPLICATION_ERROR_COMPONENT_NOT_FOUND="Component not found." JLIB_APPLICATION_ERROR_COMPONENT_NOT_LOADING="Error loading component: %1$s, %2$s" JLIB_APPLICATION_ERROR_CONTROLLER_GET_NAME="JController: :getName() : Can't get or parse class name." JLIB_APPLICATION_ERROR_CREATE_RECORD_NOT_PERMITTED="Create record not permitted." JLIB_APPLICATION_ERROR_DELETE_NOT_PERMITTED="Delete not permitted." JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED="Edit state is not permitted." JLIB_APPLICATION_ERROR_EDIT_ITEM_NOT_PERMITTED="Edit is not permitted." JLIB_APPLICATION_ERROR_EDIT_NOT_PERMITTED="Edit not permitted." JLIB_APPLICATION_ERROR_HISTORY_ID_MISMATCH="Error restoring item version from history." JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION="Insufficient information to perform the batch operation." JLIB_APPLICATION_ERROR_INVALID_CONTROLLER_CLASS="Invalid controller class: %s" JLIB_APPLICATION_ERROR_INVALID_CONTROLLER="Invalid controller: name='%s', format='%s'" JLIB_APPLICATION_ERROR_LAYOUTFILE_NOT_FOUND="Layout %s not found." JLIB_APPLICATION_ERROR_LIBRARY_NOT_FOUND="Library not found." JLIB_APPLICATION_ERROR_LIBRARY_NOT_LOADING="Error loading library: %1$s, %2$s" JLIB_APPLICATION_ERROR_MODEL_GET_NAME="JModel: :getName() : Can't get or parse class name." JLIB_APPLICATION_ERROR_MODULE_LOAD="Error loading module %s" JLIB_APPLICATION_ERROR_PATHWAY_LOAD="Unable to load pathway: %s" JLIB_APPLICATION_ERROR_REORDER_FAILED="Reorder failed. Error: %s" JLIB_APPLICATION_ERROR_ROUTER_LOAD="Unable to load router: %s" JLIB_APPLICATION_ERROR_MODELCLASS_NOT_FOUND="Model class %s not found in file." JLIB_APPLICATION_ERROR_SAVE_FAILED="Save failed with the following error: %s" JLIB_APPLICATION_ERROR_SAVE_NOT_PERMITTED="Save not permitted." JLIB_APPLICATION_ERROR_TABLE_NAME_NOT_SUPPORTED="Table %s not supported. File not found." JLIB_APPLICATION_ERROR_TASK_NOT_FOUND="Task [%s] not found." JLIB_APPLICATION_ERROR_UNHELD_ID="You are not permitted to use that link to directly access that page (#%d)." JLIB_APPLICATION_ERROR_VIEW_CLASS_NOT_FOUND="View class not found [class, file]: %1$s, %2$s" JLIB_APPLICATION_ERROR_VIEW_GET_NAME_SUBSTRING="JView: :getName() : Your classname contains the substring 'view'. This causes problems when extracting the classname from the name of your objects view. Avoid Object names with the substring 'view'." JLIB_APPLICATION_ERROR_VIEW_GET_NAME="JView: :getName() : Can't get or parse class name." JLIB_APPLICATION_ERROR_VIEW_NOT_FOUND="View not found [name, type, prefix]: %1$s, %2$s, %3$s" JLIB_APPLICATION_SAVE_SUCCESS="Item successfully saved." JLIB_APPLICATION_SUBMIT_SAVE_SUCCESS="Item successfully submitted." JLIB_APPLICATION_SUCCESS_BATCH="Batch process completed successfully." JLIB_APPLICATION_SUCCESS_ITEM_REORDERED="Ordering successfully saved." JLIB_APPLICATION_SUCCESS_ORDERING_SAVED="Ordering successfully saved." JLIB_APPLICATION_SUCCESS_LOAD_HISTORY="Prior version successfully restored. Saved on %s %s." JLIB_LOGIN_AUTHENTICATE="Username and password do not match or you do not have an account yet." JLIB_CACHE_ERROR_CACHE_HANDLER_LOAD="Unable to load Cache Handler: %s" JLIB_CACHE_ERROR_CACHE_STORAGE_LOAD="Unable to load Cache Storage: %s" JLIB_CAPTCHA_ERROR_PLUGIN_NOT_FOUND="Captcha plugin not set or not found. Please contact a site administrator." JLIB_CLIENT_ERROR_JFTP_NO_CONNECT="JFTP: :connect: Could not connect to host ' %1$s ' on port ' %2$s '" JLIB_CLIENT_ERROR_JFTP_NO_CONNECT_SOCKET="JFTP: :connect: Could not connect to host ' %1$s ' on port ' %2$s '. Socket error number: %3$s and error message: %4$s" JLIB_CLIENT_ERROR_JFTP_BAD_RESPONSE="JFTP: :connect: Bad response. Server response: %s [Expected: 220]" JLIB_CLIENT_ERROR_JFTP_BAD_USERNAME="JFTP: :login: Bad Username. Server response: %1$s [Expected: 331]. Username sent: %2$s" JLIB_CLIENT_ERROR_JFTP_BAD_PASSWORD="JFTP: :login: Bad Password. Server response: %1$s [Expected: 230]. Password sent: %2$s" JLIB_CLIENT_ERROR_JFTP_PWD_BAD_RESPONSE_NATIVE="FTP: :pwd: Bad response." JLIB_CLIENT_ERROR_JFTP_PWD_BAD_RESPONSE="JFTP: :pwd: Bad response. Server response: %s [Expected: 257]" JLIB_CLIENT_ERROR_JFTP_SYST_BAD_RESPONSE_NATIVE="JFTP: :syst: Bad response." JLIB_CLIENT_ERROR_JFTP_SYST_BAD_RESPONSE="JFTP: :syst: Bad response. Server response: %s [Expected: 215]" JLIB_CLIENT_ERROR_JFTP_CHDIR_BAD_RESPONSE_NATIVE="JFTP: :chdir: Bad response." JLIB_CLIENT_ERROR_JFTP_CHDIR_BAD_RESPONSE="JFTP: :chdir: Bad response. Server response: %1$s [Expected: 250]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_REINIT_BAD_RESPONSE_NATIVE="JFTP: :reinit: Bad response." JLIB_CLIENT_ERROR_JFTP_REINIT_BAD_RESPONSE="JFTP: :reinit: Bad response. Server response: %s [Expected: 220]" JLIB_CLIENT_ERROR_JFTP_RENAME_BAD_RESPONSE_NATIVE="JFTP: :rename: Bad response." JLIB_CLIENT_ERROR_JFTP_RENAME_BAD_RESPONSE_FROM="JFTP: :rename: Bad response. Server response: %1$s [Expected: 350]. From path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_RENAME_BAD_RESPONSE_TO="JFTP: :rename: Bad response. Server response: %1$s [Expected: 250]. To path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_CHMOD_BAD_RESPONSE_NATIVE="JFTP: :chmod: Bad response." JLIB_CLIENT_ERROR_JFTP_CHMOD_BAD_RESPONSE="JFTP: :chmod: Bad response. Server response: %1$s [Expected: 250]. Path sent: %2$s. Mode sent: %3$s" JLIB_CLIENT_ERROR_JFTP_DELETE_BAD_RESPONSE_NATIVE="JFTP: :delete: Bad response." JLIB_CLIENT_ERROR_JFTP_DELETE_BAD_RESPONSE="JFTP: :delete: Bad response. Server response: %1$s [Expected: 250]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_MKDIR_BAD_RESPONSE_NATIVE="JFTP: :mkdir: Bad response." JLIB_CLIENT_ERROR_JFTP_MKDIR_BAD_RESPONSE="JFTP: :mkdir: Bad response. Server response: %1$s [Expected: 257]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_RESTART_BAD_RESPONSE_NATIVE="JFTP: :restart: Bad response." JLIB_CLIENT_ERROR_JFTP_RESTART_BAD_RESPONSE="JFTP: :restart: Bad response. Server response: %1$s [Expected: 350]. Restart point sent: %2$s" JLIB_CLIENT_ERROR_JFTP_CREATE_BAD_RESPONSE_BUFFER="JFTP: :create: Bad response." JLIB_CLIENT_ERROR_JFTP_CREATE_BAD_RESPONSE_PASSIVE="JFTP: :create: Unable to use passive mode." JLIB_CLIENT_ERROR_JFTP_CREATE_BAD_RESPONSE="JFTP: :create: Bad response. Server response: %1$s [Expected: 150 or 125]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_CREATE_BAD_RESPONSE_TRANSFER="JFTP: :create: Transfer Failed. Server response: %1$s [Expected: 226]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_READ_BAD_RESPONSE_BUFFER="JFTP: :read: Bad response." JLIB_CLIENT_ERROR_JFTP_READ_BAD_RESPONSE_PASSIVE="JFTP: :read: Unable to use passive mode." JLIB_CLIENT_ERROR_JFTP_READ_BAD_RESPONSE="JFTP: :read: Bad response. Server response: %1$s [Expected: 150 or 125]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_READ_BAD_RESPONSE_TRANSFER="JFTP: :read: Transfer Failed. Server response: %1$s [Expected: 226]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_GET_BAD_RESPONSE="JFTP: :get: Bad response." JLIB_CLIENT_ERROR_JFTP_GET_PASSIVE="JFTP: :get: Unable to use passive mode." JLIB_CLIENT_ERROR_JFTP_GET_WRITING_LOCAL="JFTP: :get: Unable to open local file for writing. Local path: %s" JLIB_CLIENT_ERROR_JFTP_GET_BAD_RESPONSE_RETR="JFTP: :get: Bad response. Server response: %1$s [Expected: 150 or 125]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_GET_BAD_RESPONSE_TRANSFER="JFTP: :get: Transfer Failed. Server response: %1$s [Expected: 226]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_STORE_PASSIVE="JFTP: :store: Unable to use passive mode." JLIB_CLIENT_ERROR_JFTP_STORE_BAD_RESPONSE="JFTP: :store: Bad response." JLIB_CLIENT_ERROR_JFTP_STORE_READING_LOCAL="JFTP: :store: Unable to open local file for reading. Local path: %s" JLIB_CLIENT_ERROR_JFTP_STORE_FIND_LOCAL="JFTP: :store: Unable to find local file. Local path: %s" JLIB_CLIENT_ERROR_JFTP_STORE_BAD_RESPONSE_STOR="JFTP: :store: Bad response. Server response: %1$s [Expected: 150 or 125]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_STORE_DATA_PORT="JFTP: :store: Unable to write to data port socket." JLIB_CLIENT_ERROR_JFTP_STORE_BAD_RESPONSE_TRANSFER="JFTP: :store: Transfer Failed. Server response: %1$s [Expected: 226]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_WRITE_PASSIVE="JFTP: :write: Unable to use passive mode." JLIB_CLIENT_ERROR_JFTP_WRITE_BAD_RESPONSE="JFTP: :write: Bad response." JLIB_CLIENT_ERROR_JFTP_WRITE_BAD_RESPONSE_STOR="JFTP: :write: Bad response. Server response: %1$s [Expected: 150 or 125]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_WRITE_DATA_PORT="JFTP: :write: Unable to write to data port socket." JLIB_CLIENT_ERROR_JFTP_WRITE_BAD_RESPONSE_TRANSFER="JFTP: :write: Transfer Failed. Server response: %1$s [Expected: 226]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_LISTNAMES_PASSIVE="JFTP: :listNames: Unable to use passive mode." JLIB_CLIENT_ERROR_JFTP_LISTNAMES_BAD_RESPONSE="JFTP: :listNames: Bad response." JLIB_CLIENT_ERROR_JFTP_LISTNAMES_BAD_RESPONSE_NLST="JFTP: :listNames: Bad response. Server response: %1$s [Expected: 150 or 125]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_LISTNAMES_BAD_RESPONSE_TRANSFER="JFTP: :listNames: Transfer Failed. Server response: %1$s [Expected: 226]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_LISTDETAILS_BAD_RESPONSE="JFTP: :listDetails: Bad response." JLIB_CLIENT_ERROR_JFTP_LISTDETAILS_PASSIVE="JFTP: :listDetails: Unable to use passive mode." JLIB_CLIENT_ERROR_JFTP_LISTDETAILS_BAD_RESPONSE_LIST="JFTP: :listDetails: Bad response. Server response: %1$s [Expected: 150 or 125]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_LISTDETAILS_BAD_RESPONSE_TRANSFER="JFTP: :listDetails: Transfer Failed. Server response: %1$s [Expected: 226]. Path sent: %2$s" JLIB_CLIENT_ERROR_JFTP_LISTDETAILS_UNRECOGNISED="JFTP: :listDetails: Unrecognised folder listing format." JLIB_CLIENT_ERROR_JFTP_PUTCMD_UNCONNECTED="JFTP: :_putCmd: Not connected to the control port." JLIB_CLIENT_ERROR_JFTP_PUTCMD_SEND="JFTP: :_putCmd: Unable to send command: %s" JLIB_CLIENT_ERROR_JFTP_VERIFYRESPONSE="JFTP: :_verifyResponse: Timeout or unrecognised response while waiting for a response from the server. Server response: %s" JLIB_CLIENT_ERROR_JFTP_PASSIVE_CONNECT_PORT="JFTP: :_passive: Not connected to the control port." JLIB_CLIENT_ERROR_JFTP_PASSIVE_RESPONSE="JFTP: :_passive: Timeout or unrecognised response while waiting for a response from the server. Server response: %s" JLIB_CLIENT_ERROR_JFTP_PASSIVE_IP_OBTAIN="JFTP: :_passive: Unable to obtain IP and port for data transfer. Server response: %s" JLIB_CLIENT_ERROR_JFTP_PASSIVE_IP_VALID="JFTP: :_passive: IP and port for data transfer not valid. Server response: %s" JLIB_CLIENT_ERROR_JFTP_PASSIVE_CONNECT="JFTP: :_passive: Could not connect to host %1$s on port %2$s. Socket error number: %3$s and error message: %4$s" JLIB_CLIENT_ERROR_JFTP_MODE_BINARY="JFTP: :_mode: Bad response. Server response: %s [Expected: 200]. Mode sent: Binary." JLIB_CLIENT_ERROR_JFTP_MODE_ASCII="JFTP: :_mode: Bad response. Server response: %s [Expected: 200]. Mode sent: Ascii." JLIB_CLIENT_ERROR_HELPER_SETCREDENTIALSFROMREQUEST_FAILED="Looks like User's credentials are no good." JLIB_CLIENT_ERROR_LDAP_ADDRESS_NOT_AVAILABLE="Address not available." JLIB_DATABASE_ERROR_ADAPTER_MYSQL="The MySQL adapter 'mysql' is not available." JLIB_DATABASE_ERROR_ADAPTER_MYSQLI="The MySQL adapter 'mysqli' is not available." JLIB_DATABASE_ERROR_BIND_FAILED_INVALID_SOURCE_ARGUMENT="%s: :bind failed. Invalid source argument." JLIB_DATABASE_ERROR_ARTICLE_UNIQUE_ALIAS="Another article from this category has the same alias (remember it may be a trashed item)." JLIB_DATABASE_ERROR_CATEGORY_UNIQUE_ALIAS="Another category with the same parent category has the same alias (remember it may be a trashed item)." JLIB_DATABASE_ERROR_CHECK_FAILED="%s: :check Failed - %s" JLIB_DATABASE_ERROR_CHECKIN_FAILED="%s: :check-in failed - %s" JLIB_DATABASE_ERROR_CHECKOUT_FAILED="%s: :check-out failed - %s" JLIB_DATABASE_ERROR_CHILD_ROWS_CHECKED_OUT="Child rows checked out." JLIB_DATABASE_ERROR_CLASS_DOES_NOT_SUPPORT_ORDERING="%s does not support ordering." JLIB_DATABASE_ERROR_CLASS_IS_MISSING_FIELD="Missing field in the database: %s   %s." JLIB_DATABASE_ERROR_CLASS_NOT_FOUND_IN_FILE="Table class %s not found in file." JLIB_DATABASE_ERROR_CONNECT_DATABASE="Unable to connect to the Database: %s" JLIB_DATABASE_ERROR_CONNECT_MYSQL="Could not connect to MySQL." JLIB_DATABASE_ERROR_DATABASE_CONNECT="Could not connect to database." JLIB_DATABASE_ERROR_DELETE_CATEGORY="Left-Right data inconsistency. Can't delete category." JLIB_DATABASE_ERROR_DELETE_FAILED="%s: :delete failed - %s" JLIB_DATABASE_ERROR_DELETE_ROOT_CATEGORIES="Root categories can't be deleted." JLIB_DATABASE_ERROR_EMAIL_INUSE="This email address is already registered." JLIB_DATABASE_ERROR_EMPTY_ROW_RETURNED="The database row is empty." JLIB_DATABASE_ERROR_FUNCTION_FAILED="DB function failed with error number %s <br /><span style="_QQ_"color: red;"_QQ_">%s</span>" JLIB_DATABASE_ERROR_GET_NEXT_ORDER_FAILED="%s: :getNextOrder failed - %s" JLIB_DATABASE_ERROR_GET_TREE_FAILED="%s: :getTree Failed - %s" JLIB_DATABASE_ERROR_GETNODE_FAILED="%s: :_getNode Failed - %s" JLIB_DATABASE_ERROR_GETROOTID_FAILED="%s: :getRootId Failed - %s" JLIB_DATABASE_ERROR_HIT_FAILED="%s: :hit failed - %s" JLIB_DATABASE_ERROR_INVALID_LOCATION="%s: :setLocation - Invalid location." JLIB_DATABASE_ERROR_INVALID_NODE_RECURSION="%s: :move Failed - Can't move the node to be a child of itself." JLIB_DATABASE_ERROR_INVALID_PARENT_ID="Invalid parent ID." JLIB_DATABASE_ERROR_LANGUAGE_NO_TITLE="The language should have a title." JLIB_DATABASE_ERROR_LANGUAGE_UNIQUE_IMAGE="A content language already exists with this Image Prefix." JLIB_DATABASE_ERROR_LANGUAGE_UNIQUE_LANG_CODE="A content language already exists with this Language Tag." JLIB_DATABASE_ERROR_LANGUAGE_UNIQUE_SEF="A content language already exists with this URL Language Code." JLIB_DATABASE_ERROR_LOAD_DATABASE_DRIVER="Unable to load Database Driver: %s" JLIB_DATABASE_ERROR_MENUTYPE="Some menu items or some menu modules related to this menutype are checked out by another user or the default menu item is in this menu." JLIB_DATABASE_ERROR_MENUTYPE_CHECKOUT="The user checking out does not match the user who checked out this menu and/or its linked menu module." JLIB_DATABASE_ERROR_MENUTYPE_EMPTY="Menu type empty." JLIB_DATABASE_ERROR_MENUTYPE_EXISTS="Menu type exists: %s" JLIB_DATABASE_ERROR_MENU_CANNOT_UNSET_DEFAULT="The Language parameter for this menu item must be set to 'All'. At least one Default menu item must have Language set to All, even if the site is multilingual." JLIB_DATABASE_ERROR_MENU_CANNOT_UNSET_DEFAULT_DEFAULT="At least one menu item has to be set as Default." JLIB_DATABASE_ERROR_MENU_UNPUBLISH_DEFAULT_HOME="Can't unpublish default home." JLIB_DATABASE_ERROR_MENU_DEFAULT_CHECKIN_USER_MISMATCH="The current home menu for this language is checked out." JLIB_DATABASE_ERROR_MENU_UNIQUE_ALIAS="Another menu item with the same parent has this alias (remember it may be a trashed item)." JLIB_DATABASE_ERROR_MENU_UNIQUE_ALIAS_ROOT="Another menu item has the same alias in Root (remember it may be a trashed item). Root is the top level parent." JLIB_DATABASE_ERROR_MENU_HOME_NOT_COMPONENT="The home menu item must be a component." JLIB_DATABASE_ERROR_MENU_HOME_NOT_UNIQUE_IN_MENU="A menu should contain only one Default home." JLIB_DATABASE_ERROR_MENU_ROOT_ALIAS_COMPONENT="A first level menu item alias can't be 'component'." JLIB_DATABASE_ERROR_MENU_ROOT_ALIAS_FOLDER="A first level menu item alias can't be '%s' because '%s' is a sub-folder of your joomla installation folder." JLIB_DATABASE_ERROR_MOVE_FAILED="%s: :move failed - %s" JLIB_DATABASE_ERROR_MUSTCONTAIN_A_TITLE_CATEGORY="Category must have a title." JLIB_DATABASE_ERROR_MUSTCONTAIN_A_TITLE_EXTENSION="Extension must have a title." JLIB_DATABASE_ERROR_MUSTCONTAIN_A_TITLE_MENUITEM="Menu Item must have a title." JLIB_DATABASE_ERROR_MUSTCONTAIN_A_TITLE_MODULE="Module must have a title." JLIB_DATABASE_ERROR_MUSTCONTAIN_A_TITLE_UPDATESITE="Update site must have a title." JLIB_DATABASE_ERROR_NEGATIVE_NOT_PERMITTED="%s can't be negative." JLIB_DATABASE_ERROR_NO_ROWS_SELECTED="No rows selected." JLIB_DATABASE_ERROR_NOT_SUPPORTED_FILE_NOT_FOUND="Table %s not supported. File not found." JLIB_DATABASE_ERROR_NULL_PRIMARY_KEY="Null primary key not allowed." JLIB_DATABASE_ERROR_ORDERDOWN_FAILED="%s: :orderDown Failed - %s" JLIB_DATABASE_ERROR_ORDERUP_FAILED="%s: :orderUp Failed - %s" JLIB_DATABASE_ERROR_PLEASE_ENTER_A_USER_NAME="Please enter a username." JLIB_DATABASE_ERROR_PLEASE_ENTER_YOUR_NAME="Please enter your name." JLIB_DATABASE_ERROR_PUBLISH_FAILED="%s: :publish failed - %s" JLIB_DATABASE_ERROR_REBUILD_FAILED="%s: :rebuild Failed - %s" JLIB_DATABASE_ERROR_REBUILDPATH_FAILED="%s: :rebuildPath Failed - %s" JLIB_DATABASE_ERROR_REORDER_FAILED="%s: :reorder failed - %s" JLIB_DATABASE_ERROR_REORDER_UPDATE_ROW_FAILED="%s: :reorder update the row %s failed - %s" JLIB_DATABASE_ERROR_ROOT_NODE_NOT_FOUND="Root node not found." JLIB_DATABASE_ERROR_STORE_FAILED_UPDATE_ASSET_ID="The asset_id field could not be updated." JLIB_DATABASE_ERROR_STORE_FAILED="%1$s: :store failed<br />%2$s" JLIB_DATABASE_ERROR_USERGROUP_TITLE="User group must have a title." JLIB_DATABASE_ERROR_USERGROUP_TITLE_EXISTS="User group title already exists. Title must be unique with the same parent." JLIB_DATABASE_ERROR_USERLEVEL_NAME_EXISTS="Level with the name "%s" already exists." JLIB_DATABASE_ERROR_USERNAME_CANNOT_CHANGE="Can't use this username." JLIB_DATABASE_ERROR_USERNAME_INUSE="Username in use." JLIB_DATABASE_ERROR_VALID_AZ09="Please enter a valid username. No space at beginning or end, at least %d characters and must <strong>not</strong> contain the following characters: < > \ " ' % ; ( ) &." JLIB_DATABASE_ERROR_VALID_MAIL="Please enter a valid email address." JLIB_DATABASE_ERROR_VIEWLEVEL="Viewlevel must have a title." JLIB_DATABASE_FUNCTION_NOERROR="DB function reports no errors." JLIB_DATABASE_QUERY_FAILED="Database query failed (error # %s): %s" JLIB_DOCUMENT_ERROR_UNABLE_LOAD_DOC_CLASS="Unable to load document class." JLIB_ENVIRONMENT_SESSION_EXPIRED="Your session has expired. Please log in again." JLIB_ERROR_INFINITE_LOOP="Infinite loop detected in JError." JLIB_EVENT_ERROR_DISPATCHER="JEventDispatcher: :register: Event handler not recognised. Handler: %s" JLIB_FILESYSTEM_BZIP_NOT_SUPPORTED="BZip2 Not Supported." JLIB_FILESYSTEM_BZIP_UNABLE_TO_READ="Unable to read archive (bz2)." JLIB_FILESYSTEM_BZIP_UNABLE_TO_WRITE="Unable to write archive (bz2)." JLIB_FILESYSTEM_BZIP_UNABLE_TO_WRITE_FILE="Unable to write file (bz2)." JLIB_FILESYSTEM_GZIP_NOT_SUPPORTED="GZlib Not Supported." JLIB_FILESYSTEM_GZIP_UNABLE_TO_READ="Unable to read archive (gz)." JLIB_FILESYSTEM_GZIP_UNABLE_TO_WRITE="Unable to write archive (gz)." JLIB_FILESYSTEM_GZIP_UNABLE_TO_WRITE_FILE="Unable to write file (gz)." JLIB_FILESYSTEM_GZIP_UNABLE_TO_DECOMPRESS="Unable to decompress data." JLIB_FILESYSTEM_TAR_UNABLE_TO_READ="Unable to read archive (tar)." JLIB_FILESYSTEM_TAR_UNABLE_TO_DECOMPRESS="Unable to decompress data." JLIB_FILESYSTEM_TAR_UNABLE_TO_CREATE_DESTINATION="Unable to create destination." JLIB_FILESYSTEM_TAR_UNABLE_TO_WRITE_ENTRY="Unable to write entry." JLIB_FILESYSTEM_ZIP_NOT_SUPPORTED="Zlib Not Supported." JLIB_FILESYSTEM_ZIP_UNABLE_TO_READ="Unable to read archive (zip)." JLIB_FILESYSTEM_ZIP_INFO_FAILED="Get ZIP Information failed." JLIB_FILESYSTEM_ZIP_UNABLE_TO_CREATE_DESTINATION="Unable to create destination." JLIB_FILESYSTEM_ZIP_UNABLE_TO_WRITE_ENTRY="Unable to write entry." JLIB_FILESYSTEM_ZIP_UNABLE_TO_READ_ENTRY="Unable to read entry." JLIB_FILESYSTEM_ZIP_UNABLE_TO_OPEN_ARCHIVE="Unable to open archive." JLIB_FILESYSTEM_ZIP_INVALID_ZIP_DATA="Invalid ZIP data." JLIB_FILESYSTEM_STREAM_FAILED="Failed to register string stream." JLIB_FILESYSTEM_UNKNOWNARCHIVETYPE="Unknown Archive type." JLIB_FILESYSTEM_UNABLE_TO_LOAD_ARCHIVE="Unable to load archive." JLIB_FILESYSTEM_ERROR_JFILE_FIND_COPY="JFile: :copy: Can't find or read file: $%s" JLIB_FILESYSTEM_ERROR_JFILE_STREAMS="JFile: :copy(%1$s, %2$s): %3$s" JLIB_FILESYSTEM_ERROR_COPY_FAILED="Copy failed." JLIB_FILESYSTEM_DELETE_FAILED="Failed deleting %s" JLIB_FILESYSTEM_CANNOT_FIND_SOURCE_FILE="Can't find source file." JLIB_FILESYSTEM_ERROR_JFILE_MOVE_STREAMS="JFile: :move: %s" JLIB_FILESYSTEM_ERROR_RENAME_FILE="Rename failed." JLIB_FILESYSTEM_ERROR_READ_UNABLE_TO_OPEN_FILE="JFile: :read: Unable to open file: %s" JLIB_FILESYSTEM_ERROR_WRITE_STREAMS="JFile: :write(%1$s): %2$s" JLIB_FILESYSTEM_ERROR_UPLOAD="JFile: :upload: %s" JLIB_FILESYSTEM_ERROR_WARNFS_ERR01="Warning: Failed to change file permissions!" JLIB_FILESYSTEM_ERROR_WARNFS_ERR02="Warning: Failed to move file!" JLIB_FILESYSTEM_ERROR_WARNFS_ERR03="Warning: File %s not uploaded for security reasons!" JLIB_FILESYSTEM_ERROR_FIND_SOURCE_FOLDER="Can't find source folder." JLIB_FILESYSTEM_ERROR_FOLDER_EXISTS="Folder already exists." JLIB_FILESYSTEM_ERROR_FOLDER_CREATE="Unable to create target folder." JLIB_FILESYSTEM_ERROR_FOLDER_OPEN="Unable to open source folder." JLIB_FILESYSTEM_ERROR_FOLDER_LOOP="Infinite loop detected." JLIB_FILESYSTEM_ERROR_FOLDER_PATH="Path not in open_basedir paths." JLIB_FILESYSTEM_ERROR_COULD_NOT_CREATE_DIRECTORY="Could not create folder." JLIB_FILESYSTEM_ERROR_DELETE_BASE_DIRECTORY="You can't delete a base folder." JLIB_FILESYSTEM_ERROR_PATH_IS_NOT_A_FOLDER="JFolder: :delete: Path is not a folder. Path: %s" JLIB_FILESYSTEM_ERROR_FOLDER_DELETE="JFolder: :delete: Could not delete folder. Path: %s" JLIB_FILESYSTEM_ERROR_FOLDER_RENAME="Rename failed: %s" JLIB_FILESYSTEM_ERROR_PATH_IS_NOT_A_FOLDER_FILES="JFolder: :files: Path is not a folder. Path: %s" JLIB_FILESYSTEM_ERROR_PATH_IS_NOT_A_FOLDER_FOLDER="JFolder: :folder: Path is not a folder. Path: %s" JLIB_FILESYSTEM_ERROR_STREAMS_FILE_SIZE="Failed to get file size. This may not work for all streams!" JLIB_FILESYSTEM_ERROR_STREAMS_FILE_NOT_OPEN="File not open." JLIB_FILESYSTEM_ERROR_STREAMS_FILENAME="File name not set." JLIB_FILESYSTEM_ERROR_NO_DATA_WRITTEN="Warning: No data written." JLIB_FILESYSTEM_ERROR_STREAMS_FAILED_TO_OPEN_WRITER="Failed to open writer: %s" JLIB_FILESYSTEM_ERROR_STREAMS_FAILED_TO_OPEN_READER="Failed to open reader: %s" JLIB_FILESYSTEM_ERROR_STREAMS_NOT_UPLOADED_FILE="Not an uploaded file!" JLIB_FORM_BUTTON_CLEAR="Clear" JLIB_FORM_BUTTON_SELECT="Select" JLIB_FORM_CHANGE_IMAGE="Change Image" JLIB_FORM_CHANGE_IMAGE_BUTTON="Change Image Button" JLIB_FORM_CHANGE_USER="Select User" JLIB_FORM_ERROR_FIELDS_CATEGORY_ERROR_EXTENSION_EMPTY="Extension attribute is empty in the category field." JLIB_FORM_ERROR_FIELDS_GROUPEDLIST_ELEMENT_NAME="Unknown element type: %s" JLIB_FORM_ERROR_NO_DATA="No data." JLIB_FORM_ERROR_VALIDATE_FIELD="Invalid xml field." JLIB_FORM_ERROR_XML_FILE_DID_NOT_LOAD="XML file did not load." JLIB_FORM_FIELD_INVALID="Invalid field: " JLIB_FORM_INPUTMODE="latin" JLIB_FORM_INVALID_FORM_OBJECT="Invalid Form Object: :%s" JLIB_FORM_INVALID_FORM_RULE="Invalid Form Rule: :%s" JLIB_FORM_MEDIA_PREVIEW_ALT="Selected image." JLIB_FORM_MEDIA_PREVIEW_EMPTY="No image selected." JLIB_FORM_MEDIA_PREVIEW_SELECTED_IMAGE="Selected image." JLIB_FORM_MEDIA_PREVIEW_TIP_TITLE="Preview" JLIB_FORM_SELECT_USER="Select a User." JLIB_FORM_VALIDATE_FIELD_INVALID="Invalid field: %s" JLIB_FORM_VALIDATE_FIELD_REQUIRED="Field required: %s" JLIB_FORM_VALIDATE_FIELD_RULE_MISSING="Validation Rule missing: %s" JLIB_FORM_VALUE_CACHE_APC="Alternative PHP Cache" JLIB_FORM_VALUE_CACHE_CACHELITE="Cache_Lite" JLIB_FORM_VALUE_CACHE_EACCELERATOR="eAccelerator" JLIB_FORM_VALUE_CACHE_FILE="File" JLIB_FORM_VALUE_CACHE_MEMCACHE="Memcache" JLIB_FORM_VALUE_CACHE_MEMCACHED="Memcached (Experimental)" JLIB_FORM_VALUE_CACHE_REDIS="Redis" JLIB_FORM_VALUE_CACHE_WINCACHE="Windows Cache" JLIB_FORM_VALUE_CACHE_XCACHE="XCache" JLIB_FORM_VALUE_SESSION_APC="Alternative PHP Cache" JLIB_FORM_VALUE_SESSION_DATABASE="Database" JLIB_FORM_VALUE_SESSION_EACCELERATOR="eAccelerator" JLIB_FORM_VALUE_SESSION_MEMCACHE="Memcache" JLIB_FORM_VALUE_SESSION_MEMCACHED="Memcached (Experimental)" JLIB_FORM_VALUE_SESSION_NONE="None" JLIB_FORM_VALUE_SESSION_WINCACHE="Windows Cache" JLIB_FORM_VALUE_SESSION_XCACHE="XCache" JLIB_FORM_VALUE_TIMEZONE_UTC="Universal Time, Coordinated (UTC)" JLIB_FORM_VALUE_FROM_TEMPLATE="From Template" JLIB_FORM_VALUE_INHERITED="Inherited" JLIB_HTML_ACCESS_MODIFY_DESC_CAPTION_ACL="ACL" JLIB_HTML_ACCESS_MODIFY_DESC_CAPTION_TABLE="Table" JLIB_HTML_ACCESS_SUMMARY_DESC_CAPTION="ACL Summary Table" JLIB_HTML_ACCESS_SUMMARY_DESC="Shown below is an overview of the permission settings for this article. Select the tabs above to customise these settings by action." JLIB_HTML_ACCESS_SUMMARY="Summary." JLIB_HTML_ADD_TO_ROOT="Add to root." JLIB_HTML_ADD_TO_THIS_MENU="Add to this menu." JLIB_HTML_BATCH_ACCESS_LABEL="Set Access Level" JLIB_HTML_BATCH_ACCESS_LABEL_DESC="Not making a selection will keep the original access levels when processing." JLIB_HTML_BATCH_COPY="Copy" JLIB_HTML_BATCH_LANGUAGE_LABEL="Set Language" JLIB_HTML_BATCH_LANGUAGE_LABEL_DESC="Not making a selection will keep the original language when processing." JLIB_HTML_BATCH_LANGUAGE_NOCHANGE="- Keep original Language -" JLIB_HTML_BATCH_MENU_LABEL="To Move or Copy your selection please select a Category." JLIB_HTML_BATCH_MOVE="Move" JLIB_HTML_BATCH_MOVE_QUESTION="Do you want to move the items or make a copy of them?" JLIB_HTML_BATCH_NO_CATEGORY="- Don't move or copy -" JLIB_HTML_BATCH_NOCHANGE="- Keep original Access Levels -" JLIB_HTML_BATCH_TAG_LABEL="Add Tag" JLIB_HTML_BATCH_TAG_LABEL_DESC="Add a tag to selected items." JLIB_HTML_BATCH_TAG_NOCHANGE="- Keep original Tags -" JLIB_HTML_BATCH_USER_LABEL="Set User." JLIB_HTML_BATCH_USER_LABEL_DESC="Not making a selection will keep the original user when processing." JLIB_HTML_BATCH_USER_NOCHANGE="- Keep original User -" JLIB_HTML_BATCH_USER_NOUSER="No User." JLIB_HTML_BEHAVIOR_ABOUT_THE_CALENDAR="About the Calendar" JLIB_HTML_BEHAVIOR_CLOSE="Close" JLIB_HTML_BEHAVIOR_DATE_SELECTION="Date selection:\n" JLIB_HTML_BEHAVIOR_DISPLAY_S_FIRST="Display %s first" JLIB_HTML_BEHAVIOR_DRAG_TO_MOVE="Drag to move." JLIB_HTML_BEHAVIOR_GO_TODAY="Go to today" JLIB_HTML_BEHAVIOR_GREEN="Green" JLIB_HTML_BEHAVIOR_HOLD_MOUSE="- Hold mouse button on any of the buttons above for faster selection." JLIB_HTML_BEHAVIOR_MONTH_SELECT="- Use the < and > buttons to select month\n" JLIB_HTML_BEHAVIOR_NEXT_MONTH_HOLD_FOR_MENU="Select to move to the next month. Select and hold for a list of the months." JLIB_HTML_BEHAVIOR_NEXT_YEAR_HOLD_FOR_MENU="Select to move to the next year. Select and hold for a list of years." JLIB_HTML_BEHAVIOR_PREV_MONTH_HOLD_FOR_MENU="Select to move to the previous month. Select and hold for a list of the months." JLIB_HTML_BEHAVIOR_PREV_YEAR_HOLD_FOR_MENU="Select to move to the previous year. Select and hold for a list of years." JLIB_HTML_BEHAVIOR_SELECT_DATE="Select a date." JLIB_HTML_BEHAVIOR_SHIFT_CLICK_OR_DRAG_TO_CHANGE_VALUE="(Shift-)Select or Drag to change the value." JLIB_HTML_BEHAVIOR_TIME="Time:" JLIB_HTML_BEHAVIOR_TODAY="Today" JLIB_HTML_BEHAVIOR_TT_DATE_FORMAT="%a, %b %e" JLIB_HTML_BEHAVIOR_WK="wk" JLIB_HTML_BEHAVIOR_YEAR_SELECT="- Use the « and » buttons to select year\n" JLIB_HTML_BUTTON_BASE_CLASS="Could not load button base class." JLIB_HTML_BUTTON_NO_LOAD="Could not load button %s (%s);" JLIB_HTML_BUTTON_NOT_DEFINED="Button not defined for type = %s" JLIB_HTML_CALENDAR="Calendar" JLIB_HTML_CHECKED_OUT="Checked out." JLIB_HTML_CHECKIN="Check-in" JLIB_HTML_CLOAKING="This email address is being protected from spambots. You need JavaScript enabled to view it." JLIB_HTML_DATE_RELATIVE_DAYS="%s days ago." JLIB_HTML_DATE_RELATIVE_DAYS_1="%s day ago." JLIB_HTML_DATE_RELATIVE_DAYS_0="%s days ago." JLIB_HTML_DATE_RELATIVE_HOURS="%s hours ago." JLIB_HTML_DATE_RELATIVE_HOURS_1="%s hour ago." JLIB_HTML_DATE_RELATIVE_HOURS_0="%s hours ago." JLIB_HTML_DATE_RELATIVE_LESSTHANAMINUTE="Less than a minute ago." JLIB_HTML_DATE_RELATIVE_MINUTES="%s minutes ago." JLIB_HTML_DATE_RELATIVE_MINUTES_1="%s minute ago." JLIB_HTML_DATE_RELATIVE_MINUTES_0="%s minutes ago." JLIB_HTML_DATE_RELATIVE_WEEKS="%s weeks ago." JLIB_HTML_DATE_RELATIVE_WEEKS_1="%s week ago." JLIB_HTML_DATE_RELATIVE_WEEKS_0="%s weeks ago." JLIB_HTML_EDIT_MENU_ITEM="Edit menu item." JLIB_HTML_EDIT_MENU_ITEM_ID="Item ID: %s" JLIB_HTML_EDIT_MODULE="Edit module" JLIB_HTML_EDIT_MODULE_IN_POSITION="Position: %s" JLIB_HTML_EDITOR_CANNOT_LOAD="Can't load the editor." JLIB_HTML_END="End" JLIB_HTML_ERROR_FUNCTION_NOT_SUPPORTED="Function not supported." JLIB_HTML_ERROR_NOTFOUNDINFILE="%s: :%s not found in file." JLIB_HTML_ERROR_NOTSUPPORTED_NOFILE="%s: :%s not supported. File not found." JLIB_HTML_ERROR_NOTSUPPORTED="%s: :%s not supported." JLIB_HTML_MOVE_DOWN="Move Down" JLIB_HTML_MOVE_UP="Move Up" JLIB_HTML_NO_PARAMETERS_FOR_THIS_ITEM="There are no parameters for this item." JLIB_HTML_NO_RECORDS_FOUND="No records found." JLIB_HTML_PAGE_CURRENT_OF_TOTAL="Page %s of %s" JLIB_HTML_PLEASE_MAKE_A_SELECTION_FROM_THE_LIST="Please first make a selection from the list." JLIB_HTML_PUBLISH_ITEM="Publish Item" JLIB_HTML_PUBLISHED_EXPIRED_ITEM="Published, but has Expired." JLIB_HTML_PUBLISHED_FINISHED="Finish: %s" JLIB_HTML_PUBLISHED_ITEM="Published and is Current." JLIB_HTML_PUBLISHED_PENDING_ITEM="Published, but is Pending." JLIB_HTML_PUBLISHED_START="Start: %s" JLIB_HTML_RESULTS_OF="Results %s - %s of %s" JLIB_HTML_SAVE_ORDER="Save Order" JLIB_HTML_SELECT_STATE="Select State" JLIB_HTML_START="Start" JLIB_HTML_UNPUBLISH_ITEM="Unpublish Item" JLIB_HTML_VIEW_ALL="View All" JLIB_HTML_SETDEFAULT_ITEM="Set default" JLIB_HTML_UNSETDEFAULT_ITEM="Unset default" JLIB_INSTALLER_ABORT="Aborting language installation: %s" JLIB_INSTALLER_ABORT_ALREADYINSTALLED="Extension is already installed." JLIB_INSTALLER_ABORT_ALREADY_EXISTS="Extension %1$s: Extension %2$s already exists." JLIB_INSTALLER_ABORT_COMP_BUILDADMINMENUS_FAILED="Error building Administrator Menus." JLIB_INSTALLER_ABORT_COMP_COPY_MANIFEST="Component %1$s: Could not copy PHP manifest file." JLIB_INSTALLER_ABORT_COMP_COPY_SETUP="Component %1$s: Could not copy setup file." JLIB_INSTALLER_ABORT_COMP_FAIL_ADMIN_FILES="Component %s: Failed to copy administrator files." JLIB_INSTALLER_ABORT_COMP_FAIL_SITE_FILES="Component %s: Failed to copy site files." JLIB_INSTALLER_ABORT_COMP_INSTALL_COPY_SETUP="Component Install: Could not copy setup file." JLIB_INSTALLER_ABORT_COMP_INSTALL_CUSTOM_INSTALL_FAILURE="Component Install: Custom install routine failure." JLIB_INSTALLER_ABORT_COMP_INSTALL_MANIFEST="Component Install: Could not copy PHP manifest file." JLIB_INSTALLER_ABORT_COMP_INSTALL_PHP_INSTALL="Component Install: Could not copy PHP install file." JLIB_INSTALLER_ABORT_COMP_INSTALL_PHP_UNINSTALL="Component Install: Could not copy PHP uninstall file." JLIB_INSTALLER_ABORT_COMP_INSTALL_ROLLBACK="Component Install: %s" JLIB_INSTALLER_ABORT_COMP_INSTALL_SQL_ERROR="Component Install: SQL error file %s" JLIB_INSTALLER_ABORT_COMP_UPDATESITEMENUS_FAILED="Component Install: Failed to update menu items." JLIB_INSTALLER_ABORT_COMP_UPDATE_ADMIN_ELEMENT="Component Update: The XML file did not contain an administration element." JLIB_INSTALLER_ABORT_COMP_UPDATE_COPY_SETUP="Component Update: Could not copy setup file." JLIB_INSTALLER_ABORT_COMP_UPDATE_MANIFEST="Component Update: Could not copy PHP manifest file." JLIB_INSTALLER_ABORT_COMP_UPDATE_PHP_INSTALL="Component Update: Could not copy PHP install file." JLIB_INSTALLER_ABORT_COMP_UPDATE_PHP_UNINSTALL="Component Update: Could not copy PHP uninstall file." JLIB_INSTALLER_ABORT_COMP_UPDATE_ROLLBACK="Component Update: %s" JLIB_INSTALLER_ABORT_COMP_UPDATE_SQL_ERROR="Component Update: SQL error file %s" JLIB_INSTALLER_ABORT_CREATE_DIRECTORY="Extension %1$s: Failed to create folder: %2$s" JLIB_INSTALLER_ABORT_DEBUG="Installation unexpectedly terminated:" JLIB_INSTALLER_ABORT_DETECTMANIFEST="Unable to detect manifest file." JLIB_INSTALLER_ABORT_DIRECTORY="Extension %1$s: Another %2$s is already using the named folder: %3$s. Are you trying to install the same extension again?" JLIB_INSTALLER_ABORT_EXTENSIONNOTVALID="Extension is not valid." JLIB_INSTALLER_ABORT_FILE_INSTALL_COPY_SETUP="Files Install: Could not copy setup file." JLIB_INSTALLER_ABORT_FILE_INSTALL_CUSTOM_INSTALL_FAILURE="Files Install: Custom install routine failure." JLIB_INSTALLER_ABORT_FILE_INSTALL_FAIL_SOURCE_DIRECTORY="Files Install: Failed to find source folder: %s" JLIB_INSTALLER_ABORT_FILE_INSTALL_ROLLBACK="Files Install: %s" JLIB_INSTALLER_ABORT_FILE_INSTALL_SQL_ERROR="Files %1$s: SQL error file %2$s" JLIB_INSTALLER_ABORT_FILE_ROLLBACK="Files Install: %s" JLIB_INSTALLER_ABORT_FILE_SAME_NAME="Files Install: Another extension with same name already exists." JLIB_INSTALLER_ABORT_FILE_UPDATE_SQL_ERROR="Files Update: SQL error file %s" JLIB_INSTALLER_ABORT_INSTALL_CUSTOM_INSTALL_FAILURE="Extension %s: Custom install routine failure." JLIB_INSTALLER_ABORT_LIB_COPY_FILES="Library %s: Could not copy files from the source." JLIB_INSTALLER_ABORT_LIB_INSTALL_ALREADY_INSTALLED="Library Install: Library already installed." JLIB_INSTALLER_ABORT_LIB_INSTALL_COPY_SETUP="Library Install: Could not copy setup file." JLIB_INSTALLER_ABORT_LIB_INSTALL_FAILED_TO_CREATE_DIRECTORY="Library Install: Failed to create folder: %s" JLIB_INSTALLER_ABORT_LIB_INSTALL_NOFILE="Library Install: No library file specified." JLIB_INSTALLER_ABORT_LIB_INSTALL_ROLLBACK="Library Install: %s" JLIB_INSTALLER_ABORT_LOAD_DETAILS="Failed to load extension details." JLIB_INSTALLER_ABORT_MANIFEST="Extension %1$s: Could not copy PHP manifest file." JLIB_INSTALLER_ABORT_METHODNOTSUPPORTED="Method not supported for this extension type." JLIB_INSTALLER_ABORT_METHODNOTSUPPORTED_TYPE="Method not supported for this extension type: %s" JLIB_INSTALLER_ABORT_MOD_COPY_FILES="Module %s: Could not copy files from the source." JLIB_INSTALLER_ABORT_MOD_INSTALL_COPY_SETUP="Module Install: Could not copy setup file." JLIB_INSTALLER_ABORT_MOD_INSTALL_CREATE_DIRECTORY="Module %1$s: Failed to create folder: %2$s" JLIB_INSTALLER_ABORT_MOD_INSTALL_CUSTOM_INSTALL_FAILURE="Module Install: Custom install routine failure." JLIB_INSTALLER_ABORT_MOD_INSTALL_DIRECTORY="Module %1$s: Another module is already using folder: %2$s" JLIB_INSTALLER_ABORT_MOD_INSTALL_MANIFEST="Module Install: Could not copy PHP manifest file." JLIB_INSTALLER_ABORT_MOD_INSTALL_NOFILE="Module %s: No module file specified." JLIB_INSTALLER_ABORT_MOD_INSTALL_SQL_ERROR="Module %1$s: SQL error file %2$s" JLIB_INSTALLER_ABORT_MOD_ROLLBACK="Module %1$s: %2$s" JLIB_INSTALLER_ABORT_MOD_UNINSTALL_UNKNOWN_CLIENT="Module Uninstall: Unknown client type [%s]" JLIB_INSTALLER_ABORT_MOD_UNKNOWN_CLIENT="Module %1$s: Unknown client type [%2$s]" JLIB_INSTALLER_ABORT_NOINSTALLPATH="Install path does not exist." JLIB_INSTALLER_ABORT_NOUPDATEPATH="Update path does not exist." JLIB_INSTALLER_ABORT_PACK_INSTALL_COPY_SETUP="Package Install: Could not copy setup file." JLIB_INSTALLER_ABORT_PACK_INSTALL_CREATE_DIRECTORY="Package Install: Failed to create folder:%s." JLIB_INSTALLER_ABORT_PACKAGE_INSTALL_CUSTOM_INSTALL_FAILURE="Package Install: Custom install routine failure." JLIB_INSTALLER_ABORT_PACKAGE_INSTALL_MANIFEST="Installation failed: Could not copy PHP manifest file." JLIB_INSTALLER_ABORT_PACK_INSTALL_ERROR_EXTENSION="Package %1$s: There was an error installing an extension: %2$s" JLIB_INSTALLER_ABORT_PACK_INSTALL_NO_FILES="Package %s: There were no files to install!" JLIB_INSTALLER_ABORT_PACK_INSTALL_NO_PACK="Package %s: No package file specified." JLIB_INSTALLER_ABORT_PACK_INSTALL_ROLLBACK="Package Install: %s" JLIB_INSTALLER_ABORT_PLG_COPY_FILES="Plugin %s: Could not copy files from the source." JLIB_INSTALLER_ABORT_PLG_INSTALL_ALLREADY_EXISTS="Plugin %1$s: Plugin %2$s already exists." JLIB_INSTALLER_ABORT_PLG_INSTALL_COPY_SETUP="Plugin %s: Could not copy setup file." JLIB_INSTALLER_ABORT_PLG_INSTALL_CREATE_DIRECTORY="Plugin %1$s: Failed to create folder: %2$s" JLIB_INSTALLER_ABORT_PLG_INSTALL_CUSTOM_INSTALL_FAILURE="Plugin Install: Custom install routine failure." JLIB_INSTALLER_ABORT_PLG_INSTALL_DIRECTORY="Plugin %1$s: Another plugin is already using folder: %2$s" JLIB_INSTALLER_ABORT_PLG_INSTALL_MANIFEST="Plugin %s: Could not copy PHP manifest file." JLIB_INSTALLER_ABORT_PLG_INSTALL_NO_FILE="Plugin %s: No plugin file specified." JLIB_INSTALLER_ABORT_PLG_INSTALL_ROLLBACK="Plugin %1$s: %2$s" JLIB_INSTALLER_ABORT_PLG_INSTALL_SQL_ERROR="Plugin %1$s: SQL error file %2$s" JLIB_INSTALLER_ABORT_PLG_UNINSTALL_SQL_ERROR="Plugin Uninstall: SQL error file %s" JLIB_INSTALLER_ABORT_REFRESH_MANIFEST_CACHE="Refresh Manifest Cache failed: Extension is not currently installed." JLIB_INSTALLER_ABORT_REFRESH_MANIFEST_CACHE_VALID="Refresh Manifest Cache failed: Extension is not valid." JLIB_INSTALLER_ABORT_ROLLBACK="Extension %1$s: %2$s" JLIB_INSTALLER_ABORT_SQL_ERROR="Extension %1$s: SQL error processing query: %2$s" JLIB_INSTALLER_ABORT_TPL_INSTALL_ALREADY_INSTALLED="Template Install: Template already installed." JLIB_INSTALLER_ABORT_TPL_INSTALL_ANOTHER_TEMPLATE_USING_DIRECTORY="Template Install: There is already a Template using the named folder: %s. Are you trying to install the same template again?" JLIB_INSTALLER_ABORT_TPL_INSTALL_COPY_FILES="Template Install: Could not copy files from the %s source." JLIB_INSTALLER_ABORT_TPL_INSTALL_COPY_SETUP="Template Install: Could not copy setup file." JLIB_INSTALLER_ABORT_TPL_INSTALL_FAILED_CREATE_DIRECTORY="Template Install: Failed to create folder: %s" JLIB_INSTALLER_ABORT_TPL_INSTALL_ROLLBACK="Template Install: %s" JLIB_INSTALLER_ABORT_TPL_INSTALL_UNKNOWN_CLIENT="Template Install: Unknown client type [%s]" JLIB_INSTALLER_AVAILABLE_UPDATE_PHP_VERSION="For the extension %1$s version %2$s is available, but it requires at least PHP version %3$s while your system only has %4$s" JLIB_INSTALLER_PURGED_UPDATES="Cleared updates" JLIB_INSTALLER_FAILED_TO_PURGE_UPDATES="Failed to clear updates." JLIB_INSTALLER_DEFAULT_STYLE="%s - Default" JLIB_INSTALLER_DISCOVER="Discover" JLIB_INSTALLER_ERROR_COMP_DISCOVER_STORE_DETAILS="Component Discover install: Failed to store component details." JLIB_INSTALLER_ERROR_COMP_FAILED_TO_CREATE_DIRECTORY="Component %1$s: Failed to create folder: %2$s." JLIB_INSTALLER_ERROR_COMP_INSTALL_ADMIN_ELEMENT="Component Install: The XML file did not contain an administration element." JLIB_INSTALLER_ERROR_COMP_INSTALL_DIR_ADMIN="Component Install: Another component is already using folder: %s" JLIB_INSTALLER_ERROR_COMP_INSTALL_DIR_SITE="Component Install: Another component is already using folder: %s" JLIB_INSTALLER_ERROR_COMP_INSTALL_FAILED_TO_CREATE_DIRECTORY_ADMIN="Component Install: Failed to create administrator folder: %s" JLIB_INSTALLER_ERROR_COMP_INSTALL_FAILED_TO_CREATE_DIRECTORY_SITE="Component Install: Failed to create site folder: %s" JLIB_INSTALLER_ERROR_COMP_REFRESH_MANIFEST_CACHE="Component Refresh manifest cache: Failed to store component details." JLIB_INSTALLER_ERROR_COMP_REMOVING_ADMIN_MENUS_FAILED="Could not delete the Administrator menus." JLIB_INSTALLER_ERROR_COMP_UNINSTALL_CUSTOM="Component Uninstall: Custom Uninstall script unsuccessful." JLIB_INSTALLER_ERROR_COMP_UNINSTALL_FAILED_DELETE_CATEGORIES="Component Uninstall: Unable to delete the component categories." JLIB_INSTALLER_ERROR_COMP_UNINSTALL_ERRORREMOVEMANUALLY="Component Uninstall: Can't uninstall. Please remove manually." JLIB_INSTALLER_ERROR_COMP_UNINSTALL_ERRORUNKOWNEXTENSION="Component Uninstall: Unknown Extension." JLIB_INSTALLER_ERROR_COMP_UNINSTALL_FAILED_REMOVE_DIRECTORY_ADMIN="Component Uninstall: Unable to remove the component administrator folder." JLIB_INSTALLER_ERROR_COMP_UNINSTALL_FAILED_REMOVE_DIRECTORY_SITE="Component Uninstall: Unable to remove the component site folder." JLIB_INSTALLER_ERROR_COMP_UNINSTALL_NO_OPTION="Component Uninstall: Option field empty, can't remove files." JLIB_INSTALLER_ERROR_COMP_UNINSTALL_SQL_ERROR="Component Uninstall: SQL error file %s" JLIB_INSTALLER_ERROR_COMP_UNINSTALL_WARNCORECOMPONENT="Component Uninstall: Trying to uninstall a core component." JLIB_INSTALLER_ERROR_COMP_UPDATE_FAILED_TO_CREATE_DIRECTORY_ADMIN="Component Update: Failed to create administrator folder: %s" JLIB_INSTALLER_ERROR_COMP_UPDATE_FAILED_TO_CREATE_DIRECTORY_SITE="Component Update: Failed to create site folder: %s" JLIB_INSTALLER_ERROR_CREATE_DIRECTORY="JInstaller: :Install: Failed to create folder: %s" JLIB_INSTALLER_ERROR_CREATE_FOLDER_FAILED="Failed to create folder [%s]" JLIB_INSTALLER_ERROR_DEPRECATED_FORMAT="Deprecated install format (client="_QQ_"both"_QQ_"), use package installer in future." JLIB_INSTALLER_ERROR_DISCOVER_INSTALL_UNSUPPORTED="A %s extension can not be installed using the discover method. Please install this extension from Extension Manager: Install." JLIB_INSTALLER_ERROR_DOWNLOAD_SERVER_CONNECT="Error connecting to the server: %s" JLIB_INSTALLER_ERROR_FAIL_COPY_FILE="JInstaller: :Install: Failed to copy file %1$s to %2$s" JLIB_INSTALLER_ERROR_FAIL_COPY_FOLDER="JInstaller: :Install: Failed to copy folder %1$s to %2$s" JLIB_INSTALLER_ERROR_FAILED_READING_NETWORK_RESOURCES="Failed reading network resource: %s" JLIB_INSTALLER_ERROR_FILE_EXISTS="JInstaller: :Install: File already exists %s" JLIB_INSTALLER_ERROR_FILE_UNINSTALL_INVALID_MANIFEST="Files Uninstall: Invalid manifest file." JLIB_INSTALLER_ERROR_FILE_UNINSTALL_INVALID_NOTFOUND_MANIFEST="Files Uninstall: Manifest file invalid or not found." JLIB_INSTALLER_ERROR_FILE_UNINSTALL_LOAD_ENTRY="Files Uninstall: Could not load extension entry." JLIB_INSTALLER_ERROR_FILE_UNINSTALL_LOAD_MANIFEST="Files Uninstall: Could not load manifest file." JLIB_INSTALLER_ERROR_FILE_UNINSTALL_SQL_ERROR="Files Uninstall: SQL error file %s" JLIB_INSTALLER_ERROR_FILE_UNINSTALL_WARNCOREFILE="File Uninstall: Trying to uninstall core files." JLIB_INSTALLER_ERROR_FOLDER_IN_USE="Another extension is already using folder [%s]" JLIB_INSTALLER_ERROR_LANG_DISCOVER_STORE_DETAILS="Language Discover install: Failed to store language details." JLIB_INSTALLER_ERROR_LANG_UNINSTALL_DEFAULT="This language can't be uninstalled as long as it is defined as a default language." JLIB_INSTALLER_ERROR_LANG_UNINSTALL_DIRECTORY="Language Uninstall: Unable to remove the specified Language folder." JLIB_INSTALLER_ERROR_LANG_UNINSTALL_ELEMENT_EMPTY="Language Uninstall: Element is empty, can't uninstall files." JLIB_INSTALLER_ERROR_LANG_UNINSTALL_PATH_EMPTY="Language Uninstall: Language path is empty, can't uninstall files." JLIB_INSTALLER_ERROR_LANG_UNINSTALL_PROTECTED="This language can't be uninstalled. It is protected in the database (usually en-GB)." JLIB_INSTALLER_ERROR_LIB_DISCOVER_STORE_DETAILS="Library Discover install: Failed to store library details." JLIB_INSTALLER_ERROR_LIB_UNINSTALL_INVALID_MANIFEST="Library Uninstall: Invalid manifest file." JLIB_INSTALLER_ERROR_LIB_UNINSTALL_INVALID_NOTFOUND_MANIFEST="Library Uninstall: Manifest file invalid or not found." JLIB_INSTALLER_ERROR_LIB_UNINSTALL_LOAD_MANIFEST="Library Uninstall: Could not load manifest file." JLIB_INSTALLER_ERROR_LIB_UNINSTALL_WARNCORELIBRARY="Library Uninstall: Trying to uninstall a core library." JLIB_INSTALLER_ERROR_LOAD_XML="JInstaller: :Install: Failed to load XML File: %s" JLIB_INSTALLER_ERROR_MOD_DISCOVER_STORE_DETAILS="Module Discover install: Failed to store module details." JLIB_INSTALLER_ERROR_MOD_REFRESH_MANIFEST_CACHE="Module Refresh manifest cache: Failed to store module details." JLIB_INSTALLER_ERROR_MOD_UNINSTALL_ERRORUNKOWNEXTENSION="Module Uninstall: Unknown Extension." JLIB_INSTALLER_ERROR_MOD_UNINSTALL_EXCEPTION="Module Uninstall: %s" JLIB_INSTALLER_ERROR_MOD_UNINSTALL_INVALID_NOTFOUND_MANIFEST="Module Uninstall: Manifest file invalid or not found." JLIB_INSTALLER_ERROR_MOD_UNINSTALL_SQL_ERROR="Module Uninstall: SQL error file %s" JLIB_INSTALLER_ERROR_MOD_UNINSTALL_WARNCOREMODULE="Module Uninstall: Trying to uninstall a core module: %s" JLIB_INSTALLER_ERROR_NO_CORE_LANGUAGE="No core pack exists for the language [%s]" JLIB_INSTALLER_ERROR_NO_FILE="JInstaller: :Install: File does not exist %s" JLIB_INSTALLER_ERROR_NO_LANGUAGE_TAG="The package did not specify a language tag. Are you trying to install an old language package?" JLIB_INSTALLER_ERROR_NOTFINDJOOMLAXMLSETUPFILE="JInstaller: :Install: Can't find Joomla XML setup file." JLIB_INSTALLER_ERROR_NOTFINDXMLSETUPFILE="JInstaller: :Install: Can't find XML setup file." JLIB_INSTALLER_ERROR_PACK_UNINSTALL_INVALID_MANIFEST="Package Uninstall: Invalid manifest file." JLIB_INSTALLER_ERROR_PACK_UNINSTALL_INVALID_NOTFOUND_MANIFEST="Package Uninstall: Manifest file invalid or not found: %s" JLIB_INSTALLER_ERROR_PACK_UNINSTALL_LOAD_MANIFEST="Package Uninstall: Could not load manifest file." JLIB_INSTALLER_ERROR_PACK_UNINSTALL_MANIFEST_NOT_REMOVED="Package Uninstall: Errors were detected, manifest file not removed!" JLIB_INSTALLER_ERROR_PACK_UNINSTALL_MISSINGMANIFEST="Package Uninstall: Missing manifest file." JLIB_INSTALLER_ERROR_PACK_UNINSTALL_NOT_PROPER="Package Uninstall: This extension may have already been uninstalled or might not have been uninstall properly: %s" JLIB_INSTALLER_ERROR_PACK_UNINSTALL_WARNCOREPACK="Package Uninstall: Trying to uninstall core package." JLIB_INSTALLER_ERROR_PLG_DISCOVER_STORE_DETAILS="Plugin Discover install: Failed to store plugin details." JLIB_INSTALLER_ERROR_PLG_REFRESH_MANIFEST_CACHE="Plugin Refresh manifest cache: Failed to store plugin details." JLIB_INSTALLER_ERROR_PLG_UNINSTALL_ERRORUNKOWNEXTENSION="Plugin Uninstall: Unknown Extension." JLIB_INSTALLER_ERROR_PLG_UNINSTALL_FOLDER_FIELD_EMPTY="Plugin Uninstall: Folder field empty, can't remove files." JLIB_INSTALLER_ERROR_PLG_UNINSTALL_INVALID_MANIFEST="Plugin Uninstall: Invalid manifest file." JLIB_INSTALLER_ERROR_PLG_UNINSTALL_INVALID_NOTFOUND_MANIFEST="Plugin Uninstall: Manifest file invalid or not found." JLIB_INSTALLER_ERROR_PLG_UNINSTALL_LOAD_MANIFEST="Plugin Uninstall: Could not load manifest file." JLIB_INSTALLER_ERROR_PLG_UNINSTALL_WARNCOREPLUGIN="Plugin Uninstall: Trying to uninstall a core plugin: %s" JLIB_INSTALLER_ERROR_SQL_ERROR="JInstaller: :Install: Error SQL %s" JLIB_INSTALLER_ERROR_SQL_FILENOTFOUND="JInstaller: :Install: SQL File not found %s" JLIB_INSTALLER_ERROR_SQL_READBUFFER="JInstaller: :Install: SQL File Buffer Read Error." JLIB_INSTALLER_ERROR_TPL_DISCOVER_STORE_DETAILS="Template Discover install: Failed to store template details." JLIB_INSTALLER_ERROR_TPL_UNINSTALL_ERRORUNKOWNEXTENSION="Template Uninstall: Unknown Extension." JLIB_INSTALLER_ERROR_TPL_UNINSTALL_INVALID_CLIENT="Template Uninstall: Invalid client." JLIB_INSTALLER_ERROR_TPL_UNINSTALL_INVALID_NOTFOUND_MANIFEST="Template Uninstall: Manifest file invalid or not found." JLIB_INSTALLER_ERROR_TPL_UNINSTALL_TEMPLATE_DEFAULT="Template Uninstall: Can't remove default template." JLIB_INSTALLER_ERROR_TPL_UNINSTALL_TEMPLATE_DIRECTORY="Template Uninstall: Folder does not exist, can't remove files." JLIB_INSTALLER_ERROR_TPL_UNINSTALL_TEMPLATE_ID_EMPTY="Template Uninstall: Template ID is empty, can't uninstall files." JLIB_INSTALLER_ERROR_TPL_UNINSTALL_WARNCORETEMPLATE="Template Uninstall: Trying to uninstall a core template: %s" JLIB_INSTALLER_ERROR_UNKNOWN_CLIENT_TYPE="Unknown Client Type [%s]" JLIB_INSTALLER_INSTALL="Install" JLIB_INSTALLER_NOTICE_LANG_RESET_USERS="Language set to Default for %d users." JLIB_INSTALLER_NOTICE_LANG_RESET_USERS_1="Language set to Default for %d user." JLIB_INSTALLER_UNINSTALL="Uninstall" JLIB_INSTALLER_UPDATE="Update" JLIB_INSTALLER_ERROR_EXTENSION_INVALID_CLIENT_IDENTIFIER="Invalid client identifier specified in extension manifest." JLIB_INSTALLER_ERROR_PACK_UNINSTALL_UNKNOWN_EXTENSION="Attempting to uninstall unknown extension from package. This extension may have already been removed earlier." JLIB_INSTALLER_NOT_ERROR="If the error is related to the installation of TinyMCE language files it has no effect on the installation of the language(s). Some language packs created prior to Joomla! 3.2.0 may try to install separate TinyMCE language files. As these are now included in the core they no longer need to be installed." JLIB_INSTALLER_UPDATE_LOG_QUERY="Ran query from file %1$s. Query text: %2$s." JLIB_MAIL_FUNCTION_DISABLED="The mail() function has been disabled and the mail can't be sent." JLIB_MAIL_FUNCTION_OFFLINE="The mail function has been temporarily disabled on this site, please try again later." JLIB_MAIL_INVALID_EMAIL_SENDER="JMail: : Invalid email Sender: %s, JMail: :setSender(%s)." JLIB_MEDIA_ERROR_UPLOAD_INPUT="Unable to upload file." JLIB_MEDIA_ERROR_WARNFILENAME="File name must only contain alphanumeric characters and no spaces." JLIB_MEDIA_ERROR_WARNFILETOOLARGE="This file is too large to upload." JLIB_MEDIA_ERROR_WARNFILETYPE="This file type is not supported." JLIB_MEDIA_ERROR_WARNIEXSS="Possible IE XSS Attack found." JLIB_MEDIA_ERROR_WARNINVALID_IMG="Not a valid image." JLIB_MEDIA_ERROR_WARNINVALID_MIME="Illegal or invalid mime type detected." JLIB_MEDIA_ERROR_WARNNOTADMIN="Uploaded file is not an image file and you do not have permission." JLIB_PLUGIN_ERROR_LOADING_PLUGINS="Error loading Plugins: %s" JLIB_REGISTRY_EXCEPTION_LOAD_FORMAT_CLASS="Unable to load format class." JLIB_RULES_ACTION="Action" JLIB_RULES_ALLOWED="Allowed" JLIB_RULES_ALLOWED_ADMIN="Allowed (Super User)" JLIB_RULES_CALCULATED_SETTING="Calculated Setting <sup>2</sup>" JLIB_RULES_CONFLICT="Conflict" JLIB_RULES_DENIED="Denied" JLIB_RULES_GROUP="%s" JLIB_RULES_GROUPS="Groups" JLIB_RULES_INHERIT="Inherit" JLIB_RULES_INHERITED="Inherited" JLIB_RULES_NOT_ALLOWED="Not Allowed." JLIB_RULES_NOT_ALLOWED_ADMIN_CONFLICT="Conflict" JLIB_RULES_NOT_ALLOWED_LOCKED="Not Allowed (Locked)" JLIB_RULES_NOT_SET="Not Set" JLIB_RULES_SELECT_ALLOW_DENY_GROUP="Allow or deny %s for users in the %s group." JLIB_RULES_SELECT_SETTING="Select New Setting <sup>1</sup>" JLIB_RULES_SETTING_NOTES="1. If you change the setting, it will apply to this and all child groups, components and content. Note that <em>Denied</em> will overrule any inherited setting and also the setting in any child group, component or content. In the case of a setting conflict, <em>Deny</em> will take precedence. <em>Not Set</em> is equivalent to <em>Denied</em> but can be changed in child groups, components and content.<br />2. If you select a new setting, select <em>Save</em> to refresh the calculated settings." JLIB_RULES_SETTING_NOTES_ITEM="1. If you change the setting, it will apply to this item. Note that:<br /><em>Inherited</em> means that the permissions from global configuration, parent group and category will be used.<br /><em>Denied</em> means that no matter what the global configuration, parent group or category settings are, the group being edited can't take this action on this item.<br /><em>Allowed</em> means that the group being edited will be able to take this action for this item (but if this is in conflict with the global configuration, parent group or category it will have no impact; a conflict will be indicated by <em>Not Allowed (Locked)</em> under Calculated Settings).<br />2. If you select a new setting, select <em>Save</em> to refresh the calculated settings." JLIB_RULES_SETTINGS_DESC="Manage the permission settings for the user groups below. See notes at the bottom." JLIB_UNKNOWN="Unknown" JLIB_UPDATER_ERROR_COLLECTION_FOPEN="The PHP allow_url_fopen setting is disabled. This setting must be enabled for the updater to work." JLIB_UPDATER_ERROR_COLLECTION_OPEN_URL="Update: :Collection: Could not open %s" JLIB_UPDATER_ERROR_COLLECTION_PARSE_URL="Update: :Collection: Could not parse %s" JLIB_UPDATER_ERROR_EXTENSION_OPEN_URL="Update: :Extension: Could not open %s" JLIB_UPDATER_ERROR_EXTENSION_PARSE_URL="Update: :Extension: Could not parse %s" JLIB_UPDATER_ERROR_OPEN_UPDATE_SITE="Update: Could not open update site #%d "%s", URL: %s" JLIB_USER_ERROR_AUTHENTICATION_FAILED_LOAD_PLUGIN="JAuthentication: :authenticate: Failed to load plugin: %s" JLIB_USER_ERROR_AUTHENTICATION_LIBRARIES="JAuthentication: :__construct: Could not load authentication libraries." JLIB_USER_ERROR_BIND_ARRAY="Unable to bind array to user object." JLIB_USER_ERROR_CANNOT_DEMOTE_SELF="You can't remove your own Super User permissions." JLIB_USER_ERROR_CANNOT_REUSE_PASSWORD="You can't reuse your current password, please enter a new password." JLIB_USER_ERROR_ID_NOT_EXISTS="JUser: :_load: User %s does not exist." JLIB_USER_ERROR_NOT_SUPERADMIN="Only users with Super User permissions can change other Super User user accounts." JLIB_USER_ERROR_PASSWORD_NOT_MATCH="Passwords do not match. Please re-enter password." JLIB_USER_ERROR_UNABLE_TO_FIND_USER="Unable to find a user with given activation string." JLIB_USER_ERROR_UNABLE_TO_LOAD_USER="JUser: :_load: Unable to load user with ID: %s" JLIB_USER_EXCEPTION_ACCESS_USERGROUP_INVALID="User group does not exist." JLIB_UTIL_ERROR_APP_INSTANTIATION="Application Startup Error." JLIB_UTIL_ERROR_CONNECT_DATABASE="JDatabase: :getInstance: Could not connect to database <br />joomla.library: %1$s - %2$s" JLIB_UTIL_ERROR_DOMIT="DommitDocument is deprecated. Use DomDocument instead." JLIB_UTIL_ERROR_LOADING_FEED_DATA="Error loading feed data." JLIB_UTIL_ERROR_XML_LOAD="Failed loading XML file." PKb��\mb��(language/en-GB/en-GB.plg_user_joomla.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_USER_JOOMLA="User - Joomla!" PLG_USER_JOOMLA_FIELD_AUTOREGISTER_DESC="Automatically create Registered Users where possible." PLG_USER_JOOMLA_FIELD_AUTOREGISTER_LABEL="Auto-create Users" PLG_USER_JOOMLA_FIELD_FORCELOGOUT_DESC="Set to No to disable this." PLG_USER_JOOMLA_FIELD_FORCELOGOUT_LABEL="Force Logout for all Sessions?" PLG_USER_JOOMLA_FIELD_MAILTOUSER_DESC="When an administrator creates a user account, this determines if an email, which contains their username and password, is sent to the user." PLG_USER_JOOMLA_FIELD_MAILTOUSER_LABEL="Notification Mail to User" PLG_USER_JOOMLA_FIELD_STRONG_PASSWORDS_DESC="If set to yes, use the bcrypt encryption method if available in this version of PHP." PLG_USER_JOOMLA_FIELD_STRONG_PASSWORDS_LABEL="Strong Passwords" PLG_USER_JOOMLA_NEW_USER_EMAIL_BODY="Hello %s,\n\n\nYou have been added as a User to %s by an Administrator.\n\nThis email contains your username and password to log in to %s\n\nUsername: %s\nPassword: %s\n\n\nPlease do not respond to this message as it is automatically generated and is for information purposes only." PLG_USER_JOOMLA_NEW_USER_EMAIL_SUBJECT="New User Details" PLG_USER_JOOMLA_POSTINSTALL_STRONGPW_BTN="Enable Strong Password Encryption" PLG_USER_JOOMLA_POSTINSTALL_STRONGPW_TEXT="As a security feature, Joomla allows you to switch to strong password encryption.<br />To turn strong passwords on select the button below. Alternatively you can edit the User - Joomla plugin and change the strong password setting to On.<br />Before enabling you should verify that all third party registration/login, user management or bridge extensions installed on your site support this strong password encryption." PLG_USER_JOOMLA_POSTINSTALL_STRONGPW_TITLE="Strong passwords" PLG_USER_JOOMLA_XML_DESCRIPTION="Handles Joomla's default User synchronisation." PKb��\"���4language/en-GB/en-GB.plg_authentication_ldap.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_AUTHENTICATION_LDAP="Authentication - LDAP" PLG_LDAP_XML_DESCRIPTION="Handles User Authentication against an LDAP server.<br /><strong> Warning! You must have at least one authentication plugin enabled or you will lose all access to your site.</strong>" PKb��\2���3language/en-GB/en-GB.plg_installer_webinstaller.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_INSTALLER_WEBINSTALLER="Installer - Install from Web" PLG_INSTALLER_WEBINSTALLER_LOAD_APPS="Display the extensions" PLG_INSTALLER_WEBINSTALLER_TAB_POSITION_DESC="Indicate whether to place the Install from Web tab first or last." PLG_INSTALLER_WEBINSTALLER_TAB_POSITION_LABEL="Tab Position" PLG_INSTALLER_WEBINSTALLER_TAB_POSITION_FIRST="First" PLG_INSTALLER_WEBINSTALLER_TAB_POSITION_LAST="Last" PLG_INSTALLER_WEBINSTALLER_XML_DESCRIPTION="This plugin offers functionality for the 'Install from Web' tab." PKb��\�y��xx2language/en-GB/en-GB.plg_authentication_joomla.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_AUTH_JOOMLA_ERR_SECRET_CODE_WITHOUT_TFA="You need to enable two factor authentication in your user profile to use the secret code field." PLG_AUTH_JOOMLA_XML_DESCRIPTION="Handles Joomla's default User authentication.<br /><strong> Warning! You must have at least one authentication plugin enabled or you will lose all access to your site.</strong>" PLG_AUTHENTICATION_JOOMLA="Authentication - Joomla"PKb��\m��@��/language/en-GB/en-GB.plg_content_finder.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_CONTENT_FINDER="Content - Smart Search" PLG_CONTENT_FINDER_XML_DESCRIPTION="Changes to content will not update the Smart Search index if you do not enable this plugin." PKb��\�_<���+language/en-GB/en-GB.plg_system_p3p.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_P3P_XML_DESCRIPTION="The system P3P policy plugin allows Joomla! to send a customised string of P3P policy tags in the HTTP header. This is required for the sessions to work on certain browsers, ie Internet Explorer 6 and 7." PLG_SYSTEM_P3P="System - P3P Policy" PKb��\+S�x��:language/en-GB/en-GB.plg_quickicon_extensionupdate.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_QUICKICON_EXTENSIONUPDATE="Quick Icon - Joomla! Extensions Updates Notification" PLG_QUICKICON_EXTENSIONUPDATE_XML_DESCRIPTION="Checks for updates of your installed third-party extensions and notifies you when you visit the Control Panel page." PKb��\�ʎ���)language/en-GB/en-GB.com_weblinks.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_WEBLINKS="Weblinks" COM_WEBLINKS_CATEGORIES="Categories" COM_WEBLINKS_CATEGORIES_VIEW_DEFAULT_DESC="Show all the web link categories within a category." COM_WEBLINKS_CATEGORIES_VIEW_DEFAULT_OPTION="Default" COM_WEBLINKS_CATEGORIES_VIEW_DEFAULT_TITLE="List All Web Link Categories" COM_WEBLINKS_CATEGORY_ADD_TITLE="Category Manager: Add A New Web Links Category" COM_WEBLINKS_CATEGORY_EDIT_TITLE="Category Manager: Edit A Web Links Category" COM_WEBLINKS_CATEGORY_VIEW_DEFAULT_DESC="Displays a list of Web Links for a category." COM_WEBLINKS_CATEGORY_VIEW_DEFAULT_OPTION="Default" COM_WEBLINKS_CATEGORY_VIEW_DEFAULT_TITLE="List Web Links in a Category" COM_WEBLINKS_CONTENT_TYPE_WEBLINK="Web Link" COM_WEBLINKS_CONTENT_TYPE_CATEGORY="Web Links Category" COM_WEBLINKS_FORM_VIEW_DEFAULT_DESC="Display a form to submit a web link in the Frontend." COM_WEBLINKS_FORM_VIEW_DEFAULT_OPTION="Default" COM_WEBLINKS_FORM_VIEW_DEFAULT_TITLE="Submit a Web Link" COM_WEBLINKS_LINKS="Links" COM_WEBLINKS_XML_DESCRIPTION="Component for web links management." PKb��\Ѻu��!language/en-GB/en-GB.com_ajax.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_AJAX="Ajax Interface" COM_AJAX_XML_DESCRIPTION="An extendable Ajax interface for Joomla." COM_AJAX_SPECIFY_FORMAT="Please specify a valid response format, other than that of HTML, such as json, raw, debug, etc." COM_AJAX_METHOD_NOT_EXISTS="Method %s does not exist." COM_AJAX_FILE_NOT_EXISTS="The file at %s does not exist." COM_AJAX_MODULE_NOT_ACCESSIBLE="Module %s is not published, you do not have access to it, or it's not assigned to the current menu item." PKb��\S���[[language/en-GB/en-GB.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <metafile version="3.4" client="administrator"> <name>English (en-GB)</name> <version>3.4.3</version> <creationDate>2013-03-07</creationDate> <author>Joomla! Project</author> <authorEmail>admin@joomla.org</authorEmail> <authorUrl>www.joomla.org</authorUrl> <copyright>Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.</copyright> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <description>en-GB administrator language</description> <metadata> <name>English (en-GB)</name> <tag>en-GB</tag> <rtl>0</rtl> <locale>en_GB.utf8, en_GB.UTF-8, en_GB, eng_GB, en, english, english-uk, uk, gbr, britain, england, great britain, uk, united kingdom, united-kingdom</locale> <firstDay>0</firstDay> <weekEnd>0,6</weekEnd> </metadata> <params /> </metafile> PKb��\��rr0language/en-GB/en-GB.plg_editors_tinymce.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_EDITORS_TINYMCE="Editor - TinyMCE" PLG_TINY_XML_DESCRIPTION="TinyMCE is a platform independent web based JavaScript HTML WYSIWYG Editor." PKb��\��d���,language/en-GB/en-GB.plg_finder_weblinks.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_FINDER_WEBLINKS="Smart Search - Web Links" PLG_FINDER_WEBLINKS_XML_DESCRIPTION="This plugin indexes Joomla! Web Links." PLG_FINDER_QUERY_FILTER_BRANCH_P_WEB_LINK="Web links" PLG_FINDER_QUERY_FILTER_BRANCH_S_WEB_LINK="Web link" PKb��\���u4 4 1language/en-GB/en-GB.plg_authentication_gmail.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_AUTHENTICATION_GMAIL="Authentication - Gmail" PLG_GMAIL_ERROR_ACCOUNT_DISABLED_OR_NOT_ACTIVATED="Your local account is disabled or not activated." PLG_GMAIL_ERROR_LOCAL_USERNAME_CONFLICT="A local username conflicts with your Gmail username." PLG_GMAIL_FIELD_APPLYSUFFIX_DESC="Options for applying the suffix: Don't apply the suffix, only apply the suffix if missing (any user supplied suffix will be used) or always apply the suffix replacing any user supplied suffix." PLG_GMAIL_FIELD_APPLYSUFFIX_LABEL="Apply Username Suffix" PLG_GMAIL_FIELD_BACKEND_LOGIN_DESC="Allow Backend login via Gmail account?" PLG_GMAIL_FIELD_BACKEND_LOGIN_LABEL="Backend Login" PLG_GMAIL_FIELD_SUFFIX_DESC="A suffix to use for the username, typically gmail.com (or googlemail.com) is the suffix but you may wish to use a Google Apps for Your Domain suffix, this doesn't include the @ symbol. If left blank username suffix will be ignored." PLG_GMAIL_FIELD_SUFFIX_LABEL="Username Suffix" PLG_GMAIL_FIELD_USER_BLACKLIST_DESC="A list of usernames not permitted to log in via the Gmail plugin. The usernames should be separated by a comma." PLG_GMAIL_FIELD_USER_BLACKLIST_LABEL="User Blacklist" PLG_GMAIL_FIELD_VALUE_APPLYSUFFIXALWAYS="Always use suffix" PLG_GMAIL_FIELD_VALUE_APPLYSUFFIXMISSING="Apply suffix if missing" PLG_GMAIL_FIELD_VALUE_NOAPPLYSUFFIX="Don't Apply Suffix" PLG_GMAIL_FIELD_VERIFYPEER_DESC="Verify the peer connection using a CA certificate. In some situations authentication will fail due to certificate issues, disabling this should resolve the situation in that case." PLG_GMAIL_FIELD_VERIFYPEER_LABEL="Verify Peer" PLG_GMAIL_XML_DESCRIPTION="Handles User Authentication with a Gmail or Googlemail account (Requires cURL).<br />Users may need to enable <em>Access for less secure apps</em> at <a href="_QQ_"https://www.google.com/settings/security/lesssecureapps"_QQ_" target="_QQ_"_blank"_QQ_">https://www.google.com/settings/security/lesssecureapps</a> to be able to log in using this method.<br /><strong> Warning! You must have at least one authentication plugin enabled or you will lose all access to your site.</strong>"PKb��\�p]�oo/language/en-GB/en-GB.plg_finder_content.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_FINDER_CONTENT="Smart Search - Content" PLG_FINDER_CONTENT_ERROR_ACTIVATING_PLUGIN="Could not automatically activate the "Smart Search - Content" plugin." PLG_FINDER_CONTENT_XML_DESCRIPTION="Updates the indexes of Joomla! Articles whenever an article is created, modified or deleted. NOTE the Content - Smart Search plugin must be enabled." PLG_FINDER_STATISTICS_ARTICLE="Article" PKb��\���s s 2language/en-GB/en-GB.plg_twofactorauth_yubikey.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_TWOFACTORAUTH_YUBIKEY="Two Factor Authentication - YubiKey" PLG_TWOFACTORAUTH_YUBIKEY_ERR_VALIDATIONFAILED="You did not enter a valid YubiKey secret code or the YubiCloud servers are unreachable at this time." PLG_TWOFACTORAUTH_YUBIKEY_INTRO="This feature allows you to use a YubiKey secure hardware token for two factor authentication. In addition to your username and password you will also need to insert your YubiKey into your computer's USB port, select inside the Secret Key area of the site's login area and touch YubiKey's gold disk. The secret code generated by your YubiKey is unique to your device and changes constantly. This provides extra protection against hackers logging in to your account even if they were able to get hold of your password." PLG_TWOFACTORAUTH_YUBIKEY_METHOD_TITLE="YubiKey" PLG_TWOFACTORAUTH_TOTP_RESET_HEAD="Your YubiKey is already linked to your user account." PLG_TWOFACTORAUTH_TOTP_RESET_TEXT="Your YubiKey is already linked to your user account. If you want to unlink your YubiKey from your user account or use another YubiKey, please first disable two factor authentication and save your user profile. Then come back to this user profile page and re-activate two factor authentication with the YubiKey method." PLG_TWOFACTORAUTH_YUBIKEY_SECTION_ADMIN="Administrator (Backend)" PLG_TWOFACTORAUTH_YUBIKEY_SECTION_BOTH="Both" PLG_TWOFACTORAUTH_YUBIKEY_SECTION_DESC="In which sections of your site do you want to enable two factor authentication?" PLG_TWOFACTORAUTH_YUBIKEY_SECTION_LABEL="Site Section" PLG_TWOFACTORAUTH_YUBIKEY_SECTION_SITE="Site (Frontend)" PLG_TWOFACTORAUTH_YUBIKEY_SECURITYCODE="Security Code" PLG_TWOFACTORAUTH_YUBIKEY_STEP1_HEAD="Set up" PLG_TWOFACTORAUTH_YUBIKEY_STEP1_TEXT="Please insert your YubiKey device into your computer's USB port. Select the Security Code field below. Then touch the gold disk on your YubiKey device for one second. Afterwards, please save your user profile. If the code generated by your YubiKey is validated by YubiCloud the Two Factor Authentication feature will be enabled and this YubiKey will be linked with your user account." PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION="Allows users on your site to use two factor authentication using a YubiKey secure hardware token. Users need their own Yubikey available from http://www.yubico.com/. To use two factor authentication users have to edit their user profile and enable two factor authentication." PKb��\G���1language/en-GB/en-GB.plg_system_highlight.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_SYSTEM_HIGHLIGHT="System - Highlight" PLG_SYSTEM_HIGHLIGHT_ERROR_ACTIVATING_PLUGIN="Could not automatically activate the "System - Highlight" plugin" PLG_SYSTEM_HIGHLIGHT_XML_DESCRIPTION="System plugin to highlight specified terms." PKb��\睠�UU,language/en-GB/en-GB.plg_user_joomla.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 PLG_USER_JOOMLA="User - Joomla!" PLG_USER_JOOMLA_XML_DESCRIPTION="Handles Joomla's default User synchronisation."PKb��\E�J�+�+"language/en-GB/en-GB.com_admin.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_ADMIN="Administrator - System Information" COM_ADMIN_ALPHABETICAL_INDEX="Alphabetical Index" COM_ADMIN_CACHE_DIRECTORY="(Cache Folder)" COM_ADMIN_CLEAR_RESULTS="Clear results" COM_ADMIN_CONFIGURATION_FILE="Configuration File" COM_ADMIN_DATABASE_COLLATION="Database Collation" COM_ADMIN_DATABASE_VERSION="Database Version" COM_ADMIN_DIRECTORY="Folder" COM_ADMIN_DIRECTORY_PERMISSIONS="Folder Permissions" COM_ADMIN_DISABLED_FUNCTIONS="Disabled Functions" COM_ADMIN_DISPLAY_ERRORS="Display Errors" COM_ADMIN_FILE_UPLOADS="File Uploads" COM_ADMIN_GLOSSARY="Glossary" COM_ADMIN_GO="Go" COM_ADMIN_HELP="Joomla! Help" COM_ADMIN_HELP_COMPONENTS_BANNERS_BANNERS="Banners" COM_ADMIN_HELP_COMPONENTS_BANNERS_BANNERS_EDIT="Banners: New/Edit" COM_ADMIN_HELP_COMPONENTS_BANNERS_CATEGORIES="Banners: Categories" COM_ADMIN_HELP_COMPONENTS_BANNERS_CATEGORIES_EDIT="Banners: Categories - New/Edit" COM_ADMIN_HELP_COMPONENTS_BANNERS_CLIENTS="Banners: Clients" COM_ADMIN_HELP_COMPONENTS_BANNERS_CLIENTS_EDIT="Banners: Clients - New/Edit" COM_ADMIN_HELP_COMPONENTS_BANNERS_TRACKS="Banners: Tracks" COM_ADMIN_HELP_COMPONENTS_CONTACTS_CONTACTS="Contacts" COM_ADMIN_HELP_COMPONENTS_CONTACTS_CONTACTS_EDIT="Contacts: New/Edit" COM_ADMIN_HELP_COMPONENTS_CONTACT_CATEGORIES="Contacts: Categories" COM_ADMIN_HELP_COMPONENTS_CONTACT_CATEGORIES_EDIT="Contacts: Categories - New/Edit" COM_ADMIN_HELP_COMPONENTS_CONTENT_CATEGORIES="Articles: Categories" COM_ADMIN_HELP_COMPONENTS_CONTENT_CATEGORIES_EDIT="Articles: Categories - New/Edit" COM_ADMIN_HELP_COMPONENTS_FINDER_MANAGE_CONTENT_MAPS="Smart Search: Content Maps" COM_ADMIN_HELP_COMPONENTS_FINDER_MANAGE_INDEXED_CONTENT="Smart Search: Indexed Content" COM_ADMIN_HELP_COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS_EDIT="Smart Search: Filters - New/Edit" COM_ADMIN_HELP_COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS="Smart Search: Search Filters" COM_ADMIN_HELP_COMPONENTS_JOOMLA_UPDATE="Joomla Update" COM_ADMIN_HELP_COMPONENTS_MESSAGING_INBOX="Private Messages: Inbox" COM_ADMIN_HELP_COMPONENTS_MESSAGING_READ="Private Messages: Read" COM_ADMIN_HELP_COMPONENTS_MESSAGING_WRITE="Private Messages: Write" COM_ADMIN_HELP_COMPONENTS_NEWSFEEDS_CATEGORIES="News Feeds: Categories" COM_ADMIN_HELP_COMPONENTS_NEWSFEEDS_CATEGORIES_EDIT="News Feeds: Categories - New/Edit" COM_ADMIN_HELP_COMPONENTS_NEWSFEEDS_FEEDS="News Feeds" COM_ADMIN_HELP_COMPONENTS_NEWSFEEDS_FEEDS_EDIT="News Feeds: New/Edit" COM_ADMIN_HELP_COMPONENTS_POST_INSTALLATION_MESSAGES="Post-Installation Messages" COM_ADMIN_HELP_COMPONENTS_REDIRECT_MANAGER="Redirect: Links" COM_ADMIN_HELP_COMPONENTS_REDIRECT_MANAGER_EDIT="Redirect: Links - New/Edit" COM_ADMIN_HELP_COMPONENTS_SEARCH="Search" COM_ADMIN_HELP_COMPONENTS_TAGS_MANAGER="Tags" COM_ADMIN_HELP_COMPONENTS_TAGS_MANAGER_EDIT="Tags: New/Edit" COM_ADMIN_HELP_COMPONENTS_WEBLINKS_CATEGORIES="Web Links: Categories" COM_ADMIN_HELP_COMPONENTS_WEBLINKS_CATEGORIES_EDIT="Web Links: Categories - New/Edit" COM_ADMIN_HELP_COMPONENTS_WEBLINKS_LINKS="Web Links" COM_ADMIN_HELP_COMPONENTS_WEBLINKS_LINKS_EDIT="Web Links: New/Edit" COM_ADMIN_HELP_CONTENT_ARTICLE_MANAGER="Articles" COM_ADMIN_HELP_CONTENT_ARTICLE_MANAGER_EDIT="Articles: New/Edit" COM_ADMIN_HELP_CONTENT_FEATURED_ARTICLES="Articles: Featured " COM_ADMIN_HELP_CONTENT_MEDIA_MANAGER="Media" COM_ADMIN_HELP_EXTENSIONS_EXTENSION_MANAGER_DATABASE="Extensions: Check Database" COM_ADMIN_HELP_EXTENSIONS_EXTENSION_MANAGER_DISCOVER="Extensions: Discover" COM_ADMIN_HELP_EXTENSIONS_EXTENSION_MANAGER_INSTALL="Extensions: Install" COM_ADMIN_HELP_EXTENSIONS_EXTENSION_MANAGER_LANGUAGES="Extensions: Install Accredited Language Translations" COM_ADMIN_HELP_EXTENSIONS_EXTENSION_MANAGER_MANAGE="Extensions: Manage" COM_ADMIN_HELP_EXTENSIONS_EXTENSION_MANAGER_UPDATE="Extensions: Update" COM_ADMIN_HELP_EXTENSIONS_EXTENSION_MANAGER_WARNINGS="Extensions: Warnings" COM_ADMIN_HELP_EXTENSIONS_LANGUAGE_MANAGER_CONTENT="Languages: Content" COM_ADMIN_HELP_EXTENSIONS_LANGUAGE_MANAGER_EDIT="Languages: New/Edit" COM_ADMIN_HELP_EXTENSIONS_LANGUAGE_MANAGER_INSTALLED="Languages: Installed" COM_ADMIN_HELP_EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES="Languages: Overrides" COM_ADMIN_HELP_EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES_EDIT="Languages: Overrides - New/Edit" COM_ADMIN_HELP_EXTENSIONS_MODULE_MANAGER="Modules" COM_ADMIN_HELP_EXTENSIONS_MODULE_MANAGER_EDIT="Modules: Edit" COM_ADMIN_HELP_EXTENSIONS_PLUGIN_MANAGER="Plugins" COM_ADMIN_HELP_EXTENSIONS_PLUGIN_MANAGER_EDIT="Plugins: New/Edit" COM_ADMIN_HELP_EXTENSIONS_TEMPLATE_MANAGER_STYLES="Templates: Styles" COM_ADMIN_HELP_EXTENSIONS_TEMPLATE_MANAGER_STYLES_EDIT="Templates: Styles - Edit" COM_ADMIN_HELP_EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES="Templates" COM_ADMIN_HELP_EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT="Templates: Edit" COM_ADMIN_HELP_EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT_SOURCE="Templates: Source - Edit" COM_ADMIN_HELP_GLOSSARY="Glossary" COM_ADMIN_HELP_MENUS_MENU_ITEM_MANAGER="Menu: Items" COM_ADMIN_HELP_MENUS_MENU_ITEM_MANAGER_EDIT="Menu: Items New/Edit" COM_ADMIN_HELP_MENUS_MENU_MANAGER="Menus" COM_ADMIN_HELP_MENUS_MENU_MANAGER_EDIT="Menus: New/Edit" COM_ADMIN_HELP_SITE_GLOBAL_CONFIGURATION="Global Configuration" COM_ADMIN_HELP_SITE_MAINTENANCE_CLEAR_CACHE="Cache: Clear Cache" COM_ADMIN_HELP_SITE_MAINTENANCE_GLOBAL_CHECK-IN="Global Check-in" COM_ADMIN_HELP_SITE_MAINTENANCE_PURGE_EXPIRED_CACHE="Cache: Clear Expired Cache" COM_ADMIN_HELP_SITE_SYSTEM_INFORMATION="System Information" COM_ADMIN_HELP_START_HERE="Start Here" COM_ADMIN_HELP_USERS_ACCESS_LEVELS="Users: Access Levels" COM_ADMIN_HELP_USERS_ACCESS_LEVELS_EDIT="Users: Access Levels - New/Edit" COM_ADMIN_HELP_USERS_DEBUG_USER="Users: Debug Users Permissions" COM_ADMIN_HELP_USERS_GROUPS="Users: Groups" COM_ADMIN_HELP_USERS_GROUPS_EDIT="Users: Groups - New/Edit" COM_ADMIN_HELP_USERS_MASS_MAIL_USERS="Mass Mail Users" COM_ADMIN_HELP_USERS_USER_NOTES="Users: User Notes" COM_ADMIN_HELP_USERS_USER_NOTES_EDIT="Users: User Notes - New/Edit" COM_ADMIN_HELP_USERS_USER_MANAGER="Users" COM_ADMIN_HELP_USERS_USER_MANAGER_EDIT="Users: New/Edit" COM_ADMIN_ICONV_AVAILABLE="Iconv Available" COM_ADMIN_INFORMATION="System Information" COM_ADMIN_JOOMLA_VERSION="Joomla! Version" COM_ADMIN_LATEST_VERSION_CHECK="Latest Version Check" COM_ADMIN_LICENSE="License" COM_ADMIN_LOG_DIRECTORY="(Log folder)" COM_ADMIN_MAGIC_QUOTES="Magic Quotes" COM_ADMIN_MBSTRING_ENABLED="Multibyte String (mbstring) Enabled" COM_ADMIN_NA="n/a" COM_ADMIN_OPEN_BASEDIR="Open basedir" COM_ADMIN_OUTPUT_BUFFERING="Output Buffering" COM_ADMIN_PHP_BUILT_ON="PHP Built On" COM_ADMIN_PHP_INFORMATION="PHP Information" COM_ADMIN_PHP_SETTINGS="PHP Settings" COM_ADMIN_PHP_VERSION="PHP Version" COM_ADMIN_PHPINFO_DISABLED="The built in phpinfo() function has been disabled by your host." COM_ADMIN_PLATFORM_VERSION="Joomla! Platform Version" COM_ADMIN_REGISTER_GLOBALS="Register Globals" COM_ADMIN_RELEVANT_PHP_SETTINGS="Relevant PHP Settings" COM_ADMIN_SAFE_MODE="Safe Mode" COM_ADMIN_SEARCH="Search" COM_ADMIN_SESSION_AUTO_START="Session Auto Start" COM_ADMIN_SESSION_SAVE_PATH="Session Save Path" COM_ADMIN_SETTING="Setting" COM_ADMIN_SHORT_OPEN_TAGS="Short Open Tags" COM_ADMIN_START_HERE="Start here" COM_ADMIN_STATUS="Status" COM_ADMIN_SYSTEM_INFO="System Info" COM_ADMIN_SYSTEM_INFORMATION="System Information" COM_ADMIN_TEMP_DIRECTORY="(Temp folder)" COM_ADMIN_UNWRITABLE="Unwritable" COM_ADMIN_USER_ACCOUNT_DETAILS="My Profile Details" COM_ADMIN_USER_AGENT="User Agent" COM_ADMIN_USER_FIELD_BACKEND_LANGUAGE_DESC="Select the Language for the Administrator Backend interface. This will only affect this User." COM_ADMIN_USER_FIELD_BACKEND_LANGUAGE_LABEL="Backend Language" COM_ADMIN_USER_FIELD_BACKEND_TEMPLATE_DESC="Select the template style for the Administrator Backend interface. This will only affect this User." COM_ADMIN_USER_FIELD_BACKEND_TEMPLATE_LABEL="Backend Template Style" COM_ADMIN_USER_FIELD_EDITOR_DESC="Editor for this user." COM_ADMIN_USER_FIELD_EDITOR_LABEL="Editor" COM_ADMIN_USER_FIELD_EMAIL_DESC="Enter an email address for the user." COM_ADMIN_USER_FIELD_FRONTEND_LANGUAGE_DESC="Select the Language for the Frontend interface. This will only affect this User." COM_ADMIN_USER_FIELD_FRONTEND_LANGUAGE_LABEL="Frontend Language" COM_ADMIN_USER_FIELD_HELPSITE_DESC="Help site for this user." COM_ADMIN_USER_FIELD_HELPSITE_LABEL="Help Site" COM_ADMIN_USER_FIELD_LASTVISIT_DESC="Last visit date." COM_ADMIN_USER_FIELD_LASTVISIT_LABEL="Last Visit Date" COM_ADMIN_USER_FIELD_NAME_DESC="Enter the name of the user." COM_ADMIN_USER_FIELD_NOCHANGE_USERNAME_DESC="If you want to change your Username, please contact a site administrator." COM_ADMIN_USER_FIELD_PASSWORD1_MESSAGE="The passwords you entered do not match. Please enter your desired password in the password field and confirm your entry by entering it in the confirm password field." COM_ADMIN_USER_FIELD_PASSWORD2_DESC="Confirm the user's password." COM_ADMIN_USER_FIELD_PASSWORD2_LABEL="Confirm Password" COM_ADMIN_USER_FIELD_PASSWORD_DESC="Enter the password for the user." COM_ADMIN_USER_FIELD_REGISTERDATE_DESC="Registration date." COM_ADMIN_USER_FIELD_REGISTERDATE_LABEL="Registration Date" COM_ADMIN_USER_FIELD_TIMEZONE_DESC="Time zone for this user." COM_ADMIN_USER_FIELD_TIMEZONE_LABEL="Time Zone" COM_ADMIN_USER_FIELD_USERNAME_DESC="Enter the login name (Username) for the user." COM_ADMIN_USER_FIELD_USERNAME_LABEL="Login Name" COM_ADMIN_USER_HEADING_NAME="Name" COM_ADMIN_USER_SETTINGS_FIELDSET_LABEL="Basic Settings" COM_ADMIN_VALUE="Value" COM_ADMIN_VIEW="View" COM_ADMIN_VIEW_PROFILE_TITLE="My Profile" COM_ADMIN_WEBSERVER_TO_PHP_INTERFACE="WebServer to PHP Interface" COM_ADMIN_WEB_SERVER="Web Server" COM_ADMIN_WRITABLE="Writable" COM_ADMIN_XML_DESCRIPTION="Administration system information component." COM_ADMIN_XML_ENABLED="XML Enabled" COM_ADMIN_ZIP_ENABLED="Native ZIP Enabled" COM_ADMIN_ZLIB_ENABLED="Zlib Enabled" ; Messages COM_USERS_MSG_NOT_ENOUGH_INTEGERS_N="Password does not contain enough digits. At least %s digits are required." COM_USERS_MSG_NOT_ENOUGH_INTEGERS_N_1="Password does not contain enough digits. At least 1 digit is required." COM_USERS_MSG_NOT_ENOUGH_SYMBOLS_N="Password does not contain enough symbols. At least %s symbols are required." COM_USERS_MSG_NOT_ENOUGH_SYMBOLS_N_1="Password does not contain enough symbols. At least 1 symbol is required." COM_USERS_MSG_NOT_ENOUGH_UPPERCASE_LETTERS_N="Password does not contain enough uppercase characters. At least %s upper case characters are required." COM_USERS_MSG_NOT_ENOUGH_UPPERCASE_LETTERS_N_1="Password does not contain enough uppercase characters. At least 1 upper case character is required." COM_USERS_MSG_PASSWORD_TOO_LONG="Password is too long. Passwords must be less than 100 characters." COM_USERS_MSG_PASSWORD_TOO_SHORT_N="Password is too short. Passwords must have at least %s characters." COM_USERS_MSG_SPACES_IN_PASSWORD="Password must not contain spaces at the beginning or end." PKb��\iN���'language/en-GB/en-GB.com_finder.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 COM_FINDER="Smart Search" COM_FINDER_XML_DESCRIPTION="Smart Search" COM_FINDER_MENU_SEARCH_VIEW_DEFAULT_TEXT="The default search layout." COM_FINDER_MENU_SEARCH_VIEW_DEFAULT_TITLE="Search" PKb��\�^�tt'language/en-GB/en-GB.mod_status.sys.ininu�[���; Joomla! Project ; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved. ; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php ; Note : All ini files need to be saved as UTF-8 MOD_STATUS="User Status" MOD_STATUS_XML_DESCRIPTION="This module shows the status of the logged-in users." MOD_STATUS_LAYOUT_DEFAULT="Default" PKb��\V]*��manifests/libraries/fof.xmlnu�[���<?xml version="1.0" encoding="UTF-8"?> <extension type="library" version="2.5" method="upgrade"> <name>FOF</name> <libraryname>fof</libraryname> <description>LIB_FOF_XML_DESCRIPTION</description> <creationDate>2015-04-22 13:15:32</creationDate> <author>Nicholas K. Dionysopoulos / Akeeba Ltd</author> <authorEmail>nicholas@akeebabackup.com</authorEmail> <authorUrl>https://www.akeebabackup.com</authorUrl> <copyright>(C)2011-2015 Nicholas K. Dionysopoulos</copyright> <license>GNU GPLv2 or later</license> <version>2.4.3</version> <packager>Akeeba Ltd</packager> <packagerurl>https://www.AkeebaBackup.com/download.html</packagerurl> <languages folder="_lang"> <language tag="en-GB">en-GB/en-GB.lib_fof.ini</language> </languages> <files folder="fof"> <folder>autoloader</folder> <folder>config</folder> <folder>controller</folder> <folder>database</folder> <folder>dispatcher</folder> <folder>download</folder> <folder>encrypt</folder> <folder>form</folder> <folder>hal</folder> <folder>inflector</folder> <folder>integration</folder> <folder>input</folder> <folder>layout</folder> <folder>less</folder> <folder>model</folder> <folder>platform</folder> <folder>query</folder> <folder>render</folder> <folder>string</folder> <folder>table</folder> <folder>template</folder> <folder>toolbar</folder> <folder>utils</folder> <folder>view</folder> <file>LICENSE.txt</file> <file>include.php</file> <file>version.txt</file> </files> </extension> PKb��\��J��manifests/libraries/phputf8.xmlnu�[���<?xml version="1.0" encoding="UTF-8" ?> <extension type="library" version="3.1"> <name>phputf8</name> <libraryname>phputf8</libraryname> <version>0.5</version> <description>LIB_PHPUTF8_XML_DESCRIPTION</description> <creationDate>2006</creationDate> <copyright>Copyright various authors</copyright> <license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license> <author>Harry Fuecks</author> <authorEmail>hfuecks@gmail.com</authorEmail> <authorUrl>http://sourceforge.net/projects/phputf8</authorUrl> <packager>Joomla!</packager> <packagerurl>http://www.joomla.org</packagerurl> <files folder="libraries"> <folder>phputf8</folder> </files> </extension> PKb��\n�u�ttmanifests/libraries/joomla.xmlnu�[���<?xml version="1.0" encoding="UTF-8" ?> <extension type="library" version="3.1"> <name>Joomla! Platform</name> <libraryname>joomla</libraryname> <version>13.1</version> <description>LIB_JOOMLA_XML_DESCRIPTION</description> <creationDate>2008</creationDate> <copyright>Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.</copyright> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <author>Joomla! Project</author> <authorEmail>admin@joomla.org</authorEmail> <authorUrl>http://www.joomla.org</authorUrl> <packager>Joomla!</packager> <packagerurl>http://www.joomla.org</packagerurl> <files folder="libraries"> <folder>compat</folder> <folder>joomla</folder> <folder>legacy</folder> <file>import.legacy.php</file> <file>import.php</file> <file>loader.php</file> <file>platform.php</file> </files> </extension> PKb��\X�f��!manifests/libraries/simplepie.xmlnu�[���<?xml version="1.0" encoding="UTF-8" ?> <extension type="library" version="3.1"> <name>SimplePie</name> <libraryname>simplepie</libraryname> <version>1.2</version> <description>LIB_SIMPLEPIE_XML_DESCRIPTION</description> <creationDate>2004</creationDate> <copyright>Copyright (c) 2004-2009, Ryan Parman and Geoffrey Sneddon</copyright> <license>http://www.opensource.org/licenses/bsd-license.php BSD License</license> <author>SimplePie</author> <authorEmail></authorEmail> <authorUrl>http://simplepie.org/</authorUrl> <packager>Joomla!</packager> <packagerurl>http://www.joomla.org</packagerurl> <files folder="libraries"> <folder>simplepie</folder> </files> </extension> PKb��\e��$��$manifests/libraries/idna_convert.xmlnu�[���<?xml version="1.0" encoding="UTF-8" ?> <extension type="library" version="3.1"> <name>IDNA Convert</name> <libraryname>idna_convert</libraryname> <version>0.8.0</version> <description>LIB_IDNA_XML_DESCRIPTION</description> <creationDate>2004</creationDate> <copyright>2004-2011 phlyLabs Berlin, http://phlylabs.de</copyright> <license>http://www.gnu.org/licenses/lgpl-2.1.html GNU/LGPL</license> <author>phlyLabs</author> <authorEmail>phlymail@phlylabs.de</authorEmail> <authorUrl>http://phlylabs.de</authorUrl> <packager>Joomla!</packager> <packagerurl>http://www.joomla.org</packagerurl> <files folder="libraries"> <folder>idna_convert</folder> </files> </extension> PKb��\�F�%BBmanifests/libraries/phpass.xmlnu�[���<?xml version="1.0" encoding="UTF-8"?> <extension type="library" version="3.2" method="upgrade"> <name>PHPass</name> <libraryname>phpass</libraryname> <description>LIB_PHPASS_XML_DESCRIPTION</description> <creationDate>2004-2006</creationDate> <author>Solar Designer</author> <authorEmail>solar@openwall.com</authorEmail> <authorUrl>http://www.openwall.com/phpass/</authorUrl> <license>PD / GWC</license> <version>0.3</version> <packagerurl>http://www.openwall.com/phpass/</packagerurl> <files folder="phpass"> <file>PasswordHash.php</file> </files> </extension> PKb��\�V�manifests/packages/index.htmlnu�[���<!DOCTYPE html><title></title> PKb��\�R�QQmanifests/files/joomla.xmlnu�[���<?xml version="1.0" encoding="UTF-8"?> <extension version="3.4" type="file" method="upgrade"> <name>files_joomla</name> <author>Joomla! Project</author> <authorEmail>admin@joomla.org</authorEmail> <authorUrl>www.joomla.org</authorUrl> <copyright>(C) 2005 - 2015 Open Source Matters. All rights reserved</copyright> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <version>3.4.8</version> <creationDate>December 2015</creationDate> <description>FILES_JOOMLA_XML_DESCRIPTION</description> <scriptfile>administrator/components/com_admin/script.php</scriptfile> <update> <schemas> <schemapath type="mysql">administrator/components/com_admin/sql/updates/mysql</schemapath> <schemapath type="sqlsrv">administrator/components/com_admin/sql/updates/sqlsrv</schemapath> <schemapath type="sqlazure">administrator/components/com_admin/sql/updates/sqlazure</schemapath> <schemapath type="postgresql">administrator/components/com_admin/sql/updates/postgresql</schemapath> </schemas> </update> <fileset> <files> <folder>administrator</folder> <folder>bin</folder> <folder>cache</folder> <folder>cli</folder> <folder>components</folder> <folder>images</folder> <folder>includes</folder> <folder>language</folder> <folder>layouts</folder> <folder>libraries</folder> <folder>logs</folder> <folder>media</folder> <folder>modules</folder> <folder>plugins</folder> <folder>templates</folder> <folder>tmp</folder> <file>htaccess.txt</file> <file>web.config.txt</file> <file>LICENSE.txt</file> <file>README.txt</file> <file>index.php</file> </files> </fileset> <updateservers> <server type="collection">http://update.joomla.org/core/list.xml</server> <server type="collection">http://update.joomla.org/jed/list.xml</server> </updateservers> </extension> PKb��\��__"components/com_tags/tables/tag.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * Tags table * * @since 3.1 */ class TagsTableTag extends JTableNested { /** * Constructor * * @param JDatabaseDriver $db A database connector object */ public function __construct($db) { parent::__construct('#__tags', 'id', $db); JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_tags.tag')); } /** * Overloaded bind function * * @param array $array Named array * @param mixed $ignore An optional array or space separated list of properties * to ignore while binding. * * @return mixed Null if operation was satisfactory, otherwise returns an error string * * @see JTable::bind * @since 3.1 */ public function bind($array, $ignore = '') { if (isset($array['params']) && is_array($array['params'])) { $registry = new Registry; $registry->loadArray($array['params']); $array['params'] = (string) $registry; } if (isset($array['metadata']) && is_array($array['metadata'])) { $registry = new Registry; $registry->loadArray($array['metadata']); $array['metadata'] = (string) $registry; } if (isset($array['urls']) && $array['urls']) { $registry = new Registry; $registry->loadArray($array['urls']); $array['urls'] = (string) $registry; } if (isset($array['images']) && is_array($array['images'])) { $registry = new Registry; $registry->loadArray($array['images']); $array['images'] = (string) $registry; } return parent::bind($array, $ignore); } /** * Overloaded check method to ensure data integrity. * * @return boolean True on success. * * @since 3.1 * @throws UnexpectedValueException */ public function check() { // Check for valid name. if (trim($this->title) == '') { throw new UnexpectedValueException(sprintf('The title is empty')); } if (empty($this->alias)) { $this->alias = $this->title; } $this->alias = JApplication::stringURLSafe($this->alias); if (trim(str_replace('-', '', $this->alias)) == '') { $this->alias = JFactory::getDate()->format("Y-m-d-H-i-s"); } // Check the publish down date is not earlier than publish up. if ((int) $this->publish_down > 0 && $this->publish_down < $this->publish_up) { throw new UnexpectedValueException(sprintf('End publish date is before start publish date.')); } // Clean up keywords -- eliminate extra spaces between phrases // and cr (\r) and lf (\n) characters from string if (!empty($this->metakey)) { // Only process if not empty // Define array of characters to remove $bad_characters = array("\n", "\r", "\"", "<", ">"); // Remove bad characters $after_clean = JString::str_ireplace($bad_characters, "", $this->metakey); // Create array using commas as delimiter $keys = explode(',', $after_clean); $clean_keys = array(); foreach ($keys as $key) { if (trim($key)) { // Ignore blank keywords $clean_keys[] = trim($key); } } // Put array back together delimited by ", " $this->metakey = implode(", ", $clean_keys); } // Clean up description -- eliminate quotes and <> brackets if (!empty($this->metadesc)) { // Only process if not empty $bad_characters = array("\"", "<", ">"); $this->metadesc = JString::str_ireplace($bad_characters, "", $this->metadesc); } // Not Null sanity check $date = JFactory::getDate(); if (empty($this->params)) { $this->params = '{}'; } if (empty($this->metadesc)) { $this->metadesc = ' '; } if (empty($this->metakey)) { $this->metakey = ' '; } if (empty($this->metadata)) { $this->metadata = '{}'; } if (empty($this->urls)) { $this->urls = '{}'; } if (empty($this->images)) { $this->images = '{}'; } if (!(int) $this->checked_out_time) { $this->checked_out_time = $date->toSql(); } if (!(int) $this->modified_time) { $this->modified_time = $date->toSql(); } if (!(int) $this->modified_time) { $this->modified_time = $date->toSql(); } if (!(int) $this->publish_up) { $this->publish_up = $date->toSql(); } if (!(int) $this->publish_down) { $this->publish_down = $date->toSql(); } return true; } /** * Overriden JTable::store to set modified data and user id. * * @param boolean $updateNulls True to update fields even if they are null. * * @return boolean True on success. * * @since 3.1 */ public function store($updateNulls = false) { $date = JFactory::getDate(); $user = JFactory::getUser(); $this->modified_time = $date->toSql(); if ($this->id) { // Existing item $this->modified_user_id = $user->get('id'); } else { // New tag. A tag created and created_by field can be set by the user, // so we don't touch either of these if they are set. if (!(int) $this->created_time) { $this->created_time = $date->toSql(); } if (empty($this->created_user_id)) { $this->created_user_id = $user->get('id'); } } // Verify that the alias is unique $table = JTable::getInstance('Tag', 'TagsTable'); if ($table->load(array('alias' => $this->alias)) && ($table->id != $this->id || $this->id == 0)) { $this->setError(JText::_('COM_TAGS_ERROR_UNIQUE_ALIAS')); return false; } return parent::store($updateNulls); } /** * Method to delete a node and, optionally, its child nodes from the table. * * @param integer $pk The primary key of the node to delete. * @param boolean $children True to delete child nodes, false to move them up a level. * * @return boolean True on success. * * @since 3.1 * @see https://docs.joomla.org/JTableNested/delete */ public function delete($pk = null, $children = false) { $return = parent::delete($pk, $children); if ($return) { $helper = new JHelperTags; $helper->tagDeleteInstances($pk); } return $return; } } PKb��\�33'components/com_tags/controllers/tag.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * The Tag Controller * * @since 3.1 */ class TagsControllerTag extends JControllerForm { /** * Method to check if you can add a new record. * * @param array $data An array of input data. * * @return boolean * * @since 3.1 */ protected function allowAdd($data = array()) { $user = JFactory::getUser(); return ($user->authorise('core.create', 'com_tags')); } /** * Method to check if you can edit a record. * * @param array $data An array of input data. * @param string $key The name of the key for the primary key. * * @return boolean * * @since 3.1 */ protected function allowEdit($data = array(), $key = 'id') { // Since there is no asset tracking and no categories, revert to the component permissions. return parent::allowEdit($data, $key); } /** * Method to run batch operations. * * @param object $model The model. * * @return boolean True if successful, false otherwise and internal error is set. * * @since 3.1 */ public function batch($model = null) { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Set the model $model = $this->getModel('Tag'); // Preset the redirect $this->setRedirect('index.php?option=com_tags&view=tags'); return parent::batch($model); } } PKb��\ƫ���(components/com_tags/controllers/tags.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * The Tags List Controller * * @since 3.1 */ class TagsControllerTags extends JControllerAdmin { /** * Proxy for getModel * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config An optional associative array of configuration settings. * * @return JModelLegacy The model. * * @since 3.1 */ public function getModel($name = 'Tag', $prefix = 'TagsModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } /** * Rebuild the nested set tree. * * @return boolean False on failure or error, true on success. * * @since 3.1 */ public function rebuild() { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $this->setRedirect(JRoute::_('index.php?option=com_tags&view=tags', false)); $model = $this->getModel(); if ($model->rebuild()) { // Rebuild succeeded. $this->setMessage(JText::_('COM_TAGS_REBUILD_SUCCESS')); return true; } else { // Rebuild failed. $this->setMessage(JText::_('COM_TAGSS_REBUILD_FAILURE')); return false; } } } PKb��\�����components/com_tags/tags.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_tags</name> <author>Joomla! Project</author> <creationDate>December 2013</creationDate> <copyright>(C) 2005 - 2015 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.1.0</version> <description>COM_TAGS_XML_DESCRIPTION</description> <files folder="site"> <filename>controller.php</filename> <filename>metadata.xml</filename> <filename>newsfeeds.php</filename> <filename>router.php</filename> <folder>helpers</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="site"> <language tag="en-GB">language/en-GB.com_tags.ini</language> </languages> <administration> <files folder="admin"> <filename>tags.php</filename> <filename>config.xml</filename> <filename>controller.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_tags.ini</language> <language tag="en-GB">language/en-GB.com_tags.sys.ini</language> </languages> <menu link="option=com_tags" img="class:tags">com_tags</menu> </administration> </extension> PKb��\/����)�)components/com_tags/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="taglist" label="COM_TAGS_CONFIG_TAG_SETTINGS_LABEL" description="COM_TAGS_CONFIG_TAG_SETTINGS_DESC"> <field name="tag_layout" type="componentlayout" label="COM_TAGS_CONFIG_TAGGED_ITEMS_FIELD_LAYOUT_LABEL" description="COM_TAGS_CONFIG_TAGGED_ITEMS_FIELD_LAYOUT_DESC" menuitems="true" extension="com_tags" view="tag" /> <field name="save_history" type="radio" class="btn-group btn-group-yesno" default="0" label="JGLOBAL_SAVE_HISTORY_OPTIONS_LABEL" description="JGLOBAL_SAVE_HISTORY_OPTIONS_DESC" > <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="history_limit" type="text" filter="integer" label="JGLOBAL_HISTORY_LIMIT_OPTIONS_LABEL" description="JGLOBAL_HISTORY_LIMIT_OPTIONS_DESC" default="5" /> <field name="show_tag_title" type="radio" class="btn-group btn-group-yesno" label="COM_TAGS_SHOW_TAG_TITLE_LABEL" description="COM_TAGS_SHOW_TAG_TITLE_DESC" default="0" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="tag_list_show_tag_image" type="radio" class="btn-group btn-group-yesno" description="COM_TAGS_SHOW_TAG_IMAGE_DESC" label="COM_TAGS_SHOW_TAG_IMAGE_LABEL" default="1" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="tag_list_show_tag_description" type="radio" class="btn-group btn-group-yesno" description="COM_TAGS_SHOW_TAG_DESCRIPTION_DESC" label="COM_TAGS_SHOW_TAG_DESCRIPTION_LABEL" default="1" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="tag_list_image" type="media" description="COM_TAGS_TAG_LIST_MEDIA_DESC" label="COM_TAGS_TAG_LIST_MEDIA_LABEL" /> <field name="show_tag_num_items" type="radio" class="btn-group btn-group-yesno" label="COM_TAGS_NUMBER_TAG_ITEMS_LABEL" description="COM_TAGS_NUMBER_TAG_ITEMS_DESC" default="0" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="tag_list_orderby" type="list" default="title" label="JGLOBAL_FIELD_FIELD_ORDERING_LABEL" description="JGLOBAL_FIELD_FIELD_ORDERING_DESC"> <option value="c.core_title">JGLOBAL_TITLE</option> <option value="match_count">COM_TAGS_MATCH_COUNT</option> <option value="c.core_created_time">JGLOBAL_CREATED_DATE</option> <option value="c.core_modified_time">JGLOBAL_MODIFIED_DATE</option> <option value="c.core_publish_up">JGLOBAL_PUBLISHED_DATE</option> </field> <field name="tag_list_orderby_direction" type="radio" class="btn-group btn-group-yesno" description="JGLOBAL_ORDER_DIRECTION_DESC" label="JGLOBAL_ORDER_DIRECTION_LABEL" default="ASC" > <option value="ASC">JGLOBAL_ORDER_ASCENDING</option> <option value="DESC">JGLOBAL_ORDER_DESCENDING</option> </field> <field name="show_headings" type="radio" class="btn-group btn-group-yesno" default="1" description="JGLOBAL_SHOW_HEADINGS_DESC" label="JGLOBAL_SHOW_HEADINGS_LABEL" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="tag_list_show_date" type="list" default="0" label="JGLOBAL_SHOW_DATE_LABEL" description="JGLOBAL_SHOW_DATE_DESC" > <option value="0">JHIDE</option> <option value="created">JGLOBAL_CREATED</option> <option value="modified">JGLOBAL_MODIFIED</option> <option value="published">JPUBLISHED</option> </field> <field name="tag_list_show_item_image" type="radio" class="btn-group btn-group-yesno" description="COM_TAGS_SHOW_ITEM_IMAGE_DESC" label="COM_TAGS_SHOW_ITEM_IMAGE_LABEL" default="1" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="tag_list_show_item_description" type="radio" class="btn-group btn-group-yesno" label="COM_TAGS_TAG_LIST_SHOW_ITEM_DESCRIPTION_LABEL" description="COM_TAGS_TAG_LIST_SHOW_ITEM_DESCRIPTION_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="tag_list_item_maximum_characters" type="text" filter="integer" label="COM_TAGS_LIST_MAX_CHARACTERS_LABEL" description="COM_TAGS_LIST_MAX_CHARACTERS_DESC"> </field> </fieldset> <fieldset name="tagselection" label="COM_TAGS_CONFIG_SELECTION_SETTINGS_LABEL" description="COM_TAGS_CONFIG_SELECTION_SETTINGS_DESC"> <field name="min_term_length" type="integer" first="1" last="3" step="1" default="3" label="COM_TAGS_CONFIG_TAG_MIN_LENGTH_LABEL" description="COM_TAGS_CONFIG_TAG_MIN_LENGTH_DESC" /> <field name="return_any_or_all" type="radio" class="btn-group btn-group-yesno" label="COM_TAGS_SEARCH_TYPE_LABEL" description="COM_TAGS_SEARCH_TYPE_DESC" default="1" > <option value="1">COM_TAGS_ANY</option> <option value="0">COM_TAGS_ALL</option> </field> <field name="include_children" type="radio" class="btn-group btn-group-yesno" description="COM_TAGS_INCLUDE_CHILDREN_DESC" label="COM_TAGS_INCLUDE_CHILDREN_LABEL" default="0" > <option value="1">COM_TAGS_INCLUDE</option> <option value="0">COM_TAGS_EXCLUDE</option> </field> <field name="maximum" type="text" default="200" filter="integer" label="COM_TAGS_LIST_MAX_LABEL" description="COM_TAGS_LIST_MAX_DESC"> </field> <field name="tag_list_language_filter" type="contentlanguage" default="all" label="COM_TAGS_FIELD_LANGUAGE_FILTER_LABEL" description="COM_TAGS_FIELD_LANGUAGE_FILTER_DESC"> <option value="all">JALL</option> <option value="current_language">JCURRENT</option> </field> </fieldset> <fieldset name="alltags" label="COM_TAGS_CONFIG_ALL_TAGS_SETTINGS_LABEL" description="COM_TAGS_CONFIG_ALL_TAGS_SETTINGS_DESC"> <field name="tags_layout" type="componentlayout" label="COM_TAGS_CONFIG_ALL_TAGS_FIELD_LAYOUT_LABEL" description="COM_TAGS_CONFIG_ALL_TAGS_FIELD_LAYOUT_DESC" menuitems="true" extension="com_tags" view="tags" /> <field name="all_tags_orderby" type="list" default="title" label="JGLOBAL_FIELD_FIELD_ORDERING_LABEL" description="JGLOBAL_FIELD_FIELD_ORDERING_DESC" > <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="radio" class="btn-group btn-group-yesno" description="JGLOBAL_ORDER_DIRECTION_DESC" label="JGLOBAL_ORDER_DIRECTION_LABEL" default="ASC" > <option value="ASC">JGLOBAL_ORDER_ASCENDING</option> <option value="DESC">JGLOBAL_ORDER_DESCENDING</option> </field> <field name="all_tags_show_tag_image" type="radio" class="btn-group btn-group-yesno" description="COM_TAGS_SHOW_ITEM_IMAGE_DESC" label="COM_TAGS_SHOW_ITEM_IMAGE_LABEL" default="1" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="all_tags_show_tag_descripion" type="radio" class="btn-group btn-group-yesno" description="COM_TAGS_SHOW_ITEM_DESCRIPTION_DESC" label="COM_TAGS_SHOW_ITEM_DESCRIPTION_LABEL" default="1" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="all_tags_tag_maximum_characters" type="text" filter="integer" label="COM_TAGS_LIST_MAX_CHARACTERS_LABEL" description="COM_TAGS_LIST_MAX_CHARACTERS_DESC" /> <field name="all_tags_show_tag_hits" type="radio" class="btn-group btn-group-yesno" description="COM_TAGS_FIELD_CONFIG_HITS_DESC" label="JGLOBAL_HITS" default="0" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> </fieldset> <fieldset name="shared" label="COM_TAGS_CONFIG_SHARED_SETTINGS_LABEL" description="COM_TAGS_CONFIG_SHARED_SETTINGS_DESC"> <field name="filter_field" type="radio" class="btn-group btn-group-yesno" default="1" description="JGLOBAL_FILTER_FIELD_DESC" label="JGLOBAL_FILTER_FIELD_LABEL" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_pagination_limit" type="radio" default="1" class="btn-group btn-group-yesno" description="JGLOBAL_DISPLAY_SELECT_DESC" label="JGLOBAL_DISPLAY_SELECT_LABEL" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_pagination" type="list" default="2" description="JGLOBAL_PAGINATION_DESC" label="JGLOBAL_PAGINATION_LABEL" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> <option value="2">JGLOBAL_AUTO</option> </field> <field name="show_pagination_results" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_PAGINATION_RESULTS_LABEL" description="JGLOBAL_PAGINATION_RESULTS_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> </fieldset> <fieldset name="data_entry" label="COM_TAGS_CONFIG_DATA_ENTRY_SETTINGS_LABEL" description="COM_TAGS_CONFIG_DATA_ENTRY_SETTINGS_DESC"> <field name="tag_field_ajax_mode" type="radio" class="btn-group btn-group-yesno" description="COM_TAGS_TAG_FIELD_MODE_DESC" label="COM_TAGS_TAG_FIELD_MODE_LABEL" default="1" > <option value="1">COM_TAGS_TAG_FIELD_MODE_AJAX</option> <option value="0">COM_TAGS_TAG_FIELD_MODE_NESTED</option> </field> </fieldset> <fieldset name="integration" label="JGLOBAL_INTEGRATION_LABEL" description="COM_TAGS_CONFIG_INTEGRATION_SETTINGS_DESC" > <field name="show_feed_link" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_SHOW_FEED_LINK_LABEL" description="JGLOBAL_SHOW_FEED_LINK_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> </fieldset> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_tags" section="component" /> </fieldset> </config> PKb��\(��11components/com_tags/access.xmlnu�[���<?xml version="1.0" encoding="utf-8" ?> <access component="com_tags"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> </section> </access> PKb��\�Z�QQcomponents/com_tags/tags.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.tabstate'); if (!JFactory::getUser()->authorise('core.manage', 'com_tags')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $controller = JControllerLegacy::getInstance('Tags'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\?���YY:components/com_tags/views/tags/tmpl/default_batch_body.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $published = $this->state->get('filter.published'); ?> <div class="row-fluid"> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.language'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.access'); ?> </div> </div> </div>PKb��\� ��<components/com_tags/views/tags/tmpl/default_batch_footer.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <button class="btn" type="button" onclick="document.getElementById('batch-tag-id').value='';document.getElementById('batch-access').value='';document.getElementById('batch-language-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-success" type="submit" onclick="Joomla.submitbutton('tag.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button>PKb��\���(�(/components/com_tags/views/tags/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $app = JFactory::getApplication(); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $ordering = ($listOrder == 'a.lft'); $canOrder = $user->authorise('core.edit.state', 'com_tags'); $saveOrder = ($listOrder == 'a.lft' && $listDirn == 'asc'); if ($saveOrder) { $saveOrderingUrl = 'index.php?option=com_tags&task=tags.saveOrderAjax'; JHtml::_('sortablelist.sortable', 'categoryList', 'adminForm', strtolower($listDirn), $saveOrderingUrl, false, true); } $sortFields = $this->getSortFields(); JFactory::getDocument()->addScriptDeclaration(' Joomla.orderTable = function() { table = document.getElementById("sortTable"); direction = document.getElementById("directionTable"); order = table.options[table.selectedIndex].value; if (order != "' . $listOrder . '") { dirn = "asc"; } else { dirn = direction.options[direction.selectedIndex].value; } Joomla.tableOrdering(order, dirn, ""); }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_tags&view=tags');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)): ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <label for="filter_search" class="element-invisible"><?php echo JText::_('COM_TAGS_ITEMS_SEARCH_FILTER');?></label> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_TAGS_ITEMS_SEARCH_FILTER'); ?>" /> </div> <div class="btn-group"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> <div class="btn-group pull-right hidden-phone"> <label for="directionTable" class="element-invisible"><?php echo JText::_('JFIELD_ORDERING_DESC');?></label> <select name="directionTable" id="directionTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JFIELD_ORDERING_DESC');?></option> <option value="asc" <?php if ($listDirn == 'asc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_ASCENDING');?></option> <option value="desc" <?php if ($listDirn == 'desc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_DESCENDING');?></option> </select> </div> <div class="btn-group pull-right"> <label for="sortTable" class="element-invisible"><?php echo JText::_('JGLOBAL_SORT_BY');?></label> <select name="sortTable" id="sortTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JGLOBAL_SORT_BY');?></option> <?php echo JHtml::_('select.options', $sortFields, 'value', 'text', $listOrder);?> </select> </div> <div class="clearfix"></div> </div> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped" id="categoryList"> <thead> <tr> <th width="1%" class="center"> <?php echo JHtml::_('grid.sort', '<span class="icon-menu-2"></span>', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?> </th> <th width="1%" class="hidden-phone"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="1%" class="nowrap center"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.published', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'language', $this->state->get('list.direction'), $this->state->get('list.ordering')); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="15"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : $orderkey = array_search($item->id, $this->ordering[$item->parent_id]); $canCreate = $user->authorise('core.create', 'com_tags'); $canEdit = $user->authorise('core.edit', 'com_tags'); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id')|| $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_tags') && $canCheckin; // Get the parents of item for sorting if ($item->level > 1) { $parentsStr = ""; $_currentParentId = $item->parent_id; $parentsStr = " " . $_currentParentId; for ($j = 0; $j < $item->level; $j++) { foreach ($this->ordering as $k => $v) { $v = implode("-", $v); $v = "-" . $v . "-"; if (strpos($v, "-" . $_currentParentId . "-") !== false) { $parentsStr .= " " . $k; $_currentParentId = $k; break; } } } } else { $parentsStr = ""; } ?> <tr class="row<?php echo $i % 2; ?>" sortable-group-id="<?php echo $item->parent_id;?>" item-id="<?php echo $item->id?>" parents="<?php echo $parentsStr?>" level="<?php echo $item->level?>"> <td class="order nowrap center hidden-phone"> <?php $iconClass = ''; if (!$canChange) { $iconClass = ' inactive'; } elseif (!$saveOrder) { $iconClass = ' inactive tip-top hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED'); } ?> <span class="sortable-handler<?php echo $iconClass ?>"> <span class="icon-menu"></span> </span> <?php if ($canChange && $saveOrder) : ?> <input type="text" style="display:none" name="order[]" size="5" value="<?php echo $orderkey + 1;?>" /> <?php endif; ?> </td> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->published, $i, 'tags.', $canChange);?> </td> <td> <?php if ($item->level > 0): ?> <?php echo str_repeat('<span class="gi">—</span>', $item->level - 1) ?> <?php endif; ?> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'tags.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit || $canEditOwn) : ?> <a href="<?php echo JRoute::_('index.php?option=com_tags&task=tag.edit&id=' . $item->id);?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> <span class="small" title="<?php echo $this->escape($item->path); ?>"> <?php if (empty($item->note)) : ?> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias));?> <?php else : ?> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS_NOTE', $this->escape($item->alias), $this->escape($item->note));?> <?php endif; ?> </span> </td> <td class="small hidden-phone"> <?php echo $this->escape($item->access_title); ?> </td> <td class="small nowrap hidden-phone"> <?php if ($item->language == '*') : ?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="hidden-phone"> <span title="<?php echo sprintf('%d-%d', $item->lft, $item->rgt); ?>"> <?php echo (int) $item->id; ?></span> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php // Load the batch processing form if user is allowed ?> <?php if ($user->authorise('core.create', 'com_tags') && $user->authorise('core.edit', 'com_tags') && $user->authorise('core.edit.state', 'com_tags')) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_TAGS_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif;?> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\���4��5components/com_tags/views/tags/tmpl/default_batch.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * * @deprecated 3.4 Use default_batch_body and default_batch_footer */ defined('_JEXEC') or die; $published = $this->state->get('filter.published'); ?> <div class="modal hide fade" id="collapseModal"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h3><?php echo JText::_('COM_TAGS_BATCH_OPTIONS'); ?></h3> </div> <div class="modal-body modal-batch"> <p><?php echo JText::_('COM_TAGS_BATCH_TIP'); ?></p> <div class="row-fluid"> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.language'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.access'); ?> </div> </div> </div> </div> <div class="modal-footer"> <button class="btn" type="button" onclick="document.getElementById('batch-tag-id').value='';document.getElementById('batch-access').value='';document.getElementById('batch-language-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-primary" type="submit" onclick="Joomla.submitbutton('tag.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button> </div> </div> PKb��\@���,components/com_tags/views/tags/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Tags view class for the Tags package. * * @since 3.1 */ class TagsViewTags extends JViewLegacy { protected $items; protected $pagination; protected $state; /** * 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 a Error object. */ public function display($tpl = null) { $this->state = $this->get('State'); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } // Preprocess the list of items to find ordering divisions. foreach ($this->items as &$item) { $this->ordering[$item->parent_id][] = $item->id; } // Levels filter. $options = array(); $options[] = JHtml::_('select.option', '1', JText::_('J1')); $options[] = JHtml::_('select.option', '2', JText::_('J2')); $options[] = JHtml::_('select.option', '3', JText::_('J3')); $options[] = JHtml::_('select.option', '4', JText::_('J4')); $options[] = JHtml::_('select.option', '5', JText::_('J5')); $options[] = JHtml::_('select.option', '6', JText::_('J6')); $options[] = JHtml::_('select.option', '7', JText::_('J7')); $options[] = JHtml::_('select.option', '8', JText::_('J8')); $options[] = JHtml::_('select.option', '9', JText::_('J9')); $options[] = JHtml::_('select.option', '10', JText::_('J10')); $this->f_levels = $options; $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 3.1 */ protected function addToolbar() { $state = $this->get('State'); $canDo = JHelperContent::getActions('com_tags'); $user = JFactory::getUser(); // Get the toolbar object instance $bar = JToolBar::getInstance('toolbar'); JToolbarHelper::title(JText::_('COM_TAGS_MANAGER_TAGS'), 'tags'); if ($canDo->get('core.create')) { JToolbarHelper::addNew('tag.add'); } if ($canDo->get('core.edit')) { JToolbarHelper::editList('tag.edit'); } if ($canDo->get('core.edit.state')) { JToolbarHelper::publish('tags.publish', 'JTOOLBAR_PUBLISH', true); JToolbarHelper::unpublish('tags.unpublish', 'JTOOLBAR_UNPUBLISH', true); JToolbarHelper::archiveList('tags.archive'); } if ($canDo->get('core.admin')) { JToolbarHelper::checkin('tags.checkin'); } // Add a batch button if ($user->authorise('core.create', 'com_tags') && $user->authorise('core.edit', 'com_tags') && $user->authorise('core.edit.state', 'com_tags')) { $title = JText::_('JTOOLBAR_BATCH'); // Instantiate a new JLayoutFile instance and render the batch button $layout = new JLayoutFile('joomla.toolbar.batch'); $dhtml = $layout->render(array('title' => $title)); $bar->appendButton('Custom', $dhtml, 'batch'); } if ($state->get('filter.published') == -2 && $canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'tags.delete', 'JTOOLBAR_EMPTY_TRASH'); } elseif ($canDo->get('core.edit.state')) { JToolbarHelper::trash('tags.trash'); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences('com_tags'); } JToolbarHelper::help('JHELP_COMPONENTS_TAGS_MANAGER'); JHtmlSidebar::setAction('index.php?option=com_tags&view=tags'); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_PUBLISHED'), 'filter_published', JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true) ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_ACCESS'), 'filter_access', JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access')) ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_LANGUAGE'), 'filter_language', JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language')) ); } /** * Returns an array of fields the table can be sorted by * * @return array Array containing the field name to sort by as the key and display text as value * * @since 3.0 */ protected function getSortFields() { return array( 'a.lft' => JText::_('JGRID_HEADING_ORDERING'), 'a.state' => JText::_('JSTATUS'), 'a.title' => JText::_('JGLOBAL_TITLE'), 'a.access' => JText::_('JGRID_HEADING_ACCESS'), 'language' => JText::_('JGRID_HEADING_LANGUAGE'), 'a.id' => JText::_('JGRID_HEADING_ID') ); } } PKb��\��q��3components/com_tags/views/tag/tmpl/edit_options.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <?php echo JHtml::_('bootstrap.startAccordion', 'categoryOptions', array('active' => 'collapse0')); $fieldSets = $this->form->getFieldsets('params'); $i = 0; foreach ($fieldSets as $name => $fieldSet) : $label = !empty($fieldSet->label) ? $fieldSet->label : 'COM_TAGS_' . $name . '_FIELDSET_LABEL'; echo JHtml::_('bootstrap.addSlide', 'categoryOptions', JText::_($label), 'collapse' . ($i++)); if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="tip">' . $this->escape(JText::_($fieldSet->description)) . '</p>'; endif; ?> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <div class="control-group"> <div class="control-label"> <?php echo $field->label; ?> </div> <div class="controls"> <?php echo $field->input; ?> </div> </div> <?php endforeach; ?> <?php if ($name == 'basic'):?> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('note'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('note'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('tag_layout'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('tag_layout'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('tag_link_class'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('tag_link_class'); ?> </div> </div> <?php endif; echo JHtml::_('bootstrap.endSlide'); endforeach; echo JHtml::_('bootstrap.endAccordion'); PKb��\�E��+components/com_tags/views/tag/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); JHtml::_('formbehavior.chosen', 'select'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'tag.cancel' || document.formvalidator.isValid(document.getElementById('item-form'))) { " . $this->form->getField('description')->save() . " Joomla.submitform(task, document.getElementById('item-form')); } }; "); // Fieldsets to not automatically render by /layouts/joomla/edit/params.php $this->ignore_fieldsets = array('jmetadata'); ?> <form action="<?php echo JRoute::_('index.php?option=com_tags&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="item-form" class="form-validate"> <?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?> <div class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'details')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'details', JText::_('COM_TAGS_FIELDSET_DETAILS', true)); ?> <div class="row-fluid"> <div class="span9"> <div class="form-vertical"> <?php echo $this->form->getControlGroup('description'); ?> </div> </div> <div class="span3"> <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'publishing', JText::_('JGLOBAL_FIELDSET_PUBLISHING', true)); ?> <div class="row-fluid form-horizontal-desktop"> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.publishingdata', $this); ?> </div> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.metadata', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JLayoutHelper::render('joomla.edit.params', $this); ?> </div> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\Q��/ii4components/com_tags/views/tag/tmpl/edit_metadata.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="control-group"> <?php echo $this->form->getLabel('metadesc'); ?> <div class="controls"> <?php echo $this->form->getInput('metadesc'); ?> </div> </div> <div class="control-group"> <?php echo $this->form->getLabel('metakey'); ?> <div class="controls"> <?php echo $this->form->getInput('metakey'); ?> </div> </div> <?php foreach($this->form->getGroup('metadata') as $field): ?> <div class="control-group"> <?php if (!$field->hidden): ?> <?php echo $field->label; ?> <?php endif; ?> <div class="controls"> <?php echo $field->input; ?> </div> </div> <?php endforeach; ?> PKb��\���! ! +components/com_tags/views/tag/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * HTML View class for the Tags component * * @since 3.1 */ class TagsViewTag extends JViewLegacy { protected $form; protected $item; protected $state; protected $assoc; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return mixed A string if successful, otherwise a Error object. */ public function display($tpl = null) { $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); $this->canDo = JHelperContent::getActions('com_tags'); $this->assoc = $this->get('Assoc'); $input = JFactory::getApplication()->input; // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $input->set('hidemainmenu', true); $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @since 3.1 * * @return void */ protected function addToolbar() { $user = JFactory::getUser(); $userId = $user->get('id'); $isNew = ($this->item->id == 0); $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $userId); // Need to load the menu language file as mod_menu hasn't been loaded yet. $lang = JFactory::getLanguage(); $lang->load('com_tags', JPATH_BASE, null, false, true) || $lang->load('com_tags', JPATH_ADMINISTRATOR . '/components/com_tags', null, false, true); // Load the tags helper. require_once JPATH_COMPONENT . '/helpers/tags.php'; // Get the results for each action. $canDo = $this->canDo; $title = JText::_('COM_TAGS_BASE_' . ($isNew ? 'ADD' : 'EDIT') . '_TITLE'); /** * Prepare the toolbar. * If it is new we get: `tag tag-add add` * else we get `tag tag-edit edit` */ JToolbarHelper::title($title, 'tag tag-' . ($isNew ? 'add add' : 'edit edit')); // For new records, check the create permission. if ($isNew) { JToolbarHelper::apply('tag.apply'); JToolbarHelper::save('tag.save'); JToolbarHelper::save2new('tag.save2new'); } // If not checked out, can save the item. elseif (!$checkedOut && ($canDo->get('core.edit') || ($canDo->get('core.edit.own') && $this->item->created_user_id == $userId))) { JToolbarHelper::apply('tag.apply'); JToolbarHelper::save('tag.save'); if ($canDo->get('core.create')) { JToolbarHelper::save2new('tag.save2new'); } } // If an existing item, can save to a copy. if (!$isNew && $canDo->get('core.create')) { JToolbarHelper::save2copy('tag.save2copy'); } if (empty($this->item->id)) { JToolbarHelper::cancel('tag.cancel'); } else { if ($this->state->params->get('save_history', 0) && $user->authorise('core.edit')) { JToolbarHelper::versions('com_tags.tag', $this->item->id); } JToolbarHelper::cancel('tag.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_COMPONENTS_TAGS_MANAGER_EDIT'); JToolbarHelper::divider(); } } PKb��\`�o�CC$components/com_tags/helpers/tags.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Tags helper. * * @since 3.1 */ class TagsHelper extends JHelperContent { /** * Configure the Submenu links. * * @param string $extension The extension. * * @return void * * @since 3.1 */ public static function addSubmenu($extension) { $parts = explode('.', $extension); $component = $parts[0]; // Avoid nonsense situation. if ($component == 'tags') { return; } // Try to find the component helper. $file = JPath::clean(JPATH_ADMINISTRATOR . '/components/com_tags/helpers/tags.php'); if (file_exists($file)) { require_once $file; $cName = 'TagsHelper'; if (class_exists($cName)) { if (is_callable(array($cName, 'addSubmenu'))) { $lang = JFactory::getLanguage(); // Loading language file from administrator/language directory then administrator/components/<extension>/language $lang->load($component, JPATH_BASE, null, false, true) || $lang->load($component, JPath::clean(JPATH_ADMINISTRATOR . '/components/' . $component), null, false, true); } } } } } PKb��\M;����(components/com_tags/models/forms/tag.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <field name="id" type="text" class="readonly" label="JGLOBAL_FIELD_ID_LABEL" description="JGLOBAL_FIELD_ID_DESC" default="0" readonly="true" /> <field name="hits" type="text" class="readonly" label="JGLOBAL_HITS" description="COM_TAGS_FIELD_HITS_DESC" default="0" readonly="true" /> <field name="parent_id" type="tag" label="COM_TAGS_FIELD_PARENT_LABEL" description="COM_TAGS_FIELD_PARENT_DESC" mode="nested" validate="notequals" field="id" parent="parent" > <option value="1">JNONE</option> </field> <field name="lft" type="hidden" filter="unset" /> <field name="rgt" type="hidden" filter="unset" /> <field name="level" type="hidden" filter="unset" /> <field name="path" type="text" class="readonly" label="CATEGORIES_PATH_LABEL" description="CATEGORIES_PATH_DESC" size="40" readonly="true" /> <field name="title" type="text" class="input-xxlarge input-large-text" label="JGLOBAL_TITLE" description="JFIELD_TITLE_DESC" size="40" required="true" /> <field name="note" type="text" maxlength="255" class="span12" label="COM_TAGS_FIELD_NOTE_LABEL" description="COM_TAGS_FIELD_NOTE_DESC" size="40" /> <field name="description" type="editor" label="JGLOBAL_DESCRIPTION" description="COM_TAGS_DESCRIPTION_DESC" filter="JComponentHelper::filterText" buttons="true" hide="readmore,pagebreak" /> <field name="published" type="list" class="chzn-color-state" label="JSTATUS" description="JFIELD_PUBLISHED_DESC" default="1" size="1" > <option value="1">JPUBLISHED</option> <option value="0">JUNPUBLISHED</option> <option value="2">JARCHIVED</option> <option value="-2">JTRASHED</option> </field> <field name="checked_out" type="hidden" filter="unset" /> <field name="checked_out_time" type="hidden" filter="unset" /> <field name="access" type="accesslevel" label="JFIELD_ACCESS_LABEL" description="JFIELD_ACCESS_DESC" /> <field name="metadesc" type="textarea" label="JFIELD_META_DESCRIPTION_LABEL" description="JFIELD_META_DESCRIPTION_DESC" rows="3" cols="40" /> <field name="metakey" type="textarea" label="JFIELD_META_KEYWORDS_LABEL" description="JFIELD_META_KEYWORDS_DESC" rows="3" cols="40" /> <field name="alias" type="text" label="JFIELD_ALIAS_LABEL" description="JFIELD_ALIAS_DESC" hint="JFIELD_ALIAS_PLACEHOLDER" size="40" /> <field name="created_user_id" type="user" label="JGLOBAL_FIELD_CREATED_BY_LABEL" desc="JGLOBAL_FIELD_CREATED_BY_DESC" /> <field name="created_by_alias" type="text" labelclass="control-label" label="JGLOBAL_FIELD_CREATED_BY_ALIAS_LABEL" description="JGLOBAL_FIELD_CREATED_BY_ALIAS_DESC" size="20" /> <field name="created_time" type="calendar" class="readonly" label="JGLOBAL_CREATED_DATE" filter="unset" readonly="true" /> <field name="modified_user_id" type="user" class="readonly" label="JGLOBAL_FIELD_MODIFIED_BY_LABEL" readonly="true" filter="unset" /> <field name="modified_time" type="calendar" class="readonly" label="JGLOBAL_FIELD_MODIFIED_LABEL" filter="unset" readonly="true" /> <field name="language" type="contentlanguage" label="JFIELD_LANGUAGE_LABEL" description="COM_TAGS_FIELD_LANGUAGE_DESC" > <option value="*">JALL</option> </field> <field name="version_note" type="text" label="JGLOBAL_FIELD_VERSION_NOTE_LABEL" description="JGLOBAL_FIELD_VERSION_NOTE_DESC" maxlength="255" class="span12" size="45" labelclass="control-label" /> <fields name="params" label="JGLOBAL_FIELDSET_DISPLAY_OPTIONS"> <fieldset name="basic" label="COM_TAGS_BASIC_FIELDSET_LABEL" > <field name="tag_layout" type="componentlayout" labelclass="control-label" label="JFIELD_ALT_LAYOUT_LABEL" description="JFIELD_ALT_COMPONENT_LAYOUT_DESC" useglobal="true" extension="com_tags" view="tag" /> <field name="tag_link_class" type="text" labelclass="control-label" label="COM_TAGS_FIELD_TAG_LINK_CLASS" description="COM_TAGS_FIELD_TAG_LINK_CLASS_DESC" size="20" default="label label-info" /> </fieldset> </fields> <fields name="images"> <fieldset name="images" label="JGLOBAL_FIELDSET_IMAGE_OPTIONS"> <field name="image_intro" type="media" label="COM_TAGS_FIELD_INTRO_LABEL" labelclass="control-label" description="COM_TAGS_FIELD_INTRO_DESC" /> <field name="float_intro" type="list" labelclass="control-label" label="COM_TAGS_FLOAT_LABEL" description="COM_TAGS_FLOAT_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="right">COM_TAGS_RIGHT</option> <option value="left">COM_TAGS_LEFT</option> <option value="none">COM_TAGS_NONE</option> </field> <field name="image_intro_alt" type="text" labelclass="control-label" label="COM_TAGS_FIELD_IMAGE_ALT_LABEL" description="COM_TAGS_FIELD_IMAGE_ALT_DESC" size="20" /> <field name="image_intro_caption" type="text" labelclass="control-label" label="COM_TAGS_FIELD_IMAGE_CAPTION_LABEL" description="COM_TAGS_FIELD_IMAGE_CAPTION_DESC" size="20" /> <field name="spacer1" type="spacer" hr="true" /> <field name="image_fulltext" type="media" label="COM_TAGS_FIELD_FULL_LABEL" labelclass="control-label" description="COM_TAGS_FIELD_FULL_DESC" /> <field name="float_fulltext" type="list" labelclass="control-label" label="COM_TAGS_FLOAT_LABEL" description="COM_TAGS_FLOAT_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="right">COM_TAGS_RIGHT</option> <option value="left">COM_TAGS_LEFT</option> <option value="none">COM_TAGS_NONE</option> </field> <field name="image_fulltext_alt" type="text" labelclass="control-label" label="COM_TAGS_FIELD_IMAGE_ALT_LABEL" description="COM_TAGS_FIELD_IMAGE_ALT_DESC" size="20" /> <field name="image_fulltext_caption" type="text" labelclass="control-label" label="COM_TAGS_FIELD_IMAGE_CAPTION_LABEL" description="COM_TAGS_FIELD_IMAGE_CAPTION_DESC" size="20" /> </fieldset> </fields> <fields name="metadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS"> <fieldset name="jmetadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS"> <field name="author" type="text" label="JAUTHOR" description="JFIELD_METADATA_AUTHOR_DESC" size="30" /> <field name="robots" type="list" label="JFIELD_METADATA_ROBOTS_LABEL" description="JFIELD_METADATA_ROBOTS_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="index, follow">JGLOBAL_INDEX_FOLLOW</option> <option value="noindex, follow">JGLOBAL_NOINDEX_FOLLOW</option> <option value="index, nofollow">JGLOBAL_INDEX_NOFOLLOW</option> <option value="noindex, nofollow">JGLOBAL_NOINDEX_NOFOLLOW</option> </field> </fieldset> </fields> </form> PKb��\�iuH�)�)"components/com_tags/models/tag.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * Tags Component Tag Model * * @since 3.1 */ class TagsModelTag extends JModelAdmin { /** * @var string The prefix to use with controller messages. * @since 3.1 */ protected $text_prefix = 'COM_TAGS'; /** * @var string The type alias for this content type. * @since 3.2 */ public $typeAlias = 'com_tags.tag'; /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to delete the record. Defaults to the permission set in the component. * * @since 3.1 */ protected function canDelete($record) { if (!empty($record->id)) { if ($record->published != -2) { return; } return parent::canDelete($record); } } /** * Method to test whether a record can have its state changed. * * @param object $record A record object. * * @return boolean True if allowed to change the state of the record. Defaults to the permission set in the component. * * @since 3.1 */ protected function canEditState($record) { return parent::canEditState($record); } /** * Method to get a table object, load it if necessary. * * @param string $type The table name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A JTable object * * @since 3.1 */ public function getTable($type = 'Tag', $prefix = 'TagsTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Auto-populate the model state. * * @note Calling getState in this method will result in recursion. * * @return void * * @since 3.1 */ protected function populateState() { $app = JFactory::getApplication('administrator'); $parentId = $app->input->getInt('parent_id'); $this->setState('tag.parent_id', $parentId); // Load the User state. $pk = $app->input->getInt('id'); $this->setState($this->getName() . '.id', $pk); // Load the parameters. $params = JComponentHelper::getParams('com_tags'); $this->setState('params', $params); } /** * Method to get a tag. * * @param integer $pk An optional id of the object to get, otherwise the id from the model state is used. * * @return mixed Tag data object on success, false on failure. * * @since 3.1 */ public function getItem($pk = null) { if ($result = parent::getItem($pk)) { // Prime required properties. if (empty($result->id)) { $result->parent_id = $this->getState('tag.parent_id'); } // Convert the metadata field to an array. $registry = new Registry; $registry->loadString($result->metadata); $result->metadata = $registry->toArray(); // Convert the images field to an array. $registry = new Registry; $registry->loadString($result->images); $result->images = $registry->toArray(); // Convert the urls field to an array. $registry = new Registry; $registry->loadString($result->urls); $result->urls = $registry->toArray(); // Convert the created and modified dates to local user time for display in the form. $tz = new DateTimeZone(JFactory::getApplication()->get('offset')); if ((int) $result->created_time) { $date = new JDate($result->created_time); $date->setTimezone($tz); $result->created_time = $date->toSql(true); } else { $result->created_time = null; } if ((int) $result->modified_time) { $date = new JDate($result->modified_time); $date->setTimezone($tz); $result->modified_time = $date->toSql(true); } else { $result->modified_time = null; } } return $result; } /** * Method to get the row form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return mixed A JForm object on success, false on failure * * @since 3.1 */ public function getForm($data = array(), $loadData = true) { $jinput = JFactory::getApplication()->input; // Get the form. $form = $this->loadForm('com_tags.tag', 'tag', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } $user = JFactory::getUser(); if (!$user->authorise('core.edit.state', 'com_tags' . $jinput->get('id'))) { // Disable fields for display. $form->setFieldAttribute('ordering', 'disabled', 'true'); $form->setFieldAttribute('published', 'disabled', 'true'); // Disable fields while saving. // The controller has already verified this is a record you can edit. $form->setFieldAttribute('ordering', 'filter', 'unset'); $form->setFieldAttribute('published', 'filter', 'unset'); } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 3.1 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_tags.edit.tag.data', array()); if (empty($data)) { $data = $this->getItem(); } $this->preprocessData('com_tags.tag', $data); return $data; } /** * Method to preprocess the form. * * @param JForm $form A JForm object. * @param mixed $data The data expected for the form. * @param string $group The name of the plugin group to import. * * @return void * * @see JFormField * @since 3.1 * @throws Exception if there is an error in the form event. */ protected function preprocessForm(JForm $form, $data, $group = 'content') { // Trigger the default form events. parent::preprocessForm($form, $data, $group); } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 3.1 */ public function save($data) { $dispatcher = JEventDispatcher::getInstance(); $table = $this->getTable(); $input = JFactory::getApplication()->input; $pk = (!empty($data['id'])) ? $data['id'] : (int) $this->getState($this->getName() . '.id'); $isNew = true; $context = $this->option . '.' . $this->name; // Include the plugins for the save events. JPluginHelper::importPlugin($this->events_map['save']); // Load the row if saving an existing tag. if ($pk > 0) { $table->load($pk); $isNew = false; } // Set the new parent id if parent id not matched OR while New/Save as Copy . if ($table->parent_id != $data['parent_id'] || $data['id'] == 0) { $table->setLocation($data['parent_id'], 'last-child'); } if (isset($data['images']) && is_array($data['images'])) { $registry = new Registry; $registry->loadArray($data['images']); $data['images'] = (string) $registry; } if (isset($data['urls']) && is_array($data['urls'])) { $registry = new Registry; $registry->loadArray($data['urls']); $data['urls'] = (string) $registry; } // Alter the title for save as copy if ($input->get('task') == 'save2copy') { list($title, $alias) = $this->generateNewTitle($data['parent_id'], $data['alias'], $data['title']); $data['title'] = $title; $data['alias'] = $alias; } // Bind the data. if (!$table->bind($data)) { $this->setError($table->getError()); return false; } // Bind the rules. if (isset($data['rules'])) { $rules = new JAccessRules($data['rules']); $table->setRules($rules); } // Check the data. if (!$table->check()) { $this->setError($table->getError()); return false; } // Trigger the before save event. $result = $dispatcher->trigger($this->event_before_save, array($context, &$table, $isNew)); if (in_array(false, $result, true)) { $this->setError($table->getError()); return false; } // Store the data. if (!$table->store()) { $this->setError($table->getError()); return false; } // Trigger the after save event. $dispatcher->trigger($this->event_after_save, array($context, &$table, $isNew)); // Rebuild the path for the tag: if (!$table->rebuildPath($table->id)) { $this->setError($table->getError()); return false; } // Rebuild the paths of the tag's children: if (!$table->rebuild($table->id, $table->lft, $table->level, $table->path)) { $this->setError($table->getError()); return false; } $this->setState($this->getName() . '.id', $table->id); // Clear the cache $this->cleanCache(); return true; } /** * Method rebuild the entire nested set tree. * * @return boolean False on failure or error, true otherwise. * * @since 3.1 */ public function rebuild() { // Get an instance of the table object. $table = $this->getTable(); if (!$table->rebuild()) { $this->setError($table->getError()); return false; } // Clear the cache $this->cleanCache(); return true; } /** * Method to save the reordered nested set tree. * First we save the new order values in the lft values of the changed ids. * Then we invoke the table rebuild to implement the new ordering. * * @param array $idArray An array of primary key ids. * @param integer $lft_array The lft value * * @return boolean False on failure or error, True otherwise * * @since 3.1 */ public function saveorder($idArray = null, $lft_array = null) { // Get an instance of the table object. $table = $this->getTable(); if (!$table->saveorder($idArray, $lft_array)) { $this->setError($table->getError()); return false; } // Clear the cache $this->cleanCache(); return true; } /** * Method to change the title & alias. * * @param integer $parent_id The id of the parent. * @param string $alias The alias. * @param string $title The title. * * @return array Contains the modified title and alias. * * @since 3.1 */ protected function generateNewTitle($parent_id, $alias, $title) { // Alter the title & alias $table = $this->getTable(); while ($table->load(array('alias' => $alias, 'parent_id' => $parent_id))) { $title = ($table->title != $title) ? $title : JString::increment($title); $alias = JString::increment($alias, 'dash'); } return array($title, $alias); } } PKb��\Ck�b #components/com_tags/models/tags.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Tags Component Tags Model * * @since 3.1 */ class TagsModelTags extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 3.0.3 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'title', 'a.title', 'alias', 'a.alias', 'published', 'a.published', 'access', 'a.access', 'access_level', 'language', 'a.language', 'checked_out', 'a.checked_out', 'checked_out_time', 'a.checked_out_time', 'created_time', 'a.created_time', 'created_user_id', 'a.created_user_id', 'lft', 'a.lft', 'rgt', 'a.rgt', 'level', 'a.level', 'path', 'a.path', ); } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 3.1 */ protected function populateState($ordering = null, $direction = null) { $context = $this->context; $search = $this->getUserStateFromRequest($context . '.search', 'filter_search'); $this->setState('filter.search', $search); $level = $this->getUserStateFromRequest($context . '.filter.level', 'filter_level', 0, 'int'); $this->setState('filter.level', $level); $access = $this->getUserStateFromRequest($context . '.filter.access', 'filter_access', 0, 'int'); $this->setState('filter.access', $access); $published = $this->getUserStateFromRequest($context . '.filter.published', 'filter_published', ''); $this->setState('filter.published', $published); $language = $this->getUserStateFromRequest($context . '.filter.language', 'filter_language', ''); $this->setState('filter.language', $language); // Load the parameters. $params = JComponentHelper::getParams('com_tags'); $this->setState('params', $params); // List state information. parent::populateState('a.lft', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. * * @since 3.1 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.published'); $id .= ':' . $this->getState('filter.language'); return parent::getStoreId($id); } /** * Method to create a query for a list of items. * * @return string * * @since 3.1 */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); $user = JFactory::getUser(); // Select the required fields from the table. $query->select( $this->getState( 'list.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' ) ); $query->from('#__tags AS a') ->where('a.alias <> ' . $db->quote('root')); // Join over the language $query->select('l.title AS language_title') ->join('LEFT', $db->quoteName('#__languages') . ' AS l ON l.lang_code = a.language'); // Join over the users for the checked out user. $query->select('uc.name AS editor') ->join('LEFT', '#__users AS uc ON uc.id=a.checked_out'); // Join over the users for the author. $query->select('ua.name AS author_name') ->join('LEFT', '#__users AS ua ON ua.id = a.created_user_id') ->select('ug.title AS access_title') ->join('LEFT', '#__viewlevels AS ug on ug.id = a.access'); // Filter on the level. if ($level = $this->getState('filter.level')) { $query->where('a.level <= ' . (int) $level); } // Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } // Implement View Level Access if (!$user->authorise('core.admin')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } // Filter by published state $published = $this->getState('filter.published'); if (is_numeric($published)) { $query->where('a.published = ' . (int) $published); } elseif ($published === '') { $query->where('(a.published IN (0, 1))'); } // Filter by search in title $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } elseif (stripos($search, 'author:') === 0) { $search = $db->quote('%' . $db->escape(substr($search, 7), true) . '%'); $query->where('(ua.name LIKE ' . $search . ' OR ua.username LIKE ' . $search . ')'); } else { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('(a.title LIKE ' . $search . ' OR a.alias LIKE ' . $search . ' OR a.note LIKE ' . $search . ')'); } } // Filter on the language. if ($language = $this->getState('filter.language')) { $query->where('a.language = ' . $db->quote($language)); } // Add the list ordering clause $listOrdering = $this->getState('list.ordering', 'a.lft'); $listDirn = $db->escape($this->getState('list.direction', 'ASC')); if ($listOrdering == 'a.access') { $query->order('a.access ' . $listDirn . ', a.lft ' . $listDirn); } else { $query->order($db->escape($listOrdering) . ' ' . $listDirn); } return $query; } /** * Method override to check-in a record or an array of record * * @param mixed $pks The ID of the primary key or an array of IDs * * @return mixed Boolean false if there is an error, otherwise the count of records checked in. * * @since 12.2 */ public function checkin($pks = array()) { $pks = (array) $pks; $table = $this->getTable(); $count = 0; if (empty($pks)) { $pks = array((int) $this->getState($this->getName() . '.id')); } // Check in all items. foreach ($pks as $pk) { if ($table->load($pk)) { if ($table->checked_out > 0) { // Only attempt to check the row in if it exists. if ($pk) { $user = JFactory::getUser(); // Get an instance of the row to checkin. $table = $this->getTable(); if (!$table->load($pk)) { $this->setError($table->getError()); return false; } // Check if this is the user having previously checked out the row. if ($table->checked_out > 0 && $table->checked_out != $user->get('id') && !$user->authorise('core.admin', 'com_checkin')) { $this->setError(JText::_('JLIB_APPLICATION_ERROR_CHECKIN_USER_MISMATCH')); return false; } // Attempt to check the row in. if (!$table->checkin($pk)) { $this->setError($table->getError()); return false; } } $count++; } } else { $this->setError($table->getError()); return false; } } return $count; } /** * Method to get a table object, load it if necessary. * * @param string $type The table name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A JTable object * * @since 3.1 */ public function getTable($type = 'Tag', $prefix = 'TagsTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } } PKb��\#�W���"components/com_tags/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_tags * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Tags view class for the Tags package. * * @since 3.1 */ class TagsController extends JControllerLegacy { /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JControllerLegacy This object to support chaining. * * @since 3.1 */ public function display($cachable = false, $urlparams = false) { require_once JPATH_COMPONENT . '/helpers/tags.php'; $view = $this->input->get('view', 'tags'); $layout = $this->input->get('layout', 'default'); $id = $this->input->getInt('id'); // Check for edit form. if ($view == 'tag' && $layout == 'edit' && !$this->checkEditId('com_tags.edit.tag', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_tags&view=tags', false)); return false; } parent::display(); return $this; } } PKb��\�MHFFcomponents/com_cache/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_cache" section="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> </field> </fieldset> </config> PKb��\�AV V 1components/com_cache/views/cache/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_cache * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('formbehavior.chosen', 'select'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_cache'); ?>" method="post" name="adminForm" id="adminForm"> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <table class="table table-striped"> <thead> <tr> <th width="20"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th class="title nowrap"> <?php echo JHtml::_('grid.sort', 'COM_CACHE_GROUP', 'group', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap"> <?php echo JHtml::_('grid.sort', 'COM_CACHE_NUMBER_OF_FILES', 'count', $listDirn, $listOrder); ?> </th> <th width="10%"> <?php echo JHtml::_('grid.sort', 'COM_CACHE_SIZE', 'size', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="4"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php $i = 0; foreach ($this->data as $folder => $item) : ?> <tr class="row<?php echo $i % 2; ?>"> <td> <input type="checkbox" id="cb<?php echo $i;?>" name="cid[]" value="<?php echo $item->group; ?>" onclick="Joomla.isChecked(this.checked);" /> </td> <td> <label for="cb<?php echo $i ?>"> <strong><?php echo $item->group; ?></strong> </label> </td> <td> <?php echo $item->count; ?> </td> <td> <?php echo JHtml::_('number.bytes', $item->size*1024); ?> </td> </tr> <?php $i++; endforeach; ?> </tbody> </table> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="client" value="<?php echo $this->client->id;?>" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�e���.components/com_cache/views/cache/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_cache * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * HTML View class for the Cache component * * @since 1.6 */ class CacheViewCache extends JViewLegacy { protected $client; protected $data; protected $pagination; protected $state; /** * Display a view. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return mixed A string if successful, otherwise a Error object. */ public function display($tpl = null) { $this->data = $this->get('Data'); $this->client = $this->get('Client'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JToolbarHelper::title(JText::_('COM_CACHE_CLEAR_CACHE'), 'lightning clear'); JToolbarHelper::custom('delete', 'delete.png', 'delete_f2.png', 'JTOOLBAR_DELETE', true); JToolbarHelper::divider(); if (JFactory::getUser()->authorise('core.admin', 'com_cache')) { JToolbarHelper::preferences('com_cache'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_SITE_MAINTENANCE_CLEAR_CACHE'); JHtmlSidebar::setAction('index.php?option=com_cache'); JHtmlSidebar::addFilter( // @todo We need an actual label here. '', 'filter_client_id', JHtml::_('select.options', CacheHelper::getClientOptions(), 'value', 'text', $this->state->get('clientId')) ); } } PKb��\ᐜs1components/com_cache/views/purge/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_cache * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <form action="<?php echo JRoute::_('index.php?option=com_cache'); ?>" method="post" name="adminForm" id="adminForm"> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <fieldset> <legend><?php echo JText::_('COM_CACHE_PURGE_EXPIRED_ITEMS'); ?></legend> <p><?php echo JText::_('COM_CACHE_PURGE_INSTRUCTIONS'); ?></p> </fieldset> <div class="alert"> <p><?php echo JText::_('COM_CACHE_RESOURCE_INTENSIVE_WARNING'); ?></p> </div> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\Y�$$.components/com_cache/views/purge/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_cache * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * HTML View class for the Cache component * * @since 1.6 */ class CacheViewPurge extends JViewLegacy { /** * Display a view. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return mixed A string if successful, otherwise a Error object. */ public function display($tpl = null) { $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JToolbarHelper::title(JText::_('COM_CACHE_PURGE_EXPIRED_CACHE'), 'lightning purge'); JToolbarHelper::custom('purge', 'delete.png', 'delete_f2.png', 'COM_CACHE_PURGE_EXPIRED', false); JToolbarHelper::divider(); if (JFactory::getUser()->authorise('core.admin', 'com_cache')) { JToolbarHelper::preferences('com_cache'); JToolbarHelper::divider(); } JToolbarHelper::help('JHELP_SITE_MAINTENANCE_PURGE_EXPIRED_CACHE'); } } PKb��\ܟ�55components/com_cache/cache.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_cache * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; if (!JFactory::getUser()->authorise('core.manage', 'com_cache')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $controller = JControllerLegacy::getInstance('Cache'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\8�ǾEE&components/com_cache/helpers/cache.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_cache * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Cache component helper. * * @since 1.6 */ class CacheHelper { /** * Get a list of filter options for the application clients. * * @return array An array of JHtmlOption elements. */ public static function getClientOptions() { // Build the filter options. $options = array(); $options[] = JHtml::_('select.option', '0', JText::_('JSITE')); $options[] = JHtml::_('select.option', '1', JText::_('JADMINISTRATOR')); return $options; } /** * Configure the Linkbar. * * @param string $vName The name of the active view. * * @return void * * @since 1.6 */ public static function addSubmenu($vName) { JHtmlSidebar::addEntry( JText::_('JGLOBAL_SUBMENU_CHECKIN'), 'index.php?option=com_checkin', $vName == 'com_checkin' ); JHtmlSidebar::addEntry( JText::_('JGLOBAL_SUBMENU_CLEAR_CACHE'), 'index.php?option=com_cache', $vName == 'cache' ); JHtmlSidebar::addEntry( JText::_('JGLOBAL_SUBMENU_PURGE_EXPIRED_CACHE'), 'index.php?option=com_cache&view=purge', $vName == 'purge' ); } } PKb��\c|I��%components/com_cache/models/cache.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_cache * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Cache Model * * @since 1.6 */ class CacheModelCache extends JModelList { /** * An Array of CacheItems indexed by cache group ID * * @var Array */ protected $_data = array(); /** * Group total * * @var integer */ protected $_total = null; /** * Pagination object * * @var object */ protected $_pagination = null; /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering Field for ordering. * @param string $direction Direction of ordering. * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $clientId = $this->getUserStateFromRequest($this->context . '.filter.client_id', 'filter_client_id', 0, 'int'); $this->setState('clientId', $clientId == 1 ? 1 : 0); $client = JApplicationHelper::getClientInfo($clientId); $this->setState('client', $client); parent::populateState('group', 'asc'); } /** * Method to get cache data * * @return array */ public function getData() { if (empty($this->_data)) { $cache = $this->getCache(); $data = $cache->getAll(); if ($data != false) { $this->_data = $data; $this->_total = count($data); if ($this->_total) { // Apply custom ordering. $ordering = $this->getState('list.ordering'); $direction = ($this->getState('list.direction') == 'asc') ? 1 : (-1); jimport('joomla.utilities.arrayhelper'); $this->_data = JArrayHelper::sortObjects($data, $ordering, $direction); // Apply custom pagination. if ($this->_total > $this->getState('list.limit') && $this->getState('list.limit')) { $this->_data = array_slice($this->_data, $this->getState('list.start'), $this->getState('list.limit')); } } } else { $this->_data = array(); } } return $this->_data; } /** * Method to get cache instance. * * @return object */ public function getCache() { $conf = JFactory::getConfig(); $options = array( 'defaultgroup' => '', 'storage' => $conf->get('cache_handler', ''), 'caching' => true, 'cachebase' => ($this->getState('clientId') == 1) ? JPATH_ADMINISTRATOR . '/cache' : $conf->get('cache_path', JPATH_SITE . '/cache') ); $cache = JCache::getInstance('', $options); return $cache; } /** * Method to get client data. * * @return array */ public function getClient() { return $this->getState('client'); } /** * Get the number of current Cache Groups. * * @return int */ public function getTotal() { if (empty($this->_total)) { $this->_total = count($this->getData()); } return $this->_total; } /** * Method to get a pagination object for the cache. * * @return integer */ public function getPagination() { if (empty($this->_pagination)) { $this->_pagination = new JPagination($this->getTotal(), $this->getState('list.start'), $this->getState('list.limit')); } return $this->_pagination; } /** * Clean out a cache group as named by param. * If no param is passed clean all cache groups. * * @param string $group Cache group name. * * @return void */ public function clean($group = '') { $cache = $this->getCache(); $cache->clean($group); } /** * Purge an array of cache groups. * * @param array $array Array of cache group names. * * @return void */ public function cleanlist($array) { foreach ($array as $group) { $this->clean($group); } } /** * Purge all cache items. * * @return boolean True if successful; false otherwise. */ public function purge() { $cache = JFactory::getCache(''); return $cache->gc(); } } PKb��\��9c[ [ #components/com_cache/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_cache * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Cache Controller * * @since 1.6 */ class CacheController extends JControllerLegacy { /** * Display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { require_once JPATH_COMPONENT . '/helpers/cache.php'; // Get the document object. $document = JFactory::getDocument(); // Set the default view name and format from the Request. $vName = $this->input->get('view', 'cache'); $vFormat = $document->getType(); $lName = $this->input->get('layout', 'default', 'string'); // Get and render the view. if ($view = $this->getView($vName, $vFormat)) { switch ($vName) { case 'purge': break; case 'cache': default: $model = $this->getModel($vName); $view->setModel($model, true); break; } $view->setLayout($lName); // Push document object into the view. $view->document = $document; // Load the submenu. CacheHelper::addSubmenu($this->input->get('view', 'cache')); $view->display(); } } /** * Method to delete a list of cache groups. * * @return void */ public function delete() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JInvalid_Token')); $cid = $this->input->post->get('cid', array(), 'array'); $model = $this->getModel('cache'); if (empty($cid)) { JError::raiseWarning(500, JText::_('JERROR_NO_ITEMS_SELECTED')); } else { $model->cleanlist($cid); } $this->setRedirect('index.php?option=com_cache&client=' . $model->getClient()->id); } /** * Purge the cache. * * @return void */ public function purge() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JInvalid_Token')); $model = $this->getModel('cache'); $ret = $model->purge(); $msg = JText::_('COM_CACHE_EXPIRED_ITEMS_HAVE_BEEN_PURGED'); $msgType = 'message'; if ($ret === false) { $msg = JText::_('COM_CACHE_EXPIRED_ITEMS_PURGING_ERROR'); $msgType = 'error'; } $this->setRedirect('index.php?option=com_cache&view=purge', $msg, $msgType); } } PKb��\��j��components/com_cache/cache.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_cache</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_CACHE_XML_DESCRIPTION</description> <administration> <files folder="admin"> <filename>cache.php</filename> <filename>config.xml</filename> <filename>controller.php</filename> <folder>models</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_cache.ini</language> <language tag="en-GB">language/en-GB.com_cache.sys.ini</language> </languages> </administration> </extension> PKb��\d��:��"components/com_content/content.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.tabstate'); if (!JFactory::getUser()->authorise('core.manage', 'com_content')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } JLoader::register('ContentHelper', __DIR__ . '/helpers/content.php'); $controller = JControllerLegacy::getInstance('Content'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\-�#SS*components/com_content/tables/featured.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Featured Table class. * * @since 1.6 */ class ContentTableFeatured extends JTable { /** * Constructor * * @param JDatabaseDriver &$db Database connector object * * @since 1.6 */ public function __construct(&$db) { parent::__construct('#__content_frontpage', 'content_id', $db); } } PKb��\��4NN.components/com_content/controllers/article.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * The article controller * * @package Joomla.Administrator * @subpackage com_content * @since 1.6 */ class ContentControllerArticle extends JControllerForm { /** * Class constructor. * * @param array $config A named array of configuration variables. * * @since 1.6 */ public function __construct($config = array()) { parent::__construct($config); // An article edit form can come from the articles or featured view. // Adjust the redirect view on the value of 'return' in the request. if ($this->input->get('return') == 'featured') { $this->view_list = 'featured'; $this->view_item = 'article&return=featured'; } } /** * Method override to check if you can add a new record. * * @param array $data An array of input data. * * @return boolean * * @since 1.6 */ protected function allowAdd($data = array()) { $user = JFactory::getUser(); $categoryId = JArrayHelper::getValue($data, 'catid', $this->input->getInt('filter_category_id'), 'int'); $allow = null; if ($categoryId) { // If the category has been passed in the data or URL check it. $allow = $user->authorise('core.create', 'com_content.category.' . $categoryId); } if ($allow === null) { // In the absense of better information, revert to the component permissions. return parent::allowAdd(); } else { return $allow; } } /** * Method override to check if you can edit an existing record. * * @param array $data An array of input data. * @param string $key The name of the key for the primary key. * * @return boolean * * @since 1.6 */ protected function allowEdit($data = array(), $key = 'id') { $recordId = (int) isset($data[$key]) ? $data[$key] : 0; $user = JFactory::getUser(); $userId = $user->get('id'); // Check general edit permission first. if ($user->authorise('core.edit', 'com_content.article.' . $recordId)) { return true; } // Fallback on edit.own. // First test if the permission is available. if ($user->authorise('core.edit.own', 'com_content.article.' . $recordId)) { // Now test the owner is the user. $ownerId = (int) isset($data['created_by']) ? $data['created_by'] : 0; if (empty($ownerId) && $recordId) { // Need to do a lookup from the model. $record = $this->getModel()->getItem($recordId); if (empty($record)) { return false; } $ownerId = $record->created_by; } // If the owner matches 'me' then do the test. if ($ownerId == $userId) { return true; } } // Since there is no asset tracking, revert to the component permissions. return parent::allowEdit($data, $key); } /** * Method to run batch operations. * * @param object $model The model. * * @return boolean True if successful, false otherwise and internal error is set. * * @since 1.6 */ public function batch($model = null) { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Set the model $model = $this->getModel('Article', '', array()); // Preset the redirect $this->setRedirect(JRoute::_('index.php?option=com_content&view=articles' . $this->getRedirectToListAppend(), false)); return parent::batch($model); } /** * Function that allows child controller access to model data after the data has been saved. * * @param JModelLegacy $model The data model object. * @param array $validData The validated data. * * @return void * * @since 3.1 */ protected function postSaveHook(JModelLegacy $model, $validData = array()) { return; } } PKb��\]�m�88/components/com_content/controllers/featured.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require_once __DIR__ . '/articles.php'; /** * Featured content controller class. * * @since 1.6 */ class ContentControllerFeatured extends ContentControllerArticles { /** * Removes an item. * * @return void * * @since 1.6 */ public function delete() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $user = JFactory::getUser(); $ids = $this->input->get('cid', array(), 'array'); // Access checks. foreach ($ids as $i => $id) { if (!$user->authorise('core.delete', 'com_content.article.' . (int) $id)) { // Prune items that you can't delete. unset($ids[$i]); JError::raiseNotice(403, JText::_('JERROR_CORE_DELETE_NOT_PERMITTED')); } } if (empty($ids)) { JError::raiseWarning(500, JText::_('JERROR_NO_ITEMS_SELECTED')); } else { // Get the model. $model = $this->getModel(); // Remove the items. if (!$model->featured($ids, 0)) { JError::raiseWarning(500, $model->getError()); } } $this->setRedirect('index.php?option=com_content&view=featured'); } /** * Method to publish a list of articles. * * @return void * * @since 1.0 */ public function publish() { parent::publish(); $this->setRedirect('index.php?option=com_content&view=featured'); } /** * Method to get a model object, loading it if required. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 1.6 */ public function getModel($name = 'Feature', $prefix = 'ContentModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } } PKb��\�0� /components/com_content/controllers/articles.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Articles list controller class. * * @since 1.6 */ class ContentControllerArticles extends JControllerAdmin { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { parent::__construct($config); // Articles default form can come from the articles or featured view. // Adjust the redirect view on the value of 'view' in the request. if ($this->input->get('view') == 'featured') { $this->view_list = 'featured'; } $this->registerTask('unfeatured', 'featured'); } /** * Method to toggle the featured setting of a list of articles. * * @return void * * @since 1.6 */ public function featured() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $user = JFactory::getUser(); $ids = $this->input->get('cid', array(), 'array'); $values = array('featured' => 1, 'unfeatured' => 0); $task = $this->getTask(); $value = JArrayHelper::getValue($values, $task, 0, 'int'); // Access checks. foreach ($ids as $i => $id) { if (!$user->authorise('core.edit.state', 'com_content.article.' . (int) $id)) { // Prune items that you can't change. unset($ids[$i]); JError::raiseNotice(403, JText::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED')); } } if (empty($ids)) { JError::raiseWarning(500, JText::_('JERROR_NO_ITEMS_SELECTED')); } else { // Get the model. $model = $this->getModel(); // Publish the items. if (!$model->featured($ids, $value)) { JError::raiseWarning(500, $model->getError()); } if ($value == 1) { $message = JText::plural('COM_CONTENT_N_ITEMS_FEATURED', count($ids)); } else { $message = JText::plural('COM_CONTENT_N_ITEMS_UNFEATURED', count($ids)); } } $view = $this->input->get('view', ''); if ($view == 'featured') { $this->setRedirect(JRoute::_('index.php?option=com_content&view=featured', false), $message); } else { $this->setRedirect(JRoute::_('index.php?option=com_content&view=articles', false), $message); } } /** * Proxy for getModel. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config The array of possible config values. Optional. * * @return JModel * * @since 1.6 */ public function getModel($name = 'Article', $prefix = 'ContentModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } /** * Function that allows child controller access to model data * after the item has been deleted. * * @param JModelLegacy $model The data model object. * @param integer $ids The array of ids for items being deleted. * * @return void * * @since 12.2 */ protected function postDeleteHook(JModelLegacy $model, $ids = null) { } } PKb��\b�X��\�\!components/com_content/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="articles" label="JGLOBAL_ARTICLES" description="COM_CONTENT_CONFIG_ARTICLE_SETTINGS_DESC"> <field name="article_layout" type="componentlayout" label="JGLOBAL_FIELD_LAYOUT_LABEL" description="JGLOBAL_FIELD_LAYOUT_DESC" menuitems="true" extension="com_content" view="article" /> <field name="show_title" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_SHOW_TITLE_LABEL" description="JGLOBAL_SHOW_TITLE_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="link_titles" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_LINKED_TITLES_LABEL" description="JGLOBAL_LINKED_TITLES_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="show_intro" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_SHOW_INTRO_LABEL" description="JGLOBAL_SHOW_INTRO_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="info_block_position" type="list" default="0" label="COM_CONTENT_FIELD_INFOBLOCK_POSITION_LABEL" description="COM_CONTENT_FIELD_INFOBLOCK_POSITION_DESC"> <option value="0">COM_CONTENT_FIELD_OPTION_ABOVE</option> <option value="1">COM_CONTENT_FIELD_OPTION_BELOW</option> <option value="2">COM_CONTENT_FIELD_OPTION_SPLIT</option> </field> <field name="show_category" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_CATEGORY_LABEL" description="JGLOBAL_SHOW_CATEGORY_DESC" default="1"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="link_category" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_LINK_CATEGORY_LABEL" description="JGLOBAL_LINK_CATEGORY_DESC" default="1"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="show_parent_category" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_PARENT_CATEGORY_LABEL" description="JGLOBAL_SHOW_PARENT_CATEGORY_DESC" default="1"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="link_parent_category" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_LINK_PARENT_CATEGORY_LABEL" description="JGLOBAL_LINK_PARENT_CATEGORY_DESC" default="1"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="spacer1" type="spacer" hr="true" /> <field name="show_author" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_AUTHOR_LABEL" description="JGLOBAL_SHOW_AUTHOR_DESC" default="1"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="link_author" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_LINK_AUTHOR_LABEL" description="JGLOBAL_LINK_AUTHOR_DESC" default="0"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="show_create_date" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_CREATE_DATE_LABEL" description="JGLOBAL_SHOW_CREATE_DATE_DESC" default="1"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_modify_date" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_MODIFY_DATE_LABEL" description="JGLOBAL_SHOW_MODIFY_DATE_DESC" default="1"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_publish_date" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_PUBLISH_DATE_LABEL" description="JGLOBAL_SHOW_PUBLISH_DATE_DESC" default="1"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_item_navigation" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_NAVIGATION_LABEL" description="JGLOBAL_SHOW_NAVIGATION_DESC" default="1"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_vote" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_VOTE_LABEL" description="JGLOBAL_SHOW_VOTE_DESC" default="0"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_readmore" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_READMORE_LABEL" description="JGLOBAL_SHOW_READMORE_DESC" default="1"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_readmore_title" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_READMORE_TITLE_LABEL" description="JGLOBAL_SHOW_READMORE_TITLE_DESC" default="1"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="readmore_limit" type="text" label="JGLOBAL_SHOW_READMORE_LIMIT_LABEL" description="JGLOBAL_SHOW_READMORE_LIMIT_DESC" default="100" /> <field id="show_tags" name="show_tags" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTENT_FIELD_SHOW_TAGS_LABEL" description="COM_CONTENT_FIELD_SHOW_TAGS_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="spacer2" type="spacer" hr="true" /> <field name="show_icons" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_ICONS_LABEL" description="JGLOBAL_SHOW_ICONS_DESC" default="1"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_print_icon" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_PRINT_ICON_LABEL" description="JGLOBAL_SHOW_PRINT_ICON_DESC" default="1"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_email_icon" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_EMAIL_ICON_LABEL" description="JGLOBAL_SHOW_EMAIL_ICON_DESC" default="1"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_hits" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_HITS_LABEL" description="JGLOBAL_SHOW_HITS_DESC" default="1"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_noauth" type="radio" class="btn-group btn-group-yesno" default="0" label="JGLOBAL_SHOW_UNAUTH_LINKS_LABEL" description="JGLOBAL_SHOW_UNAUTH_LINKS_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="urls_position" type="list" default="0" label="COM_CONTENT_FIELD_URLSPOSITION_LABEL" description="COM_CONTENT_FIELD_URLSPOSITION_DESC"> <option value="0">COM_CONTENT_FIELD_OPTION_ABOVE</option> <option value="1">COM_CONTENT_FIELD_OPTION_BELOW</option> </field> </fieldset> <fieldset name="editinglayout" label="COM_CONTENT_EDITING_LAYOUT" description="COM_CONTENT_CONFIG_EDITOR_LAYOUT"> <field name="show_publishing_options" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTENT_SHOW_PUBLISHING_OPTIONS_LABEL" description="COM_CONTENT_SHOW_PUBLISHING_OPTIONS_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_article_options" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTENT_SHOW_ARTICLE_OPTIONS_LABEL" description="COM_CONTENT_SHOW_ARTICLE_OPTIONS_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="save_history" type="radio" class="btn-group btn-group-yesno" default="0" label="JGLOBAL_SAVE_HISTORY_OPTIONS_LABEL" description="JGLOBAL_SAVE_HISTORY_OPTIONS_DESC" > <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="history_limit" type="text" filter="integer" label="JGLOBAL_HISTORY_LIMIT_OPTIONS_LABEL" description="JGLOBAL_HISTORY_LIMIT_OPTIONS_DESC" default="10" /> <field name="show_urls_images_frontend" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONTENT_SHOW_IMAGES_URLS_FRONT_LABEL" description="COM_CONTENT_SHOW_IMAGES_URLS_FRONT_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_urls_images_backend" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONTENT_SHOW_IMAGES_URLS_BACK_LABEL" description="COM_CONTENT_SHOW_IMAGES_URLS_BACK_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="spacer3" type="spacer" hr="true" /> <field name="targeta" type="list" label="COM_CONTENT_URL_FIELD_A_BROWSERNAV_LABEL" description="COM_CONTENT_URL_FIELD_BROWSERNAV_DESC" default="Parent" filter="int" > <option value="0">JBROWSERTARGET_PARENT</option> <option value="1">JBROWSERTARGET_NEW</option> <option value="2">JBROWSERTARGET_POPUP</option> <option value="3">JBROWSERTARGET_MODAL</option> </field> <field name="targetb" type="list" label="COM_CONTENT_URL_FIELD_B_BROWSERNAV_LABEL" description="COM_CONTENT_URL_FIELD_BROWSERNAV_DESC" default="Parent" filter="int" > <option value="0">JBROWSERTARGET_PARENT</option> <option value="1">JBROWSERTARGET_NEW</option> <option value="2">JBROWSERTARGET_POPUP</option> <option value="3">JBROWSERTARGET_MODAL</option> </field> <field name="targetc" type="list" label="COM_CONTENT_URL_FIELD_C_BROWSERNAV_LABEL" description="COM_CONTENT_URL_FIELD_BROWSERNAV_DESC" default="Parent" filter="int" > <option value="0">JBROWSERTARGET_PARENT</option> <option value="1">JBROWSERTARGET_NEW</option> <option value="2">JBROWSERTARGET_POPUP</option> <option value="3">JBROWSERTARGET_MODAL</option> </field> <field name="spacer4" type="spacer" hr="true" /> <field name="float_intro" type="list" label="COM_CONTENT_FLOAT_INTRO_LABEL" description="COM_CONTENT_FLOAT_DESC"> <option value="right">COM_CONTENT_RIGHT</option> <option value="left">COM_CONTENT_LEFT</option> <option value="none">COM_CONTENT_NONE</option> </field> <field name="float_fulltext" type="list" label="COM_CONTENT_FLOAT_FULLTEXT_LABEL" description="COM_CONTENT_FLOAT_DESC"> <option value="right">COM_CONTENT_RIGHT</option> <option value="left">COM_CONTENT_LEFT</option> <option value="none">COM_CONTENT_NONE</option> </field> </fieldset> <fieldset name="category" label="JCATEGORY" description="COM_CONTENT_CONFIG_CATEGORY_SETTINGS_DESC" > <field name="category_layout" type="componentlayout" label="JGLOBAL_FIELD_LAYOUT_LABEL" description="JGLOBAL_FIELD_LAYOUT_DESC" menuitems="true" extension="com_content" view="category" /> <field name="show_category_heading_title_text" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_CATEGORY_HEADING_TITLE_TEXT_LABEL" description="JGLOBAL_SHOW_CATEGORY_HEADING_TITLE_TEXT_DESC" default="1"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_category_title" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_CATEGORY_TITLE" description="JGLOBAL_SHOW_CATEGORY_TITLE_DESC" default="1" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_description" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_LABEL" description="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_description_image" type="radio" class="btn-group btn-group-yesno" default="0" label="JGLOBAL_SHOW_CATEGORY_IMAGE_LABEL" description="JGLOBAL_SHOW_CATEGORY_IMAGE_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="maxLevel" type="list" description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC" label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL" default="-1" > <option value="0">JNONE</option> <option value="-1">JALL</option> <option value="1">J1</option> <option value="2">J2</option> <option value="3">J3</option> <option value="4">J4</option> <option value="5">J5</option> </field> <field name="show_empty_categories" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL" description="COM_CONTENT_SHOW_EMPTY_CATEGORIES_DESC" default="0" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_no_articles" type="radio" class="btn-group btn-group-yesno" label="COM_CONTENT_NO_ARTICLES_LABEL" description="COM_CONTENT_NO_ARTICLES_DESC" default="1" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_subcat_desc" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL" description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC" default="1" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_cat_num_articles" type="radio" class="btn-group btn-group-yesno" label="COM_CONTENT_NUMBER_CATEGORY_ITEMS_LABEL" description="COM_CONTENT_NUMBER_CATEGORY_ITEMS_DESC" default="1" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_cat_tags" type="radio" label="COM_CONTENT_FIELD_SHOW_CAT_TAGS_LABEL" description="COM_CONTENT_FIELD_SHOW_CAT_TAGS_DESC" class="btn-group btn-group-yesno" default="1" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> </fieldset> <fieldset name="categories" label="JCATEGORIES" description="COM_CONTENT_CONFIG_CATEGORIES_SETTINGS_DESC" > <field name="show_base_description" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_LABEL" description="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="maxLevelcat" type="list" default="-1" description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC" label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL" > <option value="-1">JALL</option> <option value="1">J1</option> <option value="2">J2</option> <option value="3">J3</option> <option value="4">J4</option> <option value="5">J5</option> </field> <field name="show_empty_categories_cat" type="radio" class="btn-group btn-group-yesno" default="0" label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL" description="COM_CONTENT_SHOW_EMPTY_CATEGORIES_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_subcat_desc_cat" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL" description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_cat_num_articles_cat" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTENT_NUMBER_CATEGORY_ITEMS_LABEL" description="COM_CONTENT_NUMBER_CATEGORY_ITEMS_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> </fieldset> <fieldset name="blog_default_parameters" label="COM_CONTENT_CONFIG_BLOG_SETTINGS_LABEL" description="COM_CONTENT_CONFIG_BLOG_SETTINGS_DESC" > <field name="num_leading_articles" type="text" default="1" label="JGLOBAL_NUM_LEADING_ARTICLES_LABEL" description="JGLOBAL_NUM_LEADING_ARTICLES_DESC"> </field> <field name="num_intro_articles" type="text" default="4" label="JGLOBAL_NUM_INTRO_ARTICLES_LABEL" description="JGLOBAL_NUM_INTRO_ARTICLES_DESC"> </field> <field name="num_columns" type="text" default="2" label="JGLOBAL_NUM_COLUMNS_LABEL" description="JGLOBAL_NUM_COLUMNS_DESC"> </field> <field name="num_links" type="text" default="4" label="JGLOBAL_NUM_LINKS_LABEL" description="JGLOBAL_NUM_LINKS_DESC"> </field> <field name="multi_column_order" type="list" default="0" label="JGLOBAL_MULTI_COLUMN_ORDER_LABEL" description="JGLOBAL_MULTI_COLUMN_ORDER_DESC"> <option value="0">JGLOBAL_DOWN</option> <option value="1">JGLOBAL_ACROSS</option> </field> <field name="spacer1" type="spacer" hr="true" /> <field name="subcategories" type="spacer" class="spacer" label="JGLOBAL_SUBSLIDER_BLOG_EXTENDED_LABEL" /> <field name="show_subcategory_content" type="list" default="0" description="JGLOBAL_SHOW_SUBCATEGORY_CONTENT_DESC" label="JGLOBAL_SHOW_SUBCATEGORY_CONTENT_LABEL" > <option value="0">JNONE</option> <option value="-1">JALL</option> <option value="1">J1</option> <option value="2">J2</option> <option value="3">J3</option> <option value="4">J4</option> <option value="5">J5</option> </field> </fieldset> <fieldset name="list_default_parameters" label="JGLOBAL_LIST_LAYOUT_OPTIONS" description="COM_CONTENT_CONFIG_LIST_SETTINGS_DESC" > <field name="show_pagination_limit" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_DISPLAY_SELECT_LABEL" description="JGLOBAL_DISPLAY_SELECT_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="filter_field" type="list" default="hide" label="JGLOBAL_FILTER_FIELD_LABEL" description="JGLOBAL_FILTER_FIELD_DESC"> <option value="hide">JHIDE</option> <option value="title">JGLOBAL_TITLE</option> <option value="author">JAUTHOR</option> <option value="hits">JGLOBAL_HITS</option> </field> <field name="show_headings" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_SHOW_HEADINGS_LABEL" description="JGLOBAL_SHOW_HEADINGS_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="list_show_date" type="list" default="0" label="JGLOBAL_SHOW_DATE_LABEL" description="JGLOBAL_SHOW_DATE_DESC"> <option value="0">JHIDE</option> <option value="created">JGLOBAL_CREATED</option> <option value="modified">JGLOBAL_MODIFIED</option> <option value="published">JPUBLISHED</option> </field> <field name="date_format" type="text" size="15" label="JGLOBAL_DATE_FORMAT_LABEL" description="JGLOBAL_DATE_FORMAT_DESC" /> <field name="list_show_hits" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_LIST_HITS_LABEL" description="JGLOBAL_LIST_HITS_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="list_show_author" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_LIST_AUTHOR_LABEL" description="JGLOBAL_LIST_AUTHOR_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> </fieldset> <fieldset name="shared" label="COM_CONTENT_SHARED_LABEL" description="COM_CONTENT_SHARED_DESC" > <field name="orderby_pri" type="list" default="none" label="JGLOBAL_CATEGORY_ORDER_LABEL" description="JGLOBAL_CATEGORY_ORDER_DESC"> <option value="none">JGLOBAL_NO_ORDER</option> <option value="alpha">JGLOBAL_TITLE_ALPHABETICAL</option> <option value="ralpha">JGLOBAL_TITLE_REVERSE_ALPHABETICAL</option> <option value="order">JGLOBAL_CATEGORY_MANAGER_ORDER</option> </field> <field name="orderby_sec" type="list" default="rdate" label="JGLOBAL_Article_Order_Label" description="JGLOBAL_Article_Order_Desc"> <option value="rdate">JGLOBAL_MOST_RECENT_FIRST</option> <option value="date">JGLOBAL_OLDEST_FIRST</option> <option value="alpha">JGLOBAL_TITLE_ALPHABETICAL</option> <option value="ralpha">JGLOBAL_TITLE_REVERSE_ALPHABETICAL</option> <option value="author">JGLOBAL_AUTHOR_ALPHABETICAL</option> <option value="rauthor">JGLOBAL_AUTHOR_REVERSE_ALPHABETICAL</option> <option value="hits">JGLOBAL_MOST_HITS</option> <option value="rhits">JGLOBAL_LEAST_HITS</option> <option value="order">JGLOBAL_ARTICLE_MANAGER_ORDER</option> </field> <field name="order_date" type="list" default="published" description="JGLOBAL_ORDERING_DATE_DESC" label="JGLOBAL_ORDERING_DATE_LABEL" > <option value="created">JGLOBAL_CREATED</option> <option value="modified">JGLOBAL_MODIFIED</option> <option value="published">JPUBLISHED</option> </field> <field name="show_pagination" type="list" default="2" label="JGLOBAL_Pagination_Label" description="JGLOBAL_Pagination_Desc"> <option value="0">JHIDE</option> <option value="1">JSHOW</option> <option value="2">JGLOBAL_AUTO</option> </field> <field name="show_pagination_results" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_PAGINATION_RESULTS_LABEL" description="JGLOBAL_PAGINATION_RESULTS_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_featured" type="list" default="show" label="JGLOBAL_SHOW_FEATURED_ARTICLES_LABEL" description="JGLOBAL_SHOW_FEATURED_ARTICLES_DESC" > <option value="show">JSHOW</option> <option value="hide">JHIDE</option> <option value="only">JONLY</option> </field> </fieldset> <fieldset name="integration" label="JGLOBAL_INTEGRATION_LABEL" description="COM_CONTENT_CONFIG_INTEGRATION_SETTINGS_DESC" > <field name="show_feed_link" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_SHOW_FEED_LINK_LABEL" description="JGLOBAL_SHOW_FEED_LINK_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="feed_summary" type="list" label="JGLOBAL_FEED_SUMMARY_LABEL" description="JGLOBAL_FEED_SUMMARY_DESC" default="0"> <option value="0">JGLOBAL_INTRO_TEXT</option> <option value="1">JGLOBAL_FULL_TEXT</option> </field> <field name="feed_show_readmore" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_FEED_SHOW_READMORE_LABEL" description="JGLOBAL_FEED_SHOW_READMORE_DESC" default="0"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> </fieldset> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" validate="rules" filter="rules" component="com_content" section="component" /> </fieldset> </config> PKb��\K��c##!components/com_content/access.xmlnu�[���<?xml version="1.0" encoding="utf-8" ?> <access component="com_content"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> <action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_COMPONENT_DESC" /> </section> <section name="category"> <action name="core.create" title="JACTION_CREATE" description="COM_CATEGORIES_ACCESS_CREATE_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="COM_CATEGORIES_ACCESS_DELETE_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="COM_CATEGORIES_ACCESS_EDIT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="COM_CATEGORIES_ACCESS_EDITSTATE_DESC" /> <action name="core.edit.own" title="JACTION_EDITOWN" description="COM_CATEGORIES_ACCESS_EDITOWN_DESC" /> </section> <section name="article"> <action name="core.delete" title="JACTION_DELETE" description="COM_CONTENT_ACCESS_DELETE_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="COM_CONTENT_ACCESS_EDIT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="COM_CONTENT_ACCESS_EDITSTATE_DESC" /> </section> </access> PKb��\��P�$!$!6components/com_content/views/featured/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canOrder = $user->authorise('core.edit.state', 'com_content.article'); $archived = $this->state->get('filter.published') == 2 ? true : false; $trashed = $this->state->get('filter.published') == -2 ? true : false; $saveOrder = $listOrder == 'fp.ordering'; ?> <form action="<?php echo JRoute::_('index.php?option=com_content&view=featured'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <?php // Search tools bar echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this)); ?> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped" id="articleList"> <thead> <tr> <th width="1%" class="center"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="1%" style="min-width:55px" class="nowrap center"> <?php echo JHtml::_('searchtools.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('searchtools.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ORDERING', 'fp.ordering', $listDirn, $listOrder); ?> <?php if ($canOrder && $saveOrder) :?> <?php echo JHtml::_('grid.order', $this->items, 'filesave.png', 'featured.saveorder'); ?> <?php endif; ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JAUTHOR', 'a.created_by', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_LANGUAGE', 'language', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JDATE', 'a.created', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="9"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php $count = count($this->items); ?> <?php foreach ($this->items as $i => $item) : $item->max_ordering = 0; $ordering = ($listOrder == 'fp.ordering'); $assetId = 'com_content.article.' . $item->id; $canCreate = $user->authorise('core.create', 'com_content.category.' . $item->catid); $canEdit = $user->authorise('core.edit', 'com_content.article.' . $item->id); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_content.article.' . $item->id) && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>" sortable-group-id="<?php echo $item->catid; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td class="center"> <div class="btn-group"> <?php echo JHtml::_('jgrid.published', $item->state, $i, 'articles.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?> <?php echo JHtml::_('contentadministrator.featured', $item->featured, $i, $canChange); ?> <?php // Create dropdown items $action = $archived ? 'unarchive' : 'archive'; JHtml::_('actionsdropdown.' . $action, 'cb' . $i, 'articles'); $action = $trashed ? 'untrash' : 'trash'; JHtml::_('actionsdropdown.' . $action, 'cb' . $i, 'articles'); // Render dropdown list echo JHtml::_('actionsdropdown.render', $this->escape($item->title)); ?> </div> </td> <td class="nowrap has-context"> <div class="pull-left"> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'articles.', $canCheckin); ?> <?php endif; ?> <?php if ($item->language == '*') : ?> <?php $language = JText::alt('JALL', 'language'); ?> <?php else : ?> <?php $language = $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_content&task=article.edit&return=featured&id=' . $item->id);?>" title="<?php echo JText::_('JACTION_EDIT'); ?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <span title="<?php echo JText::sprintf('JFIELD_ALIAS_LABEL', $this->escape($item->alias)); ?>"><?php echo $this->escape($item->title); ?></span> <?php endif; ?> <div class="small"> <?php echo JText::_('JCATEGORY') . ": " . $this->escape($item->category_title); ?> </div> </div> </td> <td class="order"> <?php if ($canChange && $saveOrder) : ?> <div class="input-prepend"> <?php if ($listDirn == 'ASC') : ?> <span class="add-on"><?php echo $this->pagination->orderUpIcon($i, true, 'featured.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span class="add-on"><?php echo $this->pagination->orderDownIcon($i, $count, true, 'featured.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php elseif ($listDirn == 'DESC') : ?> <span class="add-on"><?php echo $this->pagination->orderUpIcon($i, true, 'featured.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span> <span class="add-on"><?php echo $this->pagination->orderDownIcon($i, $count, true, 'featured.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span> <?php endif; ?> <input type="text" name="order[]" size="5" value="<?php echo $item->ordering; ?>" class="width-20 text-area-order" /> </div> <?php else : ?> <?php echo $item->ordering; ?> <?php endif; ?> </td> <td class="small hidden-phone"> <?php echo $this->escape($item->access_level); ?> </td> <td class="small hidden-phone"> <?php if ($item->created_by_alias) : ?> <?php echo $this->escape($item->author_name); ?> <p class="smallsub"> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->created_by_alias)); ?></p> <?php else : ?> <?php echo $this->escape($item->author_name); ?> <?php endif; ?> </td> <td class="small hidden-phone"> <?php if ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="nowrap small hidden-phone"> <?php echo JHtml::_('date', $item->created, JText::_('DATE_FORMAT_LC4')); ?> </td> <td class="hidden-phone"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="featured" value="1" /> <input type="hidden" name="boxchecked" value="0" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\��Tͣ�3components/com_content/views/featured/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of featured articles. * * @since 1.6 */ class ContentViewFeatured extends JViewLegacy { protected $items; protected $pagination; protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { ContentHelper::addSubmenu('featured'); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); $this->authors = $this->get('Authors'); $this->filterForm = $this->get('FilterForm'); $this->activeFilters = $this->get('ActiveFilters'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } // Levels filter. $options = array(); $options[] = JHtml::_('select.option', '1', JText::_('J1')); $options[] = JHtml::_('select.option', '2', JText::_('J2')); $options[] = JHtml::_('select.option', '3', JText::_('J3')); $options[] = JHtml::_('select.option', '4', JText::_('J4')); $options[] = JHtml::_('select.option', '5', JText::_('J5')); $options[] = JHtml::_('select.option', '6', JText::_('J6')); $options[] = JHtml::_('select.option', '7', JText::_('J7')); $options[] = JHtml::_('select.option', '8', JText::_('J8')); $options[] = JHtml::_('select.option', '9', JText::_('J9')); $options[] = JHtml::_('select.option', '10', JText::_('J10')); $this->f_levels = $options; $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $state = $this->get('State'); $canDo = JHelperContent::getActions('com_content', 'category', $this->state->get('filter.category_id')); JToolbarHelper::title(JText::_('COM_CONTENT_FEATURED_TITLE'), 'star featured'); if ($canDo->get('core.create')) { JToolbarHelper::addNew('article.add'); } if ($canDo->get('core.edit')) { JToolbarHelper::editList('article.edit'); } if ($canDo->get('core.edit.state')) { JToolbarHelper::publish('articles.publish', 'JTOOLBAR_PUBLISH', true); JToolbarHelper::unpublish('articles.unpublish', 'JTOOLBAR_UNPUBLISH', true); JToolbarHelper::custom('articles.unfeatured', 'unfeatured.png', 'featured_f2.png', 'JUNFEATURE', true); JToolbarHelper::archiveList('articles.archive'); JToolbarHelper::checkin('articles.checkin'); } if ($state->get('filter.published') == -2 && $canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'articles.delete', 'JTOOLBAR_EMPTY_TRASH'); } elseif ($canDo->get('core.edit.state')) { JToolbarHelper::trash('articles.trash'); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences('com_content'); } JToolbarHelper::help('JHELP_CONTENT_FEATURED_ARTICLES'); } /** * Returns an array of fields the table can be sorted by * * @return array Array containing the field name to sort by as the key and display text as value * * @since 3.0 */ protected function getSortFields() { return array( 'fp.ordering' => JText::_('JGRID_HEADING_ORDERING'), 'a.state' => JText::_('JSTATUS'), 'a.title' => JText::_('JGLOBAL_TITLE'), 'category_title' => JText::_('JCATEGORY'), 'access_level' => JText::_('JGRID_HEADING_ACCESS'), 'a.created_by' => JText::_('JAUTHOR'), 'language' => JText::_('JGRID_HEADING_LANGUAGE'), 'a.created' => JText::_('JDATE'), 'a.id' => JText::_('JGRID_HEADING_ID') ); } } PKb��\v�ԭ�Acomponents/com_content/views/articles/tmpl/default_batch_body.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $published = $this->state->get('filter.published'); ?> <div class="row-fluid"> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.language'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.access'); ?> </div> </div> </div> <div class="row-fluid"> <?php if ($published >= 0) : ?> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.item', 'com_content'); ?> </div> </div> <?php endif; ?> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.tag'); ?> </div> </div> </div> PKb��\M�X[""Ccomponents/com_content/views/articles/tmpl/default_batch_footer.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <button class="btn" type="button" onclick="document.getElementById('batch-category-id').value='';document.getElementById('batch-access').value='';document.getElementById('batch-language-id').value='';document.getElementById('batch-user-id').value='';document.getElementById('batch-tag-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-success" type="submit" onclick="Joomla.submitbutton('article.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button>PKb��\v vw��4components/com_content/views/articles/tmpl/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $app = JFactory::getApplication(); if ($app->isSite()) { JSession::checkToken('get') or die(JText::_('JINVALID_TOKEN')); } require_once JPATH_ROOT . '/components/com_content/helpers/route.php'; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.framework', true); JHtml::_('formbehavior.chosen', 'select'); $function = $app->input->getCmd('function', 'jSelectArticle'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_content&view=articles&layout=modal&tmpl=component&function=' . $function . '&' . JSession::getFormToken() . '=1');?>" method="post" name="adminForm" id="adminForm" class="form-inline"> <fieldset class="filter"> <div class="btn-toolbar"> <div class="btn-group"> <label for="filter_search"> <?php echo JText::_('JSEARCH_FILTER_LABEL'); ?> </label> </div> <div class="btn-group"> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" size="30" title="<?php echo JText::_('COM_CONTENT_FILTER_SEARCH_DESC'); ?>" /> </div> <div class="btn-group"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>" data-placement="bottom"> <span class="icon-search"></span><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" data-placement="bottom" onclick="document.getElementById('filter_search').value='';this.form.submit();"> <span class="icon-remove"></span><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> </div> <hr class="hr-condensed" /> <div class="filters"> <select name="filter_access" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS');?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access'));?> </select> <select name="filter_published" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true);?> </select> <?php if ($this->state->get('filter.forcedLanguage')) : ?> <select name="filter_category_id" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option> <?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_content', array('filter.language' => array('*', $this->state->get('filter.forcedLanguage')))), 'value', 'text', $this->state->get('filter.category_id'));?> </select> <input type="hidden" name="forcedLanguage" value="<?php echo $this->escape($this->state->get('filter.forcedLanguage')); ?>" /> <input type="hidden" name="filter_language" value="<?php echo $this->escape($this->state->get('filter.language')); ?>" /> <?php else : ?> <select name="filter_category_id" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option> <?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_content'), 'value', 'text', $this->state->get('filter.category_id'));?> </select> <select name="filter_language" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE');?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language'));?> </select> <?php endif; ?> </div> </fieldset> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped table-condensed"> <thead> <tr> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th width="15%" class="center nowrap"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'access_level', $listDirn, $listOrder); ?> </th> <th width="15%" class="center nowrap"> <?php echo JHtml::_('grid.sort', 'JCATEGORY', 'a.catid', $listDirn, $listOrder); ?> </th> <th width="5%" class="center nowrap"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'language', $listDirn, $listOrder); ?> </th> <th width="5%" class="center nowrap"> <?php echo JHtml::_('grid.sort', 'JDATE', 'a.created', $listDirn, $listOrder); ?> </th> <th width="1%" class="center nowrap"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="15"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : ?> <?php if ($item->language && JLanguageMultilang::isEnabled()) { $tag = strlen($item->language); if ($tag == 5) { $lang = substr($item->language, 0, 2); } elseif ($tag == 6) { $lang = substr($item->language, 0, 3); } else { $lang = ""; } } elseif (!JLanguageMultilang::isEnabled()) { $lang = ""; } ?> <tr class="row<?php echo $i % 2; ?>"> <td> <a href="javascript:void(0)" onclick="if (window.parent) window.parent.<?php echo $this->escape($function);?>('<?php echo $item->id; ?>', '<?php echo $this->escape(addslashes($item->title)); ?>', '<?php echo $this->escape($item->catid); ?>', null, '<?php echo $this->escape(ContentHelperRoute::getArticleRoute($item->id, $item->catid, $item->language)); ?>', '<?php echo $this->escape($lang); ?>', null);"> <?php echo $this->escape($item->title); ?></a> </td> <td class="center"> <?php echo $this->escape($item->access_level); ?> </td> <td class="center"> <?php echo $this->escape($item->category_title); ?> </td> <td class="center"> <?php if ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="center nowrap"> <?php echo JHtml::_('date', $item->created, JText::_('DATE_FORMAT_LC4')); ?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> <div> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\#z''6components/com_content/views/articles/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $app = JFactory::getApplication(); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $archived = $this->state->get('filter.published') == 2 ? true : false; $trashed = $this->state->get('filter.published') == -2 ? true : false; $saveOrder = $listOrder == 'a.ordering'; $columns = 10; if ($saveOrder) { $saveOrderingUrl = 'index.php?option=com_content&task=articles.saveOrderAjax&tmpl=component'; JHtml::_('sortablelist.sortable', 'articleList', 'adminForm', strtolower($listDirn), $saveOrderingUrl); } $assoc = JLanguageAssociations::isEnabled(); ?> <form action="<?php echo JRoute::_('index.php?option=com_content&view=articles'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <?php // Search tools bar echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this)); ?> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped" id="articleList"> <thead> <tr> <th width="1%" class="nowrap center hidden-phone"> <?php echo JHtml::_('searchtools.sort', '', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING', 'icon-menu-2'); ?> </th> <th width="1%" class="center"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="1%" style="min-width:55px" class="nowrap center"> <?php echo JHtml::_('searchtools.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('searchtools.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?> </th> <?php if ($assoc) : ?> <?php $columns++; ?> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'COM_CONTENT_HEADING_ASSOCIATION', 'association', $listDirn, $listOrder); ?> </th> <?php endif;?> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JAUTHOR', 'a.created_by', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_LANGUAGE', 'language', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JDATE', 'a.created', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGLOBAL_HITS', 'a.hits', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="<?php echo $columns; ?>"> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : $item->max_ordering = 0; $ordering = ($listOrder == 'a.ordering'); $canCreate = $user->authorise('core.create', 'com_content.category.' . $item->catid); $canEdit = $user->authorise('core.edit', 'com_content.article.' . $item->id); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; $canEditOwn = $user->authorise('core.edit.own', 'com_content.article.' . $item->id) && $item->created_by == $userId; $canChange = $user->authorise('core.edit.state', 'com_content.article.' . $item->id) && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>" sortable-group-id="<?php echo $item->catid; ?>"> <td class="order nowrap center hidden-phone"> <?php $iconClass = ''; if (!$canChange) { $iconClass = ' inactive'; } elseif (!$saveOrder) { $iconClass = ' inactive tip-top hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED'); } ?> <span class="sortable-handler<?php echo $iconClass ?>"> <span class="icon-menu"></span> </span> <?php if ($canChange && $saveOrder) : ?> <input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering; ?>" class="width-20 text-area-order " /> <?php endif; ?> </td> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td class="center"> <div class="btn-group"> <?php echo JHtml::_('jgrid.published', $item->state, $i, 'articles.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?> <?php echo JHtml::_('contentadministrator.featured', $item->featured, $i, $canChange); ?> <?php // Create dropdown items $action = $archived ? 'unarchive' : 'archive'; JHtml::_('actionsdropdown.' . $action, 'cb' . $i, 'articles'); $action = $trashed ? 'untrash' : 'trash'; JHtml::_('actionsdropdown.' . $action, 'cb' . $i, 'articles'); // Render dropdown list echo JHtml::_('actionsdropdown.render', $this->escape($item->title)); ?> </div> </td> <td class="has-context"> <div class="pull-left break-word"> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'articles.', $canCheckin); ?> <?php endif; ?> <?php if ($item->language == '*'):?> <?php $language = JText::alt('JALL', 'language'); ?> <?php else:?> <?php $language = $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> <?php if ($canEdit || $canEditOwn) : ?> <a class="hasTooltip" href="<?php echo JRoute::_('index.php?option=com_content&task=article.edit&id=' . $item->id); ?>" title="<?php echo JText::_('JACTION_EDIT'); ?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <span title="<?php echo JText::sprintf('JFIELD_ALIAS_LABEL', $this->escape($item->alias)); ?>"><?php echo $this->escape($item->title); ?></span> <?php endif; ?> <span class="small break-word"> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias)); ?> </span> <div class="small"> <?php echo JText::_('JCATEGORY') . ": " . $this->escape($item->category_title); ?> </div> </div> </td> <td class="small hidden-phone"> <?php echo $this->escape($item->access_level); ?> </td> <?php if ($assoc) : ?> <td class="hidden-phone"> <?php if ($item->association) : ?> <?php echo JHtml::_('contentadministrator.association', $item->id); ?> <?php endif; ?> </td> <?php endif;?> <td class="small hidden-phone"> <?php if ($item->created_by_alias) : ?> <a class="hasTooltip" href="<?php echo JRoute::_('index.php?option=com_users&task=user.edit&id=' . (int) $item->created_by); ?>" title="<?php echo JText::_('JAUTHOR'); ?>"> <?php echo $this->escape($item->author_name); ?></a> <p class="smallsub"> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->created_by_alias)); ?></p> <?php else : ?> <a class="hasTooltip" href="<?php echo JRoute::_('index.php?option=com_users&task=user.edit&id=' . (int) $item->created_by); ?>" title="<?php echo JText::_('JAUTHOR'); ?>"> <?php echo $this->escape($item->author_name); ?></a> <?php endif; ?> </td> <td class="small hidden-phone"> <?php if ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="nowrap small hidden-phone"> <?php echo JHtml::_('date', $item->created, JText::_('DATE_FORMAT_LC4')); ?> </td> <td class="hidden-phone"> <?php echo (int) $item->hits; ?> </td> <td class="hidden-phone"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php // Load the batch processing form. ?> <?php if ($user->authorise('core.create', 'com_content') && $user->authorise('core.edit', 'com_content') && $user->authorise('core.edit.state', 'com_content')) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_CONTENT_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif; ?> <?php endif;?> <?php echo $this->pagination->getListFooter(); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\ss���<components/com_content/views/articles/tmpl/default_batch.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * * @deprecated 3.4 Use default_batch_body and default_batch_footer */ defined('_JEXEC') or die; $published = $this->state->get('filter.published'); ?> <div class="modal hide fade" id="collapseModal"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h3><?php echo JText::_('COM_CONTENT_BATCH_OPTIONS'); ?></h3> </div> <div class="modal-body modal-batch"> <p><?php echo JText::_('COM_CONTENT_BATCH_TIP'); ?></p> <div class="row-fluid"> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.language'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.access'); ?> </div> </div> </div> <div class="row-fluid"> <?php if ($published >= 0) : ?> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.item', 'com_content'); ?> </div> </div> <?php endif; ?> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.tag'); ?> </div> </div> </div> </div> <div class="modal-footer"> <button class="btn" type="button" onclick="document.getElementById('batch-category-id').value='';document.getElementById('batch-access').value='';document.getElementById('batch-language-id').value='';document.getElementById('batch-tag-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-primary" type="submit" onclick="Joomla.submitbutton('article.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button> </div> </div> PKb��\r�m��3components/com_content/views/articles/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of articles. * * @since 1.6 */ class ContentViewArticles extends JViewLegacy { protected $items; protected $pagination; protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { if ($this->getLayout() !== 'modal') { ContentHelper::addSubmenu('articles'); } $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); $this->authors = $this->get('Authors'); $this->filterForm = $this->get('FilterForm'); $this->activeFilters = $this->get('ActiveFilters'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } // Levels filter. $options = array(); $options[] = JHtml::_('select.option', '1', JText::_('J1')); $options[] = JHtml::_('select.option', '2', JText::_('J2')); $options[] = JHtml::_('select.option', '3', JText::_('J3')); $options[] = JHtml::_('select.option', '4', JText::_('J4')); $options[] = JHtml::_('select.option', '5', JText::_('J5')); $options[] = JHtml::_('select.option', '6', JText::_('J6')); $options[] = JHtml::_('select.option', '7', JText::_('J7')); $options[] = JHtml::_('select.option', '8', JText::_('J8')); $options[] = JHtml::_('select.option', '9', JText::_('J9')); $options[] = JHtml::_('select.option', '10', JText::_('J10')); $this->f_levels = $options; // We don't need toolbar in the modal window. if ($this->getLayout() !== 'modal') { $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); } parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_content', 'category', $this->state->get('filter.category_id')); $user = JFactory::getUser(); // Get the toolbar object instance $bar = JToolBar::getInstance('toolbar'); JToolbarHelper::title(JText::_('COM_CONTENT_ARTICLES_TITLE'), 'stack article'); if ($canDo->get('core.create') || (count($user->getAuthorisedCategories('com_content', 'core.create'))) > 0 ) { JToolbarHelper::addNew('article.add'); } if (($canDo->get('core.edit')) || ($canDo->get('core.edit.own'))) { JToolbarHelper::editList('article.edit'); } if ($canDo->get('core.edit.state')) { JToolbarHelper::publish('articles.publish', 'JTOOLBAR_PUBLISH', true); JToolbarHelper::unpublish('articles.unpublish', 'JTOOLBAR_UNPUBLISH', true); JToolbarHelper::custom('articles.featured', 'featured.png', 'featured_f2.png', 'JFEATURE', true); JToolbarHelper::custom('articles.unfeatured', 'unfeatured.png', 'featured_f2.png', 'JUNFEATURE', true); JToolbarHelper::archiveList('articles.archive'); JToolbarHelper::checkin('articles.checkin'); } // Add a batch button if ($user->authorise('core.create', 'com_content') && $user->authorise('core.edit', 'com_content') && $user->authorise('core.edit.state', 'com_content')) { $title = JText::_('JTOOLBAR_BATCH'); // Instantiate a new JLayoutFile instance and render the batch button $layout = new JLayoutFile('joomla.toolbar.batch'); $dhtml = $layout->render(array('title' => $title)); $bar->appendButton('Custom', $dhtml, 'batch'); } if ($this->state->get('filter.published') == -2 && $canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'articles.delete', 'JTOOLBAR_EMPTY_TRASH'); } elseif ($canDo->get('core.edit.state')) { JToolbarHelper::trash('articles.trash'); } if ($user->authorise('core.admin', 'com_content') || $user->authorise('core.options', 'com_content')) { JToolbarHelper::preferences('com_content'); } JToolbarHelper::help('JHELP_CONTENT_ARTICLE_MANAGER'); } /** * Returns an array of fields the table can be sorted by * * @return array Array containing the field name to sort by as the key and display text as value * * @since 3.0 */ protected function getSortFields() { return array( 'a.ordering' => JText::_('JGRID_HEADING_ORDERING'), 'a.state' => JText::_('JSTATUS'), 'a.title' => JText::_('JGLOBAL_TITLE'), 'category_title' => JText::_('JCATEGORY'), 'access_level' => JText::_('JGRID_HEADING_ACCESS'), 'a.created_by' => JText::_('JAUTHOR'), 'language' => JText::_('JGRID_HEADING_LANGUAGE'), 'a.created' => JText::_('JDATE'), 'a.id' => JText::_('JGRID_HEADING_ID'), 'a.featured' => JText::_('JFEATURED') ); } } PKb��\O�D�UU?components/com_content/views/article/tmpl/edit_associations.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.associations', $this); PKb��\�oѬ772components/com_content/views/article/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); JHtml::_('formbehavior.chosen', 'select'); $this->configFieldsets = array('editorConfig'); $this->hiddenFieldsets = array('basic-limited'); $this->ignore_fieldsets = array('jmetadata', 'item_associations'); // Create shortcut to parameters. $params = $this->state->get('params'); $app = JFactory::getApplication(); $input = $app->input; $assoc = JLanguageAssociations::isEnabled(); // This checks if the config options have ever been saved. If they haven't they will fall back to the original settings. $params = json_decode($params); $editoroptions = isset($params->show_publishing_options); if (!$editoroptions) { $params->show_publishing_options = '1'; $params->show_article_options = '1'; $params->show_urls_images_backend = '0'; $params->show_urls_images_frontend = '0'; } // Check if the article uses configuration settings besides global. If so, use them. if (isset($this->item->attribs['show_publishing_options']) && $this->item->attribs['show_publishing_options'] != '') { $params->show_publishing_options = $this->item->attribs['show_publishing_options']; } if (isset($this->item->attribs['show_article_options']) && $this->item->attribs['show_article_options'] != '') { $params->show_article_options = $this->item->attribs['show_article_options']; } if (isset($this->item->attribs['show_urls_images_frontend']) && $this->item->attribs['show_urls_images_frontend'] != '') { $params->show_urls_images_frontend = $this->item->attribs['show_urls_images_frontend']; } if (isset($this->item->attribs['show_urls_images_backend']) && $this->item->attribs['show_urls_images_backend'] != '') { $params->show_urls_images_backend = $this->item->attribs['show_urls_images_backend']; } JFactory::getDocument()->addScriptDeclaration(' Joomla.submitbutton = function(task) { if (task == "article.cancel" || document.formvalidator.isValid(document.getElementById("item-form"))) { ' . $this->form->getField('articletext')->save() . ' Joomla.submitform(task, document.getElementById("item-form")); } }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_content&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="item-form" class="form-validate"> <?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?> <div class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'general')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'general', JText::_('COM_CONTENT_ARTICLE_CONTENT', true)); ?> <div class="row-fluid"> <div class="span9"> <fieldset class="adminform"> <?php echo $this->form->getInput('articletext'); ?> </fieldset> </div> <div class="span3"> <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php // Do not show the publishing options if the edit form is configured not to. ?> <?php if ($params->show_publishing_options == 1) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'publishing', JText::_('COM_CONTENT_FIELDSET_PUBLISHING', true)); ?> <div class="row-fluid form-horizontal-desktop"> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.publishingdata', $this); ?> </div> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.metadata', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php // Do not show the images and links options if the edit form is configured not to. ?> <?php if ($params->show_urls_images_backend == 1) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'images', JText::_('COM_CONTENT_FIELDSET_URLS_AND_IMAGES', true)); ?> <div class="row-fluid form-horizontal-desktop"> <div class="span6"> <?php echo $this->form->getControlGroup('images'); ?> <?php foreach ($this->form->getGroup('images') as $field) : ?> <?php echo $field->getControlGroup(); ?> <?php endforeach; ?> </div> <div class="span6"> <?php foreach ($this->form->getGroup('urls') as $field) : ?> <?php echo $field->getControlGroup(); ?> <?php endforeach; ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php if ($assoc) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'associations', JText::_('JGLOBAL_FIELDSET_ASSOCIATIONS', true)); ?> <?php echo $this->loadTemplate('associations'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php $this->show_options = $params->show_article_options; ?> <?php echo JLayoutHelper::render('joomla.edit.params', $this); ?> <?php if ($this->canDo->get('core.admin')) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'editor', JText::_('COM_CONTENT_SLIDER_EDITOR_CONFIG', true)); ?> <?php echo $this->form->renderFieldset('editorConfig'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php if ($this->canDo->get('core.admin')) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'permissions', JText::_('COM_CONTENT_FIELDSET_RULES', true)); ?> <?php echo $this->form->getInput('rules'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="return" value="<?php echo $input->getCmd('return'); ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\O�D�UU@components/com_content/views/article/tmpl/modal_associations.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.associations', $this); PKb��\��y��3components/com_content/views/article/tmpl/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); JHtml::_('formbehavior.chosen', 'select'); $this->configFieldsets = array('editorConfig'); $this->hiddenFieldsets = array('basic-limited'); $this->ignore_fieldsets = array('jmetadata', 'item_associations'); // Create shortcut to parameters. $params = $this->state->get('params'); $app = JFactory::getApplication(); $input = $app->input; $assoc = JLanguageAssociations::isEnabled(); // This checks if the config options have ever been saved. If they haven't they will fall back to the original settings. $params = json_decode($params); $editoroptions = isset($params->show_publishing_options); if (!$editoroptions) { $params->show_publishing_options = '1'; $params->show_article_options = '1'; $params->show_urls_images_backend = '0'; $params->show_urls_images_frontend = '0'; } // Check if the article uses configuration settings besides global. If so, use them. if (isset($this->item->attribs['show_publishing_options']) && $this->item->attribs['show_publishing_options'] != '') { $params->show_publishing_options = $this->item->attribs['show_publishing_options']; } if (isset($this->item->attribs['show_article_options']) && $this->item->attribs['show_article_options'] != '') { $params->show_article_options = $this->item->attribs['show_article_options']; } if (isset($this->item->attribs['show_urls_images_frontend']) && $this->item->attribs['show_urls_images_frontend'] != '') { $params->show_urls_images_frontend = $this->item->attribs['show_urls_images_frontend']; } if (isset($this->item->attribs['show_urls_images_backend']) && $this->item->attribs['show_urls_images_backend'] != '') { $params->show_urls_images_backend = $this->item->attribs['show_urls_images_backend']; } JFactory::getDocument()->addScriptDeclaration(' Joomla.submitbutton = function(task) { if (task == "article.cancel" || document.formvalidator.isValid(document.getElementById("item-form"))) { ' . $this->form->getField('articletext')->save() . ' if (window.opener && (task == "article.save" || task == "article.cancel")) { window.opener.document.closeEditWindow = self; window.opener.setTimeout("window.document.closeEditWindow.close()", 1000); } Joomla.submitform(task, document.getElementById("item-form")); } }; '); ?> <div class="container-popup"> <div class="pull-right"> <button class="btn btn-primary" type="button" onclick="Joomla.submitbutton('article.apply');"><?php echo JText::_('JTOOLBAR_APPLY') ?></button> <button class="btn btn-primary" type="button" onclick="Joomla.submitbutton('article.save');"><?php echo JText::_('JTOOLBAR_SAVE') ?></button> <button class="btn" type="button" onclick="Joomla.submitbutton('article.cancel');"><?php echo JText::_('JCANCEL') ?></button> </div> <div class="clearfix"> </div> <hr class="hr-condensed" /> <form action="<?php echo JRoute::_('index.php?option=com_content&layout=modal&tmpl=component&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="item-form" class="form-validate"> <?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?> <div class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'general')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'general', JText::_('COM_CONTENT_ARTICLE_CONTENT', true)); ?> <div class="row-fluid"> <div class="span9"> <fieldset class="adminform"> <?php echo $this->form->getInput('articletext'); ?> </fieldset> </div> <div class="span3"> <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php // Do not show the publishing options if the edit form is configured not to. ?> <?php if ($params->show_publishing_options == 1) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'publishing', JText::_('COM_CONTENT_FIELDSET_PUBLISHING', true)); ?> <div class="row-fluid form-horizontal-desktop"> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.publishingdata', $this); ?> </div> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.metadata', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php // Do not show the images and links options if the edit form is configured not to. ?> <?php if ($params->show_urls_images_backend == 1) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'images', JText::_('COM_CONTENT_FIELDSET_URLS_AND_IMAGES', true)); ?> <div class="row-fluid form-horizontal-desktop"> <div class="span6"> <?php echo $this->form->getControlGroup('images'); ?> <?php foreach ($this->form->getGroup('images') as $field) : ?> <?php echo $field->getControlGroup(); ?> <?php endforeach; ?> </div> <div class="span6"> <?php foreach ($this->form->getGroup('urls') as $field) : ?> <?php echo $field->getControlGroup(); ?> <?php endforeach; ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php if (isset($assoc)) : ?> <div class="hidden"><?php echo $this->loadTemplate('associations'); ?></div> <?php endif; ?> <?php $this->show_options = $params->show_article_options; ?> <?php echo JLayoutHelper::render('joomla.edit.params', $this); ?> <?php if ($this->canDo->get('core.admin')) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'editor', JText::_('COM_CONTENT_SLIDER_EDITOR_CONFIG', true)); ?> <?php echo $this->form->renderFieldset('editorConfig'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php if ($this->canDo->get('core.admin')) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'permissions', JText::_('COM_CONTENT_FIELDSET_RULES', true)); ?> <?php echo $this->form->getInput('rules'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="return" value="<?php echo $input->getCmd('return'); ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�L�%TT;components/com_content/views/article/tmpl/edit_metadata.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.metadata', $this); ?> PKb��\�L�%TT<components/com_content/views/article/tmpl/modal_metadata.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.metadata', $this); ?> PKb��\�Z~,7components/com_content/views/article/tmpl/pagebreak.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $script = 'function insertPagebreak() {' . "\n\t"; // Get the pagebreak title $script .= 'var title = document.getElementById("title").value;' . "\n\t"; $script .= 'if (title != \'\') {' . "\n\t\t"; $script .= 'title = "title=\""+title+"\" ";' . "\n\t"; $script .= '}' . "\n\t"; // Get the pagebreak toc alias -- not inserting for now // don't know which attribute to use... $script .= 'var alt = document.getElementById("alt").value;' . "\n\t"; $script .= 'if (alt != \'\') {' . "\n\t\t"; $script .= 'alt = "alt=\""+alt+"\" ";' . "\n\t"; $script .= '}' . "\n\t"; $script .= 'var tag = "<hr class=\"system-pagebreak\" "+title+" "+alt+"/>";' . "\n\t"; $script .= 'window.parent.jInsertEditorText(tag, ' . json_encode($this->eName) . ');' . "\n\t"; $script .= 'window.parent.jModalClose();' . "\n\t"; $script .= 'return false;' . "\n"; $script .= '}' . "\n"; JFactory::getDocument()->addScriptDeclaration($script); ?> <form class="form-horizontal"> <div class="control-group"> <label for="title" class="control-label"><?php echo JText::_('COM_CONTENT_PAGEBREAK_TITLE'); ?></label> <div class="controls"><input type="text" id="title" name="title" /></div> </div> <div class="control-group"> <label for="alias" class="control-label"><?php echo JText::_('COM_CONTENT_PAGEBREAK_TOC'); ?></label> <div class="controls"><input type="text" id="alt" name="alt" /></div> </div> <button onclick="insertPagebreak();" class="btn btn-primary"><?php echo JText::_('COM_CONTENT_PAGEBREAK_INSERT_BUTTON'); ?></button> </form> PKb��\q�FA��2components/com_content/views/article/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View to edit an article. * * @since 1.6 */ class ContentViewArticle extends JViewLegacy { protected $form; protected $item; protected $state; /** * 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 a Error object. * * @since 1.6 */ public function display($tpl = null) { if ($this->getLayout() == 'pagebreak') { // TODO: This is really dogy - should change this one day. $input = JFactory::getApplication()->input; $eName = $input->getCmd('e_name'); $eName = preg_replace('#[^A-Z0-9\-\_\[\]]#i', '', $eName); $document = JFactory::getDocument(); $document->setTitle(JText::_('COM_CONTENT_PAGEBREAK_DOC_TITLE')); $this->eName = &$eName; parent::display($tpl); return; } $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); $this->canDo = JHelperContent::getActions('com_content', 'article', $this->item->id); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } if ($this->getLayout() == 'modal') { $this->form->setFieldAttribute('language', 'readonly', 'true'); $this->form->setFieldAttribute('catid', 'readonly', 'true'); } $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JFactory::getApplication()->input->set('hidemainmenu', true); $user = JFactory::getUser(); $userId = $user->get('id'); $isNew = ($this->item->id == 0); $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $userId); // Built the actions for new and existing records. $canDo = $this->canDo; JToolbarHelper::title( JText::_('COM_CONTENT_PAGE_' . ($checkedOut ? 'VIEW_ARTICLE' : ($isNew ? 'ADD_ARTICLE' : 'EDIT_ARTICLE'))), 'pencil-2 article-add' ); // For new records, check the create permission. if ($isNew && (count($user->getAuthorisedCategories('com_content', 'core.create')) > 0)) { JToolbarHelper::apply('article.apply'); JToolbarHelper::save('article.save'); JToolbarHelper::save2new('article.save2new'); JToolbarHelper::cancel('article.cancel'); } else { // Can't save the record if it's checked out. if (!$checkedOut) { // Since it's an existing record, check the edit permission, or fall back to edit own if the owner. if ($canDo->get('core.edit') || ($canDo->get('core.edit.own') && $this->item->created_by == $userId)) { JToolbarHelper::apply('article.apply'); JToolbarHelper::save('article.save'); // We can save this record, but check the create permission to see if we can return to make a new one. if ($canDo->get('core.create')) { JToolbarHelper::save2new('article.save2new'); } } } // If checked out, we can still save if ($canDo->get('core.create')) { JToolbarHelper::save2copy('article.save2copy'); } if ($this->state->params->get('save_history', 0) && $canDo->get('core.edit')) { JToolbarHelper::versions('com_content.article', $this->item->id); } JToolbarHelper::cancel('article.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_CONTENT_ARTICLE_MANAGER_EDIT'); } } PKb��\ŕ�*components/com_content/helpers/content.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Content component helper. * * @since 1.6 */ class ContentHelper extends JHelperContent { public static $extension = 'com_content'; /** * Configure the Linkbar. * * @param string $vName The name of the active view. * * @return void * * @since 1.6 */ public static function addSubmenu($vName) { JHtmlSidebar::addEntry( JText::_('JGLOBAL_ARTICLES'), 'index.php?option=com_content&view=articles', $vName == 'articles' ); JHtmlSidebar::addEntry( JText::_('COM_CONTENT_SUBMENU_CATEGORIES'), 'index.php?option=com_categories&extension=com_content', $vName == 'categories'); JHtmlSidebar::addEntry( JText::_('COM_CONTENT_SUBMENU_FEATURED'), 'index.php?option=com_content&view=featured', $vName == 'featured' ); } /** * Applies the content tag filters to arbitrary text as per settings for current user group * * @param text $text The string to filter * * @return string The filtered string * * @deprecated 4.0 Use JComponentHelper::filterText() instead. */ public static function filterText($text) { JLog::add('ContentHelper::filterText() is deprecated. Use JComponentHelper::filterText() instead.', JLog::WARNING, 'deprecated'); return JComponentHelper::filterText($text); } } PKb��\�|AA<components/com_content/helpers/html/contentadministrator.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JLoader::register('ContentHelper', JPATH_ADMINISTRATOR . '/components/com_content/helpers/content.php'); /** * Content HTML helper * * @since 3.0 */ abstract class JHtmlContentAdministrator { /** * Render the list of associated items * * @param int $articleid The article item id * * @return string The language HTML */ public static function association($articleid) { // Defaults $html = ''; // Get the associations if ($associations = JLanguageAssociations::getAssociations('com_content', '#__content', 'com_content.item', $articleid)) { foreach ($associations as $tag => $associated) { $associations[$tag] = (int) $associated->id; } // Get the associated menu items $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('c.*') ->select('l.sef as lang_sef') ->from('#__content as c') ->select('cat.title as category_title') ->join('LEFT', '#__categories as cat ON cat.id=c.catid') ->where('c.id IN (' . implode(',', array_values($associations)) . ')') ->join('LEFT', '#__languages as l ON c.language=l.lang_code') ->select('l.image') ->select('l.title as language_title'); $db->setQuery($query); try { $items = $db->loadObjectList('id'); } catch (RuntimeException $e) { throw new Exception($e->getMessage(), 500); } if ($items) { foreach ($items as &$item) { $text = strtoupper($item->lang_sef); $url = JRoute::_('index.php?option=com_content&task=article.edit&id=' . (int) $item->id); $tooltipParts = array( JHtml::_('image', 'mod_languages/' . $item->image . '.gif', $item->language_title, array('title' => $item->language_title), true ), $item->title, '(' . $item->category_title . ')' ); $item->link = JHtml::_( 'tooltip', implode(' ', $tooltipParts), null, null, $text, $url, null, 'hasTooltip label label-association label-' . $item->lang_sef ); } } $html = JLayoutHelper::render('joomla.content.associations', $items); } return $html; } /** * Show the feature/unfeature links * * @param int $value The state value * @param int $i Row number * @param boolean $canChange Is user allowed to change? * * @return string HTML code */ public static function featured($value = 0, $i, $canChange = true) { JHtml::_('bootstrap.tooltip'); // Array of image, task, title, action $states = array( 0 => array('unfeatured', 'articles.featured', 'COM_CONTENT_UNFEATURED', 'JGLOBAL_TOGGLE_FEATURED'), 1 => array('featured', 'articles.unfeatured', 'COM_CONTENT_FEATURED', 'JGLOBAL_TOGGLE_FEATURED'), ); $state = JArrayHelper::getValue($states, (int) $value, $states[1]); $icon = $state[0]; if ($canChange) { $html = '<a href="#" onclick="return listItemTask(\'cb' . $i . '\',\'' . $state[1] . '\')" class="btn btn-micro hasTooltip' . ($value == 1 ? ' active' : '') . '" title="' . JHtml::tooltipText($state[3]) . '"><span class="icon-' . $icon . '"></span></a>'; } else { $html = '<a class="btn btn-micro hasTooltip disabled' . ($value == 1 ? ' active' : '') . '" title="' . JHtml::tooltipText($state[2]) . '"><span class="icon-' . $icon . '"></span></a>'; } return $html; } } PKb��\�T�և�"components/com_content/content.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_content</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_CONTENT_XML_DESCRIPTION</description> <files folder="site"> <filename>content.php</filename> <filename>controller.php</filename> <filename>router.php</filename> <folder>helpers</folder> <folder>models</folder> </files> <languages folder="site"> <language tag="en-GB">language/en-GB.com_content.ini</language> </languages> <administration> <files folder="admin"> <filename>access.xml</filename> <filename>config.xml</filename> <filename>content.php</filename> <filename>controller.php</filename> <folder>controllers</folder> <folder>elements</folder> <folder>helpers</folder> <folder>models</folder> <folder>tables</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_content.ini</language> <language tag="en-GB">language/en-GB.com_content.sys.ini</language> </languages> </administration> </extension> PKb��\�P�??6components/com_content/models/fields/modal/article.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; /** * Supports a modal article picker. * * @since 1.6 */ class JFormFieldModal_Article extends JFormField { /** * The form field type. * * @var string * @since 1.6 */ protected $type = 'Modal_Article'; /** * Method to get the field input markup. * * @return string The field input markup. * * @since 1.6 */ protected function getInput() { $allowEdit = ((string) $this->element['edit'] == 'true') ? true : false; $allowClear = ((string) $this->element['clear'] != 'false') ? true : false; // Load language JFactory::getLanguage()->load('com_content', JPATH_ADMINISTRATOR); // Build the script. $script = array(); // Select button script $script[] = ' function jSelectArticle_' . $this->id . '(id, title, catid, object) {'; $script[] = ' document.getElementById("' . $this->id . '_id").value = id;'; $script[] = ' document.getElementById("' . $this->id . '_name").value = title;'; if ($allowEdit) { $script[] = ' jQuery("#' . $this->id . '_edit").removeClass("hidden");'; } if ($allowClear) { $script[] = ' jQuery("#' . $this->id . '_clear").removeClass("hidden");'; } $script[] = ' jQuery("#modalArticle' . $this->id . '").modal("hide");'; if ($this->required) { $script[] = ' document.formvalidator.validate(document.getElementById("' . $this->id . '_id"));'; $script[] = ' document.formvalidator.validate(document.getElementById("' . $this->id . '_name"));'; } $script[] = ' }'; // Clear button script static $scriptClear; if ($allowClear && !$scriptClear) { $scriptClear = true; $script[] = ' function jClearArticle(id) {'; $script[] = ' document.getElementById(id + "_id").value = "";'; $script[] = ' document.getElementById(id + "_name").value = "' . htmlspecialchars(JText::_('COM_CONTENT_SELECT_AN_ARTICLE', true), ENT_COMPAT, 'UTF-8') . '";'; $script[] = ' jQuery("#"+id + "_clear").addClass("hidden");'; $script[] = ' if (document.getElementById(id + "_edit")) {'; $script[] = ' jQuery("#"+id + "_edit").addClass("hidden");'; $script[] = ' }'; $script[] = ' return false;'; $script[] = ' }'; } // Add the script to the document head. JFactory::getDocument()->addScriptDeclaration(implode("\n", $script)); // Setup variables for display. $html = array(); $link = 'index.php?option=com_content&view=articles&layout=modal&tmpl=component&function=jSelectArticle_' . $this->id; if (isset($this->element['language'])) { $link .= '&forcedLanguage=' . $this->element['language']; } if ((int) $this->value > 0) { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select($db->quoteName('title')) ->from($db->quoteName('#__content')) ->where($db->quoteName('id') . ' = ' . (int) $this->value); $db->setQuery($query); try { $title = $db->loadResult(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); } } if (empty($title)) { $title = JText::_('COM_CONTENT_SELECT_AN_ARTICLE'); } $title = htmlspecialchars($title, ENT_QUOTES, 'UTF-8'); // The active article id field. if (0 == (int) $this->value) { $value = ''; } else { $value = (int) $this->value; } $url = $link . '&' . JSession::getFormToken() . '=1'; // The current article display field. $html[] = '<span class="input-append">'; $html[] = '<input type="text" class="input-medium" id="' . $this->id . '_name" value="' . $title . '" disabled="disabled" size="35" />'; $html[] = '<a href="#modalArticle' . $this->id . '" class="btn hasTooltip" role="button" data-toggle="modal" title="' . JHtml::tooltipText('COM_CONTENT_CHANGE_ARTICLE') . '">' . '<span class="icon-file"></span> ' . JText::_('JSELECT') . '</a>'; // Edit article button if ($allowEdit) { $html[] = '<a class="btn hasTooltip' . ($value ? '' : ' hidden') . '" href="index.php?option=com_content&layout=modal&tmpl=component&task=article.edit&id=' . $value . '" target="_blank" title="' . JHtml::tooltipText('COM_CONTENT_EDIT_ARTICLE') . '" ><span class="icon-edit"></span>' . JText::_('JACTION_EDIT') . '</a>'; } // Clear article button if ($allowClear) { $html[] = '<button id="' . $this->id . '_clear" class="btn' . ($value ? '' : ' hidden') . '" onclick="return jClearArticle(\'' . $this->id . '\')"><span class="icon-remove"></span>' . JText::_('JCLEAR') . '</button>'; } $html[] = '</span>'; // The class='required' for client side validation $class = ''; if ($this->required) { $class = ' class="required modal-value"'; } $html[] = '<input type="hidden" id="' . $this->id . '_id"' . $class . ' name="' . $this->name . '" value="' . $value . '" />'; $html[] = JHtml::_( 'bootstrap.renderModal', 'modalArticle' . $this->id, array( 'url' => $url, 'title' => JText::_('COM_CONTENT_CHANGE_ARTICLE'), 'width' => '800px', 'height' => '300px', 'footer' => '<button class="btn" data-dismiss="modal" aria-hidden="true">' . JText::_("JLIB_HTML_BEHAVIOR_CLOSE") . '</button>' ) ); return implode("\n", $html); } /** * Method to get the field label markup. * * @return string The field label markup. * * @since 3.4 */ protected function getLabel() { return str_replace($this->id, $this->id . '_id', parent::getLabel()); } } PKb��\����X�X/components/com_content/models/forms/article.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset addfieldpath="/administrator/components/com_categories/models/fields" > <field name="id" type="text" class="readonly" label="JGLOBAL_FIELD_ID_LABEL" description ="JGLOBAL_FIELD_ID_DESC" size="10" default="0" readonly="true" /> <field name="asset_id" type="hidden" filter="unset" /> <field name="title" type="text" label="JGLOBAL_TITLE" description="JFIELD_TITLE_DESC" class="input-xxlarge input-large-text" size="40" required="true" /> <field name="alias" type="text" label="JFIELD_ALIAS_LABEL" description="JFIELD_ALIAS_DESC" hint="JFIELD_ALIAS_PLACEHOLDER" size="40" /> <field name="version_note" type="text" label="JGLOBAL_FIELD_VERSION_NOTE_LABEL" description="JGLOBAL_FIELD_VERSION_NOTE_DESC" class="span12" maxlength="255" size="45" /> <field name="articletext" type="editor" label="COM_CONTENT_FIELD_ARTICLETEXT_LABEL" description="COM_CONTENT_FIELD_ARTICLETEXT_DESC" filter="JComponentHelper::filterText" buttons="true" /> <field name="state" type="list" label="JSTATUS" description="JFIELD_PUBLISHED_DESC" class="chzn-color-state" filter="intval" size="1" default="1" > <option value="1"> JPUBLISHED</option> <option value="0"> JUNPUBLISHED</option> <option value="2"> JARCHIVED</option> <option value="-2"> JTRASHED</option> </field> <field name="catid" type="categoryedit" label="JCATEGORY" description="JFIELD_CATEGORY_DESC" required="true" > </field> <field name="tags" type="tag" label="JTAG" description="JTAG_DESC" class="span12" multiple="true" > </field> <field name="buttonspacer" description="JGLOBAL_ACTION_PERMISSIONS_DESCRIPTION" type="spacer" /> <field name="created" type="calendar" label="COM_CONTENT_FIELD_CREATED_LABEL" description="COM_CONTENT_FIELD_CREATED_DESC" size="22" format="%Y-%m-%d %H:%M:%S" filter="user_utc" /> <field name="created_by" type="user" label="COM_CONTENT_FIELD_CREATED_BY_LABEL" description="COM_CONTENT_FIELD_CREATED_BY_DESC" /> <field name="created_by_alias" type="text" label="COM_CONTENT_FIELD_CREATED_BY_ALIAS_LABEL" description="COM_CONTENT_FIELD_CREATED_BY_ALIAS_DESC" size="20" /> <field name="modified" type="calendar" class="readonly" label="JGLOBAL_FIELD_MODIFIED_LABEL" description="COM_CONTENT_FIELD_MODIFIED_DESC" size="22" readonly="true" format="%Y-%m-%d %H:%M:%S" filter="user_utc" /> <field name="modified_by" type="user" label="JGLOBAL_FIELD_MODIFIED_BY_LABEL" class="readonly" readonly="true" filter="unset" /> <field name="checked_out" type="hidden" filter="unset" /> <field name="checked_out_time" type="hidden" filter="unset" /> <field name="publish_up" type="calendar" label="COM_CONTENT_FIELD_PUBLISH_UP_LABEL" description="COM_CONTENT_FIELD_PUBLISH_UP_DESC" format="%Y-%m-%d %H:%M:%S" size="22" filter="user_utc" /> <field name="publish_down" type="calendar" label="COM_CONTENT_FIELD_PUBLISH_DOWN_LABEL" description="COM_CONTENT_FIELD_PUBLISH_DOWN_DESC" format="%Y-%m-%d %H:%M:%S" size="22" filter="user_utc" /> <field name="version" type="text" class="readonly" label="COM_CONTENT_FIELD_VERSION_LABEL" size="6" description="COM_CONTENT_FIELD_VERSION_DESC" readonly="true" filter="unset" /> <field name="ordering" type="text" label="JFIELD_ORDERING_LABEL" description="JFIELD_ORDERING_DESC" size="6" default="0" /> <field name="metakey" type="textarea" label="JFIELD_META_KEYWORDS_LABEL" description="JFIELD_META_KEYWORDS_DESC" rows="3" cols="30" /> <field name="metadesc" type="textarea" label="JFIELD_META_DESCRIPTION_LABEL" description="JFIELD_META_DESCRIPTION_DESC" rows="3" cols="30" /> <field name="access" type="accesslevel" label="JFIELD_ACCESS_LABEL" description="JFIELD_ACCESS_DESC" size="1" /> <field name="hits" type="text" label="JGLOBAL_HITS" description="COM_CONTENT_FIELD_HITS_DESC" class="readonly" size="6" readonly="true" filter="unset" /> <field name="language" type="contentlanguage" label="JFIELD_LANGUAGE_LABEL" description="COM_CONTENT_FIELD_LANGUAGE_DESC" > <option value="*">JALL</option> </field> <field name="featured" type="radio" class="btn-group btn-group-yesno" label="JFEATURED" description="COM_CONTENT_FIELD_FEATURED_DESC" default="0" > <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="rules" type="rules" label="JFIELD_RULES_LABEL" translate_label="false" filter="rules" component="com_content" section="article" validate="rules" /> </fieldset> <fields name="attribs" label="COM_CONTENT_ATTRIBS_FIELDSET_LABEL"> <fieldset name="basic" label="COM_CONTENT_ATTRIBS_FIELDSET_LABEL"> <field name="show_title" type="list" class="chzn-color" label="JGLOBAL_SHOW_TITLE_LABEL" description="JGLOBAL_SHOW_TITLE_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="link_titles" type="list" class="chzn-color" label="JGLOBAL_LINKED_TITLES_LABEL" description="JGLOBAL_LINKED_TITLES_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JNO</option> <option value="1">JYES</option> </field> <field name="show_tags" type="list" class="chzn-color" label="COM_CONTENT_FIELD_SHOW_TAGS_LABEL" description="COM_CONTENT_FIELD_SHOW_TAGS_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_intro" type="list" class="chzn-color" description="JGLOBAL_SHOW_INTRO_DESC" label="JGLOBAL_SHOW_INTRO_LABEL" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="info_block_position" type="list" default="" label="COM_CONTENT_FIELD_INFOBLOCK_POSITION_LABEL" description="COM_CONTENT_FIELD_INFOBLOCK_POSITION_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">COM_CONTENT_FIELD_OPTION_ABOVE</option> <option value="1">COM_CONTENT_FIELD_OPTION_BELOW</option> <option value="2">COM_CONTENT_FIELD_OPTION_SPLIT</option> </field> <field name="show_category" type="list" class="chzn-color" label="JGLOBAL_SHOW_CATEGORY_LABEL" description="JGLOBAL_SHOW_CATEGORY_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="link_category" type="list" class="chzn-color" label="JGLOBAL_LINK_CATEGORY_LABEL" description="JGLOBAL_LINK_CATEGORY_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JNO</option> <option value="1">JYES</option> </field> <field name="show_parent_category" type="list" class="chzn-color" label="JGLOBAL_SHOW_PARENT_CATEGORY_LABEL" description="JGLOBAL_SHOW_PARENT_CATEGORY_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="link_parent_category" type="list" class="chzn-color" label="JGLOBAL_LINK_PARENT_CATEGORY_LABEL" description="JGLOBAL_LINK_PARENT_CATEGORY_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JNO</option> <option value="1">JYES</option> </field> <field name="show_author" type="list" class="chzn-color" label="JGLOBAL_SHOW_AUTHOR_LABEL" description="JGLOBAL_SHOW_AUTHOR_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="link_author" type="list" class="chzn-color" label="JGLOBAL_LINK_AUTHOR_LABEL" description="JGLOBAL_LINK_AUTHOR_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JNO</option> <option value="1">JYES</option> </field> <field name="show_create_date" type="list" class="chzn-color" label="JGLOBAL_SHOW_CREATE_DATE_LABEL" description="JGLOBAL_SHOW_CREATE_DATE_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_modify_date" type="list" class="chzn-color" label="JGLOBAL_SHOW_MODIFY_DATE_LABEL" description="JGLOBAL_SHOW_MODIFY_DATE_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_publish_date" type="list" class="chzn-color" label="JGLOBAL_SHOW_PUBLISH_DATE_LABEL" description="JGLOBAL_SHOW_PUBLISH_DATE_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_item_navigation" type="list" class="chzn-color" label="JGLOBAL_SHOW_NAVIGATION_LABEL" description="JGLOBAL_SHOW_NAVIGATION_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_icons" type="list" class="chzn-color" label="JGLOBAL_SHOW_ICONS_LABEL" description="JGLOBAL_SHOW_ICONS_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_print_icon" type="list" class="chzn-color" label="JGLOBAL_SHOW_PRINT_ICON_LABEL" description="JGLOBAL_SHOW_PRINT_ICON_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_email_icon" type="list" class="chzn-color" label="JGLOBAL_SHOW_EMAIL_ICON_LABEL" description="JGLOBAL_SHOW_EMAIL_ICON_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_vote" type="list" class="chzn-color" label="JGLOBAL_SHOW_VOTE_LABEL" description="JGLOBAL_SHOW_VOTE_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_hits" type="list" class="chzn-color" label="JGLOBAL_SHOW_HITS_LABEL" description="JGLOBAL_SHOW_HITS_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_noauth" type="list" class="chzn-color" label="JGLOBAL_SHOW_UNAUTH_LINKS_LABEL" description="JGLOBAL_SHOW_UNAUTH_LINKS_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JNO</option> <option value="1">JYES</option> </field> <field name="urls_position" type="list" class="chzn-color" label="COM_CONTENT_FIELD_URLSPOSITION_LABEL" description="COM_CONTENT_FIELD_URLSPOSITION_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">COM_CONTENT_FIELD_OPTION_ABOVE</option> <option value="1">COM_CONTENT_FIELD_OPTION_BELOW</option> </field> <field name="spacer2" type="spacer" hr="true" /> <field name="alternative_readmore" type="text" label="JFIELD_READMORE_LABEL" description="JFIELD_READMORE_DESC" size="25" /> <field name="article_layout" type="componentlayout" label="JFIELD_ALT_LAYOUT_LABEL" description="JFIELD_ALT_COMPONENT_LAYOUT_DESC" useglobal="true" extension="com_content" view="article" /> </fieldset> <fieldset name="editorConfig" label="COM_CONTENT_EDITORCONFIG_FIELDSET_LABEL"> <field name="show_publishing_options" type="list" class="chzn-color" default="" label="COM_CONTENT_SHOW_PUBLISHING_OPTIONS_LABEL" description="COM_CONTENT_SHOW_PUBLISHING_OPTIONS_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JNO</option> <option value="1">JYES</option> </field> <field name="show_article_options" type="list" class="chzn-color" default="" label="COM_CONTENT_SHOW_ARTICLE_OPTIONS_LABEL" description="COM_CONTENT_SHOW_ARTICLE_OPTIONS_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JNO</option> <option value="1">JYES</option> </field> <field name="show_urls_images_backend" type="list" class="chzn-color" default="" label="COM_CONTENT_SHOW_IMAGES_URLS_BACK_LABEL" description="COM_CONTENT_SHOW_IMAGES_URLS_BACK_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JNO</option> <option value="1">JYES</option> </field> <field name="show_urls_images_frontend" type="list" class="chzn-color" default="" label="COM_CONTENT_SHOW_IMAGES_URLS_FRONT_LABEL" description="COM_CONTENT_SHOW_IMAGES_URLS_FRONT_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JNO</option> <option value="1">JYES</option> </field> </fieldset> <fieldset name="basic-limited" label="COM_CONTENT_ATTRIBS_FIELDSET_LABEL"> <field name="show_title" type="hidden" label="JGLOBAL_SHOW_TITLE_LABEL" description="JGLOBAL_SHOW_TITLE_DESC" > </field> <field name="link_titles" type="hidden" label="JGLOBAL_LINKED_TITLES_LABEL" description="JGLOBAL_LINKED_TITLES_DESC"> </field> <field name="show_intro" type="hidden" description="JGLOBAL_SHOW_INTRO_DESC" label="JGLOBAL_SHOW_INTRO_LABEL" > </field> <field name="show_category" type="hidden" label="JGLOBAL_SHOW_CATEGORY_LABEL" description="JGLOBAL_SHOW_CATEGORY_DESC"> </field> <field name="link_category" type="hidden" label="JGLOBAL_LINK_CATEGORY_LABEL" description="JGLOBAL_LINK_CATEGORY_DESC"> </field> <field name="show_parent_category" type="hidden" label="JGLOBAL_SHOW_PARENT_CATEGORY_LABEL" description="JGLOBAL_SHOW_PARENT_CATEGORY_DESC"> </field> <field name="link_parent_category" type="hidden" label="JGLOBAL_LINK_PARENT_CATEGORY_LABEL" description="JGLOBAL_LINK_PARENT_CATEGORY_DESC"> </field> <field name="show_author" type="hidden" label="JGLOBAL_SHOW_AUTHOR_LABEL" description="JGLOBAL_SHOW_AUTHOR_DESC"> </field> <field name="link_author" type="hidden" label="JGLOBAL_LINK_AUTHOR_LABEL" description="JGLOBAL_LINK_AUTHOR_DESC"> </field> <field name="show_create_date" type="hidden" label="JGLOBAL_SHOW_CREATE_DATE_LABEL" description="JGLOBAL_SHOW_CREATE_DATE_DESC"> </field> <field name="show_modify_date" type="hidden" label="JGLOBAL_SHOW_MODIFY_DATE_LABEL" description="JGLOBAL_SHOW_MODIFY_DATE_DESC"> </field> <field name="show_publish_date" type="hidden" label="JGLOBAL_SHOW_PUBLISH_DATE_LABEL" description="JGLOBAL_SHOW_PUBLISH_DATE_DESC"> </field> <field name="show_item_navigation" type="hidden" label="JGLOBAL_SHOW_NAVIGATION_LABEL" description="JGLOBAL_SHOW_NAVIGATION_DESC"> </field> <field name="show_icons" type="hidden" label="JGLOBAL_SHOW_ICONS_LABEL" description="JGLOBAL_SHOW_ICONS_DESC"> </field> <field name="show_print_icon" type="hidden" label="JGLOBAL_SHOW_PRINT_ICON_LABEL" description="JGLOBAL_SHOW_PRINT_ICON_DESC"> </field> <field name="show_email_icon" type="hidden" label="JGLOBAL_SHOW_EMAIL_ICON_LABEL" description="JGLOBAL_SHOW_EMAIL_ICON_DESC"> </field> <field name="show_vote" type="hidden" label="JGLOBAL_SHOW_VOTE_LABEL" description="JGLOBAL_SHOW_VOTE_DESC" > </field> <field name="show_hits" type="hidden" label="JGLOBAL_SHOW_HITS_LABEL" description="JGLOBAL_SHOW_HITS_DESC"> </field> <field name="show_noauth" type="hidden" label="JGLOBAL_SHOW_UNAUTH_LINKS_LABEL" description="JGLOBAL_SHOW_UNAUTH_LINKS_DESC"> </field> <field name="alternative_readmore" type="hidden" label="JFIELD_READMORE_LABEL" description="JFIELD_READMORE_DESC" size="25" /> <field name="article_layout" type="hidden" label="JFIELD_ALT_LAYOUT_LABEL" description="JFIELD_ALT_COMPONENT_LAYOUT_DESC" useglobal="true" extension="com_content" view="article" /> </fieldset> </fields> <field name="xreference" type="text" label="JFIELD_KEY_REFERENCE_LABEL" description="JFIELD_KEY_REFERENCE_DESC" size="20" /> <fields name="images" label="COM_CONTENT_FIELD_IMAGE_OPTIONS"> <field name="image_intro" type="media" label="COM_CONTENT_FIELD_INTRO_LABEL" description="COM_CONTENT_FIELD_INTRO_DESC" /> <field name="float_intro" type="list" label="COM_CONTENT_FLOAT_LABEL" description="COM_CONTENT_FLOAT_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="right">COM_CONTENT_RIGHT</option> <option value="left">COM_CONTENT_LEFT</option> <option value="none">COM_CONTENT_NONE</option> </field> <field name="image_intro_alt" type="text" label="COM_CONTENT_FIELD_IMAGE_ALT_LABEL" description="COM_CONTENT_FIELD_IMAGE_ALT_DESC" size="20"/> <field name="image_intro_caption" type="text" label="COM_CONTENT_FIELD_IMAGE_CAPTION_LABEL" description="COM_CONTENT_FIELD_IMAGE_CAPTION_DESC" size="20"/> <field name="spacer1" type="spacer" hr="true" /> <field name="image_fulltext" type="media" label="COM_CONTENT_FIELD_FULL_LABEL" description="COM_CONTENT_FIELD_FULL_DESC"/> <field name="float_fulltext" type="list" label="COM_CONTENT_FLOAT_LABEL" description="COM_CONTENT_FLOAT_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="right">COM_CONTENT_RIGHT</option> <option value="left">COM_CONTENT_LEFT</option> <option value="none">COM_CONTENT_NONE</option> </field> <field name="image_fulltext_alt" type="text" label="COM_CONTENT_FIELD_IMAGE_ALT_LABEL" description="COM_CONTENT_FIELD_IMAGE_ALT_DESC" size="20"/> <field name="image_fulltext_caption" type="text" label="COM_CONTENT_FIELD_IMAGE_CAPTION_LABEL" description="COM_CONTENT_FIELD_IMAGE_CAPTION_DESC" size="20"/> </fields> <fields name="urls" label="COM_CONTENT_FIELD_URLS_OPTIONS"> <field name="urla" type="url" validate="url" filter="url" relative="true" label="COM_CONTENT_FIELD_URLA_LABEL" description="COM_CONTENT_FIELD_URL_DESC" /> <field name="urlatext" type="text" label="COM_CONTENT_FIELD_URLA_LINK_TEXT_LABEL" description="COM_CONTENT_FIELD_URL_LINK_TEXT_DESC" size="20"/> <field name="targeta" type="list" label="COM_CONTENT_URL_FIELD_BROWSERNAV_LABEL" description="COM_CONTENT_URL_FIELD_BROWSERNAV_DESC" default="" filter="options" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JBROWSERTARGET_PARENT</option> <option value="1">JBROWSERTARGET_NEW</option> <option value="2">JBROWSERTARGET_POPUP</option> <option value="3">JBROWSERTARGET_MODAL</option> </field> <field name="spacer3" type="spacer" hr="true" /> <field name="urlb" type="url" validate="url" filter="url" relative="true" label="COM_CONTENT_FIELD_URLB_LABEL" description="COM_CONTENT_FIELD_URL_DESC"/> <field name="urlbtext" type="text" label="COM_CONTENT_FIELD_URLB_LINK_TEXT_LABEL" description="COM_CONTENT_FIELD_URL_LINK_TEXT_DESC" size="20"/> <field name="targetb" type="list" label="COM_CONTENT_URL_FIELD_BROWSERNAV_LABEL" description="COM_CONTENT_URL_FIELD_BROWSERNAV_DESC" default="" filter="options" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JBROWSERTARGET_PARENT</option> <option value="1">JBROWSERTARGET_NEW</option> <option value="2">JBROWSERTARGET_POPUP</option> <option value="3">JBROWSERTARGET_MODAL</option> </field> <field name="spacer4" type="spacer" hr="true" /> <field name="urlc" type="url" validate="url" filter="url" relative="true" label="COM_CONTENT_FIELD_URLC_LABEL" description="COM_CONTENT_FIELD_URL_DESC"/> <field name="urlctext" type="text" label="COM_CONTENT_FIELD_URLC_LINK_TEXT_LABEL" description="COM_CONTENT_FIELD_URL_LINK_TEXT_DESC" size="20"/> <field name="targetc" type="list" label="COM_CONTENT_URL_FIELD_BROWSERNAV_LABEL" description="COM_CONTENT_URL_FIELD_BROWSERNAV_DESC" default="" filter="options" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JBROWSERTARGET_PARENT</option> <option value="1">JBROWSERTARGET_NEW</option> <option value="2">JBROWSERTARGET_POPUP</option> <option value="3">JBROWSERTARGET_MODAL</option> </field> </fields> <fields name="metadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS"> <fieldset name="jmetadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS"> <field name="robots" type="list" label="JFIELD_METADATA_ROBOTS_LABEL" description="JFIELD_METADATA_ROBOTS_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="index, follow">JGLOBAL_INDEX_FOLLOW</option> <option value="noindex, follow">JGLOBAL_NOINDEX_FOLLOW</option> <option value="index, nofollow">JGLOBAL_INDEX_NOFOLLOW</option> <option value="noindex, nofollow">JGLOBAL_NOINDEX_NOFOLLOW</option> </field> <field name="author" type="text" label="JAUTHOR" description="JFIELD_METADATA_AUTHOR_DESC" size="20" /> <field name="rights" type="textarea" label="JFIELD_META_RIGHTS_LABEL" description="JFIELD_META_RIGHTS_DESC" required="false" filter="string" cols="30" rows="2" /> <field name="xreference" type="text" label="COM_CONTENT_FIELD_XREFERENCE_LABEL" description="COM_CONTENT_FIELD_XREFERENCE_DESC" size="20" /> </fieldset> </fields> <!-- These fields are used to get labels for the Content History Preview and Compare Views --> <fields> <field name="introtext" label="COM_CONTENT_FIELD_INTROTEXT" /> <field name="fulltext" label="COM_CONTENT_FIELD_FULLTEXT" /> </fields> </form> PKb��\�N(���7components/com_content/models/forms/filter_articles.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fields name="filter"> <field name="search" type="text" label="COM_CONTENT_FILTER_SEARCH_DESC" description="COM_CONTENT_FILTER_SEARCH_DESC" hint="JSEARCH_FILTER" /> <field name="published" type="status" label="COM_CONTENT_FILTER_PUBLISHED" description="COM_CONTENT_FILTER_PUBLISHED_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_PUBLISHED</option> </field> <field name="category_id" type="category" label="JOPTION_FILTER_CATEGORY" extension="com_content" description="JOPTION_FILTER_CATEGORY_DESC" onchange="this.form.submit();" published="0,1,2" > <option value="">JOPTION_SELECT_CATEGORY</option> </field> <field name="access" type="accesslevel" label="JOPTION_FILTER_ACCESS" description="JOPTION_FILTER_ACCESS_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_ACCESS</option> </field> <field name="language" type="contentlanguage" label="JOPTION_FILTER_LANGUAGE" description="JOPTION_FILTER_LANGUAGE_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_LANGUAGE</option> <option value="*">JALL</option> </field> <field name="tag" type="tag" mode="nested" label="JOPTION_FILTER_TAG" description="JOPTION_FILTER_TAG_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_TAG</option> </field> <field name="author_id" type="author" label="COM_CONTENT_FILTER_AUTHOR" description="COM_CONTENT_FILTER_AUTHOR_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_AUTHOR</option> </field> <field name="level" type="integer" first="1" last="10" step="1" label="JOPTION_FILTER_LEVEL" languages="*" description="JOPTION_FILTER_LEVEL_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_MAX_LEVELS</option> </field> </fields> <fields name="list"> <field name="fullordering" type="list" label="COM_CONTENT_LIST_FULL_ORDERING" description="COM_CONTENT_LIST_FULL_ORDERING_DESC" onchange="this.form.submit();" default="a.id DESC" > <option value="">JGLOBAL_SORT_BY</option> <option value="a.ordering ASC">JGRID_HEADING_ORDERING_ASC</option> <option value="a.ordering DESC">JGRID_HEADING_ORDERING_DESC</option> <option value="a.state ASC">JSTATUS_ASC</option> <option value="a.state DESC">JSTATUS_DESC</option> <option value="a.title ASC">JGLOBAL_TITLE_ASC</option> <option value="a.title DESC">JGLOBAL_TITLE_DESC</option> <option value="category_title ASC">JCATEGORY_ASC</option> <option value="category_title DESC">JCATEGORY_DESC</option> <option value="association ASC" requires="associations">JASSOCIATIONS_ASC</option> <option value="association DESC" requires="associations">JASSOCIATIONS_DESC</option> <option value="a.access ASC">JGRID_HEADING_ACCESS_ASC</option> <option value="a.access DESC">JGRID_HEADING_ACCESS_DESC</option> <option value="a.created_by ASC">JAUTHOR_ASC</option> <option value="a.created_by DESC">JAUTHOR_DESC</option> <option value="language ASC">JGRID_HEADING_LANGUAGE_ASC</option> <option value="language DESC">JGRID_HEADING_LANGUAGE_DESC</option> <option value="a.created ASC">JDATE_ASC</option> <option value="a.created DESC">JDATE_DESC</option> <option value="a.id ASC">JGRID_HEADING_ID_ASC</option> <option value="a.id DESC">JGRID_HEADING_ID_DESC</option> <option value="a.featured ASC">JFEATURED_ASC</option> <option value="a.featured DESC">JFEATURED_DESC</option> <option value="a.hits ASC">JGLOBAL_HITS_ASC</option> <option value="a.hits DESC">JGLOBAL_HITS_DESC</option> </field> <field name="limit" type="limitbox" class="input-mini" default="25" label="COM_CONTENT_LIST_LIMIT" description="COM_CONTENT_LIST_LIMIT_DESC" onchange="this.form.submit();" /> </fields> </form> PKb��\r|��7components/com_content/models/forms/filter_featured.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fields name="filter"> <field name="search" type="text" label="COM_CONTENT_FILTER_SEARCH_DESC" description="COM_CONTENT_FILTER_SEARCH_DESC" hint="JSEARCH_FILTER" class="js-stools-search-string" /> <field name="published" type="status" label="COM_CONTENT_FILTER_PUBLISHED" description="COM_CONTENT_FILTER_PUBLISHED_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_PUBLISHED</option> </field> <field name="category_id" type="category" label="JOPTION_FILTER_CATEGORY" extension="com_content" description="JOPTION_FILTER_CATEGORY_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_CATEGORY</option> </field> <field name="access" type="accesslevel" label="JOPTION_FILTER_ACCESS" description="JOPTION_FILTER_ACCESS_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_ACCESS</option> </field> <field name="language" type="contentlanguage" label="JOPTION_FILTER_LANGUAGE" description="JOPTION_FILTER_LANGUAGE_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_LANGUAGE</option> <option value="*">JALL</option> </field> <field name="tag" type="tag" mode="nested" label="JOPTION_FILTER_TAG" description="JOPTION_FILTER_TAG_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_TAG</option> </field> <field name="author_id" type="author" label="COM_CONTENT_FILTER_AUTHOR" description="COM_CONTENT_FILTER_AUTHOR_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_AUTHOR</option> </field> <field name="level" type="integer" first="1" last="10" step="1" label="JOPTION_FILTER_LEVEL" languages="*" description="JOPTION_FILTER_LEVEL_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_MAX_LEVELS</option> </field> </fields> <fields name="list"> <field name="fullordering" type="list" label="COM_CONTENT_LIST_FULL_ORDERING" description="COM_CONTENT_LIST_FULL_ORDERING_DESC" onchange="this.form.submit();" default="a.title ASC" > <option value="">JGLOBAL_SORT_BY</option> <option value="fp.ordering ASC">JGRID_HEADING_ORDERING_ASC</option> <option value="fp.ordering DESC">JGRID_HEADING_ORDERING_DESC</option> <option value="a.state ASC">JSTATUS_ASC</option> <option value="a.state DESC">JSTATUS_DESC</option> <option value="a.title ASC">JGLOBAL_TITLE_ASC</option> <option value="a.title DESC">JGLOBAL_TITLE_DESC</option> <option value="category_title ASC">JCATEGORY_ASC</option> <option value="category_title DESC">JCATEGORY_DESC</option> <option value="a.access ASC">JGRID_HEADING_ACCESS_ASC</option> <option value="a.access DESC">JGRID_HEADING_ACCESS_DESC</option> <option value="a.created_by ASC">JAUTHOR_ASC</option> <option value="a.created_by DESC">JAUTHOR_DESC</option> <option value="language ASC">JGRID_HEADING_LANGUAGE_ASC</option> <option value="language DESC">JGRID_HEADING_LANGUAGE_DESC</option> <option value="a.created ASC">JDATE_ASC</option> <option value="a.created DESC">JDATE_DESC</option> <option value="a.id ASC">JGRID_HEADING_ID_ASC</option> <option value="a.id DESC">JGRID_HEADING_ID_DESC</option> <option value="a.hits ASC">JGLOBAL_HITS_ASC</option> <option value="a.hits DESC">JGLOBAL_HITS_DESC</option> </field> <field name="limit" type="limitbox" class="input-mini" default="25" label="COM_CONTENT_LIST_LIMIT" description="COM_CONTENT_LIST_LIMIT_DESC" onchange="this.form.submit();" /> </fields> </form>PKb��\�U�|�M�M)components/com_content/models/article.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; JLoader::register('ContentHelper', JPATH_ADMINISTRATOR . '/components/com_content/helpers/content.php'); /** * Item Model for an Article. * * @since 1.6 */ class ContentModelArticle extends JModelAdmin { /** * @var string The prefix to use with controller messages. * @since 1.6 */ protected $text_prefix = 'COM_CONTENT'; /** * The type alias for this content type (for example, 'com_content.article'). * * @var string * @since 3.2 */ public $typeAlias = 'com_content.article'; /** * The context used for the associations table * * @var string * @since 3.4.4 */ protected $associationsContext = 'com_content.item'; /** * Batch copy items to a new category or current. * * @param integer $value The new category. * @param array $pks An array of row IDs. * @param array $contexts An array of item contexts. * * @return mixed An array of new IDs on success, boolean false on failure. * * @since 11.1 */ protected function batchCopy($value, $pks, $contexts) { $categoryId = (int) $value; $newIds = array(); if (!parent::checkCategoryId($categoryId)) { return false; } // Parent exists so we let's proceed while (!empty($pks)) { // Pop the first ID off the stack $pk = array_shift($pks); $this->table->reset(); // Check that the row actually exists if (!$this->table->load($pk)) { if ($error = $this->table->getError()) { // Fatal error $this->setError($error); return false; } else { // Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } } // Alter the title & alias $data = $this->generateNewTitle($categoryId, $this->table->alias, $this->table->title); $this->table->title = $data['0']; $this->table->alias = $data['1']; // Reset the ID because we are making a copy $this->table->id = 0; // Reset hits because we are making a copy $this->table->hits = 0; // Unpublish because we are making a copy $this->table->state = 0; // New category ID $this->table->catid = $categoryId; // TODO: Deal with ordering? // $table->ordering = 1; // Get the featured state $featured = $this->table->featured; // Check the row. if (!$this->table->check()) { $this->setError($this->table->getError()); return false; } parent::createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); // Store the row. if (!$this->table->store()) { $this->setError($this->table->getError()); return false; } // Get the new item ID $newId = $this->table->get('id'); // Add the new ID to the array $newIds[$pk] = $newId; // Check if the article was featured and update the #__content_frontpage table if ($featured == 1) { $db = $this->getDbo(); $query = $db->getQuery(true) ->insert($db->quoteName('#__content_frontpage')) ->values($newId . ', 0'); $db->setQuery($query); $db->execute(); } } // Clean the cache $this->cleanCache(); return $newIds; } /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to delete the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canDelete($record) { if (!empty($record->id)) { if ($record->state != -2) { return false; } $user = JFactory::getUser(); return $user->authorise('core.delete', 'com_content.article.' . (int) $record->id); } return false; } /** * Method to test whether a record can have its state edited. * * @param object $record A record object. * * @return boolean True if allowed to change the state of the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canEditState($record) { $user = JFactory::getUser(); // Check for existing article. if (!empty($record->id)) { return $user->authorise('core.edit.state', 'com_content.article.' . (int) $record->id); } // New article, so check against the category. elseif (!empty($record->catid)) { return $user->authorise('core.edit.state', 'com_content.category.' . (int) $record->catid); } // Default to component settings if neither article nor category known. else { return parent::canEditState('com_content'); } } /** * Prepare and sanitise the table data prior to saving. * * @param JTable $table A JTable object. * * @return void * * @since 1.6 */ protected function prepareTable($table) { // Set the publish date to now $db = $this->getDbo(); if ($table->state == 1 && (int) $table->publish_up == 0) { $table->publish_up = JFactory::getDate()->toSql(); } if ($table->state == 1 && intval($table->publish_down) == 0) { $table->publish_down = $db->getNullDate(); } // Increment the content version number. $table->version++; // Reorder the articles within the category so the new article is first if (empty($table->id)) { $table->reorder('catid = ' . (int) $table->catid . ' AND state >= 0'); } } /** * Returns a Table object, always creating it. * * @param string $type The table type to instantiate * @param string $prefix A prefix for the table class name. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A database object */ public function getTable($type = 'Content', $prefix = 'JTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Method to get a single record. * * @param integer $pk The id of the primary key. * * @return mixed Object on success, false on failure. */ public function getItem($pk = null) { if ($item = parent::getItem($pk)) { // Convert the params field to an array. $registry = new Registry; $registry->loadString($item->attribs); $item->attribs = $registry->toArray(); // Convert the metadata field to an array. $registry = new Registry; $registry->loadString($item->metadata); $item->metadata = $registry->toArray(); // Convert the images field to an array. $registry = new Registry; $registry->loadString($item->images); $item->images = $registry->toArray(); // Convert the urls field to an array. $registry = new Registry; $registry->loadString($item->urls); $item->urls = $registry->toArray(); $item->articletext = trim($item->fulltext) != '' ? $item->introtext . "<hr id=\"system-readmore\" />" . $item->fulltext : $item->introtext; if (!empty($item->id)) { $item->tags = new JHelperTags; $item->tags->getTagIds($item->id, 'com_content.article'); } } // Load associated content items $app = JFactory::getApplication(); $assoc = JLanguageAssociations::isEnabled(); if ($assoc) { $item->associations = array(); if ($item->id != null) { $associations = JLanguageAssociations::getAssociations('com_content', '#__content', 'com_content.item', $item->id); foreach ($associations as $tag => $association) { $item->associations[$tag] = $association->id; } } } return $item; } /** * Method to get the record form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return mixed A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_content.article', 'article', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } $jinput = JFactory::getApplication()->input; // The front end calls this model and uses a_id to avoid id clashes so we need to check for that first. if ($jinput->get('a_id')) { $id = $jinput->get('a_id', 0); } // The back end uses id so we use that the rest of the time and set it to 0 by default. else { $id = $jinput->get('id', 0); } // Determine correct permissions to check. if ($this->getState('article.id')) { $id = $this->getState('article.id'); // Existing record. Can only edit in selected categories. $form->setFieldAttribute('catid', 'action', 'core.edit'); // Existing record. Can only edit own articles in selected categories. $form->setFieldAttribute('catid', 'action', 'core.edit.own'); } else { // New record. Can only create in selected categories. $form->setFieldAttribute('catid', 'action', 'core.create'); } $user = JFactory::getUser(); // Check for existing article. // Modify the form based on Edit State access controls. if ($id != 0 && (!$user->authorise('core.edit.state', 'com_content.article.' . (int) $id)) || ($id == 0 && !$user->authorise('core.edit.state', 'com_content'))) { // Disable fields for display. $form->setFieldAttribute('featured', 'disabled', 'true'); $form->setFieldAttribute('ordering', 'disabled', 'true'); $form->setFieldAttribute('publish_up', 'disabled', 'true'); $form->setFieldAttribute('publish_down', 'disabled', 'true'); $form->setFieldAttribute('state', 'disabled', 'true'); // Disable fields while saving. // The controller has already verified this is an article you can edit. $form->setFieldAttribute('featured', 'filter', 'unset'); $form->setFieldAttribute('ordering', 'filter', 'unset'); $form->setFieldAttribute('publish_up', 'filter', 'unset'); $form->setFieldAttribute('publish_down', 'filter', 'unset'); $form->setFieldAttribute('state', 'filter', 'unset'); } // Prevent messing with article language and category when editing existing article with associations $app = JFactory::getApplication(); $assoc = JLanguageAssociations::isEnabled(); // Check if article is associated if ($this->getState('article.id') && $app->isSite() && $assoc) { $associations = JLanguageAssociations::getAssociations('com_content', '#__content', 'com_content.item', $id); // Make fields read only if (!empty($associations)) { $form->setFieldAttribute('language', 'readonly', 'true'); $form->setFieldAttribute('catid', 'readonly', 'true'); $form->setFieldAttribute('language', 'filter', 'unset'); $form->setFieldAttribute('catid', 'filter', 'unset'); } } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $app = JFactory::getApplication(); $data = $app->getUserState('com_content.edit.article.data', array()); if (empty($data)) { $data = $this->getItem(); // Pre-select some filters (Status, Category, Language, Access) in edit form if those have been selected in Article Manager: Articles if ($this->getState('article.id') == 0) { $filters = (array) $app->getUserState('com_content.articles.filter'); $data->set( 'state', $app->input->getInt( 'state', ((isset($filters['published']) && $filters['published'] !== '') ? $filters['published'] : null) ) ); $data->set('catid', $app->input->getInt('catid', (!empty($filters['category_id']) ? $filters['category_id'] : null))); $data->set('language', $app->input->getString('language', (!empty($filters['language']) ? $filters['language'] : null))); $data->set('access', $app->input->getInt('access', (!empty($filters['access']) ? $filters['access'] : JFactory::getConfig()->get('access')))); } } // If there are params fieldsets in the form it will fail with a registry object if (isset($data->params) && $data->params instanceof Registry) { $data->params = $data->params->toArray(); } $this->preprocessData('com_content.article', $data); return $data; } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 1.6 */ public function save($data) { $input = JFactory::getApplication()->input; $filter = JFilterInput::getInstance(); if (isset($data['metadata']) && isset($data['metadata']['author'])) { $data['metadata']['author'] = $filter->clean($data['metadata']['author'], 'TRIM'); } if (isset($data['created_by_alias'])) { $data['created_by_alias'] = $filter->clean($data['created_by_alias'], 'TRIM'); } if (isset($data['images']) && is_array($data['images'])) { $registry = new Registry; $registry->loadArray($data['images']); $data['images'] = (string) $registry; } if (isset($data['urls']) && is_array($data['urls'])) { foreach ($data['urls'] as $i => $url) { if ($url != false && ($i == 'urla' || $i == 'urlb' || $i == 'urlc')) { $data['urls'][$i] = JStringPunycode::urlToPunycode($url); } } $registry = new Registry; $registry->loadArray($data['urls']); $data['urls'] = (string) $registry; } // Alter the title for save as copy if ($input->get('task') == 'save2copy') { $origTable = clone $this->getTable(); $origTable->load($input->getInt('id')); if ($data['title'] == $origTable->title) { list($title, $alias) = $this->generateNewTitle($data['catid'], $data['alias'], $data['title']); $data['title'] = $title; $data['alias'] = $alias; } else { if ($data['alias'] == $origTable->alias) { $data['alias'] = ''; } } $data['state'] = 0; } // Automatic handling of alias for empty fields if (in_array($input->get('task'), array('apply', 'save', 'save2new')) && (!isset($data['id']) || (int) $data['id'] == 0)) { if ($data['alias'] == null) { if (JFactory::getConfig()->get('unicodeslugs') == 1) { $data['alias'] = JFilterOutput::stringURLUnicodeSlug($data['title']); } else { $data['alias'] = JFilterOutput::stringURLSafe($data['title']); } $table = JTable::getInstance('Content', 'JTable'); if ($table->load(array('alias' => $data['alias'], 'catid' => $data['catid']))) { $msg = JText::_('COM_CONTENT_SAVE_WARNING'); } list($title, $alias) = $this->generateNewTitle($data['catid'], $data['alias'], $data['title']); $data['alias'] = $alias; if (isset($msg)) { JFactory::getApplication()->enqueueMessage($msg, 'warning'); } } } if (parent::save($data)) { if (isset($data['featured'])) { $this->featured($this->getState($this->getName() . '.id'), $data['featured']); } return true; } return false; } /** * Method to toggle the featured setting of articles. * * @param array $pks The ids of the items to toggle. * @param integer $value The value to toggle to. * * @return boolean True on success. */ public function featured($pks, $value = 0) { // Sanitize the ids. $pks = (array) $pks; JArrayHelper::toInteger($pks); if (empty($pks)) { $this->setError(JText::_('COM_CONTENT_NO_ITEM_SELECTED')); return false; } $table = $this->getTable('Featured', 'ContentTable'); try { $db = $this->getDbo(); $query = $db->getQuery(true) ->update($db->quoteName('#__content')) ->set('featured = ' . (int) $value) ->where('id IN (' . implode(',', $pks) . ')'); $db->setQuery($query); $db->execute(); if ((int) $value == 0) { // Adjust the mapping table. // Clear the existing features settings. $query = $db->getQuery(true) ->delete($db->quoteName('#__content_frontpage')) ->where('content_id IN (' . implode(',', $pks) . ')'); $db->setQuery($query); $db->execute(); } else { // First, we find out which of our new featured articles are already featured. $query = $db->getQuery(true) ->select('f.content_id') ->from('#__content_frontpage AS f') ->where('content_id IN (' . implode(',', $pks) . ')'); $db->setQuery($query); $old_featured = $db->loadColumn(); // We diff the arrays to get a list of the articles that are newly featured $new_featured = array_diff($pks, $old_featured); // Featuring. $tuples = array(); foreach ($new_featured as $pk) { $tuples[] = $pk . ', 0'; } if (count($tuples)) { $db = $this->getDbo(); $columns = array('content_id', 'ordering'); $query = $db->getQuery(true) ->insert($db->quoteName('#__content_frontpage')) ->columns($db->quoteName($columns)) ->values($tuples); $db->setQuery($query); $db->execute(); } } } catch (Exception $e) { $this->setError($e->getMessage()); return false; } $table->reorder(); $this->cleanCache(); return true; } /** * A protected method to get a set of ordering conditions. * * @param object $table A record object. * * @return array An array of conditions to add to add to ordering queries. * * @since 1.6 */ protected function getReorderConditions($table) { $condition = array(); $condition[] = 'catid = ' . (int) $table->catid; return $condition; } /** * Auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param JForm $form The form object * @param array $data The data to be merged into the form object * @param string $group The plugin group to be executed * * @return void * * @since 3.0 */ protected function preprocessForm(JForm $form, $data, $group = 'content') { // Association content items $app = JFactory::getApplication(); $assoc = JLanguageAssociations::isEnabled(); if ($assoc) { $languages = JLanguageHelper::getLanguages('lang_code'); $addform = new SimpleXMLElement('<form />'); $fields = $addform->addChild('fields'); $fields->addAttribute('name', 'associations'); $fieldset = $fields->addChild('fieldset'); $fieldset->addAttribute('name', 'item_associations'); $fieldset->addAttribute('description', 'COM_CONTENT_ITEM_ASSOCIATIONS_FIELDSET_DESC'); $add = false; foreach ($languages as $tag => $language) { if (empty($data->language) || $tag != $data->language) { $add = true; $field = $fieldset->addChild('field'); $field->addAttribute('name', $tag); $field->addAttribute('type', 'modal_article'); $field->addAttribute('language', $tag); $field->addAttribute('label', $language->title); $field->addAttribute('translate_label', 'false'); $field->addAttribute('edit', 'true'); $field->addAttribute('clear', 'true'); } } if ($add) { $form->load($addform, false); } } parent::preprocessForm($form, $data, $group); } /** * Custom clean the cache of com_content and content modules * * @param string $group The cache group * @param integer $client_id The ID of the client * * @return void * * @since 1.6 */ protected function cleanCache($group = null, $client_id = 0) { parent::cleanCache('com_content'); parent::cleanCache('mod_articles_archive'); parent::cleanCache('mod_articles_categories'); parent::cleanCache('mod_articles_category'); parent::cleanCache('mod_articles_latest'); parent::cleanCache('mod_articles_news'); parent::cleanCache('mod_articles_popular'); } } PKb��\�x�J��*components/com_content/models/featured.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require_once __DIR__ . '/articles.php'; /** * About Page Model * * @since 1.6 */ class ContentModelFeatured extends ContentModelArticles { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'title', 'a.title', 'alias', 'a.alias', 'checked_out', 'a.checked_out', 'checked_out_time', 'a.checked_out_time', 'catid', 'a.catid', 'category_title', 'state', 'a.state', 'access', 'a.access', 'access_level', 'created', 'a.created', 'created_by', 'a.created_by', 'created_by_alias', 'a.created_by_alias', 'ordering', 'a.ordering', 'featured', 'a.featured', 'language', 'a.language', 'hits', 'a.hits', 'publish_up', 'a.publish_up', 'publish_down', 'a.publish_down', 'fp.ordering', 'published', 'a.published', 'author_id', 'category_id', 'level', 'tag' ); } parent::__construct($config); } /** * Build an SQL query to load the list data. * * @param boolean $resolveFKs True to join selected foreign information * * @return string * * @since 1.6 */ protected function getListQuery($resolveFKs = true) { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.id, a.title, a.alias, a.checked_out, a.checked_out_time, a.catid, a.state, a.access, a.created, a.hits,' . 'a.featured, a.language, a.created_by_alias, a.publish_up, a.publish_down' ) ); $query->from('#__content AS a'); // Join over the language $query->select('l.title AS language_title') ->join('LEFT', $db->quoteName('#__languages') . ' AS l ON l.lang_code = a.language'); // Join over the content table. $query->select('fp.ordering') ->join('INNER', '#__content_frontpage AS fp ON fp.content_id = a.id'); // Join over the users for the checked out user. $query->select('uc.name AS editor') ->join('LEFT', '#__users AS uc ON uc.id=a.checked_out'); // Join over the asset groups. $query->select('ag.title AS access_level') ->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); // Join over the categories. $query->select('c.title AS category_title') ->join('LEFT', '#__categories AS c ON c.id = a.catid'); // Join over the users for the author. $query->select('ua.name AS author_name') ->join('LEFT', '#__users AS ua ON ua.id = a.created_by'); // Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } // Filter by published state $published = $this->getState('filter.published'); if (is_numeric($published)) { $query->where('a.state = ' . (int) $published); } elseif ($published === '') { $query->where('(a.state = 0 OR a.state = 1)'); } // Filter by a single or group of categories. $baselevel = 1; $categoryId = $this->getState('filter.category_id'); if (is_numeric($categoryId)) { $cat_tbl = JTable::getInstance('Category', 'JTable'); $cat_tbl->load($categoryId); $rgt = $cat_tbl->rgt; $lft = $cat_tbl->lft; $baselevel = (int) $cat_tbl->level; $query->where('c.lft >= ' . (int) $lft) ->where('c.rgt <= ' . (int) $rgt); } elseif (is_array($categoryId)) { JArrayHelper::toInteger($categoryId); $categoryId = implode(',', $categoryId); $query->where('a.catid IN (' . $categoryId . ')'); } // Filter on the level. if ($level = $this->getState('filter.level')) { $query->where('c.level <= ' . ((int) $level + (int) $baselevel - 1)); } // Filter by author $authorId = $this->getState('filter.author_id'); if (is_numeric($authorId)) { $type = $this->getState('filter.author_id.include', true) ? '= ' : '<>'; $query->where('a.created_by ' . $type . (int) $authorId); } // Filter by search in title. $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } else { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('a.title LIKE ' . $search . ' OR a.alias LIKE ' . $search); } } // Filter on the language. if ($language = $this->getState('filter.language')) { $query->where('a.language = ' . $db->quote($language)); } // Filter by a single tag. $tagId = $this->getState('filter.tag'); if (is_numeric($tagId)) { $query->where($db->quoteName('tagmap.tag_id') . ' = ' . (int) $tagId) ->join( 'LEFT', $db->quoteName('#__contentitem_tag_map', 'tagmap') . ' ON ' . $db->quoteName('tagmap.content_item_id') . ' = ' . $db->quoteName('a.id') . ' AND ' . $db->quoteName('tagmap.type_alias') . ' = ' . $db->quote('com_content.article') ); } // Add the list ordering clause. $query->order($db->escape($this->getState('list.ordering', 'a.title')) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } } PKb��\~�=��)components/com_content/models/feature.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require_once __DIR__ . '/article.php'; /** * Feature model. * * @since 1.6 */ class ContentModelFeature extends ContentModelArticle { /** * Returns a Table object, always creating it. * * @param string $type The table type to instantiate * @param string $prefix A prefix for the table class name. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A database object * * @since 1.6 */ public function getTable($type = 'Featured', $prefix = 'ContentTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * A protected method to get a set of ordering conditions. * * @param object $table A record object. * * @return array An array of conditions to add to add to ordering queries. * * @since 1.6 */ protected function getReorderConditions($table) { $condition = array(); return $condition; } } PKb��\d��&�)�)*components/com_content/models/articles.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Methods supporting a list of article records. * * @since 1.6 */ class ContentModelArticles extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @since 1.6 * @see JController */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'title', 'a.title', 'alias', 'a.alias', 'checked_out', 'a.checked_out', 'checked_out_time', 'a.checked_out_time', 'catid', 'a.catid', 'category_title', 'state', 'a.state', 'access', 'a.access', 'access_level', 'created', 'a.created', 'created_by', 'a.created_by', 'created_by_alias', 'a.created_by_alias', 'ordering', 'a.ordering', 'featured', 'a.featured', 'language', 'a.language', 'hits', 'a.hits', 'publish_up', 'a.publish_up', 'publish_down', 'a.publish_down', 'published', 'a.published', 'author_id', 'category_id', 'level', 'tag' ); if (JLanguageAssociations::isEnabled()) { $config['filter_fields'][] = 'association'; } } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication(); // Adjust the context to support modal layouts. if ($layout = $app->input->get('layout')) { $this->context .= '.' . $layout; } $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $access = $this->getUserStateFromRequest($this->context . '.filter.access', 'filter_access'); $this->setState('filter.access', $access); $authorId = $app->getUserStateFromRequest($this->context . '.filter.author_id', 'filter_author_id'); $this->setState('filter.author_id', $authorId); $published = $this->getUserStateFromRequest($this->context . '.filter.published', 'filter_published', ''); $this->setState('filter.published', $published); $categoryId = $this->getUserStateFromRequest($this->context . '.filter.category_id', 'filter_category_id'); $this->setState('filter.category_id', $categoryId); $level = $this->getUserStateFromRequest($this->context . '.filter.level', 'filter_level'); $this->setState('filter.level', $level); $language = $this->getUserStateFromRequest($this->context . '.filter.language', 'filter_language', ''); $this->setState('filter.language', $language); $tag = $this->getUserStateFromRequest($this->context . '.filter.tag', 'filter_tag', ''); $this->setState('filter.tag', $tag); // List state information. parent::populateState('a.id', 'desc'); // Force a language $forcedLanguage = $app->input->get('forcedLanguage'); if (!empty($forcedLanguage)) { $this->setState('filter.language', $forcedLanguage); $this->setState('filter.forcedLanguage', $forcedLanguage); } } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. * * @since 1.6 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.access'); $id .= ':' . $this->getState('filter.published'); $id .= ':' . $this->getState('filter.category_id'); $id .= ':' . $this->getState('filter.author_id'); $id .= ':' . $this->getState('filter.language'); return parent::getStoreId($id); } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery * * @since 1.6 */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); $user = JFactory::getUser(); $app = JFactory::getApplication(); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.id, a.title, a.alias, a.checked_out, a.checked_out_time, a.catid' . ', a.state, a.access, a.created, a.created_by, a.created_by_alias, a.ordering, a.featured, a.language, a.hits' . ', a.publish_up, a.publish_down' ) ); $query->from('#__content AS a'); // Join over the language $query->select('l.title AS language_title') ->join('LEFT', $db->quoteName('#__languages') . ' AS l ON l.lang_code = a.language'); // Join over the users for the checked out user. $query->select('uc.name AS editor') ->join('LEFT', '#__users AS uc ON uc.id=a.checked_out'); // Join over the asset groups. $query->select('ag.title AS access_level') ->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); // Join over the categories. $query->select('c.title AS category_title') ->join('LEFT', '#__categories AS c ON c.id = a.catid'); // Join over the users for the author. $query->select('ua.name AS author_name') ->join('LEFT', '#__users AS ua ON ua.id = a.created_by'); // Join over the associations. if (JLanguageAssociations::isEnabled()) { $query->select('COUNT(asso2.id)>1 as association') ->join('LEFT', '#__associations AS asso ON asso.id = a.id AND asso.context=' . $db->quote('com_content.item')) ->join('LEFT', '#__associations AS asso2 ON asso2.key = asso.key') ->group('a.id, l.title, uc.name, ag.title, c.title, ua.name'); } // Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } // Implement View Level Access if (!$user->authorise('core.admin')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } // Filter by published state $published = $this->getState('filter.published'); if (is_numeric($published)) { $query->where('a.state = ' . (int) $published); } elseif ($published === '') { $query->where('(a.state = 0 OR a.state = 1)'); } // Filter by a single or group of categories. $baselevel = 1; $categoryId = $this->getState('filter.category_id'); if (is_numeric($categoryId)) { $cat_tbl = JTable::getInstance('Category', 'JTable'); $cat_tbl->load($categoryId); $rgt = $cat_tbl->rgt; $lft = $cat_tbl->lft; $baselevel = (int) $cat_tbl->level; $query->where('c.lft >= ' . (int) $lft) ->where('c.rgt <= ' . (int) $rgt); } elseif (is_array($categoryId)) { JArrayHelper::toInteger($categoryId); $categoryId = implode(',', $categoryId); $query->where('a.catid IN (' . $categoryId . ')'); } // Filter on the level. if ($level = $this->getState('filter.level')) { $query->where('c.level <= ' . ((int) $level + (int) $baselevel - 1)); } // Filter by author $authorId = $this->getState('filter.author_id'); if (is_numeric($authorId)) { $type = $this->getState('filter.author_id.include', true) ? '= ' : '<>'; $query->where('a.created_by ' . $type . (int) $authorId); } // Filter by search in title. $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } elseif (stripos($search, 'author:') === 0) { $search = $db->quote('%' . $db->escape(substr($search, 7), true) . '%'); $query->where('(ua.name LIKE ' . $search . ' OR ua.username LIKE ' . $search . ')'); } else { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('(a.title LIKE ' . $search . ' OR a.alias LIKE ' . $search . ')'); } } // Filter on the language. if ($language = $this->getState('filter.language')) { $query->where('a.language = ' . $db->quote($language)); } // Filter by a single tag. $tagId = $this->getState('filter.tag'); if (is_numeric($tagId)) { $query->where($db->quoteName('tagmap.tag_id') . ' = ' . (int) $tagId) ->join( 'LEFT', $db->quoteName('#__contentitem_tag_map', 'tagmap') . ' ON ' . $db->quoteName('tagmap.content_item_id') . ' = ' . $db->quoteName('a.id') . ' AND ' . $db->quoteName('tagmap.type_alias') . ' = ' . $db->quote('com_content.article') ); } // Add the list ordering clause. $orderCol = $this->state->get('list.ordering', 'a.id'); $orderDirn = $this->state->get('list.direction', 'desc'); if ($orderCol == 'a.ordering' || $orderCol == 'category_title') { $orderCol = 'c.title ' . $orderDirn . ', a.ordering'; } // SQL server change if ($orderCol == 'language') { $orderCol = 'l.title'; } if ($orderCol == 'access_level') { $orderCol = 'ag.title'; } $query->order($db->escape($orderCol . ' ' . $orderDirn)); return $query; } /** * Build a list of authors * * @return JDatabaseQuery * * @since 1.6 */ public function getAuthors() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Construct the query $query->select('u.id AS value, u.name AS text') ->from('#__users AS u') ->join('INNER', '#__content AS c ON c.created_by = u.id') ->group('u.id, u.name') ->order('u.name'); // Setup the query $db->setQuery($query); // Return the result return $db->loadObjectList(); } /** * Method to get a list of articles. * Overridden to add a check for access levels. * * @return mixed An array of data items on success, false on failure. * * @since 1.6.1 */ public function getItems() { $items = parent::getItems(); if (JFactory::getApplication()->isSite()) { $user = JFactory::getUser(); $groups = $user->getAuthorisedViewLevels(); for ($x = 0, $count = count($items); $x < $count; $x++) { // Check the access level. Remove articles the user shouldn't see if (!in_array($items[$x]->access, $groups)) { unset($items[$x]); } } } return $items; } } PKb��\'s����%components/com_content/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_content * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Component Controller * * @since 1.5 */ class ContentController extends JControllerLegacy { /** * @var string The default view. * @since 1.6 */ protected $default_view = 'articles'; /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = array()) { $view = $this->input->get('view', 'articles'); $layout = $this->input->get('layout', 'articles'); $id = $this->input->getInt('id'); // Check for edit form. if ($view == 'article' && $layout == 'edit' && !$this->checkEditId('com_content.edit.article', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_content&view=articles', false)); return false; } return parent::display(); } } PKb��\Ng``&components/com_languages/languages.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.tabstate'); if (!JFactory::getUser()->authorise('core.manage', 'com_languages')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $controller = JControllerLegacy::getInstance('Languages'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\~����2components/com_languages/controllers/languages.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Languages controller Class. * * @since 1.6 */ class LanguagesControllerLanguages extends JControllerAdmin { /** * Method to get a model object, loading it if required. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 1.6 */ public function getModel($name = 'Language', $prefix = 'LanguagesModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } /** * Method to save the submitted ordering values for records via AJAX. * * @return void * * @since 3.1 */ public function saveOrderAjax() { $pks = $this->input->post->get('cid', array(), 'array'); $order = $this->input->post->get('order', array(), 'array'); // Sanitize the input. JArrayHelper::toInteger($pks); JArrayHelper::toInteger($order); // Get the model. $model = $this->getModel(); // Save the ordering. $return = $model->saveorder($pks, $order); if ($return) { echo "1"; } // Close the application. JFactory::getApplication()->close(); } } PKb��\�5a�2components/com_languages/controllers/installed.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Languages Controller. * * @since 1.5 */ class LanguagesControllerInstalled extends JControllerLegacy { /** * Task to set the default language. * * @return void */ public function setDefault() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JInvalid_Token')); $cid = $this->input->get('cid', ''); $model = $this->getModel('installed'); if ($model->publish($cid)) { $msg = JText::_('COM_LANGUAGES_MSG_DEFAULT_LANGUAGE_SAVED'); $type = 'message'; } else { $msg = $this->getError(); $type = 'error'; } $clientId = $model->getState('filter.client_id'); $this->setredirect('index.php?option=com_languages&view=installed&client=' . $clientId, $msg, $type); } } PKb��\��6��2components/com_languages/controllers/overrides.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Languages Overrides Controller. * * @since 2.5 */ class LanguagesControllerOverrides extends JControllerAdmin { /** * The prefix to use with controller messages. * * @var string * @since 2.5 */ protected $text_prefix = 'COM_LANGUAGES_VIEW_OVERRIDES'; /** * Method for deleting one or more overrides. * * @return void * * @since 2.5 */ public function delete() { // Check for request forgeries. JSession::checkToken() or die(JText::_('JINVALID_TOKEN')); // Get items to dlete from the request. $cid = $this->input->get('cid', array(), 'array'); if (!is_array($cid) || count($cid) < 1) { $this->setMessage(JText::_($this->text_prefix . '_NO_ITEM_SELECTED'), 'warning'); } else { // Get the model. $model = $this->getModel('overrides'); // Remove the items. if ($model->delete($cid)) { $this->setMessage(JText::plural($this->text_prefix . '_N_ITEMS_DELETED', count($cid))); } else { $this->setMessage($model->getError()); } } $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_list, false)); } } PKb��\�J�QQ1components/com_languages/controllers/language.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Languages list actions controller. * * @since 1.6 */ class LanguagesControllerLanguage extends JControllerForm { /** * Gets the URL arguments to append to an item redirect. * * @param int $recordId The primary key id for the item. * @param string $key The name of the primary key variable. * * @return string The arguments to append to the redirect URL. * * @since 1.6 */ protected function getRedirectToItemAppend($recordId = null, $key = 'lang_id') { return parent::getRedirectToItemAppend($recordId, $key); } } PKb��\0�)��1components/com_languages/controllers/override.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Languages Override Controller * * @since 2.5 */ class LanguagesControllerOverride extends JControllerForm { /** * Method to edit an existing override. * * @param string $key The name of the primary key of the URL variable (not used here). * @param string $urlVar The name of the URL variable if different from the primary key (not used here). * * @return void * * @since 2.5 */ public function edit($key = null, $urlVar = null) { $app = JFactory::getApplication(); $cid = $this->input->post->get('cid', array(), 'array'); $context = "$this->option.edit.$this->context"; // Get the constant name. $recordId = (count($cid) ? $cid[0] : $this->input->get('id')); // Access check. if (!$this->allowEdit()) { $this->setError(JText::_('JLIB_APPLICATION_ERROR_EDIT_NOT_PERMITTED')); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_list . $this->getRedirectToListAppend(), false)); return; } $app->setUserState($context . '.data', null); $this->setRedirect('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId, 'id')); } /** * Method to save an override. * * @param string $key The name of the primary key of the URL variable (not used here). * @param string $urlVar The name of the URL variable if different from the primary key (not used here). * * @return void * * @since 2.5 */ public function save($key = null, $urlVar = null) { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $model = $this->getModel(); $data = $this->input->post->get('jform', array(), 'array'); $context = "$this->option.edit.$this->context"; $task = $this->getTask(); $recordId = $this->input->get('id'); $data['id'] = $recordId; // Access check. if (!$this->allowSave($data, 'id')) { $this->setError(JText::_('JLIB_APPLICATION_ERROR_SAVE_NOT_PERMITTED')); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_list . $this->getRedirectToListAppend(), false)); return; } // Validate the posted data. $form = $model->getForm($data, false); if (!$form) { $app->enqueueMessage($model->getError(), 'error'); return; } // Require helper for filter functions called by JForm. require_once JPATH_COMPONENT . '/helpers/languages.php'; // Test whether the data is valid. $validData = $model->validate($form, $data); // Check for validation errors. if ($validData === false) { // Get the validation messages. $errors = $model->getErrors(); // Push up to three validation messages out to the user. for ($i = 0, $n = count($errors); $i < $n && $i < 3; $i++) { if ($errors[$i] instanceof Exception) { $app->enqueueMessage($errors[$i]->getMessage(), 'warning'); } else { $app->enqueueMessage($errors[$i], 'warning'); } } // Save the data in the session. $app->setUserState($context . '.data', $data); // Redirect back to the edit screen. $this->setRedirect( JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId, 'id'), false) ); return; } // Attempt to save the data. if (!$model->save($validData)) { // Save the data in the session. $app->setUserState($context . '.data', $validData); // Redirect back to the edit screen. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_SAVE_FAILED', $model->getError())); $this->setMessage($this->getError(), 'error'); $this->setRedirect( JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId, 'id'), false) ); return; } // Add message of success. $this->setMessage(JText::_('COM_LANGUAGES_VIEW_OVERRIDE_SAVE_SUCCESS')); // Redirect the user and adjust session state based on the chosen task. switch ($task) { case 'apply': // Set the record data in the session. $app->setUserState($context . '.data', null); // Redirect back to the edit screen $this->setRedirect( JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($validData['key'], 'id'), false) ); break; case 'save2new': // Clear the record id and data from the session. $app->setUserState($context . '.data', null); // Redirect back to the edit screen $this->setRedirect( JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend(null, 'id'), false) ); break; default: // Clear the record id and data from the session. $app->setUserState($context . '.data', null); // Redirect to the list screen. $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_list . $this->getRedirectToListAppend(), false)); break; } } /** * Method to cancel an edit. * * @param string $key The name of the primary key of the URL variable (not used here). * * @return void * * @since 2.5 */ public function cancel($key = null) { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $context = "$this->option.edit.$this->context"; $app->setUserState($context . '.data', null); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_list . $this->getRedirectToListAppend(), false)); } } PKb��\�8v�>>5components/com_languages/controllers/strings.json.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Languages Strings JSON Controller * * @since 2.5 */ class LanguagesControllerStrings extends JControllerAdmin { /** * Method for refreshing the cache in the database with the known language strings * * @return void * * @since 2.5 */ public function refresh() { echo new JResponseJson($this->getModel('strings')->refresh()); } /** * Method for searching language strings * * @return void * * @since 2.5 */ public function search() { echo new JResponseJson($this->getModel('strings')->search()); } } PKb��\�� ��#components/com_languages/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="permissions" label="JConfig_Permissions_Label" description="JConfig_Permissions_Desc" > <field name="rules" type="rules" label="JConfig_Permissions_Label" filter="rules" validate="rules" component="com_languages" section="component" /> <field type="hidden" name="site" /> <field type="hidden" name="administrator" /> </fieldset> </config> PKb��\[�zn��#components/com_languages/access.xmlnu�[���<?xml version="1.0" encoding="utf-8" ?> <access component="com_languages"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> </section> </access> PKb��\��~~?components/com_languages/views/multilangstatus/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $notice_homes = $this->homes == 2 || $this->homes == 1 || $this->homes - 1 != count($this->contentlangs) && ($this->language_filter || $this->switchers != 0); $notice_disabled = !$this->language_filter && ($this->homes > 1 || $this->switchers != 0); $notice_switchers = !$this->switchers && ($this->homes > 1 || $this->language_filter); ?> <div class="mod-multilangstatus"> <?php if (!$this->language_filter && $this->switchers == 0) : ?> <?php if ($this->homes == 1) : ?> <div class="alert alert-info"><?php echo JText::_('COM_LANGUAGES_MULTILANGSTATUS_NONE'); ?></div> <?php else: ?> <div class="alert alert-info"><?php echo JText::_('COM_LANGUAGES_MULTILANGSTATUS_USELESS_HOMES'); ?></div> <?php endif; ?> <?php else: ?> <table class="table table-striped table-condensed"> <tbody> <?php if ($notice_homes) : ?> <tr class="warning"> <td> <span class="icon-pending"></span> </td> <td> <?php echo JText::_('COM_LANGUAGES_MULTILANGSTATUS_HOMES_MISSING'); ?> </td> </tr> <?php endif; ?> <?php if ($notice_disabled) : ?> <tr class="warning"> <td> <span class="icon-pending"></span> </td> <td> <?php echo JText::_('COM_LANGUAGES_MULTILANGSTATUS_LANGUAGEFILTER_DISABLED'); ?> </td> </tr> <?php endif; ?> <?php if ($notice_switchers) : ?> <tr class="warning"> <td> <span class="icon-pending"></span> </td> <td> <?php echo JText::_('COM_LANGUAGES_MULTILANGSTATUS_LANGSWITCHER_UNPUBLISHED'); ?> </td> </tr> <?php endif; ?> <?php foreach ($this->contentlangs as $contentlang) : ?> <?php if (array_key_exists($contentlang->lang_code, $this->homepages) && (!array_key_exists($contentlang->lang_code, $this->site_langs) || !$contentlang->published)) : ?> <tr class="warning"> <td> <span class="icon-pending"></span> </td> <td> <?php echo JText::sprintf('COM_LANGUAGES_MULTILANGSTATUS_ERROR_CONTENT_LANGUAGE', $contentlang->lang_code); ?> </td> </tr> <?php endif; ?> <?php if (!array_key_exists($contentlang->lang_code, $this->site_langs)) : ?> <tr class="warning"> <td> <span class="icon-pending"></span> </td> <td> <?php echo JText::sprintf('COM_LANGUAGES_MULTILANGSTATUS_ERROR_LANGUAGE_TAG', $contentlang->lang_code); ?> </td> </tr> <?php endif; ?> <?php endforeach; ?> <?php if ($this->listUsersError) : ?> <tr class="info"> <td> <span class="icon-help"></span> </td> <td> <?php echo JText::_('COM_LANGUAGES_MULTILANGSTATUS_CONTACTS_ERROR_TIP'); ?> <ul> <?php foreach ($this->listUsersError as $user) : ?> <li> <?php echo JText::sprintf('COM_LANGUAGES_MULTILANGSTATUS_CONTACTS_ERROR', $user->name); ?> </li> <?php endforeach; ?> </ul> </td> </tr> <?php endif; ?> </tbody> </table> <table class="table table-striped table-condensed" style="border-top: 1px solid #CCCCCC;"> <thead> <tr> <th> <?php echo JText::_('JDETAILS'); ?> </th> <th> <?php echo JText::_('JSTATUS'); ?> </th> </tr> </thead> <tbody> <tr> <th scope="row"> <?php echo JText::_('COM_LANGUAGES_MULTILANGSTATUS_LANGUAGEFILTER'); ?> </th> <td class="center"> <?php if ($this->language_filter) : ?> <?php echo JText::_('JENABLED'); ?> <?php else : ?> <?php echo JText::_('JDISABLED'); ?> <?php endif; ?> </td> </tr> <tr> <th scope="row"> <?php echo JText::_('COM_LANGUAGES_MULTILANGSTATUS_LANGSWITCHER_PUBLISHED'); ?> </th> <td class="center"> <?php if ($this->switchers != 0) : ?> <?php echo $this->switchers; ?> <?php else : ?> <?php echo JText::_('JNONE'); ?> <?php endif; ?> </td> </tr> <tr> <th scope="row"> <?php if ($this->homes > 1) : ?> <?php echo JText::_('COM_LANGUAGES_MULTILANGSTATUS_HOMES_PUBLISHED_INCLUDING_ALL'); ?> <?php else : ?> <?php echo JText::_('COM_LANGUAGES_MULTILANGSTATUS_HOMES_PUBLISHED'); ?> <?php endif; ?> </th> <td class="center"> <?php if ($this->homes > 1) : ?> <?php echo $this->homes; ?> <?php else : ?> <?php echo JText::_('COM_LANGUAGES_MULTILANGSTATUS_HOMES_PUBLISHED_ALL'); ?> <?php endif; ?> </td> </tr> </tbody> </table> <table class="table table-striped table-condensed" style="border-top: 1px solid #CCCCCC;"> <thead> <tr> <th> <?php echo JText::_('JGRID_HEADING_LANGUAGE'); ?> </th> <th class="center"> <?php echo JText::_('COM_LANGUAGES_MULTILANGSTATUS_SITE_LANG_PUBLISHED'); ?> </th> <th class="center"> <?php echo JText::_('COM_LANGUAGES_MULTILANGSTATUS_CONTENT_LANGUAGE_PUBLISHED'); ?> </th> <th class="center"> <?php echo JText::_('COM_LANGUAGES_MULTILANGSTATUS_HOMES_PUBLISHED'); ?> </th> </tr> </thead> <tbody> <?php foreach ($this->statuses as $status) : ?> <?php if ($status->element) : ?> <tr> <td> <?php echo $status->element; ?> </td> <?php endif; ?> <?php // Published Site languages ?> <?php if ($status->element) : ?> <td class="center"> <span class="icon-ok"></span> </td> <?php else : ?> <td class="center"> <?php echo JText::_('JNO'); ?> </td> <?php endif; ?> <?php // Published Content languages ?> <?php if ($status->lang_code && $status->published) : ?> <td class="center"> <span class="icon-ok"></span> </td> <?php else : ?> <td class="center"> <span class="icon-pending"></span> </td> <?php endif; ?> <?php // Published Home pages ?> <?php if ($status->home_language) : ?> <td class="center"> <span class="icon-ok"></span> </td> <?php else : ?> <td class="center"> <span class="icon-not-ok"></span> </td> <?php endif; ?> </tr> <?php endforeach; ?> <?php foreach ($this->contentlangs as $contentlang) : ?> <?php if (!array_key_exists($contentlang->lang_code, $this->site_langs)) : ?> <tr> <td> <?php echo $contentlang->lang_code; ?> </td> <td class="center"> <span class="icon-pending"></span> </td> <td class="center"> <?php if ($contentlang->published) : ?> <span class="icon-ok"></span> <?php elseif (!$contentlang->published && array_key_exists($contentlang->lang_code, $this->homepages)) : ?> <span class="icon-not-ok"></span> <?php elseif (!$contentlang->published) : ?> <span class="icon-pending"></span> <?php endif; ?> </td> <td class="center"> <?php if (!array_key_exists($contentlang->lang_code, $this->homepages)) : ?> <span class="icon-pending"></span> <?php else : ?> <span class="icon-ok"></span> <?php endif; ?> </td> <?php endif; ?> <?php endforeach; ?> </tr> </tbody> </table> <?php endif; ?> </div> PKb��\%�jԟ�<components/com_languages/views/multilangstatus/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Displays the multilang status. * * @since 1.7.1 */ class LanguagesViewMultilangstatus extends JViewLegacy { /** * Display the view. * * @param string $tpl The name of the template file to parse. * * @return void */ public function display($tpl = null) { require_once JPATH_COMPONENT . '/helpers/multilangstatus.php'; $this->homes = MultilangstatusHelper::getHomes(); $this->language_filter = JLanguageMultilang::isEnabled(); $this->switchers = MultilangstatusHelper::getLangswitchers(); $this->listUsersError = MultilangstatusHelper::getContacts(); $this->contentlangs = MultilangstatusHelper::getContentlangs(); $this->site_langs = MultilangstatusHelper::getSitelangs(); $this->statuses = MultilangstatusHelper::getStatus(); $this->homepages = MultilangstatusHelper::getHomepages(); parent::display($tpl); } } PKb��\���C�$�$9components/com_languages/views/languages/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); JHtml::_('bootstrap.tooltip'); $user = JFactory::getUser(); $userId = $user->get('id'); $n = count($this->items); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canOrder = $user->authorise('core.edit.state', 'com_languages'); $saveOrder = $listOrder == 'a.ordering'; if ($saveOrder) { $saveOrderingUrl = 'index.php?option=com_languages&task=languages.saveOrderAjax&tmpl=component'; JHtml::_('sortablelist.sortable', 'contentList', 'adminForm', strtolower($listDirn), $saveOrderingUrl); } $sortFields = $this->getSortFields(); JFactory::getDocument()->addScriptDeclaration(' Joomla.orderTable = function() { table = document.getElementById("sortTable"); direction = document.getElementById("directionTable"); order = table.options[table.selectedIndex].value; if (order != "' . $listOrder . '") { dirn = "asc"; } else { dirn = direction.options[direction.selectedIndex].value; } Joomla.tableOrdering(order, dirn, ""); }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_languages&view=languages'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_LANGUAGES_SEARCH_IN_TITLE'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC'); ?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> <div class="btn-group pull-right hidden-phone"> <label for="directionTable" class="element-invisible"><?php echo JText::_('JFIELD_ORDERING_DESC'); ?></label> <select name="directionTable" id="directionTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JFIELD_ORDERING_DESC'); ?></option> <option value="asc" <?php if ($listDirn == 'asc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_ASCENDING'); ?></option> <option value="desc" <?php if ($listDirn == 'desc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_DESCENDING'); ?></option> </select> </div> <div class="btn-group pull-right hidden-phone"> <label for="sortTable" class="element-invisible"><?php echo JText::_('JGLOBAL_SORT_BY'); ?></label> <select name="sortTable" id="sortTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JGLOBAL_SORT_BY');?></option> <?php echo JHtml::_('select.options', $sortFields, 'value', 'text', $listOrder); ?> </select> </div> </div> <div class="clearfix"> </div> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped" id="contentList"> <thead> <tr> <th width="1%" class="nowrap center hidden-phone"> <?php echo JHtml::_('grid.sort', '<span class="icon-menu-2"></span>', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?> </th> <th width="20"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="1%" style="min-width:55px" class="nowrap center"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.published', $listDirn, $listOrder); ?> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="title hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_LANGUAGES_HEADING_TITLE_NATIVE', 'a.title_native', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_LANGUAGES_FIELD_LANG_TAG_LABEL', 'a.lang_code', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap"> <?php echo JHtml::_('grid.sort', 'COM_LANGUAGES_FIELD_LANG_CODE_LABEL', 'a.sef', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap"> <?php echo JHtml::_('grid.sort', 'COM_LANGUAGES_HEADING_LANG_IMAGE', 'a.image', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_LANGUAGES_HOMEPAGE', '', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.lang_id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="11"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : $ordering = ($listOrder == 'a.ordering'); $canCreate = $user->authorise('core.create', 'com_languages'); $canEdit = $user->authorise('core.edit', 'com_languages'); $canChange = $user->authorise('core.edit.state', 'com_languages'); ?> <tr class="row<?php echo $i % 2; ?>"> <td class="order nowrap center hidden-phone"> <?php if ($canChange) : $disableClassName = ''; $disabledLabel = ''; if (!$saveOrder) : $disabledLabel = JText::_('JORDERINGDISABLED'); $disableClassName = 'inactive tip-top'; endif; ?> <span class="sortable-handler hasTooltip <?php echo $disableClassName; ?>" title="<?php echo $disabledLabel; ?>"> <span class="icon-menu"></span> </span> <input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering; ?>" class="width-20 text-area-order " /> <?php else : ?> <span class="sortable-handler inactive" > <span class="icon-menu"></span> </span> <?php endif; ?> </td> <td> <?php echo JHtml::_('grid.id', $i, $item->lang_id); ?> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->published, $i, 'languages.', $canChange); ?> </td> <td> <span class="editlinktip hasTooltip" title="<?php echo JHtml::tooltipText(JText::_('JGLOBAL_EDIT_ITEM'), $item->title, 0); ?>"> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_languages&task=language.edit&lang_id=' . (int) $item->lang_id); ?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> </span> </td> <td class="hidden-phone"> <?php echo $this->escape($item->title_native); ?> </td> <td class="hidden-phone"> <?php echo $this->escape($item->lang_code); ?> </td> <td> <?php echo $this->escape($item->sef); ?> </td> <td> <?php echo $this->escape($item->image); ?> <?php echo JHtml::_('image', 'mod_languages/' . $item->image . '.gif', $item->image, array('title' => $item->image), true); ?> </td> <td class="center"> <?php echo $this->escape($item->access_level); ?> </td> <td class="hidden-phone"> <?php if ($item->home == '1') : ?> <?php echo JText::_('JYES');?> <?php else:?> <?php echo JText::_('JNO');?> <?php endif;?> </td> <td class="hidden-phone"> <?php echo $this->escape($item->lang_id); ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif;?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\3�h��6components/com_languages/views/languages/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * HTML Languages View class for the Languages component. * * @since 1.6 */ class LanguagesViewLanguages extends JViewLegacy { protected $items; protected $pagination; protected $state; /** * Display the view. * * @param string $tpl The name of the template file to parse. * * @return void */ public function display($tpl = null) { $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); LanguagesHelper::addSubmenu('languages'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_languages'); JToolbarHelper::title(JText::_('COM_LANGUAGES_VIEW_LANGUAGES_TITLE'), 'comments-2 langmanager'); if ($canDo->get('core.create')) { JToolbarHelper::addNew('language.add'); } if ($canDo->get('core.edit')) { JToolbarHelper::editList('language.edit'); JToolbarHelper::divider(); } if ($canDo->get('core.edit.state')) { if ($this->state->get('filter.published') != 2) { JToolbarHelper::publishList('languages.publish'); JToolbarHelper::unpublishList('languages.unpublish'); } } if ($this->state->get('filter.published') == -2 && $canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'languages.delete', 'JTOOLBAR_EMPTY_TRASH'); JToolbarHelper::divider(); } elseif ($canDo->get('core.edit.state')) { JToolbarHelper::trash('languages.trash'); JToolbarHelper::divider(); } if ($canDo->get('core.admin')) { // Add install languages link to the lang installer component. $bar = JToolbar::getInstance('toolbar'); $bar->appendButton('Link', 'upload', 'COM_LANGUAGES_INSTALL', 'index.php?option=com_installer&view=languages'); JToolbarHelper::divider(); JToolbarHelper::preferences('com_languages'); JToolbarHelper::divider(); } JToolbarHelper::help('JHELP_EXTENSIONS_LANGUAGE_MANAGER_CONTENT'); JHtmlSidebar::setAction('index.php?option=com_languages&view=languages'); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_PUBLISHED'), 'filter_published', JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true) ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_ACCESS'), 'filter_access', JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access')) ); } /** * Returns an array of fields the table can be sorted by. * * @return array Array containing the field name to sort by as the key and display text as value. * * @since 3.0 */ protected function getSortFields() { return array( 'a.ordering' => JText::_('JGRID_HEADING_ORDERING'), 'a.published' => JText::_('JSTATUS'), 'a.title' => JText::_('JGLOBAL_TITLE'), 'a.title_native' => JText::_('COM_LANGUAGES_HEADING_TITLE_NATIVE'), 'a.lang_code' => JText::_('COM_LANGUAGES_FIELD_LANG_TAG_LABEL'), 'a.sef' => JText::_('COM_LANGUAGES_FIELD_LANG_CODE_LABEL'), 'a.image' => JText::_('COM_LANGUAGES_HEADING_LANG_IMAGE'), 'a.access' => JText::_('JGRID_HEADING_ACCESS'), 'a.lang_id' => JText::_('JGRID_HEADING_ID') ); } } PKb��\��@#��9components/com_languages/views/overrides/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('formbehavior.chosen', 'select'); JHtml::_('bootstrap.tooltip'); JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); $client = $this->state->get('filter.client') == '0' ? JText::_('JSITE') : JText::_('JADMINISTRATOR'); $language = $this->state->get('filter.language'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_languages&view=overrides'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar clearfix"> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_LANGUAGES_VIEW_OVERRIDES_FILTER_SEARCH_DESC'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC'); ?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> </div> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped" id="overrideList"> <thead> <tr> <th width="1%" class="center"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="30%" class="left"> <?php echo JHtml::_('grid.sort', 'COM_LANGUAGES_VIEW_OVERRIDES_KEY', 'key', $listDirn, $listOrder); ?> </th> <th class="left hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_LANGUAGES_VIEW_OVERRIDES_TEXT', 'text', $listDirn, $listOrder); ?> </th> <th class="nowrap hidden-phone"> <?php echo JText::_('COM_LANGUAGES_FIELD_LANG_TAG_LABEL'); ?> </th> <th class="hidden-phone"> <?php echo JText::_('JCLIENT'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="5"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php $canEdit = JFactory::getUser()->authorise('core.edit', 'com_languages'); ?> <?php $i = 0; ?> <?php foreach ($this->items as $key => $text) : ?> <tr class="row<?php echo $i % 2; ?>" id="overriderrow<?php echo $i; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $key); ?> </td> <td> <?php if ($canEdit) : ?> <a id="key[<?php echo $this->escape($key); ?>]" href="<?php echo JRoute::_('index.php?option=com_languages&task=override.edit&id=' . $key); ?>"><?php echo $this->escape($key); ?></a> <?php else: ?> <?php echo $this->escape($key); ?> <?php endif; ?> </td> <td class="hidden-phone"> <span id="string[<?php echo $this->escape($key); ?>]"><?php echo $this->escape($text); ?></span> </td> <td class="hidden-phone"> <?php echo $language; ?> </td> <td class="hidden-phone"> <?php echo $client; ?> </td> </tr> <?php $i++; ?> <?php endforeach; ?> </tbody> </table> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\m[Ҋ � 6components/com_languages/views/overrides/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View for language overrides list. * * @since 2.5 */ class LanguagesViewOverrides extends JViewLegacy { /** * The items to list. * * @var array * @since 2.5 */ protected $items; /** * The pagination object. * * @var object * @since 2.5 */ protected $pagination; /** * The model state. * * @var object * @since 2.5 */ protected $state; /** * Displays the view. * * @param string $tpl The name of the template file to parse. * * @return void * * @since 2.5 */ public function display($tpl = null) { $this->state = $this->get('State'); $this->items = $this->get('Overrides'); $this->languages = $this->get('Languages'); $this->pagination = $this->get('Pagination'); LanguagesHelper::addSubmenu('overrides'); // Check for errors. if (count($errors = $this->get('Errors'))) { throw new Exception(implode("\n", $errors)); } $this->addToolbar(); parent::display($tpl); } /** * Adds the page title and toolbar. * * @return void * * @since 2.5 */ protected function addToolbar() { // Get the results for each action $canDo = JHelperContent::getActions('com_languages'); JToolbarHelper::title(JText::_('COM_LANGUAGES_VIEW_OVERRIDES_TITLE'), 'comments-2 langmanager'); if ($canDo->get('core.create')) { JToolbarHelper::addNew('override.add'); } if ($canDo->get('core.edit') && $this->pagination->total) { JToolbarHelper::editList('override.edit'); } if ($canDo->get('core.delete') && $this->pagination->total) { JToolbarHelper::deleteList('', 'overrides.delete'); } if ($canDo->get('core.admin')) { JToolbarHelper::preferences('com_languages'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES'); JHtmlSidebar::setAction('index.php?option=com_languages&view=overrides'); JHtmlSidebar::addFilter( // @todo need a label here '', 'filter_language_client', JHtml::_('select.options', $this->languages, null, 'text', $this->state->get('filter.language_client')), true ); $this->sidebar = JHtmlSidebar::render(); } } PKb��\%x�CC5components/com_languages/views/override/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); JHtml::_('formbehavior.chosen', 'select'); $expired = ($this->state->get("cache_expired") == 1 ) ? '1' : ''; JFactory::getDocument()->addScriptDeclaration(' jQuery(document).ready(function() { document.getElementById("jform_searchstring").addEvent("focus", function() { if (!Joomla.overrider.states.refreshed) { var expired = "' . $expired . '"; if (expired) { Joomla.overrider.refreshCache(); Joomla.overrider.states.refreshed = true; } } this.removeClass("invalid"); }); }); Joomla.submitbutton = function(task) { if (task == "override.cancel" || document.formvalidator.isValid(document.getElementById("override-form"))) { Joomla.submitform(task, document.getElementById("override-form")); } }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_languages&id=' . $this->item->key); ?>" method="post" name="adminForm" id="override-form" class="form-validate form-horizontal"> <div class="row-fluid"> <div class="span6"> <fieldset> <legend><?php echo empty($this->item->key) ? JText::_('COM_LANGUAGES_VIEW_OVERRIDE_EDIT_NEW_OVERRIDE_LEGEND') : JText::_('COM_LANGUAGES_VIEW_OVERRIDE_EDIT_EDIT_OVERRIDE_LEGEND'); ?></legend> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('key'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('key'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('override'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('override'); ?> </div> </div> <?php if ($this->state->get('filter.client') == 'administrator') : ?> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('both'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('both'); ?> </div> </div> <?php endif; ?> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('language'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('language'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('client'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('client'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('file'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('file'); ?> </div> </div> </fieldset> </div> <div class="span6"> <fieldset> <legend><?php echo JText::_('COM_LANGUAGES_VIEW_OVERRIDE_SEARCH_LEGEND'); ?></legend> <div class="alert alert-info"><p><?php echo JText::_('COM_LANGUAGES_VIEW_OVERRIDE_SEARCH_TIP'); ?></p></div> <div class="control-group"> <?php echo $this->form->getInput('searchstring'); ?> <button type="submit" class="btn btn-primary" onclick="Joomla.overrider.searchStrings();return false;" formnovalidate> <?php echo JText::_('COM_LANGUAGES_VIEW_OVERRIDE_SEARCH_BUTTON'); ?> </button> <span id="refresh-status" class="overrider-spinner help-block"> <?php echo JText::_('COM_LANGUAGES_VIEW_OVERRIDE_REFRESHING'); ?> </span> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('searchtype'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('searchtype'); ?> </div> </div> </fieldset> <fieldset id="results-container" class="adminform"> <legend><?php echo JText::_('COM_LANGUAGES_VIEW_OVERRIDE_RESULTS_LEGEND'); ?></legend> <span id="more-results"> <a href="javascript:Joomla.overrider.searchStrings(Joomla.overrider.states.more);"> <?php echo JText::_('COM_LANGUAGES_VIEW_OVERRIDE_MORE_RESULTS'); ?></a> </span> </fieldset> <input type="hidden" name="task" value="" /> <input type="hidden" name="id" value="<?php echo $this->item->key; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </div> </form> PKb��\�[3G� � 5components/com_languages/views/override/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View to edit an language override * * @since 2.5 */ class LanguagesViewOverride extends JViewLegacy { /** * The form to use for the view. * * @var object * @since 2.5 */ protected $form; /** * The item to edit. * * @var object * @since 2.5 */ protected $item; /** * The model state. * * @var object * @since 2.5 */ protected $state; /** * Displays the view. * * @param string $tpl The name of the template file to parse * * @return void * * @since 2.5 */ public function display($tpl = null) { JHtml::_('stylesheet', 'overrider/overrider.css', array(), true); JHtml::_('behavior.framework', true); JHtml::_('script', 'overrider/overrider.js', false, true); $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { throw new Exception(implode("\n", $errors)); } // Check whether the cache has to be refreshed. $cached_time = JFactory::getApplication()->getUserState( 'com_languages.overrides.cachedtime.' . $this->state->get('filter.client') . '.' . $this->state->get('filter.language'), 0 ); if (time() - $cached_time > 60 * 5) { $this->state->set('cache_expired', true); } // Add strings for translations in Javascript. JText::script('COM_LANGUAGES_VIEW_OVERRIDE_NO_RESULTS'); JText::script('COM_LANGUAGES_VIEW_OVERRIDE_REQUEST_ERROR'); $this->addToolbar(); parent::display($tpl); } /** * Adds the page title and toolbar. * * @return void * * @since 2.5 */ protected function addToolbar() { JFactory::getApplication()->input->set('hidemainmenu', true); $canDo = JHelperContent::getActions('com_languages'); JToolbarHelper::title(JText::_('COM_LANGUAGES_VIEW_OVERRIDE_EDIT_TITLE'), 'comments-2 langmanager'); if ($canDo->get('core.edit')) { JToolbarHelper::apply('override.apply'); JToolbarHelper::save('override.save'); } // This component does not support Save as Copy. if ($canDo->get('core.edit') && $canDo->get('core.create')) { JToolbarHelper::save2new('override.save2new'); } if (empty($this->item->key)) { JToolbarHelper::cancel('override.cancel'); } else { JToolbarHelper::cancel('override.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_EXTENSIONS_LANGUAGE_MANAGER_OVERRIDES_EDIT'); } } PKb��\��&T��9components/com_languages/views/installed/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Add specific helper files for html generation JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('formbehavior.chosen', 'select'); $user = JFactory::getUser(); $userId = $user->get('id'); $client = $this->state->get('filter.client_id', 0) ? JText::_('JADMINISTRATOR') : JText::_('JSITE'); $clientId = $this->state->get('filter.client_id', 0); ?> <form action="<?php echo JRoute::_('index.php?option=com_languages&view=installed&client=' . $clientId); ?>" method="post" id="adminForm" name="adminForm"> <?php if (!empty($this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif; ?> <div id="filter-bar" class="btn-toolbar"> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC'); ?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> </div> <div class="clearfix"> </div> <table class="table table-striped"> <thead> <tr> <th width="20">   </th> <th width="25%" class="title"> <?php echo JText::_('COM_LANGUAGES_HEADING_LANGUAGE'); ?> </th> <th> <?php echo JText::_('COM_LANGUAGES_FIELD_LANG_TAG_LABEL'); ?> </th> <th> <?php echo JText::_('JCLIENT'); ?> </th> <th class="center"> <?php echo JText::_('COM_LANGUAGES_HEADING_DEFAULT'); ?> </th> <th class="hidden-phone"> <?php echo JText::_('JVERSION'); ?> </th> <th class="hidden-phone"> <?php echo JText::_('JDATE'); ?> </th> <th class="hidden-phone"> <?php echo JText::_('JAUTHOR'); ?> </th> <th class="hidden-phone"> <?php echo JText::_('COM_LANGUAGES_HEADING_AUTHOR_EMAIL'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="9"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->rows as $i => $row) : $canCreate = $user->authorise('core.create', 'com_languages'); $canEdit = $user->authorise('core.edit', 'com_languages'); $canChange = $user->authorise('core.edit.state', 'com_languages'); ?> <tr class="row<?php echo $i % 2; ?>"> <td width="20"> <?php echo JHtml::_('languages.id', $i, $row->language);?> </td> <td width="25%"> <label for="cb<?php echo $i; ?>"> <?php echo $this->escape($row->name); ?> </label> </td> <td> <?php echo $this->escape($row->language); ?> </td> <td> <?php echo $client;?> </td> <td class="center"> <?php echo JHtml::_('jgrid.isdefault', $row->published, $i, 'installed.', !$row->published && $canChange);?> </td> <td class="hidden-phone"> <?php echo $this->escape($row->version); ?> </td> <td class="hidden-phone"> <?php echo $this->escape($row->creationDate); ?> </td> <td class="hidden-phone"> <?php echo $this->escape($row->author); ?> </td> <td class="hidden-phone"> <?php echo JStringPunycode::emailToUTF8($this->escape($row->authorEmail)); ?> </td> </tr> <?php endforeach;?> </tbody> </table> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\o�& & 6components/com_languages/views/installed/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Displays a list of the installed languages. * * @since 1.6 */ class LanguagesViewInstalled extends JViewLegacy { /** * @var object client object. */ protected $client = null; /** * @var boolean|JException True, if FTP settings should be shown, or an exception. */ protected $ftp = null; /** * @var string option name. */ protected $option = null; /** * @var object pagination information. */ protected $pagination = null; /** * @var array languages information. */ protected $rows = null; /** * @var object user object */ protected $user = null; /** * Display the view. * * @param string $tpl The name of the template file to parse. * * @return void */ public function display($tpl = null) { $this->ftp = $this->get('Ftp'); $this->option = $this->get('Option'); $this->pagination = $this->get('Pagination'); $this->rows = $this->get('Data'); $this->state = $this->get('State'); $client = (int) $this->state->get('filter.client_id', 0); LanguagesHelper::addSubmenu('installed', $client); $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_languages'); JToolbarHelper::title(JText::_('COM_LANGUAGES_VIEW_INSTALLED_TITLE'), 'comments-2 langmanager'); if ($canDo->get('core.edit.state')) { JToolbarHelper::makeDefault('installed.setDefault'); JToolbarHelper::divider(); } if ($canDo->get('core.admin')) { // Add install languages link to the lang installer component. $bar = JToolbar::getInstance('toolbar'); $bar->appendButton('Link', 'upload', 'COM_LANGUAGES_INSTALL', 'index.php?option=com_installer&view=languages'); JToolbarHelper::divider(); JToolbarHelper::preferences('com_languages'); JToolbarHelper::divider(); } JToolbarHelper::help('JHELP_EXTENSIONS_LANGUAGE_MANAGER_INSTALLED'); $this->sidebar = JHtmlSidebar::render(); } } PKb��\;��9 5components/com_languages/views/language/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('formbehavior.chosen', 'select'); JFactory::getDocument()->addScriptDeclaration( ' Joomla.submitbutton = function(task) { if (task == "language.cancel" || document.formvalidator.isValid(document.getElementById("language-form"))) { Joomla.submitform(task, document.getElementById("language-form")); } }; jQuery(document).ready(function() { jQuery("#jform_image").on("change", function() { var flag = this.value; if (!jQuery("#flag img").attr("src")) { jQuery("#flag img").attr("src", "' . JUri::root(true) . '" + "/media/mod_languages/images/" + flag + ".gif"); } else { jQuery("#flag img").attr("src", function(index, attr) { return attr.replace(jQuery("#flag img").attr("title") + ".gif", flag + ".gif") }) } jQuery("#flag img").attr("title", flag).attr("alt", flag); }); });' ); ?> <form action="<?php echo JRoute::_('index.php?option=com_languages&layout=edit&lang_id=' . (int) $this->item->lang_id); ?>" method="post" name="adminForm" id="language-form" class="form-validate form-horizontal"> <?php echo JLayoutHelper::render('joomla.edit.item_title', $this); ?> <fieldset> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'details')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'details', JText::_('JDETAILS', true)); ?> <?php echo $this->form->renderField('title'); ?> <?php echo $this->form->renderField('title_native'); ?> <?php echo $this->form->renderField('lang_code'); ?> <?php echo $this->form->renderField('sef'); ?> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('image'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('image'); ?> <span id="flag"> <?php echo JHtml::_('image', 'mod_languages/' . $this->form->getValue('image') . '.gif', $this->form->getValue('image'), array('title' => $this->form->getValue('image')), true); ?> </span> </div> </div> <?php if ($this->canDo->get('core.edit.state')) : ?> <?php echo $this->form->renderField('published'); ?> <?php endif; ?> <?php echo $this->form->renderField('access'); ?> <?php echo $this->form->renderField('description'); ?> <?php echo $this->form->renderField('lang_id'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'metadata', JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS', true)); ?> <?php echo $this->form->renderFieldset('metadata'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'site_name', JText::_('COM_LANGUAGES_FIELDSET_SITE_NAME_LABEL', true)); ?> <?php echo $this->form->renderFieldset('site_name'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> </fieldset> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\m��HH5components/com_languages/views/language/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * HTML View class for the Languages component. * * @since 1.5 */ class LanguagesViewLanguage extends JViewLegacy { public $item; public $form; public $state; /** * Display the view. * * @param string $tpl The name of the template file to parse. * * @return void */ public function display($tpl = null) { $this->item = $this->get('Item'); $this->form = $this->get('Form'); $this->state = $this->get('State'); $this->canDo = JHelperContent::getActions('com_languages'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { require_once JPATH_COMPONENT . '/helpers/languages.php'; JFactory::getApplication()->input->set('hidemainmenu', 1); $isNew = empty($this->item->lang_id); $canDo = $this->canDo; JToolbarHelper::title( JText::_($isNew ? 'COM_LANGUAGES_VIEW_LANGUAGE_EDIT_NEW_TITLE' : 'COM_LANGUAGES_VIEW_LANGUAGE_EDIT_EDIT_TITLE'), 'comments-2 langmanager' ); if (($isNew && $canDo->get('core.create')) || (!$isNew && $canDo->get('core.edit'))) { JToolbarHelper::apply('language.apply'); JToolbarHelper::save('language.save'); } // If an existing item, can save to a copy only if we have create rights. if ($canDo->get('core.create')) { JToolbarHelper::save2new('language.save2new'); } if ($isNew) { JToolbarHelper::cancel('language.cancel'); } else { JToolbarHelper::cancel('language.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_EXTENSIONS_LANGUAGE_MANAGER_EDIT'); $this->sidebar = JHtmlSidebar::render(); } } PKb��\[�4���.components/com_languages/helpers/languages.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Languages component helper. * * @since 1.6 */ class LanguagesHelper { /** * Configure the Linkbar. * * @param string $vName The name of the active view. * @param int $client The client id of the active view. Maybe be 0 or 1. * * @return void */ public static function addSubmenu($vName, $client = 0) { JHtmlSidebar::addEntry( JText::_('COM_LANGUAGES_SUBMENU_INSTALLED_SITE'), 'index.php?option=com_languages&view=installed&client=0', $vName == 'installed' && $client === 0 ); JHtmlSidebar::addEntry( JText::_('COM_LANGUAGES_SUBMENU_INSTALLED_ADMINISTRATOR'), 'index.php?option=com_languages&view=installed&client=1', $vName == 'installed' && $client === 1 ); JHtmlSidebar::addEntry( JText::_('COM_LANGUAGES_SUBMENU_CONTENT'), 'index.php?option=com_languages&view=languages', $vName == 'languages' ); JHtmlSidebar::addEntry( JText::_('COM_LANGUAGES_SUBMENU_OVERRIDES'), 'index.php?option=com_languages&view=overrides', $vName == 'overrides' ); } /** * Gets a list of the actions that can be performed. * * @return JObject * * @deprecated 3.2 Use JHelperContent::getActions() instead. */ public static function getActions() { // Log usage of deprecated function. JLog::add(__METHOD__ . '() is deprecated, use JHelperContent::getActions() with new arguments order instead.', JLog::WARNING, 'deprecated'); // Get list of actions. $result = JHelperContent::getActions('com_languages'); return $result; } /** * Method for parsing ini files. * * @param string $filename Path and name of the ini file to parse. * * @return array Array of strings found in the file, the array indices will be the keys. On failure an empty array will be returned. * * @since 2.5 */ public static function parseFile($filename) { if (!is_file($filename)) { return array(); } $contents = file_get_contents($filename); $contents = str_replace('_QQ_', '"\""', $contents); $strings = @parse_ini_string($contents); if ($strings === false) { return array(); } return $strings; } /** * Filter method for language keys. * This method will be called by JForm while filtering the form data. * * @param string $value The language key to filter. * * @return string The filtered language key. * * @since 2.5 */ public static function filterKey($value) { $filter = JFilterInput::getInstance(null, null, 1, 1); return strtoupper($filter->clean($value, 'cmd')); } /** * Filter method for language strings. * This method will be called by JForm while filtering the form data. * * @param string $value The language string to filter. * * @return string The filtered language string. * * @since 2.5 */ public static function filterText($value) { $filter = JFilterInput::getInstance(null, null, 1, 1); return $filter->clean($value); } } PKb��\���[3components/com_languages/helpers/html/languages.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Utility class working with languages * * @since 1.6 */ abstract class JHtmlLanguages { /** * Method to generate an information about the default language. * * @param boolean $published True if the language is the default. * * @return string HTML code. */ public static function published($published) { if (!$published) { return ' '; } return JHtml::_('image', 'menu/icon-16-default.png', JText::_('COM_LANGUAGES_HEADING_DEFAULT'), null, true); } /** * Method to generate an input radio button. * * @param integer $rowNum The row number. * @param string $language Language tag. * * @return string HTML code. */ public static function id($rowNum, $language) { return '<input' . ' type="radio"' . ' id="cb' . $rowNum . '"' . ' name="cid"' . ' value="' . htmlspecialchars($language) . '"' . ' onclick="Joomla.isChecked(this.checked);"' . ' title="' . ($rowNum + 1) . '"' . '/>'; } /** * Method to generate an array of clients. * * @return array of client objects. */ public static function clients() { return array( JHtml::_('select.option', 0, JText::_('JSITE')), JHtml::_('select.option', 1, JText::_('JADMINISTRATOR')) ); } /** * Returns an array of published state filter options. * * @return string The HTML code for the select tag. * * @since 1.6 */ public static function publishedOptions() { // Build the active state filter options. $options = array(); $options[] = JHtml::_('select.option', '1', 'JPUBLISHED'); $options[] = JHtml::_('select.option', '0', 'JUNPUBLISHED'); $options[] = JHtml::_('select.option', '-2', 'JTRASHED'); $options[] = JHtml::_('select.option', '*', 'JALL'); return $options; } } PKb��\��E�i i 1components/com_languages/helpers/jsonresponse.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * JSON Response class. * * @since 2.5 * @deprecated 4.0 */ class JJsonResponse { /** * Determines whether the request was successful. * * @var boolean * @since 2.5 */ public $success = true; /** * Determines whether the request wasn't successful. * This is always the negation of $this->success, * so you can use both flags equivalently. * * @var boolean * @since 2.5 */ public $error = false; /** * The main response message. * * @var string * @since 2.5 */ public $message = null; /** * Array of messages gathered in the JApplication object. * * @var array * @since 2.5 */ public $messages = null; /** * The response data. * * @var mixed * @since 2.5 */ public $data = null; /** * Constructor * * @param mixed $response The Response data. * @param string $message The main response message. * @param boolean $error True, if the success flag shall be set to false, defaults to false. * * @since 2.5 * @deprecated 4.0 Use JResponseJson instead. */ public function __construct($response = null, $message = null, $error = false) { JLog::add('Class JJsonResponse is deprecated. Use class JResponseJson instead.', JLog::WARNING, 'deprecated'); $this->message = $message; // Get the message queue. $messages = JFactory::getApplication()->getMessageQueue(); // Build the sorted messages list. if (is_array($messages) && count($messages)) { foreach ($messages as $message) { if (isset($message['type']) && isset($message['message'])) { $lists[$message['type']][] = $message['message']; } } } // If messages exist add them to the output. if (isset($lists) && is_array($lists)) { $this->messages = $lists; } // Check if we are dealing with an error. if ($response instanceof Exception) { // Prepare the error response. $this->success = false; $this->error = true; $this->message = $response->getMessage(); } else { // Prepare the response data. $this->success = !$error; $this->error = $error; $this->data = $response; } } /** * Magic toString method for sending the response in JSON format. * * @return string The response in JSON format. * * @since 2.5 */ public function __toString() { return json_encode($this); } } PKb��\�? ɫ�4components/com_languages/helpers/multilangstatus.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Multilang status helper. * * @since 1.7.1 */ abstract class MultilangstatusHelper { /** * Method to get the number of published home pages. * * @return integer */ public static function getHomes() { // Check for multiple Home pages. $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('COUNT(*)') ->from($db->quoteName('#__menu')) ->where('home = 1') ->where('published = 1') ->where('client_id = 0'); $db->setQuery($query); return $db->loadResult(); } /** * Method to get the number of published language switcher modules. * * @return integer. */ public static function getLangswitchers() { // Check if switcher is published. $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('COUNT(*)') ->from($db->quoteName('#__modules')) ->where('module = ' . $db->quote('mod_languages')) ->where('published = 1') ->where('client_id = 0'); $db->setQuery($query); return $db->loadResult(); } /** * Method to return a list of published content languages. * * @return array of language objects. */ public static function getContentlangs() { // Check for published Content Languages. $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('a.lang_code AS lang_code') ->select('a.published AS published') ->from('#__languages AS a'); $db->setQuery($query); return $db->loadObjectList(); } /** * Method to return a list of published site languages. * * @return array of language extension objects. */ public static function getSitelangs() { // Check for published Site Languages. $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('a.element AS element') ->from('#__extensions AS a') ->where('a.type = ' . $db->quote('language')) ->where('a.client_id = 0') ->where('a.enabled = 1'); $db->setQuery($query); return $db->loadObjectList('element'); } /** * Method to return a list of language home page menu items. * * @return array of menu objects. */ public static function getHomepages() { // Check for Home pages languages. $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('language') ->select('id') ->from($db->quoteName('#__menu')) ->where('home = 1') ->where('published = 1') ->where('client_id = 0'); $db->setQuery($query); return $db->loadObjectList('language'); } /** * Method to return combined language status. * * @return array of language objects. */ public static function getStatus() { // Check for combined status. $db = JFactory::getDbo(); $query = $db->getQuery(true); // Select all fields from the languages table. $query->select('a.*', 'l.home') ->select('a.published AS published') ->select('a.lang_code AS lang_code') ->from('#__languages AS a'); // Select the language home pages. $query->select('l.home AS home') ->select('l.language AS home_language') ->join('LEFT', '#__menu AS l ON l.language = a.lang_code AND l.home=1 AND l.published=1 AND l.language <> \'*\'') ->select('e.enabled AS enabled') ->select('e.element AS element') ->join('LEFT', '#__extensions AS e ON e.element = a.lang_code') ->where('e.client_id = 0') ->where('e.enabled = 1') ->where('e.state = 0'); $db->setQuery($query); return $db->loadObjectList(); } /** * Method to return a list of contact objects. * * @return array of contact objects. */ public static function getContacts() { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('u.name, count(cd.language) as counted, MAX(cd.language=' . $db->quote('*') . ') as all_languages') ->from('#__users AS u') ->join('LEFT', '#__contact_details AS cd ON cd.user_id=u.id') ->join('LEFT', '#__languages as l on cd.language=l.lang_code') ->where('EXISTS (SELECT * from #__content as c where c.created_by=u.id)') ->where('(l.published=1 or cd.language=' . $db->quote('*') . ')') ->where('cd.published=1') ->group('u.id') ->having('(counted !=' . count(JLanguageHelper::getLanguages()) . ' OR all_languages=1)') ->having('(counted !=1 OR all_languages=0)'); $db->setQuery($query); return $db->loadObjectList(); } } PKb��\R ��-components/com_languages/models/languages.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Languages Model Class * * @since 1.6 */ class LanguagesModelLanguages extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'lang_id', 'a.lang_id', 'lang_code', 'a.lang_code', 'title', 'a.title', 'title_native', 'a.title_native', 'sef', 'a.sef', 'image', 'a.image', 'published', 'a.published', 'ordering', 'a.ordering', 'access', 'a.access', 'access_level', 'home', 'l.home', ); } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.search', 'filter_search'); $this->setState('filter.search', $search); $accessId = $this->getUserStateFromRequest($this->context . '.access', 'filter_access', null, 'int'); $this->setState('filter.access', $accessId); $published = $this->getUserStateFromRequest($this->context . '.published', 'filter_published', ''); $this->setState('filter.published', $published); // Load the parameters. $params = JComponentHelper::getParams('com_languages'); $this->setState('params', $params); // List state information. parent::populateState('a.ordering', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. * * @since 1.6 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.access'); $id .= ':' . $this->getState('filter.published'); return parent::getStoreId($id); } /** * Method to build an SQL query to load the list data. * * @return string An SQL query * * @since 1.6 */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select all fields from the languages table. $query->select($this->getState('list.select', 'a.*', 'l.home')) ->from($db->quoteName('#__languages') . ' AS a'); // Join over the asset groups. $query->select('ag.title AS access_level') ->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); // Select the language home pages. $query->select('l.home AS home') ->join('LEFT', $db->quoteName('#__menu') . ' AS l ON l.language = a.lang_code AND l.home=1 AND l.language <> ' . $db->quote('*')); // Filter on the published state. $published = $this->getState('filter.published'); if (is_numeric($published)) { $query->where('a.published = ' . (int) $published); } elseif ($published === '') { $query->where('(a.published IN (0, 1))'); } // Filter by search in title. $search = $this->getState('filter.search'); if (!empty($search)) { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('(a.title LIKE ' . $search . ')'); } // Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } // Add the list ordering clause. $query->order($db->escape($this->getState('list.ordering', 'a.ordering')) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } /** * Set the published language(s). * * @param array $cid An array of language IDs. * @param integer $value The value of the published state. * * @return boolean True on success, false otherwise. * * @since 1.6 */ public function setPublished($cid, $value = 0) { return JTable::getInstance('Language')->publish($cid, $value); } /** * Method to delete records. * * @param array $pks An array of item primary keys. * * @return boolean Returns true on success, false on failure. * * @since 1.6 */ public function delete($pks) { // Sanitize the array. $pks = (array) $pks; // Get a row instance. $table = JTable::getInstance('Language'); // Iterate the items to delete each one. foreach ($pks as $itemId) { if (!$table->delete((int) $itemId)) { $this->setError($table->getError()); return false; } } // Clean the cache. $this->cleanCache(); return true; } /** * Custom clean cache method, 2 places for 2 clients. * * @param string $group Optional cache group name. * @param integer $client_id Application client id. * * @return void * * @since 1.6 */ protected function cleanCache($group = null, $client_id = 0) { parent::cleanCache('_system'); parent::cleanCache('com_languages'); } } PKb��\i�>^^-components/com_languages/models/installed.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Languages Component Languages Model * * @since 1.6 */ class LanguagesModelInstalled extends JModelList { /** * @var object client object */ protected $client = null; /** * @var object user object */ protected $user = null; /** * @var boolean|JExeption True, if FTP settings should be shown, or an exeption */ protected $ftp = null; /** * @var string option name */ protected $option = null; /** * @var array languages description */ protected $data = null; /** * @var int total number pf languages */ protected $total = null; /** * @var int total number pf languages installed */ protected $langlist = null; /** * @var string language path */ protected $path = null; /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication('administrator'); // Load the filter state. $clientId = $app->input->getInt('client'); $this->setState('filter.client_id', $clientId); // Load the parameters. $params = JComponentHelper::getParams('com_languages'); $this->setState('params', $params); // List state information. parent::populateState('a.name', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. * * @since 1.6 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.client_id'); return parent::getStoreId($id); } /** * Method to get the client object. * * @return object * * @since 1.6 */ public function getClient() { if (is_null($this->client)) { $this->client = JApplicationHelper::getClientInfo($this->getState('filter.client_id', 0)); } return $this->client; } /** * Method to get the ftp credentials. * * @return object * * @since 1.6 */ public function getFtp() { if (is_null($this->ftp)) { $this->ftp = JClientHelper::setCredentialsFromRequest('ftp'); } return $this->ftp; } /** * Method to get the option. * * @return object * * @since 1.6 */ public function getOption() { $option = $this->getState('option'); return $option; } /** * Method to get Languages item data. * * @return array * * @since 1.6 */ public function getData() { if (is_null($this->data)) { // Get information. $path = $this->getPath(); $client = $this->getClient(); $langlist = $this->getLanguageList(); // Compute all the languages. $data = array (); foreach ($langlist as $lang) { $file = $path . '/' . $lang . '/' . $lang . '.xml'; $info = JApplicationHelper::parseXMLLangMetaFile($file); $row = new JObject; $row->language = $lang; if (!is_array($info)) { continue; } foreach ($info as $key => $value) { $row->$key = $value; } // Fix wrongly set parentheses in RTL languages if (JFactory::getLanguage()->isRtl()) { $row->name = html_entity_decode($row->name . '‎', ENT_QUOTES, 'UTF-8'); } // If current than set published. $params = JComponentHelper::getParams('com_languages'); if ($params->get($client->name, 'en-GB') == $row->language) { $row->published = 1; } else { $row->published = 0; } $row->checked_out = 0; $data[] = $row; } usort($data, array($this, 'compareLanguages')); // Prepare data. $limit = $this->getState('list.limit'); $start = $this->getState('list.start'); $total = $this->getTotal(); if ($limit == 0) { $start = 0; $end = $total; } else { if ($start > $total) { $start = $total - $total % $limit; } $end = $start + $limit; if ($end > $total) { $end = $total; } } // Compute the displayed languages. $this->data = array(); for ($i = $start; $i < $end; $i++) { $this->data[] = & $data[$i]; } } return $this->data; } /** * Method to get installed languages data. * * @return string An SQL query. * * @since 1.6 */ protected function getLanguageList() { // Create a new db object. $db = $this->getDbo(); $query = $db->getQuery(true); $client = $this->getState('filter.client_id'); $type = "language"; // Select field element from the extensions table. $query->select($this->getState('list.select', 'a.element')) ->from('#__extensions AS a'); $type = $db->quote($type); $query->where('(a.type = ' . $type . ')') ->where('state = 0') ->where('enabled = 1') ->where('client_id=' . (int) $client); // For client_id = 1 do we need to check language table also? $db->setQuery($query); $this->langlist = $db->loadColumn(); return $this->langlist; } /** * Method to get the total number of Languages items. * * @return integer * * @since 1.6 */ public function getTotal() { if (is_null($this->total)) { $langlist = $this->getLanguageList(); $this->total = count($langlist); } return $this->total; } /** * Method to set the default language. * * @param integer $cid Id of the language to publish. * * @return boolean * * @since 1.6 */ public function publish($cid) { if ($cid) { $client = $this->getClient(); $params = JComponentHelper::getParams('com_languages'); $params->set($client->name, $cid); $table = JTable::getInstance('extension'); $id = $table->find(array('element' => 'com_languages')); // Load. if (!$table->load($id)) { $this->setError($table->getError()); return false; } $table->params = (string) $params; // Pre-save checks. if (!$table->check()) { $this->setError($table->getError()); return false; } // Save the changes. if (!$table->store()) { $this->setError($table->getError()); return false; } } else { $this->setError(JText::_('COM_LANGUAGES_ERR_NO_LANGUAGE_SELECTED')); return false; } // Clean the cache of com_languages and component cache. $this->cleanCache(); $this->cleanCache('_system', 0); $this->cleanCache('_system', 1); return true; } /** * Method to get the folders. * * @return array Languages folders. * * @since 1.6 */ protected function getFolders() { if (is_null($this->folders)) { $path = $this->getPath(); jimport('joomla.filesystem.folder'); $this->folders = JFolder::folders($path, '.', false, false, array('.svn', 'CVS', '.DS_Store', '__MACOSX', 'pdf_fonts', 'overrides')); } return $this->folders; } /** * Method to get the path. * * @return string The path to the languages folders. * * @since 1.6 */ protected function getPath() { if (is_null($this->path)) { $client = $this->getClient(); $this->path = JLanguage::getLanguagePath($client->path); } return $this->path; } /** * Method to compare two languages in order to sort them. * * @param object $lang1 The first language. * @param object $lang2 The second language. * * @return integer * * @since 1.6 */ protected function compareLanguages($lang1, $lang2) { return strcmp($lang1->name, $lang2->name); } } PKb��\��Ӷ�2components/com_languages/models/forms/override.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field name="key" type="text" label="COM_LANGUAGES_OVERRIDE_FIELD_KEY_LABEL" description="COM_LANGUAGES_OVERRIDE_FIELD_KEY_DESC" size="60" required="true" filter="LanguagesHelper::filterKey" /> <field name="override" type="textarea" label="COM_LANGUAGES_OVERRIDE_FIELD_OVERRIDE_LABEL" description="COM_LANGUAGES_OVERRIDE_FIELD_OVERRIDE_DESC" cols="50" rows="5" filter="LanguagesHelper::filterText" /> <field name="both" type="checkbox" label="COM_LANGUAGES_OVERRIDE_FIELD_BOTH_LABEL" description="COM_LANGUAGES_OVERRIDE_FIELD_BOTH_DESC" value="true" filter="boolean" /> <field name="searchstring" type="text" label="COM_LANGUAGES_OVERRIDE_FIELD_SEARCHSTRING_LABEL" description="COM_LANGUAGES_OVERRIDE_FIELD_SEARCHSTRING_DESC" size="50" /> <field name="searchtype" type="list" label="COM_LANGUAGES_OVERRIDE_FIELD_SEARCHTYPE_LABEL" description="COM_LANGUAGES_OVERRIDE_FIELD_SEARCHTYPE_DESC" default="value"> <option value="constant">COM_LANGUAGES_OVERRIDE_FIELD_SEARCHTYPE_CONSTANT</option> <option value="value">COM_LANGUAGES_OVERRIDE_FIELD_SEARCHTYPE_TEXT</option> </field> <field name="language" type="text" label="COM_LANGUAGES_OVERRIDE_FIELD_LANGUAGE_LABEL" description="COM_LANGUAGES_OVERRIDE_FIELD_LANGUAGE_DESC" filter="unset" readonly="true" class="readonly" size="50" /> <field name="client" type="text" label="COM_LANGUAGES_OVERRIDE_FIELD_CLIENT_LABEL" description="COM_LANGUAGES_OVERRIDE_FIELD_CLIENT_DESC" filter="unset" readonly="true" class="readonly" size="50" /> <field name="file" type="text" label="COM_LANGUAGES_OVERRIDE_FIELD_FILE_LABEL" description="COM_LANGUAGES_OVERRIDE_FIELD_FILE_DESC" filter="unset" readonly="true" class="readonly" size="80" /> <field name="id" type="hidden" /> </fieldset> </form> PKb��\T�Il� � 2components/com_languages/models/forms/language.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field name="lang_id" type="text" class="readonly" description="JGLOBAL_FIELD_ID_DESC" label="JGLOBAL_FIELD_ID_LABEL" default="0" readonly="true" /> <field name="lang_code" type="text" description="COM_LANGUAGES_FIELD_LANG_TAG_DESC" label="COM_LANGUAGES_FIELD_LANG_TAG_LABEL" maxlength="7" required="true" size="10" /> <field name="title" type="text" description="COM_LANGUAGES_FIELD_TITLE_DESC" label="JGLOBAL_TITLE" maxlength="50" required="true" size="40" /> <field name="title_native" type="text" description="COM_LANGUAGES_FIELD_TITLE_NATIVE_DESC" label="COM_LANGUAGES_FIELD_TITLE_NATIVE_LABEL" maxlength="50" required="true" size="40" /> <field name="sef" type="text" description="COM_LANGUAGES_FIELD_LANG_CODE_DESC" label="COM_LANGUAGES_FIELD_LANG_CODE_LABEL" maxlength="50" required="true" size="10" /> <field name="image" type="filelist" description="COM_LANGUAGES_FIELD_IMAGE_DESC" label="COM_LANGUAGES_FIELD_IMAGE_LABEL" stripext="1" directory="media/mod_languages/images/" hide_none="1" hide_default="1" required="true" filter="\.gif$" size="10" /> <field name="description" type="textarea" cols="80" description="COM_LANGUAGES_FIELD_DESCRIPTION_DESC" label="JGLOBAL_DESCRIPTION" rows="5" /> <field name="published" type="list" default="1" description="COM_LANGUAGES_FIELD_PUBLISHED_DESC" label="JSTATUS" size="1" > <option value="1">JPUBLISHED</option> <option value="0">JUNPUBLISHED</option> <option value="-2">JTRASHED</option> </field> <field name="access" type="accesslevel" size="1" label="JFIELD_ACCESS_LABEL" description="JFIELD_ACCESS_DESC" /> </fieldset> <fieldset name="metadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS"> <field name="metakey" type="textarea" description="JFIELD_META_KEYWORDS_DESC" label="JFIELD_META_KEYWORDS_LABEL" rows="3" cols="30" /> <field name="metadesc" type="textarea" description="JFIELD_META_DESCRIPTION_DESC" label="JFIELD_META_DESCRIPTION_LABEL" rows="3" cols="30" /> </fieldset> <fieldset name="site_name" label="COM_LANGUAGES_FIELDSET_SITE_NAME_LABEL"> <field name="sitename" type="text" description="COM_LANGUAGES_FIELD_SITE_NAME_DESC" label="COM_LANGUAGES_FIELD_SITE_NAME_LABEL" filter="string" size="50" /> </fieldset> </form> PKb��\(h�oo-components/com_languages/models/overrides.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * Languages Overrides Model * * @since 2.5 */ class LanguagesModelOverrides extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @since 2.5 */ public function __construct($config = array()) { parent::__construct($config); $this->filter_fields = array('key', 'text'); } /** * Retrieves the overrides data * * @param boolean $all True if all overrides shall be returned without considering pagination, defaults to false * * @return array Array of objects containing the overrides of the override.ini file * * @since 2.5 */ public function getOverrides($all = false) { // Get a storage key. $store = $this->getStoreId(); // Try to load the data from internal storage. if (!empty($this->cache[$store])) { return $this->cache[$store]; } $client = in_array($this->state->get('filter.client'), array(0, 'site')) ? 'SITE' : 'ADMINISTRATOR'; // Parse the override.ini file in order to get the keys and strings. $filename = constant('JPATH_' . $client) . '/language/overrides/' . $this->getState('filter.language') . '.override.ini'; $strings = LanguagesHelper::parseFile($filename); // Delete the override.ini file if empty. if (file_exists($filename) && empty($strings)) { JFile::delete($filename); } // Filter the loaded strings according to the search box. $search = $this->getState('filter.search'); if ($search != '') { $search = preg_quote($search, '~'); $matchvals = preg_grep('~' . $search . '~i', $strings); $matchkeys = array_intersect_key($strings, array_flip(preg_grep('~' . $search . '~i', array_keys($strings)))); $strings = array_merge($matchvals, $matchkeys); } // Consider the ordering if ($this->getState('list.ordering') == 'text') { if (strtoupper($this->getState('list.direction')) == 'DESC') { arsort($strings); } else { asort($strings); } } else { if (strtoupper($this->getState('list.direction')) == 'DESC') { krsort($strings); } else { ksort($strings); } } // Consider the pagination. if (!$all && $this->getState('list.limit') && $this->getTotal() > $this->getState('list.limit')) { $strings = array_slice($strings, $this->getStart(), $this->getState('list.limit'), true); } // Add the items to the internal cache. $this->cache[$store] = $strings; return $this->cache[$store]; } /** * Method to get the total number of overrides. * * @return int The total number of overrides. * * @since 2.5 */ public function getTotal() { // Get a storage key. $store = $this->getStoreId('getTotal'); // Try to load the data from internal storage if (!empty($this->cache[$store])) { return $this->cache[$store]; } // Add the total to the internal cache. $this->cache[$store] = count($this->getOverrides(true)); return $this->cache[$store]; } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 2.5 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication(); // Use default language of frontend for default filter. $default = JComponentHelper::getParams('com_languages')->get('site') . '0'; $old_language_client = $app->getUserState('com_languages.overrides.filter.language_client', ''); $language_client = $this->getUserStateFromRequest('com_languages.overrides.filter.language_client', 'filter_language_client', $default, 'cmd'); if ($old_language_client != $language_client) { $client = substr($language_client, -1); $language = substr($language_client, 0, -1); } else { $client = $app->getUserState('com_languages.overrides.filter.client', 0); $language = $app->getUserState('com_languages.overrides.filter.language', 'en-GB'); } // Sets the search filter. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $this->setState('filter.language_client', $language . $client); $this->setState('filter.client', $client ? 'administrator' : 'site'); $this->setState('filter.language', $language); // Add filters to the session because they won't be stored there by 'getUserStateFromRequest' if they aren't in the current request. $app->setUserState('com_languages.overrides.filter.client', $client); $app->setUserState('com_languages.overrides.filter.language', $language); // List state information parent::populateState('key', 'asc'); } /** * Method to get all found languages of frontend and backend. * * The resulting array has entries of the following style: * <Language Tag>0|1 => <Language Name> - <Client Name> * * @return array Sorted associative array of languages. * * @since 2.5 */ public function getLanguages() { // Try to load the data from internal storage. if (!empty($this->cache['languages'])) { return $this->cache['languages']; } // Get all languages of frontend and backend. $languages = array(); $site_languages = JLanguage::getKnownLanguages(JPATH_SITE); $admin_languages = JLanguage::getKnownLanguages(JPATH_ADMINISTRATOR); // Create a single array of them. foreach ($site_languages as $tag => $language) { $languages[$tag . '0'] = JText::sprintf('COM_LANGUAGES_VIEW_OVERRIDES_LANGUAGES_BOX_ITEM', $language['name'], JText::_('JSITE')); } foreach ($admin_languages as $tag => $language) { $languages[$tag . '1'] = JText::sprintf('COM_LANGUAGES_VIEW_OVERRIDES_LANGUAGES_BOX_ITEM', $language['name'], JText::_('JADMINISTRATOR')); } // Sort it by language tag and by client after that. ksort($languages); // Add the languages to the internal cache. $this->cache['languages'] = $languages; return $this->cache['languages']; } /** * Method to delete one or more overrides. * * @param array $cids Array of keys to delete. * * @return integer Number of successfully deleted overrides, boolean false if an error occured. * * @since 2.5 */ public function delete($cids) { // Check permissions first. if (!JFactory::getUser()->authorise('core.delete', 'com_languages')) { $this->setError(JText::_('JLIB_APPLICATION_ERROR_DELETE_NOT_PERMITTED')); return false; } jimport('joomla.filesystem.file'); require_once JPATH_COMPONENT . '/helpers/languages.php'; $filterclient = JFactory::getApplication()->getUserState('com_languages.overrides.filter.client'); $client = $filterclient == 0 ? 'SITE' : 'ADMINISTRATOR'; // Parse the override.ini file in oder to get the keys and strings. $filename = constant('JPATH_' . $client) . '/language/overrides/' . $this->getState('filter.language') . '.override.ini'; $strings = LanguagesHelper::parseFile($filename); // Unset strings that shall be deleted foreach ($cids as $key) { if (isset($strings[$key])) { unset($strings[$key]); } } foreach ($strings as $key => $string) { $strings[$key] = str_replace('"', '"_QQ_"', $string); } // Write override.ini file with the left strings. $registry = new Registry; $registry->loadObject($strings); $reg = $registry->toString('INI'); $filename = constant('JPATH_' . $client) . '/language/overrides/' . $this->getState('filter.language') . '.override.ini'; if (!JFile::write($filename, $reg)) { return false; } $this->cleanCache(); return count($cids); } } PKb��\r ��^^,components/com_languages/models/language.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Languages Component Language Model * * @since 1.5 */ class LanguagesModelLanguage extends JModelAdmin { /** * Constructor. * * @param array $config An optional associative array of configuration settings. */ public function __construct($config = array()) { $config = array_merge( array( 'event_after_save' => 'onExtensionAfterSave', 'event_before_save' => 'onExtensionBeforeSave', 'events_map' => array( 'save' => 'extension' ) ), $config ); parent::__construct($config); } /** * Override to get the table. * * @param string $name Name of the table. * @param string $prefix Table name prefix. * @param array $options Array of options. * * @return JTable * * @since 1.6 */ public function getTable($name = '', $prefix = '', $options = array()) { return JTable::getInstance('Language'); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @return void * * @since 1.6 */ protected function populateState() { $app = JFactory::getApplication('administrator'); $params = JComponentHelper::getParams('com_languages'); // Load the User state. $langId = $app->input->getInt('lang_id'); $this->setState('language.id', $langId); // Load the parameters. $this->setState('params', $params); } /** * Method to get a member item. * * @param integer $langId The id of the member to get. * * @return mixed User data object on success, false on failure. * * @since 1.0 */ public function getItem($langId = null) { $langId = (!empty($langId)) ? $langId : (int) $this->getState('language.id'); // Get a member row instance. $table = $this->getTable(); // Attempt to load the row. $return = $table->load($langId); // Check for a table object error. if ($return === false && $table->getError()) { $this->setError($table->getError()); return false; } // Set a valid accesslevel in case '0' is stored due to a bug in the installation SQL (was fixed with PR 2714). if ($table->access == '0') { $table->access = (int) JFactory::getConfig()->get('access'); } $properties = $table->getProperties(1); $value = JArrayHelper::toObject($properties, 'JObject'); return $value; } /** * Method to get the group form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return mixed A JForm object on success, false on failure. * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_languages.language', 'language', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_languages.edit.language.data', array()); if (empty($data)) { $data = $this->getItem(); } $this->preprocessData('com_languages.language', $data); return $data; } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 1.6 */ public function save($data) { $langId = (!empty($data['lang_id'])) ? $data['lang_id'] : (int) $this->getState('language.id'); $isNew = true; $dispatcher = JEventDispatcher::getInstance(); JPluginHelper::importPlugin($this->events_map['save']); $table = $this->getTable(); $context = $this->option . '.' . $this->name; // Load the row if saving an existing item. if ($langId > 0) { $table->load($langId); $isNew = false; } // Prevent white spaces, including East Asian double bytes. $spaces = array('/\xE3\x80\x80/', ' '); $data['lang_code'] = str_replace($spaces, '', $data['lang_code']); // Prevent saving an incorrect language tag if (!preg_match('#\b([a-z]{2,3})[-]([A-Z]{2})\b#', $data['lang_code'])) { $this->setError(JText::_('COM_LANGUAGES_ERROR_LANG_TAG')); return false; } $data['sef'] = str_replace($spaces, '', $data['sef']); $data['sef'] = JApplicationHelper::stringURLSafe($data['sef']); // Bind the data. if (!$table->bind($data)) { $this->setError($table->getError()); return false; } // Check the data. if (!$table->check()) { $this->setError($table->getError()); return false; } // Trigger the before save event. $result = $dispatcher->trigger($this->event_before_save, array($context, &$table, $isNew)); // Check the event responses. if (in_array(false, $result, true)) { $this->setError($table->getError()); return false; } // Store the data. if (!$table->store()) { $this->setError($table->getError()); return false; } // Trigger the after save event. $dispatcher->trigger($this->event_after_save, array($context, &$table, $isNew)); $this->setState('language.id', $table->lang_id); // Clean the cache. $this->cleanCache(); return true; } /** * Custom clean cache method. * * @param string $group Optional cache group name. * @param integer $client_id Application client id. * * @return void * * @since 1.6 */ protected function cleanCache($group = null, $client_id = 0) { parent::cleanCache('_system'); parent::cleanCache('com_languages'); } } PKb��\�;tK��,components/com_languages/models/override.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * Languages Override Model * * @since 2.5 */ class LanguagesModelOverride extends JModelAdmin { /** * Method to get the record form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return mixed A JForm object on success, false on failure. * * @since 2.5 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_languages.override', 'override', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } $client = $this->getState('filter.client', 'site'); $language = $this->getState('filter.language', 'en-GB'); $langName = JLanguage::getInstance($language)->getName(); if (!$langName) { // If a language only exists in frontend, it's meta data cannot be // loaded in backend at the moment, so fall back to the language tag. $langName = $language; } $form->setValue('client', null, JText::_('COM_LANGUAGES_VIEW_OVERRIDE_CLIENT_' . strtoupper($client))); $form->setValue('language', null, JText::sprintf('COM_LANGUAGES_VIEW_OVERRIDE_LANGUAGE', $langName, $language)); $form->setValue('file', null, JPath::clean(constant('JPATH_' . strtoupper($client)) . '/language/overrides/' . $language . '.override.ini')); return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 2.5 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_languages.edit.override.data', array()); if (empty($data)) { $data = $this->getItem(); } $this->preprocessData('com_languages.override', $data); return $data; } /** * Method to get a single record. * * @param string $pk The key name. * * @return mixed Object on success, false otherwise. * * @since 2.5 */ public function getItem($pk = null) { require_once JPATH_COMPONENT . '/helpers/languages.php'; $input = JFactory::getApplication()->input; $pk = (!empty($pk)) ? $pk : $input->get('id'); $filename = constant('JPATH_' . strtoupper($this->getState('filter.client'))) . '/language/overrides/' . $this->getState('filter.language', 'en-GB') . '.override.ini'; $strings = LanguagesHelper::parseFile($filename); $result = new stdClass; $result->key = ''; $result->override = ''; if (isset($strings[$pk])) { $result->key = $pk; $result->override = $strings[$pk]; } return $result; } /** * Method to save the form data. * * @param array $data The form data. * @param boolean $opposite_client Indicates whether the override should not be created for the current client. * * @return boolean True on success, false otherwise. * * @since 2.5 */ public function save($data, $opposite_client = false) { $app = JFactory::getApplication(); require_once JPATH_COMPONENT . '/helpers/languages.php'; jimport('joomla.filesystem.file'); $client = $app->getUserState('com_languages.overrides.filter.client', 0); $language = $app->getUserState('com_languages.overrides.filter.language', 'en-GB'); // If the override should be created for both. if ($opposite_client) { $client = 1 - $client; } // Return false if the constant is a reserved word, i.e. YES, NO, NULL, FALSE, ON, OFF, NONE, TRUE $blacklist = array('YES', 'NO', 'NULL', 'FALSE', 'ON', 'OFF', 'NONE', 'TRUE'); if (in_array($data['key'], $blacklist)) { $this->setError(JText::_('COM_LANGUAGES_OVERRIDE_ERROR_RESERVED_WORDS')); return false; } $client = $client ? 'administrator' : 'site'; // Parse the override.ini file in oder to get the keys and strings. $filename = constant('JPATH_' . strtoupper($client)) . '/language/overrides/' . $language . '.override.ini'; $strings = LanguagesHelper::parseFile($filename); if (isset($strings[$data['id']])) { // If an existent string was edited check whether // the name of the constant is still the same. if ($data['key'] == $data['id']) { // If yes, simply override it. $strings[$data['key']] = $data['override']; } else { // If no, delete the old string and prepend the new one. unset($strings[$data['id']]); $strings = array($data['key'] => $data['override']) + $strings; } } else { // If it is a new override simply prepend it. $strings = array($data['key'] => $data['override']) + $strings; } foreach ($strings as $key => $string) { $strings[$key] = str_replace('"', '"_QQ_"', $string); } // Write override.ini file with the strings. $registry = new Registry; $registry->loadObject($strings); $reg = $registry->toString('INI'); if (!JFile::write($filename, $reg)) { return false; } // If the override should be stored for both clients save // it also for the other one and prevent endless recursion. if (isset($data['both']) && $data['both'] && !$opposite_client) { return $this->save($data, true); } return true; } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @return void * * @since 2.5 */ protected function populateState() { $app = JFactory::getApplication(); $client = $app->getUserStateFromRequest('com_languages.overrides.filter.client', 'filter_client', 0, 'int') ? 'administrator' : 'site'; $this->setState('filter.client', $client); $language = $app->getUserStateFromRequest('com_languages.overrides.filter.language', 'filter_language', 'en-GB', 'cmd'); $this->setState('filter.language', $language); } } PKb��\Y��}77+components/com_languages/models/strings.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Languages Strings Model * * @since 2.5 */ class LanguagesModelStrings extends JModelLegacy { /** * Method for refreshing the cache in the database with the known language strings. * * @return boolean True on success, Exception object otherwise. * * @since 2.5 */ public function refresh() { require_once JPATH_COMPONENT . '/helpers/languages.php'; $app = JFactory::getApplication(); $app->setUserState('com_languages.overrides.cachedtime', null); // Empty the database cache first. try { $this->_db->setQuery('TRUNCATE TABLE ' . $this->_db->quoteName('#__overrider')); $this->_db->execute(); } catch (RuntimeException $e) { return $e; } // Create the insert query. $query = $this->_db->getQuery(true) ->insert($this->_db->quoteName('#__overrider')) ->columns('constant, string, file'); // Initialize some variables. $client = $app->getUserState('com_languages.overrides.filter.client', 'site') ? 'administrator' : 'site'; $language = $app->getUserState('com_languages.overrides.filter.language', 'en-GB'); $base = constant('JPATH_' . strtoupper($client)); $path = $base . '/language/' . $language; $files = array(); // Parse common language directory. jimport('joomla.filesystem.folder'); if (is_dir($path)) { $files = JFolder::files($path, $language . '.*ini$', false, true); } // Parse language directories of components. $files = array_merge($files, JFolder::files($base . '/components', $language . '.*ini$', 3, true)); // Parse language directories of modules. $files = array_merge($files, JFolder::files($base . '/modules', $language . '.*ini$', 3, true)); // Parse language directories of templates. $files = array_merge($files, JFolder::files($base . '/templates', $language . '.*ini$', 3, true)); // Parse language directories of plugins. $files = array_merge($files, JFolder::files(JPATH_PLUGINS, $language . '.*ini$', 3, true)); // Parse all found ini files and add the strings to the database cache. foreach ($files as $file) { $strings = LanguagesHelper::parseFile($file); if ($strings && count($strings)) { $query->clear('values'); foreach ($strings as $key => $string) { $query->values($this->_db->quote($key) . ',' . $this->_db->quote($string) . ',' . $this->_db->quote(JPath::clean($file))); } try { $this->_db->setQuery($query); $this->_db->execute(); } catch (RuntimeException $e) { return $e; } } } // Update the cached time. $app->setUserState('com_languages.overrides.cachedtime.' . $client . '.' . $language, time()); return true; } /** * Method for searching language strings. * * @return array Array of resuls on success, Exception object otherwise. * * @since 2.5 */ public function search() { $results = array(); $input = JFactory::getApplication()->input; $filter = JFilterInput::getInstance(); $searchTerm = $input->getString('searchstring'); $limitstart = $input->getInt('more'); try { $searchstring = $this->_db->quote('%' . $filter->clean($searchTerm, 'TRIM') . '%'); // Create the search query. $query = $this->_db->getQuery(true) ->select('constant, string, file') ->from($this->_db->quoteName('#__overrider')); if ($input->get('searchtype') == 'constant') { $query->where('constant LIKE ' . $searchstring); } else { $query->where('string LIKE ' . $searchstring); } // Consider the limitstart according to the 'more' parameter and load the results. $this->_db->setQuery($query, $limitstart, 10); $results['results'] = $this->_db->loadObjectList(); // Check whether there are more results than already loaded. $query->clear('select')->clear('limit') ->select('COUNT(id)'); $this->_db->setQuery($query); if ($this->_db->loadResult() > $limitstart + 10) { // If this is set a 'More Results' link will be displayed in the view. $results['more'] = $limitstart + 10; } } catch (RuntimeException $e) { return $e; } return $results; } } PKb��\`RX�=='components/com_languages/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_languages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Languages Controller. * * @since 1.5 */ class LanguagesController extends JControllerLegacy { /** * @var string The default view. * @since 1.6 */ protected $default_view = 'installed'; /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached. * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { require_once JPATH_COMPONENT . '/helpers/languages.php'; $view = $this->input->get('view', 'languages'); $layout = $this->input->get('layout', 'default'); $id = $this->input->getInt('id'); // Check for edit form. if ($view == 'language' && $layout == 'edit' && !$this->checkEditId('com_languages.edit.language', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_languages&view=languages', false)); return false; } parent::display(); return $this; } } PKb��\�9t�&components/com_languages/languages.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_languages</name> <author>Joomla! Project</author> <creationDate>2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_LANGUAGES_XML_DESCRIPTION</description> <administration> <files folder="admin"> <filename>config.xml</filename> <filename>controller.php</filename> <filename>languages.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>tables</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_languages.ini</language> <language tag="en-GB">language/en-GB.com_languages.sys.ini</language> </languages> </administration> </extension> PKb��\���\\-components/com_categories/tables/category.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Category table * * @since 1.6 */ class CategoriesTableCategory extends JTableCategory { /** * Method to delete a node and, optionally, its child nodes from the table. * * @param integer $pk The primary key of the node to delete. * @param boolean $children True to delete child nodes, false to move them up a level. * * @return boolean True on success. * * @see https://docs.joomla.org/JTableNested/delete * @since 2.5 */ public function delete($pk = null, $children = false) { return parent::delete($pk, $children); } } PKb��\�|���2components/com_categories/controllers/category.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * The Category Controller * * @since 1.6 */ class CategoriesControllerCategory extends JControllerForm { /** * The extension for which the categories apply. * * @var string * @since 1.6 */ protected $extension; /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @since 1.6 * @see JController */ public function __construct($config = array()) { parent::__construct($config); // Guess the JText message prefix. Defaults to the option. if (empty($this->extension)) { $this->extension = $this->input->get('extension', 'com_content'); } } /** * Method to check if you can add a new record. * * @param array $data An array of input data. * * @return boolean * * @since 1.6 */ protected function allowAdd($data = array()) { $user = JFactory::getUser(); return ($user->authorise('core.create', $this->extension) || count($user->getAuthorisedCategories($this->extension, 'core.create'))); } /** * Method to check if you can edit a record. * * @param array $data An array of input data. * @param string $key The name of the key for the primary key. * * @return boolean * * @since 1.6 */ protected function allowEdit($data = array(), $key = 'parent_id') { $recordId = (int) isset($data[$key]) ? $data[$key] : 0; $user = JFactory::getUser(); $userId = $user->get('id'); // Check general edit permission first. if ($user->authorise('core.edit', $this->extension)) { return true; } // Check specific edit permission. if ($user->authorise('core.edit', $this->extension . '.category.' . $recordId)) { return true; } // Fallback on edit.own. // First test if the permission is available. if ($user->authorise('core.edit.own', $this->extension . '.category.' . $recordId) || $user->authorise('core.edit.own', $this->extension)) { // Now test the owner is the user. $ownerId = (int) isset($data['created_user_id']) ? $data['created_user_id'] : 0; if (empty($ownerId) && $recordId) { // Need to do a lookup from the model. $record = $this->getModel()->getItem($recordId); if (empty($record)) { return false; } $ownerId = $record->created_user_id; } // If the owner matches 'me' then do the test. if ($ownerId == $userId) { return true; } } return false; } /** * Method to run batch operations. * * @param object $model The model. * * @return boolean True if successful, false otherwise and internal error is set. * * @since 1.6 */ public function batch($model = null) { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Set the model $model = $this->getModel('Category'); // Preset the redirect $this->setRedirect('index.php?option=com_categories&view=categories&extension=' . $this->extension); return parent::batch($model); } /** * Gets the URL arguments to append to an item redirect. * * @param integer $recordId The primary key id for the item. * @param string $urlVar The name of the URL variable for the id. * * @return string The arguments to append to the redirect URL. * * @since 1.6 */ protected function getRedirectToItemAppend($recordId = null, $urlVar = 'id') { $append = parent::getRedirectToItemAppend($recordId); $append .= '&extension=' . $this->extension; return $append; } /** * Gets the URL arguments to append to a list redirect. * * @return string The arguments to append to the redirect URL. * * @since 1.6 */ protected function getRedirectToListAppend() { $append = parent::getRedirectToListAppend(); $append .= '&extension=' . $this->extension; return $append; } /** * Function that allows child controller access to model data after the data has been saved. * * @param JModelLegacy $model The data model object. * @param array $validData The validated data. * * @return void * * @since 3.1 */ protected function postSaveHook(JModelLegacy $model, $validData = array()) { $item = $model->getItem(); if (isset($item->params) && is_array($item->params)) { $registry = new Registry; $registry->loadArray($item->params); $item->params = (string) $registry; } if (isset($item->metadata) && is_array($item->metadata)) { $registry = new Registry; $registry->loadArray($item->metadata); $item->metadata = (string) $registry; } return; } } PKb��\��U�n n 4components/com_categories/controllers/categories.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * The Categories List Controller * * @since 1.6 */ class CategoriesControllerCategories extends JControllerAdmin { /** * Proxy for getModel * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config The array of possible config values. Optional. * * @return object The model. * * @since 1.6 */ public function getModel($name = 'Category', $prefix = 'CategoriesModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } /** * Rebuild the nested set tree. * * @return bool False on failure or error, true on success. * * @since 1.6 */ public function rebuild() { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $extension = $this->input->get('extension'); $this->setRedirect(JRoute::_('index.php?option=com_categories&view=categories&extension=' . $extension, false)); $model = $this->getModel(); if ($model->rebuild()) { // Rebuild succeeded. $this->setMessage(JText::_('COM_CATEGORIES_REBUILD_SUCCESS')); return true; } else { // Rebuild failed. $this->setMessage(JText::_('COM_CATEGORIES_REBUILD_FAILURE')); return false; } } /** * Save the manual order inputs from the categories list page. * * @return void * * @since 1.6 * @see JControllerAdmin::saveorder() * @deprecated 4.0 */ public function saveorder() { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); JLog::add('CategoriesControllerCategories::saveorder() is deprecated. Function will be removed in 4.0', JLog::WARNING, 'deprecated'); // Get the arrays from the Request $order = $this->input->post->get('order', null, 'array'); $originalOrder = explode(',', $this->input->getString('original_order_values')); // Make sure something has changed if (!($order === $originalOrder)) { parent::saveorder(); } else { // Nothing to reorder $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_list, false)); return true; } } /** * Deletes and returns correctly. * * @return void * * @since 3.1.2 */ public function delete() { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Get items to remove from the request. $cid = $this->input->get('cid', array(), 'array'); $extension = $this->input->getCmd('extension', null); if (!is_array($cid) || count($cid) < 1) { JError::raiseWarning(500, JText::_($this->text_prefix . '_NO_ITEM_SELECTED')); } else { // Get the model. $model = $this->getModel(); // Make sure the item ids are integers jimport('joomla.utilities.arrayhelper'); JArrayHelper::toInteger($cid); // Remove the items. if ($model->delete($cid)) { $this->setMessage(JText::plural($this->text_prefix . '_N_ITEMS_DELETED', count($cid))); } else { $this->setMessage($model->getError()); } } $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&extension=' . $extension, false)); } } PKb��\��ar(components/com_categories/categories.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_categories</name> <author>Joomla! Project</author> <creationDate>December 2007</creationDate> <copyright>(C) 2005 - 2015 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>COM_CATEGORIES_XML_DESCRIPTION</description> <administration> <files folder="admin"> <filename>categories.php</filename> <filename>config.xml</filename> <filename>controller.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_categories.ini</language> <language tag="en-GB">language/en-GB.com_categories.sys.ini</language> </languages> </administration> </extension> PKb��\�����(components/com_categories/categories.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.tabstate'); $input = JFactory::getApplication()->input; // If you have a url like this: com_categories&view=categories&extension=com_example.example_cat $parts = explode('.', $input->get('extension')); $component = $parts[0]; if (!JFactory::getUser()->authorise('core.manage', $component)) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } JLoader::register('JHtmlCategoriesAdministrator', JPATH_ADMINISTRATOR . '/components/com_categories/helpers/html/categoriesadministrator.php'); $task = $input->get('task'); $controller = JControllerLegacy::getInstance('Categories'); $controller->execute($input->get('task')); $controller->redirect(); PKb��\rPRZnnFcomponents/com_categories/views/categories/tmpl/default_batch_body.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('formbehavior.chosen', 'select'); $options = array( JHtml::_('select.option', 'c', JText::_('JLIB_HTML_BATCH_COPY')), JHtml::_('select.option', 'm', JText::_('JLIB_HTML_BATCH_MOVE')) ); $published = $this->state->get('filter.published'); $extension = $this->escape($this->state->get('filter.extension')); ?> <div class="row-fluid"> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.language'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.access'); ?> </div> </div> </div> <div class="row-fluid"> <?php if ($published >= 0) : ?> <div class="span6"> <div class="control-group"> <label id="batch-choose-action-lbl" for="batch-category-id" class="control-label"> <?php echo JText::_('JLIB_HTML_BATCH_MENU_LABEL'); ?> </label> <div id="batch-choose-action" class="combo controls"> <select name="batch[category_id]" id="batch-category-id"> <option value=""><?php echo JText::_('JLIB_HTML_BATCH_NO_CATEGORY') ?></option> <?php echo JHtml::_('select.options', JHtml::_('category.categories', $extension, array('filter.published' => $published))); ?> </select> </div> </div> <div id="batch-copy-move" class="control-group radio"> <?php echo JText::_('JLIB_HTML_BATCH_MOVE_QUESTION'); ?> <?php echo JHtml::_('select.radiolist', $options, 'batch[move_copy]', '', 'value', 'text', 'm'); ?> </div> </div> <?php endif; ?> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.tag'); ?> </div> </div> </div>PKb��\�}��Hcomponents/com_categories/views/categories/tmpl/default_batch_footer.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <button class="btn" type="button" onclick="document.getElementById('batch-category-id').value='';document.getElementById('batch-access').value='';document.getElementById('batch-language-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-success" type="submit" onclick="Joomla.submitbutton('category.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button>PKb��\s��'��9components/com_categories/views/categories/tmpl/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $app = JFactory::getApplication(); if ($app->isSite()) { JSession::checkToken('get') or die(JText::_('JINVALID_TOKEN')); } require_once JPATH_ROOT . '/components/com_content/helpers/route.php'; // Include the component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('formbehavior.chosen', 'select'); $extension = $this->escape($this->state->get('filter.extension')); $function = $app->input->getCmd('function', 'jSelectCategory'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_categories&view=categories&layout=modal&tmpl=component&function=' . $function . '&' . JSession::getFormToken() . '=1'); ?>" method="post" name="adminForm" id="adminForm"> <fieldset class="filter clearfix"> <div class="btn-toolbar"> <div class="btn-group pull-left"> <label for="filter_search"> <?php echo JText::_('JSEARCH_FILTER_LABEL'); ?> </label> </div> <div class="btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('COM_CATEGORIES_ITEMS_SEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" size="30" title="<?php echo JText::_('COM_CATEGORIES_ITEMS_SEARCH_FILTER'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" data-placement="bottom" title="<?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?>"> <span class="icon-search"></span><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" class="btn hasTooltip" data-placement="bottom" title="<?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"> <span class="icon-remove"></span><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="clearfix"></div> </div> <hr class="hr-condensed" /> <div class="filters pull-left"> <select name="filter_access" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access')); ?> </select> <select name="filter_published" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true); ?> </select> <?php if ($this->state->get('filter.forcedLanguage')) : ?> <input type="hidden" name="forcedLanguage" value="<?php echo $this->escape($this->state->get('filter.forcedLanguage')); ?>" /> <input type="hidden" name="filter_language" value="<?php echo $this->escape($this->state->get('filter.language')); ?>" /> <?php else : ?> <select name="filter_language" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE'); ?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language')); ?> </select> <?php endif; ?> </div> </fieldset> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped" id="categoryList"> <thead> <tr> <th> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_( 'grid.sort', 'JGRID_HEADING_LANGUAGE', 'language', $this->state->get('list.direction'), $this->state->get('list.ordering') ); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="15"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : ?> <?php if ($item->language && JLanguageMultilang::isEnabled()) { $tag = strlen($item->language); if ($tag == 5) { $lang = substr($item->language, 0, 2); } elseif ($tag == 6) { $lang = substr($item->language, 0, 3); } else { $lang = ""; } } elseif (!JLanguageMultilang::isEnabled()) { $lang = ""; } ?> <tr class="row<?php echo $i % 2; ?>"> <td> <?php echo str_repeat('<span class="gi">—</span>', $item->level - 1) ?> <a href="javascript:void()" onclick="if (window.parent) window.parent.<?php echo $this->escape($function); ?>('<?php echo $item->id; ?>', '<?php echo $this->escape(addslashes($item->title)); ?>', null, '<?php echo $this->escape(ContentHelperRoute::getCategoryRoute($item->id, $item->language)); ?>', '<?php echo $this->escape($lang); ?>', null);"> <?php echo $this->escape($item->title); ?> </a> </td> <td class="small hidden-phone"> <?php echo $this->escape($item->access_level); ?> </td> <td class="center nowrap"> <?php if ($item->language == '*'): ?> <?php echo JText::alt('JALL', 'language'); ?> <?php else: ?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif; ?> </td> <td class="center hidden-phone"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> <input type="hidden" name="extension" value="<?php echo $extension; ?>" /> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\����!!;components/com_categories/views/categories/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $app = JFactory::getApplication(); $user = JFactory::getUser(); $userId = $user->get('id'); $extension = $this->escape($this->state->get('filter.extension')); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $ordering = ($listOrder == 'a.lft'); $saveOrder = ($listOrder == 'a.lft' && strtolower($listDirn) == 'asc'); if ($saveOrder) { $saveOrderingUrl = 'index.php?option=com_categories&task=categories.saveOrderAjax&tmpl=component'; JHtml::_('sortablelist.sortable', 'categoryList', 'adminForm', strtolower($listDirn), $saveOrderingUrl, false, true); } ?> <form action="<?php echo JRoute::_('index.php?option=com_categories&view=categories'); ?>" method="post" name="adminForm" id="adminForm"> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php // Search tools bar echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this)); ?> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped" id="categoryList"> <thead> <tr> <th width="1%" class="nowrap center hidden-phone"> <?php echo JHtml::_('searchtools.sort', '', 'a.lft', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING', 'icon-menu-2'); ?> </th> <th width="1%" class="center"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="1%" class="nowrap center"> <?php echo JHtml::_('searchtools.sort', 'JSTATUS', 'a.published', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('searchtools.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?> </th> <?php if ($this->assoc) : ?> <th width="5%" class="hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'COM_CATEGORY_HEADING_ASSOCIATION', 'association', $listDirn, $listOrder); ?> </th> <?php endif; ?> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_LANGUAGE', 'language', $this->state->get('list.direction'), $this->state->get('list.ordering')); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="<?php echo ($this->assoc) ? '8' : '7'; ?>"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : ?> <?php $orderkey = array_search($item->id, $this->ordering[$item->parent_id]); $canEdit = $user->authorise('core.edit', $extension . '.category.' . $item->id); $canCheckin = $user->authorise('core.admin', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; $canEditOwn = $user->authorise('core.edit.own', $extension . '.category.' . $item->id) && $item->created_user_id == $userId; $canChange = $user->authorise('core.edit.state', $extension . '.category.' . $item->id) && $canCheckin; // Get the parents of item for sorting if ($item->level > 1) { $parentsStr = ""; $_currentParentId = $item->parent_id; $parentsStr = " " . $_currentParentId; for ($i2 = 0; $i2 < $item->level; $i2++) { foreach ($this->ordering as $k => $v) { $v = implode("-", $v); $v = "-" . $v . "-"; if (strpos($v, "-" . $_currentParentId . "-") !== false) { $parentsStr .= " " . $k; $_currentParentId = $k; break; } } } } else { $parentsStr = ""; } ?> <tr class="row<?php echo $i % 2; ?>" sortable-group-id="<?php echo $item->parent_id; ?>" item-id="<?php echo $item->id ?>" parents="<?php echo $parentsStr ?>" level="<?php echo $item->level ?>"> <td class="order nowrap center hidden-phone"> <?php $iconClass = ''; if (!$canChange) { $iconClass = ' inactive'; } elseif (!$saveOrder) { $iconClass = ' inactive tip-top hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED'); } ?> <span class="sortable-handler<?php echo $iconClass ?>"> <span class="icon-menu"></span> </span> <?php if ($canChange && $saveOrder) : ?> <input type="text" style="display:none" name="order[]" size="5" value="<?php echo $orderkey + 1; ?>" /> <?php endif; ?> </td> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->published, $i, 'categories.', $canChange); ?> </td> <td> <?php echo str_repeat('<span class="gi">—</span>', $item->level - 1) ?> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'categories.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit || $canEditOwn) : ?> <a href="<?php echo JRoute::_('index.php?option=com_categories&task=category.edit&id=' . $item->id . '&extension=' . $extension); ?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> <span class="small" title="<?php echo $this->escape($item->path); ?>"> <?php if (empty($item->note)) : ?> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias)); ?> <?php else : ?> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS_NOTE', $this->escape($item->alias), $this->escape($item->note)); ?> <?php endif; ?> </span> </td> <td class="small hidden-phone"> <?php echo $this->escape($item->access_level); ?> </td> <?php if ($this->assoc) : ?> <td class="hidden-phone"> <?php if ($item->association): ?> <?php echo JHtml::_('CategoriesAdministrator.association', $item->id, $extension); ?> <?php endif; ?> </td> <?php endif; ?> <td class="small nowrap hidden-phone"> <?php if ($item->language == '*') : ?> <?php echo JText::alt('JALL', 'language'); ?> <?php else: ?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif; ?> </td> <td class="hidden-phone"> <span title="<?php echo sprintf('%d-%d', $item->lft, $item->rgt); ?>"> <?php echo (int) $item->id; ?></span> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php // Load the batch processing form. ?> <?php if ($user->authorise('core.create', $extension) && $user->authorise('core.edit', $extension) && $user->authorise('core.edit.state', $extension)) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_CATEGORIES_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif; ?> <?php endif; ?> <input type="hidden" name="extension" value="<?php echo $extension; ?>" /> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�&� � � Acomponents/com_categories/views/categories/tmpl/default_batch.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * * @deprecated 3.4 Use default_batch_body and default_batch_footer */ defined('_JEXEC') or die; JHtml::_('formbehavior.chosen', 'select'); $options = array( JHtml::_('select.option', 'c', JText::_('JLIB_HTML_BATCH_COPY')), JHtml::_('select.option', 'm', JText::_('JLIB_HTML_BATCH_MOVE')) ); $published = $this->state->get('filter.published'); $extension = $this->escape($this->state->get('filter.extension')); ?> <div class="modal hide fade" id="collapseModal"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h3><?php echo JText::_('COM_CATEGORIES_BATCH_OPTIONS'); ?></h3> </div> <div class="modal-body modal-batch"> <p><?php echo JText::_('COM_CATEGORIES_BATCH_TIP'); ?></p> <div class="row-fluid"> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.language'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.access'); ?> </div> </div> </div> <div class="row-fluid"> <?php if ($published >= 0) : ?> <div class="span6"> <div class="control-group"> <label id="batch-choose-action-lbl" for="batch-category-id" class="control-label"> <?php echo JText::_('JLIB_HTML_BATCH_MENU_LABEL'); ?> </label> <div id="batch-choose-action" class="combo controls"> <select name="batch[category_id]" id="batch-category-id"> <option value=""><?php echo JText::_('JSELECT') ?></option> <?php echo JHtml::_('select.options', JHtml::_('category.categories', $extension, array('filter.published' => $published))); ?> </select> </div> </div> <div id="batch-copy-move" class="control-group radio"> <?php echo JHtml::_('select.radiolist', $options, 'batch[move_copy]', '', 'value', 'text', 'm'); ?> </div> </div> <?php endif; ?> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.tag'); ?> </div> </div> </div> </div> <div class="modal-footer"> <button class="btn" type="button" onclick="document.getElementById('batch-category-id').value='';document.getElementById('batch-access').value='';document.getElementById('batch-language-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-primary" type="submit" onclick="Joomla.submitbutton('category.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button> </div> </div> PKb��\{#ņ@@8components/com_categories/views/categories/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Categories view class for the Category package. * * @since 1.6 */ class CategoriesViewCategories extends JViewLegacy { protected $items; protected $pagination; protected $state; protected $assoc; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $this->state = $this->get('State'); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->assoc = $this->get('Assoc'); $this->filterForm = $this->get('FilterForm'); $this->activeFilters = $this->get('ActiveFilters'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } // Preprocess the list of items to find ordering divisions. foreach ($this->items as &$item) { $this->ordering[$item->parent_id][] = $item->id; } // Levels filter. $options = array(); $options[] = JHtml::_('select.option', '1', JText::_('J1')); $options[] = JHtml::_('select.option', '2', JText::_('J2')); $options[] = JHtml::_('select.option', '3', JText::_('J3')); $options[] = JHtml::_('select.option', '4', JText::_('J4')); $options[] = JHtml::_('select.option', '5', JText::_('J5')); $options[] = JHtml::_('select.option', '6', JText::_('J6')); $options[] = JHtml::_('select.option', '7', JText::_('J7')); $options[] = JHtml::_('select.option', '8', JText::_('J8')); $options[] = JHtml::_('select.option', '9', JText::_('J9')); $options[] = JHtml::_('select.option', '10', JText::_('J10')); $this->f_levels = $options; $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $categoryId = $this->state->get('filter.category_id'); $component = $this->state->get('filter.component'); $section = $this->state->get('filter.section'); $canDo = JHelperContent::getActions($component, 'category', $categoryId); $user = JFactory::getUser(); $extension = JFactory::getApplication()->input->get('extension', '', 'word'); // Get the toolbar object instance $bar = JToolBar::getInstance('toolbar'); // Avoid nonsense situation. if ($component == 'com_categories') { return; } // Need to load the menu language file as mod_menu hasn't been loaded yet. $lang = JFactory::getLanguage(); $lang->load($component, JPATH_BASE, null, false, true) || $lang->load($component, JPATH_ADMINISTRATOR . '/components/' . $component, null, false, true); // Load the category helper. require_once JPATH_COMPONENT . '/helpers/categories.php'; // If a component categories title string is present, let's use it. if ($lang->hasKey($component_title_key = strtoupper($component . ($section ? "_$section" : '')) . '_CATEGORIES_TITLE')) { $title = JText::_($component_title_key); } elseif ($lang->hasKey($component_section_key = strtoupper($component . ($section ? "_$section" : '')))) // Else if the component section string exits, let's use it { $title = JText::sprintf('COM_CATEGORIES_CATEGORIES_TITLE', $this->escape(JText::_($component_section_key))); } else // Else use the base title { $title = JText::_('COM_CATEGORIES_CATEGORIES_BASE_TITLE'); } // Load specific css component JHtml::_('stylesheet', $component . '/administrator/categories.css', array(), true); // Prepare the toolbar. JToolbarHelper::title($title, 'folder categories ' . substr($component, 4) . ($section ? "-$section" : '') . '-categories'); if ($canDo->get('core.create') || (count($user->getAuthorisedCategories($component, 'core.create'))) > 0) { JToolbarHelper::addNew('category.add'); } if ($canDo->get('core.edit') || $canDo->get('core.edit.own')) { JToolbarHelper::editList('category.edit'); } if ($canDo->get('core.edit.state')) { JToolbarHelper::publish('categories.publish', 'JTOOLBAR_PUBLISH', true); JToolbarHelper::unpublish('categories.unpublish', 'JTOOLBAR_UNPUBLISH', true); JToolbarHelper::archiveList('categories.archive'); } if (JFactory::getUser()->authorise('core.admin')) { JToolbarHelper::checkin('categories.checkin'); } // Add a batch button if ($user->authorise('core.create', $extension) && $user->authorise('core.edit', $extension) && $user->authorise('core.edit.state', $extension)) { $title = JText::_('JTOOLBAR_BATCH'); // Instantiate a new JLayoutFile instance and render the batch button $layout = new JLayoutFile('joomla.toolbar.batch'); $dhtml = $layout->render(array('title' => $title)); $bar->appendButton('Custom', $dhtml, 'batch'); } if ($canDo->get('core.admin')) { JToolbarHelper::custom('categories.rebuild', 'refresh.png', 'refresh_f2.png', 'JTOOLBAR_REBUILD', false); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences($component); } if ($this->state->get('filter.published') == -2 && $canDo->get('core.delete', $component)) { JToolbarHelper::deleteList('', 'categories.delete', 'JTOOLBAR_EMPTY_TRASH'); } elseif ($canDo->get('core.edit.state')) { JToolbarHelper::trash('categories.trash'); } // Compute the ref_key if it does exist in the component if (!$lang->hasKey($ref_key = strtoupper($component . ($section ? "_$section" : '')) . '_CATEGORIES_HELP_KEY')) { $ref_key = 'JHELP_COMPONENTS_' . strtoupper(substr($component, 4) . ($section ? "_$section" : '')) . '_CATEGORIES'; } /* * Get help for the categories view for the component by * -remotely searching in a language defined dedicated URL: *component*_HELP_URL * -locally searching in a component help file if helpURL param exists in the component and is set to '' * -remotely searching in a component URL if helpURL param exists in the component and is NOT set to '' */ if ($lang->hasKey($lang_help_url = strtoupper($component) . '_HELP_URL')) { $debug = $lang->setDebug(false); $url = JText::_($lang_help_url); $lang->setDebug($debug); } else { $url = null; } JToolbarHelper::help($ref_key, JComponentHelper::getParams($component)->exists('helpURL'), $url); } /** * Returns an array of fields the table can be sorted by * * @return array Array containing the field name to sort by as the key and display text as value * * @since 3.0 */ protected function getSortFields() { return array( 'a.lft' => JText::_('JGRID_HEADING_ORDERING'), 'a.published' => JText::_('JSTATUS'), 'a.title' => JText::_('JGLOBAL_TITLE'), 'a.access' => JText::_('JGRID_HEADING_ACCESS'), 'language' => JText::_('JGRID_HEADING_LANGUAGE'), 'a.id' => JText::_('JGRID_HEADING_ID') ); } } PKb��\ۍ��//Bcomponents/com_categories/views/category/tmpl/edit_extrafields.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * * @deprecated 3.2 */ defined('_JEXEC') or die; PKb��\�y?XXCcomponents/com_categories/views/category/tmpl/edit_associations.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.associations', $this); PKb��\ۍ��//>components/com_categories/views/category/tmpl/edit_options.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * * @deprecated 3.2 */ defined('_JEXEC') or die; PKb��\�K����?components/com_categories/views/category/tmpl/modal_options.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JHtml::_('bootstrap.startAccordion', 'categoryOptions', array('active' => 'collapse0')); $fieldSets = $this->form->getFieldsets('params'); $i = 0; ?> <?php foreach ($fieldSets as $name => $fieldSet) : ?> <?php $label = !empty($fieldSet->label) ? $fieldSet->label : 'COM_CATEGORIES_' . $name . '_FIELDSET_LABEL'; echo JHtml::_('bootstrap.addSlide', 'categoryOptions', JText::_($label), 'collapse' . ($i++)); if (isset($fieldSet->description) && trim($fieldSet->description)) { echo '<p class="tip">' . $this->escape(JText::_($fieldSet->description)) . '</p>'; } ?> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <div class="control-group"> <div class="control-label"> <?php echo $field->label; ?> </div> <div class="controls"> <?php echo $field->input; ?> </div> </div> <?php endforeach; ?> <?php if ($name == 'basic'): ?> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('note'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('note'); ?> </div> </div> <?php endif; ?> <?php echo JHtml::_('bootstrap.endSlide'); ?> <?php endforeach; ?> <?php echo JHtml::_('bootstrap.endAccordion'); ?> PKb��\7���Ccomponents/com_categories/views/category/tmpl/modal_extrafields.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; PKb��\�,��6components/com_categories/views/category/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); JHtml::_('formbehavior.chosen', 'select'); $app = JFactory::getApplication(); $input = $app->input; $assoc = JLanguageAssociations::isEnabled(); JFactory::getDocument()->addScriptDeclaration(' Joomla.submitbutton = function(task) { if (task == "category.cancel" || document.formvalidator.isValid(document.getElementById("item-form"))) { ' . $this->form->getField("description")->save() . ' Joomla.submitform(task, document.getElementById("item-form")); } }; '); // Fieldsets to not automatically render by /layouts/joomla/edit/params.php $this->ignore_fieldsets = array('jmetadata', 'item_associations'); ?> <form action="<?php echo JRoute::_('index.php?option=com_categories&extension=' . $input->getCmd('extension', 'com_content') . '&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="item-form" class="form-validate"> <?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?> <div class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'general')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'general', JText::_('JCATEGORY', true)); ?> <div class="row-fluid"> <div class="span9"> <?php echo $this->form->getLabel('description'); ?> <?php echo $this->form->getInput('description'); ?> </div> <div class="span3"> <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'publishing', JText::_('COM_CATEGORIES_FIELDSET_PUBLISHING', true)); ?> <div class="row-fluid form-horizontal-desktop"> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.publishingdata', $this); ?> </div> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.metadata', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php if ($assoc) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'associations', JText::_('JGLOBAL_FIELDSET_ASSOCIATIONS', true)); ?> <?php echo $this->loadTemplate('associations'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php if ($this->canDo->get('core.admin')) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'rules', JText::_('COM_CATEGORIES_FIELDSET_RULES', true)); ?> <?php echo $this->form->getInput('rules'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php echo JLayoutHelper::render('joomla.edit.params', $this); ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> <?php echo $this->form->getInput('extension'); ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�y?XXDcomponents/com_categories/views/category/tmpl/modal_associations.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.associations', $this); PKb��\��)�EE7components/com_categories/views/category/tmpl/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); JHtml::_('formbehavior.chosen', 'select'); $app = JFactory::getApplication(); $input = $app->input; $assoc = JLanguageAssociations::isEnabled(); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'category.cancel' || document.formvalidator.isValid(document.getElementById('item-form'))) { " . $this->form->getField('description')->save() . " if (window.opener && (task == 'category.save' || task == 'category.cancel')) { window.opener.document.closeEditWindow = self; window.opener.setTimeout('window.document.closeEditWindow.close()', 1000); } Joomla.submitform(task, document.getElementById('item-form')); } }; "); // Fieldsets to not automatically render by /layouts/joomla/edit/params.php $this->ignore_fieldsets = array('jmetadata', 'item_associations'); ?> <div class="container-popup"> <div class="pull-right"> <button class="btn btn-primary" type="button" onclick="Joomla.submitbutton('category.apply');"><?php echo JText::_('JTOOLBAR_APPLY') ?></button> <button class="btn btn-primary" type="button" onclick="Joomla.submitbutton('category.save');"><?php echo JText::_('JTOOLBAR_SAVE') ?></button> <button class="btn" type="button" onclick="Joomla.submitbutton('category.cancel');"><?php echo JText::_('JCANCEL') ?></button> </div> <div class="clearfix"></div> <hr class="hr-condensed" /> <form action="<?php echo JRoute::_('index.php?option=com_categories&extension=' . $input->getCmd('extension', 'com_content') . '&layout=modal&tmpl=component&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="item-form" class="form-validate form-horizontal"> <?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?> <div class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'general')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'general', JText::_('JCATEGORY', true)); ?> <div class="row-fluid"> <div class="span9"> <?php echo $this->form->getLabel('description'); ?> <?php echo $this->form->getInput('description'); ?> </div> <div class="span3"> <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'publishing', JText::_('COM_CATEGORIES_FIELDSET_PUBLISHING', true)); ?> <div class="row-fluid form-horizontal-desktop"> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.publishingdata', $this); ?> </div> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.metadata', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php if ($assoc) : ?> <div class="hidden"><?php echo $this->loadTemplate('associations'); ?></div> <?php endif; ?> <?php if ($this->canDo->get('core.admin')) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'rules', JText::_('COM_CATEGORIES_FIELDSET_RULES', true)); ?> <?php echo $this->form->getInput('rules'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php echo JLayoutHelper::render('joomla.edit.params', $this); ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> <?php echo $this->form->getInput('extension'); ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> </form> </div> PKb��\)�(}TT?components/com_categories/views/category/tmpl/edit_metadata.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.metadata', $this); PKb��\)�(}TT@components/com_categories/views/category/tmpl/modal_metadata.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.metadata', $this); PKb��\���muu6components/com_categories/views/category/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * HTML View class for the Categories component * * @since 1.6 */ class CategoriesViewCategory extends JViewLegacy { protected $form; protected $item; protected $state; protected $assoc; /** * Display the view. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); $section = $this->state->get('category.section') ? $this->state->get('category.section') . '.' : ''; $this->canDo = JHelperContent::getActions($this->state->get('category.component'), $section . 'category', $this->item->id); $this->assoc = $this->get('Assoc'); $input = JFactory::getApplication()->input; // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } // Check for tag type $this->checkTags = JHelperTags::getTypes('objectList', array($this->state->get('category.extension') . '.category'), true); $input->set('hidemainmenu', true); if ($this->getLayout() == 'modal') { $this->form->setFieldAttribute('language', 'readonly', 'true'); $this->form->setFieldAttribute('parent_id', 'readonly', 'true'); } $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $input = JFactory::getApplication()->input; $extension = $input->get('extension'); $user = JFactory::getUser(); $userId = $user->get('id'); $isNew = ($this->item->id == 0); $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $userId); // Check to see if the type exists $ucmType = new JUcmType; $this->typeId = $ucmType->getTypeId($extension . '.category'); // Avoid nonsense situation. if ($extension == 'com_categories') { return; } // The extension can be in the form com_foo.section $parts = explode('.', $extension); $component = $parts[0]; $section = (count($parts) > 1) ? $parts[1] : null; $componentParams = JComponentHelper::getParams($component); // Need to load the menu language file as mod_menu hasn't been loaded yet. $lang = JFactory::getLanguage(); $lang->load($component, JPATH_BASE, null, false, true) || $lang->load($component, JPATH_ADMINISTRATOR . '/components/' . $component, null, false, true); // Load the category helper. require_once JPATH_COMPONENT . '/helpers/categories.php'; // Get the results for each action. $canDo = $this->canDo; // If a component categories title string is present, let's use it. if ($lang->hasKey($component_title_key = $component . ($section ? "_$section" : '') . '_CATEGORY_' . ($isNew ? 'ADD' : 'EDIT') . '_TITLE')) { $title = JText::_($component_title_key); } // Else if the component section string exits, let's use it elseif ($lang->hasKey($component_section_key = $component . ($section ? "_$section" : ''))) { $title = JText::sprintf('COM_CATEGORIES_CATEGORY_' . ($isNew ? 'ADD' : 'EDIT') . '_TITLE', $this->escape(JText::_($component_section_key))); } // Else use the base title else { $title = JText::_('COM_CATEGORIES_CATEGORY_BASE_' . ($isNew ? 'ADD' : 'EDIT') . '_TITLE'); } // Load specific css component JHtml::_('stylesheet', $component . '/administrator/categories.css', array(), true); // Prepare the toolbar. JToolbarHelper::title( $title, 'folder category-' . ($isNew ? 'add' : 'edit') . ' ' . substr($component, 4) . ($section ? "-$section" : '') . '-category-' . ($isNew ? 'add' : 'edit') ); // For new records, check the create permission. if ($isNew && (count($user->getAuthorisedCategories($component, 'core.create')) > 0)) { JToolbarHelper::apply('category.apply'); JToolbarHelper::save('category.save'); JToolbarHelper::save2new('category.save2new'); } // If not checked out, can save the item. elseif (!$checkedOut && ($canDo->get('core.edit') || ($canDo->get('core.edit.own') && $this->item->created_user_id == $userId))) { JToolbarHelper::apply('category.apply'); JToolbarHelper::save('category.save'); if ($canDo->get('core.create')) { JToolbarHelper::save2new('category.save2new'); } } // If an existing item, can save to a copy. if (!$isNew && $canDo->get('core.create')) { JToolbarHelper::save2copy('category.save2copy'); } if (empty($this->item->id)) { JToolbarHelper::cancel('category.cancel'); } else { if ($componentParams->get('save_history', 0) && $user->authorise('core.edit')) { $typeAlias = $extension . '.category'; JToolbarHelper::versions($typeAlias, $this->item->id); } JToolbarHelper::cancel('category.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); // Compute the ref_key if it does exist in the component if (!$lang->hasKey($ref_key = strtoupper($component . ($section ? "_$section" : '')) . '_CATEGORY_' . ($isNew ? 'ADD' : 'EDIT') . '_HELP_KEY')) { $ref_key = 'JHELP_COMPONENTS_' . strtoupper(substr($component, 4) . ($section ? "_$section" : '')) . '_CATEGORY_' . ($isNew ? 'ADD' : 'EDIT'); } /* Get help for the category/section view for the component by * -remotely searching in a language defined dedicated URL: *component*_HELP_URL * -locally searching in a component help file if helpURL param exists in the component and is set to '' * -remotely searching in a component URL if helpURL param exists in the component and is NOT set to '' */ if ($lang->hasKey($lang_help_url = strtoupper($component) . '_HELP_URL')) { $debug = $lang->setDebug(false); $url = JText::_($lang_help_url); $lang->setDebug($debug); } else { $url = null; } JToolbarHelper::help($ref_key, $componentParams->exists('helpURL'), $url, $component); } } PKb��\y�e+ + Bcomponents/com_categories/helpers/html/categoriesadministrator.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JLoader::register('CategoriesHelper', JPATH_ADMINISTRATOR . '/components/com_categories/helpers/categories.php'); /** * Administrator category HTML * * @since 3.2 */ abstract class JHtmlCategoriesAdministrator { /** * Render the list of associated items * * @param integer $catid Category identifier to search its associations * @param string $extension Category Extension * * @return string The language HTML */ public static function association($catid, $extension = 'com_content') { // Defaults $html = ''; // Get the associations if ($associations = CategoriesHelper::getAssociations($catid, $extension)) { JArrayHelper::toInteger($associations); // Get the associated categories $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('c.id, c.title') ->select('l.sef as lang_sef') ->from('#__categories as c') ->where('c.id IN (' . implode(',', array_values($associations)) . ')') ->join('LEFT', '#__languages as l ON c.language=l.lang_code') ->select('l.image') ->select('l.title as language_title'); $db->setQuery($query); try { $items = $db->loadObjectList('id'); } catch (RuntimeException $e) { throw new Exception($e->getMessage(), 500); } if ($items) { foreach ($items as &$item) { $text = strtoupper($item->lang_sef); $url = JRoute::_('index.php?option=com_categories&task=category.edit&id=' . (int) $item->id . '&extension=' . $extension); $tooltipParts = array( JHtml::_( 'image', 'mod_languages/' . $item->image . '.gif', $item->language_title, array('title' => $item->language_title), true ), $item->title ); $item->link = JHtml::_( 'tooltip', implode(' ', $tooltipParts), null, null, $text, $url, null, 'hasTooltip label label-association label-' . $item->lang_sef ); } } $html = JLayoutHelper::render('joomla.content.associations', $items); } return $html; } } PKb��\�|�qq0components/com_categories/helpers/categories.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Categories helper. * * @since 1.6 */ class CategoriesHelper { /** * Configure the Submenu links. * * @param string $extension The extension being used for the categories. * * @return void * * @since 1.6 */ public static function addSubmenu($extension) { // Avoid nonsense situation. if ($extension == 'com_categories') { return; } $parts = explode('.', $extension); $component = $parts[0]; if (count($parts) > 1) { $section = $parts[1]; } // Try to find the component helper. $eName = str_replace('com_', '', $component); $file = JPath::clean(JPATH_ADMINISTRATOR . '/components/' . $component . '/helpers/' . $eName . '.php'); if (file_exists($file)) { require_once $file; $prefix = ucfirst(str_replace('com_', '', $component)); $cName = $prefix . 'Helper'; if (class_exists($cName)) { if (is_callable(array($cName, 'addSubmenu'))) { $lang = JFactory::getLanguage(); // Loading language file from the administrator/language directory then // loading language file from the administrator/components/*extension*/language directory $lang->load($component, JPATH_BASE, null, false, true) || $lang->load($component, JPath::clean(JPATH_ADMINISTRATOR . '/components/' . $component), null, false, true); call_user_func(array($cName, 'addSubmenu'), 'categories' . (isset($section) ? '.' . $section : '')); } } } } /** * Gets a list of the actions that can be performed. * * @param string $extension The extension. * @param integer $categoryId The category ID. * * @return JObject * * @since 1.6 * @deprecated 3.2 Use JHelperContent::getActions() instead */ public static function getActions($extension, $categoryId = 0) { // Log usage of deprecated function JLog::add(__METHOD__ . '() is deprecated, use JHelperContent::getActions() with new arguments order instead.', JLog::WARNING, 'deprecated'); // Get list of actions $result = JHelperContent::getActions($extension, 'category', $categoryId); return $result; } /** * Gets a list of associations for a given item. * * @param integer $pk Content item key. * @param string $extension Optional extension name. * * @return array of associations. */ public static function getAssociations($pk, $extension = 'com_content') { $associations = array(); $db = JFactory::getDbo(); $query = $db->getQuery(true) ->from('#__categories as c') ->join('INNER', '#__associations as a ON a.id = c.id AND a.context=' . $db->quote('com_categories.item')) ->join('INNER', '#__associations as a2 ON a.key = a2.key') ->join('INNER', '#__categories as c2 ON a2.id = c2.id AND c2.extension = ' . $db->quote($extension)) ->where('c.id =' . (int) $pk) ->where('c.extension = ' . $db->quote($extension)); $select = array( 'c2.language', $query->concatenate(array('c2.id', 'c2.alias'), ':') . ' AS id' ); $query->select($select); $db->setQuery($query); $contentitems = $db->loadObjectList('language'); // Check for a database error. if ($error = $db->getErrorMsg()) { JError::raiseWarning(500, $error); return false; } foreach ($contentitems as $tag => $item) { // Do not return itself as result if ((int) $item->id != $pk) { $associations[$tag] = $item->id; } } return $associations; } } PKb��\�W���1components/com_categories/helpers/association.phpnu�[���<?php /** * @package Joomla.Site * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JLoader::register('CategoriesHelper', JPATH_ADMINISTRATOR . '/components/com_categories/helpers/categories.php'); /** * Category Component Association Helper * * @since 3.0 */ abstract class CategoryHelperAssociation { public static $category_association = true; /** * Method to get the associations for a given category * * @param integer $id Id of the item * @param string $extension Name of the component * * @return array Array of associations for the component categories * * @since 3.0 */ public static function getCategoryAssociations($id = 0, $extension = 'com_content') { $return = array(); if ($id) { // Load route helper jimport('helper.route', JPATH_COMPONENT_SITE); $helperClassname = ucfirst(substr($extension, 4)) . 'HelperRoute'; $associations = CategoriesHelper::getAssociations($id, $extension); foreach ($associations as $tag => $item) { if (class_exists($helperClassname) && is_callable(array($helperClassname, 'getCategoryRoute'))) { $return[$tag] = $helperClassname::getCategoryRoute($item, $tag); } else { $return[$tag] = 'index.php?option=' . $extension . '&view=category&id=' . $item; } } } return $return; } } PKb��\9��vv8components/com_categories/models/fields/categoryedit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; JFormHelper::loadFieldClass('list'); /** * Form Field class for the Joomla Framework. * * @since 1.6 */ class JFormFieldCategoryEdit extends JFormFieldList { /** * A flexible category list that respects access controls * * @var string * @since 1.6 */ public $type = 'CategoryEdit'; /** * Method to get a list of categories that respects access controls and can be used for * either category assignment or parent category assignment in edit screens. * Use the parent element to indicate that the field will be used for assigning parent categories. * * @return array The field option objects. * * @since 1.6 */ protected function getOptions() { $options = array(); $published = $this->element['published'] ? $this->element['published'] : array(0, 1); $name = (string) $this->element['name']; // Let's get the id for the current item, either category or content item. $jinput = JFactory::getApplication()->input; // Load the category options for a given extension. // For categories the old category is the category id or 0 for new category. if ($this->element['parent'] || $jinput->get('option') == 'com_categories') { $oldCat = $jinput->get('id', 0); $oldParent = $this->form->getValue($name, 0); $extension = $this->element['extension'] ? (string) $this->element['extension'] : (string) $jinput->get('extension', 'com_content'); } else // For items the old category is the category they are in when opened or 0 if new. { $oldCat = $this->form->getValue($name, 0); $extension = $this->element['extension'] ? (string) $this->element['extension'] : (string) $jinput->get('option', 'com_content'); } $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('DISTINCT a.id AS value, a.title AS text, a.level, a.published, a.lft'); $subQuery = $db->getQuery(true) ->select('id,title,level,published,parent_id,extension,lft,rgt') ->from('#__categories'); // Filter by the extension type if ($this->element['parent'] == true || $jinput->get('option') == 'com_categories') { $subQuery->where('(extension = ' . $db->quote($extension) . ' OR parent_id = 0)'); } else { $subQuery->where('(extension = ' . $db->quote($extension) . ')'); } // Filter language if (!empty($this->element['language'])) { $subQuery->where('language = ' . $db->quote($this->element['language'])); } // Filter on the published state if (is_numeric($published)) { $subQuery->where('published = ' . (int) $published); } elseif (is_array($published)) { JArrayHelper::toInteger($published); $subQuery->where('published IN (' . implode(',', $published) . ')'); } $query->from('(' . $subQuery->__toString() . ') AS a') ->join('LEFT', $db->quoteName('#__categories') . ' AS b ON a.lft > b.lft AND a.rgt < b.rgt'); $query->order('a.lft ASC'); // If parent isn't explicitly stated but we are in com_categories assume we want parents if ($oldCat != 0 && ($this->element['parent'] == true || $jinput->get('option') == 'com_categories')) { // Prevent parenting to children of this item. // To rearrange parents and children move the children up, not the parents down. $query->join('LEFT', $db->quoteName('#__categories') . ' AS p ON p.id = ' . (int) $oldCat) ->where('NOT(a.lft >= p.lft AND a.rgt <= p.rgt)'); $rowQuery = $db->getQuery(true); $rowQuery->select('a.id AS value, a.title AS text, a.level, a.parent_id') ->from('#__categories AS a') ->where('a.id = ' . (int) $oldCat); $db->setQuery($rowQuery); $row = $db->loadObject(); } // Get the options. $db->setQuery($query); try { $options = $db->loadObjectList(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); } // Pad the option text with spaces using depth level as a multiplier. for ($i = 0, $n = count($options); $i < $n; $i++) { // Translate ROOT if ($this->element['parent'] == true || $jinput->get('option') == 'com_categories') { if ($options[$i]->level == 0) { $options[$i]->text = JText::_('JGLOBAL_ROOT_PARENT'); } } if ($options[$i]->published == 1) { $options[$i]->text = str_repeat('- ', $options[$i]->level) . $options[$i]->text; } else { $options[$i]->text = str_repeat('- ', $options[$i]->level) . '[' . $options[$i]->text . ']'; } } // Get the current user object. $user = JFactory::getUser(); // For new items we want a list of categories you are allowed to create in. if ($oldCat == 0) { foreach ($options as $i => $option) { /* To take save or create in a category you need to have create rights for that category * unless the item is already in that category. * Unset the option if the user isn't authorised for it. In this field assets are always categories. */ if ($user->authorise('core.create', $extension . '.category.' . $option->value) != true && $option->level != 0) { unset($options[$i]); } } } // If you have an existing category id things are more complex. else { /* If you are only allowed to edit in this category but not edit.state, you should not get any * option to change the category parent for a category or the category for a content item, * but you should be able to save in that category. */ foreach ($options as $i => $option) { if ($user->authorise('core.edit.state', $extension . '.category.' . $oldCat) != true && !isset($oldParent)) { if ($option->value != $oldCat) { unset($options[$i]); } } if ($user->authorise('core.edit.state', $extension . '.category.' . $oldCat) != true && (isset($oldParent)) && $option->value != $oldParent) { unset($options[$i]); } // However, if you can edit.state you can also move this to another category for which you have // create permission and you should also still be able to save in the current category. if (($user->authorise('core.create', $extension . '.category.' . $option->value) != true) && ($option->value != $oldCat && !isset($oldParent))) { { unset($options[$i]); } } if (($user->authorise('core.create', $extension . '.category.' . $option->value) != true) && (isset($oldParent)) && $option->value != $oldParent) { { unset($options[$i]); } } } } if (($this->element['parent'] == true || $jinput->get('option') == 'com_categories') && (isset($row) && !isset($options[0])) && isset($this->element['show_root'])) { if ($row->parent_id == '1') { $parent = new stdClass; $parent->text = JText::_('JGLOBAL_ROOT_PARENT'); array_unshift($options, $parent); } array_unshift($options, JHtml::_('select.option', '0', JText::_('JGLOBAL_ROOT'))); } // Merge any additional options in the XML definition. $options = array_merge(parent::getOptions(), $options); return $options; } } PKb��\Q��ݶ�:components/com_categories/models/fields/categoryparent.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; JFormHelper::loadFieldClass('list'); /** * Form Field class for the Joomla Framework. * * @since 1.6 */ class JFormFieldCategoryParent extends JFormFieldList { /** * The form field type. * * @var string * @since 1.6 */ protected $type = 'CategoryParent'; /** * Method to get the field options. * * @return array The field option objects. * * @since 1.6 */ protected function getOptions() { // Initialise variables. $options = array(); $name = (string) $this->element['name']; // Let's get the id for the current item, either category or content item. $jinput = JFactory::getApplication()->input; // For categories the old category is the category id 0 for new category. if ($this->element['parent']) { $oldCat = $jinput->get('id', 0); } else // For items the old category is the category they are in when opened or 0 if new. { $oldCat = $this->form->getValue($name); } $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('a.id AS value, a.title AS text, a.level') ->from('#__categories AS a') ->join('LEFT', $db->quoteName('#__categories') . ' AS b ON a.lft > b.lft AND a.rgt < b.rgt'); // Filter by the type if ($extension = $this->form->getValue('extension')) { $query->where('(a.extension = ' . $db->quote($extension) . ' OR a.parent_id = 0)'); } if ($this->element['parent']) { // Prevent parenting to children of this item. if ($id = $this->form->getValue('id')) { $query->join('LEFT', $db->quoteName('#__categories') . ' AS p ON p.id = ' . (int) $id) ->where('NOT(a.lft >= p.lft AND a.rgt <= p.rgt)'); $rowQuery = $db->getQuery(true); $rowQuery->select('a.id AS value, a.title AS text, a.level, a.parent_id') ->from('#__categories AS a') ->where('a.id = ' . (int) $id); $db->setQuery($rowQuery); $row = $db->loadObject(); } } $query->where('a.published IN (0,1)') ->group('a.id, a.title, a.level, a.lft, a.rgt, a.extension, a.parent_id') ->order('a.lft ASC'); // Get the options. $db->setQuery($query); try { $options = $db->loadObjectList(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); } // Pad the option text with spaces using depth level as a multiplier. for ($i = 0, $n = count($options); $i < $n; $i++) { // Translate ROOT if ($options[$i]->level == 0) { $options[$i]->text = JText::_('JGLOBAL_ROOT_PARENT'); } $options[$i]->text = str_repeat('- ', $options[$i]->level) . $options[$i]->text; } // Get the current user object. $user = JFactory::getUser(); // For new items we want a list of categories you are allowed to create in. if ($oldCat == 0) { foreach ($options as $i => $option) { /* To take save or create in a category you need to have create rights for that category * unless the item is already in that category. * Unset the option if the user isn't authorised for it. In this field assets are always categories. */ if ($user->authorise('core.create', $extension . '.category.' . $option->value) != true) { unset($options[$i]); } } } // If you have an existing category id things are more complex. else { foreach ($options as $i => $option) { /* If you are only allowed to edit in this category but not edit.state, you should not get any * option to change the category parent for a category or the category for a content item, * but you should be able to save in that category. */ if ($user->authorise('core.edit.state', $extension . '.category.' . $oldCat) != true) { if ($option->value != $oldCat) { echo 'y'; unset($options[$i]); } } // However, if you can edit.state you can also move this to another category for which you have // create permission and you should also still be able to save in the current category. elseif (($user->authorise('core.create', $extension . '.category.' . $option->value) != true) && $option->value != $oldCat ) { echo 'x'; unset($options[$i]); } } } if (isset($row) && !isset($options[0])) { if ($row->parent_id == '1') { $parent = new stdClass; $parent->text = JText::_('JGLOBAL_ROOT_PARENT'); array_unshift($options, $parent); } } // Merge any additional options in the XML definition. $options = array_merge(parent::getOptions(), $options); return $options; } } PKb��\0�ue��:components/com_categories/models/fields/modal/category.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; /** * Supports a modal article picker. * * @since 3.1 */ class JFormFieldModal_Category extends JFormField { /** * The form field type. * * @var string * @since 1.6 */ protected $type = 'Modal_Category'; /** * Method to get the field input markup. * * @return string The field input markup. * * @since 1.6 */ protected function getInput() { if ($this->element['extension']) { $extension = (string) $this->element['extension']; } else { $extension = (string) JFactory::getApplication()->input->get('extension', 'com_content'); } $allowEdit = ((string) $this->element['edit'] == 'true') ? true : false; $allowClear = ((string) $this->element['clear'] != 'false') ? true : false; // Load language JFactory::getLanguage()->load('com_categories', JPATH_ADMINISTRATOR); // Build the script. $script = array(); // Select button script $script[] = ' function jSelectCategory_' . $this->id . '(id, title, object) {'; $script[] = ' document.getElementById("' . $this->id . '_id").value = id;'; $script[] = ' document.getElementById("' . $this->id . '_name").value = title;'; if ($allowEdit) { $script[] = ' jQuery("#' . $this->id . '_edit").removeClass("hidden");'; } if ($allowClear) { $script[] = ' jQuery("#' . $this->id . '_clear").removeClass("hidden");'; } $script[] = ' jQuery("#modalCategory-' . $this->id . '").modal("hide");'; $script[] = ' }'; // Clear button script static $scriptClear; if ($allowClear && !$scriptClear) { $scriptClear = true; $script[] = ' function jClearCategory(id) {'; $script[] = ' document.getElementById(id + "_id").value = "";'; $script[] = ' document.getElementById(id + "_name").value = "' . htmlspecialchars(JText::_('COM_CATEGORIES_SELECT_A_CATEGORY', true), ENT_COMPAT, 'UTF-8') . '";'; $script[] = ' jQuery("#"+id + "_clear").addClass("hidden");'; $script[] = ' if (document.getElementById(id + "_edit")) {'; $script[] = ' jQuery("#"+id + "_edit").addClass("hidden");'; $script[] = ' }'; $script[] = ' return false;'; $script[] = ' }'; } // Add the script to the document head. JFactory::getDocument()->addScriptDeclaration(implode("\n", $script)); // Setup variables for display. $html = array(); $link = 'index.php?option=com_categories&view=categories&layout=modal&tmpl=component&extension=' . $extension . '&function=jSelectCategory_' . $this->id; if (isset($this->element['language'])) { $link .= '&forcedLanguage=' . $this->element['language']; } if ((int) $this->value > 0) { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select($db->quoteName('title')) ->from($db->quoteName('#__categories')) ->where($db->quoteName('id') . ' = ' . (int) $this->value); $db->setQuery($query); try { $title = $db->loadResult(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); } } if (empty($title)) { $title = JText::_('COM_CATEGORIES_SELECT_A_CATEGORY'); } $title = htmlspecialchars($title, ENT_QUOTES, 'UTF-8'); // The active category id field. if (0 == (int) $this->value) { $value = ''; } else { $value = (int) $this->value; } // The current category display field. $html[] = '<span class="input-append">'; $html[] = '<input type="text" class="input-medium" id="' . $this->id . '_name" value="' . $title . '" disabled="disabled" size="35" />'; $html[] = '<a href="#modalCategory-' . $this->id . '" class="btn hasTooltip" role="button" data-toggle="modal"' . ' title="' . JHtml::tooltipText('COM_CATEGORIES_CHANGE_CATEGORY') . '">' . '<span class="icon-file"></span> ' . JText::_('JSELECT') . '</a>'; // Edit category button if ($allowEdit) { $html[] = '<a' . ' class="btn hasTooltip' . ($value ? '' : ' hidden') . '"' . ' href="index.php?option=com_categories&layout=modal&tmpl=component&task=category.edit&id=' . $value . '"' . ' target="_blank"' . ' title="' . JHtml::tooltipText('COM_CATEGORIES_EDIT_CATEGORY') . '" >' . '<span class="icon-edit"></span>' . JText::_('JACTION_EDIT') . '</a>'; $html[] = JHtml::_( 'bootstrap.renderModal', 'modalCategory-' . $this->id, array( 'url' => $link . '&' . JSession::getFormToken() . '=1"', 'title' => JText::_('COM_CATEGORIES_SELECT_A_CATEGORY'), 'width' => '800px', 'height' => '300px', 'footer' => '<button class="btn" data-dismiss="modal" aria-hidden="true">' . JText::_("JLIB_HTML_BEHAVIOR_CLOSE") . '</button>' ) ); } // Clear category button if ($allowClear) { $html[] = '<button' . ' id="' . $this->id . '_clear"' . ' class="btn' . ($value ? '' : ' hidden') . '"' . ' onclick="return jClearCategory(\'' . $this->id . '\')">' . '<span class="icon-remove"></span>' . JText::_('JCLEAR') . '</button>'; } $html[] = '</span>'; // Note: class='required' for client side validation $class = ''; if ($this->required) { $class = ' class="required modal-value"'; } $html[] = '<input type="hidden" id="' . $this->id . '_id"' . $class . ' name="' . $this->name . '" value="' . $value . '" />'; return implode("\n", $html); } } PKb��\��^��3components/com_categories/models/forms/category.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <field name="id" type="text" default="0" label="JGLOBAL_FIELD_ID_LABEL" description="JGLOBAL_FIELD_ID_DESC" class="readonly" readonly="true"/> <field name="hits" type="text" default="0" label="JGLOBAL_HITS" description="COM_CATEGORIES_FIELD_HITS_DESC" class="readonly" readonly="true"/> <field name="asset_id" type="hidden" filter="unset"/> <field name="parent_id" type="categoryedit" label="COM_CATEGORIES_FIELD_PARENT_LABEL" description="COM_CATEGORIES_FIELD_PARENT_DESC"/> <field name="lft" type="hidden" filter="unset"/> <field name="rgt" type="hidden" filter="unset"/> <field name="level" type="hidden" filter="unset"/> <field name="path" type="text" label="COM_CATEGORIES_PATH_LABEL" description="COM_CATEGORIES_PATH_DESC" class="readonly" size="40" readonly="true"/> <field name="extension" type="hidden"/> <field name="title" type="text" label="JGLOBAL_TITLE" description="JFIELD_TITLE_DESC" class="input-xxlarge input-large-text" size="40" required="true"/> <field name="alias" type="text" label="JFIELD_ALIAS_LABEL" description="JFIELD_ALIAS_DESC" hint="JFIELD_ALIAS_PLACEHOLDER" size="45"/> <field name="version_note" type="text" label="JGLOBAL_FIELD_VERSION_NOTE_LABEL" description="JGLOBAL_FIELD_VERSION_NOTE_DESC" maxlength="255" class="span12" size="45" /> <field name="note" type="text" label="COM_CATEGORIES_FIELD_NOTE_LABEL" description="COM_CATEGORIES_FIELD_NOTE_DESC" maxlength="255" class="span12" size="40"/> <field name="description" type="editor" label="JGLOBAL_DESCRIPTION" description="COM_CATEGORIES_DESCRIPTION_DESC" filter="JComponentHelper::filterText" buttons="true" hide="readmore,pagebreak"/> <field name="published" type="list" class="chzn-color-state" default="1" size="1" label="JSTATUS" description="JFIELD_PUBLISHED_DESC"> <option value="1">JPUBLISHED</option> <option value="0">JUNPUBLISHED</option> <option value="2">JARCHIVED</option> <option value="-2">JTRASHED</option> </field> <field name="buttonspacer" label="JGLOBAL_ACTION_PERMISSIONS_LABEL" description="JGLOBAL_ACTION_PERMISSIONS_DESCRIPTION" type="spacer" /> <field name="checked_out" type="hidden" filter="unset"/> <field name="checked_out_time" type="hidden" filter="unset"/> <field name="access" type="accesslevel" label="JFIELD_ACCESS_LABEL" description="JFIELD_ACCESS_DESC"/> <field name="metadesc" type="textarea" label="JFIELD_META_DESCRIPTION_LABEL" description="JFIELD_META_DESCRIPTION_DESC" rows="3" cols="40"/> <field name="metakey" type="textarea" label="JFIELD_META_KEYWORDS_LABEL" description="JFIELD_META_KEYWORDS_DESC" rows="3" cols="40"/> <field name="created_user_id" type="user" label="JGLOBAL_FIELD_CREATED_BY_LABEL" desc="JGLOBAL_FIELD_CREATED_BY_DESC" /> <field name="created_time" type="text" label="JGLOBAL_CREATED_DATE" class="readonly" filter="unset" readonly="true" /> <field name="modified_user_id" type="user" label="JGLOBAL_FIELD_MODIFIED_BY_LABEL" class="readonly" readonly="true" filter="unset"/> <field name="modified_time" type="text" label="JGLOBAL_FIELD_MODIFIED_LABEL" class="readonly" filter="unset" readonly="true" /> <field name="language" type="contentlanguage" label="JFIELD_LANGUAGE_LABEL" description="COM_CATEGORIES_FIELD_LANGUAGE_DESC"> <option value="*">JALL</option> </field> <field name="tags" type="tag" label="JTAG" description="JTAG_DESC" class="span12" multiple="true" > </field> <field id="rules" name="rules" type="rules" label="JFIELD_RULES_LABEL" translate_label="false" filter="rules" validate="rules" component="com_content" section="category"/> <fields name="params" label="COM_CATEGORIES_FIELD_BASIC_LABEL"> <fieldset name="basic"> <field name="category_layout" type="componentlayout" label="JFIELD_ALT_LAYOUT_LABEL" description="JFIELD_ALT_COMPONENT_LAYOUT_DESC" view="category" useglobal="true" /> <field name="image" type="media" label="COM_CATEGORIES_FIELD_IMAGE_LABEL" description="COM_CATEGORIES_FIELD_IMAGE_DESC" /> <field name="image_alt" type="text" label="COM_CATEGORIES_FIELD_IMAGE_ALT_LABEL" description="COM_CATEGORIES_FIELD_IMAGE_ALT_DESC" size="20" /> </fieldset> </fields> <fields name="metadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS"> <fieldset name="jmetadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS"> <field name="author" type="text" label="JAUTHOR" description="JFIELD_METADATA_AUTHOR_DESC" size="30"/> <field name="robots" type="list" label="JFIELD_METADATA_ROBOTS_LABEL" description="JFIELD_METADATA_ROBOTS_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="index, follow">JGLOBAL_INDEX_FOLLOW</option> <option value="noindex, follow">JGLOBAL_NOINDEX_FOLLOW</option> <option value="index, nofollow">JGLOBAL_INDEX_NOFOLLOW</option> <option value="noindex, nofollow">JGLOBAL_NOINDEX_NOFOLLOW</option> </field> </fieldset> </fields> </form> PKb��\��y)AA<components/com_categories/models/forms/filter_categories.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fields name="filter"> <field name="search" type="text" label="COM_CATEGORIES_ITEMS_SEARCH_FILTER" hint="JSEARCH_FILTER" class="js-stools-search-string" /> <field name="published" type="status" label="COM_CATEGORIES_FILTER_PUBLISHED" description="COM_CATEGORIES_FILTER_PUBLISHED_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_PUBLISHED</option> </field> <field name="access" type="accesslevel" label="JOPTION_FILTER_ACCESS" description="JOPTION_FILTER_ACCESS_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_ACCESS</option> </field> <field name="language" type="contentlanguage" label="JOPTION_FILTER_LANGUAGE" description="JOPTION_FILTER_LANGUAGE_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_LANGUAGE</option> <option value="*">JALL</option> </field> <field name="tag" type="tag" mode="nested" label="JOPTION_FILTER_TAG" description="JOPTION_FILTER_TAG_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_TAG</option> </field> <field name="level" type="integer" first="1" last="10" step="1" label="JOPTION_FILTER_LEVEL" languages="*" description="JOPTION_FILTER_LEVEL_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_MAX_LEVELS</option> </field> </fields> <fields name="list"> <field name="fullordering" type="list" label="JGLOBAL_SORT_BY" statuses="*,0,1,2,-2" description="JGLOBAL_SORT_BY" onchange="this.form.submit();" default="a.lft ASC" > <option value="">JGLOBAL_SORT_BY</option> <option value="a.lft ASC">JGRID_HEADING_ORDERING_ASC</option> <option value="a.lft DESC">JGRID_HEADING_ORDERING_DESC</option> <option value="a.published ASC">JSTATUS_ASC</option> <option value="a.published DESC">JSTATUS_DESC</option> <option value="a.title ASC">JGLOBAL_TITLE_ASC</option> <option value="a.title DESC">JGLOBAL_TITLE_DESC</option> <option value="a.access ASC">JGRID_HEADING_ACCESS_ASC</option> <option value="a.access DESC">JGRID_HEADING_ACCESS_DESC</option> <option value="language ASC">JGRID_HEADING_LANGUAGE_ASC</option> <option value="language DESC">JGRID_HEADING_LANGUAGE_DESC</option> <option value="a.id ASC">JGRID_HEADING_ID_ASC</option> <option value="a.id DESC">JGRID_HEADING_ID_DESC</option> </field> <field name="limit" type="limitbox" class="input-mini" default="25" label="COM_CATEGORIES_LIST_LIMIT" description="COM_CATEGORIES_LIST_LIMIT_DESC" onchange="this.form.submit();" /> </fields> </form> PKb��\���{�{-components/com_categories/models/category.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * Categories Component Category Model * * @since 1.6 */ class CategoriesModelCategory extends JModelAdmin { /** * @var string The prefix to use with controller messages. * @since 1.6 */ protected $text_prefix = 'COM_CATEGORIES'; /** * The type alias for this content type. Used for content version history. * * @var string * @since 3.2 */ public $typeAlias = null; /** * The context used for the associations table * * @var string * @since 3.4.4 */ protected $associationsContext = 'com_categories.item'; /** * Override parent constructor. * * @param array $config An optional associative array of configuration settings. * * @see JModelLegacy * @since 3.2 */ public function __construct($config = array()) { parent::__construct($config); $extension = JFactory::getApplication()->input->get('extension', 'com_content'); $this->typeAlias = $extension . '.category'; } /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to delete the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canDelete($record) { if (!empty($record->id)) { if ($record->published != -2) { return; } $user = JFactory::getUser(); return $user->authorise('core.delete', $record->extension . '.category.' . (int) $record->id); } } /** * Method to test whether a record can have its state changed. * * @param object $record A record object. * * @return boolean True if allowed to change the state of the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canEditState($record) { $user = JFactory::getUser(); // Check for existing category. if (!empty($record->id)) { return $user->authorise('core.edit.state', $record->extension . '.category.' . (int) $record->id); } // New category, so check against the parent. elseif (!empty($record->parent_id)) { return $user->authorise('core.edit.state', $record->extension . '.category.' . (int) $record->parent_id); } // Default to component settings if neither category nor parent known. else { return $user->authorise('core.edit.state', $record->extension); } } /** * Method to get a table object, load it if necessary. * * @param string $type The table name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A JTable object * * @since 1.6 */ public function getTable($type = 'Category', $prefix = 'CategoriesTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @return void * * @since 1.6 */ protected function populateState() { $app = JFactory::getApplication('administrator'); $parentId = $app->input->getInt('parent_id'); $this->setState('category.parent_id', $parentId); // Load the User state. $pk = $app->input->getInt('id'); $this->setState($this->getName() . '.id', $pk); $extension = $app->input->get('extension', 'com_content'); $this->setState('category.extension', $extension); $parts = explode('.', $extension); // Extract the component name $this->setState('category.component', $parts[0]); // Extract the optional section name $this->setState('category.section', (count($parts) > 1) ? $parts[1] : null); // Load the parameters. $params = JComponentHelper::getParams('com_categories'); $this->setState('params', $params); } /** * Method to get a category. * * @param integer $pk An optional id of the object to get, otherwise the id from the model state is used. * * @return mixed Category data object on success, false on failure. * * @since 1.6 */ public function getItem($pk = null) { if ($result = parent::getItem($pk)) { // Prime required properties. if (empty($result->id)) { $result->parent_id = $this->getState('category.parent_id'); $result->extension = $this->getState('category.extension'); } // Convert the metadata field to an array. $registry = new Registry; $registry->loadString($result->metadata); $result->metadata = $registry->toArray(); // Convert the created and modified dates to local user time for display in the form. $tz = new DateTimeZone(JFactory::getApplication()->get('offset')); if ((int) $result->created_time) { $date = new JDate($result->created_time); $date->setTimezone($tz); $result->created_time = $date->toSql(true); } else { $result->created_time = null; } if ((int) $result->modified_time) { $date = new JDate($result->modified_time); $date->setTimezone($tz); $result->modified_time = $date->toSql(true); } else { $result->modified_time = null; } if (!empty($result->id)) { $result->tags = new JHelperTags; $result->tags->getTagIds($result->id, $result->extension . '.category'); } } $assoc = $this->getAssoc(); if ($assoc) { if ($result->id != null) { $result->associations = CategoriesHelper::getAssociations($result->id, $result->extension); JArrayHelper::toInteger($result->associations); } else { $result->associations = array(); } } return $result; } /** * Method to get the row form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return mixed A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { $extension = $this->getState('category.extension'); $jinput = JFactory::getApplication()->input; // A workaround to get the extension into the model for save requests. if (empty($extension) && isset($data['extension'])) { $extension = $data['extension']; $parts = explode('.', $extension); $this->setState('category.extension', $extension); $this->setState('category.component', $parts[0]); $this->setState('category.section', @$parts[1]); } // Get the form. $form = $this->loadForm('com_categories.category' . $extension, 'category', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } // Modify the form based on Edit State access controls. if (empty($data['extension'])) { $data['extension'] = $extension; } $user = JFactory::getUser(); if (!$user->authorise('core.edit.state', $extension . '.category.' . $jinput->get('id'))) { // Disable fields for display. $form->setFieldAttribute('ordering', 'disabled', 'true'); $form->setFieldAttribute('published', 'disabled', 'true'); // Disable fields while saving. // The controller has already verified this is a record you can edit. $form->setFieldAttribute('ordering', 'filter', 'unset'); $form->setFieldAttribute('published', 'filter', 'unset'); } return $form; } /** * A protected method to get the where clause for the reorder * This ensures that the row will be moved relative to a row with the same extension * * @param JCategoryTable $table Current table instance * * @return array An array of conditions to add to add to ordering queries. * * @since 1.6 */ protected function getReorderConditions($table) { return 'extension = ' . $this->_db->quote($table->extension); } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $app = JFactory::getApplication(); $data = $app->getUserState('com_categories.edit.' . $this->getName() . '.data', array()); if (empty($data)) { $data = $this->getItem(); // Pre-select some filters (Status, Language, Access) in edit form if those have been selected in Category Manager if (!$data->id) { // Check for which extension the Category Manager is used and get selected fields $extension = substr($app->getUserState('com_categories.categories.filter.extension'), 4); $filters = (array) $app->getUserState('com_categories.categories.' . $extension . '.filter'); $data->set( 'published', $app->input->getInt( 'published', ((isset($filters['published']) && $filters['published'] !== '') ? $filters['published'] : null) ) ); $data->set('language', $app->input->getString('language', (!empty($filters['language']) ? $filters['language'] : null))); $data->set('access', $app->input->getInt('access', (!empty($filters['access']) ? $filters['access'] : JFactory::getConfig()->get('access')))); } } $this->preprocessData('com_categories.category', $data); return $data; } /** * Method to preprocess the form. * * @param JForm $form A JForm object. * @param mixed $data The data expected for the form. * @param string $group The name of the plugin group to import. * * @return void * * @see JFormField * @since 1.6 * @throws Exception if there is an error in the form event. */ protected function preprocessForm(JForm $form, $data, $group = 'content') { jimport('joomla.filesystem.path'); $lang = JFactory::getLanguage(); $component = $this->getState('category.component'); $section = $this->getState('category.section'); $extension = JFactory::getApplication()->input->get('extension', null); // Get the component form if it exists $name = 'category' . ($section ? ('.' . $section) : ''); // Looking first in the component models/forms folder $path = JPath::clean(JPATH_ADMINISTRATOR . "/components/$component/models/forms/$name.xml"); // Old way: looking in the component folder if (!file_exists($path)) { $path = JPath::clean(JPATH_ADMINISTRATOR . "/components/$component/$name.xml"); } if (file_exists($path)) { $lang->load($component, JPATH_BASE, null, false, true); $lang->load($component, JPATH_BASE . '/components/' . $component, null, false, true); if (!$form->loadFile($path, false)) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } } // Try to find the component helper. $eName = str_replace('com_', '', $component); $path = JPath::clean(JPATH_ADMINISTRATOR . "/components/$component/helpers/category.php"); if (file_exists($path)) { require_once $path; $cName = ucfirst($eName) . ucfirst($section) . 'HelperCategory'; if (class_exists($cName) && is_callable(array($cName, 'onPrepareForm'))) { $lang->load($component, JPATH_BASE, null, false, false) || $lang->load($component, JPATH_BASE . '/components/' . $component, null, false, false) || $lang->load($component, JPATH_BASE, $lang->getDefault(), false, false) || $lang->load($component, JPATH_BASE . '/components/' . $component, $lang->getDefault(), false, false); call_user_func_array(array($cName, 'onPrepareForm'), array(&$form)); // Check for an error. if ($form instanceof Exception) { $this->setError($form->getMessage()); return false; } } } // Set the access control rules field component value. $form->setFieldAttribute('rules', 'component', $component); $form->setFieldAttribute('rules', 'section', $name); // Association category items $assoc = $this->getAssoc(); if ($assoc) { $languages = JLanguageHelper::getLanguages('lang_code'); $addform = new SimpleXMLElement('<form />'); $fields = $addform->addChild('fields'); $fields->addAttribute('name', 'associations'); $fieldset = $fields->addChild('fieldset'); $fieldset->addAttribute('name', 'item_associations'); $fieldset->addAttribute('description', 'COM_CATEGORIES_ITEM_ASSOCIATIONS_FIELDSET_DESC'); $add = false; foreach ($languages as $tag => $language) { if (empty($data->language) || $tag != $data->language) { $add = true; $field = $fieldset->addChild('field'); $field->addAttribute('name', $tag); $field->addAttribute('type', 'modal_category'); $field->addAttribute('language', $tag); $field->addAttribute('label', $language->title); $field->addAttribute('translate_label', 'false'); $field->addAttribute('extension', $extension); $field->addAttribute('edit', 'true'); $field->addAttribute('clear', 'true'); } } if ($add) { $form->load($addform, false); } } // Trigger the default form events. parent::preprocessForm($form, $data, $group); } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 1.6 */ public function save($data) { $dispatcher = JEventDispatcher::getInstance(); $table = $this->getTable(); $input = JFactory::getApplication()->input; $pk = (!empty($data['id'])) ? $data['id'] : (int) $this->getState($this->getName() . '.id'); $isNew = true; $context = $this->option . '.' . $this->name; if ((!empty($data['tags']) && $data['tags'][0] != '')) { $table->newTags = $data['tags']; } // Include the plugins for the save events. JPluginHelper::importPlugin($this->events_map['save']); // Load the row if saving an existing category. if ($pk > 0) { $table->load($pk); $isNew = false; } // Set the new parent id if parent id not matched OR while New/Save as Copy . if ($table->parent_id != $data['parent_id'] || $data['id'] == 0) { $table->setLocation($data['parent_id'], 'last-child'); } // Alter the title for save as copy if ($input->get('task') == 'save2copy') { $origTable = clone $this->getTable(); $origTable->load($input->getInt('id')); if ($data['title'] == $origTable->title) { list($title, $alias) = $this->generateNewTitle($data['parent_id'], $data['alias'], $data['title']); $data['title'] = $title; $data['alias'] = $alias; } else { if ($data['alias'] == $origTable->alias) { $data['alias'] = ''; } } $data['published'] = 0; } // Bind the data. if (!$table->bind($data)) { $this->setError($table->getError()); return false; } // Bind the rules. if (isset($data['rules'])) { $rules = new JAccessRules($data['rules']); $table->setRules($rules); } // Check the data. if (!$table->check()) { $this->setError($table->getError()); return false; } // Trigger the before save event. $result = $dispatcher->trigger($this->event_before_save, array($context, &$table, $isNew)); if (in_array(false, $result, true)) { $this->setError($table->getError()); return false; } // Store the data. if (!$table->store()) { $this->setError($table->getError()); return false; } $assoc = $this->getAssoc(); if ($assoc) { // Adding self to the association $associations = $data['associations']; // Unset any invalid associations $associations = Joomla\Utilities\ArrayHelper::toInteger($associations); foreach ($associations as $tag => $id) { if (!$id) { unset($associations[$tag]); } } // Detecting all item menus $all_language = $table->language == '*'; if ($all_language && !empty($associations)) { JError::raiseNotice(403, JText::_('COM_CATEGORIES_ERROR_ALL_LANGUAGE_ASSOCIATED')); } $associations[$table->language] = $table->id; // Deleting old association for these items $db = $this->getDbo(); $query = $db->getQuery(true) ->delete('#__associations') ->where($db->quoteName('context') . ' = ' . $db->quote($this->associationsContext)) ->where($db->quoteName('id') . ' IN (' . implode(',', $associations) . ')'); $db->setQuery($query); $db->execute(); if ($error = $db->getErrorMsg()) { $this->setError($error); return false; } if (!$all_language && count($associations)) { // Adding new association for these items $key = md5(json_encode($associations)); $query->clear() ->insert('#__associations'); foreach ($associations as $id) { $query->values(((int) $id) . ',' . $db->quote($this->associationsContext) . ',' . $db->quote($key)); } $db->setQuery($query); $db->execute(); if ($error = $db->getErrorMsg()) { $this->setError($error); return false; } } } // Trigger the after save event. $dispatcher->trigger($this->event_after_save, array($context, &$table, $isNew)); // Rebuild the path for the category: if (!$table->rebuildPath($table->id)) { $this->setError($table->getError()); return false; } // Rebuild the paths of the category's children: if (!$table->rebuild($table->id, $table->lft, $table->level, $table->path)) { $this->setError($table->getError()); return false; } $this->setState($this->getName() . '.id', $table->id); // Clear the cache $this->cleanCache(); return true; } /** * Method to change the published state of one or more records. * * @param array &$pks A list of the primary keys to change. * @param integer $value The value of the published state. * * @return boolean True on success. * * @since 2.5 */ public function publish(&$pks, $value = 1) { if (parent::publish($pks, $value)) { $dispatcher = JEventDispatcher::getInstance(); $extension = JFactory::getApplication()->input->get('extension'); // Include the content plugins for the change of category state event. JPluginHelper::importPlugin('content'); // Trigger the onCategoryChangeState event. $dispatcher->trigger('onCategoryChangeState', array($extension, $pks, $value)); return true; } } /** * Method rebuild the entire nested set tree. * * @return boolean False on failure or error, true otherwise. * * @since 1.6 */ public function rebuild() { // Get an instance of the table object. $table = $this->getTable(); if (!$table->rebuild()) { $this->setError($table->getError()); return false; } // Clear the cache $this->cleanCache(); return true; } /** * Method to save the reordered nested set tree. * First we save the new order values in the lft values of the changed ids. * Then we invoke the table rebuild to implement the new ordering. * * @param array $idArray An array of primary key ids. * @param integer $lft_array The lft value * * @return boolean False on failure or error, True otherwise * * @since 1.6 */ public function saveorder($idArray = null, $lft_array = null) { // Get an instance of the table object. $table = $this->getTable(); if (!$table->saveorder($idArray, $lft_array)) { $this->setError($table->getError()); return false; } // Clear the cache $this->cleanCache(); return true; } /** * Batch tag a list of categories. * * @param integer $value The value of the new tag. * @param array $pks An array of row IDs. * @param array $contexts An array of item contexts. * * @return boolean true if successful; false otherwise. */ protected function batchTag($value, $pks, $contexts) { // Set the variables $user = JFactory::getUser(); $table = $this->getTable(); foreach ($pks as $pk) { if ($user->authorise('core.edit', $contexts[$pk])) { $table->reset(); $table->load($pk); $tags = array($value); /** * @var JTableObserverTags $tagsObserver */ $tagsObserver = $table->getObserverOfClass('JTableObserverTags'); $result = $tagsObserver->setNewTags($tags, false); if (!$result) { $this->setError($table->getError()); return false; } } else { $this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT')); return false; } } // Clean the cache $this->cleanCache(); return true; } /** * Batch copy categories to a new category. * * @param integer $value The new category. * @param array $pks An array of row IDs. * @param array $contexts An array of item contexts. * * @return mixed An array of new IDs on success, boolean false on failure. * * @since 1.6 */ protected function batchCopy($value, $pks, $contexts) { $type = new JUcmType; $this->type = $type->getTypeByAlias($this->typeAlias); // $value comes as {parent_id}.{extension} $parts = explode('.', $value); $parentId = (int) JArrayHelper::getValue($parts, 0, 1); $db = $this->getDbo(); $extension = JFactory::getApplication()->input->get('extension', '', 'word'); $newIds = array(); // Check that the parent exists if ($parentId) { if (!$this->table->load($parentId)) { if ($error = $this->table->getError()) { // Fatal error $this->setError($error); return false; } else { // Non-fatal error $this->setError(JText::_('JGLOBAL_BATCH_MOVE_PARENT_NOT_FOUND')); $parentId = 0; } } // Check that user has create permission for parent category if ($parentId == $this->table->getRootId()) { $canCreate = $this->user->authorise('core.create', $extension); } else { $canCreate = $this->user->authorise('core.create', $extension . '.category.' . $parentId); } if (!$canCreate) { // Error since user cannot create in parent category $this->setError(JText::_('COM_CATEGORIES_BATCH_CANNOT_CREATE')); return false; } } // If the parent is 0, set it to the ID of the root item in the tree if (empty($parentId)) { if (!$parentId = $this->table->getRootId()) { $this->setError($db->getErrorMsg()); return false; } // Make sure we can create in root elseif (!$this->user->authorise('core.create', $extension)) { $this->setError(JText::_('COM_CATEGORIES_BATCH_CANNOT_CREATE')); return false; } } // We need to log the parent ID $parents = array(); // Calculate the emergency stop count as a precaution against a runaway loop bug $query = $db->getQuery(true) ->select('COUNT(id)') ->from($db->quoteName('#__categories')); $db->setQuery($query); try { $count = $db->loadResult(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } // Parent exists so let's proceed while (!empty($pks) && $count > 0) { // Pop the first id off the stack $pk = array_shift($pks); $this->table->reset(); // Check that the row actually exists if (!$this->table->load($pk)) { if ($error = $this->table->getError()) { // Fatal error $this->setError($error); return false; } else { // Not fatal error $this->setError(JText::sprintf('JGLOBAL_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } } // Copy is a bit tricky, because we also need to copy the children $query->clear() ->select('id') ->from($db->quoteName('#__categories')) ->where('lft > ' . (int) $this->table->lft) ->where('rgt < ' . (int) $this->table->rgt); $db->setQuery($query); $childIds = $db->loadColumn(); // Add child ID's to the array only if they aren't already there. foreach ($childIds as $childId) { if (!in_array($childId, $pks)) { array_push($pks, $childId); } } // Make a copy of the old ID and Parent ID $oldId = $this->table->id; $oldParentId = $this->table->parent_id; // Reset the id because we are making a copy. $this->table->id = 0; // If we a copying children, the Old ID will turn up in the parents list // otherwise it's a new top level item $this->table->parent_id = isset($parents[$oldParentId]) ? $parents[$oldParentId] : $parentId; // Set the new location in the tree for the node. $this->table->setLocation($this->table->parent_id, 'last-child'); // @TODO: Deal with ordering? // $this->table->ordering = 1; $this->table->level = null; $this->table->asset_id = null; $this->table->lft = null; $this->table->rgt = null; // Alter the title & alias list($title, $alias) = $this->generateNewTitle($this->table->parent_id, $this->table->alias, $this->table->title); $this->table->title = $title; $this->table->alias = $alias; // Unpublish because we are making a copy $this->table->published = 0; parent::createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); // Store the row. if (!$this->table->store()) { $this->setError($this->table->getError()); return false; } // Get the new item ID $newId = $this->table->get('id'); // Add the new ID to the array $newIds[$pk] = $newId; // Now we log the old 'parent' to the new 'parent' $parents[$oldId] = $this->table->id; $count--; } // Rebuild the hierarchy. if (!$this->table->rebuild()) { $this->setError($this->table->getError()); return false; } // Rebuild the tree path. if (!$this->table->rebuildPath($this->table->id)) { $this->setError($this->table->getError()); return false; } return $newIds; } /** * Batch move categories to a new category. * * @param integer $value The new category ID. * @param array $pks An array of row IDs. * @param array $contexts An array of item contexts. * * @return boolean True on success. * * @since 1.6 */ protected function batchMove($value, $pks, $contexts) { $parentId = (int) $value; $type = new JUcmType; $this->type = $type->getTypeByAlias($this->typeAlias); $db = $this->getDbo(); $query = $db->getQuery(true); $extension = JFactory::getApplication()->input->get('extension', '', 'word'); // Check that the parent exists. if ($parentId) { if (!$this->table->load($parentId)) { if ($error = $this->table->getError()) { // Fatal error. $this->setError($error); return false; } else { // Non-fatal error. $this->setError(JText::_('JGLOBAL_BATCH_MOVE_PARENT_NOT_FOUND')); $parentId = 0; } } // Check that user has create permission for parent category. if ($parentId == $this->table->getRootId()) { $canCreate = $this->user->authorise('core.create', $extension); } else { $canCreate = $this->user->authorise('core.create', $extension . '.category.' . $parentId); } if (!$canCreate) { // Error since user cannot create in parent category $this->setError(JText::_('COM_CATEGORIES_BATCH_CANNOT_CREATE')); return false; } // Check that user has edit permission for every category being moved // Note that the entire batch operation fails if any category lacks edit permission foreach ($pks as $pk) { if (!$this->user->authorise('core.edit', $extension . '.category.' . $pk)) { // Error since user cannot edit this category $this->setError(JText::_('COM_CATEGORIES_BATCH_CANNOT_EDIT')); return false; } } } // We are going to store all the children and just move the category $children = array(); // Parent exists so let's proceed foreach ($pks as $pk) { // Check that the row actually exists if (!$this->table->load($pk)) { if ($error = $this->table->getError()) { // Fatal error $this->setError($error); return false; } else { // Not fatal error $this->setError(JText::sprintf('JGLOBAL_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } } // Set the new location in the tree for the node. $this->table->setLocation($parentId, 'last-child'); // Check if we are moving to a different parent if ($parentId != $this->table->parent_id) { // Add the child node ids to the children array. $query->clear() ->select('id') ->from($db->quoteName('#__categories')) ->where($db->quoteName('lft') . ' BETWEEN ' . (int) $this->table->lft . ' AND ' . (int) $this->table->rgt); $db->setQuery($query); try { $children = array_merge($children, (array) $db->loadColumn()); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } } parent::createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); // Store the row. if (!$this->table->store()) { $this->setError($this->table->getError()); return false; } // Rebuild the tree path. if (!$this->table->rebuildPath()) { $this->setError($this->table->getError()); return false; } } // Process the child rows if (!empty($children)) { // Remove any duplicates and sanitize ids. $children = array_unique($children); JArrayHelper::toInteger($children); } return true; } /** * Custom clean the cache of com_content and content modules * * @param string $group Cache group name. * @param integer $client_id Application client id. * * @return void * * @since 1.6 */ protected function cleanCache($group = null, $client_id = 0) { $extension = JFactory::getApplication()->input->get('extension'); switch ($extension) { case 'com_content': parent::cleanCache('com_content'); parent::cleanCache('mod_articles_archive'); parent::cleanCache('mod_articles_categories'); parent::cleanCache('mod_articles_category'); parent::cleanCache('mod_articles_latest'); parent::cleanCache('mod_articles_news'); parent::cleanCache('mod_articles_popular'); break; default: parent::cleanCache($extension); break; } } /** * Method to change the title & alias. * * @param integer $parent_id The id of the parent. * @param string $alias The alias. * @param string $title The title. * * @return array Contains the modified title and alias. * * @since 1.7 */ protected function generateNewTitle($parent_id, $alias, $title) { // Alter the title & alias $table = $this->getTable(); while ($table->load(array('alias' => $alias, 'parent_id' => $parent_id))) { $title = JString::increment($title); $alias = JString::increment($alias, 'dash'); } return array($title, $alias); } /** * Method to determine if a category association is available. * * @return boolean True if a category association is available; false otherwise. */ public function getAssoc() { static $assoc = null; if (!is_null($assoc)) { return $assoc; } $app = JFactory::getApplication(); $extension = $this->getState('category.extension'); $assoc = JLanguageAssociations::isEnabled(); $extension = explode('.', $extension); $component = array_shift($extension); $cname = str_replace('com_', '', $component); if (!$assoc || !$component || !$cname) { $assoc = false; } else { $hname = $cname . 'HelperAssociation'; JLoader::register($hname, JPATH_SITE . '/components/' . $component . '/helpers/association.php'); $assoc = class_exists($hname) && !empty($hname::$category_association); } return $assoc; } } PKb��\k����"�"/components/com_categories/models/categories.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Categories Component Categories Model * * @since 1.6 */ class CategoriesModelCategories extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'title', 'a.title', 'alias', 'a.alias', 'published', 'a.published', 'access', 'a.access', 'access_level', 'language', 'a.language', 'checked_out', 'a.checked_out', 'checked_out_time', 'a.checked_out_time', 'created_time', 'a.created_time', 'created_user_id', 'a.created_user_id', 'lft', 'a.lft', 'rgt', 'a.rgt', 'level', 'a.level', 'path', 'a.path', 'tag' ); } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication(); $context = $this->context; $extension = $app->getUserStateFromRequest('com_categories.categories.filter.extension', 'extension', 'com_content', 'cmd'); $this->setState('filter.extension', $extension); $parts = explode('.', $extension); // Extract the component name $this->setState('filter.component', $parts[0]); // Extract the optional section name $this->setState('filter.section', (count($parts) > 1) ? $parts[1] : null); $search = $this->getUserStateFromRequest($context . '.search', 'filter_search'); $this->setState('filter.search', $search); $level = $this->getUserStateFromRequest($context . '.filter.level', 'filter_level'); $this->setState('filter.level', $level); $access = $this->getUserStateFromRequest($context . '.filter.access', 'filter_access'); $this->setState('filter.access', $access); $published = $this->getUserStateFromRequest($context . '.filter.published', 'filter_published', ''); $this->setState('filter.published', $published); $language = $this->getUserStateFromRequest($context . '.filter.language', 'filter_language', ''); $this->setState('filter.language', $language); $tag = $this->getUserStateFromRequest($this->context . '.filter.tag', 'filter_tag', ''); $this->setState('filter.tag', $tag); // List state information. parent::populateState('a.lft', 'asc'); // Force a language $forcedLanguage = $app->input->get('forcedLanguage'); if (!empty($forcedLanguage)) { $this->setState('filter.language', $forcedLanguage); $this->setState('filter.forcedLanguage', $forcedLanguage); } } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. * * @since 1.6 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.extension'); $id .= ':' . $this->getState('filter.published'); $id .= ':' . $this->getState('filter.language'); return parent::getStoreId($id); } /** * Method to get a database query to list categories. * * @return JDatabaseQuery object. * * @since 1.6 */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); $user = JFactory::getUser(); // Select the required fields from the table. $query->select( $this->getState( 'list.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' ) ); $query->from('#__categories AS a'); // Join over the language $query->select('l.title AS language_title') ->join('LEFT', $db->quoteName('#__languages') . ' AS l ON l.lang_code = a.language'); // Join over the users for the checked out user. $query->select('uc.name AS editor') ->join('LEFT', '#__users AS uc ON uc.id=a.checked_out'); // Join over the asset groups. $query->select('ag.title AS access_level') ->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); // Join over the users for the author. $query->select('ua.name AS author_name') ->join('LEFT', '#__users AS ua ON ua.id = a.created_user_id'); // Join over the associations. $assoc = $this->getAssoc(); if ($assoc) { $query->select('COUNT(asso2.id)>1 as association') ->join('LEFT', '#__associations AS asso ON asso.id = a.id AND asso.context=' . $db->quote('com_categories.item')) ->join('LEFT', '#__associations AS asso2 ON asso2.key = asso.key') ->group('a.id, l.title, uc.name, ag.title, ua.name'); } // Filter by extension if ($extension = $this->getState('filter.extension')) { $query->where('a.extension = ' . $db->quote($extension)); } // Filter on the level. if ($level = $this->getState('filter.level')) { $query->where('a.level <= ' . (int) $level); } // Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } // Implement View Level Access if (!$user->authorise('core.admin')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } // Filter by published state $published = $this->getState('filter.published'); if (is_numeric($published)) { $query->where('a.published = ' . (int) $published); } elseif ($published === '') { $query->where('(a.published IN (0, 1))'); } // Filter by search in title $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } elseif (stripos($search, 'author:') === 0) { $search = $db->quote('%' . $db->escape(substr($search, 7), true) . '%'); $query->where('(ua.name LIKE ' . $search . ' OR ua.username LIKE ' . $search . ')'); } else { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('(a.title LIKE ' . $search . ' OR a.alias LIKE ' . $search . ' OR a.note LIKE ' . $search . ')'); } } // Filter on the language. if ($language = $this->getState('filter.language')) { $query->where('a.language = ' . $db->quote($language)); } // Filter by a single tag. $tagId = $this->getState('filter.tag'); if (is_numeric($tagId)) { $query->where($db->quoteName('tagmap.tag_id') . ' = ' . (int) $tagId) ->join( 'LEFT', $db->quoteName('#__contentitem_tag_map', 'tagmap') . ' ON ' . $db->quoteName('tagmap.content_item_id') . ' = ' . $db->quoteName('a.id') . ' AND ' . $db->quoteName('tagmap.type_alias') . ' = ' . $db->quote($extension . '.category') ); } // Add the list ordering clause $listOrdering = $this->getState('list.ordering', 'a.lft'); $listDirn = $db->escape($this->getState('list.direction', 'ASC')); if ($listOrdering == 'a.access') { $query->order('a.access ' . $listDirn . ', a.lft ' . $listDirn); } else { $query->order($db->escape($listOrdering) . ' ' . $listDirn); } return $query; } /** * Method to determine if an association exists * * @return boolean True if the association exists * * @since 3.0 */ public function getAssoc() { static $assoc = null; if (!is_null($assoc)) { return $assoc; } $app = JFactory::getApplication(); $extension = $this->getState('filter.extension'); $assoc = JLanguageAssociations::isEnabled(); $extension = explode('.', $extension); $component = array_shift($extension); $cname = str_replace('com_', '', $component); if (!$assoc || !$component || !$cname) { $assoc = false; } else { $hname = $cname . 'HelperAssociation'; JLoader::register($hname, JPATH_SITE . '/components/' . $component . '/helpers/association.php'); $assoc = class_exists($hname) && !empty($hname::$category_association); } return $assoc; } } PKb��\xƙ}� � (components/com_categories/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_categories * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Categories view class for the Category package. * * @since 1.6 */ class CategoriesController extends JControllerLegacy { /** * @var string The extension for which the categories apply. * @since 1.6 */ protected $extension; /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { parent::__construct($config); // Guess the JText message prefix. Defaults to the option. if (empty($this->extension)) { $this->extension = $this->input->get('extension', 'com_content'); } } /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { // Get the document object. $document = JFactory::getDocument(); // Set the default view name and format from the Request. $vName = $this->input->get('view', 'categories'); $vFormat = $document->getType(); $lName = $this->input->get('layout', 'default', 'string'); $id = $this->input->getInt('id'); // Check for edit form. if ($vName == 'category' && $lName == 'edit' && !$this->checkEditId('com_categories.edit.category', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_categories&view=categories&extension=' . $this->extension, false)); return false; } // Get and render the view. if ($view = $this->getView($vName, $vFormat)) { // Get the model for the view. $model = $this->getModel($vName, 'CategoriesModel', array('name' => $vName . '.' . substr($this->extension, 4))); // Push the model into the view (as default). $view->setModel($model, true); $view->setLayout($lName); // Push document object into the view. $view->document = $document; // Load the submenu. require_once JPATH_COMPONENT . '/helpers/categories.php'; CategoriesHelper::addSubmenu($model->getState('filter.extension')); $view->display(); } return $this; } } PKb��\�D"���)components/com_templates/tables/style.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * Template style table class. * * @since 1.6 */ class TemplatesTableStyle extends JTable { /** * Constructor * * @param JDatabaseDriver &$db A database connector object * * @since 1.6 */ public function __construct(&$db) { parent::__construct('#__template_styles', 'id', $db); } /** * Overloaded bind function to pre-process the params. * * @param array $array Named array * @param mixed $ignore An optional array or space separated list of properties to ignore while binding. * * @return null|string null if operation was satisfactory, otherwise returns an error * * @since 1.6 */ public function bind($array, $ignore = '') { if (isset($array['params']) && is_array($array['params'])) { $registry = new Registry; $registry->loadArray($array['params']); $array['params'] = (string) $registry; } // Verify that the default style is not unset if ($array['home'] == '0' && $this->home == '1') { $this->setError(JText::_('COM_TEMPLATES_ERROR_CANNOT_UNSET_DEFAULT_STYLE')); return false; } return parent::bind($array, $ignore); } /** * Overloaded check method to ensure data integrity. * * @return boolean True on success. * * @since 1.6 */ public function check() { if (empty($this->title)) { $this->setError(JText::_('COM_TEMPLATES_ERROR_STYLE_REQUIRES_TITLE')); return false; } return true; } /** * Overloaded store method to ensure unicity of default style. * * @param boolean $updateNulls True to update fields even if they are null. * * @return boolean True on success. * * @since 1.6 */ public function store($updateNulls = false) { if ($this->home != '0') { $query = $this->_db->getQuery(true) ->update('#__template_styles') ->set('home=\'0\'') ->where('client_id=' . (int) $this->client_id) ->where('home=' . $this->_db->quote($this->home)); $this->_db->setQuery($query); $this->_db->execute(); } return parent::store($updateNulls); } /** * Overloaded store method to unsure existence of a default style for a template. * * @param mixed $pk An optional primary key value to delete. If not set the instance property value is used. * * @return boolean True on success. * * @since 1.6 */ public function delete($pk = null) { $k = $this->_tbl_key; $pk = (is_null($pk)) ? $this->$k : $pk; if (!is_null($pk)) { $query = $this->_db->getQuery(true) ->from('#__template_styles') ->select('id') ->where('client_id=' . (int) $this->client_id) ->where('template=' . $this->_db->quote($this->template)); $this->_db->setQuery($query); $results = $this->_db->loadColumn(); if (count($results) == 1 && $results[0] == $pk) { $this->setError(JText::_('COM_TEMPLATES_ERROR_CANNOT_DELETE_LAST_STYLE')); return false; } } return parent::delete($pk); } } PKb��\9u=��.components/com_templates/controllers/style.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Template style controller class. * * @since 1.6 */ class TemplatesControllerStyle extends JControllerForm { /** * The prefix to use with controller messages. * * @var string * @since 1.6 */ protected $text_prefix = 'COM_TEMPLATES_STYLE'; /** * Method to save a template style. * * @param string $key The name of the primary key of the URL variable. * @param string $urlVar The name of the URL variable if different from the primary key (sometimes required to avoid router collisions). * * @return boolean True if successful, false otherwise. * * @since 1.6 */ public function save($key = null, $urlVar = null) { if (!JSession::checkToken()) { JFactory::getApplication()->redirect('index.php', JText::_('JINVALID_TOKEN')); } $document = JFactory::getDocument(); if ($document->getType() == 'json') { $app = JFactory::getApplication(); $lang = JFactory::getLanguage(); $model = $this->getModel(); $table = $model->getTable(); $data = $this->input->post->get('params', array(), 'array'); $checkin = property_exists($table, 'checked_out'); $context = $this->option . '.edit.' . $this->context; $task = $this->getTask(); $item = $model->getItem($app->getTemplate('template')->id); // Setting received params $item->set('params', $data); $data = $item->getProperties(); unset($data['xml']); $key = $table->getKeyName(); $urlVar = $key; $recordId = $this->input->getInt($urlVar); // Access check. if (!$this->allowSave($data, $key)) { $app->enqueueMessage(JText::_('JLIB_APPLICATION_ERROR_SAVE_NOT_PERMITTED'), 'error'); return false; } JForm::addFormPath(JPATH_ADMINISTRATOR . '/components/com_templates/models/forms'); // Validate the posted data. // Sometimes the form needs some posted data, such as for plugins and modules. $form = $model->getForm($data, false); if (!$form) { $app->enqueueMessage($model->getError(), 'error'); return false; } // Test whether the data is valid. $validData = $model->validate($form, $data); if ($validData === false) { // Get the validation messages. $errors = $model->getErrors(); // Push up to three validation messages out to the user. for ($i = 0, $n = count($errors); $i < $n && $i < 3; $i++) { if ($errors[$i] instanceof Exception) { $app->enqueueMessage($errors[$i]->getMessage(), 'warning'); } else { $app->enqueueMessage($errors[$i], 'warning'); } } // Save the data in the session. $app->setUserState($context . '.data', $data); return false; } if (!isset($validData['tags'])) { $validData['tags'] = null; } // Attempt to save the data. if (!$model->save($validData)) { // Save the data in the session. $app->setUserState($context . '.data', $validData); $app->enqueueMessage(JText::sprintf('JLIB_APPLICATION_ERROR_SAVE_FAILED', $model->getError()), 'error'); return false; } // Save succeeded, so check-in the record. if ($checkin && $model->checkin($validData[$key]) === false) { // Save the data in the session. $app->setUserState($context . '.data', $validData); // Check-in failed, so go back to the record and display a notice. $app->enqueueMessage(JText::sprintf('JLIB_APPLICATION_ERROR_CHECKIN_FAILED', $model->getError()), 'error'); return false; } // Redirect the user and adjust session state // Set the record data in the session. $recordId = $model->getState($this->context . '.id'); $this->holdEditId($context, $recordId); $app->setUserState($context . '.data', null); $model->checkout($recordId); // Invoke the postSave method to allow for the child class to access the model. $this->postSaveHook($model, $validData); return true; } else { parent::save($key, $urlVar); } } } PKb��\J&\~SS1components/com_templates/controllers/template.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JLoader::register('InstallerModelInstall', JPATH_ADMINISTRATOR . '/components/com_installer/models/install.php'); /** * Template style controller class. * * @since 1.6 */ class TemplatesControllerTemplate extends JControllerLegacy { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JControllerLegacy * @since 3.2 */ public function __construct($config = array()) { parent::__construct($config); // Apply, Save & New, and Save As copy should be standard on forms. $this->registerTask('apply', 'save'); } /** * Method for closing the template. * * @return void. * * @since 3.2 */ public function cancel() { $this->setRedirect(JRoute::_('index.php?option=com_templates&view=templates', false)); } /** * Method for closing a file. * * @return void. * * @since 3.2 */ public function close() { $app = JFactory::getApplication(); $file = base64_encode('home'); $id = $app->input->get('id'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } /** * Method for copying the template. * * @return boolean true on success, false otherwise * * @since 3.2 */ public function copy() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $this->input->set('installtype', 'folder'); $newName = $this->input->get('new_name'); $newNameRaw = $this->input->get('new_name', null, 'string'); $templateID = $this->input->getInt('id', 0); $file = $this->input->get('file'); $this->setRedirect('index.php?option=com_templates&view=template&id=' . $templateID . '&file=' . $file); $model = $this->getModel('Template', 'TemplatesModel'); $model->setState('new_name', $newName); $model->setState('tmp_prefix', uniqid('template_copy_')); $model->setState('to_path', JFactory::getConfig()->get('tmp_path') . '/' . $model->getState('tmp_prefix')); // Process only if we have a new name entered if (strlen($newName) > 0) { if (!JFactory::getUser()->authorise('core.create', 'com_templates')) { // User is not authorised to delete $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_CREATE_NOT_PERMITTED'), 'error'); return false; } // Set FTP credentials, if given JClientHelper::setCredentialsFromRequest('ftp'); // Check that new name is valid if (($newNameRaw !== null) && ($newName !== $newNameRaw)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_INVALID_TEMPLATE_NAME'), 'error'); return false; } // Check that new name doesn't already exist if (!$model->checkNewName()) { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_DUPLICATE_TEMPLATE_NAME'), 'error'); return false; } // Check that from name does exist and get the folder name $fromName = $model->getFromName(); if (!$fromName) { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_INVALID_FROM_NAME'), 'error'); return false; } // Call model's copy method if (!$model->copy()) { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_COULD_NOT_COPY'), 'error'); return false; } // Call installation model $this->input->set('install_directory', JFactory::getConfig()->get('tmp_path') . '/' . $model->getState('tmp_prefix')); $installModel = $this->getModel('Install', 'InstallerModel'); JFactory::getLanguage()->load('com_installer'); if (!$installModel->install()) { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_COULD_NOT_INSTALL'), 'error'); return false; } $this->setMessage(JText::sprintf('COM_TEMPLATES_COPY_SUCCESS', $newName)); $model->cleanup(); return true; } } /** * Method to get a model object, loading it if required. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional (note, the empty array is atypical compared to other models). * * @return JModelLegacy The model. * * @since 3.2 */ public function getModel($name = 'Template', $prefix = 'TemplatesModel', $config = array()) { $model = parent::getModel($name, $prefix, $config); return $model; } /** * Method to check if you can add a new record. * * @return boolean * * @since 3.2 */ protected function allowEdit() { return JFactory::getUser()->authorise('core.edit', 'com_templates'); } /** * Method to check if you can save a new or existing record. * * @return boolean * * @since 3.2 */ protected function allowSave() { return $this->allowEdit(); } /** * Saves a template source file. * * @return void * * @since 3.2 */ public function save() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $data = $this->input->post->get('jform', array(), 'array'); $task = $this->getTask(); $model = $this->getModel(); $fileName = $app->input->get('file'); $explodeArray = explode(':', base64_decode($fileName)); // Access check. if (!$this->allowSave()) { $app->enqueueMessage(JText::_('JERROR_SAVE_NOT_PERMITTED'), 'error'); return false; } // Match the stored id's with the submitted. if (empty($data['extension_id']) || empty($data['filename'])) { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_SOURCE_ID_FILENAME_MISMATCH'), 'error'); return false; } elseif ($data['extension_id'] != $model->getState('extension.id')) { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_SOURCE_ID_FILENAME_MISMATCH'), 'error'); return false; } elseif ($data['filename'] != end($explodeArray)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_SOURCE_ID_FILENAME_MISMATCH'), 'error'); return false; } // Validate the posted data. $form = $model->getForm(); if (!$form) { $app->enqueueMessage($model->getError(), 'error'); return false; } $data = $model->validate($form, $data); // Check for validation errors. if ($data === false) { // Get the validation messages. $errors = $model->getErrors(); // Push up to three validation messages out to the user. for ($i = 0, $n = count($errors); $i < $n && $i < 3; $i++) { if ($errors[$i] instanceof Exception) { $app->enqueueMessage($errors[$i]->getMessage(), 'warning'); } else { $app->enqueueMessage($errors[$i], 'warning'); } } // Redirect back to the edit screen. $url = 'index.php?option=com_templates&view=template&id=' . $model->getState('extension.id') . '&file=' . $fileName; $this->setRedirect(JRoute::_($url, false)); return false; } // Attempt to save the data. if (!$model->save($data)) { // Redirect back to the edit screen. $this->setMessage(JText::sprintf('JERROR_SAVE_FAILED', $model->getError()), 'warning'); $url = 'index.php?option=com_templates&view=template&id=' . $model->getState('extension.id') . '&file=' . $fileName; $this->setRedirect(JRoute::_($url, false)); return false; } $this->setMessage(JText::_('COM_TEMPLATES_FILE_SAVE_SUCCESS')); // Redirect the user based on the chosen task. switch ($task) { case 'apply': // Redirect back to the edit screen. $url = 'index.php?option=com_templates&view=template&id=' . $model->getState('extension.id') . '&file=' . $fileName; $this->setRedirect(JRoute::_($url, false)); break; default: // Redirect to the list screen. $file = base64_encode('home'); $id = $app->input->get('id'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); break; } } /** * Method for creating override. * * @return void * * @since 3.2 */ public function overrides() { $app = JFactory::getApplication(); $model = $this->getModel(); $file = $app->input->get('file'); $override = base64_decode($app->input->get('folder')); $id = $app->input->get('id'); if ($model->createOverride($override)) { $this->setMessage(JText::_('COM_TEMPLATES_OVERRIDE_SUCCESS')); } // Redirect back to the edit screen. $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } /** * Method for compiling LESS. * * @return void * * @since 3.2 */ public function less() { $app = JFactory::getApplication(); $model = $this->getModel(); $id = $app->input->get('id'); $file = $app->input->get('file'); if ($model->compileLess($file)) { $this->setMessage(JText::_('COM_TEMPLATES_COMPILE_SUCCESS')); } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_COMPILE_ERROR'), 'error'); } $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } /** * Method for deleting a file. * * @return void * * @since 3.2 */ public function delete() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $model = $this->getModel(); $id = $app->input->get('id'); $file = $app->input->get('file'); if (base64_decode(urldecode($file)) == 'index.php') { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_INDEX_DELETE'), 'warning'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } elseif ($model->deleteFile($file)) { $this->setMessage(JText::_('COM_TEMPLATES_FILE_DELETE_SUCCESS')); $file = base64_encode('home'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_FILE_DELETE'), 'error'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } } /** * Method for creating a new file. * * @return void * * @since 3.2 */ public function createFile() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $model = $this->getModel(); $id = $app->input->get('id'); $file = $app->input->get('file'); $name = $app->input->get('name'); $location = base64_decode($app->input->get('address')); $type = $app->input->get('type'); if ($type == 'null') { $app->enqueueMessage(JText::_('COM_TEMPLATES_INVALID_FILE_TYPE'), 'error'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } elseif (!preg_match('/^[a-zA-Z0-9-_]+$/', $name)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_INVALID_FILE_NAME'), 'error'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } elseif ($model->createFile($name, $type, $location)) { $this->setMessage(JText::_('COM_TEMPLATES_FILE_CREATE_SUCCESS')); $file = urlencode(base64_encode($location . '/' . $name . '.' . $type)); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_FILE_CREATE'), 'error'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } } /** * Method for uploading a file. * * @return void * * @since 3.2 */ public function uploadFile() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $model = $this->getModel(); $id = $app->input->get('id'); $file = $app->input->get('file'); $upload = $app->input->files->get('files'); $location = base64_decode($app->input->get('address')); if ($return = $model->uploadFile($upload, $location)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_UPLOAD_SUCCESS') . $upload['name']); $redirect = base64_encode($return); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $redirect; $this->setRedirect(JRoute::_($url, false)); } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_FILE_UPLOAD'), 'error'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } } /** * Method for creating a new folder. * * @return void * * @since 3.2 */ public function createFolder() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $model = $this->getModel(); $id = $app->input->get('id'); $file = $app->input->get('file'); $name = $app->input->get('name'); $location = base64_decode($app->input->get('address')); if (!preg_match('/^[a-zA-Z0-9-_.]+$/', $name)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_INVALID_FOLDER_NAME'), 'error'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } elseif ($model->createFolder($name, $location)) { $this->setMessage(JText::_('COM_TEMPLATES_FOLDER_CREATE_SUCCESS')); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_FOLDER_CREATE'), 'error'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } } /** * Method for deleting a folder. * * @return void * * @since 3.2 */ public function deleteFolder() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $model = $this->getModel(); $id = $app->input->get('id'); $file = $app->input->get('file'); $location = base64_decode($app->input->get('address')); if (empty($location)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_ROOT_DELETE'), 'warning'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } elseif ($model->deleteFolder($location)) { $this->setMessage(JText::_('COM_TEMPLATES_FOLDER_DELETE_SUCCESS')); if (stristr(base64_decode($file), $location) != false) { $file = base64_encode('home'); } $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_FOLDER_DELETE_ERROR'), 'error'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } } /** * Method for renaming a file. * * @return void * * @since 3.2 */ public function renameFile() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $model = $this->getModel(); $id = $app->input->get('id'); $file = $app->input->get('file'); $newName = $app->input->get('new_name'); if (base64_decode(urldecode($file)) == 'index.php') { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_RENAME_INDEX'), 'warning'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } elseif (!preg_match('/^[a-zA-Z0-9-_]+$/', $newName)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_INVALID_FILE_NAME'), 'error'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } elseif ($rename = $model->renameFile($file, $newName)) { $this->setMessage(JText::_('COM_TEMPLATES_FILE_RENAME_SUCCESS')); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $rename; $this->setRedirect(JRoute::_($url, false)); } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_FILE_RENAME'), 'error'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } } /** * Method for cropping an image. * * @return void * * @since 3.2 */ public function cropImage() { $app = JFactory::getApplication(); $id = $app->input->get('id'); $file = $app->input->get('file'); $x = $app->input->get('x'); $y = $app->input->get('y'); $w = $app->input->get('w'); $h = $app->input->get('h'); $model = $this->getModel(); if (empty($w) && empty($h) && empty($x) && empty($y)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_CROP_AREA_ERROR'), 'error'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } elseif ($model->cropImage($file, $w, $h, $x, $y)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_CROP_SUCCESS')); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_CROP_ERROR'), 'error'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } } /** * Method for resizing an image. * * @return void * * @since 3.2 */ public function resizeImage() { $app = JFactory::getApplication(); $id = $app->input->get('id'); $file = $app->input->get('file'); $width = $app->input->get('width'); $height = $app->input->get('height'); $model = $this->getModel(); if ($model->resizeImage($file, $width, $height)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_RESIZE_SUCCESS')); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_RESIZE_ERROR'), 'error'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } } /** * Method for copying a file. * * @return void * * @since 3.2 */ public function copyFile() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $id = $app->input->get('id'); $file = $app->input->get('file'); $newName = $app->input->get('new_name'); $location = base64_decode($app->input->get('address')); $model = $this->getModel(); if (!preg_match('/^[a-zA-Z0-9-_]+$/', $newName)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_INVALID_FILE_NAME'), 'error'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } elseif ($model->copyFile($newName, $location, $file)) { $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_COPY_FAIL'), 'error'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } } /** * Method for extracting an archive file. * * @return void * * @since 3.2 */ public function extractArchive() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $id = $app->input->get('id'); $file = $app->input->get('file'); $model = $this->getModel(); if ($model->extractArchive($file)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_ARCHIVE_EXTRACT_SUCCESS')); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_ARCHIVE_EXTRACT_FAIL'), 'error'); $url = 'index.php?option=com_templates&view=template&id=' . $id . '&file=' . $file; $this->setRedirect(JRoute::_($url, false)); } } } PKb��\�M�%ff/components/com_templates/controllers/styles.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Template styles list controller class. * * @since 1.6 */ class TemplatesControllerStyles extends JControllerAdmin { /** * Method to clone and existing template style. * * @return void */ public function duplicate() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $pks = $this->input->post->get('cid', array(), 'array'); try { if (empty($pks)) { throw new Exception(JText::_('COM_TEMPLATES_NO_TEMPLATE_SELECTED')); } JArrayHelper::toInteger($pks); $model = $this->getModel(); $model->duplicate($pks); $this->setMessage(JText::_('COM_TEMPLATES_SUCCESS_DUPLICATED')); } catch (Exception $e) { JError::raiseWarning(500, $e->getMessage()); } $this->setRedirect('index.php?option=com_templates&view=styles'); } /** * Proxy for getModel. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return JModelLegacy * * @since 1.6 */ public function getModel($name = 'Style', $prefix = 'TemplatesModel', $config = array()) { $model = parent::getModel($name, $prefix, array('ignore_request' => true)); return $model; } /** * Method to set the home template for a client. * * @return void * * @since 1.6 */ public function setDefault() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $pks = $this->input->post->get('cid', array(), 'array'); try { if (empty($pks)) { throw new Exception(JText::_('COM_TEMPLATES_NO_TEMPLATE_SELECTED')); } JArrayHelper::toInteger($pks); // Pop off the first element. $id = array_shift($pks); $model = $this->getModel(); $model->setHome($id); $this->setMessage(JText::_('COM_TEMPLATES_SUCCESS_HOME_SET')); } catch (Exception $e) { JError::raiseWarning(500, $e->getMessage()); } $this->setRedirect('index.php?option=com_templates&view=styles'); } /** * Method to unset the default template for a client and for a language * * @return void * * @since 1.6 */ public function unsetDefault() { // Check for request forgeries JSession::checkToken('request') or jexit(JText::_('JINVALID_TOKEN')); $pks = $this->input->get->get('cid', array(), 'array'); JArrayHelper::toInteger($pks); try { if (empty($pks)) { throw new Exception(JText::_('COM_TEMPLATES_NO_TEMPLATE_SELECTED')); } // Pop off the first element. $id = array_shift($pks); $model = $this->getModel(); $model->unsetHome($id); $this->setMessage(JText::_('COM_TEMPLATES_SUCCESS_HOME_UNSET')); } catch (Exception $e) { JError::raiseWarning(500, $e->getMessage()); } $this->setRedirect('index.php?option=com_templates&view=styles'); } } PKb��\�0.|mm#components/com_templates/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="templates" label="COM_TEMPLATES_SUBMENU_TEMPLATES" description="COM_TEMPLATES_CONFIG_FIELDSET_DESC"> <field name="template_positions_display" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_TEMPLATES_CONFIG_POSITIONS_LABEL" description="COM_TEMPLATES_CONFIG_POSITIONS_DESC"> <option value="1">JENABLED</option> <option value="0">JDISABLED</option> </field> <field name="upload_limit" type="text" label="COM_TEMPLATES_CONFIG_UPLOAD_LABEL" description="COM_TEMPLATES_CONFIG_UPLOAD_DESC" default="2" extension="com_templates" /> <field name="warning" type="note" label="COM_TEMPLATES_CONFIG_SUPPORTED_LABEL" description="COM_TEMPLATES_CONFIG_SUPPORTED_DESC" default="zip" extension="com_templates" /> <field name="image_formats" type="text" label="COM_TEMPLATES_CONFIG_IMAGE_LABEL" description="COM_TEMPLATES_CONFIG_IMAGE_DESC" default="gif,bmp,jpg,jpeg" extension="com_templates" /> <field name="source_formats" type="text" label="COM_TEMPLATES_CONFIG_SOURCE_LABEL" description="COM_TEMPLATES_CONFIG_SOURCE_DESC" default="txt,less,ini,xml,js,php,css" extension="com_templates" /> <field name="font_formats" type="text" label="COM_TEMPLATES_CONFIG_FONT_LABEL" description="COM_TEMPLATES_CONFIG_FONT_DESC" default="woff,ttf,otf" extension="com_templates" /> <field name="compressed_formats" type="hidden" default="zip" extension="com_templates" /> </fieldset> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_templates" section="component" /> </fieldset> </config> PKb��\>�jc66#components/com_templates/access.xmlnu�[���<?xml version="1.0" encoding="utf-8" ?> <access component="com_templates"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> </section> </access> PKb��\��L���&components/com_templates/templates.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.tabstate'); $app = JFactory::getApplication(); $user = JFactory::getUser(); if (!$user->authorise('core.manage', 'com_templates')) { $app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'error'); return false; } JLoader::register('TemplatesHelper', __DIR__ . '/helpers/templates.php'); $controller = JControllerLegacy::getInstance('Templates'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\M�!���9components/com_templates/views/templates/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&view=templates'); ?>" method="post" name="adminForm" id="adminForm"> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('COM_TEMPLATES_TEMPLATES_FILTER_SEARCH_DESC'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_TEMPLATES_TEMPLATES_FILTER_SEARCH_DESC'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> </div> <div class="clearfix"> </div> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('COM_TEMPLATES_MSG_MANAGE_NO_TEMPLATES'); ?> </div> <?php else : ?> <table class="table table-striped" id="template-mgr"> <thead> <tr> <th class="col1template hidden-phone">   </th> <th> <?php echo JHtml::_('grid.sort', 'COM_TEMPLATES_HEADING_TEMPLATE', 'a.element', $listDirn, $listOrder); ?> </th> <th width="10%"> <?php echo JHtml::_('grid.sort', 'JCLIENT', 'a.client_id', $listDirn, $listOrder); ?> </th> <th width="10%" class="hidden-phone"> <?php echo JText::_('JVERSION'); ?> </th> <th width="15%" class="hidden-phone"> <?php echo JText::_('JDATE'); ?> </th> <th width="25%" class="hidden-phone" > <?php echo JText::_('JAUTHOR'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="8"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center hidden-phone"> <?php echo JHtml::_('templates.thumb', $item->element, $item->client_id); ?> </td> <td class="template-name"> <a href="<?php echo JRoute::_('index.php?option=com_templates&view=template&id=' . (int) $item->extension_id . '&file=' . $this->file); ?>"> <?php echo JText::sprintf('COM_TEMPLATES_TEMPLATE_DETAILS', ucfirst($item->name)); ?></a> <p> <?php if ($this->preview && $item->client_id == '0') : ?> <a href="<?php echo JUri::root() . 'index.php?tp=1&template=' . $item->element; ?>" target="_blank"> <?php echo JText::_('COM_TEMPLATES_TEMPLATE_PREVIEW'); ?></a> <?php elseif ($item->client_id == '1') : ?> <?php echo JText::_('COM_TEMPLATES_TEMPLATE_NO_PREVIEW_ADMIN'); ?> <?php else : ?> <span class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_TEMPLATES_TEMPLATE_NO_PREVIEW_DESC'); ?>"> <?php echo JText::_('COM_TEMPLATES_TEMPLATE_NO_PREVIEW'); ?></span> <?php endif; ?> </p> </td> <td class="small"> <?php echo $item->client_id == 0 ? JText::_('JSITE') : JText::_('JADMINISTRATOR'); ?> </td> <td class="small hidden-phone"> <?php echo $this->escape($item->xmldata->get('version')); ?> </td> <td class="small hidden-phone"> <?php echo $this->escape($item->xmldata->get('creationDate')); ?> </td> <td class="hidden-phone"> <?php if ($author = $item->xmldata->get('author')) : ?> <p><?php echo $this->escape($author); ?></p> <?php else : ?> — <?php endif; ?> <?php if ($email = $item->xmldata->get('authorEmail')) : ?> <p><?php echo $this->escape($email); ?></p> <?php endif; ?> <?php if ($url = $item->xmldata->get('authorUrl')) : ?> <p><a href="<?php echo $this->escape($url); ?>"> <?php echo $this->escape($url); ?></a></p> <?php endif; ?> </td> <?php echo JHtml::_('templates.thumbModal', $item->element, $item->client_id); ?> </tr> <?php endforeach; ?> </tbody> </table> <?php endif;?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\��W* * 6components/com_templates/views/templates/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of template styles. * * @since 1.6 */ class TemplatesViewTemplates extends JViewLegacy { /** * @var array * @since 1.6 */ protected $items; /** * @var object * @since 1.6 */ protected $pagination; /** * @var object * @since 1.6 */ protected $state; /** * @var string * @since 3.2 */ protected $file; /** * 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 a Error object. * * @since 1.6 */ public function display($tpl = null) { $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); $this->preview = JComponentHelper::getParams('com_templates')->get('template_positions_display'); $this->file = base64_encode('home'); TemplatesHelper::addSubmenu('templates'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); return parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_templates'); JToolbarHelper::title(JText::_('COM_TEMPLATES_MANAGER_TEMPLATES'), 'eye thememanager'); if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences('com_templates'); JToolbarHelper::divider(); } JToolbarHelper::help('JHELP_EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES'); JHtmlSidebar::setAction('index.php?option=com_templates&view=templates'); JHtmlSidebar::addFilter( JText::_('JGLOBAL_FILTER_CLIENT'), 'filter_client_id', JHtml::_('select.options', TemplatesHelper::getClientOptions(), 'value', 'text', $this->state->get('filter.client_id')) ); $this->sidebar = JHtmlSidebar::render(); } } PKb��\M'2components/com_templates/views/style/view.json.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View to edit a template style. * * @since 1.6 */ class TemplatesViewStyle extends JViewLegacy { /** * The JObject (on success, false on failure) * * @var JObject */ protected $item; /** * The form object * * @var JForm */ protected $form; /** * The model state * * @var JObject */ protected $state; /** * 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 a Error object. * * @since 1.6 */ public function display($tpl = null) { try { $this->item = $this->get('Item'); } catch (Exception $e) { $app = JFactory::getApplication(); $app->enqueueMessage($e->getMessage(), 'error'); return false; } $paramsList = $this->item->getProperties(); unset($paramsList['xml']); $paramsList = json_encode($paramsList); return $paramsList; } } PKb��\:`�=components/com_templates/views/style/tmpl/edit_assignment.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Initiasile related data. require_once JPATH_ADMINISTRATOR . '/components/com_menus/helpers/menus.php'; $menuTypes = MenusHelper::getMenuLinks(); $user = JFactory::getUser(); ?> <label id="jform_menuselect-lbl" for="jform_menuselect"><?php echo JText::_('JGLOBAL_MENU_SELECTION'); ?></label> <div class="btn-toolbar"> <button class="btn" type="button" class="jform-rightbtn" onclick="jQuery('.chk-menulink').attr('checked', !jQuery('.chk-menulink').attr('checked'));"> <span class="icon-checkbox-partial"></span> <?php echo JText::_('JGLOBAL_SELECTION_INVERT_ALL'); ?> </button> </div> <div id="menu-assignment"> <ul class="menu-links thumbnails"> <?php foreach ($menuTypes as &$type) : ?> <li class="span3"> <div class="thumbnail"> <button class="btn" type="button" class="jform-rightbtn" onclick="jQuery('.<?php echo $type->menutype; ?>').attr('checked', !jQuery('.<?php echo $type->menutype; ?>').attr('checked'));"> <span class="icon-checkbox-partial"></span> <?php echo JText::_('JGLOBAL_SELECTION_INVERT'); ?> </button> <h5><?php echo $type->title ? $type->title : $type->menutype; ?></h5> <?php foreach ($type->links as $link) : ?> <label class="checkbox small" for="link<?php echo (int) $link->value;?>" > <input type="checkbox" name="jform[assigned][]" value="<?php echo (int) $link->value;?>" id="link<?php echo (int) $link->value;?>"<?php if ($link->template_style_id == $this->item->id):?> checked="checked"<?php endif;?><?php if ($link->checked_out && $link->checked_out != $user->id):?> disabled="disabled"<?php else:?> class="chk-menulink <?php echo $type->menutype; ?>"<?php endif;?> /> <?php echo $link->text; ?> </label> <?php endforeach; ?> </div> </li> <?php endforeach; ?> </ul> </div> PKb��\� ;//:components/com_templates/views/style/tmpl/edit_options.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Load chosen.css JHtml::_('formbehavior.chosen', 'select'); ?> <?php echo JHtml::_('bootstrap.startAccordion', 'templatestyleOptions', array('active' => 'collapse0')); $fieldSets = $this->form->getFieldsets('params'); $i = 0; foreach ($fieldSets as $name => $fieldSet) : $label = !empty($fieldSet->label) ? $fieldSet->label : 'COM_TEMPLATES_' . $name . '_FIELDSET_LABEL'; echo JHtml::_('bootstrap.addSlide', 'templatestyleOptions', JText::_($label), 'collapse' . ($i++)); if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="tip">' . $this->escape(JText::_($fieldSet->description)) . '</p>'; endif; ?> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <div class="control-group"> <div class="control-label"> <?php echo $field->label; ?> </div> <div class="controls"> <?php echo $field->input; ?> </div> </div> <?php endforeach; echo JHtml::_('bootstrap.endSlide'); endforeach; echo JHtml::_('bootstrap.endAccordion'); PKb��\��I� � 2components/com_templates/views/style/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); JHtml::_('formbehavior.chosen', 'select'); $user = JFactory::getUser(); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'style.cancel' || document.formvalidator.isValid(document.getElementById('style-form'))) { Joomla.submitform(task, document.getElementById('style-form')); } }; "); ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="style-form" class="form-validate"> <?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?> <div class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'details')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'details', JText::_('JDETAILS', true)); ?> <div class="row-fluid"> <div class="span9"> <h3> <?php echo JText::_($this->item->template); ?> </h3> <div class="info-labels"> <span class="label hasTooltip" title="<?php echo JHtml::tooltipText('COM_TEMPLATES_FIELD_CLIENT_LABEL'); ?>"> <?php echo $this->item->client_id == 0 ? JText::_('JSITE') : JText::_('JADMINISTRATOR'); ?> </span> </div> <div> <p><?php echo JText::_($this->item->xml->description); ?></p> <?php $this->fieldset = 'description'; $description = JLayoutHelper::render('joomla.edit.fieldset', $this); ?> <?php if ($description) : ?> <p class="readmore"> <a href="#" onclick="jQuery('.nav-tabs a[href=#description]').tab('show');"> <?php echo JText::_('JGLOBAL_SHOW_FULL_DESCRIPTION'); ?> </a> </p> <?php endif; ?> </div> <?php $this->fieldset = 'basic'; $html = JLayoutHelper::render('joomla.edit.fieldset', $this); echo $html ? '<hr />' . $html : ''; ?> </div> <div class="span3"> <?php // Set main fields. $this->fields = array( 'home', 'client_id', 'template' ); ?> <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php if ($description) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'description', JText::_('JGLOBAL_FIELDSET_DESCRIPTION', true)); ?> <?php echo $description; ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php $this->fieldsets = array(); $this->ignore_fieldsets = array('basic', 'description'); echo JLayoutHelper::render('joomla.edit.params', $this); ?> <?php if ($user->authorise('core.edit', 'com_menu') && $this->item->client_id == 0 && $this->canDo->get('core.edit.state')) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'assignment', JText::_('COM_TEMPLATES_MENUS_ASSIGNMENT', true)); ?> <?php echo $this->loadTemplate('assignment'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\��� 2components/com_templates/views/style/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View to edit a template style. * * @since 1.6 */ class TemplatesViewStyle extends JViewLegacy { /** * The JObject (on success, false on failure) * * @var JObject */ protected $item; /** * The form object * * @var JForm */ protected $form; /** * The model state * * @var JObject */ protected $state; /** * 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 a Error object. * * @since 1.6 */ public function display($tpl = null) { $this->item = $this->get('Item'); $this->state = $this->get('State'); $this->form = $this->get('Form'); $this->canDo = JHelperContent::getActions('com_templates'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); return parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JFactory::getApplication()->input->set('hidemainmenu', true); $isNew = ($this->item->id == 0); $canDo = $this->canDo; JToolbarHelper::title( $isNew ? JText::_('COM_TEMPLATES_MANAGER_ADD_STYLE') : JText::_('COM_TEMPLATES_MANAGER_EDIT_STYLE'), 'eye thememanager' ); // If not checked out, can save the item. if ($canDo->get('core.edit')) { JToolbarHelper::apply('style.apply'); JToolbarHelper::save('style.save'); } // If an existing item, can save to a copy. if (!$isNew && $canDo->get('core.create')) { JToolbarHelper::save2copy('style.save2copy'); } if (empty($this->item->id)) { JToolbarHelper::cancel('style.cancel'); } else { JToolbarHelper::cancel('style.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); // Get the help information for the template item. $lang = JFactory::getLanguage(); $help = $this->get('Help'); if ($lang->hasKey($help->url)) { $debug = $lang->setDebug(false); $url = JText::_($help->url); $lang->setDebug($debug); } else { $url = null; } JToolbarHelper::help($help->key, false, $url); } } PKb��\a,�Gww6components/com_templates/views/styles/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&view=styles'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER_LABEL'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_TEMPLATES_STYLES_FILTER_SEARCH_DESC'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> </div> <div class="clear"> </div> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('COM_TEMPLATES_MSG_MANAGE_NO_STYLES'); ?> </div> <?php else : ?> <table class="table table-striped" id="styleList"> <thead> <tr> <th width="5">   </th> <th> <?php echo JHtml::_('grid.sort', 'COM_TEMPLATES_HEADING_STYLE', 'a.title', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap center"> <?php echo JHtml::_('grid.sort', 'COM_TEMPLATES_HEADING_DEFAULT', 'a.home', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap center hidden-phone"> <?php echo JText::_('COM_TEMPLATES_HEADING_ASSIGNED'); ?> </th> <th width="10%" class="nowrap"> <?php echo JHtml::_('grid.sort', 'JCLIENT', 'a.client_id', $listDirn, $listOrder); ?> </th> <th class="hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_TEMPLATES_HEADING_TEMPLATE', 'a.template', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="8"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : $canCreate = $user->authorise('core.create', 'com_templates'); $canEdit = $user->authorise('core.edit', 'com_templates'); $canChange = $user->authorise('core.edit.state', 'com_templates'); ?> <tr class="row<?php echo $i % 2; ?>"> <td width="1%" class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td> <?php if ($this->preview && $item->client_id == '0') : ?> <a target="_blank" href="<?php echo JUri::root() . 'index.php?tp=1&templateStyle=' . (int) $item->id ?>" class="jgrid"> <span class="icon-eye-open hasTooltip" title="<?php echo JHtml::tooltipText(JText::_('COM_TEMPLATES_TEMPLATE_PREVIEW'), $item->title, 0); ?>" ></span></a> <?php elseif ($item->client_id == '1') : ?> <span class="icon-eye-close disabled hasTooltip" title="<?php echo JHtml::tooltipText('COM_TEMPLATES_TEMPLATE_NO_PREVIEW_ADMIN'); ?>" ></span> <?php else: ?> <span class="icon-eye-close disabled hasTooltip" title="<?php echo JHtml::tooltipText('COM_TEMPLATES_TEMPLATE_NO_PREVIEW'); ?>" ></span> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_templates&task=style.edit&id=' . (int) $item->id); ?>"> <?php echo $this->escape($item->title);?></a> <?php else : ?> <?php echo $this->escape($item->title);?> <?php endif; ?> </td> <td class="center"> <?php if ($item->home == '0' || $item->home == '1'):?> <?php echo JHtml::_('jgrid.isdefault', $item->home != '0', $i, 'styles.', $canChange && $item->home != '1');?> <?php elseif ($canChange):?> <a href="<?php echo JRoute::_('index.php?option=com_templates&task=styles.unsetDefault&cid[]=' . $item->id . '&' . JSession::getFormToken() . '=1');?>"> <?php echo JHtml::_('image', 'mod_languages/' . $item->image . '.gif', $item->language_title, array('title' => JText::sprintf('COM_TEMPLATES_GRID_UNSET_LANGUAGE', $item->language_title)), true);?> </a> <?php else:?> <?php echo JHtml::_('image', 'mod_languages/' . $item->image . '.gif', $item->language_title, array('title' => $item->language_title), true);?> <?php endif;?> </td> <td class="center hidden-phone"> <?php if ($item->assigned > 0) : ?> <span class="icon-ok tip hasTooltip" title="<?php echo JHtml::tooltipText(JText::plural('COM_TEMPLATES_ASSIGNED', $item->assigned), '', 0); ?>"></span> <?php else : ?>   <?php endif; ?> </td> <td class="small"> <?php echo $item->client_id == 0 ? JText::_('JSITE') : JText::_('JADMINISTRATOR'); ?> </td> <td class="hidden-phone"> <label for="cb<?php echo $i;?>" class="small"> <a href="<?php echo JRoute::_('index.php?option=com_templates&view=template&id=' . (int) $item->e_id); ?> "> <?php echo ucfirst($this->escape($item->template));?> </a> </label> </td> <td class="hidden-phone"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif;?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\zEnYY3components/com_templates/views/styles/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of template styles. * * @since 1.6 */ class TemplatesViewStyles extends JViewLegacy { protected $items; protected $pagination; protected $state; /** * 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 a Error object. */ public function display($tpl = null) { $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); $this->preview = JComponentHelper::getParams('com_templates')->get('template_positions_display'); TemplatesHelper::addSubmenu('styles'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); return parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_templates'); JToolbarHelper::title(JText::_('COM_TEMPLATES_MANAGER_STYLES'), 'eye thememanager'); if ($canDo->get('core.edit.state')) { JToolbarHelper::makeDefault('styles.setDefault', 'COM_TEMPLATES_TOOLBAR_SET_HOME'); JToolbarHelper::divider(); } if ($canDo->get('core.edit')) { JToolbarHelper::editList('style.edit'); } if ($canDo->get('core.create')) { JToolbarHelper::custom('styles.duplicate', 'copy.png', 'copy_f2.png', 'JTOOLBAR_DUPLICATE', true); JToolbarHelper::divider(); } if ($canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'styles.delete'); JToolbarHelper::divider(); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences('com_templates'); JToolbarHelper::divider(); } JToolbarHelper::help('JHELP_EXTENSIONS_TEMPLATE_MANAGER_STYLES'); JHtmlSidebar::setAction('index.php?option=com_templates&view=styles'); JHtmlSidebar::addFilter( JText::_('COM_TEMPLATES_FILTER_TEMPLATE'), 'filter_template', JHtml::_( 'select.options', TemplatesHelper::getTemplateOptions($this->state->get('filter.client_id')), 'value', 'text', $this->state->get('filter.template') ) ); JHtmlSidebar::addFilter( JText::_('JGLOBAL_FILTER_CLIENT'), 'filter_client_id', JHtml::_('select.options', TemplatesHelper::getClientOptions(), 'value', 'text', $this->state->get('filter.client_id')) ); } } PKb��\S��OODcomponents/com_templates/views/template/tmpl/default_description.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="pull-left"> <?php echo JHtml::_('templates.thumb', $this->template->element, $this->template->client_id); ?> <?php echo JHtml::_('templates.thumbModal', $this->template->element, $this->template->client_id); ?> </div> <h2><?php echo ucfirst($this->template->element); ?></h2> <?php $client = JApplicationHelper::getClientInfo($this->template->client_id); ?> <p><?php $this->template->xmldata = TemplatesHelper::parseXMLTemplateFile($client->path, $this->template->element);?></p> <p><?php echo JText::_($this->template->xmldata->description); ?></p>PKb��\�&��__9components/com_templates/views/template/tmpl/readonly.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2014 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); $input = JFactory::getApplication()->input; ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&view=template&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" name="adminForm" id="adminForm" class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'description')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'description', JText::_('COM_TEMPLATES_TAB_DESCRIPTION', true)); ?> <?php echo $this->loadTemplate('description');?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\FIsO��=components/com_templates/views/template/tmpl/default_tree.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ksort($this->files, SORT_STRING); ?> <ul class='nav nav-list directory-tree'> <?php foreach($this->files as $key => $value): ?> <?php if(is_array($value)): ?> <?php $keyArray = explode('/', $key); $fileArray = explode('/', $this->fileName); $count = 0; if (count($fileArray) >= count($keyArray)) { for ($i = 0; $i < count($keyArray); $i++) { if ($keyArray[$i] === $fileArray[$i]) { $count++; } } if ($count == count($keyArray)) { $class = "folder show"; } else { $class = "folder"; } } else { $class = "folder"; } ?> <li class="<?php echo $class; ?>"> <a class='folder-url nowrap' href=''> <span class='icon-folder-close'> <?php $explodeArray = explode('/', $key); echo end($explodeArray); ?></span> </a> <?php echo $this->directoryTree($value); ?> </li> <?php endif; ?> <?php if(is_object($value)): ?> <li> <a class="file nowrap" href='<?php echo JRoute::_('index.php?option=com_templates&view=template&id=' . $this->id . '&file=' . $value->id) ?>'> <span class='icon-file'> <?php echo $value->name; ?></span> </a> </li> <?php endif; ?> <?php endforeach; ?> </ul> PKb��\�@�P�W�W8components/com_templates/views/template/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('formbehavior.chosen', 'select'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); JHtml::_('behavior.tabstate'); $input = JFactory::getApplication()->input; // No access if not global SuperUser if (!JFactory::getUser()->authorise('core.admin')) { JFactory::getApplication()->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'error'); } if ($this->type == 'image') { JHtml::_('script', 'system/jquery.Jcrop.min.js', false, true); JHtml::_('stylesheet', 'system/jquery.Jcrop.min.css', array(), true); } JFactory::getDocument()->addScriptDeclaration(" jQuery(document).ready(function($){ // Hide all the folder when the page loads $('.folder ul, .component-folder ul').hide(); // Display the tree after loading $('.directory-tree').removeClass('directory-tree'); // Show all the lists in the path of an open file $('.show > ul').show(); // Stop the default action of anchor tag on a click event $('.folder-url, .component-folder-url').click(function(event){ event.preventDefault(); }); // Prevent the click event from proliferating $('.file, .component-file-url').bind('click',function(e){ e.stopPropagation(); }); // Toggle the child indented list on a click event $('.folder, .component-folder').bind('click',function(e){ $(this).children('ul').toggle(); e.stopPropagation(); }); // New file tree $('#fileModal .folder-url').bind('click',function(e){ $('.folder-url').removeClass('selected'); e.stopPropagation(); $('#fileModal input.address').val($(this).attr('data-id')); $(this).addClass('selected'); }); // Folder manager tree $('#folderModal .folder-url').bind('click',function(e){ $('.folder-url').removeClass('selected'); e.stopPropagation(); $('#folderModal input.address').val($(this).attr('data-id')); $(this).addClass('selected'); }); });"); if($this->type == 'image') { JFactory::getDocument()->addScriptDeclaration(" jQuery(document).ready(function($) { var jcrop_api; // Configuration for image cropping $('#image-crop').Jcrop({ onChange: showCoords, onSelect: showCoords, onRelease: clearCoords, trueSize: [" . $this->image['width'] . "," . $this->image['height'] . "] },function(){ jcrop_api = this; }); // Function for calculating the crop coordinates function showCoords(c) { $('#x').val(c.x); $('#y').val(c.y); $('#w').val(c.w); $('#h').val(c.h); }; // Function for clearing the coordinates function clearCoords() { $('#adminForm input').val(''); }; });"); } JFactory::getDocument()->addStyleDeclaration(" /* Styles for modals */ .selected{ background: #08c; color: #fff; } .selected:hover{ background: #08c !important; color: #fff; } .modal-body .column { width: 50%; float: left; } #deleteFolder{ margin: 0; } #image-crop{ max-width: 100% !important; width: auto; height: auto; } .directory-tree{ display: none; } .tree-holder{ overflow-x: auto; } "); if($this->type == 'font') { JFactory::getDocument()->addStyleDeclaration( "/* Styles for font preview */ @font-face { font-family: previewFont; src: url('" . $this->font['address'] . "') } .font-preview{ font-family: previewFont !important; }" ); } ?> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'editor')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'editor', JText::_('COM_TEMPLATES_TAB_EDITOR', true)); ?> <div class="row-fluid"> <div class="span12"> <?php if($this->type == 'file'): ?> <p class="well well-small lead"><?php echo JText::sprintf('COM_TEMPLATES_TEMPLATE_FILENAME', $this->source->filename, $this->template->element); ?></p> <?php endif; ?> <?php if($this->type == 'image'): ?> <p class="well well-small lead"><?php echo JText::sprintf('COM_TEMPLATES_TEMPLATE_FILENAME', $this->image['path'], $this->template->element); ?></p> <?php endif; ?> <?php if($this->type == 'font'): ?> <p class="well well-small lead"><?php echo JText::sprintf('COM_TEMPLATES_TEMPLATE_FILENAME', $this->font['rel_path'], $this->template->element); ?></p> <?php endif; ?> </div> </div> <div class="row-fluid"> <div class="span3 tree-holder"> <?php echo $this->loadTemplate('tree');?> </div> <div class="span9"> <?php if($this->type == 'home'): ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&view=template&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" name="adminForm" id="adminForm" class="form-horizontal"> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> <div class="hero-unit" style="text-align: justify;"> <h2><?php echo JText::_('COM_TEMPLATES_HOME_HEADING'); ?></h2> <p><?php echo JText::_('COM_TEMPLATES_HOME_TEXT'); ?></p> <p> <a href="https://docs.joomla.org/J3.2:How_to_use_the_Template_Manager" target="_blank" class="btn btn-primary btn-large"> <?php echo JText::_('COM_TEMPLATES_HOME_BUTTON'); ?> </a> </p> </div> </form> <?php endif; ?> <?php if($this->type == 'file'): ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&view=template&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" name="adminForm" id="adminForm" class="form-horizontal"> <div class="editor-border"> <?php echo $this->form->getInput('source'); ?> </div> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> <?php echo $this->form->getInput('extension_id'); ?> <?php echo $this->form->getInput('filename'); ?> </form> <?php endif; ?> <?php if($this->type == 'archive'): ?> <legend><?php echo JText::_('COM_TEMPLATES_FILE_CONTENT_PREVIEW'); ?></legend> <form action="<?php echo JRoute::_('index.php?option=com_templates&view=template&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" name="adminForm" id="adminForm" class="form-horizontal"> <ul class="nav nav-stacked nav-list well"> <?php foreach ($this->archive as $file): ?> <li> <?php if (substr($file, -1) === DIRECTORY_SEPARATOR): ?> <span class="icon-folder"></span> <?php echo $file; ?> <?php endif; ?> <?php if (substr($file, -1) != DIRECTORY_SEPARATOR): ?> <span class="icon-file"></span> <?php echo $file; ?> <?php endif; ?> </li> <?php endforeach; ?> </ul> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> <?php endif; ?> <?php if($this->type == 'image'): ?> <img id="image-crop" src="<?php echo $this->image['address'] . '?' . time(); ?>" /> <form action="<?php echo JRoute::_('index.php?option=com_templates&view=template&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" name="adminForm" id="adminForm" class="form-horizontal"> <fieldset class="adminform"> <input type ="hidden" id="x" name="x" /> <input type ="hidden" id="y" name="y" /> <input type ="hidden" id="h" name="h" /> <input type ="hidden" id="w" name="w" /> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </fieldset> </form> <?php endif; ?> <?php if($this->type == 'font'): ?> <div class="font-preview"> <form action="<?php echo JRoute::_('index.php?option=com_templates&view=template&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" name="adminForm" id="adminForm" class="form-horizontal"> <fieldset class="adminform"> <p class="lead">H1</p><h1>Quickly gaze at Joomla! views from HTML, CSS, JavaScript and XML </h1> <p class="lead">H2</p><h2>Quickly gaze at Joomla! views from HTML, CSS, JavaScript and XML </h2> <p class="lead">H3</p><h3>Quickly gaze at Joomla! views from HTML, CSS, JavaScript and XML </h3> <p class="lead">H4</p><h4>Quickly gaze at Joomla! views from HTML, CSS, JavaScript and XML </h4> <p class="lead">H5</p><h5>Quickly gaze at Joomla! views from HTML, CSS, JavaScript and XML </h5> <p class="lead">H6</p> <h6>Quickly gaze at Joomla! views from HTML, CSS, JavaScript and XML </h6> <p class="lead">Bold</p><b>Quickly gaze at Joomla! views from HTML, CSS, JavaScript and XML </b> <p class="lead">Italics</p><i>Quickly gaze at Joomla! views from HTML, CSS, JavaScript and XML </i> <p class="lead">Unordered List</p> <ul> <li>Item</li> <li>Item</li> <li>Item<br /> <ul> <li>Item</li> <li>Item</li> <li>Item<br /> <ul> <li>Item</li> <li>Item</li> <li>Item</li> </ul> </li> </ul> </li> </ul> <p class="lead">Ordered List</p> <ol> <li>Item</li> <li>Item</li> <li>Item<br /> <ul> <li>Item</li> <li>Item</li> <li>Item<br /> <ul> <li>Item</li> <li>Item</li> <li>Item</li> </ul> </li> </ul> </li> </ol> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </fieldset> </form> </div> <?php endif; ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'overrides', JText::_('COM_TEMPLATES_TAB_OVERRIDES', true)); ?> <div class="row-fluid"> <div class="span4"> <legend><?php echo JText::_('COM_TEMPLATES_OVERRIDES_MODULES');?></legend> <ul class="nav nav-list"> <?php $token = JSession::getFormToken() . '=' . 1; ?> <?php foreach($this->overridesList['modules'] as $module): ?> <li> <?php $overrideLinkUrl = 'index.php?option=com_templates&view=template&task=template.overrides&folder=' . $module->path . '&id=' . $input->getInt('id') . '&file=' . $this->file . '&' . $token; ?> <a href="<?php echo JRoute::_($overrideLinkUrl); ?>"> <span class="icon-copy"></span> <?php echo $module->name; ?> </a> </li> <?php endforeach; ?> </ul> </div> <div class="span4"> <legend><?php echo JText::_('COM_TEMPLATES_OVERRIDES_COMPONENTS');?></legend> <ul class="nav nav-list"> <?php $token = JSession::getFormToken() . '=' . 1; ?> <?php foreach ($this->overridesList['components'] as $key => $value): ?> <li class="component-folder"> <a href="#" class="component-folder-url"> <span class="icon-folder"></span> <?php echo $key; ?> </a> <ul class="nav nav-list"> <?php foreach ($value as $view): ?> <li> <?php $overrideLinkUrl = 'index.php?option=com_templates&view=template&task=template.overrides&folder=' . $view->path . '&id=' . $input->getInt('id') . '&file=' . $this->file . '&' . $token; ?> <a class="component-file-url" href="<?php echo JRoute::_($overrideLinkUrl); ?>"> <span class="icon-copy"></span> <?php echo $view->name; ?> </a> </li> <?php endforeach; ?> </ul> </li> <?php endforeach; ?> </ul> </div> <div class="span4"> <legend><?php echo JText::_('COM_TEMPLATES_OVERRIDES_LAYOUTS');?></legend> <ul class="nav nav-list"> <?php $token = JSession::getFormToken() . '=' . 1; ?> <?php foreach($this->overridesList['layouts'] as $layout): ?> <li> <?php $overrideLinkUrl = 'index.php?option=com_templates&view=template&task=template.overrides&folder=' . $layout->path . '&id=' . $input->getInt('id') . '&file=' . $this->file . '&' . $token; ?> <a href="<?php echo JRoute::_($overrideLinkUrl); ?>"> <span class="icon-copy"></span> <?php echo $layout->name; ?> </a> </li> <?php endforeach; ?> </ul> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'description', JText::_('COM_TEMPLATES_TAB_DESCRIPTION', true)); ?> <?php echo $this->loadTemplate('description');?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&task=template.copy&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" name="adminForm" id="adminForm"> <div id="collapseModal" class="modal hide fade"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3><?php echo JText::_('COM_TEMPLATES_TEMPLATE_COPY');?></h3> </div> <div class="modal-body"> <div id="template-manager-css" class="form-horizontal"> <div class="control-group"> <label for="new_name" class="control-label hasTooltip" title="<?php echo JHtml::tooltipText('COM_TEMPLATES_TEMPLATE_NEW_NAME_DESC'); ?>"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_NEW_NAME_LABEL')?></label> <div class="controls"> <input class="input-xlarge" type="text" id="new_name" name="new_name" /> </div> </div> </div> </div> <div class="modal-footer"> <a href="#" class="btn" data-dismiss="modal"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_CLOSE'); ?></a> <button class="btn btn-primary" type="submit"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_COPY'); ?></button> </div> </div> <?php echo JHtml::_('form.token'); ?> </form> <?php if ($this->type != 'home'): ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&task=template.renameFile&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" > <div id="renameModal" class="modal hide fade"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3><?php echo JText::sprintf('COM_TEMPLATES_RENAME_FILE', $this->fileName); ?></h3> </div> <div class="modal-body"> <div id="template-manager-css" class="form-horizontal"> <div class="control-group"> <label for="new_name" class="control-label hasTooltip" title="<?php echo JHtml::tooltipText(JText::_('COM_TEMPLATES_NEW_FILE_NAME')); ?>"><?php echo JText::_('COM_TEMPLATES_NEW_FILE_NAME')?></label> <div class="controls"> <input class="input-xlarge" type="text" name="new_name" required /> </div> </div> </div> </div> <div class="modal-footer"> <a href="#" class="btn" data-dismiss="modal"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_CLOSE'); ?></a> <button class="btn btn-primary" type="submit"><?php echo JText::_('COM_TEMPLATES_BUTTON_RENAME'); ?></button> </div> </div> <?php echo JHtml::_('form.token'); ?> </form> <?php endif; ?> <?php if ($this->type != 'home'): ?> <div id="deleteModal" class="modal hide fade"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3><?php echo JText::_('COM_TEMPLATES_ARE_YOU_SURE');?></h3> </div> <div class="modal-body"> <p><?php echo JText::sprintf('COM_TEMPLATES_MODAL_FILE_DELETE', $this->fileName); ?></p> </div> <div class="modal-footer"> <form method="post" action=""> <input type="hidden" name="option" value="com_templates" /> <input type="hidden" name="task" value="template.delete" /> <input type="hidden" name="id" value="<? echo $input->getInt('id'); ?>" /> <input type="hidden" name="file" value="<? echo $this->file; ?>" /> <?php echo JHtml::_('form.token'); ?> <a href="#" class="btn" data-dismiss="modal"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_CLOSE'); ?></a> <button type="submit" class="btn btn-danger"><?php echo JText::_('COM_TEMPLATES_BUTTON_DELETE');?></button> </form> </div> </div> <?php endif; ?> <div id="fileModal" class="modal hide fade"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3><?php echo JText::_('COM_TEMPLATES_NEW_FILE_HEADER');?></h3> </div> <div class="modal-body"> <div class="column"> <?php echo $this->loadTemplate('folders');?> </div> <div class="column"> <form method="post" action="<?php echo JRoute::_('index.php?option=com_templates&task=template.createFile&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" class="well" > <fieldset> <label><?php echo JText::_('COM_TEMPLATES_NEW_FILE_TYPE');?></label> <select name="type" required > <option value="null">- <?php echo JText::_('COM_TEMPLATES_NEW_FILE_SELECT');?> -</option> <option value="css">css</option> <option value="php">php</option> <option value="js">js</option> <option value="xml">xml</option> <option value="ini">ini</option> <option value="less">less</option> <option value="txt">txt</option> </select> <label><?php echo JText::_('COM_TEMPLATES_FILE_NAME');?></label> <input type="text" name="name" required /> <input type="hidden" class="address" name="address" /> <?php echo JHtml::_('form.token'); ?> <input type="submit" value="<?php echo JText::_('COM_TEMPLATES_BUTTON_CREATE');?>" class="btn btn-primary" /> </fieldset> </form> <form method="post" action="<?php echo JRoute::_('index.php?option=com_templates&task=template.uploadFile&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" class="well" enctype="multipart/form-data" > <fieldset> <input type="hidden" class="address" name="address" /> <input type="file" name="files" required /> <?php echo JHtml::_('form.token'); ?> <input type="submit" value="<?php echo JText::_('COM_TEMPLATES_BUTTON_UPLOAD');?>" class="btn btn-primary" /> </fieldset> </form> <?php if ($this->type != 'home'): ?> <form method="post" action="<?php echo JRoute::_('index.php?option=com_templates&task=template.copyFile&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" class="well" enctype="multipart/form-data" > <fieldset> <input type="hidden" class="address" name="address" /> <div class="control-group"> <label for="new_name" class="control-label hasTooltip" title="<?php echo JHtml::tooltipText('COM_TEMPLATES_FILE_NEW_NAME_DESC'); ?>"><?php echo JText::_('COM_TEMPLATES_FILE_NEW_NAME_LABEL')?></label> <div class="controls"> <input type="text" id="new_name" name="new_name" required /> </div> </div> <?php echo JHtml::_('form.token'); ?> <input type="submit" value="<?php echo JText::_('COM_TEMPLATES_BUTTON_COPY_FILE');?>" class="btn btn-primary" /> </fieldset> </form> <?php endif; ?> </div> </div> <div class="modal-footer"> <a href="#" class="btn" data-dismiss="modal"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_CLOSE'); ?></a> </div> </div> <div id="folderModal" class="modal hide fade"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3><?php echo JText::_('COM_TEMPLATES_MANAGE_FOLDERS');?></h3> </div> <div class="modal-body"> <div class="column"> <?php echo $this->loadTemplate('folders');?> </div> <div class="column"> <form method="post" action="<?php echo JRoute::_('index.php?option=com_templates&task=template.createFolder&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" class="well" > <fieldset> <label><?php echo JText::_('COM_TEMPLATES_FOLDER_NAME');?></label> <input type="text" name="name" required /> <input type="hidden" class="address" name="address" /> <?php echo JHtml::_('form.token'); ?> <input type="submit" value="<?php echo JText::_('COM_TEMPLATES_BUTTON_CREATE');?>" class="btn btn-primary" /> </fieldset> </form> </div> </div> <div class="modal-footer"> <form id="deleteFolder" method="post" action="<?php echo JRoute::_('index.php?option=com_templates&task=template.deleteFolder&id=' . $input->getInt('id') . '&file=' . $this->file); ?>"> <fieldset> <a href="#" class="btn" data-dismiss="modal"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_CLOSE'); ?></a> <input type="hidden" class="address" name="address" /> <?php echo JHtml::_('form.token'); ?> <input type="submit" value="<?php echo JText::_('COM_TEMPLATES_BUTTON_DELETE');?>" class="btn btn-danger" /> </fieldset> </form> </div> </div> <?php if ($this->type != 'home'): ?> <form action="<?php echo JRoute::_('index.php?option=com_templates&task=template.resizeImage&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" > <div id="resizeModal" class="modal hide fade"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3><?php echo JText::_('COM_TEMPLATES_RESIZE_IMAGE'); ?></h3> </div> <div class="modal-body"> <div id="template-manager-css" class="form-horizontal"> <div class="control-group"> <label for="height" class="control-label hasTooltip" title="<?php echo JHtml::tooltipText('COM_TEMPLATES_IMAGE_HEIGHT'); ?>"><?php echo JText::_('COM_TEMPLATES_IMAGE_HEIGHT')?></label> <div class="controls"> <input class="input-xlarge" type="number" name="height" placeholder="<?php echo $this->image['height']; ?> px" required /> </div> <br /> <label for="width" class="control-label hasTooltip" title="<?php echo JHtml::tooltipText('COM_TEMPLATES_IMAGE_WIDTH'); ?>"><?php echo JText::_('COM_TEMPLATES_IMAGE_WIDTH')?></label> <div class="controls"> <input class="input-xlarge" type="number" name="width" placeholder="<?php echo $this->image['width']; ?> px" required /> </div> </div> </div> </div> <div class="modal-footer"> <a href="#" class="btn" data-dismiss="modal"><?php echo JText::_('COM_TEMPLATES_TEMPLATE_CLOSE'); ?></a> <button class="btn btn-primary" type="submit"><?php echo JText::_('COM_TEMPLATES_BUTTON_RESIZE'); ?></button> </div> </div> <?php echo JHtml::_('form.token'); ?> </form> <?php endif; ?> PKb��\b�W�@components/com_templates/views/template/tmpl/default_folders.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ksort($this->files, SORT_STRING); ?> <ul class='nav nav-list directory-tree'> <?php foreach($this->files as $key => $value): ?> <?php if(is_array($value)): ?> <li class="folder-select"> <a class='folder-url nowrap' data-id='<?php echo base64_encode($key); ?>' href=''> <span class='icon-folder-close'> <?php $explodeArray = explode('/', $key); echo end($explodeArray); ?></span> </a> <?php echo $this->folderTree($value); ?> </li> <?php endif; ?> <?php endforeach; ?> </ul> PKb��\D����5components/com_templates/views/template/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View to edit a template style. * * @since 1.6 */ class TemplatesViewTemplate extends JViewLegacy { /** * For loading extension state */ protected $state; /** * For loading template details */ protected $template; /** * For loading the source form */ protected $form; /** * For loading source file contents */ protected $source; /** * Extension id */ protected $id; /** * Encrypted file path */ protected $file; /** * List of available overrides */ protected $overridesList; /** * Name of the present file */ protected $fileName; /** * Type of the file - image, source, font */ protected $type; /** * For loading image information */ protected $image; /** * Template id for showing preview button */ protected $preview; /** * For loading font information */ protected $font; /** * A nested array containing lst of files and folders */ protected $files; /** * An array containing a list of compressed files */ protected $archive; /** * 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 a Error object. */ public function display($tpl = null) { $app = JFactory::getApplication(); $this->file = $app->input->get('file'); $this->fileName = base64_decode($this->file); $explodeArray = explode('.', $this->fileName); $ext = end($explodeArray); $this->files = $this->get('Files'); $this->state = $this->get('State'); $this->template = $this->get('Template'); $this->preview = $this->get('Preview'); $params = JComponentHelper::getParams('com_templates'); $imageTypes = explode(',', $params->get('image_formats')); $sourceTypes = explode(',', $params->get('source_formats')); $fontTypes = explode(',', $params->get('font_formats')); $archiveTypes = explode(',', $params->get('compressed_formats')); if (in_array($ext, $sourceTypes)) { $this->form = $this->get('Form'); $this->form->setFieldAttribute('source', 'syntax', $ext); $this->source = $this->get('Source'); $this->type = 'file'; } elseif (in_array($ext, $imageTypes)) { $this->image = $this->get('Image'); $this->type = 'image'; } elseif (in_array($ext, $fontTypes)) { $this->font = $this->get('Font'); $this->type = 'font'; } elseif (in_array($ext, $archiveTypes)) { $this->archive = $this->get('Archive'); $this->type = 'archive'; } else { $this->type = 'home'; } $this->overridesList = $this->get('OverridesList'); $this->id = $this->state->get('extension.id'); // Check for errors. if (count($errors = $this->get('Errors'))) { $app->enqueueMessage(implode("\n", $errors)); return false; } $this->addToolbar(); if (!JFactory::getUser()->authorise('core.admin')) { $this->setLayout('readonly'); } return parent::display($tpl); } /** * Add the page title and toolbar. * * @since 1.6 * * @return void */ protected function addToolbar() { $app = JFactory::getApplication(); $user = JFactory::getUser(); $app->input->set('hidemainmenu', true); // User is global SuperUser $isSuperUser = $user->authorise('core.admin'); // Get the toolbar object instance $bar = JToolBar::getInstance('toolbar'); $explodeArray = explode('.', $this->fileName); $ext = end($explodeArray); JToolbarHelper::title(JText::_('COM_TEMPLATES_MANAGER_VIEW_TEMPLATE'), 'eye thememanager'); // Only show file edit buttons for global SuperUser if ($isSuperUser) { // Add a Apply and save button if ($this->type == 'file') { JToolbarHelper::apply('template.apply'); JToolbarHelper::save('template.save'); } // Add a Crop and Resize button elseif ($this->type == 'image') { JToolbarHelper::custom('template.cropImage', 'move', 'move', 'COM_TEMPLATES_BUTTON_CROP', false); JToolbarHelper::modal('resizeModal', 'icon-refresh', 'COM_TEMPLATES_BUTTON_RESIZE'); } // Add an extract button elseif ($this->type == 'archive') { JToolbarHelper::custom('template.extractArchive', 'arrow-down', 'arrow-down', 'COM_TEMPLATES_BUTTON_EXTRACT_ARCHIVE', false); } // Add a copy template button (Hathor override doesn't need the button) if ($app->getTemplate() != 'hathor') { JToolbarHelper::modal('collapseModal', 'icon-copy', 'COM_TEMPLATES_BUTTON_COPY_TEMPLATE'); } } // Add a Template preview button if ($this->preview->client_id == 0) { $bar->appendButton('Popup', 'picture', 'COM_TEMPLATES_BUTTON_PREVIEW', JUri::root() . 'index.php?tp=1&templateStyle=' . $this->preview->id, 800, 520); } // Only show file manage buttons for global SuperUser if ($isSuperUser) { // Add Manage folders button JToolbarHelper::modal('folderModal', 'icon-folder icon white', 'COM_TEMPLATES_BUTTON_FOLDERS'); // Add a new file button JToolbarHelper::modal('fileModal', 'icon-file', 'COM_TEMPLATES_BUTTON_FILE'); // Add a Rename file Button (Hathor override doesn't need the button) if ($app->getTemplate() != 'hathor' && $this->type != 'home') { JToolbarHelper::modal('renameModal', 'icon-refresh', 'COM_TEMPLATES_BUTTON_RENAME_FILE'); } // Add a Delete file Button if ($this->type != 'home') { JToolbarHelper::modal('deleteModal', 'icon-remove', 'COM_TEMPLATES_BUTTON_DELETE_FILE'); } // Add a Compile Button if ($ext == 'less') { JToolbarHelper::custom('template.less', 'play', 'play', 'COM_TEMPLATES_BUTTON_LESS', false); } } if ($this->type == 'home') { JToolbarHelper::cancel('template.cancel', 'JTOOLBAR_CLOSE'); } else { JToolbarHelper::cancel('template.close', 'COM_TEMPLATES_BUTTON_CLOSE_FILE'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_EXTENSIONS_TEMPLATE_MANAGER_TEMPLATES_EDIT'); } /** * Method for creating the collapsible tree. * * @param array $array The value of the present node for recursion * * @return string * * @note Uses recursion * @since 3.2 */ protected function directoryTree($array) { $temp = $this->files; $this->files = $array; $txt = $this->loadTemplate('tree'); $this->files = $temp; return $txt; } /** * Method for listing the folder tree in modals. * * @param array $array The value of the present node for recursion * * @return string * * @note Uses recursion * @since 3.2 */ protected function folderTree($array) { $temp = $this->files; $this->files = $array; $txt = $this->loadTemplate('folders'); $this->files = $temp; return $txt; } } PKb��\V���$$&components/com_templates/templates.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_templates</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_TEMPLATES_XML_DESCRIPTION</description> <administration> <files folder="admin"> <filename>config.xml</filename> <filename>controller.php</filename> <filename>templates.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>tables</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_templates.ini</language> <language tag="en-GB">language/en-GB.com_templates.sys.ini</language> </languages> </administration> </extension> PKb��\�kVh-components/com_templates/helpers/template.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Template Helper class. * * @since 3.2 */ abstract class TemplateHelper { /** * Checks if the file is an image * * @param string $fileName The filename * * @return boolean * * @since 3.2 */ public static function getTypeIcon($fileName) { // Get file extension return strtolower(substr($fileName, strrpos($fileName, '.') + 1)); } /** * Checks if the file can be uploaded * * @param array $file File information * @param string $err An error message to be returned * * @return boolean * * @since 3.2 */ public static function canUpload($file, $err = '') { $params = JComponentHelper::getParams('com_templates'); if (empty($file['name'])) { $app = JFactory::getApplication(); $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_UPLOAD_INPUT'), 'error'); return false; } // Media file names should never have executable extensions buried in them. $executable = array( 'exe', 'phtml','java', 'perl', 'py', 'asp','dll', 'go', 'jar', 'ade', 'adp', 'bat', 'chm', 'cmd', 'com', 'cpl', 'hta', 'ins', 'isp', 'jse', 'lib', 'mde', 'msc', 'msp', 'mst', 'pif', 'scr', 'sct', 'shb', 'sys', 'vb', 'vbe', 'vbs', 'vxd', 'wsc', 'wsf', 'wsh' ); $explodedFileName = explode('.', $file['name']); if (count($explodedFileName) > 2) { foreach ($executable as $extensionName) { if (in_array($extensionName, $explodedFileName)) { $app = JFactory::getApplication(); $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_EXECUTABLE'), 'error'); return false; } } } jimport('joomla.filesystem.file'); if ($file['name'] !== JFile::makeSafe($file['name']) || preg_match('/\s/', JFile::makeSafe($file['name']))) { $app = JFactory::getApplication(); $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_WARNFILENAME'), 'error'); return false; } $format = strtolower(JFile::getExt($file['name'])); $imageTypes = explode(',', $params->get('image_formats')); $sourceTypes = explode(',', $params->get('source_formats')); $fontTypes = explode(',', $params->get('font_formats')); $archiveTypes = explode(',', $params->get('compressed_formats')); $allowable = array_merge($imageTypes, $sourceTypes, $fontTypes, $archiveTypes); if ($format == '' || $format == false || (!in_array($format, $allowable))) { $app = JFactory::getApplication(); $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_WARNFILETYPE'), 'error'); return false; } if (in_array($format, $archiveTypes)) { $zip = new ZipArchive; if ($zip->open($file['tmp_name']) === true) { for ($i = 0; $i < $zip->numFiles; $i++) { $entry = $zip->getNameIndex($i); $endString = substr($entry, -1); if ($endString != DIRECTORY_SEPARATOR) { $explodeArray = explode('.', $entry); $ext = end($explodeArray); if (!in_array($ext, $allowable)) { $app = JFactory::getApplication(); $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_UNSUPPORTED_ARCHIVE'), 'error'); return false; } } } } else { $app = JFactory::getApplication(); $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_ARCHIVE_OPEN_FAIL'), 'error'); return false; } } // Max upload size set to 2 MB for Template Manager $maxSize = (int) ($params->get('upload_limit') * 1024 * 1024); if ($maxSize > 0 && (int) $file['size'] > $maxSize) { $app = JFactory::getApplication(); $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_WARNFILETOOLARGE'), 'error'); return false; } $xss_check = file_get_contents($file['tmp_name'], false, null, -1, 256); $html_tags = array( 'abbr', 'acronym', 'address', 'applet', 'area', 'audioscope', 'base', 'basefont', 'bdo', 'bgsound', 'big', 'blackface', 'blink', 'blockquote', 'body', 'bq', 'br', 'button', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'comment', 'custom', 'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'fn', 'font', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html', 'iframe', 'ilayer', 'img', 'input', 'ins', 'isindex', 'keygen', 'kbd', 'label', 'layer', 'legend', 'li', 'limittext', 'link', 'listing', 'map', 'marquee', 'menu', 'meta', 'multicol', 'nobr', 'noembed', 'noframes', 'noscript', 'nosmartquotes', 'object', 'ol', 'optgroup', 'option', 'param', 'plaintext', 'pre', 'rt', 'ruby', 's', 'samp', 'script', 'select', 'server', 'shadow', 'sidebar', 'small', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'tt', 'ul', 'var', 'wbr', 'xml', 'xmp', '!DOCTYPE', '!--' ); foreach ($html_tags as $tag) { // A tag is '<tagname ', so we need to add < and a space or '<tagname>' if (stristr($xss_check, '<' . $tag . ' ') || stristr($xss_check, '<' . $tag . '>')) { $app = JFactory::getApplication(); $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_WARNIEXSS'), 'error'); return false; } } return true; } } PKb��\�$B�� � 3components/com_templates/helpers/html/templates.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * JHtml helper class. * * @since 1.6 */ class JHtmlTemplates { /** * Display the thumb for the template. * * @param string $template The name of the template. * @param integer $clientId The application client ID the template applies to * * @return string The html string * * @since 1.6 */ public static function thumb($template, $clientId = 0) { $client = JApplicationHelper::getClientInfo($clientId); $basePath = $client->path . '/templates/' . $template; $thumb = $basePath . '/template_thumbnail.png'; $preview = $basePath . '/template_preview.png'; $html = ''; if (file_exists($thumb)) { JHtml::_('bootstrap.tooltip'); $clientPath = ($clientId == 0) ? '' : 'administrator/'; $thumb = $clientPath . 'templates/' . $template . '/template_thumbnail.png'; $html = JHtml::_('image', $thumb, JText::_('COM_TEMPLATES_PREVIEW')); if (file_exists($preview)) { $html = '<a href="#' . $template . '-Modal" role="button" class="thumbnail pull-left hasTooltip" data-toggle="modal" title="' . JHtml::tooltipText('COM_TEMPLATES_CLICK_TO_ENLARGE') . '">' . $html . '</a>'; } } return $html; } /** * Renders the html for the modal linked to thumb. * * @param string $template The name of the template. * @param integer $clientId The application client ID the template applies to * * @return string The html string * * @since 3.4 */ public static function thumbModal($template, $clientId = 0) { $client = JApplicationHelper::getClientInfo($clientId); $basePath = $client->path . '/templates/' . $template; $baseUrl = ($clientId == 0) ? JUri::root(true) : JUri::root(true) . '/administrator'; $thumb = $basePath . '/template_thumbnail.png'; $preview = $basePath . '/template_preview.png'; $html = ''; if (file_exists($thumb)) { if (file_exists($preview)) { $preview = $baseUrl . '/templates/' . $template . '/template_preview.png'; $footer = '<button class="btn" data-dismiss="modal" aria-hidden="true">' . JText::_('JTOOLBAR_CLOSE') . '</a>'; $html .= JHtml::_( 'bootstrap.renderModal', $template . '-Modal', array( 'title' => JText::_('COM_TEMPLATES_BUTTON_PREVIEW'), 'height' => '500px', 'width' => '800px', 'footer' => $footer ), $body = '<div><img src="' . $preview . '" style="max-width:100%"></div>' ); } } return $html; } } PKb��\� GG.components/com_templates/helpers/templates.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Templates component helper. * * @since 1.6 */ class TemplatesHelper { /** * Configure the Linkbar. * * @param string $vName The name of the active view. * * @return void */ public static function addSubmenu($vName) { JHtmlSidebar::addEntry( JText::_('COM_TEMPLATES_SUBMENU_STYLES'), 'index.php?option=com_templates&view=styles', $vName == 'styles' ); JHtmlSidebar::addEntry( JText::_('COM_TEMPLATES_SUBMENU_TEMPLATES'), 'index.php?option=com_templates&view=templates', $vName == 'templates' ); } /** * Gets a list of the actions that can be performed. * * @return JObject * * @deprecated 3.2 Use JHelperContent::getActions() instead */ public static function getActions() { // Log usage of deprecated function JLog::add(__METHOD__ . '() is deprecated, use JHelperContent::getActions() with new arguments order instead.', JLog::WARNING, 'deprecated'); // Get list of actions $result = JHelperContent::getActions('com_templates'); return $result; } /** * Get a list of filter options for the application clients. * * @return array An array of JHtmlOption elements. */ public static function getClientOptions() { // Build the filter options. $options = array(); $options[] = JHtml::_('select.option', '0', JText::_('JSITE')); $options[] = JHtml::_('select.option', '1', JText::_('JADMINISTRATOR')); return $options; } /** * Get a list of filter options for the templates with styles. * * @param mixed $clientId The CMS client id (0:site | 1:administrator) or '*' for all. * * @return array An array of JHtmlOption elements. */ public static function getTemplateOptions($clientId = '*') { // Build the filter options. $db = JFactory::getDbo(); $query = $db->getQuery(true); if ($clientId != '*') { $query->where('client_id=' . (int) $clientId); } $query->select('element as value, name as text, extension_id as e_id') ->from('#__extensions') ->where('type = ' . $db->quote('template')) ->where('enabled = 1') ->order('client_id') ->order('name'); $db->setQuery($query); $options = $db->loadObjectList(); return $options; } /** * TODO * * @param string $templateBaseDir TODO * @param string $templateDir TODO * * @return boolean|JObject */ public static function parseXMLTemplateFile($templateBaseDir, $templateDir) { $data = new JObject; // Check of the xml file exists $filePath = JPath::clean($templateBaseDir . '/templates/' . $templateDir . '/templateDetails.xml'); if (is_file($filePath)) { $xml = JInstaller::parseXMLInstallFile($filePath); if ($xml['type'] != 'template') { return false; } foreach ($xml as $key => $value) { $data->set($key, $value); } } return $data; } /** * TODO * * @param integer $clientId TODO * @param string $templateDir TODO * * @return boolean|array * * @since 3.0 */ public static function getPositions($clientId, $templateDir) { $positions = array(); $templateBaseDir = $clientId ? JPATH_ADMINISTRATOR : JPATH_SITE; $filePath = JPath::clean($templateBaseDir . '/templates/' . $templateDir . '/templateDetails.xml'); if (is_file($filePath)) { // Read the file to see if it's a valid component XML file $xml = simplexml_load_file($filePath); if (!$xml) { return false; } // Check for a valid XML root tag. // Extensions use 'extension' as the root tag. Languages use 'metafile' instead if ($xml->getName() != 'extension' && $xml->getName() != 'metafile') { unset($xml); return false; } $positions = (array) $xml->positions; if (isset($positions['position'])) { $positions = (array) $positions['position']; } else { $positions = array(); } } return $positions; } } PKb��\�r5zEzE)components/com_templates/models/style.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * Template style model. * * @since 1.6 */ class TemplatesModelStyle extends JModelAdmin { /** * The help screen key for the module. * * @var string * @since 1.6 */ protected $helpKey = 'JHELP_EXTENSIONS_TEMPLATE_MANAGER_STYLES_EDIT'; /** * The help screen base URL for the module. * * @var string * @since 1.6 */ protected $helpURL; /** * Item cache. * * @var array * @since 1.6 */ private $_cache = array(); /** * Constructor. * * @param array $config An optional associative array of configuration settings. */ public function __construct($config = array()) { $config = array_merge( array( 'event_before_delete' => 'onExtensionBeforeDelete', 'event_after_delete' => 'onExtensionAfterDelete', 'event_before_save' => 'onExtensionBeforeSave', 'event_after_save' => 'onExtensionAfterSave', 'events_map' => array('delete' => 'extension', 'save' => 'extension') ), $config ); parent::__construct($config); } /** * Method to auto-populate the model state. * * @note Calling getState in this method will result in recursion. * * @return void * * @since 1.6 */ protected function populateState() { $app = JFactory::getApplication('administrator'); // Load the User state. $pk = $app->input->getInt('id'); $this->setState('style.id', $pk); // Load the parameters. $params = JComponentHelper::getParams('com_templates'); $this->setState('params', $params); } /** * Method to delete rows. * * @param array &$pks An array of item ids. * * @return boolean Returns true on success, false on failure. * * @since 1.6 * @throws Exception */ public function delete(&$pks) { $pks = (array) $pks; $user = JFactory::getUser(); $table = $this->getTable(); $dispatcher = JEventDispatcher::getInstance(); $context = $this->option . '.' . $this->name; JPluginHelper::importPlugin($this->events_map['delete']); // Iterate the items to delete each one. foreach ($pks as $pk) { if ($table->load($pk)) { // Access checks. if (!$user->authorise('core.delete', 'com_templates')) { throw new Exception(JText::_('JERROR_CORE_DELETE_NOT_PERMITTED')); } // You should not delete a default style if ($table->home != '0') { JError::raiseWarning(SOME_ERROR_NUMBER, JText::_('COM_TEMPLATES_STYLE_CANNOT_DELETE_DEFAULT_STYLE')); return false; } // Trigger the before delete event. $result = $dispatcher->trigger($this->event_before_delete, array($context, $table)); if (in_array(false, $result, true) || !$table->delete($pk)) { $this->setError($table->getError()); return false; } // Trigger the after delete event. $dispatcher->trigger($this->event_after_delete, array($context, $table)); } else { $this->setError($table->getError()); return false; } } // Clean cache $this->cleanCache(); return true; } /** * Method to duplicate styles. * * @param array &$pks An array of primary key IDs. * * @return boolean True if successful. * * @throws Exception */ public function duplicate(&$pks) { $user = JFactory::getUser(); // Access checks. if (!$user->authorise('core.create', 'com_templates')) { throw new Exception(JText::_('JERROR_CORE_CREATE_NOT_PERMITTED')); } $dispatcher = JEventDispatcher::getInstance(); $context = $this->option . '.' . $this->name; // Include the plugins for the save events. JPluginHelper::importPlugin($this->events_map['save']); $table = $this->getTable(); foreach ($pks as $pk) { if ($table->load($pk, true)) { // Reset the id to create a new record. $table->id = 0; // Reset the home (don't want dupes of that field). $table->home = 0; // Alter the title. $m = null; $table->title = $this->generateNewTitle(null, null, $table->title); if (!$table->check()) { throw new Exception($table->getError()); } // Trigger the before save event. $result = $dispatcher->trigger($this->event_before_save, array($context, &$table, true)); if (in_array(false, $result, true) || !$table->store()) { throw new Exception($table->getError()); } // Trigger the after save event. $dispatcher->trigger($this->event_after_save, array($context, &$table, true)); } else { throw new Exception($table->getError()); } } // Clean cache $this->cleanCache(); return true; } /** * Method to change the title. * * @param integer $category_id The id of the category. * @param string $alias The alias. * @param string $title The title. * * @return string New title. * * @since 1.7.1 */ protected function generateNewTitle($category_id, $alias, $title) { // Alter the title $table = $this->getTable(); while ($table->load(array('title' => $title))) { $title = JString::increment($title); } return $title; } /** * Method to get the record form. * * @param array $data An optional array of data for the form to interogate. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return JForm A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // The folder and element vars are passed when saving the form. if (empty($data)) { $item = $this->getItem(); $clientId = $item->client_id; $template = $item->template; } else { $clientId = JArrayHelper::getValue($data, 'client_id'); $template = JArrayHelper::getValue($data, 'template'); } // These variables are used to add data from the plugin XML files. $this->setState('item.client_id', $clientId); $this->setState('item.template', $template); // Get the form. $form = $this->loadForm('com_templates.style', 'style', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } // Modify the form based on access controls. if (!$this->canEditState((object) $data)) { // Disable fields for display. $form->setFieldAttribute('home', 'disabled', 'true'); // Disable fields while saving. // The controller has already verified this is a record you can edit. $form->setFieldAttribute('home', 'filter', 'unset'); } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_templates.edit.style.data', array()); if (empty($data)) { $data = $this->getItem(); } $this->preprocessData('com_templates.style', $data); return $data; } /** * Method to get a single record. * * @param integer $pk The id of the primary key. * * @return mixed Object on success, false on failure. */ public function getItem($pk = null) { $pk = (!empty($pk)) ? $pk : (int) $this->getState('style.id'); if (!isset($this->_cache[$pk])) { // Get a row instance. $table = $this->getTable(); // Attempt to load the row. $return = $table->load($pk); // Check for a table object error. if ($return === false && $table->getError()) { $this->setError($table->getError()); return false; } // Convert to the JObject before adding other data. $properties = $table->getProperties(1); $this->_cache[$pk] = JArrayHelper::toObject($properties, 'JObject'); // Convert the params field to an array. $registry = new Registry; $registry->loadString($table->params); $this->_cache[$pk]->params = $registry->toArray(); // Get the template XML. $client = JApplicationHelper::getClientInfo($table->client_id); $path = JPath::clean($client->path . '/templates/' . $table->template . '/templateDetails.xml'); if (file_exists($path)) { $this->_cache[$pk]->xml = simplexml_load_file($path); } else { $this->_cache[$pk]->xml = null; } } return $this->_cache[$pk]; } /** * Returns a reference to the a Table object, always creating it. * * @param type $type The table type to instantiate * @param string $prefix A prefix for the table class name. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A database object */ public function getTable($type = 'Style', $prefix = 'TemplatesTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Method to allow derived classes to preprocess the form. * * @param JForm $form A JForm object. * @param mixed $data The data expected for the form. * @param string $group The name of the plugin group to import (defaults to "content"). * * @return void * * @since 1.6 * @throws Exception if there is an error in the form event. */ protected function preprocessForm(JForm $form, $data, $group = 'content') { $clientId = $this->getState('item.client_id'); $template = $this->getState('item.template'); $lang = JFactory::getLanguage(); $client = JApplicationHelper::getClientInfo($clientId); if (!$form->loadFile('style_' . $client->name, true)) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } jimport('joomla.filesystem.path'); $formFile = JPath::clean($client->path . '/templates/' . $template . '/templateDetails.xml'); // Load the core and/or local language file(s). $lang->load('tpl_' . $template, $client->path, null, false, true) || $lang->load('tpl_' . $template, $client->path . '/templates/' . $template, null, false, true); if (file_exists($formFile)) { // Get the template form. if (!$form->loadFile($formFile, false, '//config')) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } } // Disable home field if it is default style if ((is_array($data) && array_key_exists('home', $data) && $data['home'] == '1') || ((is_object($data) && isset($data->home) && $data->home == '1'))) { $form->setFieldAttribute('home', 'readonly', 'true'); } // Attempt to load the xml file. if (!$xml = simplexml_load_file($formFile)) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } // Get the help data from the XML file if present. $help = $xml->xpath('/extension/help'); if (!empty($help)) { $helpKey = trim((string) $help[0]['key']); $helpURL = trim((string) $help[0]['url']); $this->helpKey = $helpKey ? $helpKey : $this->helpKey; $this->helpURL = $helpURL ? $helpURL : $this->helpURL; } // Trigger the default form events. parent::preprocessForm($form, $data, $group); } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. */ public function save($data) { // Detect disabled extension $extension = JTable::getInstance('Extension'); if ($extension->load(array('enabled' => 0, 'type' => 'template', 'element' => $data['template'], 'client_id' => $data['client_id']))) { $this->setError(JText::_('COM_TEMPLATES_ERROR_SAVE_DISABLED_TEMPLATE')); return false; } $app = JFactory::getApplication(); $dispatcher = JEventDispatcher::getInstance(); $table = $this->getTable(); $pk = (!empty($data['id'])) ? $data['id'] : (int) $this->getState('style.id'); $isNew = true; // Include the extension plugins for the save events. JPluginHelper::importPlugin($this->events_map['save']); // Load the row if saving an existing record. if ($pk > 0) { $table->load($pk); $isNew = false; } if ($app->input->get('task') == 'save2copy') { $data['title'] = $this->generateNewTitle(null, null, $data['title']); $data['home'] = 0; $data['assigned'] = ''; } // Bind the data. if (!$table->bind($data)) { $this->setError($table->getError()); return false; } // Prepare the row for saving $this->prepareTable($table); // Check the data. if (!$table->check()) { $this->setError($table->getError()); return false; } // Trigger the before save event. $result = $dispatcher->trigger($this->event_before_save, array('com_templates.style', &$table, $isNew)); // Store the data. if (in_array(false, $result, true) || !$table->store()) { $this->setError($table->getError()); return false; } $user = JFactory::getUser(); if ($user->authorise('core.edit', 'com_menus') && $table->client_id == 0) { $n = 0; $db = $this->getDbo(); $user = JFactory::getUser(); if (!empty($data['assigned']) && is_array($data['assigned'])) { JArrayHelper::toInteger($data['assigned']); // Update the mapping for menu items that this style IS assigned to. $query = $db->getQuery(true) ->update('#__menu') ->set('template_style_id = ' . (int) $table->id) ->where('id IN (' . implode(',', $data['assigned']) . ')') ->where('template_style_id != ' . (int) $table->id) ->where('checked_out IN (0,' . (int) $user->id . ')'); $db->setQuery($query); $db->execute(); $n += $db->getAffectedRows(); } // Remove style mappings for menu items this style is NOT assigned to. // If unassigned then all existing maps will be removed. $query = $db->getQuery(true) ->update('#__menu') ->set('template_style_id = 0'); if (!empty($data['assigned'])) { $query->where('id NOT IN (' . implode(',', $data['assigned']) . ')'); } $query->where('template_style_id = ' . (int) $table->id) ->where('checked_out IN (0,' . (int) $user->id . ')'); $db->setQuery($query); $db->execute(); $n += $db->getAffectedRows(); if ($n > 0) { $app->enqueueMessage(JText::plural('COM_TEMPLATES_MENU_CHANGED', $n)); } } // Clean the cache. $this->cleanCache(); // Trigger the after save event. $dispatcher->trigger($this->event_after_save, array('com_templates.style', &$table, $isNew)); $this->setState('style.id', $table->id); return true; } /** * Method to set a template style as home. * * @param integer $id The primary key ID for the style. * * @return boolean True if successful. * * @throws Exception */ public function setHome($id = 0) { $user = JFactory::getUser(); $db = $this->getDbo(); // Access checks. if (!$user->authorise('core.edit.state', 'com_templates')) { throw new Exception(JText::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED')); } $style = JTable::getInstance('Style', 'TemplatesTable'); if (!$style->load((int) $id)) { throw new Exception(JText::_('COM_TEMPLATES_ERROR_STYLE_NOT_FOUND')); } // Detect disabled extension $extension = JTable::getInstance('Extension'); if ($extension->load(array('enabled' => 0, 'type' => 'template', 'element' => $style->template, 'client_id' => $style->client_id))) { throw new Exception(JText::_('COM_TEMPLATES_ERROR_SAVE_DISABLED_TEMPLATE')); } // Reset the home fields for the client_id. $db->setQuery( 'UPDATE #__template_styles' . ' SET home = \'0\'' . ' WHERE client_id = ' . (int) $style->client_id . ' AND home = \'1\'' ); $db->execute(); // Set the new home style. $db->setQuery( 'UPDATE #__template_styles' . ' SET home = \'1\'' . ' WHERE id = ' . (int) $id ); $db->execute(); // Clean the cache. $this->cleanCache(); return true; } /** * Method to unset a template style as default for a language. * * @param integer $id The primary key ID for the style. * * @return boolean True if successful. * * @throws Exception */ public function unsetHome($id = 0) { $user = JFactory::getUser(); $db = $this->getDbo(); // Access checks. if (!$user->authorise('core.edit.state', 'com_templates')) { throw new Exception(JText::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED')); } // Lookup the client_id. $db->setQuery( 'SELECT client_id, home' . ' FROM #__template_styles' . ' WHERE id = ' . (int) $id ); $style = $db->loadObject(); if (!is_numeric($style->client_id)) { throw new Exception(JText::_('COM_TEMPLATES_ERROR_STYLE_NOT_FOUND')); } elseif ($style->home == '1') { throw new Exception(JText::_('COM_TEMPLATES_ERROR_CANNOT_UNSET_DEFAULT_STYLE')); } // Set the new home style. $db->setQuery( 'UPDATE #__template_styles' . ' SET home = \'0\'' . ' WHERE id = ' . (int) $id ); $db->execute(); // Clean the cache. $this->cleanCache(); return true; } /** * Get the necessary data to load an item help screen. * * @return object An object with key, url, and local properties for loading the item help screen. * * @since 1.6 */ public function getHelp() { return (object) array('key' => $this->helpKey, 'url' => $this->helpURL); } /** * Custom clean cache method * * @param string $group The cache group * @param integer $client_id The ID of the client * * @return void * * @since 1.6 */ protected function cleanCache($group = null, $client_id = 0) { parent::cleanCache('com_templates'); parent::cleanCache('_system'); } } PKb��\� H����,components/com_templates/models/template.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Template model class. * * @since 1.6 */ class TemplatesModelTemplate extends JModelForm { /** * The information in a template * * @var stdClass * @since 1.6 */ protected $template = null; /** * The path to the template * * @var stdClass * @since 3.2 */ protected $element = null; /** * Internal method to get file properties. * * @param string $path The base path. * @param string $name The file name. * * @return object * * @since 1.6 */ protected function getFile($path, $name) { $temp = new stdClass; if ($template = $this->getTemplate()) { $temp->name = $name; $temp->id = urlencode(base64_encode($path . $name)); return $temp; } } /** * Method to get a list of all the files to edit in a template. * * @return array A nested array of relevant files. * * @since 1.6 */ public function getFiles() { $result = array(); if ($template = $this->getTemplate()) { jimport('joomla.filesystem.folder'); $app = JFactory::getApplication(); $client = JApplicationHelper::getClientInfo($template->client_id); $path = JPath::clean($client->path . '/templates/' . $template->element . '/'); $lang = JFactory::getLanguage(); // Load the core and/or local language file(s). $lang->load('tpl_' . $template->element, $client->path, null, false, true) || $lang->load('tpl_' . $template->element, $client->path . '/templates/' . $template->element, null, false, true); $this->element = $path; if (!is_writable($path)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_DIRECTORY_NOT_WRITABLE'), 'error'); } if (is_dir($path)) { $result = $this->getDirectoryTree($path); } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_TEMPLATE_FOLDER_NOT_FOUND'), 'error'); return false; } } return $result; } /** * Get the directory tree. * * @param string $dir The path of the directory to scan * * @return array * * @since 3.2 */ public function getDirectoryTree($dir) { $result = array(); $dirFiles = scandir($dir); foreach ($dirFiles as $key => $value) { if (!in_array($value, array(".", ".."))) { if (is_dir($dir . $value)) { $relativePath = str_replace($this->element, '', $dir . $value); $result['/' . $relativePath] = $this->getDirectoryTree($dir . $value . '/'); } else { $ext = pathinfo($dir . $value, PATHINFO_EXTENSION); $params = JComponentHelper::getParams('com_templates'); $imageTypes = explode(',', $params->get('image_formats')); $sourceTypes = explode(',', $params->get('source_formats')); $fontTypes = explode(',', $params->get('font_formats')); $archiveTypes = explode(',', $params->get('compressed_formats')); $types = array_merge($imageTypes, $sourceTypes, $fontTypes, $archiveTypes); if (in_array($ext, $types)) { $relativePath = str_replace($this->element, '', $dir); $info = $this->getFile('/' . $relativePath, $value); $result[] = $info; } } } } return $result; } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @return void * * @since 1.6 */ protected function populateState() { jimport('joomla.filesystem.file'); $app = JFactory::getApplication('administrator'); // Load the User state. $pk = $app->input->getInt('id'); $this->setState('extension.id', $pk); // Load the parameters. $params = JComponentHelper::getParams('com_templates'); $this->setState('params', $params); } /** * Method to get the template information. * * @return mixed Object if successful, false if not and internal error is set. * * @since 1.6 */ public function &getTemplate() { if (empty($this->template)) { $pk = $this->getState('extension.id'); $db = $this->getDbo(); $app = JFactory::getApplication(); // Get the template information. $query = $db->getQuery(true) ->select('extension_id, client_id, element, name, manifest_cache') ->from('#__extensions') ->where($db->quoteName('extension_id') . ' = ' . (int) $pk) ->where($db->quoteName('type') . ' = ' . $db->quote('template')); $db->setQuery($query); try { $result = $db->loadObject(); } catch (RuntimeException $e) { $app->enqueueMessage($e->getMessage(), 'warning'); $this->template = false; return false; } if (empty($result)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_EXTENSION_RECORD_NOT_FOUND'), 'error'); $this->template = false; } else { $this->template = $result; } } return $this->template; } /** * Method to check if new template name already exists * * @return boolean true if name is not used, false otherwise * * @since 2.5 */ public function checkNewName() { $db = $this->getDbo(); $query = $db->getQuery(true) ->select('COUNT(*)') ->from('#__extensions') ->where('name = ' . $db->quote($this->getState('new_name'))); $db->setQuery($query); return ($db->loadResult() == 0); } /** * Method to check if new template name already exists * * @return string name of current template * * @since 2.5 */ public function getFromName() { return $this->getTemplate()->element; } /** * Method to check if new template name already exists * * @return boolean true if name is not used, false otherwise * * @since 2.5 */ public function copy() { $app = JFactory::getApplication(); if ($template = $this->getTemplate()) { jimport('joomla.filesystem.folder'); $client = JApplicationHelper::getClientInfo($template->client_id); $fromPath = JPath::clean($client->path . '/templates/' . $template->element . '/'); // Delete new folder if it exists $toPath = $this->getState('to_path'); if (JFolder::exists($toPath)) { if (!JFolder::delete($toPath)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_COULD_NOT_WRITE'), 'error'); return false; } } // Copy all files from $fromName template to $newName folder if (!JFolder::copy($fromPath, $toPath) || !$this->fixTemplateName()) { return false; } return true; } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_INVALID_FROM_NAME'), 'error'); return false; } } /** * Method to delete tmp folder * * @return boolean true if delete successful, false otherwise * * @since 2.5 */ public function cleanup() { // Clear installation messages $app = JFactory::getApplication(); $app->setUserState('com_installer.message', ''); $app->setUserState('com_installer.extension_message', ''); // Delete temporary directory return JFolder::delete($this->getState('to_path')); } /** * Method to rename the template in the XML files and rename the language files * * @return boolean true if successful, false otherwise * * @since 2.5 */ protected function fixTemplateName() { // Rename Language files // Get list of language files $result = true; $files = JFolder::files($this->getState('to_path'), '.ini', true, true); $newName = strtolower($this->getState('new_name')); $template = $this->getTemplate(); $oldName = $template->element; $manifest = json_decode($template->manifest_cache); jimport('joomla.filesystem.file'); foreach ($files as $file) { $newFile = str_replace($oldName, $newName, $file); $result = JFile::move($file, $newFile) && $result; } // Edit XML file $xmlFile = $this->getState('to_path') . '/templateDetails.xml'; if (JFile::exists($xmlFile)) { $contents = file_get_contents($xmlFile); $pattern[] = '#<name>\s*' . $manifest->name . '\s*</name>#i'; $replace[] = '<name>' . $newName . '</name>'; $pattern[] = '#<language(.*)' . $oldName . '(.*)</language>#'; $replace[] = '<language${1}' . $newName . '${2}</language>'; $contents = preg_replace($pattern, $replace, $contents); $result = JFile::write($xmlFile, $contents) && $result; } return $result; } /** * Method to get the record form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return JForm A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { $app = JFactory::getApplication(); // Codemirror or Editor None should be enabled $db = $this->getDbo(); $query = $db->getQuery(true) ->select('COUNT(*)') ->from('#__extensions as a') ->where( '(a.name =' . $db->quote('plg_editors_codemirror') . ' AND a.enabled = 1) OR (a.name =' . $db->quote('plg_editors_none') . ' AND a.enabled = 1)' ); $db->setQuery($query); $state = $db->loadResult(); if ((int) $state < 1) { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_EDITOR_DISABLED'), 'warning'); } // Get the form. $form = $this->loadForm('com_templates.source', 'source', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { $data = $this->getSource(); $this->preprocessData('com_templates.source', $data); return $data; } /** * Method to get a single record. * * @return mixed Object on success, false on failure. * * @since 1.6 */ public function &getSource() { $app = JFactory::getApplication(); $item = new stdClass; if (!$this->template) { $this->getTemplate(); } if ($this->template) { $input = JFactory::getApplication()->input; $fileName = base64_decode($input->get('file')); $client = JApplicationHelper::getClientInfo($this->template->client_id); try { $filePath = JPath::check($client->path . '/templates/' . $this->template->element . '/' . $fileName); } catch (Exception $e) { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_SOURCE_FILE_NOT_FOUND'), 'error'); return; } if (file_exists($filePath)) { $item->extension_id = $this->getState('extension.id'); $item->filename = $fileName; $item->source = file_get_contents($filePath); } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_SOURCE_FILE_NOT_FOUND'), 'error'); } } return $item; } /** * Method to store the source file contents. * * @param array $data The source data to save. * * @return boolean True on success, false otherwise and internal error set. * * @since 1.6 */ public function save($data) { jimport('joomla.filesystem.file'); // Get the template. $template = $this->getTemplate(); if (empty($template)) { return false; } $app = JFactory::getApplication(); $fileName = base64_decode($app->input->get('file')); $client = JApplicationHelper::getClientInfo($template->client_id); $filePath = JPath::clean($client->path . '/templates/' . $template->element . '/' . $fileName); // Include the extension plugins for the save events. JPluginHelper::importPlugin('extension'); $user = get_current_user(); chown($filePath, $user); JPath::setPermissions($filePath, '0644'); // Try to make the template file writable. if (!is_writable($filePath)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_SOURCE_FILE_NOT_WRITABLE'), 'warning'); $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_PERMISSIONS' . JPath::getPermissions($filePath)), 'warning'); if (!JPath::isOwner($filePath)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_CHECK_FILE_OWNERSHIP'), 'warning'); } return false; } $return = JFile::write($filePath, $data['source']); if (!$return) { $app->enqueueMessage(JText::sprintf('COM_TEMPLATES_ERROR_FAILED_TO_SAVE_FILENAME', $fileName), 'error'); return false; } $explodeArray = explode('.', $fileName); $ext = end($explodeArray); if ($ext == 'less') { $app->enqueueMessage(JText::sprintf('COM_TEMPLATES_COMPILE_LESS', $fileName)); } return true; } /** * Get overrides folder. * * @param string $name The name of override. * @param string $path Location of override. * * @return object containing override name and path. * * @since 3.2 */ public function getOverridesFolder($name,$path) { $folder = new stdClass; $folder->name = $name; $folder->path = base64_encode($path . $name); return $folder; } /** * Get a list of overrides. * * @return array containing overrides. * * @since 3.2 */ public function getOverridesList() { if ($template = $this->getTemplate()) { $client = JApplicationHelper::getClientInfo($template->client_id); $componentPath = JPath::clean($client->path . '/components/'); $modulePath = JPath::clean($client->path . '/modules/'); $layoutPath = JPath::clean(JPATH_ROOT . '/layouts/joomla/'); $components = JFolder::folders($componentPath); foreach ($components as $component) { $viewPath = JPath::clean($componentPath . '/' . $component . '/views/'); if (file_exists($viewPath)) { $views = JFolder::folders($viewPath); foreach ($views as $view) { $result['components'][$component][] = $this->getOverridesFolder($view, $viewPath); } } } $modules = JFolder::folders($modulePath); foreach ($modules as $module) { $result['modules'][] = $this->getOverridesFolder($module, $modulePath); } $layouts = JFolder::folders($layoutPath); foreach ($layouts as $layout) { $result['layouts'][] = $this->getOverridesFolder($layout, $layoutPath); } } if (!empty($result)) { return $result; } } /** * Create overrides. * * @param string $override The override location. * * @return boolean true if override creation is successful, false otherwise * * @since 3.2 */ public function createOverride($override) { jimport('joomla.filesystem.folder'); if ($template = $this->getTemplate()) { $app = JFactory::getApplication(); $explodeArray = explode(DIRECTORY_SEPARATOR, $override); $name = end($explodeArray); $client = JApplicationHelper::getClientInfo($template->client_id); if (stristr($name, 'mod_') != false) { $htmlPath = JPath::clean($client->path . '/templates/' . $template->element . '/html/' . $name); } elseif (stristr($override, 'com_') != false) { $folderExplode = explode(DIRECTORY_SEPARATOR, $override); $size = count($folderExplode); $url = JPath::clean($folderExplode[$size - 3] . '/' . $folderExplode[$size - 1]); $htmlPath = JPath::clean($client->path . '/templates/' . $template->element . '/html/' . $url); } else { $htmlPath = JPath::clean($client->path . '/templates/' . $template->element . '/html/layouts/joomla/' . $name); } // Check Html folder, create if not exist if (!JFolder::exists($htmlPath)) { if (!JFolder::create($htmlPath)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FOLDER_ERROR'), 'error'); return false; } } if (stristr($name, 'mod_') != false) { $return = $this->createTemplateOverride(JPath::clean($override . '/tmpl'), $htmlPath); } elseif (stristr($override, 'com_') != false) { $return = $this->createTemplateOverride(JPath::clean($override . '/tmpl'), $htmlPath); } else { $return = $this->createTemplateOverride($override, $htmlPath); } if ($return) { $app->enqueueMessage(JText::_('COM_TEMPLATES_OVERRIDE_CREATED') . str_replace(JPATH_ROOT, '', $htmlPath)); return true; } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_OVERRIDE_FAILED'), 'error'); return false; } } } /** * Create override folder & file * * @param string $overridePath The override location * @param string $htmlPath The html location * * @return boolean True on success. False otherwise. */ public function createTemplateOverride($overridePath, $htmlPath) { $return = false; if (empty($htmlPath) || empty($htmlPath)) { return $return; } // Get list of template folders $folders = JFolder::folders($overridePath, null, true, true); if (!empty($folders)) { foreach ($folders as $folder) { $htmlFolder = $htmlPath . str_replace($overridePath, '', $folder); if (!JFolder::exists($htmlFolder)) { JFolder::create($htmlFolder); } } } // Get list of template files (Only get *.php file for template file) $files = JFolder::files($overridePath, '.php', true, true); if (empty($files)) { return true; } foreach ($files as $file) { $overrideFilePath = str_replace($overridePath, '', $file); $htmlFilePath = $htmlPath . $overrideFilePath; if (JFile::exists($htmlFilePath)) { // Generate new unique file name base on current time $today = JFactory::getDate(); $htmlFilePath = JFile::stripExt($htmlFilePath) . '-' . $today->format('Ymd-His') . '.' . JFile::getExt($htmlFilePath); } $return = JFile::copy($file, $htmlFilePath, '', true); } return $return; } /** * Compile less using the less compiler under /build. * * @param string $input The relative location of the less file. * * @return boolean true if compilation is successful, false otherwise * * @since 3.2 */ public function compileLess($input) { if ($template = $this->getTemplate()) { $app = JFactory::getApplication(); $client = JApplicationHelper::getClientInfo($template->client_id); $path = JPath::clean($client->path . '/templates/' . $template->element . '/'); $inFile = urldecode(base64_decode($input)); $explodeArray = explode('/', $inFile); $fileName = end($explodeArray); $outFile = reset(explode('.', $fileName)); $less = new JLess; $less->setFormatter(new JLessFormatterJoomla); try { $less->compileFile($path . $inFile, $path . 'css/' . $outFile . '.css'); return true; } catch (Exception $e) { $app->enqueueMessage($e->getMessage(), 'error'); } } } /** * Delete a particular file. * * @param string $file The relative location of the file. * * @return boolean True if file deletion is successful, false otherwise * * @since 3.2 */ public function deleteFile($file) { if ($template = $this->getTemplate()) { $app = JFactory::getApplication(); $client = JApplicationHelper::getClientInfo($template->client_id); $path = JPath::clean($client->path . '/templates/' . $template->element . '/'); $filePath = $path . urldecode(base64_decode($file)); $return = JFile::delete($filePath); if (!$return) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_DELETE_FAIL'), 'error'); return false; } return true; } } /** * Create new file. * * @param string $name The name of file. * @param string $type The extension of the file. * @param string $location Location for the new file. * * @return boolean true if file created successfully, false otherwise * * @since 3.2 */ public function createFile($name, $type, $location) { if ($template = $this->getTemplate()) { $app = JFactory::getApplication(); $client = JApplicationHelper::getClientInfo($template->client_id); $path = JPath::clean($client->path . '/templates/' . $template->element . '/'); if (file_exists(JPath::clean($path . '/' . $location . '/' . $name . '.' . $type))) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_EXISTS'), 'error'); return false; } if (!fopen(JPath::clean($path . '/' . $location . '/' . $name . '.' . $type), 'x')) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_CREATE_ERROR'), 'error'); return false; } return true; } } /** * Upload new file. * * @param string $file The name of the file. * @param string $location Location for the new file. * * @return boolean True if file uploaded successfully, false otherwise * * @since 3.2 */ public function uploadFile($file, $location) { jimport('joomla.filesystem.folder'); if ($template = $this->getTemplate()) { $app = JFactory::getApplication(); $client = JApplicationHelper::getClientInfo($template->client_id); $path = JPath::clean($client->path . '/templates/' . $template->element . '/'); $fileName = JFile::makeSafe($file['name']); $err = null; JLoader::register('TemplateHelper', JPATH_COMPONENT_ADMINISTRATOR . '/helpers/template.php'); if (!TemplateHelper::canUpload($file, $err)) { // Can't upload the file return false; } if (file_exists(JPath::clean($path . '/' . $location . '/' . $file['name']))) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_EXISTS'), 'error'); return false; } if (!JFile::upload($file['tmp_name'], JPath::clean($path . '/' . $location . '/' . $fileName))) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_UPLOAD_ERROR'), 'error'); return false; } $url = JPath::clean($location . '/' . $fileName); return $url; } } /** * Create new folder. * * @param string $name The name of the new folder. * @param string $location Location for the new folder. * * @return boolean True if override folder is created successfully, false otherwise * * @since 3.2 */ public function createFolder($name, $location) { jimport('joomla.filesystem.folder'); if ($template = $this->getTemplate()) { $app = JFactory::getApplication(); $client = JApplicationHelper::getClientInfo($template->client_id); $path = JPath::clean($client->path . '/templates/' . $template->element . '/'); if (file_exists(JPath::clean($path . '/' . $location . '/' . $name . '/'))) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FOLDER_EXISTS'), 'error'); return false; } if (!JFolder::create(JPath::clean($path . '/' . $location . '/' . $name))) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FOLDER_CREATE_ERROR'), 'error'); return false; } return true; } } /** * Delete a folder. * * @param string $location The name and location of the folder. * * @return boolean True if override folder is deleted successfully, false otherwise * * @since 3.2 */ public function deleteFolder($location) { jimport('joomla.filesystem.folder'); if ($template = $this->getTemplate()) { $app = JFactory::getApplication(); $client = JApplicationHelper::getClientInfo($template->client_id); $path = JPath::clean($client->path . '/templates/' . $template->element . '/' . $location); if (!file_exists($path)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FOLDER_NOT_EXISTS'), 'error'); return false; } $return = JFolder::delete($path); if (!$return) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_DELETE_ERROR'), 'error'); return false; } return true; } } /** * Rename a file. * * @param string $file The name and location of the old file * @param string $name The new name of the file. * * @return string Encoded string containing the new file location. * * @since 3.2 */ public function renameFile($file, $name) { if ($template = $this->getTemplate()) { $app = JFactory::getApplication(); $client = JApplicationHelper::getClientInfo($template->client_id); $path = JPath::clean($client->path . '/templates/' . $template->element . '/'); $fileName = base64_decode($file); $explodeArray = explode('.', $fileName); $type = end($explodeArray); $explodeArray = explode('/', $fileName); $newName = str_replace(end($explodeArray), $name . '.' . $type, $fileName); if (file_exists($path . $newName)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_EXISTS'), 'error'); return false; } if (!rename($path . $fileName, $path . $newName)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_RENAME_ERROR'), 'error'); return false; } return base64_encode($newName); } } /** * Get an image address, height and width. * * @return array an associative array containing image address, height and width. * * @since 3.2 */ public function getImage() { if ($template = $this->getTemplate()) { $app = JFactory::getApplication(); $client = JApplicationHelper::getClientInfo($template->client_id); $fileName = base64_decode($app->input->get('file')); $path = JPath::clean($client->path . '/templates/' . $template->element . '/'); if (stristr($client->path, 'administrator') == false) { $folder = '/templates/'; } else { $folder = '/administrator/templates/'; } $uri = JUri::root(true) . $folder . $template->element; if (file_exists(JPath::clean($path . $fileName))) { $JImage = new JImage(JPath::clean($path . $fileName)); $image['address'] = $uri . $fileName; $image['path'] = $fileName; $image['height'] = $JImage->getHeight(); $image['width'] = $JImage->getWidth(); } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_IMAGE_FILE_NOT_FOUND'), 'error'); return false; } return $image; } } /** * Crop an image. * * @param string $file The name and location of the file * @param string $w width. * @param string $h height. * @param string $x x-coordinate. * @param string $y y-coordinate. * * @return boolean true if image cropped successfully, false otherwise. * * @since 3.2 */ public function cropImage($file, $w, $h, $x, $y) { if ($template = $this->getTemplate()) { $app = JFactory::getApplication(); $client = JApplicationHelper::getClientInfo($template->client_id); $relPath = base64_decode($file); $path = JPath::clean($client->path . '/templates/' . $template->element . '/' . $relPath); $JImage = new JImage($path); try { $image = $JImage->crop($w, $h, $x, $y, true); $image->toFile($path); return true; } catch (Exception $e) { $app->enqueueMessage($e->getMessage(), 'error'); } } } /** * Resize an image. * * @param string $file The name and location of the file * @param string $width The new width of the image. * @param string $height The new height of the image. * * @return boolean true if image resize successful, false otherwise. * * @since 3.2 */ public function resizeImage($file, $width, $height) { if ($template = $this->getTemplate()) { $app = JFactory::getApplication(); $client = JApplicationHelper::getClientInfo($template->client_id); $relPath = base64_decode($file); $path = JPath::clean($client->path . '/templates/' . $template->element . '/' . $relPath); $JImage = new JImage($path); try { $image = $JImage->resize($width, $height, true, 1); $image->toFile($path); return true; } catch (Exception $e) { $app->enqueueMessage($e->getMessage(), 'error'); } } } /** * Template preview. * * @return object object containing the id of the template. * * @since 3.2 */ public function getPreview() { $app = JFactory::getApplication(); $db = $this->getDbo(); $query = $db->getQuery(true); $query->select('id, client_id'); $query->from('#__template_styles'); $query->where($db->quoteName('template') . ' = ' . $db->quote($this->template->element)); $db->setQuery($query); try { $result = $db->loadObject(); } catch (RuntimeException $e) { $app->enqueueMessage($e->getMessage(), 'warning'); } if (empty($result)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_EXTENSION_RECORD_NOT_FOUND'), 'warning'); } else { return $result; } } /** * Rename a file. * * @return mixed array on success, false on failure * * @since 3.2 */ public function getFont() { if ($template = $this->getTemplate()) { $app = JFactory::getApplication(); $client = JApplicationHelper::getClientInfo($template->client_id); $relPath = base64_decode($app->input->get('file')); $explodeArray = explode('/', $relPath); $fileName = end($explodeArray); $path = JPath::clean($client->path . '/templates/' . $template->element . '/' . $relPath); if (stristr($client->path, 'administrator') == false) { $folder = '/templates/'; } else { $folder = '/administrator/templates/'; } $uri = JUri::root(true) . $folder . $template->element; if (file_exists(JPath::clean($path))) { $font['address'] = $uri . $relPath; $font['rel_path'] = $relPath; $font['name'] = $fileName; } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_FONT_FILE_NOT_FOUND'), 'error'); return false; } return $font; } } /** * Copy a file. * * @param string $newName The name of the copied file * @param string $location The final location where the file is to be copied * @param string $file The name and location of the file * * @return boolean true if image resize successful, false otherwise. * * @since 3.2 */ public function copyFile($newName, $location, $file) { if ($template = $this->getTemplate()) { $app = JFactory::getApplication(); $client = JApplicationHelper::getClientInfo($template->client_id); $relPath = base64_decode($file); $explodeArray = explode('.', $relPath); $ext = end($explodeArray); $path = JPath::clean($client->path . '/templates/' . $template->element . '/'); $newPath = JPath::clean($path . '/' . $location . '/' . $newName . '.' . $ext); if (file_exists($newPath)) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_EXISTS'), 'error'); return false; } if (JFile::copy($path . $relPath, $newPath)) { $app->enqueueMessage(JText::sprintf('COM_TEMPLATES_FILE_COPY_SUCCESS', $newName . '.' . $ext)); return true; } else { return false; } } } /** * Get the compressed files. * * @return array if file exists, false otherwise * * @since 3.2 */ public function getArchive() { if ($template = $this->getTemplate()) { $app = JFactory::getApplication(); $client = JApplicationHelper::getClientInfo($template->client_id); $relPath = base64_decode($app->input->get('file')); $path = JPath::clean($client->path . '/templates/' . $template->element . '/' . $relPath); if (file_exists(JPath::clean($path))) { $files = array(); $zip = new ZipArchive; if ($zip->open($path) === true) { for ($i = 0; $i < $zip->numFiles; $i++) { $entry = $zip->getNameIndex($i); $files[] = $entry; } } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_ARCHIVE_OPEN_FAIL'), 'error'); return false; } } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_ERROR_FONT_FILE_NOT_FOUND'), 'error'); return false; } return $files; } } /** * Extract contents of a archive file. * * @param string $file The name and location of the file * * @return boolean true if image extraction is successful, false otherwise. * * @since 3.2 */ public function extractArchive($file) { if ($template = $this->getTemplate()) { $app = JFactory::getApplication(); $client = JApplicationHelper::getClientInfo($template->client_id); $relPath = base64_decode($file); $explodeArray = explode('/', $relPath); $fileName = end($explodeArray); $folderPath = stristr($relPath, $fileName, true); $path = JPath::clean($client->path . '/templates/' . $template->element . '/' . $folderPath . '/'); if (file_exists(JPath::clean($path . '/' . $fileName))) { $zip = new ZipArchive; if ($zip->open(JPath::clean($path . '/' . $fileName)) === true) { for ($i = 0; $i < $zip->numFiles; $i++) { $entry = $zip->getNameIndex($i); if (file_exists(JPath::clean($path . '/' . $entry))) { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_ARCHIVE_EXISTS'), 'error'); return false; } } $zip->extractTo($path); return true; } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_ARCHIVE_OPEN_FAIL'), 'error'); return false; } } else { $app->enqueueMessage(JText::_('COM_TEMPLATES_FILE_ARCHIVE_NOT_FOUND'), 'error'); return false; } } } } PKb��\�4���*components/com_templates/models/styles.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Methods supporting a list of template style records. * * @since 1.6 */ class TemplatesModelStyles extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JControllerLegacy * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'title', 'a.title', 'client_id', 'a.client_id', 'template', 'a.template', 'home', 'a.home', ); } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $template = $this->getUserStateFromRequest($this->context . '.filter.template', 'filter_template'); $this->setState('filter.template', $template); $clientId = $this->getUserStateFromRequest($this->context . '.filter.client_id', 'filter_client_id', null); $this->setState('filter.client_id', $clientId); // Load the parameters. $params = JComponentHelper::getParams('com_templates'); $this->setState('params', $params); // List state information. parent::populateState('a.template', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.template'); $id .= ':' . $this->getState('filter.client_id'); return parent::getStoreId($id); } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.id, a.template, a.title, a.home, a.client_id, l.title AS language_title, l.image as image' ) ); $query->from($db->quoteName('#__template_styles') . ' AS a'); // Join on menus. $query->select('COUNT(m.template_style_id) AS assigned') ->join('LEFT', '#__menu AS m ON m.template_style_id = a.id') ->group('a.id, a.template, a.title, a.home, a.client_id, l.title, l.image, e.extension_id'); // Join over the language $query->join('LEFT', '#__languages AS l ON l.lang_code = a.home'); // Filter by extension enabled $query->select('extension_id AS e_id') ->join('LEFT', '#__extensions AS e ON e.element = a.template AND e.client_id = a.client_id') ->where('e.enabled = 1') ->where('e.type=' . $db->quote('template')); // Filter by template. if ($template = $this->getState('filter.template')) { $query->where('a.template = ' . $db->quote($template)); } // Filter by client. $clientId = $this->getState('filter.client_id'); if (is_numeric($clientId)) { $query->where('a.client_id = ' . (int) $clientId); } // Filter by search in title $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } else { $search = $db->quote('%' . strtolower($search) . '%'); $query->where('(' . ' LOWER(a.template) LIKE ' . $search . ' OR LOWER(a.title) LIKE ' . $search . ')'); } } // Add the list ordering clause. $query->order($db->escape($this->getState('list.ordering', 'a.title')) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } } PKb��\1���??4components/com_templates/models/forms/style_site.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field name="home" type="contentlanguage" label="COM_TEMPLATES_FIELD_HOME_LABEL" description="COM_TEMPLATES_FIELD_HOME_SITE_DESC" default="0"> <option value="0">JNO</option> <option value="1">JALL</option> </field> </fieldset> </form> PKb��\~ ���0components/com_templates/models/forms/source.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field name="extension_id" type="hidden" /> <field name="filename" type="hidden" /> <field name="source" type="editor" editor="codemirror|none" buttons="no" label="COM_TEMPLATES_FIELD_SOURCE_LABEL" description="COM_TEMPLATES_FIELD_SOURCE_DESC" height="500px" rows="20" cols="80" syntax="php" filter="raw" /> </fieldset> </form> PKb��\Z���cc=components/com_templates/models/forms/style_administrator.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field name="home" type="radio" label="COM_TEMPLATES_FIELD_HOME_LABEL" description="COM_TEMPLATES_FIELD_HOME_ADMINISTRATOR_DESC" class="btn-group btn-group-yesno" default="0"> <option value="1">JYES</option> <option value="0">JNO</option> </field> </fieldset> </form> PKb��\YUZ��/components/com_templates/models/forms/style.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field id="id" name="id" type="text" default="0" readonly="true" class="readonly" label="JGLOBAL_FIELD_ID_LABEL" description ="JGLOBAL_FIELD_ID_DESC" /> <field name="template" type="text" label="COM_TEMPLATES_FIELD_TEMPLATE_LABEL" description="COM_TEMPLATES_FIELD_TEMPLATE_DESC" class="readonly" size="30" readonly="true" /> <field name="client_id" type="hidden" label="COM_TEMPLATES_FIELD_CLIENT_LABEL" description="COM_TEMPLATES_FIELD_CLIENT_DESC" class="readonly" default="0" readonly="true" /> <field name="title" type="text" class="input-xxlarge input-large-text" size="50" label="COM_TEMPLATES_FIELD_TITLE_LABEL" description="COM_TEMPLATES_FIELD_TITLE_DESC" required="true" /> <field name="assigned" type="hidden" /> </fieldset> </form> PKb��\:� ��-components/com_templates/models/templates.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Methods supporting a list of template extension records. * * @since 1.6 */ class TemplatesModelTemplates extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JControllerLegacy * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'name', 'a.name', 'folder', 'a.folder', 'element', 'a.element', 'checked_out', 'a.checked_out', 'checked_out_time', 'a.checked_out_time', 'state', 'a.state', 'enabled', 'a.enabled', 'access', 'a.access', 'access_level', 'ordering', 'a.ordering', 'client_id', 'a.client_id', ); } parent::__construct($config); } /** * Override parent getItems to add extra XML metadata. * * @return array * * @since 1.6 */ public function getItems() { $items = parent::getItems(); foreach ($items as &$item) { $client = JApplicationHelper::getClientInfo($item->client_id); $item->xmldata = TemplatesHelper::parseXMLTemplateFile($client->path, $item->element); } return $items; } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery * * @since 1.6 */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.extension_id, a.name, a.element, a.client_id' ) ); $query->from($db->quoteName('#__extensions') . ' AS a'); // Filter by extension type. $query->where($db->quoteName('type') . ' = ' . $db->quote('template')); // Filter by client. $clientId = $this->getState('filter.client_id'); if (is_numeric($clientId)) { $query->where('a.client_id = ' . (int) $clientId); } // Filter by search in title $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } else { $search = $db->quote('%' . strtolower($search) . '%'); $query->where('(' . ' LOWER(a.element) LIKE ' . $search . ' OR LOWER(a.name) LIKE ' . $search . ')'); } } // Add the list ordering clause. $query->order($db->escape($this->getState('list.ordering', 'a.folder')) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. * * @since 1.6 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.client_id'); return parent::getStoreId($id); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $clientId = $this->getUserStateFromRequest($this->context . '.filter.client_id', 'filter_client_id', null); $this->setState('filter.client_id', $clientId); // Load the parameters. $params = JComponentHelper::getParams('com_templates'); $this->setState('params', $params); // List state information. parent::populateState('a.element', 'asc'); } } PKb��\�q��'components/com_templates/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_templates * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Templates manager master display controller. * * @since 1.6 */ class TemplatesController extends JControllerLegacy { /** * @var string The default view. * @since 1.6 */ protected $default_view = 'styles'; /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param boolean $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return TemplatesController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { $view = $this->input->get('view', 'styles'); $layout = $this->input->get('layout', 'default'); $id = $this->input->getInt('id'); $document = JFactory::getDocument(); // For JSON requests if ($document->getType() == 'json') { $view = new TemplatesViewStyle; // Get/Create the model if ($model = new TemplatesModelStyle) { $model->addTablePath(JPATH_ADMINISTRATOR . '/components/com_templates/tables'); // Push the model into the view (as default) $view->setModel($model, true); } $view->document = $document; return $view->display(); } // Check for edit form. if ($view == 'style' && $layout == 'edit' && !$this->checkEditId('com_templates.edit.style', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_templates&view=styles', false)); return false; } return parent::display(); } } PKb��\Tl߀��*components/com_postinstall/postinstall.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_postinstall * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Load the RAD layer. if (!defined('FOF_INCLUDED')) { require_once JPATH_LIBRARIES . '/fof/include.php'; } // Dispatch the component. FOFDispatcher::getTmpInstance('com_postinstall')->dispatch(); PKb��\��k�pp2components/com_postinstall/controllers/message.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_postinstall * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Postinstall message controller. * * @since 3.2 */ class PostinstallControllerMessage extends FOFController { /** * Resets all post-installation messages of the specified extension. * * @return void * * @since 3.2 */ public function reset() { /** @var PostinstallModelMessages $model */ $model = $this->getThisModel(); $eid = (int) $model->getState('eid', '700', 'int'); if (empty($eid)) { $eid = 700; } $model->resetMessages($eid); $this->setRedirect('index.php?option=com_postinstall&eid=' . $eid); } /** * Executes the action associated with an item. * * @return void * * @since 3.2 */ public function action() { // CSRF prevention. if ($this->csrfProtection) { $this->_csrfProtection(); } $model = $this->getThisModel(); if (!$model->getId()) { $model->setIDsFromRequest(); } $item = $model->getItem(); switch ($item->type) { case 'link': $this->setRedirect($item->action); return; break; case 'action': jimport('joomla.filesystem.file'); $file = FOFTemplateUtils::parsePath($item->action_file, true); if (JFile::exists($file)) { require_once $file; call_user_func($item->action); } break; case 'message': default: break; } $this->setRedirect('index.php?option=com_postinstall'); } } PKb��\9�����"components/com_postinstall/fof.xmlnu�[���<?xml version="1.0" encoding="UTF-8"?> <fof> <backend> <dispatcher> <option name="default_view">messages</option> </dispatcher> <view name="messages"> <acl> <task name="reset">core.edit.state</task> </acl> <taskmap> <task name="read">browse</task> <task name="add">browse</task> <task name="edit">browse</task> </taskmap> </view> </backend> </fof> PKb��\�L_RR%components/com_postinstall/config.xmlnu�[���<?xml version="1.0" encoding="UTF-8"?> <config> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" component="com_postinstall" section="component" /> </fieldset> </config>PKb��\?�6�NN%components/com_postinstall/access.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <access component="com_postinstall"> <section name="component"> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> </section> </access> PKb��\a�,���&components/com_postinstall/toolbar.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_postinstall * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * The Toolbar class renders the component title area and the toolbar. * * @since 3.2 */ class PostinstallToolbar extends FOFToolbar { /** * Setup the toolbar and title * * @return void * * @since 3.2 */ public function onMessages() { JToolBarHelper::preferences($this->config['option'], 550, 875); JToolbarHelper::help('JHELP_COMPONENTS_POST_INSTALLATION_MESSAGES'); } } PKb��\�;�w��:components/com_postinstall/views/messages/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_postinstall * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $renderer = JFactory::getDocument()->loadRenderer('module'); $options = array('style' => 'raw'); $mod = JModuleHelper::getModule('mod_feed'); $param = array( "rssurl" => "https://www.joomla.org/announcements/release-news.feed?type=rss", "rsstitle" => 0, "rssdesc" => 0, "rssimage" => 1, "rssitems" => 5, "rssitemdesc" => 1, "word_count" => 200, "cache" => 0, ); $params = array('params' => json_encode($param)); JHtml::_('formbehavior.chosen', 'select'); ?> <form action="index.php" method="post" name="adminForm" class="form-inline"> <input type="hidden" name="option" value="com_postinstall"> <label for="eid"><?php echo JText::_('COM_POSTINSTALL_MESSAGES_FOR'); ?></label> <?php echo JHtml::_('select.genericlist', $this->extension_options, 'eid', array('onchange' => 'this.form.submit()', 'class' => 'input-xlarge'), 'value', 'text', $this->eid, 'eid'); ?> </form> <?php if (empty($this->items)) : ?> <div class="hero-unit"> <h2><?php echo JText::_('COM_POSTINSTALL_LBL_NOMESSAGES_TITLE'); ?></h2> <p><?php echo JText::_('COM_POSTINSTALL_LBL_NOMESSAGES_DESC'); ?></p> <a href="index.php?option=com_postinstall&view=messages&task=reset&eid=<?php echo $this->eid; ?>&<?php echo $this->token; ?>=1" class="btn btn-warning btn-large"> <span class="icon icon-eye-open"></span> <?php echo JText::_('COM_POSTINSTALL_BTN_RESET'); ?> </a> </div> <?php else : ?> <?php if ($this->eid == 700) : ?> <div class="row-fluid"> <div class="span8"> <?php endif; ?> <?php foreach ($this->items as $item) : ?> <fieldset> <legend><?php echo JText::_($item->title_key); ?></legend> <p class="small"> <?php echo JText::sprintf('COM_POSTINSTALL_LBL_SINCEVERSION', $item->version_introduced); ?> </p> <p><?php echo JText::_($item->description_key); ?></p> <div> <?php if ($item->type !== 'message') : ?> <a href="index.php?option=com_postinstall&view=messages&task=action&id=<?php echo $item->postinstall_message_id; ?>&<?php echo $this->token; ?>=1" class="btn btn-primary"> <?php echo JText::_($item->action_key); ?> </a> <?php endif; ?> <?php if (JFactory::getUser()->authorise('core.edit.state', 'com_postinstall')) : ?> <a href="index.php?option=com_postinstall&view=message&task=unpublish&id=<?php echo $item->postinstall_message_id; ?>&<?php echo $this->token; ?>=1" class="btn btn-inverse btn-small"> <?php echo JText::_('COM_POSTINSTALL_BTN_HIDE'); ?> </a> <?php endif; ?> </div> </fieldset> <?php endforeach; ?> <?php if ($this->eid == 700) : ?> </div> <div class="span4"> <h2><?php echo JText::_('COM_POSTINSTALL_LBL_RELEASENEWS'); ?></h2> <?php echo $renderer->render($mod, $params, $options); ?> </div> </div> <?php endif; ?> <?php endif; ?> PKb��\����7components/com_postinstall/views/messages/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_postinstall * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Model class to display postinstall messages * * @since 3.2 */ class PostinstallViewMessages extends FOFViewHtml { /** * Executes before rendering the page for the Browse task. * * @param string $tpl Subtemplate to use * * @return boolean Return true to allow rendering of the page * * @since 3.2 */ protected function onBrowse($tpl = null) { /** @var PostinstallModelMessages $model */ $model = $this->getModel(); $this->eid = (int) $model->getState('eid', '700', 'int'); if (empty($this->eid)) { $this->eid = 700; } $this->token = JFactory::getSession()->getFormToken(); $this->extension_options = $model->getComponentOptions(); $extension_name = JText::_('COM_POSTINSTALL_TITLE_JOOMLA'); if ($this->eid != 700) { $extension_name = $model->getExtensionName($this->eid); } JToolBarHelper::title(JText::sprintf('COM_POSTINSTALL_MESSAGES_TITLE', $extension_name)); return parent::onBrowse($tpl); } } PKb��\�ʳ::*components/com_postinstall/postinstall.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.2" method="upgrade"> <name>com_postinstall</name> <author>Joomla! Project</author> <creationDate>September 2013</creationDate> <copyright>(C) 2005 - 2015 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.2.0</version> <description>COM_POSTINSTALL_XML_DESCRIPTION</description> <administration> <files folder="admin"> <filename>access.xml</filename> <filename>config.xml</filename> <filename>fof.xml</filename> <filename>postinstall.php</filename> <filename>toolbar.php</filename> <folder>controllers</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_postinstall.ini</language> <language tag="en-GB">language/en-GB.com_postinstall.sys.ini</language> </languages> </administration> </extension> PKb��\��R�9�9.components/com_postinstall/models/messages.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_postinstall * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Model class to manage postinstall messages * * @since 3.2 */ class PostinstallModelMessages extends FOFModel { /** * Builds the SELECT query * * @param boolean $overrideLimits Are we requested to override the set limits? * * @return JDatabaseQuery * * @since 3.2 */ public function buildQuery($overrideLimits = false) { $query = parent::buildQuery($overrideLimits); $db = $this->getDbo(); // Add a forced extension filtering to the list $eid = $this->getState('eid', 700); $query->where($db->qn('extension_id') . ' = ' . $db->q($eid)); // Force filter only enabled messages $published = $this->getState('published', 1, 'int'); $query->where($db->qn('enabled') . ' = ' . $db->q($published)); return $query; } /** * Returns the name of an extension, as registered in the #__extensions table * * @param integer $eid The extension ID * * @return string The extension name * * @since 3.2 */ public function getExtensionName($eid) { // Load the extension's information from the database $db = $this->getDbo(); $query = $db->getQuery(true) ->select(array('name', 'element', 'client_id')) ->from($db->qn('#__extensions')) ->where($db->qn('extension_id') . ' = ' . $db->q((int) $eid)); $db->setQuery($query, 0, 1); $extension = $db->loadObject(); if (!is_object($extension)) { return ''; } // Load language files $basePath = JPATH_ADMINISTRATOR; if ($extension->client_id == 0) { $basePath = JPATH_SITE; } $lang = JFactory::getLanguage(); $lang->load($extension->element, $basePath); // Return the localised name return JText::_($extension->name); } /** * Resets all messages for an extension * * @param integer $eid The extension ID whose messages we'll reset * * @return mixed False if we fail, a db cursor otherwise * * @since 3.2 */ public function resetMessages($eid) { $db = $this->getDbo(); $query = $db->getQuery(true) ->update($db->qn('#__postinstall_messages')) ->set($db->qn('enabled') . ' = ' . $db->q(1)) ->where($db->qn('extension_id') . ' = ' . $db->q($eid)); $db->setQuery($query); return $db->execute(); } /** * List post-processing. This is used to run the programmatic display * conditions against each list item and decide if we have to show it or * not. * * Do note that this a core method of the RAD Layer which operates directly * on the list it's being fed. A little touch of modern magic. * * @param array &$resultArray A list of items to process * * @return void * * @since 3.2 */ protected function onProcessList(&$resultArray) { $unset_keys = array(); $language_extensions = array(); foreach ($resultArray as $key => $item) { // Filter out messages based on dynamically loaded programmatic conditions. if (!empty($item->condition_file) && !empty($item->condition_method)) { jimport('joomla.filesystem.file'); $file = FOFTemplateUtils::parsePath($item->condition_file, true); if (JFile::exists($file)) { require_once $file; $result = call_user_func($item->condition_method); if ($result === false) { $unset_keys[] = $key; } } } // Load the necessary language files. if (!empty($item->language_extension)) { $hash = $item->language_client_id . '-' . $item->language_extension; if (!in_array($hash, $language_extensions)) { $language_extensions[] = $hash; JFactory::getLanguage()->load($item->language_extension, $item->language_client_id == 0 ? JPATH_SITE : JPATH_ADMINISTRATOR); } } } if (!empty($unset_keys)) { foreach ($unset_keys as $key) { unset($resultArray[$key]); } } } /** * Get the drop-down options for the list of component with post-installation messages * * @since 3.4 * * @return array Compatible with JHtmlSelect::genericList */ public function getComponentOptions() { $db = $this->getDbo(); $query = $db->getQuery(true) ->select('extension_id') ->from($db->qn('#__postinstall_messages')) ->group(array($db->qn('extension_id'))); $db->setQuery($query); $extension_ids = $db->loadColumn(); $options = array(); foreach ($extension_ids as $eid) { $extension_name = $this->getExtensionName($eid); if ($extension_name == 'files_joomla') { $extension_name = JText::_('COM_POSTINSTALL_TITLE_JOOMLA'); } $options[] = JHtml::_('select.option', $eid, $extension_name); } return $options; } /** * Adds or updates a post-installation message (PIM) definition. You can use this in your post-installation script using this code: * * require_once JPATH_LIBRARIES . '/fof/include.php'; * FOFModel::getTmpInstance('Messages', 'PostinstallModel')->addPostInstallationMessage($options); * * The $options array contains the following mandatory keys: * * extension_id The numeric ID of the extension this message is for (see the #__extensions table) * * type One of message, link or action. Their meaning is: * message Informative message. The user can dismiss it. * link The action button links to a URL. The URL is defined in the action parameter. * action A PHP action takes place when the action button is clicked. You need to specify the action_file * (RAD path to the PHP file) and action (PHP function name) keys. See below for more information. * * title_key The JText language key for the title of this PIM. * Example: COM_FOOBAR_POSTINSTALL_MESSAGEONE_TITLE * * description_key The JText language key for the main body (description) of this PIM * Example: COM_FOOBAR_POSTINSTALL_MESSAGEONE_DESCRIPTION * * action_key The JText language key for the action button. Ignored and not required when type=message * Example: COM_FOOBAR_POSTINSTALL_MESSAGEONE_ACTION * * language_extension The extension name which holds the language keys used above. * For example, com_foobar, mod_something, plg_system_whatever, tpl_mytemplate * * language_client_id Should we load the front-end (0) or back-end (1) language keys? * * version_introduced Which was the version of your extension where this message appeared for the first time? * Example: 3.2.1 * * enabled Must be 1 for this message to be enabled. If you omit it, it defaults to 1. * * condition_file The RAD path to a PHP file containing a PHP function which determines whether this message should be shown to * the user. @see FOFTemplateUtils::parsePath() for RAD path format. Joomla! will include this file before calling * the condition_method. * Example: admin://components/com_foobar/helpers/postinstall.php * * condition_method The name of a PHP function which will be used to determine whether to show this message to the user. This must be * a simple PHP user function (not a class method, static method etc) which returns true to show the message and false * to hide it. This function is defined in the condition_file. * Example: com_foobar_postinstall_messageone_condition * * When type=message no additional keys are required. * * When type=link the following additional keys are required: * * action The URL which will open when the user clicks on the PIM's action button * Example: index.php?option=com_foobar&view=tools&task=installSampleData * * When type=action the following additional keys are required: * * action_file The RAD path to a PHP file containing a PHP function which performs the action of this PIM. @see FOFTemplateUtils::parsePath() * for RAD path format. Joomla! will include this file before calling the function defined in the action key below. * Example: admin://components/com_foobar/helpers/postinstall.php * * action The name of a PHP function which will be used to run the action of this PIM. This must be a simple PHP user function * (not a class method, static method etc) which returns no result. * Example: com_foobar_postinstall_messageone_action * * @param array $options See description * * @return $this * * @throws Exception */ public function addPostInstallationMessage(array $options) { // Make sure there are options set if (!is_array($options)) { throw new Exception('Post-installation message definitions must be of type array', 500); } // Initialise array keys $defaultOptions = array( 'extension_id' => '', 'type' => '', 'title_key' => '', 'description_key' => '', 'action_key' => '', 'language_extension' => '', 'language_client_id' => '', 'action_file' => '', 'action' => '', 'condition_file' => '', 'condition_method' => '', 'version_introduced' => '', 'enabled' => '1', ); $options = array_merge($defaultOptions, $options); // Array normalisation. Removes array keys not belonging to a definition. $defaultKeys = array_keys($defaultOptions); $allKeys = array_keys($options); $extraKeys = array_diff($allKeys, $defaultKeys); if (!empty($extraKeys)) { foreach ($extraKeys as $key) { unset($options[$key]); } } // Normalisation of integer values $options['extension_id'] = (int) $options['extension_id']; $options['language_client_id'] = (int) $options['language_client_id']; $options['enabled'] = (int) $options['enabled']; // Normalisation of 0/1 values foreach (array('language_client_id', 'enabled') as $key) { $options[$key] = $options[$key] ? 1 : 0; } // Make sure there's an extension_id if (!(int) $options['extension_id']) { throw new Exception('Post-installation message definitions need an extension_id', 500); } // Make sure there's a valid type if (!in_array($options['type'], array('message', 'link', 'action'))) { throw new Exception('Post-installation message definitions need to declare a type of message, link or action', 500); } // Make sure there's a title key if (empty($options['title_key'])) { throw new Exception('Post-installation message definitions need a title key', 500); } // Make sure there's a description key if (empty($options['description_key'])) { throw new Exception('Post-installation message definitions need a description key', 500); } // If the type is anything other than message you need an action key if (($options['type'] != 'message') && empty($options['action_key'])) { throw new Exception('Post-installation message definitions need an action key when they are of type "' . $options['type'] . '"', 500); } // You must specify the language extension if (empty($options['language_extension'])) { throw new Exception('Post-installation message definitions need to specify which extension contains their language keys', 500); } // The action file and method are only required for the "action" type if ($options['type'] == 'action') { if (empty($options['action_file'])) { throw new Exception('Post-installation message definitions need an action file when they are of type "action"', 500); } $file_path = FOFTemplateUtils::parsePath($options['action_file'], true); if (!@is_file($file_path)) { throw new Exception('The action file ' . $options['action_file'] . ' of your post-installation message definition does not exist', 500); } if (empty($options['action'])) { throw new Exception('Post-installation message definitions need an action (function name) when they are of type "action"', 500); } } if ($options['type'] == 'link') { if (empty($options['link'])) { throw new Exception('Post-installation message definitions need an action (URL) when they are of type "link"', 500); } } // The condition file and method are only required when the type is not "message" if ($options['type'] != 'message') { if (empty($options['condition_file'])) { throw new Exception('Post-installation message definitions need a condition file when they are of type "' . $options['type'] . '"', 500); } $file_path = FOFTemplateUtils::parsePath($options['condition_file'], true); if (!@is_file($file_path)) { throw new Exception('The condition file ' . $options['condition_file'] . ' of your post-installation message definition does not exist', 500); } if (empty($options['condition_method'])) { throw new Exception( 'Post-installation message definitions need a condition method (function name) when they are of type "' . $options['type'] . '"', 500 ); } } // Check if the definition exists $table = $this->getTable(); $tableName = $table->getTableName(); $db = $this->getDbo(); $query = $db->getQuery(true) ->select('*') ->from($db->qn($tableName)) ->where($db->qn('extension_id') . ' = ' . $db->q($options['extension_id'])) ->where($db->qn('type') . ' = ' . $db->q($options['type'])) ->where($db->qn('title_key') . ' = ' . $db->q($options['title_key'])); $existingRow = $db->setQuery($query)->loadAssoc(); // Is the existing definition the same as the one we're trying to save? if (!empty($existingRow)) { $same = true; foreach ($options as $k => $v) { if ($existingRow[$k] != $v) { $same = false; break; } } // Trying to add the same row as the existing one; quit if ($same) { return $this; } // Otherwise it's not the same row. Remove the old row before insert a new one. $query = $db->getQuery(true) ->delete($db->qn($tableName)) ->where($db->q('extension_id') . ' = ' . $db->q($options['extension_id'])) ->where($db->q('type') . ' = ' . $db->q($options['type'])) ->where($db->q('title_key') . ' = ' . $db->q($options['title_key'])); $db->setQuery($query)->execute(); } // Insert the new row $options = (object) $options; $db->insertObject($tableName, $options); return $this; } } PKb��\����components/com_users/users.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.tabstate'); if (!JFactory::getUser()->authorise('core.manage', 'com_users')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } JLoader::register('UsersHelper', __DIR__ . '/helpers/users.php'); $controller = JControllerLegacy::getInstance('Users'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\�MB��$components/com_users/tables/note.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * User notes table class * * @since 2.5 */ class UsersTableNote extends JTable { /** * Constructor * * @param JDatabaseDriver &$db Database object * * @since 2.5 */ public function __construct(&$db) { parent::__construct('#__user_notes', 'id', $db); JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_users.note')); } /** * Overloaded store method for the notes table. * * @param boolean $updateNulls Toggle whether null values should be updated. * * @return boolean True on success, false on failure. * * @since 2.5 */ public function store($updateNulls = false) { $date = JFactory::getDate()->toSql(); $userId = JFactory::getUser()->get('id'); $this->modified_time = $date; $this->modified_user_id = $userId; if (!((int) $this->review_time)) { // Null date. $this->review_time = JFactory::getDbo()->getNullDate(); } if (empty($this->id)) { // New record. $this->created_time = $date; $this->created_user_id = $userId; } // Attempt to store the data. return parent::store($updateNulls); } /** * Method to set the publishing state for a row or list of rows in the database * table. The method respects checked out rows by other users and will attempt * to check-in rows that it can after adjustments are made. * * @param mixed $pks An optional array of primary key values to update. If not set the instance property value is used. * @param integer $state The publishing state. eg. [0 = unpublished, 1 = published] * @param integer $userId The user id of the user performing the operation. * * @return boolean True on success. * * @link https://docs.joomla.org/JTable/publish * @since 2.5 */ public function publish($pks = null, $state = 1, $userId = 0) { $k = $this->_tbl_key; // Sanitize input. JArrayHelper::toInteger($pks); $userId = (int) $userId; $state = (int) $state; // If there are no primary keys set check to see if the instance key is set. if (empty($pks)) { if ($this->$k) { $pks = array($this->$k); } // Nothing to set publishing state on, return false. else { $this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED')); return false; } } $query = $this->_db->getQuery(true) ->update($this->_db->quoteName($this->_tbl)) ->set($this->_db->quoteName('state') . ' = ' . (int) $state); // Build the WHERE clause for the primary keys. $query->where($k . '=' . implode(' OR ' . $k . '=', $pks)); // Determine if there is checkin support for the table. if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time')) { $checkin = false; } else { $query->where('(checked_out = 0 OR checked_out = ' . (int) $userId . ')'); $checkin = true; } // Update the publishing state for rows with the given primary keys. $this->_db->setQuery($query); try { $this->_db->execute(); } catch (RuntimeException $e) { $this->setError($this->_db->getMessage()); return false; } // If checkin is supported and all rows were adjusted, check them in. if ($checkin && (count($pks) == $this->_db->getAffectedRows())) { // Checkin the rows. foreach ($pks as $pk) { $this->checkin($pk); } } // If the JTable instance value is in the list of primary keys that were set, set the instance. if (in_array($this->$k, $pks)) { $this->state = $state; } $this->setError(''); return true; } } PKb��\�zVs22*components/com_users/controllers/users.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Users list controller class. * * @since 1.6 */ class UsersControllerUsers extends JControllerAdmin { /** * @var string The prefix to use with controller messages. * @since 1.6 */ protected $text_prefix = 'COM_USERS_USERS'; /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @since 1.6 * @see JController */ public function __construct($config = array()) { parent::__construct($config); $this->registerTask('block', 'changeBlock'); $this->registerTask('unblock', 'changeBlock'); } /** * Proxy for getModel. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 1.6 */ public function getModel($name = 'User', $prefix = 'UsersModel', $config = array('ignore_request' => true)) { return parent::getModel($name, $prefix, $config); } /** * Method to change the block status on a record. * * @return void * * @since 1.6 */ public function changeBlock() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $ids = $this->input->get('cid', array(), 'array'); $values = array('block' => 1, 'unblock' => 0); $task = $this->getTask(); $value = JArrayHelper::getValue($values, $task, 0, 'int'); if (empty($ids)) { JError::raiseWarning(500, JText::_('COM_USERS_USERS_NO_ITEM_SELECTED')); } else { // Get the model. $model = $this->getModel(); // Change the state of the records. if (!$model->block($ids, $value)) { JError::raiseWarning(500, $model->getError()); } else { if ($value == 1) { $this->setMessage(JText::plural('COM_USERS_N_USERS_BLOCKED', count($ids))); } elseif ($value == 0) { $this->setMessage(JText::plural('COM_USERS_N_USERS_UNBLOCKED', count($ids))); } } } $this->setRedirect('index.php?option=com_users&view=users'); } /** * Method to activate a record. * * @return void * * @since 1.6 */ public function activate() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $ids = $this->input->get('cid', array(), 'array'); if (empty($ids)) { JError::raiseWarning(500, JText::_('COM_USERS_USERS_NO_ITEM_SELECTED')); } else { // Get the model. $model = $this->getModel(); // Change the state of the records. if (!$model->activate($ids)) { JError::raiseWarning(500, $model->getError()); } else { $this->setMessage(JText::plural('COM_USERS_N_USERS_ACTIVATED', count($ids))); } } $this->setRedirect('index.php?option=com_users&view=users'); } } PKb��\�A)components/com_users/controllers/user.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * User controller class. * * @since 1.6 */ class UsersControllerUser extends JControllerForm { /** * @var string The prefix to use with controller messages. * @since 1.6 */ protected $text_prefix = 'COM_USERS_USER'; /** * Overrides JControllerForm::allowEdit * * Checks that non-Super Admins are not editing Super Admins. * * @param array $data An array of input data. * @param string $key The name of the key for the primary key. * * @return boolean True if allowed, false otherwise. * * @since 1.6 */ protected function allowEdit($data = array(), $key = 'id') { // Check if this person is a Super Admin if (JAccess::check($data[$key], 'core.admin')) { // If I'm not a Super Admin, then disallow the edit. if (!JFactory::getUser()->authorise('core.admin')) { return false; } } return parent::allowEdit($data, $key); } /** * Method to run batch operations. * * @param object $model The model. * * @return boolean True on success, false on failure * * @since 2.5 */ public function batch($model = null) { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Set the model $model = $this->getModel('User', '', array()); // Preset the redirect $this->setRedirect(JRoute::_('index.php?option=com_users&view=users' . $this->getRedirectToListAppend(), false)); return parent::batch($model); } /** * Function that allows child controller access to model data after the data has been saved. * * @param JModelLegacy $model The data model object. * @param array $validData The validated data. * * @return void * * @since 3.1 */ protected function postSaveHook(JModelLegacy $model, $validData = array()) { return; } } PKb��\킪��*components/com_users/controllers/level.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * User view level controller class. * * @since 1.6 */ class UsersControllerLevel extends JControllerForm { /** * @var string The prefix to use with controller messages. * @since 1.6 */ protected $text_prefix = 'COM_USERS_LEVEL'; /** * Method to check if you can save a new or existing record. * * Overrides JControllerForm::allowSave to check the core.admin permission. * * @param array $data An array of input data. * @param string $key The name of the key for the primary key. * * @return boolean * * @since 1.6 */ protected function allowSave($data, $key = 'id') { return (JFactory::getUser()->authorise('core.admin', $this->option) && parent::allowSave($data, $key)); } /** * Removes an item. * * Overrides JControllerAdmin::delete to check the core.admin permission. * * @return boolean Returns true on success, false on failure. * * @since 1.6 */ public function delete() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $ids = $this->input->get('cid', array(), 'array'); if (!JFactory::getUser()->authorise('core.admin', $this->option)) { JError::raiseError(500, JText::_('JERROR_ALERTNOAUTHOR')); jexit(); } elseif (empty($ids)) { JError::raiseWarning(500, JText::_('COM_USERS_NO_LEVELS_SELECTED')); } else { // Get the model. $model = $this->getModel(); JArrayHelper::toInteger($ids); // Remove the items. if (!$model->delete($ids)) { JError::raiseWarning(500, $model->getError()); } else { $this->setMessage(JText::plural('COM_USERS_N_LEVELS_DELETED', count($ids))); } } $this->setRedirect('index.php?option=com_users&view=levels'); } } PKb��\�Z����+components/com_users/controllers/groups.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * User groups list controller class. * * @since 1.6 */ class UsersControllerGroups extends JControllerAdmin { /** * @var string The prefix to use with controller messages. * @since 1.6 */ protected $text_prefix = 'COM_USERS_GROUPS'; /** * Proxy for getModel. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 1.6 */ public function getModel($name = 'Group', $prefix = 'UsersModel', $config = array()) { return parent::getModel($name, $prefix, array('ignore_request' => true)); } /** * Removes an item. * * Overrides JControllerAdmin::delete to check the core.admin permission. * * @return boolean Returns true on success, false on failure. * * @since 1.6 */ public function delete() { if (!JFactory::getUser()->authorise('core.admin', $this->option)) { JError::raiseError(500, JText::_('JERROR_ALERTNOAUTHOR')); jexit(); } return parent::delete(); } /** * Method to publish a list of records. * * Overrides JControllerAdmin::publish to check the core.admin permission. * * @return void * * @since 1.6 */ public function publish() { if (!JFactory::getUser()->authorise('core.admin', $this->option)) { JError::raiseError(500, JText::_('JERROR_ALERTNOAUTHOR')); jexit(); } return parent::publish(); } /** * Changes the order of one or more records. * * Overrides JControllerAdmin::reorder to check the core.admin permission. * * @return boolean True on success * * @since 1.6 */ public function reorder() { if (!JFactory::getUser()->authorise('core.admin', $this->option)) { JError::raiseError(500, JText::_('JERROR_ALERTNOAUTHOR')); jexit(); } return parent::reorder(); } /** * Method to save the submitted ordering values for records. * * Overrides JControllerAdmin::saveorder to check the core.admin permission. * * @return boolean True on success * * @since 1.6 */ public function saveorder() { if (!JFactory::getUser()->authorise('core.admin', $this->option)) { JError::raiseError(500, JText::_('JERROR_ALERTNOAUTHOR')); jexit(); } return parent::saveorder(); } /** * Check in of one or more records. * * Overrides JControllerAdmin::checkin to check the core.admin permission. * * @return boolean True on success * * @since 1.6 */ public function checkin() { if (!JFactory::getUser()->authorise('core.admin', $this->option)) { JError::raiseError(500, JText::_('JERROR_ALERTNOAUTHOR')); jexit(); } return parent::checkin(); } } PKb��\�����)components/com_users/controllers/mail.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Users mail controller. * * @since 1.6 */ class UsersControllerMail extends JControllerLegacy { /** * Send the mail * * @return void * * @since 1.6 */ public function send() { // Redirect to admin index if mass mailer disabled in conf if (JFactory::getApplication()->get('massmailoff', 0) == 1) { JFactory::getApplication()->redirect(JRoute::_('index.php', false)); } // Check for request forgeries. JSession::checkToken('request') or jexit(JText::_('JINVALID_TOKEN')); $model = $this->getModel('Mail'); if ($model->send()) { $type = 'message'; } else { $type = 'error'; } $msg = $model->getError(); $this->setredirect('index.php?option=com_users&view=mail', $msg, $type); } /** * Cancel the mail * * @return void * * @since 1.6 */ public function cancel() { // Check for request forgeries. JSession::checkToken('request') or jexit(JText::_('JINVALID_TOKEN')); $this->setRedirect('index.php'); } } PKb��\����zz*components/com_users/controllers/group.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * User view level controller class. * * @since 1.6 */ class UsersControllerGroup extends JControllerForm { /** * @var string The prefix to use with controller messages. * @since 1.6 */ protected $text_prefix = 'COM_USERS_GROUP'; /** * Method to check if you can save a new or existing record. * * Overrides JControllerForm::allowSave to check the core.admin permission. * * @param array $data An array of input data. * @param string $key The name of the key for the primary key. * * @return boolean * * @since 1.6 */ protected function allowSave($data, $key = 'id') { return (JFactory::getUser()->authorise('core.admin', $this->option) && parent::allowSave($data, $key)); } /** * Overrides JControllerForm::allowEdit * * Checks that non-Super Admins are not editing Super Admins. * * @param array $data An array of input data. * @param string $key The name of the key for the primary key. * * @return boolean * * @since 1.6 */ protected function allowEdit($data = array(), $key = 'id') { // Check if this group is a Super Admin if (JAccess::checkGroup($data[$key], 'core.admin')) { // If I'm not a Super Admin, then disallow the edit. if (!JFactory::getUser()->authorise('core.admin')) { return false; } } return parent::allowEdit($data, $key); } } PKb��\������+components/com_users/controllers/levels.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * User view levels list controller class. * * @since 1.6 */ class UsersControllerLevels extends JControllerAdmin { /** * @var string The prefix to use with controller messages. * @since 1.6 */ protected $text_prefix = 'COM_USERS_LEVELS'; /** * Proxy for getModel. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 1.6 */ public function getModel($name = 'Level', $prefix = 'UsersModel', $config = array()) { return parent::getModel($name, $prefix, array('ignore_request' => true)); } } PKb��\���``)components/com_users/controllers/note.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * User note controller class. * * @since 2.5 */ class UsersControllerNote extends JControllerForm { /** * The prefix to use with controller messages. * * @var string * @since 2.5 */ protected $text_prefix = 'COM_USERS_NOTE'; /** * Gets the URL arguments to append to an item redirect. * * @param integer $recordId The primary key id for the item. * @param string $key The name of the primary key variable. * * @return string The arguments to append to the redirect URL. * * @since 2.5 */ protected function getRedirectToItemAppend($recordId = null, $key = 'id') { $append = parent::getRedirectToItemAppend($recordId, $key); $userId = JFactory::getApplication()->input->get('u_id', 0, 'int'); if ($userId) { $append .= '&u_id=' . $userId; } return $append; } } PKb��\@' ��*components/com_users/controllers/notes.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * User notes controller class. * * @since 2.5 */ class UsersControllerNotes extends JControllerAdmin { /** * The prefix to use with controller messages. * * @var string * @since 2.5 */ protected $text_prefix = 'COM_USERS_NOTES'; /** * Method to get a model object, loading it if required. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 2.5 */ public function getModel($name = 'Note', $prefix = 'UsersModel', $config = array('ignore_request' => true)) { return parent::getModel($name, $prefix, $config); } } PKb��\������components/com_users/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="component"> <field name="allowUserRegistration" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_USERS_CONFIG_FIELD_ALLOWREGISTRATION_LABEL" description="COM_USERS_CONFIG_FIELD_ALLOWREGISTRATION_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="new_usertype" type="usergrouplist" default="2" label="COM_USERS_CONFIG_FIELD_NEW_USER_TYPE_LABEL" description="COM_USERS_CONFIG_FIELD_NEW_USER_TYPE_DESC"> </field> <field name="guest_usergroup" type="usergrouplist" default="1" label="COM_USERS_CONFIG_FIELD_GUEST_USER_GROUP_LABEL" description="COM_USERS_CONFIG_FIELD_GUEST_USER_GROUP_DESC"> </field> <field name="sendpassword" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_USERS_CONFIG_FIELD_SENDPASSWORD_LABEL" description="COM_USERS_CONFIG_FIELD_SENDPASSWORD_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="useractivation" type="list" default="2" label="COM_USERS_CONFIG_FIELD_USERACTIVATION_LABEL" description="COM_USERS_CONFIG_FIELD_USERACTIVATION_DESC"> <option value="0">JNONE</option> <option value="1">COM_USERS_CONFIG_FIELD_USERACTIVATION_OPTION_SELFACTIVATION</option> <option value="2">COM_USERS_CONFIG_FIELD_USERACTIVATION_OPTION_ADMINACTIVATION</option> </field> <field name="mail_to_admin" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_USERS_CONFIG_FIELD_MAILTOADMIN_LABEL" description="COM_USERS_CONFIG_FIELD_MAILTOADMIN_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="captcha" type="plugins" folder="captcha" default="" label="COM_USERS_CONFIG_FIELD_CAPTCHA_LABEL" description="COM_USERS_CONFIG_FIELD_CAPTCHA_DESC" filter="cmd" > <option value="">JOPTION_USE_DEFAULT</option> <option value="0">JOPTION_DO_NOT_USE</option> </field> <field name="frontend_userparams" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_USERS_CONFIG_FIELD_FRONTEND_USERPARAMS_LABEL" description="COM_USERS_CONFIG_FIELD_FRONTEND_USERPARAMS_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="site_language" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_USERS_CONFIG_FIELD_FRONTEND_LANG_LABEL" description="COM_USERS_CONFIG_FIELD_FRONTEND_LANG_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="change_login_name" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_USERS_CONFIG_FIELD_CHANGEUSERNAME_LABEL" description="COM_USERS_CONFIG_FIELD_CHANGEUSERNAME_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="reset_count" type="integer" label="COM_USERS_CONFIG_FIELD_FRONTEND_RESET_COUNT_LABEL" description="COM_USERS_CONFIG_FIELD_FRONTEND_RESET_COUNT_DESC" first="0" last="20" step="1" default="10"> </field> <field name="reset_time" type="integer" label="COM_USERS_CONFIG_FIELD_FRONTEND_RESET_TIME_LABEL" description="COM_USERS_CONFIG_FIELD_FRONTEND_RESET_TIME_DESC" first="1" last="24" step="1" default="1"> </field> <field name="minimum_length" type="integer" label="COM_USERS_CONFIG_FIELD_MINIMUM_PASSWORD_LENGTH" description="COM_USERS_CONFIG_FIELD_MINIMUM_PASSWORD_LENGTH_DESC" first="4" last="99" step="1" default="4"> </field> <field name="minimum_integers" type="integer" label="COM_USERS_CONFIG_FIELD_MINIMUM_INTEGERS" description="COM_USERS_CONFIG_FIELD_MINIMUM_INTEGERS_DESC" first="0" last="98" step="1" default="0"> </field> <field name="minimum_symbols" type="integer" label="COM_USERS_CONFIG_FIELD_MINIMUM_SYMBOLS" description="COM_USERS_CONFIG_FIELD_MINIMUM_SYMBOLS_DESC" first="0" last="98" step="1" default="0"> </field> <field name="minimum_uppercase" type="integer" label="COM_USERS_CONFIG_FIELD_MINIMUM_UPPERCASE" description="COM_USERS_CONFIG_FIELD_MINIMUM_UPPERCASE_DESC" first="0" last="98" step="1" default="0"> </field> </fieldset> <fieldset name="user_notes_history" label="COM_USERS_CONFIG_FIELD_NOTES_HISTORY" > <field name="save_history" type="radio" class="btn-group btn-group-yesno" default="0" label="JGLOBAL_SAVE_HISTORY_OPTIONS_LABEL" description="JGLOBAL_SAVE_HISTORY_OPTIONS_DESC" > <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="history_limit" type="text" filter="integer" label="JGLOBAL_HISTORY_LIMIT_OPTIONS_LABEL" description="JGLOBAL_HISTORY_LIMIT_OPTIONS_DESC" default="5" /> </fieldset> <fieldset name="massmail" label="COM_USERS_MASS_MAIL" description="COM_USERS_MASS_MAIL_DESC"> <field name="mailSubjectPrefix" type="text" label="COM_USERS_CONFIG_FIELD_SUBJECT_PREFIX_LABEL" description="COM_USERS_CONFIG_FIELD_SUBJECT_PREFIX_DESC" /> <field name="mailBodySuffix" type="textarea" rows="5" cols="30" label="COM_USERS_CONFIG_FIELD_MAILBODY_SUFFIX_LABEL" description="COM_USERS_CONFIG_FIELD_MAILBODY_SUFFIX_DESC" /> </fieldset> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_users" section="component" /> </fieldset> </config> PKb��\Z|X�ddcomponents/com_users/access.xmlnu�[���<?xml version="1.0" encoding="utf-8" ?> <access component="com_users"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> </section> <section name="category"> <action name="core.create" title="JACTION_CREATE" description="COM_CATEGORIES_ACCESS_CREATE_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="COM_CATEGORIES_ACCESS_DELETE_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="COM_CATEGORIES_ACCESS_EDIT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="COM_CATEGORIES_ACCESS_EDITSTATE_DESC" /> <action name="core.edit.own" title="JACTION_EDITOWN" description="COM_CATEGORIES_ACCESS_EDITOWN_DESC" /> </section> </access> PKb��\�7�^ ^ -components/com_users/views/note/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.formvalidator'); JHtml::_('formbehavior.chosen', 'select'); JFactory::getDocument()->addScriptDeclaration(' jQuery(document).ready(function() { Joomla.submitbutton = function(task) { if (task == "note.cancel" || document.formvalidator.isValid(document.getElementById("note-form"))) { ' . $this->form->getField('body')->save() . ' Joomla.submitform(task, document.getElementById("note-form")); } } });'); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&view=note&id=' . (int) $this->item->id);?>" method="post" name="adminForm" id="note-form" class="form-validate form-horizontal"> <fieldset class="adminform"> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('subject'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('subject'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('user_id'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('user_id'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('catid'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('catid'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('state'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('state'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('review_time'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('review_time'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('version_note'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('version_note'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('body'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('body'); ?> </div> </div> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </fieldset> </form> PKb��\]saҜ�-components/com_users/views/note/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * User note edit view * * @since 2.5 */ class UsersViewNote extends JViewLegacy { /** * The edit form. * * @var JForm * @since 2.5 */ protected $form; /** * The item data. * * @var object * @since 2.5 */ protected $item; /** * The model state. * * @var JObject * @since 2.5 */ protected $state; /** * Override the display method for the view. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return mixed A string if successful, otherwise a JError object. * * @since 2.5 */ public function display($tpl = null) { // Initialise view variables. $this->state = $this->get('State'); $this->item = $this->get('Item'); $this->form = $this->get('Form'); // Check for errors. if (count($errors = $this->get('Errors'))) { throw new Exception(implode("\n", $errors), 500); } // Get the component HTML helpers JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); parent::display($tpl); $this->addToolbar(); } /** * Display the toolbar. * * @return void * * @since 2.5 */ protected function addToolbar() { $input = JFactory::getApplication()->input; $input->set('hidemainmenu', 1); $user = JFactory::getUser(); $isNew = ($this->item->id == 0); $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id')); // Since we don't track these assets at the item level, use the category id. $canDo = JHelperContent::getActions('com_users', 'category', $this->item->catid); JToolbarHelper::title(JText::_('COM_USERS_NOTES'), 'users user'); // If not checked out, can save the item. if (!$checkedOut && ($canDo->get('core.edit') || (count($user->getAuthorisedCategories('com_users', 'core.create'))))) { JToolbarHelper::apply('note.apply'); JToolbarHelper::save('note.save'); } if (!$checkedOut && (count($user->getAuthorisedCategories('com_users', 'core.create')))) { JToolbarHelper::save2new('note.save2new'); } // If an existing item, can save to a copy. if (!$isNew && (count($user->getAuthorisedCategories('com_users', 'core.create')) > 0)) { JToolbarHelper::save2copy('note.save2copy'); } if (empty($this->item->id)) { JToolbarHelper::cancel('note.cancel'); } else { if ($this->state->params->get('save_history', 0) && $user->authorise('core.edit')) { JToolbarHelper::versions('com_users.note', $this->item->id); } JToolbarHelper::cancel('note.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_USERS_USER_NOTES_EDIT'); } } PKb��\���eEE5components/com_users/views/debuguser/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('formbehavior.chosen', 'select'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&view=debuguser&user_id=' . (int) $this->state->get('filter.user_id'));?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_USERS_SEARCH_ASSETS'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_RESET'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> </div> <div class="clearfix"> </div> <table class="table table-striped table-condensed"> <thead> <tr> <th class="left"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_ASSET_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="left"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_ASSET_NAME', 'a.name', $listDirn, $listOrder); ?> </th> <?php foreach ($this->actions as $key => $action) : ?> <th width="5%" class="center"> <span class="hasTooltip" title="<?php echo JHtml::tooltipText($key, $action[1]); ?>"><?php echo JText::_($key); ?></span> </th> <?php endforeach; ?> <th width="5%" class="center"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_LFT', 'a.lft', $listDirn, $listOrder); ?> </th> <th width="1%" class="center"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="15"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <tr class="row1"> <td colspan="15"> <div> <?php echo JText::_('COM_USERS_DEBUG_LEGEND'); ?> <span class="btn disabled btn-micro btn-warning"><span class="icon-white icon-ban-circle"></span></span> <?php echo JText::_('COM_USERS_DEBUG_IMPLICIT_DENY');?> <span class="btn disabled btn-micro btn-success"><span class="icon-white icon-ok"></span></span> <?php echo JText::_('COM_USERS_DEBUG_EXPLICIT_ALLOW');?> <span class="btn disabled btn-micro btn-danger"><span class="icon-white icon-remove"></span></span> <?php echo JText::_('COM_USERS_DEBUG_EXPLICIT_DENY');?> </div> </td> </tr> <?php foreach ($this->items as $i => $item) : ?> <tr class="row0"> <td> <?php echo $this->escape($item->title); ?> </td> <td class="nowrap"> <?php echo str_repeat('<span class="gi">|—</span>', $item->level) ?> <?php echo $this->escape($item->name); ?> </td> <?php foreach ($this->actions as $action) : ?> <?php $name = $action[0]; $check = $item->checks[$name]; if ($check === true) : $class = 'icon-ok'; $button = 'btn-success'; elseif ($check === false) : $class = 'icon-remove'; $button = 'btn-danger'; elseif ($check === null) : $class = 'icon-ban-circle'; $button = 'btn-warning'; else : $class = ''; $button = ''; endif; ?> <td class="center"> <span class="btn disabled btn-micro <?php echo $button; ?>"> <span class="icon-white <?php echo $class; ?>"></span> </span> </td> <?php endforeach; ?> <td class="center"> <?php echo (int) $item->lft; ?> - <?php echo (int) $item->rgt; ?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\Ә��CC2components/com_users/views/debuguser/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of users. * * @since 1.6 */ class UsersViewDebuguser extends JViewLegacy { protected $actions; /** * The item data. * * @var object * @since 1.6 */ protected $items; /** * The pagination object. * * @var JPagination * @since 1.6 */ protected $pagination; /** * The model state. * * @var JObject * @since 1.6 */ protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { // Access check. if (!JFactory::getUser()->authorise('core.manage', 'com_users') || !JFactory::getConfig()->get('debug')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $this->actions = $this->get('DebugActions'); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); $this->user = $this->get('User'); $this->levels = UsersHelperDebug::getLevelsOptions(); $this->components = UsersHelperDebug::getComponents(); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JToolbarHelper::title(JText::sprintf('COM_USERS_VIEW_DEBUG_USER_TITLE', $this->user->id, $this->user->name), 'users user'); JToolbarHelper::help('JHELP_USERS_DEBUG_USERS'); JHtmlSidebar::setAction('index.php?option=com_users&view=debuguser&user_id=' . (int) $this->state->get('filter.user_id')); $option = ''; if (!empty($this->components)) { $option = JHtml::_('select.options', $this->components, 'value', 'text', $this->state->get('filter.component')); } JHtmlSidebar::addFilter( JText::_('COM_USERS_OPTION_SELECT_COMPONENT'), 'filter_component', $option ); JHtmlSidebar::addFilter( JText::_('COM_USERS_OPTION_SELECT_LEVEL_START'), 'filter_level_start', JHtml::_('select.options', $this->levels, 'value', 'text', $this->state->get('filter.level_start')) ); JHtmlSidebar::addFilter( JText::_('COM_USERS_OPTION_SELECT_LEVEL_END'), 'filter_level_end', JHtml::_('select.options', $this->levels, 'value', 'text', $this->state->get('filter.level_end')) ); $this->sidebar = JHtmlSidebar::render(); } } PKb��\��3�nn.components/com_users/views/group/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('formbehavior.chosen', 'select'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'group.cancel' || document.formvalidator.isValid(document.getElementById('group-form'))) { Joomla.submitform(task, document.getElementById('group-form')); } }; "); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="group-form" class="form-validate form-horizontal"> <fieldset> <legend><?php echo JText::_('COM_USERS_USERGROUP_DETAILS');?></legend> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('title'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('title'); ?> </div> </div> <div class="control-group"> <?php $parent_id = $this->form->getField('parent_id');?> <?php if (!$parent_id->hidden) : ?> <div class="control-label"> <?php echo $parent_id->label; ?> </div> <?php endif;?> <div class="controls"> <?php echo $parent_id->input; ?> </div> </div> </fieldset> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\�<�^^.components/com_users/views/group/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View to edit a user group. * * @since 1.6 */ class UsersViewGroup extends JViewLegacy { protected $form; /** * The item data. * * @var object * @since 1.6 */ protected $item; /** * The model state. * * @var JObject * @since 1.6 */ protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $this->state = $this->get('State'); $this->item = $this->get('Item'); $this->form = $this->get('Form'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JFactory::getApplication()->input->set('hidemainmenu', true); $isNew = ($this->item->id == 0); $canDo = JHelperContent::getActions('com_users'); JToolbarHelper::title(JText::_($isNew ? 'COM_USERS_VIEW_NEW_GROUP_TITLE' : 'COM_USERS_VIEW_EDIT_GROUP_TITLE'), 'users groups-add'); if ($canDo->get('core.edit') || $canDo->get('core.create')) { JToolbarHelper::apply('group.apply'); JToolbarHelper::save('group.save'); } if ($canDo->get('core.create')) { JToolbarHelper::save2new('group.save2new'); } // If an existing item, can save to a copy. if (!$isNew && $canDo->get('core.create')) { JToolbarHelper::save2copy('group.save2copy'); } if (empty($this->item->id)) { JToolbarHelper::cancel('group.cancel'); } else { JToolbarHelper::cancel('group.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_USERS_GROUPS_EDIT'); } } PKb��\��P��0components/com_users/views/mail/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $script = "\t" . 'Joomla.submitbutton = function(pressbutton) {' . "\n"; $script .= "\t\t" . 'var form = document.adminForm;' . "\n"; $script .= "\t\t" . 'if (pressbutton == \'mail.cancel\') {' . "\n"; $script .= "\t\t\t" . 'Joomla.submitform(pressbutton);' . "\n"; $script .= "\t\t\t" . 'return;' . "\n"; $script .= "\t\t" . '}' . "\n"; $script .= "\t\t" . '// do field validation' . "\n"; $script .= "\t\t" . 'if (form.jform_subject.value == ""){' . "\n"; $script .= "\t\t\t" . 'alert("' . JText::_('COM_USERS_MAIL_PLEASE_FILL_IN_THE_SUBJECT', true) . '");' . "\n"; $script .= "\t\t" . '} else if (getSelectedValue(\'adminForm\',\'jform[group]\') < 0){' . "\n"; $script .= "\t\t\t" . 'alert("' . JText::_('COM_USERS_MAIL_PLEASE_SELECT_A_GROUP', true) . '");' . "\n"; $script .= "\t\t" . '} else if (form.jform_message.value == ""){' . "\n"; $script .= "\t\t\t" . 'alert("' . JText::_('COM_USERS_MAIL_PLEASE_FILL_IN_THE_MESSAGE', true) . '");' . "\n"; $script .= "\t\t" . '} else {' . "\n"; $script .= "\t\t\t" . 'Joomla.submitform(pressbutton);' . "\n"; $script .= "\t\t" . '}' . "\n"; $script .= "\t\t" . '}' . "\n"; JHtml::_('behavior.core'); JHtml::_('formbehavior.chosen', 'select'); JFactory::getDocument()->addScriptDeclaration($script); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&view=mail'); ?>" name="adminForm" method="post" id="adminForm"> <div class="row-fluid"> <div class="span9"> <fieldset class="adminform"> <div class="control-group"> <div class="control-label"><?php echo $this->form->getLabel('subject'); ?></div> <div class="controls"><?php echo $this->form->getInput('subject'); ?></div> </div> <div class="control-group"> <div class="control-label"><?php echo $this->form->getLabel('message'); ?></div> <div class="controls"><?php echo $this->form->getInput('message'); ?></div> </div> </fieldset> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> <div class="span3"> <fieldset class="form-inline"> <div class="control-group checkbox"> <div class="controls"><?php echo $this->form->getInput('recurse'); ?> <?php echo $this->form->getLabel('recurse'); ?></div> </div> <div class="control-group checkbox"> <div class="control-label"><?php echo $this->form->getInput('mode'); ?> <?php echo $this->form->getLabel('mode'); ?></div> </div> <div class="control-group checkbox"> <div class="control-label"><?php echo $this->form->getInput('disabled'); ?> <?php echo $this->form->getLabel('disabled'); ?></div> </div> <div class="control-group checkbox"> <div class="control-label"><?php echo $this->form->getInput('bcc'); ?> <?php echo $this->form->getLabel('bcc'); ?></div> </div> <div class="control-group"> <div class="control-label"><?php echo $this->form->getLabel('group'); ?></div> <div class="controls"><?php echo $this->form->getInput('group'); ?></div> </div> </fieldset> </div> </div> </form> PKb��\<���-components/com_users/views/mail/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Users mail view. * * @since 1.6 */ class UsersViewMail extends JViewLegacy { /** * @var object form object */ protected $form; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { // Redirect to admin index if mass mailer disabled in conf if (JFactory::getApplication()->get('massmailoff', 0) == 1) { JFactory::getApplication()->redirect(JRoute::_('index.php', false)); } // Get data from the model $this->form = $this->get('Form'); $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JFactory::getApplication()->input->set('hidemainmenu', true); JToolbarHelper::title(JText::_('COM_USERS_MASS_MAIL'), 'users massmail'); JToolbarHelper::custom('mail.send', 'envelope.png', 'send_f2.png', 'COM_USERS_TOOLBAR_MAIL_SEND_MAIL', false); JToolbarHelper::cancel('mail.cancel'); JToolbarHelper::divider(); JToolbarHelper::preferences('com_users'); JToolbarHelper::divider(); JToolbarHelper::help('JHELP_USERS_MASS_MAIL_USERS'); } } PKb��\�]�*11-components/com_users/views/user/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('formbehavior.chosen', 'select'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'user.cancel' || document.formvalidator.isValid(document.getElementById('user-form'))) { Joomla.submitform(task, document.getElementById('user-form')); } }; Joomla.twoFactorMethodChange = function(e) { var selectedPane = 'com_users_twofactor_' + jQuery('#jform_twofactor_method').val(); jQuery.each(jQuery('#com_users_twofactor_forms_container>div'), function(i, el) { if (el.id != selectedPane) { jQuery('#' + el.id).hide(0); } else { jQuery('#' + el.id).show(0); } }); }; "); // Get the form fieldsets. $fieldsets = $this->form->getFieldsets(); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="user-form" class="form-validate form-horizontal" enctype="multipart/form-data"> <?php echo JLayoutHelper::render('joomla.edit.item_title', $this); ?> <fieldset> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'details')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'details', JText::_('COM_USERS_USER_ACCOUNT_DETAILS', true)); ?> <?php foreach ($this->form->getFieldset('user_details') as $field) : ?> <div class="control-group"> <div class="control-label"> <?php echo $field->label; ?> </div> <div class="controls"> <?php if ($field->fieldname == 'password') : ?> <?php // Disables autocomplete ?> <input type="text" style="display:none"> <?php endif; ?> <?php echo $field->input; ?> </div> </div> <?php endforeach; ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php if ($this->grouplist) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'groups', JText::_('COM_USERS_ASSIGNED_GROUPS', true)); ?> <?php echo $this->loadTemplate('groups'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php foreach ($fieldsets as $fieldset) : if ($fieldset->name == 'user_details') : continue; endif; ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', $fieldset->name, JText::_($fieldset->label, true)); ?> <?php foreach ($this->form->getFieldset($fieldset->name) as $field) : ?> <?php if ($field->hidden) : ?> <div class="control-group"> <div class="controls"> <?php echo $field->input; ?> </div> </div> <?php else: ?> <div class="control-group"> <div class="control-label"> <?php echo $field->label; ?> </div> <div class="controls"> <?php echo $field->input; ?> </div> </div> <?php endif; ?> <?php endforeach; ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endforeach; ?> <?php if (!empty($this->tfaform) && $this->item->id): ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'twofactorauth', JText::_('COM_USERS_USER_TWO_FACTOR_AUTH', true)); ?> <div class="control-group"> <div class="control-label"> <label id="jform_twofactor_method-lbl" for="jform_twofactor_method" class="hasTooltip" title="<?php echo '<strong>' . JText::_('COM_USERS_USER_FIELD_TWOFACTOR_LABEL') . '</strong><br />' . JText::_('COM_USERS_USER_FIELD_TWOFACTOR_DESC'); ?>"> <?php echo JText::_('COM_USERS_USER_FIELD_TWOFACTOR_LABEL'); ?> </label> </div> <div class="controls"> <?php echo JHtml::_('select.genericlist', Usershelper::getTwoFactorMethods(), 'jform[twofactor][method]', array('onchange' => 'Joomla.twoFactorMethodChange()'), 'value', 'text', $this->otpConfig->method, 'jform_twofactor_method', false) ?> </div> </div> <div id="com_users_twofactor_forms_container"> <?php foreach($this->tfaform as $form): ?> <?php $style = $form['method'] == $this->otpConfig->method ? 'display: block' : 'display: none'; ?> <div id="com_users_twofactor_<?php echo $form['method'] ?>" style="<?php echo $style; ?>"> <?php echo $form['form'] ?> </div> <?php endforeach; ?> </div> <fieldset> <legend> <?php echo JText::_('COM_USERS_USER_OTEPS') ?> </legend> <div class="alert alert-info"> <?php echo JText::_('COM_USERS_USER_OTEPS_DESC') ?> </div> <?php if (empty($this->otpConfig->otep)): ?> <div class="alert alert-warning"> <?php echo JText::_('COM_USERS_USER_OTEPS_WAIT_DESC') ?> </div> <?php else: ?> <?php foreach ($this->otpConfig->otep as $otep): ?> <span class="span3"> <?php echo substr($otep, 0, 4) ?>-<?php echo substr($otep, 4, 4) ?>-<?php echo substr($otep, 8, 4) ?>-<?php echo substr($otep, 12, 4) ?> </span> <?php endforeach; ?> <div class="clearfix"></div> <?php endif; ?> </fieldset> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> </fieldset> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form>PKb��\�n$a��4components/com_users/views/user/tmpl/edit_groups.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); ?> <?php echo JHtml::_('access.usergroups', 'jform[groups]', $this->groups, true); ?> PKb��\�� � -components/com_users/views/user/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * User view class. * * @since 1.5 */ class UsersViewUser extends JViewLegacy { protected $form; protected $item; protected $grouplist; protected $groups; protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @since 1.5 */ public function display($tpl = null) { $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->grouplist = $this->get('Groups'); $this->groups = $this->get('AssignedGroups'); $this->state = $this->get('State'); $this->tfaform = $this->get('Twofactorform'); $this->otpConfig = $this->get('otpConfig'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->form->setValue('password', null); $this->form->setValue('password2', null); parent::display($tpl); $this->addToolbar(); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JFactory::getApplication()->input->set('hidemainmenu', true); $user = JFactory::getUser(); $canDo = JHelperContent::getActions('com_users'); $isNew = ($this->item->id == 0); $isProfile = $this->item->id == $user->id; JToolbarHelper::title( JText::_( $isNew ? 'COM_USERS_VIEW_NEW_USER_TITLE' : ($isProfile ? 'COM_USERS_VIEW_EDIT_PROFILE_TITLE' : 'COM_USERS_VIEW_EDIT_USER_TITLE') ), 'user ' . ($isNew ? 'user-add' : ($isProfile ? 'user-profile' : 'user-edit')) ); if ($canDo->get('core.edit') || $canDo->get('core.create')) { JToolbarHelper::apply('user.apply'); JToolbarHelper::save('user.save'); } if ($canDo->get('core.create') && $canDo->get('core.manage')) { JToolbarHelper::save2new('user.save2new'); } if (empty($this->item->id)) { JToolbarHelper::cancel('user.cancel'); } else { JToolbarHelper::cancel('user.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_USERS_USER_MANAGER_EDIT'); } } PKb��\�|�zz.components/com_users/views/level/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'level.cancel' || document.formvalidator.isValid(document.getElementById('level-form'))) { Joomla.submitform(task, document.getElementById('level-form')); } }; "); /* window.addEvent('domready', function(){ document.id('user-groups').getElements('input').each(function(i){ // Event to check all child groups. i.addEvent('check', function(e){ // Check the child groups. document.id('user-groups').getElements('input').each(function(c){ if (this.getProperty('rel') == c.id) { c.setProperty('checked', true); c.setProperty('disabled', true); c.fireEvent('check'); } }.bind(this)); }.bind(i)); // Event to uncheck all the parent groups. i.addEvent('uncheck', function(e){ // Uncheck the parent groups. document.id('user-groups').getElements('input').each(function(c){ if (c.getProperty('rel') == this.id) { c.setProperty('checked', false); c.setProperty('disabled', false); c.fireEvent('uncheck'); } }.bind(this)); }.bind(i)); // Bind to the click event to check/uncheck child/parent groups. i.addEvent('click', function(e){ // Check the child groups. document.id('user-groups').getElements('input').each(function(c){ if (this.getProperty('rel') == c.id) { c.setProperty('checked', true); if (this.getProperty('checked')) { c.setProperty('disabled', true); } else { c.setProperty('disabled', false); } c.fireEvent('check'); } }.bind(this)); // Uncheck the parent groups. document.id('user-groups').getElements('input').each(function(c){ if (c.getProperty('rel') == this.id) { c.setProperty('checked', false); c.setProperty('disabled', false); c.fireEvent('uncheck'); } }.bind(this)); }.bind(i)); // Initialise the widget. if (i.getProperty('checked')) { i.fireEvent('click'); } }); }); */ ?> <form action="<?php echo JRoute::_('index.php?option=com_users&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="level-form" class="form-validate form-horizontal"> <fieldset> <legend><?php echo JText::_('COM_USERS_LEVEL_DETAILS');?></legend> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('title'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('title'); ?> </div> </div> </fieldset> <fieldset> <legend><?php echo JText::_('COM_USERS_USER_GROUPS_HAVING_ACCESS');?></legend> <?php echo JHtml::_('access.usergroups', 'jform[rules]', $this->item->rules); ?> </fieldset> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\$\mDjj.components/com_users/views/level/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View to edit a user view level. * * @since 1.6 */ class UsersViewLevel extends JViewLegacy { protected $form; /** * The item data. * * @var object * @since 1.6 */ protected $item; /** * The model state. * * @var JObject * @since 1.6 */ protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JFactory::getApplication()->input->set('hidemainmenu', true); $isNew = ($this->item->id == 0); $canDo = JHelperContent::getActions('com_users'); JToolbarHelper::title(JText::_($isNew ? 'COM_USERS_VIEW_NEW_LEVEL_TITLE' : 'COM_USERS_VIEW_EDIT_LEVEL_TITLE'), 'users levels-add'); if ($canDo->get('core.edit') || $canDo->get('core.create')) { JToolbarHelper::apply('level.apply'); JToolbarHelper::save('level.save'); } if ($canDo->get('core.create')) { JToolbarHelper::save2new('level.save2new'); } // If an existing item, can save to a copy. if (!$isNew && $canDo->get('core.create')) { JToolbarHelper::save2copy('level.save2copy'); } if (empty($this->item->id)) { JToolbarHelper::cancel('level.cancel'); } else { JToolbarHelper::cancel('level.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_USERS_ACCESS_LEVELS_EDIT'); } } PKb��\��R�ee/components/com_users/views/notes/tmpl/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); ?> <div class="unotes"> <h1><?php echo JText::sprintf('COM_USERS_NOTES_FOR_USER', $this->user->name, $this->user->id); ?></h1> <?php if (empty($this->items)) : ?> <?php echo JText::_('COM_USERS_NO_NOTES'); ?> <?php else : ?> <ol class="alternating"> <?php foreach ($this->items as $item) : ?> <li> <div class="fltlft utitle"> <?php if ($item->subject) : ?> <h4><?php echo JText::sprintf('COM_USERS_NOTE_N_SUBJECT', (int) $item->id, $this->escape($item->subject)); ?></h4> <?php else : ?> <h4><?php echo JText::sprintf('COM_USERS_NOTE_N_SUBJECT', (int) $item->id, JText::_('COM_USERS_EMPTY_SUBJECT')); ?></h4> <?php endif; ?> </div> <div class="fltlft utitle"> <?php echo JHtml::date($item->created_time, 'D d M Y H:i'); ?> </div> <?php $category_image = $item->cparams->get('image'); ?> <?php if ($item->catid && isset($category_image)) : ?> <div class="fltlft utitle"> <?php echo JHtml::_('users.image', $category_image); ?> </div> <div class="fltlft utitle"> <em><?php echo $this->escape($item->category_title); ?></em> </div> <?php endif; ?> <div class="clr"></div> <div class="ubody"> <?php echo JHtml::_('content.prepare', $item->body); ?> </div> </li> <?php endforeach; ?> </ol> <?php endif; ?> </div> PKb��\���+��1components/com_users/views/notes/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('bootstrap.tooltip'); JHtml::_('formbehavior.chosen', 'select'); $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canEdit = $user->authorise('core.edit', 'com_users'); $sortFields = $this->getSortFields(); JFactory::getDocument()->addScriptDeclaration(' Joomla.orderTable = function() { table = document.getElementById("sortTable"); direction = document.getElementById("directionTable"); order = table.options[table.selectedIndex].value; if (order != "' . $listOrder . '") { dirn = "asc"; } else { dirn = direction.options[direction.selectedIndex].value; } Joomla.tableOrdering(order, dirn, ""); }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&view=notes');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_USERS_SEARCH_IN_NOTE_TITLE'); ?>" /> </div> <div class="btn-group"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC'); ?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> <div class="btn-group pull-right hidden-phone"> <label for="directionTable" class="element-invisible"><?php echo JText::_('JFIELD_ORDERING_DESC'); ?></label> <select name="directionTable" id="directionTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JFIELD_ORDERING_DESC'); ?></option> <option value="asc" <?php if ($listDirn == 'asc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_ASCENDING'); ?></option> <option value="desc" <?php if ($listDirn == 'desc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_DESCENDING'); ?></option> </select> </div> <div class="btn-group pull-right hidden-phone"> <label for="sortTable" class="element-invisible"><?php echo JText::_('JGLOBAL_SORT_BY'); ?></label> <select name="sortTable" id="sortTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JGLOBAL_SORT_BY');?></option> <?php echo JHtml::_('select.options', $sortFields, 'value', 'text', $listOrder); ?> </select> </div> </div> <div class="clearfix"> </div> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped"> <thead> <tr> <th width="1%" class="nowrap center"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="5%" class="nowrap center"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?> </th> <th class="left" class="nowrap"> <?php echo JHtml::_('grid.sort', 'COM_USERS_USER_HEADING', 'u.name', $listDirn, $listOrder); ?> </th> <th class="left" class="nowrap"> <?php echo JHtml::_('grid.sort', 'COM_USERS_SUBJECT_HEADING', 'a.subject', $listDirn, $listOrder); ?> </th> <th width="20%" class="nowrap"> <?php echo JHtml::_('grid.sort', 'COM_USERS_CATEGORY_HEADING', 'c.title', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap"> <?php echo JHtml::_('grid.sort', 'COM_USERS_REVIEW_HEADING', 'a.review_time', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="15"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : ?> <?php $canChange = $user->authorise('core.edit.state', 'com_users'); ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center checklist"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->state, $i, 'notes.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?> </td> <td> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_users&task=note.edit&id=' . $item->id);?>"> <?php echo $this->escape($item->user_name); ?></a> <?php else : ?> <?php echo $this->escape($item->user_name); ?> <?php endif; ?> </td> <td> <?php if ($item->subject) : ?> <?php echo $this->escape($item->subject); ?> <?php else : ?> <?php echo JText::_('COM_USERS_EMPTY_SUBJECT'); ?> <?php endif; ?> </td> <td> <?php if ($item->catid && $item->cparams->get('image')) : ?> <?php echo JHtml::_('users.image', $item->cparams->get('image')); ?> <?php endif; ?> <?php echo $this->escape($item->category_title); ?> </td> <td> <?php if ($item->review_time !== JFactory::getDbo()->getNullDate()) : ?> <?php echo JHtml::_('date', $item->review_time, JText::_('DATE_FORMAT_LC4')); ?> <?php else : ?> <?php echo JText::_('COM_USERS_EMPTY_REVIEW'); ?> <?php endif; ?> </td> <td> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> <div> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </div> </form> PKb��\pq���.components/com_users/views/notes/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; use Joomla\Registry\Registry; /** * User notes list view * * @since 2.5 */ class UsersViewNotes extends JViewLegacy { /** * A list of user note objects. * * @var array * @since 2.5 */ protected $items; /** * The pagination object. * * @var JPagination * @since 2.5 */ protected $pagination; /** * The model state. * * @var JObject * @since 2.5 */ protected $state; /** * The model state. * * @var JUser * @since 2.5 */ protected $user; /** * Override the display method for the view. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return mixed A string if successful, otherwise a JError object. * * @since 2.5 */ public function display($tpl = null) { // Initialise view variables. $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); $this->user = $this->get('User'); UsersHelper::addSubmenu('notes'); // Check for errors. if (count($errors = $this->get('Errors'))) { throw new Exception(implode("\n", $errors), 500); } // Get the component HTML helpers JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); // Turn parameters into registry objects foreach ($this->items as $item) { $item->cparams = new Registry; $item->cparams->loadString($item->category_params); } $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Display the toolbar. * * @return void * * @since 2.5 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_users', 'category', $this->state->get('filter.category_id')); JToolbarHelper::title(JText::_('COM_USERS_VIEW_NOTES_TITLE'), 'users user'); if ($canDo->get('core.create')) { JToolbarHelper::addNew('note.add'); } if ($canDo->get('core.edit')) { JToolbarHelper::editList('note.edit'); } if ($canDo->get('core.edit.state')) { JToolbarHelper::divider(); JToolbarHelper::publish('notes.publish', 'JTOOLBAR_PUBLISH', true); JToolbarHelper::unpublish('notes.unpublish', 'JTOOLBAR_UNPUBLISH', true); JToolbarHelper::divider(); JToolbarHelper::archiveList('notes.archive'); JToolbarHelper::checkin('notes.checkin'); } if ($this->state->get('filter.state') == -2 && $canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'notes.delete', 'JTOOLBAR_EMPTY_TRASH'); JToolbarHelper::divider(); } elseif ($canDo->get('core.edit.state')) { JToolbarHelper::trash('notes.trash'); JToolbarHelper::divider(); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences('com_users'); JToolbarHelper::divider(); } JToolbarHelper::help('JHELP_USERS_USER_NOTES'); JHtmlSidebar::setAction('index.php?option=com_users&view=notes'); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_PUBLISHED'), 'filter_published', JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.state'), true) ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_CATEGORY'), 'filter_category_id', JHtml::_('select.options', JHtml::_('category.options', 'com_users'), 'value', 'text', $this->state->get('filter.category_id')) ); } /** * Returns an array of fields the table can be sorted by * * @return array Array containing the field name to sort by as the key and display text as value * * @since 3.0 */ protected function getSortFields() { return array( 'u.name' => JText::_('COM_USERS_USER_HEADING'), 'a.subject' => JText::_('COM_USERS_SUBJECT_HEADING'), 'c.title' => JText::_('COM_USERS_CATEGORY_HEADING'), 'a.state' => JText::_('JSTATUS'), 'a.review_time' => JText::_('COM_USERS_REVIEW_HEADING'), 'a.id' => JText::_('JGRID_HEADING_ID') ); } } PKb��\E\٤��<components/com_users/views/users/tmpl/default_batch_body.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Create the copy/move options. $options = array( JHtml::_('select.option', 'add', JText::_('COM_USERS_BATCH_ADD')), JHtml::_('select.option', 'del', JText::_('COM_USERS_BATCH_DELETE')), JHtml::_('select.option', 'set', JText::_('COM_USERS_BATCH_SET')) ); // Create the reset password options. $resetOptions = array( JHtml::_('select.option', '', JText::_('COM_USERS_NO_ACTION')), JHtml::_('select.option', 'yes', JText::_('JYES')), JHtml::_('select.option', 'no', JText::_('JNO')) ); JHtml::_('formbehavior.chosen', 'select'); ?> <div class="row-fluid"> <div id="batch-choose-action" class="combo control-group"> <label id="batch-choose-action-lbl" class="control-label" for="batch-choose-action"> <?php echo JText::_('COM_USERS_BATCH_GROUP') ?> </label> </div> <div id="batch-choose-action" class="combo controls"> <div class="control-group"> <select name="batch[group_id]" id="batch-group-id"> <option value=""><?php echo JText::_('JSELECT') ?></option> <?php echo JHtml::_('select.options', JHtml::_('user.groups')); ?> </select> </div> </div> <div class="control-group radio"> <?php echo JHtml::_('select.radiolist', $options, 'batch[group_action]', '', 'value', 'text', 'add') ?> </div> </div> <label><?php echo JText::_('COM_USERS_REQUIRE_PASSWORD_RESET'); ?></label> <div class="control-group radio"> <?php echo JHtml::_('select.radiolist', $resetOptions, 'batch[reset_id]', '', 'value', 'text', '') ?> </div>PKb��\�n'�PP>components/com_users/views/users/tmpl/default_batch_footer.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <button class="btn" type="button" onclick="document.getElementById('batch-group-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-success" type="submit" onclick="Joomla.submitbutton('user.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button>PKb��\U���/components/com_users/views/users/tmpl/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('formbehavior.chosen', 'select'); JHtml::_('behavior.multiselect'); $input = JFactory::getApplication()->input; $field = $input->getCmd('field'); $function = 'jSelectUser_' . $field; $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&view=users&layout=modal&tmpl=component&groups=' . $input->get('groups', '', 'BASE64') . '&excluded=' . $input->get('excluded', '', 'BASE64'));?>" method="post" name="adminForm" id="adminForm"> <fieldset class="filter"> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <label for="filter_search" class="element-invisible"><?php echo JText::_('JSEARCH_FILTER'); ?></label> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_USERS_SEARCH_IN_NAME'); ?>" data-placement="bottom"/> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>" data-placement="bottom"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" data-placement="bottom" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> <button type="button" class="btn" onclick="if (window.parent) window.parent.<?php echo $this->escape($function); ?>('', '<?php echo JText::_('JLIB_FORM_SELECT_USER'); ?>');"><?php echo JText::_('JOPTION_NO_USER'); ?></button> </div> <div class="btn-group pull-right hidden-phone"> <label for="filter_group_id" class="element-invisible"><?php echo JText::_('COM_USERS_FILTER_USER_GROUP'); ?></label> <?php echo JHtml::_('access.usergroup', 'filter_group_id', $this->state->get('filter.group_id'), 'onchange="this.form.submit()"'); ?> </div> </div> </fieldset> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped table-condensed"> <thead> <tr> <th class="left"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_NAME', 'a.name', $listDirn, $listOrder); ?> </th> <th class="nowrap" width="25%"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_USERNAME', 'a.username', $listDirn, $listOrder); ?> </th> <th class="nowrap" width="25%"> <?php echo JText::_('COM_USERS_HEADING_GROUPS'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="15"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php $i = 0; foreach ($this->items as $item) : ?> <tr class="row<?php echo $i % 2; ?>"> <td> <a class="pointer" onclick="if (window.parent) window.parent.<?php echo $this->escape($function);?>('<?php echo $item->id; ?>', '<?php echo $this->escape(addslashes($item->name)); ?>');"> <?php echo $item->name; ?> </a> </td> <td align="center"> <?php echo $item->username; ?> </td> <td align="left"> <?php echo nl2br($item->group_names); ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> <div> <input type="hidden" name="task" value="" /> <input type="hidden" name="field" value="<?php echo $this->escape($field); ?>" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\*����1components/com_users/views/users/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $loggeduser = JFactory::getUser(); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&view=users');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <?php // Search tools bar echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this)); ?> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped" id="userList"> <thead> <tr> <th width="1%" class="nowrap center"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th class="left"> <?php echo JHtml::_('searchtools.sort', 'COM_USERS_HEADING_NAME', 'a.name', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap"> <?php echo JHtml::_('searchtools.sort', 'JGLOBAL_USERNAME', 'a.username', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap center"> <?php echo JHtml::_('searchtools.sort', 'COM_USERS_HEADING_ENABLED', 'a.block', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap center hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'COM_USERS_HEADING_ACTIVATED', 'a.activation', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap"> <?php echo JText::_('COM_USERS_HEADING_GROUPS'); ?> </th> <th width="15%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGLOBAL_EMAIL', 'a.email', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'COM_USERS_HEADING_LAST_VISIT_DATE', 'a.lastvisitDate', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'COM_USERS_HEADING_REGISTRATION_DATE', 'a.registerDate', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="15"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : $canEdit = $this->canDo->get('core.edit'); $canChange = $loggeduser->authorise('core.edit.state', 'com_users'); // If this group is super admin and this user is not super admin, $canEdit is false if ((!$loggeduser->authorise('core.admin')) && JAccess::check($item->id, 'core.admin')) { $canEdit = false; $canChange = false; } ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php if ($canEdit) : ?> <?php echo JHtml::_('grid.id', $i, $item->id); ?> <?php endif; ?> </td> <td> <div class="name"> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_users&task=user.edit&id=' . (int) $item->id); ?>" title="<?php echo JText::sprintf('COM_USERS_EDIT_USER', $this->escape($item->name)); ?>"> <?php echo $this->escape($item->name); ?></a> <?php else : ?> <?php echo $this->escape($item->name); ?> <?php endif; ?> </div> <div class="btn-group"> <?php echo JHtml::_('users.filterNotes', $item->note_count, $item->id); ?> <?php echo JHtml::_('users.notes', $item->note_count, $item->id); ?> <?php echo JHtml::_('users.addNote', $item->id); ?> </div> <?php echo JHtml::_('users.notesModal', $item->note_count, $item->id); ?> <?php if ($item->requireReset == '1') : ?> <span class="label label-warning"><?php echo JText::_('COM_USERS_PASSWORD_RESET_REQUIRED'); ?></span> <?php endif; ?> <?php if (JDEBUG) : ?> <div class="small"><a href="<?php echo JRoute::_('index.php?option=com_users&view=debuguser&user_id=' . (int) $item->id);?>"> <?php echo JText::_('COM_USERS_DEBUG_USER');?></a></div> <?php endif; ?> </td> <td> <?php echo $this->escape($item->username); ?> </td> <td class="center"> <?php if ($canChange) : ?> <?php $self = $loggeduser->id == $item->id; echo JHtml::_('jgrid.state', JHtmlUsers::blockStates($self), $item->block, $i, 'users.', !$self); ?> <?php else : ?> <?php echo JText::_($item->block ? 'JNO' : 'JYES'); ?> <?php endif; ?> </td> <td class="center hidden-phone"> <?php $activated = empty( $item->activation) ? 0 : 1; echo JHtml::_('jgrid.state', JHtmlUsers::activateStates(), $activated, $i, 'users.', (boolean) $activated); ?> </td> <td> <?php if (substr_count($item->group_names, "\n") > 1) : ?> <span class="hasTooltip" title="<?php echo JHtml::tooltipText(JText::_('COM_USERS_HEADING_GROUPS'), nl2br($item->group_names), 0); ?>"><?php echo JText::_('COM_USERS_USERS_MULTIPLE_GROUPS'); ?></span> <?php else : ?> <?php echo nl2br($item->group_names); ?> <?php endif; ?> </td> <td class="hidden-phone"> <?php echo JStringPunycode::emailToUTF8($this->escape($item->email)); ?> </td> <td class="hidden-phone"> <?php if ($item->lastvisitDate != '0000-00-00 00:00:00'):?> <?php echo JHtml::_('date', $item->lastvisitDate, 'Y-m-d H:i:s'); ?> <?php else:?> <?php echo JText::_('JNEVER'); ?> <?php endif;?> </td> <td class="hidden-phone"> <?php echo JHtml::_('date', $item->registerDate, 'Y-m-d H:i:s'); ?> </td> <td class="hidden-phone"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php // Load the batch processing form if user is allowed ?> <?php if ($loggeduser->authorise('core.create', 'com_users') && $loggeduser->authorise('core.edit', 'com_users') && $loggeduser->authorise('core.edit.state', 'com_users')) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_USERS_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif;?> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\ E��� � 7components/com_users/views/users/tmpl/default_batch.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * * @deprecated 3.4 Use default_batch_body and default_batch_footer */ defined('_JEXEC') or die; // Create the copy/move options. $options = array( JHtml::_('select.option', 'add', JText::_('COM_USERS_BATCH_ADD')), JHtml::_('select.option', 'del', JText::_('COM_USERS_BATCH_DELETE')), JHtml::_('select.option', 'set', JText::_('COM_USERS_BATCH_SET')) ); // Create the reset password options. $resetOptions = array( JHtml::_('select.option', '', JText::_('COM_USERS_NO_ACTION')), JHtml::_('select.option', 'yes', JText::_('JYES')), JHtml::_('select.option', 'no', JText::_('JNO')) ); JHtml::_('formbehavior.chosen', 'select'); ?> <div class="modal hide fade" id="collapseModal"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h3><?php echo JText::_('COM_USERS_BATCH_OPTIONS'); ?></h3> </div> <div class="modal-body modal-batch"> <div class="row-fluid"> <div id="batch-choose-action" class="combo control-group"> <label id="batch-choose-action-lbl" class="control-label" for="batch-choose-action"> <?php echo JText::_('COM_USERS_BATCH_GROUP') ?> </label> </div> <div id="batch-choose-action" class="combo controls"> <div class="control-group"> <select name="batch[group_id]" id="batch-group-id"> <option value=""><?php echo JText::_('JSELECT') ?></option> <?php echo JHtml::_('select.options', JHtml::_('user.groups')); ?> </select> </div> </div> <div class="control-group radio"> <?php echo JHtml::_('select.radiolist', $options, 'batch[group_action]', '', 'value', 'text', 'add') ?> </div> </div> <label><?php echo JText::_('COM_USERS_REQUIRE_PASSWORD_RESET'); ?></label> <div class="control-group radio"> <?php echo JHtml::_('select.radiolist', $resetOptions, 'batch[reset_id]', '', 'value', 'text', '') ?> </div> </div> <div class="modal-footer"> <button class="btn" type="button" onclick="document.getElementById('batch-group-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-primary" type="submit" onclick="Joomla.submitbutton('user.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button> </div> </div> PKb��\�A�zz.components/com_users/views/users/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of users. * * @since 1.6 */ class UsersViewUsers extends JViewLegacy { /** * The item data. * * @var object * @since 1.6 */ protected $items; /** * The pagination object. * * @var JPagination * @since 1.6 */ protected $pagination; /** * The model state. * * @var JObject * @since 1.6 */ protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); $this->filterForm = $this->get('FilterForm'); $this->activeFilters = $this->get('ActiveFilters'); $this->canDo = JHelperContent::getActions('com_users'); UsersHelper::addSubmenu('users'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } // Include the component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = $this->canDo; $user = JFactory::getUser(); // Get the toolbar object instance $bar = JToolBar::getInstance('toolbar'); JToolbarHelper::title(JText::_('COM_USERS_VIEW_USERS_TITLE'), 'users user'); if ($canDo->get('core.create')) { JToolbarHelper::addNew('user.add'); } if ($canDo->get('core.edit')) { JToolbarHelper::editList('user.edit'); } if ($canDo->get('core.edit.state')) { JToolbarHelper::divider(); JToolbarHelper::publish('users.activate', 'COM_USERS_TOOLBAR_ACTIVATE', true); JToolbarHelper::unpublish('users.block', 'COM_USERS_TOOLBAR_BLOCK', true); JToolbarHelper::custom('users.unblock', 'unblock.png', 'unblock_f2.png', 'COM_USERS_TOOLBAR_UNBLOCK', true); JToolbarHelper::divider(); } if ($canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'users.delete'); JToolbarHelper::divider(); } // Add a batch button if ($user->authorise('core.create', 'com_users') && $user->authorise('core.edit', 'com_users') && $user->authorise('core.edit.state', 'com_users')) { $title = JText::_('JTOOLBAR_BATCH'); // Instantiate a new JLayoutFile instance and render the batch button $layout = new JLayoutFile('joomla.toolbar.batch'); $dhtml = $layout->render(array('title' => $title)); $bar->appendButton('Custom', $dhtml, 'batch'); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences('com_users'); JToolbarHelper::divider(); } JToolbarHelper::help('JHELP_USERS_USER_MANAGER'); } /** * Returns an array of fields the table can be sorted by * * @return array Array containing the field name to sort by as the key and display text as value * * @since 3.0 */ protected function getSortFields() { return array( 'a.name' => JText::_('COM_USERS_HEADING_NAME'), 'a.username' => JText::_('JGLOBAL_USERNAME'), 'a.block' => JText::_('COM_USERS_HEADING_ENABLED'), 'a.activation' => JText::_('COM_USERS_HEADING_ACTIVATED'), 'a.email' => JText::_('JGLOBAL_EMAIL'), 'a.lastvisitDate' => JText::_('COM_USERS_HEADING_LAST_VISIT_DATE'), 'a.registerDate' => JText::_('COM_USERS_HEADING_REGISTRATION_DATE'), 'a.id' => JText::_('JGRID_HEADING_ID') ); } } PKb��\��/##2components/com_users/views/groups/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $sortFields = $this->getSortFields(); JText::script('COM_USERS_GROUPS_CONFIRM_DELETE'); $groupsWithUsers = array(); foreach ($this->items as $i => $item) { if ($item->user_count > 0) { array_push($groupsWithUsers, $i); } } JText::script('COM_USERS_GROUPS_CONFIRM_DELETE'); JFactory::getDocument()->addScriptDeclaration(' Joomla.submitbutton = function(task) { if (task == "groups.delete") { var f = document.adminForm; var cb = ""; var groupsWithUsers = [' . implode(',', $groupsWithUsers) . ']; for (index = 0; index < groupsWithUsers.length; ++index) { cb = f["cb" + groupsWithUsers[index]]; if (cb && cb.checked) { if (confirm(Joomla.JText._("COM_USERS_GROUPS_CONFIRM_DELETE"))) { Joomla.submitform(task); } return; } } } Joomla.submitform(task); }; '); JFactory::getDocument()->addScriptDeclaration(' Joomla.orderTable = function() { table = document.getElementById("sortTable"); direction = document.getElementById("directionTable"); order = table.options[table.selectedIndex].value; if (order != "' . $listOrder . '") { dirn = "asc"; } else { dirn = direction.options[direction.selectedIndex].value; } Joomla.tableOrdering(order, dirn, ""); }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&view=groups');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_USERS_SEARCH_IN_GROUPS'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC'); ?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> <div class="btn-group pull-right hidden-phone"> <label for="directionTable" class="element-invisible"><?php echo JText::_('JFIELD_ORDERING_DESC'); ?></label> <select name="directionTable" id="directionTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JFIELD_ORDERING_DESC'); ?></option> <option value="asc" <?php if ($listDirn == 'asc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_ASCENDING'); ?></option> <option value="desc" <?php if ($listDirn == 'desc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_DESCENDING'); ?></option> </select> </div> <div class="btn-group pull-right"> <label for="sortTable" class="element-invisible"><?php echo JText::_('JGLOBAL_SORT_BY'); ?></label> <select name="sortTable" id="sortTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JGLOBAL_SORT_BY');?></option> <?php echo JHtml::_('select.options', $sortFields, 'value', 'text', $listOrder); ?> </select> </div> </div> <div class="clearfix"> </div> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped" id="groupList"> <thead> <tr> <th width="1%"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_GROUP_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th width="20%"> <?php echo JText::_('COM_USERS_HEADING_USERS_IN_GROUP'); ?> </th> <th width="1%"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="4"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : $canCreate = $user->authorise('core.create', 'com_users'); $canEdit = $user->authorise('core.edit', 'com_users'); // If this group is super admin and this user is not super admin, $canEdit is false if (!$user->authorise('core.admin') && (JAccess::checkGroup($item->id, 'core.admin'))) { $canEdit = false; } $canChange = $user->authorise('core.edit.state', 'com_users'); ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php if ($canEdit) : ?> <?php echo JHtml::_('grid.id', $i, $item->id); ?> <?php endif; ?> </td> <td> <?php echo str_repeat('<span class="gi">|—</span>', $item->level) ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_users&task=group.edit&id=' . $item->id);?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> <?php if (JDEBUG) : ?> <div class="small"><a href="<?php echo JRoute::_('index.php?option=com_users&view=debuggroup&group_id=' . (int) $item->id);?>"> <?php echo JText::_('COM_USERS_DEBUG_GROUP');?></a></div> <?php endif; ?> </td> <td> <?php echo $item->user_count ? $item->user_count : ''; ?> </td> <td> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif;?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\��N� � /components/com_users/views/groups/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of user groups. * * @since 1.6 */ class UsersViewGroups extends JViewLegacy { /** * The item data. * * @var object * @since 1.6 */ protected $items; /** * The pagination object. * * @var JPagination * @since 1.6 */ protected $pagination; /** * The model state. * * @var JObject * @since 1.6 */ protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); UsersHelper::addSubmenu('groups'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_users'); JToolbarHelper::title(JText::_('COM_USERS_VIEW_GROUPS_TITLE'), 'users groups'); if ($canDo->get('core.create')) { JToolbarHelper::addNew('group.add'); } if ($canDo->get('core.edit')) { JToolbarHelper::editList('group.edit'); JToolbarHelper::divider(); } if ($canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'groups.delete'); JToolbarHelper::divider(); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences('com_users'); JToolbarHelper::divider(); } JToolbarHelper::help('JHELP_USERS_GROUPS'); } /** * Returns an array of fields the table can be sorted by * * @return array Array containing the field name to sort by as the key and display text as value * * @since 3.0 */ protected function getSortFields() { return array( 'a.title' => JText::_('COM_USERS_HEADING_GROUP_TITLE'), 'a.id' => JText::_('JGRID_HEADING_ID') ); } } PKb��\o�SXX2components/com_users/views/levels/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canOrder = $user->authorise('core.edit.state', 'com_users'); $saveOrder = $listOrder == 'a.ordering'; $sortFields = $this->getSortFields(); $saveOrder = $listOrder == 'a.ordering'; if ($saveOrder) { $saveOrderingUrl = 'index.php?option=com_users&task=levels.saveOrderAjax&tmpl=component'; JHtml::_('sortablelist.sortable', 'levelList', 'adminForm', strtolower($listDirn), $saveOrderingUrl); } JFactory::getDocument()->addScriptDeclaration(' Joomla.orderTable = function() { table = document.getElementById("sortTable"); direction = document.getElementById("directionTable"); order = table.options[table.selectedIndex].value; if (order != "' . $listOrder . '") { dirn = "asc"; } else { dirn = direction.options[direction.selectedIndex].value; } Joomla.tableOrdering(order, dirn, ""); }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&view=levels');?>" method="post" id="adminForm" name="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_USERS_SEARCH_TITLE_LEVELS'); ?>" /> </div> <div class="filter-search btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_RESET'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC'); ?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> <div class="btn-group pull-right hidden-phone"> <label for="directionTable" class="element-invisible"><?php echo JText::_('JFIELD_ORDERING_DESC'); ?></label> <select name="directionTable" id="directionTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JFIELD_ORDERING_DESC'); ?></option> <option value="asc" <?php if ($listDirn == 'asc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_ASCENDING'); ?></option> <option value="desc" <?php if ($listDirn == 'desc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_DESCENDING'); ?></option> </select> </div> <div class="btn-group pull-right"> <label for="sortTable" class="element-invisible"><?php echo JText::_('JGLOBAL_SORT_BY'); ?></label> <select name="sortTable" id="sortTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JGLOBAL_SORT_BY');?></option> <?php echo JHtml::_('select.options', $sortFields, 'value', 'text', $listOrder); ?> </select> </div> </div> <div class="clearfix"> </div> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped" id="levelList"> <thead> <tr> <th width="1%" class="nowrap center hidden-phone"> <?php echo JHtml::_('grid.sort', '<span class="icon-menu-2"></span>', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?> </th> <th width="1%"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_LEVEL_NAME', 'a.title', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="15"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php $count = count($this->items); ?> <?php foreach ($this->items as $i => $item) : $ordering = ($listOrder == 'a.ordering'); $canCreate = $user->authorise('core.create', 'com_users'); $canEdit = $user->authorise('core.edit', 'com_users'); $canChange = $user->authorise('core.edit.state', 'com_users'); ?> <tr class="row<?php echo $i % 2; ?>"> <td class="order nowrap center hidden-phone"> <?php $iconClass = ''; if (!$canChange) { $iconClass = ' inactive'; } elseif (!$saveOrder) { $iconClass = ' inactive tip-top hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED'); } ?> <span class="sortable-handler<?php echo $iconClass ?>"> <span class="icon-menu"></span> </span> <?php if ($canChange && $saveOrder) : ?> <input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering; ?>" class="width-20 text-area-order " /> <?php endif; ?> </td> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_users&task=level.edit&id=' . $item->id);?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> </td> <td> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif;?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\k�lp� � /components/com_users/views/levels/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * The HTML Users access levels view. * * @since 1.6 */ class UsersViewLevels extends JViewLegacy { /** * The item data. * * @var object * @since 1.6 */ protected $items; /** * The pagination object. * * @var JPagination * @since 1.6 */ protected $pagination; /** * The model state. * * @var JObject * @since 1.6 */ protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); UsersHelper::addSubmenu('levels'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_users'); JToolbarHelper::title(JText::_('COM_USERS_VIEW_LEVELS_TITLE'), 'users levels'); if ($canDo->get('core.create')) { JToolbarHelper::addNew('level.add'); } if ($canDo->get('core.edit')) { JToolbarHelper::editList('level.edit'); JToolbarHelper::divider(); } if ($canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'level.delete'); JToolbarHelper::divider(); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences('com_users'); JToolbarHelper::divider(); } JToolbarHelper::help('JHELP_USERS_ACCESS_LEVELS'); } /** * Returns an array of fields the table can be sorted by * * @return array Array containing the field name to sort by as the key and display text as value * * @since 3.0 */ protected function getSortFields() { return array( 'a.ordering' => JText::_('JGRID_HEADING_ORDERING'), 'a.title' => JText::_('COM_USERS_HEADING_LEVEL_NAME'), 'a.id' => JText::_('JGRID_HEADING_ID') ); } } PKb��\����KK6components/com_users/views/debuggroup/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('formbehavior.chosen', 'select'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_users&view=debuggroup&user_id=' . (int) $this->state->get('filter.user_id'));?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_USERS_SEARCH_ASSETS'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_RESET'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> </div> <div class="clearfix"> </div> <table class="table table-striped"> <thead> <tr> <th class="left"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_ASSET_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="left"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_ASSET_NAME', 'a.name', $listDirn, $listOrder); ?> </th> <?php foreach ($this->actions as $key => $action) : ?> <th width="5%" class="nowrap center"> <span class="hasTooltip" title="<?php echo JHtml::tooltipText($key, $action[1]); ?>"><?php echo JText::_($key); ?></span> </th> <?php endforeach; ?> <th width="5%" class="nowrap center"> <?php echo JHtml::_('grid.sort', 'COM_USERS_HEADING_LFT', 'a.lft', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap center"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="15"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <tr class="row1"> <td colspan="15"> <div> <?php echo JText::_('COM_USERS_DEBUG_LEGEND'); ?> <span class="btn disabled btn-micro btn-warning"><span class="icon-white icon-ban-circle"></span></span> <?php echo JText::_('COM_USERS_DEBUG_IMPLICIT_DENY');?> <span class="btn disabled btn-micro btn-success"><span class="icon-white icon-ok"></span></span> <?php echo JText::_('COM_USERS_DEBUG_EXPLICIT_ALLOW');?> <span class="btn disabled btn-micro btn-danger"><span class="icon-white icon-remove"></span></span> <?php echo JText::_('COM_USERS_DEBUG_EXPLICIT_DENY');?> </div> </td> </tr> <?php foreach ($this->items as $i => $item) : ?> <tr class="row0"> <td> <?php echo $this->escape($item->title); ?> </td> <td class="nowrap"> <?php echo str_repeat('<span class="gi">|—</span>', $item->level) ?> <?php echo $this->escape($item->name); ?> </td> <?php foreach ($this->actions as $action) : ?> <?php $name = $action[0]; $check = $item->checks[$name]; if ($check === true) : $class = 'icon-ok'; $button = 'btn-success'; elseif ($check === false) : $class = 'icon-remove'; $button = 'btn-danger'; elseif ($check === null) : $class = 'icon-ban-circle'; $button = 'btn-warning'; else : $class = ''; $button = ''; endif; ?> <td class="center"> <span class="btn disabled btn-micro <?php echo $button; ?>"> <span class="icon-white <?php echo $class; ?>"></span> </span> </td> <?php endforeach; ?> <td class="center"> <?php echo (int) $item->lft; ?> - <?php echo (int) $item->rgt; ?> </td> <td class="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\ b�!!3components/com_users/views/debuggroup/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of users. * * @since 1.6 */ class UsersViewDebuggroup extends JViewLegacy { protected $actions; /** * The item data. * * @var object * @since 1.6 */ protected $items; /** * The pagination object. * * @var JPagination * @since 1.6 */ protected $pagination; /** * The model state. * * @var JObject * @since 1.6 */ protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { // Access check. if (!JFactory::getUser()->authorise('core.manage', 'com_users') || !JFactory::getConfig()->get('debug')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $this->actions = $this->get('DebugActions'); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); $this->group = $this->get('Group'); $this->levels = UsersHelperDebug::getLevelsOptions(); $this->components = UsersHelperDebug::getComponents(); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JToolbarHelper::title(JText::sprintf('COM_USERS_VIEW_DEBUG_GROUP_TITLE', $this->group->id, $this->group->title), 'users groups'); JToolbarHelper::help('JHELP_USERS_DEBUG_GROUPS'); JHtmlSidebar::setAction('index.php?option=com_users&view=debuggroup&user_id=' . (int) $this->state->get('filter.user_id')); $option = ''; if (!empty($this->components)) { $option = JHtml::_('select.options', $this->components, 'value', 'text', $this->state->get('filter.component')); } JHtmlSidebar::addFilter( JText::_('COM_USERS_OPTION_SELECT_COMPONENT'), 'filter_component', $option ); JHtmlSidebar::addFilter( JText::_('COM_USERS_OPTION_SELECT_LEVEL_START'), 'filter_level_start', JHtml::_('select.options', $this->levels, 'value', 'text', $this->state->get('filter.level_start')) ); JHtmlSidebar::addFilter( JText::_('COM_USERS_OPTION_SELECT_LEVEL_END'), 'filter_level_end', JHtml::_('select.options', $this->levels, 'value', 'text', $this->state->get('filter.level_end')) ); } } PKb��\kwrȣ�&components/com_users/helpers/users.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Users component helper. * * @since 1.6 */ class UsersHelper { /** * @var JObject A cache for the available actions. * @since 1.6 */ protected static $actions; /** * Configure the Linkbar. * * @param string $vName The name of the active view. * * @return void * * @since 1.6 */ public static function addSubmenu($vName) { JHtmlSidebar::addEntry( JText::_('COM_USERS_SUBMENU_USERS'), 'index.php?option=com_users&view=users', $vName == 'users' ); // Groups and Levels are restricted to core.admin $canDo = JHelperContent::getActions('com_users'); if ($canDo->get('core.admin')) { JHtmlSidebar::addEntry( JText::_('COM_USERS_SUBMENU_GROUPS'), 'index.php?option=com_users&view=groups', $vName == 'groups' ); JHtmlSidebar::addEntry( JText::_('COM_USERS_SUBMENU_LEVELS'), 'index.php?option=com_users&view=levels', $vName == 'levels' ); JHtmlSidebar::addEntry( JText::_('COM_USERS_SUBMENU_NOTES'), 'index.php?option=com_users&view=notes', $vName == 'notes' ); $extension = JFactory::getApplication()->input->getString('extension'); JHtmlSidebar::addEntry( JText::_('COM_USERS_SUBMENU_NOTE_CATEGORIES'), 'index.php?option=com_categories&extension=com_users', $vName == 'categories' || $extension == 'com_users' ); } } /** * Gets a list of the actions that can be performed. * * @return JObject * * @deprecated 3.2 Use JHelperContent::getActions() instead */ public static function getActions() { // Log usage of deprecated function JLog::add(__METHOD__ . '() is deprecated, use JHelperContent::getActions() with new arguments order instead.', JLog::WARNING, 'deprecated'); // Get list of actions $result = JHelperContent::getActions('com_users'); return $result; } /** * Get a list of filter options for the blocked state of a user. * * @return array An array of JHtmlOption elements. * * @since 1.6 */ public static function getStateOptions() { // Build the filter options. $options = array(); $options[] = JHtml::_('select.option', '0', JText::_('JENABLED')); $options[] = JHtml::_('select.option', '1', JText::_('JDISABLED')); return $options; } /** * Get a list of filter options for the activated state of a user. * * @return array An array of JHtmlOption elements. * * @since 1.6 */ public static function getActiveOptions() { // Build the filter options. $options = array(); $options[] = JHtml::_('select.option', '0', JText::_('COM_USERS_ACTIVATED')); $options[] = JHtml::_('select.option', '1', JText::_('COM_USERS_UNACTIVATED')); return $options; } /** * Get a list of the user groups for filtering. * * @return array An array of JHtmlOption elements. * * @since 1.6 */ public static function getGroups() { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('a.id AS value') ->select('a.title AS text') ->select('COUNT(DISTINCT b.id) AS level') ->from('#__usergroups as a') ->join('LEFT', '#__usergroups AS b ON a.lft > b.lft AND a.rgt < b.rgt') ->group('a.id, a.title, a.lft, a.rgt') ->order('a.lft ASC'); $db->setQuery($query); try { $options = $db->loadObjectList(); } catch (RuntimeException $e) { JError::raiseNotice(500, $e->getMessage()); return null; } foreach ($options as &$option) { $option->text = str_repeat('- ', $option->level) . $option->text; } return $options; } /** * Creates a list of range options used in filter select list * used in com_users on users view * * @return array * * @since 2.5 */ public static function getRangeOptions() { $options = array( JHtml::_('select.option', 'today', JText::_('COM_USERS_OPTION_RANGE_TODAY')), JHtml::_('select.option', 'past_week', JText::_('COM_USERS_OPTION_RANGE_PAST_WEEK')), JHtml::_('select.option', 'past_1month', JText::_('COM_USERS_OPTION_RANGE_PAST_1MONTH')), JHtml::_('select.option', 'past_3month', JText::_('COM_USERS_OPTION_RANGE_PAST_3MONTH')), JHtml::_('select.option', 'past_6month', JText::_('COM_USERS_OPTION_RANGE_PAST_6MONTH')), JHtml::_('select.option', 'past_year', JText::_('COM_USERS_OPTION_RANGE_PAST_YEAR')), JHtml::_('select.option', 'post_year', JText::_('COM_USERS_OPTION_RANGE_POST_YEAR')), ); return $options; } /** * Creates a list of two factor authentication methods used in com_users * on user view * * @return array * * @since 3.2.0 */ public static function getTwoFactorMethods() { // Load the Joomla! RAD layer if (!defined('FOF_INCLUDED')) { include_once JPATH_LIBRARIES . '/fof/include.php'; } FOFPlatform::getInstance()->importPlugin('twofactorauth'); $identities = FOFPlatform::getInstance()->runPlugins('onUserTwofactorIdentify', array()); $options = array( JHtml::_('select.option', 'none', JText::_('JGLOBAL_OTPMETHOD_NONE'), 'value', 'text'), ); if (!empty($identities)) { foreach ($identities as $identity) { if (!is_object($identity)) { continue; } $options[] = JHtml::_('select.option', $identity->method, $identity->title, 'value', 'text'); } } return $options; } } PKb��\�/l�JJ+components/com_users/helpers/html/users.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Extended Utility class for the Users component. * * @since 2.5 */ class JHtmlUsers { /** * Display an image. * * @param string $src The source of the image * * @return string A <img> element if the specified file exists, otherwise, a null string * * @since 2.5 */ public static function image($src) { $src = preg_replace('#[^A-Z0-9\-_\./]#i', '', $src); $file = JPATH_SITE . '/' . $src; jimport('joomla.filesystem.path'); JPath::check($file); if (!file_exists($file)) { return ''; } return '<img src="' . JUri::root() . $src . '" alt="" />'; } /** * Displays an icon to add a note for this user. * * @param integer $userId The user ID * * @return string A link to add a note * * @since 2.5 */ public static function addNote($userId) { $title = JText::_('COM_USERS_ADD_NOTE'); return '<a href="' . JRoute::_('index.php?option=com_users&task=note.add&u_id=' . (int) $userId) . '" class="hasTooltip btn btn-mini" title="' . $title . '"><span class="icon-vcard"></span><span class="hidden-phone">' . $title . '</span></a>'; } /** * Displays an icon to filter the notes list on this user. * * @param integer $count The number of notes for the user * @param integer $userId The user ID * * @return string A link to apply a filter * * @since 2.5 */ public static function filterNotes($count, $userId) { if (empty($count)) { return ''; } $title = JText::_('COM_USERS_FILTER_NOTES'); return '<a href="' . JRoute::_('index.php?option=com_users&view=notes&filter_search=uid:' . (int) $userId) . '" class="hasTooltip btn btn-mini" title="' . $title . '"><span class="icon-filter"></span></a>'; } /** * Displays a note icon. * * @param integer $count The number of notes for the user * @param integer $userId The user ID * * @return string A link to a modal window with the user notes * * @since 2.5 */ public static function notes($count, $userId) { if (empty($count)) { return ''; } $title = JText::plural('COM_USERS_N_USER_NOTES', $count); return '<a href="#userModal_' . (int) $userId . '" id="modal-' . (int) $userId . '" data-toggle="modal" class="hasTooltip btn btn-mini" title="' . $title . '"><span class="icon-drawer-2"></span><span class="hidden-phone">' . $title . '</span></a>'; } /** * Renders the modal html. * * @param integer $count The number of notes for the user * @param integer $userId The user ID * * @return string The html for the rendered modal * * @since 3.4.1 */ public static function notesModal($count, $userId) { if (empty($count)) { return ''; } $title = JText::plural('COM_USERS_N_USER_NOTES', $count); $footer = '<button class="btn" data-dismiss="modal" aria-hidden="true">' . JText::_('JTOOLBAR_CLOSE') . '</a>'; return JHtml::_( 'bootstrap.renderModal', 'userModal_' . (int) $userId, array( 'title' => $title, 'backdrop' => 'static', 'keyboard' => true, 'closeButton' => true, 'footer' => $footer, 'url' => JRoute::_('index.php?option=com_users&view=notes&tmpl=component&layout=modal&u_id=' . (int) $userId), 'height' => '300px', 'width' => '800px' ) ); } /** * Build an array of block/unblock user states to be used by jgrid.state, * State options will be different for any user * and for currently logged in user * * @param boolean $self True if state array is for currently logged in user * * @return array a list of possible states to display * * @since 3.0 */ public static function blockStates( $self = false) { if ($self) { $states = array( 1 => array( 'task' => 'unblock', 'text' => '', 'active_title' => 'COM_USERS_USER_FIELD_BLOCK_DESC', 'inactive_title' => '', 'tip' => true, 'active_class' => 'unpublish', 'inactive_class' => 'unpublish', ), 0 => array( 'task' => 'block', 'text' => '', 'active_title' => '', 'inactive_title' => 'COM_USERS_USERS_ERROR_CANNOT_BLOCK_SELF', 'tip' => true, 'active_class' => 'publish', 'inactive_class' => 'publish', ) ); } else { $states = array( 1 => array( 'task' => 'unblock', 'text' => '', 'active_title' => 'COM_USERS_TOOLBAR_UNBLOCK', 'inactive_title' => '', 'tip' => true, 'active_class' => 'unpublish', 'inactive_class' => 'unpublish', ), 0 => array( 'task' => 'block', 'text' => '', 'active_title' => 'COM_USERS_USER_FIELD_BLOCK_DESC', 'inactive_title' => '', 'tip' => true, 'active_class' => 'publish', 'inactive_class' => 'publish', ) ); } return $states; } /** * Build an array of activate states to be used by jgrid.state, * * @return array a list of possible states to display * * @since 3.0 */ public static function activateStates() { $states = array( 1 => array( 'task' => 'activate', 'text' => '', 'active_title' => 'COM_USERS_TOOLBAR_ACTIVATE', 'inactive_title' => '', 'tip' => true, 'active_class' => 'unpublish', 'inactive_class' => 'unpublish', ), 0 => array( 'task' => '', 'text' => '', 'active_title' => '', 'inactive_title' => 'COM_USERS_ACTIVATED', 'tip' => true, 'active_class' => 'publish', 'inactive_class' => 'publish', ) ); return $states; } } PKb��\}�--&components/com_users/helpers/debug.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Users component debugging helper. * * @since 1.6 */ class UsersHelperDebug { /** * Get a list of the components. * * @return array * * @since 1.6 */ public static function getComponents() { // Initialise variable. $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('name AS text, element AS value') ->from('#__extensions') ->where('enabled >= 1') ->where('type =' . $db->quote('component')); $items = $db->setQuery($query)->loadObjectList(); if (count($items)) { $lang = JFactory::getLanguage(); foreach ($items as &$item) { // Load language $extension = $item->value; $source = JPATH_ADMINISTRATOR . '/components/' . $extension; $lang->load("$extension.sys", JPATH_ADMINISTRATOR, null, false, true) || $lang->load("$extension.sys", $source, null, false, true); // Translate component name $item->text = JText::_($item->text); } // Sort by component name JArrayHelper::sortObjects($items, 'text', 1, true, true); } return $items; } /** * Get a list of the actions for the component or code actions. * * @param string $component The name of the component. * * @return array * * @since 1.6 */ public static function getDebugActions($component = null) { $actions = array(); // Try to get actions for the component if (!empty($component)) { $component_actions = JAccess::getActions($component); if (!empty($component_actions)) { foreach ($component_actions as &$action) { $actions[$action->title] = array($action->name, $action->description); } } } // Use default actions from configuration if no component selected or component doesn't have actions if (empty($actions)) { $filename = JPATH_ADMINISTRATOR . '/components/com_config/model/form/application.xml'; if (is_file($filename)) { $xml = simplexml_load_file($filename); foreach ($xml->children()->fieldset as $fieldset) { if ('permissions' == (string) $fieldset['name']) { foreach ($fieldset->children() as $field) { if ('rules' == (string) $field['name']) { foreach ($field->children() as $action) { $actions[(string) $action['title']] = array( (string) $action['name'], (string) $action['description'] ); } break; } } } } // Load language $lang = JFactory::getLanguage(); $extension = 'com_config'; $source = JPATH_ADMINISTRATOR . '/components/' . $extension; $lang->load($extension, JPATH_ADMINISTRATOR, null, false, false) || $lang->load($extension, $source, null, false, false) || $lang->load($extension, JPATH_ADMINISTRATOR, $lang->getDefault(), false, false) || $lang->load($extension, $source, $lang->getDefault(), false, false); } } return $actions; } /** * Get a list of filter options for the levels. * * @return array An array of JHtmlOption elements. */ public static function getLevelsOptions() { // Build the filter options. $options = array(); $options[] = JHtml::_('select.option', '1', JText::sprintf('COM_USERS_OPTION_LEVEL_COMPONENT', 1)); $options[] = JHtml::_('select.option', '2', JText::sprintf('COM_USERS_OPTION_LEVEL_CATEGORY', 2)); $options[] = JHtml::_('select.option', '3', JText::sprintf('COM_USERS_OPTION_LEVEL_DEEPER', 3)); $options[] = JHtml::_('select.option', '4', '4'); $options[] = JHtml::_('select.option', '5', '5'); $options[] = JHtml::_('select.option', '6', '6'); return $options; } } PKb��\.��.UUcomponents/com_users/users.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_users</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_USERS_XML_DESCRIPTION</description> <files folder="site"> <filename>controller.php</filename> <filename>router.php</filename> <filename>users.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="site"> <language tag="en-GB">language/en-GB.com_users.ini</language> </languages> <administration> <files folder="admin"> <filename>config.xml</filename> <filename>controller.php</filename> <filename>users.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_users.ini</language> <language tag="en-GB">language/en-GB.com_users.sys.ini</language> </languages> </administration> </extension> PKb��\_�!G,G,%components/com_users/models/users.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Methods supporting a list of user records. * * @since 1.6 */ class UsersModelUsers extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'name', 'a.name', 'username', 'a.username', 'email', 'a.email', 'block', 'a.block', 'sendEmail', 'a.sendEmail', 'registerDate', 'a.registerDate', 'lastvisitDate', 'a.lastvisitDate', 'activation', 'a.activation', 'active', 'group_id', 'range', 'state', ); } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication('administrator'); // Adjust the context to support modal layouts. if ($layout = $app->input->get('layout', 'default', 'cmd')) { $this->context .= '.' . $layout; } // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $active = $this->getUserStateFromRequest($this->context . '.filter.active', 'filter_active'); $this->setState('filter.active', $active); $state = $this->getUserStateFromRequest($this->context . '.filter.state', 'filter_state'); $this->setState('filter.state', $state); $groupId = $this->getUserStateFromRequest($this->context . '.filter.group', 'filter_group_id', null, 'int'); $this->setState('filter.group_id', $groupId); $range = $this->getUserStateFromRequest($this->context . '.filter.range', 'filter_range'); $this->setState('filter.range', $range); $groups = json_decode(base64_decode($app->input->get('groups', '', 'BASE64'))); if (isset($groups)) { JArrayHelper::toInteger($groups); } $this->setState('filter.groups', $groups); $excluded = json_decode(base64_decode($app->input->get('excluded', '', 'BASE64'))); if (isset($excluded)) { JArrayHelper::toInteger($excluded); } $this->setState('filter.excluded', $excluded); // Load the parameters. $params = JComponentHelper::getParams('com_users'); $this->setState('params', $params); // List state information. parent::populateState('a.name', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. * * @since 1.6 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.active'); $id .= ':' . $this->getState('filter.state'); $id .= ':' . $this->getState('filter.group_id'); $id .= ':' . $this->getState('filter.range'); return parent::getStoreId($id); } /** * Gets the list of users and adds expensive joins to the result set. * * @return mixed An array of data items on success, false on failure. * * @since 1.6 */ public function getItems() { // Get a storage key. $store = $this->getStoreId(); // Try to load the data from internal storage. if (empty($this->cache[$store])) { $groups = $this->getState('filter.groups'); $groupId = $this->getState('filter.group_id'); if (isset($groups) && (empty($groups) || $groupId && !in_array($groupId, $groups))) { $items = array(); } else { $items = parent::getItems(); } // Bail out on an error or empty list. if (empty($items)) { $this->cache[$store] = $items; return $items; } // Joining the groups with the main query is a performance hog. // Find the information only on the result set. // First pass: get list of the user id's and reset the counts. $userIds = array(); foreach ($items as $item) { $userIds[] = (int) $item->id; $item->group_count = 0; $item->group_names = ''; $item->note_count = 0; } // Get the counts from the database only for the users in the list. $db = $this->getDbo(); $query = $db->getQuery(true); // Join over the group mapping table. $query->select('map.user_id, COUNT(map.group_id) AS group_count') ->from('#__user_usergroup_map AS map') ->where('map.user_id IN (' . implode(',', $userIds) . ')') ->group('map.user_id') // Join over the user groups table. ->join('LEFT', '#__usergroups AS g2 ON g2.id = map.group_id'); $db->setQuery($query); // Load the counts into an array indexed on the user id field. try { $userGroups = $db->loadObjectList('user_id'); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } $query->clear() ->select('n.user_id, COUNT(n.id) As note_count') ->from('#__user_notes AS n') ->where('n.user_id IN (' . implode(',', $userIds) . ')') ->where('n.state >= 0') ->group('n.user_id'); $db->setQuery($query); // Load the counts into an array indexed on the aro.value field (the user id). try { $userNotes = $db->loadObjectList('user_id'); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } // Second pass: collect the group counts into the master items array. foreach ($items as &$item) { if (isset($userGroups[$item->id])) { $item->group_count = $userGroups[$item->id]->group_count; // Group_concat in other databases is not supported $item->group_names = $this->_getUserDisplayedGroups($item->id); } if (isset($userNotes[$item->id])) { $item->note_count = $userNotes[$item->id]->note_count; } } // Add the items to the internal cache. $this->cache[$store] = $items; } return $this->cache[$store]; } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery * * @since 1.6 */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.*' ) ); $query->from($db->quoteName('#__users') . ' AS a'); // If the model is set to check item state, add to the query. $state = $this->getState('filter.state'); if (is_numeric($state)) { $query->where('a.block = ' . (int) $state); } // If the model is set to check the activated state, add to the query. $active = $this->getState('filter.active'); if (is_numeric($active)) { if ($active == '0') { $query->where('a.activation IN (' . $db->quote('') . ', ' . $db->quote('0') . ')'); } elseif ($active == '1') { $query->where($query->length('a.activation') . ' > 1'); } } // Filter the items over the group id if set. $groupId = $this->getState('filter.group_id'); $groups = $this->getState('filter.groups'); if ($groupId || isset($groups)) { $query->join('LEFT', '#__user_usergroup_map AS map2 ON map2.user_id = a.id') ->group( $db->quoteName( array( 'a.id', 'a.name', 'a.username', 'a.password', 'a.block', 'a.sendEmail', 'a.registerDate', 'a.lastvisitDate', 'a.activation', 'a.params', 'a.email' ) ) ); if ($groupId) { $query->where('map2.group_id = ' . (int) $groupId); } if (isset($groups)) { $query->where('map2.group_id IN (' . implode(',', $groups) . ')'); } } // Filter the items over the search string if set. if ($this->getState('filter.search') !== '' && $this->getState('filter.search') !== null) { // Escape the search token. $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($this->getState('filter.search')), true) . '%')); // Compile the different search clauses. $searches = array(); $searches[] = 'a.name LIKE ' . $search; $searches[] = 'a.username LIKE ' . $search; $searches[] = 'a.email LIKE ' . $search; // Add the clauses to the query. $query->where('(' . implode(' OR ', $searches) . ')'); } // Add filter for registration ranges select list $range = $this->getState('filter.range'); // Apply the range filter. if ($range) { // Get UTC for now. $dNow = new JDate; $dStart = clone $dNow; switch ($range) { case 'past_week': $dStart->modify('-7 day'); break; case 'past_1month': $dStart->modify('-1 month'); break; case 'past_3month': $dStart->modify('-3 month'); break; case 'past_6month': $dStart->modify('-6 month'); break; case 'post_year': case 'past_year': $dStart->modify('-1 year'); break; case 'today': // Ranges that need to align with local 'days' need special treatment. $app = JFactory::getApplication(); $offset = $app->get('offset'); // Reset the start time to be the beginning of today, local time. $dStart = new JDate('now', $offset); $dStart->setTime(0, 0, 0); // Now change the timezone back to UTC. $tz = new DateTimeZone('GMT'); $dStart->setTimezone($tz); break; } if ($range == 'post_year') { $query->where( $db->qn('a.registerDate') . ' < ' . $db->quote($dStart->format('Y-m-d H:i:s')) ); } else { $query->where( $db->qn('a.registerDate') . ' >= ' . $db->quote($dStart->format('Y-m-d H:i:s')) . ' AND ' . $db->qn('a.registerDate') . ' <= ' . $db->quote($dNow->format('Y-m-d H:i:s')) ); } } // Filter by excluded users $excluded = $this->getState('filter.excluded'); if (!empty($excluded)) { $query->where('id NOT IN (' . implode(',', $excluded) . ')'); } // Add the list ordering clause. $query->order($db->qn($db->escape($this->getState('list.ordering', 'a.name'))) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } /** * SQL server change * * @param integer $user_id User identifier * * @return string Groups titles imploded :$ */ protected function _getUserDisplayedGroups($user_id) { $db = $this->getDbo(); $query = "SELECT title FROM " . $db->quoteName('#__usergroups') . " ug left join " . $db->quoteName('#__user_usergroup_map') . " map on (ug.id = map.group_id)" . " WHERE map.user_id=" . (int) $user_id; $db->setQuery($query); $result = $db->loadColumn(); return implode("\n", $result); } } PKb��\l|k�FF2components/com_users/models/fields/groupparent.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; JFormHelper::loadFieldClass('list'); /** * Form Field class for the Joomla Framework. * * @since 1.6 */ class JFormFieldGroupParent extends JFormFieldList { /** * The form field type. * * @var string * @since 1.6 */ protected $type = 'GroupParent'; /** * Method to get the field options. * * @return array The field option objects * * @since 1.6 */ protected function getOptions() { $options = array(); $db = JFactory::getDbo(); $user = JFactory::getUser(); $query = $db->getQuery(true) ->select('a.id AS value, a.title AS text, COUNT(DISTINCT b.id) AS level') ->from('#__usergroups AS a') ->join('LEFT', $db->quoteName('#__usergroups') . ' AS b ON a.lft > b.lft AND a.rgt < b.rgt'); // Prevent parenting to children of this item. if ($id = $this->form->getValue('id')) { $query->join('LEFT', $db->quoteName('#__usergroups') . ' AS p ON p.id = ' . (int) $id) ->where('NOT(a.lft >= p.lft AND a.rgt <= p.rgt)'); } $query->group('a.id, a.title, a.lft, a.rgt') ->order('a.lft ASC'); // Get the options. $db->setQuery($query); try { $options = $db->loadObjectList(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); } // Pad the option text with spaces using depth level as a multiplier. for ($i = 0, $n = count($options); $i < $n; $i++) { // Show groups only if user is super admin or group is not super admin if ($user->authorise('core.admin') || (!JAccess::checkGroup($options[$i]->value, 'core.admin'))) { $options[$i]->text = str_repeat('- ', $options[$i]->level) . $options[$i]->text; } else { unset($options[$i]); } } // Merge any additional options in the XML definition. $options = array_merge(parent::getOptions(), $options); return $options; } } PKb��\1z�{�{$components/com_users/models/user.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * User model. * * @since 1.6 */ class UsersModelUser extends JModelAdmin { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @since 3.2 */ public function __construct($config = array()) { $config = array_merge( array( 'event_after_delete' => 'onUserAfterDelete', 'event_after_save' => 'onUserAfterSave', 'event_before_delete' => 'onUserBeforeDelete', 'event_before_save' => 'onUserBeforeSave', 'events_map' => array('save' => 'user', 'delete' => 'user') ), $config ); parent::__construct($config); // Load the Joomla! RAD layer if (!defined('FOF_INCLUDED')) { include_once JPATH_LIBRARIES . '/fof/include.php'; } } /** * Returns a reference to the a Table object, always creating it. * * @param string $type The table type to instantiate * @param string $prefix A prefix for the table class name. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A database object * * @since 1.6 */ public function getTable($type = 'User', $prefix = 'JTable', $config = array()) { $table = JTable::getInstance($type, $prefix, $config); return $table; } /** * Method to get a single record. * * @param integer $pk The id of the primary key. * * @return mixed Object on success, false on failure. * * @since 1.6 */ public function getItem($pk = null) { $result = parent::getItem($pk); $context = 'com_users.user'; $result->tags = new JHelperTags; $result->tags->getTagIds($result->id, $context); // Get the dispatcher and load the content plugins. $dispatcher = JEventDispatcher::getInstance(); JPluginHelper::importPlugin('content'); // Load the user plugins for backward compatibility (v3.3.3 and earlier). JPluginHelper::importPlugin('user'); // Trigger the data preparation event. $dispatcher->trigger('onContentPrepareData', array($context, $result)); return $result; } /** * Method to get the record form. * * @param array $data An optional array of data for the form to interogate. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return mixed A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { $plugin = JPluginHelper::getPlugin('user', 'joomla'); $pluginParams = new Registry($plugin->params); // Get the form. $form = $this->loadForm('com_users.user', 'user', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } // Passwords fields are required when mail to user is set to No in joomla user plugin $userId = $form->getValue('id'); if ($userId === 0 && $pluginParams->get('mail_to_user') === "0") { $form->setFieldAttribute('password', 'required', 'true'); $form->setFieldAttribute('password2', 'required', 'true'); } // If the user needs to change their password, mark the password fields as required if (JFactory::getUser()->requireReset) { $form->setFieldAttribute('password', 'required', 'true'); $form->setFieldAttribute('password2', 'required', 'true'); } // The user should not be able to set the requireReset value on their own account if ((int) $userId === (int) JFactory::getUser()->id) { $form->removeField('requireReset'); } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_users.edit.user.data', array()); if (empty($data)) { $data = $this->getItem(); } JPluginHelper::importPlugin('user'); $this->preprocessData('com_users.profile', $data); return $data; } /** * Override JModelAdmin::preprocessForm to ensure the correct plugin group is loaded. * * @param JForm $form A JForm object. * @param mixed $data The data expected for the form. * @param string $group The name of the plugin group to import (defaults to "content"). * * @return void * * @since 1.6 * @throws Exception if there is an error in the form event. */ protected function preprocessForm(JForm $form, $data, $group = 'user') { parent::preprocessForm($form, $data, $group); } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 1.6 */ public function save($data) { $pk = (!empty($data['id'])) ? $data['id'] : (int) $this->getState('user.id'); $user = JUser::getInstance($pk); $my = JFactory::getUser(); if ($data['block'] && $pk == $my->id && !$my->block) { $this->setError(JText::_('COM_USERS_USERS_ERROR_CANNOT_BLOCK_SELF')); return false; } // Make sure that we are not removing ourself from Super Admin group $iAmSuperAdmin = $my->authorise('core.admin'); if ($iAmSuperAdmin && $my->get('id') == $pk) { // Check that at least one of our new groups is Super Admin $stillSuperAdmin = false; $myNewGroups = $data['groups']; foreach ($myNewGroups as $group) { $stillSuperAdmin = ($stillSuperAdmin) ? ($stillSuperAdmin) : JAccess::checkGroup($group, 'core.admin'); } if (!$stillSuperAdmin) { $this->setError(JText::_('COM_USERS_USERS_ERROR_CANNOT_DEMOTE_SELF')); return false; } } // Handle the two factor authentication setup if (array_key_exists('twofactor', $data)) { $twoFactorMethod = $data['twofactor']['method']; // Get the current One Time Password (two factor auth) configuration $otpConfig = $this->getOtpConfig($pk); if ($twoFactorMethod != 'none') { // Run the plugins FOFPlatform::getInstance()->importPlugin('twofactorauth'); $otpConfigReplies = FOFPlatform::getInstance()->runPlugins('onUserTwofactorApplyConfiguration', array($twoFactorMethod)); // Look for a valid reply foreach ($otpConfigReplies as $reply) { if (!is_object($reply) || empty($reply->method) || ($reply->method != $twoFactorMethod)) { continue; } $otpConfig->method = $reply->method; $otpConfig->config = $reply->config; break; } // Save OTP configuration. $this->setOtpConfig($pk, $otpConfig); // Generate one time emergency passwords if required (depleted or not set) if (empty($otpConfig->otep)) { $oteps = $this->generateOteps($pk); } } else { $otpConfig->method = 'none'; $otpConfig->config = array(); $this->setOtpConfig($pk, $otpConfig); } // Unset the raw data unset($data['twofactor']); // Reload the user record with the updated OTP configuration $user->load($pk); } // Bind the data. if (!$user->bind($data)) { $this->setError($user->getError()); return false; } // Store the data. if (!$user->save()) { $this->setError($user->getError()); return false; } $this->setState('user.id', $user->id); return true; } /** * Method to delete rows. * * @param array &$pks An array of item ids. * * @return boolean Returns true on success, false on failure. * * @since 1.6 */ public function delete(&$pks) { $user = JFactory::getUser(); $table = $this->getTable(); $pks = (array) $pks; // Check if I am a Super Admin $iAmSuperAdmin = $user->authorise('core.admin'); JPluginHelper::importPlugin($this->events_map['delete']); $dispatcher = JEventDispatcher::getInstance(); if (in_array($user->id, $pks)) { $this->setError(JText::_('COM_USERS_USERS_ERROR_CANNOT_DELETE_SELF')); return false; } // Iterate the items to delete each one. foreach ($pks as $i => $pk) { if ($table->load($pk)) { // Access checks. $allow = $user->authorise('core.delete', 'com_users'); // Don't allow non-super-admin to delete a super admin $allow = (!$iAmSuperAdmin && JAccess::check($pk, 'core.admin')) ? false : $allow; if ($allow) { // Get users data for the users to delete. $user_to_delete = JFactory::getUser($pk); // Fire the before delete event. $dispatcher->trigger($this->event_before_delete, array($table->getProperties())); if (!$table->delete($pk)) { $this->setError($table->getError()); return false; } else { // Trigger the after delete event. $dispatcher->trigger($this->event_after_delete, array($user_to_delete->getProperties(), true, $this->getError())); } } else { // Prune items that you can't change. unset($pks[$i]); JError::raiseWarning(403, JText::_('JERROR_CORE_DELETE_NOT_PERMITTED')); } } else { $this->setError($table->getError()); return false; } } return true; } /** * Method to block user records. * * @param array &$pks The ids of the items to publish. * @param integer $value The value of the published state * * @return boolean True on success. * * @since 1.6 */ public function block(&$pks, $value = 1) { $app = JFactory::getApplication(); $dispatcher = JEventDispatcher::getInstance(); $user = JFactory::getUser(); // Check if I am a Super Admin $iAmSuperAdmin = $user->authorise('core.admin'); $table = $this->getTable(); $pks = (array) $pks; JPluginHelper::importPlugin($this->events_map['save']); // Access checks. foreach ($pks as $i => $pk) { if ($value == 1 && $pk == $user->get('id')) { // Cannot block yourself. unset($pks[$i]); JError::raiseWarning(403, JText::_('COM_USERS_USERS_ERROR_CANNOT_BLOCK_SELF')); } elseif ($table->load($pk)) { $old = $table->getProperties(); $allow = $user->authorise('core.edit.state', 'com_users'); // Don't allow non-super-admin to delete a super admin $allow = (!$iAmSuperAdmin && JAccess::check($pk, 'core.admin')) ? false : $allow; // Prepare the logout options. $options = array( 'clientid' => 0 ); if ($allow) { // Skip changing of same state if ($table->block == $value) { unset($pks[$i]); continue; } $table->block = (int) $value; // If unblocking, also change password reset count to zero to unblock reset if ($table->block === 0) { $table->resetCount = 0; } // Allow an exception to be thrown. try { if (!$table->check()) { $this->setError($table->getError()); return false; } // Trigger the before save event. $result = $dispatcher->trigger($this->event_before_save, array($old, false, $table->getProperties())); if (in_array(false, $result, true)) { // Plugin will have to raise its own error or throw an exception. return false; } // Store the table. if (!$table->store()) { $this->setError($table->getError()); return false; } // Trigger the after save event $dispatcher->trigger($this->event_after_save, array($table->getProperties(), false, true, null)); } catch (Exception $e) { $this->setError($e->getMessage()); return false; } // Log the user out. if ($value) { $app->logout($table->id, $options); } } else { // Prune items that you can't change. unset($pks[$i]); JError::raiseWarning(403, JText::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED')); } } } return true; } /** * Method to activate user records. * * @param array &$pks The ids of the items to activate. * * @return boolean True on success. * * @since 1.6 */ public function activate(&$pks) { $dispatcher = JEventDispatcher::getInstance(); $user = JFactory::getUser(); // Check if I am a Super Admin $iAmSuperAdmin = $user->authorise('core.admin'); $table = $this->getTable(); $pks = (array) $pks; JPluginHelper::importPlugin($this->events_map['save']); // Access checks. foreach ($pks as $i => $pk) { if ($table->load($pk)) { $old = $table->getProperties(); $allow = $user->authorise('core.edit.state', 'com_users'); // Don't allow non-super-admin to delete a super admin $allow = (!$iAmSuperAdmin && JAccess::check($pk, 'core.admin')) ? false : $allow; if (empty($table->activation)) { // Ignore activated accounts. unset($pks[$i]); } elseif ($allow) { $table->block = 0; $table->activation = ''; // Allow an exception to be thrown. try { if (!$table->check()) { $this->setError($table->getError()); return false; } // Trigger the before save event. $result = $dispatcher->trigger($this->event_before_save, array($old, false, $table->getProperties())); if (in_array(false, $result, true)) { // Plugin will have to raise it's own error or throw an exception. return false; } // Store the table. if (!$table->store()) { $this->setError($table->getError()); return false; } // Fire the after save event $dispatcher->trigger($this->event_after_save, array($table->getProperties(), false, true, null)); } catch (Exception $e) { $this->setError($e->getMessage()); return false; } } else { // Prune items that you can't change. unset($pks[$i]); JError::raiseWarning(403, JText::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED')); } } } return true; } /** * Method to perform batch operations on an item or a set of items. * * @param array $commands An array of commands to perform. * @param array $pks An array of item ids. * @param array $contexts An array of item contexts. * * @return boolean Returns true on success, false on failure. * * @since 2.5 */ public function batch($commands, $pks, $contexts) { // Sanitize user ids. $pks = array_unique($pks); JArrayHelper::toInteger($pks); // Remove any values of zero. if (array_search(0, $pks, true)) { unset($pks[array_search(0, $pks, true)]); } if (empty($pks)) { $this->setError(JText::_('COM_USERS_USERS_NO_ITEM_SELECTED')); return false; } $done = false; if (!empty($commands['group_id'])) { $cmd = JArrayHelper::getValue($commands, 'group_action', 'add'); if (!$this->batchUser((int) $commands['group_id'], $pks, $cmd)) { return false; } $done = true; } if (!empty($commands['reset_id'])) { if (!$this->batchReset($pks, $commands['reset_id'])) { return false; } $done = true; } if (!$done) { $this->setError(JText::_('JLIB_APPLICATION_ERROR_INSUFFICIENT_BATCH_INFORMATION')); return false; } // Clear the cache $this->cleanCache(); return true; } /** * Batch flag users as being required to reset their passwords * * @param array $user_ids An array of user IDs on which to operate * @param string $action The action to perform * * @return boolean True on success, false on failure * * @since 3.2 */ public function batchReset($user_ids, $action) { // Set the action to perform if ($action === 'yes') { $value = 1; } else { $value = 0; } // Prune out the current user if they are in the supplied user ID array $user_ids = array_diff($user_ids, array(JFactory::getUser()->id)); // Get the DB object $db = $this->getDbo(); JArrayHelper::toInteger($user_ids); $query = $db->getQuery(true); // Update the reset flag $query->update($db->quoteName('#__users')) ->set($db->quoteName('requireReset') . ' = ' . $value) ->where($db->quoteName('id') . ' IN (' . implode(',', $user_ids) . ')'); $db->setQuery($query); try { $db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } return true; } /** * Perform batch operations * * @param integer $group_id The group ID which assignments are being edited * @param array $user_ids An array of user IDs on which to operate * @param string $action The action to perform * * @return boolean True on success, false on failure * * @since 1.6 */ public function batchUser($group_id, $user_ids, $action) { // Get the DB object $db = $this->getDbo(); JArrayHelper::toInteger($user_ids); // Non-super admin cannot work with super-admin group if ((!JFactory::getUser()->get('isRoot') && JAccess::checkGroup($group_id, 'core.admin')) || $group_id < 1) { $this->setError(JText::_('COM_USERS_ERROR_INVALID_GROUP')); return false; } switch ($action) { // Sets users to a selected group case 'set': $doDelete = 'all'; $doAssign = true; break; // Remove users from a selected group case 'del': $doDelete = 'group'; break; // Add users to a selected group case 'add': default: $doAssign = true; break; } // Remove the users from the group if requested. if (isset($doDelete)) { $query = $db->getQuery(true); // Remove users from the group $query->delete($db->quoteName('#__user_usergroup_map')) ->where($db->quoteName('user_id') . ' IN (' . implode(',', $user_ids) . ')'); // Only remove users from selected group if ($doDelete == 'group') { $query->where($db->quoteName('group_id') . ' = ' . (int) $group_id); } $db->setQuery($query); try { $db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } } // Assign the users to the group if requested. if (isset($doAssign)) { $query = $db->getQuery(true); // First, we need to check if the user is already assigned to a group $query->select($db->quoteName('user_id')) ->from($db->quoteName('#__user_usergroup_map')) ->where($db->quoteName('group_id') . ' = ' . (int) $group_id); $db->setQuery($query); $users = $db->loadColumn(); // Build the values clause for the assignment query. $query->clear(); $groups = false; foreach ($user_ids as $id) { if (!in_array($id, $users)) { $query->values($id . ',' . $group_id); $groups = true; } } // If we have no users to process, throw an error to notify the user if (!$groups) { $this->setError(JText::_('COM_USERS_ERROR_NO_ADDITIONS')); return false; } $query->insert($db->quoteName('#__user_usergroup_map')) ->columns(array($db->quoteName('user_id'), $db->quoteName('group_id'))); $db->setQuery($query); try { $db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } } return true; } /** * Gets the available groups. * * @return array An array of groups * * @since 1.6 */ public function getGroups() { $user = JFactory::getUser(); if ($user->authorise('core.edit', 'com_users') && $user->authorise('core.manage', 'com_users')) { $model = JModelLegacy::getInstance('Groups', 'UsersModel', array('ignore_request' => true)); return $model->getItems(); } else { return null; } } /** * Gets the groups this object is assigned to * * @param integer $userId The user ID to retrieve the groups for * * @return array An array of assigned groups * * @since 1.6 */ public function getAssignedGroups($userId = null) { $userId = (!empty($userId)) ? $userId : (int) $this->getState('user.id'); if (empty($userId)) { $result = array(); $groupsIDs = $this->getForm()->getValue('groups'); if (!empty($groupsIDs)) { $result = $groupsIDs; } else { $config = JComponentHelper::getParams('com_users'); if ($groupId = $config->get('new_usertype')) { $result[] = $groupId; } } } else { $result = JUserHelper::getUserGroups($userId); } return $result; } /** * Returns the one time password (OTP) – a.k.a. two factor authentication – * configuration for a particular user. * * @param integer $user_id The numeric ID of the user * * @return stdClass An object holding the OTP configuration for this user * * @since 3.2 */ public function getOtpConfig($user_id = null) { $user_id = (!empty($user_id)) ? $user_id : (int) $this->getState('user.id'); // Initialise $otpConfig = (object) array( 'method' => 'none', 'config' => array(), 'otep' => array() ); /** * Get the raw data, without going through JUser (required in order to * be able to modify the user record before logging in the user). */ $db = $this->getDbo(); $query = $db->getQuery(true) ->select('*') ->from($db->qn('#__users')) ->where($db->qn('id') . ' = ' . $db->q($user_id)); $db->setQuery($query); $item = $db->loadObject(); // Make sure this user does have OTP enabled if (empty($item->otpKey)) { return $otpConfig; } // Get the encrypted data list($method, $encryptedConfig) = explode(':', $item->otpKey, 2); $encryptedOtep = $item->otep; // Create an encryptor class $key = $this->getOtpConfigEncryptionKey(); $aes = new FOFEncryptAes($key, 256); // Decrypt the data $decryptedConfig = $aes->decryptString($encryptedConfig); $decryptedOtep = $aes->decryptString($encryptedOtep); // Remove the null padding added during encryption $decryptedConfig = rtrim($decryptedConfig, "\0"); $decryptedOtep = rtrim($decryptedOtep, "\0"); // Update the configuration object $otpConfig->method = $method; $otpConfig->config = @json_decode($decryptedConfig); $otpConfig->otep = @json_decode($decryptedOtep); /* * If the decryption failed for any reason we essentially disable the * two-factor authentication. This prevents impossible to log in sites * if the site admin changes the site secret for any reason. */ if (is_null($otpConfig->config)) { $otpConfig->config = array(); } if (is_object($otpConfig->config)) { $otpConfig->config = (array) $otpConfig->config; } if (is_null($otpConfig->otep)) { $otpConfig->otep = array(); } if (is_object($otpConfig->otep)) { $otpConfig->otep = (array) $otpConfig->otep; } // Return the configuration object return $otpConfig; } /** * Sets the one time password (OTP) – a.k.a. two factor authentication – * configuration for a particular user. The $otpConfig object is the same as * the one returned by the getOtpConfig method. * * @param integer $user_id The numeric ID of the user * @param stdClass $otpConfig The OTP configuration object * * @return boolean True on success * * @since 3.2 */ public function setOtpConfig($user_id, $otpConfig) { $user_id = (!empty($user_id)) ? $user_id : (int) $this->getState('user.id'); $updates = (object) array( 'id' => $user_id, 'otpKey' => '', 'otep' => '' ); // Create an encryptor class $key = $this->getOtpConfigEncryptionKey(); $aes = new FOFEncryptAes($key, 256); // Create the encrypted option strings if (!empty($otpConfig->method) && ($otpConfig->method != 'none')) { $decryptedConfig = json_encode($otpConfig->config); $decryptedOtep = json_encode($otpConfig->otep); $updates->otpKey = $otpConfig->method . ':' . $aes->encryptString($decryptedConfig); $updates->otep = $aes->encryptString($decryptedOtep); } $db = $this->getDbo(); $result = $db->updateObject('#__users', $updates, 'id'); return $result; } /** * Gets the symmetric encryption key for the OTP configuration data. It * currently returns the site's secret. * * @return string The encryption key * * @since 3.2 */ public function getOtpConfigEncryptionKey() { return JFactory::getConfig()->get('secret'); } /** * Gets the configuration forms for all two-factor authentication methods * in an array. * * @param integer $user_id The user ID to load the forms for (optional) * * @return array * * @since 3.2 */ public function getTwofactorform($user_id = null) { $user_id = (!empty($user_id)) ? $user_id : (int) $this->getState('user.id'); $otpConfig = $this->getOtpConfig($user_id); FOFPlatform::getInstance()->importPlugin('twofactorauth'); return FOFPlatform::getInstance()->runPlugins('onUserTwofactorShowConfiguration', array($otpConfig, $user_id)); } /** * Generates a new set of One Time Emergency Passwords (OTEPs) for a given user. * * @param integer $user_id The user ID * @param integer $count How many OTEPs to generate? Default: 10 * * @return array The generated OTEPs * * @since 3.2 */ public function generateOteps($user_id, $count = 10) { $user_id = (!empty($user_id)) ? $user_id : (int) $this->getState('user.id'); // Initialise $oteps = array(); // Get the OTP configuration for the user $otpConfig = $this->getOtpConfig($user_id); // If two factor authentication is not enabled, abort if (empty($otpConfig->method) || ($otpConfig->method == 'none')) { return $oteps; } $salt = "0123456789"; $base = strlen($salt); $length = 16; for ($i = 0; $i < $count; $i++) { $makepass = ''; $random = JCrypt::genRandomBytes($length + 1); $shift = ord($random[0]); for ($j = 1; $j <= $length; ++$j) { $makepass .= $salt[($shift + ord($random[$j])) % $base]; $shift += ord($random[$j]); } $oteps[] = $makepass; } $otpConfig->otep = $oteps; // Save the now modified OTP configuration $this->setOtpConfig($user_id, $otpConfig); return $oteps; } /** * Checks if the provided secret key is a valid two factor authentication * secret key. If not, it will check it against the list of one time * emergency passwords (OTEPs). If it's a valid OTEP it will also remove it * from the user's list of OTEPs. * * This method will return true in the following conditions: * - The two factor authentication is not enabled * - You have provided a valid secret key for * - You have provided a valid OTEP * * You can define the following options in the $options array: * otp_config The OTP (one time password, a.k.a. two factor auth) * configuration object. If not set we'll load it automatically. * warn_if_not_req Issue a warning if you are checking a secret key against * a user account which doesn't have any two factor * authentication method enabled. * warn_irq_msg The string to use for the warn_if_not_req warning * * @param integer $user_id The user's numeric ID * @param string $secretkey The secret key you want to check * @param array $options Options; see above * * @return boolean True if it's a valid secret key for this user. * * @since 3.2 */ public function isValidSecretKey($user_id, $secretkey, $options = array()) { // Load the user's OTP (one time password, a.k.a. two factor auth) configuration if (!array_key_exists('otp_config', $options)) { $otpConfig = $this->getOtpConfig($user_id); $options['otp_config'] = $otpConfig; } else { $otpConfig = $options['otp_config']; } // Check if the user has enabled two factor authentication if (empty($otpConfig->method) || ($otpConfig->method == 'none')) { // Load language $lang = JFactory::getLanguage(); $extension = 'com_users'; $source = JPATH_ADMINISTRATOR . '/components/' . $extension; $lang->load($extension, JPATH_ADMINISTRATOR, null, false, true) || $lang->load($extension, $source, null, false, true); $warn = true; $warnMessage = JText::_('COM_USERS_ERROR_SECRET_CODE_WITHOUT_TFA'); if (array_key_exists('warn_if_not_req', $options)) { $warn = $options['warn_if_not_req']; } if (array_key_exists('warn_irq_msg', $options)) { $warnMessage = $options['warn_irq_msg']; } // Warn the user if he's using a secret code but he has not // enabled two factor auth in his account. if (!empty($secretkey) && $warn) { try { $app = JFactory::getApplication(); $app->enqueueMessage($warnMessage, 'warning'); } catch (Exception $exc) { // This happens when we are in CLI mode. In this case // no warning is issued return true; } } return true; } $credentials = array( 'secretkey' => $secretkey, ); // Load the Joomla! RAD layer if (!defined('FOF_INCLUDED')) { include_once JPATH_LIBRARIES . '/fof/include.php'; } // Try to validate the OTP FOFPlatform::getInstance()->importPlugin('twofactorauth'); $otpAuthReplies = FOFPlatform::getInstance()->runPlugins('onUserTwofactorAuthenticate', array($credentials, $options)); $check = false; /* * This looks like noob code but DO NOT TOUCH IT and do not convert * to in_array(). During testing in_array() inexplicably returned * null when the OTEP begins with a zero! o_O */ if (!empty($otpAuthReplies)) { foreach ($otpAuthReplies as $authReply) { $check = $check || $authReply; } } // Fall back to one time emergency passwords if (!$check) { $check = $this->isValidOtep($user_id, $secretkey, $otpConfig); } return $check; } /** * Checks if the supplied string is a valid one time emergency password * (OTEP) for this user. If it is it will be automatically removed from the * user's list of OTEPs. * * @param integer $user_id The user ID against which you are checking * @param string $otep The string you want to test for validity * @param object $otpConfig Optional; the two factor authentication configuration (automatically fetched if not set) * * @return boolean True if it's a valid OTEP or if two factor auth is not * enabled in this user's account. * * @since 3.2 */ public function isValidOtep($user_id, $otep, $otpConfig = null) { if (is_null($otpConfig)) { $otpConfig = $this->getOtpConfig($user_id); } // Did the user use an OTEP instead? if (empty($otpConfig->otep)) { if (empty($otpConfig->method) || ($otpConfig->method == 'none')) { // Two factor authentication is not enabled on this account. // Any string is assumed to be a valid OTEP. return true; } else { /** * Two factor authentication enabled and no OTEPs defined. The * user has used them all up. Therefore anything he enters is * an invalid OTEP. */ return false; } } // Clean up the OTEP (remove dashes, spaces and other funny stuff // our beloved users may have unwittingly stuffed in it) $otep = filter_var($otep, FILTER_SANITIZE_NUMBER_INT); $otep = str_replace('-', '', $otep); $check = false; // Did we find a valid OTEP? if (in_array($otep, $otpConfig->otep)) { // Remove the OTEP from the array $otpConfig->otep = array_diff($otpConfig->otep, array($otep)); $this->setOtpConfig($user_id, $otpConfig); // Return true; the OTEP was a valid one $check = true; } return $check; } } PKb��\?=_RR2components/com_users/models/forms/filter_users.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fields name="filter"> <field name="search" type="text" label="COM_USERS_SEARCH_USERS" description="COM_USERS_SEARCH_IN_NAME" hint="JSEARCH_FILTER" class="js-stools-search-string" /> <field name="state" type="userstate" label="COM_USERS_FILTER_STATE" description="COM_USERS_FILTER_STATE_DESC" onchange="this.form.submit();" > <option value="">COM_USERS_FILTER_STATE</option> </field> <field name="active" type="useractive" label="COM_USERS_FILTER_ACTIVE" description="COM_USERS_FILTER_ACTIVE_DESC" onchange="this.form.submit();" > <option value="">COM_USERS_FILTER_ACTIVE</option> </field> <field name="group_id" type="usergrouplist" label="COM_USERS_FILTER_GROUP" description="COM_USERS_FILTER_GROUP_DESC" onchange="this.form.submit();" > <option value="">COM_USERS_FILTER_USERGROUP</option> </field> <field name="range" type="registrationdaterange" label="COM_USERS_OPTION_FILTER_DATE" description="COM_USERS_OPTION_FILTER_DATE" onchange="this.form.submit();" > <option value="">COM_USERS_OPTION_FILTER_DATE</option> </field> </fields> <fields name="list"> <field name="fullordering" type="list" label="COM_CONTENT_LIST_FULL_ORDERING" description="COM_CONTENT_LIST_FULL_ORDERING_DESC" onchange="this.form.submit();" default="a.title ASC" > <option value="">JGLOBAL_SORT_BY</option> <option value="a.name ASC">COM_USERS_HEADING_NAME_ASC</option> <option value="a.name DESC">COM_USERS_HEADING_NAME_DESC</option> <option value="a.username ASC">COM_USERS_HEADING_USERNAME_ASC</option> <option value="a.username DESC">COM_USERS_HEADING_USERNAME_DESC</option> <option value="a.block ASC">COM_USERS_HEADING_ENABLED_ASC</option> <option value="a.block DESC">COM_USERS_HEADING_ENABLED_DESC</option> <option value="a.activation ASC">COM_USERS_HEADING_ACTIVATED_ASC</option> <option value="a.activation DESC">COM_USERS_HEADING_ACTIVATED_DESC</option> <option value="a.email ASC">COM_USERS_HEADING_EMAIL_ASC</option> <option value="a.email DESC">COM_USERS_HEADING_EMAIL_DESC</option> <option value="a.lastvisitDate ASC">COM_USERS_HEADING_LAST_VISIT_DATE_ASC</option> <option value="a.lastvisitDate DESC">COM_USERS_HEADING_LAST_VISIT_DATE_DESC</option> <option value="a.registerDate ASC">COM_USERS_HEADING_REGISTRATION_DATE_ASC</option> <option value="a.registerDate DESC">COM_USERS_HEADING_REGISTRATION_DATE_DESC</option> <option value="a.id ASC">JGRID_HEADING_ID_ASC</option> <option value="a.id DESC">JGRID_HEADING_ID_DESC</option> </field> <field name="limit" type="limitbox" class="input-mini" default="25" label="COM_CONTENT_LIST_LIMIT" description="COM_CONTENT_LIST_LIMIT_DESC" onchange="this.form.submit();" /> </fields> </form>PKb��\��E+components/com_users/models/forms/level.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field name="id" type="hidden" default="0" readonly="true" required="true" /> <field name="title" type="text" required="true" description="COM_USERS_LEVEL_FIELD_TITLE_DESC" label="COM_USERS_LEVEL_FIELD_TITLE_LABEL" size="50" /> <field name="ordering" type="text" default="0" description="JFIELD_ORDERING_DESC" label="JFIELD_ORDERING_LABEL" /> <field name="rules" type="hidden" filter="int_array" /> </fieldset> </form> PKb��\I�8@��+components/com_users/models/forms/group.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field name="id" type="hidden" default="0" required="true" readonly="true" /> <field name="title" type="text" required="true" description="COM_USERS_GROUP_FIELD_TITLE_DESC" label="COM_USERS_GROUP_FIELD_TITLE_LABEL" size="40" /> <field name="parent_id" type="groupparent" description="COM_USERS_GROUP_FIELD_PARENT_DESC" label="COM_USERS_GROUP_FIELD_PARENT_LABEL" required="true" /> <field name="actions" type="hidden" multiple="true" /> <field name="lft" type="hidden" filter="unset" /> <field name="rgt" type="hidden" filter="unset" /> </fieldset> </form> PKb��\} N�@ @ *components/com_users/models/forms/note.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field name="id" type="hidden" class="readonly" size="6" default="0" readonly="true" label="COM_USERS_FIELD_ID_LABEL" /> <field name="user_id" type="user" size="50" class="input-medium" required="true" label="COM_USERS_FIELD_USER_ID_LABEL" /> <field name="catid" type="category" extension="com_users" label="COM_USERS_FIELD_CATEGORY_ID_LABEL" description="JFIELD_CATEGORY_DESC" > </field> <field name="subject" type="text" size="80" label="COM_USERS_FIELD_SUBJECT_LABEL" description="COM_USERS_FIELD_SUBJECT_DESC" /> <field name="body" type="editor" rows="10" cols="80" filter="safehtml" label="COM_USERS_FIELD_NOTEBODY_LABEL" description="COM_USERS_FIELD_NOTEBODY_DESC" /> <field name="state" type="list" label="JSTATUS" description="COM_USERS_FIELD_STATE_DESC" size="1" default="1"> <option value="1">JPUBLISHED</option> <option value="0">JUNPUBLISHED</option> <option value="2">JARCHIVED</option> <option value="-2">JTRASHED</option> </field> <field name="review_time" type="calendar" label="COM_USERS_FIELD_REVIEW_TIME_LABEL" description="COM_USERS_FIELD_REVIEW_TIME_DESC" default="0000-00-00" format="%Y-%m-%d" /> <field name="checked_out" type="hidden" filter="unset" /> <field name="checked_out_time" type="hidden" filter="unset" /> <field name="created_user_id" label="JGLOBAL_FIELD_CREATED_BY_LABEL" type="hidden" filter="unset" /> <field name="created_time" label="JGLOBAL_FIELD_CREATED_LABEL" type="hidden" filter="unset" /> <field name="modified_user_id" label="JGLOBAL_FIELD_MODIFIED_BY_LABEL" type="hidden" filter="unset" /> <field name="modified_time" label="JGLOBAL_FIELD_MODIFIED_LABEL" type="hidden" filter="unset" /> <field name="publish_up" type="calendar" label="JGLOBAL_FIELD_PUBLISH_UP_LABEL" description="JGLOBAL_FIELD_PUBLISH_UP_DESC" format="%Y-%m-%d %H:%M:%S" size="22" filter="user_utc" /> <field name="publish_down" type="calendar" label="JGLOBAL_FIELD_PUBLISH_DOWN_LABEL" description="JGLOBAL_FIELD_PUBLISH_DOWN_DESC" format="%Y-%m-%d %H:%M:%S" size="22" filter="user_utc" /> <field name="version_note" type="text" label="JGLOBAL_FIELD_VERSION_NOTE_LABEL" description="JGLOBAL_FIELD_VERSION_NOTE_DESC" maxlength="255" size="45" labelclass="control-label" /> </fieldset> </form> PKb��\8��m��*components/com_users/models/forms/mail.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field name="recurse" type="checkbox" description="COM_USERS_MAIL_FIELD_RECURSE_DESC" label="COM_USERS_MAIL_FIELD_RECURSE_LABEL" value="1" /> <field name="mode" type="checkbox" description="COM_USERS_MAIL_FIELD_SEND_IN_HTML_MODE_DESC" label="COM_USERS_MAIL_FIELD_SEND_IN_HTML_MODE_LABEL" value="1" /> <field name="disabled" type="checkbox" description="COM_USERS_MAIL_FIELD_EMAIL_DISABLED_USERS_DESC" label="COM_USERS_MAIL_FIELD_EMAIL_DISABLED_USERS_LABEL" value="1" /> <field name="group" type="usergrouplist" default="0" description="COM_USERS_MAIL_FIELD_GROUP_DESC" label="COM_USERS_MAIL_FIELD_GROUP_LABEL" size="10" > <option value="0">COM_USERS_MAIL_FIELD_VALUE_ALL_USERS_GROUPS</option> </field> <field name="bcc" type="checkbox" default="1" description="COM_USERS_MAIL_FIELD_SEND_AS_BLIND_CARBON_COPY_DESC" label="COM_USERS_MAIL_FIELD_SEND_AS_BLIND_CARBON_COPY_LABEL" value="1" /> <field name="subject" type="text" class="span8" description="COM_USERS_MAIL_FIELD_SUBJECT_DESC" label="COM_USERS_MAIL_FIELD_SUBJECT_LABEL" maxlength="150" size="30" /> <field name="message" type="textarea" class="span11 vert" cols="70" description="COM_USERS_MAIL_FIELD_MESSAGE_DESC" label="COM_USERS_MAIL_FIELD_MESSAGE_LABEL" rows="20" /> </fieldset> </form> PKb��\�>���*components/com_users/models/forms/user.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset name="user_details"> <field name="name" type="text" description="COM_USERS_USER_FIELD_NAME_DESC" label="COM_USERS_USER_FIELD_NAME_LABEL" required="true" size="30" /> <field name="username" type="text" description="COM_USERS_USER_FIELD_USERNAME_DESC" label="COM_USERS_USER_FIELD_USERNAME_LABEL" required="true" size="30" /> <field name="password" type="password" autocomplete="off" class="validate-password" description="COM_USERS_USER_FIELD_PASSWORD_DESC" filter="raw" validate="password" label="JGLOBAL_PASSWORD" size="30" /> <field name="password2" type="password" autocomplete="off" class="validate-password" description="COM_USERS_USER_FIELD_PASSWORD2_DESC" filter="raw" label="COM_USERS_USER_FIELD_PASSWORD2_LABEL" message="COM_USERS_USER_FIELD_PASSWORD1_MESSAGE" size="30" validate="equals" field="password" /> <field name="email" type="email" description="COM_USERS_USER_FIELD_EMAIL_DESC" label="JGLOBAL_EMAIL" required="true" size="30" validate="email" /> <field name="registerDate" type="calendar" class="readonly" label="COM_USERS_USER_FIELD_REGISTERDATE_LABEL" description="COM_USERS_USER_FIELD_REGISTERDATE_DESC" readonly="true" format="%Y-%m-%d %H:%M:%S" size="22" filter="user_utc" /> <field name="lastvisitDate" type="calendar" class="readonly" label="COM_USERS_USER_FIELD_LASTVISIT_LABEL" description="COM_USERS_USER_FIELD_LASTVISIT_DESC" readonly="true" format="%Y-%m-%d %H:%M:%S" size="22" filter="user_utc" /> <field name="lastResetTime" type="calendar" class="readonly" label="COM_USERS_USER_FIELD_LASTRESET_LABEL" description="COM_USERS_USER_FIELD_LASTRESET_DESC" readonly="true" format="%Y-%m-%d %H:%M:%S" size="22" filter="user_utc" /> <field name="resetCount" type="text" class="readonly" label="COM_USERS_USER_FIELD_RESETCOUNT_LABEL" description ="COM_USERS_USER_FIELD_RESETCOUNT_DESC" default="0" readonly="true" /> <field name="sendEmail" type="radio" default="0" class="btn-group btn-group-yesno" label="COM_USERS_USER_FIELD_SENDEMAIL_LABEL" description="COM_USERS_USER_FIELD_SENDEMAIL_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="block" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_USERS_USER_FIELD_BLOCK_LABEL" description="COM_USERS_USER_FIELD_BLOCK_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="requireReset" type="radio" default="0" class="btn-group btn-group-yesno" label="COM_USERS_USER_FIELD_REQUIRERESET_LABEL" description="COM_USERS_USER_FIELD_REQUIRERESET_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="id" type="text" class="readonly" label="JGLOBAL_FIELD_ID_LABEL" description ="JGLOBAL_FIELD_ID_DESC" default="0" readonly="true" /> </fieldset> <field name="groups" type="hidden" /> <field name="twofactor" type="hidden" /> <fields name="params"> <!-- Basic user account settings. --> <fieldset name="settings" label="COM_USERS_SETTINGS_FIELDSET_LABEL"> <field name="admin_style" type="templatestyle" client="administrator" description="COM_USERS_USER_FIELD_BACKEND_TEMPLATE_DESC" label="COM_USERS_USER_FIELD_BACKEND_TEMPLATE_LABEL" > <option value="">JOPTION_USE_DEFAULT</option> </field> <field name="admin_language" type="language" client="administrator" description="COM_USERS_USER_FIELD_BACKEND_LANGUAGE_DESC" label="COM_USERS_USER_FIELD_BACKEND_LANGUAGE_LABEL" > <option value="">JOPTION_USE_DEFAULT</option> </field> <field name="language" type="language" client="site" description="COM_USERS_USER_FIELD_FRONTEND_LANGUAGE_DESC" label="COM_USERS_USER_FIELD_FRONTEND_LANGUAGE_LABEL" > <option value="">JOPTION_USE_DEFAULT</option> </field> <field name="editor" type="plugins" folder="editors" description="COM_USERS_USER_FIELD_EDITOR_DESC" label="COM_USERS_USER_FIELD_EDITOR_LABEL" > <option value="">JOPTION_USE_DEFAULT</option> </field> <field name="helpsite" type="helpsite" label="COM_USERS_USER_FIELD_HELPSITE_LABEL" description="COM_USERS_USER_FIELD_HELPSITE_DESC" > <option value="">JOPTION_USE_DEFAULT</option> </field> <field name="timezone" type="timezone" label="COM_USERS_USER_FIELD_TIMEZONE_LABEL" description="COM_USERS_USER_FIELD_TIMEZONE_DESC" > <option value="">JOPTION_USE_DEFAULT</option> </field> </fieldset> </fields> </form> PKb��\"�=���%components/com_users/models/level.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * User view level model. * * @since 1.6 */ class UsersModelLevel extends JModelAdmin { /** * @var array A list of the access levels in use. * @since 1.6 */ protected $levelsInUse = null; /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to delete the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canDelete($record) { // Check if the access level is being used by any content. if ($this->levelsInUse === null) { // Populate the list once. $this->levelsInUse = array(); $db = $this->getDbo(); $query = $db->getQuery(true) ->select('DISTINCT access'); // Get all the tables and the prefix $tables = $db->getTableList(); $prefix = $db->getPrefix(); foreach ($tables as $table) { // Get all of the columns in the table $fields = $db->getTableColumns($table); /** * We are looking for the access field. If custom tables are using something other * than the 'access' field they are on their own unfortunately. * Also make sure the table prefix matches the live db prefix (eg, it is not a "bak_" table) */ if ((strpos($table, $prefix) === 0) && (isset($fields['access']))) { // Lookup the distinct values of the field. $query->clear('from') ->from($db->quoteName($table)); $db->setQuery($query); try { $values = $db->loadColumn(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } $this->levelsInUse = array_merge($this->levelsInUse, $values); // TODO Could assemble an array of the tables used by each view level list those, // giving the user a clue in the error where to look. } } // Get uniques. $this->levelsInUse = array_unique($this->levelsInUse); // Ok, after all that we are ready to check the record :) } if (in_array($record->id, $this->levelsInUse)) { $this->setError(JText::sprintf('COM_USERS_ERROR_VIEW_LEVEL_IN_USE', $record->id, $record->title)); return false; } return parent::canDelete($record); } /** * Returns a reference to the a Table object, always creating it. * * @param string $type The table type to instantiate * @param string $prefix A prefix for the table class name. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A database object * * @since 1.6 */ public function getTable($type = 'Viewlevel', $prefix = 'JTable', $config = array()) { $return = JTable::getInstance($type, $prefix, $config); return $return; } /** * Method to get a single record. * * @param integer $pk The id of the primary key. * * @return mixed Object on success, false on failure. * * @since 1.6 */ public function getItem($pk = null) { $result = parent::getItem($pk); // Convert the params field to an array. $result->rules = json_decode($result->rules); return $result; } /** * Method to get the record form. * * @param array $data An optional array of data for the form to interogate. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return JForm A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_users.level', 'level', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_users.edit.level.data', array()); if (empty($data)) { $data = $this->getItem(); } $this->preprocessData('com_users.level', $data); return $data; } /** * Method to preprocess the form * * @param JForm $form A form object. * @param mixed $data The data expected for the form. * @param string $group The name of the plugin group to import (defaults to "content"). * * @return void * * @since 1.6 * @throws Exception if there is an error loading the form. */ protected function preprocessForm(JForm $form, $data, $group = '') { parent::preprocessForm($form, $data, 'user'); } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 1.6 */ public function save($data) { if (!isset($data['rules'])) { $data['rules'] = array(); } $data['title'] = JFilterInput::getInstance()->clean($data['title'], 'TRIM'); return parent::save($data); } } PKb��\)�H��&components/com_users/models/groups.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Methods supporting a list of user group records. * * @since 1.6 */ class UsersModelGroups extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'parent_id', 'a.parent_id', 'title', 'a.title', 'lft', 'a.lft', 'rgt', 'a.rgt', ); } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); // Load the parameters. $params = JComponentHelper::getParams('com_users'); $this->setState('params', $params); // List state information. parent::populateState('a.lft', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.search'); return parent::getStoreId($id); } /** * Gets the list of groups and adds expensive joins to the result set. * * @return mixed An array of data items on success, false on failure. * * @since 1.6 */ public function getItems() { $db = $this->getDbo(); // Get a storage key. $store = $this->getStoreId(); // Try to load the data from internal storage. if (empty($this->cache[$store])) { $items = parent::getItems(); // Bail out on an error or empty list. if (empty($items)) { $this->cache[$store] = $items; return $items; } // First pass: get list of the group id's and reset the counts. $groupIds = array(); foreach ($items as $item) { $groupIds[] = (int) $item->id; $item->user_count = 0; } // Get the counts from the database only for the users in the list. $query = $db->getQuery(true); // Count the objects in the user group. $query->select('map.group_id, COUNT(DISTINCT map.user_id) AS user_count') ->from($db->quoteName('#__user_usergroup_map') . ' AS map') ->where('map.group_id IN (' . implode(',', $groupIds) . ')') ->group('map.group_id'); $db->setQuery($query); // Load the counts into an array indexed on the user id field. try { $users = $db->loadObjectList('group_id'); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } // Second pass: collect the group counts into the master items array. foreach ($items as &$item) { if (isset($users[$item->id])) { $item->user_count = $users[$item->id]->user_count; } } // Add the items to the internal cache. $this->cache[$store] = $items; } return $this->cache[$store]; } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.*' ) ); $query->from($db->quoteName('#__usergroups') . ' AS a'); // Add the level in the tree. $query->select('COUNT(DISTINCT c2.id) AS level') ->join('LEFT OUTER', $db->quoteName('#__usergroups') . ' AS c2 ON a.lft > c2.lft AND a.rgt < c2.rgt') ->group('a.id, a.lft, a.rgt, a.parent_id, a.title'); // Filter the comments over the search string if set. $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } else { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('a.title LIKE ' . $search); } } // Add the list ordering clause. $query->order($db->escape($this->getState('list.ordering', 'a.lft')) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } } PKb��\�n%R��$components/com_users/models/mail.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Users mail model. * * @since 1.6 */ class UsersModelMail extends JModelAdmin { /** * Method to get the row form. * * @param array $data An optional array of data for the form to interogate. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return JForm A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_users.mail', 'mail', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_users.display.mail.data', array()); $this->preprocessData('com_users.mail', $data); return $data; } /** * Method to preprocess the form * * @param JForm $form A form object. * @param mixed $data The data expected for the form. * @param string $group The name of the plugin group to import (defaults to "content"). * * @return void * * @since 1.6 * @throws Exception if there is an error loading the form. */ protected function preprocessForm(JForm $form, $data, $group = 'user') { parent::preprocessForm($form, $data, $group); } /** * Send the email * * @return boolean */ public function send() { $app = JFactory::getApplication(); $data = $app->input->post->get('jform', array(), 'array'); $user = JFactory::getUser(); $access = new JAccess; $db = $this->getDbo(); $mode = array_key_exists('mode', $data) ? (int) $data['mode'] : 0; $subject = array_key_exists('subject', $data) ? $data['subject'] : ''; $grp = array_key_exists('group', $data) ? (int) $data['group'] : 0; $recurse = array_key_exists('recurse', $data) ? (int) $data['recurse'] : 0; $bcc = array_key_exists('bcc', $data) ? (int) $data['bcc'] : 0; $disabled = array_key_exists('disabled', $data) ? (int) $data['disabled'] : 0; $message_body = array_key_exists('message', $data) ? $data['message'] : ''; // Automatically removes html formatting if (!$mode) { $message_body = JFilterInput::getInstance()->clean($message_body, 'string'); } // Check for a message body and subject if (!$message_body || !$subject) { $app->setUserState('com_users.display.mail.data', $data); $this->setError(JText::_('COM_USERS_MAIL_PLEASE_FILL_IN_THE_FORM_CORRECTLY')); return false; } // Get users in the group out of the ACL $to = $access->getUsersByGroup($grp, $recurse); // Get all users email and group except for senders $query = $db->getQuery(true) ->select('email') ->from('#__users') ->where('id != ' . (int) $user->get('id')); if ($grp !== 0) { if (empty($to)) { $query->where('0'); } else { $query->where('id IN (' . implode(',', $to) . ')'); } } if ($disabled == 0) { $query->where("block = 0"); } $db->setQuery($query); $rows = $db->loadColumn(); // Check to see if there are any users in this group before we continue if (!count($rows)) { $app->setUserState('com_users.display.mail.data', $data); if (in_array($user->id, $to)) { $this->setError(JText::_('COM_USERS_MAIL_ONLY_YOU_COULD_BE_FOUND_IN_THIS_GROUP')); } else { $this->setError(JText::_('COM_USERS_MAIL_NO_USERS_COULD_BE_FOUND_IN_THIS_GROUP')); } return false; } // Get the Mailer $mailer = JFactory::getMailer(); $params = JComponentHelper::getParams('com_users'); // Build email message format. $mailer->setSender(array($app->get('mailfrom'), $app->get('fromname'))); $mailer->setSubject($params->get('mailSubjectPrefix') . stripslashes($subject)); $mailer->setBody($message_body . $params->get('mailBodySuffix')); $mailer->IsHtml($mode); // Add recipients if ($bcc) { $mailer->addBcc($rows); $mailer->addRecipient($app->get('mailfrom')); } else { $mailer->addRecipient($rows); } // Send the Mail $rs = $mailer->Send(); // Check for an error if ($rs instanceof Exception) { $app->setUserState('com_users.display.mail.data', $data); $this->setError($rs->getError()); return false; } elseif (empty($rs)) { $app->setUserState('com_users.display.mail.data', $data); $this->setError(JText::_('COM_USERS_MAIL_THE_MAIL_COULD_NOT_BE_SENT')); return false; } else { /** * Fill the data (specially for the 'mode', 'group' and 'bcc': they could not exist in the array * when the box is not checked and in this case, the default value would be used instead of the '0' * one) */ $data['mode'] = $mode; $data['subject'] = $subject; $data['group'] = $grp; $data['recurse'] = $recurse; $data['bcc'] = $bcc; $data['message'] = $message_body; $app->setUserState('com_users.display.mail.data', array()); $app->enqueueMessage(JText::plural('COM_USERS_MAIL_EMAIL_SENT_TO_N_USERS', count($rows)), 'message'); return true; } } } PKb��\�~8Y*components/com_users/models/debuggroup.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require_once JPATH_COMPONENT . '/helpers/debug.php'; /** * Methods supporting a list of user records. * * @since 1.6 */ class UsersModelDebuggroup extends JModelList { /** * Get a list of the actions. * * @return array * * @since 1.6 */ public function getDebugActions() { $component = $this->getState('filter.component'); return UsersHelperDebug::getDebugActions($component); } /** * Override getItems method. * * @return array * * @since 1.6 */ public function getItems() { $groupId = $this->getState('filter.group_id'); if (($assets = parent::getItems()) && $groupId) { $actions = $this->getDebugActions(); foreach ($assets as &$asset) { $asset->checks = array(); foreach ($actions as $action) { $name = $action[0]; $level = $action[1]; // Check that we check this action for the level of the asset. if ($level === null || $level >= $asset->level) { // We need to test this action. $asset->checks[$name] = JAccess::checkGroup($groupId, $name, $asset->name); } else { // We ignore this action. $asset->checks[$name] = 'skip'; } } } } return $assets; } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication('administrator'); // Adjust the context to support modal layouts. $layout = $app->input->get('layout', 'default'); if ($layout) { $this->context .= '.' . $layout; } // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $value = $this->getUserStateFromRequest($this->context . '.filter.group_id', 'group_id', 0, 'int', false); $this->setState('filter.group_id', $value); $levelStart = $this->getUserStateFromRequest($this->context . '.filter.level_start', 'filter_level_start', 0, 'int'); $this->setState('filter.level_start', $levelStart); $value = $this->getUserStateFromRequest($this->context . '.filter.level_end', 'filter_level_end', 0, 'int'); if ($value > 0 && $value < $levelStart) { $value = $levelStart; } $this->setState('filter.level_end', $value); $component = $this->getUserStateFromRequest($this->context . '.filter.component', 'filter_component'); $this->setState('filter.component', $component); // Load the parameters. $params = JComponentHelper::getParams('com_users'); $this->setState('params', $params); // List state information. parent::populateState('a.lft', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.level_start'); $id .= ':' . $this->getState('filter.level_end'); $id .= ':' . $this->getState('filter.component'); return parent::getStoreId($id); } /** * Get the group being debugged. * * @return JObject * * @since 1.6 */ public function getGroup() { $groupId = (int) $this->getState('filter.group_id'); $db = $this->getDbo(); $query = $db->getQuery(true) ->select('id, title') ->from('#__usergroups') ->where('id = ' . $groupId); $db->setQuery($query); try { $group = $db->loadObject(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } return $group; } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery * * @since 1.6 */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.id, a.name, a.title, a.level, a.lft, a.rgt' ) ); $query->from($db->quoteName('#__assets') . ' AS a'); // Filter the items over the search string if set. if ($this->getState('filter.search')) { // Escape the search token. $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($this->getState('filter.search')), true) . '%')); // Compile the different search clauses. $searches = array(); $searches[] = 'a.name LIKE ' . $search; $searches[] = 'a.title LIKE ' . $search; // Add the clauses to the query. $query->where('(' . implode(' OR ', $searches) . ')'); } // Filter on the start and end levels. $levelStart = (int) $this->getState('filter.level_start'); $levelEnd = (int) $this->getState('filter.level_end'); if ($levelEnd > 0 && $levelEnd < $levelStart) { $levelEnd = $levelStart; } if ($levelStart > 0) { $query->where('a.level >= ' . $levelStart); } if ($levelEnd > 0) { $query->where('a.level <= ' . $levelEnd); } // Filter the items over the component if set. if ($this->getState('filter.component')) { $component = $this->getState('filter.component'); $query->where('(a.name = ' . $db->quote($component) . ' OR a.name LIKE ' . $db->quote($component . '.%') . ')'); } // Add the list ordering clause. $query->order($db->escape($this->getState('list.ordering', 'a.lft')) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } } PKb��\p#�!�!%components/com_users/models/group.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * User group model. * * @since 1.6 */ class UsersModelGroup extends JModelAdmin { /** * Constructor * * @param array $config An optional associative array of configuration settings. */ public function __construct($config = array()) { $config = array_merge( array( 'event_after_delete' => 'onUserAfterDeleteGroup', 'event_after_save' => 'onUserAfterSaveGroup', 'event_before_delete' => 'onUserBeforeDeleteGroup', 'event_before_save' => 'onUserBeforeSaveGroup', 'events_map' => array('delete' => 'user', 'save' => 'user') ), $config ); parent::__construct($config); } /** * Returns a reference to the a Table object, always creating it. * * @param string $type The table type to instantiate * @param string $prefix A prefix for the table class name. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A database object * * @since 1.6 */ public function getTable($type = 'Usergroup', $prefix = 'JTable', $config = array()) { $return = JTable::getInstance($type, $prefix, $config); return $return; } /** * Method to get the record form. * * @param array $data An optional array of data for the form to interogate. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return JForm A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_users.group', 'group', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_users.edit.group.data', array()); if (empty($data)) { $data = $this->getItem(); } $this->preprocessData('com_users.group', $data); return $data; } /** * Override preprocessForm to load the user plugin group instead of content. * * @param JForm $form A form object. * @param mixed $data The data expected for the form. * @param string $group The name of the plugin group to import (defaults to "content"). * * @return void * * @since 1.6 * @throws Exception if there is an error loading the form. */ protected function preprocessForm(JForm $form, $data, $group = '') { $obj = is_array($data) ? JArrayHelper::toObject($data, 'JObject') : $data; if (isset($obj->parent_id) && $obj->parent_id == 0 && $obj->id > 0) { $form->setFieldAttribute('parent_id', 'type', 'hidden'); $form->setFieldAttribute('parent_id', 'hidden', 'true'); } parent::preprocessForm($form, $data, 'user'); } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 1.6 */ public function save($data) { // Include the content plugins for events. JPluginHelper::importPlugin($this->events_map['save']); /** * Check the super admin permissions for group * We get the parent group permissions and then check the group permissions manually * We have to calculate the group permissions manually because we haven't saved the group yet */ $parentSuperAdmin = JAccess::checkGroup($data['parent_id'], 'core.admin'); // Get core.admin rules from the root asset $rules = JAccess::getAssetRules('root.1')->getData('core.admin'); // Get the value for the current group (will be true (allowed), false (denied), or null (inherit) $groupSuperAdmin = $rules['core.admin']->allow($data['id']); // We only need to change the $groupSuperAdmin if the parent is true or false. Otherwise, the value set in the rule takes effect. if ($parentSuperAdmin === false) { // If parent is false (Denied), effective value will always be false $groupSuperAdmin = false; } elseif ($parentSuperAdmin === true) { // If parent is true (allowed), group is true unless explicitly set to false $groupSuperAdmin = ($groupSuperAdmin === false) ? false : true; } // Check for non-super admin trying to save with super admin group $iAmSuperAdmin = JFactory::getUser()->authorise('core.admin'); if ((!$iAmSuperAdmin) && ($groupSuperAdmin)) { $this->setError(JText::_('JLIB_USER_ERROR_NOT_SUPERADMIN')); return false; } /** * Check for super-admin changing self to be non-super-admin * First, are we a super admin */ if ($iAmSuperAdmin) { // Next, are we a member of the current group? $myGroups = JAccess::getGroupsByUser(JFactory::getUser()->get('id'), false); if (in_array($data['id'], $myGroups)) { // Now, would we have super admin permissions without the current group? $otherGroups = array_diff($myGroups, array($data['id'])); $otherSuperAdmin = false; foreach ($otherGroups as $otherGroup) { $otherSuperAdmin = ($otherSuperAdmin) ? $otherSuperAdmin : JAccess::checkGroup($otherGroup, 'core.admin'); } /** * If we would not otherwise have super admin permissions * and the current group does not have super admin permissions, throw an exception */ if ((!$otherSuperAdmin) && (!$groupSuperAdmin)) { $this->setError(JText::_('JLIB_USER_ERROR_CANNOT_DEMOTE_SELF')); return false; } } } if (JFactory::getApplication()->input->get('task') == 'save2copy') { $data['title'] = $this->generateGroupTitle($data['parent_id'], $data['title']); } // Proceed with the save return parent::save($data); } /** * Method to delete rows. * * @param array &$pks An array of item ids. * * @return boolean Returns true on success, false on failure. * * @since 1.6 * @throws Exception */ public function delete(&$pks) { // Typecast variable. $pks = (array) $pks; $user = JFactory::getUser(); $groups = JAccess::getGroupsByUser($user->get('id')); // Get a row instance. $table = $this->getTable(); // Load plugins. JPluginHelper::importPlugin($this->events_map['delete']); $dispatcher = JEventDispatcher::getInstance(); // Check if I am a Super Admin $iAmSuperAdmin = $user->authorise('core.admin'); // Do not allow to delete groups to which the current user belongs foreach ($pks as $pk) { if (in_array($pk, $groups)) { JError::raiseWarning(403, JText::_('COM_USERS_DELETE_ERROR_INVALID_GROUP')); return false; } } // Iterate the items to delete each one. foreach ($pks as $i => $pk) { if ($table->load($pk)) { // Access checks. $allow = $user->authorise('core.edit.state', 'com_users'); // Don't allow non-super-admin to delete a super admin $allow = (!$iAmSuperAdmin && JAccess::checkGroup($pk, 'core.admin')) ? false : $allow; if ($allow) { // Fire the before delete event. $dispatcher->trigger($this->event_before_delete, array($table->getProperties())); if (!$table->delete($pk)) { $this->setError($table->getError()); return false; } else { // Trigger the after delete event. $dispatcher->trigger($this->event_after_delete, array($table->getProperties(), true, $this->getError())); } } else { // Prune items that you can't change. unset($pks[$i]); JError::raiseWarning(403, JText::_('JERROR_CORE_DELETE_NOT_PERMITTED')); } } else { $this->setError($table->getError()); return false; } } return true; } /** * Method to generate the title of group on Save as Copy action * * @param integer $parentId The id of the parent. * @param string $title The title of group * * @return string Contains the modified title. * * @since 3.3.7 */ protected function generateGroupTitle($parentId, $title) { // Alter the title & alias $table = $this->getTable(); while ($table->load(array('title' => $title, 'parent_id' => $parentId))) { if ($title == $table->title) { $title = JString::increment($title); } } return $title; } } PKb��\������&components/com_users/models/levels.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Methods supporting a list of user access level records. * * @since 1.6 */ class UsersModelLevels extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'title', 'a.title', 'ordering', 'a.ordering', ); } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); // Load the parameters. $params = JComponentHelper::getParams('com_users'); $this->setState('params', $params); // List state information. parent::populateState('a.ordering', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); return parent::getStoreId($id); } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.*' ) ); $query->from($db->quoteName('#__viewlevels') . ' AS a'); // Add the level in the tree. $query->group('a.id, a.title, a.ordering, a.rules'); // Filter the items over the search string if set. $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } else { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('a.title LIKE ' . $search); } } $query->group('a.id'); // Add the list ordering clause. $query->order($db->escape($this->getState('list.ordering', 'a.lft')) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } /** * Method to adjust the ordering of a row. * * @param integer $pk The ID of the primary key to move. * @param integer $direction Increment, usually +1 or -1 * * @return boolean False on failure or error, true otherwise. */ public function reorder($pk, $direction = 0) { // Sanitize the id and adjustment. $pk = (!empty($pk)) ? $pk : (int) $this->getState('level.id'); $user = JFactory::getUser(); // Get an instance of the record's table. $table = JTable::getInstance('viewlevel'); // Load the row. if (!$table->load($pk)) { $this->setError($table->getError()); return false; } // Access checks. $allow = $user->authorise('core.edit.state', 'com_users'); if (!$allow) { $this->setError(JText::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED')); return false; } // Move the row. // TODO: Where clause to restrict category. $table->move($pk); return true; } /** * Saves the manually set order of records. * * @param array $pks An array of primary key ids. * @param integer $order Order position * * @return boolean */ public function saveorder($pks, $order) { $table = JTable::getInstance('viewlevel'); $user = JFactory::getUser(); $conditions = array(); if (empty($pks)) { return JError::raiseWarning(500, JText::_('COM_USERS_ERROR_LEVELS_NOLEVELS_SELECTED')); } // Update ordering values foreach ($pks as $i => $pk) { $table->load((int) $pk); // Access checks. $allow = $user->authorise('core.edit.state', 'com_users'); if (!$allow) { // Prune items that you can't change. unset($pks[$i]); JError::raiseWarning(403, JText::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED')); } elseif ($table->ordering != $order[$i]) { $table->ordering = $order[$i]; if (!$table->store()) { $this->setError($table->getError()); return false; } } } // Execute reorder for each category. foreach ($conditions as $cond) { $table->load($cond[0]); $table->reorder($cond[1]); } return true; } } PKb��\�!����)components/com_users/models/debuguser.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require_once JPATH_COMPONENT . '/helpers/debug.php'; /** * Methods supporting a list of user records. * * @since 1.6 */ class UsersModelDebugUser extends JModelList { /** * Get a list of the actions. * * @return array * * @since 1.6 */ public function getDebugActions() { $component = $this->getState('filter.component'); return UsersHelperDebug::getDebugActions($component); } /** * Override getItems method. * * @return array * * @since 1.6 */ public function getItems() { $userId = $this->getState('filter.user_id'); if (($assets = parent::getItems()) && $userId) { $actions = $this->getDebugActions(); foreach ($assets as &$asset) { $asset->checks = array(); foreach ($actions as $action) { $name = $action[0]; $level = $action[1]; // Check that we check this action for the level of the asset. if ($level === null || $level >= $asset->level) { // We need to test this action. $asset->checks[$name] = JAccess::check($userId, $name, $asset->name); } else { // We ignore this action. $asset->checks[$name] = 'skip'; } } } } return $assets; } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication('administrator'); // Adjust the context to support modal layouts. $layout = $app->input->get('layout', 'default'); if ($layout) { $this->context .= '.' . $layout; } // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $value = $this->getUserStateFromRequest($this->context . '.filter.user_id', 'user_id', 0, 'int'); $this->setState('filter.user_id', $value); $levelStart = $this->getUserStateFromRequest($this->context . '.filter.level_start', 'filter_level_start', 0, 'int'); $this->setState('filter.level_start', $levelStart); $value = $this->getUserStateFromRequest($this->context . '.filter.level_end', 'filter_level_end', 0, 'int'); if ($value > 0 && $value < $levelStart) { $value = $levelStart; } $this->setState('filter.level_end', $value); $component = $this->getUserStateFromRequest($this->context . '.filter.component', 'filter_component'); $this->setState('filter.component', $component); // Load the parameters. $params = JComponentHelper::getParams('com_users'); $this->setState('params', $params); // List state information. parent::populateState('a.lft', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.user_id'); $id .= ':' . $this->getState('filter.level_start'); $id .= ':' . $this->getState('filter.level_end'); $id .= ':' . $this->getState('filter.component'); return parent::getStoreId($id); } /** * Get the user being debugged. * * @return JUser * * @since 1.6 */ public function getUser() { $userId = $this->getState('filter.user_id'); return JFactory::getUser($userId); } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery * * @since 1.6 */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.id, a.name, a.title, a.level, a.lft, a.rgt' ) ); $query->from($db->quoteName('#__assets') . ' AS a'); // Filter the items over the group id if set. if ($groupId = $this->getState('filter.group_id')) { $query->join('LEFT', '#__user_usergroup_map AS map2 ON map2.user_id = a.id') ->where('map2.group_id = ' . (int) $groupId); } // Filter the items over the search string if set. if ($this->getState('filter.search')) { // Escape the search token. $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($this->getState('filter.search')), true) . '%')); // Compile the different search clauses. $searches = array(); $searches[] = 'a.name LIKE ' . $search; $searches[] = 'a.title LIKE ' . $search; // Add the clauses to the query. $query->where('(' . implode(' OR ', $searches) . ')'); } // Filter on the start and end levels. $levelStart = (int) $this->getState('filter.level_start'); $levelEnd = (int) $this->getState('filter.level_end'); if ($levelEnd > 0 && $levelEnd < $levelStart) { $levelEnd = $levelStart; } if ($levelStart > 0) { $query->where('a.level >= ' . $levelStart); } if ($levelEnd > 0) { $query->where('a.level <= ' . $levelEnd); } // Filter the items over the component if set. if ($this->getState('filter.component')) { $component = $this->getState('filter.component'); $query->where('(a.name = ' . $db->quote($component) . ' OR a.name LIKE ' . $db->quote($component . '.%') . ')'); } // Add the list ordering clause. $query->order($db->escape($this->getState('list.ordering', 'a.lft')) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } } PKb��\ۯ�v $components/com_users/models/note.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * User note model. * * @since 2.5 */ class UsersModelNote extends JModelAdmin { /** * The type alias for this content type. * * @var string * @since 3.2 */ public $typeAlias = 'com_users.note'; /** * Method to get the record form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return mixed A JForm object on success, false on failure * * @since 2.5 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_users.note', 'note', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } return $form; } /** * Method to get a single record. * * @param integer $pk The id of the primary key. * * @return mixed Object on success, false on failure. * * @since 2.5 */ public function getItem($pk = null) { $result = parent::getItem($pk); // Get the dispatcher and load the content plugins. $dispatcher = JEventDispatcher::getInstance(); JPluginHelper::importPlugin('content'); // Load the user plugins for backward compatibility (v3.3.3 and earlier). JPluginHelper::importPlugin('user'); // Trigger the data preparation event. $dispatcher->trigger('onContentPrepareData', array('com_users.note', $result)); return $result; } /** * Method to get a table object, load it if necessary. * * @param string $name The table name. Optional. * @param string $prefix The class prefix. Optional. * @param array $options Configuration array for model. Optional. * * @return JTable The table object * * @since 2.5 */ public function getTable($name = 'Note', $prefix = 'UsersTable', $options = array()) { return JTable::getInstance($name, $prefix, $options); } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Get the application $app = JFactory::getApplication(); // Check the session for previously entered form data. $data = $app->getUserState('com_users.edit.note.data', array()); if (empty($data)) { $data = $this->getItem(); // Prime some default values. if ($this->getState('note.id') == 0) { $data->set('catid', $app->input->get('catid', $app->getUserState('com_users.notes.filter.category_id'), 'int')); } $userId = $app->input->get('u_id', 0, 'int'); if ($userId != 0) { $data->user_id = $userId; } } $this->preprocessData('com_users.note', $data); return $data; } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @return void * * @since 2.5 */ protected function populateState() { parent::populateState(); $userId = JFactory::getApplication()->input->get('u_id', 0, 'int'); $this->setState('note.user_id', $userId); } } PKb��\jZC�FF%components/com_users/models/notes.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * User notes model class. * * @since 2.5 */ class UsersModelNotes extends JModelList { /** * Class constructor. * * @param array $config An optional associative array of configuration settings. * * @since 2.5 */ public function __construct($config = array()) { // Set the list ordering fields. if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'user_id', 'a.user_id', 'u.name', 'subject', 'a.subject', 'catid', 'a.catid', 'state', 'a.state', 'c.title', 'review_time', 'a.review_time', 'publish_up', 'a.publish_up', 'publish_down', 'a.publish_down', ); } parent::__construct($config); } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery A JDatabaseQuery object to retrieve the data set. * * @since 2.5 */ protected function getListQuery() { $db = $this->getDbo(); $query = $db->getQuery(true); $section = $this->getState('filter.category_id'); // Select the required fields from the table. $query->select( $this->getState('list.select', 'a.id, a.subject, a.checked_out, a.checked_out_time,' . 'a.catid, a.created_time, a.review_time,' . 'a.state, a.publish_up, a.publish_down' ) ); $query->from('#__user_notes AS a'); // Join over the category $query->select('c.title AS category_title, c.params AS category_params') ->join('LEFT', '#__categories AS c ON c.id = a.catid'); // Join over the users for the note user. $query->select('u.name AS user_name') ->join('LEFT', '#__users AS u ON u.id = a.user_id'); // Join over the users for the checked out user. $query->select('uc.name AS editor') ->join('LEFT', '#__users AS uc ON uc.id = a.checked_out'); // Filter by search in title $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } elseif (stripos($search, 'uid:') === 0) { $query->where('a.user_id = ' . (int) substr($search, 4)); } else { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('((a.subject LIKE ' . $search . ') OR (u.name LIKE ' . $search . ') OR (u.username LIKE ' . $search . '))'); } } // Filter by published state $published = $this->getState('filter.state'); if (is_numeric($published)) { $query->where('a.state = ' . (int) $published); } elseif ($published === '') { $query->where('(a.state IN (0, 1))'); } // Filter by a single or group of categories. $categoryId = (int) $this->getState('filter.category_id'); if ($categoryId) { if (is_scalar($section)) { $query->where('a.catid = ' . $categoryId); } } // Filter by a single user. $userId = (int) $this->getState('filter.user_id'); if ($userId) { // Add the body and where filter. $query->select('a.body') ->where('a.user_id = ' . $userId); } // Add the list ordering clause. $orderCol = $this->state->get('list.ordering'); $orderDirn = $this->state->get('list.direction'); $query->order($db->escape($orderCol . ' ' . $orderDirn)); return $query; } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. * * @since 2.5 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.state'); $id .= ':' . $this->getState('filter.category_id'); return parent::getStoreId($id); } /** * Gets a user object if the user filter is set. * * @return JUser The JUser object * * @since 2.5 */ public function getUser() { $user = new JUser; // Filter by search in title $search = JFactory::getApplication()->input->get('u_id', 0, 'int'); if ($search != 0) { $user->load((int) $search); } return $user; } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication(); $input = $app->input; // Adjust the context to support modal layouts. if ($layout = $input->get('layout')) { $this->context .= '.' . $layout; } $value = $app->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $value); $published = $this->getUserStateFromRequest($this->context . '.filter.state', 'filter_published', '', 'string'); $this->setState('filter.state', $published); $section = $app->getUserStateFromRequest($this->context . '.filter.category_id', 'filter_category_id'); $this->setState('filter.category_id', $section); $userId = $input->get('u_id', 0, 'int'); $this->setState('filter.user_id', $userId); parent::populateState('a.review_time', 'DESC'); } } PKb��\�����#components/com_users/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Users master display controller. * * @since 1.6 */ class UsersController extends JControllerLegacy { /** * Checks whether a user can see this view. * * @param string $view The view name. * * @return boolean * * @since 1.6 */ protected function canView($view) { $canDo = JHelperContent::getActions('com_users'); switch ($view) { // Special permissions. case 'groups': case 'group': case 'levels': case 'level': return $canDo->get('core.admin'); break; // Default permissions. default: return true; } } /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { $view = $this->input->get('view', 'users'); $layout = $this->input->get('layout', 'default'); $id = $this->input->getInt('id'); if (!$this->canView($view)) { JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); return; } // Check for edit form. if ($view == 'user' && $layout == 'edit' && !$this->checkEditId('com_users.edit.user', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_users&view=users', false)); return false; } elseif ($view == 'group' && $layout == 'edit' && !$this->checkEditId('com_users.edit.group', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_users&view=groups', false)); return false; } elseif ($view == 'level' && $layout == 'edit' && !$this->checkEditId('com_users.edit.level', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_users&view=levels', false)); return false; } elseif ($view == 'note' && $layout == 'edit' && !$this->checkEditId('com_users.edit.note', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_users&view=notes', false)); return false; } return parent::display(); } } PKb��\��NNcomponents/com_ajax/ajax.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_ajax * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require_once JPATH_SITE . '/components/com_ajax/ajax.php'; PKb��\4����components/com_ajax/ajax.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.2" method="upgrade"> <name>com_ajax</name> <author>Joomla! Project</author> <creationDate>August 2013</creationDate> <copyright>(C) 2005 - 2015 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.2.0</version> <description>COM_AJAX_XML_DESCRIPTION</description> <files folder="site"> <filename>ajax.php</filename> </files> <languages folder="site"> <language tag="en-GB">language/en-GB.com_ajax.ini</language> </languages> <administration> <files folder="admin"> <filename>ajax.php</filename> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_ajax.ini</language> <language tag="en-GB">language/en-GB.com_ajax.sys.ini</language> </languages> </administration> </extension> PKb��\C�5HH!components/com_checkin/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_checkin" section="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> </field> </fieldset> </config> PKb��\[Y�;;"components/com_checkin/checkin.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_checkin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; if (!JFactory::getUser()->authorise('core.manage', 'com_checkin')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $controller = JControllerLegacy::getInstance('Checkin'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\_RLk��5components/com_checkin/views/checkin/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_checkin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('bootstrap.tooltip'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_checkin'); ?>" method="post" name="adminForm" id="adminForm"> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_CHECKIN_FILTER_SEARCH_DESC'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"> <span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"> <span class="icon-remove"></span></button> </div> </div> <div class="clearfix"></div> <table id="global-checkin" class="table table-striped"> <thead> <tr> <th width="1%"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th><?php echo JHtml::_('grid.sort', 'COM_CHECKIN_DATABASE_TABLE', 'table', $listDirn, $listOrder); ?></th> <th><?php echo JHtml::_('grid.sort', 'COM_CHECKIN_ITEMS_TO_CHECK_IN', 'count', $listDirn, $listOrder); ?></th> </tr> </thead> <tbody> <?php $i = 0; ?> <?php foreach ($this->items as $table => $count): ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"><?php echo JHtml::_('grid.id', $i, $table); ?></td> <td> <label for="cb<?php echo $i ?>"> <?php echo JText::sprintf('COM_CHECKIN_TABLE', $table); ?> </label> </td> <td><span class="label label-info"><?php echo $count; ?></span></td> </tr> <?php $i++; ?> <?php endforeach; ?> </tbody> <tfoot> <tr> <td colspan="15"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> </table> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\C[s�gg2components/com_checkin/views/checkin/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_checkin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * HTML View class for the Checkin component * * @since 1.0 */ class CheckinViewCheckin extends JViewLegacy { protected $tables; /** * 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) { $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JToolbarHelper::title(JText::_('COM_CHECKIN_GLOBAL_CHECK_IN'), 'checkin'); if (JFactory::getUser()->authorise('core.admin', 'com_checkin')) { JToolbarHelper::custom('checkin', 'checkin.png', 'checkin_f2.png', 'JTOOLBAR_CHECKIN', true); JToolbarHelper::divider(); JToolbarHelper::preferences('com_checkin'); JToolbarHelper::divider(); } JToolbarHelper::help('JHELP_SITE_MAINTENANCE_GLOBAL_CHECK-IN'); } } PKb��\u�^��"components/com_checkin/checkin.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_checkin</name> <author>Joomla! Project</author> <copyright>(C) 2005 - 2015 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>COM_CHECKIN_XML_DESCRIPTION</description> <administration> <files folder="admin"> <filename>checkin.php</filename> <filename>config.xml</filename> <filename>controller.php</filename> <folder>models</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_checkin.ini</language> <language tag="en-GB">language/en-GB.com_checkin.sys.ini</language> </languages> </administration> </extension> PKb��\��l��)components/com_checkin/models/checkin.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_checkin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Checkin Model * * @since 1.6 */ class CheckinModelCheckin extends JModelList { protected $total; protected $tables; /** * Method to auto-populate the model state. * * Note: Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); // List state information. parent::populateState('table', 'asc'); } /** * Checks in requested tables * * @param array $ids An array of table names. Optional. * * @return integer Checked in item count * * @since 1.6 */ public function checkin($ids = array()) { $app = JFactory::getApplication(); $db = $this->_db; $nullDate = $db->getNullDate(); if (!is_array($ids)) { return; } // This int will hold the checked item count. $results = 0; foreach ($ids as $tn) { // Make sure we get the right tables based on prefix. if (stripos($tn, $app->get('dbprefix')) !== 0) { continue; } $fields = $db->getTableColumns($tn); if (!(isset($fields['checked_out']) && isset($fields['checked_out_time']))) { continue; } $query = $db->getQuery(true) ->update($db->quoteName($tn)) ->set('checked_out = 0') ->set('checked_out_time = ' . $db->quote($nullDate)) ->where('checked_out > 0'); $db->setQuery($query); if ($db->execute()) { $results = $results + $db->getAffectedRows(); } } return $results; } /** * Get total of tables * * @return int Total to check-in tables * * @since 1.6 */ public function getTotal() { if (!isset($this->total)) { $this->getItems(); } return $this->total; } /** * Get tables * * @return array Checked in table names as keys and checked in item count as values. * * @since 1.6 */ public function getItems() { if (!isset($this->items)) { $app = JFactory::getApplication(); $db = $this->_db; $tables = $db->getTableList(); // This array will hold table name as key and checked in item count as value. $results = array(); foreach ($tables as $i => $tn) { // Make sure we get the right tables based on prefix. if (stripos($tn, $app->get('dbprefix')) !== 0) { unset($tables[$i]); continue; } if ($this->getState('filter.search') && stripos($tn, $this->getState('filter.search')) === false) { unset($tables[$i]); continue; } $fields = $db->getTableColumns($tn); if (!(isset($fields['checked_out']) && isset($fields['checked_out_time']))) { unset($tables[$i]); continue; } } foreach ($tables as $tn) { $query = $db->getQuery(true) ->select('COUNT(*)') ->from($db->quoteName($tn)) ->where('checked_out > 0'); $db->setQuery($query); if ($db->execute()) { $results[$tn] = $db->loadResult(); } else { continue; } } $this->total = count($results); if ($this->getState('list.ordering') == 'table') { if ($this->getState('list.direction') == 'asc') { ksort($results); } else { krsort($results); } } else { if ($this->getState('list.direction') == 'asc') { asort($results); } else { arsort($results); } } $results = array_slice($results, $this->getState('list.start'), $this->getState('list.limit') ? $this->getState('list.limit') : null); $this->items = $results; } return $this->items; } } PKb��\C��XX%components/com_checkin/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_checkin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Checkin Controller * * @since 1.6 */ class CheckinController extends JControllerLegacy { /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JControllerLegacy A JControllerLegacy object to support chaining. */ public function display($cachable = false, $urlparams = false) { // Load the submenu. $this->addSubmenu($this->input->getWord('option', 'com_checkin')); parent::display(); return $this; } /** * Check in a list of items. * * @return void */ public function checkin() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JInvalid_Token')); $ids = $this->input->get('cid', array(), 'array'); if (empty($ids)) { JError::raiseWarning(500, JText::_('JLIB_HTML_PLEASE_MAKE_A_SELECTION_FROM_THE_LIST')); } else { // Get the model. $model = $this->getModel(); // Checked in the items. $this->setMessage(JText::plural('COM_CHECKIN_N_ITEMS_CHECKED_IN', $model->checkin($ids))); } $this->setRedirect('index.php?option=com_checkin'); } /** * Configure the Linkbar. * * @param string $vName The name of the active view. * * @return void * * @since 1.6 */ protected function addSubmenu($vName) { JHtmlSidebar::addEntry( JText::_('JGLOBAL_SUBMENU_CHECKIN'), 'index.php?option=com_checkin', $vName == 'com_checkin' ); JHtmlSidebar::addEntry( JText::_('JGLOBAL_SUBMENU_CLEAR_CACHE'), 'index.php?option=com_cache', $vName == 'cache' ); JHtmlSidebar::addEntry( JText::_('JGLOBAL_SUBMENU_PURGE_EXPIRED_CACHE'), 'index.php?option=com_cache&view=purge', $vName == 'purge' ); } } PKb��\n Yݱ�,components/com_admin/controllers/profile.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * User profile controller class. * * @since 1.6 */ class AdminControllerProfile extends JControllerForm { /** * Method to check if you can edit a record. * * Extended classes can override this if necessary. * * @param array $data An array of input data. * @param string $key The name of the key for the primary key. * * @return boolean * * @since 1.6 */ protected function allowEdit($data = array(), $key = 'id') { return isset($data['id']) && $data['id'] == JFactory::getUser()->id; } /** * Overrides parent save method to check the submitted passwords match. * * @param string $key The name of the primary key of the URL variable. * @param string $urlVar The name of the URL variable if different from the primary key (sometimes required to avoid router collisions). * * @return boolean True if successful, false otherwise. * * @since 3.2 */ public function save($key = null, $urlVar = null) { $this->setRedirect(JRoute::_('index.php?option=com_admin&view=profile&layout=edit&id=' . JFactory::getUser()->id, false)); $return = parent::save(); if ($this->getTask() != 'apply') { // Redirect to the main page. $this->setRedirect(JRoute::_('index.php', false)); } return $return; } /** * Method to cancel an edit. * * @param string $key The name of the primary key of the URL variable. * * @return Boolean True if access level checks pass, false otherwise. * * @since 1.6 */ public function cancel($key = null) { $return = parent::cancel($key); // Redirect to the main page. $this->setRedirect(JRoute::_('index.php', false)); return $return; } } PKb��\�-g�� � 1components/com_admin/postinstall/eaccelerator.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * * This file contains post-installation message handling for eAccelerator compatibility. */ defined('_JEXEC') or die; use Joomla\Registry\Registry; /** * Checks if the eAccelerator caching method is enabled. This check should be * done through the 3.x series as the issue impacts migrated sites which will * most often come from the previous LTS release (2.5). Remove for version 4 or * when eAccelerator support is added. * * This check returns true when the eAccelerator caching method is user, meaning * that the message concerning it should be displayed. * * @return integer * * @since 3.2 */ function admin_postinstall_eaccelerator_condition() { $app = JFactory::getApplication(); $cacheHandler = $app->get('cacheHandler', ''); return (ucfirst($cacheHandler) == 'Eaccelerator'); } /** * Disables the unsupported eAccelerator caching method, replacing it with the * "file" caching method. * * @return void * * @since 3.2 */ function admin_postinstall_eaccelerator_action() { $prev = new JConfig; $prev = JArrayHelper::fromObject($prev); $data = array('cacheHandler' => 'file'); $data = array_merge($prev, $data); $config = new Registry('config'); $config->loadArray($data); jimport('joomla.filesystem.path'); jimport('joomla.filesystem.file'); // Set the configuration file path. $file = JPATH_CONFIGURATION . '/configuration.php'; // Get the new FTP credentials. $ftp = JClientHelper::getCredentials('ftp', true); // Attempt to make the file writeable if using FTP. if (!$ftp['enabled'] && JPath::isOwner($file) && !JPath::setPermissions($file, '0644')) { JError::raiseNotice('SOME_ERROR_CODE', JText::_('COM_CONFIG_ERROR_CONFIGURATION_PHP_NOTWRITABLE')); } // Attempt to write the configuration file as a PHP class named JConfig. $configuration = $config->toString('PHP', array('class' => 'JConfig', 'closingtag' => false)); if (!JFile::write($file, $configuration)) { JFactory::getApplication()->enqueueMessage(JText::_('COM_CONFIG_ERROR_WRITE_FAILED'), 'error'); return; } // Attempt to make the file unwriteable if using FTP. if (!$ftp['enabled'] && JPath::isOwner($file) && !JPath::setPermissions($file, '0444')) { JError::raiseNotice('SOME_ERROR_CODE', JText::_('COM_CONFIG_ERROR_CONFIGURATION_PHP_NOTUNWRITABLE')); } } PKb��\����-components/com_admin/postinstall/htaccess.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * * This file contains post-installation message handling for notifying users of a change * in the default .htaccess and web.config files. */ defined('_JEXEC') or die; /** * Notifies users of a change in the default .htaccess or web.config file * * This check returns true regardless of condition. * * @return boolean * * @since 3.4 */ function admin_postinstall_htaccess_condition() { return true; } PKb��\�<U�MM/components/com_admin/postinstall/phpversion.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * * This file contains post-installation message handling for the checking minimum PHP version support */ defined('_JEXEC') or die; /** * Checks if the PHP version is less than 5.3.10. * * @return integer * * @since 3.2 */ function admin_postinstall_phpversion_condition() { return version_compare(PHP_VERSION, '5.3.10', 'lt'); } PKb��\�-�|��6components/com_admin/postinstall/languageaccess340.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * * This file contains post-installation message handling for the checks if the installation is * affected by the issue with content languages access in 3.4.0 */ defined('_JEXEC') or die; /** * Checks if the installation is affected by the issue with content languages access in 3.4.0 * * @see https://github.com/joomla/joomla-cms/pull/6172 * @see https://github.com/joomla/joomla-cms/pull/6194 * * @return bool * * @since 3.4.1 */ function admin_postinstall_languageaccess340_condition() { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select($db->quoteName('access')) ->from($db->quoteName('#__languages')) ->where($db->quoteName('access') . " = " . $db->quote('0')); $db->setQuery($query); $db->execute(); $numRows = $db->getNumRows(); if (isset($numRows) && $numRows != 0) { // We have rows here so we have at minumum // one row with access set to 0 return true; } // All good the query return nothing. return false; } PKb��\�)�L��components/com_admin/admin.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_admin</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_ADMIN_XML_DESCRIPTION</description> <media /> <administration> <files folder="admin"> <filename>admin.php</filename> <filename>controller.php</filename> <folder>helpers</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_admin.ini</language> <language tag="en-GB">language/en-GB.com_admin.sys.ini</language> </languages> </administration> </extension> PKb��\���1�1components/com_admin/script.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Script file of Joomla CMS * * @since 1.6.4 */ class JoomlaInstallerScript { /** * Method to update Joomla! * * @param JInstallerFile $installer The class calling this method * * @return void */ public function update($installer) { $options['format'] = '{DATE}\t{TIME}\t{LEVEL}\t{CODE}\t{MESSAGE}'; $options['text_file'] = 'joomla_update.php'; JLog::addLogger($options, JLog::INFO, array('Update', 'databasequery', 'jerror')); JLog::add(JText::_('COM_JOOMLAUPDATE_UPDATE_LOG_DELETE_FILES'), JLog::INFO, 'Update'); $this->deleteUnexistingFiles(); $this->updateManifestCaches(); $this->updateDatabase(); $this->clearRadCache(); $this->updateAssets(); // VERY IMPORTANT! THIS METHOD SHOULD BE CALLED LAST, SINCE IT COULD // LOGOUT ALL THE USERS $this->flushSessions(); } /** * Method to update Database * * @return void */ protected function updateDatabase() { $db = JFactory::getDbo(); if (strpos($db->name, 'mysql') !== false) { $this->updateDatabaseMysql(); } $this->uninstallEosPlugin(); } /** * Method to update MySQL Database * * @return void */ protected function updateDatabaseMysql() { $db = JFactory::getDbo(); $db->setQuery('SHOW ENGINES'); try { $results = $db->loadObjectList(); } catch (Exception $e) { echo JText::sprintf('JLIB_DATABASE_ERROR_FUNCTION_FAILED', $e->getCode(), $e->getMessage()) . '<br />'; return; } foreach ($results as $result) { if ($result->Support != 'DEFAULT') { continue; } $db->setQuery('ALTER TABLE #__update_sites_extensions ENGINE = ' . $result->Engine); try { $db->execute(); } catch (Exception $e) { echo JText::sprintf('JLIB_DATABASE_ERROR_FUNCTION_FAILED', $e->getCode(), $e->getMessage()) . '<br />'; return; } break; } } /** * Uninstall the 2.5 EOS plugin * * @return void */ protected function uninstallEosPlugin() { $db = JFactory::getDbo(); // Check if the 2.5 EOS plugin is present and uninstall it if so $id = $db->setQuery( $db->getQuery(true) ->select('extension_id') ->from('#__extensions') ->where('name = ' . $db->quote('PLG_EOSNOTIFY')) )->loadResult(); if (!$id) { return; } // We need to unprotect the plugin so we can uninstall it $db->setQuery( $db->getQuery(true) ->update('#__extensions') ->set('protected = 0') ->where($db->quoteName('extension_id') . ' = ' . $id) )->execute(); $installer = new JInstaller; $installer->uninstall('plugin', $id); } /** * Update the manifest caches * * @return void */ protected function updateManifestCaches() { $extensions = array( // Components // `type`, `element`, `folder`, `client_id` array('component', 'com_mailto', '', 0), array('component', 'com_wrapper', '', 0), array('component', 'com_admin', '', 1), array('component', 'com_ajax', '', 1), array('component', 'com_banners', '', 1), array('component', 'com_cache', '', 1), array('component', 'com_categories', '', 1), array('component', 'com_checkin', '', 1), array('component', 'com_contact', '', 1), array('component', 'com_cpanel', '', 1), array('component', 'com_installer', '', 1), array('component', 'com_languages', '', 1), array('component', 'com_login', '', 1), array('component', 'com_media', '', 1), array('component', 'com_menus', '', 1), array('component', 'com_messages', '', 1), array('component', 'com_modules', '', 1), array('component', 'com_newsfeeds', '', 1), array('component', 'com_plugins', '', 1), array('component', 'com_search', '', 1), array('component', 'com_templates', '', 1), array('component', 'com_content', '', 1), array('component', 'com_config', '', 1), array('component', 'com_redirect', '', 1), array('component', 'com_users', '', 1), array('component', 'com_tags', '', 1), array('component', 'com_contenthistory', '', 1), array('component', 'com_postinstall', '', 1), // Libraries array('library', 'phpmailer', '', 0), array('library', 'simplepie', '', 0), array('library', 'phputf8', '', 0), array('library', 'joomla', '', 0), array('library', 'idna_convert', '', 0), array('library', 'fof', '', 0), array('library', 'phpass', '', 0), // Modules site // Site array('module', 'mod_articles_archive', '', 0), array('module', 'mod_articles_latest', '', 0), array('module', 'mod_articles_popular', '', 0), array('module', 'mod_banners', '', 0), array('module', 'mod_breadcrumbs', '', 0), array('module', 'mod_custom', '', 0), array('module', 'mod_feed', '', 0), array('module', 'mod_footer', '', 0), array('module', 'mod_login', '', 0), array('module', 'mod_menu', '', 0), array('module', 'mod_articles_news', '', 0), array('module', 'mod_random_image', '', 0), array('module', 'mod_related_items', '', 0), array('module', 'mod_search', '', 0), array('module', 'mod_stats', '', 0), array('module', 'mod_syndicate', '', 0), array('module', 'mod_users_latest', '', 0), array('module', 'mod_whosonline', '', 0), array('module', 'mod_wrapper', '', 0), array('module', 'mod_articles_category', '', 0), array('module', 'mod_articles_categories', '', 0), array('module', 'mod_languages', '', 0), array('module', 'mod_tags_popular', '', 0), array('module', 'mod_tags_similar', '', 0), // Administrator array('module', 'mod_custom', '', 1), array('module', 'mod_feed', '', 1), array('module', 'mod_latest', '', 1), array('module', 'mod_logged', '', 1), array('module', 'mod_login', '', 1), array('module', 'mod_menu', '', 1), array('module', 'mod_popular', '', 1), array('module', 'mod_quickicon', '', 1), array('module', 'mod_stats_admin', '', 1), array('module', 'mod_status', '', 1), array('module', 'mod_submenu', '', 1), array('module', 'mod_title', '', 1), array('module', 'mod_toolbar', '', 1), array('module', 'mod_multilangstatus', '', 1), // Plug-ins array('plugin', 'gmail', 'authentication', 0), array('plugin', 'joomla', 'authentication', 0), array('plugin', 'ldap', 'authentication', 0), array('plugin', 'contact', 'content', 0), array('plugin', 'emailcloak', 'content', 0), array('plugin', 'loadmodule', 'content', 0), array('plugin', 'pagebreak', 'content', 0), array('plugin', 'pagenavigation', 'content', 0), array('plugin', 'vote', 'content', 0), array('plugin', 'codemirror', 'editors', 0), array('plugin', 'none', 'editors', 0), array('plugin', 'tinymce', 'editors', 0), array('plugin', 'article', 'editors-xtd', 0), array('plugin', 'image', 'editors-xtd', 0), array('plugin', 'pagebreak', 'editors-xtd', 0), array('plugin', 'readmore', 'editors-xtd', 0), array('plugin', 'categories', 'search', 0), array('plugin', 'contacts', 'search', 0), array('plugin', 'content', 'search', 0), array('plugin', 'newsfeeds', 'search', 0), array('plugin', 'tags', 'search', 0), array('plugin', 'languagefilter', 'system', 0), array('plugin', 'p3p', 'system', 0), array('plugin', 'cache', 'system', 0), array('plugin', 'debug', 'system', 0), array('plugin', 'log', 'system', 0), array('plugin', 'redirect', 'system', 0), array('plugin', 'remember', 'system', 0), array('plugin', 'sef', 'system', 0), array('plugin', 'logout', 'system', 0), array('plugin', 'contactcreator', 'user', 0), array('plugin', 'joomla', 'user', 0), array('plugin', 'profile', 'user', 0), array('plugin', 'joomla', 'extension', 0), array('plugin', 'joomla', 'content', 0), array('plugin', 'languagecode', 'system', 0), array('plugin', 'joomlaupdate', 'quickicon', 0), array('plugin', 'extensionupdate', 'quickicon', 0), array('plugin', 'recaptcha', 'captcha', 0), array('plugin', 'categories', 'finder', 0), array('plugin', 'contacts', 'finder', 0), array('plugin', 'content', 'finder', 0), array('plugin', 'newsfeeds', 'finder', 0), array('plugin', 'tags', 'finder', 0), array('plugin', 'totp', 'twofactorauth', 0), array('plugin', 'yubikey', 'twofactorauth', 0), // Templates array('template', 'beez3', '', 0), array('template', 'hathor', '', 1), array('template', 'protostar', '', 0), array('template', 'isis', '', 1), // Languages array('language', 'en-GB', '', 0), array('language', 'en-GB', '', 1), // Files array('file', 'joomla', '', 0), // Packages // None in core at this time ); // Attempt to refresh manifest caches $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('*') ->from('#__extensions'); foreach ($extensions as $extension) { $query->where( 'type=' . $db->quote($extension[0]) . ' AND element=' . $db->quote($extension[1]) . ' AND folder=' . $db->quote($extension[2]) . ' AND client_id=' . $extension[3], 'OR' ); } $db->setQuery($query); try { $extensions = $db->loadObjectList(); } catch (Exception $e) { echo JText::sprintf('JLIB_DATABASE_ERROR_FUNCTION_FAILED', $e->getCode(), $e->getMessage()) . '<br />'; return; } $installer = new JInstaller; foreach ($extensions as $extension) { if (!$installer->refreshManifestCache($extension->extension_id)) { echo JText::sprintf('FILES_JOOMLA_ERROR_MANIFEST', $extension->type, $extension->element, $extension->name, $extension->client_id) . '<br />'; } } } /** * Delete files that should not exist * * @return void */ public function deleteUnexistingFiles() { $files = array( '/libraries/cms/cmsloader.php', '/libraries/joomla/form/fields/templatestyle.php', '/libraries/joomla/form/fields/user.php', '/libraries/joomla/form/fields/menu.php', '/libraries/joomla/form/fields/helpsite.php', '/administrator/components/com_admin/sql/updates/mysql/1.7.0.sql', '/administrator/components/com_admin/sql/updates/sqlsrv/2.5.2-2012-03-05.sql', '/administrator/components/com_admin/sql/updates/sqlsrv/2.5.3-2012-03-13.sql', '/administrator/components/com_admin/sql/updates/sqlsrv/index.html', '/administrator/components/com_users/controllers/config.php', '/administrator/language/en-GB/en-GB.plg_system_finder.ini', '/administrator/language/en-GB/en-GB.plg_system_finder.sys.ini', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js', '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js', '/media/editors/tinymce/jscripts/tiny_mce/tiny_mce_src.js', '/media/com_finder/images/calendar.png', '/media/com_finder/images/mime/index.html', '/media/com_finder/images/mime/pdf.png', '/components/com_media/controller.php', '/components/com_media/helpers/index.html', '/components/com_media/helpers/media.php', // Joomla 3.0 '/administrator/components/com_admin/sql/updates/mysql/1.7.0-2011-06-06-2.sql', '/administrator/components/com_admin/sql/updates/mysql/1.7.0-2011-06-06.sql', '/administrator/components/com_admin/sql/updates/mysql/1.7.0.sql', '/administrator/components/com_admin/sql/updates/mysql/1.7.1-2011-09-15-2.sql', '/administrator/components/com_admin/sql/updates/mysql/1.7.1-2011-09-15-3.sql', '/administrator/components/com_admin/sql/updates/mysql/1.7.1-2011-09-15-4.sql', '/administrator/components/com_admin/sql/updates/mysql/1.7.1-2011-09-15.sql', '/administrator/components/com_admin/sql/updates/mysql/1.7.1-2011-09-17.sql', '/administrator/components/com_admin/sql/updates/mysql/1.7.1-2011-09-20.sql', '/administrator/components/com_admin/sql/updates/mysql/1.7.3-2011-10-15.sql', '/administrator/components/com_admin/sql/updates/mysql/1.7.3-2011-10-19.sql', '/administrator/components/com_admin/sql/updates/mysql/1.7.3-2011-11-10.sql', '/administrator/components/com_admin/sql/updates/mysql/1.7.4-2011-11-19.sql', '/administrator/components/com_admin/sql/updates/mysql/1.7.4-2011-11-23.sql', '/administrator/components/com_admin/sql/updates/mysql/1.7.4-2011-12-12.sql', '/administrator/components/com_admin/views/sysinfo/tmpl/default_navigation.php', '/administrator/components/com_categories/config.xml', '/administrator/components/com_categories/helpers/categoriesadministrator.php', '/administrator/components/com_contact/elements/contact.php', '/administrator/components/com_contact/elements/index.html', '/administrator/components/com_content/elements/article.php', '/administrator/components/com_content/elements/author.php', '/administrator/components/com_content/elements/index.html', '/administrator/components/com_installer/models/fields/client.php', '/administrator/components/com_installer/models/fields/group.php', '/administrator/components/com_installer/models/fields/index.html', '/administrator/components/com_installer/models/fields/search.php', '/administrator/components/com_installer/models/fields/type.php', '/administrator/components/com_installer/models/forms/index.html', '/administrator/components/com_installer/models/forms/manage.xml', '/administrator/components/com_installer/views/install/tmpl/default_form.php', '/administrator/components/com_installer/views/manage/tmpl/default_filter.php', '/administrator/components/com_languages/views/installed/tmpl/default_ftp.php', '/administrator/components/com_languages/views/installed/tmpl/default_navigation.php', '/administrator/components/com_modules/models/fields/index.html', '/administrator/components/com_modules/models/fields/moduleorder.php', '/administrator/components/com_modules/models/fields/moduleposition.php', '/administrator/components/com_newsfeeds/elements/index.html', '/administrator/components/com_newsfeeds/elements/newsfeed.php', '/administrator/components/com_templates/views/prevuuw/index.html', '/administrator/components/com_templates/views/prevuuw/tmpl/default.php', '/administrator/components/com_templates/views/prevuuw/tmpl/index.html', '/administrator/components/com_templates/views/prevuuw/view.html.php', '/administrator/includes/menu.php', '/administrator/includes/router.php', '/administrator/manifests/packages/pkg_joomla.xml', '/administrator/modules/mod_submenu/helper.php', '/administrator/templates/hathor/css/ie6.css', '/administrator/templates/hathor/html/mod_submenu/index.html', '/administrator/templates/hathor/html/mod_submenu/default.php', '/components/com_media/controller.php', '/components/com_media/helpers/index.html', '/components/com_media/helpers/media.php', '/includes/menu.php', '/includes/pathway.php', '/includes/router.php', '/language/en-GB/en-GB.pkg_joomla.sys.ini', '/libraries/cms/controller/index.html', '/libraries/cms/controller/legacy.php', '/libraries/cms/model/index.html', '/libraries/cms/model/legacy.php', '/libraries/cms/schema/changeitemmysql.php', '/libraries/cms/schema/changeitemsqlazure.php', '/libraries/cms/schema/changeitemsqlsrv.php', '/libraries/cms/view/index.html', '/libraries/cms/view/legacy.php', '/libraries/joomla/application/application.php', '/libraries/joomla/application/categories.php', '/libraries/joomla/application/cli/daemon.php', '/libraries/joomla/application/cli/index.html', '/libraries/joomla/application/component/controller.php', '/libraries/joomla/application/component/controlleradmin.php', '/libraries/joomla/application/component/controllerform.php', '/libraries/joomla/application/component/helper.php', '/libraries/joomla/application/component/index.html', '/libraries/joomla/application/component/model.php', '/libraries/joomla/application/component/modeladmin.php', '/libraries/joomla/application/component/modelform.php', '/libraries/joomla/application/component/modelitem.php', '/libraries/joomla/application/component/modellist.php', '/libraries/joomla/application/component/view.php', '/libraries/joomla/application/helper.php', '/libraries/joomla/application/input.php', '/libraries/joomla/application/input/cli.php', '/libraries/joomla/application/input/cookie.php', '/libraries/joomla/application/input/files.php', '/libraries/joomla/application/input/index.html', '/libraries/joomla/application/menu.php', '/libraries/joomla/application/module/helper.php', '/libraries/joomla/application/module/index.html', '/libraries/joomla/application/pathway.php', '/libraries/joomla/application/web/webclient.php', '/libraries/joomla/base/node.php', '/libraries/joomla/base/object.php', '/libraries/joomla/base/observable.php', '/libraries/joomla/base/observer.php', '/libraries/joomla/base/tree.php', '/libraries/joomla/cache/storage/eaccelerator.php', '/libraries/joomla/cache/storage/helpers/helper.php', '/libraries/joomla/cache/storage/helpers/index.html', '/libraries/joomla/database/database/index.html', '/libraries/joomla/database/database/mysql.php', '/libraries/joomla/database/database/mysqlexporter.php', '/libraries/joomla/database/database/mysqli.php', '/libraries/joomla/database/database/mysqliexporter.php', '/libraries/joomla/database/database/mysqliimporter.php', '/libraries/joomla/database/database/mysqlimporter.php', '/libraries/joomla/database/database/mysqliquery.php', '/libraries/joomla/database/database/mysqlquery.php', '/libraries/joomla/database/database/sqlazure.php', '/libraries/joomla/database/database/sqlazurequery.php', '/libraries/joomla/database/database/sqlsrv.php', '/libraries/joomla/database/database/sqlsrvquery.php', '/libraries/joomla/database/exception.php', '/libraries/joomla/database/table.php', '/libraries/joomla/database/table/asset.php', '/libraries/joomla/database/table/category.php', '/libraries/joomla/database/table/content.php', '/libraries/joomla/database/table/extension.php', '/libraries/joomla/database/table/index.html', '/libraries/joomla/database/table/language.php', '/libraries/joomla/database/table/menu.php', '/libraries/joomla/database/table/menutype.php', '/libraries/joomla/database/table/module.php', '/libraries/joomla/database/table/session.php', '/libraries/joomla/database/table/update.php', '/libraries/joomla/database/table/user.php', '/libraries/joomla/database/table/usergroup.php', '/libraries/joomla/database/table/viewlevel.php', '/libraries/joomla/database/tablenested.php', '/libraries/joomla/environment/request.php', '/libraries/joomla/environment/uri.php', '/libraries/joomla/error/error.php', '/libraries/joomla/error/exception.php', '/libraries/joomla/error/index.html', '/libraries/joomla/error/log.php', '/libraries/joomla/error/profiler.php', '/libraries/joomla/filesystem/archive.php', '/libraries/joomla/filesystem/archive/bzip2.php', '/libraries/joomla/filesystem/archive/gzip.php', '/libraries/joomla/filesystem/archive/index.html', '/libraries/joomla/filesystem/archive/tar.php', '/libraries/joomla/filesystem/archive/zip.php', '/libraries/joomla/form/fields/category.php', '/libraries/joomla/form/fields/componentlayout.php', '/libraries/joomla/form/fields/contentlanguage.php', '/libraries/joomla/form/fields/editor.php', '/libraries/joomla/form/fields/editors.php', '/libraries/joomla/form/fields/media.php', '/libraries/joomla/form/fields/menuitem.php', '/libraries/joomla/form/fields/modulelayout.php', '/libraries/joomla/html/editor.php', '/libraries/joomla/html/html/access.php', '/libraries/joomla/html/html/batch.php', '/libraries/joomla/html/html/behavior.php', '/libraries/joomla/html/html/category.php', '/libraries/joomla/html/html/content.php', '/libraries/joomla/html/html/contentlanguage.php', '/libraries/joomla/html/html/date.php', '/libraries/joomla/html/html/email.php', '/libraries/joomla/html/html/form.php', '/libraries/joomla/html/html/grid.php', '/libraries/joomla/html/html/image.php', '/libraries/joomla/html/html/index.html', '/libraries/joomla/html/html/jgrid.php', '/libraries/joomla/html/html/list.php', '/libraries/joomla/html/html/menu.php', '/libraries/joomla/html/html/number.php', '/libraries/joomla/html/html/rules.php', '/libraries/joomla/html/html/select.php', '/libraries/joomla/html/html/sliders.php', '/libraries/joomla/html/html/string.php', '/libraries/joomla/html/html/tabs.php', '/libraries/joomla/html/html/tel.php', '/libraries/joomla/html/html/user.php', '/libraries/joomla/html/pagination.php', '/libraries/joomla/html/pane.php', '/libraries/joomla/html/parameter.php', '/libraries/joomla/html/parameter/element.php', '/libraries/joomla/html/parameter/element/calendar.php', '/libraries/joomla/html/parameter/element/category.php', '/libraries/joomla/html/parameter/element/componentlayouts.php', '/libraries/joomla/html/parameter/element/contentlanguages.php', '/libraries/joomla/html/parameter/element/editors.php', '/libraries/joomla/html/parameter/element/filelist.php', '/libraries/joomla/html/parameter/element/folderlist.php', '/libraries/joomla/html/parameter/element/helpsites.php', '/libraries/joomla/html/parameter/element/hidden.php', '/libraries/joomla/html/parameter/element/imagelist.php', '/libraries/joomla/html/parameter/element/index.html', '/libraries/joomla/html/parameter/element/languages.php', '/libraries/joomla/html/parameter/element/list.php', '/libraries/joomla/html/parameter/element/menu.php', '/libraries/joomla/html/parameter/element/menuitem.php', '/libraries/joomla/html/parameter/element/modulelayouts.php', '/libraries/joomla/html/parameter/element/password.php', '/libraries/joomla/html/parameter/element/radio.php', '/libraries/joomla/html/parameter/element/spacer.php', '/libraries/joomla/html/parameter/element/sql.php', '/libraries/joomla/html/parameter/element/templatestyle.php', '/libraries/joomla/html/parameter/element/text.php', '/libraries/joomla/html/parameter/element/textarea.php', '/libraries/joomla/html/parameter/element/timezones.php', '/libraries/joomla/html/parameter/element/usergroup.php', '/libraries/joomla/html/parameter/index.html', '/libraries/joomla/html/toolbar.php', '/libraries/joomla/html/toolbar/button.php', '/libraries/joomla/html/toolbar/button/confirm.php', '/libraries/joomla/html/toolbar/button/custom.php', '/libraries/joomla/html/toolbar/button/help.php', '/libraries/joomla/html/toolbar/button/index.html', '/libraries/joomla/html/toolbar/button/link.php', '/libraries/joomla/html/toolbar/button/popup.php', '/libraries/joomla/html/toolbar/button/separator.php', '/libraries/joomla/html/toolbar/button/standard.php', '/libraries/joomla/html/toolbar/index.html', '/libraries/joomla/image/filters/brightness.php', '/libraries/joomla/image/filters/contrast.php', '/libraries/joomla/image/filters/edgedetect.php', '/libraries/joomla/image/filters/emboss.php', '/libraries/joomla/image/filters/grayscale.php', '/libraries/joomla/image/filters/index.html', '/libraries/joomla/image/filters/negate.php', '/libraries/joomla/image/filters/sketchy.php', '/libraries/joomla/image/filters/smooth.php', '/libraries/joomla/language/help.php', '/libraries/joomla/language/latin_transliterate.php', '/libraries/joomla/log/logexception.php', '/libraries/joomla/log/loggers/database.php', '/libraries/joomla/log/loggers/echo.php', '/libraries/joomla/log/loggers/formattedtext.php', '/libraries/joomla/log/loggers/index.html', '/libraries/joomla/log/loggers/messagequeue.php', '/libraries/joomla/log/loggers/syslog.php', '/libraries/joomla/log/loggers/w3c.php', '/libraries/joomla/methods.php', '/libraries/joomla/session/storage/eaccelerator.php', '/libraries/joomla/string/stringnormalize.php', '/libraries/joomla/utilities/date.php', '/libraries/joomla/utilities/simplecrypt.php', '/libraries/joomla/utilities/simplexml.php', '/libraries/joomla/utilities/string.php', '/libraries/joomla/utilities/xmlelement.php', '/media/plg_quickicon_extensionupdate/extensionupdatecheck.js', '/media/plg_quickicon_joomlaupdate/jupdatecheck.js', // Joomla! 3.1 '/libraries/joomla/application/router.php', '/libraries/joomla/form/rules/boolean.php', '/libraries/joomla/form/rules/color.php', '/libraries/joomla/form/rules/email.php', '/libraries/joomla/form/rules/equals.php', '/libraries/joomla/form/rules/index.html', '/libraries/joomla/form/rules/options.php', '/libraries/joomla/form/rules/rules.php', '/libraries/joomla/form/rules/tel.php', '/libraries/joomla/form/rules/url.php', '/libraries/joomla/form/rules/username.php', '/libraries/joomla/html/access.php', '/libraries/joomla/html/behavior.php', '/libraries/joomla/html/content.php', '/libraries/joomla/html/date.php', '/libraries/joomla/html/email.php', '/libraries/joomla/html/form.php', '/libraries/joomla/html/grid.php', '/libraries/joomla/html/html.php', '/libraries/joomla/html/index.html', '/libraries/joomla/html/jgrid.php', '/libraries/joomla/html/list.php', '/libraries/joomla/html/number.php', '/libraries/joomla/html/rules.php', '/libraries/joomla/html/select.php', '/libraries/joomla/html/sliders.php', '/libraries/joomla/html/string.php', '/libraries/joomla/html/tabs.php', '/libraries/joomla/html/tel.php', '/libraries/joomla/html/user.php', '/libraries/joomla/html/language/index.html', '/libraries/joomla/html/language/en-GB/en-GB.jhtmldate.ini', '/libraries/joomla/html/language/en-GB/index.html', '/libraries/joomla/installer/adapters/component.php', '/libraries/joomla/installer/adapters/file.php', '/libraries/joomla/installer/adapters/index.html', '/libraries/joomla/installer/adapters/language.php', '/libraries/joomla/installer/adapters/library.php', '/libraries/joomla/installer/adapters/module.php', '/libraries/joomla/installer/adapters/package.php', '/libraries/joomla/installer/adapters/plugin.php', '/libraries/joomla/installer/adapters/template.php', '/libraries/joomla/installer/extension.php', '/libraries/joomla/installer/helper.php', '/libraries/joomla/installer/index.html', '/libraries/joomla/installer/librarymanifest.php', '/libraries/joomla/installer/packagemanifest.php', '/libraries/joomla/pagination/index.html', '/libraries/joomla/pagination/object.php', '/libraries/joomla/pagination/pagination.php', '/libraries/legacy/html/contentlanguage.php', '/libraries/legacy/html/index.html', '/libraries/legacy/html/menu.php', '/libraries/legacy/menu/index.html', '/libraries/legacy/menu/menu.php', '/libraries/legacy/pathway/index.html', '/libraries/legacy/pathway/pathway.php', '/media/system/css/mooRainbow.css', '/media/system/js/mooRainbow-uncompressed.js', '/media/system/js/mooRainbow.js', '/media/system/js/swf-uncompressed.js', '/media/system/js/swf.js', '/media/system/js/uploader-uncompressed.js', '/media/system/js/uploader.js', '/media/system/swf/index.html', '/media/system/swf/uploader.swf', // Joomla! 3.2 '/administrator/components/com_contact/models/fields/modal/contacts.php', '/administrator/components/com_newsfeeds/models/fields/modal/newsfeeds.php', '/libraries/idna_convert/example.php', '/media/editors/tinymce/jscripts/tiny_mce/index.html', '/media/editors/tinymce/jscripts/tiny_mce/license.txt', '/media/editors/tinymce/jscripts/tiny_mce/tiny_mce.js', '/media/editors/tinymce/jscripts/tiny_mce/tiny_mce_popup.js', '/media/editors/tinymce/jscripts/tiny_mce/langs/index.html', '/media/editors/tinymce/jscripts/tiny_mce/langs/en.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advhr/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advhr/css/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advhr/js/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advimage/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advimage/css/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advimage/img/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advimage/js/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advlink/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advlink/css/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advlink/js/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advlist/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/autolink/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/autoresize/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/autosave/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/autosave/langs/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/bbcode/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/contextmenu/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/directionality/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/js/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/css/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css', '/media/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/js/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/iespell/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css', '/media/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/insertdatetime/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/layer/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/lists/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/media/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/media/media.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/media/moxieplayer.swf', '/media/editors/tinymce/jscripts/tiny_mce/plugins/media/css/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/media/css/media.css', '/media/editors/tinymce/jscripts/tiny_mce/plugins/media/js/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/media/js/media.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/nonbreaking/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/noneditable/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/paste/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/paste/js/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/preview/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/preview/example.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/preview/preview.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/print/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/save/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css', '/media/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css', '/media/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif', '/media/editors/tinymce/jscripts/tiny_mce/plugins/style/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/style/props.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/style/readme.txt', '/media/editors/tinymce/jscripts/tiny_mce/plugins/style/css/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/style/css/props.css', '/media/editors/tinymce/jscripts/tiny_mce/plugins/style/js/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/style/js/props.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/tabfocus/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/cell.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/row.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/table.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/css/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/css/row.css', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/css/table.css', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/js/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/js/row.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/js/table.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/template/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/template/blank.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/template/template.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/template/css/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/template/css/template.css', '/media/editors/tinymce/jscripts/tiny_mce/plugins/template/js/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/template/js/template.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/template/langs/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/visualblocks/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css', '/media/editors/tinymce/jscripts/tiny_mce/plugins/visualchars/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/wordcount/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/index.html', '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js', '/media/editors/tinymce/jscripts/tiny_mce/themes/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/about.htm', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/image.htm', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/link.htm', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/shortcuts.htm', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/flash.gif', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/iframe.gif', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/pagebreak.gif', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/quicktime.gif', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/realmedia.gif', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/shockwave.gif', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/trans.gif', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/video.gif', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/img/windowsmedia.gif', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/content.css', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png', '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png', '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js', '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/img/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif', '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/langs/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js', '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/default/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css', '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css', '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css', '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css', '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/index.html', '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png', '/media/editors/tinymce/jscripts/tiny_mce/utils/index.html', '/media/editors/tinymce/jscripts/tiny_mce/utils/editable_selects.js', '/media/editors/tinymce/jscripts/tiny_mce/utils/form_utils.js', '/media/editors/tinymce/jscripts/tiny_mce/utils/mctabs.js', '/media/editors/tinymce/jscripts/tiny_mce/utils/validate.js', '/administrator/components/com_banners/models/fields/ordering.php', '/administrator/components/com_contact/models/fields/ordering.php', '/administrator/components/com_newsfeeds/models/fields/ordering.php', '/administrator/components/com_plugins/models/fields/ordering.php', '/administrator/components/com_weblinks/models/fields/ordering.php', '/administrator/includes/application.php', '/includes/application.php', '/libraries/legacy/application/helper.php', '/libraries/joomla/plugin/helper.php', '/libraries/joomla/plugin/index.html', '/libraries/joomla/plugin/plugin.php', '/libraries/legacy/component/helper.php', '/libraries/legacy/component/index.html', '/libraries/legacy/module/helper.php', '/libraries/legacy/module/index.html', '/administrator/components/com_templates/controllers/source.php', '/administrator/components/com_templates/models/source.php', '/administrator/components/com_templates/views/source/index.html', '/administrator/components/com_templates/views/source/tmpl/edit.php', '/administrator/components/com_templates/views/source/tmpl/edit_ftp.php', '/administrator/components/com_templates/views/source/tmpl/index.html', '/administrator/components/com_templates/views/source/view.html.php', '/media/editors/codemirror/css/csscolors.css', '/media/editors/codemirror/css/jscolors.css', '/media/editors/codemirror/css/phpcolors.css', '/media/editors/codemirror/css/sparqlcolors.css', '/media/editors/codemirror/css/xmlcolors.css', '/media/editors/codemirror/js/basefiles-uncompressed.js', '/media/editors/codemirror/js/basefiles.js', '/media/editors/codemirror/js/codemirror-uncompressed.js', '/media/editors/codemirror/js/editor.js', '/media/editors/codemirror/js/highlight.js', '/media/editors/codemirror/js/mirrorframe.js', '/media/editors/codemirror/js/parsecss.js', '/media/editors/codemirror/js/parsedummy.js', '/media/editors/codemirror/js/parsehtmlmixed.js', '/media/editors/codemirror/js/parsejavascript.js', '/media/editors/codemirror/js/parsephp.js', '/media/editors/codemirror/js/parsephphtmlmixed.js', '/media/editors/codemirror/js/parsesparql.js', '/media/editors/codemirror/js/parsexml.js', '/media/editors/codemirror/js/select.js', '/media/editors/codemirror/js/stringstream.js', '/media/editors/codemirror/js/tokenize.js', '/media/editors/codemirror/js/tokenizejavascript.js', '/media/editors/codemirror/js/tokenizephp.js', '/media/editors/codemirror/js/undo.js', '/media/editors/codemirror/js/util.js', '/administrator/components/com_weblinks/models/fields/index.html', '/plugins/user/joomla/postinstall/actions.php', '/plugins/user/joomla/postinstall/index.html', '/media/com_finder/js/finder.js', '/media/com_finder/js/highlighter.js', '/libraries/joomla/registry/format.php', '/libraries/joomla/registry/index.html', '/libraries/joomla/registry/registry.php', '/libraries/joomla/registry/format/index.html', '/libraries/joomla/registry/format/ini.php', '/libraries/joomla/registry/format/json.php', '/libraries/joomla/registry/format/php.php', '/libraries/joomla/registry/format/xml.php', // Joomla 3.3.1 '/administrator/templates/isis/html/message.php', // Joomla! 3.4 '/administrator/components/com_tags/helpers/html/index.html', '/administrator/components/com_tags/models/fields/index.html', '/administrator/manifests/libraries/phpmailer.xml', '/administrator/templates/hathor/html/com_finder/filter/index.html', '/administrator/templates/hathor/html/com_finder/statistics/index.html', '/components/com_contact/helpers/icon.php', '/language/en-GB/en-GB.lib_phpmailer.sys.ini', '/libraries/compat/jsonserializable.php', '/libraries/compat/password/lib/index.html', '/libraries/compat/password/lib/password.php', '/libraries/compat/password/lib/version_test.php', '/libraries/compat/password/index.html', '/libraries/compat/password/LICENSE.md', '/libraries/compat/index.html', '/libraries/fof/controller.php', '/libraries/fof/dispatcher.php', '/libraries/fof/inflector.php', '/libraries/fof/input.php', '/libraries/fof/model.php', '/libraries/fof/query.abstract.php', '/libraries/fof/query.element.php', '/libraries/fof/query.mysql.php', '/libraries/fof/query.mysqli.php', '/libraries/fof/query.sqlazure.php', '/libraries/fof/query.sqlsrv.php', '/libraries/fof/render.abstract.php', '/libraries/fof/render.joomla.php', '/libraries/fof/render.joomla3.php', '/libraries/fof/render.strapper.php', '/libraries/fof/string.utils.php', '/libraries/fof/table.php', '/libraries/fof/template.utils.php', '/libraries/fof/toolbar.php', '/libraries/fof/view.csv.php', '/libraries/fof/view.html.php', '/libraries/fof/view.json.php', '/libraries/fof/view.php', '/libraries/framework/Joomla/Application/Cli/Output/Processor/ColorProcessor.php', '/libraries/framework/Joomla/Application/Cli/Output/Processor/ProcessorInterface.php', '/libraries/framework/Joomla/Application/Cli/Output/Stdout.php', '/libraries/framework/Joomla/Application/Cli/Output/Xml.php', '/libraries/framework/Joomla/Application/Cli/CliOutput.php', '/libraries/framework/Joomla/Application/Cli/ColorProcessor.php', '/libraries/framework/Joomla/Application/Cli/ColorStyle.php', '/libraries/framework/index.html', '/libraries/framework/Joomla/DI/Exception/DependencyResolutionException.php', '/libraries/framework/Joomla/DI/Exception/index.html', '/libraries/framework/Joomla/DI/Container.php', '/libraries/framework/Joomla/DI/ContainerAwareInterface.php', '/libraries/framework/Joomla/DI/index.html', '/libraries/framework/Joomla/DI/ServiceProviderInterface.php', '/libraries/framework/Joomla/Registry/Format/index.html', '/libraries/framework/Joomla/Registry/Format/Ini.php', '/libraries/framework/Joomla/Registry/Format/Json.php', '/libraries/framework/Joomla/Registry/Format/Php.php', '/libraries/framework/Joomla/Registry/Format/Xml.php', '/libraries/framework/Joomla/Registry/Format/Yaml.php', '/libraries/framework/Joomla/Registry/AbstractRegistryFormat.php', '/libraries/framework/Joomla/Registry/index.html', '/libraries/framework/Joomla/Registry/Registry.php', '/libraries/framework/Symfony/Component/Yaml/Exception/DumpException.php', '/libraries/framework/Symfony/Component/Yaml/Exception/ExceptionInterface.php', '/libraries/framework/Symfony/Component/Yaml/Exception/index.html', '/libraries/framework/Symfony/Component/Yaml/Exception/ParseException.php', '/libraries/framework/Symfony/Component/Yaml/Exception/RuntimeException.php', '/libraries/framework/Symfony/Component/Yaml/Dumper.php', '/libraries/framework/Symfony/Component/Yaml/Escaper.php', '/libraries/framework/Symfony/Component/Yaml/index.html', '/libraries/framework/Symfony/Component/Yaml/Inline.php', '/libraries/framework/Symfony/Component/Yaml/LICENSE', '/libraries/framework/Symfony/Component/Yaml/Parser.php', '/libraries/framework/Symfony/Component/Yaml/Unescaper.php', '/libraries/framework/Symfony/Component/Yaml/Yaml.php', '/libraries/joomla/string/inflector.php', '/libraries/joomla/string/normalise.php', '/libraries/phpmailer/language/index.html', '/libraries/phpmailer/language/phpmailer.lang-joomla.php', '/libraries/phpmailer/index.html', '/libraries/phpmailer/LICENSE', '/libraries/phpmailer/phpmailer.php', '/libraries/phpmailer/pop.php', '/libraries/phpmailer/smtp.php', '/media/editors/codemirror/css/ambiance.css', '/media/editors/codemirror/css/codemirror.css', '/media/editors/codemirror/css/configuration.css', '/media/editors/codemirror/css/index.html', '/media/editors/codemirror/js/brace-fold.js', '/media/editors/codemirror/js/clike.js', '/media/editors/codemirror/js/closebrackets.js', '/media/editors/codemirror/js/closetag.js', '/media/editors/codemirror/js/codemirror.js', '/media/editors/codemirror/js/css.js', '/media/editors/codemirror/js/foldcode.js', '/media/editors/codemirror/js/foldgutter.js', '/media/editors/codemirror/js/fullscreen.js', '/media/editors/codemirror/js/htmlmixed.js', '/media/editors/codemirror/js/indent-fold.js', '/media/editors/codemirror/js/index.html', '/media/editors/codemirror/js/javascript.js', '/media/editors/codemirror/js/less.js', '/media/editors/codemirror/js/matchbrackets.js', '/media/editors/codemirror/js/matchtags.js', '/media/editors/codemirror/js/php.js', '/media/editors/codemirror/js/xml-fold.js', '/media/editors/codemirror/js/xml.js', // Joomla! 3.4.1 '/libraries/joomla/environment/request.php', '/media/editors/tinymce/templates/template_list.js', '/administrator/help/en-GB/Components_Banners_Banners.html', '/administrator/help/en-GB/Components_Banners_Banners_Edit.html', '/administrator/help/en-GB/Components_Banners_Categories.html', '/administrator/help/en-GB/Components_Banners_Category_Edit.html', '/administrator/help/en-GB/Components_Banners_Clients.html', '/administrator/help/en-GB/Components_Banners_Clients_Edit.html', '/administrator/help/en-GB/Components_Banners_Tracks.html', '/administrator/help/en-GB/Components_Contact_Categories.html', '/administrator/help/en-GB/Components_Contact_Category_Edit.html', '/administrator/help/en-GB/Components_Contacts_Contacts.html', '/administrator/help/en-GB/Components_Contacts_Contacts_Edit.html', '/administrator/help/en-GB/Components_Content_Categories.html', '/administrator/help/en-GB/Components_Content_Category_Edit.html', '/administrator/help/en-GB/Components_Messaging_Inbox.html', '/administrator/help/en-GB/Components_Messaging_Read.html', '/administrator/help/en-GB/Components_Messaging_Write.html', '/administrator/help/en-GB/Components_Newsfeeds_Categories.html', '/administrator/help/en-GB/Components_Newsfeeds_Category_Edit.html', '/administrator/help/en-GB/Components_Newsfeeds_Feeds.html', '/administrator/help/en-GB/Components_Newsfeeds_Feeds_Edit.html', '/administrator/help/en-GB/Components_Redirect_Manager.html', '/administrator/help/en-GB/Components_Redirect_Manager_Edit.html', '/administrator/help/en-GB/Components_Search.html', '/administrator/help/en-GB/Components_Weblinks_Categories.html', '/administrator/help/en-GB/Components_Weblinks_Category_Edit.html', '/administrator/help/en-GB/Components_Weblinks_Links.html', '/administrator/help/en-GB/Components_Weblinks_Links_Edit.html', '/administrator/help/en-GB/Content_Article_Manager.html', '/administrator/help/en-GB/Content_Article_Manager_Edit.html', '/administrator/help/en-GB/Content_Featured_Articles.html', '/administrator/help/en-GB/Content_Media_Manager.html', '/administrator/help/en-GB/Extensions_Extension_Manager_Discover.html', '/administrator/help/en-GB/Extensions_Extension_Manager_Install.html', '/administrator/help/en-GB/Extensions_Extension_Manager_Manage.html', '/administrator/help/en-GB/Extensions_Extension_Manager_Update.html', '/administrator/help/en-GB/Extensions_Extension_Manager_Warnings.html', '/administrator/help/en-GB/Extensions_Language_Manager_Content.html', '/administrator/help/en-GB/Extensions_Language_Manager_Edit.html', '/administrator/help/en-GB/Extensions_Language_Manager_Installed.html', '/administrator/help/en-GB/Extensions_Module_Manager.html', '/administrator/help/en-GB/Extensions_Module_Manager_Edit.html', '/administrator/help/en-GB/Extensions_Plugin_Manager.html', '/administrator/help/en-GB/Extensions_Plugin_Manager_Edit.html', '/administrator/help/en-GB/Extensions_Template_Manager_Styles.html', '/administrator/help/en-GB/Extensions_Template_Manager_Styles_Edit.html', '/administrator/help/en-GB/Extensions_Template_Manager_Templates.html', '/administrator/help/en-GB/Extensions_Template_Manager_Templates_Edit.html', '/administrator/help/en-GB/Extensions_Template_Manager_Templates_Edit_Source.html', '/administrator/help/en-GB/Glossary.html', '/administrator/help/en-GB/Menus_Menu_Item_Manager.html', '/administrator/help/en-GB/Menus_Menu_Item_Manager_Edit.html', '/administrator/help/en-GB/Menus_Menu_Manager.html', '/administrator/help/en-GB/Menus_Menu_Manager_Edit.html', '/administrator/help/en-GB/Site_Global_Configuration.html', '/administrator/help/en-GB/Site_Maintenance_Clear_Cache.html', '/administrator/help/en-GB/Site_Maintenance_Global_Check-in.html', '/administrator/help/en-GB/Site_Maintenance_Purge_Expired_Cache.html', '/administrator/help/en-GB/Site_System_Information.html', '/administrator/help/en-GB/Start_Here.html', '/administrator/help/en-GB/Users_Access_Levels.html', '/administrator/help/en-GB/Users_Access_Levels_Edit.html', '/administrator/help/en-GB/Users_Debug_Users.html', '/administrator/help/en-GB/Users_Groups.html', '/administrator/help/en-GB/Users_Groups_Edit.html', '/administrator/help/en-GB/Users_Mass_Mail_Users.html', '/administrator/help/en-GB/Users_User_Manager.html', '/administrator/help/en-GB/Users_User_Manager_Edit.html', '/administrator/components/com_config/views/index.html', '/administrator/components/com_config/views/application/index.html', '/administrator/components/com_config/views/application/view.html.php', '/administrator/components/com_config/views/application/tmpl/default.php', '/administrator/components/com_config/views/application/tmpl/default_cache.php', '/administrator/components/com_config/views/application/tmpl/default_cookie.php', '/administrator/components/com_config/views/application/tmpl/default_database.php', '/administrator/components/com_config/views/application/tmpl/default_debug.php', '/administrator/components/com_config/views/application/tmpl/default_filters.php', '/administrator/components/com_config/views/application/tmpl/default_ftp.php', '/administrator/components/com_config/views/application/tmpl/default_ftplogin.php', '/administrator/components/com_config/views/application/tmpl/default_locale.php', '/administrator/components/com_config/views/application/tmpl/default_mail.php', '/administrator/components/com_config/views/application/tmpl/default_metadata.php', '/administrator/components/com_config/views/application/tmpl/default_navigation.php', '/administrator/components/com_config/views/application/tmpl/default_permissions.php', '/administrator/components/com_config/views/application/tmpl/default_seo.php', '/administrator/components/com_config/views/application/tmpl/default_server.php', '/administrator/components/com_config/views/application/tmpl/default_session.php', '/administrator/components/com_config/views/application/tmpl/default_site.php', '/administrator/components/com_config/views/application/tmpl/default_system.php', '/administrator/components/com_config/views/application/tmpl/index.html', '/administrator/components/com_config/views/close/index.html', '/administrator/components/com_config/views/close/view.html.php', '/administrator/components/com_config/views/component/index.html', '/administrator/components/com_config/views/component/view.html.php', '/administrator/components/com_config/views/component/tmpl/default.php', '/administrator/components/com_config/views/component/tmpl/index.html', '/administrator/components/com_config/models/fields/filters.php', '/administrator/components/com_config/models/fields/index.html', '/administrator/components/com_config/models/forms/application.xml', '/administrator/components/com_config/models/forms/index.html', // Joomla 3.4.2 '/libraries/composer_autoload.php', // Joomla 3.4.3 '/libraries/classloader.php', '/libraries/ClassLoader.php', ); // TODO There is an issue while deleting folders using the ftp mode $folders = array( '/administrator/components/com_admin/sql/updates/sqlsrv', '/media/com_finder/images/mime', '/media/com_finder/images', '/components/com_media/helpers', // Joomla 3.0 '/administrator/components/com_contact/elements', '/administrator/components/com_content/elements', '/administrator/components/com_installer/models/fields', '/administrator/components/com_installer/models/forms', '/administrator/components/com_modules/models/fields', '/administrator/components/com_newsfeeds/elements', '/administrator/components/com_templates/views/prevuuw/tmpl', '/administrator/components/com_templates/views/prevuuw', '/libraries/cms/controller', '/libraries/cms/model', '/libraries/cms/view', '/libraries/joomla/application/cli', '/libraries/joomla/application/component', '/libraries/joomla/application/input', '/libraries/joomla/application/module', '/libraries/joomla/cache/storage/helpers', '/libraries/joomla/database/table', '/libraries/joomla/database/database', '/libraries/joomla/error', '/libraries/joomla/filesystem/archive', '/libraries/joomla/html/html', '/libraries/joomla/html/toolbar', '/libraries/joomla/html/toolbar/button', '/libraries/joomla/html/parameter', '/libraries/joomla/html/parameter/element', '/libraries/joomla/image/filters', '/libraries/joomla/log/loggers', // Joomla! 3.1 '/libraries/joomla/form/rules', '/libraries/joomla/html/language/en-GB', '/libraries/joomla/html/language', '/libraries/joomla/html', '/libraries/joomla/installer/adapters', '/libraries/joomla/installer', '/libraries/joomla/pagination', '/libraries/legacy/html', '/libraries/legacy/menu', '/libraries/legacy/pathway', '/media/system/swf/', '/media/editors/tinymce/jscripts', // Joomla! 3.2 '/libraries/joomla/plugin', '/libraries/legacy/component', '/libraries/legacy/module', '/administrator/components/com_weblinks/models/fields', '/plugins/user/joomla/postinstall', '/libraries/joomla/registry/format', '/libraries/joomla/registry', // Joomla! 3.4 '/administrator/components/com_tags/helpers/html', '/administrator/components/com_tags/models/fields', '/administrator/templates/hathor/html/com_finder/filter', '/administrator/templates/hathor/html/com_finder/statistics', '/libraries/compat/password/lib', '/libraries/compat/password', '/libraries/compat', '/libraries/framework/Joomla/Application/Cli/Output/Processor', '/libraries/framework/Joomla/Application/Cli/Output', '/libraries/framework/Joomla/Application/Cli', '/libraries/framework/Joomla/Application', '/libraries/framework/Joomla/DI/Exception', '/libraries/framework/Joomla/DI', '/libraries/framework/Joomla/Registry/Format', '/libraries/framework/Joomla/Registry', '/libraries/framework/Joomla', '/libraries/framework/Symfony/Component/Yaml/Exception', '/libraries/framework/Symfony/Component/Yaml', '/libraries/framework', '/libraries/phpmailer/language', '/libraries/phpmailer', '/media/editors/codemirror/css', '/media/editors/codemirror/js', // Joomla! 3.4.1 '/administrator/components/com_config/views', '/administrator/components/com_config/models/fields', '/administrator/components/com_config/models/forms', ); jimport('joomla.filesystem.file'); foreach ($files as $file) { if (JFile::exists(JPATH_ROOT . $file) && !JFile::delete(JPATH_ROOT . $file)) { echo JText::sprintf('FILES_JOOMLA_ERROR_FILE_FOLDER', $file) . '<br />'; } } jimport('joomla.filesystem.folder'); foreach ($folders as $folder) { if (JFolder::exists(JPATH_ROOT . $folder) && !JFolder::delete(JPATH_ROOT . $folder)) { echo JText::sprintf('FILES_JOOMLA_ERROR_FILE_FOLDER', $folder) . '<br />'; } } /* * Needed for updates post-3.4 * If com_weblinks doesn't exist then assume we can delete the weblinks package manifest (included in the update packages) */ if (!JFile::exists(JPATH_ADMINISTRATOR . '/components/com_weblinks/weblinks.php') && JFile::exists(JPATH_MANIFESTS . '/packages/pkg_weblinks.xml')) { JFile::delete(JPATH_MANIFESTS . '/packages/pkg_weblinks.xml'); } } /** * Clears the RAD layer's table cache. The cache vastly improves performance * but needs to be cleared every time you update the database schema. * * @return void * * @since 3.2 */ protected function clearRadCache() { jimport('joomla.filesystem.file'); if (JFile::exists(JPATH_CACHE . '/fof/cache.php')) { JFile::delete(JPATH_CACHE . '/fof/cache.php'); } } /** * Method to create assets for newly installed components * * @return boolean * * @since 3.2 */ public function updateAssets() { // List all components added since 1.6 $newComponents = array( 'com_finder', 'com_joomlaupdate', 'com_tags', 'com_contenthistory', 'com_ajax', 'com_postinstall' ); foreach ($newComponents as $component) { $asset = JTable::getInstance('Asset'); if ($asset->loadByName($component)) { continue; } $asset->name = $component; $asset->parent_id = 1; $asset->rules = '{}'; $asset->title = $component; $asset->setLocation(1, 'last-child'); if (!$asset->store()) { // Install failed, roll back changes $this->parent->abort(JText::sprintf('JLIB_INSTALLER_ABORT_COMP_INSTALL_ROLLBACK', $asset->stderr(true))); return false; } } return true; } /** * If we migrated the session from the previous system, flush all the active sessions. * Otherwise users will be logged in, but not able to do anything since they don't have * a valid session * * @return boolean */ public function flushSessions() { /** * The session may have not been started yet (e.g. CLI-based Joomla! update scripts). Let's make sure we do * have a valid session. */ JFactory::getSession()->restart(); // If $_SESSION['__default'] is no longer set we do not have a migrated session, therefore we can quit. if (!isset($_SESSION['__default'])) { return true; } $db = JFactory::getDbo(); try { switch ($db->name) { // MySQL database, use TRUNCATE (faster, more resilient) case 'pdomysql': case 'mysql': case 'mysqli': $db->truncateTable($db->qn('#__sessions')); break; // Non-MySQL databases, use a simple DELETE FROM query default: $query = $db->getQuery(true) ->delete($db->qn('#__sessions')); $db->setQuery($query)->execute(); break; } } catch (Exception $e) { echo JText::sprintf('JLIB_DATABASE_ERROR_FUNCTION_FAILED', $e->getCode(), $e->getMessage()) . '<br />'; return false; } return true; } } PKb��\Ԫ�6��components/com_admin/admin.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.tabstate'); // No access check. $controller = JControllerLegacy::getInstance('Admin'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\u���;components/com_admin/sql/updates/mysql/3.4.0-2015-02-26.sqlnu�[���INSERT INTO `#__postinstall_messages` (`extension_id`, `title_key`, `description_key`, `action_key`, `language_extension`, `language_client_id`, `type`, `action_file`, `action`, `condition_file`, `condition_method`, `version_introduced`, `enabled`) VALUES (700, 'COM_CPANEL_MSG_LANGUAGEACCESS340_TITLE', 'COM_CPANEL_MSG_LANGUAGEACCESS340_BODY', '', 'com_cpanel', 1, 'message', '', '', 'admin://components/com_admin/postinstall/languageaccess340.php', 'admin_postinstall_languageaccess340_condition', '3.4.1', 1); PKb��\)0�g::0components/com_admin/sql/updates/mysql/3.1.3.sqlnu�[���# Placeholder file for database changes for version 3.1.3 PKb��\c�=��;components/com_admin/sql/updates/mysql/3.4.0-2014-12-03.sqlnu�[���UPDATE `#__extensions` SET `protected` = '0' WHERE `name` = 'plg_editors-xtd_article' AND `type` = "plugin" AND `element` = "article" AND `folder` = "editors-xtd"; PKb��\PɐUU;components/com_admin/sql/updates/mysql/3.3.4-2014-08-03.sqlnu�[���ALTER TABLE `#__user_profiles` CHANGE `profile_value` `profile_value` TEXT NOT NULL; PKb��\K���@@;components/com_admin/sql/updates/mysql/2.5.0-2011-12-20.sqlnu�[���SELECT @old_params:= CONCAT(SUBSTRING_INDEX(SUBSTRING(params, LOCATE('"filters":', params)), '}}', 1), '}}') as filters FROM `#__extensions` WHERE name="com_content"; UPDATE `#__extensions` SET params=CONCAT('{',SUBSTRING(params, 2, CHAR_LENGTH(params)-2),IF(params='','',','),@old_params,'}') WHERE name="com_config";PKb��\S�4q;components/com_admin/sql/updates/mysql/2.5.1-2012-01-26.sqlnu�[���INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES (314, 'mod_version', 'module', 'mod_version', '', 1, 1, 1, 0, '{"legacy":false,"name":"mod_version","type":"module","creationDate":"January 2012","author":"Joomla! Project","copyright":"Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"2.5.0","description":"MOD_VERSION_XML_DESCRIPTION","group":""}', '{"format":"short","product":"1","cache":"0"}', '', '', 0, '0000-00-00 00:00:00', 0, 0); INSERT INTO `#__modules` (`title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES ('Joomla Version', '', '', 1, 'footer', 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, 'mod_version', 3, 1, '{"format":"short","product":"1","layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'); INSERT INTO `#__modules_menu` (`moduleid`, `menuid`) VALUES (LAST_INSERT_ID(), 0);PKb��\59�S��;components/com_admin/sql/updates/mysql/3.3.0-2014-04-02.sqlnu�[���INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES (451, 'plg_search_tags', 'plugin', 'tags', 'search', 0, 0, 1, 0, '', '{"search_limit":"50","show_tagged_items":"1"}', '', '', 0, '0000-00-00 00:00:00', 0, 0); PKb��\�e���;components/com_admin/sql/updates/mysql/2.5.0-2011-12-24.sqlnu�[���ALTER TABLE `#__menu` DROP INDEX `idx_client_id_parent_id_alias`; ALTER TABLE `#__menu` ADD UNIQUE `idx_client_id_parent_id_alias_language` ( `client_id` , `parent_id` , `alias` , `language` );PKb��\L��F� � ;components/com_admin/sql/updates/mysql/2.5.0-2011-12-22.sqlnu�[���REPLACE INTO `#__finder_taxonomy` (`id`, `parent_id`, `title`, `state`, `access`, `ordering`) VALUES (1, 0, 'ROOT', 0, 0, 0); REPLACE INTO `#__finder_terms_common` (`term`, `language`) VALUES ('a', 'en'), ('about', 'en'), ('after', 'en'), ('ago', 'en'), ('all', 'en'), ('am', 'en'), ('an', 'en'), ('and', 'en'), ('ani', 'en'), ('any', 'en'), ('are', 'en'), ('aren''t', 'en'), ('as', 'en'), ('at', 'en'), ('be', 'en'), ('but', 'en'), ('by', 'en'), ('for', 'en'), ('from', 'en'), ('get', 'en'), ('go', 'en'), ('how', 'en'), ('if', 'en'), ('in', 'en'), ('into', 'en'), ('is', 'en'), ('isn''t', 'en'), ('it', 'en'), ('its', 'en'), ('me', 'en'), ('more', 'en'), ('most', 'en'), ('must', 'en'), ('my', 'en'), ('new', 'en'), ('no', 'en'), ('none', 'en'), ('not', 'en'), ('noth', 'en'), ('nothing', 'en'), ('of', 'en'), ('off', 'en'), ('often', 'en'), ('old', 'en'), ('on', 'en'), ('onc', 'en'), ('once', 'en'), ('onli', 'en'), ('only', 'en'), ('or', 'en'), ('other', 'en'), ('our', 'en'), ('ours', 'en'), ('out', 'en'), ('over', 'en'), ('page', 'en'), ('she', 'en'), ('should', 'en'), ('small', 'en'), ('so', 'en'), ('some', 'en'), ('than', 'en'), ('thank', 'en'), ('that', 'en'), ('the', 'en'), ('their', 'en'), ('theirs', 'en'), ('them', 'en'), ('then', 'en'), ('there', 'en'), ('these', 'en'), ('they', 'en'), ('this', 'en'), ('those', 'en'), ('thus', 'en'), ('time', 'en'), ('times', 'en'), ('to', 'en'), ('too', 'en'), ('true', 'en'), ('under', 'en'), ('until', 'en'), ('up', 'en'), ('upon', 'en'), ('use', 'en'), ('user', 'en'), ('users', 'en'), ('veri', 'en'), ('version', 'en'), ('very', 'en'), ('via', 'en'), ('want', 'en'), ('was', 'en'), ('way', 'en'), ('were', 'en'), ('what', 'en'), ('when', 'en'), ('where', 'en'), ('whi', 'en'), ('which', 'en'), ('who', 'en'), ('whom', 'en'), ('whose', 'en'), ('why', 'en'), ('wide', 'en'), ('will', 'en'), ('with', 'en'), ('within', 'en'), ('without', 'en'), ('would', 'en'), ('yes', 'en'), ('yet', 'en'), ('you', 'en'), ('your', 'en'), ('yours', 'en'); INSERT INTO `#__menu` (`menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `ordering`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`) VALUES ('menu', 'com_finder', 'Smart Search', '', 'Smart Search', 'index.php?option=com_finder', 'component', 0, 1, 1, 27, 0, 0, '0000-00-00 00:00:00', 0, 0, 'class:finder', 0, '', 41, 42, 0, '*', 1); PKb��\��/990components/com_admin/sql/updates/mysql/3.0.2.sqlnu�[���# Placeholder file for database changes for version 3.0.2PKb��\�o�`QQ;components/com_admin/sql/updates/mysql/2.5.0-2012-01-10.sqlnu�[���ALTER TABLE `#__updates` ADD COLUMN `infourl` text NOT NULL AFTER `detailsurl`; PKb��\(��nhh0components/com_admin/sql/updates/mysql/3.2.1.sqlnu�[���DELETE FROM `#__postinstall_messages` WHERE `title_key` = 'PLG_USER_JOOMLA_POSTINSTALL_STRONGPW_TITLE'; PKb��\�����=components/com_admin/sql/updates/mysql/2.5.0-2011-12-21-1.sqlnu�[���INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES (27, 'com_finder', 'component', 'com_finder', '', 1, 1, 0, 0, '', '{"show_description":"1","description_length":255,"allow_empty_query":"0","show_url":"1","show_advanced":"1","expand_advanced":"0","show_date_filters":"0","highlight_terms":"1","opensearch_name":"","opensearch_description":"","batch_size":"50","memory_table_limit":30000,"title_multiplier":"1.7","text_multiplier":"0.7","meta_multiplier":"1.2","path_multiplier":"2.0","misc_multiplier":"0.3","stemmer":"porter_en"}', '', '', 0, '0000-00-00 00:00:00', 0, 0), (439, 'plg_captcha_recaptcha', 'plugin', 'recaptcha', 'captcha', 0, 1, 1, 0, '{}', '{"public_key":"","private_key":"","theme":"clean"}', '', '', 0, '0000-00-00 00:00:00', 0, 0), (440, 'plg_system_highlight', 'plugin', 'highlight', 'system', 0, 1, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 7, 0), (441, 'plg_content_finder', 'plugin', 'finder', 'content', 0, 0, 1, 0, '{"legacy":false,"name":"plg_content_finder","type":"plugin","creationDate":"December 2011","author":"Joomla! Project","copyright":"Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"1.7.0","description":"PLG_CONTENT_FINDER_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0), (442, 'plg_finder_categories', 'plugin', 'categories', 'finder', 0, 1, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 1, 0), (443, 'plg_finder_contacts', 'plugin', 'contacts', 'finder', 0, 1, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 2, 0), (444, 'plg_finder_content', 'plugin', 'content', 'finder', 0, 1, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 3, 0), (445, 'plg_finder_newsfeeds', 'plugin', 'newsfeeds', 'finder', 0, 1, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 4, 0), (446, 'plg_finder_weblinks', 'plugin', 'weblinks', 'finder', 0, 1, 1, 0, '', '{}', '', '', 0, '0000-00-00 00:00:00', 5, 0), (223, 'mod_finder', 'module', 'mod_finder', '', 0, 1, 0, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0); PKb��\!4a!��;components/com_admin/sql/updates/mysql/3.3.6-2014-09-30.sqlnu�[���INSERT INTO `#__update_sites` (`name`, `type`, `location`, `enabled`) VALUES ('Joomla! Update Component Update Site', 'extension', 'http://update.joomla.org/core/extensions/com_joomlaupdate.xml', 1); INSERT INTO `#__update_sites_extensions` (`update_site_id`, `extension_id`) VALUES ((SELECT `update_site_id` FROM `#__update_sites` WHERE `name` = 'Joomla! Update Component Update Site'), (SELECT `extension_id` FROM `#__extensions` WHERE `name` = 'com_joomlaupdate')); PKb��\�_��\\;components/com_admin/sql/updates/mysql/2.5.4-2012-03-19.sqlnu�[���ALTER TABLE `#__languages` ADD COLUMN `access` integer unsigned NOT NULL default 0 AFTER `published`; ALTER TABLE `#__languages` ADD KEY `idx_access` (`access`); UPDATE `#__categories` SET `extension` = 'com_users.notes' WHERE `extension` = 'com_users'; UPDATE `#__extensions` SET `enabled` = '1' WHERE `protected` = '1' AND `type` <> 'plugin'; PKb��\� ���;components/com_admin/sql/updates/mysql/3.2.2-2013-12-28.sqlnu�[���UPDATE `#__menu` SET `component_id` = (SELECT `extension_id` FROM `#__extensions` WHERE `element` = 'com_joomlaupdate') WHERE `link` = 'index.php?option=com_joomlaupdate'; PKb��\#�3 # #0components/com_admin/sql/updates/mysql/3.1.2.sqlnu�[���UPDATE `#__content_types` SET `table` = '{"special":{"dbtable":"#__content","key":"id","type":"Content","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE `type_title` = 'Article'; UPDATE `#__content_types` SET `table` = '{"special":{"dbtable":"#__contact_details","key":"id","type":"Contact","prefix":"ContactTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE `type_title` = 'Contact'; UPDATE `#__content_types` SET `table` = '{"special":{"dbtable":"#__newsfeeds","key":"id","type":"Newsfeed","prefix":"NewsfeedsTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE `type_title` = 'Newsfeed'; UPDATE `#__content_types` SET `table` = '{"special":{"dbtable":"#__users","key":"id","type":"User","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE `type_title` = 'User'; UPDATE `#__content_types` SET `table` = '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE `type_title` = 'Article Category'; UPDATE `#__content_types` SET `table` = '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE `type_title` = 'Contact Category'; UPDATE `#__content_types` SET `table` = '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE `type_title` = 'Newsfeeds Category'; UPDATE `#__content_types` SET `table` = '{"special":{"dbtable":"#__tags","key":"tag_id","type":"Tag","prefix":"TagsTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE `type_title` = 'Tag'; UPDATE `#__content_types` SET `field_mappings` = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"state","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"introtext", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"attribs", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"urls", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"asset_id"}, "special": {"fulltext":"fulltext"}}' WHERE `type_title` = 'Article'; UPDATE `#__content_types` SET `field_mappings` = '{"common":{"core_content_item_id":"id","core_title":"name","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"address", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"image", "core_urls":"webpage", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"null"}, "special": {"con_position":"con_position","suburb":"suburb","state":"state","country":"country","postcode":"postcode","telephone":"telephone","fax":"fax","misc":"misc","email_to":"email_to","default_con":"default_con","user_id":"user_id","mobile":"mobile","sortname1":"sortname1","sortname2":"sortname2","sortname3":"sortname3"}}' WHERE `type_title` = 'Contact'; UPDATE `#__content_types` SET `field_mappings` = '{"common":{"core_content_item_id":"id","core_title":"name","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"description", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"link", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"null"}, "special": {"numarticles":"numarticles","cache_time":"cache_time","rtl":"rtl"}}' WHERE `type_title` = 'Newsfeed'; UPDATE `#__content_types` SET `field_mappings` = '{"common":{"core_content_item_id":"id","core_title":"name","core_state":"null","core_alias":"username","core_created_time":"registerdate","core_modified_time":"lastvisitDate","core_body":"null", "core_hits":"null","core_publish_up":"null","core_publish_down":"null","access":"null", "core_params":"params", "core_featured":"null", "core_metadata":"null", "core_language":"null", "core_images":"null", "core_urls":"null", "core_version":"null", "core_ordering":"null", "core_metakey":"null", "core_metadesc":"null", "core_catid":"null", "core_xreference":"null", "asset_id":"null"}, "special": {}}' WHERE `type_title` = 'User'; UPDATE `#__content_types` SET `field_mappings` = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special": {"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}' WHERE `type_title` = 'Article Category'; UPDATE `#__content_types` SET `field_mappings` = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special": {"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}' WHERE `type_title` = 'Contact Category'; UPDATE `#__content_types` SET `field_mappings` = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special": {"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}' WHERE `type_title` = 'Newsfeeds Category'; UPDATE `#__content_types` SET `field_mappings` = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"urls", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"null", "core_xreference":"null", "asset_id":"null"}, "special": {"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path"}}' WHERE `type_title` = 'Tag'; PKb��\?�ݿw w =components/com_admin/sql/updates/mysql/2.5.0-2011-12-21-2.sqlnu�[���CREATE TABLE IF NOT EXISTS `#__finder_links_terms0` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_links_terms1` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_links_terms2` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_links_terms3` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_links_terms4` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_links_terms5` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_links_terms6` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_links_terms7` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_links_terms8` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_links_terms9` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_links_termsa` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_links_termsb` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_links_termsc` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_links_termsd` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_links_termse` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_links_termsf` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_taxonomy` ( `id` int(10) unsigned NOT NULL auto_increment, `parent_id` int(10) unsigned NOT NULL default '0', `title` varchar(255) NOT NULL, `state` tinyint(1) unsigned NOT NULL default '1', `access` tinyint(1) unsigned NOT NULL default '0', `ordering` tinyint(1) unsigned NOT NULL default '0', PRIMARY KEY (`id`), KEY `parent_id` (`parent_id`), KEY `state` (`state`), KEY `ordering` (`ordering`), KEY `access` (`access`), KEY `idx_parent_published` (`parent_id`,`state`,`access`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_taxonomy_map` ( `link_id` int(10) unsigned NOT NULL, `node_id` int(10) unsigned NOT NULL, PRIMARY KEY (`link_id`,`node_id`), KEY `link_id` (`link_id`), KEY `node_id` (`node_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_terms` ( `term_id` int(10) unsigned NOT NULL auto_increment, `term` varchar(75) NOT NULL, `stem` varchar(75) NOT NULL, `common` tinyint(1) unsigned NOT NULL default '0', `phrase` tinyint(1) unsigned NOT NULL default '0', `weight` float unsigned NOT NULL default '0', `soundex` varchar(75) NOT NULL, `links` int(10) NOT NULL default '0', PRIMARY KEY (`term_id`), UNIQUE KEY `idx_term` (`term`), KEY `idx_term_phrase` (`term`,`phrase`), KEY `idx_stem_phrase` (`stem`,`phrase`), KEY `idx_soundex_phrase` (`soundex`,`phrase`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_terms_common` ( `term` varchar(75) NOT NULL, `language` varchar(3) NOT NULL, KEY `idx_word_lang` (`term`,`language`), KEY `idx_lang` (`language`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_tokens` ( `term` varchar(75) NOT NULL, `stem` varchar(75) NOT NULL, `common` tinyint(1) unsigned NOT NULL default '0', `phrase` tinyint(1) unsigned NOT NULL default '0', `weight` float unsigned NOT NULL default '1', `context` tinyint(1) unsigned NOT NULL default '2', KEY `idx_word` (`term`), KEY `idx_context` (`context`) ) ENGINE=MEMORY DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_tokens_aggregate` ( `term_id` int(10) unsigned NOT NULL, `map_suffix` char(1) NOT NULL, `term` varchar(75) NOT NULL, `stem` varchar(75) NOT NULL, `common` tinyint(1) unsigned NOT NULL default '0', `phrase` tinyint(1) unsigned NOT NULL default '0', `term_weight` float unsigned NOT NULL, `context` tinyint(1) unsigned NOT NULL default '2', `context_weight` float unsigned NOT NULL, `total_weight` float unsigned NOT NULL, KEY `token` (`term`), KEY `keyword_id` (`term_id`) ) ENGINE=MEMORY DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_types` ( `id` int(10) unsigned NOT NULL auto_increment, `title` varchar(100) NOT NULL, `mime` varchar(100) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `title` (`title`) ) DEFAULT CHARSET=utf8; PKb��\ݡ)�;components/com_admin/sql/updates/mysql/3.3.0-2014-02-16.sqlnu�[���ALTER TABLE `#__users` ADD COLUMN `requireReset` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'Require user to reset password on next login' AFTER `otep`; PKb��\��ͪll0components/com_admin/sql/updates/mysql/3.1.4.sqlnu�[���INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES (104, 'IDNA Convert', 'library', 'idna_convert', '', 0, 1, 1, 1, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0); PKb��\���1::0components/com_admin/sql/updates/mysql/3.1.5.sqlnu�[���# Placeholder file for database changes for version 3.1.5 PKb��\lG���;components/com_admin/sql/updates/mysql/2.5.0-2011-12-16.sqlnu�[���CREATE TABLE IF NOT EXISTS `#__overrider` ( `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'Primary Key', `constant` varchar(255) NOT NULL, `string` text NOT NULL, `file` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8;PKb��\H=���;components/com_admin/sql/updates/mysql/3.4.0-2014-08-24.sqlnu�[���INSERT INTO `#__postinstall_messages` (`extension_id`, `title_key`, `description_key`, `action_key`, `language_extension`, `language_client_id`, `type`, `action_file`, `action`, `condition_file`, `condition_method`, `version_introduced`, `enabled`) VALUES (700, 'COM_CPANEL_MSG_HTACCESS_TITLE', 'COM_CPANEL_MSG_HTACCESS_BODY', '', 'com_cpanel', 1, 'message', '', '', 'admin://components/com_admin/postinstall/htaccess.php', 'admin_postinstall_htaccess_condition', '3.4.0', 1); PKb��\sS�/;components/com_admin/sql/updates/mysql/3.4.0-2015-01-21.sqlnu�[���INSERT INTO `#__postinstall_messages` (`extension_id`, `title_key`, `description_key`, `action_key`, `language_extension`, `language_client_id`, `type`, `action_file`, `action`, `condition_file`, `condition_method`, `version_introduced`, `enabled`) VALUES (700, 'COM_CPANEL_MSG_ROBOTS_TITLE', 'COM_CPANEL_MSG_ROBOTS_BODY', '', 'com_cpanel', 1, 'message', '', '', '', '', '3.3.0', 1);PKb��\$.5�^^;components/com_admin/sql/updates/mysql/2.5.0-2012-01-14.sqlnu�[���ALTER TABLE `#__languages` CHANGE `sitename` `sitename` VARCHAR( 1024 ) NOT NULL DEFAULT ''; PKb��\� &&;components/com_admin/sql/updates/mysql/2.5.2-2012-03-05.sqlnu�[���# Dummy SQL file to set schema versionPKb��\@݂���;components/com_admin/sql/updates/mysql/3.4.0-2014-09-16.sqlnu�[���ALTER TABLE `#__redirect_links` ADD header smallint(3) NOT NULL DEFAULT 301; ALTER TABLE `#__redirect_links` MODIFY new_url varchar(255); PKb��\T�990components/com_admin/sql/updates/mysql/2.5.6.sqlnu�[���# Placeholder file for database changes for version 2.5.6PKb��\���990components/com_admin/sql/updates/mysql/3.1.1.sqlnu�[���# Placeholder file for database changes for version 3.1.1PKb��\Si&��;components/com_admin/sql/updates/mysql/3.2.2-2014-01-15.sqlnu�[���INSERT INTO `#__postinstall_messages` (`extension_id`, `title_key`, `description_key`, `action_key`, `language_extension`, `language_client_id`, `type`, `action_file`, `action`, `condition_file`, `condition_method`, `version_introduced`, `enabled`) VALUES (700, 'COM_CPANEL_MSG_PHPVERSION_TITLE', 'COM_CPANEL_MSG_PHPVERSION_BODY', '', 'com_cpanel', 1, 'message', '', '', 'admin://components/com_admin/postinstall/phpversion.php', 'admin_postinstall_phpversion_condition', '3.2.2', 1); PKb��\�ݟ�ff;components/com_admin/sql/updates/mysql/3.2.2-2014-01-18.sqlnu�[���/* Update updates version length */ ALTER TABLE `#__updates` MODIFY `version` varchar(32) DEFAULT ''; PKb��\�qU�``;components/com_admin/sql/updates/mysql/3.2.2-2014-01-23.sqlnu�[���INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES (106, 'PHPass', 'library', 'phpass', '', 0, 1, 1, 1, '{"legacy":false,"name":"PHPass","type":"library","creationDate":"2004-2006","author":"Solar Designer","authorEmail":"solar@openwall.com","authorUrl":"http:\/\/www.openwall.com/phpass","version":"0.3","description":"LIB_PHPASS_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0); PKb��\��rlss;components/com_admin/sql/updates/mysql/3.2.2-2014-01-08.sqlnu�[���INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES (403, 'plg_content_contact', 'plugin', 'contact', 'content', 0, 1, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 1, 0);PKb��\����nn0components/com_admin/sql/updates/mysql/3.0.3.sqlnu�[���ALTER TABLE `#__associations` CHANGE `id` `id` INT(11) NOT NULL COMMENT 'A reference to the associated item.';PKb��\�;{O=#=#0components/com_admin/sql/updates/mysql/3.0.0.sqlnu�[���ALTER TABLE `#__users` DROP KEY `usertype`; ALTER TABLE `#__session` DROP KEY `whosonline`; DROP TABLE IF EXISTS `#__update_categories`; ALTER TABLE `#__contact_details` DROP `imagepos`; ALTER TABLE `#__content` DROP COLUMN `title_alias`; ALTER TABLE `#__content` DROP COLUMN `sectionid`; ALTER TABLE `#__content` DROP COLUMN `mask`; ALTER TABLE `#__content` DROP COLUMN `parentid`; ALTER TABLE `#__newsfeeds` DROP COLUMN `filename`; ALTER TABLE `#__menu` DROP COLUMN `ordering`; ALTER TABLE `#__session` DROP COLUMN `usertype`; ALTER TABLE `#__users` DROP COLUMN `usertype`; ALTER TABLE `#__updates` DROP COLUMN `categoryid`; UPDATE `#__extensions` SET protected = 0 WHERE `name` = 'com_search' OR `name` = 'mod_articles_archive' OR `name` = 'mod_articles_latest' OR `name` = 'mod_banners' OR `name` = 'mod_feed' OR `name` = 'mod_footer' OR `name` = 'mod_users_latest' OR `name` = 'mod_articles_category' OR `name` = 'mod_articles_categories' OR `name` = 'plg_content_pagebreak' OR `name` = 'plg_content_pagenavigation' OR `name` = 'plg_content_vote' OR `name` = 'plg_editors_tinymce' OR `name` = 'plg_system_p3p' OR `name` = 'plg_user_contactcreator' OR `name` = 'plg_user_profile'; DELETE FROM `#__extensions` WHERE `extension_id` = 800; ALTER TABLE `#__assets` ENGINE=InnoDB; ALTER TABLE `#__associations` ENGINE=InnoDB; ALTER TABLE `#__banners` ENGINE=InnoDB; ALTER TABLE `#__banner_clients` ENGINE=InnoDB; ALTER TABLE `#__banner_tracks` ENGINE=InnoDB; ALTER TABLE `#__categories` ENGINE=InnoDB; ALTER TABLE `#__contact_details` ENGINE=InnoDB; ALTER TABLE `#__content` ENGINE=InnoDB; ALTER TABLE `#__content_frontpage` ENGINE=InnoDB; ALTER TABLE `#__content_rating` ENGINE=InnoDB; ALTER TABLE `#__core_log_searches` ENGINE=InnoDB; ALTER TABLE `#__extensions` ENGINE=InnoDB; ALTER TABLE `#__finder_filters` ENGINE=InnoDB; ALTER TABLE `#__finder_links` ENGINE=InnoDB; ALTER TABLE `#__finder_links_terms0` ENGINE=InnoDB; ALTER TABLE `#__finder_links_terms1` ENGINE=InnoDB; ALTER TABLE `#__finder_links_terms2` ENGINE=InnoDB; ALTER TABLE `#__finder_links_terms3` ENGINE=InnoDB; ALTER TABLE `#__finder_links_terms4` ENGINE=InnoDB; ALTER TABLE `#__finder_links_terms5` ENGINE=InnoDB; ALTER TABLE `#__finder_links_terms6` ENGINE=InnoDB; ALTER TABLE `#__finder_links_terms7` ENGINE=InnoDB; ALTER TABLE `#__finder_links_terms8` ENGINE=InnoDB; ALTER TABLE `#__finder_links_terms9` ENGINE=InnoDB; ALTER TABLE `#__finder_links_termsa` ENGINE=InnoDB; ALTER TABLE `#__finder_links_termsb` ENGINE=InnoDB; ALTER TABLE `#__finder_links_termsc` ENGINE=InnoDB; ALTER TABLE `#__finder_links_termsd` ENGINE=InnoDB; ALTER TABLE `#__finder_links_termse` ENGINE=InnoDB; ALTER TABLE `#__finder_links_termsf` ENGINE=InnoDB; ALTER TABLE `#__finder_taxonomy` ENGINE=InnoDB; ALTER TABLE `#__finder_taxonomy_map` ENGINE=InnoDB; ALTER TABLE `#__finder_terms` ENGINE=InnoDB; ALTER TABLE `#__finder_terms_common` ENGINE=InnoDB; ALTER TABLE `#__finder_types` ENGINE=InnoDB; ALTER TABLE `#__languages` ENGINE=InnoDB; ALTER TABLE `#__menu` ENGINE=InnoDB; ALTER TABLE `#__menu_types` ENGINE=InnoDB; ALTER TABLE `#__messages` ENGINE=InnoDB; ALTER TABLE `#__messages_cfg` ENGINE=InnoDB; ALTER TABLE `#__modules` ENGINE=InnoDB; ALTER TABLE `#__modules_menu` ENGINE=InnoDB; ALTER TABLE `#__newsfeeds` ENGINE=InnoDB; ALTER TABLE `#__overrider` ENGINE=InnoDB; ALTER TABLE `#__redirect_links` ENGINE=InnoDB; ALTER TABLE `#__schemas` ENGINE=InnoDB; ALTER TABLE `#__session` ENGINE=InnoDB; ALTER TABLE `#__template_styles` ENGINE=InnoDB; ALTER TABLE `#__updates` ENGINE=InnoDB; ALTER TABLE `#__update_sites` ENGINE=InnoDB; ALTER TABLE `#__update_sites_extensions` ENGINE=InnoDB; ALTER TABLE `#__users` ENGINE=InnoDB; ALTER TABLE `#__usergroups` ENGINE=InnoDB; ALTER TABLE `#__user_notes` ENGINE=InnoDB; ALTER TABLE `#__user_profiles` ENGINE=InnoDB; ALTER TABLE `#__user_usergroup_map` ENGINE=InnoDB; ALTER TABLE `#__viewlevels` ENGINE=InnoDB; ALTER TABLE `#__newsfeeds` ADD COLUMN `description` text NOT NULL; ALTER TABLE `#__newsfeeds` ADD COLUMN `version` int(10) unsigned NOT NULL DEFAULT '1'; ALTER TABLE `#__newsfeeds` ADD COLUMN `hits` int(10) unsigned NOT NULL DEFAULT '0'; ALTER TABLE `#__newsfeeds` ADD COLUMN `images` text NOT NULL; ALTER TABLE `#__contact_details` ADD COLUMN `version` int(10) unsigned NOT NULL DEFAULT '1'; ALTER TABLE `#__contact_details` ADD COLUMN `hits` int(10) unsigned NOT NULL DEFAULT '0'; ALTER TABLE `#__banners` ADD COLUMN `created_by` int(10) unsigned NOT NULL DEFAULT '0'; ALTER TABLE `#__banners` ADD COLUMN `created_by_alias` varchar(255) NOT NULL DEFAULT ''; ALTER TABLE `#__banners` ADD COLUMN `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'; ALTER TABLE `#__banners` ADD COLUMN `modified_by` int(10) unsigned NOT NULL DEFAULT '0'; ALTER TABLE `#__banners` ADD COLUMN `version` int(10) unsigned NOT NULL DEFAULT '1'; ALTER TABLE `#__categories` ADD COLUMN `version` int(10) unsigned NOT NULL DEFAULT '1'; UPDATE `#__assets` SET name=REPLACE( name, 'com_user.notes.category','com_users.category' ); UPDATE `#__categories` SET extension=REPLACE( extension, 'com_user.notes.category','com_users.category' ); ALTER TABLE `#__finder_terms` ADD COLUMN `language` char(3) NOT NULL DEFAULT ''; ALTER TABLE `#__finder_tokens` ADD COLUMN `language` char(3) NOT NULL DEFAULT ''; ALTER TABLE `#__finder_tokens_aggregate` ADD COLUMN `language` char(3) NOT NULL DEFAULT ''; INSERT INTO `#__extensions` (`name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES ('isis', 'template', 'isis', '', 1, 1, 1, 0, '{"name":"isis","type":"template","creationDate":"3\\/30\\/2012","author":"Kyle Ledbetter","copyright":"Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"","version":"1.0","description":"TPL_ISIS_XML_DESCRIPTION","group":""}', '{"templateColor":"","logoFile":""}', '', '', 0, '0000-00-00 00:00:00', 0, 0), ('protostar', 'template', 'protostar', '', 0, 1, 1, 0, '{"name":"protostar","type":"template","creationDate":"4\\/30\\/2012","author":"Kyle Ledbetter","copyright":"Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"","version":"1.0","description":"TPL_PROTOSTAR_XML_DESCRIPTION","group":""}', '{"templateColor":"","logoFile":"","googleFont":"1","googleFontName":"Open+Sans","fluidContainer":"0"}', '', '', 0, '0000-00-00 00:00:00', 0, 0), ('beez3', 'template', 'beez3', '', 0, 1, 1, 0, '{"legacy":false,"name":"beez3","type":"template","creationDate":"25 November 2009","author":"Angie Radtke","copyright":"Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.","authorEmail":"a.radtke@derauftritt.de","authorUrl":"http:\\/\\/www.der-auftritt.de","version":"1.6.0","description":"TPL_BEEZ3_XML_DESCRIPTION","group":""}', '{"wrapperSmall":"53","wrapperLarge":"72","sitetitle":"","sitedescription":"","navposition":"center","templatecolor":"nature"}', '', '', 0, '0000-00-00 00:00:00', 0, 0); INSERT INTO `#__template_styles` (`template`, `client_id`, `home`, `title`, `params`) VALUES ('protostar', 0, '0', 'protostar - Default', '{"templateColor":"","logoFile":"","googleFont":"1","googleFontName":"Open+Sans","fluidContainer":"0"}'), ('isis', 1, '1', 'isis - Default', '{"templateColor":"","logoFile":""}'), ('beez3', 0, '0', 'beez3 - Default', '{"wrapperSmall":53,"wrapperLarge":72,"logo":"","sitetitle":"","sitedescription":"","navposition":"center","bootstrap":"","templatecolor":"nature","headerImage":"","backgroundcolor":"#eee"}'); UPDATE `#__template_styles` SET home = (CASE WHEN (SELECT count FROM (SELECT count(`id`) AS count FROM `#__template_styles` WHERE home = '1' AND client_id = 1) as c) = 0 THEN '1' ELSE '0' END) WHERE template = 'isis' AND home != '1'; UPDATE `#__template_styles` SET home = 0 WHERE template = 'bluestork'; INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES (315, 'mod_stats_admin', 'module', 'mod_stats_admin', '', 1, 1, 1, 0, '{"name":"mod_stats_admin","type":"module","creationDate":"September 2012","author":"Joomla! Project","copyright":"Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.0.0","description":"MOD_STATS_XML_DESCRIPTION","group":""}', '{"serverinfo":"0","siteinfo":"0","counter":"0","increase":"0","cache":"1","cache_time":"900","cachemode":"static"}', '', '', 0, '0000-00-00 00:00:00', 0, 0); UPDATE `#__update_sites` SET location = 'http://update.joomla.org/language/translationlist_3.xml' WHERE location = 'http://update.joomla.org/language/translationlist.xml' AND name = 'Accredited Joomla! Translations'; PKb��\� &&;components/com_admin/sql/updates/mysql/2.5.3-2012-03-13.sqlnu�[���# Dummy SQL file to set schema versionPKb��\f��]uu0components/com_admin/sql/updates/mysql/2.5.5.sqlnu�[���ALTER TABLE `#__redirect_links` ADD COLUMN `hits` INT(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `comment`; ALTER TABLE `#__users` ADD COLUMN `lastResetTime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Date of last password reset'; ALTER TABLE `#__users` ADD COLUMN `resetCount` int(11) NOT NULL DEFAULT '0' COMMENT 'Count of password resets since lastResetTime';PKb��\��ܶ990components/com_admin/sql/updates/mysql/3.0.1.sqlnu�[���# Placeholder file for database changes for version 3.0.1PKb��\�=�/;components/com_admin/sql/updates/mysql/2.5.0-2011-12-23.sqlnu�[���CREATE TABLE IF NOT EXISTS `#__finder_filters` ( `filter_id` int(10) unsigned NOT NULL auto_increment, `title` varchar(255) NOT NULL, `alias` varchar(255) NOT NULL, `state` tinyint(1) NOT NULL default '1', `created` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(10) unsigned NOT NULL, `created_by_alias` varchar(255) NOT NULL, `modified` datetime NOT NULL default '0000-00-00 00:00:00', `modified_by` int(10) unsigned NOT NULL default '0', `checked_out` int(10) unsigned NOT NULL default '0', `checked_out_time` datetime NOT NULL default '0000-00-00 00:00:00', `map_count` int(10) unsigned NOT NULL default '0', `data` text NOT NULL, `params` mediumtext, PRIMARY KEY (`filter_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__finder_links` ( `link_id` int(10) unsigned NOT NULL auto_increment, `url` varchar(255) NOT NULL, `route` varchar(255) NOT NULL, `title` varchar(255) default NULL, `description` varchar(255) default NULL, `indexdate` datetime NOT NULL default '0000-00-00 00:00:00', `md5sum` varchar(32) default NULL, `published` tinyint(1) NOT NULL default '1', `state` int(5) default '1', `access` int(5) default '0', `language` varchar(8) NOT NULL, `publish_start_date` datetime NOT NULL default '0000-00-00 00:00:00', `publish_end_date` datetime NOT NULL default '0000-00-00 00:00:00', `start_date` datetime NOT NULL default '0000-00-00 00:00:00', `end_date` datetime NOT NULL default '0000-00-00 00:00:00', `list_price` double unsigned NOT NULL default '0', `sale_price` double unsigned NOT NULL default '0', `type_id` int(11) NOT NULL, `object` mediumblob NOT NULL, PRIMARY KEY (`link_id`), KEY `idx_type` (`type_id`), KEY `idx_title` (`title`), KEY `idx_md5` (`md5sum`), KEY `idx_url` (`url`(75)), KEY `idx_published_list` (`published`,`state`,`access`,`publish_start_date`,`publish_end_date`,`list_price`), KEY `idx_published_sale` (`published`,`state`,`access`,`publish_start_date`,`publish_end_date`,`sale_price`) ) DEFAULT CHARSET=utf8; PKb��\���;components/com_admin/sql/updates/mysql/3.4.0-2014-09-01.sqlnu�[���INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES (801, 'weblinks', 'package', 'pkg_weblinks', '', 0, 1, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0); INSERT INTO `#__update_sites` (`name`, `type`, `location`, `enabled`) VALUES ('Weblinks Update Site', 'extension', 'https://raw.githubusercontent.com/joomla-extensions/weblinks/master/manifest.xml', 1); INSERT INTO `#__update_sites_extensions` (`update_site_id`, `extension_id`) VALUES ((SELECT `update_site_id` FROM `#__update_sites` WHERE `name` = 'Weblinks Update Site'), 801); PKb��\�����;components/com_admin/sql/updates/mysql/3.2.2-2013-12-22.sqlnu�[���ALTER TABLE `#__update_sites` ADD COLUMN `extra_query` VARCHAR(1000) DEFAULT ''; ALTER TABLE `#__updates` ADD COLUMN `extra_query` VARCHAR(1000) DEFAULT ''; PKb��\����;components/com_admin/sql/updates/mysql/3.2.3-2014-02-20.sqlnu�[���UPDATE `#__extensions` ext1, `#__extensions` ext2 SET ext1.`params` = ext2.`params` WHERE ext1.`name` = 'plg_authentication_cookie' AND ext2.`name` = 'plg_system_remember'; PKb��\ �G���;components/com_admin/sql/updates/mysql/2.5.4-2012-03-18.sqlnu�[���INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES (28, 'com_joomlaupdate', 'component', 'com_joomlaupdate', '', 1, 1, 0, 1, '{"legacy":false,"name":"com_joomlaupdate","type":"component","creationDate":"February 2012","author":"Joomla! Project","copyright":"(C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"2.5.2","description":"COM_JOOMLAUPDATE_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0); INSERT INTO `#__menu` (`menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `ordering`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`) VALUES ('menu', 'com_joomlaupdate', 'Joomla! Update', '', 'Joomla! Update', 'index.php?option=com_joomlaupdate', 'component', 0, 1, 1, 28, 0, 0, '0000-00-00 00:00:00', 0, 0, 'class:joomlaupdate', 0, '', 41, 42, 0, '*', 1); PKb��\a���;components/com_admin/sql/updates/mysql/2.5.0-2011-12-19.sqlnu�[���CREATE TABLE IF NOT EXISTS `#__user_notes` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(10) unsigned NOT NULL DEFAULT '0', `catid` int(10) unsigned NOT NULL DEFAULT '0', `subject` varchar(100) NOT NULL DEFAULT '', `body` text NOT NULL, `state` tinyint(3) NOT NULL DEFAULT '0', `checked_out` int(10) unsigned NOT NULL DEFAULT '0', `checked_out_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `created_user_id` int(10) unsigned NOT NULL DEFAULT '0', `created_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified_user_id` int(10) unsigned NOT NULL, `modified_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `review_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `publish_up` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `publish_down` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_category_id` (`catid`) ) DEFAULT CHARSET=utf8; PKb��\j ʵM�M0components/com_admin/sql/updates/mysql/3.2.0.sqlnu�[���/* Core 3.2 schema updates */ ALTER TABLE `#__content_types` ADD COLUMN `content_history_options` VARCHAR(5120) NOT NULL COMMENT 'JSON string for com_contenthistory options'; UPDATE `#__content_types` SET `content_history_options` = '{"formFile":"administrator\\/components\\/com_content\\/models\\/forms\\/article.xml", "hideFields":["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":["modified_by", "modified", "checked_out", "checked_out_time", "version", "hits"],"convertToInt":["publish_up", "publish_down", "featured", "ordering"],"displayLookup":[{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"created_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"} ]}' WHERE `type_alias` = 'com_content.article'; UPDATE `#__content_types` SET `content_history_options` = '{"formFile":"administrator\\/components\\/com_contact\\/models\\/forms\\/contact.xml","hideFields":["default_con","checked_out","checked_out_time","version","xreference"],"ignoreChanges":["modified_by", "modified", "checked_out", "checked_out_time", "version", "hits"],"convertToInt":["publish_up", "publish_down", "featured", "ordering"], "displayLookup":[ {"sourceColumn":"created_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"} ] }' WHERE `type_alias` = 'com_contact.contact'; UPDATE `#__content_types` SET `content_history_options` = '{"formFile":"administrator\\/components\\/com_categories\\/models\\/forms\\/category.xml", "hideFields":["asset_id","checked_out","checked_out_time","version","lft","rgt","level","path","extension"], "ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"],"convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}' WHERE `type_alias` IN ('com_content.category', 'com_contact.category', 'com_newsfeeds.category'); UPDATE `#__content_types` SET `content_history_options` = '{"formFile":"administrator\\/components\\/com_newsfeeds\\/models\\/forms\\/newsfeed.xml","hideFields":["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":["modified_by", "modified", "checked_out", "checked_out_time", "version", "hits"],"convertToInt":["publish_up", "publish_down", "featured", "ordering"],"displayLookup":[{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"created_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}]}' WHERE `type_alias` = 'com_newsfeeds.newsfeed'; UPDATE `#__content_types` SET `content_history_options` = '{"formFile":"administrator\\/components\\/com_tags\\/models\\/forms\\/tag.xml", "hideFields":["checked_out","checked_out_time","version", "lft", "rgt", "level", "path", "urls", "publish_up", "publish_down"],"ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"],"convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}, {"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"}, {"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}]}' WHERE `type_alias` = 'com_tags.tag'; INSERT INTO `#__content_types` (`type_title`, `type_alias`, `table`, `rules`, `field_mappings`, `router`, `content_history_options`) VALUES ('Banner', 'com_banners.banner', '{"special":{"dbtable":"#__banners","key":"id","type":"Banner","prefix":"BannersTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":{"core_content_item_id":"id","core_title":"name","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"description", "core_hits":"null","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"link", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"null", "asset_id":"null"}, "special":{"imptotal":"imptotal", "impmade":"impmade", "clicks":"clicks", "clickurl":"clickurl", "custombannercode":"custombannercode", "cid":"cid", "purchase_type":"purchase_type", "track_impressions":"track_impressions", "track_clicks":"track_clicks"}}', '', '{"formFile":"administrator\\/components\\/com_banners\\/models\\/forms\\/banner.xml", "hideFields":["checked_out","checked_out_time","version", "reset"],"ignoreChanges":["modified_by", "modified", "checked_out", "checked_out_time", "version", "imptotal", "impmade", "reset"], "convertToInt":["publish_up", "publish_down", "ordering"], "displayLookup":[{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}, {"sourceColumn":"cid","targetTable":"#__banner_clients","targetColumn":"id","displayColumn":"name"}, {"sourceColumn":"created_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"modified_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}]}'), ('Banners Category', 'com_banners.category', '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special": {"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}', '', '{"formFile":"administrator\\/components\\/com_categories\\/models\\/forms\\/category.xml", "hideFields":["asset_id","checked_out","checked_out_time","version","lft","rgt","level","path","extension"], "ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"], "convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}'), ('Banner Client', 'com_banners.client', '{"special":{"dbtable":"#__banner_clients","key":"id","type":"Client","prefix":"BannersTable"}}', '', '', '', '{"formFile":"administrator\\/components\\/com_banners\\/models\\/forms\\/client.xml", "hideFields":["checked_out","checked_out_time"], "ignoreChanges":["checked_out", "checked_out_time"], "convertToInt":[], "displayLookup":[]}'), ('User Notes', 'com_users.note', '{"special":{"dbtable":"#__user_notes","key":"id","type":"Note","prefix":"UsersTable"}}', '', '', '', '{"formFile":"administrator\\/components\\/com_users\\/models\\/forms\\/note.xml", "hideFields":["checked_out","checked_out_time", "publish_up", "publish_down"],"ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time"], "convertToInt":["publish_up", "publish_down"],"displayLookup":[{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}, {"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}, {"sourceColumn":"user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}, {"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}]}'), ('User Notes Category', 'com_users.category', '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special":{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}', '', '{"formFile":"administrator\\/components\\/com_categories\\/models\\/forms\\/category.xml", "hideFields":["checked_out","checked_out_time","version","lft","rgt","level","path","extension"], "ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"], "convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}, {"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}'); UPDATE `#__extensions` SET `params` = '{"template_positions_display":"0","upload_limit":"2","image_formats":"gif,bmp,jpg,jpeg,png","source_formats":"txt,less,ini,xml,js,php,css","font_formats":"woff,ttf,otf","compressed_formats":"zip"}' WHERE `extension_id` = 20; UPDATE `#__extensions` SET `params` = '{"lineNumbers":"1","lineWrapping":"1","matchTags":"1","matchBrackets":"1","marker-gutter":"1","autoCloseTags":"1","autoCloseBrackets":"1","autoFocus":"1","theme":"default","tabmode":"indent"}' WHERE `extension_id` = 410; INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES (30, 'com_contenthistory', 'component', 'com_contenthistory', '', 1, 1, 1, 0, '{"name":"com_contenthistory","type":"component","creationDate":"May 2013","author":"Joomla! Project","copyright":"(C) 2005 - 2015 Open Source Matters. All rights reserved.\\n\\t","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.2.0","description":"COM_CONTENTHISTORY_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0), (31, 'com_ajax', 'component', 'com_ajax', '', 1, 1, 1, 0, '{"name":"com_ajax","type":"component","creationDate":"August 2013","author":"Joomla! Project","copyright":"(C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.2.0","description":"COM_AJAX_DESC","group":""}', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0), (32, 'com_postinstall', 'component', 'com_postinstall', '', 1, 1, 1, 1, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0), (105, 'FOF', 'library', 'fof', '', 0, 1, 1, 1, '{"legacy":false,"name":"FOF","type":"library","creationDate":"2013-10-08","author":"Nicholas K. Dionysopoulos \/ Akeeba Ltd","copyright":"(C)2011-2013 Nicholas K. Dionysopoulos","authorEmail":"nicholas@akeebabackup.com","authorUrl":"https:\/\/www.akeebabackup.com","version":"2.1.rc4","description":"Framework-on-Framework (FOF) - A rapid component development framework for Joomla!","group":""}', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0), (448, 'plg_twofactorauth_totp', 'plugin', 'totp', 'twofactorauth', 0, 0, 1, 0, '{"name":"plg_twofactorauth_totp","type":"plugin","creationDate":"August 2013","author":"Joomla! Project","copyright":"(C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.2.0","description":"PLG_TWOFACTORAUTH_TOTP_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0), (449, 'plg_authentication_cookie', 'plugin', 'cookie', 'authentication', 0, 1, 1, 0, '{"name":"plg_authentication_cookie","type":"plugin","creationDate":"July 2013","author":"Joomla! Project","copyright":"Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.0.0","description":"PLG_AUTH_COOKIE_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0), (450, 'plg_twofactorauth_yubikey', 'plugin', 'yubikey', 'twofactorauth', 0, 0, 1, 0, '{"name":"plg_twofactorauth_yubikey","type":"plugin","creationDate":"Se[ptember 2013","author":"Joomla! Project","copyright":"(C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.2.0","description":"PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0); INSERT INTO `#__menu` (`menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`) VALUES ('main', 'com_postinstall', 'Post-installation messages', '', 'Post-installation messages', 'index.php?option=com_postinstall', 'component', 0, 1, 1, 32, 0, '0000-00-00 00:00:00', 0, 1, 'class:postinstall', 0, '', 45, 46, 0, '*', 1); ALTER TABLE `#__modules` ADD COLUMN `asset_id` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'FK to the #__assets table.' AFTER `id`; CREATE TABLE `#__postinstall_messages` ( `postinstall_message_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `extension_id` bigint(20) NOT NULL DEFAULT '700' COMMENT 'FK to #__extensions', `title_key` varchar(255) NOT NULL DEFAULT '' COMMENT 'Lang key for the title', `description_key` varchar(255) NOT NULL DEFAULT '' COMMENT 'Lang key for description', `action_key` varchar(255) NOT NULL DEFAULT '', `language_extension` varchar(255) NOT NULL DEFAULT 'com_postinstall' COMMENT 'Extension holding lang keys', `language_client_id` tinyint(3) NOT NULL DEFAULT '1', `type` varchar(10) NOT NULL DEFAULT 'link' COMMENT 'Message type - message, link, action', `action_file` varchar(255) DEFAULT '' COMMENT 'RAD URI to the PHP file containing action method', `action` varchar(255) DEFAULT '' COMMENT 'Action method name or URL', `condition_file` varchar(255) DEFAULT NULL COMMENT 'RAD URI to file holding display condition method', `condition_method` varchar(255) DEFAULT NULL COMMENT 'Display condition method, must return boolean', `version_introduced` varchar(50) NOT NULL DEFAULT '3.2.0' COMMENT 'Version when this message was introduced', `enabled` tinyint(3) NOT NULL DEFAULT '1', PRIMARY KEY (`postinstall_message_id`) ) DEFAULT CHARSET=utf8; INSERT INTO `#__postinstall_messages` (`extension_id`, `title_key`, `description_key`, `action_key`, `language_extension`, `language_client_id`, `type`, `action_file`, `action`, `condition_file`, `condition_method`, `version_introduced`, `enabled`) VALUES (700, 'PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_TITLE', 'PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_BODY', 'PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_ACTION', 'plg_twofactorauth_totp', 1, 'action', 'site://plugins/twofactorauth/totp/postinstall/actions.php', 'twofactorauth_postinstall_action', 'site://plugins/twofactorauth/totp/postinstall/actions.php', 'twofactorauth_postinstall_condition', '3.2.0', 1), (700, 'COM_CPANEL_MSG_EACCELERATOR_TITLE', 'COM_CPANEL_MSG_EACCELERATOR_BODY', 'COM_CPANEL_MSG_EACCELERATOR_BUTTON', 'com_cpanel', 1, 'action', 'admin://components/com_admin/postinstall/eaccelerator.php', 'admin_postinstall_eaccelerator_action', 'admin://components/com_admin/postinstall/eaccelerator.php', 'admin_postinstall_eaccelerator_condition', '3.2.0', 1); CREATE TABLE IF NOT EXISTS `#__ucm_history` ( `version_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `ucm_item_id` int(10) unsigned NOT NULL, `ucm_type_id` int(10) unsigned NOT NULL, `version_note` varchar(255) NOT NULL DEFAULT '' COMMENT 'Optional version name', `save_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `editor_user_id` int(10) unsigned NOT NULL DEFAULT '0', `character_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Number of characters in this version.', `sha1_hash` varchar(50) NOT NULL DEFAULT '' COMMENT 'SHA1 hash of the version_data column.', `version_data` mediumtext NOT NULL COMMENT 'json-encoded string of version data', `keep_forever` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0=auto delete; 1=keep', PRIMARY KEY (`version_id`), KEY `idx_ucm_item_id` (`ucm_type_id`,`ucm_item_id`), KEY `idx_save_date` (`save_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE `#__users` ADD COLUMN `otpKey` varchar(1000) NOT NULL DEFAULT '' COMMENT 'Two factor authentication encrypted keys'; ALTER TABLE `#__users` ADD COLUMN `otep` varchar(1000) NOT NULL DEFAULT '' COMMENT 'One time emergency passwords'; CREATE TABLE IF NOT EXISTS `#__user_keys` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `user_id` varchar(255) NOT NULL, `token` varchar(255) NOT NULL, `series` varchar(255) NOT NULL, `invalid` tinyint(4) NOT NULL, `time` varchar(200) NOT NULL, `uastring` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `series` (`series`), UNIQUE KEY `series_2` (`series`), UNIQUE KEY `series_3` (`series`), KEY `user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /* Update bad params for two cpanel modules */ UPDATE `#__modules` SET `params` = REPLACE(`params`, '"bootstrap_size":"1"', '"bootstrap_size":"0"') WHERE `id` IN (3,4); PKb��\��J�F�F0components/com_admin/sql/updates/mysql/3.1.0.sqlnu�[���-- -- Table structure for table `#__content_types` -- CREATE TABLE IF NOT EXISTS `#__content_types` ( `type_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `type_title` varchar(255) NOT NULL DEFAULT '', `type_alias` varchar(255) NOT NULL DEFAULT '', `table` varchar(255) NOT NULL DEFAULT '', `rules` text NOT NULL, `field_mappings` text NOT NULL, `router` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`type_id`), KEY `idx_alias` (`type_alias`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=10000; -- -- Dumping data for table `#__content_types` -- INSERT INTO `#__content_types` (`type_id`, `type_title`, `type_alias`, `table`, `rules`, `field_mappings`,`router`) VALUES (1, 'Article', 'com_content.article', '{"special":{"dbtable":"#__content","key":"id","type":"Content","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":[{"core_content_item_id":"id","core_title":"title","core_state":"state","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"introtext", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"attribs", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"urls", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"asset_id"}], "special": [{"fulltext":"fulltext"}]}','ContentHelperRoute::getArticleRoute'), (2, 'Contact', 'com_contact.contact', '{"special":{"dbtable":"#__contact_details","key":"id","type":"Contact","prefix":"ContactTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":[{"core_content_item_id":"id","core_title":"name","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"address", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"image", "core_urls":"webpage", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"null"}], "special": [{"con_position":"con_position","suburb":"suburb","state":"state","country":"country","postcode":"postcode","telephone":"telephone","fax":"fax","misc":"misc","email_to":"email_to","default_con":"default_con","user_id":"user_id","mobile":"mobile","sortname1":"sortname1","sortname2":"sortname2","sortname3":"sortname3"}]}','ContactHelperRoute::getContactRoute'), (3, 'Newsfeed', 'com_newsfeeds.newsfeed', '{"special":{"dbtable":"#__newsfeeds","key":"id","type":"Newsfeed","prefix":"NewsfeedsTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":[{"core_content_item_id":"id","core_title":"name","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"description", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"link", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"null"}], "special": [{"numarticles":"numarticles","cache_time":"cache_time","rtl":"rtl"}]}','NewsfeedsHelperRoute::getNewsfeedRoute'), (4, 'User', 'com_users.user', '{"special":{"dbtable":"#__users","key":"id","type":"User","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":[{"core_content_item_id":"id","core_title":"name","core_state":"null","core_alias":"username","core_created_time":"registerdate","core_modified_time":"lastvisitDate","core_body":"null", "core_hits":"null","core_publish_up":"null","core_publish_down":"null","access":"null", "core_params":"params", "core_featured":"null", "core_metadata":"null", "core_language":"null", "core_images":"null", "core_urls":"null", "core_version":"null", "core_ordering":"null", "core_metakey":"null", "core_metadesc":"null", "core_catid":"null", "core_xreference":"null", "asset_id":"null"}], "special": [{}]}','UsersHelperRoute::getUserRoute'), (5, 'Article Category', 'com_content.category', '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":[{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}], "special": [{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}]}','ContentHelperRoute::getCategoryRoute'), (6, 'Contact Category', 'com_contact.category', '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":[{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}], "special": [{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}]}','ContactHelperRoute::getCategoryRoute'), (7, 'Newsfeeds Category', 'com_newsfeeds.category', '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":[{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}], "special": [{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}]}','NewsfeedsHelperRoute::getCategoryRoute'), (8, 'Tag', 'com_tags.tag', '{"special":{"dbtable":"#__tags","key":"tag_id","type":"Tag","prefix":"TagsTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":[{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"urls", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"null", "core_xreference":"null", "asset_id":"null"}], "special": [{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path"}]}','TagsHelperRoute::getTagRoute'); CREATE TABLE IF NOT EXISTS `#__contentitem_tag_map` ( `type_alias` varchar(255) NOT NULL DEFAULT '', `core_content_id` int(10) unsigned NOT NULL COMMENT 'PK from the core content table', `content_item_id` int(11) NOT NULL COMMENT 'PK from the content type table', `tag_id` int(10) unsigned NOT NULL COMMENT 'PK from the tag table', `tag_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Date of most recent save for this tag-item', `type_id` mediumint(8) NOT NULL COMMENT 'PK from the content_type table', UNIQUE KEY `uc_ItemnameTagid` (`type_id`,`content_item_id`,`tag_id`), KEY `idx_tag_type` (`tag_id`,`type_id`), KEY `idx_date_id` (`tag_date`,`tag_id`), KEY `idx_tag` (`tag_id`), KEY `idx_type` (`type_id`), KEY `idx_core_content_id` (`core_content_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Maps items from content tables to tags'; CREATE TABLE IF NOT EXISTS `#__tags` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `parent_id` int(10) unsigned NOT NULL DEFAULT '0', `lft` int(11) NOT NULL DEFAULT '0', `rgt` int(11) NOT NULL DEFAULT '0', `level` int(10) unsigned NOT NULL DEFAULT '0', `path` varchar(255) NOT NULL DEFAULT '', `title` varchar(255) NOT NULL, `alias` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `note` varchar(255) NOT NULL DEFAULT '', `description` mediumtext NOT NULL, `published` tinyint(1) NOT NULL DEFAULT '0', `checked_out` int(11) unsigned NOT NULL DEFAULT '0', `checked_out_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `access` int(10) unsigned NOT NULL DEFAULT '0', `params` text NOT NULL, `metadesc` varchar(1024) NOT NULL COMMENT 'The meta description for the page.', `metakey` varchar(1024) NOT NULL COMMENT 'The meta keywords for the page.', `metadata` varchar(2048) NOT NULL COMMENT 'JSON encoded metadata properties.', `created_user_id` int(10) unsigned NOT NULL DEFAULT '0', `created_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `created_by_alias` varchar(255) NOT NULL DEFAULT '', `modified_user_id` int(10) unsigned NOT NULL DEFAULT '0', `modified_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `images` text NOT NULL, `urls` text NOT NULL, `hits` int(10) unsigned NOT NULL DEFAULT '0', `language` char(7) NOT NULL, `version` int(10) unsigned NOT NULL DEFAULT '1', `publish_up` datetime NOT NULL default '0000-00-00 00:00:00', `publish_down` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`id`), KEY `tag_idx` (`published`,`access`), KEY `idx_access` (`access`), KEY `idx_checkout` (`checked_out`), KEY `idx_path` (`path`), KEY `idx_left_right` (`lft`,`rgt`), KEY `idx_alias` (`alias`), KEY `idx_language` (`language`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `#__tags` -- INSERT INTO `#__tags` (`id`, `parent_id`, `lft`, `rgt`, `level`, `path`, `title`, `alias`, `note`, `description`, `published`, `checked_out`, `checked_out_time`, `access`, `params`, `metadesc`, `metakey`, `metadata`, `created_user_id`, `created_time`,`created_by_alias`, `modified_user_id`, `modified_time`, `images`, `urls`, `hits`, `language`, `version`) VALUES (1, 0, 0, 1, 0, '', 'ROOT', 'root', '', '', 1, 0, '0000-00-00 00:00:00', 1, '{}', '', '', '', '', '2011-01-01 00:00:01','', 0, '0000-00-00 00:00:00', '', '', 0, '*', 1); -- -- Table structure for table `#__ucm_base` -- CREATE TABLE IF NOT EXISTS `#__ucm_base` ( `ucm_id` int(10) unsigned NOT NULL, `ucm_item_id` int(10) NOT NULL, `ucm_type_id` int(11) NOT NULL, `ucm_language_id` int(11) NOT NULL, PRIMARY KEY (`ucm_id`), KEY `idx_ucm_item_id` (`ucm_item_id`), KEY `idx_ucm_type_id` (`ucm_type_id`), KEY `idx_ucm_language_id` (`ucm_language_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `#__ucm_content` ( `core_content_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `core_type_alias` varchar(255) NOT NULL DEFAULT '' COMMENT 'FK to the content types table', `core_title` varchar(255) NOT NULL, `core_alias` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', `core_body` mediumtext NOT NULL, `core_state` tinyint(1) NOT NULL DEFAULT '0', `core_checked_out_time` varchar(255) NOT NULL DEFAULT '', `core_checked_out_user_id` int(10) unsigned NOT NULL DEFAULT '0', `core_access` int(10) unsigned NOT NULL DEFAULT '0', `core_params` text NOT NULL, `core_featured` tinyint(4) unsigned NOT NULL DEFAULT '0', `core_metadata` varchar(2048) NOT NULL COMMENT 'JSON encoded metadata properties.', `core_created_user_id` int(10) unsigned NOT NULL DEFAULT '0', `core_created_by_alias` varchar(255) NOT NULL DEFAULT '', `core_created_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `core_modified_user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Most recent user that modified', `core_modified_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `core_language` char(7) NOT NULL, `core_publish_up` datetime NOT NULL, `core_publish_down` datetime NOT NULL, `core_content_item_id` int(10) unsigned COMMENT 'ID from the individual type table', `asset_id` int(10) unsigned COMMENT 'FK to the #__assets table.', `core_images` text NOT NULL, `core_urls` text NOT NULL, `core_hits` int(10) unsigned NOT NULL DEFAULT '0', `core_version` int(10) unsigned NOT NULL DEFAULT '1', `core_ordering` int(11) NOT NULL DEFAULT '0', `core_metakey` text NOT NULL, `core_metadesc` text NOT NULL, `core_catid` int(10) unsigned NOT NULL DEFAULT '0', `core_xreference` varchar(50) NOT NULL COMMENT 'A reference to enable linkages to external data sets.', `core_type_id` int(10) unsigned, PRIMARY KEY (`core_content_id`), KEY `tag_idx` (`core_state`,`core_access`), KEY `idx_access` (`core_access`), KEY `idx_alias` (`core_alias`), KEY `idx_language` (`core_language`), KEY `idx_title` (`core_title`), KEY `idx_modified_time` (`core_modified_time`), KEY `idx_created_time` (`core_created_time`), KEY `idx_content_type` (`core_type_alias`), KEY `idx_core_modified_user_id` (`core_modified_user_id`), KEY `idx_core_checked_out_user_id` (`core_checked_out_user_id`), KEY `idx_core_created_user_id` (`core_created_user_id`), KEY `idx_core_type_id` (`core_type_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Contains core content data in name spaced fields'; INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES (29, 'com_tags', 'component', 'com_tags', '', 1, 1, 1, 1, '{"legacy":false,"name":"com_tags","type":"component","creationDate":"March 2013","author":"Joomla! Project","copyright":"(C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.0.0","description":"COM_TAGS_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0), (316, 'mod_tags_popular', 'module', 'mod_tags_popular', '', 0, 1, 1, 0, '{"name":"mod_tags_popular","type":"module","creationDate":"January 2013","author":"Joomla! Project","copyright":"Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.1.0","description":"MOD_TAGS_POPULAR_XML_DESCRIPTION","group":""}', '{"maximum":"5","timeframe":"alltime","owncache":"1"}', '', '', 0, '0000-00-00 00:00:00', 0, 0), (317, 'mod_tags_similar', 'module', 'mod_tags_similar', '', 0, 1, 1, 0, '{"name":"mod_tags_similar","type":"module","creationDate":"January 2013","author":"Joomla! Project","copyright":"Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.1.0","description":"MOD_TAGS_SIMILAR_XML_DESCRIPTION","group":""}', '{"maximum":"5","matchtype":"any","owncache":"1"}', '', '', 0, '0000-00-00 00:00:00', 0, 0), (447, 'plg_finder_tags', 'plugin', 'tags', 'finder', 0, 1, 1, 0, '{"name":"plg_finder_tags","type":"plugin","creationDate":"February 2013","author":"Joomla! Project","copyright":"(C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.0.0","description":"PLG_FINDER_TAGS_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0); INSERT INTO `#__menu` (`menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`) VALUES ('main', 'com_tags', 'Tags', '', 'Tags', 'index.php?option=com_tags', 'component', 0, 1, 1, 29, 0, '0000-00-00 00:00:00', 0, 1, 'class:tags', 0, '', 45, 46, 0, '', 1); PKb��\�m�WW;components/com_admin/sql/updates/mysql/2.5.0-2011-12-06.sqlnu�[���INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES (437, 'plg_quickicon_joomlaupdate', 'plugin', 'joomlaupdate', 'quickicon', 0, 1, 1, 1, '', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0), (438, 'plg_quickicon_extensionupdate', 'plugin', 'extensionupdate', 'quickicon', 0, 1, 1, 1, '', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0); ALTER TABLE `#__update_sites` ADD COLUMN `last_check_timestamp` bigint(20) DEFAULT '0' AFTER `enabled`; REPLACE INTO `#__update_sites` VALUES (1, 'Joomla Core', 'collection', 'http://update.joomla.org/core/list.xml', 1, 0), (2, 'Joomla Extension Directory', 'collection', 'http://update.joomla.org/jed/list.xml', 1, 0); PKb��\_�88;components/com_admin/sql/updates/mysql/3.4.0-2014-10-20.sqlnu�[���DELETE FROM `#__extensions` WHERE `extension_id` = 100; PKb��\S�0components/com_admin/sql/updates/mysql/2.5.7.sqlnu�[���INSERT INTO `#__update_sites` (`name`, `type`, `location`, `enabled`, `last_check_timestamp`) VALUES('Accredited Joomla! Translations','collection','http://update.joomla.org/language/translationlist.xml',1,0);INSERT INTO `#__update_sites_extensions` (`update_site_id`, `extension_id`) VALUES(LAST_INSERT_ID(),600);UPDATE `#__assets` SET name=REPLACE( name, 'com_user.notes.category','com_users.category' );UPDATE `#__categories` SET extension=REPLACE( extension, 'com_user.notes.category','com_users.category' );PKb��\BU��>components/com_admin/sql/updates/sqlazure/3.4.0-2015-02-26.sqlnu�[���INSERT INTO [#__postinstall_messages] ([extension_id], [title_key], [description_key], [action_key], [language_extension], [language_client_id], [type], [action_file], [action], [condition_file], [condition_method], [version_introduced], [enabled]) SELECT 700, 'COM_CPANEL_MSG_LANGUAGEACCESS340_TITLE', 'COM_CPANEL_MSG_LANGUAGEACCESS340_BODY', '', 'com_cpanel', 1, 'message', '', '', 'admin://components/com_admin/postinstall/languageaccess340.php', 'admin_postinstall_languageaccess340_condition', '3.4.1', 1; PKb��\)0�g::3components/com_admin/sql/updates/sqlazure/3.1.3.sqlnu�[���# Placeholder file for database changes for version 3.1.3 PKb��\�~����>components/com_admin/sql/updates/sqlazure/3.4.0-2014-12-03.sqlnu�[���UPDATE [#__extensions] SET [protected] = '0' WHERE [name] = 'plg_editors-xtd_article' AND [type] = "plugin" AND [element] = "article" AND [folder] = "editors-xtd"; PKb��\_a��VV>components/com_admin/sql/updates/sqlazure/3.3.4-2014-08-03.sqlnu�[���ALTER TABLE [#__user_profiles] ALTER COLUMN [profile_value] [nvarchar](max) NOT NULL; PKb��\S����>components/com_admin/sql/updates/sqlazure/3.3.0-2014-04-02.sqlnu�[���SET IDENTITY_INSERT [#__extensions] ON; INSERT [#__extensions] ([extension_id], [name], [type], [element], [folder], [client_id], [enabled], [access], [protected], [manifest_cache], [params], [custom_data], [system_data], [checked_out], [checked_out_time], [ordering], [state]) SELECT 451, 'plg_search_tags', 'plugin', 'tags', 'search', 0, 0, 1, 0, '', '{"search_limit":"50","show_tagged_items":"1"}', '', '', 0, '1900-01-01 00:00:00', 0, 0; SET IDENTITY_INSERT #__extensions OFF; PKb��\��/993components/com_admin/sql/updates/sqlazure/3.0.2.sqlnu�[���# Placeholder file for database changes for version 3.0.2PKb��\i��hh3components/com_admin/sql/updates/sqlazure/3.2.1.sqlnu�[���DELETE FROM [#__postinstall_messages] WHERE [title_key] = 'PLG_USER_JOOMLA_POSTINSTALL_STRONGPW_TITLE'; PKb��\�Ù��>components/com_admin/sql/updates/sqlazure/3.3.6-2014-09-30.sqlnu�[���INSERT INTO [#__update_sites] ([name], [type], [location], [enabled]) SELECT 'Joomla! Update Component Update Site', 'extension', 'http://update.joomla.org/core/extensions/com_joomlaupdate.xml', 1; INSERT INTO [#__update_sites_extensions] ([update_site_id], [extension_id]) SELECT (SELECT [update_site_id] FROM [#__update_sites] WHERE [name] = 'Joomla! Update Component Update Site'), (SELECT [extension_id] FROM [#__extensions] WHERE [name] = 'com_joomlaupdate'); PKb��\��,QQ>components/com_admin/sql/updates/sqlazure/2.5.4-2012-03-19.sqlnu�[���ALTER TABLE [#__languages] ADD [access] INTEGER CONSTRAINT DF_languages_access DEFAULT '' NOT NULL CREATE UNIQUE INDEX idx_access ON [#__languages] (access); UPDATE [#__categories] SET extension = 'com_users.notes' WHERE extension = 'com_users'; UPDATE [#__extensions] SET enabled = '1' WHERE protected = '1' AND [type] <> 'plugin'; PKb��\t�&Ӭ�>components/com_admin/sql/updates/sqlazure/3.2.2-2013-12-28.sqlnu�[���UPDATE [#__menu] SET [component_id] = (SELECT [extension_id] FROM [#__extensions] WHERE [element] = 'com_joomlaupdate') WHERE [link] = 'index.php?option=com_joomlaupdate'; PKb��\*x�p�"�"3components/com_admin/sql/updates/sqlazure/3.1.2.sqlnu�[���UPDATE [#__content_types] SET [table] = '{"special":{"dbtable":"#__content","key":"id","type":"Content","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE [type_title] = 'Article'; UPDATE [#__content_types] SET [table] = '{"special":{"dbtable":"#__contact_details","key":"id","type":"Contact","prefix":"ContactTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE [type_title] = 'Contact'; UPDATE [#__content_types] SET [table] = '{"special":{"dbtable":"#__newsfeeds","key":"id","type":"Newsfeed","prefix":"NewsfeedsTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE [type_title] = 'Newsfeed'; UPDATE [#__content_types] SET [table] = '{"special":{"dbtable":"#__users","key":"id","type":"User","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE [type_title] = 'User'; UPDATE [#__content_types] SET [table] = '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE [type_title] = 'Article Category'; UPDATE [#__content_types] SET [table] = '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE [type_title] = 'Contact Category'; UPDATE [#__content_types] SET [table] = '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE [type_title] = 'Newsfeeds Category'; UPDATE [#__content_types] SET [table] = '{"special":{"dbtable":"#__tags","key":"tag_id","type":"Tag","prefix":"TagsTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE [type_title] = 'Tag'; UPDATE [#__content_types] SET [field_mappings] = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"state","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"introtext", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"attribs", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"urls", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"asset_id"}, "special": {"fulltext":"fulltext"}}' WHERE [type_tag] = 'Article'; UPDATE [#__content_types] SET [field_mappings] = '{"common":{"core_content_item_id":"id","core_title":"name","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"address", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"image", "core_urls":"webpage", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"null"}, "special": {"con_position":"con_position","suburb":"suburb","state":"state","country":"country","postcode":"postcode","telephone":"telephone","fax":"fax","misc":"misc","email_to":"email_to","default_con":"default_con","user_id":"user_id","mobile":"mobile","sortname1":"sortname1","sortname2":"sortname2","sortname3":"sortname3"}}' WHERE [type_tag] = 'Contact'; UPDATE [#__content_types] SET [field_mappings] = '{"common":{"core_content_item_id":"id","core_title":"name","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"description", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"link", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"null"}, "special": {"numarticles":"numarticles","cache_time":"cache_time","rtl":"rtl"}}' WHERE [type_tag] = 'Newsfeed'; UPDATE [#__content_types] SET [field_mappings] = '{"common":{"core_content_item_id":"id","core_title":"name","core_state":"null","core_alias":"username","core_created_time":"registerdate","core_modified_time":"lastvisitDate","core_body":"null", "core_hits":"null","core_publish_up":"null","core_publish_down":"null","access":"null", "core_params":"params", "core_featured":"null", "core_metadata":"null", "core_language":"null", "core_images":"null", "core_urls":"null", "core_version":"null", "core_ordering":"null", "core_metakey":"null", "core_metadesc":"null", "core_catid":"null", "core_xreference":"null", "asset_id":"null"}, "special": {}}' WHERE [type_tag] = 'User'; UPDATE [#__content_types] SET [field_mappings] = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special": {"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}' WHERE [type_tag] = 'Article Category'; UPDATE [#__content_types] SET [field_mappings] = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special": {"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}' WHERE [type_tag] = 'Contact Category'; UPDATE [#__content_types] SET [field_mappings] = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special": {"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}' WHERE [type_tag] = 'Newsfeeds Category'; UPDATE [#__content_types] SET [field_mappings] = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"urls", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"null", "core_xreference":"null", "asset_id":"null"}, "special": {"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path"}}' WHERE [type_tag] = 'Tag'; PKb��\��g�EE>components/com_admin/sql/updates/sqlazure/3.3.0-2014-02-16.sqlnu�[���ALTER TABLE [#__users] ADD [requireReset] [smallint] NULL DEFAULT 0; PKb��\�VAY��3components/com_admin/sql/updates/sqlazure/3.1.4.sqlnu�[���SET IDENTITY_INSERT #__extensions ON; INSERT INTO #__extensions (extension_id, name, type, element, folder, client_id, enabled, access, protected, manifest_cache, params, custom_data, system_data, checked_out, checked_out_time, ordering, state) SELECT 104, 'IDNA Convert', 'library', 'idna_convert', '', 0, 1, 1, 1, '', '', '', '', 0, '1900-01-01 00:00:00', 0, 0; SET IDENTITY_INSERT #__extensions OFF; PKb��\���1::3components/com_admin/sql/updates/sqlazure/3.1.5.sqlnu�[���# Placeholder file for database changes for version 3.1.5 PKb��\��D���>components/com_admin/sql/updates/sqlazure/3.4.0-2014-08-24.sqlnu�[���INSERT INTO #__postinstall_messages ([extension_id], [title_key], [description_key], [action_key], [language_extension], [language_client_id], [type], [action_file], [action], [condition_file], [condition_method], [version_introduced], [enabled]) SELECT 700, 'COM_CPANEL_MSG_HTACCESS_TITLE', 'COM_CPANEL_MSG_HTACCESS_BODY', '', 'com_cpanel', 1, 'message', '', '', 'admin://components/com_admin/postinstall/htaccess.php', 'admin_postinstall_htaccess_condition', '3.4.0', 1; PKb��\ު"}}>components/com_admin/sql/updates/sqlazure/3.4.0-2015-01-21.sqlnu�[���INSERT INTO [#__postinstall_messages] ([extension_id], [title_key], [description_key], [action_key], [language_extension], [language_client_id], [type], [action_file], [action], [condition_file], [condition_method], [version_introduced], [enabled]) SELECT 700, 'COM_CPANEL_MSG_ROBOTS_TITLE', 'COM_CPANEL_MSG_ROBOTS_BODY', '', 'com_cpanel', 1, 'message', '', '', '', '', '3.3.0', 1;PKb��\� &&>components/com_admin/sql/updates/sqlazure/2.5.2-2012-03-05.sqlnu�[���# Dummy SQL file to set schema versionPKb��\d�h���>components/com_admin/sql/updates/sqlazure/3.4.0-2014-09-16.sqlnu�[���ALTER TABLE [#__redirect_links] ADD [header] [smallint] NOT NULL DEFAULT 301; ALTER TABLE [#__redirect_links] ALTER COLUMN [new_url] [nvarchar](255) NULL;PKb��\T�993components/com_admin/sql/updates/sqlazure/2.5.6.sqlnu�[���# Placeholder file for database changes for version 2.5.6PKb��\���993components/com_admin/sql/updates/sqlazure/3.1.1.sqlnu�[���# Placeholder file for database changes for version 3.1.1PKb��\�� o��>components/com_admin/sql/updates/sqlazure/3.4.4-2015-07-11.sqlnu�[���ALTER TABLE [#__contentitem_tag_map] DROP CONSTRAINT [#__contentitem_tag_map$uc_ItemnameTagid]; ALTER TABLE [#__contentitem_tag_map] ADD CONSTRAINT [#__contentitem_tag_map$uc_ItemnameTagid] UNIQUE NONCLUSTERED ( [type_id] ASC, [content_item_id] ASC, [tag_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]; PKb��\��R��>components/com_admin/sql/updates/sqlazure/3.2.2-2014-01-15.sqlnu�[���INSERT INTO [#__postinstall_messages] ([extension_id], [title_key], [description_key], [action_key], [language_extension], [language_client_id], [type], [action_file], [action], [condition_file], [condition_method], [version_introduced], [enabled]) SELECT 700, 'COM_CPANEL_MSG_PHPVERSION_TITLE', 'COM_CPANEL_MSG_PHPVERSION_BODY', '', 'com_cpanel', 1, 'message', '', '', 'admin://components/com_admin/postinstall/phpversion.php', 'admin_postinstall_phpversion_condition', '3.2.2', 1; PKb��\��CYgg>components/com_admin/sql/updates/sqlazure/3.2.2-2014-01-18.sqlnu�[���/* Update updates version length */ ALTER TABLE [#__updates] ALTER COLUMN [version] [nvarchar](32) ''; PKb��\ּ1YY>components/com_admin/sql/updates/sqlazure/3.2.2-2014-01-23.sqlnu�[���INSERT [#__extensions] ([extension_id], [name], [type], [element], [folder], [client_id], [enabled], [access], [protected], [manifest_cache], [params], [custom_data], [system_data], [checked_out], [checked_out_time], [ordering], [state]) SELECT 106, 'PHPass', 'library', 'phpass', '', 0, 1, 1, 1, '', '', '', '', 0, '1900-01-01 00:00:00', 0, 0; PKb��\U����>components/com_admin/sql/updates/sqlazure/3.2.2-2014-01-08.sqlnu�[���SET IDENTITY_INSERT [#__extensions] ON; INSERT [#__extensions] ([extension_id], [name], [type], [element], [folder], [client_id], [enabled], [access], [protected], [manifest_cache], [params], [custom_data], [system_data], [checked_out], [checked_out_time], [ordering], [state]) SELECT 403, 'plg_content_contact', 'plugin', 'contact', 'content', 0, 1, 1, 0, '', '', '', '', 0, '1900-01-01 00:00:00', 1, 0; SET IDENTITY_INSERT #__extensions OFF; PKb��\B��W113components/com_admin/sql/updates/sqlazure/3.0.3.sqlnu�[���ALTER TABLE #__associations ALTER COLUMN id INT; PKb��\��::3components/com_admin/sql/updates/sqlazure/3.0.0.sqlnu�[���# Placeholder file for database changes for version 3.0.0 PKb��\� &&>components/com_admin/sql/updates/sqlazure/2.5.3-2012-03-13.sqlnu�[���# Dummy SQL file to set schema versionPKb��\Ԍ@��3components/com_admin/sql/updates/sqlazure/2.5.5.sqlnu�[���ALTER TABLE [#__redirect_links] ADD [hits] INTEGER CONSTRAINT DF_redirect_links_hits DEFAULT '' NOT NULL; ALTER TABLE [#__users] ADD [lastResetTime] [datetime] NOT NULL; ALTER TABLE [#__users] ADD [resetCount] [int] NOT NULL;PKb��\�5�::3components/com_admin/sql/updates/sqlazure/3.0.1.sqlnu�[���# Placeholder file for database changes for version 3.0.1 PKb��\�B� >components/com_admin/sql/updates/sqlazure/3.4.0-2014-09-01.sqlnu�[���SET IDENTITY_INSERT [#__extensions] ON; INSERT [#__extensions] ([extension_id], [name], [type], [element], [folder], [client_id], [enabled], [access], [protected], [manifest_cache], [params], [custom_data], [system_data], [checked_out], [checked_out_time], [ordering], [state]) SELECT 801, 'weblinks', 'package', 'pkg_weblinks', '', 0, 1, 1, 0, '', '', '', '', 0, '1900-01-01 00:00:00', 0, 0; SET IDENTITY_INSERT [#__extensions] OFF; INSERT [#__extensions] ([extension_id], [name], [type], [element], [folder], [client_id], [enabled], [access], [protected], [manifest_cache], [params], [custom_data], [system_data], [checked_out], [checked_out_time], [ordering], [state]) INSERT INTO [#__update_sites] ([name], [type], [location], [enabled]) SELECT 'Weblinks Update Site', 'extension', 'https://raw.githubusercontent.com/joomla-extensions/weblinks/master/manifest.xml', 1; INSERT INTO [#__update_sites_extensions] ([update_site_id], [extension_id]) SELECT (SELECT [update_site_id] FROM [#__update_sites] WHERE [name] = 'Weblinks Update Site'), 801; PKb��\qJ>��>components/com_admin/sql/updates/sqlazure/3.2.2-2013-12-22.sqlnu�[���ALTER TABLE [#__update_sites] ADD [extra_query] [nvarchar](1000) NULL DEFAULT ''; ALTER TABLE [#__updates] ADD [extra_query] [nvarchar](1000) NULL DEFAULT ''; PKb��\�Y�G��>components/com_admin/sql/updates/sqlazure/3.2.3-2014-02-20.sqlnu�[���UPDATE [#__extensions] SET [params] = (SELECT [params] FROM [#__extensions] WHERE [name] = 'plg_system_remember') WHERE [name] = 'plg_authentication_cookie';PKb��\�����>components/com_admin/sql/updates/sqlazure/2.5.4-2012-03-18.sqlnu�[���SET IDENTITY_INSERT #__extensions ON; INSERT INTO #__extensions (extension_id, name, type, element, folder, client_id, enabled, access, protected, manifest_cache, params, custom_data, system_data, checked_out, checked_out_time, ordering, state) SELECT 28, 'com_joomlaupdate', 'component', 'com_joomlaupdate', '', 1, 1, 0, 1, '{"legacy":false,"name":"com_joomlaupdate","type":"component","creationDate":"February 2012","author":"Joomla! Project","copyright":"(C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"2.5.2","description":"COM_JOOMLAUPDATE_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '1900-01-01 00:00:00', 0, 0; SET IDENTITY_INSERT #__extensions OFF; INSERT INTO #__menu (menutype, title, alias, note, path, link, type, published, parent_id, level, component_id, ordering, checked_out, checked_out_time, browserNav, access, img, template_style_id, params, lft, rgt, home, language, client_id) SELECT 'menu', 'com_joomlaupdate', 'Joomla! Update', '', 'Joomla! Update', 'index.php?option=com_joomlaupdate', 'component', 0, 1, 1, 28, 0, 0, '1900-01-01 00:00:00', 0, 0, 'class:joomlaupdate', 0, '', 41, 42, 0, '*', 1; PKb��\��1�L�L3components/com_admin/sql/updates/sqlazure/3.2.0.sqlnu�[���/* Core 3.2 schema updates */ ALTER TABLE [#__content_types] ADD [content_history_options] [nvarchar] (max) NULL; UPDATE [#__content_types] SET [content_history_options] = '{"formFile":"administrator\/components\/com_content\/models\/forms\/article.xml", "hideFields":["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":["modified_by", "modified", "checked_out", "checked_out_time", "version", "hits"],"convertToInt":["publish_up", "publish_down", "featured", "ordering"],"displayLookup":[{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"created_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"} ]}' WHERE [type_alias] = 'com_content.article'; UPDATE [#__content_types] SET [content_history_options] = '{"formFile":"administrator\/components\/com_contact\/models\/forms\/contact.xml","hideFields":["default_con","checked_out","checked_out_time","version","xreference"],"ignoreChanges":["modified_by", "modified", "checked_out", "checked_out_time", "version", "hits"],"convertToInt":["publish_up", "publish_down", "featured", "ordering"], "displayLookup":[ {"sourceColumn":"created_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"} ] }' WHERE [type_alias] = 'com_contact.contact'; UPDATE [#__content_types] SET [content_history_options] = '{"formFile":"administrator\/components\/com_categories\/models\/forms\/category.xml", "hideFields":["asset_id","checked_out","checked_out_time","version","lft","rgt","level","path","extension"], "ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"],"convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}' WHERE [type_alias] IN ('com_content.category', 'com_contact.category', 'com_newsfeeds.category'); UPDATE [#__content_types] SET [content_history_options] = '{"formFile":"administrator\/components\/com_newsfeeds\/models\/forms\/newsfeed.xml","hideFields":["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":["modified_by", "modified", "checked_out", "checked_out_time", "version", "hits"],"convertToInt":["publish_up", "publish_down", "featured", "ordering"],"displayLookup":[{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"created_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}]}' WHERE [type_alias] = 'com_newsfeeds.newsfeed'; UPDATE [#__content_types] SET [content_history_options] = '{"formFile":"administrator\/components\/com_tags\/models\/forms\/tag.xml", "hideFields":["checked_out","checked_out_time","version", "lft", "rgt", "level", "path", "urls", "publish_up", "publish_down"],"ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"],"convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}, {"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"}, {"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}]}' WHERE [type_alias] = 'com_tags.tag'; INSERT [#__content_types] ([type_title], [type_alias], [table], [rules], [field_mappings], [router], [content_history_options]) SELECT 'Banner', 'com_banners.banner', '{"special":{"dbtable":"#__banners","key":"id","type":"Banner","prefix":"BannersTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":{"core_content_item_id":"id","core_title":"name","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"description", "core_hits":"null","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"link", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"null", "asset_id":"null"}, "special":{"imptotal":"imptotal", "impmade":"impmade", "clicks":"clicks", "clickurl":"clickurl", "custombannercode":"custombannercode", "cid":"cid", "purchase_type":"purchase_type", "track_impressions":"track_impressions", "track_clicks":"track_clicks"}}', '', '{"formFile":"administrator\/components\/com_banners\/models\/forms\/banner.xml", "hideFields":["checked_out","checked_out_time","version", "reset"],"ignoreChanges":["modified_by", "modified", "checked_out", "checked_out_time", "version", "imptotal", "impmade", "reset"], "convertToInt":["publish_up", "publish_down", "ordering"], "displayLookup":[{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}, {"sourceColumn":"cid","targetTable":"#__banner_clients","targetColumn":"id","displayColumn":"name"}, {"sourceColumn":"created_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"modified_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}]}' UNION ALL SELECT 'Banners Category', 'com_banners.category', '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special": {"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}', '', '{"formFile":"administrator\/components\/com_categories\/models\/forms\/category.xml", "hideFields":["asset_id","checked_out","checked_out_time","version","lft","rgt","level","path","extension"], "ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"], "convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}' UNION ALL SELECT 'Banner Client', 'com_banners.client', '{"special":{"dbtable":"#__banner_clients","key":"id","type":"Client","prefix":"BannersTable"}}', '', '', '', '{"formFile":"administrator\/components\/com_banners\/models\/forms\/client.xml", "hideFields":["checked_out","checked_out_time"], "ignoreChanges":["checked_out", "checked_out_time"], "convertToInt":[], "displayLookup":[]}' UNION ALL SELECT 'User Notes', 'com_users.note', '{"special":{"dbtable":"#__user_notes","key":"id","type":"Note","prefix":"UsersTable"}}', '', '', '', '{"formFile":"administrator\/components\/com_users\/models\/forms\/note.xml", "hideFields":["checked_out","checked_out_time", "publish_up", "publish_down"],"ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time"], "convertToInt":["publish_up", "publish_down"],"displayLookup":[{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}, {"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}, {"sourceColumn":"user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}, {"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}]}' UNION ALL SELECT 'User Notes Category', 'com_users.category', '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special":{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}', '', '{"formFile":"administrator\/components\/com_categories\/models\/forms\/category.xml", "hideFields":["checked_out","checked_out_time","version","lft","rgt","level","path","extension"], "ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"], "convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}, {"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}'; UPDATE [#__extensions] SET [params] = '{"template_positions_display":"0","upload_limit":"2","image_formats":"gif,bmp,jpg,jpeg,png","source_formats":"txt,less,ini,xml,js,php,css","font_formats":"woff,ttf,otf","compressed_formats":"zip"}' WHERE [extension_id] = 20; UPDATE [#__extensions] SET [params] = '{"lineNumbers":"1","lineWrapping":"1","matchTags":"1","matchBrackets":"1","marker-gutter":"1","autoCloseTags":"1","autoCloseBrackets":"1","autoFocus":"1","theme":"default","tabmode":"indent"}' WHERE [extension_id] = 410; SET IDENTITY_INSERT [#__extensions] ON; INSERT [#__extensions] ([extension_id], [name], [type], [element], [folder], [client_id], [enabled], [access], [protected], [manifest_cache], [params], [custom_data], [system_data], [checked_out], [checked_out_time], [ordering], [state]) SELECT 30, 'com_contenthistory', 'component', 'com_contenthistory', '', 1, 1, 1, 0, '', '', '', '', 0, '1900-01-01 00:00:00', 0, 0 UNION ALL SELECT 31, 'com_ajax', 'component', 'com_ajax', '', 1, 1, 1, 0, '', '', '', '', 0, '1900-01-01 00:00:00', 0, 0 UNION ALL SELECT 32, 'com_postinstall', 'component', 'com_postinstall', '', 1, 1, 1, 1, '', '', '', '', 0, '1900-01-01 00:00:00', 0, 0 UNION ALL SELECT 105, 'FOF', 'library', 'fof', '', 0, 1, 1, 1, '', '', '', '', 0, '1900-01-01 00:00:00', 0, 0 UNION ALL SELECT 448, 'plg_twofactorauth_totp', 'plugin', 'totp', 'twofactorauth', 0, 0, 1, 0, '', '', '', '', 0, '1900-01-01 00:00:00', 0, 0 UNION ALL SELECT 449, 'plg_authentication_cookie', 'plugin', 'cookie', 'authentication', 0, 1, 1, 0, '', '', '', '', 0, '1900-01-01 00:00:00', 0, 0 UNION ALL SELECT 450, 'plg_twofactorauth_yubikey', 'plugin', 'yubikey', 'twofactorauth', 0, 0, 1, 0, '', '', '', '', 0, '1900-01-01 00:00:00', 0, 0; SET IDENTITY_INSERT [#__extensions] OFF; INSERT INTO [#__menu] ([menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) SELECT 'menu', 'com_postinstall', 'Post-installation messages', '', 'Post-installation messages', 'index.php?option=com_postinstall', 'component', 0, 1, 1, 32, 0, '1900-01-01 00:00:00', 0, 1, 'class:postinstall', 0, '', 45, 46, 0, '*', 1; ALTER TABLE [#__modules] ADD [asset_id] [bigint] NOT NULL DEFAULT 0; CREATE TABLE [#__postinstall_messages] ( [postinstall_message_id] [bigint] IDENTITY(1,1) NOT NULL, [extension_id] [bigint] NOT NULL DEFAULT 700, [title_key] [nvarchar](255) NOT NULL DEFAULT '', [description_key] [nvarchar](255) NOT NULL DEFAULT '', [action_key] [nvarchar](255) NOT NULL DEFAULT '', [language_extension] [nvarchar](255) NOT NULL DEFAULT 'com_postinstall', [language_client_id] [int] NOT NULL DEFAULT 1, [type] [nvarchar](10) NOT NULL DEFAULT 'link', [action_file] [nvarchar](255) DEFAULT '', [action] [nvarchar](255) DEFAULT '', [condition_file] [nvarchar](255) DEFAULT NULL, [condition_method] [nvarchar](255) DEFAULT NULL, [version_introduced] [nvarchar](50) NOT NULL DEFAULT '3.2.0', [enabled] [int] NOT NULL DEFAULT 1, CONSTRAINT [PK_#__postinstall_message_id] PRIMARY KEY CLUSTERED ( [postinstall_message_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]; INSERT INTO [#__postinstall_messages] ([extension_id], [title_key], [description_key], [action_key], [language_extension], [language_client_id], [type], [action_file], [action], [condition_file], [condition_method], [version_introduced], [enabled]) SELECT 700, 'PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_TITLE', 'PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_BODY', 'PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_ACTION', 'plg_twofactorauth_totp', 1, 'action', 'site://plugins/twofactorauth/totp/postinstall/actions.php', 'twofactorauth_postinstall_action', 'site://plugins/twofactorauth/totp/postinstall/actions.php', 'twofactorauth_postinstall_condition', '3.2.0', 1 UNION ALL SELECT 700, 'COM_CPANEL_MSG_EACCELERATOR_TITLE', 'COM_CPANEL_MSG_EACCELERATOR_BODY', 'COM_CPANEL_MSG_EACCELERATOR_BUTTON', 'com_cpanel', 1, 'action', 'admin://components/com_admin/postinstall/eaccelerator.php', 'admin_postinstall_eaccelerator_action', 'admin://components/com_admin/postinstall/eaccelerator.php', 'admin_postinstall_eaccelerator_condition', '3.2.0', 1; CREATE TABLE [#__ucm_history] ( [version_id] [bigint] IDENTITY(1,1) NOT NULL, [ucm_item_id] [bigint] NOT NULL, [ucm_type_id] [bigint] NOT NULL, [version_note] [nvarchar](255) NOT NULL DEFAULT '', [save_date] [datetime] NOT NULL DEFAULT '1900-01-01T00:00:00.000', [editor_user_id] [bigint] NOT NULL DEFAULT 0, [character_count] [bigint] NOT NULL DEFAULT 0, [sha1_hash] [nvarchar](50) NOT NULL DEFAULT '', [version_data] [nvarchar](max) NOT NULL, [keep_forever] [smallint] NOT NULL DEFAULT 0, CONSTRAINT [PK_#__ucm_history_version_id] PRIMARY KEY CLUSTERED ( [version_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]; CREATE NONCLUSTERED INDEX [idx_ucm_item_id] ON [#__ucm_history] ( [ucm_type_id] ASC, [ucm_item_id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_save_date] ON [#__ucm_history] ( [save_date] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); ALTER TABLE [#__users] ADD [otpKey] [nvarchar](1000) NOT NULL DEFAULT ''; ALTER TABLE [#__users] ADD [otep] [nvarchar](1000) NOT NULL DEFAULT ''; CREATE TABLE [#__user_keys] ( [id] [bigint] IDENTITY(1,1) NOT NULL, [user_id] [nvarchar](255) NOT NULL, [token] [nvarchar](255) NOT NULL, [series] [nvarchar](255) NOT NULL, [invalid] [smallint] NOT NULL, [time] [nvarchar](200) NOT NULL, [uastring] [nvarchar](255) NOT NULL, CONSTRAINT [PK_#__user_keys_id] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [#__user_keys$series] UNIQUE NONCLUSTERED ( [series] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [#__user_keys$series_2] UNIQUE NONCLUSTERED ( [series] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [#__user_keys$series_3] UNIQUE NONCLUSTERED ( [series] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]; CREATE NONCLUSTERED INDEX [user_id] ON [#__user_keys] ( [user_id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); /* Queries below sync the schema to MySQL where able without causing errors */ ALTER TABLE [#__contentitem_tag_map] ADD [type_id] [int] NOT NULL; CREATE NONCLUSTERED INDEX [idx_type] ON [#__contentitem_tag_map] ( [type_id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); ALTER TABLE [#__newsfeeds] ALTER COLUMN [alias] [nvarchar](255) NOT NULL; ALTER TABLE [#__overrider] ALTER COLUMN [constant] [nvarchar](255) NOT NULL; ALTER TABLE [#__overrider] ALTER COLUMN [string] [nvarchar](max) NOT NULL; ALTER TABLE [#__overrider] ALTER COLUMN [file] [nvarchar](255) NOT NULL; ALTER TABLE [#__session] DROP COLUMN [usertype]; ALTER TABLE [#__ucm_content] ALTER COLUMN [core_metadata] [nvarchar](2048) NOT NULL; ALTER TABLE [#__updates] DROP COLUMN [categoryid]; ALTER TABLE [#__updates] ALTER COLUMN [infourl] [nvarchar](max) NOT NULL; /* Update bad params for two cpanel modules */ UPDATE [#__modules] SET [params] = REPLACE([params], '"bootstrap_size":"1"', '"bootstrap_size":"0"') WHERE [id] IN (3,4); PKb��\x5p7U7U3components/com_admin/sql/updates/sqlazure/3.1.0.sqlnu�[���/* Changes to Smart Search tables for driver compatibility */ ALTER TABLE [#__finder_tokens_aggregate] ALTER COLUMN [term_id] [bigint] NULL; ALTER TABLE [#__finder_tokens_aggregate] ALTER COLUMN [map_suffix] [nchar](1) NULL; ALTER TABLE [#__finder_tokens_aggregate] ADD DEFAULT ((0)) FOR [term_id]; ALTER TABLE [#__finder_tokens_aggregate] ADD DEFAULT ((0)) FOR [total_weight]; /* Changes to tables where data type conflicts exist with MySQL (mainly dealing with null values */ ALTER TABLE [#__extensions] ADD DEFAULT (N'') FOR [system_data]; ALTER TABLE [#__modules] ADD DEFAULT (N'') FOR [content]; ALTER TABLE [#__updates] ADD DEFAULT (N'') FOR [data]; /* Tags database schema */ /****** Object: Table [#__content_types] ******/ SET QUOTED_IDENTIFIER ON; CREATE TABLE [#__content_types] ( [type_id] [bigint] IDENTITY(1,1) NOT NULL, [type_title] [nvarchar](255) NOT NULL DEFAULT '', [type_alias] [nvarchar](255) NOT NULL DEFAULT '', [table] [nvarchar](255) NOT NULL DEFAULT '', [rules] [nvarchar](max) NOT NULL, [field_mappings] [nvarchar](max) NOT NULL, [router] [nvarchar](255) NOT NULL DEFAULT '', CONSTRAINT [PK_#__content_types_type_id] PRIMARY KEY CLUSTERED ( [type_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]; CREATE NONCLUSTERED INDEX [idx_alias] ON [#__content_types] ( [type_alias] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); SET IDENTITY_INSERT #__content_types ON; INSERT INTO #__content_types ([type_id],[type_title],[type_alias],[table],[rules],[field_mappings],[router]) SELECT 1,'Article','com_content.article','{"special":{"dbtable":"#__content","key":"id","type":"Content","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}','','{"common":[{"core_content_item_id":"id","core_title":"title","core_state":"state","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"introtext", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"attribs", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"urls", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"asset_id"}], "special": [{"fulltext":"fulltext"}]}','ContentHelperRoute::getArticleRoute' UNION ALL SELECT 2,'Contact','com_contact.contact','{"special":{"dbtable":"#__contact_details","key":"id","type":"Contact","prefix":"ContactTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}','','{"common":[{"core_content_item_id":"id","core_title":"name","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"address", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"image", "core_urls":"webpage", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"null"}], "special": [{"con_position":"con_position","suburb":"suburb","state":"state","country":"country","postcode":"postcode","telephone":"telephone","fax":"fax","misc":"misc","email_to":"email_to","default_con":"default_con","user_id":"user_id","mobile":"mobile","sortname1":"sortname1","sortname2":"sortname2","sortname3":"sortname3"}]}','ContactHelperRoute::getContactRoute' UNION ALL SELECT 3,'Newsfeed','com_newsfeeds.newsfeed','{"special":{"dbtable":"#__newsfeeds","key":"id","type":"Newsfeed","prefix":"NewsfeedsTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}','','{"common":[{"core_content_item_id":"id","core_title":"name","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"description", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"link", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"null"}], "special": [{"numarticles":"numarticles","cache_time":"cache_time","rtl":"rtl"}]}','NewsfeedsHelperRoute::getNewsfeedRoute' UNION ALL SELECT 4,'User','com_users.user','{"special":{"dbtable":"#__users","key":"id","type":"User","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}','','{"common":[{"core_content_item_id":"id","core_title":"name","core_state":"null","core_alias":"username","core_created_time":"registerdate","core_modified_time":"lastvisitDate","core_body":"null", "core_hits":"null","core_publish_up":"null","core_publish_down":"null","access":"null", "core_params":"params", "core_featured":"null", "core_metadata":"null", "core_language":"null", "core_images":"null", "core_urls":"null", "core_version":"null", "core_ordering":"null", "core_metakey":"null", "core_metadesc":"null", "core_catid":"null", "core_xreference":"null", "asset_id":"null"}], "special": [{}]}','UsersHelperRoute::getUserRoute' UNION ALL SELECT 5,'Article Category','com_content.category','{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}','','{"common":[{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}], "special": [{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}]}','ContentHelperRoute::getCategoryRoute' UNION ALL SELECT 6,'Contact Category','com_contact.category','{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}','','{"common":[{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}], "special": [{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}]}','ContactHelperRoute::getCategoryRoute' UNION ALL SELECT 7,'Newsfeeds Category','com_newsfeeds.category','{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}','','{"common":[{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}], "special": [{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}]}','NewsfeedsHelperRoute::getCategoryRoute' UNION ALL SELECT 8,'Tag','com_tags.tag','{"special":{"dbtable":"#__tags","key":"tag_id","type":"Tag","prefix":"TagsTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}','','{"common":[{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"urls", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"null", "core_xreference":"null", "asset_id":"null"}], "special": [{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path"}]}','TagsHelperRoute::getTagRoute'; SET IDENTITY_INSERT #__content_types OFF; /****** Object: Table [#__contentitem_tag_map] ******/ SET QUOTED_IDENTIFIER ON; CREATE TABLE [#__contentitem_tag_map] ( [type_alias] [nvarchar](255) NOT NULL DEFAULT '', [core_content_id] [bigint] NOT NULL, [content_item_id] [int] NOT NULL, [tag_id] [bigint] NOT NULL, [tag_date] [datetime] NOT NULL DEFAULT '1900-01-01T00:00:00.000', CONSTRAINT [#__contentitem_tag_map$uc_ItemnameTagid] UNIQUE NONCLUSTERED ( [type_alias] ASC, [content_item_id] ASC, [tag_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]; CREATE NONCLUSTERED INDEX [idx_tag_name] ON [#__contentitem_tag_map] ( [tag_id] ASC, [type_alias] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_date_id] ON [#__contentitem_tag_map] ( [tag_date] ASC, [tag_id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_tag] ON [#__contentitem_tag_map] ( [tag_id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_core_content_id] ON [#__contentitem_tag_map] ( [core_content_id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); /****** Object: Table [#__tags] ******/ SET QUOTED_IDENTIFIER ON; CREATE TABLE [#__tags] ( [id] [int] IDENTITY(1,1) NOT NULL , [parent_id] [bigint] NOT NULL DEFAULT '0', [lft] [int] NOT NULL DEFAULT '0', [rgt] [int] NOT NULL DEFAULT '0', [level] [bigint] NOT NULL DEFAULT '0', [path] [nvarchar](255) NOT NULL DEFAULT '', [title] [nvarchar](255) NOT NULL, [alias] [nvarchar](255) NOT NULL DEFAULT '', [note] [nvarchar](255) NOT NULL DEFAULT '', [description] [nvarchar](max) NOT NULL, [published] [smallint] NOT NULL DEFAULT '0', [checked_out] [bigint] NOT NULL DEFAULT '0', [checked_out_time] [datetime] NOT NULL DEFAULT '1900-01-01T00:00:00.000', [access] [int] NOT NULL DEFAULT '0', [params] [nvarchar](max) NOT NULL, [metadesc] [nvarchar](1024) NOT NULL, [metakey] [nvarchar](1024) NOT NULL, [metadata] [nvarchar](2048) NOT NULL, [created_user_id] [bigint] NOT NULL DEFAULT '0', [created_time] [datetime] NOT NULL DEFAULT '1900-01-01T00:00:00.000', [created_by_alias] [nvarchar](255) NOT NULL DEFAULT '', [modified_user_id] [bigint] NOT NULL DEFAULT '0', [modified_time] [datetime] NOT NULL DEFAULT '1900-01-01T00:00:00.000', [images] [nvarchar](max) NOT NULL, [urls] [nvarchar](max) NOT NULL, [hits] [bigint] NOT NULL DEFAULT '0', [language] [nvarchar](7) NOT NULL, [version] [bigint] NOT NULL DEFAULT '1', [publish_up] [datetime] NOT NULL DEFAULT '1900-01-01T00:00:00.000', [publish_down] [datetime] NOT NULL DEFAULT '1900-01-01T00:00:00.000', CONSTRAINT [PK_#__tags_id] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]; CREATE NONCLUSTERED INDEX [tag_idx] ON [#__tags] ( [published] ASC, [access] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_access] ON [#__tags] ( [access] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_checkout] ON [#__tags] ( [checked_out] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_path] ON [#__tags] ( [path] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_left_right] ON [#__tags] ( [lft] ASC, [rgt] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_alias] ON [#__tags] ( [alias] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_language] ON [#__tags] ( [language] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); SET IDENTITY_INSERT #__tags ON; INSERT INTO #__tags (id,parent_id,lft,rgt,level,path,title,alias,note,description,published,checked_out,checked_out_time,access,params,metadesc,metakey,metadata,created_user_id,created_time,modified_user_id,modified_time,images,urls,hits,language) SELECT 1,0,0,1,0,'','ROOT','root','','',1,0,'1900-01-01 00:00:00',1,'{}','','','',0,'2009-10-18 16:07:09',0,'1900-01-01 00:00:00','','',0,'*'; SET IDENTITY_INSERT #__tags OFF; /****** Object: Table [#__ucm_base] ******/ SET QUOTED_IDENTIFIER ON; CREATE TABLE [#__ucm_base] ( [ucm_id] [bigint] IDENTITY(1,1) NOT NULL, [ucm_item_id] [bigint] NOT NULL, [ucm_type_id] [bigint] NOT NULL, [ucm_language_id] [bigint] NOT NULL, CONSTRAINT [PK_#__ucm_base_ucm_id] PRIMARY KEY CLUSTERED ( [ucm_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], ) ON [PRIMARY]; CREATE NONCLUSTERED INDEX [ucm_item_id] ON [#__ucm_base] ( [ucm_item_id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [ucm_type_id] ON [#__ucm_base] ( [ucm_type_id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [ucm_language_id] ON [#__ucm_base] ( [ucm_language_id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); /****** Object: Table [#__ucm_content] ******/ SET QUOTED_IDENTIFIER ON; CREATE TABLE [#__ucm_content] ( [core_content_id] [bigint] IDENTITY(1,1) NOT NULL, [core_type_alias] [nvarchar](255) NOT NULL, [core_title] [nvarchar](255) NOT NULL DEFAULT '', [core_alias] [nvarchar](255) NOT NULL DEFAULT '', [core_body] [nvarchar](max) NOT NULL, [core_state] [smallint] NOT NULL DEFAULT '0', [core_checked_out_time] [datetime] NOT NULL DEFAULT '1900-01-01T00:00:00.000', [core_checked_out_user_id] [bigint] NOT NULL DEFAULT '0', [core_access] [bigint] NOT NULL DEFAULT '0', [core_params] [nvarchar](max) NOT NULL, [core_featured] [tinyint] NOT NULL DEFAULT '0', [core_metadata] [nvarchar](max) NOT NULL, [core_created_user_id] [bigint] NOT NULL DEFAULT '0', [core_created_by_alias] [nvarchar](255) NOT NULL DEFAULT '', [core_created_time] [datetime] NOT NULL DEFAULT '1900-01-01T00:00:00.000', [core_modified_user_id] [bigint] NOT NULL DEFAULT '0', [core_modified_time] [datetime] NOT NULL DEFAULT '1900-01-01T00:00:00.000', [core_language] [nvarchar](7) NOT NULL, [core_publish_up] [datetime] NOT NULL DEFAULT '1900-01-01T00:00:00.000', [core_publish_down] [datetime] NOT NULL DEFAULT '1900-01-01T00:00:00.000', [core_content_item_id] [bigint] NOT NULL DEFAULT '0', [asset_id] [bigint] NOT NULL DEFAULT '0', [core_images] [nvarchar](max) NOT NULL, [core_urls] [nvarchar](max) NOT NULL, [core_hits] [bigint] NOT NULL DEFAULT '0', [core_version] [bigint] NOT NULL DEFAULT '1', [core_ordering] [int] NOT NULL DEFAULT '0', [core_metakey] [nvarchar](max) NOT NULL, [core_metadesc] [nvarchar](max) NOT NULL, [core_catid] [bigint] NOT NULL DEFAULT '0', [core_xreference] [nvarchar](50) NOT NULL, [core_type_id] [bigint] NOT NULL DEFAULT '0', CONSTRAINT [PK_#__ucm_content_core_content_id] PRIMARY KEY CLUSTERED ( [core_content_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [#__ucm_content_core_content_id$idx_type_alias_item_id] UNIQUE NONCLUSTERED ( [core_type_alias] ASC, [core_content_item_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]; CREATE NONCLUSTERED INDEX [tag_idx] ON [#__ucm_content] ( [core_state] ASC, [core_access] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_access] ON [#__ucm_content] ( [core_access] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_alias] ON [#__ucm_content] ( [core_alias] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_language] ON [#__ucm_content] ( [core_language] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_title] ON [#__ucm_content] ( [core_title] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_modified_time] ON [#__ucm_content] ( [core_modified_time] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_created_time] ON [#__ucm_content] ( [core_created_time] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_content_type] ON [#__ucm_content] ( [core_type_alias] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_core_modified_user_id] ON [#__ucm_content] ( [core_modified_user_id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_core_checked_out_user_id] ON [#__ucm_content] ( [core_checked_out_user_id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_core_created_user_id] ON [#__ucm_content] ( [core_created_user_id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); CREATE NONCLUSTERED INDEX [idx_core_type_id] ON [#__ucm_content] ( [core_type_id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); SET IDENTITY_INSERT #__extensions ON; INSERT INTO #__extensions (extension_id, name, type, element, folder, client_id, enabled, access, protected, manifest_cache, params, custom_data, system_data, checked_out, checked_out_time, ordering, state) SELECT 29, 'com_tags', 'component', 'com_tags', '', 1, 1, 1, 1, '{"name":"com_joomlaupdate","type":"component","creationDate":"March 2013","author":"Joomla! Project","copyright":"(C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.1.0","description":"COM_TAGS_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '1900-01-01 00:00:00', 0, 0; SET IDENTITY_INSERT #__extensions OFF; INSERT INTO #__menu (menutype, title, alias, note, path, link, type, published, parent_id, level, component_id, ordering, checked_out, checked_out_time, browserNav, access, img, template_style_id, params, lft, rgt, home, language, client_id) SELECT 'menu', 'com_tags', 'Tags', '', 'Tags', 'index.php?option=com_tags', 'component', 0, 1, 1, 29, 0, '1900-01-01 00:00:00', 0, 0, 'class:tags', 0, '', 43, 44, 0, '*', 1 PKb��\��zu88>components/com_admin/sql/updates/sqlazure/3.4.0-2014-10-20.sqlnu�[���DELETE FROM [#__extensions] WHERE [extension_id] = 100; PKb��\^�<��3components/com_admin/sql/updates/sqlazure/2.5.7.sqlnu�[���INSERT INTO #__update_sites (name, type, location, enabled, last_check_timestamp) VALUES ('Accredited Joomla! Translations', 'collection', 'http://update.joomla.org/language/translationlist.xml', 1, 0);INSERT INTO #__update_sites_extensions (update_site_id, extension_id) VALUES (SCOPE_IDENTITY(), 600);UPDATE [#__assets] SET name=REPLACE( name, 'com_user.notes.category','com_users.category' );UPDATE [#__categories] SET extension=REPLACE( extension, 'com_user.notes.category','com_users.category' );PKb��\vB�@components/com_admin/sql/updates/postgresql/3.4.0-2015-02-26.sqlnu�[���INSERT INTO "#__postinstall_messages" ("extension_id", "title_key", "description_key", "action_key", "language_extension", "language_client_id", "type", "action_file", "action", "condition_file", "condition_method", "version_introduced", "enabled") VALUES (700, 'COM_CPANEL_MSG_LANGUAGEACCESS340_TITLE', 'COM_CPANEL_MSG_LANGUAGEACCESS340_BODY', '', 'com_cpanel', 1, 'message', '', '', 'admin://components/com_admin/postinstall/languageaccess340.php', 'admin_postinstall_languageaccess340_condition', '3.4.1', 1); PKb��\)0�g::5components/com_admin/sql/updates/postgresql/3.1.3.sqlnu�[���# Placeholder file for database changes for version 3.1.3 PKb��\+8�\��@components/com_admin/sql/updates/postgresql/3.4.0-2014-12-03.sqlnu�[���UPDATE "#__extensions" SET "protected" = '0' WHERE "name" = 'plg_editors-xtd_article' AND "type" = 'plugin' AND "element" = 'article' AND "folder" = 'editors-xtd'; PKb��\ Bf�GG@components/com_admin/sql/updates/postgresql/3.3.4-2014-08-03.sqlnu�[���ALTER TABLE "#__user_profiles" ALTER COLUMN "profile_value" TYPE text; PKb��\�����@components/com_admin/sql/updates/postgresql/3.3.0-2014-04-02.sqlnu�[���INSERT INTO "#__extensions" ("extension_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES (451, 'plg_search_tags', 'plugin', 'tags', 'search', 0, 0, 1, 0, '', '{"search_limit":"50","show_tagged_items":"1"}', '', '', 0, '1970-01-01 00:00:00', 0, 0); PKb��\��/995components/com_admin/sql/updates/postgresql/3.0.2.sqlnu�[���# Placeholder file for database changes for version 3.0.2PKb��\���3hh5components/com_admin/sql/updates/postgresql/3.2.1.sqlnu�[���DELETE FROM "#__postinstall_messages" WHERE "title_key" = 'PLG_USER_JOOMLA_POSTINSTALL_STRONGPW_TITLE'; PKb��\Wc6��@components/com_admin/sql/updates/postgresql/3.3.6-2014-09-30.sqlnu�[���INSERT INTO "#__update_sites" ("name", "type", "location", "enabled") VALUES ('Joomla! Update Component Update Site', 'extension', 'http://update.joomla.org/core/extensions/com_joomlaupdate.xml', 1); INSERT INTO "#__update_sites_extensions" ("update_site_id", "extension_id") VALUES ((SELECT "update_site_id" FROM "#__update_sites" WHERE "name" = 'Joomla! Update Component Update Site'), (SELECT "extension_id" FROM "#__extensions" WHERE "name" = 'com_joomlaupdate')); PKb��\v���@components/com_admin/sql/updates/postgresql/3.2.2-2013-12-28.sqlnu�[���UPDATE "#__menu" SET "component_id" = (SELECT "extension_id" FROM "#__extensions" WHERE "element" = 'com_joomlaupdate') WHERE "link" = 'index.php?option=com_joomlaupdate'; PKb��\���d # #5components/com_admin/sql/updates/postgresql/3.1.2.sqlnu�[���UPDATE "#__content_types" SET "table" = '{"special":{"dbtable":"#__content","key":"id","type":"Content","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE "type_title" = 'Article'; UPDATE "#__content_types" SET "table" = '{"special":{"dbtable":"#__contact_details","key":"id","type":"Contact","prefix":"ContactTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE "type_title" = 'Contact'; UPDATE "#__content_types" SET "table" = '{"special":{"dbtable":"#__newsfeeds","key":"id","type":"Newsfeed","prefix":"NewsfeedsTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE "type_title" = 'Newsfeed'; UPDATE "#__content_types" SET "table" = '{"special":{"dbtable":"#__users","key":"id","type":"User","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE "type_title" = 'User'; UPDATE "#__content_types" SET "table" = '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE "type_title" = 'Article Category'; UPDATE "#__content_types" SET "table" = '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE "type_title" = 'Contact Category'; UPDATE "#__content_types" SET "table" = '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE "type_title" = 'Newsfeeds Category'; UPDATE "#__content_types" SET "table" = '{"special":{"dbtable":"#__tags","key":"tag_id","type":"Tag","prefix":"TagsTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}' WHERE "type_title" = 'Tag'; UPDATE "#__content_types" SET "field_mappings" = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"state","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"introtext", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"attribs", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"urls", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"asset_id"}, "special": {"fulltext":"fulltext"}}' WHERE "type_title" = 'Article'; UPDATE "#__content_types" SET "field_mappings" = '{"common":{"core_content_item_id":"id","core_title":"name","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"address", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"image", "core_urls":"webpage", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"null"}, "special": {"con_position":"con_position","suburb":"suburb","state":"state","country":"country","postcode":"postcode","telephone":"telephone","fax":"fax","misc":"misc","email_to":"email_to","default_con":"default_con","user_id":"user_id","mobile":"mobile","sortname1":"sortname1","sortname2":"sortname2","sortname3":"sortname3"}}' WHERE "type_title" = 'Contact'; UPDATE "#__content_types" SET "field_mappings" = '{"common":{"core_content_item_id":"id","core_title":"name","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"description", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"link", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"null"}, "special": {"numarticles":"numarticles","cache_time":"cache_time","rtl":"rtl"}}' WHERE "type_title" = 'Newsfeed'; UPDATE "#__content_types" SET "field_mappings" = '{"common":{"core_content_item_id":"id","core_title":"name","core_state":"null","core_alias":"username","core_created_time":"registerdate","core_modified_time":"lastvisitDate","core_body":"null", "core_hits":"null","core_publish_up":"null","core_publish_down":"null","access":"null", "core_params":"params", "core_featured":"null", "core_metadata":"null", "core_language":"null", "core_images":"null", "core_urls":"null", "core_version":"null", "core_ordering":"null", "core_metakey":"null", "core_metadesc":"null", "core_catid":"null", "core_xreference":"null", "asset_id":"null"}, "special": {}}' WHERE "type_title" = 'User'; UPDATE "#__content_types" SET "field_mappings" = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special": {"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}' WHERE "type_title" = 'Article Category'; UPDATE "#__content_types" SET "field_mappings" = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special": {"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}' WHERE "type_title" = 'Contact Category'; UPDATE "#__content_types" SET "field_mappings" = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special": {"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}' WHERE "type_title" = 'Newsfeeds Category'; UPDATE "#__content_types" SET "field_mappings" = '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"urls", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"null", "core_xreference":"null", "asset_id":"null"}, "special": {"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path"}}' WHERE "type_title" = 'Tag'; PKb��\K ui��@components/com_admin/sql/updates/postgresql/3.3.0-2014-02-16.sqlnu�[���ALTER TABLE "#__users" ADD COLUMN "requireReset" smallint DEFAULT 0; COMMENT ON COLUMN "#__users"."requireReset" IS 'Require user to reset password on next login'; PKb��\�m�ll5components/com_admin/sql/updates/postgresql/3.1.4.sqlnu�[���INSERT INTO "#__extensions" ("extension_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES (104, 'IDNA Convert', 'library', 'idna_convert', '', 0, 1, 1, 1, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0); PKb��\���1::5components/com_admin/sql/updates/postgresql/3.1.5.sqlnu�[���# Placeholder file for database changes for version 3.1.5 PKb��\R�Π��@components/com_admin/sql/updates/postgresql/3.4.0-2014-08-24.sqlnu�[���INSERT INTO "#__postinstall_messages" ("extension_id", "title_key", "description_key", "action_key", "language_extension", "language_client_id", "type", "action_file", "action", "condition_file", "condition_method", "version_introduced", "enabled") VALUES (700, 'COM_CPANEL_MSG_HTACCESS_TITLE', 'COM_CPANEL_MSG_HTACCESS_BODY', '', 'com_cpanel', 1, 'message', '', '', 'admin://components/com_admin/postinstall/htaccess.php', 'admin_postinstall_htaccess_condition', '3.4.0', 1); PKb��\�I0@components/com_admin/sql/updates/postgresql/3.4.0-2015-01-21.sqlnu�[���INSERT INTO "#__postinstall_messages" ("extension_id", "title_key", "description_key", "action_key", "language_extension", "language_client_id", "type", "action_file", "action", "condition_file", "condition_method", "version_introduced", "enabled") VALUES (700, 'COM_CPANEL_MSG_ROBOTS_TITLE', 'COM_CPANEL_MSG_ROBOTS_BODY', '', 'com_cpanel', 1, 'message', '', '', '', '', '3.3.0', 1);PKb��\��WC��@components/com_admin/sql/updates/postgresql/3.4.0-2014-09-16.sqlnu�[���ALTER TABLE "#__redirect_links" ADD COLUMN "header" INTEGER DEFAULT 301 NOT NULL; ALTER TABLE "#__redirect_links" ALTER COLUMN "new_url" DROP NOT NULL; PKb��\��B88@components/com_admin/sql/updates/postgresql/3.3.0-2013-12-21.sqlnu�[���# Placeholder file to set the database schema for 3.3.0 PKb��\���995components/com_admin/sql/updates/postgresql/3.1.1.sqlnu�[���# Placeholder file for database changes for version 3.1.1PKb��\�į ��@components/com_admin/sql/updates/postgresql/3.4.4-2015-07-11.sqlnu�[���ALTER TABLE "#__contentitem_tag_map" DROP CONSTRAINT "#__uc_ItemnameTagid", ADD CONSTRAINT "#__uc_ItemnameTagid" UNIQUE ("type_id", "content_item_id", "tag_id"); PKb��\U-<y��@components/com_admin/sql/updates/postgresql/3.2.2-2014-01-15.sqlnu�[���INSERT INTO "#__postinstall_messages" ("extension_id", "title_key", "description_key", "action_key", "language_extension", "language_client_id", "type", "action_file", "action", "condition_file", "condition_method", "version_introduced", "enabled") VALUES (700, 'COM_CPANEL_MSG_PHPVERSION_TITLE', 'COM_CPANEL_MSG_PHPVERSION_BODY', '', 'com_cpanel', 1, 'message', '', '', 'admin://components/com_admin/postinstall/phpversion.php', 'admin_postinstall_phpversion_condition', '3.2.2', 1); PKb��\3i�pp@components/com_admin/sql/updates/postgresql/3.2.2-2014-01-18.sqlnu�[���/* Update updates version length */ ALTER TABLE "#__updates" ALTER COLUMN "version" TYPE character varying(32); PKb��\+M��``@components/com_admin/sql/updates/postgresql/3.2.2-2014-01-23.sqlnu�[���INSERT INTO "#__extensions" ("extension_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES (106, 'PHPass', 'library', 'phpass', '', 0, 1, 1, 1, '{"legacy":false,"name":"PHPass","type":"library","creationDate":"2004-2006","author":"Solar Designer","authorEmail":"solar@openwall.com","authorUrl":"http:\/\/www.openwall.com/phpass","version":"0.3","description":"LIB_PHPASS_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); PKb��\: ;tt@components/com_admin/sql/updates/postgresql/3.2.2-2014-01-08.sqlnu�[���INSERT INTO "#__extensions" ("extension_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES (403, 'plg_content_contact', 'plugin', 'contact', 'content', 0, 1, 1, 0, '', '', '', '', 0, '1970-01-01 00:00:00', 1, 0); PKb��\ N�<<5components/com_admin/sql/updates/postgresql/3.0.3.sqlnu�[���ALTER TABLE "#__associations" ALTER COLUMN id TYPE integer; PKb��\���#::5components/com_admin/sql/updates/postgresql/3.0.0.sqlnu�[���-- Placeholder file for database changes for version 3.0.0PKb��\��ܶ995components/com_admin/sql/updates/postgresql/3.0.1.sqlnu�[���# Placeholder file for database changes for version 3.0.1PKb��\C%)���@components/com_admin/sql/updates/postgresql/3.4.0-2014-09-01.sqlnu�[���INSERT INTO "#__extensions" ("extension_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES (801, 'weblinks', 'package', 'pkg_weblinks', '', 0, 1, 1, 0, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0); INSERT INTO "#__update_sites" ("name", "type", "location", "enabled") VALUES ('Weblinks Update Site', 'extension', 'https://raw.githubusercontent.com/joomla-extensions/weblinks/master/manifest.xml', 1); INSERT INTO "#__update_sites_extensions" ("update_site_id", "extension_id") VALUES ((SELECT "update_site_id" FROM "#__update_sites" WHERE "name" = 'Weblinks Update Site'), 801); PKb��\x�����@components/com_admin/sql/updates/postgresql/3.2.2-2013-12-22.sqlnu�[���ALTER TABLE "#__update_sites" ADD COLUMN "extra_query" varchar(1000) DEFAULT ''; ALTER TABLE "#__updates" ADD COLUMN "extra_query" varchar(1000) DEFAULT ''; PKb��\/�ߞ�@components/com_admin/sql/updates/postgresql/3.2.3-2014-02-20.sqlnu�[���UPDATE "#__extensions" SET "params" = (SELECT "params" FROM "#__extensions" WHERE "name" = 'plg_system_remember') WHERE "name" = 'plg_authentication_cookie'; PKb��\^�fQfQ5components/com_admin/sql/updates/postgresql/3.2.0.sqlnu�[���/* Core 3.2 schema updates */ ALTER TABLE "#__content_types" ADD COLUMN "content_history_options" varchar(5120) DEFAULT NULL; UPDATE "#__content_types" SET "content_history_options" = '{"formFile":"administrator\\/components\\/com_content\\/models\\/forms\\/article.xml", "hideFields":["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":["modified_by", "modified", "checked_out", "checked_out_time", "version", "hits"],"convertToInt":["publish_up", "publish_down", "featured", "ordering"],"displayLookup":[{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"created_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"} ]}' WHERE "type_alias" = 'com_content.article'; UPDATE "#__content_types" SET "content_history_options" = '{"formFile":"administrator\\/components\\/com_contact\\/models\\/forms\\/contact.xml","hideFields":["default_con","checked_out","checked_out_time","version","xreference"],"ignoreChanges":["modified_by", "modified", "checked_out", "checked_out_time", "version", "hits"],"convertToInt":["publish_up", "publish_down", "featured", "ordering"], "displayLookup":[ {"sourceColumn":"created_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"} ] }' WHERE "type_alias" = 'com_contact.contact'; UPDATE "#__content_types" SET "content_history_options" = '{"formFile":"administrator\\/components\\/com_categories\\/models\\/forms\\/category.xml", "hideFields":["asset_id","checked_out","checked_out_time","version","lft","rgt","level","path","extension"], "ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"],"convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}' WHERE "type_alias" IN ('com_content.category', 'com_contact.category', 'com_newsfeeds.category'); UPDATE "#__content_types" SET "content_history_options" = '{"formFile":"administrator\\/components\\/com_newsfeeds\\/models\\/forms\\/newsfeed.xml","hideFields":["asset_id","checked_out","checked_out_time","version"],"ignoreChanges":["modified_by", "modified", "checked_out", "checked_out_time", "version", "hits"],"convertToInt":["publish_up", "publish_down", "featured", "ordering"],"displayLookup":[{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"created_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}]}' WHERE "type_alias" = 'com_newsfeeds.newsfeed'; UPDATE "#__content_types" SET "content_history_options" = '{"formFile":"administrator\\/components\\/com_tags\\/models\\/forms\\/tag.xml", "hideFields":["checked_out","checked_out_time","version", "lft", "rgt", "level", "path", "urls", "publish_up", "publish_down"],"ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"],"convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}, {"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"}, {"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}]}' WHERE "type_alias" = 'com_tags.tag'; INSERT INTO "#__content_types" ("type_title", "type_alias", "table", "rules", "field_mappings", "router", "content_history_options") VALUES ('Banner', 'com_banners.banner', '{"special":{"dbtable":"#__banners","key":"id","type":"Banner","prefix":"BannersTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":{"core_content_item_id":"id","core_title":"name","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"description", "core_hits":"null","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"link", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"null", "asset_id":"null"}, "special":{"imptotal":"imptotal", "impmade":"impmade", "clicks":"clicks", "clickurl":"clickurl", "custombannercode":"custombannercode", "cid":"cid", "purchase_type":"purchase_type", "track_impressions":"track_impressions", "track_clicks":"track_clicks"}}', '', '{"formFile":"administrator\\/components\\/com_banners\\/models\\/forms\\/banner.xml", "hideFields":["checked_out","checked_out_time","version", "reset"],"ignoreChanges":["modified_by", "modified", "checked_out", "checked_out_time", "version", "imptotal", "impmade", "reset"], "convertToInt":["publish_up", "publish_down", "ordering"], "displayLookup":[{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}, {"sourceColumn":"cid","targetTable":"#__banner_clients","targetColumn":"id","displayColumn":"name"}, {"sourceColumn":"created_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"modified_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}]}'), ('Banners Category', 'com_banners.category', '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special": {"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}', '', '{"formFile":"administrator\\/components\\/com_categories\\/models\\/forms\\/category.xml", "hideFields":["asset_id","checked_out","checked_out_time","version","lft","rgt","level","path","extension"], "ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"], "convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}'), ('Banner Client', 'com_banners.client', '{"special":{"dbtable":"#__banner_clients","key":"id","type":"Client","prefix":"BannersTable"}}', '', '', '', '{"formFile":"administrator\\/components\\/com_banners\\/models\\/forms\\/client.xml", "hideFields":["checked_out","checked_out_time"], "ignoreChanges":["checked_out", "checked_out_time"], "convertToInt":[], "displayLookup":[]}'), ('User Notes', 'com_users.note', '{"special":{"dbtable":"#__user_notes","key":"id","type":"Note","prefix":"UsersTable"}}', '', '', '', '{"formFile":"administrator\\/components\\/com_users\\/models\\/forms\\/note.xml", "hideFields":["checked_out","checked_out_time", "publish_up", "publish_down"],"ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time"], "convertToInt":["publish_up", "publish_down"],"displayLookup":[{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}, {"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}, {"sourceColumn":"user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}, {"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}]}'), ('User Notes Category', 'com_users.category', '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special":{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}', '', '{"formFile":"administrator\\/components\\/com_categories\\/models\\/forms\\/category.xml", "hideFields":["checked_out","checked_out_time","version","lft","rgt","level","path","extension"], "ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"], "convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}, {"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}'); UPDATE "#__extensions" SET "params" = '{"template_positions_display":"0","upload_limit":"2","image_formats":"gif,bmp,jpg,jpeg,png","source_formats":"txt,less,ini,xml,js,php,css","font_formats":"woff,ttf,otf","compressed_formats":"zip"}' WHERE "extension_id" = 20; UPDATE "#__extensions" SET "params" = '{"lineNumbers":"1","lineWrapping":"1","matchTags":"1","matchBrackets":"1","marker-gutter":"1","autoCloseTags":"1","autoCloseBrackets":"1","autoFocus":"1","theme":"default","tabmode":"indent"}' WHERE "extension_id" = 410; INSERT INTO "#__extensions" ("extension_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES (30, 'com_contenthistory', 'component', 'com_contenthistory', '', 1, 1, 1, 0, '{"name":"com_contenthistory","type":"component","creationDate":"May 2013","author":"Joomla! Project","copyright":"(C) 2005 - 2015 Open Source Matters. All rights reserved.\\n\\t","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.2.0","description":"COM_CONTENTHISTORY_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0), (31, 'com_ajax', 'component', 'com_ajax', '', 1, 1, 1, 0, '{"name":"com_ajax","type":"component","creationDate":"August 2013","author":"Joomla! Project","copyright":"(C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.2.0","description":"COM_AJAX_DESC","group":""}', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0), (32, 'com_postinstall', 'component', 'com_postinstall', '', 1, 1, 1, 1, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0), (105, 'FOF', 'library', 'fof', '', 0, 1, 1, 1, '{"legacy":false,"name":"FOF","type":"library","creationDate":"2013-10-08","author":"Nicholas K. Dionysopoulos \/ Akeeba Ltd","copyright":"(C)2011-2013 Nicholas K. Dionysopoulos","authorEmail":"nicholas@akeebabackup.com","authorUrl":"https:\/\/www.akeebabackup.com","version":"2.1.rc4","description":"Framework-on-Framework (FOF) - A rapid component development framework for Joomla!","group":""}', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0), (448, 'plg_twofactorauth_totp', 'plugin', 'totp', 'twofactorauth', 0, 0, 1, 0, '{"name":"plg_twofactorauth_totp","type":"plugin","creationDate":"August 2013","author":"Joomla! Project","copyright":"(C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.2.0","description":"PLG_TWOFACTORAUTH_TOTP_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0), (449, 'plg_authentication_cookie', 'plugin', 'cookie', 'authentication', 0, 1, 1, 0, '{"name":"plg_authentication_cookie","type":"plugin","creationDate":"July 2013","author":"Joomla! Project","copyright":"Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.0.0","description":"PLG_AUTH_COOKIE_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0), (450, 'plg_twofactorauth_yubikey', 'plugin', 'yubikey', 'twofactorauth', 0, 0, 1, 0, '{"name":"plg_twofactorauth_yubikey","type":"plugin","creationDate":"Se[ptember 2013","author":"Joomla! Project","copyright":"(C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.2.0","description":"PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); INSERT INTO "#__menu" ("menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id") VALUES ('main', 'com_postinstall', 'Post-installation messages', '', 'Post-installation messages', 'index.php?option=com_postinstall', 'component', 0, 1, 1, 32, 0, '1970-01-01 00:00:00', 0, 1, 'class:postinstall', 0, '', 45, 46, 0, '*', 1); ALTER TABLE "#__modules" ADD COLUMN "asset_id" bigint DEFAULT 0 NOT NULL; CREATE TABLE "#__postinstall_messages" ( "postinstall_message_id" serial NOT NULL, "extension_id" bigint NOT NULL DEFAULT 700, "title_key" varchar(255) NOT NULL DEFAULT '', "description_key" varchar(255) NOT NULL DEFAULT '', "action_key" varchar(255) NOT NULL DEFAULT '', "language_extension" varchar(255) NOT NULL DEFAULT 'com_postinstall', "language_client_id" smallint NOT NULL DEFAULT 1, "type" varchar(10) NOT NULL DEFAULT 'link', "action_file" varchar(255) DEFAULT '', "action" varchar(255) DEFAULT '', "condition_file" varchar(255) DEFAULT NULL, "condition_method" varchar(255) DEFAULT NULL, "version_introduced" varchar(255) NOT NULL DEFAULT '3.2.0', "enabled" smallint NOT NULL DEFAULT 1, PRIMARY KEY ("postinstall_message_id") ); COMMENT ON COLUMN "#__postinstall_messages"."extension_id" IS 'FK to jos_extensions'; COMMENT ON COLUMN "#__postinstall_messages"."title_key" IS 'Lang key for the title'; COMMENT ON COLUMN "#__postinstall_messages"."description_key" IS 'Lang key for description'; COMMENT ON COLUMN "#__postinstall_messages"."language_extension" IS 'Extension holding lang keys'; COMMENT ON COLUMN "#__postinstall_messages"."type" IS 'Message type - message, link, action'; COMMENT ON COLUMN "#__postinstall_messages"."action_file" IS 'RAD URI to the PHP file containing action method'; COMMENT ON COLUMN "#__postinstall_messages"."action" IS 'Action method name or URL'; COMMENT ON COLUMN "#__postinstall_messages"."condition_file" IS 'RAD URI to file holding display condition method'; COMMENT ON COLUMN "#__postinstall_messages"."condition_method" IS 'Display condition method, must return boolean'; COMMENT ON COLUMN "#__postinstall_messages"."version_introduced" IS 'Version when this message was introduced'; INSERT INTO "#__postinstall_messages" ("extension_id", "title_key", "description_key", "action_key", "language_extension", "language_client_id", "type", "action_file", "action", "condition_file", "condition_method", "version_introduced", "enabled") VALUES (700, 'PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_TITLE', 'PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_BODY', 'PLG_TWOFACTORAUTH_TOTP_POSTINSTALL_ACTION', 'plg_twofactorauth_totp', 1, 'action', 'site://plugins/twofactorauth/totp/postinstall/actions.php', 'twofactorauth_postinstall_action', 'site://plugins/twofactorauth/totp/postinstall/actions.php', 'twofactorauth_postinstall_condition', '3.2.0', 1), (700, 'COM_CPANEL_MSG_EACCELERATOR_TITLE', 'COM_CPANEL_MSG_EACCELERATOR_BODY', 'COM_CPANEL_MSG_EACCELERATOR_BUTTON', 'com_cpanel', 1, 'action', 'admin://components/com_admin/postinstall/eaccelerator.php', 'admin_postinstall_eaccelerator_action', 'admin://components/com_admin/postinstall/eaccelerator.php', 'admin_postinstall_eaccelerator_condition', '3.2.0', 1); CREATE TABLE "#__ucm_history" ( "version_id" serial NOT NULL, "ucm_item_id" integer NOT NULL, "ucm_type_id" integer NOT NULL, "version_note" varchar(255) NOT NULL DEFAULT '', "save_date" timestamp with time zone NOT NULL DEFAULT '1970-01-01 00:00:00', "editor_user_id" integer NOT NULL DEFAULT 0, "character_count" integer NOT NULL DEFAULT 0, "sha1_hash" varchar(50) NOT NULL DEFAULT '', "version_data" text NOT NULL, "keep_forever" smallint NOT NULL DEFAULT 0, PRIMARY KEY ("version_id") ); CREATE INDEX "#__ucm_history_idx_ucm_item_id" ON "#__ucm_history" ("ucm_type_id", "ucm_item_id"); CREATE INDEX "#__ucm_history_idx_save_date" ON "#__ucm_history" ("save_date"); COMMENT ON COLUMN "#__ucm_history"."version_note" IS 'Optional version name'; COMMENT ON COLUMN "#__ucm_history"."character_count" IS 'Number of characters in this version.'; COMMENT ON COLUMN "#__ucm_history"."sha1_hash" IS 'SHA1 hash of the version_data column.'; COMMENT ON COLUMN "#__ucm_history"."version_data" IS 'json-encoded string of version data'; COMMENT ON COLUMN "#__ucm_history"."keep_forever" IS '0=auto delete; 1=keep'; ALTER TABLE "#__users" ADD COLUMN "otpKey" varchar(1000) DEFAULT '' NOT NULL; ALTER TABLE "#__users" ADD COLUMN "otep" varchar(1000) DEFAULT '' NOT NULL; CREATE TABLE "#__user_keys" ( "id" serial NOT NULL, "user_id" varchar(255) NOT NULL, "token" varchar(255) NOT NULL, "series" varchar(255) NOT NULL, "invalid" smallint NOT NULL, "time" varchar(200) NOT NULL, "uastring" varchar(255) NOT NULL, PRIMARY KEY ("id"), CONSTRAINT "#__user_keys_series" UNIQUE ("series"), CONSTRAINT "#__user_keys_series_2" UNIQUE ("series"), CONSTRAINT "#__user_keys_series_3" UNIQUE ("series") ); CREATE INDEX "#__user_keys_idx_user_id" ON "#__user_keys" ("user_id"); /* Queries below sync the schema to MySQL where able without causing errors */ ALTER TABLE "#__contentitem_tag_map" ADD COLUMN "type_id" integer NOT NULL; CREATE INDEX "#__contentitem_tag_map_idx_tag_type" ON "#__contentitem_tag_map" ("tag_id", "type_id"); CREATE INDEX "#__contentitem_tag_map_idx_type" ON "#__contentitem_tag_map" ("type_id"); COMMENT ON COLUMN "#__contentitem_tag_map"."type_id" IS 'PK from the content_type table'; ALTER TABLE "#__session" DROP COLUMN "usertype"; ALTER TABLE "#__updates" DROP COLUMN "categoryid"; ALTER TABLE "#__users" DROP COLUMN "usertype"; PKb��\�|ֿM�M5components/com_admin/sql/updates/postgresql/3.1.0.sqlnu�[���/* Changes to tables where data type conflicts exist with MySQL (mainly dealing with null values */ ALTER TABLE "#__modules" ALTER COLUMN "content" SET DEFAULT ''; ALTER TABLE "#__updates" ALTER COLUMN "data" SET DEFAULT ''; /* Tags database schema */ -- -- Table: #__content_types -- CREATE TABLE "#__content_types" ( "type_id" serial NOT NULL, "type_title" character varying(255) NOT NULL DEFAULT '', "type_alias" character varying(255) NOT NULL DEFAULT '', "table" character varying(255) NOT NULL DEFAULT '', "rules" text NOT NULL, "field_mappings" text NOT NULL, "router" character varying(255) NOT NULL DEFAULT '', PRIMARY KEY ("type_id") ); CREATE INDEX "#__content_types_idx_alias" ON "#__content_types" ("type_alias"); -- -- Dumping data for table #__content_types -- INSERT INTO "#__content_types" ("type_id", "type_title", "type_alias", "table", "rules", "field_mappings", "router") VALUES (1, 'Article', 'com_content.article', '{"special":{"dbtable":"#__content","key":"id","type":"Content","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":[{"core_content_item_id":"id","core_title":"title","core_state":"state","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"introtext", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"attribs", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"urls", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"asset_id"}], "special": [{"fulltext":"fulltext"}]}','ContentHelperRoute::getArticleRoute'), (2, 'Contact', 'com_contact.contact', '{"special":{"dbtable":"#__contact_details","key":"id","type":"Contact","prefix":"ContactTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":[{"core_content_item_id":"id","core_title":"name","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"address", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"image", "core_urls":"webpage", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"null"}], "special": [{"con_position":"con_position","suburb":"suburb","state":"state","country":"country","postcode":"postcode","telephone":"telephone","fax":"fax","misc":"misc","email_to":"email_to","default_con":"default_con","user_id":"user_id","mobile":"mobile","sortname1":"sortname1","sortname2":"sortname2","sortname3":"sortname3"}]}','ContactHelperRoute::getContactRoute'), (3, 'Newsfeed', 'com_newsfeeds.newsfeed', '{"special":{"dbtable":"#__newsfeeds","key":"id","type":"Newsfeed","prefix":"NewsfeedsTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":[{"core_content_item_id":"id","core_title":"name","core_state":"published","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"description", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"link", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"null"}], "special": [{"numarticles":"numarticles","cache_time":"cache_time","rtl":"rtl"}]}','NewsfeedsHelperRoute::getNewsfeedRoute'), (4, 'User', 'com_users.user', '{"special":{"dbtable":"#__users","key":"id","type":"User","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":[{"core_content_item_id":"id","core_title":"name","core_state":"null","core_alias":"username","core_created_time":"registerdate","core_modified_time":"lastvisitDate","core_body":"null", "core_hits":"null","core_publish_up":"null","core_publish_down":"null","access":"null", "core_params":"params", "core_featured":"null", "core_metadata":"null", "core_language":"null", "core_images":"null", "core_urls":"null", "core_version":"null", "core_ordering":"null", "core_metakey":"null", "core_metadesc":"null", "core_catid":"null", "core_xreference":"null", "asset_id":"null"}], "special": [{}]}','UsersHelperRoute::getUserRoute'), (5, 'Article Category', 'com_content.category', '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":[{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}], "special": [{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}]}','ContentHelperRoute::getCategoryRoute'), (6, 'Contact Category', 'com_contact.category', '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":[{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}], "special": [{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}]}','ContactHelperRoute::getCategoryRoute'), (7, 'Newsfeeds Category', 'com_newsfeeds.category', '{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":[{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}], "special": [{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}]}','NewsfeedsHelperRoute::getCategoryRoute'), (8, 'Tag', 'com_tags.tag', '{"special":{"dbtable":"#__tags","key":"tag_id","type":"Tag","prefix":"TagsTable","config":"array()"},"common":{"dbtable":"#__core_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}', '', '{"common":[{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"urls", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"null", "core_xreference":"null", "asset_id":"null"}], "special": [{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path"}]}','TagsHelperRoute::getTagRoute'); SELECT nextval('#__content_types_type_id_seq'); SELECT setval('#__content_types_type_id_seq', 10000, false); -- -- Table: #__contentitem_tag_map -- CREATE TABLE "#__contentitem_tag_map" ( "type_alias" character varying(255) NOT NULL DEFAULT '', "core_content_id" integer NOT NULL, "content_item_id" integer NOT NULL, "tag_id" integer NOT NULL, "tag_date" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, CONSTRAINT "uc_ItemnameTagid" UNIQUE ("type_alias", "content_item_id", "tag_id") ); CREATE INDEX "#__contentitem_tag_map_idx_tag_name" ON "#__contentitem_tag_map" ("tag_id", "type_alias"); CREATE INDEX "#__contentitem_tag_map_idx_date_id" ON "#__contentitem_tag_map" ("tag_date", "tag_id"); CREATE INDEX "#__contentitem_tag_map_idx_tag" ON "#__contentitem_tag_map" ("tag_id"); CREATE INDEX "#__contentitem_tag_map_idx_core_content_id" ON "#__contentitem_tag_map" ("core_content_id"); COMMENT ON COLUMN "#__contentitem_tag_map"."core_content_id" IS 'PK from the core content table'; COMMENT ON COLUMN "#__contentitem_tag_map"."content_item_id" IS 'PK from the content type table'; COMMENT ON COLUMN "#__contentitem_tag_map"."tag_id" IS 'PK from the tag table'; COMMENT ON COLUMN "#__contentitem_tag_map"."tag_date" IS 'Date of most recent save for this tag-item'; -- -------------------------------------------------------- -- -- Table: #__tags -- CREATE TABLE "#__tags" ( "id" serial NOT NULL, "parent_id" bigint DEFAULT 0 NOT NULL, "lft" bigint DEFAULT 0 NOT NULL, "rgt" bigint DEFAULT 0 NOT NULL, "level" integer DEFAULT 0 NOT NULL, "path" character varying(255) DEFAULT '' NOT NULL, "title" character varying(255) NOT NULL, "alias" character varying(255) DEFAULT '' NOT NULL, "note" character varying(255) DEFAULT '' NOT NULL, "description" text DEFAULT '' NOT NULL, "published" smallint DEFAULT 0 NOT NULL, "checked_out" bigint DEFAULT 0 NOT NULL, "checked_out_time" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "access" bigint DEFAULT 0 NOT NULL, "params" text NOT NULL, "metadesc" character varying(1024) NOT NULL, "metakey" character varying(1024) NOT NULL, "metadata" character varying(2048) NOT NULL, "created_user_id" integer DEFAULT 0 NOT NULL, "created_time" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "created_by_alias" character varying(255) DEFAULT '' NOT NULL, "modified_user_id" integer DEFAULT 0 NOT NULL, "modified_time" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "images" text NOT NULL, "urls" text NOT NULL, "hits" integer DEFAULT 0 NOT NULL, "language" character varying(7) DEFAULT '' NOT NULL, "version" bigint DEFAULT 1 NOT NULL, "publish_up" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "publish_down" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, PRIMARY KEY ("id") ); CREATE INDEX "#__tags_cat_idx" ON "#__tags" ("published", "access"); CREATE INDEX "#__tags_idx_access" ON "#__tags" ("access"); CREATE INDEX "#__tags_idx_checkout" ON "#__tags" ("checked_out"); CREATE INDEX "#__tags_idx_path" ON "#__tags" ("path"); CREATE INDEX "#__tags_idx_left_right" ON "#__tags" ("lft", "rgt"); CREATE INDEX "#__tags_idx_alias" ON "#__tags" ("alias"); CREATE INDEX "#__tags_idx_language" ON "#__tags" ("language"); -- -- Dumping data for table #__tags -- INSERT INTO "#__tags" ("id", "parent_id", "lft", "rgt", "level", "path", "title", "alias", "note", "description", "published", "checked_out", "checked_out_time", "access", "params", "metadesc", "metakey", "metadata", "created_user_id", "created_time", "created_by_alias", "modified_user_id", "modified_time", "images", "urls", "hits", "language", "version") VALUES (1, 0, 0, 1, 0, '', 'ROOT', 'root', '', '', 1, 0, '1970-01-01 00:00:00', 1, '{}', '', '', '', 42, '1970-01-01 00:00:00', '', 0, '1970-01-01 00:00:00', '', '', 0, '*', 1); SELECT nextval('#__tags_id_seq'); SELECT setval('#__tags_id_seq', 2, false); -- -- Table: #__ucm_base -- CREATE TABLE "#__ucm_base" ( "ucm_id" serial NOT NULL, "ucm_item_id" bigint NOT NULL, "ucm_type_id" bigint NOT NULL, "ucm_language_id" bigint NOT NULL, PRIMARY KEY ("ucm_id") ); CREATE INDEX "#__ucm_base_ucm_item_id" ON "#__ucm_base" ("ucm_item_id"); CREATE INDEX "#__ucm_base_ucm_type_id" ON "#__ucm_base" ("ucm_type_id"); CREATE INDEX "#__ucm_base_ucm_language_id" ON "#__ucm_base" ("ucm_language_id"); -- -- Table: #__ucm_content -- CREATE TABLE "#__ucm_content" ( "core_content_id" serial NOT NULL, "core_type_alias" character varying(255) DEFAULT '' NOT NULL, "core_title" character varying(255) NOT NULL, "core_alias" character varying(255) DEFAULT '' NOT NULL, "core_body" text NOT NULL, "core_state" smallint DEFAULT 0 NOT NULL, "core_checked_out_time" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "core_checked_out_user_id" bigint DEFAULT 0 NOT NULL, "core_access" bigint DEFAULT 0 NOT NULL, "core_params" text NOT NULL, "core_featured" smallint DEFAULT 0 NOT NULL, "core_metadata" text NOT NULL, "core_created_user_id" bigint DEFAULT 0 NOT NULL, "core_created_by_alias" character varying(255) DEFAULT '' NOT NULL, "core_created_time" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "core_modified_user_id" bigint DEFAULT 0 NOT NULL, "core_modified_time" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "core_language" character varying(7) DEFAULT '' NOT NULL, "core_publish_up" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "core_publish_down" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "core_content_item_id" bigint DEFAULT 0 NOT NULL, "asset_id" bigint DEFAULT 0 NOT NULL, "core_images" text NOT NULL, "core_urls" text NOT NULL, "core_hits" bigint DEFAULT 0 NOT NULL, "core_version" bigint DEFAULT 1 NOT NULL, "core_ordering" bigint DEFAULT 0 NOT NULL, "core_metakey" text NOT NULL, "core_metadesc" text NOT NULL, "core_catid" bigint DEFAULT 0 NOT NULL, "core_xreference" character varying(50) DEFAULT '' NOT NULL, "core_type_id" bigint DEFAULT 0 NOT NULL, PRIMARY KEY ("core_content_id"), CONSTRAINT "#__ucm_content_idx_type_alias_item_id" UNIQUE ("core_type_alias", "core_content_item_id") ); CREATE INDEX "#__ucm_content_tag_idx" ON "#__ucm_content" ("core_state", "core_access"); CREATE INDEX "#__ucm_content_idx_access" ON "#__ucm_content" ("core_access"); CREATE INDEX "#__ucm_content_idx_alias" ON "#__ucm_content" ("core_alias"); CREATE INDEX "#__ucm_content_idx_language" ON "#__ucm_content" ("core_language"); CREATE INDEX "#__ucm_content_idx_title" ON "#__ucm_content" ("core_title"); CREATE INDEX "#__ucm_content_idx_modified_time" ON "#__ucm_content" ("core_modified_time"); CREATE INDEX "#__ucm_content_idx_created_time" ON "#__ucm_content" ("core_created_time"); CREATE INDEX "#__ucm_content_idx_content_type" ON "#__ucm_content" ("core_type_alias"); CREATE INDEX "#__ucm_content_idx_core_modified_user_id" ON "#__ucm_content" ("core_modified_user_id"); CREATE INDEX "#__ucm_content_idx_core_checked_out_user_id" ON "#__ucm_content" ("core_checked_out_user_id"); CREATE INDEX "#__ucm_content_idx_core_created_user_id" ON "#__ucm_content" ("core_created_user_id"); CREATE INDEX "#__ucm_content_idx_core_type_id" ON "#__ucm_content" ("core_type_id"); -- -- Add extensions table records -- INSERT INTO "#__extensions" ("extension_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES (29, 'com_tags', 'component', 'com_tags', '', 1, 1, 1, 1, '{"legacy":false,"name":"com_tags","type":"component","creationDate":"March 2013","author":"Joomla! Project","copyright":"(C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.0.0","description":"COM_TAGS_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0), (315, 'mod_stats_admin', 'module', 'mod_stats_admin', '', 1, 1, 1, 0, '{"name":"mod_stats_admin","type":"module","creationDate":"September 2012","author":"Joomla! Project","copyright":"Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.0.0","description":"MOD_STATS_XML_DESCRIPTION","group":""}', '{"serverinfo":"0","siteinfo":"0","counter":"0","increase":"0","cache":"1","cache_time":"900","cachemode":"static"}', '', '', 0, '1970-01-01 00:00:00', 0, 0), (316, 'mod_tags_popular', 'module', 'mod_tags_popular', '', 0, 1, 1, 0, '{"name":"mod_tags_popular","type":"module","creationDate":"January 2013","author":"Joomla! Project","copyright":"Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.1.0","description":"MOD_TAGS_POPULAR_XML_DESCRIPTION","group":""}', '{"maximum":"5","timeframe":"alltime","owncache":"1"}', '', '', 0, '1970-01-01 00:00:00', 0, 0), (317, 'mod_tags_similar', 'module', 'mod_tags_similar', '', 0, 1, 1, 0, '{"name":"mod_tags_similar","type":"module","creationDate":"January 2013","author":"Joomla! Project","copyright":"Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.1.0","description":"MOD_TAGS_SIMILAR_XML_DESCRIPTION","group":""}', '{"maximum":"5","matchtype":"any","owncache":"1"}', '', '', 0, '1970-01-01 00:00:00', 0, 0), (447, 'plg_finder_tags', 'plugin', 'tags', 'finder', 0, 1, 1, 0, '{"name":"plg_finder_tags","type":"plugin","creationDate":"February 2013","author":"Joomla! Project","copyright":"(C) 2005 - 2015 Open Source Matters. All rights reserved.","authorEmail":"admin@joomla.org","authorUrl":"www.joomla.org","version":"3.0.0","description":"PLG_FINDER_TAGS_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '1970-01-01 00:00:00', 0, 0); -- -- Add menu table records -- INSERT INTO "#__menu" ("menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id") VALUES ('main', 'com_tags', 'Tags', '', 'Tags', 'index.php?option=com_tags', 'component', 0, 1, 1, 29, 0, '1970-01-01 00:00:00', 0, 1, 'class:tags', 0, '', 45, 46, 0, '', 1); PKb��\ Tt�88@components/com_admin/sql/updates/postgresql/3.4.0-2014-10-20.sqlnu�[���DELETE FROM "#__extensions" WHERE "extension_id" = 100; PKb��\_���((0components/com_admin/views/help/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('bootstrap.tooltip'); ?> <form action="<?php echo JRoute::_('index.php?option=com_admin&view=help'); ?>" method="post" name="adminForm" id="adminForm"> <div class="row-fluid"> <div id="sidebar" class="span3"> <div class="clearfix"></div> <div class="sidebar-nav"> <ul class="nav nav-list"> <li><?php echo JHtml::_('link', JHelp::createUrl('JHELP_START_HERE'), JText::_('COM_ADMIN_START_HERE'), array('target' => 'helpFrame')) ?></li> <li><?php echo JHtml::_('link', $this->latest_version_check, JText::_('COM_ADMIN_LATEST_VERSION_CHECK'), array('target' => 'helpFrame')) ?></li> <li><?php echo JHtml::_('link', 'http://www.gnu.org/licenses/gpl-2.0.html', JText::_('COM_ADMIN_LICENSE'), array('target' => 'helpFrame')) ?></li> <li><?php echo JHtml::_('link', JHelp::createUrl('JHELP_GLOSSARY'), JText::_('COM_ADMIN_GLOSSARY'), array('target' => 'helpFrame')) ?></li> <hr class="hr-condensed" /> <li class="nav-header"><?php echo JText::_('COM_ADMIN_ALPHABETICAL_INDEX'); ?></li> <?php foreach ($this->toc as $k => $v): ?> <li> <?php $url = JHelp::createUrl('JHELP_' . strtoupper($k)); ?> <?php echo JHtml::_('link', $url, $v, array('target' => 'helpFrame')); ?> </li> <?php endforeach; ?> </ul> </div> </div> <div class="span9"> <iframe name="helpFrame" height="2100px" src="<?php echo $this->page; ?>" class="helpFrame table table-bordered"></iframe> </div> </div> <input class="textarea" type="hidden" name="option" value="com_admin" /> </form> PKb��\�/���-components/com_admin/views/help/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * HTML View class for the Admin component * * @since 1.6 */ class AdminViewHelp extends JViewLegacy { /** * @var string the search string */ protected $help_search = null; /** * @var string the page to be viewed */ protected $page = null; /** * @var string the iso language tag */ protected $lang_tag = null; /** * @var array Table of contents */ protected $toc = null; /** * @var string url for the latest version check */ protected $latest_version_check = 'http://www.joomla.org/download.html'; /** * @var string url for the start here link. */ protected $start_here = null; /** * 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 a Error object. */ public function display($tpl = null) { $this->help_search = $this->get('HelpSearch'); $this->page = $this->get('Page'); $this->toc = $this->get('Toc'); $this->lang_tag = $this->get('LangTag'); $this->latest_version_check = $this->get('LatestVersionCheck'); $this->addToolbar(); parent::display($tpl); } /** * Setup the Toolbar * * @return void * * @since 1.6 */ protected function addToolbar() { JToolbarHelper::title(JText::_('COM_ADMIN_HELP'), 'support help_header'); } } PKb��\�i=z; ; 0components/com_admin/views/profile/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JFactory::getDocument()->addScriptDeclaration(' Joomla.submitbutton = function(task) { if (task == "profile.cancel" || document.formvalidator.isValid(document.getElementById("profile-form"))) { Joomla.submitform(task, document.getElementById("profile-form")); } }; '); // Load chosen.css JHtml::_('formbehavior.chosen', 'select'); // Get the form fieldsets. $fieldsets = $this->form->getFieldsets(); ?> <form action="<?php echo JRoute::_('index.php?option=com_admin&view=profile&layout=edit&id=' . $this->item->id); ?>" method="post" name="adminForm" id="profile-form" class="form-validate form-horizontal" enctype="multipart/form-data"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'account')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'account', JText::_('COM_ADMIN_USER_ACCOUNT_DETAILS', true)); ?> <?php foreach ($this->form->getFieldset('user_details') as $field) : ?> <div class="control-group"> <div class="control-label"><?php echo $field->label; ?></div> <div class="controls"> <?php if ($field->fieldname == 'password2') : ?> <?php // Disables autocomplete ?> <input type="text" style="display:none"> <?php endif; ?> <?php echo $field->input; ?> </div> </div> <?php endforeach; ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php foreach ($fieldsets as $fieldset) : ?> <?php if ($fieldset->name == 'user_details') { continue; } ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', $fieldset->name, JText::_($fieldset->label, true)); ?> <?php foreach ($this->form->getFieldset($fieldset->name) as $field) : ?> <?php if ($field->hidden) : ?> <div class="control-group"> <div class="controls"><?php echo $field->input; ?></div> </div> <?php else: ?> <div class="control-group"> <div class="control-label"><?php echo $field->label; ?></div> <div class="controls"><?php echo $field->input; ?></div> </div> <?php endif; ?> <?php endforeach; ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endforeach; ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\��-�zz0components/com_admin/views/profile/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class to allow users edit their own profile. * * @since 1.6 */ class AdminViewProfile extends JViewLegacy { protected $form; protected $item; protected $state; /** * 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 a Error object. */ public function display($tpl = null) { $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->form->setValue('password', null); $this->form->setValue('password2', null); parent::display($tpl); $this->addToolbar(); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JFactory::getApplication()->input->set('hidemainmenu', 1); JToolbarHelper::title(JText::_('COM_ADMIN_VIEW_PROFILE_TITLE'), 'user user-profile'); JToolbarHelper::apply('profile.apply'); JToolbarHelper::save('profile.save'); JToolbarHelper::cancel('profile.cancel', 'JTOOLBAR_CLOSE'); JToolbarHelper::divider(); JToolbarHelper::help('JHELP_ADMIN_USER_PROFILE_EDIT'); } } PKb��\V�ܴ :components/com_admin/views/sysinfo/tmpl/default_system.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset class="adminform"> <legend><?php echo JText::_('COM_ADMIN_SYSTEM_INFORMATION'); ?></legend> <table class="table table-striped"> <thead> <tr> <th width="25%"> <?php echo JText::_('COM_ADMIN_SETTING'); ?> </th> <th> <?php echo JText::_('COM_ADMIN_VALUE'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="2"> </td> </tr> </tfoot> <tbody> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_PHP_BUILT_ON'); ?></strong> </td> <td> <?php echo $this->info['php']; ?> </td> </tr> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_DATABASE_VERSION'); ?></strong> </td> <td> <?php echo $this->info['dbversion']; ?> </td> </tr> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_DATABASE_COLLATION'); ?></strong> </td> <td> <?php echo $this->info['dbcollation']; ?> </td> </tr> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_PHP_VERSION'); ?></strong> </td> <td> <?php echo $this->info['phpversion']; ?> </td> </tr> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_WEB_SERVER'); ?></strong> </td> <td> <?php echo JHtml::_('system.server', $this->info['server']); ?> </td> </tr> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_WEBSERVER_TO_PHP_INTERFACE'); ?></strong> </td> <td> <?php echo $this->info['sapi_name']; ?> </td> </tr> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_JOOMLA_VERSION'); ?></strong> </td> <td> <?php echo $this->info['version']; ?> </td> </tr> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_PLATFORM_VERSION'); ?></strong> </td> <td> <?php echo $this->info['platform']; ?> </td> </tr> <tr> <td> <strong><?php echo JText::_('COM_ADMIN_USER_AGENT'); ?></strong> </td> <td> <?php echo htmlspecialchars($this->info['useragent']); ?> </td> </tr> </tbody> </table> </fieldset> PKb��\�:�m��;components/com_admin/views/sysinfo/tmpl/default_phpinfo.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset class="adminform"> <legend><?php echo JText::_('COM_ADMIN_PHP_INFORMATION'); ?></legend> <?php echo $this->php_info; ?> </fieldset> PKb��\�����:components/com_admin/views/sysinfo/tmpl/default_config.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset class="adminform"> <legend><?php echo JText::_('COM_ADMIN_CONFIGURATION_FILE'); ?></legend> <table class="table table-striped"> <thead> <tr> <th width="300"> <?php echo JText::_('COM_ADMIN_SETTING'); ?> </th> <th> <?php echo JText::_('COM_ADMIN_VALUE'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="2"> </td> </tr> </tfoot> <tbody> <?php foreach ($this->config as $key => $value): ?> <tr> <td> <?php echo $key; ?> </td> <td> <?php echo htmlspecialchars($value, ENT_QUOTES); ?> </td> </tr> <?php endforeach; ?> </tbody> </table> </fieldset> PKb��\�-�II?components/com_admin/views/sysinfo/tmpl/default_phpsettings.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset class="adminform"> <legend><?php echo JText::_('COM_ADMIN_RELEVANT_PHP_SETTINGS'); ?></legend> <table class="table table-striped"> <thead> <tr> <th width="250"> <?php echo JText::_('COM_ADMIN_SETTING'); ?> </th> <th> <?php echo JText::_('COM_ADMIN_VALUE'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="2">  </td> </tr> </tfoot> <tbody> <tr> <td> <?php echo JText::_('COM_ADMIN_SAFE_MODE'); ?> </td> <td> <?php echo JHtml::_('phpsetting.boolean', $this->php_settings['safe_mode']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_OPEN_BASEDIR'); ?> </td> <td> <?php echo JHtml::_('phpsetting.string', $this->php_settings['open_basedir']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_DISPLAY_ERRORS'); ?> </td> <td> <?php echo JHtml::_('phpsetting.boolean', $this->php_settings['display_errors']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_SHORT_OPEN_TAGS'); ?> </td> <td> <?php echo JHtml::_('phpsetting.boolean', $this->php_settings['short_open_tag']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_FILE_UPLOADS'); ?> </td> <td> <?php echo JHtml::_('phpsetting.boolean', $this->php_settings['file_uploads']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_MAGIC_QUOTES'); ?> </td> <td> <?php echo JHtml::_('phpsetting.boolean', $this->php_settings['magic_quotes_gpc']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_REGISTER_GLOBALS'); ?> </td> <td> <?php echo JHtml::_('phpsetting.boolean', $this->php_settings['register_globals']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_OUTPUT_BUFFERING'); ?> </td> <td> <?php echo JHtml::_('phpsetting.boolean', $this->php_settings['output_buffering']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_SESSION_SAVE_PATH'); ?> </td> <td> <?php echo JHtml::_('phpsetting.string', $this->php_settings['session.save_path']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_SESSION_AUTO_START'); ?> </td> <td> <?php echo JHtml::_('phpsetting.integer', $this->php_settings['session.auto_start']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_XML_ENABLED'); ?> </td> <td> <?php echo JHtml::_('phpsetting.set', $this->php_settings['xml']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_ZLIB_ENABLED'); ?> </td> <td> <?php echo JHtml::_('phpsetting.set', $this->php_settings['zlib']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_ZIP_ENABLED'); ?> </td> <td> <?php echo JHtml::_('phpsetting.set', $this->php_settings['zip']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_DISABLED_FUNCTIONS'); ?> </td> <td class="break-word"> <?php echo JHtml::_('phpsetting.string', $this->php_settings['disable_functions']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_MBSTRING_ENABLED'); ?> </td> <td> <?php echo JHtml::_('phpsetting.set', $this->php_settings['mbstring']); ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_ADMIN_ICONV_AVAILABLE'); ?> </td> <td> <?php echo JHtml::_('phpsetting.set', $this->php_settings['iconv']); ?> </td> </tr> </tbody> </table> </fieldset> PKb��\?��3components/com_admin/views/sysinfo/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Add specific helper files for html generation JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); ?> <form action="<?php echo JRoute::_('index.php'); ?>" method="post" name="adminForm" id="adminForm"> <div class="row-fluid"> <!-- Begin Content --> <div class="span12"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'site')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'site', JText::_('COM_ADMIN_SYSTEM_INFORMATION', true)); ?> <?php echo $this->loadTemplate('system'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'phpsettings', JText::_('COM_ADMIN_PHP_SETTINGS', true)); ?> <?php echo $this->loadTemplate('phpsettings'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'config', JText::_('COM_ADMIN_CONFIGURATION_FILE', true)); ?> <?php echo $this->loadTemplate('config'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'directory', JText::_('COM_ADMIN_DIRECTORY_PERMISSIONS', true)); ?> <?php echo $this->loadTemplate('directory'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'phpinfo', JText::_('COM_ADMIN_PHP_INFORMATION', true)); ?> <?php echo $this->loadTemplate('phpinfo'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> </div> <!-- End Content --> </div> </form> PKb��\}���=components/com_admin/views/sysinfo/tmpl/default_directory.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset class="adminform"> <legend><?php echo JText::_('COM_ADMIN_DIRECTORY_PERMISSIONS'); ?></legend> <table class="table table-striped"> <thead> <tr> <th width="650"> <?php echo JText::_('COM_ADMIN_DIRECTORY'); ?> </th> <th> <?php echo JText::_('COM_ADMIN_STATUS'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="2"> </td> </tr> </tfoot> <tbody> <?php foreach ($this->directory as $dir => $info) : ?> <tr> <td> <?php echo JHtml::_('directory.message', $dir, $info['message']); ?> </td> <td> <?php echo JHtml::_('directory.writable', $info['writable']); ?> </td> </tr> <?php endforeach; ?> </tbody> </table> </fieldset> PKb��\��l�hh0components/com_admin/views/sysinfo/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Sysinfo View class for the Admin component * * @since 1.6 */ class AdminViewSysinfo extends JViewLegacy { /** * @var array some php settings */ protected $php_settings = null; /** * @var array config values */ protected $config = null; /** * @var array somme system values */ protected $info = null; /** * @var string php info */ protected $php_info = null; /** * @var array informations about writable state of directories */ protected $directory = null; /** * 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 a Error object. */ public function display($tpl = null) { // Access check. if (!JFactory::getUser()->authorise('core.admin')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $this->php_settings = $this->get('PhpSettings'); $this->config = $this->get('config'); $this->info = $this->get('info'); $this->php_info = $this->get('PhpInfo'); $this->directory = $this->get('directory'); $this->addToolbar(); $this->_setSubMenu(); parent::display($tpl); } /** * Setup the SubMenu * * @return void * * @since 1.6 * @note Necessary for Hathor compatibility */ protected function _setSubMenu() { try { $contents = $this->loadTemplate('navigation'); $document = JFactory::getDocument(); $document->setBuffer($contents, 'modules', 'submenu'); } catch (Exception $e) { } } /** * Setup the Toolbar * * @return void * * @since 1.6 */ protected function addToolbar() { JToolbarHelper::title(JText::_('COM_ADMIN_SYSTEM_INFORMATION'), 'info-2 systeminfo'); JToolbarHelper::help('JHELP_SITE_SYSTEM_INFORMATION'); } } PKb��\iq���0components/com_admin/helpers/html/phpsetting.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Utility class working with phpsetting * * @since 1.6 */ abstract class JHtmlPhpSetting { /** * Method to generate a boolean message for a value * * @param boolean $val is the value set? * * @return string html code */ public static function boolean($val) { return JText::_($val ? 'JON' : 'JOFF'); } /** * Method to generate a boolean message for a value * * @param boolean $val is the value set? * * @return string html code */ public static function set($val) { return JText::_($val ? 'JYES' : 'JNO'); } /** * Method to generate a string message for a value * * @param string $val a php ini value * * @return string html code */ public static function string($val) { return !empty($val) ? $val : JText::_('JNONE'); } /** * Method to generate an integer from a value * * @param string $val a php ini value * * @return string html code * * @deprecated 4.0 Use intval() or casting instead. */ public static function integer($val) { JLog::add( 'JHtmlPhpSetting::integer() is deprecated. Use intval() or casting instead.', JLog::WARNING, 'deprecated' ); return (int) $val; } } PKb��\�@���/components/com_admin/helpers/html/directory.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Utility class working with directory * * @since 1.6 */ abstract class JHtmlDirectory { /** * Method to generate a (un)writable message for directory * * @param boolean $writable is the directory writable? * * @return string html code */ public static function writable($writable) { if ($writable) { return '<span class="badge badge-success">' . JText::_('COM_ADMIN_WRITABLE') . '</span>'; } return '<span class="badge badge-important">' . JText::_('COM_ADMIN_UNWRITABLE') . '</span>'; } /** * Method to generate a message for a directory * * @param string $dir the directory * @param boolean $message the message * @param boolean $visible is the $dir visible? * * @return string html code */ public static function message($dir, $message, $visible = true) { $output = $visible ? $dir : ''; if (empty($message)) { return $output; } return $output . ' <strong>' . JText::_($message) . '</strong>'; } } PKb��\c!z1ee,components/com_admin/helpers/html/system.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Utility class working with system * * @since 1.6 */ abstract class JHtmlSystem { /** * Method to generate a string message for a value * * @param string $val a php ini value * * @return string html code */ public static function server($val) { return !empty($val) ? $val : JText::_('COM_ADMIN_NA'); } } PKb��\5�œ � -components/com_admin/models/forms/profile.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset name="user_details"> <field name="name" type="text" description="COM_ADMIN_USER_FIELD_NAME_DESC" label="COM_ADMIN_USER_HEADING_NAME" required="true" size="30" /> <field name="username" type="text" description="COM_ADMIN_USER_FIELD_USERNAME_DESC" label="COM_ADMIN_USER_FIELD_USERNAME_LABEL" required="true" size="30" /> <field name="password2" type="password" autocomplete="off" class="validate-password" description="COM_ADMIN_USER_FIELD_PASSWORD_DESC" field="password" filter="raw" label="JGLOBAL_PASSWORD" message="COM_ADMIN_USER_FIELD_PASSWORD1_MESSAGE" size="30" validate="equals" /> <field name="password" type="password" autocomplete="off" class="validate-password" description="COM_ADMIN_USER_FIELD_PASSWORD2_DESC" filter="raw" label="COM_ADMIN_USER_FIELD_PASSWORD2_LABEL" size="30" validate="password" /> <field name="email" type="email" class="validate-email" description="COM_ADMIN_USER_FIELD_EMAIL_DESC" label="JGLOBAL_EMAIL" required="true" size="30" validate="email" /> <field name="registerDate" type="calendar" class="readonly" label="COM_ADMIN_USER_FIELD_REGISTERDATE_LABEL" description="COM_ADMIN_USER_FIELD_REGISTERDATE_DESC" readonly="true" format="%Y-%m-%d %H:%M:%S" size="22" filter="user_utc" /> <field name="lastvisitDate" type="calendar" class="readonly" label="COM_ADMIN_USER_FIELD_LASTVISIT_LABEL" description="COM_ADMIN_USER_FIELD_LASTVISIT_DESC" readonly="true" format="%Y-%m-%d %H:%M:%S" size="22" filter="user_utc" /> <field name="id" type="text" class="readonly" label="JGLOBAL_FIELD_ID_LABEL" description ="JGLOBAL_FIELD_ID_DESC" default="0" readonly="true" filter="unset" /> </fieldset> <fields name="params"> <!-- Basic user account settings. --> <fieldset name="settings" label="COM_ADMIN_USER_SETTINGS_FIELDSET_LABEL"> <field name="admin_style" type="templatestyle" client="administrator" description="COM_ADMIN_USER_FIELD_BACKEND_TEMPLATE_DESC" label="COM_ADMIN_USER_FIELD_BACKEND_TEMPLATE_LABEL" > <option value="">JOPTION_USE_DEFAULT</option> </field> <field name="admin_language" type="language" client="administrator" description="COM_ADMIN_USER_FIELD_BACKEND_LANGUAGE_DESC" label="COM_ADMIN_USER_FIELD_BACKEND_LANGUAGE_LABEL" > <option value="">JOPTION_USE_DEFAULT</option> </field> <field name="language" type="language" client="site" description="COM_ADMIN_USER_FIELD_FRONTEND_LANGUAGE_DESC" label="COM_ADMIN_USER_FIELD_FRONTEND_LANGUAGE_LABEL" > <option value="">JOPTION_USE_DEFAULT</option> </field> <field name="editor" type="plugins" folder="editors" description="COM_ADMIN_USER_FIELD_EDITOR_DESC" label="COM_ADMIN_USER_FIELD_EDITOR_LABEL" > <option value="">JOPTION_USE_DEFAULT</option> </field> <field name="helpsite" type="helpsite" label="COM_ADMIN_USER_FIELD_HELPSITE_LABEL" description="COM_ADMIN_USER_FIELD_HELPSITE_DESC" > <option value="">JOPTION_USE_DEFAULT</option> </field> <field name="timezone" type="timezone" label="COM_ADMIN_USER_FIELD_TIMEZONE_LABEL" description="COM_ADMIN_USER_FIELD_TIMEZONE_DESC" > <option value="">JOPTION_USE_DEFAULT</option> </field> </fieldset> </fields> </form> PKb��\#?o1&&'components/com_admin/models/sysinfo.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * Model for the display of system information. * * @since 1.6 */ class AdminModelSysInfo extends JModelLegacy { /** * @var array Some PHP settings * @since 1.6 */ protected $php_settings = null; /** * @var array Config values * @since 1.6 */ protected $config = null; /** * @var array Some system values * @since 1.6 */ protected $info = null; /** * @var string PHP info * @since 1.6 */ protected $php_info = null; /** * Information about writable state of directories * * @var array * @since 1.6 */ protected $directories = null; /** * The current editor. * * @var string * @since 1.6 */ protected $editor = null; /** * Method to get the ChangeLog * * @return array some php settings * * @since 1.6 */ public function &getPhpSettings() { if (!is_null($this->php_settings)) { return $this->php_settings; } $this->php_settings = array(); $this->php_settings['safe_mode'] = ini_get('safe_mode') == '1'; $this->php_settings['display_errors'] = ini_get('display_errors') == '1'; $this->php_settings['short_open_tag'] = ini_get('short_open_tag') == '1'; $this->php_settings['file_uploads'] = ini_get('file_uploads') == '1'; $this->php_settings['magic_quotes_gpc'] = ini_get('magic_quotes_gpc') == '1'; $this->php_settings['register_globals'] = ini_get('register_globals') == '1'; $this->php_settings['output_buffering'] = (bool) ini_get('output_buffering'); $this->php_settings['open_basedir'] = ini_get('open_basedir'); $this->php_settings['session.save_path'] = ini_get('session.save_path'); $this->php_settings['session.auto_start'] = ini_get('session.auto_start'); $this->php_settings['disable_functions'] = ini_get('disable_functions'); $this->php_settings['xml'] = extension_loaded('xml'); $this->php_settings['zlib'] = extension_loaded('zlib'); $this->php_settings['zip'] = function_exists('zip_open') && function_exists('zip_read'); $this->php_settings['mbstring'] = extension_loaded('mbstring'); $this->php_settings['iconv'] = function_exists('iconv'); return $this->php_settings; } /** * Method to get the config * * @return array config values * * @since 1.6 */ public function &getConfig() { if (!is_null($this->config)) { return $this->config; } $registry = new Registry(new JConfig); $this->config = $registry->toArray(); $hidden = array('host', 'user', 'password', 'ftp_user', 'ftp_pass', 'smtpuser', 'smtppass'); foreach ($hidden as $key) { $this->config[$key] = 'xxxxxx'; } return $this->config; } /** * Method to get the system information * * @return array system information values * * @since 1.6 */ public function &getInfo() { if (!is_null($this->info)) { return $this->info; } $this->info = array(); $version = new JVersion; $platform = new JPlatform; $db = $this->getDbo(); $this->info['php'] = php_uname(); $this->info['dbversion'] = $db->getVersion(); $this->info['dbcollation'] = $db->getCollation(); $this->info['phpversion'] = phpversion(); $this->info['server'] = isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : getenv('SERVER_SOFTWARE'); $this->info['sapi_name'] = php_sapi_name(); $this->info['version'] = $version->getLongVersion(); $this->info['platform'] = $platform->getLongVersion(); $this->info['useragent'] = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ""; return $this->info; } /** * Method to get if phpinfo method is enabled from php.ini * * @return boolean True if enabled * * @since 3.4.1 */ public function phpinfoEnabled() { return !in_array('phpinfo', explode(',', ini_get('disable_functions'))); } /** * Method to get the PHP info * * @return string PHP info * * @since 1.6 */ public function &getPHPInfo() { if (!$this->phpinfoEnabled()) { $this->php_info = JText::_('COM_ADMIN_PHPINFO_DISABLED'); return $this->php_info; } if (!is_null($this->php_info)) { return $this->php_info; } ob_start(); date_default_timezone_set('UTC'); phpinfo(INFO_GENERAL | INFO_CONFIGURATION | INFO_MODULES); $phpInfo = ob_get_contents(); ob_end_clean(); preg_match_all('#<body[^>]*>(.*)</body>#siU', $phpInfo, $output); $output = preg_replace('#<table[^>]*>#', '<table class="table table-striped adminlist">', $output[1][0]); $output = preg_replace('#(\w),(\w)#', '\1, \2', $output); $output = preg_replace('#<hr />#', '', $output); $output = str_replace('<div class="center">', '', $output); $output = preg_replace('#<tr class="h">(.*)<\/tr>#', '<thead><tr class="h">$1</tr></thead><tbody>', $output); $output = str_replace('</table>', '</tbody></table>', $output); $output = str_replace('</div>', '', $output); $this->php_info = $output; return $this->php_info; } /** * Method to get the directory states * * @return array States of directories * * @since 1.6 */ public function getDirectory() { if (!is_null($this->directories)) { return $this->directories; } $this->directories = array(); $registry = JFactory::getConfig(); $cparams = JComponentHelper::getParams('com_media'); $this->_addDirectory('administrator/components', JPATH_ADMINISTRATOR . '/components'); $this->_addDirectory('administrator/language', JPATH_ADMINISTRATOR . '/language'); // List all admin languages $admin_langs = new DirectoryIterator(JPATH_ADMINISTRATOR . '/language'); foreach ($admin_langs as $folder) { if (!$folder->isDir() || $folder->isDot()) { continue; } $this->_addDirectory('administrator/language/' . $folder->getFilename(), JPATH_ADMINISTRATOR . '/language/' . $folder->getFilename()); } // List all manifests folders $manifests = new DirectoryIterator(JPATH_ADMINISTRATOR . '/manifests'); foreach ($manifests as $folder) { if (!$folder->isDir() || $folder->isDot()) { continue; } $this->_addDirectory('administrator/manifests/' . $folder->getFilename(), JPATH_ADMINISTRATOR . '/manifests/' . $folder->getFilename()); } $this->_addDirectory('administrator/modules', JPATH_ADMINISTRATOR . '/modules'); $this->_addDirectory('administrator/templates', JPATH_THEMES); $this->_addDirectory('components', JPATH_SITE . '/components'); $this->_addDirectory($cparams->get('image_path'), JPATH_SITE . '/' . $cparams->get('image_path')); // List all images folders $image_folders = new DirectoryIterator(JPATH_SITE . '/' . $cparams->get('image_path')); foreach ($image_folders as $folder) { if (!$folder->isDir() || $folder->isDot()) { continue; } $this->_addDirectory('images/' . $folder->getFilename(), JPATH_SITE . '/' . $cparams->get('image_path') . '/' . $folder->getFilename()); } $this->_addDirectory('language', JPATH_SITE . '/language'); // List all site languages $site_langs = new DirectoryIterator(JPATH_SITE . '/language'); foreach ($site_langs as $folder) { if (!$folder->isDir() || $folder->isDot()) { continue; } $this->_addDirectory('language/' . $folder->getFilename(), JPATH_SITE . '/language/' . $folder->getFilename()); } $this->_addDirectory('libraries', JPATH_LIBRARIES); $this->_addDirectory('media', JPATH_SITE . '/media'); $this->_addDirectory('modules', JPATH_SITE . '/modules'); $this->_addDirectory('plugins', JPATH_PLUGINS); $plugin_groups = new DirectoryIterator(JPATH_SITE . '/plugins'); foreach ($plugin_groups as $folder) { if (!$folder->isDir() || $folder->isDot()) { continue; } $this->_addDirectory('plugins/' . $folder->getFilename(), JPATH_PLUGINS . '/' . $folder->getFilename()); } $this->_addDirectory('templates', JPATH_SITE . '/templates'); $this->_addDirectory('configuration.php', JPATH_CONFIGURATION . '/configuration.php'); // Is there a cache path in configuration.php? if ($cache_path = trim($registry->get('cache_path', ''))) { // Frontend and backend use same directory for caching. $this->_addDirectory($cache_path, $cache_path, 'COM_ADMIN_CACHE_DIRECTORY'); } else { $this->_addDirectory('cache', JPATH_SITE . '/cache', 'COM_ADMIN_CACHE_DIRECTORY'); $this->_addDirectory('administrator/cache', JPATH_CACHE, 'COM_ADMIN_CACHE_DIRECTORY'); } $this->_addDirectory($registry->get('log_path', JPATH_ROOT . '/log'), $registry->get('log_path', JPATH_ROOT . '/log'), 'COM_ADMIN_LOG_DIRECTORY'); $this->_addDirectory($registry->get('tmp_path', JPATH_ROOT . '/tmp'), $registry->get('tmp_path', JPATH_ROOT . '/tmp'), 'COM_ADMIN_TEMP_DIRECTORY'); return $this->directories; } /** * Method to add a directory * * @return void * @since 1.6 */ /** * Method to add a directory * * @param string $name Directory Name * @param string $path Directory path * @param string $message Message * * @return void */ private function _addDirectory($name, $path, $message = '') { $this->directories[$name] = array('writable' => is_writable($path), 'message' => $message); } /** * Method to get the editor * * @return string The default editor * * @note: has to be removed (it is present in the config...) * * @since 1.6 */ public function &getEditor() { if (!is_null($this->editor)) { return $this->editor; } $this->editor = JFactory::getConfig()->get('editor'); return $this->editor; } } PKb��\�~&��$components/com_admin/models/help.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Admin Component Help Model * * @since 1.6 */ class AdminModelHelp extends JModelLegacy { /** * The search string * * @var string * * @since 1.6 */ protected $help_search = null; /** * The page to be viewed * * @var string * * @since 1.6 */ protected $page = null; /** * The iso language tag * * @var string * * @since 1.6 */ protected $lang_tag = null; /** * Table of contents * * @var array * * @since 1.6 */ protected $toc = null; /** * URL for the latest version check * * @var string * * @since 1.6 */ protected $latest_version_check = null; /** * Method to get the help search string * * @return string Help search string * * @since 1.6 */ public function &getHelpSearch() { if (is_null($this->help_search)) { $this->help_search = JFactory::getApplication()->input->getString('helpsearch'); } return $this->help_search; } /** * Method to get the page * * @return string The page * * @since 1.6 */ public function &getPage() { if (is_null($this->page)) { $page = JFactory::getApplication()->input->get('page', 'JHELP_START_HERE'); $this->page = JHelp::createUrl($page); } return $this->page; } /** * Method to get the lang tag * * @return string lang iso tag * * @since 1.6 */ public function getLangTag() { if (is_null($this->lang_tag)) { $lang = JFactory::getLanguage(); $this->lang_tag = $lang->getTag(); if (!is_dir(JPATH_BASE . '/help/' . $this->lang_tag)) { // Use english as fallback $this->lang_tag = 'en-GB'; } } return $this->lang_tag; } /** * Method to get the toc * * @return array Table of contents */ public function &getToc() { if (!is_null($this->toc)) { return $this->toc; } // Get vars $lang_tag = $this->getLangTag(); $help_search = $this->getHelpSearch(); // New style - Check for a TOC JSON file if (file_exists(JPATH_BASE . '/help/' . $lang_tag . '/toc.json')) { $data = json_decode(file_get_contents(JPATH_BASE . '/help/' . $lang_tag . '/toc.json')); // Loop through the data array foreach ($data as $key => $value) { $this->toc[$key] = JText::_('COM_ADMIN_HELP_' . $value); } // Sort the Table of Contents asort($this->toc); return $this->toc; } // Get Help files jimport('joomla.filesystem.folder'); $files = JFolder::files(JPATH_BASE . '/help/' . $lang_tag, '\.xml$|\.html$'); $this->toc = array(); foreach ($files as $file) { $buffer = file_get_contents(JPATH_BASE . '/help/' . $lang_tag . '/' . $file); if (!preg_match('#<title>(.*?)</title>#', $buffer, $m)) { continue; } $title = trim($m[1]); if (!$title) { continue; } // Translate the page title $title = JText::_($title); // Strip the extension $file = preg_replace('#\.xml$|\.html$#', '', $file); if ($help_search && JString::strpos(JString::strtolower(strip_tags($buffer)), JString::strtolower($help_search)) === false) { continue; } // Add an item in the Table of Contents $this->toc[$file] = $title; } // Sort the Table of Contents asort($this->toc); return $this->toc; } /** * Method to get the latest version check * * @return string Latest Version Check URL */ public function &getLatestVersionCheck() { if (!$this->latest_version_check) { $override = 'https://help.joomla.org/proxy/index.php?option=com_help&keyref=Help{major}{minor}:' . 'Joomla_Version_{major}_{minor}_{maintenance}/{langcode}&lang={langcode}'; $this->latest_version_check = JHelp::createUrl('JVERSION', false, $override); } return $this->latest_version_check; } } PKb��\Y_v�zz'components/com_admin/models/profile.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require_once JPATH_ADMINISTRATOR . '/components/com_users/models/user.php'; /** * User model. * * @since 1.6 */ class AdminModelProfile extends UsersModelUser { /** * Method to get the record form. * * @param array $data An optional array of data for the form to interogate. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return JForm A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_admin.profile', 'profile', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } // Check for username compliance and parameter set $isUsernameCompliant = true; if ($this->loadFormData()->username) { $username = $this->loadFormData()->username; $isUsernameCompliant = !(preg_match('#[<>"\'%;()&\\\\]|\\.\\./#', $username) || strlen(utf8_decode($username)) < 2 || trim($username) != $username); } $this->setState('user.username.compliant', $isUsernameCompliant); if (!JComponentHelper::getParams('com_users')->get('change_login_name') && $isUsernameCompliant) { $form->setFieldAttribute('username', 'required', 'false'); $form->setFieldAttribute('username', 'readonly', 'true'); $form->setFieldAttribute('username', 'description', 'COM_ADMIN_USER_FIELD_NOCHANGE_USERNAME_DESC'); } // If the user needs to change their password, mark the password fields as required if (JFactory::getUser()->requireReset) { $form->setFieldAttribute('password', 'required', 'true'); $form->setFieldAttribute('password2', 'required', 'true'); } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_users.edit.user.data', array()); if (empty($data)) { $data = $this->getItem(); } // Load the users plugins. JPluginHelper::importPlugin('user'); $this->preprocessData('com_admin.profile', $data); return $data; } /** * Method to get a single record. * * @param integer $pk The id of the primary key. * * @return mixed Object on success, false on failure. * * @since 1.6 */ public function getItem($pk = null) { $user = JFactory::getUser(); return parent::getItem($user->get('id')); } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 1.6 */ public function save($data) { $user = JFactory::getUser(); unset($data['id']); unset($data['groups']); unset($data['sendEmail']); unset($data['block']); $isUsernameCompliant = $this->getState('user.username.compliant'); if (!JComponentHelper::getParams('com_users')->get('change_login_name') && $isUsernameCompliant) { unset($data['username']); } // Bind the data. if (!$user->bind($data)) { $this->setError($user->getError()); return false; } $user->groups = null; // Store the data. if (!$user->save()) { $this->setError($user->getError()); return false; } $this->setState('user.id', $user->id); return true; } } PKb��\���Xvv#components/com_admin/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_admin * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Admin Controller * * @since 1.6 */ class AdminController extends JControllerLegacy { } PKb��\�:�FF*components/com_messages/tables/message.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Message Table class * * @since 1.5 */ class MessagesTableMessage extends JTable { /** * Constructor * * @param JDatabaseDriver &$db Database connector object * * @since 1.5 */ public function __construct(&$db) { parent::__construct('#__messages', 'message_id', $db); } /** * Validation and filtering. * * @return boolean * * @since 1.5 */ public function check() { // Check the to and from users. $user = new JUser($this->user_id_from); if (empty($user->id)) { $this->setError(JText::_('COM_MESSAGES_ERROR_INVALID_FROM_USER')); return false; } $user = new JUser($this->user_id_to); if (empty($user->id)) { $this->setError(JText::_('COM_MESSAGES_ERROR_INVALID_TO_USER')); return false; } if (empty($this->subject)) { $this->setError(JText::_('COM_MESSAGES_ERROR_INVALID_SUBJECT')); return false; } if (empty($this->message)) { $this->setError(JText::_('COM_MESSAGES_ERROR_INVALID_MESSAGE')); return false; } return true; } /** * Method to set the publishing state for a row or list of rows in the database * table. The method respects checked out rows by other users and will attempt * to checkin rows that it can after adjustments are made. * * @param mixed $pks An optional array of primary key values to update. If not * set the instance property value is used. * @param integer $state The publishing state. eg. [0 = unpublished, 1 = published] * @param integer $userId The user id of the user performing the operation. * * @return boolean True on success. * * @since 1.6 */ public function publish($pks = null, $state = 1, $userId = 0) { $k = $this->_tbl_key; // Sanitize input. JArrayHelper::toInteger($pks); $state = (int) $state; // If there are no primary keys set check to see if the instance key is set. if (empty($pks)) { if ($this->$k) { $pks = array($this->$k); } // Nothing to set publishing state on, return false. else { $this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED')); return false; } } // Build the WHERE clause for the primary keys. $where = $k . ' IN (' . implode(',', $pks) . ')'; // Update the publishing state for rows with the given primary keys. $this->_db->setQuery( 'UPDATE ' . $this->_db->quoteName($this->_tbl) . ' SET ' . $this->_db->quoteName('state') . ' = ' . (int) $state . ' WHERE (' . $where . ')' ); try { $this->_db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } // If the JTable instance value is in the list of primary keys that were set, set the instance. if (in_array($this->$k, $pks)) { $this->state = $state; } $this->setError(''); return true; } } PKb��\��=�.components/com_messages/controllers/config.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Messages Component Message Model * * @since 1.6 */ class MessagesControllerConfig extends JControllerLegacy { /** * Method to save a record. * * @return boolean * * @since 1.6 */ public function save() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $model = $this->getModel('Config', 'MessagesModel'); $data = $this->input->post->get('jform', array(), 'array'); // Validate the posted data. $form = $model->getForm(); if (!$form) { JError::raiseError(500, $model->getError()); return false; } $data = $model->validate($form, $data); // Check for validation errors. if ($data === false) { // Get the validation messages. $errors = $model->getErrors(); // Push up to three validation messages out to the user. for ($i = 0, $n = count($errors); $i < $n && $i < 3; $i++) { if ($errors[$i] instanceof Exception) { $app->enqueueMessage($errors[$i]->getMessage(), 'warning'); } else { $app->enqueueMessage($errors[$i], 'warning'); } } // Redirect back to the main list. $this->setRedirect(JRoute::_('index.php?option=com_messages&view=messages', false)); return false; } // Attempt to save the data. if (!$model->save($data)) { // Redirect back to the main list. $this->setMessage(JText::sprintf('JERROR_SAVE_FAILED', $model->getError()), 'warning'); $this->setRedirect(JRoute::_('index.php?option=com_messages&view=messages', false)); return false; } // Redirect to the list screen. $this->setMessage(JText::_('COM_MESSAGES_CONFIG_SAVED')); $this->setRedirect(JRoute::_('index.php?option=com_messages&view=messages', false)); return true; } } PKb��\�*�ۍ�0components/com_messages/controllers/messages.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Messages list controller class. * * @since 1.6 */ class MessagesControllerMessages extends JControllerAdmin { /** * Method to get a model object, loading it if required. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 1.6 */ public function getModel($name = 'Message', $prefix = 'MessagesModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } } PKb��\��d*))/components/com_messages/controllers/message.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Messages Component Message Model * * @since 1.6 */ class MessagesControllerMessage extends JControllerForm { /** * Method (override) to check if you can save a new or existing record. * * Adjusts for the primary key name and hands off to the parent class. * * @param array $data An array of input data. * @param string $key The name of the key for the primary key. * * @return boolean * * @since 1.6 */ protected function allowSave($data, $key = 'message_id') { return parent::allowSave($data, $key); } /** * Reply to an existing message. * * This is a simple redirect to the compose form. * * @return void * * @since 1.6 */ public function reply() { if ($replyId = $this->input->getInt('reply_id')) { $this->setRedirect('index.php?option=com_messages&view=message&layout=edit&reply_id=' . $replyId); } else { $this->setMessage(JText::_('COM_MESSAGES_INVALID_REPLY_ID')); $this->setRedirect('index.php?option=com_messages&view=messages'); } } } PKb��\���||$components/com_messages/messages.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; if (!JFactory::getUser()->authorise('core.manage', 'com_messages')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $task = JFactory::getApplication()->input->get('task'); $controller = JControllerLegacy::getInstance('Messages'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\�07��$components/com_messages/messages.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_messages</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_MESSAGES_XML_DESCRIPTION</description> <languages folder="site"> <language tag="en-GB">language/en-GB.com_messages.ini</language> </languages> <administration> <files folder="admin"> <filename>config.xml</filename> <filename>controller.php</filename> <filename>messages.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>tables</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_messages.ini</language> <language tag="en-GB">language/en-GB.com_messages.sys.ini</language> </languages> </administration> </extension> PKb��\y��KK6components/com_messages/layouts/toolbar/mysettings.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $text = JText::_('COM_MESSAGES_TOOLBAR_MY_SETTINGS'); ?> <a rel="{handler:'iframe', size:{x:700,y:300}}" href="index.php?option=com_messages&view=config&tmpl=component" title="<?php echo $text; ?>" class="messagesSettings btn btn-small"> <span class="icon-cog"></span> <?php echo $text; ?> </a> PKb��\�Y��cc"components/com_messages/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_messages" section="component" /> </fieldset> </config> PKb��\�8�rr"components/com_messages/access.xmlnu�[���<?xml version="1.0" encoding="utf-8" ?> <access component="com_messages"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> </section> </access> PKb��\�Ԅ͚�3components/com_messages/views/message/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 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 HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'message.cancel' || document.formvalidator.isValid(document.getElementById('message-form'))) { Joomla.submitform(task, document.getElementById('message-form')); } }; "); ?> <form action="<?php echo JRoute::_('index.php?option=com_messages'); ?>" method="post" name="adminForm" id="message-form" class="form-validate form-horizontal"> <fieldset class="adminform"> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('user_id_to'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('user_id_to'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('subject'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('subject'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('message'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('message'); ?> </div> </div> </fieldset> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\ 0α[[6components/com_messages/views/message/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.framework'); JHtml::_('formbehavior.chosen', 'select'); ?> <form action="<?php echo JRoute::_('index.php?option=com_messages'); ?>" method="post" name="adminForm" id="adminForm" class="form-horizontal"> <fieldset> <div class="control-group"> <div class="control-label"> <?php echo JText::_('COM_MESSAGES_FIELD_USER_ID_FROM_LABEL'); ?> </div> <div class="controls"> <?php echo $this->item->get('from_user_name');?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo JText::_('COM_MESSAGES_FIELD_DATE_TIME_LABEL'); ?> </div> <div class="controls"> <?php echo JHtml::_('date', $this->item->date_time);?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo JText::_('COM_MESSAGES_FIELD_SUBJECT_LABEL'); ?> </div> <div class="controls"> <?php echo $this->item->subject;?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo JText::_('COM_MESSAGES_FIELD_MESSAGE_LABEL'); ?> </div> <div class="controls"> <?php echo $this->item->message; ?> </div> </div> <input type="hidden" name="task" value="" /> <input type="hidden" name="reply_id" value="<?php echo $this->item->message_id; ?>" /> <?php echo JHtml::_('form.token'); ?> </fieldset> </form> PKb��\�(|SJJ3components/com_messages/views/message/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * HTML View class for the Messages component * * @since 1.6 */ class MessagesViewMessage extends JViewLegacy { protected $form; protected $item; protected $state; /** * 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 a Error object. * * @since 1.6 */ public function display($tpl = null) { $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } parent::display($tpl); $this->addToolbar(); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { if ($this->getLayout() == 'edit') { JFactory::getApplication()->input->set('hidemainmenu', true); JToolbarHelper::title(JText::_('COM_MESSAGES_WRITE_PRIVATE_MESSAGE'), 'envelope-opened new-privatemessage'); JToolbarHelper::save('message.save', 'COM_MESSAGES_TOOLBAR_SEND'); JToolbarHelper::cancel('message.cancel'); JToolbarHelper::help('JHELP_COMPONENTS_MESSAGING_WRITE'); } else { JToolbarHelper::title(JText::_('COM_MESSAGES_VIEW_PRIVATE_MESSAGE'), 'envelope inbox'); $sender = JUser::getInstance($this->item->user_id_from); if ($sender->authorise('core.admin') || $sender->authorise('core.manage', 'com_messages') && $sender->authorise('core.login.admin')) { JToolbarHelper::custom('message.reply', 'redo', null, 'COM_MESSAGES_TOOLBAR_REPLY', false); } JToolbarHelper::cancel('message.cancel'); JToolbarHelper::help('JHELP_COMPONENTS_MESSAGING_READ'); } } } PKb��\R)����5components/com_messages/views/config/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 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 HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); JHtml::_('behavior.modal'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'config.cancel' || document.formvalidator.isValid(document.getElementById('config-form'))) { Joomla.submitform(task, document.getElementById('config-form')); } }; "); ?> <form action="<?php echo JRoute::_('index.php?option=com_messages'); ?>" method="post" name="adminForm" id="message-form" class="form-validate form-horizontal"> <fieldset> <div> <div class="modal-header"> <h3><?php echo JText::_('COM_MESSAGES_MY_SETTINGS');?></h3> </div> <div class="modal-body"> <button class="btn btn-primary" type="submit" onclick="Joomla.submitform('config.save', this.form);window.top.setTimeout('window.parent.jModalClose()', 700);"> <?php echo JText::_('JSAVE');?></button> <button class="btn" type="button" onclick="window.parent.jModalClose();"> <?php echo JText::_('JCANCEL');?></button> <hr /> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('lock'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('lock'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('mail_on_new'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('mail_on_new'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('auto_purge'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('auto_purge'); ?> </div> </div> </div> </div> </fieldset> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\���ee2components/com_messages/views/config/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View to edit messages user configuration. * * @since 1.6 */ class MessagesViewConfig extends JViewLegacy { protected $form; protected $item; protected $state; /** * 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 a Error object. * * @since 1.6 */ public function display($tpl = null) { $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } // Bind the record to the form. $this->form->bind($this->item); parent::display($tpl); } } PKb��\�~���7components/com_messages/views/messages/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_messages&view=messages'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_MESSAGES_SEARCH_IN_SUBJECT'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> <div class="btn-group pull-left hidden-phone"> <select name="filter_state" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', MessagesHelper::getStateOptions(), 'value', 'text', $this->state->get('filter.state'));?> </select> </div> </div> <div class="clearfix"> </div> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped"> <thead> <tr> <th width="20" class="center"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'COM_MESSAGES_HEADING_SUBJECT', 'a.subject', $listDirn, $listOrder); ?> </th> <th width="5%"> <?php echo JHtml::_('grid.sort', 'COM_MESSAGES_HEADING_READ', 'a.state', $listDirn, $listOrder); ?> </th> <th width="15%"> <?php echo JHtml::_('grid.sort', 'COM_MESSAGES_HEADING_FROM', 'a.user_id_from', $listDirn, $listOrder); ?> </th> <th width="20%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JDATE', 'a.date_time', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="6"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : $canChange = $user->authorise('core.edit.state', 'com_messages'); ?> <tr class="row<?php echo $i % 2; ?>"> <td> <?php echo JHtml::_('grid.id', $i, $item->message_id); ?> </td> <td> <a href="<?php echo JRoute::_('index.php?option=com_messages&view=message&message_id=' . (int) $item->message_id); ?>"> <?php echo $this->escape($item->subject); ?></a> </td> <td class="center"> <?php echo JHtml::_('messages.status', $i, $item->state, $canChange); ?> </td> <td> <?php echo $item->user_from; ?> </td> <td class="hidden-phone"> <?php echo JHtml::_('date', $item->date_time, JText::_('DATE_FORMAT_LC2')); ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> <div> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </div> </form> PKb��\��֯G G 4components/com_messages/views/messages/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.modal'); /** * View class for a list of messages. * * @since 1.6 */ class MessagesViewMessages extends JViewLegacy { protected $items; protected $pagination; protected $state; /** * 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 a Error object. * * @since 1.6 */ public function display($tpl = null) { $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $state = $this->get('State'); $canDo = JHelperContent::getActions('com_messages'); JToolbarHelper::title(JText::_('COM_MESSAGES_MANAGER_MESSAGES'), 'envelope inbox'); if ($canDo->get('core.create')) { JToolbarHelper::addNew('message.add'); } if ($canDo->get('core.edit.state')) { JToolbarHelper::divider(); JToolbarHelper::publish('messages.publish', 'COM_MESSAGES_TOOLBAR_MARK_AS_READ', true); JToolbarHelper::unpublish('messages.unpublish', 'COM_MESSAGES_TOOLBAR_MARK_AS_UNREAD', true); } JToolbarHelper::divider(); $bar = JToolBar::getInstance('toolbar'); // Instantiate a new JLayoutFile instance and render the layout JHtml::_('behavior.modal', 'a.messagesSettings'); $layout = new JLayoutFile('toolbar.mysettings'); $bar->appendButton('Custom', $layout->render(array()), 'upload'); if ($state->get('filter.state') == -2 && $canDo->get('core.delete')) { JToolbarHelper::divider(); JToolbarHelper::deleteList('', 'messages.delete', 'JTOOLBAR_EMPTY_TRASH'); } elseif ($canDo->get('core.edit.state')) { JToolbarHelper::divider(); JToolbarHelper::trash('messages.trash'); } if ($canDo->get('core.admin')) { JToolbarHelper::preferences('com_messages'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_COMPONENTS_MESSAGING_INBOX'); } } PKb��\Dj�,components/com_messages/helpers/messages.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Messages helper class. * * @since 1.6 */ class MessagesHelper { /** * Configure the Linkbar. * * @param string $vName The name of the active view. * * @return void * * @since 1.6 */ public static function addSubmenu($vName) { JHtmlSidebar::addEntry( JText::_('COM_MESSAGES_ADD'), 'index.php?option=com_messages&view=message&layout=edit', $vName == 'message' ); JHtmlSidebar::addEntry( JText::_('COM_MESSAGES_READ'), 'index.php?option=com_messages', $vName == 'messages' ); } /** * Gets a list of the actions that can be performed. * * @return JObject * * @deprecated 3.2 Use JHelperContent::getActions() instead */ public static function getActions() { // Log usage of deprecated function JLog::add(__METHOD__ . '() is deprecated, use JHelperContent::getActions() with new arguments order instead.', JLog::WARNING, 'deprecated'); // Get list of actions $result = JHelperContent::getActions('com_messages'); return $result; } /** * Get a list of filter options for the state of a module. * * @return array An array of JHtmlOption elements. * * @since 1.6 */ public static function getStateOptions() { // Build the filter options. $options = array(); $options[] = JHtml::_('select.option', '1', JText::_('COM_MESSAGES_OPTION_READ')); $options[] = JHtml::_('select.option', '0', JText::_('COM_MESSAGES_OPTION_UNREAD')); $options[] = JHtml::_('select.option', '-2', JText::_('JTRASHED')); return $options; } } PKb��\V�a=� � 1components/com_messages/helpers/html/messages.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * JHtml administrator messages class. * * @since 1.6 */ class JHtmlMessages { /** * Get the HTML code of the state switcher * * @param int $value The state value * @param int $i Row number * @param boolean $canChange Can the user change the state? * * @return string * * @since 1.6 * * @deprecated 4.0 Use JHtmlMessages::status() instead */ public static function state($value = 0, $i = 0, $canChange = false) { // Log deprecated message JLog::add( 'JHtmlMessages::state() is deprecated. Use JHtmlMessages::status() instead.', JLog::WARNING, 'deprecated' ); // Note: $i is required but has to be an optional argument in the function call due to argument order if (null === $i) { throw new InvalidArgumentException('$i is a required argument in JHtmlMessages::state'); } // Note: $canChange is required but has to be an optional argument in the function call due to argument order if (null === $canChange) { throw new InvalidArgumentException('$canChange is a required argument in JHtmlMessages::state'); } return static::status($i, $value, $canChange); } /** * Get the HTML code of the state switcher * * @param int $i Row number * @param int $value The state value * @param boolean $canChange Can the user change the state? * * @return string * * @since 3.4 */ public static function status($i, $value = 0, $canChange = false) { // Array of image, task, title, action. $states = array( -2 => array('trash', 'messages.unpublish', 'JTRASHED', 'COM_MESSAGES_MARK_AS_UNREAD'), 1 => array('publish', 'messages.unpublish', 'COM_MESSAGES_OPTION_READ', 'COM_MESSAGES_MARK_AS_UNREAD'), 0 => array('unpublish', 'messages.publish', 'COM_MESSAGES_OPTION_UNREAD', 'COM_MESSAGES_MARK_AS_READ'), ); $state = JArrayHelper::getValue($states, (int) $value, $states[0]); $icon = $state[0]; if ($canChange) { $html = '<a href="#" onclick="return listItemTask(\'cb' . $i . '\',\'' . $state[1] . '\')" class="btn btn-micro hasTooltip' . ($value == 1 ? ' active' : '') . '" title="' . JHtml::tooltipText($state[3]) . '"><span class="icon-' . $icon . '"></span></a>'; } return $html; } } PKb��\p�ӧ��6components/com_messages/models/fields/usermessages.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JFormHelper::loadFieldClass('user'); /** * Supports an modal select of user that have access to com_messages * * @since 1.6 */ class JFormFieldUserMessages extends JFormFieldUser { /** * The form field type. * * @var string * @since 1.6 */ public $type = 'UserMessages'; /** * Method to get the filtering groups (null means no filtering) * * @return array|null array of filtering groups or null. * * @since 1.6 */ protected function getGroups() { // Compute usergroups $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('id') ->from('#__usergroups'); $db->setQuery($query); try { $groups = $db->loadColumn(); } catch (RuntimeException $e) { JError::raiseNotice(500, $e->getMessage()); return null; } foreach ($groups as $i => $group) { if (JAccess::checkGroup($group, 'core.admin')) { continue; } if (!JAccess::checkGroup($group, 'core.manage', 'com_messages')) { unset($groups[$i]); continue; } if (!JAccess::checkGroup($group, 'core.login.admin')) { unset($groups[$i]); continue; } } return array_values($groups); } /** * Method to get the users to exclude from the list of users * * @return array|null array of users to exclude or null to to not exclude them * * @since 1.6 */ protected function getExcluded() { return array(JFactory::getUser()->id); } } PKb��\�#��z z )components/com_messages/models/config.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Message configuration model. * * @since 1.6 */ class MessagesModelConfig extends JModelForm { /** * Method to auto-populate the model state. * * This method should only be called once per instantiation and is designed * to be called on the first call to the getState() method unless the model * configuration flag to ignore the request is set. * * Note. Calling getState in this method will result in recursion. * * @return void * * @since 1.6 */ protected function populateState() { $user = JFactory::getUser(); $this->setState('user.id', $user->get('id')); // Load the parameters. $params = JComponentHelper::getParams('com_messages'); $this->setState('params', $params); } /** * Method to get a single record. * * @return mixed Object on success, false on failure. * * @since 1.6 */ public function &getItem() { $item = new JObject; $db = $this->getDbo(); $query = $db->getQuery(true) ->select('cfg_name, cfg_value') ->from('#__messages_cfg') ->where($db->quoteName('user_id') . ' = ' . (int) $this->getState('user.id')); $db->setQuery($query); try { $rows = $db->loadObjectList(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } foreach ($rows as $row) { $item->set($row->cfg_name, $row->cfg_value); } $this->preprocessData('com_messages.config', $item); return $item; } /** * Method to get the record form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return JForm A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_messages.config', 'config', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } return $form; } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 1.6 */ public function save($data) { $db = $this->getDbo(); if ($userId = (int) $this->getState('user.id')) { $query = $db->getQuery(true) ->delete($db->quoteName('#__messages_cfg')) ->where($db->quoteName('user_id') . '=' . (int) $userId); $db->setQuery($query); try { $db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } if (count($data)) { $query = $db->getQuery(true) ->insert($db->quoteName('#__messages_cfg')) ->columns($db->quoteName(array('user_id', 'cfg_name', 'cfg_value'))); foreach ($data as $k => $v) { $query->values($userId . ', ' . $db->quote($k) . ', ' . $db->quote($v)); } $db->setQuery($query); try { $db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } } return true; } else { $this->setError('COM_MESSAGES_ERR_INVALID_USER'); return false; } } } PKb��\����0components/com_messages/models/forms/message.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field name="user_id_to" type="usermessages" label="COM_MESSAGES_FIELD_USER_ID_TO_LABEL" description="COM_MESSAGES_FIELD_USER_ID_TO_DESC" default="0" required="true" /> <field name="subject" type="text" label="COM_MESSAGES_FIELD_SUBJECT_LABEL" description="COM_MESSAGES_FIELD_SUBJECT_DESC" required="true" /> <field name="message" type="editor" label="COM_MESSAGES_FIELD_MESSAGE_LABEL" description="COM_MESSAGES_FIELD_MESSAGE_DESC" required="true" filter="JComponentHelper::filterText" buttons="true" hide="readmore,pagebreak,image,article" /> </fieldset> </form> PKb��\�1m�,,/components/com_messages/models/forms/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field name="lock" type="radio" class="btn-group btn-group-yesno" label="COM_MESSAGES_FIELD_LOCK_LABEL" description="COM_MESSAGES_FIELD_LOCK_DESC" default="0"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="mail_on_new" type="radio" class="btn-group btn-group-yesno" label="COM_MESSAGES_FIELD_MAIL_ON_NEW_LABEL" description="COM_MESSAGES_FIELD_MAIL_ON_NEW_DESC" default="1"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="auto_purge" type="text" size="6" default="7" label="COM_MESSAGES_FIELD_AUTO_PURGE_LABEL" description="COM_MESSAGES_FIELD_AUTO_PURGE_DESC" /> </fieldset> </form> PKb��\��+components/com_messages/models/messages.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Messages Component Messages Model * * @since 1.6 */ class MessagesModelMessages extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'message_id', 'a.id', 'subject', 'a.subject', 'state', 'a.state', 'user_id_from', 'a.user_id_from', 'user_id_to', 'a.user_id_to', 'date_time', 'a.date_time', 'priority', 'a.priority', ); } parent::__construct($config); } /** * Method to auto-populate the model state. * * This method should only be called once per instantiation and is designed * to be called on the first call to the getState() method unless the model * configuration flag to ignore the request is set. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $state = $this->getUserStateFromRequest($this->context . '.filter.state', 'filter_state', '', 'string'); $this->setState('filter.state', $state); // List state information. parent::populateState('a.date_time', 'desc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. * * @since 1.6 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.state'); return parent::getStoreId($id); } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery * * @since 1.6 */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); $user = JFactory::getUser(); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.*, ' . 'u.name AS user_from' ) ); $query->from('#__messages AS a'); // Join over the users for message owner. $query->join('INNER', '#__users AS u ON u.id = a.user_id_from') ->where('a.user_id_to = ' . (int) $user->get('id')); // Filter by published state. $state = $this->getState('filter.state'); if (is_numeric($state)) { $query->where('a.state = ' . (int) $state); } elseif ($state === '') { $query->where('(a.state IN (0, 1))'); } // Filter by search in subject or message. $search = $this->getState('filter.search'); if (!empty($search)) { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('a.subject LIKE ' . $search . ' OR a.message LIKE ' . $search); } // Add the list ordering clause. $query->order($db->escape($this->getState('list.ordering', 'a.date_time')) . ' ' . $db->escape($this->getState('list.direction', 'DESC'))); return $query; } } PKb��\5�b�!�!*components/com_messages/models/message.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Private Message model. * * @since 1.6 */ class MessagesModelMessage extends JModelAdmin { /** * Message */ protected $item; /** * Method to auto-populate the model state. * * This method should only be called once per instantiation and is designed * to be called on the first call to the getState() method unless the model * configuration flag to ignore the request is set. * * Note. Calling getState in this method will result in recursion. * * @return void * * @since 1.6 */ protected function populateState() { parent::populateState(); $input = JFactory::getApplication()->input; $user = JFactory::getUser(); $this->setState('user.id', $user->get('id')); $messageId = (int) $input->getInt('message_id'); $this->setState('message.id', $messageId); $replyId = (int) $input->getInt('reply_id'); $this->setState('reply.id', $replyId); } /** * Check that recipient user is the one trying to delete and then call parent delete method * * @param array &$pks An array of record primary keys. * * @return boolean True if successful, false if an error occurs. * * @since 3.1 */ public function delete(&$pks) { $pks = (array) $pks; $table = $this->getTable(); $user = JFactory::getUser(); // Iterate the items to delete each one. foreach ($pks as $i => $pk) { if ($table->load($pk)) { if ($table->user_id_to != $user->id) { // Prune items that you can't change. unset($pks[$i]); JLog::add(JText::_('JLIB_APPLICATION_ERROR_DELETE_NOT_PERMITTED'), JLog::WARNING, 'jerror'); return false; } } else { $this->setError($table->getError()); return false; } } return parent::delete($pks); } /** * Returns a Table object, always creating it. * * @param type $type The table type to instantiate * @param string $prefix A prefix for the table class name. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A database object * * @since 1.6 */ public function getTable($type = 'Message', $prefix = 'MessagesTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Method to get a single record. * * @param integer $pk The id of the primary key. * * @return mixed Object on success, false on failure. * * @since 1.6 */ public function getItem($pk = null) { if (!isset($this->item)) { if ($this->item = parent::getItem($pk)) { // Prime required properties. if (empty($this->item->message_id)) { // Prepare data for a new record. if ($replyId = $this->getState('reply.id')) { // If replying to a message, preload some data. $db = $this->getDbo(); $query = $db->getQuery(true) ->select($db->quoteName(array('subject', 'user_id_from'))) ->from($db->quoteName('#__messages')) ->where($db->quoteName('message_id') . ' = ' . (int) $replyId); try { $message = $db->setQuery($query)->loadObject(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } $this->item->set('user_id_to', $message->user_id_from); $re = JText::_('COM_MESSAGES_RE'); if (stripos($message->subject, $re) !== 0) { $this->item->set('subject', $re . $message->subject); } } } elseif ($this->item->user_id_to != JFactory::getUser()->id) { $this->setError(JText::_('JERROR_ALERTNOAUTHOR')); return false; } else { // Mark message read $db = $this->getDbo(); $query = $db->getQuery(true) ->update($db->quoteName('#__messages')) ->set($db->quoteName('state') . ' = 1') ->where($db->quoteName('message_id') . ' = ' . $this->item->message_id); $db->setQuery($query)->execute(); } } // Get the user name for an existing messasge. if ($this->item->user_id_from && $fromUser = new JUser($this->item->user_id_from)) { $this->item->set('from_user_name', $fromUser->name); } } return $this->item; } /** * Method to get the record form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return JForm A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_messages.message', 'message', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_messages.edit.message.data', array()); if (empty($data)) { $data = $this->getItem(); } $this->preprocessData('com_messages.message', $data); return $data; } /** * Checks that the current user matches the message recipient and calls the parent publish method * * @param array &$pks A list of the primary keys to change. * @param integer $value The value of the published state. * * @return boolean True on success. * * @since 3.1 */ public function publish(&$pks, $value = 1) { $user = JFactory::getUser(); $table = $this->getTable(); $pks = (array) $pks; // Check that the recipient matches the current user foreach ($pks as $i => $pk) { $table->reset(); if ($table->load($pk)) { if ($table->user_id_to != $user->id) { // Prune items that you can't change. unset($pks[$i]); JLog::add(JText::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED'), JLog::WARNING, 'jerror'); return false; } } } return parent::publish($pks, $value); } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 1.6 */ public function save($data) { $table = $this->getTable(); // Bind the data. if (!$table->bind($data)) { $this->setError($table->getError()); return false; } // Assign empty values. if (empty($table->user_id_from)) { $table->user_id_from = JFactory::getUser()->get('id'); } if ((int) $table->date_time == 0) { $table->date_time = JFactory::getDate()->toSql(); } // Check the data. if (!$table->check()) { $this->setError($table->getError()); return false; } // Load the recipient user configuration. $model = JModelLegacy::getInstance('Config', 'MessagesModel', array('ignore_request' => true)); $model->setState('user.id', $table->user_id_to); $config = $model->getItem(); if (empty($config)) { $this->setError($model->getError()); return false; } if ($config->get('locked', false)) { $this->setError(JText::_('COM_MESSAGES_ERR_SEND_FAILED')); return false; } // Store the data. if (!$table->store()) { $this->setError($table->getError()); return false; } if ($config->get('mail_on_new', true)) { // Load the user details (already valid from table check). $fromUser = JUser::getInstance($table->user_id_from); $toUser = JUser::getInstance($table->user_id_to); $debug = JFactory::getConfig()->get('debug_lang'); $default_language = JComponentHelper::getParams('com_languages')->get('administrator'); $lang = JLanguage::getInstance($toUser->getParam('admin_language', $default_language), $debug); $lang->load('com_messages', JPATH_ADMINISTRATOR); // Build the email subject and message $sitename = JFactory::getApplication()->get('sitename'); $siteURL = JUri::root() . 'administrator/index.php?option=com_messages&view=message&message_id=' . $table->message_id; $subject = sprintf($lang->_('COM_MESSAGES_NEW_MESSAGE_ARRIVED'), $sitename); $msg = sprintf($lang->_('COM_MESSAGES_PLEASE_LOGIN'), $siteURL); // Send the email JFactory::getMailer()->sendMail($fromUser->email, $fromUser->name, $toUser->email, $subject, $msg); } return true; } } PKb��\��iA&&&components/com_messages/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_messages * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Messages master display controller. * * @since 1.6 */ class MessagesController extends JControllerLegacy { /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached. * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { require_once JPATH_COMPONENT . '/helpers/messages.php'; $view = $this->input->get('view', 'messages'); $layout = $this->input->get('layout', 'default'); $id = $this->input->getInt('id'); // Check for edit form. if ($view == 'message' && $layout == 'edit' && !$this->checkEditId('com_messages.edit.message', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_messages&view=messages', false)); return false; } // Load the submenu. MessagesHelper::addSubmenu($this->input->get('view', 'messages')); parent::display(); } } PKb��\ n1FF$components/com_menus/tables/menu.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Menu table * * @since 1.6 */ class MenusTableMenu extends JTableMenu { /** * Method to delete a node and, optionally, its child nodes from the table. * * @param integer $pk The primary key of the node to delete. * @param boolean $children True to delete child nodes, false to move them up a level. * * @return boolean True on success. * * @since 2.5 * @see https://docs.joomla.org/JTableNested/delete */ public function delete($pk = null, $children = false) { return parent::delete($pk, $children); } } PKb��\����*components/com_menus/controllers/items.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * The Menu Item Controller * * @since 1.6 */ class MenusControllerItems extends JControllerAdmin { /** * Constructor * * @param array $config Optional configuration array * * @since 1.6 */ public function __construct($config = array()) { parent::__construct($config); $this->registerTask('unsetDefault', 'setDefault'); } /** * Proxy for getModel. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 1.6 */ public function getModel($name = 'Item', $prefix = 'MenusModel', $config = array()) { return parent::getModel($name, $prefix, array('ignore_request' => true)); } /** * Rebuild the nested set tree. * * @return bool False on failure or error, true on success. * * @since 1.6 */ public function rebuild() { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $this->setRedirect('index.php?option=com_menus&view=items'); $model = $this->getModel(); if ($model->rebuild()) { // Reorder succeeded. $this->setMessage(JText::_('COM_MENUS_ITEMS_REBUILD_SUCCESS')); return true; } else { // Rebuild failed. $this->setMessage(JText::sprintf('COM_MENUS_ITEMS_REBUILD_FAILED'), 'error'); return false; } } /** * Save the manual order inputs from the menu items list view * * @return void * * @see JControllerAdmin::saveorder() * @deprecated 4.0 */ public function saveorder() { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); JLog::add('MenusControllerItems::saveorder() is deprecated. Function will be removed in 4.0', JLog::WARNING, 'deprecated'); // Get the arrays from the Request $order = $this->input->post->get('order', null, 'array'); $originalOrder = explode(',', $this->input->getString('original_order_values')); // Make sure something has changed if (!($order === $originalOrder)) { parent::saveorder(); } else { // Nothing to reorder $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_list, false)); return true; } } /** * Method to set the home property for a list of items * * @return void * * @since 1.6 */ public function setDefault() { // Check for request forgeries JSession::checkToken('request') or die(JText::_('JINVALID_TOKEN')); // Get items to publish from the request. $cid = $this->input->get('cid', array(), 'array'); $data = array('setDefault' => 1, 'unsetDefault' => 0); $task = $this->getTask(); $value = JArrayHelper::getValue($data, $task, 0, 'int'); if (empty($cid)) { JError::raiseWarning(500, JText::_($this->text_prefix . '_NO_ITEM_SELECTED')); } else { // Get the model. $model = $this->getModel(); // Make sure the item ids are integers JArrayHelper::toInteger($cid); // Publish the items. if (!$model->setHome($cid, $value)) { JError::raiseWarning(500, $model->getError()); } else { if ($value == 1) { $ntext = 'COM_MENUS_ITEMS_SET_HOME'; } else { $ntext = 'COM_MENUS_ITEMS_UNSET_HOME'; } $this->setMessage(JText::plural($ntext, count($cid))); } } $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_list, false)); } } PKb��\Fg��)components/com_menus/controllers/menu.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * The Menu Type Controller * * @since 1.6 */ class MenusControllerMenu extends JControllerForm { /** * Dummy method to redirect back to standard controller * * @param boolean $cachable If true, the view output will be cached. * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { $this->setRedirect(JRoute::_('index.php?option=com_menus&view=menus', false)); } /** * Method to save a menu item. * * @param string $key The name of the primary key of the URL variable. * @param string $urlVar The name of the URL variable if different from the primary key (sometimes required to avoid router collisions). * * @return boolean True if successful, false otherwise. * * @since 1.6 */ public function save($key = null, $urlVar = null) { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $data = $this->input->post->get('jform', array(), 'array'); $context = 'com_menus.edit.menu'; $task = $this->getTask(); $recordId = $this->input->getInt('id'); // Make sure we are not trying to modify an administrator menu. if (isset($data['client_id']) && $data['client_id'] == 1) { JError::raiseNotice(0, JText::_('COM_MENUS_MENU_TYPE_NOT_ALLOWED')); // Redirect back to the edit screen. $this->setRedirect(JRoute::_('index.php?option=com_menus&view=menu&layout=edit', false)); return false; } // Prevent using 'menu' or 'main' as menutype as this is reserved for back-end menus if (strtolower($data['menutype']) == 'menu' || strtolower($data['menutype']) == 'main') { $msg = JText::_('COM_MENUS_ERROR_MENUTYPE'); JFactory::getApplication()->enqueueMessage($msg, 'error'); // Redirect back to the edit screen. $this->setRedirect(JRoute::_('index.php?option=com_menus&view=menu&layout=edit', false)); return false; } // Populate the row id from the session. $data['id'] = $recordId; // Get the model and attempt to validate the posted data. $model = $this->getModel('Menu'); $form = $model->getForm(); if (!$form) { JError::raiseError(500, $model->getError()); return false; } $data = $model->validate($form, $data); // Check for validation errors. if ($data === false) { // Get the validation messages. $errors = $model->getErrors(); // Push up to three validation messages out to the user. for ($i = 0, $n = count($errors); $i < $n && $i < 3; $i++) { if ($errors[$i] instanceof Exception) { $app->enqueueMessage($errors[$i]->getMessage(), 'warning'); } else { $app->enqueueMessage($errors[$i], 'warning'); } } // Save the data in the session. $app->setUserState('com_menus.edit.menu.data', $data); // Redirect back to the edit screen. $this->setRedirect(JRoute::_('index.php?option=com_menus&view=menu&layout=edit', false)); return false; } // Attempt to save the data. if (!$model->save($data)) { // Save the data in the session. $app->setUserState('com_menus.edit.menu.data', $data); // Redirect back to the edit screen. $this->setMessage(JText::sprintf('JLIB_APPLICATION_ERROR_SAVE_FAILED', $model->getError()), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_menus&view=menu&layout=edit', false)); return false; } $this->setMessage(JText::_('COM_MENUS_MENU_SAVE_SUCCESS')); // Redirect the user and adjust session state based on the chosen task. switch ($task) { case 'apply': // Set the record data in the session. $recordId = $model->getState($this->context . '.id'); $this->holdEditId($context, $recordId); // Redirect back to the edit screen. $this->setRedirect(JRoute::_('index.php?option=com_menus&view=menu&layout=edit' . $this->getRedirectToItemAppend($recordId), false)); break; case 'save2new': // Clear the record id and data from the session. $this->releaseEditId($context, $recordId); $app->setUserState($context . '.data', null); // Redirect back to the edit screen. $this->setRedirect(JRoute::_('index.php?option=com_menus&view=menu&layout=edit', false)); break; default: // Clear the record id and data from the session. $this->releaseEditId($context, $recordId); $app->setUserState($context . '.data', null); // Redirect to the list screen. $this->setRedirect(JRoute::_('index.php?option=com_menus&view=menus', false)); break; } } } PKb��\G�>���*components/com_menus/controllers/menus.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * The Menu List Controller * * @since 1.6 */ class MenusControllerMenus extends JControllerLegacy { /** * Display the view * * @param boolean $cachable If true, the view output will be cached. * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.6 */ public function display($cachable = false, $urlparams = false) { } /** * Method to get a model object, loading it if required. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 1.6 */ public function getModel($name = 'Menu', $prefix = 'MenusModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } /** * Remove a item. * * @return void * * @since 1.6 */ public function delete() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Get items to remove from the request. $cid = $this->input->get('cid', array(), 'array'); if (!is_array($cid) || count($cid) < 1) { JError::raiseWarning(500, JText::_('COM_MENUS_NO_MENUS_SELECTED')); } else { // Get the model. $model = $this->getModel(); // Make sure the item ids are integers jimport('joomla.utilities.arrayhelper'); JArrayHelper::toInteger($cid); // Remove the items. if (!$model->delete($cid)) { $this->setMessage($model->getError()); } else { $this->setMessage(JText::plural('COM_MENUS_N_MENUS_DELETED', count($cid))); } } $this->setRedirect('index.php?option=com_menus&view=menus'); } /** * Rebuild the menu tree. * * @return bool False on failure or error, true on success. * * @since 1.6 */ public function rebuild() { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $this->setRedirect('index.php?option=com_menus&view=menus'); $model = $this->getModel('Item'); if ($model->rebuild()) { // Reorder succeeded. $this->setMessage(JText::_('JTOOLBAR_REBUILD_SUCCESS')); return true; } else { // Rebuild failed. $this->setMessage(JText::sprintf('JTOOLBAR_REBUILD_FAILED', $model->getError()), 'error'); return false; } } /** * Temporary method. This should go into the 1.5 to 1.6 upgrade routines. * * @return void * * @since 1.6 */ public function resync() { $db = JFactory::getDbo(); $query = $db->getQuery(true); $parts = null; try { $query->select('element, extension_id') ->from('#__extensions') ->where('type = ' . $db->quote('component')); $db->setQuery($query); $components = $db->loadAssocList('element', 'extension_id'); } catch (RuntimeException $e) { return JError::raiseWarning(500, $e->getMessage()); } // Load all the component menu links $query->select($db->quoteName('id')) ->select($db->quoteName('link')) ->select($db->quoteName('component_id')) ->from('#__menu') ->where($db->quoteName('type') . ' = ' . $db->quote('component.item')); $db->setQuery($query); try { $items = $db->loadObjectList(); } catch (RuntimeException $e) { return JError::raiseWarning(500, $e->getMessage()); } foreach ($items as $item) { // Parse the link. parse_str(parse_url($item->link, PHP_URL_QUERY), $parts); // Tease out the option. if (isset($parts['option'])) { $option = $parts['option']; // Lookup the component ID if (isset($components[$option])) { $componentId = $components[$option]; } else { // Mismatch. Needs human intervention. $componentId = -1; } // Check for mis-matched component id's in the menu link. if ($item->component_id != $componentId) { // Update the menu table. $log = "Link $item->id refers to $item->component_id, converting to $componentId ($item->link)"; echo "<br />$log"; $query->clear(); $query->update('#__menu') ->set('component_id = ' . $componentId) ->where('id = ' . $item->id); try { $db->setQuery($query)->execute(); } catch (RuntimeException $e) { return JError::raiseWarning(500, $e->getMessage()); } } } } } } PKb��\g���E0E0)components/com_menus/controllers/item.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * The Menu Item Controller * * @since 1.6 */ class MenusControllerItem extends JControllerForm { /** * Method to add a new menu item. * * @return mixed True if the record can be added, a JError object if not. * * @since 1.6 */ public function add() { $app = JFactory::getApplication(); $context = 'com_menus.edit.item'; $result = parent::add(); if ($result) { $app->setUserState($context . '.type', null); $app->setUserState($context . '.link', null); $menuType = $app->getUserStateFromRequest($this->context . '.filter.menutype', 'menutype', 'mainmenu', 'cmd'); $this->setRedirect(JRoute::_('index.php?option=com_menus&view=item&menutype=' . $menuType . $this->getRedirectToItemAppend(), false)); } return $result; } /** * Method to run batch operations. * * @param object $model The model. * * @return boolean True if successful, false otherwise and internal error is set. * * @since 1.6 */ public function batch($model = null) { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $model = $this->getModel('Item', '', array()); // Preset the redirect $this->setRedirect(JRoute::_('index.php?option=com_menus&view=items' . $this->getRedirectToListAppend(), false)); return parent::batch($model); } /** * Method to cancel an edit. * * @param string $key The name of the primary key of the URL variable. * * @return boolean True if access level checks pass, false otherwise. * * @since 1.6 */ public function cancel($key = null) { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $context = 'com_menus.edit.item'; $result = parent::cancel(); if ($result) { // Clear the ancillary data from the session. $app->setUserState($context . '.type', null); $app->setUserState($context . '.link', null); } return $result; } /** * Method to edit an existing record. * * @param string $key The name of the primary key of the URL variable. * @param string $urlVar The name of the URL variable if different from the primary key * (sometimes required to avoid router collisions). * * @return boolean True if access level check and checkout passes, false otherwise. * * @since 1.6 */ public function edit($key = null, $urlVar = null) { $app = JFactory::getApplication(); $result = parent::edit(); if ($result) { // Push the new ancillary data into the session. $app->setUserState('com_menus.edit.item.type', null); $app->setUserState('com_menus.edit.item.link', null); } return $result; } /** * Method to save a record. * * @param string $key The name of the primary key of the URL variable. * @param string $urlVar The name of the URL variable if different from the primary key (sometimes required to avoid router collisions). * * @return boolean True if successful, false otherwise. * * @since 1.6 */ public function save($key = null, $urlVar = null) { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $model = $this->getModel('Item', '', array()); $data = $this->input->post->get('jform', array(), 'array'); $task = $this->getTask(); $context = 'com_menus.edit.item'; $recordId = $this->input->getInt('id'); // Populate the row id from the session. $data['id'] = $recordId; // The save2copy task needs to be handled slightly differently. if ($task == 'save2copy') { // Check-in the original row. if ($model->checkin($data['id']) === false) { // Check-in failed, go back to the item and display a notice. $this->setMessage(JText::sprintf('JLIB_APPLICATION_ERROR_CHECKIN_FAILED', $model->getError()), 'warning'); return false; } // Reset the ID and then treat the request as for Apply. $data['id'] = 0; $data['associations'] = array(); $task = 'apply'; } // Validate the posted data. // This post is made up of two forms, one for the item and one for params. $form = $model->getForm($data); if (!$form) { JError::raiseError(500, $model->getError()); return false; } if ($data['type'] == 'url') { $data['link'] = str_replace(array('"', '>', '<'), '', $data['link']); if (strstr($data['link'], ':')) { $segments = explode(':', $data['link']); $protocol = strtolower($segments[0]); $scheme = array('http', 'https', 'ftp', 'ftps', 'gopher', 'mailto', 'news', 'prospero', 'telnet', 'rlogin', 'tn3270', 'wais', 'url', 'mid', 'cid', 'nntp', 'tel', 'urn', 'ldap', 'file', 'fax', 'modem', 'git'); if (!in_array($protocol, $scheme)) { $app->enqueueMessage(JText::_('JLIB_APPLICATION_ERROR_SAVE_NOT_PERMITTED'), 'warning'); $this->setRedirect( JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId), false) ); return false; } } } $data = $model->validate($form, $data); // Check for the special 'request' entry. if ($data['type'] == 'component' && isset($data['request']) && is_array($data['request']) && !empty($data['request'])) { $removeArgs = array(); // Preprocess request fields to ensure that we remove not set or empty request params $request = $form->getGroup('request'); if (!empty($request)) { foreach ($request as $field) { $fieldName = $field->getAttribute('name'); if (!isset($data['request'][$fieldName]) || $data['request'][$fieldName] == '') { $removeArgs[$fieldName] = ''; } } } // Parse the submitted link arguments. $args = array(); parse_str(parse_url($data['link'], PHP_URL_QUERY), $args); // Merge in the user supplied request arguments. $args = array_merge($args, $data['request']); // Remove the unused request params if (!empty($args) && !empty($removeArgs)) { $args = array_diff_key($args, $removeArgs); } $data['link'] = 'index.php?' . urldecode(http_build_query($args, '', '&')); unset($data['request']); } // Check for validation errors. if ($data === false) { // Get the validation messages. $errors = $model->getErrors(); // Push up to three validation messages out to the user. for ($i = 0, $n = count($errors); $i < $n && $i < 3; $i++) { if ($errors[$i] instanceof Exception) { $app->enqueueMessage($errors[$i]->getMessage(), 'warning'); } else { $app->enqueueMessage($errors[$i], 'warning'); } } // Save the data in the session. $app->setUserState('com_menus.edit.item.data', $data); // Redirect back to the edit screen. $editUrl = 'index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId); $this->setRedirect(JRoute::_($editUrl, false)); return false; } // Attempt to save the data. if (!$model->save($data)) { // Save the data in the session. $app->setUserState('com_menus.edit.item.data', $data); // Redirect back to the edit screen. $editUrl = 'index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId); $this->setMessage(JText::sprintf('JLIB_APPLICATION_ERROR_SAVE_FAILED', $model->getError()), 'warning'); $this->setRedirect(JRoute::_($editUrl, false)); return false; } // Save succeeded, check-in the row. if ($model->checkin($data['id']) === false) { // Check-in failed, go back to the row and display a notice. $this->setMessage(JText::sprintf('JLIB_APPLICATION_ERROR_CHECKIN_FAILED', $model->getError()), 'warning'); $redirectUrl = 'index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId); $this->setRedirect(JRoute::_($redirectUrl, false)); return false; } $this->setMessage(JText::_('COM_MENUS_SAVE_SUCCESS')); // Redirect the user and adjust session state based on the chosen task. switch ($task) { case 'apply': // Set the row data in the session. $recordId = $model->getState($this->context . '.id'); $this->holdEditId($context, $recordId); $app->setUserState('com_menus.edit.item.data', null); $app->setUserState('com_menus.edit.item.type', null); $app->setUserState('com_menus.edit.item.link', null); // Redirect back to the edit screen. $editUrl = 'index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId); $this->setRedirect(JRoute::_($editUrl, false)); break; case 'save2new': // Clear the row id and data in the session. $this->releaseEditId($context, $recordId); $app->setUserState('com_menus.edit.item.data', null); $app->setUserState('com_menus.edit.item.type', null); $app->setUserState('com_menus.edit.item.link', null); $app->setUserState('com_menus.edit.item.menutype', $model->getState('item.menutype')); // Redirect back to the edit screen. $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend(), false)); break; default: // Clear the row id and data in the session. $this->releaseEditId($context, $recordId); $app->setUserState('com_menus.edit.item.data', null); $app->setUserState('com_menus.edit.item.type', null); $app->setUserState('com_menus.edit.item.link', null); // Redirect to the list screen. $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_list . $this->getRedirectToListAppend(), false)); break; } return true; } /** * Sets the type of the menu item currently being edited. * * @return void * * @since 1.6 */ public function setType() { $app = JFactory::getApplication(); // Get the posted values from the request. $data = $this->input->post->get('jform', array(), 'array'); // Get the type. $type = $data['type']; $type = json_decode(base64_decode($type)); $title = isset($type->title) ? $type->title : null; $recordId = isset($type->id) ? $type->id : 0; $specialTypes = array('alias', 'separator', 'url', 'heading'); if (!in_array($title, $specialTypes)) { $title = 'component'; } $app->setUserState('com_menus.edit.item.type', $title); if ($title == 'component') { if (isset($type->request)) { $component = JComponentHelper::getComponent($type->request->option); $data['component_id'] = $component->id; $app->setUserState('com_menus.edit.item.link', 'index.php?' . JUri::buildQuery((array) $type->request)); } } // If the type is alias you just need the item id from the menu item referenced. elseif ($title == 'alias') { $app->setUserState('com_menus.edit.item.link', 'index.php?Itemid='); } unset($data['request']); $data['type'] = $title; if ($this->input->get('fieldtype') == 'type') { $data['link'] = $app->getUserState('com_menus.edit.item.link'); } // Save the data in the session. $app->setUserState('com_menus.edit.item.data', $data); $this->type = $type; $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId), false)); } /** * Gets the parent items of the menu location currently. * * @return void * * @since 3.2 */ public function getParentItem() { $app = JFactory::getApplication(); $menutype = $this->input->get->get('menutype'); $model = $this->getModel('Items', '', array()); $model->setState('filter.menutype', $menutype); $model->setState('list.select', 'a.id, a.title, a.level'); $results = $model->getItems(); // Pad the option text with spaces using depth level as a multiplier. for ($i = 0, $n = count($results); $i < $n; $i++) { $results[$i]->title = str_repeat('- ', $results[$i]->level) . $results[$i]->title; } // Output a JSON object echo json_encode($results); $app->close(); } } PKb��\��I��?components/com_menus/layouts/joomla/searchtools/default/bar.phpnu�[���<?php /** * @package Joomla.Site * @subpackage Layout * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; $data = $displayData; // We will get the menutype filter & remove it from the form filters $menuTypeField = $data['view']->filterForm->getField('menutype'); ?> <div class="js-stools-field-filter js-stools-menutype hidden-phone hidden-tablet"> <?php echo $menuTypeField->input; ?> </div> <?php // Display the main joomla layout echo JLayoutHelper::render('joomla.searchtools.default.bar', $data, null, array('component' => 'none')); PKb��\�y�;components/com_menus/layouts/joomla/searchtools/default.phpnu�[���<?php /** * @package Joomla.Site * @subpackage Layout * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; $data = $displayData; // Receive overridable options $data['options'] = !empty($data['options']) ? $data['options'] : array(); $doc = JFactory::getDocument(); $doc->addStyleDeclaration(" /* Fixed filter field in search bar */ .js-stools .js-stools-menutype { float: left; margin-right: 10px; } html[dir=rtl] .js-stools .js-stools-menutype { float: right; margin-left: 10px margin-right: 0; } .js-stools .js-stools-container-bar .js-stools-field-filter .chzn-container { padding: 3px 0; } "); // Menutype filter doesn't have to activate the filter bar unset($data['view']->activeFilters['menutype']); // Display the main joomla layout echo JLayoutHelper::render('joomla.searchtools.default', $data, null, array('component' => 'none')); PKb��\�u {��components/com_menus/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="page-options" label="COM_MENUS_PAGE_OPTIONS_LABEL" > <field name="page_title" type="text" label="COM_MENUS_ITEM_FIELD_PAGE_TITLE_LABEL" description="COM_MENUS_ITEM_FIELD_PAGE_TITLE_DESC" /> <field name="show_page_heading" type="radio" class="btn-group btn-group-yesno" label="COM_MENUS_ITEM_FIELD_SHOW_PAGE_HEADING_LABEL" description="COM_MENUS_ITEM_FIELD_SHOW_PAGE_HEADING_DESC" default="0" filter="integer" > <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="page_heading" type="text" label="COM_MENUS_ITEM_FIELD_PAGE_HEADING_LABEL" description="COM_MENUS_ITEM_FIELD_PAGE_HEADING_DESC" /> <field name="pageclass_sfx" type="text" label="COM_MENUS_ITEM_FIELD_PAGE_CLASS_LABEL" description="COM_MENUS_ITEM_FIELD_PAGE_CLASS_DESC" /> </fieldset> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_menus" section="component" /> </fieldset> </config> PKb��\8hd�22components/com_menus/access.xmlnu�[���<?xml version="1.0" encoding="utf-8" ?> <access component="com_menus"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> </section> </access> PKb��\�jZd55components/com_menus/menus.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; if (!JFactory::getUser()->authorise('core.manage', 'com_menus')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $controller = JControllerLegacy::getInstance('Menus'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\^���SS:components/com_menus/views/item/tmpl/edit_associations.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.associations', $this); PKb��\�,���5components/com_menus/views/item/tmpl/edit_options.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <?php echo JHtml::_('bootstrap.startAccordion', 'menuOptions', array('active' => 'collapse0')); $fieldSets = $this->form->getFieldsets('params'); $i = 0; foreach ($fieldSets as $name => $fieldSet) : if (!(($this->item->link == 'index.php?option=com_wrapper&view=wrapper') && $fieldSet->name == 'request') && !($this->item->link == 'index.php?Itemid=' && $fieldSet->name == 'aliasoptions')) : $label = !empty($fieldSet->label) ? $fieldSet->label : 'COM_MENUS_' . $name . '_FIELDSET_LABEL'; echo JHtml::_('bootstrap.addSlide', 'menuOptions', JText::_($label), 'collapse' . ($i++)); if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="tip">' . $this->escape(JText::_($fieldSet->description)) . '</p>'; endif; ?> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <div class="control-group"> <div class="control-label"> <?php echo $field->label; ?> </div> <div class="controls"> <?php echo $field->input; ?> </div> </div> <?php endforeach; echo JHtml::_('bootstrap.endSlide'); endif; endforeach;?> <?php echo JHtml::_('bootstrap.endAccordion'); PKb��\.�P5components/com_menus/views/item/tmpl/edit_modules.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.core'); foreach ($this->levels as $key => $value) { $allLevels[$value->id] = $value->title; } JFactory::getDocument()->addScriptDeclaration(' var viewLevels = ' . json_encode($allLevels) . ', menuId = parseInt(' . $this->item->id . '); jQuery(document).ready(function() { jQuery(document).on("click", "input:radio[id^=\'jform_toggle_modules1\']", function (event) { jQuery(".table tr.no").hide(); }); jQuery(document).on("click", "input:radio[id^=\'jform_toggle_modules0\']", function (event) { jQuery(".table tr.no").show(); }); }); '); ?> <?php // Set main fields. $this->fields = array('toggle_modules'); echo JLayoutHelper::render('joomla.edit.global', $this); ?> <table class="table table-striped"> <thead> <tr> <th class="left"> <?php echo JText::_('COM_MENUS_HEADING_ASSIGN_MODULE');?> </th> <th> <?php echo JText::_('COM_MENUS_HEADING_LEVELS');?> </th> <th> <?php echo JText::_('COM_MENUS_HEADING_POSITION');?> </th> <th> <?php echo JText::_('COM_MENUS_HEADING_DISPLAY');?> </th> </tr> </thead> <tbody> <?php foreach ($this->modules as $i => &$module) : ?> <?php if (is_null($module->menuid)) : ?> <?php if (!$module->except || $module->menuid < 0) : ?> <tr class="no row<?php echo $i % 2;?>" id="tr-<?php echo $module->id; ?>" style="display:table-row;"> <?php else : ?> <tr class="row<?php echo $i % 2;?>" id="tr-<?php echo $module->id; ?>" style="display:table-row;"> <?php endif; ?> <?php else : ?> <tr class="row<?php echo $i % 2;?>" id="tr-<?php echo $module->id; ?>" style="display:table-row"> <?php endif; ?> <td id="<?php echo $module->id; ?>"> <?php $link = 'index.php?option=com_modules&client_id=0&task=module.edit&id=' . $module->id . '&tmpl=component&view=module&layout=modal'; ?> <a href="#module<?php echo $module->id; ?>Modal" role="button" class="btn btn-link" data-toggle="modal" title="<?php echo JText::_('COM_MENUS_EDIT_MODULE_SETTINGS');?>" id="title-<?php echo $module->id; ?>"> <?php echo $this->escape($module->title); ?></a> </td> <td id="access-<?php echo $module->id; ?>"> <?php echo $this->escape($module->access_title); ?> </td> <td id="position-<?php echo $module->id; ?>"> <?php echo $this->escape($module->position); ?> </td> <td id="menus-<?php echo $module->id; ?>"> <?php if (is_null($module->menuid)) : ?> <?php if ($module->except):?> <span class="label label-success"> <?php echo JText::_('JYES'); ?> </span> <?php else : ?> <span class="label label-important"> <?php echo JText::_('JNO'); ?> </span> <?php endif;?> <?php elseif ($module->menuid > 0) : ?> <span class="label label-success"> <?php echo JText::_('JYES'); ?> </span> <?php elseif ($module->menuid < 0) : ?> <span class="label label-important"> <?php echo JText::_('JNO'); ?> </span> <?php else : ?> <span class="label label-info"> <?php echo JText::_('JALL'); ?> </span> <?php endif; ?> </td> <?php echo JHtml::_( 'bootstrap.renderModal', 'module' . $module->id . 'Modal', array( 'url' => $link, 'title' => JText::_('COM_MENUS_EDIT_MODULE_SETTINGS'), 'height' => '300px', 'width' => '800px', 'footer' => '<button class="btn" data-dismiss="modal" aria-hidden="true">' . JText::_("JLIB_HTML_BEHAVIOR_CLOSE") . '</button>' . '<button class="btn btn-success" data-dismiss="modal" aria-hidden="true" onclick="jQuery(\'#module' . $module->id . 'Modal iframe\').contents().find(\'#saveBtn\').click();">' . JText::_("JSAVE") . '</button>' ) ); ?> </tr> <?php endforeach; ?> </tbody> </table> PKb��\��mxx-components/com_menus/views/item/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.core'); JHtml::_('behavior.tabstate'); JHtml::_('behavior.formvalidator'); JHtml::_('formbehavior.chosen', 'select'); JText::script('ERROR'); JText::script('JGLOBAL_VALIDATION_FORM_FAILED'); $assoc = JLanguageAssociations::isEnabled(); // Ajax for parent items $script = " jQuery(document).ready(function ($){ $('#jform_menutype').change(function(){ var menutype = $(this).val(); $.ajax({ url: 'index.php?option=com_menus&task=item.getParentItem&menutype=' + menutype, dataType: 'json' }).done(function(data) { $('#jform_parent_id option').each(function() { if ($(this).val() != '1') { $(this).remove(); } }); $.each(data, function (i, val) { var option = $('<option>'); option.text(val.title).val(val.id); $('#jform_parent_id').append(option); }); $('#jform_parent_id').trigger('liszt:updated'); }); }); }); Joomla.submitbutton = function(task, type){ if (task == 'item.setType' || task == 'item.setMenuType') { if (task == 'item.setType') { jQuery('#item-form input[name=\"jform[type]\"]').val(type); jQuery('#fieldtype').val('type'); } else { jQuery('#item-form input[name=\"jform[menutype]\"]').val(type); } Joomla.submitform('item.setType', document.getElementById('item-form')); } else if (task == 'item.cancel' || document.formvalidator.isValid(document.getElementById('item-form'))) { Joomla.submitform(task, document.getElementById('item-form')); } else { // special case for modal popups validation response jQuery('#item-form .modal-value.invalid').each(function(){ var field = jQuery(this), idReversed = field.attr('id').split('').reverse().join(''), separatorLocation = idReversed.indexOf('_'), nameId = '#' + idReversed.substr(separatorLocation).split('').reverse().join('') + 'name'; jQuery(nameId).addClass('invalid'); }); } }; "; // Add the script to the document head. JFactory::getDocument()->addScriptDeclaration($script); ?> <form action="<?php echo JRoute::_('index.php?option=com_menus&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="item-form" class="form-validate"> <?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?> <div class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'details')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'details', JText::_('COM_MENUS_ITEM_DETAILS', true)); ?> <div class="row-fluid"> <div class="span9"> <?php if ($this->item->type == 'alias') { echo $this->form->getControlGroup('aliastip'); } echo $this->form->getControlGroup('type'); if ($this->item->type == 'alias') { echo $this->form->getControlGroups('aliasoptions'); } echo $this->form->getControlGroups('request'); if ($this->item->type == 'url') { $this->form->setFieldAttribute('link', 'readonly', 'false'); } echo $this->form->getControlGroup('link'); echo $this->form->getControlGroup('browserNav'); echo $this->form->getControlGroup('template_style_id'); ?> </div> <div class="span3"> <?php // Set main fields. $this->fields = array( 'menutype', 'parent_id', 'menuordering', 'published', 'home', 'access', 'language', 'note' ); if ($this->item->type != 'component') { $this->fields = array_diff($this->fields, array('home')); } ?> <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php $this->fieldsets = array(); $this->ignore_fieldsets = array('aliasoptions', 'request', 'item_associations'); echo JLayoutHelper::render('joomla.edit.params', $this); ?> <?php if ($assoc) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'associations', JText::_('JGLOBAL_FIELDSET_ASSOCIATIONS', true)); ?> <?php echo $this->loadTemplate('associations'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php if (!empty($this->modules)) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'modules', JText::_('COM_MENUS_ITEM_MODULE_ASSIGNMENT', true)); ?> <?php echo $this->loadTemplate('modules'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> </div> <input type="hidden" name="task" value="" /> <?php echo $this->form->getInput('component_id'); ?> <?php echo JHtml::_('form.token'); ?> <input type="hidden" id="fieldtype" name="fieldtype" value="" /> </form> PKb��\���VV-components/com_menus/views/item/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * The HTML Menus Menu Item View. * * @since 1.6 */ class MenusViewItem extends JViewLegacy { /** * @var JForm */ protected $form; /** * @var object */ protected $item; /** * @var mixed */ protected $modules; /** * @var JObject */ protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @since 1.6 */ public function display($tpl = null) { $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->modules = $this->get('Modules'); $this->levels = $this->get('ViewLevels'); $this->state = $this->get('State'); $this->canDo = JHelperContent::getActions('com_menus'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } parent::display($tpl); $this->addToolbar(); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $input = JFactory::getApplication()->input; $input->set('hidemainmenu', true); $user = JFactory::getUser(); $isNew = ($this->item->id == 0); $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id')); $canDo = $this->canDo; JToolbarHelper::title(JText::_($isNew ? 'COM_MENUS_VIEW_NEW_ITEM_TITLE' : 'COM_MENUS_VIEW_EDIT_ITEM_TITLE'), 'list menu-add'); // If a new item, can save the item. Allow users with edit permissions to apply changes to prevent returning to grid. if ($isNew && $canDo->get('core.create')) { if ($canDo->get('core.edit')) { JToolbarHelper::apply('item.apply'); } JToolbarHelper::save('item.save'); } // If not checked out, can save the item. if (!$isNew && !$checkedOut && $canDo->get('core.edit')) { JToolbarHelper::apply('item.apply'); JToolbarHelper::save('item.save'); } // If the user can create new items, allow them to see Save & New if ($canDo->get('core.create')) { JToolbarHelper::save2new('item.save2new'); } // If an existing item, can save to a copy only if we have create rights. if (!$isNew && $canDo->get('core.create')) { JToolbarHelper::save2copy('item.save2copy'); } if ($isNew) { JToolbarHelper::cancel('item.cancel'); } else { JToolbarHelper::cancel('item.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); // Get the help information for the menu item. $lang = JFactory::getLanguage(); $help = $this->get('Help'); if ($lang->hasKey($help->url)) { $debug = $lang->setDebug(false); $url = JText::_($help->url); $lang->setDebug($debug); } else { $url = $help->url; } JToolbarHelper::help($help->key, $help->local, $url); } } PKb��\� ��99<components/com_menus/views/items/tmpl/default_batch_body.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $options = array( JHtml::_('select.option', 'c', JText::_('JLIB_HTML_BATCH_COPY')), JHtml::_('select.option', 'm', JText::_('JLIB_HTML_BATCH_MOVE')) ); $published = $this->state->get('filter.published'); ?> <div class="row-fluid"> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.language'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.access'); ?> </div> </div> </div> <div class="row-fluid"> <?php if ($published >= 0) : ?> <div id="batch-choose-action" class="combo control-group"> <label id="batch-choose-action-lbl" class="control-label" for="batch-choose-action"> <?php echo JText::_('COM_MENUS_BATCH_MENU_LABEL'); ?> </label> <div class="controls"> <select name="batch[menu_id]" id="batch-menu-id"> <option value=""><?php echo JText::_('JLIB_HTML_BATCH_NO_CATEGORY') ?></option> <?php echo JHtml::_('select.options', JHtml::_('menu.menuitems', array('published' => $published))); ?> </select> </div> </div> <div id="batch-copy-move" class="control-group radio"> <?php echo JText::_('JLIB_HTML_BATCH_MOVE_QUESTION'); ?> <?php echo JHtml::_('select.radiolist', $options, 'batch[move_copy]', '', 'value', 'text', 'm'); ?> </div> <?php endif; ?> </div>PKb��\�����>components/com_menus/views/items/tmpl/default_batch_footer.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <button class="btn" type="button" onclick="document.getElementById('batch-menu-id').value='';document.getElementById('batch-access').value='';document.getElementById('batch-language-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-success" type="submit" onclick="Joomla.submitbutton('item.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button>PKb��\��pM�&�&1components/com_menus/views/items/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $user = JFactory::getUser(); $app = JFactory::getApplication(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $ordering = ($listOrder == 'a.lft'); $canOrder = $user->authorise('core.edit.state', 'com_menus'); $saveOrder = ($listOrder == 'a.lft' && strtolower($listDirn) == 'asc'); if ($saveOrder) { $saveOrderingUrl = 'index.php?option=com_menus&task=items.saveOrderAjax&tmpl=component'; JHtml::_('sortablelist.sortable', 'itemList', 'adminForm', strtolower($listDirn), $saveOrderingUrl, false, true); } $assoc = JLanguageAssociations::isEnabled(); ?> <?php // Set up the filter bar. ?> <form action="<?php echo JRoute::_('index.php?option=com_menus&view=items');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <?php // Search tools bar echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this), null, array('debug' => false)); ?> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped" id="itemList"> <thead> <tr> <th width="1%" class="hidden-phone"> <?php echo JHtml::_('searchtools.sort', '', 'a.lft', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING', 'icon-menu-2'); ?> </th> <th width="1%" class="center"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="1%" class="nowrap center"> <?php echo JHtml::_('searchtools.sort', 'JSTATUS', 'a.published', $listDirn, $listOrder); ?> </th> <th class="title"> <?php echo JHtml::_('searchtools.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th width="5%" class="center nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'COM_MENUS_HEADING_HOME', 'a.home', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?> </th> <?php if ($assoc) : ?> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'COM_MENUS_HEADING_ASSOCIATION', 'association', $listDirn, $listOrder); ?> </th> <?php endif;?> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_LANGUAGE', 'language', $this->state->get('list.direction'), $this->state->get('list.ordering')); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="15"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : $orderkey = array_search($item->id, $this->ordering[$item->parent_id]); $canCreate = $user->authorise('core.create', 'com_menus'); $canEdit = $user->authorise('core.edit', 'com_menus'); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id')|| $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_menus') && $canCheckin; // Get the parents of item for sorting if ($item->level > 1) { $parentsStr = ""; $_currentParentId = $item->parent_id; $parentsStr = " " . $_currentParentId; for ($j = 0; $j < $item->level; $j++) { foreach ($this->ordering as $k => $v) { $v = implode("-", $v); $v = "-" . $v . "-"; if (strpos($v, "-" . $_currentParentId . "-") !== false) { $parentsStr .= " " . $k; $_currentParentId = $k; break; } } } } else { $parentsStr = ""; } ?> <tr class="row<?php echo $i % 2; ?>" sortable-group-id="<?php echo $item->parent_id;?>" item-id="<?php echo $item->id?>" parents="<?php echo $parentsStr?>" level="<?php echo $item->level?>"> <td class="order nowrap center hidden-phone"> <?php $iconClass = ''; if (!$canChange) { $iconClass = ' inactive'; } elseif (!$saveOrder) { $iconClass = ' inactive tip-top hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED'); } ?> <span class="sortable-handler<?php echo $iconClass ?>"> <span class="icon-menu"></span> </span> <?php if ($canChange && $saveOrder) : ?> <input type="text" style="display:none" name="order[]" size="5" value="<?php echo $orderkey + 1;?>" /> <?php endif; ?> </td> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td class="center"> <?php echo JHtml::_('MenusHtml.Menus.state', $item->published, $i, $canChange, 'cb'); ?> </td> <td> <?php echo str_repeat('<span class="gi">|—</span>', $item->level - 1) ?> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'items.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_menus&task=item.edit&id=' . (int) $item->id);?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> <span class="small"> <?php if ($item->type != 'url') : ?> <?php if (empty($item->note)) : ?> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias));?> <?php else : ?> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS_NOTE', $this->escape($item->alias), $this->escape($item->note));?> <?php endif; ?> <?php elseif ($item->type == 'url' && $item->note) : ?> <?php echo JText::sprintf('JGLOBAL_LIST_NOTE', $this->escape($item->note));?> <?php endif; ?> </span> <div class="small" title="<?php echo $this->escape($item->path);?>"> <?php echo str_repeat('<span class="gtr">—</span>', $item->level - 1) ?> <span title="<?php echo isset($item->item_type_desc) ? htmlspecialchars($this->escape($item->item_type_desc), ENT_COMPAT, 'UTF-8') : ''; ?>"> <?php echo $this->escape($item->item_type); ?></span> </div> </td> <td class="center hidden-phone"> <?php if ($item->type == 'component') : ?> <?php if ($item->language == '*' || $item->home == '0') : ?> <?php echo JHtml::_('jgrid.isdefault', $item->home, $i, 'items.', ($item->language != '*' || !$item->home) && $canChange); ?> <?php elseif ($canChange) : ?> <a href="<?php echo JRoute::_('index.php?option=com_menus&task=items.unsetDefault&cid[]=' . $item->id . '&' . JSession::getFormToken() . '=1'); ?>"> <?php echo JHtml::_('image', 'mod_languages/' . $item->image . '.gif', $item->language_title, array('title' => JText::sprintf('COM_MENUS_GRID_UNSET_LANGUAGE', $item->language_title)), true); ?> </a> <?php else : ?> <?php echo JHtml::_('image', 'mod_languages/' . $item->image . '.gif', $item->language_title, array('title' => $item->language_title), true); ?> <?php endif; ?> <?php endif; ?> </td> <td class="small hidden-phone"> <?php echo $this->escape($item->access_level); ?> </td> <?php if ($assoc) : ?> <td class="small hidden-phone"> <?php if ($item->association) : ?> <?php echo JHtml::_('MenusHtml.Menus.association', $item->id); ?> <?php endif; ?> </td> <?php endif; ?> <td class="small hidden-phone"> <?php if ($item->language == ''):?> <?php echo JText::_('JDEFAULT'); ?> <?php elseif ($item->language == '*') : ?> <?php echo JText::alt('JALL', 'language'); ?> <?php else : ?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif; ?> </td> <td class="hidden-phone"> <span title="<?php echo sprintf('%d-%d', $item->lft, $item->rgt); ?>"> <?php echo (int) $item->id; ?> </span> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php // Load the batch processing form if user is allowed ?> <?php if ($user->authorise('core.create', 'com_menus') || $user->authorise('core.edit', 'com_menus')) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_MENUS_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif; ?> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�*͉ � 7components/com_menus/views/items/tmpl/default_batch.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * * @deprecated 3.4 Use default_batch_body and default_batch_footer */ defined('_JEXEC') or die; $options = array( JHtml::_('select.option', 'c', JText::_('JLIB_HTML_BATCH_COPY')), JHtml::_('select.option', 'm', JText::_('JLIB_HTML_BATCH_MOVE')) ); $published = $this->state->get('filter.published'); ?> <div class="modal hide fade" id="collapseModal"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h3><?php echo JText::_('COM_MENUS_BATCH_OPTIONS'); ?></h3> </div> <div class="modal-body modal-batch"> <p><?php echo JText::_('COM_MENUS_BATCH_TIP'); ?></p> <div class="row-fluid"> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.language'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.access'); ?> </div> </div> </div> <div class="row-fluid"> <?php if ($published >= 0) : ?> <div id="batch-choose-action" class="combo control-group"> <label id="batch-choose-action-lbl" class="control-label" for="batch-choose-action"> <?php echo JText::_('COM_MENUS_BATCH_MENU_LABEL'); ?> </label> <div class="controls"> <select name="batch[menu_id]" id="batch-menu-id"> <option value=""><?php echo JText::_('JSELECT') ?></option> <?php echo JHtml::_('select.options', JHtml::_('menu.menuitems', array('published' => $published))); ?> </select> </div> </div> <div id="batch-copy-move" class="control-group radio"> <?php echo JHtml::_('select.radiolist', $options, 'batch[move_copy]', '', 'value', 'text', 'm'); ?> </div> <?php endif; ?> </div> </div> <div class="modal-footer"> <button class="btn" type="button" onclick="document.getElementById('batch-menu-id').value='';document.getElementById('batch-access').value='';document.getElementById('batch-language-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-primary" type="submit" onclick="Joomla.submitbutton('item.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button> </div> </div> PKb��\�ϱ"".components/com_menus/views/items/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * The HTML Menus Menu Items View. * * @since 1.6 */ class MenusViewItems extends JViewLegacy { /** * @var array */ protected $f_levels; /** * @var mixed */ protected $items; /** * @var JPagination */ protected $pagination; /** * @var JObject */ protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @since 1.6 */ public function display($tpl = null) { $lang = JFactory::getLanguage(); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); $this->filterForm = $this->get('FilterForm'); $this->activeFilters = $this->get('ActiveFilters'); MenusHelper::addSubmenu('items'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->ordering = array(); // Preprocess the list of items to find ordering divisions. foreach ($this->items as $item) { $this->ordering[$item->parent_id][] = $item->id; // Item type text switch ($item->type) { case 'url': $value = JText::_('COM_MENUS_TYPE_EXTERNAL_URL'); break; case 'alias': $value = JText::_('COM_MENUS_TYPE_ALIAS'); break; case 'separator': $value = JText::_('COM_MENUS_TYPE_SEPARATOR'); break; case 'heading': $value = JText::_('COM_MENUS_TYPE_HEADING'); break; case 'component': default: // Load language $lang->load($item->componentname . '.sys', JPATH_ADMINISTRATOR, null, false, true) || $lang->load($item->componentname . '.sys', JPATH_ADMINISTRATOR . '/components/' . $item->componentname, null, false, true); if (!empty($item->componentname)) { $value = JText::_($item->componentname); $vars = null; parse_str($item->link, $vars); if (isset($vars['view'])) { // Attempt to load the view xml file. $file = JPATH_SITE . '/components/' . $item->componentname . '/views/' . $vars['view'] . '/metadata.xml'; if (!is_file($file)) { $file = JPATH_SITE . '/components/' . $item->componentname . '/view/' . $vars['view'] . '/metadata.xml'; } if (is_file($file) && $xml = simplexml_load_file($file)) { // Look for the first view node off of the root node. if ($view = $xml->xpath('view[1]')) { if (!empty($view[0]['title'])) { $vars['layout'] = isset($vars['layout']) ? $vars['layout'] : 'default'; // Attempt to load the layout xml file. // If Alternative Menu Item, get template folder for layout file if (strpos($vars['layout'], ':') > 0) { // Use template folder for layout file $temp = explode(':', $vars['layout']); $file = JPATH_SITE . '/templates/' . $temp[0] . '/html/' . $item->componentname . '/' . $vars['view'] . '/' . $temp[1] . '.xml'; // Load template language file $lang->load('tpl_' . $temp[0] . '.sys', JPATH_SITE, null, false, true) || $lang->load('tpl_' . $temp[0] . '.sys', JPATH_SITE . '/templates/' . $temp[0], null, false, true); } else { // Get XML file from component folder for standard layouts $file = JPATH_SITE . '/components/' . $item->componentname . '/views/' . $vars['view'] . '/tmpl/' . $vars['layout'] . '.xml'; if (!file_exists($file)) { $file = JPATH_SITE . '/components/' . $item->componentname . '/view/' . $vars['view'] . '/tmpl/' . $vars['layout'] . '.xml'; } } if (is_file($file) && $xml = simplexml_load_file($file)) { // Look for the first view node off of the root node. if ($layout = $xml->xpath('layout[1]')) { if (!empty($layout[0]['title'])) { $value .= ' » ' . JText::_(trim((string) $layout[0]['title'])); } } if (!empty($layout[0]->message[0])) { $item->item_type_desc = JText::_(trim((string) $layout[0]->message[0])); } } } } unset($xml); } else { // Special case for absent views $value .= ' » ' . $vars['view']; } } } else { if (preg_match("/^index.php\?option=([a-zA-Z\-0-9_]*)/", $item->link, $result)) { $value = JText::sprintf('COM_MENUS_TYPE_UNEXISTING', $result[1]); } else { $value = JText::_('COM_MENUS_TYPE_UNKNOWN'); } } break; } $item->item_type = $value; } // Levels filter. $options = array(); $options[] = JHtml::_('select.option', '1', JText::_('J1')); $options[] = JHtml::_('select.option', '2', JText::_('J2')); $options[] = JHtml::_('select.option', '3', JText::_('J3')); $options[] = JHtml::_('select.option', '4', JText::_('J4')); $options[] = JHtml::_('select.option', '5', JText::_('J5')); $options[] = JHtml::_('select.option', '6', JText::_('J6')); $options[] = JHtml::_('select.option', '7', JText::_('J7')); $options[] = JHtml::_('select.option', '8', JText::_('J8')); $options[] = JHtml::_('select.option', '9', JText::_('J9')); $options[] = JHtml::_('select.option', '10', JText::_('J10')); $this->f_levels = $options; $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); // Allow a system plugin to insert dynamic menu types to the list shown in menus: JEventDispatcher::getInstance()->trigger('onBeforeRenderMenuItems', array($this)); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_menus'); $user = JFactory::getUser(); // Get the toolbar object instance $bar = JToolBar::getInstance('toolbar'); JToolbarHelper::title(JText::_('COM_MENUS_VIEW_ITEMS_TITLE'), 'list menumgr'); if ($canDo->get('core.create')) { JToolbarHelper::addNew('item.add'); } if ($canDo->get('core.edit')) { JToolbarHelper::editList('item.edit'); } if ($canDo->get('core.edit.state')) { JToolbarHelper::publish('items.publish', 'JTOOLBAR_PUBLISH', true); JToolbarHelper::unpublish('items.unpublish', 'JTOOLBAR_UNPUBLISH', true); } if (JFactory::getUser()->authorise('core.admin')) { JToolbarHelper::checkin('items.checkin', 'JTOOLBAR_CHECKIN', true); } if ($canDo->get('core.edit.state')) { JToolbarHelper::makeDefault('items.setDefault', 'COM_MENUS_TOOLBAR_SET_HOME'); } if (JFactory::getUser()->authorise('core.admin')) { JToolbarHelper::custom('items.rebuild', 'refresh.png', 'refresh_f2.png', 'JToolbar_Rebuild', false); } // Add a batch button if ($user->authorise('core.create', 'com_menus') && $user->authorise('core.edit', 'com_menus') && $user->authorise('core.edit.state', 'com_menus')) { $title = JText::_('JTOOLBAR_BATCH'); // Instantiate a new JLayoutFile instance and render the batch button $layout = new JLayoutFile('joomla.toolbar.batch'); $dhtml = $layout->render(array('title' => $title)); $bar->appendButton('Custom', $dhtml, 'batch'); } if ($this->state->get('filter.published') == -2 && $canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'items.delete', 'JTOOLBAR_EMPTY_TRASH'); } elseif ($canDo->get('core.edit.state')) { JToolbarHelper::trash('items.trash'); } JToolbarHelper::help('JHELP_MENUS_MENU_ITEM_MANAGER'); } /** * Returns an array of fields the table can be sorted by * * @return array Array containing the field name to sort by as the key and display text as value * * @since 3.0 */ protected function getSortFields() { return array( 'a.lft' => JText::_('JGRID_HEADING_ORDERING'), 'a.published' => JText::_('JSTATUS'), 'a.title' => JText::_('JGLOBAL_TITLE'), 'a.home' => JText::_('COM_MENUS_HEADING_HOME'), 'a.access' => JText::_('JGRID_HEADING_ACCESS'), 'association' => JText::_('COM_MENUS_HEADING_ASSOCIATION'), 'language' => JText::_('JGRID_HEADING_LANGUAGE'), 'a.id' => JText::_('JGRID_HEADING_ID') ); } } PKb��\��f�))-components/com_menus/views/menu/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.core'); JHtml::_('behavior.formvalidator'); JHtml::_('formbehavior.chosen', 'select'); JText::script('ERROR'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { var form = document.getElementById('item-form'); if (task == 'menu.cancel' || document.formvalidator.isValid(form)) { Joomla.submitform(task, form); } }; "); ?> <form action="<?php echo JRoute::_('index.php?option=com_menus&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="item-form" class="form-horizontal"> <fieldset> <legend><?php echo JText::_('COM_MENUS_MENU_DETAILS');?></legend> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('title'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('title'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('menutype'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('menutype'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('description'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('description'); ?> </div> </div> </fieldset> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\)Z��) ) -components/com_menus/views/menu/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * The HTML Menus Menu Item View. * * @since 1.6 */ class MenusViewMenu extends JViewLegacy { /** * @var JForm */ protected $form; /** * @var mixed */ protected $item; /** * @var JObject */ protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @since 1.6 */ public function display($tpl = null) { $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } parent::display($tpl); $this->addToolbar(); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $input = JFactory::getApplication()->input; $input->set('hidemainmenu', true); $isNew = ($this->item->id == 0); $canDo = JHelperContent::getActions('com_menus'); JToolbarHelper::title(JText::_($isNew ? 'COM_MENUS_VIEW_NEW_MENU_TITLE' : 'COM_MENUS_VIEW_EDIT_MENU_TITLE'), 'list menu'); // If a new item, can save the item. Allow users with edit permissions to apply changes to prevent returning to grid. if ($isNew && $canDo->get('core.create')) { if ($canDo->get('core.edit')) { JToolbarHelper::apply('menu.apply'); } JToolbarHelper::save('menu.save'); } // If user can edit, can save the item. if (!$isNew && $canDo->get('core.edit')) { JToolbarHelper::apply('menu.apply'); JToolbarHelper::save('menu.save'); } // If the user can create new items, allow them to see Save & New if ($canDo->get('core.create')) { JToolbarHelper::save2new('menu.save2new'); } if ($isNew) { JToolbarHelper::cancel('menu.cancel'); } else { JToolbarHelper::cancel('menu.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_MENUS_MENU_MANAGER_EDIT'); } } PKb��\��(��5components/com_menus/views/menutypes/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $input = JFactory::getApplication()->input; // Checking if loaded via index.php or component.php $tmpl = ($input->getCmd('tmpl') != '') ? '1' : ''; JHtml::_('behavior.core'); JFactory::getDocument()->addScriptDeclaration(' setmenutype = function(type) { var tmpl = ' . json_encode($tmpl) . '; if (tmpl) { window.parent.Joomla.submitbutton("item.setType", type); window.parent.jQuery("#menuTypeModal").modal("hide"); } else { window.location="index.php?option=com_menus&view=item&task=item.setType&layout=edit&type=" + type; } }; '); ?> <?php echo JHtml::_('bootstrap.startAccordion', 'collapseTypes', array('active' => 'slide1')); ?> <?php $i = 0; ?> <?php foreach ($this->types as $name => $list) : ?> <?php echo JHtml::_('bootstrap.addSlide', 'collapseTypes', $name, 'collapse' . ($i++)); ?> <ul class="nav nav-tabs nav-stacked"> <?php foreach ($list as $title => $item) : ?> <li> <?php $menutype = array('id' => $this->recordId, 'title' => (isset($item->type) ? $item->type : $item->title), 'request' => $item->request); ?> <?php $menutype = base64_encode(json_encode($menutype)); ?> <a class="choose_type" href="#" title="<?php echo JText::_($item->description); ?>" onclick="javascript:setmenutype('<?php echo $menutype; ?>')"> <?php echo $title;?> <small class="muted"> <?php echo JText::_($item->description); ?> </small> </a> </li> <?php endforeach; ?> </ul> <?php echo JHtml::_('bootstrap.endSlide'); ?> <?php endforeach; ?> <?php echo JHtml::_('bootstrap.endSlide'); ?> <?php echo JHtml::_('bootstrap.endAccordion'); PKb��\3j� � 2components/com_menus/views/menutypes/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * The HTML Menus Menu Item TYpes View. * * @since 1.6 */ class MenusViewMenutypes extends JViewLegacy { /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @since 1.6 */ public function display($tpl = null) { $input = JFactory::getApplication()->input; $this->recordId = $input->getInt('recordId'); $types = $this->get('TypeOptions'); // Adding System Links $list = array(); $o = new JObject; $o->title = 'COM_MENUS_TYPE_EXTERNAL_URL'; $o->type = 'url'; $o->description = 'COM_MENUS_TYPE_EXTERNAL_URL_DESC'; $o->request = null; $list[] = $o; $o = new JObject; $o->title = 'COM_MENUS_TYPE_ALIAS'; $o->type = 'alias'; $o->description = 'COM_MENUS_TYPE_ALIAS_DESC'; $o->request = null; $list[] = $o; $o = new JObject; $o->title = 'COM_MENUS_TYPE_SEPARATOR'; $o->type = 'separator'; $o->description = 'COM_MENUS_TYPE_SEPARATOR_DESC'; $o->request = null; $list[] = $o; $o = new JObject; $o->title = 'COM_MENUS_TYPE_HEADING'; $o->type = 'heading'; $o->description = 'COM_MENUS_TYPE_HEADING_DESC'; $o->request = null; $list[] = $o; $types['COM_MENUS_TYPE_SYSTEM'] = $list; $sortedTypes = array(); foreach ($types as $name => $list) { $tmp = array(); foreach ($list as $item) { $tmp[JText::_($item->title)] = $item; } ksort($tmp); $sortedTypes[JText::_($name)] = $tmp; } ksort($sortedTypes); $this->types = $sortedTypes; $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 3.0 */ protected function addToolbar() { // Add page title JToolbarHelper::title(JText::_('COM_MENUS'), 'list menumgr'); // Get the toolbar object instance $bar = JToolBar::getInstance('toolbar'); // Cancel $title = JText::_('JTOOLBAR_CANCEL'); $dhtml = "<button onClick=\"location.href='index.php?option=com_menus&view=items'\" class=\"btn\"> <span class=\"icon-remove\" title=\"$title\"></span> $title</button>"; $bar->appendButton('Custom', $dhtml, 'new'); } } PKb��\�6�R�'�'1components/com_menus/views/menus/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $uri = JUri::getInstance(); $return = base64_encode($uri); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $modMenuId = (int) $this->get('ModMenuId'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task != 'menus.delete' || confirm('" . JText::_('COM_MENUS_MENU_CONFIRM_DELETE', true) . "')) { Joomla.submitform(task); } }; "); $script = array(); $script[] = "jQuery(document).ready(function() {"; foreach ($this->items as $item) : if ($user->authorise('core.edit', 'com_menus')) : $script[] = ' function jSelectPosition_' . $item->id . '(name) {'; $script[] = ' document.getElementById("' . $item->id . '").value = name;'; $script[] = ' jQuery(".modal").modal("hide");'; $script[] = ' };'; endif; endforeach; $script[] = ' jQuery(".modal").on("hidden", function () {'; $script[] = ' setTimeout(function(){'; $script[] = ' window.parent.location.reload();'; $script[] = ' },1000);'; $script[] = ' });'; $script[] = "});"; JFactory::getDocument()->addScriptDeclaration(implode("\n", $script)); ?> <form action="<?php echo JRoute::_('index.php?option=com_menus&view=menus');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <label for="filter_search" class="element-invisible"><?php echo JText::_('COM_MENUS_MENU_SEARCH_FILTER');?></label> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_MENUS_ITEMS_SEARCH_FILTER'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> </div> <div class="clearfix"> </div> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped" id="menuList"> <thead> <tr> <th width="1%"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap center"> <span class="icon-publish"></span> <span class="hidden-phone"><?php echo JText::_('COM_MENUS_HEADING_PUBLISHED_ITEMS'); ?></span> </th> <th width="10%" class="nowrap center"> <span class="icon-unpublish"></span> <span class="hidden-phone"><?php echo JText::_('COM_MENUS_HEADING_UNPUBLISHED_ITEMS'); ?></span> </th> <th width="10%" class="nowrap center"> <span class="icon-trash"></span> <span class="hidden-phone"><?php echo JText::_('COM_MENUS_HEADING_TRASHED_ITEMS'); ?></span> </th> <th width="20%" class="nowrap center"> <span class="icon-cube"></span> <span class="hidden-phone"><?php echo JText::_('COM_MENUS_HEADING_LINKED_MODULES'); ?></span> </th> <th width="1%" class="nowrap"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="15"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : $canCreate = $user->authorise('core.create', 'com_menus'); $canEdit = $user->authorise('core.edit', 'com_menus'); $canChange = $user->authorise('core.edit.state', 'com_menus'); ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td> <a href="<?php echo JRoute::_('index.php?option=com_menus&view=items&menutype=' . $item->menutype) ?> "> <?php echo $this->escape($item->title); ?></a> <p class="small">(<span><?php echo JText::_('COM_MENUS_MENU_MENUTYPE_LABEL') ?></span> <?php if ($canEdit) : ?> <?php echo '<a href="' . JRoute::_('index.php?option=com_menus&task=menu.edit&id=' . $item->id) . ' title=' . $this->escape($item->description) . '">' . $this->escape($item->menutype) . '</a>'; ?>) <?php else : ?> <?php echo $this->escape($item->menutype)?>) <?php endif; ?> </p> </td> <td class="center btns"> <a class="badge badge-success" href="<?php echo JRoute::_('index.php?option=com_menus&view=items&menutype=' . $item->menutype . '&filter[published]=1');?>"> <?php echo $item->count_published; ?></a> </td> <td class="center btns"> <a class="badge" href="<?php echo JRoute::_('index.php?option=com_menus&view=items&menutype=' . $item->menutype . '&filter[published]=0');?>"> <?php echo $item->count_unpublished; ?></a> </td> <td class="center btns"> <a class="badge badge-error" href="<?php echo JRoute::_('index.php?option=com_menus&view=items&menutype=' . $item->menutype . '&filter[published]=-2');?>"> <?php echo $item->count_trashed; ?></a> </td> <td class="center"> <?php if (isset($this->modules[$item->menutype])) : ?> <div class="btn-group"> <a href="#" class="btn btn-small dropdown-toggle" data-toggle="dropdown"> <?php echo JText::_('COM_MENUS_MODULES') ?> <span class="caret"></span> </a> <ul class="dropdown-menu"> <?php foreach ($this->modules[$item->menutype] as &$module) : ?> <li> <?php if ($canEdit) : ?> <?php $link = JRoute::_('index.php?option=com_modules&task=module.edit&id=' . $module->id . '&return=' . $return . '&tmpl=component&layout=modal'); ?> <a href="#module<?php echo $module->id; ?>Modal" role="button" class="button" data-toggle="modal" title="<?php echo JText::_('COM_MENUS_EDIT_MODULE_SETTINGS');?>"> <?php echo JText::sprintf('COM_MENUS_MODULE_ACCESS_POSITION', $this->escape($module->title), $this->escape($module->access_title), $this->escape($module->position)); ?></a> <?php else :?> <?php echo JText::sprintf('COM_MENUS_MODULE_ACCESS_POSITION', $this->escape($module->title), $this->escape($module->access_title), $this->escape($module->position)); ?> <?php endif; ?> </li> <?php endforeach; ?> </ul> </div> <?php foreach ($this->modules[$item->menutype] as &$module) : ?> <?php if ($canEdit) : ?> <?php $link = JRoute::_('index.php?option=com_modules&task=module.edit&id=' . $module->id . '&return=' . $return . '&tmpl=component&layout=modal'); ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'module' . $module->id . 'Modal', array( 'url' => $link, 'title' => JText::_('COM_MENUS_EDIT_MODULE_SETTINGS'), 'height' => '300px', 'width' => '800px', 'footer' => '<button class="btn" data-dismiss="modal" aria-hidden="true">' . JText::_("JLIB_HTML_BEHAVIOR_CLOSE") . '</button>' . '<button class="btn btn-success" data-dismiss="modal" aria-hidden="true" onclick="jQuery(\'#module' . $module->id . 'Modal iframe\').contents().find(\'#saveBtn\').click();">' . JText::_("JSAVE") . '</button>' ) ); ?> <?php endif; ?> <?php endforeach; ?> <?php elseif ($modMenuId) : ?> <?php $link = JRoute::_('index.php?option=com_modules&task=module.add&eid=' . $modMenuId . '¶ms[menutype]=' . $item->menutype); ?> <a href="<?php echo $link; ?>"><?php echo JText::_('COM_MENUS_ADD_MENU_MODULE'); ?></a> <?php echo JHtml::_( 'bootstrap.renderModal', 'moduleModal', array( 'url' => $link, 'title' => JText::_('COM_MENUS_EDIT_MODULE_SETTINGS'), 'height' => '500px', 'width' => '800px', 'footer' => '<button class="btn" data-dismiss="modal" aria-hidden="true">' . JText::_("JLIB_HTML_BEHAVIOR_CLOSE") . '</button>' ) ); ?> <?php endif; ?> </td> <td> <?php echo $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif;?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\��\�rr.components/com_menus/views/menus/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * The HTML Menus Menu Menus View. * * @since 1.6 */ class MenusViewMenus extends JViewLegacy { /** * @var mixed */ protected $items; /** * @var array */ protected $modules; /** * @var JPagination */ protected $pagination; /** * @var JObject */ protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void * * @since 1.6 */ public function display($tpl = null) { $this->items = $this->get('Items'); $this->modules = $this->get('Modules'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); MenusHelper::addSubmenu('menus'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_menus'); JToolbarHelper::title(JText::_('COM_MENUS_VIEW_MENUS_TITLE'), 'list menumgr'); if ($canDo->get('core.create')) { JToolbarHelper::addNew('menu.add'); } if ($canDo->get('core.edit')) { JToolbarHelper::editList('menu.edit'); } if ($canDo->get('core.delete')) { JToolbarHelper::divider(); JToolbarHelper::deleteList('', 'menus.delete'); } JToolbarHelper::custom('menus.rebuild', 'refresh.png', 'refresh_f2.png', 'JTOOLBAR_REBUILD', false); if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::divider(); JToolbarHelper::preferences('com_menus'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_MENUS_MENU_MANAGER'); } } PKb��\���nn+components/com_menus/helpers/html/menus.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JLoader::register('MenusHelper', JPATH_ADMINISTRATOR . '/components/com_menus/helpers/menus.php'); /** * Menus HTML helper class. * * @package Joomla.Administrator * @subpackage com_menus * @since 1.7 */ abstract class MenusHtmlMenus { /** * Generate the markup to display the item associations * * @param int $itemid The menu item id * * @return string * * @since 3.0 * * @throws Exception If there is an error on the query */ public static function association($itemid) { // Defaults $html = ''; // Get the associations if ($associations = MenusHelper::getAssociations($itemid)) { // Get the associated menu items $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('m.id, m.title') ->select('l.sef as lang_sef') ->select('mt.title as menu_title') ->from('#__menu as m') ->join('LEFT', '#__menu_types as mt ON mt.menutype=m.menutype') ->where('m.id IN (' . implode(',', array_values($associations)) . ')') ->join('LEFT', '#__languages as l ON m.language=l.lang_code') ->select('l.image') ->select('l.title as language_title'); $db->setQuery($query); try { $items = $db->loadObjectList('id'); } catch (runtimeException $e) { throw new Exception($e->getMessage(), 500); } // Construct html if ($items) { foreach ($items as &$item) { $text = strtoupper($item->lang_sef); $url = JRoute::_('index.php?option=com_menus&task=item.edit&id=' . (int) $item->id); $tooltipParts = array( JHtml::_('image', 'mod_languages/' . $item->image . '.gif', $item->language_title, array('title' => $item->language_title), true ), $item->title, '(' . $item->menu_title . ')' ); $class = 'hasTooltip label label-association label-' . $item->lang_sef; $item->link = JHtml::_('tooltip', implode(' ', $tooltipParts), null, null, $text, $url, null, $class); } } $html = JLayoutHelper::render('joomla.content.associations', $items); } return $html; } /** * Returns a published state on a grid * * @param integer $value The state value. * @param integer $i The row index * @param boolean $enabled An optional setting for access control on the action. * @param string $checkbox An optional prefix for checkboxes. * * @return string The Html code * * @see JHtmlJGrid::state * * @since 1.7.1 */ public static function state($value, $i, $enabled = true, $checkbox = 'cb') { $states = array( 9 => array( 'unpublish', '', 'COM_MENUS_HTML_UNPUBLISH_HEADING', '', true, 'publish', 'publish' ), 8 => array( 'publish', '', 'COM_MENUS_HTML_PUBLISH_HEADING', '', true, 'unpublish', 'unpublish' ), 7 => array( 'unpublish', '', 'COM_MENUS_HTML_UNPUBLISH_SEPARATOR', '', true, 'publish', 'publish' ), 6 => array( 'publish', '', 'COM_MENUS_HTML_PUBLISH_SEPARATOR', '', true, 'unpublish', 'unpublish' ), 5 => array( 'unpublish', '', 'COM_MENUS_HTML_UNPUBLISH_ALIAS', '', true, 'publish', 'publish' ), 4 => array( 'publish', '', 'COM_MENUS_HTML_PUBLISH_ALIAS', '', true, 'unpublish', 'unpublish' ), 3 => array( 'unpublish', '', 'COM_MENUS_HTML_UNPUBLISH_URL', '', true, 'publish', 'publish' ), 2 => array( 'publish', '', 'COM_MENUS_HTML_PUBLISH_URL', '', true, 'unpublish', 'unpublish' ), 1 => array( 'unpublish', 'COM_MENUS_EXTENSION_PUBLISHED_ENABLED', 'COM_MENUS_HTML_UNPUBLISH_ENABLED', 'COM_MENUS_EXTENSION_PUBLISHED_ENABLED', true, 'publish', 'publish' ), 0 => array( 'publish', 'COM_MENUS_EXTENSION_UNPUBLISHED_ENABLED', 'COM_MENUS_HTML_PUBLISH_ENABLED', 'COM_MENUS_EXTENSION_UNPUBLISHED_ENABLED', true, 'unpublish', 'unpublish' ), -1 => array( 'unpublish', 'COM_MENUS_EXTENSION_PUBLISHED_DISABLED', 'COM_MENUS_HTML_UNPUBLISH_DISABLED', 'COM_MENUS_EXTENSION_PUBLISHED_DISABLED', true, 'warning', 'warning' ), -2 => array( 'publish', 'COM_MENUS_EXTENSION_UNPUBLISHED_DISABLED', 'COM_MENUS_HTML_PUBLISH_DISABLED', 'COM_MENUS_EXTENSION_UNPUBLISHED_DISABLED', true, 'trash', 'trash' ), -3 => array( 'publish', '', 'COM_MENUS_HTML_PUBLISH', '', true, 'trash', 'trash' ), ); return JHtml::_('jgrid.state', $states, $value, $i, 'items.', $enabled, true, $checkbox); } } PKb��\]e[&components/com_menus/helpers/menus.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Menus component helper. * * @since 1.6 */ class MenusHelper { /** * Defines the valid request variables for the reverse lookup. */ protected static $_filter = array('option', 'view', 'layout'); /** * Configure the Linkbar. * * @param string $vName The name of the active view. * * @return void * * @since 1.6 */ public static function addSubmenu($vName) { JHtmlSidebar::addEntry( JText::_('COM_MENUS_SUBMENU_MENUS'), 'index.php?option=com_menus&view=menus', $vName == 'menus' ); JHtmlSidebar::addEntry( JText::_('COM_MENUS_SUBMENU_ITEMS'), 'index.php?option=com_menus&view=items', $vName == 'items' ); } /** * Gets a list of the actions that can be performed. * * @param integer $parentId The menu ID. * * @return JObject * * @since 1.6 * @deprecated 3.2 Use JHelperContent::getActions() instead */ public static function getActions($parentId = 0) { // Log usage of deprecated function JLog::add(__METHOD__ . '() is deprecated, use JHelperContent::getActions() with new arguments order instead.', JLog::WARNING, 'deprecated'); // Get list of actions $result = JHelperContent::getActions('com_menus'); return $result; } /** * Gets a standard form of a link for lookups. * * @param mixed $request A link string or array of request variables. * * @return mixed A link in standard option-view-layout form, or false if the supplied response is invalid. * * @since 1.6 */ public static function getLinkKey($request) { if (empty($request)) { return false; } // Check if the link is in the form of index.php?... if (is_string($request)) { $args = array(); if (strpos($request, 'index.php') === 0) { parse_str(parse_url(htmlspecialchars_decode($request), PHP_URL_QUERY), $args); } else { parse_str($request, $args); } $request = $args; } // Only take the option, view and layout parts. foreach ($request as $name => $value) { if ((!in_array($name, self::$_filter)) && (!($name == 'task' && !array_key_exists('view', $request)))) { // Remove the variables we want to ignore. unset($request[$name]); } } ksort($request); return 'index.php?' . http_build_query($request, '', '&'); } /** * Get the menu list for create a menu module * * @return array The menu array list * * @since 1.6 */ public static function getMenuTypes() { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('a.menutype') ->from('#__menu_types AS a'); $db->setQuery($query); return $db->loadColumn(); } /** * Get a list of menu links for one or all menus. * * @param string $menuType An option menu to filter the list on, otherwise all menu links are returned as a grouped array. * @param integer $parentId An optional parent ID to pivot results around. * @param integer $mode An optional mode. If parent ID is set and mode=2, the parent and children are excluded from the list. * @param array $published An optional array of states * @param array $languages Optional array of specify which languages we want to filter * * @return array * * @since 1.6 */ public static function getMenuLinks($menuType = null, $parentId = 0, $mode = 0, $published = array(), $languages = array()) { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('a.id AS value, a.title AS text, a.alias, a.level, a.menutype, a.type, a.template_style_id, a.checked_out') ->from('#__menu AS a') ->join('LEFT', $db->quoteName('#__menu') . ' AS b ON a.lft > b.lft AND a.rgt < b.rgt'); // Filter by the type if ($menuType) { $query->where('(a.menutype = ' . $db->quote($menuType) . ' OR a.parent_id = 0)'); } if ($parentId) { if ($mode == 2) { // Prevent the parent and children from showing. $query->join('LEFT', '#__menu AS p ON p.id = ' . (int) $parentId) ->where('(a.lft <= p.lft OR a.rgt >= p.rgt)'); } } if (!empty($languages)) { if (is_array($languages)) { $languages = '(' . implode(',', array_map(array($db, 'quote'), $languages)) . ')'; } $query->where('a.language IN ' . $languages); } if (!empty($published)) { if (is_array($published)) { $published = '(' . implode(',', $published) . ')'; } $query->where('a.published IN ' . $published); } $query->where('a.published != -2') ->group('a.id, a.title, a.alias, a.level, a.menutype, a.type, a.template_style_id, a.checked_out, a.lft') ->order('a.lft ASC'); // Get the options. $db->setQuery($query); try { $links = $db->loadObjectList(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); return false; } if (empty($menuType)) { // If the menutype is empty, group the items by menutype. $query->clear() ->select('*') ->from('#__menu_types') ->where('menutype <> ' . $db->quote('')) ->order('title, menutype'); $db->setQuery($query); try { $menuTypes = $db->loadObjectList(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); return false; } // Create a reverse lookup and aggregate the links. $rlu = array(); foreach ($menuTypes as &$type) { $rlu[$type->menutype] = & $type; $type->links = array(); } // Loop through the list of menu links. foreach ($links as &$link) { if (isset($rlu[$link->menutype])) { $rlu[$link->menutype]->links[] = & $link; // Cleanup garbage. unset($link->menutype); } } return $menuTypes; } else { return $links; } } /** * Get the items associations * * @param integer $pk Menu item id * * @return array * * @since 3.0 */ public static function getAssociations($pk) { $associations = array(); $db = JFactory::getDbo(); $query = $db->getQuery(true) ->from('#__menu as m') ->join('INNER', '#__associations as a ON a.id=m.id AND a.context=' . $db->quote('com_menus.item')) ->join('INNER', '#__associations as a2 ON a.key=a2.key') ->join('INNER', '#__menu as m2 ON a2.id=m2.id') ->where('m.id=' . (int) $pk) ->select('m2.language, m2.id'); $db->setQuery($query); try { $menuitems = $db->loadObjectList('language'); } catch (RuntimeException $e) { throw new Exception($e->getMessage(), 500); } foreach ($menuitems as $tag => $item) { // Do not return itself as result if ((int) $item->id != $pk) { $associations[$tag] = $item->id; } } return $associations; } } PKb��\g�N��components/com_menus/menus.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_menus</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_MENUS_XML_DESCRIPTION</description> <administration> <files folder="admin"> <filename>config.xml</filename> <filename>controller.php</filename> <filename>menus.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_menus.ini</language> <language tag="en-GB">language/en-GB.com_menus.sys.ini</language> </languages> </administration> </extension> PKb��\�5At't'%components/com_menus/models/items.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Menu Item List Model for Menus. * * @since 1.6 */ class MenusModelItems extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'menutype', 'a.menutype', 'title', 'a.title', 'alias', 'a.alias', 'published', 'a.published', 'access', 'a.access', 'access_level', 'language', 'a.language', 'checked_out', 'a.checked_out', 'checked_out_time', 'a.checked_out_time', 'lft', 'a.lft', 'rgt', 'a.rgt', 'level', 'a.level', 'path', 'a.path', 'client_id', 'a.client_id', 'home', 'a.home', 'a.ordering' ); $app = JFactory::getApplication(); $assoc = JLanguageAssociations::isEnabled(); if ($assoc) { $config['filter_fields'][] = 'association'; } } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication('administrator'); $parentId = $this->getUserStateFromRequest($this->context . '.filter.parent_id', 'filter_parent_id'); $this->setState('filter.parent_id', $parentId); $search = $this->getUserStateFromRequest($this->context . '.search', 'filter_search'); $this->setState('filter.search', $search); $published = $this->getUserStateFromRequest($this->context . '.published', 'filter_published', ''); $this->setState('filter.published', $published); $access = $this->getUserStateFromRequest($this->context . '.filter.access', 'filter_access'); $this->setState('filter.access', $access); $parentId = $this->getUserStateFromRequest($this->context . '.filter.parent_id', 'filter_parent_id'); $this->setState('filter.parent_id', $parentId); $level = $this->getUserStateFromRequest($this->context . '.filter.level', 'filter_level'); $this->setState('filter.level', $level); $menuType = $app->input->getString('menutype', null); if ($menuType) { if ($menuType != $app->getUserState($this->context . '.menutype')) { $app->setUserState($this->context . '.menutype', $menuType); $app->input->set('limitstart', 0); } } else { $menuType = $app->getUserState($this->context . '.menutype'); if (!$menuType) { $menuType = $this->getDefaultMenuType(); } } $this->setState('filter.menutype', $menuType); $language = $this->getUserStateFromRequest($this->context . '.filter.language', 'filter_language', ''); $this->setState('filter.language', $language); // Component parameters. $params = JComponentHelper::getParams('com_menus'); $this->setState('params', $params); // List state information. parent::populateState('a.lft', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. * * @since 1.6 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.access'); $id .= ':' . $this->getState('filter.published'); $id .= ':' . $this->getState('filter.language'); $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.parent_id'); $id .= ':' . $this->getState('filter.menutype'); return parent::getStoreId($id); } /** * Finds the default menu type. * * In the absence of better information, this is the first menu ordered by title. * * @return string The default menu type * * @since 1.6 */ protected function getDefaultMenuType() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true) ->select('menutype') ->from('#__menu_types') ->order('title'); $db->setQuery($query, 0, 1); $menuType = $db->loadResult(); return $menuType; } /** * Builds an SQL query to load the list data. * * @return JDatabaseQuery A query object. * * @since 1.6 */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); $user = JFactory::getUser(); $app = JFactory::getApplication(); // Select all fields from the table. $query->select( $this->getState( 'list.select', $db->quoteName( array( 'a.id', 'a.menutype', 'a.title', 'a.alias', 'a.note', 'a.path', 'a.link', 'a.type', 'a.parent_id', 'a.level', 'a.published', 'a.component_id', 'a.checked_out', 'a.checked_out_time', 'a.browserNav', 'a.access', 'a.img', 'a.template_style_id', 'a.params', 'a.lft', 'a.rgt', 'a.home', 'a.language', 'a.client_id' ), array( null, null, null, null, null, null, null, null, null, null, 'apublished', null, null, null, null, null, null, null, null, null, null, null, null, null ) ) ) ); $query->select( 'CASE ' . ' WHEN a.type = ' . $db->quote('component') . ' THEN a.published+2*(e.enabled-1) ' . ' WHEN a.type = ' . $db->quote('url') . 'AND a.published != -2 THEN a.published+2 ' . ' WHEN a.type = ' . $db->quote('url') . 'AND a.published = -2 THEN a.published-1 ' . ' WHEN a.type = ' . $db->quote('alias') . 'AND a.published != -2 THEN a.published+4 ' . ' WHEN a.type = ' . $db->quote('alias') . 'AND a.published = -2 THEN a.published-1 ' . ' WHEN a.type = ' . $db->quote('separator') . 'AND a.published != -2 THEN a.published+6 ' . ' WHEN a.type = ' . $db->quote('separator') . 'AND a.published = -2 THEN a.published-1 ' . ' WHEN a.type = ' . $db->quote('heading') . 'AND a.published != -2 THEN a.published+8 ' . ' WHEN a.type = ' . $db->quote('heading') . 'AND a.published = -2 THEN a.published-1 ' . ' END AS published ' ); $query->from($db->quoteName('#__menu') . ' AS a'); // Join over the language $query->select('l.title AS language_title, l.image as image') ->join('LEFT', $db->quoteName('#__languages') . ' AS l ON l.lang_code = a.language'); // Join over the users. $query->select('u.name AS editor') ->join('LEFT', $db->quoteName('#__users') . ' AS u ON u.id = a.checked_out'); // Join over components $query->select('c.element AS componentname') ->join('LEFT', $db->quoteName('#__extensions') . ' AS c ON c.extension_id = a.component_id'); // Join over the asset groups. $query->select('ag.title AS access_level') ->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); // Join over the associations. $assoc = JLanguageAssociations::isEnabled(); if ($assoc) { $query->select('COUNT(asso2.id)>1 as association') ->join('LEFT', '#__associations AS asso ON asso.id = a.id AND asso.context=' . $db->quote('com_menus.item')) ->join('LEFT', '#__associations AS asso2 ON asso2.key = asso.key') ->group('a.id, e.enabled, l.title, l.image, u.name, c.element, ag.title, e.name'); } // Join over the extensions $query->select('e.name AS name') ->join('LEFT', '#__extensions AS e ON e.extension_id = a.component_id'); // Exclude the root category. $query->where('a.id > 1') ->where('a.client_id = 0'); // Filter on the published state. $published = $this->getState('filter.published'); if (is_numeric($published)) { $query->where('a.published = ' . (int) $published); } elseif ($published === '') { $query->where('(a.published IN (0, 1))'); } // Filter by search in title, alias or id if ($search = trim($this->getState('filter.search'))) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } elseif (stripos($search, 'link:') === 0) { if ($search = substr($search, 5)) { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('a.link LIKE ' . $search); } } else { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('(' . 'a.title LIKE ' . $search . ' OR a.alias LIKE ' . $search . ' OR a.note LIKE ' . $search . ')'); } } // Filter the items over the parent id if set. $parentId = $this->getState('filter.parent_id'); if (!empty($parentId)) { $query->where('p.id = ' . (int) $parentId); } // Filter the items over the menu id if set. $menuType = $this->getState('filter.menutype'); if (!empty($menuType)) { $query->where('a.menutype = ' . $db->quote($menuType)); } // Filter on the access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } // Implement View Level Access if (!$user->authorise('core.admin')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } // Filter on the level. if ($level = $this->getState('filter.level')) { $query->where('a.level <= ' . (int) $level); } // Filter on the language. if ($language = $this->getState('filter.language')) { $query->where('a.language = ' . $db->quote($language)); } // Add the list ordering clause. $query->order($db->escape($this->getState('list.ordering', 'a.lft')) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } } PKb��\�;��&&1components/com_menus/models/fields/menuparent.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; JFormHelper::loadFieldClass('list'); /** * Form Field class for the Joomla Framework. * * @since 1.6 */ class JFormFieldMenuParent extends JFormFieldList { /** * The form field type. * * @var string * @since 1.6 */ protected $type = 'MenuParent'; /** * Method to get the field options. * * @return array The field option objects. * * @since 1.6 */ protected function getOptions() { $options = array(); $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('a.id AS value, a.title AS text, a.level') ->from('#__menu AS a') ->join('LEFT', $db->quoteName('#__menu') . ' AS b ON a.lft > b.lft AND a.rgt < b.rgt'); if ($menuType = $this->form->getValue('menutype')) { $query->where('a.menutype = ' . $db->quote($menuType)); } else { $query->where('a.menutype != ' . $db->quote('')); } // Prevent parenting to children of this item. if ($id = $this->form->getValue('id')) { $query->join('LEFT', $db->quoteName('#__menu') . ' AS p ON p.id = ' . (int) $id) ->where('NOT(a.lft >= p.lft AND a.rgt <= p.rgt)'); } $query->where('a.published != -2') ->group('a.id, a.title, a.level, a.lft, a.rgt, a.menutype, a.parent_id, a.published') ->order('a.lft ASC'); // Get the options. $db->setQuery($query); try { $options = $db->loadObjectList(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); } // Pad the option text with spaces using depth level as a multiplier. for ($i = 0, $n = count($options); $i < $n; $i++) { $options[$i]->text = str_repeat('- ', $options[$i]->level) . $options[$i]->text; } // Merge any additional options in the XML definition. $options = array_merge(parent::getOptions(), $options); return $options; } } PKb��\^�d 3components/com_menus/models/fields/menuordering.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; JFormHelper::loadFieldClass('list'); /** * Form Field class for the Joomla Framework. * * @since 1.6 */ class JFormFieldMenuOrdering extends JFormFieldList { /** * The form field type. * * @var string * @since 1.7 */ protected $type = 'MenuOrdering'; /** * Method to get the list of siblings in a menu. * The method requires that parent be set. * * @return array The field option objects or false if the parent field has not been set * * @since 1.7 */ protected function getOptions() { $options = array(); // Get the parent $parent_id = $this->form->getValue('parent_id', 0); if (empty($parent_id)) { return false; } $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('a.id AS value, a.title AS text') ->from('#__menu AS a') ->where('a.published >= 0') ->where('a.parent_id =' . (int) $parent_id); if ($menuType = $this->form->getValue('menutype')) { $query->where('a.menutype = ' . $db->quote($menuType)); } else { $query->where('a.menutype != ' . $db->quote('')); } $query->order('a.lft ASC'); // Get the options. $db->setQuery($query); try { $options = $db->loadObjectList(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); } $options = array_merge( array(array('value' => '-1', 'text' => JText::_('COM_MENUS_ITEM_FIELD_ORDERING_VALUE_FIRST'))), $options, array(array('value' => '-2', 'text' => JText::_('COM_MENUS_ITEM_FIELD_ORDERING_VALUE_LAST'))) ); // Merge any additional options in the XML definition. $options = array_merge(parent::getOptions(), $options); return $options; } /** * Method to get the field input markup. * * @return string The field input markup. * * @since 1.7 */ protected function getInput() { if ($this->form->getValue('id', 0) == 0) { return '<span class="readonly">' . JText::_('COM_MENUS_ITEM_FIELD_ORDERING_TEXT') . '</span>'; } else { return parent::getInput(); } } } PKb��\��Q'/components/com_menus/models/fields/menutype.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; JFormHelper::loadFieldClass('list'); /** * Form Field class for the Joomla Framework. * * @since 1.6 */ class JFormFieldMenutype extends JFormFieldList { /** * The form field type. * * @var string * @since 1.6 */ protected $type = 'menutype'; /** * Method to get the field input markup. * * @return string The field input markup. * * @since 1.6 */ protected function getInput() { $html = array(); $recordId = (int) $this->form->getValue('id'); $size = ($v = $this->element['size']) ? ' size="' . $v . '"' : ''; $class = ($v = $this->element['class']) ? ' class="' . $v . '"' : 'class="text_area"'; $required = ($v = $this->element['required']) ? ' required="required"' : ''; // Get a reverse lookup of the base link URL to Title $model = JModelLegacy::getInstance('menutypes', 'menusModel'); $rlu = $model->getReverseLookup(); switch ($this->value) { case 'url': $value = JText::_('COM_MENUS_TYPE_EXTERNAL_URL'); break; case 'alias': $value = JText::_('COM_MENUS_TYPE_ALIAS'); break; case 'separator': $value = JText::_('COM_MENUS_TYPE_SEPARATOR'); break; case 'heading': $value = JText::_('COM_MENUS_TYPE_HEADING'); break; default: $link = $this->form->getValue('link'); // Clean the link back to the option, view and layout $value = JText::_(JArrayHelper::getValue($rlu, MenusHelper::getLinkKey($link))); break; } // Include jQuery JHtml::_('jquery.framework'); // Add the script to the document head. JFactory::getDocument()->addScriptDeclaration(' function jSelectPosition_' . $this->id . '(name) { document.getElementById("' . $this->id . '").value = name; } '); $link = JRoute::_('index.php?option=com_menus&view=menutypes&tmpl=component&recordId=' . $recordId); $html[] = '<span class="input-append"><input type="text" ' . $required . ' readonly="readonly" id="' . $this->id . '" value="' . $value . '"' . $size . $class . ' />'; $html[] = '<a href="#menuTypeModal" role="button" class="btn btn-primary" data-toggle="modal" title="' . JText::_('JSELECT') . '">' . '<span class="icon-list icon-white"></span> ' . JText::_('JSELECT') . '</a></span>'; $html[] = JHtml::_( 'bootstrap.renderModal', 'menuTypeModal', array( 'url' => $link, 'title' => JText::_('COM_MENUS_ITEM_FIELD_TYPE_LABEL'), 'width' => '800px', 'height' => '300px', 'footer' => '<button class="btn" data-dismiss="modal" aria-hidden="true">' . JText::_("JLIB_HTML_BEHAVIOR_CLOSE") . '</button>' ) ); $html[] = '<input class="input-small" type="hidden" name="' . $this->name . '" value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '" />'; return implode("\n", $html); } } PKb��\�P�+��2components/com_menus/models/forms/item_heading.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fields name="params"> <fieldset name="menu-options" label="COM_MENUS_LINKTYPE_OPTIONS_LABEL" > <field name="menu-anchor_title" type="text" label="COM_MENUS_ITEM_FIELD_ANCHOR_TITLE_LABEL" description="COM_MENUS_ITEM_FIELD_ANCHOR_TITLE_DESC" /> <field name="menu-anchor_css" type="text" label="COM_MENUS_ITEM_FIELD_ANCHOR_CSS_LABEL" description="COM_MENUS_ITEM_FIELD_ANCHOR_CSS_DESC" /> <field name="menu_image" type="media" label="COM_MENUS_ITEM_FIELD_MENU_IMAGE_LABEL" description="COM_MENUS_ITEM_FIELD_MENU_IMAGE_DESC" /> <field name="menu_text" type="radio" class="btn-group btn-group-yesno" label="COM_MENUS_ITEM_FIELD_MENU_TEXT_LABEL" description="COM_MENUS_ITEM_FIELD_MENU_TEXT_DESC" default="1" filter="integer" > <option value="1">JYES</option> <option value="0">JNO</option> </field> </fieldset> </fields> <help key="JHELP_MENUS_MENU_ITEM_MENU_ITEM_HEADING" /> </form> PKb��\�q�� 0components/com_menus/models/forms/item_alias.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <!-- Add fields to the request variables for the layout. --> <fields name="params"> <fieldset name="aliasoptions"> <field name="aliasoptions" type="menuitem" description="COM_MENUS_ITEM_FIELD_ALIAS_MENU_DESC" label="COM_MENUS_ITEM_FIELD_ALIAS_MENU_LABEL" required="true" /> </fieldset> <fieldset name="menu-options" label="COM_MENUS_LINKTYPE_OPTIONS_LABEL" > <field name="menu-anchor_title" type="text" label="COM_MENUS_ITEM_FIELD_ANCHOR_TITLE_LABEL" description="COM_MENUS_ITEM_FIELD_ANCHOR_TITLE_DESC" /> <field name="menu-anchor_css" type="text" label="COM_MENUS_ITEM_FIELD_ANCHOR_CSS_LABEL" description="COM_MENUS_ITEM_FIELD_ANCHOR_CSS_DESC" /> <field name="menu_image" type="media" label="COM_MENUS_ITEM_FIELD_MENU_IMAGE_LABEL" description="COM_MENUS_ITEM_FIELD_MENU_IMAGE_DESC" /> <field name="menu_text" type="radio" class="btn-group btn-group-yesno" label="COM_MENUS_ITEM_FIELD_MENU_TEXT_LABEL" description="COM_MENUS_ITEM_FIELD_MENU_TEXT_DESC" default="1" filter="integer" > <option value="1">JYES</option> <option value="0">JNO</option> </field> </fieldset> </fields> <help key="JHELP_MENUS_MENU_ITEM_MENU_ITEM_ALIAS" /> </form> PKb��\W[����4components/com_menus/models/forms/item_separator.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fields name="params"> <fieldset name="menu-options" label="COM_MENUS_LINKTYPE_OPTIONS_LABEL" > <field name="menu_image" type="media" label="COM_MENUS_ITEM_FIELD_MENU_IMAGE_LABEL" description="COM_MENUS_ITEM_FIELD_MENU_IMAGE_DESC" /> <field name="menu_text" type="radio" class="btn-group btn-group-yesno" label="COM_MENUS_ITEM_FIELD_MENU_TEXT_LABEL" description="COM_MENUS_ITEM_FIELD_MENU_TEXT_DESC" default="1" filter="integer" > <option value="1">JYES</option> <option value="0">JNO</option> </field> </fieldset> </fields> <help key="JHELP_MENUS_MENU_ITEM_TEXT_SEPARATOR" /> </form> PKb��\d��8��*components/com_menus/models/forms/menu.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field id="id" name="id" type="hidden" default="0" filter="int" readonly="true"/> <field id="menutype" name="menutype" type="text" label="COM_MENUS_MENU_MENUTYPE_LABEL" description="COM_MENUS_MENU_MENUTYPE_DESC" size="30" maxlength="24" required="true" /> <field id="title" name="title" type="text" label="JGLOBAL_TITLE" description="COM_MENUS_MENU_TITLE_DESC" size="30" maxlength="48" required="true" /> <field id="menudescription" name="description" type="text" label="JGLOBAL_DESCRIPTION" description="COM_MENUS_MENU_DESCRIPTION_DESC" size="30" maxlength="255" /> </fieldset> </form> PKb��\������.components/com_menus/models/forms/item_url.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fields name="params"> <fieldset name="menu-options" label="COM_MENUS_LINKTYPE_OPTIONS_LABEL" > <field name="menu-anchor_title" type="text" label="COM_MENUS_ITEM_FIELD_ANCHOR_TITLE_LABEL" description="COM_MENUS_ITEM_FIELD_ANCHOR_TITLE_DESC" /> <field name="menu-anchor_css" type="text" label="COM_MENUS_ITEM_FIELD_ANCHOR_CSS_LABEL" description="COM_MENUS_ITEM_FIELD_ANCHOR_CSS_DESC" /> <field name="menu_image" type="media" label="COM_MENUS_ITEM_FIELD_MENU_IMAGE_LABEL" description="COM_MENUS_ITEM_FIELD_MENU_IMAGE_DESC" /> <field name="menu_text" type="radio" class="btn-group btn-group-yesno" label="COM_MENUS_ITEM_FIELD_MENU_TEXT_LABEL" description="COM_MENUS_ITEM_FIELD_MENU_TEXT_DESC" default="1" filter="integer" > <option value="1">JYES</option> <option value="0">JNO</option> </field> </fieldset> </fields> <help key="JHELP_MENUS_MENU_ITEM_EXTERNAL_URL" /> </form> PKb��\ŀ3���*components/com_menus/models/forms/item.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field name="id" type="text" class="readonly" label="JGLOBAL_FIELD_ID_LABEL" description="JGLOBAL_FIELD_ID_DESC" default="0" filter="int" readonly="true"/> <field name="title" type="text" label="COM_MENUS_ITEM_FIELD_TITLE_LABEL" description="COM_MENUS_ITEM_FIELD_TITLE_DESC" class="input-xxlarge input-large-text" size="40" required="true"/> <field name="alias" type="alias" label="JFIELD_ALIAS_LABEL" description="JFIELD_ALIAS_DESC" hint="JFIELD_ALIAS_PLACEHOLDER" size="40"/> <field name="aliastip" type="spacer" label="COM_MENUS_TIP_ALIAS_LABEL"/> <field name="note" type="text" label="JFIELD_NOTE_LABEL" description="COM_MENUS_ITEM_FIELD_NOTE_DESC" maxlength="255" class="span12" size="40"/> <field name="link" type="link" label="COM_MENUS_ITEM_FIELD_LINK_LABEL" description="COM_MENUS_ITEM_FIELD_LINK_DESC" readonly="true" class="input-xxlarge" size="50"/> <field name="menutype" type="menu" label="COM_MENUS_ITEM_FIELD_ASSIGNED_LABEL" description="COM_MENUS_ITEM_FIELD_ASSIGNED_DESC" required="true" size="1" /> <field name="type" type="menutype" label="COM_MENUS_ITEM_FIELD_TYPE_LABEL" description="COM_MENUS_ITEM_FIELD_TYPE_DESC" class="input-medium" required="true" size="40" /> <field name="published" type="list" class="chzn-color-state" id="published" label="JSTATUS" description="JFIELD_PUBLISHED_DESC" size="1" default="1" filter="integer"> <option value="1"> JPUBLISHED</option> <option value="0"> JUNPUBLISHED</option> <option value="-2"> JTRASHED</option> </field> <field name="parent_id" type="menuparent" label="COM_MENUS_ITEM_FIELD_PARENT_LABEL" description="COM_MENUS_ITEM_FIELD_PARENT_DESC" default="1" filter="int" size="1"> <option value="1">COM_MENUS_ITEM_ROOT</option> </field> <field name="menuordering" type="menuordering" label="COM_MENUS_ITEM_FIELD_ORDERING_LABEL" description="COM_MENUS_ITEM_FIELD_ORDERING_DESC" filter="int" size="1"> </field> <field name="component_id" type="hidden" filter="int" /> <field name="browserNav" type="list" label="COM_MENUS_ITEM_FIELD_BROWSERNAV_LABEL" description="COM_MENUS_ITEM_FIELD_BROWSERNAV_DESC" default="Parent" filter="int" > <option value="0">COM_MENUS_FIELD_VALUE_PARENT</option> <option value="1">COM_MENUS_FIELD_VALUE_NEW_WITH_NAV</option> <option value="2">COM_MENUS_FIELD_VALUE_NEW_WITHOUT_NAV</option> </field> <field name="access" type="accesslevel" id="access" label="JFIELD_ACCESS_LABEL" description="JFIELD_ACCESS_DESC" default="1" filter="integer"/> <field name="template_style_id" type="templatestyle" label="COM_MENUS_ITEM_FIELD_TEMPLATE_LABEL" description="COM_MENUS_ITEM_FIELD_TEMPLATE_DESC" filter="int" > <option value="0">JOPTION_USE_DEFAULT</option> </field> <field name="home" type="radio" label="COM_MENUS_ITEM_FIELD_HOME_LABEL" description="COM_MENUS_ITEM_FIELD_HOME_DESC" default="0" class="btn-group btn-group-yesno" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="language" type="contentlanguage" label="JFIELD_LANGUAGE_LABEL" description="COM_MENUS_ITEM_FIELD_LANGUAGE_DESC" > <option value="*">JALL</option> </field> <field name="path" type="hidden" filter="unset"/> <field name="level" type="hidden" filter="unset"/> <field name="checked_out" type="hidden" filter="unset"/> <field name="checked_out_time" type="hidden" filter="unset"/> <field name="lft" type="hidden" filter="unset"/> <field name="rgt" type="hidden" filter="unset"/> <field name="toggle_modules" type="radio" label="COM_MENUS_ITEM_FIELD_HIDE_UNASSIGNED_LABEL" description="COM_MENUS_ITEM_FIELD_HIDE_UNASSIGNED_DESC" default="1" class="btn-group btn-group-yesno" filter="integer"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> </fieldset> <fields name="params"> </fields> </form> PKb��\ BU__2components/com_menus/models/forms/filter_items.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <field name="menutype" type="menu" label="COM_MENUS_FILTER_CATEGORY" description="JOPTION_FILTER_CATEGORY_DESC" onchange="this.form.submit();" /> <fields name="filter"> <field name="search" type="text" label="COM_MENUS_FILTER_SEARCH_DESC" description="COM_MENUS_ITEMS_SEARCH_FILTER" hint="JSEARCH_FILTER" class="js-stools-search-string" /> <field name="published" type="status" filter="*,0,1,-2" label="COM_MENUS_FILTER_PUBLISHED" description="COM_MENUS_FILTER_PUBLISHED_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_PUBLISHED</option> </field> <field name="access" type="accesslevel" label="JOPTION_FILTER_ACCESS" description="JOPTION_FILTER_ACCESS_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_ACCESS</option> </field> <field name="language" type="contentlanguage" label="JOPTION_FILTER_LANGUAGE" description="JOPTION_FILTER_LANGUAGE_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_LANGUAGE</option> <option value="*">JALL</option> </field> <field name="level" type="integer" first="1" last="10" step="1" label="JOPTION_FILTER_LEVEL" languages="*" description="JOPTION_FILTER_LEVEL_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_MAX_LEVELS</option> </field> </fields> <fields name="list"> <field name="fullordering" type="list" label="JGLOBAL_SORT_BY" statuses="*,0,1,2,-2" description="JGLOBAL_SORT_BY" onchange="this.form.submit();" default="a.lft ASC" > <option value="">JGLOBAL_SORT_BY</option> <option value="a.lft ASC">JGRID_HEADING_ORDERING_ASC</option> <option value="a.lft DESC">JGRID_HEADING_ORDERING_DESC</option> <option value="a.published ASC">JSTATUS_ASC</option> <option value="a.published DESC">JSTATUS_DESC</option> <option value="a.title ASC">JGLOBAL_TITLE_ASC</option> <option value="a.title DESC">JGLOBAL_TITLE_DESC</option> <option value="a.home ASC">COM_MENUS_HEADING_HOME_ASC</option> <option value="a.home DESC">COM_MENUS_HEADING_HOME_DESC</option> <option value="a.access ASC">JGRID_HEADING_ACCESS_ASC</option> <option value="a.access DESC">JGRID_HEADING_ACCESS_DESC</option> <option value="association ASC" requires="associations">JASSOCIATIONS_ASC</option> <option value="association DESC" requries="associations">JASSOCIATIONS_DESC</option> <option value="language ASC">JGRID_HEADING_LANGUAGE_ASC</option> <option value="language DESC">JGRID_HEADING_LANGUAGE_DESC</option> <option value="a.id ASC">JGRID_HEADING_ID_ASC</option> <option value="a.id DESC">JGRID_HEADING_ID_DESC</option> </field> <field name="limit" type="limitbox" class="input-mini" default="25" label="COM_MENUS_LIST_LIMIT" description="COM_MENUS_LIST_LIMIT_DESC" onchange="this.form.submit();" /> </fields> </form> PKb��\�4components/com_menus/models/forms/item_component.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fields name="params" label="COM_MENUS_LINKTYPE_OPTIONS_LABEL" > <fieldset name="menu-options" label="COM_MENUS_LINKTYPE_OPTIONS_LABEL" > <field name="menu-anchor_title" type="text" label="COM_MENUS_ITEM_FIELD_ANCHOR_TITLE_LABEL" description="COM_MENUS_ITEM_FIELD_ANCHOR_TITLE_DESC" /> <field name="menu-anchor_css" type="text" label="COM_MENUS_ITEM_FIELD_ANCHOR_CSS_LABEL" description="COM_MENUS_ITEM_FIELD_ANCHOR_CSS_DESC" /> <field name="menu_image" type="media" label="COM_MENUS_ITEM_FIELD_MENU_IMAGE_LABEL" description="COM_MENUS_ITEM_FIELD_MENU_IMAGE_DESC" /> <field name="menu_text" type="radio" class="btn-group btn-group-yesno" label="COM_MENUS_ITEM_FIELD_MENU_TEXT_LABEL" description="COM_MENUS_ITEM_FIELD_MENU_TEXT_DESC" default="1" filter="integer" > <option value="1">JYES</option> <option value="0">JNO</option> </field> </fieldset> <fieldset name="page-options" label="COM_MENUS_PAGE_OPTIONS_LABEL" > <field name="page_title" type="text" label="COM_MENUS_ITEM_FIELD_PAGE_TITLE_LABEL" description="COM_MENUS_ITEM_FIELD_PAGE_TITLE_DESC" /> <field name="show_page_heading" type="list" class="chzn-color" label="COM_MENUS_ITEM_FIELD_SHOW_PAGE_HEADING_LABEL" description="COM_MENUS_ITEM_FIELD_SHOW_PAGE_HEADING_DESC" default="" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="1" class="yes">JYES</option> <option value="0" class="no">JNO</option> </field> <field name="page_heading" type="text" label="COM_MENUS_ITEM_FIELD_PAGE_HEADING_LABEL" description="COM_MENUS_ITEM_FIELD_PAGE_HEADING_DESC" /> <field name="pageclass_sfx" type="text" label="COM_MENUS_ITEM_FIELD_PAGE_CLASS_LABEL" description="COM_MENUS_ITEM_FIELD_PAGE_CLASS_DESC" /> </fieldset> <fieldset name="metadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS" > <field name="menu-meta_description" type="textarea" label="JFIELD_META_DESCRIPTION_LABEL" description="JFIELD_META_DESCRIPTION_DESC" rows="3" cols="40" /> <field name="menu-meta_keywords" type="textarea" label="JFIELD_META_KEYWORDS_LABEL" description="JFIELD_META_KEYWORDS_DESC" rows="3" cols="40" /> <field name="robots" type="list" label="JFIELD_METADATA_ROBOTS_LABEL" description="JFIELD_METADATA_ROBOTS_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="index, follow">JGLOBAL_INDEX_FOLLOW</option> <option value="noindex, follow">JGLOBAL_NOINDEX_FOLLOW</option> <option value="index, nofollow">JGLOBAL_INDEX_NOFOLLOW</option> <option value="noindex, nofollow">JGLOBAL_NOINDEX_NOFOLLOW</option> </field> <field name="secure" type="list" label="COM_MENUS_ITEM_FIELD_SECURE_LABEL" description="COM_MENUS_ITEM_FIELD_SECURE_DESC" default="0" filter="integer" > <option value="-1">JOFF</option> <option value="1">JON</option> <option value="0">COM_MENUS_FIELD_VALUE_IGNORE </option> </field> </fieldset> </fields> </form> PKb��\v�`���$components/com_menus/models/menu.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * Menu Item Model for Menus. * * @since 1.6 */ class MenusModelMenu extends JModelForm { /** * The prefix to use with controller messages. * * @var string * @since 1.6 */ protected $text_prefix = 'COM_MENUS_MENU'; /** * Model context string. * * @var string */ protected $_context = 'com_menus.menu'; /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to delete the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canDelete($record) { $user = JFactory::getUser(); return $user->authorise('core.delete', 'com_menus.menu.' . (int) $record->id); } /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to change the state of the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canEditState($record) { $user = JFactory::getUser(); return $user->authorise('core.edit.state', 'com_menus.menu.' . (int) $record->id); } /** * Returns a Table object, always creating it * * @param type $type The table type to instantiate * @param string $prefix A prefix for the table class name. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A database object * * @since 1.6 */ public function getTable($type = 'MenuType', $prefix = 'JTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @return void * * @since 1.6 */ protected function populateState() { $app = JFactory::getApplication('administrator'); // Load the User state. $id = $app->input->getInt('id'); $this->setState('menu.id', $id); // Load the parameters. $params = JComponentHelper::getParams('com_menus'); $this->setState('params', $params); } /** * Method to get a menu item. * * @param integer $itemId The id of the menu item to get. * * @return mixed Menu item data object on success, false on failure. * * @since 1.6 */ public function &getItem($itemId = null) { $itemId = (!empty($itemId)) ? $itemId : (int) $this->getState('menu.id'); // Get a menu item row instance. $table = $this->getTable(); // Attempt to load the row. $return = $table->load($itemId); // Check for a table object error. if ($return === false && $table->getError()) { $this->setError($table->getError()); return false; } $properties = $table->getProperties(1); $value = JArrayHelper::toObject($properties, 'JObject'); return $value; } /** * Method to get the menu item form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return JForm A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_menus.menu', 'menu', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_menus.edit.menu.data', array()); if (empty($data)) { $data = $this->getItem(); } $this->preprocessData('com_menus.menu', $data); return $data; } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 1.6 */ public function save($data) { $dispatcher = JEventDispatcher::getInstance(); $id = (!empty($data['id'])) ? $data['id'] : (int) $this->getState('menu.id'); $isNew = true; // Get a row instance. $table = $this->getTable(); // Include the plugins for the save events. JPluginHelper::importPlugin('content'); // Load the row if saving an existing item. if ($id > 0) { $isNew = false; $table->load($id); } // Bind the data. if (!$table->bind($data)) { $this->setError($table->getError()); return false; } // Check the data. if (!$table->check()) { $this->setError($table->getError()); return false; } // Trigger the before event. $result = $dispatcher->trigger('onContentBeforeSave', array($this->_context, &$table, $isNew)); // Store the data. if (in_array(false, $result, true) || !$table->store()) { $this->setError($table->getError()); return false; } // Trigger the after save event. $dispatcher->trigger('onContentAfterSave', array($this->_context, &$table, $isNew)); $this->setState('menu.id', $table->id); // Clean the cache $this->cleanCache(); return true; } /** * Method to delete groups. * * @param array $itemIds An array of item ids. * * @return boolean Returns true on success, false on failure. * * @since 1.6 */ public function delete($itemIds) { $dispatcher = JEventDispatcher::getInstance(); // Sanitize the ids. $itemIds = (array) $itemIds; JArrayHelper::toInteger($itemIds); // Get a group row instance. $table = $this->getTable(); // Include the plugins for the delete events. JPluginHelper::importPlugin('content'); // Iterate the items to delete each one. foreach ($itemIds as $itemId) { if ($table->load($itemId)) { // Trigger the before delete event. $result = $dispatcher->trigger('onContentBeforeDelete', array($this->_context, $table)); if (in_array(false, $result, true) || !$table->delete($itemId)) { $this->setError($table->getError()); return false; } // Trigger the after delete event. $dispatcher->trigger('onContentAfterDelete', array($this->_context, $table)); // TODO: Delete the menu associations - Menu items and Modules } } // Clean the cache $this->cleanCache(); return true; } /** * Gets a list of all mod_mainmenu modules and collates them by menutype * * @return array * * @since 1.6 */ public function &getModules() { $db = $this->getDbo(); $query = $db->getQuery(true) ->from('#__modules as a') ->select('a.id, a.title, a.params, a.position') ->where('module = ' . $db->quote('mod_menu')) ->select('ag.title AS access_title') ->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); $db->setQuery($query); $modules = $db->loadObjectList(); $result = array(); foreach ($modules as &$module) { $params = new Registry; $params->loadString($module->params); $menuType = $params->get('menutype'); if (!isset($result[$menuType])) { $result[$menuType] = array(); } $result[$menuType][] = & $module; } return $result; } /** * Custom clean the cache * * @param string $group Cache group name. * @param integer $client_id Application client id. * * @return void * * @since 1.6 */ protected function cleanCache($group = null, $client_id = 0) { parent::cleanCache('com_modules'); parent::cleanCache('mod_menu'); } } PKb��\ cc;;%components/com_menus/models/menus.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Menu List Model for Menus. * * @since 1.6 */ class MenusModelMenus extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'title', 'a.title', 'menutype', 'a.menutype', ); } parent::__construct($config); } /** * Overrides the getItems method to attach additional metrics to the list. * * @return mixed An array of data items on success, false on failure. * * @since 1.6.1 */ public function getItems() { // Get a storage key. $store = $this->getStoreId('getItems'); // Try to load the data from internal storage. if (!empty($this->cache[$store])) { return $this->cache[$store]; } // Load the list items. $items = parent::getItems(); // If emtpy or an error, just return. if (empty($items)) { return array(); } // Getting the following metric by joins is WAY TOO SLOW. // Faster to do three queries for very large menu trees. // Get the menu types of menus in the list. $db = $this->getDbo(); $menuTypes = JArrayHelper::getColumn($items, 'menutype'); // Quote the strings. $menuTypes = implode( ',', array_map(array($db, 'quote'), $menuTypes) ); // Get the published menu counts. $query = $db->getQuery(true) ->select('m.menutype, COUNT(DISTINCT m.id) AS count_published') ->from('#__menu AS m') ->where('m.published = 1') ->where('m.menutype IN (' . $menuTypes . ')') ->group('m.menutype'); $db->setQuery($query); try { $countPublished = $db->loadAssocList('menutype', 'count_published'); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } // Get the unpublished menu counts. $query->clear('where') ->where('m.published = 0') ->where('m.menutype IN (' . $menuTypes . ')'); $db->setQuery($query); try { $countUnpublished = $db->loadAssocList('menutype', 'count_published'); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } // Get the trashed menu counts. $query->clear('where') ->where('m.published = -2') ->where('m.menutype IN (' . $menuTypes . ')'); $db->setQuery($query); try { $countTrashed = $db->loadAssocList('menutype', 'count_published'); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } // Inject the values back into the array. foreach ($items as $item) { $item->count_published = isset($countPublished[$item->menutype]) ? $countPublished[$item->menutype] : 0; $item->count_unpublished = isset($countUnpublished[$item->menutype]) ? $countUnpublished[$item->menutype] : 0; $item->count_trashed = isset($countTrashed[$item->menutype]) ? $countTrashed[$item->menutype] : 0; } // Add the items to the internal cache. $this->cache[$store] = $items; return $this->cache[$store]; } /** * Method to build an SQL query to load the list data. * * @return string An SQL query * * @since 1.6 */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select all fields from the table. $query->select($this->getState('list.select', 'a.id, a.menutype, a.title, a.description')) ->from($db->quoteName('#__menu_types') . ' AS a') ->where('a.id > 0'); // Filter by search in title or menutype if ($search = trim($this->getState('filter.search'))) { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('(' . 'a.title LIKE ' . $search . ' OR a.menutype LIKE ' . $search . ')'); } // Add the list ordering clause. $query->order($db->escape($this->getState('list.ordering', 'a.id')) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $search = $this->getUserStateFromRequest($this->context . '.search', 'filter_search'); $this->setState('filter.search', $search); // List state information. parent::populateState('a.title', 'asc'); } /** * Gets the extension id of the core mod_menu module. * * @return integer * * @since 2.5 */ public function getModMenuId() { $db = $this->getDbo(); $query = $db->getQuery(true) ->select('e.extension_id') ->from('#__extensions AS e') ->where('e.type = ' . $db->quote('module')) ->where('e.element = ' . $db->quote('mod_menu')) ->where('e.client_id = 0'); $db->setQuery($query); return $db->loadResult(); } /** * Gets a list of all mod_mainmenu modules and collates them by menutype * * @return array * * @since 1.6 */ public function &getModules() { $model = JModelLegacy::getInstance('Menu', 'MenusModel', array('ignore_request' => true)); $result = $model->getModules(); return $result; } } PKb��\R�9:`�`�$components/com_menus/models/item.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; jimport('joomla.filesystem.path'); require_once JPATH_COMPONENT . '/helpers/menus.php'; /** * Menu Item Model for Menus. * * @since 1.6 */ class MenusModelItem extends JModelAdmin { /** * The type alias for this content type. * * @var string * @since 3.4 */ public $typeAlias = 'com_menus.item'; /** * The context used for the associations table * * @var string * @since 3.4.4 */ protected $associationsContext = 'com_menus.item'; /** * @var string The prefix to use with controller messages. * @since 1.6 */ protected $text_prefix = 'COM_MENUS_ITEM'; /** * @var string The help screen key for the menu item. * @since 1.6 */ protected $helpKey = 'JHELP_MENUS_MENU_ITEM_MANAGER_EDIT'; /** * @var string The help screen base URL for the menu item. * @since 1.6 */ protected $helpURL; /** * @var boolean True to use local lookup for the help screen. * @since 1.6 */ protected $helpLocal = false; /** * Batch copy/move command. If set to false, * the batch copy/move command is not supported * * @var string */ protected $batch_copymove = 'menu_id'; /** * Allowed batch commands * * @var array */ protected $batch_commands = array( 'assetgroup_id' => 'batchAccess', 'language_id' => 'batchLanguage' ); /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to delete the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canDelete($record) { if (!empty($record->id)) { if ($record->published != -2) { return; } return parent::canDelete($record); } } /** * Batch copy menu items to a new menu or parent. * * @param integer $value The new menu or sub-item. * @param array $pks An array of row IDs. * @param array $contexts An array of item contexts. * * @return mixed An array of new IDs on success, boolean false on failure. * * @since 1.6 */ protected function batchCopy($value, $pks, $contexts) { // $value comes as {menutype}.{parent_id} $parts = explode('.', $value); $menuType = $parts[0]; $parentId = (int) JArrayHelper::getValue($parts, 1, 0); $table = $this->getTable(); $db = $this->getDbo(); $query = $db->getQuery(true); $newIds = array(); // Check that the parent exists if ($parentId) { if (!$table->load($parentId)) { if ($error = $table->getError()) { // Fatal error $this->setError($error); return false; } else { // Non-fatal error $this->setError(JText::_('JGLOBAL_BATCH_MOVE_PARENT_NOT_FOUND')); $parentId = 0; } } } // If the parent is 0, set it to the ID of the root item in the tree if (empty($parentId)) { if (!$parentId = $table->getRootId()) { $this->setError($db->getErrorMsg()); return false; } } // Check that user has create permission for menus $user = JFactory::getUser(); if (!$user->authorise('core.create', 'com_menus')) { $this->setError(JText::_('COM_MENUS_BATCH_MENU_ITEM_CANNOT_CREATE')); return false; } // We need to log the parent ID $parents = array(); // Calculate the emergency stop count as a precaution against a runaway loop bug $query->select('COUNT(id)') ->from($db->quoteName('#__menu')); $db->setQuery($query); try { $count = $db->loadResult(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } // Parent exists so we let's proceed while (!empty($pks) && $count > 0) { // Pop the first id off the stack $pk = array_shift($pks); $table->reset(); // Check that the row actually exists if (!$table->load($pk)) { if ($error = $table->getError()) { // Fatal error $this->setError($error); return false; } else { // Not fatal error $this->setError(JText::sprintf('JGLOBAL_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } } // Copy is a bit tricky, because we also need to copy the children $query->clear() ->select('id') ->from($db->quoteName('#__menu')) ->where('lft > ' . (int) $table->lft) ->where('rgt < ' . (int) $table->rgt); $db->setQuery($query); $childIds = $db->loadColumn(); // Add child ID's to the array only if they aren't already there. foreach ($childIds as $childId) { if (!in_array($childId, $pks)) { array_push($pks, $childId); } } // Make a copy of the old ID and Parent ID $oldId = $table->id; $oldParentId = $table->parent_id; // Reset the id because we are making a copy. $table->id = 0; // If we a copying children, the Old ID will turn up in the parents list // otherwise it's a new top level item $table->parent_id = isset($parents[$oldParentId]) ? $parents[$oldParentId] : $parentId; $table->menutype = $menuType; // Set the new location in the tree for the node. $table->setLocation($table->parent_id, 'last-child'); // TODO: Deal with ordering? // $table->ordering = 1; $table->level = null; $table->lft = null; $table->rgt = null; $table->home = 0; // Alter the title & alias list($title, $alias) = $this->generateNewTitle($table->parent_id, $table->alias, $table->title); $table->title = $title; $table->alias = $alias; // Check the row. if (!$table->check()) { $this->setError($table->getError()); return false; } // Store the row. if (!$table->store()) { $this->setError($table->getError()); return false; } // Get the new item ID $newId = $table->get('id'); // Add the new ID to the array $newIds[$pk] = $newId; // Now we log the old 'parent' to the new 'parent' $parents[$oldId] = $table->id; $count--; } // Rebuild the hierarchy. if (!$table->rebuild()) { $this->setError($table->getError()); return false; } // Rebuild the tree path. if (!$table->rebuildPath($table->id)) { $this->setError($table->getError()); return false; } // Clean the cache $this->cleanCache(); return $newIds; } /** * Batch move menu items to a new menu or parent. * * @param integer $value The new menu or sub-item. * @param array $pks An array of row IDs. * @param array $contexts An array of item contexts. * * @return boolean True on success. * * @since 1.6 */ protected function batchMove($value, $pks, $contexts) { // $value comes as {menutype}.{parent_id} $parts = explode('.', $value); $menuType = $parts[0]; $parentId = (int) JArrayHelper::getValue($parts, 1, 0); $table = $this->getTable(); $db = $this->getDbo(); $query = $db->getQuery(true); // Check that the parent exists. if ($parentId) { if (!$table->load($parentId)) { if ($error = $table->getError()) { // Fatal error $this->setError($error); return false; } else { // Non-fatal error $this->setError(JText::_('JGLOBAL_BATCH_MOVE_PARENT_NOT_FOUND')); $parentId = 0; } } } // Check that user has create and edit permission for menus $user = JFactory::getUser(); if (!$user->authorise('core.create', 'com_menus')) { $this->setError(JText::_('COM_MENUS_BATCH_MENU_ITEM_CANNOT_CREATE')); return false; } if (!$user->authorise('core.edit', 'com_menus')) { $this->setError(JText::_('COM_MENUS_BATCH_MENU_ITEM_CANNOT_EDIT')); return false; } // We are going to store all the children and just moved the menutype $children = array(); // Parent exists so we let's proceed foreach ($pks as $pk) { // Check that the row actually exists if (!$table->load($pk)) { if ($error = $table->getError()) { // Fatal error $this->setError($error); return false; } else { // Not fatal error $this->setError(JText::sprintf('JGLOBAL_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } } // Set the new location in the tree for the node. $table->setLocation($parentId, 'last-child'); // Set the new Parent Id $table->parent_id = $parentId; // Check if we are moving to a different menu if ($menuType != $table->menutype) { // Add the child node ids to the children array. $query->clear() ->select($db->quoteName('id')) ->from($db->quoteName('#__menu')) ->where($db->quoteName('lft') . ' BETWEEN ' . (int) $table->lft . ' AND ' . (int) $table->rgt); $db->setQuery($query); $children = array_merge($children, (array) $db->loadColumn()); } // Check the row. if (!$table->check()) { $this->setError($table->getError()); return false; } // Store the row. if (!$table->store()) { $this->setError($table->getError()); return false; } // Rebuild the tree path. if (!$table->rebuildPath()) { $this->setError($table->getError()); return false; } } // Process the child rows if (!empty($children)) { // Remove any duplicates and sanitize ids. $children = array_unique($children); JArrayHelper::toInteger($children); // Update the menutype field in all nodes where necessary. $query->clear() ->update($db->quoteName('#__menu')) ->set($db->quoteName('menutype') . ' = ' . $db->quote($menuType)) ->where($db->quoteName('id') . ' IN (' . implode(',', $children) . ')'); $db->setQuery($query); try { $db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } } // Clean the cache $this->cleanCache(); return true; } /** * Method to check if you can save a record. * * @param array $data An array of input data. * @param string $key The name of the key for the primary key. * * @return boolean * * @since 1.6 */ protected function canSave($data = array(), $key = 'id') { return JFactory::getUser()->authorise('core.edit', $this->option); } /** * Method to get the row form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return mixed A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // The folder and element vars are passed when saving the form. if (empty($data)) { $item = $this->getItem(); // The type should already be set. $this->setState('item.link', $item->link); } else { $this->setState('item.link', JArrayHelper::getValue($data, 'link')); $this->setState('item.type', JArrayHelper::getValue($data, 'type')); } // Get the form. $form = $this->loadForm('com_menus.item', 'item', array('control' => 'jform', 'load_data' => $loadData), true); if (empty($form)) { return false; } // Modify the form based on access controls. if (!$this->canEditState((object) $data)) { // Disable fields for display. $form->setFieldAttribute('menuordering', 'disabled', 'true'); $form->setFieldAttribute('published', 'disabled', 'true'); // Disable fields while saving. // The controller has already verified this is an article you can edit. $form->setFieldAttribute('menuordering', 'filter', 'unset'); $form->setFieldAttribute('published', 'filter', 'unset'); } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $data = array_merge((array) $this->getItem(), (array) JFactory::getApplication()->getUserState('com_menus.edit.item.data', array())); // For a new menu item, pre-select some filters (Status, Language, Access) in edit form if those have been selected in Menu Manager if ($this->getItem()->id == 0) { // Get selected fields $filters = JFactory::getApplication()->getUserState('com_menus.items.filter'); $data['published'] = (isset($filters['published']) ? $filters['published'] : null); $data['language'] = (isset($filters['language']) ? $filters['language'] : null); $data['access'] = (isset($filters['access']) ? $filters['access'] : null); } $this->preprocessData('com_menus.item', $data); return $data; } /** * Get the necessary data to load an item help screen. * * @return object An object with key, url, and local properties for loading the item help screen. * * @since 1.6 */ public function getHelp() { return (object) array('key' => $this->helpKey, 'url' => $this->helpURL, 'local' => $this->helpLocal); } /** * Method to get a menu item. * * @param integer $pk An optional id of the object to get, otherwise the id from the model state is used. * * @return mixed Menu item data object on success, false on failure. * * @since 1.6 */ public function getItem($pk = null) { $pk = (!empty($pk)) ? $pk : (int) $this->getState('item.id'); // Get a level row instance. $table = $this->getTable(); // Attempt to load the row. $table->load($pk); // Check for a table object error. if ($error = $table->getError()) { $this->setError($error); return false; } // Prime required properties. if ($type = $this->getState('item.type')) { $table->type = $type; } if (empty($table->id)) { $table->parent_id = $this->getState('item.parent_id'); $table->menutype = $this->getState('item.menutype'); $table->params = '{}'; } // If the link has been set in the state, possibly changing link type. if ($link = $this->getState('item.link')) { // Check if we are changing away from the actual link type. if (MenusHelper::getLinkKey($table->link) != MenusHelper::getLinkKey($link)) { $table->link = $link; } } switch ($table->type) { case 'alias': $table->component_id = 0; $args = array(); parse_str(parse_url($table->link, PHP_URL_QUERY), $args); break; case 'separator': case 'heading': $table->link = ''; $table->component_id = 0; break; case 'url': $table->component_id = 0; $args = array(); parse_str(parse_url($table->link, PHP_URL_QUERY), $args); break; case 'component': default: // Enforce a valid type. $table->type = 'component'; // Ensure the integrity of the component_id field is maintained, particularly when changing the menu item type. $args = array(); parse_str(parse_url($table->link, PHP_URL_QUERY), $args); if (isset($args['option'])) { // Load the language file for the component. $lang = JFactory::getLanguage(); $lang->load($args['option'], JPATH_ADMINISTRATOR, null, false, true) || $lang->load($args['option'], JPATH_ADMINISTRATOR . '/components/' . $args['option'], null, false, true); // Determine the component id. $component = JComponentHelper::getComponent($args['option']); if (isset($component->id)) { $table->component_id = $component->id; } } break; } // We have a valid type, inject it into the state for forms to use. $this->setState('item.type', $table->type); // Convert to the JObject before adding the params. $properties = $table->getProperties(1); $result = JArrayHelper::toObject($properties); // Convert the params field to an array. $registry = new Registry; $registry->loadString($table->params); $result->params = $registry->toArray(); // Merge the request arguments in to the params for a component. if ($table->type == 'component') { // Note that all request arguments become reserved parameter names. $result->request = $args; $result->params = array_merge($result->params, $args); } if ($table->type == 'alias') { // Note that all request arguments become reserved parameter names. $result->params = array_merge($result->params, $args); } if ($table->type == 'url') { // Note that all request arguments become reserved parameter names. $result->params = array_merge($result->params, $args); } // Load associated menu items $assoc = JLanguageAssociations::isEnabled(); if ($assoc) { if ($pk != null) { $result->associations = MenusHelper::getAssociations($pk); } else { $result->associations = array(); } } $result->menuordering = $pk; return $result; } /** * Get the list of modules not in trash. * * @return mixed An array of module records (id, title, position), or false on error. * * @since 1.6 */ public function getModules() { $db = $this->getDbo(); $query = $db->getQuery(true); /** * Join on the module-to-menu mapping table. * We are only interested if the module is displayed on ALL or THIS menu item (or the inverse ID number). * sqlsrv changes for modulelink to menu manager */ $query->select('a.id, a.title, a.position, a.published, map.menuid') ->from('#__modules AS a') ->join('LEFT', sprintf('#__modules_menu AS map ON map.moduleid = a.id AND map.menuid IN (0, %1$d, -%1$d)', $this->getState('item.id'))) ->select('(SELECT COUNT(*) FROM #__modules_menu WHERE moduleid = a.id AND menuid < 0) AS ' . $db->quoteName('except')); // Join on the asset groups table. $query->select('ag.title AS access_title') ->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access') ->where('a.published >= 0') ->where('a.client_id = 0') ->order('a.position, a.ordering'); $db->setQuery($query); try { $result = $db->loadObjectList(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } return $result; } /** * Get the list of all view levels * * @return array An array of all view levels (id, title). * * @since 3.4 */ public function getViewLevels() { $db = $this->getDbo(); $query = $db->getQuery(true); // Get all the available view levels $query->select($db->quoteName('id')) ->select($db->quoteName('title')) ->from($db->quoteName('#__viewlevels')) ->order($db->quoteName('id')); $db->setQuery($query); try { $result = $db->loadObjectList(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } return $result; } /** * A protected method to get the where clause for the reorder. * This ensures that the row will be moved relative to a row with the same menutype. * * @param JTableMenu $table instance. * * @return array An array of conditions to add to add to ordering queries. * * @since 1.6 */ protected function getReorderConditions($table) { return 'menutype = ' . $this->_db->quote($table->menutype); } /** * Returns a Table object, always creating it * * @param type $type The table type to instantiate. * @param string $prefix A prefix for the table class name. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A database object. * * @since 1.6 */ public function getTable($type = 'Menu', $prefix = 'MenusTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @return void * * @since 1.6 */ protected function populateState() { $app = JFactory::getApplication('administrator'); // Load the User state. $pk = $app->input->getInt('id'); $this->setState('item.id', $pk); if (!($parentId = $app->getUserState('com_menus.edit.item.parent_id'))) { $parentId = $app->input->getInt('parent_id'); } $this->setState('item.parent_id', $parentId); $menuType = $app->getUserState('com_menus.edit.item.menutype'); if ($app->input->getString('menutype', false)) { $menuType = $app->input->getString('menutype', 'mainmenu'); } $this->setState('item.menutype', $menuType); if (!($type = $app->getUserState('com_menus.edit.item.type'))) { $type = $app->input->get('type'); /** * Note: a new menu item will have no field type. * The field is required so the user has to change it. */ } $this->setState('item.type', $type); if ($link = $app->getUserState('com_menus.edit.item.link')) { $this->setState('item.link', $link); } // Load the parameters. $params = JComponentHelper::getParams('com_menus'); $this->setState('params', $params); } /** * Method to preprocess the form. * * @param JForm $form A JForm object. * @param mixed $data The data expected for the form. * @param string $group The name of the plugin group to import. * * @return void * * @since 1.6 * @throws Exception if there is an error in the form event. */ protected function preprocessForm(JForm $form, $data, $group = 'content') { $link = $this->getState('item.link'); $type = $this->getState('item.type'); $formFile = false; // Initialise form with component view params if available. if ($type == 'component') { $link = htmlspecialchars_decode($link); // Parse the link arguments. $args = array(); parse_str(parse_url(htmlspecialchars_decode($link), PHP_URL_QUERY), $args); // Confirm that the option is defined. $option = ''; $base = ''; if (isset($args['option'])) { // The option determines the base path to work with. $option = $args['option']; $base = JPATH_SITE . '/components/' . $option; } if (isset($args['view'])) { $view = $args['view']; // Determine the layout to search for. if (isset($args['layout'])) { $layout = $args['layout']; } else { $layout = 'default'; } // Check for the layout XML file. Use standard xml file if it exists. $tplFolders = array( $base . '/views/' . $view . '/tmpl', $base . '/view/' . $view . '/tmpl' ); $path = JPath::find($tplFolders, $layout . '.xml'); if (is_file($path)) { $formFile = $path; } // If custom layout, get the xml file from the template folder // template folder is first part of file name -- template:folder if (!$formFile && (strpos($layout, ':') > 0)) { $temp = explode(':', $layout); $templatePath = JPath::clean(JPATH_SITE . '/templates/' . $temp[0] . '/html/' . $option . '/' . $view . '/' . $temp[1] . '.xml'); if (is_file($templatePath)) { $formFile = $templatePath; } } } // Now check for a view manifest file if (!$formFile) { if (isset($view)) { $metadataFolders = array( $base . '/view/' . $view, $base . '/views/' . $view ); $metaPath = JPath::find($metadataFolders, 'metadata.xml'); if (is_file($path = JPath::clean($metaPath))) { $formFile = $path; } } else { // Now check for a component manifest file $path = JPath::clean($base . '/metadata.xml'); if (is_file($path)) { $formFile = $path; } } } } if ($formFile) { // If an XML file was found in the component, load it first. // We need to qualify the full path to avoid collisions with component file names. if ($form->loadFile($formFile, true, '/metadata') == false) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } // Attempt to load the xml file. if (!$xml = simplexml_load_file($formFile)) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } // Get the help data from the XML file if present. $help = $xml->xpath('/metadata/layout/help'); } else { // We don't have a component. Load the form XML to get the help path $xmlFile = JPath::find(JPATH_ROOT . '/administrator/components/com_menus/models/forms', 'item_' . $type . '.xml'); // Attempt to load the xml file. if ($xmlFile && !$xml = simplexml_load_file($xmlFile)) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } // Get the help data from the XML file if present. $help = $xml->xpath('/form/help'); } if (!empty($help)) { $helpKey = trim((string) $help[0]['key']); $helpURL = trim((string) $help[0]['url']); $helpLoc = trim((string) $help[0]['local']); $this->helpKey = $helpKey ? $helpKey : $this->helpKey; $this->helpURL = $helpURL ? $helpURL : $this->helpURL; $this->helpLocal = (($helpLoc == 'true') || ($helpLoc == '1') || ($helpLoc == 'local')) ? true : false; } // Load the specific type file if (!$form->loadFile('item_' . $type, false, false)) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } // Association menu items $app = JFactory::getApplication(); $assoc = JLanguageAssociations::isEnabled(); if ($assoc) { $languages = JLanguageHelper::getLanguages('lang_code'); $addform = new SimpleXMLElement('<form />'); $fields = $addform->addChild('fields'); $fields->addAttribute('name', 'associations'); $fieldset = $fields->addChild('fieldset'); $fieldset->addAttribute('name', 'item_associations'); $fieldset->addAttribute('description', 'COM_MENUS_ITEM_ASSOCIATIONS_FIELDSET_DESC'); $add = false; foreach ($languages as $tag => $language) { if ($tag != $data['language']) { $add = true; $field = $fieldset->addChild('field'); $field->addAttribute('name', $tag); $field->addAttribute('type', 'menuitem'); $field->addAttribute('language', $tag); $field->addAttribute('label', $language->title); $field->addAttribute('translate_label', 'false'); $option = $field->addChild('option', 'COM_MENUS_ITEM_FIELD_ASSOCIATION_NO_VALUE'); $option->addAttribute('value', ''); } } if ($add) { $form->load($addform, false); } } // Trigger the default form events. parent::preprocessForm($form, $data, $group); } /** * Method rebuild the entire nested set tree. * * @return boolean False on failure or error, true otherwise. * * @since 1.6 */ public function rebuild() { // Initialiase variables. $db = $this->getDbo(); $query = $db->getQuery(true); $table = $this->getTable(); try { $rebuildResult = $table->rebuild(); } catch (Exception $e) { $this->setError($e->getMessage()); return false; } if (!$rebuildResult) { $this->setError($table->getError()); return false; } $query->select('id, params') ->from('#__menu') ->where('params NOT LIKE ' . $db->quote('{%')) ->where('params <> ' . $db->quote('')); $db->setQuery($query); try { $items = $db->loadObjectList(); } catch (RuntimeException $e) { return JError::raiseWarning(500, $e->getMessage()); } foreach ($items as &$item) { $registry = new Registry; $registry->loadString($item->params); $params = (string) $registry; $query->clear(); $query->update('#__menu') ->set('params = ' . $db->quote($params)) ->where('id = ' . $item->id); try { $db->setQuery($query)->execute(); } catch (RuntimeException $e) { return JError::raiseWarning(500, $e->getMessage()); } unset($registry); } // Clean the cache $this->cleanCache(); return true; } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 1.6 */ public function save($data) { $dispatcher = JEventDispatcher::getInstance(); $pk = (!empty($data['id'])) ? $data['id'] : (int) $this->getState('item.id'); $isNew = true; $table = $this->getTable(); $context = $this->option . '.' . $this->name; // Include the plugins for the on save events. JPluginHelper::importPlugin($this->events_map['save']); // Load the row if saving an existing item. if ($pk > 0) { $table->load($pk); $isNew = false; } if (!$isNew) { if ($table->parent_id == $data['parent_id']) { // If first is chosen make the item the first child of the selected parent. if ($data['menuordering'] == -1) { $table->setLocation($data['parent_id'], 'first-child'); } // If last is chosen make it the last child of the selected parent. elseif ($data['menuordering'] == -2) { $table->setLocation($data['parent_id'], 'last-child'); } // Don't try to put an item after itself. All other ones put after the selected item. // $data['id'] is empty means it's a save as copy elseif ($data['menuordering'] && $table->id != $data['menuordering'] || empty($data['id'])) { $table->setLocation($data['menuordering'], 'after'); } // Just leave it where it is if no change is made. elseif ($data['menuordering'] && $table->id == $data['menuordering']) { unset($data['menuordering']); } } // Set the new parent id if parent id not matched and put in last position else { $table->setLocation($data['parent_id'], 'last-child'); } } // We have a new item, so it is not a change. else { $table->setLocation($data['parent_id'], 'last-child'); } // Bind the data. if (!$table->bind($data)) { $this->setError($table->getError()); return false; } // Alter the title & alias for save as copy. Also, unset the home record. if (!$isNew && $data['id'] == 0) { list($title, $alias) = $this->generateNewTitle($table->parent_id, $table->alias, $table->title); $table->title = $title; $table->alias = $alias; $table->published = 0; $table->home = 0; } // Check the data. if (!$table->check()) { $this->setError($table->getError()); return false; } // Trigger the before save event. $result = $dispatcher->trigger($this->event_before_save, array($context, &$table, $isNew)); // Store the data. if (in_array(false, $result, true)|| !$table->store()) { $this->setError($table->getError()); return false; } // Trigger the after save event. $dispatcher->trigger($this->event_after_save, array($context, &$table, $isNew)); // Rebuild the tree path. if (!$table->rebuildPath($table->id)) { $this->setError($table->getError()); return false; } $this->setState('item.id', $table->id); $this->setState('item.menutype', $table->menutype); // Load associated menu items $assoc = JLanguageAssociations::isEnabled(); if ($assoc) { // Adding self to the association $associations = $data['associations']; // Unset any invalid associations $associations = Joomla\Utilities\ArrayHelper::toInteger($associations); foreach ($associations as $tag => $id) { if (!$id) { unset($associations[$tag]); } } // Detecting all item menus $all_language = $table->language == '*'; if ($all_language && !empty($associations)) { JError::raiseNotice(403, JText::_('COM_MENUS_ERROR_ALL_LANGUAGE_ASSOCIATED')); } $associations[$table->language] = $table->id; // Deleting old association for these items $db = $this->getDbo(); $query = $db->getQuery(true) ->delete('#__associations') ->where('context=' . $db->quote($this->associationsContext)) ->where('id IN (' . implode(',', $associations) . ')'); $db->setQuery($query); try { $db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } if (!$all_language && count($associations) > 1) { // Adding new association for these items $key = md5(json_encode($associations)); $query->clear() ->insert('#__associations'); foreach ($associations as $id) { $query->values(((int) $id) . ',' . $db->quote($this->associationsContext) . ',' . $db->quote($key)); } $db->setQuery($query); try { $db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } } } // Clean the cache $this->cleanCache(); if (isset($data['link'])) { $base = JUri::base(); $juri = JUri::getInstance($base . $data['link']); $option = $juri->getVar('option'); // Clean the cache parent::cleanCache($option); } return true; } /** * Method to save the reordered nested set tree. * First we save the new order values in the lft values of the changed ids. * Then we invoke the table rebuild to implement the new ordering. * * @param array $idArray Rows identifiers to be reordered * @param array $lft_array lft values of rows to be reordered * * @return boolean false on failuer or error, true otherwise. * * @since 1.6 */ public function saveorder($idArray = null, $lft_array = null) { // Get an instance of the table object. $table = $this->getTable(); if (!$table->saveorder($idArray, $lft_array)) { $this->setError($table->getError()); return false; } // Clean the cache $this->cleanCache(); return true; } /** * Method to change the home state of one or more items. * * @param array &$pks A list of the primary keys to change. * @param integer $value The value of the home state. * * @return boolean True on success. * * @since 1.6 */ public function setHome(&$pks, $value = 1) { $table = $this->getTable(); $pks = (array) $pks; $languages = array(); $onehome = false; // Remember that we can set a home page for different languages, // so we need to loop through the primary key array. foreach ($pks as $i => $pk) { if ($table->load($pk)) { if (!array_key_exists($table->language, $languages)) { $languages[$table->language] = true; if ($table->home == $value) { unset($pks[$i]); JError::raiseNotice(403, JText::_('COM_MENUS_ERROR_ALREADY_HOME')); } else { $table->home = $value; if ($table->language == '*') { $table->published = 1; } if (!$this->canSave($table)) { // Prune items that you can't change. unset($pks[$i]); JError::raiseWarning(403, JText::_('JLIB_APPLICATION_ERROR_SAVE_NOT_PERMITTED')); } elseif (!$table->check()) { // Prune the items that failed pre-save checks. unset($pks[$i]); JError::raiseWarning(403, $table->getError()); } elseif (!$table->store()) { // Prune the items that could not be stored. unset($pks[$i]); JError::raiseWarning(403, $table->getError()); } } } else { unset($pks[$i]); if (!$onehome) { $onehome = true; JError::raiseNotice(403, JText::sprintf('COM_MENUS_ERROR_ONE_HOME')); } } } } // Clean the cache $this->cleanCache(); return true; } /** * Method to change the published state of one or more records. * * @param array &$pks A list of the primary keys to change. * @param integer $value The value of the published state. * * @return boolean True on success. * * @since 1.6 */ public function publish(&$pks, $value = 1) { $table = $this->getTable(); $pks = (array) $pks; // Default menu item existence checks. if ($value != 1) { foreach ($pks as $i => $pk) { if ($table->load($pk) && $table->home && $table->language == '*') { // Prune items that you can't change. JError::raiseWarning(403, JText::_('JLIB_DATABASE_ERROR_MENU_UNPUBLISH_DEFAULT_HOME')); unset($pks[$i]); break; } } } // Clean the cache $this->cleanCache(); // Ensure that previous checks doesn't empty the array if (empty($pks)) { return true; } return parent::publish($pks, $value); } /** * Method to change the title & alias. * * @param integer $parent_id The id of the parent. * @param string $alias The alias. * @param string $title The title. * * @return array Contains the modified title and alias. * * @since 1.6 */ protected function generateNewTitle($parent_id, $alias, $title) { // Alter the title & alias $table = $this->getTable(); while ($table->load(array('alias' => $alias, 'parent_id' => $parent_id))) { if ($title == $table->title) { $title = JString::increment($title); } $alias = JString::increment($alias, 'dash'); } return array($title, $alias); } /** * Custom clean the cache * * @param string $group Cache group name. * @param integer $client_id Application client id. * * @return void * * @since 1.6 */ protected function cleanCache($group = null, $client_id = 0) { parent::cleanCache('com_modules'); parent::cleanCache('mod_menu'); } } PKb��\��T��/�/)components/com_menus/models/menutypes.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.path'); /** * Menu Item Types Model for Menus. * * @since 1.6 */ class MenusModelMenutypes extends JModelLegacy { /** * A reverse lookup of the base link URL to Title * * @var array */ protected $rlu = array(); /** * Method to get the reverse lookup of the base link URL to Title * * @return array Array of reverse lookup of the base link URL to Title * * @since 1.6 */ public function getReverseLookup() { if (empty($this->rlu)) { $this->getTypeOptions(); } return $this->rlu; } /** * Method to get the available menu item type options. * * @return array Array of groups with menu item types. * * @since 1.6 */ public function getTypeOptions() { jimport('joomla.filesystem.file'); $lang = JFactory::getLanguage(); $list = array(); // Get the list of components. $db = $this->getDbo(); $query = $db->getQuery(true) ->select('name, element AS ' . $db->quoteName('option')) ->from('#__extensions') ->where('type = ' . $db->quote('component')) ->where('enabled = 1') ->order('name ASC'); $db->setQuery($query); $components = $db->loadObjectList(); foreach ($components as $component) { if ($options = $this->getTypeOptionsByComponent($component->option)) { $list[$component->name] = $options; // Create the reverse lookup for link-to-name. foreach ($options as $option) { if (isset($option->request)) { $this->addReverseLookupUrl($option); if (isset($option->request['option'])) { $componentLanguageFolder = JPATH_ADMINISTRATOR . '/components/' . $option->request['option']; $lang->load($option->request['option'] . '.sys', JPATH_ADMINISTRATOR, null, false, true) || $lang->load($option->request['option'] . '.sys', $componentLanguageFolder, null, false, true); } } } } } // Allow a system plugin to insert dynamic menu types to the list shown in menus: JEventDispatcher::getInstance()->trigger('onAfterGetMenuTypeOptions', array(&$list, $this)); return $list; } /** * Method to create the reverse lookup for link-to-name. * (can be used from onAfterGetMenuTypeOptions handlers) * * @param JObject $option with request array or string and title public variables * * @return void * * @since 3.1 */ public function addReverseLookupUrl($option) { $this->rlu[MenusHelper::getLinkKey($option->request)] = $option->get('title'); } /** * Get menu types by component. * * @param string $component Component URL option. * * @return array * * @since 1.6 */ protected function getTypeOptionsByComponent($component) { $options = array(); $mainXML = JPATH_SITE . '/components/' . $component . '/metadata.xml'; if (is_file($mainXML)) { $options = $this->getTypeOptionsFromXml($mainXML, $component); } if (empty($options)) { $options = $this->getTypeOptionsFromMvc($component); } return $options; } /** * Get the menu types from an XML file * * @param string $file File path * @param string $component Component option as in URL * * @return array * * @since 1.6 */ protected function getTypeOptionsFromXml($file, $component) { $options = array(); // Attempt to load the xml file. if (!$xml = simplexml_load_file($file)) { return false; } // Look for the first menu node off of the root node. if (!$menu = $xml->xpath('menu[1]')) { return false; } else { $menu = $menu[0]; } // If we have no options to parse, just add the base component to the list of options. if (!empty($menu['options']) && $menu['options'] == 'none') { // Create the menu option for the component. $o = new JObject; $o->title = (string) $menu['name']; $o->description = (string) $menu['msg']; $o->request = array('option' => $component); $options[] = $o; return $options; } // Look for the first options node off of the menu node. if (!$optionsNode = $menu->xpath('options[1]')) { return false; } else { $optionsNode = $optionsNode[0]; } // Make sure the options node has children. if (!$children = $optionsNode->children()) { return false; } else { // Process each child as an option. foreach ($children as $child) { if ($child->getName() == 'option') { // Create the menu option for the component. $o = new JObject; $o->title = (string) $child['name']; $o->description = (string) $child['msg']; $o->request = array('option' => $component, (string) $optionsNode['var'] => (string) $child['value']); $options[] = $o; } elseif ($child->getName() == 'default') { // Create the menu option for the component. $o = new JObject; $o->title = (string) $child['name']; $o->description = (string) $child['msg']; $o->request = array('option' => $component); $options[] = $o; } } } return $options; } /** * Get menu types from MVC * * @param string $component Component option like in URLs * * @return array * * @since 1.6 */ protected function getTypeOptionsFromMvc($component) { $options = array(); // Get the views for this component. if (is_dir(JPATH_SITE . '/components/' . $component)) { $folders = JFolder::folders(JPATH_SITE . '/components/' . $component, '^view[s]?$', false, true); } $path = ''; if (!empty($folders[0])) { $path = $folders[0]; } if (is_dir($path)) { $views = JFolder::folders($path); } else { return false; } foreach ($views as $view) { // Ignore private views. if (strpos($view, '_') !== 0) { // Determine if a metadata file exists for the view. $file = $path . '/' . $view . '/metadata.xml'; if (is_file($file)) { // Attempt to load the xml file. if ($xml = simplexml_load_file($file)) { // Look for the first view node off of the root node. if ($menu = $xml->xpath('view[1]')) { $menu = $menu[0]; // If the view is hidden from the menu, discard it and move on to the next view. if (!empty($menu['hidden']) && $menu['hidden'] == 'true') { unset($xml); continue; } // Do we have an options node or should we process layouts? // Look for the first options node off of the menu node. if ($optionsNode = $menu->xpath('options[1]')) { $optionsNode = $optionsNode[0]; // Make sure the options node has children. if ($children = $optionsNode->children()) { // Process each child as an option. foreach ($children as $child) { if ($child->getName() == 'option') { // Create the menu option for the component. $o = new JObject; $o->title = (string) $child['name']; $o->description = (string) $child['msg']; $o->request = array('option' => $component, 'view' => $view, (string) $optionsNode['var'] => (string) $child['value']); $options[] = $o; } elseif ($child->getName() == 'default') { // Create the menu option for the component. $o = new JObject; $o->title = (string) $child['name']; $o->description = (string) $child['msg']; $o->request = array('option' => $component, 'view' => $view); $options[] = $o; } } } } else { $options = array_merge($options, (array) $this->getTypeOptionsFromLayouts($component, $view)); } } unset($xml); } } else { $options = array_merge($options, (array) $this->getTypeOptionsFromLayouts($component, $view)); } } } return $options; } /** * Get the menu types from component layouts * * @param string $component Component option as in URLs * @param string $view Name of the view * * @return array * * @since 1.6 */ protected function getTypeOptionsFromLayouts($component, $view) { $options = array(); $layouts = array(); $layoutNames = array(); $lang = JFactory::getLanguage(); $path = ''; // Get the views for this component. if (is_dir(JPATH_SITE . '/components/' . $component)) { $folders = JFolder::folders(JPATH_SITE . '/components/' . $component, '^view[s]?$', false, true); } if (!empty($folders[0])) { $path = $folders[0] . '/' . $view . '/tmpl'; } if (is_dir($path)) { $layouts = array_merge($layouts, JFolder::files($path, '.xml$', false, true)); } else { return $options; } // Build list of standard layout names foreach ($layouts as $layout) { // Ignore private layouts. if (strpos(basename($layout), '_') === false) { // Get the layout name. $layoutNames[] = basename($layout, '.xml'); } } // Get the template layouts // TODO: This should only search one template -- the current template for this item (default of specified) $folders = JFolder::folders(JPATH_SITE . '/templates', '', false, true); // Array to hold association between template file names and templates $templateName = array(); foreach ($folders as $folder) { if (is_dir($folder . '/html/' . $component . '/' . $view)) { $template = basename($folder); $lang->load('tpl_' . $template . '.sys', JPATH_SITE, null, false, true) || $lang->load('tpl_' . $template . '.sys', JPATH_SITE . '/templates/' . $template, null, false, true); $templateLayouts = JFolder::files($folder . '/html/' . $component . '/' . $view, '.xml$', false, true); foreach ($templateLayouts as $layout) { // Get the layout name. $templateLayoutName = basename($layout, '.xml'); // Add to the list only if it is not a standard layout if (array_search($templateLayoutName, $layoutNames) === false) { $layouts[] = $layout; // Set template name array so we can get the right template for the layout $templateName[$layout] = basename($folder); } } } } // Process the found layouts. foreach ($layouts as $layout) { // Ignore private layouts. if (strpos(basename($layout), '_') === false) { $file = $layout; // Get the layout name. $layout = basename($layout, '.xml'); // Create the menu option for the layout. $o = new JObject; $o->title = ucfirst($layout); $o->description = ''; $o->request = array('option' => $component, 'view' => $view); // Only add the layout request argument if not the default layout. if ($layout != 'default') { // If the template is set, add in format template:layout so we save the template name $o->request['layout'] = (isset($templateName[$file])) ? $templateName[$file] . ':' . $layout : $layout; } // Load layout metadata if it exists. if (is_file($file)) { // Attempt to load the xml file. if ($xml = simplexml_load_file($file)) { // Look for the first view node off of the root node. if ($menu = $xml->xpath('layout[1]')) { $menu = $menu[0]; // If the view is hidden from the menu, discard it and move on to the next view. if (!empty($menu['hidden']) && $menu['hidden'] == 'true') { unset($xml); unset($o); continue; } // Populate the title and description if they exist. if (!empty($menu['title'])) { $o->title = trim((string) $menu['title']); } if (!empty($menu->message[0])) { $o->description = trim((string) $menu->message[0]); } } } } // Add the layout to the options array. $options[] = $o; } } return $options; } } PKb��\@�g��#components/com_menus/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_menus * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Base controller class for Menu Manager. * * @since 1.6 */ class MenusController extends JControllerLegacy { /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array|boolean $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { require_once JPATH_COMPONENT . '/helpers/menus.php'; parent::display(); return $this; } } PKb��\�c'ZZ"components/com_plugins/plugins.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_plugins * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.tabstate'); if (!JFactory::getUser()->authorise('core.manage', 'com_plugins')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $controller = JControllerLegacy::getInstance('Plugins'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\�du���.components/com_plugins/controllers/plugins.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_plugins * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Plugins list controller class. * * @since 1.6 */ class PluginsControllerPlugins extends JControllerAdmin { /** * Method to get a model object, loading it if required. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 1.6 */ public function getModel($name = 'Plugin', $prefix = 'PluginsModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } } PKb��\Η^��-components/com_plugins/controllers/plugin.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_plugins * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Plugin controller class. * * @since 1.6 */ class PluginsControllerPlugin extends JControllerForm { } PKb��\��m.__!components/com_plugins/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC"> <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_plugins" section="component" /> </fieldset> </config> PKb��\��m�!components/com_plugins/access.xmlnu�[���<?xml version="1.0" encoding="utf-8" ?> <access component="com_plugins"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> </section> </access> PKb��\ ����"components/com_plugins/plugins.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_plugins</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_PLUGINS_XML_DESCRIPTION</description> <administration> <files folder="admin"> <filename>config.xml</filename> <filename>controller.php</filename> <filename>plugins.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_plugins.ini</language> <language tag="en-GB">language/en-GB.com_plugins.sys.ini</language> </languages> </administration> </extension> PKb��\��9components/com_plugins/views/plugin/tmpl/edit_options.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_plugins * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; foreach ($this->fieldsets as $name => $fieldset) { if (!isset($fieldset->repeat) || isset($fieldset->repeat) && $fieldset->repeat == false) { $label = !empty($fieldset->label) ? JText::_($fieldset->label, true) : JText::_('COM_PLUGINS_' . $fieldset->name . '_FIELDSET_LABEL', true); $optionsname = 'options-' . $fieldset->name; echo JHtml::_('bootstrap.addTab', 'myTab', $optionsname, $label); if (isset($fieldset->description) && trim($fieldset->description)) { echo '<p class="tip">' . $this->escape(JText::_($fieldset->description)) . '</p>'; } $hidden_fields = ''; foreach ($this->form->getFieldset($name) as $field) { if (!$field->hidden) { ?> <div class="control-group"> <div class="control-label"> <?php echo $field->label; ?> </div> <div class="controls"> <?php echo $field->input; ?> </div> </div> <?php } else { $hidden_fields .= $field->input; } } echo $hidden_fields; echo JHtml::_('bootstrap.endTab'); } } PKb��\��Y"1components/com_plugins/views/plugin/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_plugins * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('formbehavior.chosen', 'select'); $this->fieldsets = $this->form->getFieldsets('params'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'plugin.cancel' || document.formvalidator.isValid(document.getElementById('style-form'))) { Joomla.submitform(task, document.getElementById('style-form')); } }; "); ?> <form action="<?php echo JRoute::_('index.php?option=com_plugins&layout=edit&extension_id=' . (int) $this->item->extension_id); ?>" method="post" name="adminForm" id="style-form" class="form-validate"> <div class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'general')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'general', JText::_('COM_PLUGINS_PLUGIN', true)); ?> <div class="row-fluid"> <div class="span9"> <?php if ($this->item->xml) : ?> <?php if ($this->item->xml->description) : ?> <h3> <?php if ($this->item->xml) { echo ($text = (string) $this->item->xml->name) ? JText::_($text) : $this->item->name; } else { echo JText::_('COM_PLUGINS_XML_ERR'); } ?> </h3> <div class="info-labels"> <span class="label hasTooltip" title="<?php echo JHtml::tooltipText('COM_PLUGINS_FIELD_FOLDER_LABEL', 'COM_PLUGINS_FIELD_FOLDER_DESC'); ?>"> <?php echo $this->form->getValue('folder'); ?> </span> / <span class="label hasTooltip" title="<?php echo JHtml::tooltipText('COM_PLUGINS_FIELD_ELEMENT_LABEL', 'COM_PLUGINS_FIELD_ELEMENT_DESC'); ?>"> <?php echo $this->form->getValue('element'); ?> </span> </div> <div> <?php $short_description = JText::_($this->item->xml->description); $this->fieldset = 'description'; $long_description = JLayoutHelper::render('joomla.edit.fieldset', $this); if(!$long_description) { $truncated = JHtmlString::truncate($short_description, 550, true, false); if(strlen($truncated) > 500) { $long_description = $short_description; $short_description = JHtmlString::truncate($truncated, 250); if($short_description == $long_description) { $long_description = ''; } } } ?> <p><?php echo $short_description; ?></p> <?php if ($long_description) : ?> <p class="readmore"> <a href="#" onclick="jQuery('.nav-tabs a[href=#description]').tab('show');"> <?php echo JText::_('JGLOBAL_SHOW_FULL_DESCRIPTION'); ?> </a> </p> <?php endif; ?> </div> <?php endif; ?> <?php else : ?> <div class="alert alert-error"><?php echo JText::_('COM_PLUGINS_XML_ERR'); ?></div> <?php endif; ?> <?php $this->fieldset = 'basic'; $html = JLayoutHelper::render('joomla.edit.fieldset', $this); echo $html ? '<hr />' . $html : ''; ?> </div> <div class="span3"> <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?> <div class="form-vertical"> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('ordering'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('ordering'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('folder'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('folder'); ?> </div> </div> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('element'); ?> </div> <div class="controls"> <?php echo $this->form->getInput('element'); ?> </div> </div> </div> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php if (isset($long_description) && $long_description != '') : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'description', JText::_('JGLOBAL_FIELDSET_DESCRIPTION', true)); ?> <?php echo $long_description; ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php $this->fieldsets = array(); $this->ignore_fieldsets = array('basic', 'description'); echo JLayoutHelper::render('joomla.edit.params', $this); ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> </div> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\��%���1components/com_plugins/views/plugin/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_plugins * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View to edit a plugin. * * @since 1.5 */ class PluginsViewPlugin extends JViewLegacy { protected $item; protected $form; protected $state; /** * Display the view. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return mixed A string if successful, otherwise a Error object. */ public function display($tpl = null) { $this->state = $this->get('State'); $this->item = $this->get('Item'); $this->form = $this->get('Form'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JFactory::getApplication()->input->set('hidemainmenu', true); $canDo = JHelperContent::getActions('com_plugins'); JToolbarHelper::title(JText::sprintf('COM_PLUGINS_MANAGER_PLUGIN', JText::_($this->item->name)), 'power-cord plugin'); // If not checked out, can save the item. if ($canDo->get('core.edit')) { JToolbarHelper::apply('plugin.apply'); JToolbarHelper::save('plugin.save'); } JToolbarHelper::cancel('plugin.cancel', 'JTOOLBAR_CLOSE'); JToolbarHelper::divider(); // Get the help information for the plugin item. $lang = JFactory::getLanguage(); $help = $this->get('Help'); if ($lang->hasKey($help->url)) { $debug = $lang->setDebug(false); $url = JText::_($help->url); $lang->setDebug($debug); } else { $url = null; } JToolbarHelper::help($help->key, false, $url); } } PKb��\ߜ6�5!5!5components/com_plugins/views/plugins/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_plugins * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canOrder = $user->authorise('core.edit.state', 'com_plugins'); $saveOrder = $listOrder == 'ordering'; if ($saveOrder) { $saveOrderingUrl = 'index.php?option=com_plugins&task=plugins.saveOrderAjax&tmpl=component'; JHtml::_('sortablelist.sortable', 'pluginList', 'adminForm', strtolower($listDirn), $saveOrderingUrl); } $sortFields = $this->getSortFields(); JFactory::getDocument()->addScriptDeclaration(' Joomla.orderTable = function() { table = document.getElementById("sortTable"); direction = document.getElementById("directionTable"); order = table.options[table.selectedIndex].value; if (order != "' . $listOrder . '") { dirn = "asc"; } else { dirn = direction.options[direction.selectedIndex].value; } Joomla.tableOrdering(order, dirn, ""); }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_plugins&view=plugins'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <label for="filter_search" class="element-invisible"><?php echo JText::_('JSEARCH_FILTER');?></label> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_PLUGINS_SEARCH_IN_TITLE'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> <div class="btn-group pull-right hidden-phone"> <label for="directionTable" class="element-invisible"><?php echo JText::_('JFIELD_ORDERING_DESC');?></label> <select name="directionTable" id="directionTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JFIELD_ORDERING_DESC');?></option> <option value="asc" <?php if ($listDirn == 'asc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_ASCENDING');?></option> <option value="desc" <?php if ($listDirn == 'desc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_DESCENDING');?></option> </select> </div> <div class="btn-group pull-right"> <label for="sortTable" class="element-invisible"><?php echo JText::_('JGLOBAL_SORT_BY');?></label> <select name="sortTable" id="sortTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JGLOBAL_SORT_BY');?></option> <?php echo JHtml::_('select.options', $sortFields, 'value', 'text', $listOrder);?> </select> </div> </div> <div class="clearfix"> </div> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('COM_PLUGINS_MSG_MANAGE_NO_PLUGINS'); ?> </div> <?php else : ?> <table class="table table-striped" id="pluginList"> <thead> <tr> <th width="1%" class="nowrap center"> <?php echo JHtml::_('grid.sort', '<span class="icon-menu-2"></span>', 'ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?> </th> <th width="1%" class="hidden-phone"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="1%" class="nowrap center"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'enabled', $listDirn, $listOrder); ?> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'COM_PLUGINS_NAME_HEADING', 'name', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_PLUGINS_FOLDER_HEADING', 'folder', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_PLUGINS_ELEMENT_HEADING', 'element', $listDirn, $listOrder); ?> </th> <th width="5%" class="hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'access', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'extension_id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="12"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : $ordering = ($listOrder == 'ordering'); $canEdit = $user->authorise('core.edit', 'com_plugins'); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_plugins') && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>" sortable-group-id="<?php echo $item->folder?>"> <td class="order nowrap center hidden-phone"> <?php $iconClass = ''; if (!$canChange) { $iconClass = ' inactive'; } elseif (!$saveOrder) { $iconClass = ' inactive tip-top hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED'); } ?> <span class="sortable-handler<?php echo $iconClass ?>"> <span class="icon-menu"></span> </span> <?php if ($canChange && $saveOrder) : ?> <input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering;?>" class="width-20 text-area-order " /> <?php endif; ?> </td> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->extension_id); ?> </td> <td class="center"> <?php echo JHtml::_('jgrid.published', $item->enabled, $i, 'plugins.', $canChange); ?> </td> <td> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'plugins.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_plugins&task=plugin.edit&extension_id=' . (int) $item->extension_id); ?>"> <?php echo $item->name; ?></a> <?php else : ?> <?php echo $item->name; ?> <?php endif; ?> </td> <td class="nowrap small hidden-phone"> <?php echo $this->escape($item->folder);?> </td> <td class="nowrap small hidden-phone"> <?php echo $this->escape($item->element);?> </td> <td class="small hidden-phone"> <?php echo $this->escape($item->access_level); ?> </td> <td class="hidden-phone"> <?php echo (int) $item->extension_id;?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif;?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\��]]2components/com_plugins/views/plugins/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_plugins * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of plugins. * * @since 1.5 */ class PluginsViewPlugins extends JViewLegacy { protected $items; protected $pagination; protected $state; /** * Display the view. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return mixed A string if successful, otherwise a Error object. */ public function display($tpl = null) { $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_plugins'); JToolbarHelper::title(JText::_('COM_PLUGINS_MANAGER_PLUGINS'), 'power-cord plugin'); if ($canDo->get('core.edit')) { JToolbarHelper::editList('plugin.edit'); } if ($canDo->get('core.edit.state')) { JToolbarHelper::publish('plugins.publish', 'JTOOLBAR_ENABLE', true); JToolbarHelper::unpublish('plugins.unpublish', 'JTOOLBAR_DISABLE', true); JToolbarHelper::checkin('plugins.checkin'); } if ($canDo->get('core.admin')) { JToolbarHelper::preferences('com_plugins'); } JToolbarHelper::help('JHELP_EXTENSIONS_PLUGIN_MANAGER'); JHtmlSidebar::setAction('index.php?option=com_plugins&view=plugins'); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_PUBLISHED'), 'filter_enabled', JHtml::_('select.options', PluginsHelper::publishedOptions(), 'value', 'text', $this->state->get('filter.enabled'), true) ); JHtmlSidebar::addFilter( JText::_('COM_PLUGINS_OPTION_FOLDER'), 'filter_folder', JHtml::_('select.options', PluginsHelper::folderOptions(), 'value', 'text', $this->state->get('filter.folder')) ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_ACCESS'), 'filter_access', JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access')) ); $this->sidebar = JHtmlSidebar::render(); } /** * Returns an array of fields the table can be sorted by. * * @return array Array containing the field name to sort by as the key and display text as value. * * @since 3.0 */ protected function getSortFields() { return array( 'ordering' => JText::_('JGRID_HEADING_ORDERING'), 'enabled' => JText::_('JSTATUS'), 'name' => JText::_('JGLOBAL_TITLE'), 'folder' => JText::_('COM_PLUGINS_FOLDER_HEADING'), 'element' => JText::_('COM_PLUGINS_ELEMENT_HEADING'), 'access' => JText::_('JGRID_HEADING_ACCESS'), 'extension_id' => JText::_('JGRID_HEADING_ID') ); } } PKb��\i:ů� � *components/com_plugins/helpers/plugins.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_plugins * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Plugins component helper. * * @since 1.6 */ class PluginsHelper { public static $extension = 'com_plugins'; /** * Configure the Linkbar. * * @param string $vName The name of the active view. * * @return void */ public static function addSubmenu($vName) { // No submenu for this component. } /** * Gets a list of the actions that can be performed. * * @return JObject * * @deprecated 3.2 Use JHelperContent::getActions() instead */ public static function getActions() { // Log usage of deprecated function. JLog::add(__METHOD__ . '() is deprecated, use JHelperContent::getActions() with new arguments order instead.', JLog::WARNING, 'deprecated'); // Get list of actions. $result = JHelperContent::getActions('com_plugins'); return $result; } /** * Returns an array of standard published state filter options. * * @return string The HTML code for the select tag */ public static function publishedOptions() { // Build the active state filter options. $options = array(); $options[] = JHtml::_('select.option', '1', 'JENABLED'); $options[] = JHtml::_('select.option', '0', 'JDISABLED'); return $options; } /** * Returns an array of standard published state filter options. * * @return string The HTML code for the select tag */ public static function folderOptions() { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('DISTINCT(folder) AS value, folder AS text') ->from('#__extensions') ->where($db->quoteName('type') . ' = ' . $db->quote('plugin')) ->order('folder'); $db->setQuery($query); try { $options = $db->loadObjectList(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); } return $options; } /** * Parse the template file. * * @param string $templateBaseDir Base path to the template directory. * @param string $templateDir Template directory. * * @return JObject */ public function parseXMLTemplateFile($templateBaseDir, $templateDir) { $data = new JObject; // Check of the xml file exists. $filePath = JPath::clean($templateBaseDir . '/templates/' . $templateDir . '/templateDetails.xml'); if (is_file($filePath)) { $xml = JInstaller::parseXMLInstallFile($filePath); if ($xml['type'] != 'template') { return false; } foreach ($xml as $key => $value) { $data->set($key, $value); } } return $data; } } PKb��\��P��7components/com_plugins/models/fields/pluginordering.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_plugins * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; JFormHelper::loadFieldClass('ordering'); /** * Supports an HTML select list of plugins. * * @since 1.6 */ class JFormFieldPluginordering extends JFormFieldOrdering { /** * The form field type. * * @var string * @since 1.6 */ protected $type = 'Pluginordering'; /** * Builds the query for the ordering list. * * @return JDatabaseQuery The query for the ordering form field. */ protected function getQuery() { $db = JFactory::getDbo(); $folder = $this->form->getValue('folder'); // Build the query for the ordering list. $query = $db->getQuery(true) ->select( array( $db->quoteName('ordering', 'value'), $db->quoteName('name', 'text'), $db->quoteName('type'), $db->quote('folder'), $db->quote('extension_id') ) ) ->from($db->quoteName('#__extensions')) ->where('(type =' . $db->quote('plugin') . 'AND folder=' . $db->quote($folder) . ')') ->order('ordering'); return $query; } /** * Retrieves the current Item's Id. * * @return integer The current item ID. */ protected function getItemId() { return (int) $this->form->getValue('extension_id'); } } PKb��\����)components/com_plugins/models/plugins.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_plugins * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Methods supporting a list of plugin records. * * @since 1.6 */ class PluginsModelPlugins extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'extension_id', 'a.extension_id', 'name', 'a.name', 'folder', 'a.folder', 'element', 'a.element', 'checked_out', 'a.checked_out', 'checked_out_time', 'a.checked_out_time', 'state', 'a.state', 'enabled', 'a.enabled', 'access', 'a.access', 'access_level', 'ordering', 'a.ordering', 'client_id', 'a.client_id', ); } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $accessId = $this->getUserStateFromRequest($this->context . '.filter.access', 'filter_access', null, 'int'); $this->setState('filter.access', $accessId); $state = $this->getUserStateFromRequest($this->context . '.filter.enabled', 'filter_enabled', '', 'string'); $this->setState('filter.enabled', $state); $folder = $this->getUserStateFromRequest($this->context . '.filter.folder', 'filter_folder', null, 'cmd'); $this->setState('filter.folder', $folder); $language = $this->getUserStateFromRequest($this->context . '.filter.language', 'filter_language', ''); $this->setState('filter.language', $language); // Load the parameters. $params = JComponentHelper::getParams('com_plugins'); $this->setState('params', $params); // List state information. parent::populateState('folder', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.access'); $id .= ':' . $this->getState('filter.state'); $id .= ':' . $this->getState('filter.folder'); $id .= ':' . $this->getState('filter.language'); return parent::getStoreId($id); } /** * Returns an object list. * * @param JDatabaseQuery $query A database query object. * @param integer $limitstart Offset. * @param integer $limit The number of records. * * @return array */ protected function _getList($query, $limitstart = 0, $limit = 0) { $search = $this->getState('filter.search'); $ordering = $this->getState('list.ordering', 'ordering'); if ($ordering == 'name' || (!empty($search) && stripos($search, 'id:') !== 0)) { $this->_db->setQuery($query); $result = $this->_db->loadObjectList(); $this->translate($result); if (!empty($search)) { $escapedSearchString = $this->refineSearchStringToRegex($search, '/'); foreach ($result as $i => $item) { if (!preg_match("/$escapedSearchString/i", $item->name)) { unset($result[$i]); } } } $direction = ($this->getState('list.direction') == 'desc') ? -1 : 1; JArrayHelper::sortObjects($result, $ordering, $direction, true, true); $total = count($result); $this->cache[$this->getStoreId('getTotal')] = $total; if ($total < $limitstart) { $limitstart = 0; $this->setState('list.start', 0); } return array_slice($result, $limitstart, $limit ? $limit : null); } else { if ($ordering == 'ordering') { $query->order('a.folder ASC'); $ordering = 'a.ordering'; } $query->order($this->_db->quoteName($ordering) . ' ' . $this->getState('list.direction')); if ($ordering == 'folder') { $query->order('a.ordering ASC'); } $result = parent::_getList($query, $limitstart, $limit); $this->translate($result); return $result; } } /** * Translate a list of objects. * * @param array &$items The array of objects. * * @return array The array of translated objects. */ protected function translate(&$items) { $lang = JFactory::getLanguage(); foreach ($items as &$item) { $source = JPATH_PLUGINS . '/' . $item->folder . '/' . $item->element; $extension = 'plg_' . $item->folder . '_' . $item->element; $lang->load($extension . '.sys', JPATH_ADMINISTRATOR, null, false, true) || $lang->load($extension . '.sys', $source, null, false, true); $item->name = JText::_($item->name); } } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.extension_id , a.name, a.element, a.folder, a.checked_out, a.checked_out_time,' . ' a.enabled, a.access, a.ordering' ) ) ->from($db->quoteName('#__extensions') . ' AS a') ->where($db->quoteName('type') . ' = ' . $db->quote('plugin')); // Join over the users for the checked out user. $query->select('uc.name AS editor') ->join('LEFT', '#__users AS uc ON uc.id=a.checked_out'); // Join over the asset groups. $query->select('ag.title AS access_level') ->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); // Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } // Filter by published state. $published = $this->getState('filter.enabled'); if (is_numeric($published)) { $query->where('a.enabled = ' . (int) $published); } elseif ($published === '') { $query->where('(a.enabled IN (0, 1))'); } // Filter by state. $query->where('a.state >= 0'); // Filter by folder. if ($folder = $this->getState('filter.folder')) { $query->where('a.folder = ' . $db->quote($folder)); } // Filter by search in name or id. $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.extension_id = ' . (int) substr($search, 3)); } } return $query; } } PKb��\�rMM.components/com_plugins/models/forms/plugin.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset addfieldpath="/administrator/components/com_plugins/models/fields" > <field name="extension_id" label="JGLOBAL_FIELD_ID_LABEL" description ="JGLOBAL_FIELD_ID_DESC" type="text" default="0" readonly="true" class="readonly" /> <field name="name" type="hidden" label="COM_PLUGINS_FIELD_NAME_LABEL" description="COM_PLUGINS_FIELD_NAME_DESC" /> <field name="enabled" type="list" class="chzn-color-state" label="JSTATUS" description="COM_PLUGINS_FIELD_ENABLED_DESC" size="1" default="1"> <option value="1">JENABLED</option> <option value="0">JDISABLED</option> </field> <field name="access" type="accesslevel" label="JFIELD_ACCESS_LABEL" description="JFIELD_ACCESS_DESC" size="1" /> <field name="ordering" type="Pluginordering" label="JFIELD_ORDERING_LABEL" description="JFIELD_ORDERING_DESC" /> <field name="folder" type="text" class="readonly" size="20" label="COM_PLUGINS_FIELD_FOLDER_LABEL" description="COM_PLUGINS_FIELD_FOLDER_DESC" readonly="true" /> <field name="element" type="text" class="readonly" size="20" label="COM_PLUGINS_FIELD_ELEMENT_LABEL" description="COM_PLUGINS_FIELD_ELEMENT_DESC" readonly="true" /> </fieldset> </form> PKb��\�S)��$�$(components/com_plugins/models/plugin.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_plugins * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * Plugin model. * * @since 1.6 */ class PluginsModelPlugin extends JModelAdmin { /** * @var string The help screen key for the module. * @since 1.6 */ protected $helpKey = 'JHELP_EXTENSIONS_PLUGIN_MANAGER_EDIT'; /** * @var string The help screen base URL for the module. * @since 1.6 */ protected $helpURL; /** * @var array An array of cached plugin items. * @since 1.6 */ protected $_cache; /** * Constructor. * * @param array $config An optional associative array of configuration settings. */ public function __construct($config = array()) { $config = array_merge( array( 'event_after_save' => 'onExtensionAfterSave', 'event_before_save' => 'onExtensionBeforeSave', 'events_map' => array( 'save' => 'extension' ) ), $config ); parent::__construct($config); } /** * Method to get the record form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return JForm A JForm object on success, false on failure. * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // The folder and element vars are passed when saving the form. if (empty($data)) { $item = $this->getItem(); $folder = $item->folder; $element = $item->element; } else { $folder = JArrayHelper::getValue($data, 'folder', '', 'cmd'); $element = JArrayHelper::getValue($data, 'element', '', 'cmd'); } // These variables are used to add data from the plugin XML files. $this->setState('item.folder', $folder); $this->setState('item.element', $element); // Get the form. $form = $this->loadForm('com_plugins.plugin', 'plugin', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } // Modify the form based on access controls. if (!$this->canEditState((object) $data)) { // Disable fields for display. $form->setFieldAttribute('ordering', 'disabled', 'true'); $form->setFieldAttribute('enabled', 'disabled', 'true'); // Disable fields while saving. // The controller has already verified this is a record you can edit. $form->setFieldAttribute('ordering', 'filter', 'unset'); $form->setFieldAttribute('enabled', 'filter', 'unset'); } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_plugins.edit.plugin.data', array()); if (empty($data)) { $data = $this->getItem(); } $this->preprocessData('com_plugins.plugin', $data); return $data; } /** * Method to get a single record. * * @param integer $pk The id of the primary key. * * @return mixed Object on success, false on failure. */ public function getItem($pk = null) { $pk = (!empty($pk)) ? $pk : (int) $this->getState('plugin.id'); if (!isset($this->_cache[$pk])) { // Get a row instance. $table = $this->getTable(); // Attempt to load the row. $return = $table->load($pk); // Check for a table object error. if ($return === false && $table->getError()) { $this->setError($table->getError()); return false; } // Convert to the JObject before adding other data. $properties = $table->getProperties(1); $this->_cache[$pk] = JArrayHelper::toObject($properties, 'JObject'); // Convert the params field to an array. $registry = new Registry; $registry->loadString($table->params); $this->_cache[$pk]->params = $registry->toArray(); // Get the plugin XML. $path = JPath::clean(JPATH_PLUGINS . '/' . $table->folder . '/' . $table->element . '/' . $table->element . '.xml'); if (file_exists($path)) { $this->_cache[$pk]->xml = simplexml_load_file($path); } else { $this->_cache[$pk]->xml = null; } } return $this->_cache[$pk]; } /** * Returns a reference to the Table object, always creating it. * * @param string $type The table type to instantiate. * @param string $prefix A prefix for the table class name. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A database object */ public function getTable($type = 'Extension', $prefix = 'JTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @return void * * @since 1.6 */ protected function populateState() { // Execute the parent method. parent::populateState(); $app = JFactory::getApplication('administrator'); // Load the User state. $pk = $app->input->getInt('extension_id'); $this->setState('plugin.id', $pk); } /** * Preprocess the form. * * @param JForm $form A form object. * @param mixed $data The data expected for the form. * @param string $group Cache group name. * * @return mixed True if successful. * * @throws Exception if there is an error in the form event. * @since 1.6 */ protected function preprocessForm(JForm $form, $data, $group = 'content') { jimport('joomla.filesystem.path'); $folder = $this->getState('item.folder'); $element = $this->getState('item.element'); $lang = JFactory::getLanguage(); // Load the core and/or local language sys file(s) for the ordering field. $db = $this->getDbo(); $query = $db->getQuery(true) ->select($db->quoteName('element')) ->from($db->quoteName('#__extensions')) ->where($db->quoteName('type') . ' = ' . $db->quote('plugin')) ->where($db->quoteName('folder') . ' = ' . $db->quote($folder)); $db->setQuery($query); $elements = $db->loadColumn(); foreach ($elements as $elementa) { $lang->load('plg_' . $folder . '_' . $elementa . '.sys', JPATH_ADMINISTRATOR, null, false, true) || $lang->load('plg_' . $folder . '_' . $elementa . '.sys', JPATH_PLUGINS . '/' . $folder . '/' . $elementa, null, false, true); } if (empty($folder) || empty($element)) { $app = JFactory::getApplication(); $app->redirect(JRoute::_('index.php?option=com_plugins&view=plugins', false)); } $formFile = JPath::clean(JPATH_PLUGINS . '/' . $folder . '/' . $element . '/' . $element . '.xml'); if (!file_exists($formFile)) { throw new Exception(JText::sprintf('COM_PLUGINS_ERROR_FILE_NOT_FOUND', $element . '.xml')); } // Load the core and/or local language file(s). $lang->load('plg_' . $folder . '_' . $element, JPATH_ADMINISTRATOR, null, false, true) || $lang->load('plg_' . $folder . '_' . $element, JPATH_PLUGINS . '/' . $folder . '/' . $element, null, false, true); if (file_exists($formFile)) { // Get the plugin form. if (!$form->loadFile($formFile, false, '//config')) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } } // Attempt to load the xml file. if (!$xml = simplexml_load_file($formFile)) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } // Get the help data from the XML file if present. $help = $xml->xpath('/extension/help'); if (!empty($help)) { $helpKey = trim((string) $help[0]['key']); $helpURL = trim((string) $help[0]['url']); $this->helpKey = $helpKey ? $helpKey : $this->helpKey; $this->helpURL = $helpURL ? $helpURL : $this->helpURL; } // Trigger the default form events. parent::preprocessForm($form, $data, $group); } /** * A protected method to get a set of ordering conditions. * * @param object $table A record object. * * @return array An array of conditions to add to add to ordering queries. * * @since 1.6 */ protected function getReorderConditions($table) { $condition = array(); $condition[] = 'type = ' . $this->_db->quote($table->type); $condition[] = 'folder = ' . $this->_db->quote($table->folder); return $condition; } /** * Override method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 1.6 */ public function save($data) { // Setup type. $data['type'] = 'plugin'; return parent::save($data); } /** * Get the necessary data to load an item help screen. * * @return object An object with key, url, and local properties for loading the item help screen. * * @since 1.6 */ public function getHelp() { return (object) array('key' => $this->helpKey, 'url' => $this->helpURL); } /** * Custom clean cache method, plugins are cached in 2 places for different clients. * * @param string $group Cache group name. * @param integer $client_id Application client id. * * @return void * * @since 1.6 */ protected function cleanCache($group = null, $client_id = 0) { parent::cleanCache('com_plugins', 0); parent::cleanCache('com_plugins', 1); } } PKb��\��"�$$%components/com_plugins/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_plugins * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Plugins master display controller. * * @since 1.5 */ class PluginsController extends JControllerLegacy { /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { require_once JPATH_COMPONENT . '/helpers/plugins.php'; // Load the submenu. PluginsHelper::addSubmenu($this->input->get('view', 'plugins')); $view = $this->input->get('view', 'plugins'); $layout = $this->input->get('layout', 'default'); $id = $this->input->getInt('extension_id'); // Check for edit form. if ($view == 'plugin' && $layout == 'edit' && !$this->checkEditId('com_plugins.edit.plugin', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_plugins&view=plugins', false)); return false; } parent::display(); } } PKb��\���0components/com_contenthistory/contenthistory.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.2" method="upgrade"> <name>com_contenthistory</name> <author>Joomla! Project</author> <creationDate>May 2013</creationDate> <copyright>(C) 2005 - 2015 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.2.0</version> <description>COM_CONTENTHISTORY_XML_DESCRIPTION</description> <files folder="site"> <filename>contenthistory.php</filename> <filename>index.html</filename> </files> <administration> <files folder="admin"> <filename>controller.php</filename> <filename>contenthistory.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>media</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_contenthistory.ini</language> <language tag="en-GB">language/en-GB.com_contenthistory.sys.ini</language> </languages> </administration> </extension> PKb��\,����5components/com_contenthistory/controllers/history.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contenthistory * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Contenthistory list controller class. * * @since 3.2 */ class ContenthistoryControllerHistory extends JControllerAdmin { /** * Deletes and returns correctly. * * @return void * * @since 3.2 */ public function delete() { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Get items to remove from the request. $cid = $this->input->get('cid', array(), 'array'); if (!is_array($cid) || count($cid) < 1) { JError::raiseWarning(500, JText::_('COM_CONTENTHISTORY_NO_ITEM_SELECTED')); } else { // Get the model. $model = $this->getModel(); // Make sure the item ids are integers jimport('joomla.utilities.arrayhelper'); JArrayHelper::toInteger($cid); // Remove the items. if ($model->delete($cid)) { $this->setMessage(JText::plural('COM_CONTENTHISTORY_N_ITEMS_DELETED', count($cid))); } else { $this->setMessage($model->getError()); } } $this->setRedirect( JRoute::_( 'index.php?option=com_contenthistory&view=history&layout=modal&tmpl=component&item_id=' . $this->input->getInt('item_id') . '&type_id=' . $this->input->getInt('type_id') . '&type_alias=' . $this->input->getCmd('type_alias') . '&' . JSession::getFormToken() . '=1', false ) ); } /** * Proxy for getModel. * * @param string $name The name of the model * @param string $prefix The prefix for the model * @param array $config An additional array of parameters * * @return JModelLegacy The model * * @since 3.2 */ public function getModel($name = 'History', $prefix = 'ContenthistoryModel', $config = array('ignore_request' => true)) { return parent::getModel($name, $prefix, $config); } /** * Toggles the keep forever value for one or more history rows. If it was Yes, changes to No. If No, changes to Yes. * * @return void * * @since 3.2 */ public function keep() { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Get items to remove from the request. $cid = $this->input->get('cid', array(), 'array'); if (!is_array($cid) || count($cid) < 1) { JError::raiseWarning(500, JText::_('COM_CONTENTHISTORY_NO_ITEM_SELECTED')); } else { // Get the model. $model = $this->getModel(); // Make sure the item ids are integers jimport('joomla.utilities.arrayhelper'); JArrayHelper::toInteger($cid); // Remove the items. if ($model->keep($cid)) { $this->setMessage(JText::plural('COM_CONTENTHISTORY_N_ITEMS_KEEP_TOGGLE', count($cid))); } else { $this->setMessage($model->getError()); } } $this->setRedirect( JRoute::_( 'index.php?option=com_contenthistory&view=history&layout=modal&tmpl=component&item_id=' . $this->input->getInt('item_id') . '&type_id=' . $this->input->getInt('type_id') . '&type_alias=' . $this->input->getCmd('type_alias') . '&' . JSession::getFormToken() . '=1', false ) ); } } PKb��\���ff5components/com_contenthistory/controllers/preview.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contenthistory * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Contenthistory list controller class. * * @since 3.2 */ class ContenthistoryControllerPreview extends JControllerLegacy { /** * Proxy for getModel. * * @param string $name The name of the model * @param string $prefix The prefix for the model * @param array $config An additional array of parameters * * @return JModelLegacy The model * * @since 3.2 */ public function getModel($name = 'Preview', $prefix = 'ContenthistoryModel', $config = array('ignore_request' => true)) { return parent::getModel($name, $prefix, $config); } } PKb��\�|��B!B!:components/com_contenthistory/views/history/tmpl/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JSession::checkToken('get') or die(JText::_('JINVALID_TOKEN')); JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('jquery.framework'); $input = JFactory::getApplication()->input; $field = $input->getCmd('field'); $function = 'jSelectContenthistory_' . $field; $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $message = addslashes(JText::_('COM_CONTENTHISTORY_BUTTON_SELECT_ONE')); $compareMessage = addslashes(JText::_('COM_CONTENTHISTORY_BUTTON_SELECT_TWO')); $deleteMessage = addslashes(JText::_('JLIB_HTML_PLEASE_MAKE_A_SELECTION_FROM_THE_LIST')); $aliasArray = explode('.', $this->state->type_alias); $option = (end($aliasArray) == 'category') ? 'com_categories&extension=' . implode('.', array_slice($aliasArray, 0, count($aliasArray) - 1)) : $aliasArray[0]; $filter = JFilterInput::getInstance(); $task = $filter->clean(end($aliasArray)) . '.loadhistory'; $loadUrl = JRoute::_('index.php?option=' . $filter->clean($option) . '&task=' . $task); $deleteUrl = JRoute::_('index.php?option=com_contenthistory&task=history.delete'); $hash = $this->state->get('sha1_hash'); $formUrl = 'index.php?option=com_contenthistory&view=history&layout=modal&tmpl=component&item_id=' . $this->state->get('item_id') . '&type_id=' . $this->state->get('type_id') . '&type_alias=' . $this->state->get('type_alias') . '&' . JSession::getFormToken() . '=1'; JFactory::getDocument()->addScriptDeclaration(" (function ($){ $(document).ready(function (){ $('#toolbar-load').click(function() { var ids = $('input[id*=\'cb\']:checked'); if (ids.length == 1) { // Add version item id to URL var url = $('#toolbar-load').attr('data-url') + '&version_id=' + ids[0].value; $('#content-url').attr('data-url', url); if (window.parent) { window.parent.location = url; } } else { alert('" . $message . "'); } }); $('#toolbar-preview').click(function() { var windowSizeArray = ['width=800, height=600, resizable=yes, scrollbars=yes']; var ids = $('input[id*=\'cb\']:checked'); if (ids.length == 1) { // Add version item id to URL var url = $('#toolbar-preview').attr('data-url') + '&version_id=' + ids[0].value; $('#content-url').attr('data-url', url); if (window.parent) { window.open(url, '', windowSizeArray); return false; } } else { alert('" . $message . "'); } }); $('#toolbar-compare').click(function() { var windowSizeArray = ['width=1000, height=600, resizable=yes, scrollbars=yes']; var ids = $('input[id*=\'cb\']:checked'); if (ids.length == 2) { // Add version item ids to URL var url = $('#toolbar-compare').attr('data-url') + '&id1=' + ids[0].value + '&id2=' + ids[1].value; $('#content-url').attr('data-url', url); if (window.parent) { window.open(url, '', windowSizeArray); return false; } } else { alert('" . $compareMessage . "'); } }); }); })(jQuery); " ); ?> <h3><?php echo JText::_('COM_CONTENTHISTORY_MODAL_TITLE'); ?></h3> <div class="btn-group pull-right"> <button id="toolbar-load" type="submit" class="btn hasTooltip" data-placement="bottom" title="<?php echo JText::_('COM_CONTENTHISTORY_BUTTON_LOAD_DESC'); ?>" data-url="<?php echo JRoute::_($loadUrl);?>" id="content-url"> <span class="icon-upload"></span><?php echo JText::_('COM_CONTENTHISTORY_BUTTON_LOAD'); ?></button> <button id="toolbar-preview" type="button" class="btn hasTooltip" data-placement="bottom" title="<?php echo JText::_('COM_CONTENTHISTORY_BUTTON_PREVIEW_DESC'); ?>" data-url="<?php echo JRoute::_('index.php?option=com_contenthistory&view=preview&layout=preview&tmpl=component&' . JSession::getFormToken() . '=1');?>"> <span class="icon-search"></span><?php echo JText::_('COM_CONTENTHISTORY_BUTTON_PREVIEW'); ?></button> <button id="toolbar-compare" type="button" class="btn hasTooltip" data-placement="bottom" title="<?php echo JText::_('COM_CONTENTHISTORY_BUTTON_COMPARE_DESC'); ?>" data-url="<?php echo JRoute::_('index.php?option=com_contenthistory&view=compare&layout=compare&tmpl=component&' . JSession::getFormToken() . '=1');?>"> <span class="icon-zoom-in"></span><?php echo JText::_('COM_CONTENTHISTORY_BUTTON_COMPARE'); ?></button> <button onclick="if (document.adminForm.boxchecked.value==0){alert('<?php echo $deleteMessage; ?>');}else{ Joomla.submitbutton('history.keep')}" class="btn hasTooltip" title="<?php echo JText::_('COM_CONTENTHISTORY_BUTTON_KEEP_DESC'); ?>"> <span class="icon-lock"></span><?php echo JText::_('COM_CONTENTHISTORY_BUTTON_KEEP'); ?></button> <button onclick="if (document.adminForm.boxchecked.value==0){alert('<?php echo $deleteMessage; ?>');}else{ Joomla.submitbutton('history.delete')}" class="btn hasTooltip" title="<?php echo JText::_('COM_CONTENTHISTORY_BUTTON_DELETE_DESC'); ?>"> <span class="icon-delete"></span><?php echo JText::_('COM_CONTENTHISTORY_BUTTON_DELETE'); ?></button> </div> <div class="clearfix"></div> <form action="<?php echo JRoute::_($formUrl);?>" method="post" name="adminForm" id="adminForm"> <div id="j-main-container"> <table class="table table-striped table-condensed"> <thead> <tr> <th width="1%" class="center hidden-phone"> <input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" /> </th> <th width="15%"> <?php echo JText::_('JDATE'); ?> </th> <th width="15%"> <?php echo JText::_('COM_CONTENTHISTORY_VERSION_NOTE'); ?> </th> <th width="10%"> <?php echo JText::_('COM_CONTENTHISTORY_KEEP_VERSION'); ?> </th> <th width="15%"> <?php echo JText::_('JAUTHOR'); ?> </th> <th width="10%"> <?php echo JText::_('COM_CONTENTHISTORY_CHARACTER_COUNT'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="15"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php $i = 0; ?> <?php foreach ($this->items as $item) : ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center hidden-phone"> <?php echo JHtml::_('grid.id', $i, $item->version_id); ?> </td> <td align="left"> <a class="save-date" onclick="window.open(this.href,'win2','width=800,height=600,resizable=yes,scrollbars=yes'); return false;" href="<?php echo JRoute::_('index.php?option=com_contenthistory&view=preview&layout=preview&tmpl=component&' . JSession::getFormToken() . '=1&version_id=' . $item->version_id);?>"> <?php echo JHtml::_('date', $item->save_date, 'Y-m-d H:i:s'); ?> </a> <?php if ($item->sha1_hash == $hash) :?> <span class="icon-featured"></span> <?php endif; ?> </td> <td align="left"> <?php echo htmlspecialchars($item->version_note); ?> </td> <td class="center"> <?php if ($item->keep_forever) : ?> <a class="btn btn-micro active" rel="tooltip" href="javascript:void(0);" onclick="return listItemTask('cb<?php echo $i; ?>','history.keep')" data-original-title="<?php echo JText::_('COM_CONTENTHISTORY_BUTTON_KEEP_TOGGLE_OFF'); ?>"> <?php echo JText::_('JYES'); ?> <span class="icon-lock"></span> </a> <?php else : ?> <a class="btn btn-micro active" rel="tooltip" href="javascript:void(0);" onclick="return listItemTask('cb<?php echo $i; ?>','history.keep')" data-original-title="<?php echo JText::_('COM_CONTENTHISTORY_BUTTON_KEEP_TOGGLE_ON'); ?>"> <?php echo JText::_('JNO'); ?> </a> <?php endif; ?> </td> <td align="left"> <?php echo htmlspecialchars($item->editor); ?> </td> <td class="center"> <?php echo number_format((int) $item->character_count, 0, JText::_('DECIMALS_SEPARATOR'), JText::_('THOUSANDS_SEPARATOR')); ?> </td> </tr> <?php $i++; ?> <?php endforeach; ?> </tbody> </table> <div> <?php echo JHtml::_('form.token'); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> </div> </div> </form> PKb��\��]��9components/com_contenthistory/views/history/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contenthistory * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of contenthistory. * * @since 3.2 */ class ContenthistoryViewHistory extends JViewLegacy { protected $items; protected $pagination; protected $state; /** * Method to display the view. * * @param string $tpl A template file to load. [optional] * * @return mixed Exception on failure, void on success. * * @since 3.2 */ public function display($tpl = null) { $this->state = $this->get('State'); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } return parent::display($tpl); } } PKb��\vFѯ�<components/com_contenthistory/views/preview/tmpl/preview.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JSession::checkToken('get') or die(JText::_('JINVALID_TOKEN')); ?> <h3> <?php echo JText::sprintf('COM_CONTENTHISTORY_PREVIEW_SUBTITLE_DATE', $this->item->save_date); ?> <?php if ($this->item->version_note) : ?> <?php echo JText::sprintf('COM_CONTENTHISTORY_PREVIEW_SUBTITLE', $this->item->version_note); ?> <?php endif; ?> </h3> <table class="table table-striped" > <thead><tr> <th width="25%"><?php echo JText::_('COM_CONTENTHISTORY_PREVIEW_FIELD'); ?></th> <th><?php echo JText::_('COM_CONTENTHISTORY_PREVIEW_VALUE'); ?></th> </tr></thead> <tbody> <?php foreach ($this->item->data as $name => $value) : ?> <tr> <?php if (is_object($value->value)): ?> <td><strong><?php echo $value->label; ?></strong></td> <td></td><tr> <?php foreach ($value->value as $subName => $subValue): ?> <?php if ($subValue): ?> <tr> <td><i> <?php echo $subValue->label; ?></i></td> <td><?php echo $subValue->value; ?></td> </tr> <?php endif; ?> <?php endforeach; ?> <?php else: ?> <td><strong><?php echo $value->label; ?></strong></td> <td><?php echo $value->value; ?></td> <?php endif; ?> </tr> <?php endforeach; ?> </tbody> </table> PKb��\�G�m��9components/com_contenthistory/views/preview/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contenthistory * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of contenthistory. * * @since 1.5 */ class ContenthistoryViewPreview extends JViewLegacy { protected $items; protected $state; /** * Method to display the view. * * @param string $tpl A template file to load. [optional] * * @return mixed Exception on failure, void on success. * * @since 3.2 */ public function display($tpl = null) { $this->state = $this->get('State'); $this->item = $this->get('Item'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } return parent::display($tpl); } } PKb��\;6�>��<components/com_contenthistory/views/compare/tmpl/compare.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_users * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JSession::checkToken('get') or die(JText::_('JINVALID_TOKEN')); $version2 = $this->items[0]; $version1 = $this->items[1]; $object1 = $version1->data; $object2 = $version2->data; JHtml::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . '/helpers/html'); JHtml::_('textdiff.textdiff', 'diff'); JFactory::getDocument()->addScriptDeclaration(" (function ($){ $(document).ready(function (){ jQuery('.diffhtml, .diffhtml-header').hide(); }); })(jQuery); " ); ?> <fieldset> <legend> <?php echo JText::sprintf('COM_CONTENTHISTORY_COMPARE_TITLE'); ?> <div class="btn-group pull-right"> <button id="toolbar-all-rows" class="btn hasTooltip" title="<?php echo JText::_('COM_CONTENTHISTORY_BUTTON_COMPARE_ALL_ROWS_DESC'); ?>" onclick="jQuery('.items-equal').show(); jQuery('#toolbar-all-rows').hide(); jQuery('#toolbar-changed-rows').show()" style="display:none" > <?php echo JText::_('COM_CONTENTHISTORY_BUTTON_COMPARE_ALL_ROWS'); ?></button> <button id="toolbar-changed-rows" class="btn hasTooltip" title="<?php echo JText::_('COM_CONTENTHISTORY_BUTTON_COMPARE_CHANGED_ROWS_DESC'); ?>" onclick="jQuery('.items-equal').hide(); jQuery('#toolbar-all-rows').show(); jQuery('#toolbar-changed-rows').hide()"> <?php echo JText::_('COM_CONTENTHISTORY_BUTTON_COMPARE_CHANGED_ROWS'); ?></button> <button class="diff-header btn hasTooltip" title="<?php echo JText::_('COM_CONTENTHISTORY_BUTTON_COMPARE_HTML_DESC'); ?>" onclick="jQuery('.diffhtml, .diffhtml-header').show(); jQuery('.diff, .diff-header').hide()"> <span class="icon-wrench"></span> <?php echo JText::_('COM_CONTENTHISTORY_BUTTON_COMPARE_HTML'); ?></button> <button class="diffhtml-header btn hasTooltip" title="<?php echo JText::_('COM_CONTENTHISTORY_BUTTON_COMPARE_TEXT_DESC'); ?>" onclick="jQuery('.diffhtml, .diffhtml-header').hide(); jQuery('.diff, .diff-header').show()"> <span class="icon-pencil"></span> <?php echo JText::_('COM_CONTENTHISTORY_BUTTON_COMPARE_TEXT'); ?></button> </div> </legend> <table id="diff" class="table table-striped table-condensed"> <thead><tr> <th width="25%"><?php echo JText::_('COM_CONTENTHISTORY_PREVIEW_FIELD'); ?></th> <th style="display:none" /> <th style="display:none" /> <th><?php echo JText::sprintf('COM_CONTENTHISTORY_COMPARE_VALUE1', $version1->save_date, $version1->version_note); ?></th> <th><?php echo JText::sprintf('COM_CONTENTHISTORY_COMPARE_VALUE2', $version2->save_date, $version2->version_note); ?></th> <th class="diff-header"><?php echo JText::_('COM_CONTENTHISTORY_COMPARE_DIFF'); ?></th> <th class="diffhtml-header"><?php echo JText::_('COM_CONTENTHISTORY_COMPARE_DIFF'); ?></th> </tr></thead> <tbody> <?php foreach ($object1 as $name => $value) : ?> <?php $rowClass = ($value->value == $object2->$name->value) ? 'items-equal' : 'items-not-equal'; ?> <tr class="<?php echo $rowClass; ?>"> <?php if (is_object($value->value)): ?> <td><strong><?php echo $value->label; ?></strong></td> <td /><td /><td /> <?php foreach ($value->value as $subName => $subValue): ?> <?php $newSubValue = isset($object2->$name->value->$subName->value) ? $object2->$name->value->$subName->value : ''; ?> <?php if ($subValue->value || $newSubValue): ?> <?php $rowClass = ($subValue->value == $newSubValue) ? 'items-equal' : 'items-not-equal'; ?> <tr class="<?php echo $rowClass; ?>"> <td><i> <?php echo $subValue->label; ?></i></td> <td class="originalhtml" style="display:none" ><?php echo htmlspecialchars($subValue->value); ?></td> <td class="changedhtml" style="display:none" ><?php echo htmlspecialchars($newSubValue); ?></td> <td class="original"><?php echo $subValue->value; ?></td> <td class="changed"><?php echo $newSubValue; ?></td> <td class="diff" /> <td class="diffhtml" /> </tr> <?php endif; ?> <?php endforeach; ?> <?php else: ?> <td><strong><?php echo $value->label; ?></strong></td> <td class="originalhtml" style="display:none" ><?php echo htmlspecialchars($value->value); ?></td> <?php $object2->$name->value = is_object($object2->$name->value) ? json_encode($object2->$name->value) : $object2->$name->value; ?> <td class="changedhtml" style="display:none" ><?php echo htmlspecialchars($object2->$name->value); ?></td> <td class="original"><?php echo $value->value; ?></td> <td class="changed"><?php echo $object2->$name->value; ?></td> <td class="diff" /> <td class="diffhtml" /> <?php endif; ?> </tr> <?php endforeach; ?> </tbody> </table> </fieldset> PKb��\h��9components/com_contenthistory/views/compare/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contenthistory * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of contenthistory. * * @since 3.2 */ class ContenthistoryViewCompare extends JViewLegacy { protected $items; protected $state; /** * Method to display the view. * * @param string $tpl A template file to load. [optional] * * @return mixed Exception on failure, void on success. * * @since 3.2 */ public function display($tpl = null) { $this->state = $this->get('State'); $this->items = $this->get('Items'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } return parent::display($tpl); } } PKb��\��W���7components/com_contenthistory/helpers/html/textdiff.phpnu�[���<?php /** * @package Joomla.Libraries * @subpackage HTML * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_PLATFORM') or die; /** * HTML utility class for creating text diffs using jQuery, diff_patch_match.js and jquery.pretty-text-diff.js JavaScript libraries. * * @since 3.2 */ abstract class JHtmlTextdiff { /** * @var array Array containing information for loaded files * @since 3.2 */ protected static $loaded = array(); /** * Method to load Javascript text diff * * @param string $containerId DOM id of the element where the diff will be rendered * * @return void * * @since 3.2 */ public static function textdiff($containerId) { // Only load once if (isset(static::$loaded[__METHOD__])) { return; } // Depends on jQuery UI JHtml::_('bootstrap.framework'); JHtml::_('script', 'com_contenthistory/diff_match_patch.js', false, true); JHtml::_('script', 'com_contenthistory/jquery.pretty-text-diff.min.js', false, true); JHtml::_('stylesheet', 'com_contenthistory/jquery.pretty-text-diff.css', false, true, false); // Attach diff to document JFactory::getDocument()->addScriptDeclaration(" (function ($){ $(document).ready(function (){ $('#" . $containerId . " tr').prettyTextDiff(); }); })(jQuery); " ); // Set static array static::$loaded[__METHOD__] = true; return; } } PKb��\l��$F+F+8components/com_contenthistory/helpers/contenthistory.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contenthistory * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Categories helper. * * @since 3.2 */ class ContenthistoryHelper { /** * Method to put all field names, including nested ones, in a single array for easy lookup. * * @param stdClass $object Standard class object that may contain one level of nested objects. * * @return array Associative array of all field names, including ones in a nested object. * * @since 3.2 */ public static function createObjectArray($object) { $result = array(); foreach ($object as $name => $value) { $result[$name] = $value; if (is_object($value)) { foreach ($value as $subName => $subValue) { $result[$subName] = $subValue; } } } return $result; } /** * Method to decode JSON-encoded fields in a standard object. Used to unpack JSON strings in the content history data column. * * @param stdClass $jsonString Standard class object that may contain one or more JSON-encoded fields. * * @return stdClass Object with any JSON-encoded fields unpacked. * * @since 3.2 */ public static function decodeFields($jsonString) { $object = json_decode($jsonString); if (is_object($object)) { foreach ($object as $name => $value) { if ($subObject = json_decode($value)) { $object->$name = $subObject; } } } return $object; } /** * Method to get field labels for the fields in the JSON-encoded object. * First we see if we can find translatable labels for the fields in the object. * We translate any we can find and return an array in the format object->name => label. * * @param stdClass $object Standard class object in the format name->value. * @param JTableContenttype $typesTable Table object with content history options. * * @return stdClass Contains two associative arrays. * $formValues->labels in the format name => label (for example, 'id' => 'Article ID'). * $formValues->values in the format name => value (for example, 'state' => 'Published'. * This translates the text from the selected option in the form. * * @since 3.2 */ public static function getFormValues($object, JTableContenttype $typesTable) { $labels = array(); $values = array(); $expandedObjectArray = static::createObjectArray($object); static::loadLanguageFiles($typesTable->type_alias); if ($formFile = static::getFormFile($typesTable)) { if ($xml = simplexml_load_file($formFile)) { // Now we need to get all of the labels from the form $fieldArray = $xml->xpath('//field'); $fieldArray = array_merge($fieldArray, $xml->xpath('//fields')); foreach ($fieldArray as $field) { if ($label = (string) $field->attributes()->label) { $labels[(string) $field->attributes()->name] = JText::_($label); } } // Get values for any list type fields $listFieldArray = $xml->xpath('//field[@type="list" or @type="radio"]'); foreach ($listFieldArray as $field) { $name = (string) $field->attributes()->name; if (isset($expandedObjectArray[$name])) { $optionFieldArray = $field->xpath('option[@value="' . $expandedObjectArray[$name] . '"]'); $valueText = trim((string) $optionFieldArray[0]); $values[(string) $field->attributes()->name] = JText::_($valueText); } } } } $result = new stdClass; $result->labels = $labels; $result->values = $values; return $result; } /** * Method to get the XML form file for this component. Used to get translated field names for history preview. * * @param JTableContenttype $typesTable Table object with content history options. * * @return mixed JModel object if successful, false if no model found. * * @since 3.2 */ public static function getFormFile(JTableContenttype $typesTable) { $result = false; jimport('joomla.filesystem.file'); jimport('joomla.filesystem.folder'); // First, see if we have a file name in the $typesTable $options = json_decode($typesTable->content_history_options); if (is_object($options) && isset($options->formFile) && JFile::exists(JPATH_ROOT . '/' . $options->formFile)) { $result = JPATH_ROOT . '/' . $options->formFile; } else { $aliasArray = explode('.', $typesTable->type_alias); if (count($aliasArray) == 2) { $component = ($aliasArray[1] == 'category') ? 'com_categories' : $aliasArray[0]; $path = JFolder::makeSafe(JPATH_ADMINISTRATOR . '/components/' . $component . '/models/forms/'); $file = JFile::makeSafe($aliasArray[1] . '.xml'); $result = JFile::exists($path . $file) ? $path . $file : false; } } return $result; } /** * Method to query the database using values from lookup objects. * * @param stdClass $lookup The std object with the values needed to do the query. * @param mixed $value The value used to find the matching title or name. Typically the id. * * @return mixed Value from database (for example, name or title) on success, false on failure. * * @since 3.2 */ public static function getLookupValue($lookup, $value) { $result = false; if (isset($lookup->sourceColumn) && isset($lookup->targetTable) && isset($lookup->targetColumn)&& isset($lookup->displayColumn)) { $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select($db->quoteName($lookup->displayColumn)) ->from($db->quoteName($lookup->targetTable)) ->where($db->quoteName($lookup->targetColumn) . ' = ' . $db->quote($value)); $db->setQuery($query); try { $result = $db->loadResult(); } catch (Exception $e) { // Ignore any errors and just return false return false; } } return $result; } /** * Method to remove fields from the object based on values entered in the #__content_types table. * * @param stdClass $object Object to be passed to view layout file. * @param JTableContenttype $typeTable Table object with content history options. * * @return stdClass object with hidden fields removed. * * @since 3.2 */ public static function hideFields($object, JTableContenttype $typeTable) { if ($options = json_decode($typeTable->content_history_options)) { if (isset($options->hideFields) && is_array($options->hideFields)) { foreach ($options->hideFields as $field) { unset($object->$field); } } } return $object; } /** * Method to load the language files for the component whose history is being viewed. * * @param string $typeAlias The type alias, for example 'com_content.article'. * * @return void * * @since 3.2 */ public static function loadLanguageFiles($typeAlias) { $aliasArray = explode('.', $typeAlias); if (is_array($aliasArray) && count($aliasArray) == 2) { $component = ($aliasArray[1] == 'category') ? 'com_categories' : $aliasArray[0]; $lang = JFactory::getLanguage(); /** * Loading language file from the administrator/language directory then * loading language file from the administrator/components/extension/language directory */ $lang->load($component, JPATH_ADMINISTRATOR, null, false, true) || $lang->load($component, JPath::clean(JPATH_ADMINISTRATOR . '/components/' . $component), null, false, true); // Force loading of back-end global language file $lang->load('joomla', JPath::clean(JPATH_ADMINISTRATOR), null, false, true); } } /** * Method to create object to pass to the layout. Format is as follows: * field is std object with name, value. * * Value can be a std object with name, value pairs. * * @param stdClass $object The std object from the JSON string. Can be nested 1 level deep. * @param stdClass $formValues Standard class of label and value in an associative array. * * @return stdClass Object with translated labels where available * * @since 3.2 */ public static function mergeLabels($object, $formValues) { $result = new stdClass; $labelsArray = $formValues->labels; $valuesArray = $formValues->values; foreach ($object as $name => $value) { $result->$name = new stdClass; $result->$name->name = $name; $result->$name->value = isset($valuesArray[$name]) ? $valuesArray[$name] : $value; $result->$name->label = isset($labelsArray[$name]) ? $labelsArray[$name] : $name; if (is_object($value)) { $subObject = new stdClass; foreach ($value as $subName => $subValue) { $subObject->$subName = new stdClass; $subObject->$subName->name = $subName; $subObject->$subName->value = isset($valuesArray[$subName]) ? $valuesArray[$subName] : $subValue; $subObject->$subName->label = isset($labelsArray[$subName]) ? $labelsArray[$subName] : $subName; $result->$name->value = $subObject; } } } return $result; } /** * Method to prepare the object for the preview and compare views. * * @param JTableContenthistory $table Table object loaded with data. * * @return stdClass Object ready for the views. * * @since 3.2 */ public static function prepareData(JTableContenthistory $table) { $object = static::decodeFields($table->version_data); $typesTable = JTable::getInstance('Contenttype'); $typesTable->load(array('type_id' => $table->ucm_type_id)); $formValues = static::getFormValues($object, $typesTable); $object = static::mergeLabels($object, $formValues); $object = static::hideFields($object, $typesTable); $object = static::processLookupFields($object, $typesTable); return $object; } /** * Method to process any lookup values found in the content_history_options column for this table. * This allows category title and user name to be displayed instead of the id column. * * @param stdClass $object The std object from the JSON string. Can be nested 1 level deep. * @param JTableContenttype $typesTable Table object loaded with data. * * @return stdClass Object with lookup values inserted. * * @since 3.2 */ public static function processLookupFields($object, JTableContenttype $typesTable) { if ($options = json_decode($typesTable->content_history_options)) { if (isset($options->displayLookup) && is_array($options->displayLookup)) { foreach ($options->displayLookup as $lookup) { $sourceColumn = isset($lookup->sourceColumn) ? $lookup->sourceColumn : false; $sourceValue = isset($object->$sourceColumn->value) ? $object->$sourceColumn->value : false; if ($sourceColumn && $sourceValue && ($lookupValue = static::getLookupValue($lookup, $sourceValue))) { $object->$sourceColumn->value = $lookupValue; } } } } return $object; } } PKb��\S{<}}0components/com_contenthistory/contenthistory.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contenthistory * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Disallow unauthenticated users if (JFactory::getUser()->guest) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $controller = JControllerLegacy::getInstance('Contenthistory', array('base_path' => JPATH_COMPONENT_ADMINISTRATOR)); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\�9�"�"0components/com_contenthistory/models/history.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contenthistory * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Methods supporting a list of contenthistory records. * * @since 3.2 */ class ContenthistoryModelHistory extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JControllerLegacy * @since 3.2 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'version_id', 'h.version_id', 'version_note', 'h.version_note', 'save_date', 'h.save_date', 'editor_user_id', 'h.editor_user_id', ); } parent::__construct($config); } /** * Method to test whether a history record can be deleted. Note that we check whether we have edit permissions * for the content item row. * * @param JTableContenthistory $record A JTable object. * * @return boolean True if allowed to delete the record. Defaults to the permission set in the component. * * @since 3.2 */ protected function canEdit($record) { $result = false; if (!empty($record->ucm_type_id)) { // Check that the type id matches the type alias $typeAlias = JFactory::getApplication()->input->get('type_alias'); /** @var JTableContenttype $contentTypeTable */ $contentTypeTable = JTable::getInstance('Contenttype', 'JTable'); if ($contentTypeTable->getTypeId($typeAlias) == $record->ucm_type_id) { /** * Make sure user has edit privileges for this content item. Note that we use edit permissions * for the content item, not delete permissions for the content history row. */ $user = JFactory::getUser(); $result = $user->authorise('core.edit', $typeAlias . '.' . (int) $record->ucm_item_id); } } return $result; } /** * Method to delete one or more records from content history table. * * @param array &$pks An array of record primary keys. * * @return boolean True if successful, false if an error occurs. * * @since 3.2 */ public function delete(&$pks) { $pks = (array) $pks; $table = $this->getTable(); // Iterate the items to delete each one. foreach ($pks as $i => $pk) { if ($table->load($pk)) { if ($this->canEdit($table)) { if (!$table->delete($pk)) { $this->setError($table->getError()); return false; } } else { // Prune items that you can't change. unset($pks[$i]); $error = $this->getError(); if ($error) { JLog::add($error, JLog::WARNING, 'jerror'); return false; } else { JLog::add(JText::_('JLIB_APPLICATION_ERROR_DELETE_NOT_PERMITTED'), JLog::WARNING, 'jerror'); return false; } } } else { $this->setError($table->getError()); return false; } } // Clear the component's cache $this->cleanCache(); return true; } /** * Method to get an array of data items. * * @return mixed An array of data items on success, false on failure. * * @since 3.4.5 */ public function getItems() { $items = parent::getItems(); if ($items === false) { return false; } // This should be an array with at least one element if (!is_array($items) || !isset($items[0])) { return $items; } // Get the content type's record so we can check ACL /** @var JTableContenttype $contentTypeTable */ $contentTypeTable = JTable::getInstance('Contenttype'); $ucmTypeId = $items[0]->ucm_type_id; if (!$contentTypeTable->load($ucmTypeId)) { // Assume a failure to load the content type means broken data, abort mission return false; } // Access check if (!JFactory::getUser()->authorise('core.edit', $contentTypeTable->type_alias . '.' . (int) $items[0]->ucm_item_id)) { $this->setError(JText::_('JERROR_ALERTNOAUTHOR')); return false; } // All good, return the items array return $items; } /** * Method to get a table object, load it if necessary. * * @param string $type The table name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A JTable object * * @since 3.2 */ public function getTable($type = 'Contenthistory', $prefix = 'JTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Method to toggle on and off the keep forever value for one or more records from content history table. * * @param array &$pks An array of record primary keys. * * @return boolean True if successful, false if an error occurs. * * @since 3.2 */ public function keep(&$pks) { $pks = (array) $pks; $table = $this->getTable(); // Iterate the items to delete each one. foreach ($pks as $i => $pk) { if ($table->load($pk)) { if ($this->canEdit($table)) { $table->keep_forever = $table->keep_forever ? 0 : 1; if (!$table->store()) { $this->setError($table->getError()); return false; } } else { // Prune items that you can't change. unset($pks[$i]); $error = $this->getError(); if ($error) { JLog::add($error, JLog::WARNING, 'jerror'); return false; } else { JLog::add(JText::_('COM_CONTENTHISTORY_ERROR_KEEP_NOT_PERMITTED'), JLog::WARNING, 'jerror'); return false; } } } else { $this->setError($table->getError()); return false; } } // Clear the component's cache $this->cleanCache(); return true; } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 3.2 */ protected function populateState($ordering = null, $direction = null) { $input = JFactory::getApplication()->input; $itemId = $input->get('item_id', 0, 'integer'); $typeId = $input->get('type_id', 0, 'integer'); $typeAlias = $input->get('type_alias', '', 'string'); $this->setState('item_id', $itemId); $this->setState('type_id', $typeId); $this->setState('type_alias', $typeAlias); $this->setState('sha1_hash', $this->getSha1Hash()); // Load the parameters. $params = JComponentHelper::getParams('com_contenthistory'); $this->setState('params', $params); // List state information. parent::populateState('h.save_date', 'DESC'); } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery * * @since 3.2 */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'h.version_id, h.ucm_item_id, h.ucm_type_id, h.version_note, h.save_date, h.editor_user_id,' . 'h.character_count, h.sha1_hash, h.version_data, h.keep_forever' ) ) ->from($db->quoteName('#__ucm_history') . ' AS h') ->where($db->quoteName('h.ucm_item_id') . ' = ' . $this->getState('item_id')) ->where($db->quoteName('h.ucm_type_id') . ' = ' . $this->getState('type_id')) // Join over the users for the editor ->select('uc.name AS editor') ->join('LEFT', '#__users AS uc ON uc.id = h.editor_user_id'); // Add the list ordering clause. $orderCol = $this->state->get('list.ordering'); $orderDirn = $this->state->get('list.direction'); $query->order($db->quoteName($orderCol) . $orderDirn); return $query; } /** * Get the sha1 hash value for the current item being edited. * * @return string sha1 hash of row data * * @since 3.2 */ protected function getSha1Hash() { $result = false; $typeTable = JTable::getInstance('Contenttype', 'JTable'); $typeId = JFactory::getApplication()->input->getInteger('type_id', 0); $typeTable->load($typeId); $typeAliasArray = explode('.', $typeTable->type_alias); JTable::addIncludePath(JPATH_ROOT . '/administrator/components/' . $typeAliasArray[0] . '/tables'); $contentTable = $typeTable->getContentTable(); $keyValue = JFactory::getApplication()->input->getInteger('item_id', 0); if ($contentTable && $contentTable->load($keyValue)) { $helper = new JHelper; $dataObject = $helper->getDataObject($contentTable); $result = $this->getTable('Contenthistory', 'JTable')->getSha1(json_encode($dataObject), $typeTable); } return $result; } } PKb��\S��{��0components/com_contenthistory/models/preview.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contenthistory * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JLoader::register('ContenthistoryHelper', JPATH_ADMINISTRATOR . '/components/com_contenthistory/helpers/contenthistory.php'); /** * Methods supporting a list of contenthistory records. * * @since 3.2 */ class ContenthistoryModelPreview extends JModelItem { /** * Method to get a version history row. * * @return stdClass|boolean On success, standard object with row data. False on failure. * * @since 3.2 */ public function getItem() { /** @var JTableContenthistory $table */ $table = JTable::getInstance('Contenthistory'); $versionId = JFactory::getApplication()->input->getInt('version_id'); if (!$table->load($versionId)) { return false; } // Get the content type's record so we can check ACL /** @var JTableContenttype $contentTypeTable */ $contentTypeTable = JTable::getInstance('Contenttype'); if (!$contentTypeTable->load($table->ucm_type_id)) { // Assume a failure to load the content type means broken data, abort mission return false; } // Access check if (!JFactory::getUser()->authorise('core.edit', $contentTypeTable->type_alias . '.' . (int) $table->ucm_item_id)) { $this->setError(JText::_('JERROR_ALERTNOAUTHOR')); return false; } // Good to go, finish processing the data $result = new stdClass; $result->save_date = $table->save_date; $result->version_note = $table->version_note; $result->data = ContenthistoryHelper::prepareData($table); return $result; } } PKb��\�$Lr""0components/com_contenthistory/models/compare.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contenthistory * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JLoader::register('ContenthistoryHelper', JPATH_ADMINISTRATOR . '/components/com_contenthistory/helpers/contenthistory.php'); /** * Methods supporting a list of contenthistory records. * * @since 3.2 */ class ContenthistoryModelCompare extends JModelItem { /** * Method to get a version history row. * * @return array|boolean On success, array of populated tables. False on failure. * * @since 3.2 */ public function getItems() { $input = JFactory::getApplication()->input; /** @var JTableContenthistory $table1 */ $table1 = JTable::getInstance('Contenthistory'); /** @var JTableContenthistory $table2 */ $table2 = JTable::getInstance('Contenthistory'); $id1 = $input->getInt('id1'); $id2 = $input->getInt('id2'); $result = array(); if ($table1->load($id1) && $table2->load($id2)) { // Get the first history record's content type record so we can check ACL /** @var JTableContenttype $contentTypeTable */ $contentTypeTable = JTable::getInstance('Contenttype'); $ucmTypeId = $table1->ucm_type_id; if (!$contentTypeTable->load($ucmTypeId)) { // Assume a failure to load the content type means broken data, abort mission return false; } // Access check if (!JFactory::getUser()->authorise('core.edit', $contentTypeTable->type_alias . '.' . (int) $table1->ucm_item_id)) { $this->setError(JText::_('JERROR_ALERTNOAUTHOR')); return false; } // All's well, process the records foreach (array($table1, $table2) as $table) { $object = new stdClass; $object->data = ContenthistoryHelper::prepareData($table); $object->version_note = $table->version_note; $object->save_date = $table->save_date; $result[] = $object; } return $result; } return false; } } PKb��\iP���,components/com_contenthistory/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contenthistory * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Contenthistory Controller * * @since 3.2 */ class ContenthistoryController extends JControllerLegacy { } PKb��\�� ,�� components/com_cpanel/cpanel.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_cpanel * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // No access check. $controller = JControllerLegacy::getInstance('Cpanel'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\�J��� components/com_cpanel/cpanel.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_cpanel</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_CPANEL_XML_DESCRIPTION</description> <administration> <files folder="admin"> <filename>controller.php</filename> <filename>cpanel.php</filename> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_cpanel.ini</language> <language tag="en-GB">language/en-GB.com_cpanel.sys.ini</language> </languages> </administration> </extension> PKb��\(Ў'��3components/com_cpanel/views/cpanel/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_cpanel * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; $user = JFactory::getUser(); ?> <div class="row-fluid"> <?php $iconmodules = JModuleHelper::getModules('icon'); if ($iconmodules) : ?> <div class="span3"> <div class="cpanel-links"> <?php // Display the submenu position modules foreach ($iconmodules as $iconmodule) { echo JModuleHelper::renderModule($iconmodule); } ?> </div> </div> <?php endif; ?> <div class="span<?php echo ($iconmodules) ? 9 : 12; ?>"> <?php if ($user->authorise('core.manage', 'com_postinstall')) : ?> <div class="row-fluid"> <?php if ($this->postinstall_message_count): ?> <div class="alert alert-info"> <h4> <?php echo JText::_('COM_CPANEL_MESSAGES_TITLE'); ?> </h4> <p> <?php echo JText::_('COM_CPANEL_MESSAGES_BODY_NOCLOSE'); ?> </p> <p> <?php echo JText::_('COM_CPANEL_MESSAGES_BODYMORE_NOCLOSE'); ?> </p> <p> <a href="index.php?option=com_postinstall&eid=700" class="btn btn-primary"> <?php echo JText::_('COM_CPANEL_MESSAGES_REVIEW'); ?> </a> </p> </div> <?php endif; ?> </div> <?php endif; ?> <div class="row-fluid"> <?php $spans = 0; foreach ($this->modules as $module) { // Get module parameters $params = new Registry; $params->loadString($module->params); $bootstrapSize = $params->get('bootstrap_size'); if (!$bootstrapSize) { $bootstrapSize = 12; } $spans += $bootstrapSize; if ($spans > 12) { echo '</div><div class="row-fluid">'; $spans = $bootstrapSize; } echo JModuleHelper::renderModule($module, array('style' => 'well')); } ?> </div> </div> </div> PKb��\���X0components/com_cpanel/views/cpanel/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_cpanel * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * HTML View class for the Cpanel component * * @since 1.0 */ class CpanelViewCpanel extends JViewLegacy { /** * Array of cpanel modules * * @var array */ protected $modules = null; /** * 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 a Error object. */ public function display($tpl = null) { // Set toolbar items for the page JToolbarHelper::title(JText::_('COM_CPANEL'), 'home-2 cpanel'); JToolbarHelper::help('screen.cpanel'); $input = JFactory::getApplication()->input; /* * Set the template - this will display cpanel.php * from the selected admin template. */ $input->set('tmpl', 'cpanel'); // Display the cpanel modules $this->modules = JModuleHelper::getModules('cpanel'); // Load the RAD layer and count the number of post-installation messages if (!defined('FOF_INCLUDED')) { require_once JPATH_LIBRARIES . '/fof/include.php'; } try { $messages_model = FOFModel::getTmpInstance('Messages', 'PostinstallModel')->eid(700); $messages = $messages_model->getItemList(); } catch (RuntimeException $e) { $messages = array(); // Still render the error message from the Exception object JFactory::getApplication()->enqueueMessage($e->getMessage(), 'error'); } $this->postinstall_message_count = count($messages); parent::display($tpl); } } PKb��\�Q�%yy$components/com_cpanel/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_cpanel * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Cpanel Controller * * @since 1.5 */ class CpanelController extends JControllerLegacy { } PKb��\�*.� � $components/com_finder/tables/map.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Map table class for the Finder package. * * @since 2.5 */ class FinderTableMap extends JTable { /** * Constructor * * @param JDatabaseDriver &$db JDatabaseDriver connector object. * * @since 2.5 */ public function __construct(&$db) { parent::__construct('#__finder_taxonomy', 'id', $db); } /** * Method to set the publishing state for a row or list of rows in the database * table. The method respects checked out rows by other users and will attempt * to checkin rows that it can after adjustments are made. * * @param mixed $pks An array of primary key values to update. If not * set the instance property value is used. [optional] * @param integer $state The publishing state. eg. [0 = unpublished, 1 = published] [optional] * @param integer $userId The user id of the user performing the operation. [optional] * * @return boolean True on success. * * @since 2.5 */ public function publish($pks = null, $state = 1, $userId = 0) { $k = $this->_tbl_key; // Sanitize input. JArrayHelper::toInteger($pks); $state = (int) $state; // If there are no primary keys set check to see if the instance key is set. if (empty($pks)) { if ($this->$k) { $pks = array($this->$k); } // Nothing to set publishing state on, return false. else { $this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED')); return false; } } // Build the WHERE clause for the primary keys. $where = $k . '=' . implode(' OR ' . $k . '=', $pks); // Update the publishing state for rows with the given primary keys. $query = $this->_db->getQuery(true) ->update($this->_db->quoteName($this->_tbl)) ->set($this->_db->quoteName('state') . ' = ' . (int) $state) ->where($where); $this->_db->setQuery($query); try { $this->_db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } // If the JTable instance value is in the list of primary keys that were set, set the instance. if (in_array($this->$k, $pks)) { $this->state = $state; } $this->setError(''); return true; } } PKb��\F���'components/com_finder/tables/filter.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; use Joomla\Registry\Registry; /** * Filter table class for the Finder package. * * @since 2.5 */ class FinderTableFilter extends JTable { /** * Constructor * * @param JDatabaseDriver &$db JDatabaseDriver connector object. * * @since 2.5 */ public function __construct(&$db) { parent::__construct('#__finder_filters', 'filter_id', $db); } /** * Method to bind an associative array or object to the JTable instance. This * method only binds properties that are publicly accessible and optionally * takes an array of properties to ignore when binding. * * @param array $array Named array * @param mixed $ignore An optional array or space separated list of properties * to ignore while binding. [optional] * * @return mixed Null if operation was satisfactory, otherwise returns an error string * * @since 2.5 */ public function bind($array, $ignore = '') { if (isset($array['params']) && is_array($array['params'])) { $registry = new Registry; $registry->loadArray($array['params']); $array['params'] = (string) $registry; } return parent::bind($array, $ignore); } /** * Method to perform sanity checks on the JTable instance properties to ensure * they are safe to store in the database. Child classes should override this * method to make sure the data they are storing in the database is safe and * as expected before storage. * * @return boolean True if the instance is sane and able to be stored in the database. * * @since 2.5 */ public function check() { if (trim($this->alias) == '') { $this->alias = $this->title; } $this->alias = JApplication::stringURLSafe($this->alias); if (trim(str_replace('-', '', $this->alias)) == '') { $this->alias = JFactory::getDate()->format('Y-m-d-H-i-s'); } // Check the end date is not earlier than start up. if ($this->d2 > $this->_db->getNullDate() && $this->d2 < $this->d1) { // Swap the dates. $temp = $this->d1; $this->d1 = $this->d2; $this->d2 = $temp; } return true; } /** * Method to set the publishing state for a row or list of rows in the database * table. The method respects checked out rows by other users and will attempt * to checkin rows that it can after adjustments are made. * * @param mixed $pks An array of primary key values to update. If not * set the instance property value is used. [optional] * @param integer $state The publishing state. eg. [0 = unpublished, 1 = published] [optional] * @param integer $userId The user id of the user performing the operation. [optional] * * @return boolean True on success. * * @since 2.5 */ public function publish($pks = null, $state = 1, $userId = 0) { $k = $this->_tbl_key; // Sanitize input. JArrayHelper::toInteger($pks); $userId = (int) $userId; $state = (int) $state; // If there are no primary keys set check to see if the instance key is set. if (empty($pks)) { if ($this->$k) { $pks = array($this->$k); } // Nothing to set publishing state on, return false. else { $this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED')); return false; } } // Build the WHERE clause for the primary keys. $where = $k . '=' . implode(' OR ' . $k . '=', $pks); // Determine if there is checkin support for the table. if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time')) { $checkin = ''; } else { $checkin = ' AND (checked_out = 0 OR checked_out = ' . (int) $userId . ')'; } // Update the publishing state for rows with the given primary keys. $query = $this->_db->getQuery(true) ->update($this->_db->quoteName($this->_tbl)) ->set($this->_db->quoteName('state') . ' = ' . (int) $state) ->where($where); $this->_db->setQuery($query . $checkin); try { $this->_db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } // If checkin is supported and all rows were adjusted, check them in. if ($checkin && (count($pks) == $this->_db->getAffectedRows())) { // Checkin the rows. foreach ($pks as $pk) { $this->checkin($pk); } } // If the JTable instance value is in the list of primary keys that were set, set the instance. if (in_array($this->$k, $pks)) { $this->state = $state; } $this->setError(''); return true; } /** * Method to store a row in the database from the JTable instance properties. * If a primary key value is set the row with that primary key value will be * updated with the instance property values. If no primary key value is set * a new row will be inserted into the database with the properties from the * JTable instance. * * @param boolean $updateNulls True to update fields even if they are null. [optional] * * @return boolean True on success. * * @since 2.5 */ public function store($updateNulls = false) { $date = JFactory::getDate(); $user = JFactory::getUser(); $this->modified = $date->toSql(); if ($this->filter_id) { // Existing item $this->modified_by = $user->get('id'); } else { // New item. A filter's created field can be set by the user, // so we don't touch it if it is set. if (!(int) $this->created) { $this->created = $date->toSql(); } if (empty($this->created_by)) { $this->created_by = $user->get('id'); } } if (is_array($this->data)) { $this->map_count = count($this->data); $this->data = implode(',', $this->data); } else { $this->map_count = 0; $this->data = implode(',', array()); } // Verify that the alias is unique $table = JTable::getInstance('Filter', 'FinderTable'); if ($table->load(array('alias' => $this->alias)) && ($table->filter_id != $this->filter_id || $this->filter_id == 0)) { $this->setError(JText::_('JLIB_DATABASE_ERROR_ARTICLE_UNIQUE_ALIAS')); return false; } return parent::store($updateNulls); } } PKb��\B�ֳ\\%components/com_finder/tables/link.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Link table class for the Finder package. * * @since 2.5 */ class FinderTableLink extends JTable { /** * Constructor * * @param JDatabaseDriver &$db JDatabaseDriver connector object. * * @since 2.5 */ public function __construct(&$db) { parent::__construct('#__finder_links', 'link_id', $db); } } PKb��\�+�~$$2components/com_finder/controllers/indexer.json.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; // Register dependent classes. JLoader::register('FinderIndexer', JPATH_COMPONENT_ADMINISTRATOR . '/helpers/indexer/indexer.php'); /** * Indexer controller class for Finder. * * @since 2.5 */ class FinderControllerIndexer extends JControllerLegacy { /** * Method to start the indexer. * * @return void * * @since 2.5 */ public function start() { static $log; $params = JComponentHelper::getParams('com_finder'); if ($params->get('enable_logging', '0')) { if ($log == null) { $options['format'] = '{DATE}\t{TIME}\t{LEVEL}\t{CODE}\t{MESSAGE}'; $options['text_file'] = 'indexer.php'; $log = JLog::addLogger($options); } } // Log the start JLog::add('Starting the indexer', JLog::INFO); // We don't want this form to be cached. header('Pragma: no-cache'); header('Cache-Control: no-cache'); header('Expires: -1'); // Check for a valid token. If invalid, send a 403 with the error message. JSession::checkToken('request') or $this->sendResponse(new Exception(JText::_('JINVALID_TOKEN'), 403)); // Put in a buffer to silence noise. ob_start(); // Reset the indexer state. FinderIndexer::resetState(); // Import the finder plugins. JPluginHelper::importPlugin('finder'); // Add the indexer language to JS JText::script('COM_FINDER_AN_ERROR_HAS_OCCURRED'); JText::script('COM_FINDER_NO_ERROR_RETURNED'); // Start the indexer. try { // Trigger the onStartIndex event. JEventDispatcher::getInstance()->trigger('onStartIndex'); // Get the indexer state. $state = FinderIndexer::getState(); $state->start = 1; // Send the response. $this->sendResponse($state); } // Catch an exception and return the response. catch (Exception $e) { $this->sendResponse($e); } } /** * Method to run the next batch of content through the indexer. * * @return void * * @since 2.5 */ public function batch() { static $log; $params = JComponentHelper::getParams('com_finder'); if ($params->get('enable_logging', '0')) { if ($log == null) { $options['format'] = '{DATE}\t{TIME}\t{LEVEL}\t{CODE}\t{MESSAGE}'; $options['text_file'] = 'indexer.php'; $log = JLog::addLogger($options); } } // Log the start JLog::add('Starting the indexer batch process', JLog::INFO); // We don't want this form to be cached. header('Pragma: no-cache'); header('Cache-Control: no-cache'); header('Expires: -1'); // Check for a valid token. If invalid, send a 403 with the error message. JSession::checkToken('request') or $this->sendResponse(new Exception(JText::_('JINVALID_TOKEN'), 403)); // Put in a buffer to silence noise. ob_start(); // Remove the script time limit. @set_time_limit(0); // Get the indexer state. $state = FinderIndexer::getState(); // Reset the batch offset. $state->batchOffset = 0; // Update the indexer state. FinderIndexer::setState($state); // Import the finder plugins. JPluginHelper::importPlugin('finder'); /* * We are going to swap out the raw document object with an HTML document * in order to work around some plugins that don't do proper environment * checks before trying to use HTML document functions. */ $raw = clone JFactory::getDocument(); $lang = JFactory::getLanguage(); // Get the document properties. $attributes = array ( 'charset' => 'utf-8', 'lineend' => 'unix', 'tab' => ' ', 'language' => $lang->getTag(), 'direction' => $lang->isRtl() ? 'rtl' : 'ltr' ); // Get the HTML document. $html = JDocument::getInstance('html', $attributes); $doc = JFactory::getDocument(); // Swap the documents. $doc = $html; // Get the admin application. $admin = clone JFactory::getApplication(); // Get the site app. $site = JApplication::getInstance('site'); // Swap the app. $app = JFactory::getApplication(); $app = $site; // Start the indexer. try { // Trigger the onBeforeIndex event. JEventDispatcher::getInstance()->trigger('onBeforeIndex'); // Trigger the onBuildIndex event. JEventDispatcher::getInstance()->trigger('onBuildIndex'); // Get the indexer state. $state = FinderIndexer::getState(); $state->start = 0; $state->complete = 0; // Swap the documents back. $doc = $raw; // Swap the applications back. $app = $admin; // Send the response. $this->sendResponse($state); } // Catch an exception and return the response. catch (Exception $e) { // Swap the documents back. $doc = $raw; // Send the response. $this->sendResponse($e); } } /** * Method to optimize the index and perform any necessary cleanup. * * @return void * * @since 2.5 */ public function optimize() { // We don't want this form to be cached. header('Pragma: no-cache'); header('Cache-Control: no-cache'); header('Expires: -1'); // Check for a valid token. If invalid, send a 403 with the error message. JSession::checkToken('request') or $this->sendResponse(new Exception(JText::_('JINVALID_TOKEN'), 403)); // Put in a buffer to silence noise. ob_start(); // Import the finder plugins. JPluginHelper::importPlugin('finder'); try { // Optimize the index FinderIndexer::getInstance()->optimize(); // Get the indexer state. $state = FinderIndexer::getState(); $state->start = 0; $state->complete = 1; // Send the response. $this->sendResponse($state); } // Catch an exception and return the response. catch (Exception $e) { $this->sendResponse($e); } } /** * Method to handle a send a JSON response. The body parameter * can be a Exception object for when an error has occurred or * a JObject for a good response. * * @param mixed $data JObject on success, Exception on error. [optional] * * @return void * * @since 2.5 */ public static function sendResponse($data = null) { static $log; $params = JComponentHelper::getParams('com_finder'); if ($params->get('enable_logging', '0')) { if ($log == null) { $options['format'] = '{DATE}\t{TIME}\t{LEVEL}\t{CODE}\t{MESSAGE}'; $options['text_file'] = 'indexer.php'; $log = JLog::addLogger($options); } } // Send the assigned error code if we are catching an exception. if ($data instanceof Exception) { $app = JFactory::getApplication(); JLog::add($data->getMessage(), JLog::ERROR); $app->setHeader('status', $data->getCode()); $app->sendHeaders(); } // Create the response object. $response = new FinderIndexerResponse($data); // Add the buffer. $response->buffer = JDEBUG ? ob_get_contents() : ob_end_clean(); // Send the JSON response. echo json_encode($response); // Close the application. JFactory::getApplication()->close(); } } /** * Finder Indexer JSON Response Class * * @since 2.5 */ class FinderIndexerResponse { /** * Class Constructor * * @param mixed $state The processing state for the indexer * * @since 2.5 */ public function __construct($state) { static $log; $params = JComponentHelper::getParams('com_finder'); if ($params->get('enable_logging', '0')) { if ($log == null) { $options['format'] = '{DATE}\t{TIME}\t{LEVEL}\t{CODE}\t{MESSAGE}'; $options['text_file'] = 'indexer.php'; $log = JLog::addLogger($options); } } // The old token is invalid so send a new one. $this->token = JFactory::getSession()->getFormToken(); // Check if we are dealing with an error. if ($state instanceof Exception) { // Log the error JLog::add($state->getMessage(), JLog::ERROR); // Prepare the error response. $this->error = true; $this->header = JText::_('COM_FINDER_INDEXER_HEADER_ERROR'); $this->message = $state->getMessage(); } else { // Prepare the response data. $this->batchSize = (int) $state->batchSize; $this->batchOffset = (int) $state->batchOffset; $this->totalItems = (int) $state->totalItems; $this->startTime = $state->startTime; $this->endTime = JFactory::getDate()->toSql(); $this->start = !empty($state->start) ? (int) $state->start : 0; $this->complete = !empty($state->complete) ? (int) $state->complete : 0; // Set the appropriate messages. if ($this->totalItems <= 0 && $this->complete) { $this->header = JText::_('COM_FINDER_INDEXER_HEADER_COMPLETE'); $this->message = JText::_('COM_FINDER_INDEXER_MESSAGE_COMPLETE'); } elseif ($this->totalItems <= 0) { $this->header = JText::_('COM_FINDER_INDEXER_HEADER_OPTIMIZE'); $this->message = JText::_('COM_FINDER_INDEXER_MESSAGE_OPTIMIZE'); } else { $this->header = JText::_('COM_FINDER_INDEXER_HEADER_RUNNING'); $this->message = JText::_('COM_FINDER_INDEXER_MESSAGE_RUNNING'); } } } } // Register the error handler. JError::setErrorHandling(E_ALL, 'callback', array('FinderControllerIndexer', 'sendResponse')); PKb��\�^�~~*components/com_finder/controllers/maps.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Maps controller class for Finder. * * @since 2.5 */ class FinderControllerMaps extends JControllerAdmin { /** * Method to get a model object, loading it if required. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 1.6 */ public function getModel($name = 'Maps', $prefix = 'FinderModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } } PKb��\�#t�yy+components/com_finder/controllers/index.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Index controller class for Finder. * * @since 2.5 */ class FinderControllerIndex extends JControllerAdmin { /** * Method to get a model object, loading it if required. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 2.5 */ public function getModel($name = 'Index', $prefix = 'FinderModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } /** * Method to purge all indexed links from the database. * * @return boolean True on success. * * @since 2.5 */ public function purge() { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Remove the script time limit. @set_time_limit(0); $model = $this->getModel('Index', 'FinderModel'); // Attempt to purge the index. $return = $model->purge(); if (!$return) { $message = JText::_('COM_FINDER_INDEX_PURGE_FAILED', $model->getError()); $this->setRedirect('index.php?option=com_finder&view=index', $message); return false; } else { $message = JText::_('COM_FINDER_INDEX_PURGE_SUCCESS'); $this->setRedirect('index.php?option=com_finder&view=index', $message); return true; } } } PKb��\��=H��-components/com_finder/controllers/filters.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Filters controller class for Finder. * * @since 2.5 */ class FinderControllerFilters extends JControllerAdmin { /** * Method to get a model object, loading it if required. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 2.5 */ public function getModel($name = 'Filter', $prefix = 'FinderModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } } PKb��\��+� ,components/com_finder/controllers/filter.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Indexer controller class for Finder. * * @since 2.5 */ class FinderControllerFilter extends JControllerForm { /** * Method to save a record. * * @param string $key The name of the primary key of the URL variable. * @param string $urlVar The name of the URL variable if different from the primary key (sometimes required to avoid router collisions). * * @return boolean True if successful, false otherwise. * * @since 2.5 */ public function save($key = null, $urlVar = null) { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $input = $app->input; $lang = JFactory::getLanguage(); $model = $this->getModel(); $table = $model->getTable(); $data = $input->post->get('jform', array(), 'array'); $checkin = property_exists($table, 'checked_out'); $context = "$this->option.edit.$this->context"; $task = $this->getTask(); // Determine the name of the primary key for the data. if (empty($key)) { $key = $table->getKeyName(); } // To avoid data collisions the urlVar may be different from the primary key. if (empty($urlVar)) { $urlVar = $key; } $recordId = $input->get($urlVar, '', 'int'); if (!$this->checkEditId($context, $recordId)) { // Somehow the person just went to the form and tried to save it. We don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $recordId)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_list . $this->getRedirectToListAppend(), false)); return false; } // Populate the row id from the session. $data[$key] = $recordId; // The save2copy task needs to be handled slightly differently. if ($task == 'save2copy') { // Check-in the original row. if ($checkin && $model->checkin($data[$key]) === false) { // Check-in failed. Go back to the item and display a notice. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_CHECKIN_FAILED', $model->getError())); $this->setMessage($this->getError(), 'error'); $this->setRedirect('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId, $urlVar)); return false; } // Reset the ID and then treat the request as for Apply. $data[$key] = 0; $task = 'apply'; } // Access check. if (!$this->allowSave($data, $key)) { $this->setError(JText::_('JLIB_APPLICATION_ERROR_SAVE_NOT_PERMITTED')); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_list . $this->getRedirectToListAppend(), false)); return false; } // Validate the posted data. // Sometimes the form needs some posted data, such as for plugins and modules. $form = $model->getForm($data, false); if (!$form) { $app->enqueueMessage($model->getError(), 'error'); return false; } // Test whether the data is valid. $validData = $model->validate($form, $data); // Check for validation errors. if ($validData === false) { // Get the validation messages. $errors = $model->getErrors(); // Push up to three validation messages out to the user. for ($i = 0, $n = count($errors); $i < $n && $i < 3; $i++) { if (($errors[$i]) instanceof Exception) { $app->enqueueMessage($errors[$i]->getMessage(), 'warning'); } else { $app->enqueueMessage($errors[$i], 'warning'); } } // Save the data in the session. $app->setUserState($context . '.data', $data); // Redirect back to the edit screen. $this->setRedirect( JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId, $key), false) ); return false; } // Get and sanitize the filter data. $validData['data'] = $input->post->get('t', array(), 'array'); $validData['data'] = array_unique($validData['data']); JArrayHelper::toInteger($validData['data']); // Remove any values of zero. if (array_search(0, $validData['data'], true)) { unset($validData['data'][array_search(0, $validData['data'], true)]); } // Attempt to save the data. if (!$model->save($validData)) { // Save the data in the session. $app->setUserState($context . '.data', $validData); // Redirect back to the edit screen. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_SAVE_FAILED', $model->getError())); $this->setMessage($this->getError(), 'error'); $this->setRedirect( JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId, $key), false) ); return false; } // Save succeeded, so check-in the record. if ($checkin && $model->checkin($validData[$key]) === false) { // Save the data in the session. $app->setUserState($context . '.data', $validData); // Check-in failed, so go back to the record and display a notice. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_CHECKIN_FAILED', $model->getError())); $this->setMessage($this->getError(), 'error'); $this->setRedirect('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId, $key)); return false; } $this->setMessage( JText::_( ($lang->hasKey($this->text_prefix . ($recordId == 0 && $app->isSite() ? '_SUBMIT' : '') . '_SAVE_SUCCESS') ? $this->text_prefix : 'JLIB_APPLICATION') . ($recordId == 0 && $app->isSite() ? '_SUBMIT' : '') . '_SAVE_SUCCESS' ) ); // Redirect the user and adjust session state based on the chosen task. switch ($task) { case 'apply': // Set the record data in the session. $recordId = $model->getState($this->context . '.id'); $this->holdEditId($context, $recordId); $app->setUserState($context . '.data', null); $model->checkout($recordId); // Redirect back to the edit screen. $this->setRedirect( JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend($recordId, $key), false) ); break; case 'save2new': // Clear the record id and data from the session. $this->releaseEditId($context, $recordId); $app->setUserState($context . '.data', null); // Redirect back to the edit screen. $this->setRedirect( JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . $this->getRedirectToItemAppend(null, $key), false) ); break; default: // Clear the record id and data from the session. $this->releaseEditId($context, $recordId); $app->setUserState($context . '.data', null); // Redirect to the list screen. $this->setRedirect( JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_list . $this->getRedirectToListAppend(), false) ); break; } // Invoke the postSave method to allow for the child class to access the model. $this->postSaveHook($model, $validData); return true; } } PKb��\�u44 components/com_finder/finder.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; if (!JFactory::getUser()->authorise('core.manage', 'com_finder')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $controller = JControllerLegacy::getInstance('Finder'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\,�O�(( components/com_finder/finder.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_finder</name> <author>Joomla! Project</author> <copyright>(C) 2005 - 2015 Open Source Matters. All rights reserved.</copyright> <creationDate>August 2011</creationDate> <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>COM_FINDER_XML_DESCRIPTION</description> <menu link="option=com_finder">COM_FINDER</menu> <files folder="site"> <filename>controller.php</filename> <filename>finder.php</filename> <filename>router.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>views</folder> </files> <media destination="com_finder" folder="media"> <folder>js</folder> <folder>images</folder> <folder>css</folder> </media> <install> <sql> <file charset="utf8" driver="mysql">sql/install.mysql.sql</file> <file charset="utf8" driver="postgresql">sql/install.postgresql.sql</file> </sql> </install> <uninstall> <sql> <file charset="utf8" driver="mysql">sql/uninstall.mysql.sql</file> <file charset="utf8" driver="postgresql">sql/uninstall.postgresql.sql</file> </sql> </uninstall> <languages folder="site"> <language tag="en-GB">language/en-GB.com_finder.ini</language> </languages> <administration> <files folder="admin"> <filename>access.xml</filename> <filename>config.xml</filename> <filename>controller.php</filename> <filename>finder.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>sql</folder> <folder>tables</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_finder.ini</language> <language tag="en-GB">language/en-GB.com_finder.sys.ini</language> </languages> <menu img="class:finder" link="option=com_finder">COM_FINDER</menu> </administration> </extension> PKb��\5V,!! components/com_finder/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="search" label="COM_FINDER_FIELDSET_SEARCH_OPTIONS_LABEL" description="COM_FINDER_FIELDSET_SEARCH_OPTIONS_DESCRIPTION" > <field name="enabled" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_FINDER_CONFIG_GATHER_SEARCH_STATISTICS_LABEL" description="COM_FINDER_CONFIG_GATHER_SEARCH_STATISTICS_DESCRIPTION"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="show_description" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_FINDER_CONFIG_SHOW_DESCRIPTION_LABEL" description="COM_FINDER_CONFIG_SHOW_DESCRIPTION_DESCRIPTION"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="description_length" type="text" size="5" default="255" filter="integer" label="COM_FINDER_CONFIG_DESCRIPTION_LENGTH_LABEL" description="COM_FINDER_CONFIG_DESCRIPTION_LENGTH_DESCRIPTION" /> <field name="allow_empty_query" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_FINDER_CONFIG_ALLOW_EMPTY_QUERY_LABEL" description="COM_FINDER_CONFIG_ALLOW_EMPTY_QUERY_DESCRIPTION"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="show_url" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_FINDER_CONFIG_SHOW_URL_LABEL" description="COM_FINDER_CONFIG_SHOW_URL_DESCRIPTION"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_autosuggest" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_FINDER_CONFIG_SHOW_AUTOSUGGEST_LABEL" description="COM_FINDER_CONFIG_SHOW_AUTOSUGGEST_DESCRIPTION"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_suggested_query" type="radio" class="btn-group btn-group-yesno" default="1" validate="options" label="COM_FINDER_CONFIG_SHOW_SUGGESTED_QUERY_LABEL" description="COM_FINDER_CONFIG_SHOW_SUGGESTED_QUERY_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_explained_query" type="radio" class="btn-group btn-group-yesno" default="1" validate="options" label="COM_FINDER_CONFIG_SHOW_EXPLAINED_QUERY_LABEL" description="COM_FINDER_CONFIG_SHOW_EXPLAINED_QUERY_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_advanced" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_FINDER_CONFIG_SHOW_ADVANCED_LABEL" description="COM_FINDER_CONFIG_SHOW_ADVANCED_DESCRIPTION"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_advanced_tips" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_FINDER_CONFIG_SHOW_ADVANCED_TIPS_LABEL" description="COM_FINDER_CONFIG_SHOW_ADVANCED_TIPS_DESCRIPTION"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="expand_advanced" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_FINDER_CONFIG_EXPAND_ADVANCED_LABEL" description="COM_FINDER_CONFIG_EXPAND_ADVANCED_DESCRIPTION"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="show_date_filters" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_FINDER_CONFIG_SHOW_DATE_FILTERS_LABEL" description="COM_FINDER_CONFIG_SHOW_DATE_FILTERS_DESCRIPTION"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="sort_order" type="list" default="relevance" validate="options" label="COM_FINDER_CONFIG_SORT_ORDER_LABEL" description="COM_FINDER_CONFIG_SORT_ORDER_DESC"> <option value="relevance">COM_FINDER_CONFIG_SORT_OPTION_RELEVANCE</option> <option value="date">COM_FINDER_CONFIG_SORT_OPTION_START_DATE</option> <option value="price">COM_FINDER_CONFIG_SORT_OPTION_LIST_PRICE</option> </field> <field name="sort_direction" type="list" default="desc" validate="options" label="COM_FINDER_CONFIG_SORT_DIRECTION_LABEL" description="COM_FINDER_CONFIG_SORT_DIRECTION_DESC"> <option value="desc">COM_FINDER_CONFIG_SORT_OPTION_DESCENDING</option> <option value="asc">COM_FINDER_CONFIG_SORT_OPTION_ASCENDING</option> </field> <field name="highlight_terms" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_FINDER_CONFIG_HILIGHT_CONTENT_SEARCH_TERMS_LABEL" description="COM_FINDER_CONFIG_HILIGHT_CONTENT_SEARCH_TERMS_DESCRIPTION"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="opensearch_name" type="text" label="COM_FINDER_CONFIG_FIELD_OPENSEARCH_NAME_LABEL" description="COM_FINDER_CONFIG_FIELD_OPENSEARCH_NAME_DESCRIPTION" /> <field name="opensearch_description" type="textarea" label="COM_FINDER_CONFIG_FIELD_OPENSEARCH_DESCRIPTON_LABEL" description="COM_FINDER_CONFIG_FIELD_OPENSEARCH_DESCRIPTON_DESCRIPTION" cols="30" rows="2" /> </fieldset> <fieldset name="index" label="COM_FINDER_FIELDSET_INDEX_OPTIONS_LABEL" description="COM_FINDER_FIELDSET_INDEX_OPTIONS_DESCRIPTION" > <field name="batch_size" type="list" default="50" label="COM_FINDER_CONFIG_BATCH_SIZE_LABEL" description="COM_FINDER_CONFIG_BATCH_SIZE_DESCRIPTION" validate="options" > <option value="5">J5</option> <option value="10">J10</option> <option value="25">J25</option> <option value="50">J50</option> <option value="75">J75</option> <option value="100">J100</option> <option value="150">J150</option> <option value="200">J200</option> <option value="250">J250</option> <option value="300">J300</option> </field> <field name="memory_table_limit" type="text" size="10" default="30000" label="COM_FINDER_CONFIG_MEMORY_TABLE_LIMIT_LABEL" description="COM_FINDER_CONFIG_MEMORY_TABLE_LIMIT_DESCRIPTION" filter="integer" /> <field name="title_multiplier" type="text" size="5" default="1.7" label="COM_FINDER_CONFIG_TITLE_MULTIPLIER_LABEL" description="COM_FINDER_CONFIG_TITLE_MULTIPLIER_DESCRIPTION" /> <field name="text_multiplier" type="text" size="5" default="0.7" label="COM_FINDER_CONFIG_TEXT_MULTIPLIER_LABEL" description="COM_FINDER_CONFIG_TEXT_MULTIPLIER_DESCRIPTION" /> <field name="meta_multiplier" type="text" size="5" default="1.2" label="COM_FINDER_CONFIG_META_MULTIPLIER_LABEL" description="COM_FINDER_CONFIG_META_MULTIPLIER_DESCRIPTION" /> <field name="path_multiplier" type="text" size="5" default="2.0" label="COM_FINDER_CONFIG_PATH_MULTIPLIER_LABEL" description="COM_FINDER_CONFIG_PATH_MULTIPLIER_DESCRIPTION" /> <field name="misc_multiplier" type="text" size="5" default="0.3" label="COM_FINDER_CONFIG_MISC_MULTIPLIER_LABEL" description="COM_FINDER_CONFIG_MISC_MULTIPLIER_DESCRIPTION" /> <field name="stem" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_FINDER_CONFIG_STEMMER_ENABLE_LABEL" description="COM_FINDER_CONFIG_STEMMER_ENABLE_DESCRIPTION" > <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="stemmer" type="list" default="snowball" label="COM_FINDER_CONFIG_STEMMER_LABEL" description="COM_FINDER_CONFIG_STEMMER_DESCRIPTION" > <option value="porter_en">COM_FINDER_CONFIG_STEMMER_PORTER_EN</option> <option value="fr">COM_FINDER_CONFIG_STEMMER_FR</option> <option value="snowball">COM_FINDER_CONFIG_STEMMER_SNOWBALL</option> </field> <field name="enable_logging" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_FINDER_CONFIG_ENABLE_LOGGING_LABEL" description="COM_FINDER_CONFIG_ENABLE_LOGGING_DESCRIPTION"> <option value="1">JYES</option> <option value="0">JNO</option> </field> </fieldset> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_finder" section="component" /> </fieldset> </config> PKb��\�|��ww2components/com_finder/sql/uninstall.postgresql.sqlnu�[���DROP TABLE IF EXISTS "#__finder_filters"; DROP TABLE IF EXISTS "#__finder_links"; DROP TABLE IF EXISTS "#__finder_links_terms0"; DROP TABLE IF EXISTS "#__finder_links_terms1"; DROP TABLE IF EXISTS "#__finder_links_terms2"; DROP TABLE IF EXISTS "#__finder_links_terms3"; DROP TABLE IF EXISTS "#__finder_links_terms4"; DROP TABLE IF EXISTS "#__finder_links_terms5"; DROP TABLE IF EXISTS "#__finder_links_terms6"; DROP TABLE IF EXISTS "#__finder_links_terms7"; DROP TABLE IF EXISTS "#__finder_links_terms8"; DROP TABLE IF EXISTS "#__finder_links_terms9"; DROP TABLE IF EXISTS "#__finder_links_termsa"; DROP TABLE IF EXISTS "#__finder_links_termsb"; DROP TABLE IF EXISTS "#__finder_links_termsc"; DROP TABLE IF EXISTS "#__finder_links_termsd"; DROP TABLE IF EXISTS "#__finder_links_termse"; DROP TABLE IF EXISTS "#__finder_links_termsf"; DROP TABLE IF EXISTS "#__finder_taxonomy"; DROP TABLE IF EXISTS "#__finder_taxonomy_map"; DROP TABLE IF EXISTS "#__finder_terms"; DROP TABLE IF EXISTS "#__finder_terms_common"; DROP TABLE IF EXISTS "#__finder_tokens"; DROP TABLE IF EXISTS "#__finder_tokens_aggregate"; DROP TABLE IF EXISTS "#__finder_types"; PKb��\�aY<<+components/com_finder/sql/install.mysql.sqlnu�[���-- -- Table structure for table `#__finder_filters` -- CREATE TABLE IF NOT EXISTS `#__finder_filters` ( `filter_id` int(10) unsigned NOT NULL auto_increment, `title` varchar(255) NOT NULL, `alias` varchar(255) NOT NULL, `state` tinyint(1) NOT NULL default '1', `created` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(10) unsigned NOT NULL, `created_by_alias` varchar(255) NOT NULL, `modified` datetime NOT NULL default '0000-00-00 00:00:00', `modified_by` int(10) unsigned NOT NULL default '0', `checked_out` int(10) unsigned NOT NULL default '0', `checked_out_time` datetime NOT NULL default '0000-00-00 00:00:00', `map_count` int(10) unsigned NOT NULL default '0', `data` text NOT NULL, `params` mediumtext, PRIMARY KEY (`filter_id`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links` -- CREATE TABLE IF NOT EXISTS `#__finder_links` ( `link_id` int(10) unsigned NOT NULL auto_increment, `url` varchar(255) NOT NULL, `route` varchar(255) NOT NULL, `title` varchar(255) default NULL, `description` varchar(255) default NULL, `indexdate` datetime NOT NULL default '0000-00-00 00:00:00', `md5sum` varchar(32) default NULL, `published` tinyint(1) NOT NULL default '1', `state` int(5) default '1', `access` int(5) default '0', `language` varchar(8) NOT NULL, `publish_start_date` datetime NOT NULL default '0000-00-00 00:00:00', `publish_end_date` datetime NOT NULL default '0000-00-00 00:00:00', `start_date` datetime NOT NULL default '0000-00-00 00:00:00', `end_date` datetime NOT NULL default '0000-00-00 00:00:00', `list_price` double unsigned NOT NULL default '0', `sale_price` double unsigned NOT NULL default '0', `type_id` int(11) NOT NULL, `object` mediumblob NOT NULL, PRIMARY KEY (`link_id`), KEY `idx_type` (`type_id`), KEY `idx_title` (`title`), KEY `idx_md5` (`md5sum`), KEY `idx_url` (`url`(75)), KEY `idx_published_list` (`published`,`state`,`access`,`publish_start_date`,`publish_end_date`,`list_price`), KEY `idx_published_sale` (`published`,`state`,`access`,`publish_start_date`,`publish_end_date`,`sale_price`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links_terms0` -- CREATE TABLE IF NOT EXISTS `#__finder_links_terms0` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links_terms1` -- CREATE TABLE IF NOT EXISTS `#__finder_links_terms1` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links_terms2` -- CREATE TABLE IF NOT EXISTS `#__finder_links_terms2` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links_terms3` -- CREATE TABLE IF NOT EXISTS `#__finder_links_terms3` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links_terms4` -- CREATE TABLE IF NOT EXISTS `#__finder_links_terms4` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links_terms5` -- CREATE TABLE IF NOT EXISTS `#__finder_links_terms5` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links_terms6` -- CREATE TABLE IF NOT EXISTS `#__finder_links_terms6` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links_terms7` -- CREATE TABLE IF NOT EXISTS `#__finder_links_terms7` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links_terms8` -- CREATE TABLE IF NOT EXISTS `#__finder_links_terms8` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links_terms9` -- CREATE TABLE IF NOT EXISTS `#__finder_links_terms9` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links_termsa` -- CREATE TABLE IF NOT EXISTS `#__finder_links_termsa` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links_termsb` -- CREATE TABLE IF NOT EXISTS `#__finder_links_termsb` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links_termsc` -- CREATE TABLE IF NOT EXISTS `#__finder_links_termsc` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links_termsd` -- CREATE TABLE IF NOT EXISTS `#__finder_links_termsd` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links_termse` -- CREATE TABLE IF NOT EXISTS `#__finder_links_termse` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_links_termsf` -- CREATE TABLE IF NOT EXISTS `#__finder_links_termsf` ( `link_id` int(10) unsigned NOT NULL, `term_id` int(10) unsigned NOT NULL, `weight` float unsigned NOT NULL, PRIMARY KEY (`link_id`,`term_id`), KEY `idx_term_weight` (`term_id`,`weight`), KEY `idx_link_term_weight` (`link_id`,`term_id`,`weight`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_taxonomy` -- CREATE TABLE IF NOT EXISTS `#__finder_taxonomy` ( `id` int(10) unsigned NOT NULL auto_increment, `parent_id` int(10) unsigned NOT NULL default '0', `title` varchar(255) NOT NULL, `state` tinyint(1) unsigned NOT NULL default '1', `access` tinyint(1) unsigned NOT NULL default '0', `ordering` tinyint(1) unsigned NOT NULL default '0', PRIMARY KEY (`id`), KEY `parent_id` (`parent_id`), KEY `state` (`state`), KEY `ordering` (`ordering`), KEY `access` (`access`), KEY `idx_parent_published` (`parent_id`,`state`,`access`) ) DEFAULT CHARSET=utf8; -- -- Dumping data for table `#__finder_taxonomy` -- REPLACE INTO `#__finder_taxonomy` (`id`, `parent_id`, `title`, `state`, `access`, `ordering`) VALUES (1, 0, 'ROOT', 0, 0, 0); -- -------------------------------------------------------- -- -- Table structure for table `#__finder_taxonomy_map` -- CREATE TABLE IF NOT EXISTS `#__finder_taxonomy_map` ( `link_id` int(10) unsigned NOT NULL, `node_id` int(10) unsigned NOT NULL, PRIMARY KEY (`link_id`,`node_id`), KEY `link_id` (`link_id`), KEY `node_id` (`node_id`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_terms` -- CREATE TABLE IF NOT EXISTS `#__finder_terms` ( `term_id` int(10) unsigned NOT NULL auto_increment, `term` varchar(75) NOT NULL, `stem` varchar(75) NOT NULL, `common` tinyint(1) unsigned NOT NULL default '0', `phrase` tinyint(1) unsigned NOT NULL default '0', `weight` float unsigned NOT NULL default '0', `soundex` varchar(75) NOT NULL, `links` int(10) NOT NULL default '0', PRIMARY KEY (`term_id`), UNIQUE KEY `idx_term` (`term`), KEY `idx_term_phrase` (`term`,`phrase`), KEY `idx_stem_phrase` (`stem`,`phrase`), KEY `idx_soundex_phrase` (`soundex`,`phrase`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_terms_common` -- CREATE TABLE IF NOT EXISTS `#__finder_terms_common` ( `term` varchar(75) NOT NULL, `language` varchar(3) NOT NULL, KEY `idx_word_lang` (`term`,`language`), KEY `idx_lang` (`language`) ) DEFAULT CHARSET=utf8; -- -- Dumping data for table `#__finder_terms_common` -- REPLACE INTO `#__finder_terms_common` (`term`, `language`) VALUES ('a', 'en'), ('about', 'en'), ('after', 'en'), ('ago', 'en'), ('all', 'en'), ('am', 'en'), ('an', 'en'), ('and', 'en'), ('ani', 'en'), ('any', 'en'), ('are', 'en'), ('aren''t', 'en'), ('as', 'en'), ('at', 'en'), ('be', 'en'), ('but', 'en'), ('by', 'en'), ('for', 'en'), ('from', 'en'), ('get', 'en'), ('go', 'en'), ('how', 'en'), ('if', 'en'), ('in', 'en'), ('into', 'en'), ('is', 'en'), ('isn''t', 'en'), ('it', 'en'), ('its', 'en'), ('me', 'en'), ('more', 'en'), ('most', 'en'), ('must', 'en'), ('my', 'en'), ('new', 'en'), ('no', 'en'), ('none', 'en'), ('not', 'en'), ('noth', 'en'), ('nothing', 'en'), ('of', 'en'), ('off', 'en'), ('often', 'en'), ('old', 'en'), ('on', 'en'), ('onc', 'en'), ('once', 'en'), ('onli', 'en'), ('only', 'en'), ('or', 'en'), ('other', 'en'), ('our', 'en'), ('ours', 'en'), ('out', 'en'), ('over', 'en'), ('page', 'en'), ('she', 'en'), ('should', 'en'), ('small', 'en'), ('so', 'en'), ('some', 'en'), ('than', 'en'), ('thank', 'en'), ('that', 'en'), ('the', 'en'), ('their', 'en'), ('theirs', 'en'), ('them', 'en'), ('then', 'en'), ('there', 'en'), ('these', 'en'), ('they', 'en'), ('this', 'en'), ('those', 'en'), ('thus', 'en'), ('time', 'en'), ('times', 'en'), ('to', 'en'), ('too', 'en'), ('true', 'en'), ('under', 'en'), ('until', 'en'), ('up', 'en'), ('upon', 'en'), ('use', 'en'), ('user', 'en'), ('users', 'en'), ('veri', 'en'), ('version', 'en'), ('very', 'en'), ('via', 'en'), ('want', 'en'), ('was', 'en'), ('way', 'en'), ('were', 'en'), ('what', 'en'), ('when', 'en'), ('where', 'en'), ('whi', 'en'), ('which', 'en'), ('who', 'en'), ('whom', 'en'), ('whose', 'en'), ('why', 'en'), ('wide', 'en'), ('will', 'en'), ('with', 'en'), ('within', 'en'), ('without', 'en'), ('would', 'en'), ('yes', 'en'), ('yet', 'en'), ('you', 'en'), ('your', 'en'), ('yours', 'en'); -- -------------------------------------------------------- -- -- Table structure for table `#__finder_tokens` -- CREATE TABLE IF NOT EXISTS `#__finder_tokens` ( `term` varchar(75) NOT NULL, `stem` varchar(75) NOT NULL, `common` tinyint(1) unsigned NOT NULL default '0', `phrase` tinyint(1) unsigned NOT NULL default '0', `weight` float unsigned NOT NULL default '1', `context` tinyint(1) unsigned NOT NULL default '2', KEY `idx_word` (`term`), KEY `idx_context` (`context`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_tokens_aggregate` -- CREATE TABLE IF NOT EXISTS `#__finder_tokens_aggregate` ( `term_id` int(10) unsigned NOT NULL, `map_suffix` char(1) NOT NULL, `term` varchar(75) NOT NULL, `stem` varchar(75) NOT NULL, `common` tinyint(1) unsigned NOT NULL default '0', `phrase` tinyint(1) unsigned NOT NULL default '0', `term_weight` float unsigned NOT NULL, `context` tinyint(1) unsigned NOT NULL default '2', `context_weight` float unsigned NOT NULL, `total_weight` float unsigned NOT NULL, KEY `token` (`term`), KEY `keyword_id` (`term_id`) ) DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Table structure for table `#__finder_types` -- CREATE TABLE IF NOT EXISTS `#__finder_types` ( `id` int(10) unsigned NOT NULL auto_increment, `title` varchar(100) NOT NULL, `mime` varchar(100) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `title` (`title`) ) DEFAULT CHARSET=utf8; PKb��\�)���0components/com_finder/sql/install.postgresql.sqlnu�[���-- -- Table: #__finder_filters -- CREATE TABLE "#__finder_filters" ( "filter_id" serial NOT NULL, "title" character varying(255) NOT NULL, "alias" character varying(255) NOT NULL, "state" smallint DEFAULT 1 NOT NULL, "created" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "created_by" integer NOT NULL, "created_by_alias" character varying(255) NOT NULL, "modified" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "modified_by" integer DEFAULT 0 NOT NULL, "checked_out" integer DEFAULT 0 NOT NULL, "checked_out_time" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "map_count" integer DEFAULT 0 NOT NULL, "data" text NOT NULL, "params" text, PRIMARY KEY ("filter_id") ); -- -- Table: #__finder_links -- CREATE TABLE "#__finder_links" ( "link_id" serial NOT NULL, "url" character varying(255) NOT NULL, "route" character varying(255) NOT NULL, "title" character varying(255) DEFAULT NULL, "description" character varying(255) DEFAULT NULL, "indexdate" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "md5sum" character varying(32) DEFAULT NULL, "published" smallint DEFAULT 1 NOT NULL, "state" integer DEFAULT 1, "access" integer DEFAULT 0, "language" character varying(8) NOT NULL, "publish_start_date" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "publish_end_date" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "start_date" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "end_date" timestamp without time zone DEFAULT '1970-01-01 00:00:00' NOT NULL, "list_price" numeric(8,2) DEFAULT 0 NOT NULL, "sale_price" numeric(8,2) DEFAULT 0 NOT NULL, "type_id" bigint NOT NULL, "object" bytea NOT NULL, PRIMARY KEY ("link_id") ); CREATE INDEX "#__finder_links_idx_type" on "#__finder_links" ("type_id"); CREATE INDEX "#__finder_links_idx_title" on "#__finder_links" ("title"); CREATE INDEX "#__finder_links_idx_md5" on "#__finder_links" ("md5sum"); CREATE INDEX "#__finder_links_idx_url" on "#__finder_links" (url(75)); CREATE INDEX "#__finder_links_idx_published_list" on "#__finder_links" ("published", "state", "access", "publish_start_date", "publish_end_date", "list_price"); CREATE INDEX "#__finder_links_idx_published_sale" on "#__finder_links" ("published", "state", "access", "publish_start_date", "publish_end_date", "sale_price"); -- -- Table: #__finder_links_terms0 -- CREATE TABLE "#__finder_links_terms0" ( "link_id" integer NOT NULL, "term_id" integer NOT NULL, "weight" numeric(8,2) NOT NULL, PRIMARY KEY ("link_id", "term_id") ); CREATE INDEX "#__finder_links_terms0_idx_term_weight" on "#__finder_links_terms0" ("term_id", "weight"); CREATE INDEX "#__finder_links_terms0_idx_link_term_weight" on "#__finder_links_terms0" ("link_id", "term_id", "weight"); -- -- Table: #__finder_links_terms1 -- CREATE TABLE "#__finder_links_terms1" ( "link_id" integer NOT NULL, "term_id" integer NOT NULL, "weight" numeric(8,2) NOT NULL, PRIMARY KEY ("link_id", "term_id") ); CREATE INDEX "#__finder_links_terms1_idx_term_weight" on "#__finder_links_terms1" ("term_id", "weight"); CREATE INDEX "#__finder_links_terms1_idx_link_term_weight" on "#__finder_links_terms1" ("link_id", "term_id", "weight"); -- -- Table: #__finder_links_terms2 -- CREATE TABLE "#__finder_links_terms2" ( "link_id" integer NOT NULL, "term_id" integer NOT NULL, "weight" numeric(8,2) NOT NULL, PRIMARY KEY ("link_id", "term_id") ); CREATE INDEX "#__finder_links_terms2_idx_term_weight" on "#__finder_links_terms2" ("term_id", "weight"); CREATE INDEX "#__finder_links_terms2_idx_link_term_weight" on "#__finder_links_terms2" ("link_id", "term_id", "weight"); -- -- Table: #__finder_links_terms3 -- CREATE TABLE "#__finder_links_terms3" ( "link_id" integer NOT NULL, "term_id" integer NOT NULL, "weight" numeric(8,2) NOT NULL, PRIMARY KEY ("link_id", "term_id") ); CREATE INDEX "#__finder_links_terms3_idx_term_weight" on "#__finder_links_terms3" ("term_id", "weight"); CREATE INDEX "#__finder_links_terms3_idx_link_term_weight" on "#__finder_links_terms3" ("link_id", "term_id", "weight"); -- -- Table: #__finder_links_terms4 -- CREATE TABLE "#__finder_links_terms4" ( "link_id" integer NOT NULL, "term_id" integer NOT NULL, "weight" numeric(8,2) NOT NULL, PRIMARY KEY ("link_id", "term_id") ); CREATE INDEX "#__finder_links_terms4_idx_term_weight" on "#__finder_links_terms4" ("term_id", "weight"); CREATE INDEX "#__finder_links_terms4_idx_link_term_weight" on "#__finder_links_terms4" ("link_id", "term_id", "weight"); -- -- Table: #__finder_links_terms5 -- CREATE TABLE "#__finder_links_terms5" ( "link_id" integer NOT NULL, "term_id" integer NOT NULL, "weight" numeric(8,2) NOT NULL, PRIMARY KEY ("link_id", "term_id") ); CREATE INDEX "#__finder_links_terms5_idx_term_weight" on "#__finder_links_terms5" ("term_id", "weight"); CREATE INDEX "#__finder_links_terms5_idx_link_term_weight" on "#__finder_links_terms5" ("link_id", "term_id", "weight"); -- -- Table: #__finder_links_terms6 -- CREATE TABLE "#__finder_links_terms6" ( "link_id" integer NOT NULL, "term_id" integer NOT NULL, "weight" numeric(8,2) NOT NULL, PRIMARY KEY ("link_id", "term_id") ); CREATE INDEX "#__finder_links_terms6_idx_term_weight" on "#__finder_links_terms6" ("term_id", "weight"); CREATE INDEX "#__finder_links_terms6_idx_link_term_weight" on "#__finder_links_terms6" ("link_id", "term_id", "weight"); -- -- Table: #__finder_links_terms7 -- CREATE TABLE "#__finder_links_terms7" ( "link_id" integer NOT NULL, "term_id" integer NOT NULL, "weight" numeric(8,2) NOT NULL, PRIMARY KEY ("link_id", "term_id") ); CREATE INDEX "#__finder_links_terms7_idx_term_weight" on "#__finder_links_terms7" ("term_id", "weight"); CREATE INDEX "#__finder_links_terms7_idx_link_term_weight" on "#__finder_links_terms7" ("link_id", "term_id", "weight"); -- -- Table: #__finder_links_terms8 -- CREATE TABLE "#__finder_links_terms8" ( "link_id" integer NOT NULL, "term_id" integer NOT NULL, "weight" numeric(8,2) NOT NULL, PRIMARY KEY ("link_id", "term_id") ); CREATE INDEX "#__finder_links_terms8_idx_term_weight" on "#__finder_links_terms8" ("term_id", "weight"); CREATE INDEX "#__finder_links_terms8_idx_link_term_weight" on "#__finder_links_terms8" ("link_id", "term_id", "weight"); -- -- Table: #__finder_links_terms9 -- CREATE TABLE "#__finder_links_terms9" ( "link_id" integer NOT NULL, "term_id" integer NOT NULL, "weight" numeric(8,2) NOT NULL, PRIMARY KEY ("link_id", "term_id") ); CREATE INDEX "#__finder_links_terms9_idx_term_weight" on "#__finder_links_terms9" ("term_id", "weight"); CREATE INDEX "#__finder_links_terms9_idx_link_term_weight" on "#__finder_links_terms9" ("link_id", "term_id", "weight"); -- -- Table: #__finder_links_termsa -- CREATE TABLE "#__finder_links_termsa" ( "link_id" integer NOT NULL, "term_id" integer NOT NULL, "weight" numeric(8,2) NOT NULL, PRIMARY KEY ("link_id", "term_id") ); CREATE INDEX "#__finder_links_termsa_idx_term_weight" on "#__finder_links_termsa" ("term_id", "weight"); CREATE INDEX "#__finder_links_termsa_idx_link_term_weight" on "#__finder_links_termsa" ("link_id", "term_id", "weight"); -- -- Table: #__finder_links_termsb -- CREATE TABLE "#__finder_links_termsb" ( "link_id" integer NOT NULL, "term_id" integer NOT NULL, "weight" numeric(8,2) NOT NULL, PRIMARY KEY ("link_id", "term_id") ); CREATE INDEX "#__finder_links_termsb_idx_term_weight" on "#__finder_links_termsb" ("term_id", "weight"); CREATE INDEX "#__finder_links_termsb_idx_link_term_weight" on "#__finder_links_termsb" ("link_id", "term_id", "weight"); -- -- Table: #__finder_links_termsc -- CREATE TABLE "#__finder_links_termsc" ( "link_id" integer NOT NULL, "term_id" integer NOT NULL, "weight" numeric(8,2) NOT NULL, PRIMARY KEY ("link_id", "term_id") ); CREATE INDEX "#__finder_links_termsc_idx_term_weight" on "#__finder_links_termsc" ("term_id", "weight"); CREATE INDEX "#__finder_links_termsc_idx_link_term_weight" on "#__finder_links_termsc" ("link_id", "term_id", "weight"); -- -- Table: #__finder_links_termsd -- CREATE TABLE "#__finder_links_termsd" ( "link_id" integer NOT NULL, "term_id" integer NOT NULL, "weight" numeric(8,2) NOT NULL, PRIMARY KEY ("link_id", "term_id") ); CREATE INDEX "#__finder_links_termsd_idx_term_weight" on "#__finder_links_termsd" ("term_id", "weight"); CREATE INDEX "#__finder_links_termsd_idx_link_term_weight" on "#__finder_links_termsd" ("link_id", "term_id", "weight"); -- -- Table: #__finder_links_termse -- CREATE TABLE "#__finder_links_termse" ( "link_id" integer NOT NULL, "term_id" integer NOT NULL, "weight" numeric(8,2) NOT NULL, PRIMARY KEY ("link_id", "term_id") ); CREATE INDEX "#__finder_links_termse_idx_term_weight" on "#__finder_links_termse" ("term_id", "weight"); CREATE INDEX "#__finder_links_termse_idx_link_term_weight" on "#__finder_links_termse" ("link_id", "term_id", "weight"); -- -- Table: #__finder_links_termsf -- CREATE TABLE "#__finder_links_termsf" ( "link_id" integer NOT NULL, "term_id" integer NOT NULL, "weight" numeric(8,2) NOT NULL, PRIMARY KEY ("link_id", "term_id") ); CREATE INDEX "#__finder_links_termsf_idx_term_weight" on "#__finder_links_termsf" ("term_id", "weight"); CREATE INDEX "#__finder_links_termsf_idx_link_term_weight" on "#__finder_links_termsf" ("link_id", "term_id", "weight"); -- -- Table: #__finder_taxonomy -- CREATE TABLE "#__finder_taxonomy" ( "id" serial NOT NULL, "parent_id" integer DEFAULT 0 NOT NULL, "title" character varying(255) NOT NULL, "state" smallint DEFAULT 1 NOT NULL, "access" smallint DEFAULT 0 NOT NULL, "ordering" smallint DEFAULT 0 NOT NULL, PRIMARY KEY ("id") ); CREATE INDEX "#__finder_taxonomy_parent_id" on "#__finder_taxonomy" ("parent_id"); CREATE INDEX "#__finder_taxonomy_state" on "#__finder_taxonomy" ("state"); CREATE INDEX "#__finder_taxonomy_ordering" on "#__finder_taxonomy" ("ordering"); CREATE INDEX "#__finder_taxonomy_access" on "#__finder_taxonomy" ("access"); CREATE INDEX "#__finder_taxonomy_idx_parent_published" on "#__finder_taxonomy" ("parent_id", "state", "access"); -- -- Dumping data for table #__finder_taxonomy -- UPDATE "#__finder_taxonomy" SET ("id", "parent_id", "title", "state", "access", "ordering") = (1, 0, 'ROOT', 0, 0, 0) WHERE "id"=1; INSERT INTO "#__finder_taxonomy" ("id", "parent_id", "title", "state", "access", "ordering") SELECT 1, 0, 'ROOT', 0, 0, 0 WHERE 1 NOT IN (SELECT 1 FROM "#__finder_taxonomy" WHERE "id"=1); -- -- Table: #__finder_taxonomy_map -- CREATE TABLE "#__finder_taxonomy_map" ( "link_id" integer NOT NULL, "node_id" integer NOT NULL, PRIMARY KEY ("link_id", "node_id") ); CREATE INDEX "#__finder_taxonomy_map_link_id" on "#__finder_taxonomy_map" ("link_id"); CREATE INDEX "#__finder_taxonomy_map_node_id" on "#__finder_taxonomy_map" ("node_id"); -- -- Table: #__finder_terms -- CREATE TABLE "#__finder_terms" ( "term_id" serial NOT NULL, "term" character varying(75) NOT NULL, "stem" character varying(75) NOT NULL, "common" smallint DEFAULT 0 NOT NULL, "phrase" smallint DEFAULT 0 NOT NULL, "weight" numeric(8,2) DEFAULT 0 NOT NULL, "soundex" character varying(75) NOT NULL, "links" integer DEFAULT 0 NOT NULL, PRIMARY KEY ("term_id"), CONSTRAINT "#__finder_terms_idx_term" UNIQUE ("term") ); CREATE INDEX "#__finder_terms_idx_term_phrase" on "#__finder_terms" ("term", "phrase"); CREATE INDEX "#__finder_terms_idx_stem_phrase" on "#__finder_terms" ("stem", "phrase"); CREATE INDEX "#__finder_terms_idx_soundex_phrase" on "#__finder_terms" ("soundex", "phrase"); -- -- Table: #__finder_terms_common -- CREATE TABLE "#__finder_terms_common" ( "term" character varying(75) NOT NULL, "language" character varying(3) NOT NULL ); CREATE INDEX "#__finder_terms_common_idx_word_lang" on "#__finder_terms_common" ("term", "language"); CREATE INDEX "#__finder_terms_common_idx_lang" on "#__finder_terms_common" ("language"); -- -- Dumping data for table `#__finder_terms_common` -- -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('a', 'en') WHERE "term"='a'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'a', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='a'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('about', 'en') WHERE "term"='about'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'about', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='about'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('after', 'en') WHERE "term"='after'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'after', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='after'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('ago', 'en') WHERE "term"='ago'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'ago', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='ago'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('all', 'en') WHERE "term"='all'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'all', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='all'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('am', 'en') WHERE "term"='am'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'am', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='am'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('an', 'en') WHERE "term"='an'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'an', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='an'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('and', 'en') WHERE "term"='and'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'and', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='and'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('ani', 'en') WHERE "term"='ani'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'ani', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='ani'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('any', 'en') WHERE "term"='any'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'any', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='any'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('are', 'en') WHERE "term"='are'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'are', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='are'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('aren''t', 'en') WHERE "term"='aren''t'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'aren''t', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='aren''t'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('as', 'en') WHERE "term"='as'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'as', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='as'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('at', 'en') WHERE "term"='at'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'at', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='at'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('be', 'en') WHERE "term"='be'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'be', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='be'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('but', 'en') WHERE "term"='but'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'but', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='but'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('by', 'en') WHERE "term"='by'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'by', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='by'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('for', 'en') WHERE "term"='for'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'for', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='for'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('from', 'en') WHERE "term"='from'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'from', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='from'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('get', 'en') WHERE "term"='get'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'get', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='get'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('go', 'en') WHERE "term"='go'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'go', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='go'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('how', 'en') WHERE "term"='how'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'how', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='how'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('if', 'en') WHERE "term"='if'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'if', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='if'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('in', 'en') WHERE "term"='in'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'in', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='in'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('into', 'en') WHERE "term"='into'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'into', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='into'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('is', 'en') WHERE "term"='is'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'is', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='is'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('isn''t', 'en') WHERE "term"='isn''t'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'isn''t', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='isn''t'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('it', 'en') WHERE "term"='it'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'it', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='it'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('its', 'en') WHERE "term"='its'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'its', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='its'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('me', 'en') WHERE "term"='me'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'me', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='me'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('more', 'en') WHERE "term"='more'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'more', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='more'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('most', 'en') WHERE "term"='most'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'most', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='most'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('must', 'en') WHERE "term"='must'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'must', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='must'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('my', 'en') WHERE "term"='my'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'my', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='my'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('new', 'en') WHERE "term"='new'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'new', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='new'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('no', 'en') WHERE "term"='no'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'no', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='no'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('none', 'en') WHERE "term"='none'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'none', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='none'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('not', 'en') WHERE "term"='not'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'not', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='not'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('noth', 'en') WHERE "term"='noth'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'noth', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='noth'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('nothing', 'en') WHERE "term"='nothing'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'nothing', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='nothing'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('of', 'en') WHERE "term"='of'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'of', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='of'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('off', 'en') WHERE "term"='off'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'off', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='off'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('often', 'en') WHERE "term"='often'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'often', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='often'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('old', 'en') WHERE "term"='old'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'old', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='old'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('on', 'en') WHERE "term"='on'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'on', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='on'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('onc', 'en') WHERE "term"='onc'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'onc', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='onc'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('once', 'en') WHERE "term"='once'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'once', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='once'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('onli', 'en') WHERE "term"='onli'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'onli', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='onli'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('only', 'en') WHERE "term"='only'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'only', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='only'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('or', 'en') WHERE "term"='or'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'or', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='or'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('other', 'en') WHERE "term"='other'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'other', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='other'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('our', 'en') WHERE "term"='our'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'our', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='our'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('ours', 'en') WHERE "term"='ours'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'ours', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='ours'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('out', 'en') WHERE "term"='out'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'out', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='out'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('over', 'en') WHERE "term"='over'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'over', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='over'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('page', 'en') WHERE "term"='page'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'page', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='page'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('she', 'en') WHERE "term"='she'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'she', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='she'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('should', 'en') WHERE "term"='should'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'should', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='should'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('small', 'en') WHERE "term"='small'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'small', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='small'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('so', 'en') WHERE "term"='so'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'so', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='so'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('some', 'en') WHERE "term"='some'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'some', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='some'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('than', 'en') WHERE "term"='than'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'than', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='than'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('thank', 'en') WHERE "term"='thank'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'thank', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='thank'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('that', 'en') WHERE "term"='that'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'that', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='that'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('the', 'en') WHERE "term"='the'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'the', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='the'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('their', 'en') WHERE "term"='their'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'their', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='their'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('theirs', 'en') WHERE "term"='theirs'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'theirs', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='theirs'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('them', 'en') WHERE "term"='them'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'them', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='them'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('then', 'en') WHERE "term"='then'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'then', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='then'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('there', 'en') WHERE "term"='there'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'there', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='there'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('these', 'en') WHERE "term"='these'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'these', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='these'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('they', 'en') WHERE "term"='they'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'they', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='they'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('this', 'en') WHERE "term"='this'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'this', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='this'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('those', 'en') WHERE "term"='those'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'those', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='those'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('thus', 'en') WHERE "term"='thus'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'thus', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='thus'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('time', 'en') WHERE "term"='time'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'time', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='time'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('times', 'en') WHERE "term"='times'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'times', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='times'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('to', 'en') WHERE "term"='to'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'to', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='to'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('too', 'en') WHERE "term"='too'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'too', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='too'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('true', 'en') WHERE "term"='true'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'true', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='true'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('under', 'en')WHERE "term"='under'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'under', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='under'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('until', 'en') WHERE "term"='until'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'until', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='until'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('up', 'en') WHERE "term"='up'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'up', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='up'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('upon', 'en') WHERE "term"='upon'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'upon', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='upon'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('use', 'en') WHERE "term"='use'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'use', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='use'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('user', 'en') WHERE "term"='user'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'user', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='user'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('users', 'en') WHERE "term"='users'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'users', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='users'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('veri', 'en') WHERE "term"='veri'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'veri', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='veri'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('version', 'en') WHERE "term"='version'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'version', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='version'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('very', 'en') WHERE "term"='very'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'very', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='very'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('via', 'en') WHERE "term"='via'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'via', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='via'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('want', 'en') WHERE "term"='want'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'want', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='want'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('was', 'en') WHERE "term"='was'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'was', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='was'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('way', 'en') WHERE "term"='way'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'way', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='way'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('were', 'en') WHERE "term"='were'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'were', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='were'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('what', 'en') WHERE "term"='what'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'what', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='what'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('when', 'en') WHERE "term"='when'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'when', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='when'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('where', 'en') WHERE "term"='where'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'where', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='where'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('whi', 'en') WHERE "term"='whi'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'whi', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='whi'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('which', 'en') WHERE "term"='which'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'which', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='which'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('who', 'en') WHERE "term"='who'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'who', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='who'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('whom', 'en') WHERE "term"='whom'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'whom', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='whom'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('whose', 'en') WHERE "term"='whose'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'whose', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='whose'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('why', 'en') WHERE "term"='why'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'why', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='why'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('wide', 'en') WHERE "term"='wide'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'wide', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='wide'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('will', 'en') WHERE "term"='will'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'will', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='will'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('with', 'en') WHERE "term"='with'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'with', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='with'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('within', 'en') WHERE "term"='within'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'within', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='within'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('without', 'en') WHERE "term"='without'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'without', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='without'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('would', 'en') WHERE "term"='would'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'would', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='would'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('yes', 'en') WHERE "term"='yes'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'yes', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='yes'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('yet', 'en') WHERE "term"='yet'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'yet', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='yet'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('you', 'en') WHERE "term"='you'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'you', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='you'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('your', 'en') WHERE "term"='your'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'your', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='your'); -- UPDATE "#__finder_terms_common" SET ("term", "language") = ('yours', 'en') WHERE "term"='yours'; INSERT INTO "#__finder_terms_common" ("term", "language") SELECT 'yours', 'en' WHERE 1 NOT IN (SELECT 1 FROM "#__finder_terms_common" WHERE "term"='yours'); -- -- Table: #__finder_tokens -- CREATE TABLE "#__finder_tokens" ( "term" character varying(75) NOT NULL, "stem" character varying(75) NOT NULL, "common" smallint DEFAULT 0 NOT NULL, "phrase" smallint DEFAULT 0 NOT NULL, "weight" numeric(8,2) DEFAULT 1 NOT NULL, "context" smallint DEFAULT 2 NOT NULL ); CREATE INDEX "#__finder_tokens_idx_word" on "#__finder_tokens" ("term"); CREATE INDEX "#__finder_tokens_idx_context" on "#__finder_tokens" ("context"); -- -- Table: #__finder_tokens_aggregate -- CREATE TABLE "#__finder_tokens_aggregate" ( "term_id" integer NOT NULL, "map_suffix" character(1) NOT NULL, "term" character varying(75) NOT NULL, "stem" character varying(75) NOT NULL, "common" smallint DEFAULT 0 NOT NULL, "phrase" smallint DEFAULT 0 NOT NULL, "term_weight" numeric(8,2) NOT NULL, "context" smallint DEFAULT 2 NOT NULL, "context_weight" numeric(8,2) NOT NULL, "total_weight" numeric(8,2) NOT NULL ); CREATE INDEX "#__finder_tokens_aggregate_token" on "#__finder_tokens_aggregate" ("term"); CREATE INDEX "_#__finder_tokens_aggregate_keyword_id" on "#__finder_tokens_aggregate" ("term_id"); -- -- Table: #__finder_types -- CREATE TABLE "#__finder_types" ( "id" serial NOT NULL, "title" character varying(100) NOT NULL, "mime" character varying(100) NOT NULL, PRIMARY KEY ("id"), CONSTRAINT "#__finder_types_title" UNIQUE ("title") ); PKb��\�1�iww-components/com_finder/sql/uninstall.mysql.sqlnu�[���DROP TABLE IF EXISTS `#__finder_filters`; DROP TABLE IF EXISTS `#__finder_links`; DROP TABLE IF EXISTS `#__finder_links_terms0`; DROP TABLE IF EXISTS `#__finder_links_terms1`; DROP TABLE IF EXISTS `#__finder_links_terms2`; DROP TABLE IF EXISTS `#__finder_links_terms3`; DROP TABLE IF EXISTS `#__finder_links_terms4`; DROP TABLE IF EXISTS `#__finder_links_terms5`; DROP TABLE IF EXISTS `#__finder_links_terms6`; DROP TABLE IF EXISTS `#__finder_links_terms7`; DROP TABLE IF EXISTS `#__finder_links_terms8`; DROP TABLE IF EXISTS `#__finder_links_terms9`; DROP TABLE IF EXISTS `#__finder_links_termsa`; DROP TABLE IF EXISTS `#__finder_links_termsb`; DROP TABLE IF EXISTS `#__finder_links_termsc`; DROP TABLE IF EXISTS `#__finder_links_termsd`; DROP TABLE IF EXISTS `#__finder_links_termse`; DROP TABLE IF EXISTS `#__finder_links_termsf`; DROP TABLE IF EXISTS `#__finder_taxonomy`; DROP TABLE IF EXISTS `#__finder_taxonomy_map`; DROP TABLE IF EXISTS `#__finder_terms`; DROP TABLE IF EXISTS `#__finder_terms_common`; DROP TABLE IF EXISTS `#__finder_tokens`; DROP TABLE IF EXISTS `#__finder_tokens_aggregate`; DROP TABLE IF EXISTS `#__finder_types`; PKb��\|I�33 components/com_finder/access.xmlnu�[���<?xml version="1.0" encoding="utf-8" ?> <access component="com_finder"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> </section> </access> PKb��\݀�]��0components/com_finder/views/filter/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); JHtml::_('formbehavior.chosen', 'select'); JFactory::getDocument()->addScriptDeclaration(' Joomla.submitbutton = function(task) { if (task == "filter.cancel" || document.formvalidator.isValid(document.getElementById("adminForm"))) { Joomla.submitform(task, document.getElementById("adminForm")); } }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_finder&view=filter&layout=edit&filter_id=' . (int) $this->item->filter_id); ?>" method="post" name="adminForm" id="adminForm" class="form-validate"> <?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?> <div class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'details')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'details', JText::_('COM_FINDER_EDIT_FILTER', true)); ?> <div class="row-fluid"> <div class="span9"> <div class="form-vertical"> <?php echo $this->form->getControlGroup('map_count'); ?> <div id="finder-filter-window"> <?php echo JHtml::_('filter.slider', array('selected_nodes' => $this->filter->data)); ?> </div> </div> </div> <div class="span3"> <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'publishing', JText::_('JGLOBAL_FIELDSET_PUBLISHING', true)); ?> <div class="row-fluid form-horizontal-desktop"> <?php echo JLayoutHelper::render('joomla.edit.publishingdata', $this); ?> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JLayoutHelper::render('joomla.edit.params', $this); ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> </div> <input type="hidden" name="task" value="" /> <input type="hidden" name="return" value="<?php echo JFactory::getApplication()->input->get('return', '', 'cmd');?>" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\����0components/com_finder/views/filter/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Filter view class for Finder. * * @since 2.5 */ class FinderViewFilter extends JViewLegacy { /** * Method to display the view. * * @param string $tpl A template file to load. [optional] * * @return mixed A string if successful, otherwise a JError object. * * @since 2.5 */ public function display($tpl = null) { // Load the view data. $this->filter = $this->get('Filter'); $this->item = $this->get('Item'); $this->form = $this->get('Form'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::addIncludePath(JPATH_SITE . '/components/com_finder/helpers/html'); // Configure the toolbar. $this->addToolbar(); parent::display($tpl); } /** * Method to configure the toolbar for this view. * * @return void * * @since 2.5 */ protected function addToolbar() { JFactory::getApplication()->input->set('hidemainmenu', true); $user = JFactory::getUser(); $userId = $user->get('id'); $isNew = ($this->item->filter_id == 0); $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $userId); $canDo = JHelperContent::getActions('com_finder'); // Configure the toolbar. JToolbarHelper::title( $isNew ? JText::_('COM_FINDER_FILTER_NEW_TOOLBAR_TITLE') : JText::_('COM_FINDER_FILTER_EDIT_TOOLBAR_TITLE'), 'zoom-in finder' ); // Set the actions for new and existing records. if ($isNew) { // For new records, check the create permission. if ($canDo->get('core.create')) { JToolbarHelper::apply('filter.apply'); JToolbarHelper::save('filter.save'); JToolbarHelper::save2new('filter.save2new'); } JToolbarHelper::cancel('filter.cancel'); } else { // Can't save the record if it's checked out. if (!$checkedOut) { // Since it's an existing record, check the edit permission. if ($canDo->get('core.edit')) { JToolbarHelper::apply('filter.apply'); JToolbarHelper::save('filter.save'); // We can save this record, but check the create permission to see if we can return to make a new one. if ($canDo->get('core.create')) { JToolbarHelper::save2new('filter.save2new'); } } } // If an existing item, can save as a copy if ($canDo->get('core.create')) { JToolbarHelper::save2copy('filter.save2copy'); } JToolbarHelper::cancel('filter.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS_EDIT'); } } PKb��\ �z���4components/com_finder/views/filters/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JHtml::_('formbehavior.chosen', 'select'); JHtml::_('bootstrap.tooltip'); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); JText::script('COM_FINDER_INDEX_CONFIRM_DELETE_PROMPT'); JFactory::getDocument()->addScriptDeclaration(' Joomla.submitbutton = function(pressbutton) { if (pressbutton == "filters.delete") { if (confirm(Joomla.JText._("COM_FINDER_INDEX_CONFIRM_DELETE_PROMPT"))) { Joomla.submitform(pressbutton); } else { return false; } } Joomla.submitform(pressbutton); }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_finder&view=filters');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_FINDER_FILTER_SEARCH_DESCRIPTION'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> </div> <div class="clearfix"> </div> <table class="table table-striped"> <thead> <tr> <th width="1%"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th class="nowrap"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_CREATED_BY', 'a.created_by_alias', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_FINDER_FILTER_TIMESTAMP', 'a.created', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_FINDER_FILTER_MAP_COUNT', 'a.map_count', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.filter_id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php if (count($this->items) == 0) : ?> <tr class="row0"> <td class="center" colspan="7"> <?php if ($this->total == 0) : ?> <?php echo JText::_('COM_FINDER_NO_FILTERS'); ?> <a href="<?php echo JRoute::_('index.php?option=com_finder&task=filter.add'); ?>" title="<?php echo JText::_('COM_FINDER_CREATE_FILTER'); ?>"> <?php echo JText::_('COM_FINDER_CREATE_FILTER'); ?> </a> <?php else : ?> <?php echo JText::_('COM_FINDER_NO_RESULTS'); ?> <?php endif; ?> </td> </tr> <?php endif; ?> <?php foreach ($this->items as $i => $item) : $canCreate = $user->authorise('core.create', 'com_finder'); $canEdit = $user->authorise('core.edit', 'com_finder'); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_finder') && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->filter_id); ?> </td> <td> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'filters.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_finder&task=filter.edit&filter_id=' . (int) $item->filter_id); ?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> </td> <td class="center nowrap"> <?php echo JHtml::_('jgrid.published', $item->state, $i, 'filters.', $canChange); ?> </td> <td class="nowrap hidden-phone"> <?php echo $item->created_by_alias ? $item->created_by_alias : $item->user_name; ?> </td> <td class="nowrap hidden-phone"> <?php echo JHtml::_('date', $item->created, JText::_('DATE_FORMAT_LC4')); ?> </td> <td class="nowrap hidden-phone"> <?php echo $item->map_count; ?> </td> <td class="hidden-phone"> <?php echo (int) $item->filter_id; ?> </td> </tr> <?php endforeach; ?> </tbody> <tfoot> <tr> <td colspan="7" class="nowrap"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> </table> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $this->state->get('list.ordering'); ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $this->state->get('list.direction'); ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�h=�f f 1components/com_finder/views/filters/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Filters view class for Finder. * * @since 2.5 */ class FinderViewFilters extends JViewLegacy { /** * Method to display the view. * * @param string $tpl A template file to load. [optional] * * @return mixed A string if successful, otherwise a JError object. * * @since 2.5 */ public function display($tpl = null) { // Load the view data. $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->total = $this->get('Total'); $this->state = $this->get('State'); FinderHelper::addSubmenu('filters'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); // Configure the toolbar. $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Method to configure the toolbar for this view. * * @return void * * @since 2.5 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_finder'); JToolbarHelper::title(JText::_('COM_FINDER_FILTERS_TOOLBAR_TITLE'), 'zoom-in finder'); $toolbar = JToolbar::getInstance('toolbar'); if ($canDo->get('core.create')) { JToolbarHelper::addNew('filter.add'); JToolbarHelper::editList('filter.edit'); JToolbarHelper::divider(); } if ($canDo->get('core.edit.state')) { JToolbarHelper::publishList('filters.publish'); JToolbarHelper::unpublishList('filters.unpublish'); JToolbarHelper::divider(); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences('com_finder'); } JToolbarHelper::divider(); $toolbar->appendButton('Popup', 'bars', 'COM_FINDER_STATISTICS', 'index.php?option=com_finder&view=statistics&tmpl=component', 550, 350); JToolbarHelper::divider(); JToolbarHelper::help('JHELP_COMPONENTS_FINDER_MANAGE_SEARCH_FILTERS'); if ($canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'filters.delete'); JToolbarHelper::divider(); } JHtmlSidebar::setAction('index.php?option=com_finder&view=filters'); JHtmlSidebar::addFilter( JText::_('COM_FINDER_INDEX_FILTER_BY_STATE'), 'filter_state', JHtml::_('select.options', JHtml::_('finder.statelist'), 'value', 'text', $this->state->get('filter.state')) ); } } PKb��\�� ��2components/com_finder/views/index/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JHtml::_('bootstrap.tooltip'); JHtml::_('formbehavior.chosen', 'select'); JHtml::_('bootstrap.popover'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $lang = JFactory::getLanguage(); JText::script('COM_FINDER_INDEX_CONFIRM_PURGE_PROMPT'); JText::script('COM_FINDER_INDEX_CONFIRM_DELETE_PROMPT'); JFactory::getDocument()->addScriptDeclaration(' Joomla.submitbutton = function(pressbutton) { if (pressbutton == "index.purge") { if (confirm(Joomla.JText._("COM_FINDER_INDEX_CONFIRM_PURGE_PROMPT"))) { Joomla.submitform(pressbutton); } else { return false; } } if (pressbutton == "index.delete") { if (confirm(Joomla.JText._("COM_FINDER_INDEX_CONFIRM_DELETE_PROMPT"))) { Joomla.submitform(pressbutton); } else { return false; } } Joomla.submitform(pressbutton); }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_finder&view=index');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_FINDER_FILTER_SEARCH_DESCRIPTION'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> </div> <div class="clearfix"> </div> <?php if (!$this->pluginState['plg_content_finder']->enabled) : ?> <div class="alert fade in"> <button class="close" data-dismiss="alert">×</button> <?php echo JText::_('COM_FINDER_INDEX_PLUGIN_CONTENT_NOT_ENABLED'); ?> </div> <?php endif; ?> <table class="table table-striped"> <thead> <tr> <th width="1%" class="center"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="5%"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'l.published', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'l.title', $listDirn, $listOrder); ?> </th> <th class="hidden-phone"></th> <th width="5%" class="hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_FINDER_INDEX_HEADING_INDEX_TYPE', 'l.type_id', $listDirn, $listOrder); ?> </th> <th width="15%" class="hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_FINDER_INDEX_HEADING_INDEX_DATE', 'l.indexdate', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php if (count($this->items) == 0) : ?> <tr class="row0"> <td align="center" colspan="6"> <?php if ($this->total == 0) { echo JText::_('COM_FINDER_INDEX_NO_DATA') . ' ' . JText::_('COM_FINDER_INDEX_TIP'); } else { echo JText::_('COM_FINDER_INDEX_NO_CONTENT'); } ?> </td> </tr> <?php endif; ?> <?php $canChange = JFactory::getUser()->authorise('core.manage', 'com_finder'); ?> <?php foreach ($this->items as $i => $item) : ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->link_id); ?> </td> <td> <?php echo JHtml::_('jgrid.published', $item->published, $i, 'index.', $canChange, 'cb'); ?> </td> <td> <label for="cb<?php echo $i ?>"> <strong> <?php echo $this->escape($item->title); ?> </strong> <small class="muted"> <?php if (strlen($item->url) > 80) { echo substr($item->url, 0, 70) . '...'; } else { echo $item->url; } ?> </small> </label> </td> <td class="hidden-phone"> <?php if (intval($item->publish_start_date) or intval($item->publish_end_date) or intval($item->start_date) or intval($item->end_date)) : ?> <span class="icon-calendar pull-right pop hasPopover" data-placement="left" title="<?php echo JText::_('JDETAILS');?>" data-content="<?php echo JText::sprintf('COM_FINDER_INDEX_DATE_INFO', $item->publish_start_date, $item->publish_end_date, $item->start_date, $item->end_date);?>"></span> <?php endif; ?> </td> <td class="small nowrap hidden-phone"> <?php $key = FinderHelperLanguage::branchSingular($item->t_title); echo $lang->hasKey($key) ? JText::_($key) : $item->t_title; ?> </td> <td class="small nowrap hidden-phone"> <?php echo JHtml::_('date', $item->indexdate, JText::_('DATE_FORMAT_LC4')); ?> </td> </tr> <?php endforeach; ?> </tbody> <tfoot> <tr> <td colspan="6" class="nowrap"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> </table> <input type="hidden" name="task" value="display" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\8J��[[/components/com_finder/views/index/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JLoader::register('FinderHelperLanguage', JPATH_ADMINISTRATOR . '/components/com_finder/helpers/language.php'); /** * Index view class for Finder. * * @since 2.5 */ class FinderViewIndex extends JViewLegacy { /** * Method to display the view. * * @param string $tpl A template file to load. [optional] * * @return mixed A string if successful, otherwise a JError object. * * @since 2.5 */ public function display($tpl = null) { // Load plug-in language files. FinderHelperLanguage::loadPluginLanguage(); $this->items = $this->get('Items'); $this->total = $this->get('Total'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); $this->pluginState = $this->get('pluginState'); FinderHelper::addSubmenu('index'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); // Configure the toolbar. $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Method to configure the toolbar for this view. * * @return void * * @since 2.5 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_finder'); JToolbarHelper::title(JText::_('COM_FINDER_INDEX_TOOLBAR_TITLE'), 'zoom-in finder'); $toolbar = JToolbar::getInstance('toolbar'); $toolbar->appendButton( 'Popup', 'archive', 'COM_FINDER_INDEX', 'index.php?option=com_finder&view=indexer&tmpl=component', 500, 210, 0, 0, 'window.parent.location.reload()', 'COM_FINDER_HEADING_INDEXER' ); if ($canDo->get('core.edit.state')) { JToolbarHelper::publishList('index.publish'); JToolbarHelper::unpublishList('index.unpublish'); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences('com_finder'); } $toolbar->appendButton('Popup', 'bars', 'COM_FINDER_STATISTICS', 'index.php?option=com_finder&view=statistics&tmpl=component', 550, 350); if ($canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'index.delete'); } if ($canDo->get('core.edit.state')) { JToolbarHelper::trash('index.purge', 'COM_FINDER_INDEX_TOOLBAR_PURGE', false); } JToolbarHelper::help('JHELP_COMPONENTS_FINDER_MANAGE_INDEXED_CONTENT'); JHtmlSidebar::setAction('index.php?option=com_finder&view=index'); JHtmlSidebar::addFilter( JText::_('COM_FINDER_INDEX_FILTER_BY_STATE'), 'filter_state', JHtml::_('select.options', JHtml::_('finder.statelist'), 'value', 'text', $this->state->get('filter.state')) ); JHtmlSidebar::addFilter( JText::_('COM_FINDER_INDEX_TYPE_FILTER'), 'filter_type', JHtml::_('select.options', JHtml::_('finder.typeslist'), 'value', 'text', $this->state->get('filter.type')) ); } } PKb��\��FF7components/com_finder/views/statistics/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; ?> <h3> <?php echo JText::_('COM_FINDER_STATISTICS_TITLE') ?> </h3> <div class="row-fluid"> <div class="span6"> <p class="tab-description"><?php echo JText::sprintf('COM_FINDER_STATISTICS_STATS_DESCRIPTION', number_format($this->data->term_count, 0, JText::_('DECIMALS_SEPARATOR'), JText::_('THOUSANDS_SEPARATOR')), number_format($this->data->link_count, 0, JText::_('DECIMALS_SEPARATOR'), JText::_('THOUSANDS_SEPARATOR')), number_format($this->data->taxonomy_node_count, 0, JText::_('DECIMALS_SEPARATOR'), JText::_('THOUSANDS_SEPARATOR')), number_format($this->data->taxonomy_branch_count, 0, JText::_('DECIMALS_SEPARATOR'), JText::_('THOUSANDS_SEPARATOR'))); ?></p> <table class="table table-striped table-condensed"> <thead> <tr> <th> <?php echo JText::_('COM_FINDER_STATISTICS_LINK_TYPE_HEADING');?> </th> <th> <?php echo JText::_('COM_FINDER_STATISTICS_LINK_TYPE_COUNT');?> </th> </tr> </thead> <tbody> <?php foreach ($this->data->type_list as $type) :?> <tr> <td> <?php $lang_key = 'PLG_FINDER_STATISTICS_' . str_replace(' ', '_', $type->type_title); $lang_string = JText::_($lang_key); echo ($lang_string == $lang_key) ? $type->type_title : $lang_string; ?> </td> <td> <span class="badge badge-info"><?php echo number_format($type->link_count, 0, JText::_('DECIMALS_SEPARATOR'), JText::_('THOUSANDS_SEPARATOR'));?></span> </td> </tr> <?php endforeach; ?> <tr> <td> <strong><?php echo JText::_('COM_FINDER_STATISTICS_LINK_TYPE_TOTAL'); ?></strong> </td> <td> <span class="badge badge-info"><?php echo number_format($this->data->link_count, 0, JText::_('DECIMALS_SEPARATOR'), JText::_('THOUSANDS_SEPARATOR')); ?></span> </td> </tr> </tbody> </table> </div> </div> PKb��\� �ff4components/com_finder/views/statistics/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Statistics view class for Finder. * * @since 2.5 */ class FinderViewStatistics extends JViewLegacy { /** * Method to display the view. * * @param string $tpl A template file to load. [optional] * * @return mixed A string if successful, otherwise a JError object. * * @since 2.5 */ public function display($tpl = null) { // Load the view data. $this->data = $this->get('Data'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } parent::display($tpl); } } PKb��\יӇ**1components/com_finder/views/maps/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JHtml::_('formbehavior.chosen', 'select'); JHtml::_('bootstrap.tooltip'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $lang = JFactory::getLanguage(); JText::script('COM_FINDER_MAPS_CONFIRM_DELETE_PROMPT'); JFactory::getDocument()->addScriptDeclaration(' Joomla.submitbutton = function(pressbutton) { if (pressbutton == "map.delete") { if (confirm(Joomla.JText._("COM_FINDER_MAPS_CONFIRM_DELETE_PROMPT"))) { Joomla.submitform(pressbutton); } else { return false; } } Joomla.submitform(pressbutton); }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_finder&view=maps');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_FINDER_FILTER_SEARCH_DESCRIPTION'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> </div> <div class="clearfix"> </div> <table class="table table-striped"> <thead> <tr> <th width="1%"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th class="nowrap"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th class="center nowrap" width="10%"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php if (count($this->items) == 0) : ?> <tr class="row0"> <td class="center" colspan="5"> <?php echo JText::_('COM_FINDER_MAPS_NO_CONTENT'); ?> </td> </tr> <?php endif; ?> <?php if ($this->state->get('filter.branch') != 1) : ?> <tr class="row1"> <td colspan="5" class="center"> <a href="#" onclick="document.getElementById('filter_branch').value='1';document.adminForm.submit();"> <?php echo JText::_('COM_FINDER_MAPS_RETURN_TO_BRANCHES'); ?></a> </td> </tr> <?php endif; ?> <?php $canChange = JFactory::getUser()->authorise('core.manage', 'com_finder'); ?> <?php foreach ($this->items as $i => $item) : ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td> <?php $key = FinderHelperLanguage::branchSingular($item->title); $title = $lang->hasKey($key) ? JText::_($key) : $item->title; ?> <?php if ($this->state->get('filter.branch') == 1 && $item->num_children) : ?> <a href="#" onclick="document.getElementById('filter_branch').value='<?php echo (int) $item->id;?>';document.adminForm.submit();" title="<?php echo JText::_('COM_FINDER_MAPS_BRANCH_LINK'); ?>"> <?php echo $this->escape($title); ?></a> <?php else: ?> <?php echo $this->escape(($title == '*') ? JText::_('JALL_LANGUAGE') : $title); ?> <?php endif; ?> <?php if ($item->num_children > 0) : ?> <small>(<?php echo $item->num_children; ?>)</small> <?php elseif ($item->num_nodes > 0) : ?> <small>(<?php echo $item->num_nodes; ?>)</small> <?php endif; ?> <?php if ($this->escape(trim($title, '**')) == 'Language' && JLanguageMultilang::isEnabled()) : ?> <strong><?php echo JText::_('COM_FINDER_MAPS_MULTILANG'); ?></strong> <?php endif; ?> </td> <td class="center nowrap"> <?php echo JHtml::_('jgrid.published', $item->state, $i, 'maps.', $canChange, 'cb'); ?> </td> </tr> <?php endforeach; ?> </tbody> <tfoot> <tr> <td colspan="9" class="nowrap"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> </table> <input type="hidden" name="task" value="display" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn ?>" /> </div> <?php echo JHtml::_('form.token'); ?> </form> PKb��\w��11.components/com_finder/views/maps/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JLoader::register('FinderHelperLanguage', JPATH_ADMINISTRATOR . '/components/com_finder/helpers/language.php'); /** * Groups view class for Finder. * * @since 2.5 */ class FinderViewMaps extends JViewLegacy { /** * Method to display the view. * * @param string $tpl A template file to load. [optional] * * @return mixed A string if successful, otherwise a JError object. * * @since 2.5 */ public function display($tpl = null) { // Load plug-in language files. FinderHelperLanguage::loadPluginLanguage(); // Load the view data. $this->items = $this->get('Items'); $this->total = $this->get('Total'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); FinderHelper::addSubmenu('maps'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); // Prepare the view. $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Method to configure the toolbar for this view. * * @return void * * @since 2.5 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_finder'); JToolbarHelper::title(JText::_('COM_FINDER_MAPS_TOOLBAR_TITLE'), 'zoom-in finder'); $toolbar = JToolbar::getInstance('toolbar'); if ($canDo->get('core.edit.state')) { JToolbarHelper::publishList('maps.publish'); JToolbarHelper::unpublishList('maps.unpublish'); JToolbarHelper::divider(); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences('com_finder'); } JToolbarHelper::divider(); $toolbar->appendButton('Popup', 'bars', 'COM_FINDER_STATISTICS', 'index.php?option=com_finder&view=statistics&tmpl=component', 550, 350); JToolbarHelper::divider(); JToolbarHelper::help('JHELP_COMPONENTS_FINDER_MANAGE_CONTENT_MAPS'); if ($canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'maps.delete'); JToolbarHelper::divider(); } JHtmlSidebar::setAction('index.php?option=com_finder&view=maps'); JHtmlSidebar::addFilter( '', 'filter_branch', JHtml::_('select.options', JHtml::_('finder.mapslist'), 'value', 'text', $this->state->get('filter.branch')), true ); JHtmlSidebar::addFilter( JText::_('COM_FINDER_INDEX_FILTER_BY_STATE'), 'filter_state', JHtml::_('select.options', JHtml::_('finder.statelist'), 'value', 'text', $this->state->get('filter.state')) ); } } PKb��\Λ�^KK4components/com_finder/views/indexer/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JHtml::_('behavior.keepalive'); JHtml::_('behavior.core'); JHtml::_('jquery.framework'); JHtml::_('script', 'com_finder/indexer.js', false, true); JFactory::getDocument()->addScriptDeclaration('var msg = "' . JText::_('COM_FINDER_INDEXER_MESSAGE_COMPLETE') . '";'); ?> <div id="finder-indexer-container"> <br /><br /> <h1 id="finder-progress-header"><?php echo JText::_('COM_FINDER_INDEXER_HEADER_INIT'); ?></h1> <p id="finder-progress-message"><?php echo JText::_('COM_FINDER_INDEXER_MESSAGE_INIT'); ?></p> <div id="progress" class="progress progress-striped active"> <div id="progress-bar" class="bar bar-success" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div> </div> <input id="finder-indexer-token" type="hidden" name="<?php echo JFactory::getSession()->getFormToken(); ?>" value="1" /> </div> PKb��\��7~~1components/com_finder/views/indexer/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Indexer view class for Finder. * * @since 2.5 */ class FinderViewIndexer extends JViewLegacy { } PKb��\=�cCC(components/com_finder/helpers/finder.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Helper class for Finder. * * @since 2.5 */ class FinderHelper { /** * @var string The extension name. * @since 2.5 */ public static $extension = 'com_finder'; /** * Configure the Linkbar. * * @param string $vName The name of the active view. * * @return void * * @since 2.5 */ public static function addSubmenu($vName) { JHtmlSidebar::addEntry( JText::_('COM_FINDER_SUBMENU_INDEX'), 'index.php?option=com_finder&view=index', $vName == 'index' ); JHtmlSidebar::addEntry( JText::_('COM_FINDER_SUBMENU_MAPS'), 'index.php?option=com_finder&view=maps', $vName == 'maps' ); JHtmlSidebar::addEntry( JText::_('COM_FINDER_SUBMENU_FILTERS'), 'index.php?option=com_finder&view=filters', $vName == 'filters' ); } /** * Gets a list of the actions that can be performed. * * @return JObject A JObject containing the allowed actions. * * @since 2.5 * @deprecated 3.2 Use JHelperContent::getActions() instead */ public static function getActions() { // Log usage of deprecated function JLog::add(__METHOD__ . '() is deprecated, use JHelperContent::getActions() with new arguments order instead.', JLog::WARNING, 'deprecated'); // Get list of actions $result = JHelperContent::getActions('com_finder'); return $result; } } PKb��\Ň!���-components/com_finder/helpers/html/finder.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JLoader::register('FinderHelperLanguage', JPATH_ADMINISTRATOR . '/components/com_finder/helpers/language.php'); /** * HTML behavior class for Finder. * * @since 2.5 */ abstract class JHtmlFinder { /** * Creates a list of types to filter on. * * @return array An array containing the types that can be selected. * * @since 2.5 */ public static function typeslist() { $lang = JFactory::getLanguage(); // Load the finder types. $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('DISTINCT t.title AS text, t.id AS value') ->from($db->quoteName('#__finder_types') . ' AS t') ->join('LEFT', $db->quoteName('#__finder_links') . ' AS l ON l.type_id = t.id') ->order('t.title ASC'); $db->setQuery($query); try { $rows = $db->loadObjectList(); } catch (RuntimeException $e) { return; } // Compile the options. $options = array(); foreach ($rows as $row) { $key = $lang->hasKey(FinderHelperLanguage::branchPlural($row->text)) ? FinderHelperLanguage::branchPlural($row->text) : $row->text; $string = JText::sprintf('COM_FINDER_ITEM_X_ONLY', JText::_($key)); $options[] = JHtml::_('select.option', $row->value, $string); } return $options; } /** * Creates a list of maps. * * @return array An array containing the maps that can be selected. * * @since 2.5 */ public static function mapslist() { $lang = JFactory::getLanguage(); // Load the finder types. $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('title AS text, id AS value') ->from($db->quoteName('#__finder_taxonomy')) ->where($db->quoteName('parent_id') . ' = 1') ->order('ordering, title ASC'); $db->setQuery($query); try { $rows = $db->loadObjectList(); } catch (RuntimeException $e) { return; } // Compile the options. $options = array(); $options[] = JHtml::_('select.option', '1', JText::_('COM_FINDER_MAPS_BRANCHES')); foreach ($rows as $row) { $key = $lang->hasKey(FinderHelperLanguage::branchPlural($row->text)) ? FinderHelperLanguage::branchPlural($row->text) : $row->text; $string = JText::sprintf('COM_FINDER_ITEM_X_ONLY', JText::_($key)); $options[] = JHtml::_('select.option', $row->value, $string); } return $options; } /** * Creates a list of published states. * * @return array An array containing the states that can be selected. * * @since 2.5 */ public static function statelist() { $options = array(); $options[] = JHtml::_('select.option', '1', JText::sprintf('COM_FINDER_ITEM_X_ONLY', JText::_('JPUBLISHED'))); $options[] = JHtml::_('select.option', '0', JText::sprintf('COM_FINDER_ITEM_X_ONLY', JText::_('JUNPUBLISHED'))); return $options; } } PKb��\�P�� � *components/com_finder/helpers/language.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Finder language helper class. * * @since 2.5 */ class FinderHelperLanguage { /** * Method to return a plural language code for a taxonomy branch. * * @param string $branchName Branch title. * * @return string Language key code. * * @since 2.5 */ public static function branchPlural($branchName) { $return = preg_replace('/[^a-zA-Z0-9]+/', '_', strtoupper($branchName)); if ($return != '_') { return 'PLG_FINDER_QUERY_FILTER_BRANCH_P_' . $return; } else { return $branchName; } } /** * Method to return a singular language code for a taxonomy branch. * * @param string $branchName Branch name. * * @return string Language key code. * * @since 2.5 */ public static function branchSingular($branchName) { $return = preg_replace('/[^a-zA-Z0-9]+/', '_', strtoupper($branchName)); return 'PLG_FINDER_QUERY_FILTER_BRANCH_S_' . $return; } /** * Method to load Smart Search component language file. * * @return void * * @since 2.5 */ public static function loadComponentLanguage() { $lang = JFactory::getLanguage(); $lang->load('com_finder', JPATH_SITE); } /** * Method to load Smart Search plug-in language files. * * @return void * * @since 2.5 */ public static function loadPluginLanguage() { static $loaded = false; // If already loaded, don't load again. if ($loaded) { return; } $loaded = true; // Get array of all the enabled Smart Search plug-in names. $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('name') ->from($db->quoteName('#__extensions')) ->where($db->quoteName('type') . ' = ' . $db->quote('plugin')) ->where($db->quoteName('folder') . ' = ' . $db->quote('finder')) ->where($db->quoteName('enabled') . ' = 1'); $db->setQuery($query); $plugins = $db->loadObjectList(); if (empty($plugins)) { return; } // Load generic language strings. $lang = JFactory::getLanguage(); $lang->load('plg_content_finder', JPATH_ADMINISTRATOR); // Load language file for each plug-in. foreach ($plugins as $plugin) { $lang->load($plugin->name, JPATH_ADMINISTRATOR); } } } PKb��\��3�?'?';components/com_finder/helpers/indexer/stemmer/porter_en.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JLoader::register('FinderIndexerStemmer', dirname(__DIR__) . '/stemmer.php'); /** * Porter English stemmer class for the Finder indexer package. * * This class was adapted from one written by Richard Heyes. * See copyright and link information above. * * @since 2.5 */ class FinderIndexerStemmerPorter_En extends FinderIndexerStemmer { /** * Regex for matching a consonant. * * @var string * @since 2.5 */ private static $_regex_consonant = '(?:[bcdfghjklmnpqrstvwxz]|(?<=[aeiou])y|^y)'; /** * Regex for matching a vowel * * @var string * @since 2.5 */ private static $_regex_vowel = '(?:[aeiou]|(?<![aeiou])y)'; /** * Method to stem a token and return the root. * * @param string $token The token to stem. * @param string $lang The language of the token. * * @return string The root token. * * @since 2.5 */ public function stem($token, $lang) { // Check if the token is long enough to merit stemming. if (strlen($token) <= 2) { return $token; } // Check if the language is English or All. if ($lang !== 'en' && $lang != '*') { return $token; } // Stem the token if it is not in the cache. if (!isset($this->cache[$lang][$token])) { // Stem the token. $result = $token; $result = self::_step1ab($result); $result = self::_step1c($result); $result = self::_step2($result); $result = self::_step3($result); $result = self::_step4($result); $result = self::_step5($result); // Add the token to the cache. $this->cache[$lang][$token] = $result; } return $this->cache[$lang][$token]; } /** * Step 1 * * @param string $word The token to stem. * * @return string * * @since 2.5 */ private static function _step1ab($word) { // Part a if (substr($word, -1) == 's') { self::_replace($word, 'sses', 'ss') or self::_replace($word, 'ies', 'i') or self::_replace($word, 'ss', 'ss') or self::_replace($word, 's', ''); } // Part b if (substr($word, -2, 1) != 'e' or !self::_replace($word, 'eed', 'ee', 0)) { // First rule $v = self::$_regex_vowel; // Words ending with ing and ed // Note use of && and OR, for precedence reasons if (preg_match("#$v+#", substr($word, 0, -3)) && self::_replace($word, 'ing', '') or preg_match("#$v+#", substr($word, 0, -2)) && self::_replace($word, 'ed', '')) { // If one of above two test successful if (!self::_replace($word, 'at', 'ate') and !self::_replace($word, 'bl', 'ble') and !self::_replace($word, 'iz', 'ize')) { // Double consonant ending if (self::_doubleConsonant($word) and substr($word, -2) != 'll' and substr($word, -2) != 'ss' and substr($word, -2) != 'zz') { $word = substr($word, 0, -1); } elseif (self::_m($word) == 1 and self::_cvc($word)) { $word .= 'e'; } } } } return $word; } /** * Step 1c * * @param string $word The token to stem. * * @return string * * @since 2.5 */ private static function _step1c($word) { $v = self::$_regex_vowel; if (substr($word, -1) == 'y' && preg_match("#$v+#", substr($word, 0, -1))) { self::_replace($word, 'y', 'i'); } return $word; } /** * Step 2 * * @param string $word The token to stem. * * @return string * * @since 2.5 */ private static function _step2($word) { switch (substr($word, -2, 1)) { case 'a': self::_replace($word, 'ational', 'ate', 0) or self::_replace($word, 'tional', 'tion', 0); break; case 'c': self::_replace($word, 'enci', 'ence', 0) or self::_replace($word, 'anci', 'ance', 0); break; case 'e': self::_replace($word, 'izer', 'ize', 0); break; case 'g': self::_replace($word, 'logi', 'log', 0); break; case 'l': self::_replace($word, 'entli', 'ent', 0) or self::_replace($word, 'ousli', 'ous', 0) or self::_replace($word, 'alli', 'al', 0) or self::_replace($word, 'bli', 'ble', 0) or self::_replace($word, 'eli', 'e', 0); break; case 'o': self::_replace($word, 'ization', 'ize', 0) or self::_replace($word, 'ation', 'ate', 0) or self::_replace($word, 'ator', 'ate', 0); break; case 's': self::_replace($word, 'iveness', 'ive', 0) or self::_replace($word, 'fulness', 'ful', 0) or self::_replace($word, 'ousness', 'ous', 0) or self::_replace($word, 'alism', 'al', 0); break; case 't': self::_replace($word, 'biliti', 'ble', 0) or self::_replace($word, 'aliti', 'al', 0) or self::_replace($word, 'iviti', 'ive', 0); break; } return $word; } /** * Step 3 * * @param string $word The token to stem. * * @return string * * @since 2.5 */ private static function _step3($word) { switch (substr($word, -2, 1)) { case 'a': self::_replace($word, 'ical', 'ic', 0); break; case 's': self::_replace($word, 'ness', '', 0); break; case 't': self::_replace($word, 'icate', 'ic', 0) or self::_replace($word, 'iciti', 'ic', 0); break; case 'u': self::_replace($word, 'ful', '', 0); break; case 'v': self::_replace($word, 'ative', '', 0); break; case 'z': self::_replace($word, 'alize', 'al', 0); break; } return $word; } /** * Step 4 * * @param string $word The token to stem. * * @return string * * @since 2.5 */ private static function _step4($word) { switch (substr($word, -2, 1)) { case 'a': self::_replace($word, 'al', '', 1); break; case 'c': self::_replace($word, 'ance', '', 1) or self::_replace($word, 'ence', '', 1); break; case 'e': self::_replace($word, 'er', '', 1); break; case 'i': self::_replace($word, 'ic', '', 1); break; case 'l': self::_replace($word, 'able', '', 1) or self::_replace($word, 'ible', '', 1); break; case 'n': self::_replace($word, 'ant', '', 1) or self::_replace($word, 'ement', '', 1) or self::_replace($word, 'ment', '', 1) or self::_replace($word, 'ent', '', 1); break; case 'o': if (substr($word, -4) == 'tion' or substr($word, -4) == 'sion') { self::_replace($word, 'ion', '', 1); } else { self::_replace($word, 'ou', '', 1); } break; case 's': self::_replace($word, 'ism', '', 1); break; case 't': self::_replace($word, 'ate', '', 1) or self::_replace($word, 'iti', '', 1); break; case 'u': self::_replace($word, 'ous', '', 1); break; case 'v': self::_replace($word, 'ive', '', 1); break; case 'z': self::_replace($word, 'ize', '', 1); break; } return $word; } /** * Step 5 * * @param string $word The token to stem. * * @return string * * @since 2.5 */ private static function _step5($word) { // Part a if (substr($word, -1) == 'e') { if (self::_m(substr($word, 0, -1)) > 1) { self::_replace($word, 'e', ''); } elseif (self::_m(substr($word, 0, -1)) == 1) { if (!self::_cvc(substr($word, 0, -1))) { self::_replace($word, 'e', ''); } } } // Part b if (self::_m($word) > 1 and self::_doubleConsonant($word) and substr($word, -1) == 'l') { $word = substr($word, 0, -1); } return $word; } /** * Replaces the first string with the second, at the end of the string. If third * arg is given, then the preceding string must match that m count at least. * * @param string &$str String to check * @param string $check Ending to check for * @param string $repl Replacement string * @param integer $m Optional minimum number of m() to meet * * @return boolean Whether the $check string was at the end * of the $str string. True does not necessarily mean * that it was replaced. * * @since 2.5 */ private static function _replace(&$str, $check, $repl, $m = null) { $len = 0 - strlen($check); if (substr($str, $len) == $check) { $substr = substr($str, 0, $len); if (is_null($m) or self::_m($substr) > $m) { $str = $substr . $repl; } return true; } return false; } /** * m() measures the number of consonant sequences in $str. if c is * a consonant sequence and v a vowel sequence, and <..> indicates arbitrary * presence, * * <c><v> gives 0 * <c>vc<v> gives 1 * <c>vcvc<v> gives 2 * <c>vcvcvc<v> gives 3 * * @param string $str The string to return the m count for * * @return integer The m count * * @since 2.5 */ private static function _m($str) { $c = self::$_regex_consonant; $v = self::$_regex_vowel; $str = preg_replace("#^$c+#", '', $str); $str = preg_replace("#$v+$#", '', $str); preg_match_all("#($v+$c+)#", $str, $matches); return count($matches[1]); } /** * Returns true/false as to whether the given string contains two * of the same consonant next to each other at the end of the string. * * @param string $str String to check * * @return boolean Result * * @since 2.5 */ private static function _doubleConsonant($str) { $c = self::$_regex_consonant; return preg_match("#$c{2}$#", $str, $matches) and $matches[0]{0} == $matches[0]{1}; } /** * Checks for ending CVC sequence where second C is not W, X or Y * * @param string $str String to check * * @return boolean Result * * @since 2.5 */ private static function _cvc($str) { $c = self::$_regex_consonant; $v = self::$_regex_vowel; return preg_match("#($c$v$c)$#", $str, $matches) and strlen($matches[1]) == 3 and $matches[1]{2} != 'w' and $matches[1]{2} != 'x' and $matches[1]{2} != 'y'; } } PKb��\���H)H)4components/com_finder/helpers/indexer/stemmer/fr.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JLoader::register('FinderIndexerStemmer', dirname(__DIR__) . '/stemmer.php'); /** * French stemmer class for Smart Search indexer. * * First contributed by Eric Sanou (bobotche@hotmail.fr) * This class is inspired in Alexis Ulrich's French stemmer code (http://alx2002.free.fr) * * @since 3.0 */ class FinderIndexerStemmerFr extends FinderIndexerStemmer { /** * Stemming rules. * * @var array * @since 3.0 */ private static $_stemRules = null; /** * Method to stem a token and return the root. * * @param string $token The token to stem. * @param string $lang The language of the token. * * @return string The root token. * * @since 3.0 */ public function stem($token, $lang) { // Check if the token is long enough to merit stemming. if (strlen($token) <= 2) { return $token; } // Check if the language is French or All. if ($lang !== 'fr' && $lang != '*') { return $token; } // Stem the token if it is not in the cache. if (!isset($this->cache[$lang][$token])) { // Stem the token. $result = static::_getStem($token); // Add the token to the cache. $this->cache[$lang][$token] = $result; } return $this->cache[$lang][$token]; } /** * French stemmer rules variables. * * @return array The rules * * @since 3.0 */ protected static function getStemRules() { if (static::$_stemRules) { return static::$_stemRules; } $vars = array(); // French accented letters in ISO-8859-1 encoding $vars['accents'] = chr(224) . chr(226) . chr(232) . chr(233) . chr(234) . chr(235) . chr(238) . chr(239) . chr(244) . chr(251) . chr(249) . chr(231); // The rule patterns include all accented words for french language $vars['rule_pattern'] = "/^([a-z" . $vars['accents'] . "]*)(\*){0,1}(\d)([a-z" . $vars['accents'] . "]*)([.|>])/"; // French vowels (including y) in ISO-8859-1 encoding $vars['vowels'] = chr(97) . chr(224) . chr(226) . chr(101) . chr(232) . chr(233) . chr(234) . chr(235) . chr(105) . chr(238) . chr(239) . chr(111) . chr(244) . chr(117) . chr(251) . chr(249) . chr(121); // The French rules in ISO-8859-1 encoding $vars['rules'] = array( 'esre1>', 'esio1>', 'siol1.', 'siof0.', 'sioe0.', 'sio3>', 'st1>', 'sf1>', 'sle1>', 'slo1>', 's' . chr(233) . '1>', chr(233) . 'tuae5.', chr(233) . 'tuae2.', 'tnia0.', 'tniv1.', 'tni3>', 'suor1.', 'suo0.', 'sdrail5.', 'sdrai4.', 'er' . chr(232) . 'i1>', 'sesue3x>', 'esuey5i.', 'esue2x>', 'se1>', 'er' . chr(232) . 'g3.', 'eca1>', 'esiah0.', 'esi1>', 'siss2.', 'sir2>', 'sit2>', 'egan' . chr(233) . '1.', 'egalli6>', 'egass1.', 'egas0.', 'egat3.', 'ega3>', 'ette4>', 'ett2>', 'etio1.', 'tio' . chr(231) . '4c.', 'tio0.', 'et1>', 'eb1>', 'snia1>', 'eniatnau8>', 'eniatn4.', 'enia1>', 'niatnio3.', 'niatg3.', 'e' . chr(233) . '1>', chr(233) . 'hcat1.', chr(233) . 'hca4.', chr(233) . 'tila5>', chr(233) . 'tici5.', chr(233) . 'tir1.', chr(233) . 'ti3>', chr(233) . 'gan1.', chr(233) . 'ga3>', chr(233) . 'tehc1.', chr(233) . 'te3>', chr(233) . 'it0.', chr(233) . '1>', 'eire4.', 'eirue5.', 'eio1.', 'eia1.', 'ei1>', 'eng1.', 'xuaessi7.', 'xuae1>', 'uaes0.', 'uae3.', 'xuave2l.', 'xuav2li>', 'xua3la>', 'ela1>', 'lart2.', 'lani2>', 'la' . chr(233) . '2>', 'siay4i.', 'siassia7.', 'siarv1*.', 'sia1>', 'tneiayo6i.', 'tneiay6i.', 'tneiassia9.', 'tneiareio7.', 'tneia5>', 'tneia4>', 'tiario4.', 'tiarim3.', 'tiaria3.', 'tiaris3.', 'tiari5.', 'tiarve6>', 'tiare5>', 'iare4>', 'are3>', 'tiay4i.', 'tia3>', 'tnay4i.', 'em' . chr(232) . 'iu5>', 'em' . chr(232) . 'i4>', 'tnaun3.', 'tnauqo3.', 'tnau4>', 'tnaf0.', 'tnat' . chr(233) . '2>', 'tna3>', 'tno3>', 'zeiy4i.', 'zey3i.', 'zeire5>', 'zeird4.', 'zeirio4.', 'ze2>', 'ssiab0.', 'ssia4.', 'ssi3.', 'tnemma6>', 'tnemesuey9i.', 'tnemesue8>', 'tnemevi7.', 'tnemessia5.', 'tnemessi8.', 'tneme5>', 'tnemia4.', 'tnem' . chr(233) . '5>', 'el2l>', 'lle3le>', 'let' . chr(244) . '0.', 'lepp0.', 'le2>', 'srei1>', 'reit3.', 'reila2.', 'rei3>', 'ert' . chr(226) . 'e5.', 'ert' . chr(226) . chr(233) . '1.', 'ert' . chr(226) . '4.', 'drai4.', 'erdro0.', 'erute5.', 'ruta0.', 'eruta1.', 'erutiov1.', 'erub3.', 'eruh3.', 'erul3.', 'er2r>', 'nn1>', 'r' . chr(232) . 'i3.', 'srev0.', 'sr1>', 'rid2>', 're2>', 'xuei4.', 'esuei5.', 'lbati3.', 'lba3>', 'rueis0.', 'ruehcn4.', 'ecirta6.', 'ruetai6.', 'rueta5.', 'rueir0.', 'rue3>', 'esseti6.', 'essere6>', 'esserd1.', 'esse4>', 'essiab1.', 'essia5.', 'essio1.', 'essi4.', 'essal4.', 'essa1>', 'ssab1.', 'essurp1.', 'essu4.', 'essi1.', 'ssor1.', 'essor2.', 'esso1>', 'ess2>', 'tio3.', 'r' . chr(232) . 's2re.', 'r' . chr(232) . '0e.', 'esn1.', 'eu1>', 'sua0.', 'su1>', 'utt1>', 'tu' . chr(231) . '3c.', 'u' . chr(231) . '2c.', 'ur1.', 'ehcn2>', 'ehcu1>', 'snorr3.', 'snoru3.', 'snorua3.', 'snorv3.', 'snorio4.', 'snori5.', 'snore5>', 'snortt4>', 'snort' . chr(238) . 'a7.', 'snort3.', 'snor4.', 'snossi6.', 'snoire6.', 'snoird5.', 'snoitai7.', 'snoita6.', 'snoits1>', 'noits0.', 'snoi4>', 'noitaci7>', 'noitai6.', 'noita5.', 'noitu4.', 'noi3>', 'snoya0.', 'snoy4i.', 'sno' . chr(231) . 'a1.', 'sno' . chr(231) . 'r1.', 'snoe4.', 'snosiar1>', 'snola1.', 'sno3>', 'sno1>', 'noll2.', 'tnennei4.', 'ennei2>', 'snei1>', 'sne' . chr(233) . '1>', 'enne' . chr(233) . '5e.', 'ne' . chr(233) . '3e.', 'neic0.', 'neiv0.', 'nei3.', 'sc1.', 'sd1.', 'sg1.', 'sni1.', 'tiu0.', 'ti2.', 'sp1>', 'sna1>', 'sue1.', 'enn2>', 'nong2.', 'noss2.', 'rioe4.', 'riot0.', 'riorc1.', 'riovec5.', 'rio3.', 'ric2.', 'ril2.', 'tnerim3.', 'tneris3>', 'tneri5.', 't' . chr(238) . 'a3.', 'riss2.', 't' . chr(238) . '2.', 't' . chr(226) . '2>', 'ario2.', 'arim1.', 'ara1.', 'aris1.', 'ari3.', 'art1>', 'ardn2.', 'arr1.', 'arua1.', 'aro1.', 'arv1.', 'aru1.', 'ar2.', 'rd1.', 'ud1.', 'ul1.', 'ini1.', 'rin2.', 'tnessiab3.', 'tnessia7.', 'tnessi6.', 'tnessni4.', 'sini2.', 'sl1.', 'iard3.', 'iario3.', 'ia2>', 'io0.', 'iule2.', 'i1>', 'sid2.', 'sic2.', 'esoi4.', 'ed1.', 'ai2>', 'a1>', 'adr1.', 'tner' . chr(232) . '5>', 'evir1.', 'evio4>', 'evi3.', 'fita4.', 'fi2>', 'enie1.', 'sare4>', 'sari4>', 'sard3.', 'sart2>', 'sa2.', 'tnessa6>', 'tnessu6>', 'tnegna3.', 'tnegi3.', 'tneg0.', 'tneru5>', 'tnemg0.', 'tnerni4.', 'tneiv1.', 'tne3>', 'une1.', 'en1>', 'nitn2.', 'ecnay5i.', 'ecnal1.', 'ecna4.', 'ec1>', 'nn1.', 'rit2>', 'rut2>', 'rud2.', 'ugn1>', 'eg1>', 'tuo0.', 'tul2>', 't' . chr(251) . '2>', 'ev1>', 'v' . chr(232) . '2ve>', 'rtt1>', 'emissi6.', 'em1.', 'ehc1.', 'c' . chr(233) . 'i2c' . chr(232) . '.', 'libi2l.', 'llie1.', 'liei4i.', 'xuev1.', 'xuey4i.', 'xueni5>', 'xuell4.', 'xuere5.', 'xue3>', 'rb' . chr(233) . '3rb' . chr(232) . '.', 'tur2.', 'rir' . chr(233) . '4re.', 'rir2.', 'c' . chr(226) . '2ca.', 'snu1.', 'rt' . chr(238) . 'a4.', 'long2.', 'vec2.', chr(231) . '1c>', 'ssilp3.', 'silp2.', 't' . chr(232) . 'hc2te.', 'n' . chr(232) . 'm2ne.', 'llepp1.', 'tan2.', 'rv' . chr(232) . '3rve.', 'rv' . chr(233) . '3rve.', 'r' . chr(232) . '2re.', 'r' . chr(233) . '2re.', 't' . chr(232) . '2te.', 't' . chr(233) . '2te.', 'epp1.', 'eya2i.', 'ya1i.', 'yo1i.', 'esu1.', 'ugi1.', 'tt1.', 'end0.' ); static::$_stemRules = $vars; return static::$_stemRules; } /** * Returns the number of the first rule from the rule number * that can be applied to the given reversed input. * returns -1 if no rule can be applied, ie the stem has been found * * @param string $reversed_input The input to check in reversed order * @param integer $rule_number The rule number to check * * @return integer Number of the first rule * * @since 3.0 */ private static function _getFirstRule($reversed_input, $rule_number) { $vars = static::getStemRules(); $nb_rules = count($vars['rules']); for ($i = $rule_number; $i < $nb_rules; $i++) { // Gets the letters from the current rule $rule = $vars['rules'][$i]; $rule = preg_replace($vars['rule_pattern'], "\\1", $rule); if (strncasecmp(utf8_decode($rule), $reversed_input, strlen(utf8_decode($rule))) == 0) { return $i; } } return -1; } /** * Check the acceptability of a stem for French language * * @param string $reversed_stem The stem to check in reverse form * * @return boolean True if stem is acceptable * * @since 3.0 */ private static function _check($reversed_stem) { $vars = static::getStemRules(); if (preg_match('/[' . $vars['vowels'] . ']$/', utf8_encode($reversed_stem))) { // If the form starts with a vowel then at least two letters must remain after stemming (e.g.: "etaient" --> "et") return (strlen($reversed_stem) > 2); } else { // If the reversed stem starts with a consonant then at least two letters must remain after stemming if (strlen($reversed_stem) <= 2) { return false; } // And at least one of these must be a vowel or "y" return (preg_match('/[' . $vars['vowels'] . ']/', utf8_encode($reversed_stem))); } } /** * Paice/Husk stemmer which returns a stem for the given $input * * @param string $input The word for which we want the stem in UTF-8 * * @return string The stem * * @since 3.0 */ private static function _getStem($input) { $vars = static::getStemRules(); $intact = true; $reversed_input = strrev(utf8_decode($input)); $rule_number = 0; // This loop goes through the rules' array until it finds an ending one (ending by '.') or the last one ('end0.') while (true) { $rule_number = static::_getFirstRule($reversed_input, $rule_number); if ($rule_number == -1) { // No other rule can be applied => the stem has been found break; } $rule = $vars['rules'][$rule_number]; preg_match($vars['rule_pattern'], $rule, $matches); if (($matches[2] != '*') || ($intact)) { $reversed_stem = utf8_decode($matches[4]) . substr($reversed_input, $matches[3], strlen($reversed_input) - $matches[3]); if (self::_check($reversed_stem)) { $reversed_input = $reversed_stem; if ($matches[5] == '.') { break; } } else { // Go to another rule $rule_number++; } } else { // Go to another rule $rule_number++; } } return utf8_encode(strrev($reversed_input)); } } PKb��\�0�� � :components/com_finder/helpers/indexer/stemmer/snowball.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JLoader::register('FinderIndexerStemmer', dirname(__DIR__) . '/stemmer.php'); /** * Snowball stemmer class for the Finder indexer package. * * @since 2.5 */ class FinderIndexerStemmerSnowball extends FinderIndexerStemmer { /** * Method to stem a token and return the root. * * @param string $token The token to stem. * @param string $lang The language of the token. * * @return string The root token. * * @since 2.5 */ public function stem($token, $lang) { // Language to use if All is specified. static $defaultLang = ''; // If language is All then try to get site default language. if ($lang == '*' && $defaultLang == '') { $languages = JLanguageHelper::getLanguages(); $defaultLang = isset($languages[0]->sef) ? $languages[0]->sef : '*'; $lang = $defaultLang; } // Stem the token if it is not in the cache. if (!isset($this->cache[$lang][$token])) { // Get the stem function from the language string. switch ($lang) { // Danish stemmer. case 'da': $function = 'stem_danish'; break; // German stemmer. case 'de': $function = 'stem_german'; break; // English stemmer. default: case 'en': $function = 'stem_english'; break; // Spanish stemmer. case 'es': $function = 'stem_spanish'; break; // Finnish stemmer. case 'fi': $function = 'stem_finnish'; break; // French stemmer. case 'fr': $function = 'stem_french'; break; // Hungarian stemmer. case 'hu': $function = 'stem_hungarian'; break; // Italian stemmer. case 'it': $function = 'stem_italian'; break; // Norwegian stemmer. case 'nb': $function = 'stem_norwegian'; break; // Dutch stemmer. case 'nl': $function = 'stem_dutch'; break; // Portuguese stemmer. case 'pt': $function = 'stem_portuguese'; break; // Romanian stemmer. case 'ro': $function = 'stem_romanian'; break; // Russian stemmer. case 'ru': $function = 'stem_russian_unicode'; break; // Swedish stemmer. case 'sv': $function = 'stem_swedish'; break; // Turkish stemmer. case 'tr': $function = 'stem_turkish_unicode'; break; } // Stem the word if the stemmer method exists. $this->cache[$lang][$token] = function_exists($function) ? $function($token) : $token; } return $this->cache[$lang][$token]; } } PKb��\,ug�0components/com_finder/helpers/indexer/parser.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Parser base class for the Finder indexer package. * * @since 2.5 */ abstract class FinderIndexerParser { /** * Method to get a parser, creating it if necessary. * * @param string $format The type of parser to load. * * @return FinderIndexerParser A FinderIndexerParser instance. * * @since 2.5 * @throws Exception on invalid parser. */ public static function getInstance($format) { static $instances; // Only create one parser for each format. if (isset($instances[$format])) { return $instances[$format]; } // Create an array of instances if necessary. if (!is_array($instances)) { $instances = array(); } // Setup the adapter for the parser. $format = JFilterInput::getInstance()->clean($format, 'cmd'); $path = __DIR__ . '/parser/' . $format . '.php'; $class = 'FinderIndexerParser' . ucfirst($format); // Check if a parser exists for the format. if (file_exists($path)) { // Instantiate the parser. include_once $path; $instances[$format] = new $class; } else { // Throw invalid format exception. throw new Exception(JText::sprintf('COM_FINDER_INDEXER_INVALID_PARSER', $format)); } return $instances[$format]; } /** * Method to parse input and extract the plain text. Because this method is * called from both inside and outside the indexer, it needs to be able to * batch out its parsing functionality to deal with the inefficiencies of * regular expressions. We will parse recursively in 2KB chunks. * * @param string $input The input to parse. * * @return string The plain text input. * * @since 2.5 */ public function parse($input) { $return = null; // Parse the input in batches if bigger than 2KB. if (strlen($input) > 2048) { $start = 0; $end = strlen($input); $chunk = 2048; while ($start < $end) { // Setup the string. $string = substr($input, $start, $chunk); // Find the last space character if we aren't at the end. $ls = (($start + $chunk) < $end ? strrpos($string, ' ') : false); // Truncate to the last space character. if ($ls !== false) { $string = substr($string, 0, $ls); } // Adjust the start position for the next iteration. $start += ($ls !== false ? ($ls + 1 - $chunk) + $chunk : $chunk); // Parse the chunk. $return .= $this->process($string); } } // The input is less than 2KB so we can parse it efficiently. else { // Parse the chunk. $return .= $this->process($input); } return $return; } /** * Method to process input and extract the plain text. * * @param string $input The input to process. * * @return string The plain text input. * * @since 2.5 */ abstract protected function process($input); } PKb��\��Kj�/�/1components/com_finder/helpers/indexer/indexer.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JLoader::register('FinderIndexerHelper', __DIR__ . '/helper.php'); JLoader::register('FinderIndexerParser', __DIR__ . '/parser.php'); JLoader::register('FinderIndexerStemmer', __DIR__ . '/stemmer.php'); JLoader::register('FinderIndexerTaxonomy', __DIR__ . '/taxonomy.php'); JLoader::register('FinderIndexerToken', __DIR__ . '/token.php'); jimport('joomla.filesystem.file'); /** * Main indexer class for the Finder indexer package. * * The indexer class provides the core functionality of the Finder * search engine. It is responsible for adding and updating the * content links table; extracting and scoring tokens; and maintaining * all referential information for the content. * * Note: All exceptions thrown from within this class should be caught * by the controller. * * @since 2.5 */ abstract class FinderIndexer { /** * The title context identifier. * * @var integer * @since 2.5 */ const TITLE_CONTEXT = 1; /** * The text context identifier. * * @var integer * @since 2.5 */ const TEXT_CONTEXT = 2; /** * The meta context identifier. * * @var integer * @since 2.5 */ const META_CONTEXT = 3; /** * The path context identifier. * * @var integer * @since 2.5 */ const PATH_CONTEXT = 4; /** * The misc context identifier. * * @var integer * @since 2.5 */ const MISC_CONTEXT = 5; /** * The indexer state object. * * @var object * @since 2.5 */ public static $state; /** * The indexer profiler object. * * @var object * @since 2.5 */ public static $profiler; /** * Returns a reference to the FinderIndexer object. * * @return FinderIndexer instance based on the database driver * * @since 3.0 * @throws RuntimeException if driver class for indexer not present. */ public static function getInstance() { // Setup the adapter for the indexer. $format = JFactory::getDbo()->name; if ($format == 'mysqli' || $format == 'pdomysql') { $format = 'mysql'; } elseif ($format == 'sqlazure') { $format = 'sqlsrv'; } $path = __DIR__ . '/driver/' . $format . '.php'; $class = 'FinderIndexerDriver' . ucfirst($format); // Check if a parser exists for the format. if (file_exists($path)) { // Instantiate the parser. include_once $path; return new $class; } else { // Throw invalid format exception. throw new RuntimeException(JText::sprintf('COM_FINDER_INDEXER_INVALID_DRIVER', $format)); } } /** * Method to get the indexer state. * * @return object The indexer state object. * * @since 2.5 */ public static function getState() { // First, try to load from the internal state. if (!empty(self::$state)) { return self::$state; } // If we couldn't load from the internal state, try the session. $session = JFactory::getSession(); $data = $session->get('_finder.state', null); // If the state is empty, load the values for the first time. if (empty($data)) { $data = new JObject; // Load the default configuration options. $data->options = JComponentHelper::getParams('com_finder'); // Setup the weight lookup information. $data->weights = array( self::TITLE_CONTEXT => round($data->options->get('title_multiplier', 1.7), 2), self::TEXT_CONTEXT => round($data->options->get('text_multiplier', 0.7), 2), self::META_CONTEXT => round($data->options->get('meta_multiplier', 1.2), 2), self::PATH_CONTEXT => round($data->options->get('path_multiplier', 2.0), 2), self::MISC_CONTEXT => round($data->options->get('misc_multiplier', 0.3), 2) ); // Set the current time as the start time. $data->startTime = JFactory::getDate()->toSql(); // Set the remaining default values. $data->batchSize = (int) $data->options->get('batch_size', 50); $data->batchOffset = 0; $data->totalItems = 0; $data->pluginState = array(); } // Setup the profiler if debugging is enabled. if (JFactory::getApplication()->get('debug')) { self::$profiler = JProfiler::getInstance('FinderIndexer'); } // Setup the stemmer. if ($data->options->get('stem', 1) && $data->options->get('stemmer', 'porter_en')) { FinderIndexerHelper::$stemmer = FinderIndexerStemmer::getInstance($data->options->get('stemmer', 'porter_en')); } // Set the state. self::$state = $data; return self::$state; } /** * Method to set the indexer state. * * @param object $data A new indexer state object. * * @return boolean True on success, false on failure. * * @since 2.5 */ public static function setState($data) { // Check the state object. if (empty($data) || !$data instanceof JObject) { return false; } // Set the new internal state. self::$state = $data; // Set the new session state. $session = JFactory::getSession(); $session->set('_finder.state', $data); return true; } /** * Method to reset the indexer state. * * @return void * * @since 2.5 */ public static function resetState() { // Reset the internal state to null. self::$state = null; // Reset the session state to null. $session = JFactory::getSession(); $session->set('_finder.state', null); } /** * Method to index a content item. * * @param FinderIndexerResult $item The content item to index. * @param string $format The format of the content. [optional] * * @return integer The ID of the record in the links table. * * @since 2.5 * @throws Exception on database error. */ abstract public function index($item, $format = 'html'); /** * Method to remove a link from the index. * * @param integer $linkId The id of the link. * * @return boolean True on success. * * @since 2.5 * @throws Exception on database error. */ abstract public function remove($linkId); /** * Method to optimize the index. We use this method to remove unused terms * and any other optimizations that might be necessary. * * @return boolean True on success. * * @since 2.5 * @throws Exception on database error. */ abstract public function optimize(); /** * Method to get a content item's signature. * * @param object $item The content item to index. * * @return string The content item's signature. * * @since 2.5 */ protected static function getSignature($item) { // Get the indexer state. $state = self::getState(); // Get the relevant configuration variables. $config = array(); $config[] = $state->weights; $config[] = $state->options->get('stem', 1); $config[] = $state->options->get('stemmer', 'porter_en'); return md5(serialize(array($item, $config))); } /** * Method to parse input, tokenize it, and then add it to the database. * * @param mixed $input String or resource to use as input. A resource * input will automatically be chunked to conserve * memory. Strings will be chunked if longer than * 2K in size. * @param integer $context The context of the input. See context constants. * @param string $lang The language of the input. * @param string $format The format of the input. * * @return integer The number of tokens extracted from the input. * * @since 2.5 */ protected function tokenizeToDb($input, $context, $lang, $format) { $count = 0; $buffer = null; if (!empty($input)) { // If the input is a resource, batch the process out. if (is_resource($input)) { // Batch the process out to avoid memory limits. while (!feof($input)) { // Read into the buffer. $buffer .= fread($input, 2048); /* * If we haven't reached the end of the file, seek to the last * space character and drop whatever is after that to make sure * we didn't truncate a term while reading the input. */ if (!feof($input)) { // Find the last space character. $ls = strrpos($buffer, ' '); // Adjust string based on the last space character. if ($ls) { // Truncate the string to the last space character. $string = substr($buffer, 0, $ls); // Adjust the buffer based on the last space for the next iteration and trim. $buffer = JString::trim(substr($buffer, $ls)); } // No space character was found. else { $string = $buffer; } } // We've reached the end of the file, so parse whatever remains. else { $string = $buffer; } // Parse the input. $string = FinderIndexerHelper::parse($string, $format); // Check the input. if (empty($string)) { continue; } // Tokenize the input. $tokens = FinderIndexerHelper::tokenize($string, $lang); // Add the tokens to the database. $count += $this->addTokensToDb($tokens, $context); // Check if we're approaching the memory limit of the token table. if ($count > self::$state->options->get('memory_table_limit', 30000)) { $this->toggleTables(false); } unset($string); unset($tokens); } } // If the input is greater than 2K in size, it is more efficient to // batch out the operation into smaller chunks of work. elseif (strlen($input) > 2048) { $start = 0; $end = strlen($input); $chunk = 2048; /* * As it turns out, the complex regular expressions we use for * sanitizing input are not very efficient when given large * strings. It is much faster to process lots of short strings. */ while ($start < $end) { // Setup the string. $string = substr($input, $start, $chunk); // Find the last space character if we aren't at the end. $ls = (($start + $chunk) < $end ? strrpos($string, ' ') : false); // Truncate to the last space character. if ($ls !== false) { $string = substr($string, 0, $ls); } // Adjust the start position for the next iteration. $start += ($ls !== false ? ($ls + 1 - $chunk) + $chunk : $chunk); // Parse the input. $string = FinderIndexerHelper::parse($string, $format); // Check the input. if (empty($string)) { continue; } // Tokenize the input. $tokens = FinderIndexerHelper::tokenize($string, $lang); // Add the tokens to the database. $count += $this->addTokensToDb($tokens, $context); // Check if we're approaching the memory limit of the token table. if ($count > self::$state->options->get('memory_table_limit', 30000)) { $this->toggleTables(false); } } } else { // Parse the input. $input = FinderIndexerHelper::parse($input, $format); // Check the input. if (empty($input)) { return $count; } // Tokenize the input. $tokens = FinderIndexerHelper::tokenize($input, $lang); // Add the tokens to the database. $count = $this->addTokensToDb($tokens, $context); } } return $count; } /** * Method to add a set of tokens to the database. * * @param mixed $tokens An array or single FinderIndexerToken object. * @param mixed $context The context of the tokens. See context constants. [optional] * * @return integer The number of tokens inserted into the database. * * @since 2.5 * @throws Exception on database error. */ abstract protected function addTokensToDb($tokens, $context = ''); /** * Method to switch the token tables from Memory tables to MyISAM tables * when they are close to running out of memory. * * @param boolean $memory Flag to control how they should be toggled. * * @return boolean True on success. * * @since 2.5 * @throws Exception on database error. */ abstract protected function toggleTables($memory); } PKb��\���1components/com_finder/helpers/indexer/stemmer.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Stemmer base class for the Finder indexer package. * * @since 2.5 */ abstract class FinderIndexerStemmer { /** * An internal cache of stemmed tokens. * * @var array * @since 2.5 */ public $cache = array(); /** * Method to get a stemmer, creating it if necessary. * * @param string $adapter The type of stemmer to load. * * @return FinderIndexerStemmer A FinderIndexerStemmer instance. * * @since 2.5 * @throws Exception on invalid stemmer. */ public static function getInstance($adapter) { static $instances; // Only create one stemmer for each adapter. if (isset($instances[$adapter])) { return $instances[$adapter]; } // Create an array of instances if necessary. if (!is_array($instances)) { $instances = array(); } // Setup the adapter for the stemmer. $adapter = JFilterInput::getInstance()->clean($adapter, 'cmd'); $path = __DIR__ . '/stemmer/' . $adapter . '.php'; $class = 'FinderIndexerStemmer' . ucfirst($adapter); // Check if a stemmer exists for the adapter. if (file_exists($path)) { // Instantiate the stemmer. include_once $path; $instances[$adapter] = new $class; } else { // Throw invalid adapter exception. throw new Exception(JText::sprintf('COM_FINDER_INDEXER_INVALID_STEMMER', $adapter)); } return $instances[$adapter]; } /** * Method to stem a token and return the root. * * @param string $token The token to stem. * @param string $lang The language of the token. * * @return string The root token. * * @since 2.5 */ abstract public function stem($token, $lang); } PKb��\�i��2�2�/components/com_finder/helpers/indexer/query.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; use Joomla\Registry\Registry; JLoader::register('FinderIndexerHelper', __DIR__ . '/helper.php'); JLoader::register('FinderIndexerTaxonomy', __DIR__ . '/taxonomy.php'); JLoader::register('FinderHelperRoute', JPATH_SITE . '/components/com_finder/helpers/route.php'); JLoader::register('FinderHelperLanguage', JPATH_ADMINISTRATOR . '/components/com_finder/helpers/language.php'); /** * Query class for the Finder indexer package. * * @since 2.5 */ class FinderIndexerQuery { /** * Flag to show whether the query can return results. * * @var boolean * @since 2.5 */ public $search; /** * The query input string. * * @var string * @since 2.5 */ public $input; /** * The language of the query. * * @var string * @since 2.5 */ public $language; /** * The query string matching mode. * * @var string * @since 2.5 */ public $mode; /** * The included tokens. * * @var array * @since 2.5 */ public $included = array(); /** * The excluded tokens. * * @var array * @since 2.5 */ public $excluded = array(); /** * The tokens to ignore because no matches exist. * * @var array * @since 2.5 */ public $ignored = array(); /** * The operators used in the query input string. * * @var array * @since 2.5 */ public $operators = array(); /** * The terms to highlight as matches. * * @var array * @since 2.5 */ public $highlight = array(); /** * The number of matching terms for the query input. * * @var integer * @since 2.5 */ public $terms; /** * The static filter id. * * @var string * @since 2.5 */ public $filter; /** * The taxonomy filters. This is a multi-dimensional array of taxonomy * branches as the first level and then the taxonomy nodes as the values. * * For example: * $filters = array( * 'Type' = array(10, 32, 29, 11, ...); * 'Label' = array(20, 314, 349, 91, 82, ...); * ... * ); * * @var array * @since 2.5 */ public $filters = array(); /** * The start date filter. * * @var string * @since 2.5 */ public $date1; /** * The end date filter. * * @var string * @since 2.5 */ public $date2; /** * The start date filter modifier. * * @var string * @since 2.5 */ public $when1; /** * The end date filter modifier. * * @var string * @since 2.5 */ public $when2; /** * Method to instantiate the query object. * * @param array $options An array of query options. * * @since 2.5 * @throws Exception on database error. */ public function __construct($options) { // Get the input string. $this->input = isset($options['input']) ? $options['input'] : null; // Get the empty query setting. $this->empty = isset($options['empty']) ? (bool) $options['empty'] : false; // Get the input language. $this->language = !empty($options['language']) ? $options['language'] : FinderIndexerHelper::getDefaultLanguage(); $this->language = FinderIndexerHelper::getPrimaryLanguage($this->language); // Get the matching mode. $this->mode = 'AND'; // Initialize the temporary date storage. $this->dates = new Registry; // Populate the temporary date storage. if (isset($options['date1']) && !empty($options['date1'])) { $this->dates->set('date1', $options['date1']); } if (isset($options['date2']) && !empty($options['date1'])) { $this->dates->set('date2', $options['date2']); } if (isset($options['when1']) && !empty($options['date1'])) { $this->dates->set('when1', $options['when1']); } if (isset($options['when2']) && !empty($options['date1'])) { $this->dates->set('when2', $options['when2']); } // Process the static taxonomy filters. if (isset($options['filter']) && !empty($options['filter'])) { $this->processStaticTaxonomy($options['filter']); } // Process the dynamic taxonomy filters. if (isset($options['filters']) && !empty($options['filters'])) { $this->processDynamicTaxonomy($options['filters']); } // Get the date filters. $d1 = $this->dates->get('date1'); $d2 = $this->dates->get('date2'); $w1 = $this->dates->get('when1'); $w2 = $this->dates->get('when2'); // Process the date filters. if (!empty($d1) || !empty($d2)) { $this->processDates($d1, $d2, $w1, $w2); } // Process the input string. $this->processString($this->input, $this->language, $this->mode); // Get the number of matching terms. foreach ($this->included as $token) { $this->terms += count($token->matches); } // Remove the temporary date storage. unset($this->dates); /* * Lastly, determine whether this query can return a result set. */ // Check if we have a query string. if (!empty($this->input)) { $this->search = true; } // Check if we can search without a query string. elseif ($this->empty && (!empty($this->filter) || !empty($this->filters) || !empty($this->date1) || !empty($this->date2))) { $this->search = true; } // We do not have a valid search query. else { $this->search = false; } } /** * Method to convert the query object into a URI string. * * @param string $base The base URI. [optional] * * @return string The complete query URI. * * @since 2.5 */ public function toUri($base = null) { // Set the base if not specified. if (empty($base)) { $base = 'index.php?option=com_finder&view=search'; } // Get the base URI. $uri = JUri::getInstance($base); // Add the static taxonomy filter if present. if (!empty($this->filter)) { $uri->setVar('f', $this->filter); } // Get the filters in the request. $input = JFactory::getApplication()->input; $t = $input->request->get('t', array(), 'array'); // Add the dynamic taxonomy filters if present. if (!empty($this->filters)) { foreach ($this->filters as $nodes) { foreach ($nodes as $node) { if (!in_array($node, $t)) { continue; } $uri->setVar('t[]', $node); } } } // Add the input string if present. if (!empty($this->input)) { $uri->setVar('q', $this->input); } // Add the start date if present. if (!empty($this->date1)) { $uri->setVar('d1', $this->date1); } // Add the end date if present. if (!empty($this->date2)) { $uri->setVar('d2', $this->date2); } // Add the start date modifier if present. if (!empty($this->when1)) { $uri->setVar('w1', $this->when1); } // Add the end date modifier if present. if (!empty($this->when2)) { $uri->setVar('w2', $this->when2); } // Add a menu item id if one is not present. if (!$uri->getVar('Itemid')) { // Get the menu item id. $query = array( 'view' => $uri->getVar('view'), 'f' => $uri->getVar('f'), 'q' => $uri->getVar('q') ); $item = FinderHelperRoute::getItemid($query); // Add the menu item id if present. if ($item !== null) { $uri->setVar('Itemid', $item); } } return $uri->toString(array('path', 'query')); } /** * Method to get a list of excluded search term ids. * * @return array An array of excluded term ids. * * @since 2.5 */ public function getExcludedTermIds() { $results = array(); // Iterate through the excluded tokens and compile the matching terms. for ($i = 0, $c = count($this->excluded); $i < $c; $i++) { $results = array_merge($results, $this->excluded[$i]->matches); } // Sanitize the terms. $results = array_unique($results); JArrayHelper::toInteger($results); return $results; } /** * Method to get a list of included search term ids. * * @return array An array of included term ids. * * @since 2.5 */ public function getIncludedTermIds() { $results = array(); // Iterate through the included tokens and compile the matching terms. for ($i = 0, $c = count($this->included); $i < $c; $i++) { // Check if we have any terms. if (empty($this->included[$i]->matches)) { continue; } // Get the term. $term = $this->included[$i]->term; // Prepare the container for the term if necessary. if (!array_key_exists($term, $results)) { $results[$term] = array(); } // Add the matches to the stack. $results[$term] = array_merge($results[$term], $this->included[$i]->matches); } // Sanitize the terms. foreach ($results as $key => $value) { $results[$key] = array_unique($results[$key]); JArrayHelper::toInteger($results[$key]); } return $results; } /** * Method to get a list of required search term ids. * * @return array An array of required term ids. * * @since 2.5 */ public function getRequiredTermIds() { $results = array(); // Iterate through the included tokens and compile the matching terms. for ($i = 0, $c = count($this->included); $i < $c; $i++) { // Check if the token is required. if ($this->included[$i]->required) { // Get the term. $term = $this->included[$i]->term; // Prepare the container for the term if necessary. if (!array_key_exists($term, $results)) { $results[$term] = array(); } // Add the matches to the stack. $results[$term] = array_merge($results[$term], $this->included[$i]->matches); } } // Sanitize the terms. foreach ($results as $key => $value) { $results[$key] = array_unique($results[$key]); JArrayHelper::toInteger($results[$key]); } return $results; } /** * Method to process the static taxonomy input. The static taxonomy input * comes in the form of a pre-defined search filter that is assigned to the * search form. * * @param integer $filterId The id of static filter. * * @return boolean True on success, false on failure. * * @since 2.5 * @throws Exception on database error. */ protected function processStaticTaxonomy($filterId) { // Get the database object. $db = JFactory::getDbo(); // Initialize user variables $user = JFactory::getUser(); $groups = implode(',', $user->getAuthorisedViewLevels()); // Load the predefined filter. $query = $db->getQuery(true) ->select('f.data, f.params') ->from($db->quoteName('#__finder_filters') . ' AS f') ->where('f.filter_id = ' . (int) $filterId); $db->setQuery($query); $return = $db->loadObject(); // Check the returned filter. if (empty($return)) { return false; } // Set the filter. $this->filter = (int) $filterId; // Get a parameter object for the filter date options. $registry = new Registry; $registry->loadString($return->params); $params = $registry; // Set the dates if not already set. $this->dates->def('d1', $params->get('d1')); $this->dates->def('d2', $params->get('d2')); $this->dates->def('w1', $params->get('w1')); $this->dates->def('w2', $params->get('w2')); // Remove duplicates and sanitize. $filters = explode(',', $return->data); $filters = array_unique($filters); JArrayHelper::toInteger($filters); // Remove any values of zero. if (array_search(0, $filters, true) !== false) { unset($filters[array_search(0, $filters, true)]); } // Check if we have any real input. if (empty($filters)) { return true; } /* * Create the query to get filters from the database. We do this for * two reasons: one, it allows us to ensure that the filters being used * are real; two, we need to sort the filters by taxonomy branch. */ $query->clear() ->select('t1.id, t1.title, t2.title AS branch') ->from($db->quoteName('#__finder_taxonomy') . ' AS t1') ->join('INNER', $db->quoteName('#__finder_taxonomy') . ' AS t2 ON t2.id = t1.parent_id') ->where('t1.state = 1') ->where('t1.access IN (' . $groups . ')') ->where('t1.id IN (' . implode(',', $filters) . ')') ->where('t2.state = 1') ->where('t2.access IN (' . $groups . ')'); // Load the filters. $db->setQuery($query); $results = $db->loadObjectList(); // Sort the filter ids by branch. foreach ($results as $result) { $this->filters[$result->branch][$result->title] = (int) $result->id; } return true; } /** * Method to process the dynamic taxonomy input. The dynamic taxonomy input * comes in the form of select fields that the user chooses from. The * dynamic taxonomy input is processed AFTER the static taxonomy input * because the dynamic options can be used to further narrow a static * taxonomy filter. * * @param array $filters An array of taxonomy node ids. * * @return boolean True on success. * * @since 2.5 * @throws Exception on database error. */ protected function processDynamicTaxonomy($filters) { // Initialize user variables $user = JFactory::getUser(); $groups = implode(',', $user->getAuthorisedViewLevels()); // Remove duplicates and sanitize. $filters = array_unique($filters); JArrayHelper::toInteger($filters); // Remove any values of zero. if (array_search(0, $filters, true) !== false) { unset($filters[array_search(0, $filters, true)]); } // Check if we have any real input. if (empty($filters)) { return true; } // Get the database object. $db = JFactory::getDbo(); $query = $db->getQuery(true); /* * Create the query to get filters from the database. We do this for * two reasons: one, it allows us to ensure that the filters being used * are real; two, we need to sort the filters by taxonomy branch. */ $query->select('t1.id, t1.title, t2.title AS branch') ->from($db->quoteName('#__finder_taxonomy') . ' AS t1') ->join('INNER', $db->quoteName('#__finder_taxonomy') . ' AS t2 ON t2.id = t1.parent_id') ->where('t1.state = 1') ->where('t1.access IN (' . $groups . ')') ->where('t1.id IN (' . implode(',', $filters) . ')') ->where('t2.state = 1') ->where('t2.access IN (' . $groups . ')'); // Load the filters. $db->setQuery($query); $results = $db->loadObjectList(); // Cleared filter branches. $cleared = array(); /* * Sort the filter ids by branch. Because these filters are designed to * override and further narrow the items selected in the static filter, * we will clear the values from the static filter on a branch by * branch basis before adding the dynamic filters. So, if the static * filter defines a type filter of "articles" and three "category" * filters but the user only limits the category further, the category * filters will be flushed but the type filters will not. */ foreach ($results as $result) { // Check if the branch has been cleared. if (!in_array($result->branch, $cleared)) { // Clear the branch. $this->filters[$result->branch] = array(); // Add the branch to the cleared list. $cleared[] = $result->branch; } // Add the filter to the list. $this->filters[$result->branch][$result->title] = (int) $result->id; } return true; } /** * Method to process the query date filters to determine start and end * date limitations. * * @param string $date1 The first date filter. * @param string $date2 The second date filter. * @param string $when1 The first date modifier. * @param string $when2 The second date modifier. * * @return boolean True on success. * * @since 2.5 */ protected function processDates($date1, $date2, $when1, $when2) { // Clean up the inputs. $date1 = JString::trim(JString::strtolower($date1)); $date2 = JString::trim(JString::strtolower($date2)); $when1 = JString::trim(JString::strtolower($when1)); $when2 = JString::trim(JString::strtolower($when2)); // Get the time offset. $offset = JFactory::getApplication()->get('offset'); // Array of allowed when values. $whens = array('before', 'after', 'exact'); // The value of 'today' is a special case that we need to handle. if ($date1 === JString::strtolower(JText::_('COM_FINDER_QUERY_FILTER_TODAY'))) { $today = JFactory::getDate('now', $offset); $date1 = $today->format('%Y-%m-%d'); } // Try to parse the date string. $date = JFactory::getDate($date1, $offset); // Check if the date was parsed successfully. if ($date->toUnix() !== null) { // Set the date filter. $this->date1 = $date->toSql(); $this->when1 = in_array($when1, $whens) ? $when1 : 'before'; } // The value of 'today' is a special case that we need to handle. if ($date2 === JString::strtolower(JText::_('COM_FINDER_QUERY_FILTER_TODAY'))) { $today = JFactory::getDate('now', $offset); $date2 = $today->format('%Y-%m-%d'); } // Try to parse the date string. $date = JFactory::getDate($date2, $offset); // Check if the date was parsed successfully. if ($date->toUnix() !== null) { // Set the date filter. $this->date2 = $date->toSql(); $this->when2 = in_array($when2, $whens) ? $when2 : 'before'; } return true; } /** * Method to process the query input string and extract required, optional, * and excluded tokens; taxonomy filters; and date filters. * * @param string $input The query input string. * @param string $lang The query input language. * @param string $mode The query matching mode. * * @return boolean True on success. * * @since 2.5 * @throws Exception on database error. */ protected function processString($input, $lang, $mode) { // Clean up the input string. $input = html_entity_decode($input, ENT_QUOTES, 'UTF-8'); $input = JString::strtolower($input); $input = preg_replace('#\s+#mi', ' ', $input); $input = JString::trim($input); $debug = JFactory::getConfig()->get('debug_lang'); /* * First, we need to handle string based modifiers. String based * modifiers could potentially include things like "category:blah" or * "before:2009-10-21" or "type:article", etc. */ $patterns = array( 'before' => JText::_('COM_FINDER_FILTER_WHEN_BEFORE'), 'after' => JText::_('COM_FINDER_FILTER_WHEN_AFTER') ); // Add the taxonomy branch titles to the possible patterns. foreach (FinderIndexerTaxonomy::getBranchTitles() as $branch) { // Add the pattern. $patterns[$branch] = JString::strtolower(JText::_(FinderHelperLanguage::branchSingular($branch))); } // Container for search terms and phrases. $terms = array(); $phrases = array(); // Cleared filter branches. $cleared = array(); /* * Compile the suffix pattern. This is used to match the values of the * filter input string. Single words can be input directly, multi-word * values have to be wrapped in double quotes. */ $quotes = html_entity_decode('‘’'', ENT_QUOTES, 'UTF-8'); $suffix = '(([\w\d' . $quotes . '-]+)|\"([\w\d\s' . $quotes . '-]+)\")'; /* * Iterate through the possible filter patterns and search for matches. * We need to match the key, colon, and a value pattern for the match * to be valid. */ foreach ($patterns as $modifier => $pattern) { $matches = array(); if ($debug) { $pattern = substr($pattern, 2, -2); } // Check if the filter pattern is in the input string. if (preg_match('#' . $pattern . '\s*:\s*' . $suffix . '#mi', $input, $matches)) { // Get the value given to the modifier. $value = isset($matches[3]) ? $matches[3] : $matches[1]; // Now we have to handle the filter string. switch ($modifier) { // Handle a before and after date filters. case 'before': case 'after': { // Get the time offset. $offset = JFactory::getApplication()->get('offset'); // Array of allowed when values. $whens = array('before', 'after', 'exact'); // The value of 'today' is a special case that we need to handle. if ($value === JString::strtolower(JText::_('COM_FINDER_QUERY_FILTER_TODAY'))) { $today = JFactory::getDate('now', $offset); $value = $today->format('%Y-%m-%d'); } // Try to parse the date string. $date = JFactory::getDate($value, $offset); // Check if the date was parsed successfully. if ($date->toUnix() !== null) { // Set the date filter. $this->date1 = $date->toSql(); $this->when1 = in_array($modifier, $whens) ? $modifier : 'before'; } break; } // Handle a taxonomy branch filter. default: { // Try to find the node id. $return = FinderIndexerTaxonomy::getNodeByTitle($modifier, $value); // Check if the node id was found. if ($return) { // Check if the branch has been cleared. if (!in_array($modifier, $cleared)) { // Clear the branch. $this->filters[$modifier] = array(); // Add the branch to the cleared list. $cleared[] = $modifier; } // Add the filter to the list. $this->filters[$modifier][$return->title] = (int) $return->id; } break; } } // Clean up the input string again. $input = str_replace($matches[0], '', $input); $input = preg_replace('#\s+#mi', ' ', $input); $input = JString::trim($input); } } /* * Extract the tokens enclosed in double quotes so that we can handle * them as phrases. */ if (JString::strpos($input, '"') !== false) { $matches = array(); // Extract the tokens enclosed in double quotes. if (preg_match_all('#\"([^"]+)\"#mi', $input, $matches)) { /* * One or more phrases were found so we need to iterate through * them, tokenize them as phrases, and remove them from the raw * input string before we move on to the next processing step. */ foreach ($matches[1] as $key => $match) { // Find the complete phrase in the input string. $pos = JString::strpos($input, $matches[0][$key]); $len = JString::strlen($matches[0][$key]); // Add any terms that are before this phrase to the stack. if (JString::trim(JString::substr($input, 0, $pos))) { $terms = array_merge($terms, explode(' ', JString::trim(JString::substr($input, 0, $pos)))); } // Strip out everything up to and including the phrase. $input = JString::substr($input, $pos + $len); // Clean up the input string again. $input = preg_replace('#\s+#mi', ' ', $input); $input = JString::trim($input); // Get the number of words in the phrase. $parts = explode(' ', $match); // Check if the phrase is longer than three words. if (count($parts) > 3) { /* * If the phrase is longer than three words, we need to * break it down into smaller chunks of phrases that * are less than or equal to three words. We overlap * the chunks so that we can ensure that a match is * found for the complete phrase and not just portions * of it. */ for ($i = 0, $c = count($parts); $i < $c; $i += 2) { // Set up the chunk. $chunk = array(); // The chunk has to be assembled based on how many // pieces are available to use. switch ($c - $i) { /* * If only one word is left, we can break from * the switch and loop because the last word * was already used at the end of the last * chunk. */ case 1: break 2; // If there words are left, we use them both as // the last chunk of the phrase and we're done. case 2: $chunk[] = $parts[$i]; $chunk[] = $parts[$i + 1]; break; // If there are three or more words left, we // build a three word chunk and continue on. default: $chunk[] = $parts[$i]; $chunk[] = $parts[$i + 1]; $chunk[] = $parts[$i + 2]; break; } // If the chunk is not empty, add it as a phrase. if (count($chunk)) { $phrases[] = implode(' ', $chunk); $terms[] = implode(' ', $chunk); } } } else { // The phrase is <= 3 words so we can use it as is. $phrases[] = $match; $terms[] = $match; } } } } // Add the remaining terms if present. if (!empty($input)) { $terms = array_merge($terms, explode(' ', $input)); } // An array of our boolean operators. $operator => $translation $operators = array( 'AND' => JString::strtolower(JText::_('COM_FINDER_QUERY_OPERATOR_AND')), 'OR' => JString::strtolower(JText::_('COM_FINDER_QUERY_OPERATOR_OR')), 'NOT' => JString::strtolower(JText::_('COM_FINDER_QUERY_OPERATOR_NOT')) ); // If language debugging is enabled you need to ignore the debug strings in matching. if (JDEBUG) { $debugStrings = array('**', '??'); $operators = str_replace($debugStrings, '', $operators); } /* * Iterate through the terms and perform any sorting that needs to be * done based on boolean search operators. Terms that are before an * and/or/not modifier have to be handled in relation to their operator. */ for ($i = 0, $c = count($terms); $i < $c; $i++) { // Check if the term is followed by an operator that we understand. if (isset($terms[$i + 1]) && in_array($terms[$i + 1], $operators)) { // Get the operator mode. $op = array_search($terms[$i + 1], $operators); // Handle the AND operator. if ($op === 'AND' && isset($terms[$i + 2])) { // Tokenize the current term. $token = FinderIndexerHelper::tokenize($terms[$i], $lang, true); $token = $this->getTokenData($token); // Set the required flag. $token->required = true; // Add the current token to the stack. $this->included[] = $token; $this->highlight = array_merge($this->highlight, array_keys($token->matches)); // Skip the next token (the mode operator). $this->operators[] = $terms[$i + 1]; // Tokenize the term after the next term (current plus two). $other = FinderIndexerHelper::tokenize($terms[$i + 2], $lang, true); $other = $this->getTokenData($other); // Set the required flag. $other->required = true; // Add the token after the next token to the stack. $this->included[] = $other; $this->highlight = array_merge($this->highlight, array_keys($other->matches)); // Remove the processed phrases if possible. if (($pk = array_search($terms[$i], $phrases)) !== false) { unset($phrases[$pk]); } if (($pk = array_search($terms[$i + 2], $phrases)) !== false) { unset($phrases[$pk]); } // Remove the processed terms. unset($terms[$i]); unset($terms[$i + 1]); unset($terms[$i + 2]); // Adjust the loop. $i += 2; continue; } // Handle the OR operator. elseif ($op === 'OR' && isset($terms[$i + 2])) { // Tokenize the current term. $token = FinderIndexerHelper::tokenize($terms[$i], $lang, true); $token = $this->getTokenData($token); // Set the required flag. $token->required = false; // Add the current token to the stack. if (count($token->matches)) { $this->included[] = $token; $this->highlight = array_merge($this->highlight, array_keys($token->matches)); } else { $this->ignored[] = $token; } // Skip the next token (the mode operator). $this->operators[] = $terms[$i + 1]; // Tokenize the term after the next term (current plus two). $other = FinderIndexerHelper::tokenize($terms[$i + 2], $lang, true); $other = $this->getTokenData($other); // Set the required flag. $other->required = false; // Add the token after the next token to the stack. if (count($other->matches)) { $this->included[] = $other; $this->highlight = array_merge($this->highlight, array_keys($other->matches)); } else { $this->ignored[] = $other; } // Remove the processed phrases if possible. if (($pk = array_search($terms[$i], $phrases)) !== false) { unset($phrases[$pk]); } if (($pk = array_search($terms[$i + 2], $phrases)) !== false) { unset($phrases[$pk]); } // Remove the processed terms. unset($terms[$i]); unset($terms[$i + 1]); unset($terms[$i + 2]); // Adjust the loop. $i += 2; continue; } } // Handle an orphaned OR operator. elseif (isset($terms[$i + 1]) && array_search($terms[$i], $operators) === 'OR') { // Skip the next token (the mode operator). $this->operators[] = $terms[$i]; // Tokenize the next term (current plus one). $other = FinderIndexerHelper::tokenize($terms[$i + 1], $lang, true); $other = $this->getTokenData($other); // Set the required flag. $other->required = false; // Add the token after the next token to the stack. if (count($other->matches)) { $this->included[] = $other; $this->highlight = array_merge($this->highlight, array_keys($other->matches)); } else { $this->ignored[] = $other; } // Remove the processed phrase if possible. if (($pk = array_search($terms[$i + 1], $phrases)) !== false) { unset($phrases[$pk]); } // Remove the processed terms. unset($terms[$i]); unset($terms[$i + 1]); // Adjust the loop. $i++; continue; } // Handle the NOT operator. elseif (isset($terms[$i + 1]) && array_search($terms[$i], $operators) === 'NOT') { // Skip the next token (the mode operator). $this->operators[] = $terms[$i]; // Tokenize the next term (current plus one). $other = FinderIndexerHelper::tokenize($terms[$i + 1], $lang, true); $other = $this->getTokenData($other); // Set the required flag. $other->required = false; // Add the next token to the stack. if (count($other->matches)) { $this->excluded[] = $other; } else { $this->ignored[] = $other; } // Remove the processed phrase if possible. if (($pk = array_search($terms[$i + 1], $phrases)) !== false) { unset($phrases[$pk]); } // Remove the processed terms. unset($terms[$i]); unset($terms[$i + 1]); // Adjust the loop. $i++; continue; } } /* * Iterate through any search phrases and tokenize them. We handle * phrases as autonomous units and do not break them down into two and * three word combinations. */ for ($i = 0, $c = count($phrases); $i < $c; $i++) { // Tokenize the phrase. $token = FinderIndexerHelper::tokenize($phrases[$i], $lang, true); $token = $this->getTokenData($token); // Set the required flag. $token->required = true; // Add the current token to the stack. $this->included[] = $token; $this->highlight = array_merge($this->highlight, array_keys($token->matches)); // Remove the processed term if possible. if (($pk = array_search($phrases[$i], $terms)) !== false) { unset($terms[$pk]); } // Remove the processed phrase. unset($phrases[$i]); } /* * Handle any remaining tokens using the standard processing mechanism. */ if (!empty($terms)) { // Tokenize the terms. $terms = implode(' ', $terms); $tokens = FinderIndexerHelper::tokenize($terms, $lang, false); // Make sure we are working with an array. $tokens = is_array($tokens) ? $tokens : array($tokens); // Get the token data and required state for all the tokens. foreach ($tokens as $token) { // Get the token data. $token = $this->getTokenData($token); // Set the required flag for the token. $token->required = $mode === 'AND' ? ($token->phrase ? false : true) : false; // Add the token to the appropriate stack. if (count($token->matches) || $token->required) { $this->included[] = $token; $this->highlight = array_merge($this->highlight, array_keys($token->matches)); } else { $this->ignored[] = $token; } } } return true; } /** * Method to get the base and similar term ids and, if necessary, suggested * term data from the database. The terms ids are identified based on a * 'like' match in MySQL and/or a common stem. If no term ids could be * found, then we know that we will not be able to return any results for * that term and we should try to find a similar term to use that we can * match so that we can suggest the alternative search query to the user. * * @param FinderIndexerToken $token A FinderIndexerToken object. * * @return FinderIndexerToken A FinderIndexerToken object. * * @since 2.5 * @throws Exception on database error. */ protected function getTokenData($token) { // Get the database object. $db = JFactory::getDbo(); // Create a database query to build match the token. $query = $db->getQuery(true) ->select('t.term, t.term_id') ->from('#__finder_terms AS t'); /* * If the token is a phrase, the lookup process is fairly simple. If * the token is a word, it is a little more complicated. We have to * create two queries to lookup the term and the stem respectively, * then union the result sets together. This is MUCH faster than using * an or condition in the database query. */ if ($token->phrase) { // Add the phrase to the query. $query->where('t.term = ' . $db->quote($token->term)) ->where('t.phrase = 1'); } else { // Add the term to the query. $query->where('t.term = ' . $db->quote($token->term)) ->where('t.phrase = 0'); // Clone the query, replace the WHERE clause. $sub = clone $query; $sub->clear('where'); $sub->where('t.stem = ' . $db->quote($token->stem)); $sub->where('t.phrase = 0'); // Union the two queries. $query->union($sub); } // Get the terms. $db->setQuery($query); $matches = $db->loadObjectList(); // Setup the container. $token->matches = array(); // Check the matching terms. if (!empty($matches)) { // Add the matches to the token. for ($i = 0, $c = count($matches); $i < $c; $i++) { $token->matches[$matches[$i]->term] = (int) $matches[$i]->term_id; } } // If no matches were found, try to find a similar but better token. if (empty($token->matches)) { // Create a database query to get the similar terms. // TODO: PostgreSQL doesn't support SOUNDEX out of the box $query->clear() ->select('DISTINCT t.term_id AS id, t.term AS term') ->from('#__finder_terms AS t') // ->where('t.soundex = ' . soundex($db->quote($token->term))) ->where('t.soundex = SOUNDEX(' . $db->quote($token->term) . ')') ->where('t.phrase = ' . (int) $token->phrase); // Get the terms. $db->setQuery($query); $results = $db->loadObjectList(); // Check if any similar terms were found. if (empty($results)) { return $token; } // Stack for sorting the similar terms. $suggestions = array(); // Get the levnshtein distance for all suggested terms. foreach ($results as $sk => $st) { // Get the levenshtein distance between terms. $distance = levenshtein($st->term, $token->term); // Make sure the levenshtein distance isn't over 50. if ($distance < 50) { $suggestions[$sk] = $distance; } } // Sort the suggestions. asort($suggestions, SORT_NUMERIC); // Get the closest match. $keys = array_keys($suggestions); $key = $keys[0]; // Add the suggested term. $token->suggestion = $results[$key]->term; } return $token; } } PKb��\����5components/com_finder/helpers/indexer/parser/html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JLoader::register('FinderIndexerParser', dirname(__DIR__) . '/parser.php'); /** * HTML Parser class for the Finder indexer package. * * @since 2.5 */ class FinderIndexerParserHtml extends FinderIndexerParser { /** * Method to parse input and extract the plain text. Because this method is * called from both inside and outside the indexer, it needs to be able to * batch out its parsing functionality to deal with the inefficiencies of * regular expressions. We will parse recursively in 2KB chunks. * * @param string $input The input to parse. * * @return string The plain text input. * * @since 2.5 */ public function parse($input) { // Strip invalid UTF-8 characters. $input = iconv("utf-8", "utf-8//IGNORE", $input); // Convert <style>, <noscript> and <head> tags to <script> tags // so we can remove them efficiently. $search = array( '<style', '</style', '<noscript', '</noscript', '<head', '</head', ); $replace = array( '<script', '</script', '<script', '</script', '<script', '</script', ); $input = str_replace($search, $replace, $input); // Strip all script blocks. $input = $this->removeBlocks($input, '<script', '</script>'); // Decode HTML entities. $input = html_entity_decode($input, ENT_QUOTES, 'UTF-8'); // Convert entities equivalent to spaces to actual spaces. $input = str_replace(array(' ', ' '), ' ', $input); // This fixes issues such as '<h1>Title</h1><p>Paragraph</p>' // being transformed into 'TitleParagraph' with no space. $input = str_replace('>', '> ', $input); // Strip HTML tags. $input = strip_tags($input); return parent::parse($input); } /** * Method to process HTML input and extract the plain text. * * @param string $input The input to process. * * @return string The plain text input. * * @since 2.5 */ protected function process($input) { // Replace any amount of white space with a single space. $input = preg_replace('#\s+#u', ' ', $input); return $input; } /** * Method to remove blocks of text between a start and an end tag. * Each block removed is effectively replaced by a single space. * * Note: The start tag and the end tag must be different. * Note: Blocks must not be nested. * Note: This method will function correctly with multi-byte strings. * * @param string $input String to be processed. * @param string $startTag String representing the start tag. * @param string $endTag String representing the end tag. * * @return string with blocks removed. */ private function removeBlocks($input, $startTag, $endTag) { $return = ''; $blocks = array(); $offset = 0; $startTagLength = strlen($startTag); $endTagLength = strlen($endTag); // Find the first start tag. $start = stripos($input, $startTag); // If no start tags were found, return the string unchanged. if ($start === false) { return $input; } // Look for all blocks defined by the start and end tags. while ($start !== false) { // Accumulate the substring up to the start tag. $return .= substr($input, $offset, $start - $offset) . ' '; // Look for an end tag corresponding to the start tag. $end = stripos($input, $endTag, $start + $startTagLength); // If no corresponding end tag, leave the string alone. if ($end === false) { // Fix the offset so part of the string is not duplicated. $offset = $start; break; } // Advance the start position. $offset = $end + $endTagLength; // Look for the next start tag and loop. $start = stripos($input, $startTag, $offset); } // Add in the final substring after the last end tag. $return .= substr($input, $offset); return $return; } } PKb��\�w�--4components/com_finder/helpers/indexer/parser/rtf.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JLoader::register('FinderIndexerParser', dirname(__DIR__) . '/parser.php'); /** * RTF Parser class for the Finder indexer package. * * @since 2.5 */ class FinderIndexerParserRtf extends FinderIndexerParser { /** * Method to process RTF input and extract the plain text. * * @param string $input The input to process. * * @return string The plain text input. * * @since 2.5 */ protected function process($input) { // Remove embedded pictures. $input = preg_replace('#{\\\pict[^}]*}#mis', '', $input); // Remove control characters. $input = str_replace(array('{', '}', "\\\n"), array(' ', ' ', "\n"), $input); $input = preg_replace('#\\\([^;]+?);#mis', ' ', $input); $input = preg_replace('#\\\[\'a-zA-Z0-9]+#mis', ' ', $input); return $input; } } PKb��\:؏���4components/com_finder/helpers/indexer/parser/txt.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JLoader::register('FinderIndexerParser', dirname(__DIR__) . '/parser.php'); /** * Text Parser class for the Finder indexer package. * * @since 2.5 */ class FinderIndexerParserTxt extends FinderIndexerParser { /** * Method to process Text input and extract the plain text. * * @param string $input The input to process. * * @return string The plain text input. * * @since 2.5 */ protected function process($input) { return $input; } } PKb��\��s;85850components/com_finder/helpers/indexer/helper.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; use Joomla\Registry\Registry; JLoader::register('FinderIndexerParser', __DIR__ . '/parser.php'); JLoader::register('FinderIndexerStemmer', __DIR__ . '/stemmer.php'); JLoader::register('FinderIndexerToken', __DIR__ . '/token.php'); /** * Helper class for the Finder indexer package. * * @since 2.5 */ class FinderIndexerHelper { /** * The token stemmer object. The stemmer is set by whatever class * wishes to use it but it must be an instance of FinderIndexerStemmer. * * @var FinderIndexerStemmer * @since 2.5 */ public static $stemmer; /** * Method to parse input into plain text. * * @param string $input The raw input. * @param string $format The format of the input. [optional] * * @return string The parsed input. * * @since 2.5 * @throws Exception on invalid parser. */ public static function parse($input, $format = 'html') { // Get a parser for the specified format and parse the input. return FinderIndexerParser::getInstance($format)->parse($input); } /** * Method to tokenize a text string. * * @param string $input The input to tokenize. * @param string $lang The language of the input. * @param boolean $phrase Flag to indicate whether input could be a phrase. [optional] * * @return array An array of FinderIndexerToken objects. * * @since 2.5 */ public static function tokenize($input, $lang, $phrase = false) { static $cache; $store = JString::strlen($input) < 128 ? md5($input . '::' . $lang . '::' . $phrase) : null; // Check if the string has been tokenized already. if ($store && isset($cache[$store])) { return $cache[$store]; } $tokens = array(); $quotes = html_entity_decode('‘’'', ENT_QUOTES, 'UTF-8'); // Get the simple language key. $lang = self::getPrimaryLanguage($lang); /* * Parsing the string input into terms is a multi-step process. * * Regexes: * 1. Remove everything except letters, numbers, quotes, apostrophe, plus, dash, period, and comma. * 2. Remove plus, dash, period, and comma characters located before letter characters. * 3. Remove plus, dash, period, and comma characters located after other characters. * 4. Remove plus, period, and comma characters enclosed in alphabetical characters. Ungreedy. * 5. Remove orphaned apostrophe, plus, dash, period, and comma characters. * 6. Remove orphaned quote characters. * 7. Replace the assorted single quotation marks with the ASCII standard single quotation. * 8. Remove multiple space characters and replaces with a single space. */ $input = JString::strtolower($input); $input = preg_replace('#[^\pL\pM\pN\p{Pi}\p{Pf}\'+-.,]+#mui', ' ', $input); $input = preg_replace('#(^|\s)[+-.,]+([\pL\pM]+)#mui', ' $1', $input); $input = preg_replace('#([\pL\pM\pN]+)[+-.,]+(\s|$)#mui', '$1 ', $input); $input = preg_replace('#([\pL\pM]+)[+.,]+([\pL\pM]+)#muiU', '$1 $2', $input); $input = preg_replace('#(^|\s)[\'+-.,]+(\s|$)#mui', ' ', $input); $input = preg_replace('#(^|\s)[\p{Pi}\p{Pf}]+(\s|$)#mui', ' ', $input); $input = preg_replace('#[' . $quotes . ']+#mui', '\'', $input); $input = preg_replace('#\s+#mui', ' ', $input); $input = JString::trim($input); // Explode the normalized string to get the terms. $terms = explode(' ', $input); /* * If we have Unicode support and are dealing with Chinese text, Chinese * has to be handled specially because there are not necessarily any spaces * between the "words". So, we have to test if the words belong to the Chinese * character set and if so, explode them into single glyphs or "words". */ if ($lang === 'zh') { // Iterate through the terms and test if they contain Chinese. for ($i = 0, $n = count($terms); $i < $n; $i++) { $charMatches = array(); $charCount = preg_match_all('#[\p{Han}]#mui', $terms[$i], $charMatches); // Split apart any groups of Chinese characters. for ($j = 0; $j < $charCount; $j++) { $tSplit = JString::str_ireplace($charMatches[0][$j], '', $terms[$i], false); if (!empty($tSplit)) { $terms[$i] = $tSplit; } else { unset($terms[$i]); } $terms[] = $charMatches[0][$j]; } } // Reset array keys. $terms = array_values($terms); } /* * If we have to handle the input as a phrase, that means we don't * tokenize the individual terms and we do not create the two and three * term combinations. The phrase must contain more than one word! */ if ($phrase === true && count($terms) > 1) { // Create tokens from the phrase. $tokens[] = new FinderIndexerToken($terms, $lang); } else { // Create tokens from the terms. for ($i = 0, $n = count($terms); $i < $n; $i++) { $tokens[] = new FinderIndexerToken($terms[$i], $lang); } // Create two and three word phrase tokens from the individual words. for ($i = 0, $n = count($tokens); $i < $n; $i++) { // Setup the phrase positions. $i2 = $i + 1; $i3 = $i + 2; // Create the two word phrase. if ($i2 < $n && isset($tokens[$i2])) { // Tokenize the two word phrase. $token = new FinderIndexerToken(array($tokens[$i]->term, $tokens[$i2]->term), $lang, $lang === 'zh' ? '' : ' '); $token->derived = true; // Add the token to the stack. $tokens[] = $token; } // Create the three word phrase. if ($i3 < $n && isset($tokens[$i3])) { // Tokenize the three word phrase. $token = new FinderIndexerToken(array($tokens[$i]->term, $tokens[$i2]->term, $tokens[$i3]->term), $lang, $lang === 'zh' ? '' : ' '); $token->derived = true; // Add the token to the stack. $tokens[] = $token; } } } if ($store) { $cache[$store] = count($tokens) > 1 ? $tokens : array_shift($tokens); return $cache[$store]; } else { return count($tokens) > 1 ? $tokens : array_shift($tokens); } } /** * Method to get the base word of a token. This method uses the public * {@link FinderIndexerHelper::$stemmer} object if it is set. If no stemmer is set, * the original token is returned. * * @param string $token The token to stem. * @param string $lang The language of the token. * * @return string The root token. * * @since 2.5 */ public static function stem($token, $lang) { // Trim apostrophes at either end of the token. $token = JString::trim($token, '\''); // Trim everything after any apostrophe in the token. if (($pos = JString::strpos($token, '\'')) !== false) { $token = JString::substr($token, 0, $pos); } // Stem the token if we have a valid stemmer to use. if (self::$stemmer instanceof FinderIndexerStemmer) { return self::$stemmer->stem($token, $lang); } else { return $token; } } /** * Method to add a content type to the database. * * @param string $title The type of content. For example: PDF * @param string $mime The mime type of the content. For example: PDF [optional] * * @return integer The id of the content type. * * @since 2.5 * @throws Exception on database error. */ public static function addContentType($title, $mime = null) { static $types; $db = JFactory::getDbo(); $query = $db->getQuery(true); // Check if the types are loaded. if (empty($types)) { // Build the query to get the types. $query->select('*') ->from($db->quoteName('#__finder_types')); // Get the types. $db->setQuery($query); $types = $db->loadObjectList('title'); } // Check if the type already exists. if (isset($types[$title])) { return (int) $types[$title]->id; } // Add the type. $query->clear() ->insert($db->quoteName('#__finder_types')) ->columns(array($db->quoteName('title'), $db->quoteName('mime'))) ->values($db->quote($title) . ', ' . $db->quote($mime)); $db->setQuery($query); $db->execute(); // Return the new id. return (int) $db->insertid(); } /** * Method to check if a token is common in a language. * * @param string $token The token to test. * @param string $lang The language to reference. * * @return boolean True if common, false otherwise. * * @since 2.5 */ public static function isCommon($token, $lang) { static $data; // Load the common tokens for the language if necessary. if (!isset($data[$lang])) { $data[$lang] = self::getCommonWords($lang); } // Check if the token is in the common array. if (in_array($token, $data[$lang])) { return true; } else { return false; } } /** * Method to get an array of common terms for a language. * * @param string $lang The language to use. * * @return array Array of common terms. * * @since 2.5 * @throws Exception on database error. */ public static function getCommonWords($lang) { $db = JFactory::getDbo(); // Create the query to load all the common terms for the language. $query = $db->getQuery(true) ->select($db->quoteName('term')) ->from($db->quoteName('#__finder_terms_common')) ->where($db->quoteName('language') . ' = ' . $db->quote($lang)); // Load all of the common terms for the language. $db->setQuery($query); $results = $db->loadColumn(); return $results; } /** * Method to get the default language for the site. * * @return string The default language string. * * @since 2.5 */ public static function getDefaultLanguage() { static $lang; // We need to go to com_languages to get the site default language, it's the best we can guess. if (empty($lang)) { $lang = JComponentHelper::getParams('com_languages')->get('site', 'en-GB'); } return $lang; } /** * Method to parse a language/locale key and return a simple language string. * * @param string $lang The language/locale key. For example: en-GB * * @return string The simple language string. For example: en * * @since 2.5 */ public static function getPrimaryLanguage($lang) { static $data; // Only parse the identifier if necessary. if (!isset($data[$lang])) { if (is_callable(array('Locale', 'getPrimaryLanguage'))) { // Get the language key using the Locale package. $data[$lang] = Locale::getPrimaryLanguage($lang); } else { // Get the language key using string position. $data[$lang] = JString::substr($lang, 0, JString::strpos($lang, '-')); } } return $data[$lang]; } /** * Method to get the path (SEF route) for a content item. * * @param string $url The non-SEF route to the content item. * * @return string The path for the content item. * * @since 2.5 */ public static function getContentPath($url) { static $router; // Only get the router once. if (!($router instanceof JRouter)) { // Get and configure the site router. $config = JFactory::getConfig(); $router = JRouter::getInstance('site'); $router->setMode($config->get('sef', 1)); } // Build the relative route. $uri = $router->build($url); $route = $uri->toString(array('path', 'query', 'fragment')); $route = str_replace(JUri::base(true) . '/', '', $route); return $route; } /** * Method to get extra data for a content before being indexed. This is how * we add Comments, Tags, Labels, etc. that should be available to Finder. * * @param FinderIndexerResult &$item The item to index as an FinderIndexerResult object. * * @return boolean True on success, false on failure. * * @since 2.5 * @throws Exception on database error. */ public static function getContentExtras(FinderIndexerResult &$item) { // Get the event dispatcher. $dispatcher = JEventDispatcher::getInstance(); // Load the finder plugin group. JPluginHelper::importPlugin('finder'); try { // Trigger the event. $results = $dispatcher->trigger('onPrepareFinderContent', array(&$item)); // Check the returned results. This is for plugins that don't throw // exceptions when they encounter serious errors. if (in_array(false, $results)) { throw new Exception($dispatcher->getError(), 500); } } catch (Exception $e) { // Handle a caught exception. throw $e; } return true; } /** * Method to process content text using the onContentPrepare event trigger. * * @param string $text The content to process. * @param Registry $params The parameters object. [optional] * * @return string The processed content. * * @since 2.5 */ public static function prepareContent($text, $params = null) { static $loaded; // Get the dispatcher. $dispatcher = JEventDispatcher::getInstance(); // Load the content plugins if necessary. if (empty($loaded)) { JPluginHelper::importPlugin('content'); $loaded = true; } // Instantiate the parameter object if necessary. if (!($params instanceof Registry)) { $registry = new Registry; $registry->loadString($params); $params = $registry; } // Create a mock content object. $content = JTable::getInstance('Content'); $content->text = $text; // Fire the onContentPrepare event. $dispatcher->trigger('onContentPrepare', array('com_finder.indexer', &$content, &$params, 0)); return $content->text; } } PKb��\�d� V V1components/com_finder/helpers/indexer/adapter.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JLoader::register('FinderIndexer', __DIR__ . '/indexer.php'); JLoader::register('FinderIndexerHelper', __DIR__ . '/helper.php'); JLoader::register('FinderIndexerResult', __DIR__ . '/result.php'); JLoader::register('FinderIndexerTaxonomy', __DIR__ . '/taxonomy.php'); /** * Prototype adapter class for the Finder indexer package. * * @since 2.5 */ abstract class FinderIndexerAdapter extends JPlugin { /** * The context is somewhat arbitrary but it must be unique or there will be * conflicts when managing plugin/indexer state. A good best practice is to * use the plugin name suffix as the context. For example, if the plugin is * named 'plgFinderContent', the context could be 'Content'. * * @var string * @since 2.5 */ protected $context; /** * The extension name. * * @var string * @since 2.5 */ protected $extension; /** * The sublayout to use when rendering the results. * * @var string * @since 2.5 */ protected $layout; /** * The mime type of the content the adapter indexes. * * @var string * @since 2.5 */ protected $mime; /** * The access level of an item before save. * * @var integer * @since 2.5 */ protected $old_access; /** * The access level of a category before save. * * @var integer * @since 2.5 */ protected $old_cataccess; /** * The type of content the adapter indexes. * * @var string * @since 2.5 */ protected $type_title; /** * The type id of the content. * * @var integer * @since 2.5 */ protected $type_id; /** * The database object. * * @var object * @since 2.5 */ protected $db; /** * The table name. * * @var string * @since 2.5 */ protected $table; /** * The indexer object. * * @var FinderIndexer * @since 3.0 */ protected $indexer; /** * The field the published state is stored in. * * @var string * @since 2.5 */ protected $state_field = 'state'; /** * Method to instantiate the indexer adapter. * * @param object &$subject The object to observe. * @param array $config An array that holds the plugin configuration. * * @since 2.5 */ public function __construct(&$subject, $config) { // Get the database object. $this->db = JFactory::getDbo(); // Call the parent constructor. parent::__construct($subject, $config); // Get the type id. $this->type_id = $this->getTypeId(); // Add the content type if it doesn't exist and is set. if (empty($this->type_id) && !empty($this->type_title)) { $this->type_id = FinderIndexerHelper::addContentType($this->type_title, $this->mime); } // Check for a layout override. if ($this->params->get('layout')) { $this->layout = $this->params->get('layout'); } // Get the indexer object $this->indexer = FinderIndexer::getInstance(); } /** * Method to get the adapter state and push it into the indexer. * * @return boolean True on success. * * @since 2.5 * @throws Exception on error. */ public function onStartIndex() { // Get the indexer state. $iState = FinderIndexer::getState(); // Get the number of content items. $total = (int) $this->getContentCount(); // Add the content count to the total number of items. $iState->totalItems += $total; // Populate the indexer state information for the adapter. $iState->pluginState[$this->context]['total'] = $total; $iState->pluginState[$this->context]['offset'] = 0; // Set the indexer state. FinderIndexer::setState($iState); } /** * Method to prepare for the indexer to be run. This method will often * be used to include dependencies and things of that nature. * * @return boolean True on success. * * @since 2.5 * @throws Exception on error. */ public function onBeforeIndex() { // Get the indexer and adapter state. $iState = FinderIndexer::getState(); $aState = $iState->pluginState[$this->context]; // Check the progress of the indexer and the adapter. if ($iState->batchOffset == $iState->batchSize || $aState['offset'] == $aState['total']) { return true; } // Run the setup method. return $this->setup(); } /** * Method to index a batch of content items. This method can be called by * the indexer many times throughout the indexing process depending on how * much content is available for indexing. It is important to track the * progress correctly so we can display it to the user. * * @return boolean True on success. * * @since 2.5 * @throws Exception on error. */ public function onBuildIndex() { // Get the indexer and adapter state. $iState = FinderIndexer::getState(); $aState = $iState->pluginState[$this->context]; // Check the progress of the indexer and the adapter. if ($iState->batchOffset == $iState->batchSize || $aState['offset'] == $aState['total']) { return true; } // Get the batch offset and size. $offset = (int) $aState['offset']; $limit = (int) ($iState->batchSize - $iState->batchOffset); // Get the content items to index. $items = $this->getItems($offset, $limit); // Iterate through the items and index them. for ($i = 0, $n = count($items); $i < $n; $i++) { // Index the item. $this->index($items[$i]); // Adjust the offsets. $offset++; $iState->batchOffset++; $iState->totalItems--; } // Update the indexer state. $aState['offset'] = $offset; $iState->pluginState[$this->context] = $aState; FinderIndexer::setState($iState); return true; } /** * Method to change the value of a content item's property in the links * table. This is used to synchronize published and access states that * are changed when not editing an item directly. * * @param string $id The ID of the item to change. * @param string $property The property that is being changed. * @param integer $value The new value of that property. * * @return boolean True on success. * * @since 2.5 * @throws Exception on database error. */ protected function change($id, $property, $value) { // Check for a property we know how to handle. if ($property !== 'state' && $property !== 'access') { return true; } // Get the url for the content id. $item = $this->db->quote($this->getUrl($id, $this->extension, $this->layout)); // Update the content items. $query = $this->db->getQuery(true) ->update($this->db->quoteName('#__finder_links')) ->set($this->db->quoteName($property) . ' = ' . (int) $value) ->where($this->db->quoteName('url') . ' = ' . $item); $this->db->setQuery($query); $this->db->execute(); return true; } /** * Method to index an item. * * @param FinderIndexerResult $item The item to index as a FinderIndexerResult object. * * @return boolean True on success. * * @since 2.5 * @throws Exception on database error. */ abstract protected function index(FinderIndexerResult $item); /** * Method to reindex an item. * * @param integer $id The ID of the item to reindex. * * @return boolean True on success. * * @since 2.5 * @throws Exception on database error. */ protected function reindex($id) { // Run the setup method. $this->setup(); // Remove the old item. $this->remove($id); // Get the item. $item = $this->getItem($id); // Index the item. $this->index($item); } /** * Method to remove an item from the index. * * @param string $id The ID of the item to remove. * * @return boolean True on success. * * @since 2.5 * @throws Exception on database error. */ protected function remove($id) { // Get the item's URL $url = $this->db->quote($this->getUrl($id, $this->extension, $this->layout)); // Get the link ids for the content items. $query = $this->db->getQuery(true) ->select($this->db->quoteName('link_id')) ->from($this->db->quoteName('#__finder_links')) ->where($this->db->quoteName('url') . ' = ' . $url); $this->db->setQuery($query); $items = $this->db->loadColumn(); // Check the items. if (empty($items)) { return true; } // Remove the items. foreach ($items as $item) { $this->indexer->remove($item); } return true; } /** * Method to setup the adapter before indexing. * * @return boolean True on success, false on failure. * * @since 2.5 * @throws Exception on database error. */ abstract protected function setup(); /** * Method to update index data on category access level changes * * @param JTable $row A JTable object * * @return void * * @since 2.5 */ protected function categoryAccessChange($row) { $query = clone $this->getStateQuery(); $query->where('c.id = ' . (int) $row->id); // Get the access level. $this->db->setQuery($query); $items = $this->db->loadObjectList(); // Adjust the access level for each item within the category. foreach ($items as $item) { // Set the access level. $temp = max($item->access, $row->access); // Update the item. $this->change((int) $item->id, 'access', $temp); // Reindex the item $this->reindex($row->id); } } /** * Method to update index data on category access level changes * * @param array $pks A list of primary key ids of the content that has changed state. * @param integer $value The value of the state that the content has been changed to. * * @return void * * @since 2.5 */ protected function categoryStateChange($pks, $value) { /* * The item's published state is tied to the category * published state so we need to look up all published states * before we change anything. */ foreach ($pks as $pk) { $query = clone $this->getStateQuery(); $query->where('c.id = ' . (int) $pk); // Get the published states. $this->db->setQuery($query); $items = $this->db->loadObjectList(); // Adjust the state for each item within the category. foreach ($items as $item) { // Translate the state. $temp = $this->translateState($item->state, $value); // Update the item. $this->change($item->id, 'state', $temp); // Reindex the item $this->reindex($item->id); } } } /** * Method to check the existing access level for categories * * @param JTable $row A JTable object * * @return void * * @since 2.5 */ protected function checkCategoryAccess($row) { $query = $this->db->getQuery(true) ->select($this->db->quoteName('access')) ->from($this->db->quoteName('#__categories')) ->where($this->db->quoteName('id') . ' = ' . (int) $row->id); $this->db->setQuery($query); // Store the access level to determine if it changes $this->old_cataccess = $this->db->loadResult(); } /** * Method to check the existing access level for items * * @param JTable $row A JTable object * * @return void * * @since 2.5 */ protected function checkItemAccess($row) { $query = $this->db->getQuery(true) ->select($this->db->quoteName('access')) ->from($this->db->quoteName($this->table)) ->where($this->db->quoteName('id') . ' = ' . (int) $row->id); $this->db->setQuery($query); // Store the access level to determine if it changes $this->old_access = $this->db->loadResult(); } /** * Method to get the number of content items available to index. * * @return integer The number of content items available to index. * * @since 2.5 * @throws Exception on database error. */ protected function getContentCount() { $return = 0; // Get the list query. $query = $this->getListQuery(); // Check if the query is valid. if (empty($query)) { return $return; } // Tweak the SQL query to make the total lookup faster. if ($query instanceof JDatabaseQuery) { $query = clone $query; $query->clear('select') ->select('COUNT(*)') ->clear('order'); } // Get the total number of content items to index. $this->db->setQuery($query); $return = (int) $this->db->loadResult(); return $return; } /** * Method to get a content item to index. * * @param integer $id The id of the content item. * * @return FinderIndexerResult A FinderIndexerResult object. * * @since 2.5 * @throws Exception on database error. */ protected function getItem($id) { // Get the list query and add the extra WHERE clause. $query = $this->getListQuery(); $query->where('a.id = ' . (int) $id); // Get the item to index. $this->db->setQuery($query); $row = $this->db->loadAssoc(); // Convert the item to a result object. $item = JArrayHelper::toObject($row, 'FinderIndexerResult'); // Set the item type. $item->type_id = $this->type_id; // Set the item layout. $item->layout = $this->layout; return $item; } /** * Method to get a list of content items to index. * * @param integer $offset The list offset. * @param integer $limit The list limit. * @param JDatabaseQuery $query A JDatabaseQuery object. [optional] * * @return array An array of FinderIndexerResult objects. * * @since 2.5 * @throws Exception on database error. */ protected function getItems($offset, $limit, $query = null) { $items = array(); // Get the content items to index. $this->db->setQuery($this->getListQuery($query), $offset, $limit); $rows = $this->db->loadAssocList(); // Convert the items to result objects. foreach ($rows as $row) { // Convert the item to a result object. $item = JArrayHelper::toObject($row, 'FinderIndexerResult'); // Set the item type. $item->type_id = $this->type_id; // Set the mime type. $item->mime = $this->mime; // Set the item layout. $item->layout = $this->layout; // Set the extension if present if (isset($row->extension)) { $item->extension = $row->extension; } // Add the item to the stack. $items[] = $item; } return $items; } /** * Method to get the SQL query used to retrieve the list of content items. * * @param mixed $query A JDatabaseQuery object. [optional] * * @return JDatabaseQuery A database object. * * @since 2.5 */ protected function getListQuery($query = null) { // Check if we can use the supplied SQL query. $query = $query instanceof JDatabaseQuery ? $query : $this->db->getQuery(true); return $query; } /** * Method to get the plugin type * * @param integer $id The plugin ID * * @return string The plugin type * * @since 2.5 */ protected function getPluginType($id) { // Prepare the query $query = $this->db->getQuery(true) ->select($this->db->quoteName('element')) ->from($this->db->quoteName('#__extensions')) ->where($this->db->quoteName('extension_id') . ' = ' . (int) $id); $this->db->setQuery($query); $type = $this->db->loadResult(); return $type; } /** * Method to get a SQL query to load the published and access states for * an article and category. * * @return JDatabaseQuery A database object. * * @since 2.5 */ protected function getStateQuery() { $query = $this->db->getQuery(true); // Item ID $query->select('a.id'); // Item and category published state $query->select('a.' . $this->state_field . ' AS state, c.published AS cat_state'); // Item and category access levels $query->select('a.access, c.access AS cat_access') ->from($this->table . ' AS a') ->join('LEFT', '#__categories AS c ON c.id = a.catid'); return $query; } /** * Method to get the query clause for getting items to update by time. * * @param string $time The modified timestamp. * * @return JDatabaseQuery A database object. * * @since 2.5 */ protected function getUpdateQueryByTime($time) { // Build an SQL query based on the modified time. $query = $this->db->getQuery(true) ->where('a.modified >= ' . $this->db->quote($time)); return $query; } /** * Method to get the query clause for getting items to update by id. * * @param array $ids The ids to load. * * @return JDatabaseQuery A database object. * * @since 2.5 */ protected function getUpdateQueryByIds($ids) { // Build an SQL query based on the item ids. $query = $this->db->getQuery(true) ->where('a.id IN(' . implode(',', $ids) . ')'); return $query; } /** * Method to get the type id for the adapter content. * * @return integer The numeric type id for the content. * * @since 2.5 * @throws Exception on database error. */ protected function getTypeId() { // Get the type id from the database. $query = $this->db->getQuery(true) ->select($this->db->quoteName('id')) ->from($this->db->quoteName('#__finder_types')) ->where($this->db->quoteName('title') . ' = ' . $this->db->quote($this->type_title)); $this->db->setQuery($query); $result = (int) $this->db->loadResult(); return $result; } /** * Method to get the URL for the item. The URL is how we look up the link * in the Finder index. * * @param integer $id The id of the item. * @param string $extension The extension the category is in. * @param string $view The view for the URL. * * @return string The URL of the item. * * @since 2.5 */ protected function getUrl($id, $extension, $view) { return 'index.php?option=' . $extension . '&view=' . $view . '&id=' . $id; } /** * Method to get the page title of any menu item that is linked to the * content item, if it exists and is set. * * @param string $url The url of the item. * * @return mixed The title on success, null if not found. * * @since 2.5 * @throws Exception on database error. */ protected function getItemMenuTitle($url) { $return = null; // Set variables $user = JFactory::getUser(); $groups = implode(',', $user->getAuthorisedViewLevels()); // Build a query to get the menu params. $query = $this->db->getQuery(true) ->select($this->db->quoteName('params')) ->from($this->db->quoteName('#__menu')) ->where($this->db->quoteName('link') . ' = ' . $this->db->quote($url)) ->where($this->db->quoteName('published') . ' = 1') ->where($this->db->quoteName('access') . ' IN (' . $groups . ')'); // Get the menu params from the database. $this->db->setQuery($query); $params = $this->db->loadResult(); // Check the results. if (empty($params)) { return $return; } // Instantiate the params. $params = json_decode($params); // Get the page title if it is set. if (isset($params->page_title) && $params->page_title) { $return = $params->page_title; } return $return; } /** * Method to update index data on access level changes * * @param JTable $row A JTable object * * @return void * * @since 2.5 */ protected function itemAccessChange($row) { $query = clone $this->getStateQuery(); $query->where('a.id = ' . (int) $row->id); // Get the access level. $this->db->setQuery($query); $item = $this->db->loadObject(); // Set the access level. $temp = max($row->access, $item->cat_access); // Update the item. $this->change((int) $row->id, 'access', $temp); } /** * Method to update index data on published state changes * * @param array $pks A list of primary key ids of the content that has changed state. * @param integer $value The value of the state that the content has been changed to. * * @return void * * @since 2.5 */ protected function itemStateChange($pks, $value) { /* * The item's published state is tied to the category * published state so we need to look up all published states * before we change anything. */ foreach ($pks as $pk) { $query = clone $this->getStateQuery(); $query->where('a.id = ' . (int) $pk); // Get the published states. $this->db->setQuery($query); $item = $this->db->loadObject(); // Translate the state. $temp = $this->translateState($value, $item->cat_state); // Update the item. $this->change($pk, 'state', $temp); // Reindex the item $this->reindex($pk); } } /** * Method to update index data when a plugin is disabled * * @param array $pks A list of primary key ids of the content that has changed state. * * @return void * * @since 2.5 */ protected function pluginDisable($pks) { // Since multiple plugins may be disabled at a time, we need to check first // that we're handling the appropriate one for the context foreach ($pks as $pk) { if ($this->getPluginType($pk) == strtolower($this->context)) { // Get all of the items to unindex them $query = clone $this->getStateQuery(); $this->db->setQuery($query); $items = $this->db->loadColumn(); // Remove each item foreach ($items as $item) { $this->remove($item); } } } } /** * Method to translate the native content states into states that the * indexer can use. * * @param integer $item The item state. * @param integer $category The category state. [optional] * * @return integer The translated indexer state. * * @since 2.5 */ protected function translateState($item, $category = null) { // If category is present, factor in its states as well if ($category !== null) { if ($category == 0) { $item = 0; } } // Translate the state switch ($item) { // Published and archived items only should return a published state case 1; case 2: return 1; // All other states should return a unpublished state default: case 0: return 0; } } } PKb��\�[h�2V2V6components/com_finder/helpers/indexer/driver/mysql.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; jimport('joomla.filesystem.file'); /** * Indexer class supporting MySQL(i) for the Finder indexer package. * * The indexer class provides the core functionality of the Finder * search engine. It is responsible for adding and updating the * content links table; extracting and scoring tokens; and maintaining * all referential information for the content. * * Note: All exceptions thrown from within this class should be caught * by the controller. * * @since 3.0 */ class FinderIndexerDriverMysql extends FinderIndexer { /** * Method to index a content item. * * @param FinderIndexerResult $item The content item to index. * @param string $format The format of the content. [optional] * * @return integer The ID of the record in the links table. * * @since 3.0 * @throws Exception on database error. */ public function index($item, $format = 'html') { // Mark beforeIndexing in the profiler. static::$profiler ? static::$profiler->mark('beforeIndexing') : null; $db = JFactory::getDbo(); $nd = $db->getNullDate(); // Check if the item is in the database. $query = $db->getQuery(true) ->select($db->quoteName('link_id') . ', ' . $db->quoteName('md5sum')) ->from($db->quoteName('#__finder_links')) ->where($db->quoteName('url') . ' = ' . $db->quote($item->url)); // Load the item from the database. $db->setQuery($query); $link = $db->loadObject(); // Get the indexer state. $state = static::getState(); // Get the signatures of the item. $curSig = static::getSignature($item); $oldSig = isset($link->md5sum) ? $link->md5sum : null; // Get the other item information. $linkId = empty($link->link_id) ? null : $link->link_id; $isNew = empty($link->link_id) ? true : false; // Check the signatures. If they match, the item is up to date. if (!$isNew && $curSig == $oldSig) { return $linkId; } /* * If the link already exists, flush all the term maps for the item. * Maps are stored in 16 tables so we need to iterate through and flush * each table one at a time. */ if (!$isNew) { for ($i = 0; $i <= 15; $i++) { // Flush the maps for the link. $query->clear() ->delete($db->quoteName('#__finder_links_terms' . dechex($i))) ->where($db->quoteName('link_id') . ' = ' . (int) $linkId); $db->setQuery($query); $db->execute(); } // Remove the taxonomy maps. FinderIndexerTaxonomy::removeMaps($linkId); } // Mark afterUnmapping in the profiler. static::$profiler ? static::$profiler->mark('afterUnmapping') : null; // Perform cleanup on the item data. $item->publish_start_date = (int) $item->publish_start_date != 0 ? $item->publish_start_date : $nd; $item->publish_end_date = (int) $item->publish_end_date != 0 ? $item->publish_end_date : $nd; $item->start_date = (int) $item->start_date != 0 ? $item->start_date : $nd; $item->end_date = (int) $item->end_date != 0 ? $item->end_date : $nd; // Prepare the item description. $item->description = FinderIndexerHelper::parse($item->summary); /* * Now, we need to enter the item into the links table. If the item * already exists in the database, we need to use an UPDATE query. * Otherwise, we need to use an INSERT to get the link id back. */ if ($isNew) { $columnsArray = array( $db->quoteName('url'), $db->quoteName('route'), $db->quoteName('title'), $db->quoteName('description'), $db->quoteName('indexdate'), $db->quoteName('published'), $db->quoteName('state'), $db->quoteName('access'), $db->quoteName('language'), $db->quoteName('type_id'), $db->quoteName('object'), $db->quoteName('publish_start_date'), $db->quoteName('publish_end_date'), $db->quoteName('start_date'), $db->quoteName('end_date'), $db->quoteName('list_price'), $db->quoteName('sale_price') ); // Insert the link. $query->clear() ->insert($db->quoteName('#__finder_links')) ->columns($columnsArray) ->values( $db->quote($item->url) . ', ' . $db->quote($item->route) . ', ' . $db->quote($item->title) . ', ' . $db->quote($item->description) . ', ' . $query->currentTimestamp() . ', ' . '1, ' . (int) $item->state . ', ' . (int) $item->access . ', ' . $db->quote($item->language) . ', ' . (int) $item->type_id . ', ' . $db->quote(serialize($item)) . ', ' . $db->quote($item->publish_start_date) . ', ' . $db->quote($item->publish_end_date) . ', ' . $db->quote($item->start_date) . ', ' . $db->quote($item->end_date) . ', ' . (double) ($item->list_price ? $item->list_price : 0) . ', ' . (double) ($item->sale_price ? $item->sale_price : 0) ); $db->setQuery($query); $db->execute(); // Get the link id. $linkId = (int) $db->insertid(); } else { // Update the link. $query->clear() ->update($db->quoteName('#__finder_links')) ->set($db->quoteName('route') . ' = ' . $db->quote($item->route)) ->set($db->quoteName('title') . ' = ' . $db->quote($item->title)) ->set($db->quoteName('description') . ' = ' . $db->quote($item->description)) ->set($db->quoteName('indexdate') . ' = ' . $query->currentTimestamp()) ->set($db->quoteName('state') . ' = ' . (int) $item->state) ->set($db->quoteName('access') . ' = ' . (int) $item->access) ->set($db->quoteName('language') . ' = ' . $db->quote($item->language)) ->set($db->quoteName('type_id') . ' = ' . (int) $item->type_id) ->set($db->quoteName('object') . ' = ' . $db->quote(serialize($item))) ->set($db->quoteName('publish_start_date') . ' = ' . $db->quote($item->publish_start_date)) ->set($db->quoteName('publish_end_date') . ' = ' . $db->quote($item->publish_end_date)) ->set($db->quoteName('start_date') . ' = ' . $db->quote($item->start_date)) ->set($db->quoteName('end_date') . ' = ' . $db->quote($item->end_date)) ->set($db->quoteName('list_price') . ' = ' . (double) ($item->list_price ? $item->list_price : 0)) ->set($db->quoteName('sale_price') . ' = ' . (double) ($item->sale_price ? $item->sale_price : 0)) ->where('link_id = ' . (int) $linkId); $db->setQuery($query); $db->execute(); } // Set up the variables we will need during processing. $count = 0; // Mark afterLinking in the profiler. static::$profiler ? static::$profiler->mark('afterLinking') : null; // Truncate the tokens tables. $db->truncateTable('#__finder_tokens'); // Truncate the tokens aggregate table. $db->truncateTable('#__finder_tokens_aggregate'); /* * Process the item's content. The items can customize their * processing instructions to define extra properties to process * or rearrange how properties are weighted. */ foreach ($item->getInstructions() as $group => $properties) { // Iterate through the properties of the group. foreach ($properties as $property) { // Check if the property exists in the item. if (empty($item->$property)) { continue; } // Tokenize the property. if (is_array($item->$property)) { // Tokenize an array of content and add it to the database. foreach ($item->$property as $ip) { /* * If the group is path, we need to a few extra processing * steps to strip the extension and convert slashes and dashes * to spaces. */ if ($group === static::PATH_CONTEXT) { $ip = JFile::stripExt($ip); $ip = str_replace('/', ' ', $ip); $ip = str_replace('-', ' ', $ip); } // Tokenize a string of content and add it to the database. $count += $this->tokenizeToDb($ip, $group, $item->language, $format); // Check if we're approaching the memory limit of the token table. if ($count > static::$state->options->get('memory_table_limit', 30000)) { $this->toggleTables(false); } } } else { /* * If the group is path, we need to a few extra processing * steps to strip the extension and convert slashes and dashes * to spaces. */ if ($group === static::PATH_CONTEXT) { $item->$property = JFile::stripExt($item->$property); $item->$property = str_replace('/', ' ', $item->$property); $item->$property = str_replace('-', ' ', $item->$property); } // Tokenize a string of content and add it to the database. $count += $this->tokenizeToDb($item->$property, $group, $item->language, $format); // Check if we're approaching the memory limit of the token table. if ($count > static::$state->options->get('memory_table_limit', 30000)) { $this->toggleTables(false); } } } } /* * Process the item's taxonomy. The items can customize their * taxonomy mappings to define extra properties to map. */ foreach ($item->getTaxonomy() as $branch => $nodes) { // Iterate through the nodes and map them to the branch. foreach ($nodes as $node) { // Add the node to the tree. $nodeId = FinderIndexerTaxonomy::addNode($branch, $node->title, $node->state, $node->access); // Add the link => node map. FinderIndexerTaxonomy::addMap($linkId, $nodeId); // Tokenize the node title and add them to the database. $count += $this->tokenizeToDb($node->title, static::META_CONTEXT, $item->language, $format); } } // Mark afterProcessing in the profiler. static::$profiler ? static::$profiler->mark('afterProcessing') : null; /* * At this point, all of the item's content has been parsed, tokenized * and inserted into the #__finder_tokens table. Now, we need to * aggregate all the data into that table into a more usable form. The * aggregated data will be inserted into #__finder_tokens_aggregate * table. */ $query = 'INSERT INTO ' . $db->quoteName('#__finder_tokens_aggregate') . ' (' . $db->quoteName('term_id') . ', ' . $db->quoteName('term') . ', ' . $db->quoteName('stem') . ', ' . $db->quoteName('common') . ', ' . $db->quoteName('phrase') . ', ' . $db->quoteName('term_weight') . ', ' . $db->quoteName('context') . ', ' . $db->quoteName('context_weight') . ', ' . $db->quoteName('language') . ')' . ' SELECT' . ' t.term_id, t1.term, t1.stem, t1.common, t1.phrase, t1.weight, t1.context, ' . ' ROUND( t1.weight * COUNT( t2.term ) * %F, 8 ) AS context_weight, t1.language' . ' FROM (' . ' SELECT DISTINCT t1.term, t1.stem, t1.common, t1.phrase, t1.weight, t1.context, t1.language' . ' FROM ' . $db->quoteName('#__finder_tokens') . ' AS t1' . ' WHERE t1.context = %d' . ' ) AS t1' . ' JOIN ' . $db->quoteName('#__finder_tokens') . ' AS t2 ON t2.term = t1.term' . ' LEFT JOIN ' . $db->quoteName('#__finder_terms') . ' AS t ON t.term = t1.term' . ' WHERE t2.context = %d' . ' GROUP BY t1.term' . ' ORDER BY t1.term DESC'; // Iterate through the contexts and aggregate the tokens per context. foreach ($state->weights as $context => $multiplier) { // Run the query to aggregate the tokens for this context.. $db->setQuery(sprintf($query, $multiplier, $context, $context)); $db->execute(); } // Mark afterAggregating in the profiler. static::$profiler ? static::$profiler->mark('afterAggregating') : null; /* * When we pulled down all of the aggregate data, we did a LEFT JOIN * over the terms table to try to find all the term ids that * already exist for our tokens. If any of the rows in the aggregate * table have a term of 0, then no term record exists for that * term so we need to add it to the terms table. */ $db->setQuery( 'INSERT IGNORE INTO ' . $db->quoteName('#__finder_terms') . ' (' . $db->quoteName('term') . ', ' . $db->quoteName('stem') . ', ' . $db->quoteName('common') . ', ' . $db->quoteName('phrase') . ', ' . $db->quoteName('weight') . ', ' . $db->quoteName('soundex') . ', ' . $db->quoteName('language') . ')' . ' SELECT ta.term, ta.stem, ta.common, ta.phrase, ta.term_weight, SOUNDEX(ta.term), ta.language' . ' FROM ' . $db->quoteName('#__finder_tokens_aggregate') . ' AS ta' . ' WHERE ta.term_id = 0' . ' GROUP BY ta.term' ); $db->execute(); /* * Now, we just inserted a bunch of new records into the terms table * so we need to go back and update the aggregate table with all the * new term ids. */ $query = $db->getQuery(true) ->update($db->quoteName('#__finder_tokens_aggregate') . ' AS ta') ->join('INNER', $db->quoteName('#__finder_terms') . ' AS t ON t.term = ta.term') ->set('ta.term_id = t.term_id') ->where('ta.term_id = 0'); $db->setQuery($query); $db->execute(); // Mark afterTerms in the profiler. static::$profiler ? static::$profiler->mark('afterTerms') : null; /* * After we've made sure that all of the terms are in the terms table * and the aggregate table has the correct term ids, we need to update * the links counter for each term by one. */ $query->clear() ->update($db->quoteName('#__finder_terms') . ' AS t') ->join('INNER', $db->quoteName('#__finder_tokens_aggregate') . ' AS ta ON ta.term_id = t.term_id') ->set('t.' . $db->quoteName('links') . ' = t.links + 1'); $db->setQuery($query); $db->execute(); // Mark afterTerms in the profiler. static::$profiler ? static::$profiler->mark('afterTerms') : null; /* * Before we can insert all of the mapping rows, we have to figure out * which mapping table the rows need to be inserted into. The mapping * table for each term is based on the first character of the md5 of * the first character of the term. In php, it would be expressed as * substr(md5(substr($token, 0, 1)), 0, 1) */ $query->clear() ->update($db->quoteName('#__finder_tokens_aggregate')) ->set($db->quoteName('map_suffix') . ' = SUBSTR(MD5(SUBSTR(' . $db->quoteName('term') . ', 1, 1)), 1, 1)'); $db->setQuery($query); $db->execute(); /* * At this point, the aggregate table contains a record for each * term in each context. So, we're going to pull down all of that * data while grouping the records by term and add all of the * sub-totals together to arrive at the final total for each token for * this link. Then, we insert all of that data into the appropriate * mapping table. */ for ($i = 0; $i <= 15; $i++) { // Get the mapping table suffix. $suffix = dechex($i); /* * We have to run this query 16 times, one for each link => term * mapping table. */ $db->setQuery( 'INSERT INTO ' . $db->quoteName('#__finder_links_terms' . $suffix) . ' (' . $db->quoteName('link_id') . ', ' . $db->quoteName('term_id') . ', ' . $db->quoteName('weight') . ')' . ' SELECT ' . (int) $linkId . ', ' . $db->quoteName('term_id') . ',' . ' ROUND(SUM(' . $db->quoteName('context_weight') . '), 8)' . ' FROM ' . $db->quoteName('#__finder_tokens_aggregate') . ' WHERE ' . $db->quoteName('map_suffix') . ' = ' . $db->quote($suffix) . ' GROUP BY ' . $db->quoteName('term') . ' ORDER BY ' . $db->quoteName('term') . ' DESC' ); $db->execute(); } // Mark afterMapping in the profiler. static::$profiler ? static::$profiler->mark('afterMapping') : null; // Update the signature. $query->clear() ->update($db->quoteName('#__finder_links')) ->set($db->quoteName('md5sum') . ' = ' . $db->quote($curSig)) ->where($db->quoteName('link_id') . ' = ' . $db->quote($linkId)); $db->setQuery($query); $db->execute(); // Mark afterSigning in the profiler. static::$profiler ? static::$profiler->mark('afterSigning') : null; // Truncate the tokens tables. $db->truncateTable('#__finder_tokens'); // Truncate the tokens aggregate table. $db->truncateTable('#__finder_tokens_aggregate'); // Toggle the token tables back to memory tables. $this->toggleTables(true); // Mark afterTruncating in the profiler. static::$profiler ? static::$profiler->mark('afterTruncating') : null; return $linkId; } /** * Method to remove a link from the index. * * @param integer $linkId The id of the link. * * @return boolean True on success. * * @since 2.5 * @throws Exception on database error. */ public function remove($linkId) { $db = JFactory::getDbo(); $query = $db->getQuery(true); // Update the link counts and remove the mapping records. for ($i = 0; $i <= 15; $i++) { // Update the link counts for the terms. $query->update($db->quoteName('#__finder_terms') . ' AS t') ->join('INNER', $db->quoteName('#__finder_links_terms' . dechex($i)) . ' AS m ON m.term_id = t.term_id') ->set('t.links = t.links - 1') ->where('m.link_id = ' . $db->quote((int) $linkId)); $db->setQuery($query); $db->execute(); // Remove all records from the mapping tables. $query->clear() ->delete($db->quoteName('#__finder_links_terms' . dechex($i))) ->where($db->quoteName('link_id') . ' = ' . (int) $linkId); $db->setQuery($query); $db->execute(); } // Delete all orphaned terms. $query->clear() ->delete($db->quoteName('#__finder_terms')) ->where($db->quoteName('links') . ' <= 0'); $db->setQuery($query); $db->execute(); // Delete the link from the index. $query->clear() ->delete($db->quoteName('#__finder_links')) ->where($db->quoteName('link_id') . ' = ' . $db->quote((int) $linkId)); $db->setQuery($query); $db->execute(); // Remove the taxonomy maps. FinderIndexerTaxonomy::removeMaps($linkId); // Remove the orphaned taxonomy nodes. FinderIndexerTaxonomy::removeOrphanNodes(); return true; } /** * Method to optimize the index. We use this method to remove unused terms * and any other optimizations that might be necessary. * * @return boolean True on success. * * @since 3.0 * @throws Exception on database error. */ public function optimize() { // Get the database object. $db = JFactory::getDbo(); $query = $db->getQuery(true); // Delete all orphaned terms. $query->delete($db->quoteName('#__finder_terms')) ->where($db->quoteName('links') . ' <= 0'); $db->setQuery($query); $db->execute(); // Optimize the links table. $db->setQuery('OPTIMIZE TABLE ' . $db->quoteName('#__finder_links')); $db->execute(); for ($i = 0; $i <= 15; $i++) { // Optimize the terms mapping table. $db->setQuery('OPTIMIZE TABLE ' . $db->quoteName('#__finder_links_terms' . dechex($i))); $db->execute(); } // Optimize the terms mapping table. $db->setQuery('OPTIMIZE TABLE ' . $db->quoteName('#__finder_links_terms')); $db->execute(); // Remove the orphaned taxonomy nodes. FinderIndexerTaxonomy::removeOrphanNodes(); // Optimize the taxonomy mapping table. $db->setQuery('OPTIMIZE TABLE ' . $db->quoteName('#__finder_taxonomy_map')); $db->execute(); return true; } /** * Method to add a set of tokens to the database. * * @param mixed $tokens An array or single FinderIndexerToken object. * @param mixed $context The context of the tokens. See context constants. [optional] * * @return integer The number of tokens inserted into the database. * * @since 3.0 * @throws Exception on database error. */ protected function addTokensToDb($tokens, $context = '') { // Get the database object. $db = JFactory::getDbo(); $query = $db->getQuery(true); // Force tokens to an array. $tokens = is_array($tokens) ? $tokens : array($tokens); // Count the number of token values. $values = 0; // Insert the tokens into the database. $query->insert($db->quoteName('#__finder_tokens')) ->columns( array( $db->quoteName('term'), $db->quoteName('stem'), $db->quoteName('common'), $db->quoteName('phrase'), $db->quoteName('weight'), $db->quoteName('context'), $db->quoteName('language') ) ); // Iterate through the tokens to create SQL value sets. foreach ($tokens as $token) { $query->values( $db->quote($token->term) . ', ' . $db->quote($token->stem) . ', ' . (int) $token->common . ', ' . (int) $token->phrase . ', ' . (float) $token->weight . ', ' . (int) $context . ', ' . $db->quote($token->language) ); $values++; } $db->setQuery($query); $db->execute(); return $values; } /** * Method to switch the token tables from Memory tables to MyISAM tables * when they are close to running out of memory. * * @param boolean $memory Flag to control how they should be toggled. * * @return boolean True on success. * * @since 3.0 * @throws Exception on database error. */ protected function toggleTables($memory) { static $state; // Get the database adapter. $db = JFactory::getDbo(); // Check if we are setting the tables to the Memory engine. if ($memory === true && $state !== true) { // Set the tokens table to Memory. $db->setQuery('ALTER TABLE ' . $db->quoteName('#__finder_tokens') . ' ENGINE = MEMORY'); $db->execute(); // Set the tokens aggregate table to Memory. $db->setQuery('ALTER TABLE ' . $db->quoteName('#__finder_tokens_aggregate') . ' ENGINE = MEMORY'); $db->execute(); // Set the internal state. $state = $memory; } // We must be setting the tables to the MyISAM engine. elseif ($memory === false && $state !== false) { // Set the tokens table to MyISAM. $db->setQuery('ALTER TABLE ' . $db->quoteName('#__finder_tokens') . ' ENGINE = MYISAM'); $db->execute(); // Set the tokens aggregate table to MyISAM. $db->setQuery('ALTER TABLE ' . $db->quoteName('#__finder_tokens_aggregate') . ' ENGINE = MYISAM'); $db->execute(); // Set the internal state. $state = $memory; } return true; } } PKb��\(Y���Q�Q7components/com_finder/helpers/indexer/driver/sqlsrv.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; jimport('joomla.filesystem.file'); /** * Indexer class supporting SQL Server for the Finder indexer package. * * The indexer class provides the core functionality of the Finder * search engine. It is responsible for adding and updating the * content links table; extracting and scoring tokens; and maintaining * all referential information for the content. * * Note: All exceptions thrown from within this class should be caught * by the controller. * * @since 3.1 */ class FinderIndexerDriverSqlsrv extends FinderIndexer { /** * Method to index a content item. * * @param FinderIndexerResult $item The content item to index. * @param string $format The format of the content. [optional] * * @return integer The ID of the record in the links table. * * @since 3.1 * @throws Exception on database error. */ public function index($item, $format = 'html') { // Mark beforeIndexing in the profiler. static::$profiler ? static::$profiler->mark('beforeIndexing') : null; $db = JFactory::getDbo(); $nd = $db->getNullDate(); // Check if the item is in the database. $query = $db->getQuery(true) ->select($db->quoteName('link_id') . ', ' . $db->quoteName('md5sum')) ->from($db->quoteName('#__finder_links')) ->where($db->quoteName('url') . ' = ' . $db->quote($item->url)); // Load the item from the database. $db->setQuery($query); $link = $db->loadObject(); // Get the indexer state. $state = static::getState(); // Get the signatures of the item. $curSig = static::getSignature($item); $oldSig = isset($link->md5sum) ? $link->md5sum : null; // Get the other item information. $linkId = empty($link->link_id) ? null : $link->link_id; $isNew = empty($link->link_id) ? true : false; // Check the signatures. If they match, the item is up to date. if (!$isNew && $curSig == $oldSig) { return $linkId; } /* * If the link already exists, flush all the term maps for the item. * Maps are stored in 16 tables so we need to iterate through and flush * each table one at a time. */ if (!$isNew) { for ($i = 0; $i <= 15; $i++) { // Flush the maps for the link. $query->clear() ->delete($db->quoteName('#__finder_links_terms' . dechex($i))) ->where($db->quoteName('link_id') . ' = ' . (int) $linkId); $db->setQuery($query); $db->execute(); } // Remove the taxonomy maps. FinderIndexerTaxonomy::removeMaps($linkId); } // Mark afterUnmapping in the profiler. static::$profiler ? static::$profiler->mark('afterUnmapping') : null; // Perform cleanup on the item data. $item->publish_start_date = (int) $item->publish_start_date != 0 ? $item->publish_start_date : $nd; $item->publish_end_date = (int) $item->publish_end_date != 0 ? $item->publish_end_date : $nd; $item->start_date = (int) $item->start_date != 0 ? $item->start_date : $nd; $item->end_date = (int) $item->end_date != 0 ? $item->end_date : $nd; // Prepare the item description. $item->description = FinderIndexerHelper::parse($item->summary); /* * Now, we need to enter the item into the links table. If the item * already exists in the database, we need to use an UPDATE query. * Otherwise, we need to use an INSERT to get the link id back. */ if ($isNew) { $columnsArray = array( $db->quoteName('url'), $db->quoteName('route'), $db->quoteName('title'), $db->quoteName('description'), $db->quoteName('indexdate'), $db->quoteName('published'), $db->quoteName('state'), $db->quoteName('access'), $db->quoteName('language'), $db->quoteName('type_id'), $db->quoteName('object'), $db->quoteName('publish_start_date'), $db->quoteName('publish_end_date'), $db->quoteName('start_date'), $db->quoteName('end_date'), $db->quoteName('list_price'), $db->quoteName('sale_price') ); // Insert the link. $query->clear() ->insert($db->quoteName('#__finder_links')) ->columns($columnsArray) ->values( $db->quote($item->url) . ', ' . $db->quote($item->route) . ', ' . $db->quote($item->title) . ', ' . $db->quote($item->description) . ', ' . $query->currentTimestamp() . ', ' . '1, ' . (int) $item->state . ', ' . (int) $item->access . ', ' . $db->quote($item->language) . ', ' . (int) $item->type_id . ', ' . $db->quote(serialize($item)) . ', ' . $db->quote($item->publish_start_date) . ', ' . $db->quote($item->publish_end_date) . ', ' . $db->quote($item->start_date) . ', ' . $db->quote($item->end_date) . ', ' . (double) ($item->list_price ? $item->list_price : 0) . ', ' . (double) ($item->sale_price ? $item->sale_price : 0) ); $db->setQuery($query); $db->execute(); // Get the link id. $linkId = (int) $db->insertid(); } else { // Update the link. $query->clear() ->update($db->quoteName('#__finder_links')) ->set($db->quoteName('route') . ' = ' . $db->quote($item->route)) ->set($db->quoteName('title') . ' = ' . $db->quote($item->title)) ->set($db->quoteName('description') . ' = ' . $db->quote($item->description)) ->set($db->quoteName('indexdate') . ' = ' . $query->currentTimestamp()) ->set($db->quoteName('state') . ' = ' . (int) $item->state) ->set($db->quoteName('access') . ' = ' . (int) $item->access) ->set($db->quoteName('language') . ' = ' . $db->quote($item->language)) ->set($db->quoteName('type_id') . ' = ' . (int) $item->type_id) ->set($db->quoteName('object') . ' = ' . $db->quote(serialize($item))) ->set($db->quoteName('publish_start_date') . ' = ' . $db->quote($item->publish_start_date)) ->set($db->quoteName('publish_end_date') . ' = ' . $db->quote($item->publish_end_date)) ->set($db->quoteName('start_date') . ' = ' . $db->quote($item->start_date)) ->set($db->quoteName('end_date') . ' = ' . $db->quote($item->end_date)) ->set($db->quoteName('list_price') . ' = ' . (double) ($item->list_price ? $item->list_price : 0)) ->set($db->quoteName('sale_price') . ' = ' . (double) ($item->sale_price ? $item->sale_price : 0)) ->where('link_id = ' . (int) $linkId); $db->setQuery($query); $db->execute(); } // Set up the variables we will need during processing. $count = 0; // Mark afterLinking in the profiler. static::$profiler ? static::$profiler->mark('afterLinking') : null; // Truncate the tokens tables. $db->truncateTable('#__finder_tokens'); // Truncate the tokens aggregate table. $db->truncateTable('#__finder_tokens_aggregate'); /* * Process the item's content. The items can customize their * processing instructions to define extra properties to process * or rearrange how properties are weighted. */ foreach ($item->getInstructions() as $group => $properties) { // Iterate through the properties of the group. foreach ($properties as $property) { // Check if the property exists in the item. if (empty($item->$property)) { continue; } // Tokenize the property. if (is_array($item->$property)) { // Tokenize an array of content and add it to the database. foreach ($item->$property as $ip) { /* * If the group is path, we need to a few extra processing * steps to strip the extension and convert slashes and dashes * to spaces. */ if ($group === static::PATH_CONTEXT) { $ip = JFile::stripExt($ip); $ip = str_replace('/', ' ', $ip); $ip = str_replace('-', ' ', $ip); } // Tokenize a string of content and add it to the database. $count += $this->tokenizeToDb($ip, $group, $item->language, $format); // Check if we're approaching the memory limit of the token table. if ($count > static::$state->options->get('memory_table_limit', 30000)) { $this->toggleTables(false); } } } else { /* * If the group is path, we need to a few extra processing * steps to strip the extension and convert slashes and dashes * to spaces. */ if ($group === static::PATH_CONTEXT) { $item->$property = JFile::stripExt($item->$property); $item->$property = str_replace('/', ' ', $item->$property); $item->$property = str_replace('-', ' ', $item->$property); } // Tokenize a string of content and add it to the database. $count += $this->tokenizeToDb($item->$property, $group, $item->language, $format); // Check if we're approaching the memory limit of the token table. if ($count > static::$state->options->get('memory_table_limit', 30000)) { $this->toggleTables(false); } } } } /* * Process the item's taxonomy. The items can customize their * taxonomy mappings to define extra properties to map. */ foreach ($item->getTaxonomy() as $branch => $nodes) { // Iterate through the nodes and map them to the branch. foreach ($nodes as $node) { // Add the node to the tree. $nodeId = FinderIndexerTaxonomy::addNode($branch, $node->title, $node->state, $node->access); // Add the link => node map. FinderIndexerTaxonomy::addMap($linkId, $nodeId); // Tokenize the node title and add them to the database. $count += $this->tokenizeToDb($node->title, static::META_CONTEXT, $item->language, $format); } } // Mark afterProcessing in the profiler. static::$profiler ? static::$profiler->mark('afterProcessing') : null; /* * At this point, all of the item's content has been parsed, tokenized * and inserted into the #__finder_tokens table. Now, we need to * aggregate all the data into that table into a more usable form. The * aggregated data will be inserted into #__finder_tokens_aggregate * table. */ $query = 'INSERT INTO ' . $db->quoteName('#__finder_tokens_aggregate') . ' (' . $db->quoteName('term_id') . ', ' . $db->quoteName('term') . ', ' . $db->quoteName('stem') . ', ' . $db->quoteName('common') . ', ' . $db->quoteName('phrase') . ', ' . $db->quoteName('term_weight') . ', ' . $db->quoteName('context') . ', ' . $db->quoteName('context_weight') . ', ' . $db->quoteName('language') . ')' . ' SELECT' . ' t.term_id, t1.term, t1.stem, t1.common, t1.phrase, t1.weight, t1.context,' . ' ROUND( t1.weight * COUNT( t2.term ) * %F, 8 ) AS context_weight, t1.language' . ' FROM (' . ' SELECT DISTINCT t1.term, t1.stem, t1.common, t1.phrase, t1.weight, t1.context, t1.language' . ' FROM ' . $db->quoteName('#__finder_tokens') . ' AS t1' . ' WHERE t1.context = %d' . ' ) AS t1' . ' JOIN ' . $db->quoteName('#__finder_tokens') . ' AS t2 ON t2.term = t1.term' . ' LEFT JOIN ' . $db->quoteName('#__finder_terms') . ' AS t ON t.term = t1.term' . ' WHERE t2.context = %d' . ' GROUP BY t1.term, t.term_id, t1.term, t1.stem, t1.common, t1.phrase, t1.weight, t1.context, t1.language' . ' ORDER BY t1.term DESC'; // Iterate through the contexts and aggregate the tokens per context. foreach ($state->weights as $context => $multiplier) { // Run the query to aggregate the tokens for this context.. $db->setQuery(sprintf($query, $multiplier, $context, $context)); $db->execute(); } // Mark afterAggregating in the profiler. static::$profiler ? static::$profiler->mark('afterAggregating') : null; /* * When we pulled down all of the aggregate data, we did a LEFT JOIN * over the terms table to try to find all the term ids that * already exist for our tokens. If any of the rows in the aggregate * table have a term of 0, then no term record exists for that * term so we need to add it to the terms table. */ $db->setQuery( 'INSERT INTO ' . $db->quoteName('#__finder_terms') . ' (' . $db->quoteName('term') . ', ' . $db->quoteName('stem') . ', ' . $db->quoteName('common') . ', ' . $db->quoteName('phrase') . ', ' . $db->quoteName('weight') . ', ' . $db->quoteName('soundex') . ')' . ' SELECT ta.term, ta.stem, ta.common, ta.phrase, ta.term_weight, SOUNDEX(ta.term)' . ' FROM ' . $db->quoteName('#__finder_tokens_aggregate') . ' AS ta' . ' WHERE ta.term_id IS NULL' . ' GROUP BY ta.term, ta.stem, ta.common, ta.phrase, ta.term_weight' ); $db->execute(); /* * Now, we just inserted a bunch of new records into the terms table * so we need to go back and update the aggregate table with all the * new term ids. */ $query = $db->getQuery(true) ->update('ta') ->set('ta.term_id = t.term_id from #__finder_tokens_aggregate AS ta INNER JOIN #__finder_terms AS t ON t.term = ta.term') ->where('ta.term_id IS NULL'); $db->setQuery($query); $db->execute(); // Mark afterTerms in the profiler. static::$profiler ? static::$profiler->mark('afterTerms') : null; /* * After we've made sure that all of the terms are in the terms table * and the aggregate table has the correct term ids, we need to update * the links counter for each term by one. */ $query->clear() ->update('t') ->set('t.links = t.links + 1 FROM #__finder_terms AS t INNER JOIN #__finder_tokens_aggregate AS ta ON ta.term_id = t.term_id'); $db->setQuery($query); $db->execute(); // Mark afterTerms in the profiler. static::$profiler ? static::$profiler->mark('afterTerms') : null; /* * Before we can insert all of the mapping rows, we have to figure out * which mapping table the rows need to be inserted into. The mapping * table for each term is based on the first character of the md5 of * the first character of the term. In php, it would be expressed as * substr(md5(substr($token, 0, 1)), 0, 1) */ $query->clear() ->update($db->quoteName('#__finder_tokens_aggregate')) ->set($db->quoteName('map_suffix') . " = SUBSTRING(HASHBYTES('MD5', SUBSTRING(" . $db->quoteName('term') . ', 1, 1)), 1, 1)'); $db->setQuery($query); $db->execute(); /* * At this point, the aggregate table contains a record for each * term in each context. So, we're going to pull down all of that * data while grouping the records by term and add all of the * sub-totals together to arrive at the final total for each token for * this link. Then, we insert all of that data into the appropriate * mapping table. */ for ($i = 0; $i <= 15; $i++) { // Get the mapping table suffix. $suffix = dechex($i); /* * We have to run this query 16 times, one for each link => term * mapping table. */ $db->setQuery( 'INSERT INTO ' . $db->quoteName('#__finder_links_terms' . $suffix) . ' (' . $db->quoteName('link_id') . ', ' . $db->quoteName('term_id') . ', ' . $db->quoteName('weight') . ')' . ' SELECT ' . (int) $linkId . ', ' . $db->quoteName('term_id') . ',' . ' ROUND(SUM(' . $db->quoteName('context_weight') . '), 8)' . ' FROM ' . $db->quoteName('#__finder_tokens_aggregate') . ' WHERE ' . $db->quoteName('map_suffix') . ' = ' . $db->quote($suffix) . ' GROUP BY term, term_id' . ' ORDER BY ' . $db->quoteName('term') . ' DESC' ); $db->execute(); } // Mark afterMapping in the profiler. static::$profiler ? static::$profiler->mark('afterMapping') : null; // Update the signature. $query->clear() ->update($db->quoteName('#__finder_links')) ->set($db->quoteName('md5sum') . ' = ' . $db->quote($curSig)) ->where($db->quoteName('link_id') . ' = ' . $db->quote($linkId)); $db->setQuery($query); $db->execute(); // Mark afterSigning in the profiler. static::$profiler ? static::$profiler->mark('afterSigning') : null; // Truncate the tokens tables. $db->truncateTable('#__finder_tokens'); // Truncate the tokens aggregate table. $db->truncateTable('#__finder_tokens_aggregate'); // Toggle the token tables back to memory tables. $this->toggleTables(true); // Mark afterTruncating in the profiler. static::$profiler ? static::$profiler->mark('afterTruncating') : null; return $linkId; } /** * Method to remove a link from the index. * * @param integer $linkId The id of the link. * * @return boolean True on success. * * @since 3.1 * @throws Exception on database error. */ public function remove($linkId) { $db = JFactory::getDbo(); $query = $db->getQuery(true); // Update the link counts and remove the mapping records. for ($i = 0; $i <= 15; $i++) { // Update the link counts for the terms. $query->update('t') ->set('t.links = t.links - 1 from #__finder_terms AS t INNER JOIN #__finder_links_terms' . dechex($i) . ' AS AS m ON m.term_id = t.term_id') ->where('m.link_id = ' . $db->quote((int) $linkId)); $db->setQuery($query); $db->execute(); // Remove all records from the mapping tables. $query->clear() ->delete($db->quoteName('#__finder_links_terms' . dechex($i))) ->where($db->quoteName('link_id') . ' = ' . (int) $linkId); $db->setQuery($query); $db->execute(); } // Delete all orphaned terms. $query->clear() ->delete($db->quoteName('#__finder_terms')) ->where($db->quoteName('links') . ' <= 0'); $db->setQuery($query); $db->execute(); // Delete the link from the index. $query->clear() ->delete($db->quoteName('#__finder_links')) ->where($db->quoteName('link_id') . ' = ' . $db->quote((int) $linkId)); $db->setQuery($query); $db->execute(); // Remove the taxonomy maps. FinderIndexerTaxonomy::removeMaps($linkId); // Remove the orphaned taxonomy nodes. FinderIndexerTaxonomy::removeOrphanNodes(); return true; } /** * Method to optimize the index. We use this method to remove unused terms * and any other optimizations that might be necessary. * * @return boolean True on success. * * @since 3.1 * @throws Exception on database error. */ public function optimize() { // Get the database object. $db = JFactory::getDbo(); $query = $db->getQuery(true); // Delete all orphaned terms. $query->delete($db->quoteName('#__finder_terms')) ->where($db->quoteName('links') . ' <= 0'); $db->setQuery($query); $db->execute(); // Remove the orphaned taxonomy nodes. FinderIndexerTaxonomy::removeOrphanNodes(); return true; } /** * Method to add a set of tokens to the database. * * @param mixed $tokens An array or single FinderIndexerToken object. * @param mixed $context The context of the tokens. See context constants. [optional] * * @return integer The number of tokens inserted into the database. * * @since 3.1 * @throws Exception on database error. */ protected function addTokensToDb($tokens, $context = '') { // Get the database object. $db = JFactory::getDbo(); $query = $db->getQuery(true); // Force tokens to an array. $tokens = is_array($tokens) ? $tokens : array($tokens); // Count the number of token values. $values = 0; // Set some variables to count the iterations $totalTokens = count($tokens); $remaining = $totalTokens; $iterations = 0; $loop = true; do { // Shift the token off the array $token = array_shift($tokens); $query->values( $db->quote($token->term) . ', ' . $db->quote($token->stem) . ', ' . (int) $token->common . ', ' . (int) $token->phrase . ', ' . (float) $token->weight . ', ' . (int) $context . ', ' . $db->quote($token->language) ); $values++; $iterations++; $remaining--; // Run the query if we've reached 1000 iterations or there are no tokens remaining if ($iterations == 1000 || $remaining == 0) { // Insert the tokens into the database. $query->insert($db->quoteName('#__finder_tokens')) ->columns( array( $db->quoteName('term'), $db->quoteName('stem'), $db->quoteName('common'), $db->quoteName('phrase'), $db->quoteName('weight'), $db->quoteName('context'), $db->quoteName('language') ) ); $db->setQuery($query); $db->execute(); // Reset the query $query->clear(); } // If there's nothing remaining, we're done looping if ($remaining == 0) { $loop = false; } } while ($loop == true); return $values; } /** * Method to switch the token tables from Memory tables to MyISAM tables * when they are close to running out of memory. * * @param boolean $memory Flag to control how they should be toggled. * * @return boolean True on success. * * @since 3.1 * @throws Exception on database error. */ protected function toggleTables($memory) { return true; } } PKb��\�5��SS;components/com_finder/helpers/indexer/driver/postgresql.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; jimport('joomla.filesystem.file'); /** * Indexer class supporting PostgreSQL for the Finder indexer package. * * @since 3.0 */ class FinderIndexerDriverPostgresql extends FinderIndexer { /** * Method to index a content item. * * @param FinderIndexerResult $item The content item to index. * @param string $format The format of the content. [optional] * * @return integer The ID of the record in the links table. * * @since 3.0 * @throws Exception on database error. */ public function index($item, $format = 'html') { // Mark beforeIndexing in the profiler. static::$profiler ? static::$profiler->mark('beforeIndexing') : null; $db = JFactory::getDbo(); $nd = $db->getNullDate(); // Check if the item is in the database. $query = $db->getQuery(true) ->select($db->quoteName('link_id') . ', ' . $db->quoteName('md5sum')) ->from($db->quoteName('#__finder_links')) ->where($db->quoteName('url') . ' = ' . $db->quote($item->url)); // Load the item from the database. $db->setQuery($query); $link = $db->loadObject(); // Get the indexer state. $state = static::getState(); // Get the signatures of the item. $curSig = static::getSignature($item); $oldSig = isset($link->md5sum) ? $link->md5sum : null; // Get the other item information. $linkId = empty($link->link_id) ? null : $link->link_id; $isNew = empty($link->link_id) ? true : false; // Check the signatures. If they match, the item is up to date. if (!$isNew && $curSig == $oldSig) { return $linkId; } /* * If the link already exists, flush all the term maps for the item. * Maps are stored in 16 tables so we need to iterate through and flush * each table one at a time. */ if (!$isNew) { for ($i = 0; $i <= 15; $i++) { // Flush the maps for the link. $query->clear() ->delete($db->quoteName('#__finder_links_terms' . dechex($i))) ->where($db->quoteName('link_id') . ' = ' . (int) $linkId); $db->setQuery($query); $db->execute(); } // Remove the taxonomy maps. FinderIndexerTaxonomy::removeMaps($linkId); } // Mark afterUnmapping in the profiler. static::$profiler ? static::$profiler->mark('afterUnmapping') : null; // Perform cleanup on the item data. $item->publish_start_date = (int) $item->publish_start_date != 0 ? $item->publish_start_date : $nd; $item->publish_end_date = (int) $item->publish_end_date != 0 ? $item->publish_end_date : $nd; $item->start_date = (int) $item->start_date != 0 ? $item->start_date : $nd; $item->end_date = (int) $item->end_date != 0 ? $item->end_date : $nd; // Prepare the item description. $item->description = FinderIndexerHelper::parse($item->summary); /* * Now, we need to enter the item into the links table. If the item * already exists in the database, we need to use an UPDATE query. * Otherwise, we need to use an INSERT to get the link id back. */ if ($isNew) { $columnsArray = array( $db->quoteName('url'), $db->quoteName('route'), $db->quoteName('title'), $db->quoteName('description'), $db->quoteName('indexdate'), $db->quoteName('published'), $db->quoteName('state'), $db->quoteName('access'), $db->quoteName('language'), $db->quoteName('type_id'), $db->quoteName('object'), $db->quoteName('publish_start_date'), $db->quoteName('publish_end_date'), $db->quoteName('start_date'), $db->quoteName('end_date'), $db->quoteName('list_price'), $db->quoteName('sale_price') ); // Insert the link. $query->clear() ->insert($db->quoteName('#__finder_links')) ->columns($columnsArray) ->values( $db->quote($item->url) . ', ' . $db->quote($item->route) . ', ' . $db->quote($item->title) . ', ' . $db->quote($item->description) . ', ' . $query->currentTimestamp() . ', ' . '1, ' . (int) $item->state . ', ' . (int) $item->access . ', ' . $db->quote($item->language) . ', ' . (int) $item->type_id . ', ' . $db->quote(serialize($item)) . ', ' . $db->quote($item->publish_start_date) . ', ' . $db->quote($item->publish_end_date) . ', ' . $db->quote($item->start_date) . ', ' . $db->quote($item->end_date) . ', ' . (double) ($item->list_price ? $item->list_price : 0) . ', ' . (double) ($item->sale_price ? $item->sale_price : 0) ); $db->setQuery($query); $db->execute(); // Get the link id. $linkId = (int) $db->insertid(); } else { // Update the link. $query->clear() ->update($db->quoteName('#__finder_links')) ->set($db->quoteName('route') . ' = ' . $db->quote($item->route)) ->set($db->quoteName('title') . ' = ' . $db->quote($item->title)) ->set($db->quoteName('description') . ' = ' . $db->quote($item->description)) ->set($db->quoteName('indexdate') . ' = ' . $query->currentTimestamp()) ->set($db->quoteName('state') . ' = ' . (int) $item->state) ->set($db->quoteName('access') . ' = ' . (int) $item->access) ->set($db->quoteName('language') . ' = ' . $db->quote($item->language)) ->set($db->quoteName('type_id') . ' = ' . (int) $item->type_id) ->set($db->quoteName('object') . ' = ' . $db->quote(serialize($item))) ->set($db->quoteName('publish_start_date') . ' = ' . $db->quote($item->publish_start_date)) ->set($db->quoteName('publish_end_date') . ' = ' . $db->quote($item->publish_end_date)) ->set($db->quoteName('start_date') . ' = ' . $db->quote($item->start_date)) ->set($db->quoteName('end_date') . ' = ' . $db->quote($item->end_date)) ->set($db->quoteName('list_price') . ' = ' . (double) ($item->list_price ? $item->list_price : 0)) ->set($db->quoteName('sale_price') . ' = ' . (double) ($item->sale_price ? $item->sale_price : 0)) ->where('link_id = ' . (int) $linkId); $db->setQuery($query); $db->execute(); } // Set up the variables we will need during processing. $count = 0; // Mark afterLinking in the profiler. static::$profiler ? static::$profiler->mark('afterLinking') : null; // Truncate the tokens tables. $db->truncateTable('#__finder_tokens'); // Truncate the tokens aggregate table. $db->truncateTable('#__finder_tokens_aggregate'); /* * Process the item's content. The items can customize their * processing instructions to define extra properties to process * or rearrange how properties are weighted. */ foreach ($item->getInstructions() as $group => $properties) { // Iterate through the properties of the group. foreach ($properties as $property) { // Check if the property exists in the item. if (empty($item->$property)) { continue; } // Tokenize the property. if (is_array($item->$property)) { // Tokenize an array of content and add it to the database. foreach ($item->$property as $ip) { /* * If the group is path, we need to a few extra processing * steps to strip the extension and convert slashes and dashes * to spaces. */ if ($group === static::PATH_CONTEXT) { $ip = JFile::stripExt($ip); $ip = str_replace('/', ' ', $ip); $ip = str_replace('-', ' ', $ip); } // Tokenize a string of content and add it to the database. $count += $this->tokenizeToDb($ip, $group, $item->language, $format); // Check if we're approaching the memory limit of the token table. if ($count > static::$state->options->get('memory_table_limit', 30000)) { $this->toggleTables(false); } } } else { /* * If the group is path, we need to a few extra processing * steps to strip the extension and convert slashes and dashes * to spaces. */ if ($group === static::PATH_CONTEXT) { $item->$property = JFile::stripExt($item->$property); $item->$property = str_replace('/', ' ', $item->$property); $item->$property = str_replace('-', ' ', $item->$property); } // Tokenize a string of content and add it to the database. $count += $this->tokenizeToDb($item->$property, $group, $item->language, $format); // Check if we're approaching the memory limit of the token table. if ($count > static::$state->options->get('memory_table_limit', 30000)) { $this->toggleTables(false); } } } } /* * Process the item's taxonomy. The items can customize their * taxonomy mappings to define extra properties to map. */ foreach ($item->getTaxonomy() as $branch => $nodes) { // Iterate through the nodes and map them to the branch. foreach ($nodes as $node) { // Add the node to the tree. $nodeId = FinderIndexerTaxonomy::addNode($branch, $node->title, $node->state, $node->access); // Add the link => node map. FinderIndexerTaxonomy::addMap($linkId, $nodeId); // Tokenize the node title and add them to the database. $count += $this->tokenizeToDb($node->title, static::META_CONTEXT, $item->language, $format); } } // Mark afterProcessing in the profiler. static::$profiler ? static::$profiler->mark('afterProcessing') : null; /* * At this point, all of the item's content has been parsed, tokenized * and inserted into the #__finder_tokens table. Now, we need to * aggregate all the data into that table into a more usable form. The * aggregated data will be inserted into #__finder_tokens_aggregate * table. */ $query = 'INSERT INTO ' . $db->quoteName('#__finder_tokens_aggregate') . ' (' . $db->quoteName('term_id') . ', ' . $db->quoteName('term') . ', ' . $db->quoteName('stem') . ', ' . $db->quoteName('common') . ', ' . $db->quoteName('phrase') . ', ' . $db->quoteName('term_weight') . ', ' . $db->quoteName('context') . ', ' . $db->quoteName('context_weight') . ', ' . $db->quoteName('language') . ')' . ' SELECT' . ' t.term_id, t1.term, t1.stem, t1.common, t1.phrase, t1.weight, t1.context,' . ' ROUND( t1.weight * COUNT( t2.term ) * %F, 8 ) AS context_weight, t1.language' . ' FROM (' . ' SELECT DISTINCT t1.term, t1.stem, t1.common, t1.phrase, t1.weight, t1.context, t1.language' . ' FROM ' . $db->quoteName('#__finder_tokens') . ' AS t1' . ' WHERE t1.context = %d' . ' ) AS t1' . ' JOIN ' . $db->quoteName('#__finder_tokens') . ' AS t2 ON t2.term = t1.term' . ' LEFT JOIN ' . $db->quoteName('#__finder_terms') . ' AS t ON t.term = t1.term' . ' WHERE t2.context = %d' . ' GROUP BY t1.term, t.term_id, t1.term, t1.stem, t1.common, t1.phrase, t1.weight, t1.context, t1.language' . ' ORDER BY t1.term DESC'; // Iterate through the contexts and aggregate the tokens per context. foreach ($state->weights as $context => $multiplier) { // Run the query to aggregate the tokens for this context.. $db->setQuery(sprintf($query, $multiplier, $context, $context)); $db->execute(); } // Mark afterAggregating in the profiler. static::$profiler ? static::$profiler->mark('afterAggregating') : null; /* * When we pulled down all of the aggregate data, we did a LEFT JOIN * over the terms table to try to find all the term ids that * already exist for our tokens. If any of the rows in the aggregate * table have a term of 0, then no term record exists for that * term so we need to add it to the terms table. */ /* Emulation of IGNORE INTO behaviour */ $db->setQuery( ' SELECT ta.term' . ' FROM ' . $db->quoteName('#__finder_tokens_aggregate') . ' AS ta' . ' WHERE ta.term_id = 0' ); if ($db->loadRow() == null) { $db->setQuery( 'INSERT INTO ' . $db->quoteName('#__finder_terms') . ' (' . $db->quoteName('term') . ', ' . $db->quoteName('stem') . ', ' . $db->quoteName('common') . ', ' . $db->quoteName('phrase') . ', ' . $db->quoteName('weight') . ', ' . $db->quoteName('soundex') . ', ' . $db->quoteName('language') . ')' . ' SELECT ta.term, ta.stem, ta.common, ta.phrase, ta.term_weight, SOUNDEX(ta.term), ta.language' . ' FROM ' . $db->quoteName('#__finder_tokens_aggregate') . ' AS ta' . ' WHERE ta.term_id = 0' . ' GROUP BY ta.term, ta.stem, ta.common, ta.phrase, ta.term_weight, SOUNDEX(ta.term), ta.language' ); $db->execute(); } /* * Now, we just inserted a bunch of new records into the terms table * so we need to go back and update the aggregate table with all the * new term ids. */ $query = $db->getQuery(true) ->update($db->quoteName('#__finder_tokens_aggregate') . ' AS ta') ->join('INNER', $db->quoteName('#__finder_terms') . ' AS t ON t.term = ta.term') ->set('ta.term_id = t.term_id') ->where('ta.term_id = 0'); $db->setQuery($query); $db->execute(); // Mark afterTerms in the profiler. static::$profiler ? static::$profiler->mark('afterTerms') : null; /* * After we've made sure that all of the terms are in the terms table * and the aggregate table has the correct term ids, we need to update * the links counter for each term by one. */ $query->clear() ->update($db->quoteName('#__finder_terms') . ' AS t') ->join('INNER', $db->quoteName('#__finder_tokens_aggregate') . ' AS ta ON ta.term_id = t.term_id') ->set('t.' . $db->quoteName('links') . ' = t.links + 1'); $db->setQuery($query); $db->execute(); // Mark afterTerms in the profiler. static::$profiler ? static::$profiler->mark('afterTerms') : null; /* * Before we can insert all of the mapping rows, we have to figure out * which mapping table the rows need to be inserted into. The mapping * table for each term is based on the first character of the md5 of * the first character of the term. In php, it would be expressed as * substr(md5(substr($token, 0, 1)), 0, 1) */ $query->clear() ->update($db->quoteName('#__finder_tokens_aggregate')) ->set($db->quoteName('map_suffix') . ' = SUBSTR(MD5(SUBSTR(' . $db->quoteName('term') . ', 1, 1)), 1, 1)'); $db->setQuery($query); $db->execute(); /* * At this point, the aggregate table contains a record for each * term in each context. So, we're going to pull down all of that * data while grouping the records by term and add all of the * sub-totals together to arrive at the final total for each token for * this link. Then, we insert all of that data into the appropriate * mapping table. */ for ($i = 0; $i <= 15; $i++) { // Get the mapping table suffix. $suffix = dechex($i); /* * We have to run this query 16 times, one for each link => term * mapping table. */ $db->setQuery( 'INSERT INTO ' . $db->quoteName('#__finder_links_terms' . $suffix) . ' (' . $db->quoteName('link_id') . ', ' . $db->quoteName('term_id') . ', ' . $db->quoteName('weight') . ')' . ' SELECT ' . (int) $linkId . ', ' . $db->quoteName('term_id') . ',' . ' ROUND(SUM(' . $db->quoteName('context_weight') . '), 8)' . ' FROM ' . $db->quoteName('#__finder_tokens_aggregate') . ' WHERE ' . $db->quoteName('map_suffix') . ' = ' . $db->quote($suffix) . ' GROUP BY ' . $db->quoteName('term') . ' ORDER BY ' . $db->quoteName('term') . ' DESC' ); $db->execute(); } // Mark afterMapping in the profiler. static::$profiler ? static::$profiler->mark('afterMapping') : null; // Update the signature. $query->clear() ->update($db->quoteName('#__finder_links')) ->set($db->quoteName('md5sum') . ' = ' . $db->quote($curSig)) ->where($db->quoteName('link_id') . ' = ' . $db->quote($linkId)); $db->setQuery($query); $db->execute(); // Mark afterSigning in the profiler. static::$profiler ? static::$profiler->mark('afterSigning') : null; // Truncate the tokens tables. $db->truncateTable('#__finder_tokens'); // Truncate the tokens aggregate table. $db->truncateTable('#__finder_tokens_aggregate'); // Toggle the token tables back to memory tables. $this->toggleTables(true); // Mark afterTruncating in the profiler. static::$profiler ? static::$profiler->mark('afterTruncating') : null; return $linkId; } /** * Method to remove a link from the index. * * @param integer $linkId The id of the link. * * @return boolean True on success. * * @since 2.5 * @throws Exception on database error. */ public function remove($linkId) { $db = JFactory::getDbo(); $query = $db->getQuery(true); // Update the link counts and remove the mapping records. for ($i = 0; $i <= 15; $i++) { // Update the link counts for the terms. $query->update($db->quoteName('#__finder_terms') . ' AS t') ->join('INNER', $db->quoteName('#__finder_links_terms' . dechex($i)) . ' AS m ON m.term_id = t.term_id') ->set('t.links = t.links - 1') ->where('m.link_id = ' . $db->quote((int) $linkId)); $db->setQuery($query); $db->execute(); // Remove all records from the mapping tables. $query->clear() ->delete($db->quoteName('#__finder_links_terms' . dechex($i))) ->where($db->quoteName('link_id') . ' = ' . (int) $linkId); $db->setQuery($query); $db->execute(); } // Delete all orphaned terms. $query->clear() ->delete($db->quoteName('#__finder_terms')) ->where($db->quoteName('links') . ' <= 0'); $db->setQuery($query); $db->execute(); // Delete the link from the index. $query->clear() ->delete($db->quoteName('#__finder_links')) ->where($db->quoteName('link_id') . ' = ' . $db->quote((int) $linkId)); $db->setQuery($query); $db->execute(); // Remove the taxonomy maps. FinderIndexerTaxonomy::removeMaps($linkId); // Remove the orphaned taxonomy nodes. FinderIndexerTaxonomy::removeOrphanNodes(); return true; } /** * Method to optimize the index. We use this method to remove unused terms * and any other optimizations that might be necessary. * * @return boolean True on success. * * @since 2.5 * @throws Exception on database error. */ public function optimize() { // Get the database object. $db = JFactory::getDbo(); $query = $db->getQuery(true); // Delete all orphaned terms. $query->delete($db->quoteName('#__finder_terms')) ->where($db->quoteName('links') . ' <= 0'); $db->setQuery($query); $db->execute(); // Optimize the links table. $db->setQuery('VACUUM ' . $db->quoteName('#__finder_links')); $db->execute(); $db->setQuery('REINDEX TABLE ' . $db->quoteName('#__finder_links')); $db->execute(); for ($i = 0; $i <= 15; $i++) { // Optimize the terms mapping table. $db->setQuery('VACUUM ' . $db->quoteName('#__finder_links_terms' . dechex($i))); $db->execute(); $db->setQuery('REINDEX TABLE ' . $db->quoteName('#__finder_links_terms' . dechex($i))); $db->execute(); } // Optimize the terms mapping table. $db->setQuery('REINDEX TABLE ' . $db->quoteName('#__finder_links_terms')); $db->execute(); // Remove the orphaned taxonomy nodes. FinderIndexerTaxonomy::removeOrphanNodes(); // Optimize the taxonomy mapping table. $db->setQuery('REINDEX TABLE ' . $db->quoteName('#__finder_taxonomy_map')); $db->execute(); return true; } /** * Method to add a set of tokens to the database. * * @param mixed $tokens An array or single FinderIndexerToken object. * @param mixed $context The context of the tokens. See context constants. [optional] * * @return integer The number of tokens inserted into the database. * * @since 2.5 * @throws Exception on database error. */ protected function addTokensToDb($tokens, $context = '') { // Get the database object. $db = JFactory::getDbo(); $query = $db->getQuery(true); // Force tokens to an array. $tokens = is_array($tokens) ? $tokens : array($tokens); // Count the number of token values. $values = 0; // Insert the tokens into the database. $query->insert($db->quoteName('#__finder_tokens')) ->columns( array( $db->quoteName('term'), $db->quoteName('stem'), $db->quoteName('common'), $db->quoteName('phrase'), $db->quoteName('weight'), $db->quoteName('context'), $db->quoteName('language') ) ); // Iterate through the tokens to create SQL value sets. foreach ($tokens as $token) { $query->values( $db->quote($token->term) . ', ' . $db->quote($token->stem) . ', ' . (int) $token->common . ', ' . (int) $token->phrase . ', ' . (float) $token->weight . ', ' . (int) $context . ', ' . $db->quote($token->language) ); $values++; } $db->setQuery($query); $db->execute(); return $values; } /** * Method to switch the token tables from Memory tables to MyISAM tables * when they are close to running out of memory. * * @param boolean $memory Flag to control how they should be toggled. * * @return boolean True on success. * * @since 2.5 * @throws Exception on database error. */ protected function toggleTables($memory) { return true; } } PKb��\���3�%�%2components/com_finder/helpers/indexer/taxonomy.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Stemmer base class for the Finder indexer package. * * @since 2.5 */ class FinderIndexerTaxonomy { /** * An internal cache of taxonomy branch data. * * @var array * @since 2.5 */ public static $branches = array(); /** * An internal cache of taxonomy node data. * * @var array * @since 2.5 */ public static $nodes = array(); /** * Method to add a branch to the taxonomy tree. * * @param string $title The title of the branch. * @param integer $state The published state of the branch. [optional] * @param integer $access The access state of the branch. [optional] * * @return integer The id of the branch. * * @since 2.5 * @throws Exception on database error. */ public static function addBranch($title, $state = 1, $access = 1) { // Check to see if the branch is in the cache. if (isset(self::$branches[$title])) { return self::$branches[$title]->id; } // Check to see if the branch is in the table. $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('*') ->from($db->quoteName('#__finder_taxonomy')) ->where($db->quoteName('parent_id') . ' = 1') ->where($db->quoteName('title') . ' = ' . $db->quote($title)); $db->setQuery($query); // Get the result. $result = $db->loadObject(); // Check if the database matches the input data. if (!empty($result) && $result->state == $state && $result->access == $access) { // The data matches, add the item to the cache. self::$branches[$title] = $result; return self::$branches[$title]->id; } /* * The database did not match the input. This could be because the * state has changed or because the branch does not exist. Let's figure * out which case is true and deal with it. */ $branch = new JObject; if (empty($result)) { // Prepare the branch object. $branch->parent_id = 1; $branch->title = $title; $branch->state = (int) $state; $branch->access = (int) $access; } else { // Prepare the branch object. $branch->id = (int) $result->id; $branch->parent_id = (int) $result->parent_id; $branch->title = $result->title; $branch->state = (int) $result->title; $branch->access = (int) $result->access; $branch->ordering = (int) $result->ordering; } // Store the branch. self::storeNode($branch); // Add the branch to the cache. self::$branches[$title] = $branch; return self::$branches[$title]->id; } /** * Method to add a node to the taxonomy tree. * * @param string $branch The title of the branch to store the node in. * @param string $title The title of the node. * @param integer $state The published state of the node. [optional] * @param integer $access The access state of the node. [optional] * * @return integer The id of the node. * * @since 2.5 * @throws Exception on database error. */ public static function addNode($branch, $title, $state = 1, $access = 1) { // Check to see if the node is in the cache. if (isset(self::$nodes[$branch][$title])) { return self::$nodes[$branch][$title]->id; } // Get the branch id, insert it if it does not exist. $branchId = self::addBranch($branch); // Check to see if the node is in the table. $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('*') ->from($db->quoteName('#__finder_taxonomy')) ->where($db->quoteName('parent_id') . ' = ' . $db->quote($branchId)) ->where($db->quoteName('title') . ' = ' . $db->quote($title)); $db->setQuery($query); // Get the result. $result = $db->loadObject(); // Check if the database matches the input data. if (!empty($result) && $result->state == $state && $result->access == $access) { // The data matches, add the item to the cache. self::$nodes[$branch][$title] = $result; return self::$nodes[$branch][$title]->id; } /* * The database did not match the input. This could be because the * state has changed or because the node does not exist. Let's figure * out which case is true and deal with it. */ $node = new JObject; if (empty($result)) { // Prepare the node object. $node->parent_id = (int) $branchId; $node->title = $title; $node->state = (int) $state; $node->access = (int) $access; } else { // Prepare the node object. $node->id = (int) $result->id; $node->parent_id = (int) $result->parent_id; $node->title = $result->title; $node->state = (int) $result->title; $node->access = (int) $result->access; $node->ordering = (int) $result->ordering; } // Store the node. self::storeNode($node); // Add the node to the cache. self::$nodes[$branch][$title] = $node; return self::$nodes[$branch][$title]->id; } /** * Method to add a map entry between a link and a taxonomy node. * * @param integer $linkId The link to map to. * @param integer $nodeId The node to map to. * * @return boolean True on success. * * @since 2.5 * @throws Exception on database error. */ public static function addMap($linkId, $nodeId) { // Insert the map. $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select($db->quoteName('link_id')) ->from($db->quoteName('#__finder_taxonomy_map')) ->where($db->quoteName('link_id') . ' = ' . (int) $linkId) ->where($db->quoteName('node_id') . ' = ' . (int) $nodeId); $db->setQuery($query); $db->execute(); $id = (int) $db->loadResult(); $map = new JObject; $map->link_id = (int) $linkId; $map->node_id = (int) $nodeId; if ($id) { $db->updateObject('#__finder_taxonomy_map', $map, array('link_id', 'node_id')); } else { $db->insertObject('#__finder_taxonomy_map', $map); } return true; } /** * Method to get the title of all taxonomy branches. * * @return array An array of branch titles. * * @since 2.5 * @throws Exception on database error. */ public static function getBranchTitles() { $db = JFactory::getDbo(); // Set user variables $user = JFactory::getUser(); $groups = implode(',', $user->getAuthorisedViewLevels()); // Create a query to get the taxonomy branch titles. $query = $db->getQuery(true) ->select($db->quoteName('title')) ->from($db->quoteName('#__finder_taxonomy')) ->where($db->quoteName('parent_id') . ' = 1') ->where($db->quoteName('state') . ' = 1') ->where($db->quoteName('access') . ' IN (' . $groups . ')'); // Get the branch titles. $db->setQuery($query); $results = $db->loadColumn(); return $results; } /** * Method to find a taxonomy node in a branch. * * @param string $branch The branch to search. * @param string $title The title of the node. * * @return mixed Integer id on success, null on no match. * * @since 2.5 * @throws Exception on database error. */ public static function getNodeByTitle($branch, $title) { $db = JFactory::getDbo(); // Set user variables $user = JFactory::getUser(); $groups = implode(',', $user->getAuthorisedViewLevels()); // Create a query to get the node. $query = $db->getQuery(true) ->select('t1.*') ->from($db->quoteName('#__finder_taxonomy') . ' AS t1') ->join('INNER', $db->quoteName('#__finder_taxonomy') . ' AS t2 ON t2.id = t1.parent_id') ->where('t1.access IN (' . $groups . ')') ->where('t1.state = 1') ->where('t1.title LIKE ' . $db->quote($db->escape($title) . '%')) ->where('t2.access IN (' . $groups . ')') ->where('t2.state = 1') ->where('t2.title = ' . $db->quote($branch)); // Get the node. $db->setQuery($query, 0, 1); $result = $db->loadObject(); return $result; } /** * Method to remove map entries for a link. * * @param integer $linkId The link to remove. * * @return boolean True on success. * * @since 2.5 * @throws Exception on database error. */ public static function removeMaps($linkId) { // Delete the maps. $db = JFactory::getDbo(); $query = $db->getQuery(true) ->delete($db->quoteName('#__finder_taxonomy_map')) ->where($db->quoteName('link_id') . ' = ' . (int) $linkId); $db->setQuery($query); $db->execute(); return true; } /** * Method to remove orphaned taxonomy nodes and branches. * * @return integer The number of deleted rows. * * @since 2.5 * @throws Exception on database error. */ public static function removeOrphanNodes() { // Delete all orphaned nodes. $db = JFactory::getDbo(); $query = 'DELETE t' . ' FROM ' . $db->quoteName('#__finder_taxonomy') . ' AS t' . ' LEFT JOIN ' . $db->quoteName('#__finder_taxonomy_map') . ' AS m ON m.node_id = t.id' . ' WHERE t.parent_id > 1' . ' AND m.link_id IS NULL'; $db->setQuery($query); $db->execute(); return $db->getAffectedRows(); } /** * Method to store a node to the database. This method will accept either a branch or a node. * * @param object $item The item to store. * * @return boolean True on success. * * @since 2.5 * @throws Exception on database error. */ protected static function storeNode($item) { $db = JFactory::getDbo(); // Check if we are updating or inserting the item. if (empty($item->id)) { // Insert the item. $db->insertObject('#__finder_taxonomy', $item, 'id'); } else { // Update the item. $db->updateObject('#__finder_taxonomy', $item, 'id'); } return true; } } PKb��\e$&�LL/components/com_finder/helpers/indexer/token.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Token class for the Finder indexer package. * * @since 2.5 */ class FinderIndexerToken { /** * This is the term that will be referenced in the terms table and the * mapping tables. * * @var string * @since 2.5 */ public $term; /** * The stem is used to match the root term and produce more potential * matches when searching the index. * * @var string * @since 2.5 */ public $stem; /** * If the token is numeric, it is likely to be short and uncommon so the * weight is adjusted to compensate for that situation. * * @var boolean * @since 2.5 */ public $numeric; /** * If the token is a common term, the weight is adjusted to compensate for * the higher frequency of the term in relation to other terms. * * @var boolean * @since 2.5 */ public $common; /** * Flag for phrase tokens. * * @var boolean * @since 2.5 */ public $phrase; /** * The length is used to calculate the weight of the token. * * @var integer * @since 2.5 */ public $length; /** * The weight is calculated based on token size and whether the token is * considered a common term. * * @var integer * @since 2.5 */ public $weight; /** * The simple language identifier for the token. * * @var string * @since 2.5 */ public $language; /** * Method to construct the token object. * * @param mixed $term The term as a string for words or an array for phrases. * @param string $lang The simple language identifier. * @param string $spacer The space separator for phrases. [optional] * * @since 2.5 */ public function __construct($term, $lang, $spacer = ' ') { $this->language = $lang; // Tokens can be a single word or an array of words representing a phrase. if (is_array($term)) { // Populate the token instance. $this->term = implode($spacer, $term); $this->stem = implode($spacer, array_map(array('FinderIndexerHelper', 'stem'), $term, array($lang))); $this->numeric = false; $this->common = false; $this->phrase = true; $this->length = JString::strlen($this->term); /* * Calculate the weight of the token. * * 1. Length of the token up to 30 and divide by 30, add 1. * 2. Round weight to 4 decimal points. */ $this->weight = (($this->length >= 30 ? 30 : $this->length) / 30) + 1; $this->weight = round($this->weight, 4); } else { // Populate the token instance. $this->term = $term; $this->stem = FinderIndexerHelper::stem($this->term, $lang); $this->numeric = (is_numeric($this->term) || (bool) preg_match('#^[0-9,.\-\+]+$#', $this->term)); $this->common = $this->numeric ? false : FinderIndexerHelper::isCommon($this->term, $lang); $this->phrase = false; $this->length = JString::strlen($this->term); /* * Calculate the weight of the token. * * 1. Length of the token up to 15 and divide by 15. * 2. If common term, divide weight by 8. * 3. If numeric, multiply weight by 1.5. * 4. Round weight to 4 decimal points. */ $this->weight = (($this->length >= 15 ? 15 : $this->length) / 15); $this->weight = ($this->common == true ? $this->weight / 8 : $this->weight); $this->weight = ($this->numeric == true ? $this->weight * 1.5 : $this->weight); $this->weight = round($this->weight, 4); } } } PKb��\:)�� " "0components/com_finder/helpers/indexer/result.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JLoader::register('FinderIndexer', __DIR__ . '/indexer.php'); /** * Result class for the Finder indexer package. * * This class uses magic __get() and __set() methods to prevent properties * being added that might confuse the system. All properties not explicitly * declared will be pushed into the elements array and can be accessed * explicitly using the getElement() method. * * @since 2.5 */ class FinderIndexerResult { /** * An array of extra result properties. * * @var array * @since 2.5 */ protected $elements = array(); /** * This array tells the indexer which properties should be indexed and what * weights to use for those properties. * * @var array * @since 2.5 */ protected $instructions = array( FinderIndexer::TITLE_CONTEXT => array('title', 'subtitle', 'id'), FinderIndexer::TEXT_CONTEXT => array('summary', 'body'), FinderIndexer::META_CONTEXT => array('meta', 'list_price', 'sale_price'), FinderIndexer::PATH_CONTEXT => array('path', 'alias'), FinderIndexer::MISC_CONTEXT => array('comments') ); /** * The indexer will use this data to create taxonomy mapping entries for * the item so that it can be filtered by type, label, category, * or whatever. * * @var array * @since 2.5 */ protected $taxonomy = array(); /** * The content URL. * * @var string * @since 2.5 */ public $url; /** * The content route. * * @var string * @since 2.5 */ public $route; /** * The content title. * * @var string * @since 2.5 */ public $title; /** * The content description. * * @var string * @since 2.5 */ public $description; /** * The published state of the result. * * @var integer * @since 2.5 */ public $published; /** * The content published state. * * @var integer * @since 2.5 */ public $state; /** * The content access level. * * @var integer * @since 2.5 */ public $access; /** * The content language. * * @var string * @since 2.5 */ public $language = '*'; /** * The publishing start date. * * @var string * @since 2.5 */ public $publish_start_date; /** * The publishing end date. * * @var string * @since 2.5 */ public $publish_end_date; /** * The generic start date. * * @var string * @since 2.5 */ public $start_date; /** * The generic end date. * * @var string * @since 2.5 */ public $end_date; /** * The item list price. * * @var mixed * @since 2.5 */ public $list_price; /** * The item sale price. * * @var mixed * @since 2.5 */ public $sale_price; /** * The content type id. This is set by the adapter. * * @var integer * @since 2.5 */ public $type_id; /** * The default language for content. * * @var string * @since 3.0.2 */ public $defaultLanguage; /** * Constructor * * @since 3.0.3 */ public function __construct() { $this->defaultLanguage = JComponentHelper::getParams('com_languages')->get('site', 'en-GB'); } /** * The magic set method is used to push additional values into the elements * array in order to preserve the cleanliness of the object. * * @param string $name The name of the element. * @param mixed $value The value of the element. * * @return void * * @since 2.5 */ public function __set($name, $value) { $this->elements[$name] = $value; } /** * The magic get method is used to retrieve additional element values * from the elements array. * * @param string $name The name of the element. * * @return mixed The value of the element if set, null otherwise. * * @since 2.5 */ public function __get($name) { // Get the element value if set. if (array_key_exists($name, $this->elements)) { return $this->elements[$name]; } else { return null; } } /** * The magic isset method is used to check the state of additional element * values in the elements array. * * @param string $name The name of the element. * * @return boolean True if set, false otherwise. * * @since 2.5 */ public function __isset($name) { return isset($this->elements[$name]); } /** * The magic unset method is used to unset additional element values in the * elements array. * * @param string $name The name of the element. * * @return void * * @since 2.5 */ public function __unset($name) { unset($this->elements[$name]); } /** * Method to retrieve additional element values from the elements array. * * @param string $name The name of the element. * * @return mixed The value of the element if set, null otherwise. * * @since 2.5 */ public function getElement($name) { // Get the element value if set. if (array_key_exists($name, $this->elements)) { return $this->elements[$name]; } else { return null; } } /** * Method to set additional element values in the elements array. * * @param string $name The name of the element. * @param mixed $value The value of the element. * * @return void * * @since 2.5 */ public function setElement($name, $value) { $this->elements[$name] = $value; } /** * Method to get all processing instructions. * * @return array An array of processing instructions. * * @since 2.5 */ public function getInstructions() { return $this->instructions; } /** * Method to add a processing instruction for an item property. * * @param string $group The group to associate the property with. * @param string $property The property to process. * * @return void * * @since 2.5 */ public function addInstruction($group, $property) { // Check if the group exists. We can't add instructions for unknown groups. if (array_key_exists($group, $this->instructions)) { // Check if the property exists in the group. if (!in_array($property, $this->instructions[$group])) { // Add the property to the group. $this->instructions[$group][] = $property; } } } /** * Method to remove a processing instruction for an item property. * * @param string $group The group to associate the property with. * @param string $property The property to process. * * @return void * * @since 2.5 */ public function removeInstruction($group, $property) { // Check if the group exists. We can't remove instructions for unknown groups. if (array_key_exists($group, $this->instructions)) { // Search for the property in the group. $key = array_search($property, $this->instructions[$group]); // If the property was found, remove it. if ($key !== false) { unset($this->instructions[$group][$key]); } } } /** * Method to get the taxonomy maps for an item. * * @param string $branch The taxonomy branch to get. [optional] * * @return array An array of taxonomy maps. * * @since 2.5 */ public function getTaxonomy($branch = null) { // Get the taxonomy branch if available. if ($branch !== null && isset($this->taxonomy[$branch])) { // Filter the input. $branch = preg_replace('#[^\pL\pM\pN\p{Pi}\p{Pf}\'+-.,_]+#mui', ' ', $branch); return $this->taxonomy[$branch]; } return $this->taxonomy; } /** * Method to add a taxonomy map for an item. * * @param string $branch The title of the taxonomy branch to add the node to. * @param string $title The title of the taxonomy node. * @param integer $state The published state of the taxonomy node. [optional] * @param integer $access The access level of the taxonomy node. [optional] * * @return void * * @since 2.5 */ public function addTaxonomy($branch, $title, $state = 1, $access = 1) { // Filter the input. $branch = preg_replace('#[^\pL\pM\pN\p{Pi}\p{Pf}\'+-.,_]+#mui', ' ', $branch); // Create the taxonomy node. $node = new JObject; $node->title = $title; $node->state = (int) $state; $node->access = (int) $access; // Add the node to the taxonomy branch. $this->taxonomy[$branch][$node->title] = $node; } /** * Method to set the item language * * @return void * * @since 3.0 */ public function setLanguage() { if ($this->language == '') { $this->language = $this->defaultLanguage; } } } PKb��\��[EE3components/com_finder/models/fields/directories.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; JFormHelper::loadFieldClass('list'); // Load the base adapter. require_once JPATH_ADMINISTRATOR . '/components/com_finder/helpers/indexer/adapter.php'; /** * Renders a list of directories. * * @since 2.5 */ class JFormFieldDirectories extends JFormFieldList { /** * The form field type. * * @var string * @since 2.5 */ protected $type = 'Directories'; /** * Method to get the field options. * * @return array The field option objects. * * @since 2.5 */ public function getOptions() { $values = array(); $options = array(); $exclude = array( JPATH_ADMINISTRATOR, JPATH_INSTALLATION, JPATH_LIBRARIES, JPATH_PLUGINS, JPATH_SITE . '/cache', JPATH_SITE . '/components', JPATH_SITE . '/includes', JPATH_SITE . '/language', JPATH_SITE . '/modules', JPATH_THEMES, JFactory::getApplication()->get('log_path'), JFactory::getApplication()->get('tmp_path') ); // Get the base directories. jimport('joomla.filesystem.folder'); $dirs = JFolder::folders(JPATH_SITE, '.', false, true); // Iterate through the base directories and find the subdirectories. foreach ($dirs as $dir) { // Check if the directory should be excluded. if (in_array($dir, $exclude)) { continue; } // Get the child directories. $return = JFolder::folders($dir, '.', true, true); // Merge the directories. if (is_array($return)) { $values[] = $dir; $values = array_merge($values, $return); } } // Convert the values to options. foreach ($values as $value) { $options[] = JHtml::_('select.option', str_replace(JPATH_SITE . '/', '', $value), str_replace(JPATH_SITE . '/', '', $values)); } // Add a null option. array_unshift($options, JHtml::_('select.option', '', '- ' . JText::_('JNONE') . ' -')); return $options; } } PKb��\L;�.��4components/com_finder/models/fields/searchfilter.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('JPATH_BASE') or die(); JFormHelper::loadFieldClass('list'); /** * Search Filter field for the Finder package. * * @since 2.5 */ class JFormFieldSearchFilter extends JFormFieldList { /** * The form field type. * * @var string * @since 2.5 */ protected $type = 'SearchFilter'; /** * Method to get the field options. * * @return array The field option objects. * * @since 2.5 */ public function getOptions() { // Build the query. $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('f.title AS text, f.filter_id AS value') ->from($db->quoteName('#__finder_filters') . ' AS f') ->where('f.state = 1') ->order('f.title ASC'); $db->setQuery($query); $options = $db->loadObjectList(); array_unshift($options, JHtml::_('select.option', '', JText::_('COM_FINDER_SELECT_SEARCH_FILTER'), 'value', 'text')); return $options; } } PKb��\���V V -components/com_finder/models/forms/filter.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field name="filter_id" type="text" class="readonly" label="JGLOBAL_FIELD_ID_LABEL" description ="JGLOBAL_FIELD_ID_DESC" size="10" default="0" readonly="true" /> <field name="title" type="text" label="JGLOBAL_TITLE" description="COM_FINDER_FILTER_TITLE_DESCRIPTION" class="input-xxlarge input-large-text" size="40" id="title" required="true" /> <field name="alias" type="text" label="JFIELD_ALIAS_LABEL" description="JFIELD_ALIAS_DESC" hint="JFIELD_ALIAS_PLACEHOLDER" size="45" /> <field name="created" type="calendar" label="JGLOBAL_FIELD_CREATED_LABEL" description="JGLOBAL_FIELD_CREATED_DESC" size="22" format="%Y-%m-%d %H:%M:%S" filter="user_utc" /> <field name="modified" type="calendar" class="readonly" label="JGLOBAL_FIELD_MODIFIED_LABEL" description="COM_FINDER_FIELD_MODIFIED_DESCRIPTION" size="22" readonly="true" format="%Y-%m-%d %H:%M:%S" filter="user_utc" /> <field name="created_by" type="user" label="COM_FINDER_FIELD_CREATED_BY_LABEL" description="COM_FINDER_FIELD_CREATED_BY_DESC" /> <field name="created_by_alias" type="text" label="COM_FINDER_FIELD_CREATED_BY_ALIAS_LABEL" description="COM_FINDER_FIELD_CREATED_BY_ALIAS_DESC" size="20" /> <field name="modified_by" type="user" label="JGLOBAL_FIELD_MODIFIED_BY_LABEL" class="readonly" readonly="true" filter="unset" /> <field name="checked_out" type="hidden" filter="unset" /> <field name="checked_out_time" type="hidden" filter="unset" /> <field name="state" type="list" label="JSTATUS" description="JFIELD_PUBLISHED_DESC" class="chzn-color-state" filter="intval" size="1" default="1" > <option value="1"> JPUBLISHED</option> <option value="0"> JUNPUBLISHED</option> </field> <field name="map_count" type="text" class="readonly" label="COM_FINDER_FILTER_MAP_COUNT" description="COM_FINDER_FILTER_MAP_COUNT_DESCRIPTION" size="10" default="0" readonly="true" /> </fieldset> <fields name="params"> <fieldset name="jbasic" label="COM_FINDER_FILTER_FIELDSET_PARAMS"> <field name="w1" type="list" label="COM_FINDER_FILTER_WHEN_START_DATE_LABEL" description="COM_FINDER_FILTER_WHEN_START_DATE_DESCRIPTION" default="" filter="string"> <option value="">JNONE</option> <option value="-1">COM_FINDER_FILTER_WHEN_BEFORE</option> <option value="0">COM_FINDER_FILTER_WHEN_EXACTLY</option> <option value="1">COM_FINDER_FILTER_WHEN_AFTER</option> </field> <field name="d1" type="calendar" label="COM_FINDER_FILTER_START_DATE_LABEL" description="COM_FINDER_FILTER_START_DATE_DESCRIPTION" size="22" format="%Y-%m-%d" filter="user_utc" /> <field name="w2" type="list" label="COM_FINDER_FILTER_WHEN_END_DATE_LABEL" description="COM_FINDER_FILTER_WHEN_END_DATE_DESCRIPTION" default="" filter="string"> <option value="">JNONE</option> <option value="-1">COM_FINDER_FILTER_WHEN_BEFORE</option> <option value="0">COM_FINDER_FILTER_WHEN_EXACTLY</option> <option value="1">COM_FINDER_FILTER_WHEN_AFTER</option> </field> <field name="d2" type="calendar" label="COM_FINDER_FILTER_END_DATE_LABEL" description="COM_FINDER_FILTER_END_DATE_DESCRIPTION" size="22" format="%Y-%m-%d" filter="user_utc" /> </fieldset> </fields> </form> PKb��\��cv��(components/com_finder/models/indexer.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Indexer model class for Finder. * * @since 2.5 */ class FinderModelIndexer extends JModelLegacy { } PKb��\�|�"�"%components/com_finder/models/maps.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die(); /** * Maps model for the Finder package. * * @since 2.5 */ class FinderModelMaps extends JModelList { /** * Constructor. * * @param array $config An associative array of configuration settings. [optional] * * @since 2.5 * @see JController */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'state', 'a.state', 'title', 'a.title' ); } parent::__construct($config); } /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to delete the record. Defaults to the permission for the component. * * @since 2.5 */ protected function canDelete($record) { $user = JFactory::getUser(); return $user->authorise('core.delete', $this->option); } /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to change the state of the record. Defaults to the permission for the component. * * @since 2.5 */ protected function canEditState($record) { $user = JFactory::getUser(); return $user->authorise('core.edit.state', $this->option); } /** * Method to delete one or more records. * * @param array &$pks An array of record primary keys. * * @return boolean True if successful, false if an error occurs. * * @since 2.5 */ public function delete(&$pks) { $dispatcher = JEventDispatcher::getInstance(); $pks = (array) $pks; $table = $this->getTable(); // Include the content plugins for the on delete events. JPluginHelper::importPlugin('content'); // Iterate the items to delete each one. foreach ($pks as $i => $pk) { if ($table->load($pk)) { if ($this->canDelete($table)) { $context = $this->option . '.' . $this->name; // Trigger the onContentBeforeDelete event. $result = $dispatcher->trigger('onContentBeforeDelete', array($context, $table)); if (in_array(false, $result, true)) { $this->setError($table->getError()); return false; } if (!$table->delete($pk)) { $this->setError($table->getError()); return false; } // Trigger the onContentAfterDelete event. $dispatcher->trigger('onContentAfterDelete', array($context, $table)); } else { // Prune items that you can't change. unset($pks[$i]); $error = $this->getError(); if ($error) { $this->setError($error); } else { $this->setError(JText::_('JLIB_APPLICATION_ERROR_DELETE_NOT_PERMITTED')); } } } else { $this->setError($table->getError()); return false; } } // Clear the component's cache $this->cleanCache(); return true; } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery A JDatabaseQuery object * * @since 2.5 */ protected function getListQuery() { $db = $this->getDbo(); $query = $db->getQuery(true); // Select all fields from the table. $query->select('a.*') ->from($db->quoteName('#__finder_taxonomy') . ' AS a'); // Self-join to get children. $query->select('COUNT(b.id) AS num_children') ->join('LEFT', $db->quoteName('#__finder_taxonomy') . ' AS b ON b.parent_id=a.id'); // Join to get the map links $query->select('COUNT(c.node_id) AS num_nodes') ->join('LEFT', $db->quoteName('#__finder_taxonomy_map') . ' AS c ON c.node_id=a.id') ->group('a.id, a.parent_id, a.title, a.state, a.access, a.ordering'); // If the model is set to check item state, add to the query. if (is_numeric($this->getState('filter.state'))) { $query->where('a.state = ' . (int) $this->getState('filter.state')); } // Filter the maps over the branch if set. $branch_id = $this->getState('filter.branch'); if (!empty($branch_id)) { $query->where('a.parent_id = ' . (int) $branch_id); } // Filter the maps over the search string if set. $search = $this->getState('filter.search'); if (!empty($search)) { $query->where('a.title LIKE ' . $db->quote('%' . $search . '%')); } // Handle the list ordering. $ordering = $this->getState('list.ordering'); $direction = $this->getState('list.direction'); if (!empty($ordering)) { $query->order($db->escape($ordering) . ' ' . $db->escape($direction)); } return $query; } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. [optional] * * @return string A store id. * * @since 2.5 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.state'); $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.branch'); return parent::getStoreId($id); } /** * Returns a JTable object, always creating it. * * @param string $type The table type to instantiate. [optional] * @param string $prefix A prefix for the table class name. [optional] * @param array $config Configuration array for model. [optional] * * @return JTable A database object * * @since 2.5 */ public function getTable($type = 'Map', $prefix = 'FinderTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Method to auto-populate the model state. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. [optional] * @param string $direction An optional direction. [optional] * * @return void * * @since 2.5 */ protected function populateState($ordering = null, $direction = null) { // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $state = $this->getUserStateFromRequest($this->context . '.filter.state', 'filter_state', '', 'string'); $this->setState('filter.state', $state); $branch = $this->getUserStateFromRequest($this->context . '.filter.branch', 'filter_branch', '1', 'string'); $this->setState('filter.branch', $branch); // Load the parameters. $params = JComponentHelper::getParams('com_finder'); $this->setState('params', $params); // List state information. parent::populateState('a.title', 'asc'); } /** * Method to change the published state of one or more records. * * @param array &$pks A list of the primary keys to change. * @param integer $value The value of the published state. [optional] * * @return boolean True on success. * * @since 2.5 */ public function publish(&$pks, $value = 1) { $dispatcher = JEventDispatcher::getInstance(); $user = JFactory::getUser(); $table = $this->getTable(); $pks = (array) $pks; // Include the content plugins for the change of state event. JPluginHelper::importPlugin('content'); // Access checks. foreach ($pks as $i => $pk) { $table->reset(); if ($table->load($pk)) { if (!$this->canEditState($table)) { // Prune items that you can't change. unset($pks[$i]); $this->setError(JText::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED')); return false; } } } // Attempt to change the state of the records. if (!$table->publish($pks, $value, $user->get('id'))) { $this->setError($table->getError()); return false; } $context = $this->option . '.' . $this->name; // Trigger the onContentChangeState event. $result = $dispatcher->trigger('onContentChangeState', array($context, $pks, $value)); if (in_array(false, $result, true)) { $this->setError($table->getError()); return false; } // Clear the component's cache $this->cleanCache(); return true; } /** * Method to purge all maps from the taxonomy. * * @return boolean Returns true on success, false on failure. * * @since 2.5 */ public function purge() { $db = $this->getDbo(); $query = $db->getQuery(true) ->delete($db->quoteName('#__finder_taxonomy')) ->where($db->quoteName('parent_id') . ' > 1'); $db->setQuery($query); $db->execute(); $query->clear() ->delete($db->quoteName('#__finder_taxonomy_map')) ->where('1'); $db->setQuery($query); $db->execute(); return true; } } PKb��\z�nOO+components/com_finder/models/statistics.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Statistics model class for Finder. * * @since 2.5 */ class FinderModelStatistics extends JModelLegacy { /** * Method to get the component statistics * * @return object The component statistics * * @since 2.5 */ public function getData() { // Initialise $db = $this->getDbo(); $query = $db->getQuery(true); $data = new JObject; $query->select('COUNT(term_id)') ->from($db->quoteName('#__finder_terms')); $db->setQuery($query); $data->term_count = $db->loadResult(); $query->clear() ->select('COUNT(link_id)') ->from($db->quoteName('#__finder_links')); $db->setQuery($query); $data->link_count = $db->loadResult(); $query->clear() ->select('COUNT(id)') ->from($db->quoteName('#__finder_taxonomy')) ->where($db->quoteName('parent_id') . ' = 1'); $db->setQuery($query); $data->taxonomy_branch_count = $db->loadResult(); $query->clear() ->select('COUNT(id)') ->from($db->quoteName('#__finder_taxonomy')) ->where($db->quoteName('parent_id') . ' > 1'); $db->setQuery($query); $data->taxonomy_node_count = $db->loadResult(); $query->clear() ->select('t.title AS type_title, COUNT(a.link_id) AS link_count') ->from($db->quoteName('#__finder_links') . ' AS a') ->join('INNER', $db->quoteName('#__finder_types') . ' AS t ON t.id = a.type_id') ->group('a.type_id, t.title') ->order($db->quoteName('type_title'), 'ASC'); $db->setQuery($query); $data->type_list = $db->loadObjectList(); $lang = JFactory::getLanguage(); $plugins = JPluginHelper::getPlugin('finder'); foreach ($plugins as $plugin) { $lang->load('plg_finder_' . $plugin->name . '.sys', JPATH_ADMINISTRATOR, null, false, true) || $lang->load('plg_finder_' . $plugin->name . '.sys', JPATH_PLUGINS . '/finder/' . $plugin->name, null, false, true); } return $data; } } PKb��\t���'�'&components/com_finder/models/index.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Index model class for Finder. * * @since 2.5 */ class FinderModelIndex extends JModelList { /** * The event to trigger after deleting the data. * * @var string * @since 2.5 */ protected $event_after_delete = 'onContentAfterDelete'; /** * The event to trigger before deleting the data. * * @var string * @since 2.5 */ protected $event_before_delete = 'onContentBeforeDelete'; /** * Constructor. * * @param array $config An associative array of configuration settings. [optional] * * @since 2.5 * @see JController */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'published', 'l.published', 'title', 'l.title', 'type_id', 'l.type_id', 'url', 'l.url', 'indexdate', 'l.indexdate' ); } parent::__construct($config); } /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to delete the record. Defaults to the permission for the component. * * @since 2.5 */ protected function canDelete($record) { $user = JFactory::getUser(); return $user->authorise('core.delete', $this->option); } /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to change the state of the record. Defaults to the permission for the component. * * @since 2.5 */ protected function canEditState($record) { $user = JFactory::getUser(); return $user->authorise('core.edit.state', $this->option); } /** * Method to delete one or more records. * * @param array &$pks An array of record primary keys. * * @return boolean True if successful, false if an error occurs. * * @since 2.5 */ public function delete(&$pks) { $dispatcher = JEventDispatcher::getInstance(); $pks = (array) $pks; $table = $this->getTable(); // Include the content plugins for the on delete events. JPluginHelper::importPlugin('content'); // Iterate the items to delete each one. foreach ($pks as $i => $pk) { if ($table->load($pk)) { if ($this->canDelete($table)) { $context = $this->option . '.' . $this->name; // Trigger the onContentBeforeDelete event. $result = $dispatcher->trigger($this->event_before_delete, array($context, $table)); if (in_array(false, $result, true)) { $this->setError($table->getError()); return false; } if (!$table->delete($pk)) { $this->setError($table->getError()); return false; } // Trigger the onContentAfterDelete event. $dispatcher->trigger($this->event_after_delete, array($context, $table)); } else { // Prune items that you can't change. unset($pks[$i]); $error = $this->getError(); if ($error) { $this->setError($error); } else { $this->setError(JText::_('JLIB_APPLICATION_ERROR_DELETE_NOT_PERMITTED')); } } } else { $this->setError($table->getError()); return false; } } // Clear the component's cache $this->cleanCache(); return true; } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery A JDatabaseQuery object * * @since 2.5 */ protected function getListQuery() { $db = $this->getDbo(); $query = $db->getQuery(true) ->select('l.*') ->select('t.title AS t_title') ->from($db->quoteName('#__finder_links') . ' AS l') ->join('INNER', $db->quoteName('#__finder_types') . ' AS t ON t.id = l.type_id'); // Check the type filter. if ($this->getState('filter.type')) { $query->where('l.type_id = ' . (int) $this->getState('filter.type')); } // Check for state filter. if (is_numeric($this->getState('filter.state'))) { $query->where('l.published = ' . (int) $this->getState('filter.state')); } // Check the search phrase. if ($this->getState('filter.search') != '') { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($this->getState('filter.search')), true) . '%')); $query->where('l.title LIKE ' . $search . ' OR l.url LIKE ' . $search . ' OR l.indexdate LIKE ' . $search); } // Handle the list ordering. $ordering = $this->getState('list.ordering'); $direction = $this->getState('list.direction'); if (!empty($ordering)) { $query->order($db->escape($ordering) . ' ' . $db->escape($direction)); } return $query; } /** * Method to get the state of the Smart Search plug-ins. * * @return array Array of relevant plug-ins and whether they are enabled or not. * * @since 2.5 */ public function getPluginState() { $db = $this->getDbo(); $query = $db->getQuery(true) ->select('name, enabled') ->from($db->quoteName('#__extensions')) ->where($db->quoteName('type') . ' = ' . $db->quote('plugin')) ->where($db->quoteName('folder') . ' IN(' . $db->quote('system') . ',' . $db->quote('content') . ')') ->where($db->quoteName('element') . ' = ' . $db->quote('finder')); $db->setQuery($query); $db->execute(); $plugins = $db->loadObjectList('name'); return $plugins; } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. [optional] * * @return string A store id. * * @since 2.5 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.state'); $id .= ':' . $this->getState('filter.type'); return parent::getStoreId($id); } /** * Returns a JTable object, always creating it. * * @param string $type The table type to instantiate. [optional] * @param string $prefix A prefix for the table class name. [optional] * @param array $config Configuration array for model. [optional] * * @return JTable A database object * * @since 2.5 */ public function getTable($type = 'Link', $prefix = 'FinderTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Method to purge the index, deleting all links. * * @return boolean True on success, false on failure. * * @since 2.5 * @throws Exception on database error */ public function purge() { $db = $this->getDbo(); // Truncate the links table. $db->truncateTable('#__finder_links'); // Truncate the links terms tables. for ($i = 0; $i <= 15; $i++) { // Get the mapping table suffix. $suffix = dechex($i); $db->truncateTable('#__finder_links_terms' . $suffix); } // Truncate the terms table. $db->truncateTable('#__finder_terms'); // Truncate the taxonomy map table. $db->truncateTable('#__finder_taxonomy_map'); // Delete all the taxonomy nodes except the root. $query = $db->getQuery(true) ->delete($db->quoteName('#__finder_taxonomy')) ->where($db->quoteName('id') . ' > 1'); $db->setQuery($query); $db->execute(); // Truncate the tokens tables. $db->truncateTable('#__finder_tokens'); // Truncate the tokens aggregate table. $db->truncateTable('#__finder_tokens_aggregate'); return true; } /** * Method to auto-populate the model state. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. [optional] * @param string $direction An optional direction. [optional] * * @return void * * @since 2.5 */ protected function populateState($ordering = null, $direction = null) { // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $state = $this->getUserStateFromRequest($this->context . '.filter.state', 'filter_state', '', 'string'); $this->setState('filter.state', $state); $type = $this->getUserStateFromRequest($this->context . '.filter.type', 'filter_type', '', 'string'); $this->setState('filter.type', $type); // Load the parameters. $params = JComponentHelper::getParams('com_finder'); $this->setState('params', $params); // List state information. parent::populateState('l.title', 'asc'); } /** * Method to change the published state of one or more records. * * @param array &$pks A list of the primary keys to change. * @param integer $value The value of the published state. [optional] * * @return boolean True on success. * * @since 2.5 */ public function publish(&$pks, $value = 1) { $dispatcher = JEventDispatcher::getInstance(); $user = JFactory::getUser(); $table = $this->getTable(); $pks = (array) $pks; // Include the content plugins for the change of state event. JPluginHelper::importPlugin('content'); // Access checks. foreach ($pks as $i => $pk) { $table->reset(); if ($table->load($pk)) { if (!$this->canEditState($table)) { // Prune items that you can't change. unset($pks[$i]); $this->setError(JText::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED')); return false; } } } // Attempt to change the state of the records. if (!$table->publish($pks, $value, $user->get('id'))) { $this->setError($table->getError()); return false; } $context = $this->option . '.' . $this->name; // Trigger the onContentChangeState event. $result = $dispatcher->trigger('onContentChangeState', array($context, $pks, $value)); if (in_array(false, $result, true)) { $this->setError($table->getError()); return false; } // Clear the component's cache $this->cleanCache(); return true; } } PKb��\���<vv(components/com_finder/models/filters.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Filters model class for Finder. * * @since 2.5 */ class FinderModelFilters extends JModelList { /** * Constructor. * * @param array $config An associative array of configuration settings. [optional] * * @since 2.5 * @see JController */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'filter_id', 'a.filter_id', 'title', 'a.title', 'state', 'a.state', 'created_by_alias', 'a.created_by_alias', 'created', 'a.created', 'map_count', 'a.map_count' ); } parent::__construct($config); } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery A JDatabaseQuery object * * @since 2.5 */ protected function getListQuery() { $db = $this->getDbo(); $query = $db->getQuery(true); // Select all fields from the table. $query->select('a.*') ->from($db->quoteName('#__finder_filters') . ' AS a'); // Join over the users for the checked out user. $query->select('uc.name AS editor') ->join('LEFT', $db->quoteName('#__users') . ' AS uc ON uc.id=a.checked_out'); // Join over the users for the author. $query->select('ua.name AS user_name') ->join('LEFT', $db->quoteName('#__users') . ' AS ua ON ua.id = a.created_by'); // Check for a search filter. if ($this->getState('filter.search')) { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($this->getState('filter.search')), true) . '%')); $query->where('( a.title LIKE \'%' . $search . '%\' )'); } // If the model is set to check item state, add to the query. if (is_numeric($this->getState('filter.state'))) { $query->where('a.state = ' . (int) $this->getState('filter.state')); } // Add the list ordering clause. $query->order($db->escape($this->getState('list.ordering') . ' ' . $db->escape($this->getState('list.direction')))); return $query; } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. [optional] * * @return string A store id. * * @since 2.5 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.state'); return parent::getStoreId($id); } /** * Method to auto-populate the model state. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. [optional] * @param string $direction An optional direction. [optional] * * @return void * * @since 2.5 */ protected function populateState($ordering = null, $direction = null) { // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $state = $this->getUserStateFromRequest($this->context . '.filter.state', 'filter_state', '', 'string'); $this->setState('filter.state', $state); // Load the parameters. $params = JComponentHelper::getParams('com_finder'); $this->setState('params', $params); // List state information. parent::populateState('a.title', 'asc'); } } PKb��\�b�� 'components/com_finder/models/filter.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Filter model class for Finder. * * @since 2.5 */ class FinderModelFilter extends JModelAdmin { /** * The prefix to use with controller messages. * * @var string * @since 2.5 */ protected $text_prefix = 'COM_FINDER'; /** * Model context string. * * @var string * @since 2.5 */ protected $context = 'com_finder.filter'; /** * Custom clean cache method. * * @param string $group The component name. [optional] * @param integer $client_id The client ID. [optional] * * @return void * * @since 2.5 */ protected function cleanCache($group = 'com_finder', $client_id = 1) { parent::cleanCache($group, $client_id); } /** * Method to get the filter data. * * @return mixed The filter data. * * @since 2.5 */ public function getFilter() { $filter_id = (int) $this->getState('filter.id'); // Get a FinderTableFilter instance. $filter = $this->getTable(); // Attempt to load the row. $return = $filter->load($filter_id); // Check for a database error. if ($return === false && $filter->getError()) { $this->setError($filter->getError()); return false; } // Process the filter data. if (!empty($filter->data)) { $filter->data = explode(',', $filter->data); } elseif (empty($filter->data)) { $filter->data = array(); } // Check for a database error. if ($this->_db->getErrorNum()) { $this->setError($this->_db->getErrorMsg()); return false; } return $filter; } /** * Method to get the record form. * * @param array $data Data for the form. [optional] * @param boolean $loadData True if the form is to load its own data (default case), false if not. [optional] * * @return mixed A JForm object on success, false on failure * * @since 2.5 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_finder.filter', 'filter', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } return $form; } /** * Returns a JTable object, always creating it. * * @param string $type The table type to instantiate. [optional] * @param string $prefix A prefix for the table class name. [optional] * @param array $config Configuration array for model. [optional] * * @return JTable A database object * * @since 2.5 */ public function getTable($type = 'Filter', $prefix = 'FinderTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 2.5 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_finder.edit.filter.data', array()); if (empty($data)) { $data = $this->getItem(); } $this->preprocessData('com_finder.filter', $data); return $data; } } PKb��\�u��UU$components/com_finder/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_finder * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; /** * Base controller class for Finder. * * @since 2.5 */ class FinderController extends JControllerLegacy { /** * @var string The default view. * @since 2.5 */ protected $default_view = 'index'; /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController A JController object to support chaining. * * @since 2.5 */ public function display($cachable = false, $urlparams = array()) { include_once JPATH_COMPONENT . '/helpers/finder.php'; $view = $this->input->get('view', 'index', 'word'); $layout = $this->input->get('layout', 'index', 'word'); $f_id = $this->input->get('filter_id', null, 'int'); // Check for edit form. if ($view == 'filter' && $layout == 'edit' && !$this->checkEditId('com_finder.edit.filter', $f_id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $f_id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_finder&view=filters', false)); return false; } parent::display(); return $this; } } PKb��\Ȍ�-components/com_modules/controllers/module.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Module controller class. * * @since 1.6 */ class ModulesControllerModule extends JControllerForm { /** * Override parent add method. * * @return mixed True if the record can be added, a JError object if not. * * @since 1.6 */ public function add() { $app = JFactory::getApplication(); // Get the result of the parent method. If an error, just return it. $result = parent::add(); if ($result instanceof Exception) { return $result; } // Look for the Extension ID. $extensionId = $app->input->get('eid', 0, 'int'); if (empty($extensionId)) { $redirectUrl = 'index.php?option=' . $this->option . '&view=' . $this->view_item . '&layout=edit'; $this->setRedirect(JRoute::_($redirectUrl, false)); return JError::raiseWarning(500, JText::_('COM_MODULES_ERROR_INVALID_EXTENSION')); } $app->setUserState('com_modules.add.module.extension_id', $extensionId); $app->setUserState('com_modules.add.module.params', null); // Parameters could be coming in for a new item, so let's set them. $params = $app->input->get('params', array(), 'array'); $app->setUserState('com_modules.add.module.params', $params); } /** * Override parent cancel method to reset the add module state. * * @param string $key The name of the primary key of the URL variable. * * @return boolean True if access level checks pass, false otherwise. * * @since 1.6 */ public function cancel($key = null) { $app = JFactory::getApplication(); $result = parent::cancel(); $app->setUserState('com_modules.add.module.extension_id', null); $app->setUserState('com_modules.add.module.params', null); return $result; } /** * Override parent allowSave method. * * @param array $data An array of input data. * @param string $key The name of the key for the primary key. * * @return boolean * * @since 1.6 */ protected function allowSave($data, $key = 'id') { // Use custom position if selected if (isset($data['custom_position'])) { if (empty($data['position'])) { $data['position'] = $data['custom_position']; } unset($data['custom_position']); } return parent::allowSave($data, $key); } /** * Method override to check if you can edit an existing record. * * @param array $data An array of input data. * @param string $key The name of the key for the primary key. * * @return boolean * * @since 3.2 */ protected function allowEdit($data = array(), $key = 'id') { // Initialise variables. $recordId = (int) isset($data[$key]) ? $data[$key] : 0; $user = JFactory::getUser(); $userId = $user->get('id'); // Check general edit permission first. if ($user->authorise('core.edit', 'com_modules.module.' . $recordId)) { return true; } // Since there is no asset tracking, revert to the component permissions. return parent::allowEdit($data, $key); } /** * Method to run batch operations. * * @param string $model The model * * @return boolean True on success. * * @since 1.7 */ public function batch($model = null) { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Set the model $model = $this->getModel('Module', '', array()); // Preset the redirect $redirectUrl = 'index.php?option=com_modules&view=modules' . $this->getRedirectToListAppend(); $this->setRedirect(JRoute::_($redirectUrl, false)); return parent::batch($model); } /** * Function that allows child controller access to model data after the data has been saved. * * @param JModelLegacy $model The data model object. * @param array $validData The validated data. * * @return void * * @since 1.6 */ protected function postSaveHook(JModelLegacy $model, $validData = array()) { $app = JFactory::getApplication(); $task = $this->getTask(); switch ($task) { case 'save2new': $app->setUserState('com_modules.add.module.extension_id', $model->getState('module.extension_id')); break; default: $app->setUserState('com_modules.add.module.extension_id', null); break; } $app->setUserState('com_modules.add.module.params', null); } /** * Method to save a record. * * @param string $key The name of the primary key of the URL variable. * @param string $urlVar The name of the URL variable if different from the primary key * * @return boolean True if successful, false otherwise. */ public function save($key = null, $urlVar = null) { if (!JSession::checkToken()) { JFactory::getApplication()->redirect('index.php', JText::_('JINVALID_TOKEN')); } if (JFactory::getDocument()->getType() == 'json') { $model = $this->getModel(); $data = $this->input->post->get('jform', array(), 'array'); $item = $model->getItem($this->input->get('id')); $properties = $item->getProperties(); // Replace changed properties $data = array_replace_recursive($properties, $data); if (!empty($data['assigned'])) { $data['assigned'] = array_map('abs', $data['assigned']); } // Add new data to input before process by parent save() $this->input->post->set('jform', $data); // Add path of forms directory JForm::addFormPath(JPATH_ADMINISTRATOR . '/components/com_modules/models/forms'); } parent::save($key, $urlVar); } } PKb��\�{�cc.components/com_modules/controllers/modules.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Modules list controller class. * * @since 1.6 */ class ModulesControllerModules extends JControllerAdmin { /** * Method to clone an existing module. * * @return void * * @since 1.6 */ public function duplicate() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $pks = $this->input->post->get('cid', array(), 'array'); JArrayHelper::toInteger($pks); try { if (empty($pks)) { throw new Exception(JText::_('COM_MODULES_ERROR_NO_MODULES_SELECTED')); } $model = $this->getModel(); $model->duplicate($pks); $this->setMessage(JText::plural('COM_MODULES_N_MODULES_DUPLICATED', count($pks))); } catch (Exception $e) { JError::raiseWarning(500, $e->getMessage()); } $this->setRedirect('index.php?option=com_modules&view=modules'); } /** * Method to get a model object, loading it if required. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 1.6 */ public function getModel($name = 'Module', $prefix = 'ModulesModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } } PKb��\�_X��7components/com_modules/layouts/toolbar/cancelselect.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $text = JText::_('JTOOLBAR_CANCEL'); ?> <button onclick="location.href='index.php?option=com_modules'" class="btn" title="<?php echo $text; ?>"> <span class="icon-remove"></span> <?php echo $text; ?> </button> PKb��\2f�-4components/com_modules/layouts/toolbar/newmodule.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $text = JText::_('JTOOLBAR_NEW'); ?> <button onclick="location.href='index.php?option=com_modules&view=select'" class="btn btn-small btn-success" title="<?php echo $text; ?>"> <span class="icon-plus icon-white"></span> <?php echo $text; ?> </button> PKb��\M��&��"components/com_modules/modules.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_modules</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_MODULES_XML_DESCRIPTION</description> <administration> <files folder="admin"> <filename>config.xml</filename> <filename>controller.php</filename> <filename>modules.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_modules.ini</language> <language tag="en-GB">language/en-GB.com_modules.sys.ini</language> </languages> </administration> </extension> PKb��\��>�GG!components/com_modules/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="modules" label="COM_MODULES_GENERAL"> <field name="redirect_edit" type="list" class="advancedSelect" default="site" label="COM_MODULES_REDIRECT_EDIT_LABEL" description="COM_MODULES_REDIRECT_EDIT_DESC"> <option value="admin">JADMINISTRATOR</option> <option value="site">JSITE</option> </field> </fieldset> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_modules" section="component" /> </fieldset> </config> PKb��\�>�b;;!components/com_modules/access.xmlnu�[���<?xml version="1.0" encoding="utf-8" ?> <access component="com_modules"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> <action name="module.edit.frontend" title="COM_MODULES_ACTION_EDITFRONTEND" description="COM_MODULES_ACTION_EDITFRONTEND_COMPONENT_DESC" /> </section> <section name="module"> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> <action name="module.edit.frontend" title="COM_MODULES_ACTION_EDITFRONTEND" description="COM_MODULES_ACTION_EDITFRONTEND_COMPONENT_DESC" /> </section> </access>PKb��\�lq@components/com_modules/views/modules/tmpl/default_batch_body.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $clientId = $this->state->get('filter.client_id'); // Show only Module Positions of published Templates $published = 1; $positions = JHtml::_('modules.positions', $clientId, $published); $positions['']['items'][] = ModulesHelper::createOption('nochange', JText::_('COM_MODULES_BATCH_POSITION_NOCHANGE')); $positions['']['items'][] = ModulesHelper::createOption('noposition', JText::_('COM_MODULES_BATCH_POSITION_NOPOSITION')); // Add custom position to options $customGroupText = JText::_('COM_MODULES_CUSTOM_POSITION'); // Build field $attr = array( 'id' => 'batch-position-id', 'list.attr' => 'class="chzn-custom-value input-xlarge" ' . 'data-custom_group_text="' . $customGroupText . '" ' . 'data-no_results_text="' . JText::_('COM_MODULES_ADD_CUSTOM_POSITION') . '" ' . 'data-placeholder="' . JText::_('COM_MODULES_TYPE_OR_SELECT_POSITION') . '" ' ); ?> <p><?php echo JText::_('COM_MODULES_BATCH_TIP'); ?></p> <div class="row-fluid"> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.language'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.access'); ?> </div> </div> </div> <div class="row-fluid"> <?php if ($published >= 0) : ?> <div class="span6"> <div class="controls"> <label id="batch-choose-action-lbl" for="batch-choose-action"> <?php echo JText::_('COM_MODULES_BATCH_POSITION_LABEL'); ?> </label> <div id="batch-choose-action" class="control-group"> <?php echo JHtml::_('select.groupedlist', $positions, 'batch[position_id]', $attr) ?> <div id="batch-copy-move" class="control-group radio"> <?php echo JHtml::_('modules.batchOptions'); ?> </div> </div> </div> </div> <?php endif; ?> </div> PKb��\�7]'��Bcomponents/com_modules/views/modules/tmpl/default_batch_footer.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <button class="btn" type="button" onclick="document.getElementById('batch-position-id').value='';document.getElementById('batch-access').value='';document.getElementById('batch-language-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-success" type="submit" onclick="Joomla.submitbutton('module.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button>PKb��\#��*�*5components/com_modules/views/modules/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $client = $this->state->get('filter.client_id') ? 'administrator' : 'site'; $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $trashed = $this->state->get('filter.state') == -2 ? true : false; $canOrder = $user->authorise('core.edit.state', 'com_modules'); $saveOrder = $listOrder == 'ordering'; if ($saveOrder) { $saveOrderingUrl = 'index.php?option=com_modules&task=modules.saveOrderAjax&tmpl=component'; JHtml::_('sortablelist.sortable', 'moduleList', 'adminForm', strtolower($listDirn), $saveOrderingUrl); } $sortFields = $this->getSortFields(); JFactory::getDocument()->addScriptDeclaration(' Joomla.orderTable = function() { table = document.getElementById("sortTable"); direction = document.getElementById("directionTable"); order = table.options[table.selectedIndex].value; if (order != "' . $listOrder . '") { dirn = "asc"; } else { dirn = direction.options[direction.selectedIndex].value; } Joomla.tableOrdering(order, dirn, ""); }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_modules'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <label for="filter_search" class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL');?></label> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_MODULES_MODULES_FILTER_SEARCH_DESC'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> <div class="btn-group pull-right hidden-phone"> <label for="directionTable" class="element-invisible"><?php echo JText::_('JFIELD_ORDERING_DESC');?></label> <select name="directionTable" id="directionTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JFIELD_ORDERING_DESC');?></option> <option value="asc" <?php if ($listDirn == 'asc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_ASCENDING');?></option> <option value="desc" <?php if ($listDirn == 'desc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_DESCENDING');?></option> </select> </div> <div class="btn-group pull-right hidden-phone"> <label for="sortTable" class="element-invisible"><?php echo JText::_('JGLOBAL_SORT_BY');?></label> <select name="sortTable" id="sortTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JGLOBAL_SORT_BY');?></option> <?php echo JHtml::_('select.options', $sortFields, 'value', 'text', $listOrder);?> </select> </div> </div> <div class="clearfix"> </div> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('COM_MODULES_MSG_MANAGE_NO_MODULES'); ?> </div> <?php else : ?> <table class="table table-striped" id="moduleList"> <thead> <tr> <th width="1%" class="nowrap center"> <?php echo JHtml::_('grid.sort', '<span class="icon-menu-2"></span>', 'ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?> </th> <th width="1%" class="hidden-phone"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="1%" class="nowrap center" style="min-width:55px"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.published', $listDirn, $listOrder); ?> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?> </th> <th width="15%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_MODULES_HEADING_POSITION', 'position', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone" > <?php echo JHtml::_('grid.sort', 'COM_MODULES_HEADING_MODULE', 'name', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_MODULES_HEADING_PAGES', 'pages', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'language_title', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="10"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : $ordering = ($listOrder == 'ordering'); $canCreate = $user->authorise('core.create', 'com_modules'); $canEdit = $user->authorise('core.edit', 'com_modules.module.' . $item->id); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id')|| $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_modules.module.' . $item->id) && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>" sortable-group-id="<?php echo $item->position?>"> <td class="order nowrap center hidden-phone"> <?php $iconClass = ''; if (!$canChange) { $iconClass = ' inactive'; } elseif (!$saveOrder) { $iconClass = ' inactive tip-top hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED'); } ?> <span class="sortable-handler<?php echo $iconClass ?>"> <span class="icon-menu"></span> </span> <?php if ($canChange && $saveOrder) : ?> <input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering;?>" class="width-20 text-area-order" /> <?php endif; ?> </td> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td class="center"> <div class="btn-group"> <?php echo JHtml::_('jgrid.published', $item->published, $i, 'modules.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?> <?php // Create dropdown items JHtml::_('actionsdropdown.duplicate', 'cb' . $i, 'modules'); $action = $trashed ? 'untrash' : 'trash'; JHtml::_('actionsdropdown.' . $action, 'cb' . $i, 'modules'); // Render dropdown list echo JHtml::_('actionsdropdown.render', $this->escape($item->title)); ?> </div> </td> <td class="has-context"> <div class="pull-left"> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'modules.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_modules&task=module.edit&id=' . (int) $item->id); ?>"> <?php echo $this->escape($item->title); ?></a> <?php else : ?> <?php echo $this->escape($item->title); ?> <?php endif; ?> <?php if (!empty($item->note)) : ?> <div class="small"> <?php echo JText::sprintf('JGLOBAL_LIST_NOTE', $this->escape($item->note));?> </div> <?php endif; ?> </div> </td> <td class="small hidden-phone"> <?php if ($item->position) : ?> <span class="label label-info"> <?php echo $item->position; ?> </span> <?php else : ?> <span class="label"> <?php echo JText::_('JNONE'); ?> </span> <?php endif; ?> </td> <td class="small hidden-phone"> <?php echo $item->name;?> </td> <td class="small hidden-phone"> <?php echo $item->pages; ?> </td> <td class="small hidden-phone"> <?php echo $this->escape($item->access_level); ?> </td> <td class="small hidden-phone"> <?php if ($item->language == ''):?> <?php echo JText::_('JDEFAULT'); ?> <?php elseif ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="hidden-phone"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif;?> <?php // Load the batch processing form. ?> <?php if ($user->authorise('core.create', 'com_modules') && $user->authorise('core.edit', 'com_modules') && $user->authorise('core.edit.state', 'com_modules')) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_MODULES_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�?�d{{;components/com_modules/views/modules/tmpl/default_batch.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * * @deprecated 3.4 Use default_batch_body and default_batch_footer */ defined('_JEXEC') or die; $clientId = $this->state->get('filter.client_id'); // Show only Module Positions of published Templates $published = 1; $positions = JHtml::_('modules.positions', $clientId, $published); $positions['']['items'][] = ModulesHelper::createOption('nochange', JText::_('COM_MODULES_BATCH_POSITION_NOCHANGE')); $positions['']['items'][] = ModulesHelper::createOption('noposition', JText::_('COM_MODULES_BATCH_POSITION_NOPOSITION')); // Add custom position to options $customGroupText = JText::_('COM_MODULES_CUSTOM_POSITION'); // Build field $attr = array( 'id' => 'batch-position-id', 'list.attr' => 'class="chzn-custom-value input-xlarge" ' . 'data-custom_group_text="' . $customGroupText . '" ' . 'data-no_results_text="' . JText::_('COM_MODULES_ADD_CUSTOM_POSITION') . '" ' . 'data-placeholder="' . JText::_('COM_MODULES_TYPE_OR_SELECT_POSITION') . '" ' ); ?> <div class="modal hide fade" id="collapseModal"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h3><?php echo JText::_('COM_MODULES_BATCH_OPTIONS'); ?></h3> </div> <div class="modal-body modal-batch"> <p><?php echo JText::_('COM_MODULES_BATCH_TIP'); ?></p> <div class="row-fluid"> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.language'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.access'); ?> </div> </div> </div> <div class="row-fluid"> <?php if ($published >= 0) : ?> <div class="span6"> <div class="controls"> <label id="batch-choose-action-lbl" for="batch-choose-action"> <?php echo JText::_('COM_MODULES_BATCH_POSITION_LABEL'); ?> </label> <div id="batch-choose-action" class="control-group"> <?php echo JHtml::_('select.groupedlist', $positions, 'batch[position_id]', $attr) ?> <div id="batch-move-copy" class="control-group radio"> <?php echo JHtml::_('modules.batchOptions'); ?> </div> </div> </div> </div> <?php endif; ?> </div> </div> <div class="modal-footer"> <button class="btn" type="button" onclick="document.getElementById('batch-position-id').value='';document.getElementById('batch-access').value='';document.getElementById('batch-language-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-success" type="submit" onclick="Joomla.submitbutton('module.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button> </div> </div> PKb��\}����2components/com_modules/views/modules/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of modules. * * @since 1.6 */ class ModulesViewModules extends JViewLegacy { protected $items; protected $pagination; protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); // Include the component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $state = $this->get('State'); $canDo = JHelperContent::getActions('com_modules'); $user = JFactory::getUser(); // Get the toolbar object instance $bar = JToolBar::getInstance('toolbar'); JToolbarHelper::title(JText::_('COM_MODULES_MANAGER_MODULES'), 'cube module'); if ($canDo->get('core.create')) { // Instantiate a new JLayoutFile instance and render the layout $layout = new JLayoutFile('toolbar.newmodule'); $bar->appendButton('Custom', $layout->render(array()), 'new'); } if ($canDo->get('core.edit')) { JToolbarHelper::editList('module.edit'); } if ($canDo->get('core.create')) { JToolbarHelper::custom('modules.duplicate', 'copy.png', 'copy_f2.png', 'JTOOLBAR_DUPLICATE', true); } if ($canDo->get('core.edit.state')) { JToolbarHelper::publish('modules.publish', 'JTOOLBAR_PUBLISH', true); JToolbarHelper::unpublish('modules.unpublish', 'JTOOLBAR_UNPUBLISH', true); JToolbarHelper::checkin('modules.checkin'); } // Add a batch button if ($user->authorise('core.create', 'com_modules') && $user->authorise('core.edit', 'com_modules') && $user->authorise('core.edit.state', 'com_modules')) { JHtml::_('bootstrap.modal', 'collapseModal'); $title = JText::_('JTOOLBAR_BATCH'); // Instantiate a new JLayoutFile instance and render the batch button $layout = new JLayoutFile('joomla.toolbar.batch'); $dhtml = $layout->render(array('title' => $title)); $bar->appendButton('Custom', $dhtml, 'batch'); } if ($state->get('filter.state') == -2 && $canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'modules.delete', 'JTOOLBAR_EMPTY_TRASH'); } elseif ($canDo->get('core.edit.state')) { JToolbarHelper::trash('modules.trash'); } if ($canDo->get('core.admin')) { JToolbarHelper::preferences('com_modules'); } JToolbarHelper::help('JHELP_EXTENSIONS_MODULE_MANAGER'); JHtmlSidebar::setAction('index.php?option=com_modules'); JHtmlSidebar::addFilter( // @todo we need a label for this '', 'filter_client_id', JHtml::_('select.options', ModulesHelper::getClientOptions(), 'value', 'text', $this->state->get('filter.client_id')), false ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_PUBLISHED'), 'filter_state', JHtml::_('select.options', ModulesHelper::getStateOptions(), 'value', 'text', $this->state->get('filter.state')) ); JHtmlSidebar::addFilter( JText::_('COM_MODULES_OPTION_SELECT_POSITION'), 'filter_position', JHtml::_( 'select.options', ModulesHelper::getPositions($this->state->get('filter.client_id')), 'value', 'text', $this->state->get('filter.position') ) ); JHtmlSidebar::addFilter( JText::_('COM_MODULES_OPTION_SELECT_MODULE'), 'filter_module', JHtml::_('select.options', ModulesHelper::getModules($this->state->get('filter.client_id')), 'value', 'text', $this->state->get('filter.module')) ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_ACCESS'), 'filter_access', JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access')) ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_LANGUAGE'), 'filter_language', JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language')) ); $this->sidebar = JHtmlSidebar::render(); } /** * Returns an array of fields the table can be sorted by * * @return array Array containing the field name to sort by as the key and display text as value * * @since 3.0 */ protected function getSortFields() { return array( 'ordering' => JText::_('JGRID_HEADING_ORDERING'), 'a.published' => JText::_('JSTATUS'), 'a.title' => JText::_('JGLOBAL_TITLE'), 'position' => JText::_('COM_MODULES_HEADING_POSITION'), 'name' => JText::_('COM_MODULES_HEADING_MODULE'), 'pages' => JText::_('COM_MODULES_HEADING_PAGES'), 'a.access' => JText::_('JGRID_HEADING_ACCESS'), 'language_title' => JText::_('JGRID_HEADING_LANGUAGE'), 'a.id' => JText::_('JGRID_HEADING_ID') ); } } PKb��\���8;;5components/com_modules/views/preview/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JFactory::getDocument()->addScriptDeclaration( ' var form = window.top.document.adminForm var title = form.title.value; var alltext = window.top.' . $this->editor->getContent('text') . '; jQuery(document).ready(function() { document.getElementById("td-title").innerHTML = title; document.getElementById("td-text").innerHTML = alltext; });' ); ?> <table class="center" width="90%"> <tr> <td class="contentheading" colspan="2" id="td-title"></td> </tr> <tr> <td valign="top" height="90%" colspan="2" id="td-text"></td> </tr> </table> PKb��\R���2components/com_modules/views/preview/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * HTML View class for the Modules component * * @since 1.6 */ class ModulesViewPreview extends JViewLegacy { /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $editor = JFactory::getConfig()->get('editor'); $this->editor = JEditor::getInstance($editor); parent::display($tpl); } } PKb��\H-sv&&1components/com_modules/views/module/view.json.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View to edit a module. * * @package Joomla.Administrator * @subpackage com_templates * @since 3.2 */ class ModulesViewModule extends JViewLegacy { protected $item; protected $form; protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $app = JFactory::getApplication(); try { $this->item = $this->get('Item'); } catch (Exception $e) { $app->enqueueMessage($e->getMessage(), 'error'); return false; } $paramsList = $this->item->getProperties(); unset($paramsList['xml']); $paramsList = json_encode($paramsList); return $paramsList; } } PKb��\�$/<components/com_modules/views/module/tmpl/edit_assignment.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Initiasile related data. require_once JPATH_ADMINISTRATOR . '/components/com_menus/helpers/menus.php'; $menuTypes = MenusHelper::getMenuLinks(); JHtml::_('script', 'jui/treeselectmenu.jquery.min.js', false, true); $script = " jQuery(document).ready(function() { menuHide(jQuery('#jform_assignment').val()); jQuery('#jform_assignment').change(function() { menuHide(jQuery(this).val()); }) }); function menuHide(val) { if (val == 0 || val == '-') { jQuery('#menuselect-group').hide(); } else { jQuery('#menuselect-group').show(); } } "; // Add the script to the document head JFactory::getDocument()->addScriptDeclaration($script); ?> <div class="control-group"> <label id="jform_menus-lbl" class="control-label" for="jform_menus"><?php echo JText::_('COM_MODULES_MODULE_ASSIGN'); ?></label> <div id="jform_menus" class="controls"> <select name="jform[assignment]" id="jform_assignment"> <?php echo JHtml::_('select.options', ModulesHelper::getAssignmentOptions($this->item->client_id), 'value', 'text', $this->item->assignment, true); ?> </select> </div> </div> <div id="menuselect-group" class="control-group"> <label id="jform_menuselect-lbl" class="control-label" for="jform_menuselect"><?php echo JText::_('JGLOBAL_MENU_SELECTION'); ?></label> <div id="jform_menuselect" class="controls"> <?php if (!empty($menuTypes)) : ?> <?php $id = 'jform_menuselect'; ?> <div class="well well-small"> <div class="form-inline"> <span class="small"><?php echo JText::_('JSELECT'); ?>: <a id="treeCheckAll" href="javascript://"><?php echo JText::_('JALL'); ?></a>, <a id="treeUncheckAll" href="javascript://"><?php echo JText::_('JNONE'); ?></a> </span> <span class="width-20">|</span> <span class="small"><?php echo JText::_('COM_MODULES_EXPAND'); ?>: <a id="treeExpandAll" href="javascript://"><?php echo JText::_('JALL'); ?></a>, <a id="treeCollapseAll" href="javascript://"><?php echo JText::_('JNONE'); ?></a> </span> <input type="text" id="treeselectfilter" name="treeselectfilter" class="input-medium search-query pull-right" size="16" autocomplete="off" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" aria-invalid="false" tabindex="-1"> </div> <div class="clearfix"></div> <hr class="hr-condensed" /> <ul class="treeselect"> <?php foreach ($menuTypes as &$type) : ?> <?php if (count($type->links)) : ?> <?php $prevlevel = 0; ?> <li> <div class="treeselect-item pull-left"> <label class="pull-left nav-header"><?php echo $type->title; ?></label></div> <?php foreach ($type->links as $i => $link) : ?> <?php if ($prevlevel < $link->level) { echo '<ul class="treeselect-sub">'; } elseif ($prevlevel > $link->level) { echo str_repeat('</li></ul>', $prevlevel - $link->level); } else { echo '</li>'; } $selected = 0; if ($this->item->assignment == 0) { $selected = 1; } elseif ($this->item->assignment < 0) { $selected = in_array(-$link->value, $this->item->assigned); } elseif ($this->item->assignment > 0) { $selected = in_array($link->value, $this->item->assigned); } ?> <li> <div class="treeselect-item pull-left"> <input type="checkbox" class="pull-left" name="jform[assigned][]" id="<?php echo $id . $link->value; ?>" value="<?php echo (int) $link->value; ?>"<?php echo $selected ? ' checked="checked"' : ''; ?> /> <label for="<?php echo $id . $link->value; ?>" class="pull-left"><?php echo $link->text; ?> <span class="small"><?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($link->alias));?></span></label> </div> <?php if (!isset($type->links[$i + 1])) { echo str_repeat('</li></ul>', $link->level); } $prevlevel = $link->level; ?> <?php endforeach; ?> </li> <?php endif; ?> <?php endforeach; ?> </ul> <div id="noresultsfound" style="display:none;" class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <div style="display:none;" id="treeselectmenu"> <div class="pull-left nav-hover treeselect-menu"> <div class="btn-group"> <a href="#" data-toggle="dropdown" class="dropdown-toggle btn btn-micro"> <span class="caret"></span> </a> <ul class="dropdown-menu"> <li class="nav-header"><?php echo JText::_('COM_MODULES_SUBITEMS'); ?></li> <li class="divider"></li> <li class=""><a class="checkall" href="javascript://"><span class="icon-checkbox"></span> <?php echo JText::_('JSELECT'); ?></a> </li> <li><a class="uncheckall" href="javascript://"><span class="icon-checkbox-unchecked"></span> <?php echo JText::_('COM_MODULES_DESELECT'); ?></a> </li> <div class="treeselect-menu-expand"> <li class="divider"></li> <li><a class="expandall" href="javascript://"><span class="icon-plus"></span> <?php echo JText::_('COM_MODULES_EXPAND'); ?></a></li> <li><a class="collapseall" href="javascript://"><span class="icon-minus"></span> <?php echo JText::_('COM_MODULES_COLLAPSE'); ?></a></li> </div> </ul> </div> </div> </div> </div> <?php endif; ?> </div> </div> PKb��\Qx/>>9components/com_modules/views/module/tmpl/edit_options.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <?php echo JHtml::_('bootstrap.startAccordion', 'moduleOptions', array('active' => 'collapse0')); $fieldSets = $this->form->getFieldsets('params'); $i = 0; foreach ($fieldSets as $name => $fieldSet) : $label = !empty($fieldSet->label) ? $fieldSet->label : 'COM_MODULES_' . $name . '_FIELDSET_LABEL'; $class = isset($fieldSet->class) && !empty($fieldSet->class) ? $fieldSet->class : ''; echo JHtml::_('bootstrap.addSlide', 'moduleOptions', JText::_($label), 'collapse' . ($i++), $class); if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="tip">' . $this->escape(JText::_($fieldSet->description)) . '</p>'; endif; ?> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <div class="control-group"> <div class="control-label"> <?php echo $field->label; ?> </div> <div class="controls"> <?php echo $field->input; ?> </div> </div> <?php endforeach; echo JHtml::_('bootstrap.endSlide'); endforeach; echo JHtml::_('bootstrap.endAccordion'); PKb��\Te?y��;components/com_modules/views/module/tmpl/edit_positions.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require_once JPATH_ADMINISTRATOR . '/components/com_templates/helpers/templates.php'; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); $clientId = $this->item->client_id; $state = 1; $selectedPosition = $this->item->position; $positions = JHtml::_('modules.positions', $clientId, $state, $selectedPosition); // Add custom position to options $customGroupText = JText::_('COM_MODULES_CUSTOM_POSITION'); // Build field $attr = array( 'id' => 'jform_position', 'list.select' => $this->item->position, 'list.attr' => 'class="chzn-custom-value" ' . 'data-custom_group_text="' . $customGroupText . '" ' . 'data-no_results_text="' . JText::_('COM_MODULES_ADD_CUSTOM_POSITION') . '" ' . 'data-placeholder="' . JText::_('COM_MODULES_TYPE_OR_SELECT_POSITION') . '" ' ); echo JHtml::_('select.groupedlist', $positions, 'jform[position]', $attr); PKb��\~�B#B#1components/com_modules/views/module/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.combobox'); JHtml::_('formbehavior.chosen', 'select'); $hasContent = empty($this->item->module) || isset($this->item->xml->customContent); $hasContentFieldName = "content"; // For a later improvement if ($hasContent) { $hasContentFieldName = "content"; } // Get Params Fieldsets $this->fieldsets = $this->form->getFieldsets('params'); $script = " Joomla.submitbutton = function(task) { if (task == 'module.cancel' || document.formvalidator.isValid(document.getElementById('module-form'))) { "; if ($hasContent) { $script .= $this->form->getField($hasContentFieldName)->save(); } $script .= " Joomla.submitform(task, document.getElementById('module-form')); if (self != top) { if (parent.viewLevels) { var updPosition = jQuery('#jform_position').chosen().val(), updTitle = jQuery('#jform_title').val(), updMenus = jQuery('#jform_assignment').chosen().val(), updAccess = jQuery('#jform_access').chosen().val(), tmpMenu = jQuery('#menus-" . $this->item->id . "', parent.document), tmpRow = jQuery('#tr-" . $this->item->id . "', parent.document); window.parent.inMenus = new Array(); window.parent.numMenus = jQuery(':input[name=\"jform[assigned][]\"]').length; jQuery('input[name=\"jform[assigned][]\"]').each(function(){ if (updMenus > 0 ) { if (jQuery(this).is(':checked')) { window.parent.inMenus.push(parseInt(jQuery(this).val())); } } if (updMenus < 0 ) { if (!jQuery(this).is(':checked')) { window.parent.inMenus.push(parseInt(jQuery(this).val())); } } }); if (updMenus == 0) { tmpMenu.html('<span class=\"label label-info\">" . JText::_("JALL") . "</span>'); if (tmpRow.hasClass('no')) { tmpRow.removeClass('no '); } } if (updMenus == '-') { tmpMenu.html('<span class=\"label label-important\">" . JText::_("JNO") . "</span>'); if (!tmpRow.hasClass('no') || tmpRow.hasClass('')) { tmpRow.addClass('no '); } } if (updMenus > 0) { if (window.parent.inMenus.indexOf(parent.menuId) >= 0) { if (window.parent.numMenus == window.parent.inMenus.length) { tmpMenu.html('<span class=\"label label-info\">" . JText::_("JALL") . "</span>'); if (tmpRow.hasClass('no') || tmpRow.hasClass('')) { tmpRow.removeClass('no'); } } else { tmpMenu.html('<span class=\"label label-success\">" . JText::_("JYES") . "</span>'); if (tmpRow.hasClass('no')) { tmpRow.removeClass('no'); } } } if (window.parent.inMenus.indexOf(parent.menuId) < 0) { tmpMenu.html('<span class=\"label label-important\">" . JText::_("JNO") . "</span>'); if (!tmpRow.hasClass('no')) { tmpRow.addClass('no'); } } } if (updMenus < 0) { if (window.parent.inMenus.indexOf(parent.menuId) >= 0) { if (window.parent.numMenus == window.parent.inMenus.length) { tmpMenu.html('<span class=\"label label-info\">" . JText::_("JALL") . "</span>'); if (tmpRow.hasClass('no')) { tmpRow.removeClass('no'); } } else { tmpMenu.html('<span class=\"label label-success\">" . JText::_("JYES") . "</span>'); if (tmpRow.hasClass('no')) { tmpRow.removeClass('no'); } } } if (window.parent.inMenus.indexOf(parent.menuId) < 0) { tmpMenu.html('<span class=\"label label-important\">" . JText::_("JNO") . "</span>'); if (!tmpRow.hasClass('no') || tmpRow.hasClass('')) { tmpRow.addClass('no'); } } } jQuery('#title-" . $this->item->id . "', parent.document).text(updTitle); jQuery('#position-" . $this->item->id . "', parent.document).text(updPosition); jQuery('#access-" . $this->item->id . "', parent.document).html(parent.viewLevels[updAccess]); } window.parent.jQuery('#module" . $this->item->id . "Modal').modal('hide'); } } };"; JFactory::getDocument()->addScriptDeclaration($script); ?> <form action="<?php echo JRoute::_('index.php?option=com_modules&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="module-form" class="form-validate"> <?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?> <div class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'general')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'general', JText::_('COM_MODULES_MODULE', true)); ?> <div class="row-fluid"> <div class="span9"> <?php if ($this->item->xml) : ?> <?php if ($this->item->xml->description) : ?> <h3> <?php if ($this->item->xml) { echo ($text = (string) $this->item->xml->name) ? JText::_($text) : $this->item->module; } else { echo JText::_('COM_MODULES_ERR_XML'); } ?> </h3> <div class="info-labels"> <span class="label hasTooltip" title="<?php echo JHtml::tooltipText('COM_MODULES_FIELD_CLIENT_ID_LABEL'); ?>"> <?php echo $this->item->client_id == 0 ? JText::_('JSITE') : JText::_('JADMINISTRATOR'); ?> </span> </div> <div> <?php $short_description = JText::_($this->item->xml->description); $this->fieldset = 'description'; $long_description = JLayoutHelper::render('joomla.edit.fieldset', $this); if(!$long_description) { $truncated = JHtmlString::truncate($short_description, 550, true, false); if(strlen($truncated) > 500) { $long_description = $short_description; $short_description = JHtmlString::truncate($truncated, 250); if($short_description == $long_description) { $long_description = ''; } } } ?> <p><?php echo $short_description; ?></p> <?php if ($long_description) : ?> <p class="readmore"> <a href="#" onclick="jQuery('.nav-tabs a[href=#description]').tab('show');"> <?php echo JText::_('JGLOBAL_SHOW_FULL_DESCRIPTION'); ?> </a> </p> <?php endif; ?> </div> <?php endif; ?> <?php else : ?> <div class="alert alert-error"><?php echo JText::_('COM_MODULES_ERR_XML'); ?></div> <?php endif; ?> <?php if ($hasContent) { echo $this->form->getInput($hasContentFieldName); } $this->fieldset = 'basic'; $html = JLayoutHelper::render('joomla.edit.fieldset', $this); echo $html ? '<hr />' . $html : ''; ?> </div> <div class="span3"> <fieldset class="form-vertical"> <?php echo $this->form->getControlGroup('showtitle'); ?> <div class="control-group"> <div class="control-label"> <?php echo $this->form->getLabel('position'); ?> </div> <div class="controls"> <?php echo $this->loadTemplate('positions'); ?> </div> </div> </fieldset> <?php // Set main fields. $this->fields = array( 'published', 'publish_up', 'publish_down', 'access', 'ordering', 'language', 'note' ); ?> <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php if (isset($long_description) && $long_description != '') : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'description', JText::_('JGLOBAL_FIELDSET_DESCRIPTION', true)); ?> <?php echo $long_description; ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php if ($this->item->client_id == 0) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'assignment', JText::_('COM_MODULES_MENU_ASSIGNMENT', true)); ?> <?php echo $this->loadTemplate('assignment'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php if ($this->canDo->get('core.admin')) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'permissions', JText::_('COM_MODULES_FIELDSET_RULES', true)); ?> <?php echo $this->form->getInput('rules'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php $this->fieldsets = array(); $this->ignore_fieldsets = array('basic', 'description'); echo JLayoutHelper::render('joomla.edit.params', $this); ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> <?php echo $this->form->getInput('module'); ?> <?php echo $this->form->getInput('client_id'); ?> </div> </form> PKb��\p�J��2components/com_modules/views/module/tmpl/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // This code is needed for proper check out in case of modal close JFactory::getDocument()->addScriptDeclaration(' window.parent.jQuery(".modal").on("hidden", function () { if (typeof window.parent.jQuery("#module' . $this->item->id . 'Modal iframe").contents().find("#closeBtn") !== "undefined") { window.parent.jQuery("#module' . $this->item->id . 'Modal iframe").contents().find("#closeBtn").click(); } }); '); ?> <button id="saveBtn" type="button" class="hidden" onclick="Joomla.submitbutton('module.save');"></button> <button id="closeBtn" type="button" class="hidden" onclick="Joomla.submitbutton('module.cancel');"></button> <?php $this->setLayout('edit'); echo $this->loadTemplate(); PKb��\��G�CC1components/com_modules/views/module/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View to edit a module. * * @since 1.6 */ class ModulesViewModule extends JViewLegacy { protected $form; protected $item; protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); $this->canDo = JHelperContent::getActions('com_modules', 'module', $this->item->id); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JFactory::getApplication()->input->set('hidemainmenu', true); $user = JFactory::getUser(); $isNew = ($this->item->id == 0); $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id')); $canDo = $this->canDo; JToolbarHelper::title(JText::sprintf('COM_MODULES_MANAGER_MODULE', JText::_($this->item->module)), 'cube module'); // For new records, check the create permission. if ($isNew && $canDo->get('core.create')) { JToolbarHelper::apply('module.apply'); JToolbarHelper::save('module.save'); JToolbarHelper::save2new('module.save2new'); JToolbarHelper::cancel('module.cancel'); } else { // Can't save the record if it's checked out. if (!$checkedOut) { // Since it's an existing record, check the edit permission. if ($canDo->get('core.edit')) { JToolbarHelper::apply('module.apply'); JToolbarHelper::save('module.save'); // We can save this record, but check the create permission to see if we can return to make a new one. if ($canDo->get('core.create')) { JToolbarHelper::save2new('module.save2new'); } } } // If checked out, we can still save if ($canDo->get('core.create')) { JToolbarHelper::save2copy('module.save2copy'); } JToolbarHelper::cancel('module.cancel', 'JTOOLBAR_CLOSE'); } // Get the help information for the menu item. $lang = JFactory::getLanguage(); $help = $this->get('Help'); if ($lang->hasKey($help->url)) { $debug = $lang->setDebug(false); $url = JText::_($help->url); $lang->setDebug($debug); } else { $url = null; } JToolbarHelper::help($help->key, false, $url); } } PKb��\��e==5components/com_modules/views/positions/tmpl/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('formbehavior.chosen', 'select'); $function = JFactory::getApplication()->input->getCmd('function', 'jSelectPosition'); $lang = JFactory::getLanguage(); $ordering = $this->escape($this->state->get('list.ordering')); $direction = $this->escape($this->state->get('list.direction')); $clientId = $this->state->get('filter.client_id'); $state = $this->state->get('filter.state'); $template = $this->state->get('filter.template'); $type = $this->state->get('filter.type'); ?> <form action="<?php echo JRoute::_('index.php?option=com_modules&view=positions&layout=modal&tmpl=component&function=' . $function . '&client_id=' . $clientId);?>" method="post" name="adminForm" id="adminForm"> <fieldset class="filter clearfix"> <div class="left"> <label for="filter_search"> <?php echo JText::_('JSearch_Filter_Label'); ?> </label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" size="30" title="<?php echo JText::_('COM_MODULES_FILTER_SEARCH_DESC'); ?>" /> <button type="submit"> <?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button> <button type="button" onclick="document.getElementById('filter_search').value='';this.form.submit();"> <?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button> </div> <div class="right"> <select name="filter_state" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', JHtml::_('modules.templateStates'), 'value', 'text', $state, true);?> </select> <select name="filter_type" onchange="this.form.submit()"> <option value=""><?php echo JText::_('COM_MODULES_OPTION_SELECT_TYPE');?></option> <?php echo JHtml::_('select.options', JHtml::_('modules.types'), 'value', 'text', $type, true);?> </select> <select name="filter_template" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_TEMPLATE');?></option> <?php echo JHtml::_('select.options', JHtml::_('modules.templates', $clientId), 'value', 'text', $template, true);?> </select> </div> </fieldset> <table class="adminlist"> <thead> <tr> <th class="title" width="20%"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'value', $direction, $ordering); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_MODULES_HEADING_TEMPLATES', 'templates', $direction, $ordering); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="15"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php $i = 1; foreach ($this->items as $value => $templates) : ?> <tr class="row<?php echo $i = 1 - $i;?>"> <td> <a class="pointer" onclick="if (window.parent) window.parent.<?php echo $function;?>('<?php echo $value; ?>');"><?php echo $this->escape($value); ?></a> </td> <td> <?php if (!empty($templates)):?> <a class="pointer" onclick="if (window.parent) window.parent.<?php echo $function;?>('<?php echo $value; ?>');"> <ul> <?php foreach ($templates as $template => $label):?> <li><?php echo $lang->hasKey($label) ? JText::sprintf('COM_MODULES_MODULE_TEMPLATE_POSITION', JText::_($template), JText::_($label)) : JText::_($template);?></li> <?php endforeach;?> </ul> </a> <?php endif;?> </td> </tr> <?php endforeach; ?> </tbody> </table> <div> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $ordering; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $direction; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\����4components/com_modules/views/positions/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View Module positions class. * * @since 1.6 */ class ModulesViewPositions extends JViewLegacy { protected $items; protected $pagination; protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } parent::display($tpl); } } PKb��\C��??4components/com_modules/views/select/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.popover'); $document = JFactory::getDocument(); ?> <h2><?php echo JText::_('COM_MODULES_TYPE_CHOOSE')?></h2> <ul id="new-modules-list" class="list list-striped"> <?php foreach ($this->items as &$item) : ?> <?php // Prepare variables for the link. ?> <?php $link = 'index.php?option=com_modules&task=module.add&eid=' . $item->extension_id; ?> <?php $name = $this->escape($item->name); ?> <?php $desc = JHtml::_('string.truncate', ($this->escape(strip_tags($item->desc))), 200); ?> <?php $short_desc = JHtml::_('string.truncate', ($this->escape(strip_tags($item->desc))), 90); ?> <?php if ($document->direction != "rtl") : ?> <li> <a href="<?php echo JRoute::_($link);?>"> <strong><?php echo $name; ?></strong> </a> <small class="hasPopover" data-placement="right" title="<?php echo $name; ?>" data-content="<?php echo $desc; ?>"><?php echo $short_desc; ?></small> </li> <?php else : ?> <li> <small rel="popover" data-placement="left" title="<?php echo $name; ?>" data-content="<?php echo $desc; ?>"><?php echo $short_desc; ?></small> <a href="<?php echo JRoute::_($link); ?>"> <strong><?php echo $name; ?></strong> </a> </li> <?php endif; ?> <?php endforeach; ?> </ul> <div class="clr"></div> PKb��\�����1components/com_modules/views/select/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * HTML View class for the Modules component * * @since 1.6 */ class ModulesViewSelect extends JViewLegacy { protected $state; protected $items; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $state = $this->get('State'); $items = $this->get('Items'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->state = &$state; $this->items = &$items; $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { // Add page title JToolbarHelper::title(JText::_('COM_MODULES_MANAGER_MODULES'), 'cube module'); // Get the toolbar object instance $bar = JToolBar::getInstance('toolbar'); // Instantiate a new JLayoutFile instance and render the layout $layout = new JLayoutFile('toolbar.cancelselect'); $bar->appendButton('Custom', $layout->render(array()), 'new'); } } PKb��\^$aʕ�&components/com_modules/helpers/xml.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JLog::add('ModulesHelperXML is deprecated. Do not use.', JLog::WARNING, 'deprecated'); /** * Helper for parse XML module files * * @since 1.5 * @deprecated 3.2 Do not use. */ class ModulesHelperXML { /** * Parse the module XML file * * @param array &$rows XML rows * * @return void * * @since 1.5 * * @deprecated 3.2 Do not use. */ public function parseXMLModuleFile(&$rows) { foreach ($rows as $i => $row) { if ($row->module == '') { $rows[$i]->name = 'custom'; $rows[$i]->module = 'custom'; $rows[$i]->descrip = 'Custom created module, using Module Manager New function'; } else { $data = JInstaller::parseXMLInstallFile($row->path . '/' . $row->file); if ($data['type'] == 'module') { $rows[$i]->name = $data['name']; $rows[$i]->descrip = $data['description']; } } } } } PKb��\���CC/components/com_modules/helpers/html/modules.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * JHtml module helper class. * * @since 1.6 */ abstract class JHtmlModules { /** * Builds an array of template options * * @param integer $clientId The client id. * @param string $state The state of the template. * * @return array */ public static function templates($clientId = 0, $state = '') { $options = array(); $templates = ModulesHelper::getTemplates($clientId, $state); foreach ($templates as $template) { $options[] = JHtml::_('select.option', $template->element, $template->name); } return $options; } /** * Builds an array of template type options * * @return array */ public static function types() { $options = array(); $options[] = JHtml::_('select.option', 'user', 'COM_MODULES_OPTION_POSITION_USER_DEFINED'); $options[] = JHtml::_('select.option', 'template', 'COM_MODULES_OPTION_POSITION_TEMPLATE_DEFINED'); return $options; } /** * Builds an array of template state options * * @return array */ public static function templateStates() { $options = array(); $options[] = JHtml::_('select.option', '1', 'JENABLED'); $options[] = JHtml::_('select.option', '0', 'JDISABLED'); return $options; } /** * Returns a published state on a grid * * @param integer $value The state value. * @param integer $i The row index * @param boolean $enabled An optional setting for access control on the action. * @param string $checkbox An optional prefix for checkboxes. * * @return string The Html code * * @see JHtmlJGrid::state * @since 1.7.1 */ public static function state($value, $i, $enabled = true, $checkbox = 'cb') { $states = array( 1 => array( 'unpublish', 'COM_MODULES_EXTENSION_PUBLISHED_ENABLED', 'COM_MODULES_HTML_UNPUBLISH_ENABLED', 'COM_MODULES_EXTENSION_PUBLISHED_ENABLED', true, 'publish', 'publish', ), 0 => array( 'publish', 'COM_MODULES_EXTENSION_UNPUBLISHED_ENABLED', 'COM_MODULES_HTML_PUBLISH_ENABLED', 'COM_MODULES_EXTENSION_UNPUBLISHED_ENABLED', true, 'unpublish', 'unpublish', ), -1 => array( 'unpublish', 'COM_MODULES_EXTENSION_PUBLISHED_DISABLED', 'COM_MODULES_HTML_UNPUBLISH_DISABLED', 'COM_MODULES_EXTENSION_PUBLISHED_DISABLED', true, 'warning', 'warning', ), -2 => array( 'publish', 'COM_MODULES_EXTENSION_UNPUBLISHED_DISABLED', 'COM_MODULES_HTML_PUBLISH_DISABLED', 'COM_MODULES_EXTENSION_UNPUBLISHED_DISABLED', true, 'unpublish', 'unpublish', ), ); return JHtml::_('jgrid.state', $states, $value, $i, 'modules.', $enabled, true, $checkbox); } /** * Display a batch widget for the module position selector. * * @param integer $clientId The client ID. * @param integer $state The state of the module (enabled, unenabled, trashed). * @param string $selectedPosition The currently selected position for the module. * * @return string The necessary positions for the widget. * * @since 2.5 */ public static function positions($clientId, $state = 1, $selectedPosition = '') { require_once JPATH_ADMINISTRATOR . '/components/com_templates/helpers/templates.php'; $templates = array_keys(ModulesHelper::getTemplates($clientId, $state)); $templateGroups = array(); // Add an empty value to be able to deselect a module position $option = ModulesHelper::createOption(); $templateGroups[''] = ModulesHelper::createOptionGroup('', array($option)); // Add positions from templates $isTemplatePosition = false; foreach ($templates as $template) { $options = array(); $positions = TemplatesHelper::getPositions($clientId, $template); if (is_array($positions)) { foreach ($positions as $position) { $text = ModulesHelper::getTranslatedModulePosition($clientId, $template, $position) . ' [' . $position . ']'; $options[] = ModulesHelper::createOption($position, $text); if (!$isTemplatePosition && $selectedPosition === $position) { $isTemplatePosition = true; } } $options = JArrayHelper::sortObjects($options, 'text'); } $templateGroups[$template] = ModulesHelper::createOptionGroup(ucfirst($template), $options); } // Add custom position to options $customGroupText = JText::_('COM_MODULES_CUSTOM_POSITION'); $editPositions = true; $customPositions = ModulesHelper::getPositions($clientId, $editPositions); $templateGroups[$customGroupText] = ModulesHelper::createOptionGroup($customGroupText, $customPositions); return $templateGroups; } /** * Get a select with the batch action options * * @return void */ public static function batchOptions() { // Create the copy/move options. $options = array( JHtml::_('select.option', 'c', JText::_('JLIB_HTML_BATCH_COPY')), JHtml::_('select.option', 'm', JText::_('JLIB_HTML_BATCH_MOVE')) ); echo JHtml::_('select.radiolist', $options, 'batch[move_copy]', '', 'value', 'text', 'm'); } /** * Method to get the field options. * * @param integer $clientId The client ID * * @return array The field option objects. * * @since 2.5 */ public static function positionList($clientId = 0) { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('DISTINCT(position) as value') ->select('position as text') ->from($db->quoteName('#__modules')) ->where($db->quoteName('client_id') . ' = ' . (int) $clientId) ->order('position'); // Get the options. $db->setQuery($query); try { $options = $db->loadObjectList(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); } // Pop the first item off the array if it's blank if (count($options)) { if (strlen($options[0]->text) < 1) { array_shift($options); } } return $options; } } PKb��\�;'Z�!�!*components/com_modules/helpers/modules.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Modules component helper. * * @since 1.6 */ abstract class ModulesHelper { /** * Configure the Linkbar. * * @param string $vName The name of the active view. * * @return void */ public static function addSubmenu($vName) { // Not used in this component. } /** * Gets a list of the actions that can be performed. * * @param integer $moduleId The module ID. * * @return JObject * * @deprecated 3.2 Use JHelperContent::getActions() instead */ public static function getActions($moduleId = 0) { // Log usage of deprecated function JLog::add(__METHOD__ . '() is deprecated, use JHelperContent::getActions() with new arguments order instead.', JLog::WARNING, 'deprecated'); // Get list of actions if (empty($moduleId)) { $result = JHelperContent::getActions('com_modules'); } else { $result = JHelperContent::getActions('com_modules', 'module', $moduleId); } return $result; } /** * Get a list of filter options for the state of a module. * * @return array An array of JHtmlOption elements. */ public static function getStateOptions() { // Build the filter options. $options = array(); $options[] = JHtml::_('select.option', '1', JText::_('JPUBLISHED')); $options[] = JHtml::_('select.option', '0', JText::_('JUNPUBLISHED')); $options[] = JHtml::_('select.option', '-2', JText::_('JTRASHED')); $options[] = JHtml::_('select.option', '*', JText::_('JALL')); return $options; } /** * Get a list of filter options for the application clients. * * @return array An array of JHtmlOption elements. */ public static function getClientOptions() { // Build the filter options. $options = array(); $options[] = JHtml::_('select.option', '0', JText::_('JSITE')); $options[] = JHtml::_('select.option', '1', JText::_('JADMINISTRATOR')); return $options; } /** * Get a list of modules positions * * @param integer $clientId Client ID * @param boolean $editPositions Allow to edit the positions * * @return array A list of positions */ public static function getPositions($clientId, $editPositions = false) { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('DISTINCT(position)') ->from('#__modules') ->where($db->quoteName('client_id') . ' = ' . (int) $clientId) ->order('position'); $db->setQuery($query); try { $positions = $db->loadColumn(); $positions = is_array($positions) ? $positions : array(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); return; } // Build the list $options = array(); foreach ($positions as $position) { if (!$position && !$editPositions) { $options[] = JHtml::_('select.option', 'none', ':: ' . JText::_('JNONE') . ' ::'); } else { $options[] = JHtml::_('select.option', $position, $position); } } return $options; } /** * Return a list of templates * * @param integer $clientId Client ID * @param string $state State * @param string $template Template name * * @return array List of templates */ public static function getTemplates($clientId = 0, $state = '', $template = '') { $db = JFactory::getDbo(); // Get the database object and a new query object. $query = $db->getQuery(true); // Build the query. $query->select('element, name, enabled') ->from('#__extensions') ->where('client_id = ' . (int) $clientId) ->where('type = ' . $db->quote('template')); if ($state != '') { $query->where('enabled = ' . $db->quote($state)); } if ($template != '') { $query->where('element = ' . $db->quote($template)); } // Set the query and load the templates. $db->setQuery($query); $templates = $db->loadObjectList('element'); return $templates; } /** * Get a list of the unique modules installed in the client application. * * @param int $clientId The client id. * * @return array Array of unique modules */ public static function getModules($clientId) { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('element AS value, name AS text') ->from('#__extensions as e') ->where('e.client_id = ' . (int) $clientId) ->where('type = ' . $db->quote('module')) ->join('LEFT', '#__modules as m ON m.module=e.element AND m.client_id=e.client_id') ->where('m.module IS NOT NULL') ->group('element,name'); $db->setQuery($query); $modules = $db->loadObjectList(); $lang = JFactory::getLanguage(); foreach ($modules as $i => $module) { $extension = $module->value; $path = $clientId ? JPATH_ADMINISTRATOR : JPATH_SITE; $source = $path . "/modules/$extension"; $lang->load("$extension.sys", $path, null, false, true) || $lang->load("$extension.sys", $source, null, false, true); $modules[$i]->text = JText::_($module->text); } JArrayHelper::sortObjects($modules, 'text', 1, true, true); return $modules; } /** * Get a list of the assignment options for modules to menus. * * @param int $clientId The client id. * * @return array */ public static function getAssignmentOptions($clientId) { $options = array(); $options[] = JHtml::_('select.option', '0', 'COM_MODULES_OPTION_MENU_ALL'); $options[] = JHtml::_('select.option', '-', 'COM_MODULES_OPTION_MENU_NONE'); if ($clientId == 0) { $options[] = JHtml::_('select.option', '1', 'COM_MODULES_OPTION_MENU_INCLUDE'); $options[] = JHtml::_('select.option', '-1', 'COM_MODULES_OPTION_MENU_EXCLUDE'); } return $options; } /** * Return a translated module position name * * @param integer $clientId Application client id 0: site | 1: admin * @param string $template Template name * @param string $position Position name * * @return string Return a translated position name * * @since 3.0 */ public static function getTranslatedModulePosition($clientId, $template, $position) { // Template translation $lang = JFactory::getLanguage(); $path = $clientId ? JPATH_ADMINISTRATOR : JPATH_SITE; $lang->load('tpl_' . $template . '.sys', $path, null, false, false) || $lang->load('tpl_' . $template . '.sys', $path . '/templates/' . $template, null, false, false) || $lang->load('tpl_' . $template . '.sys', $path, $lang->getDefault(), false, false) || $lang->load('tpl_' . $template . '.sys', $path . '/templates/' . $template, $lang->getDefault(), false, false); $langKey = strtoupper('TPL_' . $template . '_POSITION_' . $position); $text = JText::_($langKey); // Avoid untranslated strings if (!self::isTranslatedText($langKey, $text)) { // Modules component translation $langKey = strtoupper('COM_MODULES_POSITION_' . $position); $text = JText::_($langKey); // Avoid untranslated strings if (!self::isTranslatedText($langKey, $text)) { // Try to humanize the position name $text = ucfirst(preg_replace('/^' . $template . '\-/', '', $position)); $text = ucwords(str_replace(array('-', '_'), ' ', $text)); } } return $text; } /** * Check if the string was translated * * @param string $langKey Language file text key * @param string $text The "translated" text to be checked * * @return boolean Return true for translated text * * @since 3.0 */ public static function isTranslatedText($langKey, $text) { return $text !== $langKey; } /** * Create and return a new Option * * @param string $value The option value [optional] * @param string $text The option text [optional] * * @return object The option as an object (stdClass instance) * * @since 3.0 */ public static function createOption($value = '', $text = '') { if (empty($text)) { $text = $value; } $option = new stdClass; $option->value = $value; $option->text = $text; return $option; } /** * Create and return a new Option Group * * @param string $label Value and label for group [optional] * @param array $options Array of options to insert into group [optional] * * @return array Return the new group as an array * * @since 3.0 */ public static function createOptionGroup($label = '', $options = array()) { $group = array(); $group['value'] = $label; $group['text'] = $label; $group['items'] = $options; return $group; } } PKb��\����ZZ"components/com_modules/modules.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.tabstate'); if (!JFactory::getUser()->authorise('core.manage', 'com_modules')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $controller = JControllerLegacy::getInstance('Modules'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\p'���0components/com_modules/models/forms/advanced.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fields name="params"> <fieldset name="advanced"> <field name="module_tag" type="moduletag" label="COM_MODULES_FIELD_MODULE_TAG_LABEL" description="COM_MODULES_FIELD_MODULE_TAG_DESC" default="div" /> <field name="bootstrap_size" type="integer" first="0" last="12" step="1" label="COM_MODULES_FIELD_BOOTSTRAP_SIZE_LABEL" description="COM_MODULES_FIELD_BOOTSTRAP_SIZE_DESC" /> <field name="header_tag" type="headertag" default="h3" label="COM_MODULES_FIELD_HEADER_TAG_LABEL" description="COM_MODULES_FIELD_HEADER_TAG_DESC" /> <field name="header_class" type="text" label="COM_MODULES_FIELD_HEADER_CLASS_LABEL" description="COM_MODULES_FIELD_HEADER_CLASS_DESC" /> <field name="style" type="chromestyle" label="COM_MODULES_FIELD_MODULE_STYLE_LABEL" description="COM_MODULES_FIELD_MODULE_STYLE_DESC" /> </fieldset> </fields> </form> PKb��\�i**.components/com_modules/models/forms/module.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field name="id" type="text" label="JGLOBAL_FIELD_ID_LABEL" description="JGLOBAL_FIELD_ID_DESC" default="0" readonly="true" /> <field name="title" type="text" description="COM_MODULES_FIELD_TITLE_DESC" label="JGLOBAL_TITLE" class="input-xxlarge input-large-text" size="40" maxlength="100" required="true" /> <field name="note" type="text" description="COM_MODULES_FIELD_NOTE_DESC" label="COM_MODULES_FIELD_NOTE_LABEL" maxlength="255" size="40" class="span12" /> <field name="module" type="hidden" description="COM_MODULES_FIELD_MODULE_DESC" label="COM_MODULES_FIELD_MODULE_LABEL" readonly="readonly" size="20" /> <field name="showtitle" type="radio" class="btn-group btn-group-yesno" default="1" description="COM_MODULES_FIELD_SHOWTITLE_DESC" label="COM_MODULES_FIELD_SHOWTITLE_LABEL" size="1" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="published" type="list" class="chzn-color-state" default="1" description="COM_MODULES_FIELD_PUBLISHED_DESC" label="JSTATUS" size="1" > <option value="1">JPUBLISHED</option> <option value="0">JUNPUBLISHED</option> <option value="-2">JTRASHED</option> </field> <field name="publish_up" type="calendar" description="COM_MODULES_FIELD_PUBLISH_UP_DESC" filter="user_utc" format="%Y-%m-%d %H:%M:%S" label="COM_MODULES_FIELD_PUBLISH_UP_LABEL" size="22" /> <field name="publish_down" type="calendar" description="COM_MODULES_FIELD_PUBLISH_DOWN_DESC" filter="user_utc" format="%Y-%m-%d %H:%M:%S" label="COM_MODULES_FIELD_PUBLISH_DOWN_LABEL" size="22" /> <field name="client_id" type="hidden" description="COM_MODULES_FIELD_CLIENT_ID_DESC" label="COM_MODULES_FIELD_CLIENT_ID_LABEL" readonly="true" size="1" /> <field name="position" type="moduleposition" default="" description="COM_MODULES_FIELD_POSITION_DESC" label="COM_MODULES_FIELD_POSITION_LABEL" maxlength="50" /> <field name="access" type="accesslevel" description="JFIELD_ACCESS_DESC" label="JFIELD_ACCESS_LABEL" size="1" /> <field name="ordering" type="moduleorder" description="JFIELD_ORDERING_DESC" label="JFIELD_ORDERING_LABEL" /> <field name="content" type="editor" buttons="true" description="COM_MODULES_FIELD_CONTENT_DESC" filter="JComponentHelper::filterText" label="COM_MODULES_FIELD_CONTENT_LABEL" hide="readmore,pagebreak" /> <field name="language" type="contentlanguage" description="JFIELD_MODULE_LANGUAGE_DESC" label="JFIELD_LANGUAGE_LABEL" > <option value="*">JALL</option> </field> <field name="assignment" type="hidden" /> <field name="assigned" type="hidden" /> <field name="asset_id" type="hidden" filter="unset" /> <field name="rules" type="rules" label="JFIELD_RULES_LABEL" translate_label="false" filter="rules" component="com_modules" section="module" validate="rules" /> </fieldset> </form> PKb��\7M�ii(components/com_modules/models/module.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * Module model. * * @since 1.6 */ class ModulesModelModule extends JModelAdmin { /** * The type alias for this content type. * * @var string * @since 3.4 */ public $typeAlias = 'com_modules.module'; /** * @var string The prefix to use with controller messages. * @since 1.6 */ protected $text_prefix = 'COM_MODULES'; /** * @var string The help screen key for the module. * @since 1.6 */ protected $helpKey = 'JHELP_EXTENSIONS_MODULE_MANAGER_EDIT'; /** * @var string The help screen base URL for the module. * @since 1.6 */ protected $helpURL; /** * Batch copy/move command. If set to false, * the batch copy/move command is not supported * * @var string */ protected $batch_copymove = 'position_id'; /** * Allowed batch commands * * @var array */ protected $batch_commands = array( 'assetgroup_id' => 'batchAccess', 'language_id' => 'batchLanguage', ); /** * Constructor. * * @param array $config An optional associative array of configuration settings. */ public function __construct($config = array()) { $config = array_merge( array( 'event_after_delete' => 'onExtensionAfterDelete', 'event_after_save' => 'onExtensionAfterSave', 'event_before_delete' => 'onExtensionBeforeDelete', 'event_before_save' => 'onExtensionBeforeSave', 'events_map' => array( 'save' => 'extension', 'delete' => 'extension' ) ), $config ); parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @return void * * @since 1.6 */ protected function populateState() { $app = JFactory::getApplication('administrator'); // Load the User state. $pk = $app->input->getInt('id'); if (!$pk) { if ($extensionId = (int) $app->getUserState('com_modules.add.module.extension_id')) { $this->setState('extension.id', $extensionId); } } $this->setState('module.id', $pk); // Load the parameters. $params = JComponentHelper::getParams('com_modules'); $this->setState('params', $params); } /** * Batch copy modules to a new position or current. * * @param integer $value The new value matching a module position. * @param array $pks An array of row IDs. * @param array $contexts An array of item contexts. * * @return boolean True if successful, false otherwise and internal error is set. * * @since 2.5 */ protected function batchCopy($value, $pks, $contexts) { // Set the variables $user = JFactory::getUser(); $table = $this->getTable(); $newIds = array(); foreach ($pks as $pk) { if ($user->authorise('core.create', 'com_modules')) { $table->reset(); $table->load($pk); // Set the new position if ($value == 'noposition') { $position = ''; } elseif ($value == 'nochange') { $position = $table->position; } else { $position = $value; } $table->position = $position; // Alter the title if necessary $data = $this->generateNewTitle(0, $table->title, $table->position); $table->title = $data['0']; // Reset the ID because we are making a copy $table->id = 0; // Unpublish the new module $table->published = 0; if (!$table->store()) { $this->setError($table->getError()); return false; } // Get the new item ID $newId = $table->get('id'); // Add the new ID to the array $newIds[$pk] = $newId; // Now we need to handle the module assignments $db = $this->getDbo(); $query = $db->getQuery(true) ->select($db->quoteName('menuid')) ->from($db->quoteName('#__modules_menu')) ->where($db->quoteName('moduleid') . ' = ' . $pk); $db->setQuery($query); $menus = $db->loadColumn(); // Insert the new records into the table foreach ($menus as $menu) { $query->clear() ->insert($db->quoteName('#__modules_menu')) ->columns(array($db->quoteName('moduleid'), $db->quoteName('menuid'))) ->values($newId . ', ' . $menu); $db->setQuery($query); $db->execute(); } } else { $this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_CREATE')); return false; } } // Clean the cache $this->cleanCache(); return $newIds; } /** * Batch move modules to a new position or current. * * @param integer $value The new value matching a module position. * @param array $pks An array of row IDs. * @param array $contexts An array of item contexts. * * @return boolean True if successful, false otherwise and internal error is set. * * @since 2.5 */ protected function batchMove($value, $pks, $contexts) { // Set the variables $user = JFactory::getUser(); $table = $this->getTable(); foreach ($pks as $pk) { if ($user->authorise('core.edit', 'com_modules')) { $table->reset(); $table->load($pk); // Set the new position if ($value == 'noposition') { $position = ''; } elseif ($value == 'nochange') { $position = $table->position; } else { $position = $value; } $table->position = $position; // Alter the title if necessary $data = $this->generateNewTitle(0, $table->title, $table->position); $table->title = $data['0']; // Unpublish the moved module $table->published = 0; if (!$table->store()) { $this->setError($table->getError()); return false; } } else { $this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT')); return false; } } // Clean the cache $this->cleanCache(); return true; } /** * Method to test whether a record can have its state edited. * * @param object $record A record object. * * @return boolean True if allowed to change the state of the record. Defaults to the permission set in the component. * * @since 3.2 */ protected function canEditState($record) { $user = JFactory::getUser(); // Check for existing module. if (!empty($record->id)) { return $user->authorise('core.edit.state', 'com_modules.module.' . (int) $record->id); } // Default to component settings if module not known. else { return parent::canEditState('com_modules'); } } /** * Method to delete rows. * * @param array &$pks An array of item ids. * * @return boolean Returns true on success, false on failure. * * @since 1.6 * @throws Exception */ public function delete(&$pks) { $dispatcher = JEventDispatcher::getInstance(); $pks = (array) $pks; $user = JFactory::getUser(); $table = $this->getTable(); $context = $this->option . '.' . $this->name; // Include the plugins for the on delete events. JPluginHelper::importPlugin($this->events_map['delete']); // Iterate the items to delete each one. foreach ($pks as $pk) { if ($table->load($pk)) { // Access checks. if (!$user->authorise('core.delete', 'com_modules.module.' . (int) $pk) || $table->published != -2) { JError::raiseWarning(403, JText::_('JERROR_CORE_DELETE_NOT_PERMITTED')); return; } // Trigger the before delete event. $result = $dispatcher->trigger($this->event_before_delete, array($context, $table)); if (in_array(false, $result, true) || !$table->delete($pk)) { throw new Exception($table->getError()); } else { // Delete the menu assignments $db = $this->getDbo(); $query = $db->getQuery(true) ->delete('#__modules_menu') ->where('moduleid=' . (int) $pk); $db->setQuery($query); $db->execute(); // Trigger the after delete event. $dispatcher->trigger($this->event_after_delete, array($context, $table)); } // Clear module cache parent::cleanCache($table->module, $table->client_id); } else { throw new Exception($table->getError()); } } // Clear modules cache $this->cleanCache(); return true; } /** * Method to duplicate modules. * * @param array &$pks An array of primary key IDs. * * @return boolean True if successful. * * @since 1.6 * @throws Exception */ public function duplicate(&$pks) { $user = JFactory::getUser(); $db = $this->getDbo(); // Access checks. if (!$user->authorise('core.create', 'com_modules')) { throw new Exception(JText::_('JERROR_CORE_CREATE_NOT_PERMITTED')); } $table = $this->getTable(); foreach ($pks as $pk) { if ($table->load($pk, true)) { // Reset the id to create a new record. $table->id = 0; // Alter the title. $m = null; if (preg_match('#\((\d+)\)$#', $table->title, $m)) { $table->title = preg_replace('#\(\d+\)$#', '(' . ($m[1] + 1) . ')', $table->title); } $data = $this->generateNewTitle(0, $table->title, $table->position); $table->title = $data[0]; // Unpublish duplicate module $table->published = 0; if (!$table->check() || !$table->store()) { throw new Exception($table->getError()); } $query = $db->getQuery(true) ->select($db->quoteName('menuid')) ->from($db->quoteName('#__modules_menu')) ->where($db->quoteName('moduleid') . ' = ' . (int) $pk); $this->_db->setQuery($query); $rows = $this->_db->loadColumn(); foreach ($rows as $menuid) { $tuples[] = (int) $table->id . ',' . (int) $menuid; } } else { throw new Exception($table->getError()); } } if (!empty($tuples)) { // Module-Menu Mapping: Do it in one query $query = $db->getQuery(true) ->insert($db->quoteName('#__modules_menu')) ->columns($db->quoteName(array('moduleid', 'menuid'))) ->values($tuples); $this->_db->setQuery($query); try { $this->_db->execute(); } catch (RuntimeException $e) { return JError::raiseWarning(500, $e->getMessage()); } } // Clear modules cache $this->cleanCache(); return true; } /** * Method to change the title. * * @param integer $category_id The id of the category. Not used here. * @param string $title The title. * @param string $position The position. * * @return array Contains the modified title. * * @since 2.5 */ protected function generateNewTitle($category_id, $title, $position) { // Alter the title & alias $table = $this->getTable(); while ($table->load(array('position' => $position, 'title' => $title))) { $title = JString::increment($title); } return array($title); } /** * Method to get the client object * * @return void * * @since 1.6 */ public function &getClient() { return $this->_client; } /** * Method to get the record form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return JForm A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // The folder and element vars are passed when saving the form. if (empty($data)) { $item = $this->getItem(); $clientId = $item->client_id; $module = $item->module; $id = $item->id; } else { $clientId = JArrayHelper::getValue($data, 'client_id'); $module = JArrayHelper::getValue($data, 'module'); $id = JArrayHelper::getValue($data, 'id'); } // These variables are used to add data from the plugin XML files. $this->setState('item.client_id', $clientId); $this->setState('item.module', $module); // Get the form. $form = $this->loadForm('com_modules.module', 'module', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } $form->setFieldAttribute('position', 'client', $this->getState('item.client_id') == 0 ? 'site' : 'administrator'); $user = JFactory::getUser(); /** * Check for existing module * Modify the form based on Edit State access controls. */ if ($id != 0 && (!$user->authorise('core.edit.state', 'com_modules.module.' . (int) $id)) || ($id == 0 && !$user->authorise('core.edit.state', 'com_modules')) ) { // Disable fields for display. $form->setFieldAttribute('ordering', 'disabled', 'true'); $form->setFieldAttribute('published', 'disabled', 'true'); $form->setFieldAttribute('publish_up', 'disabled', 'true'); $form->setFieldAttribute('publish_down', 'disabled', 'true'); // Disable fields while saving. // The controller has already verified this is a record you can edit. $form->setFieldAttribute('ordering', 'filter', 'unset'); $form->setFieldAttribute('published', 'filter', 'unset'); $form->setFieldAttribute('publish_up', 'filter', 'unset'); $form->setFieldAttribute('publish_down', 'filter', 'unset'); } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { $app = JFactory::getApplication(); // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_modules.edit.module.data', array()); if (empty($data)) { $data = $this->getItem(); // Pre-select some filters (Status, Module Position, Language, Access Level) in edit form if those have been selected in Module Manager if (!$data->id) { $filters = (array) $app->getUserState('com_modules.modules.filter'); $data->set('published', $app->input->getInt('published', ((isset($filters['state']) && $filters['state'] !== '') ? $filters['state'] : null))); $data->set('position', $app->input->getInt('position', (!empty($filters['position']) ? $filters['position'] : null))); $data->set('language', $app->input->getString('language', (!empty($filters['language']) ? $filters['language'] : null))); $data->set('access', $app->input->getInt('access', (!empty($filters['access']) ? $filters['access'] : JFactory::getConfig()->get('access')))); } // This allows us to inject parameter settings into a new module. $params = $app->getUserState('com_modules.add.module.params'); if (is_array($params)) { $data->set('params', $params); } } $this->preprocessData('com_modules.module', $data); return $data; } /** * Method to get a single record. * * @param integer $pk The id of the primary key. * * @return mixed Object on success, false on failure. * * @since 1.6 */ public function getItem($pk = null) { $pk = (!empty($pk)) ? (int) $pk : (int) $this->getState('module.id'); $db = $this->getDbo(); if (!isset($this->_cache[$pk])) { // Get a row instance. $table = $this->getTable(); // Attempt to load the row. $return = $table->load($pk); // Check for a table object error. if ($return === false && $error = $table->getError()) { $this->setError($error); return false; } // Check if we are creating a new extension. if (empty($pk)) { if ($extensionId = (int) $this->getState('extension.id')) { $query = $db->getQuery(true) ->select('element, client_id') ->from('#__extensions') ->where('extension_id = ' . $extensionId) ->where('type = ' . $db->quote('module')); $db->setQuery($query); try { $extension = $db->loadObject(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } if (empty($extension)) { $this->setError('COM_MODULES_ERROR_CANNOT_FIND_MODULE'); return false; } // Extension found, prime some module values. $table->module = $extension->element; $table->client_id = $extension->client_id; } else { $app = JFactory::getApplication(); $app->redirect(JRoute::_('index.php?option=com_modules&view=modules', false)); return false; } } // Convert to the JObject before adding other data. $properties = $table->getProperties(1); $this->_cache[$pk] = JArrayHelper::toObject($properties, 'JObject'); // Convert the params field to an array. $registry = new Registry; $registry->loadString($table->params); $this->_cache[$pk]->params = $registry->toArray(); // Determine the page assignment mode. $query = $db->getQuery(true) ->select($db->quoteName('menuid')) ->from($db->quoteName('#__modules_menu')) ->where($db->quoteName('moduleid') . ' = ' . (int) $pk); $db->setQuery($query); $assigned = $db->loadColumn(); if (empty($pk)) { // If this is a new module, assign to all pages. $assignment = 0; } elseif (empty($assigned)) { // For an existing module it is assigned to none. $assignment = '-'; } else { if ($assigned[0] > 0) { $assignment = 1; } elseif ($assigned[0] < 0) { $assignment = -1; } else { $assignment = 0; } } $this->_cache[$pk]->assigned = $assigned; $this->_cache[$pk]->assignment = $assignment; // Get the module XML. $client = JApplicationHelper::getClientInfo($table->client_id); $path = JPath::clean($client->path . '/modules/' . $table->module . '/' . $table->module . '.xml'); if (file_exists($path)) { $this->_cache[$pk]->xml = simplexml_load_file($path); } else { $this->_cache[$pk]->xml = null; } } return $this->_cache[$pk]; } /** * Get the necessary data to load an item help screen. * * @return object An object with key, url, and local properties for loading the item help screen. * * @since 1.6 */ public function getHelp() { return (object) array('key' => $this->helpKey, 'url' => $this->helpURL); } /** * Returns a reference to the a Table object, always creating it. * * @param string $type The table type to instantiate * @param string $prefix A prefix for the table class name. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A database object * * @since 1.6 */ public function getTable($type = 'Module', $prefix = 'JTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Prepare and sanitise the table prior to saving. * * @param JTable $table The database object * * @return void * * @since 1.6 */ protected function prepareTable($table) { $table->title = htmlspecialchars_decode($table->title, ENT_QUOTES); $table->position = trim($table->position); } /** * Method to preprocess the form * * @param JForm $form A form object. * @param mixed $data The data expected for the form. * @param string $group The name of the plugin group to import (defaults to "content"). * * @return void * * @since 1.6 * @throws Exception if there is an error loading the form. */ protected function preprocessForm(JForm $form, $data, $group = 'content') { jimport('joomla.filesystem.path'); $lang = JFactory::getLanguage(); $clientId = $this->getState('item.client_id'); $module = $this->getState('item.module'); $client = JApplicationHelper::getClientInfo($clientId); $formFile = JPath::clean($client->path . '/modules/' . $module . '/' . $module . '.xml'); // Load the core and/or local language file(s). $lang->load($module, $client->path, null, false, true) || $lang->load($module, $client->path . '/modules/' . $module, null, false, true); if (file_exists($formFile)) { // Get the module form. if (!$form->loadFile($formFile, false, '//config')) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } // Attempt to load the xml file. if (!$xml = simplexml_load_file($formFile)) { throw new Exception(JText::_('JERROR_LOADFILE_FAILED')); } // Get the help data from the XML file if present. $help = $xml->xpath('/extension/help'); if (!empty($help)) { $helpKey = trim((string) $help[0]['key']); $helpURL = trim((string) $help[0]['url']); $this->helpKey = $helpKey ? $helpKey : $this->helpKey; $this->helpURL = $helpURL ? $helpURL : $this->helpURL; } } // Load the default advanced params JForm::addFormPath(JPATH_ADMINISTRATOR . '/components/com_modules/models/forms'); $form->loadFile('advanced', false); // Trigger the default form events. parent::preprocessForm($form, $data, $group); } /** * Loads ContentHelper for filters before validating data. * * @param object $form The form to validate against. * @param array $data The data to validate. * @param string $group The name of the group(defaults to null). * * @return mixed Array of filtered data if valid, false otherwise. * * @since 1.1 */ public function validate($form, $data, $group = null) { require_once JPATH_ADMINISTRATOR . '/components/com_content/helpers/content.php'; return parent::validate($form, $data, $group); } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 1.6 */ public function save($data) { $dispatcher = JEventDispatcher::getInstance(); $input = JFactory::getApplication()->input; $table = $this->getTable(); $pk = (!empty($data['id'])) ? $data['id'] : (int) $this->getState('module.id'); $isNew = true; $context = $this->option . '.' . $this->name; // Include the plugins for the save event. JPluginHelper::importPlugin($this->events_map['save']); // Load the row if saving an existing record. if ($pk > 0) { $table->load($pk); $isNew = false; } // Alter the title and published state for Save as Copy if ($input->get('task') == 'save2copy') { $orig_table = clone $this->getTable(); $orig_table->load((int) $input->getInt('id')); $data['published'] = 0; if ($data['title'] == $orig_table->title) { $data['title'] .= ' ' . JText::_('JGLOBAL_COPY'); } } // Bind the data. if (!$table->bind($data)) { $this->setError($table->getError()); return false; } // Prepare the row for saving $this->prepareTable($table); // Check the data. if (!$table->check()) { $this->setError($table->getError()); return false; } // Trigger the before save event. $result = $dispatcher->trigger($this->event_before_save, array($context, &$table, $isNew)); if (in_array(false, $result, true)) { $this->setError($table->getError()); return false; } // Store the data. if (!$table->store()) { $this->setError($table->getError()); return false; } // Process the menu link mappings. $assignment = isset($data['assignment']) ? $data['assignment'] : 0; // Delete old module to menu item associations $db = $this->getDbo(); $query = $db->getQuery(true) ->delete('#__modules_menu') ->where('moduleid = ' . (int) $table->id); $db->setQuery($query); try { $db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } // If the assignment is numeric, then something is selected (otherwise it's none). if (is_numeric($assignment)) { // Variable is numeric, but could be a string. $assignment = (int) $assignment; // Logic check: if no module excluded then convert to display on all. if ($assignment == -1 && empty($data['assigned'])) { $assignment = 0; } // Check needed to stop a module being assigned to `All` // and other menu items resulting in a module being displayed twice. if ($assignment === 0) { // Assign new module to `all` menu item associations. $query->clear() ->insert('#__modules_menu') ->columns(array($db->quoteName('moduleid'), $db->quoteName('menuid'))) ->values((int) $table->id . ', 0'); $db->setQuery($query); try { $db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } } elseif (!empty($data['assigned'])) { // Get the sign of the number. $sign = $assignment < 0 ? -1 : 1; // Preprocess the assigned array. $tuples = array(); foreach ($data['assigned'] as &$pk) { $tuples[] = '(' . (int) $table->id . ',' . (int) $pk * $sign . ')'; } $this->_db->setQuery( 'INSERT INTO #__modules_menu (moduleid, menuid) VALUES ' . implode(',', $tuples) ); try { $db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } } } // Trigger the after save event. $dispatcher->trigger($this->event_after_save, array($context, &$table, $isNew)); // Compute the extension id of this module in case the controller wants it. $query = $db->getQuery(true) ->select('extension_id') ->from('#__extensions AS e') ->join('LEFT', '#__modules AS m ON e.element = m.module') ->where('m.id = ' . (int) $table->id); $db->setQuery($query); try { $extensionId = $db->loadResult(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); return false; } $this->setState('module.extension_id', $extensionId); $this->setState('module.id', $table->id); // Clear modules cache $this->cleanCache(); // Clean module cache parent::cleanCache($table->module, $table->client_id); return true; } /** * A protected method to get a set of ordering conditions. * * @param object $table A record object. * * @return array An array of conditions to add to add to ordering queries. * * @since 1.6 */ protected function getReorderConditions($table) { $condition = array(); $condition[] = 'client_id = ' . (int) $table->client_id; $condition[] = 'position = ' . $this->_db->quote($table->position); return $condition; } /** * Custom clean cache method for different clients * * @param string $group The name of the plugin group to import (defaults to null). * @param integer $client_id The client ID. [optional] * * @return void * * @since 1.6 */ protected function cleanCache($group = null, $client_id = 0) { parent::cleanCache('com_modules', $this->getClient()); } } PKb��\�VI'+components/com_modules/models/positions.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Modules Component Positions Model * * @since 1.6 */ class ModulesModelPositions extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'value', 'templates', ); } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication('administrator'); // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $state = $this->getUserStateFromRequest($this->context . '.filter.state', 'filter_state', '', 'string'); $this->setState('filter.state', $state); $clientId = $app->input->getInt('client_id', 0); $this->setState('filter.client_id', $clientId); $template = $this->getUserStateFromRequest($this->context . '.filter.template', 'filter_template', '', 'string'); $this->setState('filter.template', $template); $type = $this->getUserStateFromRequest($this->context . '.filter.type', 'filter_type', '', 'string'); $this->setState('filter.type', $type); // Load the parameters. $params = JComponentHelper::getParams('com_modules'); $this->setState('params', $params); // List state information. parent::populateState('value', 'asc'); } /** * Method to get an array of data items. * * @return mixed An array of data items on success, false on failure. * * @since 1.6 */ public function getItems() { if (!isset($this->items)) { $lang = JFactory::getLanguage(); $search = $this->getState('filter.search'); $state = $this->getState('filter.state'); $clientId = $this->getState('filter.client_id'); $filter_template = $this->getState('filter.template'); $type = $this->getState('filter.type'); $ordering = $this->getState('list.ordering'); $direction = $this->getState('list.direction'); $limitstart = $this->getState('list.start'); $limit = $this->getState('list.limit'); $client = JApplicationHelper::getClientInfo($clientId); if ($type != 'template') { // Get the database object and a new query object. $query = $this->_db->getQuery(true) ->select('DISTINCT(position) as value') ->from('#__modules') ->where($this->_db->quoteName('client_id') . ' = ' . (int) $clientId); if ($search) { $search = $this->_db->quote('%' . str_replace(' ', '%', $this->_db->escape(trim($search), true) . '%')); $query->where('position LIKE ' . $search); } $this->_db->setQuery($query); try { $positions = $this->_db->loadObjectList('value'); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } foreach ($positions as $value => $position) { $positions[$value] = array(); } } else { $positions = array(); } // Load the positions from the installed templates. foreach (ModulesHelper::getTemplates($clientId) as $template) { $path = JPath::clean($client->path . '/templates/' . $template->element . '/templateDetails.xml'); if (file_exists($path)) { $xml = simplexml_load_file($path); if (isset($xml->positions[0])) { $lang->load('tpl_' . $template->element . '.sys', $client->path, null, false, true) || $lang->load('tpl_' . $template->element . '.sys', $client->path . '/templates/' . $template->element, null, false, true); foreach ($xml->positions[0] as $position) { $value = (string) $position['value']; $label = (string) $position; if (!$value) { $value = $label; $label = preg_replace('/[^a-zA-Z0-9_\-]/', '_', 'TPL_' . $template->element . '_POSITION_' . $value); $altlabel = preg_replace('/[^a-zA-Z0-9_\-]/', '_', 'COM_MODULES_POSITION_' . $value); if (!$lang->hasKey($label) && $lang->hasKey($altlabel)) { $label = $altlabel; } } if ($type == 'user' || ($state != '' && $state != $template->enabled)) { unset($positions[$value]); } elseif (preg_match(chr(1) . $search . chr(1) . 'i', $value) && ($filter_template == '' || $filter_template == $template->element)) { if (!isset($positions[$value])) { $positions[$value] = array(); } $positions[$value][$template->name] = $label; } } } } } $this->total = count($positions); if ($limitstart >= $this->total) { $limitstart = $limitstart < $limit ? 0 : $limitstart - $limit; $this->setState('list.start', $limitstart); } if ($ordering == 'value') { if ($direction == 'asc') { ksort($positions); } else { krsort($positions); } } else { if ($direction == 'asc') { asort($positions); } else { arsort($positions); } } $this->items = array_slice($positions, $limitstart, $limit ? $limit : null); } return $this->items; } /** * Method to get the total number of items. * * @return int The total number of items. * * @since 1.6 */ public function getTotal() { if (!isset($this->total)) { $this->getItems(); } return $this->total; } } PKb��\�����(components/com_modules/models/select.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Module model. * * @since 1.6 */ class ModulesModelSelect extends JModelList { /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication('administrator'); // Load the filter state. $clientId = $app->getUserState('com_modules.modules.filter.client_id', 0); $this->setState('filter.client_id', (int) $clientId); // Load the parameters. $params = JComponentHelper::getParams('com_modules'); $this->setState('params', $params); // Manually set limits to get all modules. $this->setState('list.limit', 0); $this->setState('list.start', 0); $this->setState('list.ordering', 'a.name'); $this->setState('list.direction', 'ASC'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.client_id'); return parent::getStoreId($id); } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.extension_id, a.name, a.element AS module' ) ); $query->from($db->quoteName('#__extensions') . ' AS a'); // Filter by module $query->where('a.type = ' . $db->quote('module')); // Filter by client. $clientId = $this->getState('filter.client_id'); $query->where('a.client_id = ' . (int) $clientId); // Filter by enabled $query->where('a.enabled = 1'); // Add the list ordering clause. $query->order($db->escape($this->getState('list.ordering', 'a.ordering')) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } /** * Method to get a list of items. * * @return mixed An array of objects on success, false on failure. */ public function getItems() { // Get the list of items from the database. $items = parent::getItems(); $client = JApplicationHelper::getClientInfo($this->getState('filter.client_id', 0)); $lang = JFactory::getLanguage(); // Loop through the results to add the XML metadata, // and load language support. foreach ($items as &$item) { $path = JPath::clean($client->path . '/modules/' . $item->module . '/' . $item->module . '.xml'); if (file_exists($path)) { $item->xml = simplexml_load_file($path); } else { $item->xml = null; } // 1.5 Format; Core files or language packs then // 1.6 3PD Extension Support $lang->load($item->module . '.sys', $client->path, null, false, true) || $lang->load($item->module . '.sys', $client->path . '/modules/' . $item->module, null, false, true); $item->name = JText::_($item->name); if (isset($item->xml) && $text = trim($item->xml->description)) { $item->desc = JText::_($text); } else { $item->desc = JText::_('COM_MODULES_NODESCRIPTION'); } } $items = JArrayHelper::sortObjects($items, 'name', 1, true, true); // TODO: Use the cached XML from the extensions table? return $items; } } PKb��\8���%�%)components/com_modules/models/modules.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Modules Component Module Model * * @since 1.5 */ class ModulesModelModules extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'title', 'a.title', 'checked_out', 'a.checked_out', 'checked_out_time', 'a.checked_out_time', 'published', 'a.published', 'access', 'a.access', 'access_level', 'ordering', 'a.ordering', 'module', 'a.module', 'language', 'a.language', 'language_title', 'publish_up', 'a.publish_up', 'publish_down', 'a.publish_down', 'client_id', 'a.client_id', 'position', 'a.position', 'pages', 'name', 'e.name', ); } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication('administrator'); // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $accessId = $this->getUserStateFromRequest($this->context . '.filter.access', 'filter_access', null, 'int'); $this->setState('filter.access', $accessId); $state = $this->getUserStateFromRequest($this->context . '.filter.state', 'filter_state', '', 'string'); $this->setState('filter.state', $state); $position = $this->getUserStateFromRequest($this->context . '.filter.position', 'filter_position', '', 'string'); $this->setState('filter.position', $position); $module = $this->getUserStateFromRequest($this->context . '.filter.module', 'filter_module', '', 'string'); $this->setState('filter.module', $module); $clientId = $this->getUserStateFromRequest($this->context . '.filter.client_id', 'filter_client_id', 0, 'int', false); $previousId = $app->getUserState($this->context . '.filter.client_id_previous', null); if ($previousId != $clientId || $previousId === null) { $this->getUserStateFromRequest($this->context . '.filter.client_id_previous', 'filter_client_id_previous', 0, 'int', true); $app->setUserState($this->context . '.filter.client_id_previous', $clientId); } $this->setState('filter.client_id', $clientId); $language = $this->getUserStateFromRequest($this->context . '.filter.language', 'filter_language', ''); $this->setState('filter.language', $language); // Load the parameters. $params = JComponentHelper::getParams('com_modules'); $this->setState('params', $params); // List state information. parent::populateState('position', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.access'); $id .= ':' . $this->getState('filter.state'); $id .= ':' . $this->getState('filter.position'); $id .= ':' . $this->getState('filter.module'); $id .= ':' . $this->getState('filter.client_id'); $id .= ':' . $this->getState('filter.language'); return parent::getStoreId($id); } /** * Returns an object list * * @param string $query The query * @param int $limitstart Offset * @param int $limit The number of records * * @return array */ protected function _getList($query, $limitstart = 0, $limit = 0) { $ordering = $this->getState('list.ordering', 'ordering'); if (in_array($ordering, array('pages', 'name'))) { $this->_db->setQuery($query); $result = $this->_db->loadObjectList(); $this->translate($result); JArrayHelper::sortObjects($result, $ordering, $this->getState('list.direction') == 'desc' ? -1 : 1, true, true); $total = count($result); $this->cache[$this->getStoreId('getTotal')] = $total; if ($total < $limitstart) { $limitstart = 0; $this->setState('list.start', 0); } return array_slice($result, $limitstart, $limit ? $limit : null); } else { if ($ordering == 'ordering') { $query->order('a.position ASC'); $ordering = 'a.ordering'; } if ($ordering == 'language_title') { $ordering = 'l.title'; } $query->order($this->_db->quoteName($ordering) . ' ' . $this->getState('list.direction')); if ($ordering == 'position') { $query->order('a.ordering ASC'); } $result = parent::_getList($query, $limitstart, $limit); $this->translate($result); return $result; } } /** * Translate a list of objects * * @param array &$items The array of objects * * @return array The array of translated objects */ protected function translate(&$items) { $lang = JFactory::getLanguage(); $client = $this->getState('filter.client_id') ? 'administrator' : 'site'; foreach ($items as $item) { $extension = $item->module; $source = constant('JPATH_' . strtoupper($client)) . "/modules/$extension"; $lang->load("$extension.sys", constant('JPATH_' . strtoupper($client)), null, false, true) || $lang->load("$extension.sys", $source, null, false, true); $item->name = JText::_($item->name); if (is_null($item->pages)) { $item->pages = JText::_('JNONE'); } elseif ($item->pages < 0) { $item->pages = JText::_('COM_MODULES_ASSIGNED_VARIES_EXCEPT'); } elseif ($item->pages > 0) { $item->pages = JText::_('COM_MODULES_ASSIGNED_VARIES_ONLY'); } else { $item->pages = JText::_('JALL'); } } } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.id, a.title, a.note, a.position, a.module, a.language,' . 'a.checked_out, a.checked_out_time, a.published+2*(e.enabled-1) as published, a.access, a.ordering, a.publish_up, a.publish_down' ) ); $query->from($db->quoteName('#__modules') . ' AS a'); // Join over the language $query->select('l.title AS language_title') ->join('LEFT', $db->quoteName('#__languages') . ' AS l ON l.lang_code = a.language'); // Join over the users for the checked out user. $query->select('uc.name AS editor') ->join('LEFT', '#__users AS uc ON uc.id=a.checked_out'); // Join over the asset groups. $query->select('ag.title AS access_level') ->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); // Join over the module menus $query->select('MIN(mm.menuid) AS pages') ->join('LEFT', '#__modules_menu AS mm ON mm.moduleid = a.id'); // Join over the extensions $query->select('e.name AS name') ->join('LEFT', '#__extensions AS e ON e.element = a.module') ->group( 'a.id, a.title, a.note, a.position, a.module, a.language,a.checked_out,' . 'a.checked_out_time, a.published, a.access, a.ordering,l.title, uc.name, ag.title, e.name,' . 'l.lang_code, uc.id, ag.id, mm.moduleid, e.element, a.publish_up, a.publish_down,e.enabled' ); // Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } // Filter by published state $state = $this->getState('filter.state'); if (is_numeric($state)) { $query->where('a.published = ' . (int) $state); } elseif ($state === '') { $query->where('(a.published IN (0, 1))'); } // Filter by position $position = $this->getState('filter.position'); if ($position && $position != 'none') { $query->where('a.position = ' . $db->quote($position)); } elseif ($position == 'none') { $query->where('a.position = ' . $db->quote('')); } // Filter by module $module = $this->getState('filter.module'); if ($module) { $query->where('a.module = ' . $db->quote($module)); } // Filter by client. $clientId = $this->getState('filter.client_id'); if (is_numeric($clientId)) { $query->where('a.client_id = ' . (int) $clientId . ' AND e.client_id =' . (int) $clientId); } // Filter by search in title $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } else { $search = $db->quote('%' . strtolower($search) . '%'); $query->where('(' . ' LOWER(a.title) LIKE ' . $search . ' OR LOWER(a.note) LIKE ' . $search . ')'); } } // Filter on the language. if ($language = $this->getState('filter.language')) { $query->where('a.language = ' . $db->quote($language)); } return $query; } } PKb��\Fb�[[%components/com_modules/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_modules * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Modules manager master display controller. * * @since 1.6 */ class ModulesController extends JControllerLegacy { /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array|boolean $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()} * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { $id = $this->input->getInt('id'); $document = JFactory::getDocument(); // For JSON requests if ($document->getType() == 'json') { $view = new ModulesViewModule; // Get/Create the model if ($model = new ModulesModelModule) { // Checkin table entry if (!$model->checkout($id)) { JFactory::getApplication()->enqueueMessage(JText::_('JLIB_APPLICATION_ERROR_CHECKIN_USER_MISMATCH'), 'error'); return false; } // Push the model into the view (as default) $view->setModel($model, true); } $view->document = $document; return $view->display(); } require_once JPATH_COMPONENT . '/helpers/modules.php'; // Load the submenu. ModulesHelper::addSubmenu($this->input->get('view', 'modules')); return parent::display(); } } PKb��\�h��""components/com_login/login.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_login * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $input = JFactory::getApplication()->input; $task = $input->get('task'); if ($task != 'login' && $task != 'logout') { $input->set('task', ''); $task = ''; } $controller = JControllerLegacy::getInstance('Login'); $controller->execute($task); $controller->redirect(); PKb��\P�*���1components/com_login/views/login/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_login * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.noframes'); /** * Get the login modules * If you want to use a completely different login module change the value of name * in your layout override. */ $loginmodule = LoginModelLogin::getLoginModule('mod_login'); echo JModuleHelper::renderModule($loginmodule, array('style' => 'rounded', 'id' => 'section-box')); /** * Get any other modules in the login position. * If you want to use a different position for the modules, change the name here in your override. */ $modules = JModuleHelper::getModules('login'); foreach ($modules as $module) // Render the login modules if ($module->module != 'mod_login'){ echo JModuleHelper::renderModule($module, array('style' => 'rounded', 'id' => 'section-box')); } PKb��\v �Ȇ�.components/com_login/views/login/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_login * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * HTML View class for the Login component * * @since 1.6 */ class LoginViewLogin extends JViewLegacy { } PKb��\l��I��components/com_login/login.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_login</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_LOGIN_XML_DESCRIPTION</description> <administration> <files folder="admin"> <filename>controller.php</filename> <filename>login.php</filename> <folder>views</folder> <folder>models</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_login.ini</language> <language tag="en-GB">language/en-GB.com_login.sys.ini</language> </languages> </administration> </extension> PKb��\x1���%components/com_login/models/login.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_login * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Login Model * * @since 1.5 */ class LoginModelLogin extends JModelLegacy { /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @return void * * @since 1.6 */ protected function populateState() { $app = JFactory::getApplication(); $input = $app->input; $method = $input->getMethod(); $credentials = array( 'username' => $input->$method->get('username', '', 'USERNAME'), 'password' => $input->$method->get('passwd', '', 'RAW'), 'secretkey' => $input->$method->get('secretkey', '', 'RAW'), ); $this->setState('credentials', $credentials); // Check for return URL from the request first. if ($return = $input->$method->get('return', '', 'BASE64')) { $return = base64_decode($return); if (!JUri::isInternal($return)) { $return = ''; } } // Set the return URL if empty. if (empty($return)) { $return = 'index.php'; } $this->setState('return', $return); } /** * Get the administrator login module by name (real, eg 'login' or folder, eg 'mod_login'). * * @param string $name The name of the module. * @param string $title The title of the module, optional. * * @return object The Module object. * * @since 11.1 */ public static function getLoginModule($name = 'mod_login', $title = null) { $result = null; $modules = self::_load($name); $total = count($modules); for ($i = 0; $i < $total; $i++) { // Match the title if we're looking for a specific instance of the module. if (!$title || $modules[$i]->title == $title) { $result = $modules[$i]; break; } } // If we didn't find it, and the name is mod_something, create a dummy object. if (is_null($result) && substr($name, 0, 4) == 'mod_') { $result = new stdClass; $result->id = 0; $result->title = ''; $result->module = $name; $result->position = ''; $result->content = ''; $result->showtitle = 0; $result->control = ''; $result->params = ''; $result->user = 0; } return $result; } /** * Load login modules. * * Note that we load regardless of state or access level since access * for public is the only thing that makes sense since users are not logged in * and the module lets them log in. * This is put in as a failsafe to avoid super user lock out caused by an unpublished * login module or by a module set to have a viewing access level that is not Public. * * @param string $module The name of the module. * * @return array * * @since 11.1 */ protected static function _load($module) { static $clean; if (isset($clean)) { return $clean; } $app = JFactory::getApplication(); $lang = JFactory::getLanguage()->getTag(); $clientId = (int) $app->getClientId(); $cache = JFactory::getCache('com_modules', ''); $cacheid = md5(serialize(array($clientId, $lang))); $loginmodule = array(); if (!($clean = $cache->get($cacheid))) { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('m.id, m.title, m.module, m.position, m.showtitle, m.params') ->from('#__modules AS m') ->where('m.module =' . $db->quote($module) . ' AND m.client_id = 1') ->join('LEFT', '#__extensions AS e ON e.element = m.module AND e.client_id = m.client_id') ->where('e.enabled = 1'); // Filter by language. if ($app->isSite() && $app->getLanguageFilter()) { $query->where('m.language IN (' . $db->quote($lang) . ',' . $db->quote('*') . ')'); } $query->order('m.position, m.ordering'); // Set the query. $db->setQuery($query); try { $modules = $db->loadObjectList(); } catch (RuntimeException $e) { JError::raiseWarning(500, JText::sprintf('JLIB_APPLICATION_ERROR_MODULE_LOAD', $e->getMessage())); return $loginmodule; } // Return to simple indexing that matches the query order. $loginmodule = $modules; $cache->store($loginmodule, $cacheid); } return $loginmodule; } } PKb��\��g�� � #components/com_login/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_login * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Login Controller. * * @since 1.5 */ class LoginController extends JControllerLegacy { /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { /* * Special treatment is required for this component, as this view may be called * after a session timeout. We must reset the view and layout prior to display * otherwise an error will occur. */ $this->input->set('view', 'login'); $this->input->set('layout', 'default'); parent::display(); } /** * Method to log in a user. * * @return void */ public function login() { // Check for request forgeries. JSession::checkToken('request') or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $model = $this->getModel('login'); $credentials = $model->getState('credentials'); $return = $model->getState('return'); $result = $app->login($credentials, array('action' => 'core.login.admin')); if (!($result instanceof Exception)) { // Only redirect to an internal URL. if (JUri::isInternal($return)) { // If &tmpl=component - redirect to index.php if (strpos($return, "tmpl=component") === false) { $app->redirect($return); } else { $app->redirect('index.php'); } } } parent::display(); } /** * Method to log out a user. * * @return void */ public function logout() { JSession::checkToken('request') or jexit(JText::_('JInvalid_Token')); $app = JFactory::getApplication(); $userid = $this->input->getInt('uid', null); $options = array( 'clientid' => ($userid) ? 0 : 1 ); $result = $app->logout($userid, $options); if (!($result instanceof Exception)) { $model = $this->getModel('login'); $return = $model->getState('return'); // Only redirect to an internal URL. if (JUri::isInternal($return)) { $app->redirect($return); } } parent::display(); } } PKb��\^�ʙZZ"components/com_contact/contact.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.tabstate'); if (!JFactory::getUser()->authorise('core.manage', 'com_contact')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $controller = JControllerLegacy::getInstance('contact'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\��)�'')components/com_contact/tables/contact.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * Contact Table class. * * @since 1.0 */ class ContactTableContact extends JTable { /** * Ensure the params and metadata in json encoded in the bind method * * @var array * @since 3.3 */ protected $_jsonEncode = array('params', 'metadata'); /** * Constructor * * @param JDatabaseDriver &$db Database connector object * * @since 1.0 */ public function __construct(&$db) { parent::__construct('#__contact_details', 'id', $db); JTableObserverTags::createObserver($this, array('typeAlias' => 'com_contact.contact')); JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_contact.contact')); } /** * Stores a contact. * * @param boolean $updateNulls True to update fields even if they are null. * * @return boolean True on success, false on failure. * * @since 1.6 */ public function store($updateNulls = false) { // Transform the params field if (is_array($this->params)) { $registry = new Registry; $registry->loadArray($this->params); $this->params = (string) $registry; } $date = JFactory::getDate(); $user = JFactory::getUser(); $this->modified = $date->toSql(); if ($this->id) { // Existing item $this->modified_by = $user->get('id'); } else { // New contact. A contact created and created_by field can be set by the user, // so we don't touch either of these if they are set. if (!(int) $this->created) { $this->created = $date->toSql(); } if (empty($this->created_by)) { $this->created_by = $user->get('id'); } } // Set publish_up to null date if not set if (!$this->publish_up) { $this->publish_up = $this->_db->getNullDate(); } // Set publish_down to null date if not set if (!$this->publish_down) { $this->publish_down = $this->_db->getNullDate(); } // Set xreference to empty string if not set if (!$this->xreference) { $this->xreference = ''; } // Store utf8 email as punycode $this->email_to = JStringPunycode::emailToPunycode($this->email_to); // Convert IDN urls to punycode $this->webpage = JStringPunycode::urlToPunycode($this->webpage); // Verify that the alias is unique $table = JTable::getInstance('Contact', 'ContactTable'); if ($table->load(array('alias' => $this->alias, 'catid' => $this->catid)) && ($table->id != $this->id || $this->id == 0)) { $this->setError(JText::_('COM_CONTACT_ERROR_UNIQUE_ALIAS')); return false; } return parent::store($updateNulls); } /** * Overloaded check function * * @return boolean True on success, false on failure * * @see JTable::check * @since 1.5 */ public function check() { $this->default_con = (int) $this->default_con; if (JFilterInput::checkAttribute(array ('href', $this->webpage))) { $this->setError(JText::_('COM_CONTACT_WARNING_PROVIDE_VALID_URL')); return false; } // Check for valid name if (trim($this->name) == '') { $this->setError(JText::_('COM_CONTACT_WARNING_PROVIDE_VALID_NAME')); return false; } // Generate a valid alias $this->generateAlias(); // Check for valid category if (trim($this->catid) == '') { $this->setError(JText::_('COM_CONTACT_WARNING_CATEGORY')); return false; } // Sanity check for user_id */ if (!($this->user_id)) { $this->user_id = 0; } // Check the publish down date is not earlier than publish up. if ((int) $this->publish_down > 0 && $this->publish_down < $this->publish_up) { $this->setError(JText::_('JGLOBAL_START_PUBLISH_AFTER_FINISH')); return false; } /* * Clean up keywords -- eliminate extra spaces between phrases * and cr (\r) and lf (\n) characters from string. * Only process if not empty. */ if (!empty($this->metakey)) { // Array of characters to remove. $bad_characters = array("\n", "\r", "\"", "<", ">"); // Remove bad characters. $after_clean = JString::str_ireplace($bad_characters, "", $this->metakey); // Create array using commas as delimiter. $keys = explode(',', $after_clean); $clean_keys = array(); foreach ($keys as $key) { // Ignore blank keywords. if (trim($key)) { $clean_keys[] = trim($key); } } // Put array back together delimited by ", " $this->metakey = implode(", ", $clean_keys); } // Clean up description -- eliminate quotes and <> brackets if (!empty($this->metadesc)) { // Only process if not empty $bad_characters = array("\"", "<", ">"); $this->metadesc = JString::str_ireplace($bad_characters, "", $this->metadesc); } return true; } /** * Generate a valid alias from title / date. * Remains public to be able to check for duplicated alias before saving * * @return string */ public function generateAlias() { if (empty($this->alias)) { $this->alias = $this->name; } $this->alias = JApplication::stringURLSafe($this->alias); if (trim(str_replace('-', '', $this->alias)) == '') { $this->alias = JFactory::getDate()->format("Y-m-d-H-i-s"); } return $this->alias; } } PKb��\7��'**.components/com_contact/controllers/contact.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Controller for a single contact * * @since 1.6 */ class ContactControllerContact extends JControllerForm { /** * Method override to check if you can add a new record. * * @param array $data An array of input data. * * @return boolean * * @since 1.6 */ protected function allowAdd($data = array()) { $user = JFactory::getUser(); $categoryId = JArrayHelper::getValue($data, 'catid', $this->input->getInt('filter_category_id'), 'int'); $allow = null; if ($categoryId) { // If the category has been passed in the URL check it. $allow = $user->authorise('core.create', $this->option . '.category.' . $categoryId); } if ($allow === null) { // In the absense of better information, revert to the component permissions. return parent::allowAdd($data); } else { return $allow; } } /** * Method override to check if you can edit an existing record. * * @param array $data An array of input data. * @param string $key The name of the key for the primary key. * * @return boolean * * @since 1.6 */ protected function allowEdit($data = array(), $key = 'id') { $recordId = (int) isset($data[$key]) ? $data[$key] : 0; $categoryId = 0; if ($recordId) { $categoryId = (int) $this->getModel()->getItem($recordId)->catid; } if ($categoryId) { // The category has been set. Check the category permissions. return JFactory::getUser()->authorise('core.edit', $this->option . '.category.' . $categoryId); } else { // Since there is no asset tracking, revert to the component permissions. return parent::allowEdit($data, $key); } } /** * Method to run batch operations. * * @param object $model The model. * * @return boolean True if successful, false otherwise and internal error is set. * * @since 2.5 */ public function batch($model = null) { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Set the model $model = $this->getModel('Contact', '', array()); // Preset the redirect $this->setRedirect(JRoute::_('index.php?option=com_contact&view=contacts' . $this->getRedirectToListAppend(), false)); return parent::batch($model); } /** * Function that allows child controller access to model data after the data has been saved. * * @param JModelLegacy $model The data model object. * @param array $validData The validated data. * * @return void * * @since 3.1 */ protected function postSaveHook(JModelLegacy $model, $validData = array()) { } } PKb��\w�Ki� � /components/com_contact/controllers/contacts.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Contacts list controller class. * * @since 1.6 */ class ContactControllerContacts extends JControllerAdmin { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { parent::__construct($config); $this->registerTask('unfeatured', 'featured'); } /** * Method to toggle the featured setting of a list of contacts. * * @return void * * @since 1.6 */ public function featured() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $user = JFactory::getUser(); $ids = $this->input->get('cid', array(), 'array'); $values = array('featured' => 1, 'unfeatured' => 0); $task = $this->getTask(); $value = JArrayHelper::getValue($values, $task, 0, 'int'); // Get the model. $model = $this->getModel(); // Access checks. foreach ($ids as $i => $id) { $item = $model->getItem($id); if (!$user->authorise('core.edit.state', 'com_contact.category.' . (int) $item->catid)) { // Prune items that you can't change. unset($ids[$i]); JError::raiseNotice(403, JText::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED')); } } if (empty($ids)) { JError::raiseWarning(500, JText::_('COM_CONTACT_NO_ITEM_SELECTED')); } else { // Publish the items. if (!$model->featured($ids, $value)) { JError::raiseWarning(500, $model->getError()); } } $this->setRedirect('index.php?option=com_contact&view=contacts'); } /** * Proxy for getModel. * * @param string $name The name of the model. * @param string $prefix The prefix for the PHP class name. * @param array $config Array of configuration parameters. * * @return JModel * * @since 1.6 */ public function getModel($name = 'Contact', $prefix = 'ContactModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } /** * Function that allows child controller access to model data * after the item has been deleted. * * @param JModelLegacy $model The data model object. * @param integer $ids The array of ids for items being deleted. * * @return void * * @since 12.2 */ protected function postDeleteHook(JModelLegacy $model, $ids = null) { } } PKb��\��VQ`X`X!components/com_contact/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="contact" label="COM_CONTACT_FIELD_CONFIG_INDIVIDUAL_CONTACT_DISPLAY" description="COM_CONTACT_FIELD_CONFIG_INDIVIDUAL_CONTACT_DESC" > <field name="contact_layout" type="componentlayout" label="JGLOBAL_FIELD_LAYOUT_LABEL" description="JGLOBAL_FIELD_LAYOUT_DESC" menuitems="true" extension="com_contact" view="contact" /> <field name="show_contact_category" type="list" default="hide" label="COM_CONTACT_FIELD_CONTACT_SHOW_CATEGORY_LABEL" description="COM_CONTACT_FIELD_CONTACT_SHOW_CATEGORY_DESC" > <option value="hide">JHIDE</option> <option value="show_no_link">COM_CONTACT_FIELD_VALUE_NO_LINK </option> <option value="show_with_link">COM_CONTACT_FIELD_VALUE_WITH_LINK </option> </field> <field name="save_history" type="radio" class="btn-group btn-group-yesno" default="0" label="JGLOBAL_SAVE_HISTORY_OPTIONS_LABEL" description="JGLOBAL_SAVE_HISTORY_OPTIONS_DESC" > <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="history_limit" type="text" filter="integer" label="JGLOBAL_HISTORY_LIMIT_OPTIONS_LABEL" description="JGLOBAL_HISTORY_LIMIT_OPTIONS_DESC" default="5" /> <field name="show_contact_list" type="radio" class="btn-group btn-group-yesno" default="0" description="COM_CONTACT_FIELD_CONTACT_SHOW_LIST_DESC" label="COM_CONTACT_FIELD_CONTACT_SHOW_LIST_LABEL" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="presentation_style" type="list" description="COM_CONTACT_FIELD_PRESENTATION_DESC" label="COM_CONTACT_FIELD_PRESENTATION_LABEL" > <option value="sliders">COM_CONTACT_FIELD_VALUE_SLIDERS</option> <option value="tabs">COM_CONTACT_FIELD_VALUE_TABS</option> <option value="plain">COM_CONTACT_FIELD_VALUE_PLAIN</option> </field> <field name="show_name" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_PARAMS_NAME_LABEL" description="COM_CONTACT_FIELD_PARAMS_NAME_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_position" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_PARAMS_CONTACT_POSITION_LABEL" description="COM_CONTACT_FIELD_PARAMS_CONTACT_POSITION_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_email" type="radio" class="btn-group btn-group-yesno" default="0" label="JGLOBAL_EMAIL" description="COM_CONTACT_FIELD_PARAMS_CONTACT_E_MAIL_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_street_address" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_PARAMS_STREET_ADDRESS_LABEL" description="COM_CONTACT_FIELD_PARAMS_STREET_ADDRESS_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_suburb" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_PARAMS_TOWN-SUBURB_LABEL" description="COM_CONTACT_FIELD_PARAMS_TOWN-SUBURB_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_state" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_PARAMS_STATE-COUNTY_LABEL" description="COM_CONTACT_FIELD_PARAMS_STATE-COUNTY_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_postcode" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_PARAMS_POST-ZIP_CODE_LABEL" description="COM_CONTACT_FIELD_PARAMS_POST-ZIP_CODE_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_country" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_PARAMS_COUNTRY_LABEL" description="COM_CONTACT_FIELD_PARAMS_COUNTRY_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_telephone" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_PARAMS_TELEPHONE_LABEL" description="COM_CONTACT_FIELD_PARAMS_TELEPHONE_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_mobile" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_PARAMS_MOBILE_LABEL" description="COM_CONTACT_FIELD_PARAMS_MOBILE_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_fax" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_PARAMS_FAX_LABEL" description="COM_CONTACT_FIELD_PARAMS_FAX_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_webpage" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_PARAMS_WEBPAGE_LABEL" description="COM_CONTACT_FIELD_PARAMS_WEBPAGE_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_misc" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_PARAMS_MISC_INFO_LABEL" description="COM_CONTACT_FIELD_PARAMS_MISC_INFO_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_image" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_PARAMS_SHOW_IMAGE_LABEL" description="COM_CONTACT_FIELD_PARAMS_SHOW_IMAGE_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="image" type="media" label="COM_CONTACT_FIELD_PARAMS_IMAGE_LABEL" description="COM_CONTACT_FIELD_PARAMS_IMAGE_DESC" > </field> <field name="allow_vcard" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONTACT_FIELD_PARAMS_VCARD_LABEL" description="COM_CONTACT_FIELD_PARAMS_VCARD_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_articles" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_ARTICLES_SHOW_LABEL" description="COM_CONTACT_FIELD_ARTICLES_SHOW_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="articles_display_num" type="list" default="10" label="COM_CONTACT_FIELD_ARTICLES_DISPLAY_NUM_LABEL" description="COM_CONTACT_FIELD_ARTICLES_DISPLAY_NUM_DESC" > <option value="use_contact">COM_CONTACT_FIELD_VALUE_USE_CONTACT_SETTINGS</option> <option value="5">J5</option> <option value="10">J10</option> <option value="15">J15</option> <option value="20">J20</option> <option value="25">J25</option> <option value="30">J30</option> <option value="50">J50</option> <option value="75">J75</option> <option value="100">J100</option> <option value="150">J150</option> <option value="200">J200</option> <option value="250">J250</option> <option value="300">J300</option> <option value="0">JALL</option> </field> <field name="show_profile" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_PROFILE_SHOW_LABEL" description="COM_CONTACT_FIELD_PROFILE_SHOW_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_links" label="COM_CONTACT_FIELD_SHOW_LINKS_LABEL" description="COM_CONTACT_FIELD_SHOW_LINKS_LABEL" type="radio" class="btn-group btn-group-yesno" default="1" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="linka_name" type="text" label="COM_CONTACT_FIELD_LINKA_NAME_LABEL" description="COM_CONTACT_FIELD_LINK_NAME_DESC" size="30" /> <field name="linkb_name" type="text" label="COM_CONTACT_FIELD_LINKB_NAME_LABEL" description="COM_CONTACT_FIELD_LINK_NAME_DESC" size="30" /> <field name="linkc_name" type="text" label="COM_CONTACT_FIELD_LINKC_NAME_LABEL" description="COM_CONTACT_FIELD_LINK_NAME_DESC" size="30" /> <field name="linkd_name" type="text" label="COM_CONTACT_FIELD_LINKD_NAME_LABEL" description="COM_CONTACT_FIELD_LINK_NAME_DESC" size="30" /> <field name="linke_name" type="text" label="COM_CONTACT_FIELD_LINKE_NAME_LABEL" description="COM_CONTACT_FIELD_LINK_NAME_DESC" size="30" /> <field id="show_tags" name="show_tags" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_SHOW_TAGS_LABEL" description="COM_CONTACT_FIELD_SHOW_TAGS_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> </fieldset> <fieldset name="Icons" label="COM_CONTACT_ICONS_SETTINGS" description="COM_CONTACT_FIELD_CONFIG_INDIVIDUAL_CONTACT_DESC" > <field name="contact_icons" type="list" default="0" label="COM_CONTACT_FIELD_ICONS_SETTINGS_LABEL" description="COM_CONTACT_FIELD_ICONS_SETTINGS_DESC" > <option value="0">COM_CONTACT_FIELD_VALUE_ICONS </option> <option value="1">COM_CONTACT_FIELD_VALUE_TEXT </option> <option value="2">COM_CONTACT_FIELD_VALUE_NONE </option> </field> <field name="icon_address" type="media" hide_none="1" label="COM_CONTACT_FIELD_ICONS_ADDRESS_LABEL" description="COM_CONTACT_FIELD_ICONS_ADDRESS_DESC" /> <field name="icon_email" type="media" hide_none="1" label="COM_CONTACT_FIELD_ICONS_EMAIL_LABEL" description="COM_CONTACT_FIELD_ICONS_EMAIL_DESC" /> <field name="icon_telephone" type="media" hide_none="1" label="COM_CONTACT_FIELD_ICONS_TELEPHONE_LABEL" description="COM_CONTACT_FIELD_ICONS_TELEPHONE_DESC" /> <field name="icon_mobile" type="media" hide_none="1" label="COM_CONTACT_FIELD_ICONS_MOBILE_LABEL" description="COM_CONTACT_FIELD_ICONS_MOBILE_DESC" /> <field name="icon_fax" type="media" hide_none="1" label="COM_CONTACT_FIELD_ICONS_FAX_LABEL" description="COM_CONTACT_FIELD_ICONS_FAX_DESC" /> <field name="icon_misc" type="media" hide_none="1" label="COM_CONTACT_FIELD_ICONS_MISC_LABEL" description="COM_CONTACT_FIELD_ICONS_MISC_DESC" /> </fieldset> <fieldset name="Category" label="JCATEGORY" description="COM_CONTACT_FIELD_CONFIG_CATEGORY_DESC" > <field name="category_layout" type="componentlayout" label="JGLOBAL_FIELD_LAYOUT_LABEL" description="JGLOBAL_FIELD_LAYOUT_DESC" menuitems="true" extension="com_contact" view="category" /> <field name="show_category_title" type="radio" default="1" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_CATEGORY_TITLE" description="JGLOBAL_SHOW_CATEGORY_TITLE_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_description" type="radio" default="1" class="btn-group btn-group-yesno" description="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_DESC" label="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_LABEL" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_description_image" type="radio" default="0" class="btn-group btn-group-yesno" description="JGLOBAL_SHOW_CATEGORY_IMAGE_DESC" label="JGLOBAL_SHOW_CATEGORY_IMAGE_LABEL" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="maxLevel" type="list" default="-1" description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC" label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL" > <option value="-1">JALL</option> <option value="0">JNONE</option> <option value="1">J1</option> <option value="2">J2</option> <option value="3">J3</option> <option value="4">J4</option> <option value="5">J5</option> </field> <field name="show_empty_categories" type="radio" default="0" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL" description="COM_CONTACT_SHOW_EMPTY_CATEGORIES_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_subcat_desc" type="radio" default="1" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL" description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_cat_items" type="radio" default="1" class="btn-group btn-group-yesno" label="COM_CONTACT_FIELD_SHOW_CAT_ITEMS_LABEL" description="COM_CONTACT_FIELD_SHOW_CAT_ITEMS_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_cat_tags" type="radio" label="COM_CONTACT_FIELD_SHOW_CAT_TAGS_LABEL" description="COM_CONTACT_FIELD_SHOW_CAT_TAGS_DESC" class="btn-group btn-group-yesno" default="1" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> </fieldset> <fieldset name="categories" label="JCATEGORIES" description="COM_CONTACT_FIELD_CONFIG_CATEGORIES_DESC" > <field name="show_base_description" type="radio" default="1" class="btn-group btn-group-yesno" label="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_LABEL" description="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="maxLevelcat" type="list" default="-1" description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC" label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL" > <option value="-1">JALL</option> <option value="1">J1</option> <option value="2">J2</option> <option value="3">J3</option> <option value="4">J4</option> <option value="5">J5</option> </field> <field name="show_empty_categories_cat" type="radio" default="0" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL" description="COM_CONTACT_SHOW_EMPTY_CATEGORIES_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_subcat_desc_cat" type="radio" default="1" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL" description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_cat_items_cat" type="radio" default="1" class="btn-group btn-group-yesno" label="COM_CONTACT_FIELD_SHOW_CAT_ITEMS_LABEL" description="COM_CONTACT_FIELD_SHOW_CAT_ITEMS_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> </fieldset> <fieldset name="contacts" label="JGLOBAL_LIST_LAYOUT_OPTIONS" description="COM_CONTACT_FIELD_CONFIG_TABLE_OF_CONTACTS_DESC" > <field name="filter_field" type="radio" class="btn-group btn-group-yesno" default="1" description="JGLOBAL_FILTER_FIELD_DESC" label="JGLOBAL_FILTER_FIELD_LABEL" > <option value="1">JSHOW</option> <option value="hide">JHIDE</option> </field> <field name="show_pagination_limit" type="radio" default="1" class="btn-group btn-group-yesno" description="JGLOBAL_DISPLAY_SELECT_DESC" label="JGLOBAL_DISPLAY_SELECT_LABEL" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_headings" type="radio" default="1" class="btn-group btn-group-yesno" description="JGLOBAL_SHOW_HEADINGS_DESC" label="JGLOBAL_SHOW_HEADINGS_LABEL" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_position_headings" type="radio" default="1" class="btn-group btn-group-yesno" label="COM_CONTACT_FIELD_CONFIG_POSITION_LABEL" description="COM_CONTACT_FIELD_CONFIG_POSITION_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_email_headings" type="radio" default="0" class="btn-group btn-group-yesno" label="JGLOBAL_EMAIL" description="COM_CONTACT_FIELD_CONFIG_EMAIL_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_telephone_headings" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_CONFIG_PHONE_LABEL" description="COM_CONTACT_FIELD_CONFIG_PHONE_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_mobile_headings" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONTACT_FIELD_CONFIG_MOBILE_LABEL" description="COM_CONTACT_FIELD_CONFIG_MOBILE_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_fax_headings" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONTACT_FIELD_CONFIG_FAX_LABEL" description="COM_CONTACT_FIELD_CONFIG_FAX_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_suburb_headings" type="radio" default="0" class="btn-group btn-group-yesno" label="COM_CONTACT_FIELD_CONFIG_SUBURB_LABEL" description="COM_CONTACT_FIELD_CONFIG_SUBURB_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_state_headings" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONTACT_FIELD_CONFIG_STATE_LABEL" description="COM_CONTACT_FIELD_CONFIG_STATE_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_country_headings" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONTACT_FIELD_CONFIG_COUNTRY_LABEL" description="COM_CONTACT_FIELD_CONFIG_COUNTRY_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_pagination" type="list" default="2" description="JGLOBAL_PAGINATION_DESC" label="JGLOBAL_PAGINATION_LABEL" > <option value="0">JHIDE</option> <option value="1">JSHOW</option> <option value="2">JGLOBAL_AUTO</option> </field> <field name="show_pagination_results" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_PAGINATION_RESULTS_LABEL" description="JGLOBAL_PAGINATION_RESULTS_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="initial_sort" type="list" description="COM_CONTACT_FIELD_INITIAL_SORT_DESC" label="COM_CONTACT_FIELD_INITIAL_SORT_LABEL" validate="options" default="ordering" > <option value="name">COM_CONTACT_FIELD_VALUE_NAME</option> <option value="sortname">COM_CONTACT_FIELD_VALUE_SORT_NAME</option> <option value="ordering">COM_CONTACT_FIELD_VALUE_ORDERING</option> </field> </fieldset> <fieldset name="Contact_Form" label="COM_CONTACT_FIELD_CONFIG_CONTACT_FORM" description="COM_CONTACT_FIELD_CONFIG_INDIVIDUAL_CONTACT_DESC" > <field name="captcha" type="plugins" folder="captcha" default="" label="COM_CONTACT_FIELD_CAPTCHA_LABEL" description="COM_CONTACT_FIELD_CAPTCHA_DESC" filter="cmd" > <option value="">JOPTION_USE_DEFAULT</option> <option value="0">JOPTION_DO_NOT_USE</option> </field> <field name="show_email_form" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_EMAIL_SHOW_FORM_LABEL" description="COM_CONTACT_FIELD_EMAIL_SHOW_FORM_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_email_copy" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_EMAIL_EMAIL_COPY_LABEL" description="COM_CONTACT_FIELD_EMAIL_EMAIL_COPY_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="banned_email" type="textarea" label="COM_CONTACT_FIELD_CONFIG_BANNED_EMAIL_LABEL" rows="3" cols="30" description="COM_CONTACT_FIELD_CONFIG_BANNED_EMAIL_DESC" /> <field name="banned_subject" type="textarea" label="COM_CONTACT_FIELD_CONFIG_BANNED_SUBJECT_LABEL" rows="3" cols="30" description="COM_CONTACT_FIELD_CONFIG_BANNED_SUBJECT_DESC" /> <field name="banned_text" type="textarea" label="COM_CONTACT_FIELD_CONFIG_BANNED_TEXT_LABEL" rows="3" cols="30" description="COM_CONTACT_FIELD_CONFIG_BANNED_TEXT_DESC" /> <field name="validate_session" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONTACT_FIELD_CONFIG_SESSION_CHECK_LABEL" description="COM_CONTACT_FIELD_CONFIG_SESSION_CHECK_DESC" > <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="custom_reply" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONTACT_FIELD_CONFIG_CUSTOM_REPLY_LABEL" description="COM_CONTACT_FIELD_CONFIG_CUSTOM_REPLY_DESC" > <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="redirect" type="text" size="30" label="COM_CONTACT_FIELD_CONFIG_REDIRECT_LABEL" description="COM_CONTACT_FIELD_CONFIG_REDIRECT_DESC" /> </fieldset> <fieldset name="integration" label="JGLOBAL_INTEGRATION_LABEL" description="COM_CONTACT_CONFIG_INTEGRATION_SETTINGS_DESC" > <field name="show_feed_link" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_SHOW_FEED_LINK_LABEL" description="JGLOBAL_SHOW_FEED_LINK_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> </fieldset> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" validate="rules" filter="rules" component="com_contact" section="component" /> </fieldset> </config> PKb��\��,,3components/com_contact/sql/uninstall.mysql.utf8.sqlnu�[���DROP TABLE IF EXISTS `#__contact_details`; PKb��\�2��1components/com_contact/sql/install.mysql.utf8.sqlnu�[���CREATE TABLE `#__contact_details` ( `id` integer NOT NULL auto_increment, `name` varchar(255) NOT NULL default '', `alias` varchar(255) NOT NULL default '', `con_position` varchar(255) default NULL, `address` text, `suburb` varchar(100) default NULL, `state` varchar(100) default NULL, `country` varchar(100) default NULL, `postcode` varchar(100) default NULL, `telephone` varchar(255) default NULL, `fax` varchar(255) default NULL, `misc` mediumtext, `image` varchar(255) default NULL, `imagepos` varchar(20) default NULL, `email_to` varchar(255) default NULL, `default_con` tinyint(1) unsigned NOT NULL default '0', `published` tinyint(1) NOT NULL default '0', `checked_out` integer unsigned NOT NULL default '0', `checked_out_time` datetime NOT NULL default '0000-00-00 00:00:00', `ordering` integer NOT NULL default '0', `params` text NOT NULL, `user_id` integer NOT NULL default '0', `catid` integer NOT NULL default '0', `access` tinyint(3) unsigned NOT NULL default '0', `mobile` varchar(255) NOT NULL default '', `webpage` varchar(255) NOT NULL default '', `sortname1` varchar(255) NOT NULL, `sortname2` varchar(255) NOT NULL, `sortname3` varchar(255) NOT NULL, `language` char(7) NOT NULL, `created` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(10) unsigned NOT NULL default '0', `created_by_alias` varchar(255) NOT NULL default '', `modified` datetime NOT NULL default '0000-00-00 00:00:00', `modified_by` int(10) unsigned NOT NULL default '0', `metakey` text NOT NULL, `metadesc` text NOT NULL, `metadata` text NOT NULL, `featured` tinyint(3) unsigned NOT NULL default '0' COMMENT 'Set if contact is featured.', `xreference` varchar(50) NOT NULL COMMENT 'A reference to enable linkages to external data sets.', `publish_up` datetime NOT NULL default '0000-00-00 00:00:00', `publish_down` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`id`), KEY `idx_access` (`access`), KEY `idx_checkout` (`checked_out`), KEY `idx_state` (`published`), KEY `idx_catid` (`catid`), KEY `idx_createdby` (`created_by`), KEY `idx_featured_catid` (`featured`,`catid`), KEY `idx_language` (`language`), KEY `idx_xreference` (`xreference`) ) DEFAULT CHARSET=utf8; PKb��\e�����!components/com_contact/access.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <access component="com_contact"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> <action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_COMPONENT_DESC" /> </section> <section name="category"> <action name="core.create" title="JACTION_CREATE" description="COM_CATEGORIES_ACCESS_CREATE_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="COM_CATEGORIES_ACCESS_DELETE_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="COM_CATEGORIES_ACCESS_EDIT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="COM_CATEGORIES_ACCESS_EDITSTATE_DESC" /> <action name="core.edit.own" title="JACTION_EDITOWN" description="COM_CATEGORIES_ACCESS_EDITOWN_DESC" /> </section> </access>PKb��\�O���:components/com_contact/views/contact/tmpl/modal_params.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $fieldSets = $this->form->getFieldsets('params'); foreach ($fieldSets as $name => $fieldSet) : $paramstabs = 'params-' . $name; echo JHtml::_('bootstrap.addTab', 'myTab', $paramstabs, JText::_($fieldSet->label, true)); if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="alert alert-info">' . $this->escape(JText::_($fieldSet->description)) . '</p>'; endif; ?> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <div class="control-group"> <div class="control-label"><?php echo $field->label; ?></div> <div class="controls"><?php echo $field->input; ?></div> </div> <?php endforeach; ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endforeach; ?> PKb��\@>_oUU?components/com_contact/views/contact/tmpl/edit_associations.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.associations', $this); PKb��\$%���2components/com_contact/views/contact/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('formbehavior.chosen', 'select'); $app = JFactory::getApplication(); $assoc = JLanguageAssociations::isEnabled(); JFactory::getDocument()->addScriptDeclaration(' Joomla.submitbutton = function(task) { if (task == "contact.cancel" || document.formvalidator.isValid(document.getElementById("contact-form"))) { ' . $this->form->getField("misc")->save() . ' Joomla.submitform(task, document.getElementById("contact-form")); } }; '); // Fieldsets to not automatically render by /layouts/joomla/edit/params.php $this->ignore_fieldsets = array('details', 'item_associations', 'jmetadata'); ?> <form action="<?php echo JRoute::_('index.php?option=com_contact&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="contact-form" class="form-validate"> <?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?> <div class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'details')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'details', empty($this->item->id) ? JText::_('COM_CONTACT_NEW_CONTACT', true) : JText::_('COM_CONTACT_EDIT_CONTACT', true)); ?> <div class="row-fluid"> <div class="span9"> <div class="row-fluid form-horizontal-desktop"> <div class="span6"> <?php echo $this->form->renderField('user_id'); ?> <?php echo $this->form->renderField('image'); ?> <?php echo $this->form->renderField('con_position'); ?> <?php echo $this->form->renderField('email_to'); ?> <?php echo $this->form->renderField('address'); ?> <?php echo $this->form->renderField('suburb'); ?> <?php echo $this->form->renderField('state'); ?> <?php echo $this->form->renderField('postcode'); ?> <?php echo $this->form->renderField('country'); ?> </div> <div class="span6"> <?php echo $this->form->renderField('telephone'); ?> <?php echo $this->form->renderField('mobile'); ?> <?php echo $this->form->renderField('fax'); ?> <?php echo $this->form->renderField('webpage'); ?> <?php echo $this->form->renderField('sortname1'); ?> <?php echo $this->form->renderField('sortname2'); ?> <?php echo $this->form->renderField('sortname3'); ?> </div> </div> </div> <div class="span3"> <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'misc', JText::_('JGLOBAL_FIELDSET_MISCELLANEOUS', true)); ?> <div class="row-fluid form-horizontal-desktop"> <div class="form-vertical"> <?php echo $this->form->renderField('misc'); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'publishing', JText::_('JGLOBAL_FIELDSET_PUBLISHING', true)); ?> <div class="row-fluid form-horizontal-desktop"> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.publishingdata', $this); ?> </div> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.metadata', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JLayoutHelper::render('joomla.edit.params', $this); ?> <?php if ($assoc) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'associations', JText::_('JGLOBAL_FIELDSET_ASSOCIATIONS', true)); ?> <?php echo $this->loadTemplate('associations'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> </div> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\�O���9components/com_contact/views/contact/tmpl/edit_params.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $fieldSets = $this->form->getFieldsets('params'); foreach ($fieldSets as $name => $fieldSet) : $paramstabs = 'params-' . $name; echo JHtml::_('bootstrap.addTab', 'myTab', $paramstabs, JText::_($fieldSet->label, true)); if (isset($fieldSet->description) && trim($fieldSet->description)) : echo '<p class="alert alert-info">' . $this->escape(JText::_($fieldSet->description)) . '</p>'; endif; ?> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <div class="control-group"> <div class="control-label"><?php echo $field->label; ?></div> <div class="controls"><?php echo $field->input; ?></div> </div> <?php endforeach; ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endforeach; ?> PKb��\@>_oUU@components/com_contact/views/contact/tmpl/modal_associations.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.associations', $this); PKb��\6a���3components/com_contact/views/contact/tmpl/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('formbehavior.chosen', 'select'); $app = JFactory::getApplication(); $input = $app->input; $assoc = JLanguageAssociations::isEnabled(); JFactory::getDocument()->addScriptDeclaration(' Joomla.submitbutton = function(task) { if (task == "contact.cancel" || document.formvalidator.isValid(document.getElementById("contact-form"))) { ' . $this->form->getField('misc')->save() . ' if (window.opener && (task == "contact.save" || task == "contact.cancel")) { window.opener.document.closeEditWindow = self; window.opener.setTimeout("window.document.closeEditWindow.close()", 1000); } Joomla.submitform(task, document.getElementById("contact-form")); } }; '); // Fieldsets to not automatically render by /layouts/joomla/edit/params.php $this->ignore_fieldsets = array('details', 'display', 'email', 'item_associations'); ?> <div class="container-popup"> <div class="pull-right"> <button class="btn btn-primary" type="button" onclick="Joomla.submitbutton('contact.apply');"><?php echo JText::_('JTOOLBAR_APPLY') ?></button> <button class="btn btn-primary" type="button" onclick="Joomla.submitbutton('contact.save');"><?php echo JText::_('JTOOLBAR_SAVE') ?></button> <button class="btn" type="button" onclick="Joomla.submitbutton('contact.cancel');"><?php echo JText::_('JCANCEL') ?></button> </div> <div class="clearfix"> </div> <hr class="hr-condensed" /> <form action="<?php echo JRoute::_('index.php?option=com_contact&layout=modal&tmpl=component&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="contact-form" class="form-validate"> <?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?> <div class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'details')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'details', empty($this->item->id) ? JText::_('COM_CONTACT_NEW_CONTACT', true) : JText::_('COM_CONTACT_EDIT_CONTACT', true)); ?> <div class="row-fluid"> <div class="span9"> <div class="row-fluid form-horizontal-desktop"> <div class="span6"> <?php echo $this->form->renderField('user_id'); ?> <?php echo $this->form->renderField('image'); ?> <?php echo $this->form->renderField('con_position'); ?> <?php echo $this->form->renderField('email_to'); ?> <?php echo $this->form->renderField('address'); ?> <?php echo $this->form->renderField('suburb'); ?> <?php echo $this->form->renderField('state'); ?> <?php echo $this->form->renderField('postcode'); ?> <?php echo $this->form->renderField('country'); ?> </div> <div class="span6"> <?php echo $this->form->renderField('telephone'); ?> <?php echo $this->form->renderField('mobile'); ?> <?php echo $this->form->renderField('fax'); ?> <?php echo $this->form->renderField('webpage'); ?> <?php echo $this->form->renderField('sortname1'); ?> <?php echo $this->form->renderField('sortname2'); ?> <?php echo $this->form->renderField('sortname3'); ?> </div> </div> </div> <div class="span3"> <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'misc', JText::_('JGLOBAL_FIELDSET_MISCELLANEOUS', true)); ?> <div class="row-fluid form-horizontal-desktop"> <div class="form-vertical"> <?php echo $this->form->renderField('misc'); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'publishing', JText::_('JGLOBAL_FIELDSET_PUBLISHING', true)); ?> <div class="row-fluid form-horizontal-desktop"> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.publishingdata', $this); ?> </div> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.metadata', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JLayoutHelper::render('joomla.edit.params', $this); ?> <?php if ($assoc) : ?> <div class="hidden"><?php echo $this->loadTemplate('associations'); ?></div> <?php endif; ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> </div> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\/��iQQ;components/com_contact/views/contact/tmpl/edit_metadata.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.metadata', $this); PKb��\/��iQQ<components/com_contact/views/contact/tmpl/modal_metadata.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.metadata', $this); PKb��\k��` ` 2components/com_contact/views/contact/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View to edit a contact. * * @since 1.6 */ class ContactViewContact extends JViewLegacy { protected $form; protected $item; protected $state; /** * Display the view. * * @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) { // Initialise variables. $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } if ($this->getLayout() == 'modal') { $this->form->setFieldAttribute('language', 'readonly', 'true'); $this->form->setFieldAttribute('catid', 'readonly', 'true'); } $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JFactory::getApplication()->input->set('hidemainmenu', true); $user = JFactory::getUser(); $userId = $user->get('id'); $isNew = ($this->item->id == 0); $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $userId); // Since we don't track these assets at the item level, use the category id. $canDo = JHelperContent::getActions('com_contact', 'category', $this->item->catid); JToolbarHelper::title($isNew ? JText::_('COM_CONTACT_MANAGER_CONTACT_NEW') : JText::_('COM_CONTACT_MANAGER_CONTACT_EDIT'), 'address contact'); // Build the actions for new and existing records. if ($isNew) { // For new records, check the create permission. if ($isNew && (count($user->getAuthorisedCategories('com_contact', 'core.create')) > 0)) { JToolbarHelper::apply('contact.apply'); JToolbarHelper::save('contact.save'); JToolbarHelper::save2new('contact.save2new'); } JToolbarHelper::cancel('contact.cancel'); } else { // Can't save the record if it's checked out. if (!$checkedOut) { // Since it's an existing record, check the edit permission, or fall back to edit own if the owner. if ($canDo->get('core.edit') || ($canDo->get('core.edit.own') && $this->item->created_by == $userId)) { JToolbarHelper::apply('contact.apply'); JToolbarHelper::save('contact.save'); // We can save this record, but check the create permission to see if we can return to make a new one. if ($canDo->get('core.create')) { JToolbarHelper::save2new('contact.save2new'); } } } // If checked out, we can still save if ($canDo->get('core.create')) { JToolbarHelper::save2copy('contact.save2copy'); } if ($this->state->params->get('save_history', 0) && $user->authorise('core.edit')) { JToolbarHelper::versions('com_contact.contact', $this->item->id); } JToolbarHelper::cancel('contact.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_COMPONENTS_CONTACTS_CONTACTS_EDIT'); } } PKb��\��D6##Acomponents/com_contact/views/contacts/tmpl/default_batch_body.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $published = $this->state->get('filter.published'); ?> <div class="row-fluid"> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.language'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.access'); ?> </div> </div> </div> <div class="row-fluid"> <?php if ($published >= 0) : ?> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.item', 'com_contact'); ?> </div> </div> <?php endif; ?> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.tag'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.user'); ?> </div> </div> </div> PKb��\��Ad""Ccomponents/com_contact/views/contacts/tmpl/default_batch_footer.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <button class="btn" type="button" onclick="document.getElementById('batch-category-id').value='';document.getElementById('batch-access').value='';document.getElementById('batch-language-id').value='';document.getElementById('batch-user-id').value='';document.getElementById('batch-tag-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-success" type="submit" onclick="Joomla.submitbutton('contact.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button>PKb��\nj�x��4components/com_contact/views/contacts/tmpl/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require_once JPATH_ROOT . '/components/com_contact/helpers/route.php'; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.framework', true); JHtml::_('formbehavior.chosen', 'select'); $input = JFactory::getApplication()->input; $function = $input->getCmd('function', 'jSelectContact'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_contact&view=contacts&layout=modal&tmpl=component&function=' . $function);?>" method="post" name="adminForm" id="adminForm" class="form-inline"> <fieldset class="filter clearfix"> <div class="btn-toolbar"> <div class="btn-group pull-left"> <label for="filter_search"> <?php echo JText::_('JSEARCH_FILTER_LABEL'); ?> </label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" size="30" title="<?php echo JText::_('COM_CONTACT_FILTER_SEARCH_DESC'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>" data-placement="bottom"> <span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" data-placement="bottom" onclick="document.getElementById('filter_search').value='';this.form.submit();"> <span class="icon-remove"></span></button> </div> <div class="clearfix"></div> </div> <hr class="hr-condensed" /> <div class="filters pull-left"> <select name="filter_access" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS');?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access'));?> </select> <select name="filter_published" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true);?> </select> <?php if ($this->state->get('filter.forcedLanguage')) : ?> <select name="filter_category_id" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option> <?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_contact', array('filter.language' => array('*', $this->state->get('filter.forcedLanguage')))), 'value', 'text', $this->state->get('filter.category_id'));?> </select> <input type="hidden" name="forcedLanguage" value="<?php echo $this->escape($this->state->get('filter.forcedLanguage')); ?>" /> <input type="hidden" name="filter_language" value="<?php echo $this->escape($this->state->get('filter.language')); ?>" /> <?php else : ?> <select name="filter_category_id" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option> <?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_contact'), 'value', 'text', $this->state->get('filter.category_id'));?> </select> <select name="filter_language" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE');?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language'));?> </select> <?php endif; ?> </div> </fieldset> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped table-condensed"> <thead> <tr> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.name', $listDirn, $listOrder); ?> </th> <th class="center nowrap"> <?php echo JHtml::_('grid.sort', 'COM_CONTACT_FIELD_LINKED_USER_LABEL', 'ul.name', $listDirn, $listOrder); ?> </th> <th width="15%" class="center nowrap"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'access_level', $listDirn, $listOrder); ?> </th> <th width="15%" class="center nowrap"> <?php echo JHtml::_('grid.sort', 'JCATEGORY', 'a.catid', $listDirn, $listOrder); ?> </th> <th width="5%" class="center nowrap"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'language', $listDirn, $listOrder); ?> </th> <th width="1%" class="center nowrap"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="6"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : ?> <?php if ($item->language && JLanguageMultilang::isEnabled()) { $tag = strlen($item->language); if ($tag == 5) { $lang = substr($item->language, 0, 2); } elseif ($tag == 6) { $lang = substr($item->language, 0, 3); } else { $lang = ""; } } elseif (!JLanguageMultilang::isEnabled()) { $lang = ""; } ?> <tr class="row<?php echo $i % 2; ?>"> <td> <a href="javascript:void(0)" onclick="if (window.parent) window.parent.<?php echo $this->escape($function);?>('<?php echo $item->id; ?>', '<?php echo $this->escape(addslashes($item->name)); ?>', '<?php echo $this->escape($item->catid); ?>', null, '<?php echo $this->escape(ContactHelperRoute::getContactRoute($item->id, $item->catid, $item->language)); ?>', '<?php echo $this->escape($lang); ?>', null);"> <?php echo $this->escape($item->name); ?></a> </td> <td align="center"> <?php if (!empty($item->linked_user)) : ?> <?php echo $item->linked_user;?> <?php endif; ?> </td> <td class="center"> <?php echo $this->escape($item->access_level); ?> </td> <td class="center"> <?php echo $this->escape($item->category_title); ?> </td> <td class="center"> <?php if ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td align="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </form> PKb��\�E~-~-6components/com_contact/views/contacts/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $app = JFactory::getApplication(); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $archived = $this->state->get('filter.published') == 2 ? true : false; $trashed = $this->state->get('filter.published') == -2 ? true : false; $canOrder = $user->authorise('core.edit.state', 'com_contact.category'); $saveOrder = $listOrder == 'a.ordering'; if ($saveOrder) { $saveOrderingUrl = 'index.php?option=com_contact&task=contacts.saveOrderAjax&tmpl=component'; JHtml::_('sortablelist.sortable', 'contactList', 'adminForm', strtolower($listDirn), $saveOrderingUrl); } $sortFields = $this->getSortFields(); $assoc = JLanguageAssociations::isEnabled(); JFactory::getDocument()->addScriptDeclaration( 'Joomla.orderTable = function() { table = document.getElementById("sortTable"); direction = document.getElementById("directionTable"); order = table.options[table.selectedIndex].value; if (order != "' . $listOrder . '") { dirn = "asc"; } else { dirn = direction.options[direction.selectedIndex].value; } Joomla.tableOrdering(order, dirn, ""); }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_contact'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty($this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <label for="filter_search" class="element-invisible"><?php echo JText::_('COM_CONTACT_FILTER_SEARCH_DESC');?></label> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_CONTACT_SEARCH_IN_NAME'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> <div class="btn-group pull-right hidden-phone"> <label for="directionTable" class="element-invisible"><?php echo JText::_('JFIELD_ORDERING_DESC');?></label> <select name="directionTable" id="directionTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JFIELD_ORDERING_DESC');?></option> <option value="asc" <?php if ($listDirn == 'asc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_ASCENDING');?></option> <option value="desc" <?php if ($listDirn == 'desc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_DESCENDING');?></option> </select> </div> <div class="btn-group pull-right"> <label for="sortTable" class="element-invisible"><?php echo JText::_('JGLOBAL_SORT_BY');?></label> <select name="sortTable" id="sortTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JGLOBAL_SORT_BY');?></option> <?php echo JHtml::_('select.options', $sortFields, 'value', 'text', $listOrder);?> </select> </div> </div> <div class="clearfix"> </div> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped" id="contactList"> <thead> <tr> <th width="1%" class="nowrap center hidden-phone"> <?php echo JHtml::_('grid.sort', '<span class="icon-menu-2"></span>', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?> </th> <th width="1%" class="center"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="1%" style="min-width:55px" class="nowrap center"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.published', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.name', $listDirn, $listOrder); ?> </th> <th class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_CONTACT_FIELD_LINKED_USER_LABEL', 'ul.name', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JFEATURED', 'a.featured', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?> </th> <?php if ($assoc) : ?> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_CONTACT_HEADING_ASSOCIATION', 'association', $listDirn, $listOrder); ?> </th> <?php endif;?> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'a.language', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tbody> <?php $n = count($this->items); foreach ($this->items as $i => $item) : $ordering = $listOrder == 'a.ordering'; $canCreate = $user->authorise('core.create', 'com_contact.category.' . $item->catid); $canEdit = $user->authorise('core.edit', 'com_contact.category.' . $item->catid); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; $canEditOwn = $user->authorise('core.edit.own', 'com_contact.category.' . $item->catid) && $item->created_by == $userId; $canChange = $user->authorise('core.edit.state', 'com_contact.category.' . $item->catid) && $canCheckin; $item->cat_link = JRoute::_('index.php?option=com_categories&extension=com_contact&task=edit&type=other&id=' . $item->catid); ?> <tr class="row<?php echo $i % 2; ?>" sortable-group-id="<?php echo $item->catid?>"> <td class="order nowrap center hidden-phone"> <?php $iconClass = ''; if (!$canChange) { $iconClass = ' inactive'; } elseif (!$saveOrder) { $iconClass = ' inactive tip-top hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED'); } ?> <span class="sortable-handler<?php echo $iconClass ?>"> <span class="icon-menu"></span> </span> <?php if ($canChange && $saveOrder) : ?> <input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering; ?>" class="width-20 text-area-order " /> <?php endif; ?> </td> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td class="center"> <div class="btn-group"> <?php echo JHtml::_('jgrid.published', $item->published, $i, 'contacts.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?> <?php // Create dropdown items $action = $archived ? 'unarchive' : 'archive'; JHtml::_('actionsdropdown.' . $action, 'cb' . $i, 'contacts'); $action = $trashed ? 'untrash' : 'trash'; JHtml::_('actionsdropdown.' . $action, 'cb' . $i, 'contacts'); // Render dropdown list echo JHtml::_('actionsdropdown.render', $this->escape($item->name)); ?> </div> </td> <td class="nowrap has-context"> <div class="pull-left"> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'contacts.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit || $canEditOwn) : ?> <a href="<?php echo JRoute::_('index.php?option=com_contact&task=contact.edit&id=' . (int) $item->id); ?>"> <?php echo $this->escape($item->name); ?></a> <?php else : ?> <?php echo $this->escape($item->name); ?> <?php endif; ?> <span class="small"> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias));?> </span> <div class="small"> <?php echo $item->category_title; ?> </div> </div> </td> <td class="small hidden-phone"> <?php if (!empty($item->linked_user)) : ?> <a href="<?php echo JRoute::_('index.php?option=com_users&task=user.edit&id=' . $item->user_id);?>"><?php echo $item->linked_user;?></a> <div class="small"><?php echo $item->email; ?></div> <?php endif; ?> </td> <td class="center hidden-phone"> <?php echo JHtml::_('contact.featured', $item->featured, $i, $canChange); ?> </td> <td class="small hidden-phone"> <?php echo $item->access_level; ?> </td> <?php if ($assoc) : ?> <td class="hidden-phone"> <?php if ($item->association) : ?> <?php echo JHtml::_('contact.association', $item->id); ?> <?php endif; ?> </td> <?php endif;?> <td class="small hidden-phone"> <?php if ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="hidden-phone"> <?php echo $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> <tfoot> <tr> <td colspan="10"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> </table> <?php // Load the batch processing form. ?> <?php if ($user->authorise('core.create', 'com_contact') && $user->authorise('core.edit', 'com_contact') && $user->authorise('core.edit.state', 'com_contact')) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_CONTACT_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif; ?> <?php endif;?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\E�����<components/com_contact/views/contacts/tmpl/default_batch.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $published = $this->state->get('filter.published'); ?> <div class="modal hide fade" id="collapseModal"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h3><?php echo JText::_('COM_CONTACT_BATCH_OPTIONS'); ?></h3> </div> <div class="modal-body modal-batch"> <p><?php echo JText::_('COM_CONTACT_BATCH_TIP'); ?></p> <div class="row-fluid"> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.language'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.access'); ?> </div> </div> </div> <div class="row-fluid"> <?php if ($published >= 0) : ?> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.item', 'com_contact'); ?> </div> </div> <?php endif; ?> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.tag'); ?> </div> </div> <div class="row-fluid"> <div class="control-group"> <div class="controls"> <?php echo JHtml::_('batch.user'); ?> </div> </div> </div> </div> <div class="modal-footer"> <button class="btn" type="button" onclick="document.getElementById('batch-category-id').value='';document.getElementById('batch-access').value='';document.getElementById('batch-language-id').value='';document.getElementById('batch-user-id').value='';document.getElementById('batch-tag-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-primary" type="submit" onclick="Joomla.submitbutton('contact.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button> </div> </div> PKb��\�ų�EE3components/com_contact/views/contacts/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of contacts. * * @since 1.6 */ class ContactViewContacts extends JViewLegacy { protected $items; protected $pagination; protected $state; /** * Display the view. * * @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) { $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); ContactHelper::addSubmenu('contacts'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } // Preprocess the list of items to find ordering divisions. // TODO: Complete the ordering stuff with nested sets foreach ($this->items as &$item) { $item->order_up = true; $item->order_dn = true; } $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_contact', 'category', $this->state->get('filter.category_id')); $user = JFactory::getUser(); // Get the toolbar object instance $bar = JToolBar::getInstance('toolbar'); JToolbarHelper::title(JText::_('COM_CONTACT_MANAGER_CONTACTS'), 'address contact'); if ($canDo->get('core.create') || (count($user->getAuthorisedCategories('com_contact', 'core.create'))) > 0) { JToolbarHelper::addNew('contact.add'); } if (($canDo->get('core.edit')) || ($canDo->get('core.edit.own'))) { JToolbarHelper::editList('contact.edit'); } if ($canDo->get('core.edit.state')) { JToolbarHelper::publish('contacts.publish', 'JTOOLBAR_PUBLISH', true); JToolbarHelper::unpublish('contacts.unpublish', 'JTOOLBAR_UNPUBLISH', true); JToolbarHelper::archiveList('contacts.archive'); JToolbarHelper::checkin('contacts.checkin'); } // Add a batch button if ($user->authorise('core.create', 'com_contacts') && $user->authorise('core.edit', 'com_contacts') && $user->authorise('core.edit.state', 'com_contacts')) { $title = JText::_('JTOOLBAR_BATCH'); // Instantiate a new JLayoutFile instance and render the batch button $layout = new JLayoutFile('joomla.toolbar.batch'); $dhtml = $layout->render(array('title' => $title)); $bar->appendButton('Custom', $dhtml, 'batch'); } if ($this->state->get('filter.published') == -2 && $canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'contacts.delete', 'JTOOLBAR_EMPTY_TRASH'); } elseif ($canDo->get('core.edit.state')) { JToolbarHelper::trash('contacts.trash'); } if ($user->authorise('core.admin', 'com_contact') || $user->authorise('core.options', 'com_contact')) { JToolbarHelper::preferences('com_contact'); } JToolbarHelper::help('JHELP_COMPONENTS_CONTACTS_CONTACTS'); JHtmlSidebar::setAction('index.php?option=com_contact'); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_PUBLISHED'), 'filter_published', JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true) ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_CATEGORY'), 'filter_category_id', JHtml::_('select.options', JHtml::_('category.options', 'com_contact'), 'value', 'text', $this->state->get('filter.category_id')) ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_ACCESS'), 'filter_access', JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access')) ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_LANGUAGE'), 'filter_language', JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language')) ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_TAG'), 'filter_tag', JHtml::_('select.options', JHtml::_('tag.options', true, true), 'value', 'text', $this->state->get('filter.tag')) ); } /** * Returns an array of fields the table can be sorted by * * @return array Array containing the field name to sort by as the key and display text as value * * @since 3.0 */ protected function getSortFields() { return array( 'a.ordering' => JText::_('JGRID_HEADING_ORDERING'), 'a.published' => JText::_('JSTATUS'), 'a.name' => JText::_('JGLOBAL_TITLE'), 'category_title' => JText::_('JCATEGORY'), 'ul.name' => JText::_('COM_CONTACT_FIELD_LINKED_USER_LABEL'), 'a.featured' => JText::_('JFEATURED'), 'a.access' => JText::_('JGRID_HEADING_ACCESS'), 'a.language' => JText::_('JGRID_HEADING_LANGUAGE'), 'a.id' => JText::_('JGRID_HEADING_ID') ); } } PKb��\���quu*components/com_contact/helpers/contact.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Contact component helper. * * @since 1.6 */ class ContactHelper extends JHelperContent { /** * Configure the Linkbar. * * @param string $vName The name of the active view. * * @return void * * @since 1.6 */ public static function addSubmenu($vName) { JHtmlSidebar::addEntry( JText::_('COM_CONTACT_SUBMENU_CONTACTS'), 'index.php?option=com_contact&view=contacts', $vName == 'contacts' ); JHtmlSidebar::addEntry( JText::_('COM_CONTACT_SUBMENU_CATEGORIES'), 'index.php?option=com_categories&extension=com_contact', $vName == 'categories' ); } } PKb��\WXuY��/components/com_contact/helpers/html/contact.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JLoader::register('ContactHelper', JPATH_ADMINISTRATOR . '/components/com_contact/helpers/contact.php'); /** * Contact HTML helper class. * * @package Joomla.Administrator * @subpackage com_contact * @since 1.6 */ abstract class JHtmlContact { /** * Get the associated language flags * * @param int $contactid The item id to search associations * * @return string The language HTML */ public static function association($contactid) { // Defaults $html = ''; // Get the associations if ($associations = JLanguageAssociations::getAssociations('com_contact', '#__contact_details', 'com_contact.item', $contactid)) { foreach ($associations as $tag => $associated) { $associations[$tag] = (int) $associated->id; } // Get the associated contact items $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('c.id, c.name as title') ->select('l.sef as lang_sef') ->from('#__contact_details as c') ->select('cat.title as category_title') ->join('LEFT', '#__categories as cat ON cat.id=c.catid') ->where('c.id IN (' . implode(',', array_values($associations)) . ')') ->join('LEFT', '#__languages as l ON c.language=l.lang_code') ->select('l.image') ->select('l.title as language_title'); $db->setQuery($query); try { $items = $db->loadObjectList('id'); } catch (runtimeException $e) { throw new Exception($e->getMessage(), 500); return false; } if ($items) { foreach ($items as &$item) { $text = strtoupper($item->lang_sef); $url = JRoute::_('index.php?option=com_contact&task=contact.edit&id=' . (int) $item->id); $tooltipParts = array( JHtml::_('image', 'mod_languages/' . $item->image . '.gif', $item->language_title, array('title' => $item->language_title), true ), $item->title, '(' . $item->category_title . ')' ); $item->link = JHtml::_( 'tooltip', implode(' ', $tooltipParts), null, null, $text, $url, null, 'hasTooltip label label-association label-' . $item->lang_sef ); } } $html = JLayoutHelper::render('joomla.content.associations', $items); } return $html; } /** * Show the featured/not-featured icon. * * @param int $value The featured value. * @param int $i Id of the item. * @param bool $canChange Whether the value can be changed or not. * * @return string The anchor tag to toggle featured/unfeatured contacts. * * @since 1.6 */ public static function featured($value = 0, $i, $canChange = true) { // Array of image, task, title, action $states = array( 0 => array('unfeatured', 'contacts.featured', 'COM_CONTACT_UNFEATURED', 'JGLOBAL_TOGGLE_FEATURED'), 1 => array('featured', 'contacts.unfeatured', 'JFEATURED', 'JGLOBAL_TOGGLE_FEATURED'), ); $state = JArrayHelper::getValue($states, (int) $value, $states[1]); $icon = $state[0]; if ($canChange) { $html = '<a href="#" onclick="return listItemTask(\'cb' . $i . '\',\'' . $state[1] . '\')" class="btn btn-micro hasTooltip' . ($value == 1 ? ' active' : '') . '" title="' . JHtml::tooltipText($state[3]) . '"><span class="icon-' . $icon . '"></span></a>'; } else { $html = '<a class="btn btn-micro hasTooltip disabled' . ($value == 1 ? ' active' : '') . '" title="' . JHtml::tooltipText($state[2]) . '"><span class="icon-' . $icon . '"></span></a>'; } return $html; } } PKb��\� ����6components/com_contact/models/fields/modal/contact.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; /** * Supports a modal contact picker. * * @since 1.6 */ class JFormFieldModal_Contact extends JFormField { /** * The form field type. * * @var string * @since 1.6 */ protected $type = 'Modal_Contact'; /** * Method to get the field input markup. * * @return string The field input markup. * * @since 1.6 */ protected function getInput() { $allowEdit = ((string) $this->element['edit'] == 'true') ? true : false; $allowClear = ((string) $this->element['clear'] != 'false') ? true : false; // Load language JFactory::getLanguage()->load('com_contact', JPATH_ADMINISTRATOR); // Load the javascript JHtml::_('bootstrap.tooltip'); // Build the script. $script = array(); // Select button script $script[] = ' function jSelectContact_' . $this->id . '(id, name, object) {'; $script[] = ' document.getElementById("' . $this->id . '_id").value = id;'; $script[] = ' document.getElementById("' . $this->id . '_name").value = name;'; if ($allowEdit) { $script[] = ' jQuery("#' . $this->id . '_edit").removeClass("hidden");'; } if ($allowClear) { $script[] = ' jQuery("#' . $this->id . '_clear").removeClass("hidden");'; } $script[] = ' jQuery("#modalContact' . $this->id . '").modal("hide");'; if ($this->required) { $script[] = ' document.formvalidator.validate(document.getElementById("' . $this->id . '_id"));'; $script[] = ' document.formvalidator.validate(document.getElementById("' . $this->id . '_name"));'; } $script[] = ' }'; // Clear button script static $scriptClear; if ($allowClear && !$scriptClear) { $scriptClear = true; $script[] = ' function jClearContact(id) {'; $script[] = ' document.getElementById(id + "_id").value = "";'; $script[] = ' document.getElementById(id + "_name").value = "' . htmlspecialchars(JText::_('COM_CONTACT_SELECT_A_CONTACT', true), ENT_COMPAT, 'UTF-8') . '";'; $script[] = ' jQuery("#"+id + "_clear").addClass("hidden");'; $script[] = ' if (document.getElementById(id + "_edit")) {'; $script[] = ' jQuery("#"+id + "_edit").addClass("hidden");'; $script[] = ' }'; $script[] = ' return false;'; $script[] = ' }'; } // Add the script to the document head. JFactory::getDocument()->addScriptDeclaration(implode("\n", $script)); // Setup variables for display. $html = array(); $link = 'index.php?option=com_contact&view=contacts&layout=modal&tmpl=component&function=jSelectContact_' . $this->id; if (isset($this->element['language'])) { $link .= '&forcedLanguage=' . $this->element['language']; } // Get the title of the linked chart if ((int) $this->value > 0) { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select($db->quoteName('name')) ->from($db->quoteName('#__contact_details')) ->where('id = ' . (int) $this->value); $db->setQuery($query); try { $title = $db->loadResult(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); } } if (empty($title)) { $title = JText::_('COM_CONTACT_SELECT_A_CONTACT'); } $title = htmlspecialchars($title, ENT_QUOTES, 'UTF-8'); // The active contact id field. if (0 == (int) $this->value) { $value = ''; } else { $value = (int) $this->value; } // The current contact display field. $html[] = '<span class="input-append">'; $html[] = '<input type="text" class="input-medium" id="' . $this->id . '_name" value="' . $title . '" disabled="disabled" size="35" />'; $html[] = '<a href="#modalContact' . $this->id . '" class="btn hasTooltip" role="button" data-toggle="modal"' . ' title="' . JHtml::tooltipText('COM_CONTACT_CHANGE_CONTACT') . '">' . '<span class="icon-file"></span> ' . JText::_('JSELECT') . '</a>'; $html[] = JHtml::_( 'bootstrap.renderModal', 'modalContact' . $this->id, array( 'url' => $link . '&' . JSession::getFormToken() . '=1"', 'title' => JText::_('COM_CONTACT_CHANGE_CONTACT'), 'width' => '800px', 'height' => '300px', 'footer' => '<button class="btn" data-dismiss="modal" aria-hidden="true">' . JText::_("JLIB_HTML_BEHAVIOR_CLOSE") . '</button>' ) ); // Edit contact button. if ($allowEdit) { $html[] = '<a' . ' class="btn hasTooltip' . ($value ? '' : ' hidden') . '"' . ' href="index.php?option=com_contact&layout=modal&tmpl=component&task=contact.edit&id=' . $value . '"' . ' target="_blank"' . ' title="' . JHtml::tooltipText('COM_CONTACT_EDIT_CONTACT') . '" >' . '<span class="icon-edit"></span>' . JText::_('JACTION_EDIT') . '</a>'; } // Clear contact button if ($allowClear) { $html[] = '<button' . ' id="' . $this->id . '_clear"' . ' class="btn' . ($value ? '' : ' hidden') . '"' . ' onclick="return jClearContact(\'' . $this->id . '\')">' . '<span class="icon-remove"></span>' . JText::_('JCLEAR') . '</button>'; } $html[] = '</span>'; // Note: class='required' for client side validation. $class = ''; if ($this->required) { $class = ' class="required modal-value"'; } $html[] = '<input type="hidden" id="' . $this->id . '_id"' . $class . ' name="' . $this->name . '" value="' . $value . '" />'; return implode("\n", $html); } /** * Method to get the field label markup. * * @return string The field label markup. * * @since 3.4 */ protected function getLabel() { return str_replace($this->id, $this->id . '_id', parent::getLabel()); } } PKb��\c�x��7�7)components/com_contact/models/contact.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; JLoader::register('ContactHelper', JPATH_ADMINISTRATOR . '/components/com_contact/helpers/contact.php'); /** * Item Model for a Contact. * * @since 1.6 */ class ContactModelContact extends JModelAdmin { /** * The type alias for this content type. * * @var string * @since 3.2 */ public $typeAlias = 'com_contact.contact'; /** * The context used for the associations table * * @var string * @since 3.4.4 */ protected $associationsContext = 'com_contact.item'; /** * Batch copy/move command. If set to false, * the batch copy/move command is not supported * * @var string */ protected $batch_copymove = 'category_id'; /** * Allowed batch commands * * @var array */ protected $batch_commands = array( 'assetgroup_id' => 'batchAccess', 'language_id' => 'batchLanguage', 'tag' => 'batchTag', 'user_id' => 'batchUser' ); /** * Batch copy items to a new category or current. * * @param integer $value The new category. * @param array $pks An array of row IDs. * @param array $contexts An array of item contexts. * * @return mixed An array of new IDs on success, boolean false on failure. * * @since 11.1 */ protected function batchCopy($value, $pks, $contexts) { $categoryId = (int) $value; $table = $this->getTable(); $newIds = array(); if (!parent::checkCategoryId($categoryId)) { return false; } // Parent exists so we proceed while (!empty($pks)) { // Pop the first ID off the stack $pk = array_shift($pks); $this->table->reset(); // Check that the row actually exists if (!$this->table->load($pk)) { if ($error = $this->table->getError()) { // Fatal error $this->setError($error); return false; } else { // Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } } // Alter the title & alias $data = $this->generateNewTitle($categoryId, $this->table->alias, $this->table->name); $this->table->name = $data['0']; $this->table->alias = $data['1']; // Reset the ID because we are making a copy $this->table->id = 0; // New category ID $this->table->catid = $categoryId; // Unpublish because we are making a copy $this->table->published = 0; // TODO: Deal with ordering? // Check the row. if (!$this->table->check()) { $this->setError($this->table->getError()); return false; } parent::createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); // Store the row. if (!$this->table->store()) { $this->setError($this->table->getError()); return false; } // Get the new item ID $newId = $this->table->get('id'); // Add the new ID to the array $newIds[$pk] = $newId; } // Clean the cache $this->cleanCache(); return $newIds; } /** * Batch change a linked user. * * @param integer $value The new value matching a User ID. * @param array $pks An array of row IDs. * @param array $contexts An array of item contexts. * * @return boolean True if successful, false otherwise and internal error is set. * * @since 2.5 */ protected function batchUser($value, $pks, $contexts) { foreach ($pks as $pk) { if ($this->user->authorise('core.edit', $contexts[$pk])) { $this->table->reset(); $this->table->load($pk); $this->table->user_id = (int) $value; static::createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); if (!$this->table->store()) { $this->setError($this->table->getError()); return false; } } else { $this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT')); return false; } } // Clean the cache $this->cleanCache(); return true; } /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to delete the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canDelete($record) { if (!empty($record->id)) { if ($record->published != -2) { return; } $user = JFactory::getUser(); return $user->authorise('core.delete', 'com_contact.category.' . (int) $record->catid); } } /** * Method to test whether a record can have its state edited. * * @param object $record A record object. * * @return boolean True if allowed to change the state of the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canEditState($record) { // Check against the category. if (!empty($record->catid)) { $user = JFactory::getUser(); return $user->authorise('core.edit.state', 'com_contact.category.' . (int) $record->catid); } // Default to component settings if category not known. else { return parent::canEditState($record); } } /** * Returns a Table object, always creating it * * @param type $type The table type to instantiate * @param string $prefix A prefix for the table class name. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A database object * * @since 1.6 */ public function getTable($type = 'Contact', $prefix = 'ContactTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Method to get the row form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return mixed A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { JForm::addFieldPath('JPATH_ADMINISTRATOR/components/com_users/models/fields'); // Get the form. $form = $this->loadForm('com_contact.contact', 'contact', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } // Modify the form based on access controls. if (!$this->canEditState((object) $data)) { // Disable fields for display. $form->setFieldAttribute('featured', 'disabled', 'true'); $form->setFieldAttribute('ordering', 'disabled', 'true'); $form->setFieldAttribute('published', 'disabled', 'true'); // Disable fields while saving. // The controller has already verified this is a record you can edit. $form->setFieldAttribute('featured', 'filter', 'unset'); $form->setFieldAttribute('ordering', 'filter', 'unset'); $form->setFieldAttribute('published', 'filter', 'unset'); } return $form; } /** * Method to get a single record. * * @param integer $pk The id of the primary key. * * @return mixed Object on success, false on failure. * * @since 1.6 */ public function getItem($pk = null) { if ($item = parent::getItem($pk)) { // Convert the metadata field to an array. $registry = new Registry; $registry->loadString($item->metadata); $item->metadata = $registry->toArray(); } // Load associated contact items $app = JFactory::getApplication(); $assoc = JLanguageAssociations::isEnabled(); if ($assoc) { $item->associations = array(); if ($item->id != null) { $associations = JLanguageAssociations::getAssociations('com_contact', '#__contact_details', 'com_contact.item', $item->id); foreach ($associations as $tag => $association) { $item->associations[$tag] = $association->id; } } } // Load item tags if (!empty($item->id)) { $item->tags = new JHelperTags; $item->tags->getTagIds($item->id, 'com_contact.contact'); } return $item; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_contact.edit.contact.data', array()); if (empty($data)) { $data = $this->getItem(); // Prime some default values. if ($this->getState('contact.id') == 0) { $app = JFactory::getApplication(); $data->set('catid', $app->input->get('catid', $app->getUserState('com_contact.contacts.filter.category_id'), 'int')); } } $this->preprocessData('com_contact.contact', $data); return $data; } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 3.0 */ public function save($data) { $input = JFactory::getApplication()->input; // Alter the name for save as copy if ($input->get('task') == 'save2copy') { $origTable = clone $this->getTable(); $origTable->load($input->getInt('id')); if ($data['name'] == $origTable->name) { list($name, $alias) = $this->generateNewTitle($data['catid'], $data['alias'], $data['name']); $data['name'] = $name; $data['alias'] = $alias; } else { if ($data['alias'] == $origTable->alias) { $data['alias'] = ''; } } $data['published'] = 0; } $links = array('linka', 'linkb', 'linkc', 'linkd', 'linke'); foreach ($links as $link) { if ($data['params'][$link]) { $data['params'][$link] = JStringPunycode::urlToPunycode($data['params'][$link]); } } return parent::save($data); } /** * Prepare and sanitise the table prior to saving. * * @param JTable $table The JTable object * * @return void * * @since 1.6 */ protected function prepareTable($table) { $date = JFactory::getDate(); $user = JFactory::getUser(); $table->name = htmlspecialchars_decode($table->name, ENT_QUOTES); $table->generateAlias(); if (empty($table->id)) { // Set the values $table->created = $date->toSql(); // Set ordering to the last item if not set if (empty($table->ordering)) { $db = $this->getDbo(); $query = $db->getQuery(true) ->select('MAX(ordering)') ->from($db->quoteName('#__contact_details')); $db->setQuery($query); $max = $db->loadResult(); $table->ordering = $max + 1; } } else { // Set the values $table->modified = $date->toSql(); $table->modified_by = $user->get('id'); } // Increment the content version number. $table->version++; } /** * A protected method to get a set of ordering conditions. * * @param JTable $table A record object. * * @return array An array of conditions to add to add to ordering queries. * * @since 1.6 */ protected function getReorderConditions($table) { $condition = array(); $condition[] = 'catid = ' . (int) $table->catid; return $condition; } /** * Preprocess the form. * * @param JForm $form Form object. * @param object $data Data object. * @param string $group Group name. * * @return void */ protected function preprocessForm(JForm $form, $data, $group = 'content') { // Association content items $app = JFactory::getApplication(); $assoc = JLanguageAssociations::isEnabled(); if ($assoc) { $languages = JLanguageHelper::getLanguages('lang_code'); $addform = new SimpleXMLElement('<form />'); $fields = $addform->addChild('fields'); $fields->addAttribute('name', 'associations'); $fieldset = $fields->addChild('fieldset'); $fieldset->addAttribute('name', 'item_associations'); $fieldset->addAttribute('description', 'COM_CONTACT_ITEM_ASSOCIATIONS_FIELDSET_DESC'); $add = false; foreach ($languages as $tag => $language) { if (empty($data->language) || $tag != $data->language) { $add = true; $field = $fieldset->addChild('field'); $field->addAttribute('name', $tag); $field->addAttribute('type', 'modal_contact'); $field->addAttribute('language', $tag); $field->addAttribute('label', $language->title); $field->addAttribute('translate_label', 'false'); $field->addAttribute('edit', 'true'); $field->addAttribute('clear', 'true'); } } if ($add) { $form->load($addform, false); } } parent::preprocessForm($form, $data, $group); } /** * Method to toggle the featured setting of contacts. * * @param array $pks The ids of the items to toggle. * @param integer $value The value to toggle to. * * @return boolean True on success. * * @since 1.6 */ public function featured($pks, $value = 0) { // Sanitize the ids. $pks = (array) $pks; JArrayHelper::toInteger($pks); if (empty($pks)) { $this->setError(JText::_('COM_CONTACT_NO_ITEM_SELECTED')); return false; } $table = $this->getTable(); try { $db = $this->getDbo(); $query = $db->getQuery(true); $query->update('#__contact_details'); $query->set('featured = ' . (int) $value); $query->where('id IN (' . implode(',', $pks) . ')'); $db->setQuery($query); $db->execute(); } catch (Exception $e) { $this->setError($e->getMessage()); return false; } $table->reorder(); // Clean component's cache $this->cleanCache(); return true; } /** * Method to change the title & alias. * * @param integer $category_id The id of the parent. * @param string $alias The alias. * @param string $name The title. * * @return array Contains the modified title and alias. * * @since 3.1 */ protected function generateNewTitle($category_id, $alias, $name) { // Alter the title & alias $table = $this->getTable(); while ($table->load(array('alias' => $alias, 'catid' => $category_id))) { if ($name == $table->name) { $name = JString::increment($name); } $alias = JString::increment($alias, 'dash'); } return array($name, $alias); } } PKb��\���TT/components/com_contact/models/forms/contact.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset addfieldpath="/administrator/components/com_categories/models/fields"> <field name="id" type="text" label="JGLOBAL_FIELD_ID_LABEL" description="JGLOBAL_FIELD_ID_DESC" size="10" default="0" readonly="true" class="readonly" /> <field name="name" type="text" label="COM_CONTACT_FIELD_NAME_LABEL" description="COM_CONTACT_FIELD_NAME_DESC" class="input-xxlarge input-large-text" size="40" required="true" /> <field name="alias" type="text" label="JFIELD_ALIAS_LABEL" description="JFIELD_ALIAS_DESC" hint="JFIELD_ALIAS_PLACEHOLDER" size="45" /> <field name="version_note" type="text" label="JGLOBAL_FIELD_VERSION_NOTE_LABEL" description="JGLOBAL_FIELD_VERSION_NOTE_DESC" maxlength="255" class="span12" size="45" labelclass="control-label" /> <field name="user_id" type="user" label="COM_CONTACT_FIELD_LINKED_USER_LABEL" description="COM_CONTACT_FIELD_LINKED_USER_DESC" /> <field id="published" name="published" type="list" label="JSTATUS" description="JFIELD_PUBLISHED_DESC" class="chzn-color-state" size="1" default="1" > <option value="1"> JPUBLISHED</option> <option value="0"> JUNPUBLISHED</option> <option value="2"> JARCHIVED</option> <option value="-2"> JTRASHED</option> </field> <field name="catid" type="categoryedit" extension="com_contact" label="JCATEGORY" description="JFIELD_CATEGORY_DESC" required="true" /> <field name="access" type="accesslevel" label="JFIELD_ACCESS_LABEL" description="JFIELD_ACCESS_DESC" size="1" /> <field name="misc" type="editor" label="COM_CONTACT_FIELD_INFORMATION_MISC_LABEL" description="COM_CONTACT_FIELD_INFORMATION_MISC_DESC" filter="JComponentHelper::filterText" buttons="true" hide="readmore,pagebreak" /> <field name="created_by" type="user" label="JGLOBAL_FIELD_CREATED_BY_LABEL" description="COM_CONTACT_FIELD_CREATED_BY_DESC" /> <field name="created_by_alias" type="text" label="COM_CONTACT_FIELD_CREATED_BY_ALIAS_LABEL" description="COM_CONTACT_FIELD_CREATED_BY_ALIAS_DESC" size="20" /> <field name="created" type="calendar" label="COM_CONTACT_FIELD_CREATED_LABEL" description="COM_CONTACT_FIELD_CREATED_DESC" size="22" format="%Y-%m-%d %H:%M:%S" filter="user_utc" /> <field name="modified" type="calendar" class="readonly" label="JGLOBAL_FIELD_MODIFIED_LABEL" description="COM_CONTACT_FIELD_MODIFIED_DESC" size="22" readonly="true" format="%Y-%m-%d %H:%M:%S" filter="user_utc" /> <field name="modified_by" type="user" label="JGLOBAL_FIELD_MODIFIED_BY_LABEL" class="readonly" readonly="true" filter="unset"/> <field name="checked_out" type="hidden" filter="unset" /> <field name="checked_out_time" type="hidden" filter="unset" /> <field name="ordering" type="ordering" label="JFIELD_ORDERING_LABEL" description="JFIELD_ORDERING_DESC" content_type="com_contact.contact" /> <field name="publish_up" type="calendar" label="COM_CONTACT_FIELD_PUBLISH_UP_LABEL" description="COM_CONTACT_FIELD_PUBLISH_UP_DESC" format="%Y-%m-%d %H:%M:%S" size="22" filter="user_utc" /> <field name="publish_down" type="calendar" label="COM_CONTACT_FIELD_PUBLISH_DOWN_LABEL" description="COM_CONTACT_FIELD_PUBLISH_DOWN_DESC" format="%Y-%m-%d %H:%M:%S" size="22" filter="user_utc" /> <field name="metakey" type="textarea" label="JFIELD_META_KEYWORDS_LABEL" description="JFIELD_META_KEYWORDS_DESC" rows="3" cols="30" /> <field name="metadesc" type="textarea" label="JFIELD_META_DESCRIPTION_LABEL" description="JFIELD_META_DESCRIPTION_DESC" rows="3" cols="30" /> <field name="language" type="contentlanguage" label="JFIELD_LANGUAGE_LABEL" description="COM_CONTACT_FIELD_LANGUAGE_DESC" > <option value="*">JALL</option> </field> <field name="featured" type="radio" class="btn-group btn-group-yesno" label="JFEATURED" description="COM_CONTACT_FIELD_FEATURED_DESC" default="0" > <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="tags" type="tag" label="JTAG" description="JTAG_DESC" class="span12" multiple="true" > </field> <field name="contact_icons" type="list" default="0" label="COM_CONTACT_FIELD_ICONS_SETTINGS" description="COM_CONTACT_FIELD_ICONS_SETTINGS_DESC" > <option value="0">COM_CONTACT_FIELD_VALUE_NONE </option> <option value="1">COM_CONTACT_FIELD_VALUE_TEXT </option> <option value="2">COM_CONTACT_FIELD_VALUE_ICONS </option> </field> <field name="icon_address" type="media" hide_none="1" label="COM_CONTACT_FIELD_ICONS_ADDRESS_LABEL" description="COM_CONTACT_FIELD_ICONS_ADDRESS_DESC" /> <field name="icon_email" type="media" hide_none="1" label="COM_CONTACT_FIELD_ICONS_EMAIL_LABEL" description="COM_CONTACT_FIELD_ICONS_EMAIL_DESC" /> <field name="icon_telephone" type="media" hide_none="1" label="COM_CONTACT_FIELD_ICONS_TELEPHONE_LABEL" description="COM_CONTACT_FIELD_ICONS_TELEPHONE_DESC" /> <field name="icon_mobile" type="media" hide_none="1" label="COM_CONTACT_FIELD_ICONS_MOBILE_LABEL" description="COM_CONTACT_FIELD_ICONS_MOBILE_DESC" /> <field name="icon_fax" type="media" hide_none="1" label="COM_CONTACT_FIELD_ICONS_FAX_LABEL" description="COM_CONTACT_FIELD_ICONS_FAX_DESC" /> <field name="icon_misc" type="media" hide_none="1" label="COM_CONTACT_FIELD_ICONS_MISC_LABEL" description="COM_CONTACT_FIELD_ICONS_MISC_DESC" /> </fieldset> <fieldset name="details" label="COM_CONTACT_CONTACT_DETAILS"> <field name="@text_details" type="note" label="" description="COM_CONTACT_EDIT_DETAILS" /> <field name="image" type="media" hide_none="1" label="COM_CONTACT_FIELD_PARAMS_IMAGE_LABEL" description="COM_CONTACT_FIELD_PARAMS_IMAGE_DESC" /> <field name="con_position" type="text" label="COM_CONTACT_FIELD_INFORMATION_POSITION_LABEL" description="COM_CONTACT_FIELD_INFORMATION_POSITION_DESC" size="30" /> <field name="email_to" type="email" label="JGLOBAL_EMAIL" description="COM_CONTACT_FIELD_INFORMATION_EMAIL_DESC" size="30" /> <field name="address" type="textarea" label="COM_CONTACT_FIELD_INFORMATION_ADDRESS_LABEL" description="COM_CONTACT_FIELD_INFORMATION_ADDRESS_DESC" rows="3" cols="30" /> <field name="suburb" type="text" label="COM_CONTACT_FIELD_INFORMATION_SUBURB_LABEL" description="COM_CONTACT_FIELD_INFORMATION_SUBURB_DESC" size="30" /> <field name="state" type="text" label="COM_CONTACT_FIELD_INFORMATION_STATE_LABEL" description="COM_CONTACT_FIELD_INFORMATION_STATE_DESC" size="30" /> <field name="postcode" type="text" label="COM_CONTACT_FIELD_INFORMATION_POSTCODE_LABEL" description="COM_CONTACT_FIELD_INFORMATION_POSTCODE_DESC" size="30" /> <field name="country" type="text" label="COM_CONTACT_FIELD_INFORMATION_COUNTRY_LABEL" description="COM_CONTACT_FIELD_INFORMATION_COUNTRY_DESC" size="30" /> <field name="telephone" type="text" label="COM_CONTACT_FIELD_INFORMATION_TELEPHONE_LABEL" description="COM_CONTACT_FIELD_INFORMATION_TELEPHONE_DESC" size="30" /> <field name="mobile" type="text" label="COM_CONTACT_FIELD_INFORMATION_MOBILE_LABEL" description="COM_CONTACT_FIELD_INFORMATION_MOBILE_DESC" size="30" /> <field name="fax" type="text" label="COM_CONTACT_FIELD_INFORMATION_FAX_LABEL" description="COM_CONTACT_FIELD_INFORMATION_FAX_DESC" size="30" /> <field name="webpage" type="url" filter="url" label="COM_CONTACT_FIELD_INFORMATION_WEBPAGE_LABEL" description="COM_CONTACT_FIELD_INFORMATION_WEBPAGE_DESC" size="30" /> <field name="sortname1" type="text" label="COM_CONTACT_FIELD_SORTNAME1_LABEL" description="COM_CONTACT_FIELD_SORTNAME1_DESC" size="30" /> <field name="sortname2" type="text" label="COM_CONTACT_FIELD_SORTNAME2_LABEL" description="COM_CONTACT_FIELD_SORTNAME2_DESC" size="30" /> <field name="sortname3" type="text" label="COM_CONTACT_FIELD_SORTNAME3_LABEL" description="COM_CONTACT_FIELD_SORTNAME3_DESC" size="30" /> </fieldset> <fields name="params" label="JGLOBAL_FIELDSET_DISPLAY_OPTIONS"> <fieldset name="display" label="JGLOBAL_FIELDSET_DISPLAY_OPTIONS"> <field name="show_contact_category" type="list" label="JGLOBAL_SHOW_CATEGORY_LABEL" description="COM_CONTACT_FIELD_SHOW_CATEGORY_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="hide">JHIDE</option> <option value="show_no_link">COM_CONTACT_FIELD_VALUE_NO_LINK </option> <option value="show_with_link">COM_CONTACT_FIELD_VALUE_WITH_LINK </option> </field> <field name="show_contact_list" type="list" class="chzn-color" label="COM_CONTACT_FIELD_CONTACT_SHOW_LIST_LABEL" description="COM_CONTACT_FIELD_CONTACT_SHOW_LIST_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="presentation_style" type="list" description="COM_CONTACT_FIELD_PRESENTATION_DESC" label="COM_CONTACT_FIELD_PRESENTATION_LABEL" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="sliders">COM_CONTACT_FIELD_VALUE_SLIDERS</option> <option value="tabs">COM_CONTACT_FIELD_VALUE_TABS</option> <option value="plain">COM_CONTACT_FIELD_VALUE_PLAIN</option> </field> <field name="show_tags" type="list" class="chzn-color" label="COM_CONTACT_FIELD_SHOW_TAGS_LABEL" description="COM_CONTACT_FIELD_SHOW_TAGS_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_name" type="list" class="chzn-color" label="COM_CONTACT_FIELD_PARAMS_NAME_LABEL" description="COM_CONTACT_FIELD_PARAMS_NAME_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_position" type="list" class="chzn-color" label="COM_CONTACT_FIELD_PARAMS_CONTACT_POSITION_LABEL" description="COM_CONTACT_FIELD_PARAMS_CONTACT_POSITION_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_email" type="list" class="chzn-color" label="JGLOBAL_EMAIL" description="COM_CONTACT_FIELD_PARAMS_CONTACT_E_MAIL_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_street_address" type="list" class="chzn-color" label="COM_CONTACT_FIELD_PARAMS_STREET_ADDRESS_LABEL" description="COM_CONTACT_FIELD_PARAMS_STREET_ADDRESS_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_suburb" type="list" class="chzn-color" label="COM_CONTACT_FIELD_PARAMS_TOWN-SUBURB_LABEL" description="COM_CONTACT_FIELD_PARAMS_TOWN-SUBURB_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_state" type="list" class="chzn-color" label="COM_CONTACT_FIELD_PARAMS_STATE-COUNTY_LABEL" description="COM_CONTACT_FIELD_PARAMS_STATE-COUNTY_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_postcode" type="list" class="chzn-color" label="COM_CONTACT_FIELD_PARAMS_POST-ZIP_CODE_LABEL" description="COM_CONTACT_FIELD_PARAMS_POST-ZIP_CODE_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_country" type="list" class="chzn-color" label="COM_CONTACT_FIELD_PARAMS_COUNTRY_LABEL" description="COM_CONTACT_FIELD_PARAMS_COUNTRY_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_telephone" type="list" class="chzn-color" label="COM_CONTACT_FIELD_PARAMS_TELEPHONE_LABEL" description="COM_CONTACT_FIELD_PARAMS_TELEPHONE_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_mobile" type="list" class="chzn-color" label="COM_CONTACT_FIELD_PARAMS_MOBILE_LABEL" description="COM_CONTACT_FIELD_PARAMS_MOBILE_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_fax" type="list" class="chzn-color" label="COM_CONTACT_FIELD_PARAMS_FAX_LABEL" description="COM_CONTACT_FIELD_PARAMS_FAX_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_webpage" type="list" class="chzn-color" label="COM_CONTACT_FIELD_PARAMS_WEBPAGE_LABEL" description="COM_CONTACT_FIELD_PARAMS_WEBPAGE_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_misc" type="list" class="chzn-color" label="COM_CONTACT_FIELD_PARAMS_MISC_INFO_LABEL" description="COM_CONTACT_FIELD_PARAMS_MISC_INFO_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_image" type="list" class="chzn-color" label="COM_CONTACT_FIELD_PARAMS_SHOW_IMAGE_LABEL" description="COM_CONTACT_FIELD_PARAMS_SHOW_IMAGE_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="allow_vcard" type="list" class="chzn-color" label="COM_CONTACT_FIELD_PARAMS_VCARD_LABEL" description="COM_CONTACT_FIELD_PARAMS_VCARD_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_articles" label="COM_CONTACT_FIELD_ARTICLES_SHOW_LABEL" description="COM_CONTACT_FIELD_ARTICLES_SHOW_DESC" type="list" class="chzn-color" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="articles_display_num" type="list" default="" label="COM_CONTACT_FIELD_ARTICLES_DISPLAY_NUM_LABEL" description="COM_CONTACT_FIELD_ARTICLES_DISPLAY_NUM_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="5">J5</option> <option value="10">J10</option> <option value="15">J15</option> <option value="20">J20</option> <option value="25">J25</option> <option value="30">J30</option> <option value="50">J50</option> <option value="75">J75</option> <option value="100">J100</option> <option value="150">J150</option> <option value="200">J200</option> <option value="250">J250</option> <option value="300">J300</option> <option value="0">JALL</option> </field> <field name="show_profile" type="list" class="chzn-color" label="COM_CONTACT_FIELD_PROFILE_SHOW_LABEL" description="COM_CONTACT_FIELD_PROFILE_SHOW_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_links" label="COM_CONTACT_FIELD_SHOW_LINKS_LABEL" description="COM_CONTACT_FIELD_SHOW_LINKS_DESC" type="list" class="chzn-color" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="linka_name" type="text" label="COM_CONTACT_FIELD_LINKA_NAME_LABEL" description="COM_CONTACT_FIELD_LINK_NAME_DESC" size="30" /> <field name="linka" type="url" filter="url" label="COM_CONTACT_FIELD_LINKA_LABEL" description="COM_CONTACT_FIELD_LINKA_DESC" size="30" /> <field name="linkb_name" type="text" label="COM_CONTACT_FIELD_LINKB_NAME_LABEL" description="COM_CONTACT_FIELD_LINK_NAME_DESC" size="30" /> <field name="linkb" type="url" filter="url" label="COM_CONTACT_FIELD_LINKB_LABEL" description="COM_CONTACT_FIELD_LINKB_DESC" size="30" /> <field name="linkc_name" type="text" label="COM_CONTACT_FIELD_LINKC_NAME_LABEL" description="COM_CONTACT_FIELD_LINK_NAME_DESC" size="30" /> <field name="linkc" type="url" filter="url" label="COM_CONTACT_FIELD_LINKC_LABEL" description="COM_CONTACT_FIELD_LINKC_DESC" size="30" /> <field name="linkd_name" type="text" label="COM_CONTACT_FIELD_LINKD_NAME_LABEL" description="COM_CONTACT_FIELD_LINK_NAME_DESC" size="30" /> <field name="linkd" type="url" filter="url" label="COM_CONTACT_FIELD_LINKD_LABEL" description="COM_CONTACT_FIELD_LINKD_DESC" size="30" /> <field name="linke_name" type="text" label="COM_CONTACT_FIELD_LINKE_NAME_LABEL" description="COM_CONTACT_FIELD_LINK_NAME_DESC" size="30" /> <field name="linke" type="url" filter="url" label="COM_CONTACT_FIELD_LINKE_LABEL" description="COM_CONTACT_FIELD_LINKE_DESC" size="30" /> <field name="contact_layout" type="componentlayout" label="JFIELD_ALT_LAYOUT_LABEL" description="JFIELD_ALT_COMPONENT_LAYOUT_DESC" extension="com_contact" view="contact" useglobal="true" /> </fieldset> <fieldset name="email" label="COM_CONTACT_FIELDSET_CONTACT_LABEL" > <field name="show_email_form" type="list" class="chzn-color" label="COM_CONTACT_FIELD_EMAIL_SHOW_FORM_LABEL" description="COM_CONTACT_FIELD_EMAIL_SHOW_FORM_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_email_copy" type="list" class="chzn-color" label="COM_CONTACT_FIELD_EMAIL_EMAIL_COPY_LABEL" description="COM_CONTACT_FIELD_EMAIL_EMAIL_COPY_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="banned_email" type="textarea" label="COM_CONTACT_FIELD_EMAIL_BANNED_EMAIL_LABEL" rows="3" cols="30" description="COM_CONTACT_FIELD_EMAIL_BANNED_EMAIL_DESC" /> <field name="banned_subject" type="textarea" label="COM_CONTACT_FIELD_EMAIL_BANNED_SUBJECT_LABEL" rows="3" cols="30" description="COM_CONTACT_FIELD_EMAIL_BANNED_SUBJECT_DESC" /> <field name="banned_text" type="textarea" label="COM_CONTACT_FIELD_EMAIL_BANNED_TEXT_LABEL" rows="3" cols="30" description="COM_CONTACT_FIELD_EMAIL_BANNED_TEXT_DESC" /> <field name="validate_session" type="list" class="chzn-color" label="COM_CONTACT_FIELD_CONFIG_SESSION_CHECK_LABEL" description="COM_CONTACT_FIELD_CONFIG_SESSION_CHECK_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JNO</option> <option value="1">JYES</option> </field> <field name="custom_reply" type="list" class="chzn-color" label="COM_CONTACT_FIELD_CONFIG_CUSTOM_REPLY_LABEL" description="COM_CONTACT_FIELD_CONFIG_CUSTOM_REPLY_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JNO</option> <option value="1">JYES</option> </field> <field name="redirect" type="text" size="30" label="COM_CONTACT_FIELD_CONFIG_REDIRECT_LABEL" description="COM_CONTACT_FIELD_CONFIG_REDIRECT_DESC" /> </fieldset> </fields> <fields name="metadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS"> <fieldset name="jmetadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS"> <field name="robots" type="list" label="JFIELD_METADATA_ROBOTS_LABEL" description="JFIELD_METADATA_ROBOTS_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="index, follow">JGLOBAL_INDEX_FOLLOW</option> <option value="noindex, follow">JGLOBAL_NOINDEX_FOLLOW</option> <option value="index, nofollow">JGLOBAL_INDEX_NOFOLLOW</option> <option value="noindex, nofollow">JGLOBAL_NOINDEX_NOFOLLOW</option> </field> <field name="rights" type="text" label="JFIELD_METADATA_RIGHTS_LABEL" description="JFIELD_METADATA_RIGHTS_DESC" size="20" /> </fieldset> </fields> <field name="hits" type="text" class="readonly" size="6" label="JGLOBAL_HITS" description="COM_CONTACT_HITS_DESC" readonly="true" filter="unset" /> <field name="version" type="text" class="readonly" label="COM_CONTACT_FIELD_VERSION_LABEL" size="6" description="COM_CONTACT_FIELD_VERSION_DESC" readonly="true" filter="unset" /> </form> PKb��\����%�%*components/com_contact/models/contacts.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Methods supporting a list of contact records. * * @since 1.6 */ class ContactModelContacts extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'name', 'a.name', 'alias', 'a.alias', 'checked_out', 'a.checked_out', 'checked_out_time', 'a.checked_out_time', 'catid', 'a.catid', 'category_title', 'user_id', 'a.user_id', 'published', 'a.published', 'access', 'a.access', 'access_level', 'created', 'a.created', 'created_by', 'a.created_by', 'ordering', 'a.ordering', 'featured', 'a.featured', 'language', 'a.language', 'publish_up', 'a.publish_up', 'publish_down', 'a.publish_down', 'ul.name', 'linked_user', ); $assoc = JLanguageAssociations::isEnabled(); if ($assoc) { $config['filter_fields'][] = 'association'; } } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication(); // Adjust the context to support modal layouts. if ($layout = $app->input->get('layout')) { $this->context .= '.' . $layout; } $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $access = $this->getUserStateFromRequest($this->context . '.filter.access', 'filter_access', 0, 'int'); $this->setState('filter.access', $access); $published = $this->getUserStateFromRequest($this->context . '.filter.published', 'filter_published', ''); $this->setState('filter.published', $published); $categoryId = $this->getUserStateFromRequest($this->context . '.filter.category_id', 'filter_category_id'); $this->setState('filter.category_id', $categoryId); $language = $this->getUserStateFromRequest($this->context . '.filter.language', 'filter_language', ''); $this->setState('filter.language', $language); // Force a language. $forcedLanguage = $app->input->get('forcedLanguage'); if (!empty($forcedLanguage)) { $this->setState('filter.language', $forcedLanguage); $this->setState('filter.forcedLanguage', $forcedLanguage); } $tag = $this->getUserStateFromRequest($this->context . '.filter.tag', 'filter_tag', ''); $this->setState('filter.tag', $tag); // List state information. parent::populateState('a.name', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. * * @since 1.6 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.access'); $id .= ':' . $this->getState('filter.published'); $id .= ':' . $this->getState('filter.category_id'); $id .= ':' . $this->getState('filter.language'); return parent::getStoreId($id); } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery * * @since 1.6 */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); $user = JFactory::getUser(); // Select the required fields from the table. $query->select( $db->quoteName( explode(', ', $this->getState( 'list.select', 'a.id, a.name, a.alias, a.checked_out, a.checked_out_time, a.catid, a.user_id' . ', a.published, a.access, a.created, a.created_by, a.ordering, a.featured, a.language' . ', a.publish_up, a.publish_down' ) ) ) ); $query->from($db->quoteName('#__contact_details', 'a')); // Join over the users for the linked user. $query->select( array( $db->quoteName('ul.name', 'linked_user'), $db->quoteName('ul.email') ) ) ->join( 'LEFT', $db->quoteName('#__users', 'ul') . ' ON ' . $db->quoteName('ul.id') . ' = ' . $db->quoteName('a.user_id') ); // Join over the language $query->select($db->quoteName('l.title', 'language_title')) ->join( 'LEFT', $db->quoteName('#__languages', 'l') . ' ON ' . $db->quoteName('l.lang_code') . ' = ' . $db->quoteName('a.language') ); // Join over the users for the checked out user. $query->select($db->quoteName('uc.name', 'editor')) ->join( 'LEFT', $db->quoteName('#__users', 'uc') . ' ON ' . $db->quoteName('uc.id') . ' = ' . $db->quoteName('a.checked_out') ); // Join over the asset groups. $query->select($db->quoteName('ag.title', 'access_level')) ->join( 'LEFT', $db->quoteName('#__viewlevels', 'ag') . ' ON ' . $db->quoteName('ag.id') . ' = ' . $db->quoteName('a.access') ); // Join over the categories. $query->select($db->quoteName('c.title', 'category_title')) ->join( 'LEFT', $db->quoteName('#__categories', 'c') . ' ON ' . $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid') ); // Join over the associations. $assoc = JLanguageAssociations::isEnabled(); if ($assoc) { $query->select('COUNT(' . $db->quoteName('asso2.id') . ') > 1 as ' . $db->quoteName('association')) ->join( 'LEFT', $db->quoteName('#__associations', 'asso') . ' ON ' . $db->quoteName('asso.id') . ' = ' . $db->quoteName('a.id') . ' AND ' . $db->quoteName('asso.context') . ' = ' . $db->quote('com_contact.item') ) ->join( 'LEFT', $db->quoteName('#__associations', 'asso2') . ' ON ' . $db->quoteName('asso2.key') . ' = ' . $db->quoteName('asso.key') ) ->group( $db->quoteName( array( 'a.id', 'ul.name', 'l.title', 'uc.name', 'ag.title', 'c.title' ) ) ); } // Filter by access level. if ($access = $this->getState('filter.access')) { $query->where($db->quoteName('a.access') . ' = ' . (int) $access); } // Implement View Level Access if (!$user->authorise('core.admin')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where($db->quoteName('a.access') . ' IN (' . $groups . ')'); } // Filter by published state $published = $this->getState('filter.published'); if (is_numeric($published)) { $query->where($db->quoteName('a.published') . ' = ' . (int) $published); } elseif ($published === '') { $query->where('(' . $db->quoteName('a.published') . ' = 0 OR ' . $db->quoteName('a.published') . ' = 1)'); } // Filter by a single or group of categories. $categoryId = $this->getState('filter.category_id'); if (is_numeric($categoryId)) { $query->where($db->quoteName('a.catid') . ' = ' . (int) $categoryId); } elseif (is_array($categoryId)) { Joomla\Utilities\ArrayHelper::toInteger($categoryId); $categoryId = implode(',', $categoryId); $query->where($db->quoteName('a.catid') . ' IN (' . $categoryId . ')'); } // Filter by search in name. $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } elseif (stripos($search, 'author:') === 0) { $search = $db->quote('%' . $db->escape(substr($search, 7), true) . '%'); $query->where( '(' . $db->quoteName('uc.name') . ' LIKE ' . $search . ' OR ' . $db->quoteName('uc.username') . ' LIKE ' . $search . ')' ); } else { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where( '(' . $db->quoteName('a.name') . ' LIKE ' . $search . ' OR ' . $db->quoteName('a.alias') . ' LIKE ' . $search . ')' ); } } // Filter on the language. if ($language = $this->getState('filter.language')) { $query->where($db->quoteName('a.language') . ' = ' . $db->quote($language)); } // Filter by a single tag. $tagId = $this->getState('filter.tag'); if (is_numeric($tagId)) { $query->where($db->quoteName('tagmap.tag_id') . ' = ' . (int) $tagId) ->join( 'LEFT', $db->quoteName('#__contentitem_tag_map', 'tagmap') . ' ON ' . $db->quoteName('tagmap.content_item_id') . ' = ' . $db->quoteName('a.id') . ' AND ' . $db->quoteName('tagmap.type_alias') . ' = ' . $db->quote('com_contact.contact') ); } // Add the list ordering clause. $orderCol = $this->state->get('list.ordering', 'a.name'); $orderDirn = $this->state->get('list.direction', 'asc'); if ($orderCol == 'a.ordering' || $orderCol == 'category_title') { $orderCol = $db->quoteName('c.title') . ' ' . $orderDirn . ', ' . $db->quoteName('a.ordering'); } $query->order($db->escape($orderCol . ' ' . $orderDirn)); return $query; } } PKb��\�F��,,%components/com_contact/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_contact * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Component Controller * * @since 1.5 */ class ContactController extends JControllerLegacy { /** * @var string The default view. * @since 1.6 */ protected $default_view = 'contacts'; /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { require_once JPATH_COMPONENT . '/helpers/contact.php'; $view = $this->input->get('view', 'contacts'); $layout = $this->input->get('layout', 'default'); $id = $this->input->getInt('id'); // Check for edit form. if ($view == 'contact' && $layout == 'edit' && !$this->checkEditId('com_contact.edit.contact', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_contact&view=contacts', false)); return false; } parent::display(); return $this; } } PKb��\�?�$��"components/com_contact/contact.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_contact</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_CONTACT_XML_DESCRIPTION</description> <install> <!-- Runs on install --> <sql> <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file> </sql> </install> <uninstall> <!-- Runs on uninstall --> <sql> <file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file> </sql> </uninstall> <files folder="site"> <filename>contact.php</filename> <filename>controller.php</filename> <filename>metadata.xml</filename> <filename>router.php</filename> <folder>helpers</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="site"> <language tag="en-GB">language/en-GB.com_contact.ini</language> </languages> <administration> <menu img="class:contact">com_contact</menu> <submenu> <!-- Note that all & must be escaped to & for the file to be valid XML and be parsed by the installer --> <menu link="option=com_contact" img="class:contact" alt="Contact/Contacts">com_contact_contacts</menu> <menu link="option=com_categories&extension=com_contact" view="categories" img="class:contact-cat" alt="Contacts/Categories">com_contact_categories</menu> </submenu> <files folder="admin"> <filename>access.xml</filename> <filename>config.xml</filename> <filename>contact.php</filename> <filename>controller.php</filename> <folder>controllers</folder> <folder>elements</folder> <folder>helpers</folder> <folder>models</folder> <folder>tables</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_contact.ini</language> <language tag="en-GB">language/en-GB.com_contact.sys.ini</language> </languages> </administration> </extension> PKb��\P�,@�� components/com_config/config.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.tabstate'); // Access checks are done internally because of different requirements for the two controllers. // Tell the browser not to cache this page. JFactory::getApplication()->setHeader('Expires', 'Mon, 26 Jul 1997 05:00:00 GMT', true); // Load classes JLoader::registerPrefix('Config', JPATH_COMPONENT); JLoader::registerPrefix('Config', JPATH_ROOT . '/components/com_config'); // Application $app = JFactory::getApplication(); $controllerHelper = new ConfigControllerHelper; $controller = $controllerHelper->parseController($app); $controller->prefix = 'Config'; // Perform the Request task $controller->execute(); PKb��\�P� � 1components/com_config/controllers/application.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Controller for global configuration * * @since 1.5 * @deprecated 4.0 */ class ConfigControllerApplication extends JControllerLegacy { /** * Class Constructor * * @param array $config An optional associative array of configuration settings. * * @since 1.5 * @deprecated 4.0 */ public function __construct($config = array()) { parent::__construct($config); // Map the apply task to the save method. $this->registerTask('apply', 'save'); } /** * Method to save the configuration. * * @return bool True on success, false on failure. * * @since 1.5 * @deprecated 4.0 Use ConfigControllerApplicationSave instead. */ public function save() { JLog::add('ConfigControllerApplication is deprecated. Use ConfigControllerApplicationSave instead.', JLog::WARNING, 'deprecated'); $controller = new ConfigControllerApplicationSave; return $controller->execute(); } /** * Cancel operation. * * @return boolean True if successful; false otherwise. * * @deprecated 4.0 Use ConfigControllerApplicationCancel instead. */ public function cancel() { JLog::add('ConfigControllerApplication is deprecated. Use ConfigControllerApplicationCancel instead.', JLog::WARNING, 'deprecated'); $controller = new ConfigControllerApplicationCancel; return $controller->execute(); } /** * Method to refresh the help display. * * @return void * * @deprecated 4,0 Use ConfigControllerApplicationRefreshhelp instead. */ public function refreshHelp() { JLog::add('ConfigControllerApplication is deprecated. Use ConfigControllerApplicationRefreshhelp instead.', JLog::WARNING, 'deprecated'); $controller = new ConfigControllerApplicationRefreshhelp; $controller->execute(); } /** * Method to remove the root property from the configuration. * * @return bool True on success, false on failure. * * @since 1.5 * @deprecated 4.0 Use ConfigControllerApplicationRemoveroot instead. */ public function removeroot() { JLog::add('ConfigControllerApplication is deprecated. Use ConfigControllerApplicationRemoveroot instead.', JLog::WARNING, 'deprecated'); $controller = new ConfigControllerApplicationRemoveroot; return $controller->execute(); } } PKb��\��c�33/components/com_config/controllers/component.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Note: this view is intended only to be opened in a popup * * @since 1.5 * @deprecated 4.0 */ class ConfigControllerComponent extends JControllerLegacy { /** * Class Constructor * * @param array $config An optional associative array of configuration settings. * * @since 1.5 * @deprecated 4.0 */ public function __construct($config = array()) { parent::__construct($config); // Map the apply task to the save method. $this->registerTask('apply', 'save'); } /** * Cancel operation * * @return void * * @since 3.0 * @deprecated 4.0 Use ConfigControllerComponentCancel instead. */ public function cancel() { JLog::add('ConfigControllerComponent is deprecated. Use ConfigControllerComponentCancel instead.', JLog::WARNING, 'deprecated'); $controller = new ConfigControllerComponentCancel; $controller->execute(); } /** * Save the configuration. * * @return boolean True if successful; false otherwise. * * @deprecated 4.0 Use ConfigControllerComponentSave instead. */ public function save() { JLog::add('ConfigControllerComponent is deprecated. Use ConfigControllerComponentSave instead.', JLog::WARNING, 'deprecated'); $controller = new ConfigControllerComponentSave; return $controller->execute(); } } PKb��\Q��x��5components/com_config/controller/component/cancel.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Cancel Controller for global configuration components * * @since 3.2 */ class ConfigControllerComponentCancel extends ConfigControllerCanceladmin { /** * Method to cancel global configuration component. * * @return void * * @since 3.2 */ public function execute() { $this->context = 'com_config.config.global'; $this->component = $this->input->get('component'); $this->redirect = 'index.php?option=' . $this->component; parent::execute(); } } PKb��\҇)�443components/com_config/controller/component/save.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Save Controller for global configuration * * @since 3.2 */ class ConfigControllerComponentSave extends JControllerBase { /** * Application object - Redeclared for proper typehinting * * @var JApplicationCms * @since 3.2 */ protected $app; /** * Method to save global configuration. * * @return mixed Calls $app->redirect() * * @since 3.2 */ public function execute() { // Check for request forgeries. if (!JSession::checkToken()) { $this->app->enqueueMessage(JText::_('JINVALID_TOKEN')); $this->app->redirect('index.php'); } // Set FTP credentials, if given. JClientHelper::setCredentialsFromRequest('ftp'); $model = new ConfigModelComponent; $form = $model->getForm(); $data = $this->input->get('jform', array(), 'array'); $id = $this->input->getInt('id'); $option = $this->input->get('component'); $user = JFactory::getUser(); // Check if the user is authorised to do this. if (!$user->authorise('core.admin', $option) && !$user->authorise('core.options', $option)) { $this->app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR')); $this->app->redirect('index.php'); } // Remove the permissions rules data if user isn't allowed to edit them. if (!$user->authorise('core.admin', $option) && isset($data['params']) && isset($data['params']['rules'])) { unset($data['params']['rules']); } $returnUri = $this->input->post->get('return', null, 'base64'); $redirect = ''; if (!empty($returnUri)) { $redirect = '&return=' . urlencode($returnUri); } // Validate the posted data. $return = $model->validate($form, $data); // Check for validation errors. if ($return === false) { /* * The validate method enqueued all messages for us, so we just need to redirect back. */ // Save the data in the session. $this->app->setUserState('com_config.config.global.data', $data); // Redirect back to the edit screen. $this->app->redirect(JRoute::_('index.php?option=com_config&view=component&component=' . $option . $redirect, false)); } // Attempt to save the configuration. $data = array( 'params' => $return, 'id' => $id, 'option' => $option ); try { $model->save($data); } catch (RuntimeException $e) { // Save the data in the session. $this->app->setUserState('com_config.config.global.data', $data); // Save failed, go back to the screen and display a notice. $this->app->enqueueMessage(JText::sprintf('JERROR_SAVE_FAILED', $e->getMessage()), 'error'); $this->app->redirect(JRoute::_('index.php?option=com_config&view=component&component=' . $option . $redirect, false)); } // Set the redirect based on the task. switch ($this->options[3]) { case 'apply': $this->app->enqueueMessage(JText::_('COM_CONFIG_SAVE_SUCCESS')); $this->app->redirect(JRoute::_('index.php?option=com_config&view=component&component=' . $option . $redirect, false)); break; case 'save': default: $redirect = 'index.php?option=' . $option; if (!empty($returnUri)) { $redirect = base64_decode($returnUri); } // Don't redirect to an external URL. if (!JUri::isInternal($redirect)) { $redirect = JUri::base(); } $this->app->redirect(JRoute::_($redirect, false)); break; } return true; } } PKb��\$��446components/com_config/controller/component/display.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Joomla.Config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Base Display Controller * * @since 3.2 * @note Needed for front end view */ class ConfigControllerComponentDisplay extends ConfigControllerDisplay { /** * Prefix for the view and model classes * * @var string * @since 3.2 */ public $prefix = 'Config'; } PKb��\*���;components/com_config/controller/application/removeroot.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Remove Root Controller for global configuration * * @since 3.2 */ class ConfigControllerApplicationRemoveroot extends JControllerBase { /** * Application object - Redeclared for proper typehinting * * @var JApplicationCms * @since 3.2 */ protected $app; /** * Method to remove root in global configuration. * * @return boolean True on success. * * @since 3.2 */ public function execute() { // Check for request forgeries. if (!JSession::checkToken('get')) { $this->app->enqueueMessage(JText::_('JINVALID_TOKEN')); $this->app->redirect('index.php'); } // Check if the user is authorized to do this. if (!JFactory::getUser()->authorise('core.admin')) { $this->app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR')); $this->app->redirect('index.php'); } // Initialise model. $model = new ConfigModelApplication; // Attempt to save the configuration and remove root. try { $model->removeroot(); } catch (RuntimeException $e) { // Save failed, go back to the screen and display a notice. $this->app->enqueueMessage(JText::sprintf('JERROR_SAVE_FAILED', $e->getMessage()), 'error'); $this->app->redirect(JRoute::_('index.php', false)); } // Set the redirect based on the task. $this->app->enqueueMessage(JText::_('COM_CONFIG_SAVE_SUCCESS')); $this->app->redirect(JRoute::_('index.php', false)); } } PKb��\S�n[��<components/com_config/controller/application/refreshhelp.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Refresh Help Controller for global configuration * * @since 3.2 */ class ConfigControllerApplicationRefreshhelp extends JControllerBase { /** * Application object - Redeclared for proper typehinting * * @var JApplicationCms * @since 3.2 */ protected $app; /** * Method to refresh help in global configuration. * * @return boolean True on success. * * @since 3.2 */ public function execute() { jimport('joomla.filesystem.file'); // Set FTP credentials, if given JClientHelper::setCredentialsFromRequest('ftp'); if (($data = file_get_contents('http://help.joomla.org/helpsites.xml')) === false) { $this->app->enqueueMessage(JText::_('COM_CONFIG_ERROR_HELPREFRESH_FETCH'), 'error'); $this->app->redirect(JRoute::_('index.php?option=com_config', false)); } elseif (!JFile::write(JPATH_BASE . '/help/helpsites.xml', $data)) { $this->app->enqueueMessage(JText::_('COM_CONFIG_ERROR_HELPREFRESH_ERROR_STORE'), 'error'); $this->app->redirect(JRoute::_('index.php?option=com_config', false)); } else { $this->app->enqueueMessage(JText::_('COM_CONFIG_HELPREFRESH_SUCCESS'), 'error'); $this->app->redirect(JRoute::_('index.php?option=com_config', false)); } } } PKb��\/�膠�7components/com_config/controller/application/cancel.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Cancel Controller for global configuration * * @since 3.2 */ class ConfigControllerApplicationCancel extends ConfigControllerCanceladmin { /** * Method to cancel global configuration. * * @return boolean True on success. * * @since 3.2 */ public function execute() { // Check if the user is authorized to do this. if (!JFactory::getUser()->authorise('core.admin', 'com_config')) { $this->app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR')); $this->app->redirect('index.php'); } $this->context = 'com_config.config.global'; $this->redirect = 'index.php?option=com_cpanel'; parent::execute(); } } PKb��\LI�y5components/com_config/controller/application/save.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Save Controller for global configuration * * @since 3.2 */ class ConfigControllerApplicationSave extends JControllerBase { /** * Application object - Redeclared for proper typehinting * * @var JApplicationCms * @since 3.2 */ protected $app; /** * Method to save global configuration. * * @return mixed Calls $app->redirect() for all cases except JSON * * @since 3.2 */ public function execute() { // Check for request forgeries. if (!JSession::checkToken()) { $this->app->enqueueMessage(JText::_('JINVALID_TOKEN')); $this->app->redirect('index.php'); } // Check if the user is authorized to do this. if (!JFactory::getUser()->authorise('core.admin')) { $this->app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR')); $this->app->redirect('index.php'); } // Set FTP credentials, if given. JClientHelper::setCredentialsFromRequest('ftp'); $model = new ConfigModelApplication; $data = $this->input->post->get('jform', array(), 'array'); // Complete data array if needed $oldData = $model->getData(); $data = array_replace($oldData, $data); // Get request type $saveFormat = JFactory::getDocument()->getType(); // Handle service requests if ($saveFormat == 'json') { return $model->save($data); } // Must load after serving service-requests $form = $model->getForm(); // Validate the posted data. $return = $model->validate($form, $data); // Save the data in the session. $this->app->setUserState('com_config.config.global.data', $data); // Check for validation errors. if ($return === false) { /* * The validate method enqueued all messages for us, so we just need to redirect back. */ // Redirect back to the edit screen. $this->app->redirect(JRoute::_('index.php?option=com_config&controller=config.display.application', false)); } // Attempt to save the configuration. $data = $return; $return = $model->save($data); // Check the return value. if ($return === false) { /* * The save method enqueued all messages for us, so we just need to redirect back. */ // Save the data in the session. $this->app->setUserState('com_config.config.global.data', $data); // Save failed, go back to the screen and display a notice. $this->app->redirect(JRoute::_('index.php?option=com_config&controller=config.display.application', false)); } // Set the success message. $this->app->enqueueMessage(JText::_('COM_CONFIG_SAVE_SUCCESS')); // Set the redirect based on the task. switch ($this->options[3]) { case 'apply': $this->app->redirect(JRoute::_('index.php?option=com_config', false)); break; case 'save': default: $this->app->redirect(JRoute::_('index.php', false)); break; } } } PKb��\Z��u668components/com_config/controller/application/display.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage Joomla.Config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Base Display Controller * * @since 3.2 * @note Needed for front end view */ class ConfigControllerApplicationDisplay extends ConfigControllerDisplay { /** * Prefix for the view and model classes * * @var string * @since 3.2 */ public $prefix = 'Config'; } PKb��\�h6�@components/com_config/view/component/tmpl/default_navigation.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 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="nav nav-list"> <?php if ($this->userIsSuperAdmin): ?> <li class="nav-header"><?php echo JText::_('COM_CONFIG_SYSTEM'); ?></li> <li><a href="index.php?option=com_config"><?php echo JText::_('COM_CONFIG_GLOBAL_CONFIGURATION'); ?></a></li> <li class="divider"></li> <?php endif; ?> <li class="nav-header"><?php echo JText::_('COM_CONFIG_COMPONENT_FIELDSET_LABEL'); ?></li> <?php foreach ($this->components as $component) : ?> <?php $active = ''; if ($this->currentComponent === $component) { $active = ' class="active"'; } ?> <li<?php echo $active; ?>> <a href="index.php?option=com_config&view=component&component=<?php echo $component; ?>"><?php echo JText::_($component); ?></a> </li> <?php endforeach; ?> </ul> PKb��\i��> > 5components/com_config/view/component/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $app = JFactory::getApplication(); $template = $app->getTemplate(); // Load the tooltip behavior. JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.formvalidator'); JHtml::_('formbehavior.chosen', 'select'); JFactory::getDocument()->addScriptDeclaration( ' Joomla.submitbutton = function(task) { if (task === "config.cancel.component" || document.formvalidator.isValid(document.getElementById("component-form"))) { Joomla.submitform(task, document.getElementById("component-form")); } }; // Select first tab jQuery(document).ready(function() { jQuery("#configTabs a:first").tab("show"); });' ); ?> <form action="<?php echo JRoute::_('index.php?option=com_config'); ?>" id="component-form" method="post" name="adminForm" autocomplete="off" class="form-validate form-horizontal"> <div class="row-fluid"> <!-- Begin Sidebar --> <div id="sidebar" class="span2"> <div class="sidebar-nav"> <?php echo $this->loadTemplate('navigation'); ?> </div> </div> <!-- End Sidebar --> <div class="span10"> <ul class="nav nav-tabs" id="configTabs"> <?php foreach ($this->fieldsets as $name => $fieldSet) : ?> <?php $label = empty($fieldSet->label) ? 'COM_CONFIG_' . $name . '_FIELDSET_LABEL' : $fieldSet->label; ?> <li><a href="#<?php echo $name; ?>" data-toggle="tab"><?php echo JText::_($label); ?></a></li> <?php endforeach; ?> </ul> <div class="tab-content"> <?php foreach ($this->fieldsets as $name => $fieldSet) : ?> <div class="tab-pane" id="<?php echo $name; ?>"> <?php if (isset($fieldSet->description) && !empty($fieldSet->description)) { echo '<p class="tab-description">' . JText::_($fieldSet->description) . '</p>'; } ?> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <?php $class = ''; $rel = ''; if ($showon = $field->getAttribute('showon')) { JHtml::_('jquery.framework'); JHtml::_('script', 'jui/cms.js', false, true); $id = $this->form->getFormControl(); $showon = explode(':', $showon, 2); $class = ' showon_' . implode(' showon_', explode(',', $showon[1])); $rel = ' rel="showon_' . $id . '[' . $showon[0] . ']"'; } ?> <div class="control-group<?php echo $class; ?>"<?php echo $rel; ?>> <?php if (!$field->hidden && $name != "permissions") : ?> <div class="control-label"> <?php echo $field->label; ?> </div> <?php endif; ?> <div class="<?php if ($name != "permissions") : ?>controls<?php endif; ?>"> <?php echo $field->input; ?> </div> </div> <?php endforeach; ?> </div> <?php endforeach; ?> </div> </div> </div> <div> <input type="hidden" name="id" value="<?php echo $this->component->id; ?>" /> <input type="hidden" name="component" value="<?php echo $this->component->option; ?>" /> <input type="hidden" name="return" value="<?php echo $this->return; ?>" /> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\b���-components/com_config/view/component/html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View for the component configuration * * @since 3.2 */ class ConfigViewComponentHtml extends ConfigViewCmsHtml { public $state; public $form; public $component; /** * Display the view * * @return string The rendered view. * * @since 3.2 * */ public function render() { $form = null; $component = null; try { $form = $this->model->getForm(); $component = $this->model->getComponent(); $user = JFactory::getUser(); } catch (Exception $e) { JFactory::getApplication()->enqueueMessage($e->getMessage(), 'error'); return false; } // Bind the form to the data. if ($form && $component->params) { $form->bind($component->params); } $this->fieldsets = $form->getFieldsets(); // Don't show permissions fieldset if not authorised. if (!$user->authorise('core.admin', $component->option) && isset($this->fieldsets['permissions'])) { unset($this->fieldsets['permissions']); } $this->form = &$form; $this->component = &$component; $this->components = ConfigHelperConfig::getComponentsWithConfig(); ConfigHelperConfig::loadLanguageForComponents($this->components); $this->userIsSuperAdmin = $user->authorise('core.admin'); $this->currentComponent = JFactory::getApplication()->input->get('component'); $this->return = JFactory::getApplication()->input->get('return', '', 'base64'); $this->addToolbar(); return parent::render(); } /** * Add the page title and toolbar. * * @return void * * @since 3.2 */ protected function addToolbar() { JToolbarHelper::title(JText::_($this->component->option . '_configuration'), 'equalizer config'); JToolbarHelper::apply('config.save.component.apply'); JToolbarHelper::save('config.save.component.save'); JToolbarHelper::divider(); JToolbarHelper::cancel('config.cancel.component'); JToolbarHelper::divider(); JToolbarHelper::help('JHELP_COMPONENTS_' . $this->currentComponent . '_OPTIONS'); } } PKb��\��[��/components/com_config/view/application/json.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View for the component configuration * * @since 3.2 */ class ConfigViewApplicationJson extends ConfigViewCmsJson { public $state; public $data; /** * Display the view * * @return string The rendered view. * * @since 3.2 */ public function render() { try { $this->data = $this->model->getData(); $user = JFactory::getUser(); } catch (Exception $e) { JFactory::getApplication()->enqueueMessage($e->getMessage(), 'error'); return false; } $this->userIsSuperAdmin = $user->authorise('core.admin'); // Required data $requiredData = array( "sitename" => null, "offline" => null, "access" => null, "list_limit" => null, "MetaDesc" => null, "MetaKeys" => null, "MetaRights" => null, "sef" => null, "sitename_pagetitles" => null, "debug" => null, "debug_lang" => null, "error_reporting" => null, "mailfrom" => null, "fromname" => null ); $this->data = array_intersect_key($this->data, $requiredData); return json_encode($this->data); } } PKb��\߇����>components/com_config/view/application/tmpl/default_locale.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->name = JText::_('COM_CONFIG_LOCATION_SETTINGS'); $this->fieldsname = 'locale'; echo JLayoutHelper::render('joomla.content.options_default', $this); PKb��\+��+��>components/com_config/view/application/tmpl/default_system.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->name = JText::_('COM_CONFIG_SYSTEM_SETTINGS'); $this->fieldsname = 'system'; echo JLayoutHelper::render('joomla.content.options_default', $this); PKb��\�_P��>components/com_config/view/application/tmpl/default_server.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->name = JText::_('COM_CONFIG_SERVER_SETTINGS'); $this->fieldsname = 'server'; echo JLayoutHelper::render('joomla.content.options_default', $this); PKb��\`2~��=components/com_config/view/application/tmpl/default_proxy.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->name = JText::_('COM_CONFIG_PROXY_SETTINGS'); $this->fieldsname = 'proxy'; echo JLayoutHelper::render('joomla.content.options_default', $this); PKb��\F��<��Bcomponents/com_config/view/application/tmpl/default_navigation.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 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="nav nav-list"> <?php if ($this->userIsSuperAdmin): ?> <li class="nav-header"><?php echo JText::_('COM_CONFIG_SYSTEM'); ?></li> <li class="active"> <a href="index.php?option=com_config"><?php echo JText::_('COM_CONFIG_GLOBAL_CONFIGURATION'); ?></a> </li> <li class="divider"></li> <?php endif; ?> <li class="nav-header"><?php echo JText::_('COM_CONFIG_COMPONENT_FIELDSET_LABEL'); ?></li> <?php foreach ($this->components as $component) : ?> <li> <a href="index.php?option=com_config&view=component&component=<?php echo $component; ?>"><?php echo JText::_($component); ?></a> </li> <?php endforeach; ?> </ul> PKb��\Ֆ�P��<components/com_config/view/application/tmpl/default_site.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->name = JText::_('COM_CONFIG_SITE_SETTINGS'); $this->fieldsname = 'site'; echo JLayoutHelper::render('joomla.content.options_default', $this); PKb��\��v��@components/com_config/view/application/tmpl/default_metadata.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->name = JText::_('COM_CONFIG_METADATA_SETTINGS'); $this->fieldsname = 'metadata'; echo JLayoutHelper::render('joomla.content.options_default', $this); PKb��\��G��?components/com_config/view/application/tmpl/default_filters.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->name = JText::_('COM_CONFIG_TEXT_FILTER_SETTINGS'); $this->fieldsname = 'filters'; $this->description = JText::_('COM_CONFIG_TEXT_FILTERS_DESC'); echo JLayoutHelper::render('joomla.content.options_default', $this); PKb��\��#ܮ�>components/com_config/view/application/tmpl/default_cookie.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->name = JText::_('COM_CONFIG_COOKIE_SETTINGS'); $this->fieldsname = 'cookie'; echo JLayoutHelper::render('joomla.content.options_default', $this); PKb��\����;components/com_config/view/application/tmpl/default_seo.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->name = JText::_('COM_CONFIG_SEO_SETTINGS'); $this->fieldsname = 'seo'; echo JLayoutHelper::render('joomla.content.options_default', $this); PKb��\cYn`��?components/com_config/view/application/tmpl/default_session.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->name = JText::_('COM_CONFIG_SESSION_SETTINGS'); $this->fieldsname = 'session'; echo JLayoutHelper::render('joomla.content.options_default', $this); PKb��\� y���;components/com_config/view/application/tmpl/default_ftp.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->name = JText::_('COM_CONFIG_FTP_SETTINGS'); $this->fieldsname = 'ftp'; echo JLayoutHelper::render('joomla.content.options_default', $this); PKb��\U��ò�@components/com_config/view/application/tmpl/default_database.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->name = JText::_('COM_CONFIG_DATABASE_SETTINGS'); $this->fieldsname = 'database'; echo JLayoutHelper::render('joomla.content.options_default', $this); PKb��\��MRyy@components/com_config/view/application/tmpl/default_ftplogin.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset title="<?php echo JText::_('COM_CONFIG_FTP_DETAILS'); ?>" class="form-horizontal"> <legend><?php echo JText::_('COM_CONFIG_FTP_DETAILS'); ?></legend> <?php echo JText::_('COM_CONFIG_FTP_DETAILS_TIP'); ?> <?php if ($this->ftp instanceof Exception) : ?> <p><?php echo JText::_($this->ftp->message); ?></p> <?php endif; ?> <div class="control-group"> <div class="control-label"><label for="username"><?php echo JText::_('JGLOBAL_USERNAME'); ?></label></div> <div class="controls"> <input type="text" id="username" name="username" class="input_box" size="70" value="" /> </div> </div> <div class="control-group"> <div class="control-label"><?php echo JText::_('JGLOBAL_PASSWORD'); ?></div> <div class="controls"> <input type="password" id="password" name="password" class="input_box" size="70" value="" /> </div> </div> </fieldset> PKb��\���� 7components/com_config/view/application/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; // Load tooltips behavior JHtml::_('behavior.formvalidator'); JHtml::_('bootstrap.tooltip'); JHtml::_('formbehavior.chosen', 'select'); JFactory::getDocument()->addScriptDeclaration(' Joomla.submitbutton = function(task) { if (task === "config.cancel.application" || document.formvalidator.isValid(document.getElementById("application-form"))) { Joomla.submitform(task, document.getElementById("application-form")); } }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_config'); ?>" id="application-form" method="post" name="adminForm" class="form-validate"> <div class="row-fluid"> <!-- Begin Sidebar --> <div id="sidebar" class="span2"> <div class="sidebar-nav"> <?php echo $this->loadTemplate('navigation'); ?> <?php // Display the submenu position modules $this->submenumodules = JModuleHelper::getModules('submenu'); foreach ($this->submenumodules as $submenumodule) { $output = JModuleHelper::renderModule($submenumodule); $params = new Registry; $params->loadString($submenumodule->params); echo $output; } ?> </div> </div> <!-- End Sidebar --> <!-- Begin Content --> <div class="span10"> <ul class="nav nav-tabs"> <li class="active"><a href="#page-site" data-toggle="tab"><?php echo JText::_('JSITE'); ?></a></li> <li><a href="#page-system" data-toggle="tab"><?php echo JText::_('COM_CONFIG_SYSTEM'); ?></a></li> <li><a href="#page-server" data-toggle="tab"><?php echo JText::_('COM_CONFIG_SERVER'); ?></a></li> <li><a href="#page-permissions" data-toggle="tab"><?php echo JText::_('COM_CONFIG_PERMISSIONS'); ?></a></li> <li><a href="#page-filters" data-toggle="tab"><?php echo JText::_('COM_CONFIG_TEXT_FILTERS'); ?></a></li> <?php if ($this->ftp) : ?> <li><a href="#page-ftp" data-toggle="tab"><?php echo JText::_('COM_CONFIG_FTP_SETTINGS'); ?></a></li> <?php endif; ?> </ul> <div id="config-document" class="tab-content"> <div id="page-site" class="tab-pane active"> <div class="row-fluid"> <div class="span6"> <?php echo $this->loadTemplate('site'); ?> <?php echo $this->loadTemplate('metadata'); ?> </div> <div class="span6"> <?php echo $this->loadTemplate('seo'); ?> <?php echo $this->loadTemplate('cookie'); ?> </div> </div> </div> <div id="page-system" class="tab-pane"> <div class="row-fluid"> <div class="span12"> <?php echo $this->loadTemplate('system'); ?> <?php echo $this->loadTemplate('debug'); ?> <?php echo $this->loadTemplate('cache'); ?> <?php echo $this->loadTemplate('session'); ?> </div> </div> </div> <div id="page-server" class="tab-pane"> <div class="row-fluid"> <div class="span6"> <?php echo $this->loadTemplate('server'); ?> <?php echo $this->loadTemplate('locale'); ?> <?php echo $this->loadTemplate('ftp'); ?> <?php echo $this->loadTemplate('proxy'); ?> </div> <div class="span6"> <?php echo $this->loadTemplate('database'); ?> <?php echo $this->loadTemplate('mail'); ?> </div> </div> </div> <div id="page-permissions" class="tab-pane"> <div class="row-fluid"> <?php echo $this->loadTemplate('permissions'); ?> </div> </div> <div id="page-filters" class="tab-pane"> <div class="row-fluid"> <?php echo $this->loadTemplate('filters'); ?> </div> </div> <?php if ($this->ftp) : ?> <div id="page-ftp" class="tab-pane"> <?php echo $this->loadTemplate('ftplogin'); ?> </div> <?php endif; ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </div> </div> <!-- End Content --> </div> </form> PKb��\�����Ccomponents/com_config/view/application/tmpl/default_permissions.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->name = JText::_('COM_CONFIG_PERMISSION_SETTINGS'); $this->fieldsname = 'permissions'; $this->formclass = 'form-vertical'; $this->showlabel = false; echo JLayoutHelper::render('joomla.content.options_default', $this); PKb��\ǎm���=components/com_config/view/application/tmpl/default_debug.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->name = JText::_('COM_CONFIG_DEBUG_SETTINGS'); $this->fieldsname = 'debug'; echo JLayoutHelper::render('joomla.content.options_default', $this); PKb��\�ğ)��<components/com_config/view/application/tmpl/default_mail.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->name = JText::_('COM_CONFIG_MAIL_SETTINGS'); $this->fieldsname = 'mail'; echo JLayoutHelper::render('joomla.content.options_default', $this); PKb��\�w���=components/com_config/view/application/tmpl/default_cache.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->name = JText::_('COM_CONFIG_CACHE_SETTINGS'); $this->fieldsname = 'cache'; echo JLayoutHelper::render('joomla.content.options_default', $this); PKb��\;�h�aa/components/com_config/view/application/html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View for the global configuration * * @since 3.2 */ class ConfigViewApplicationHtml extends ConfigViewCmsHtml { public $state; public $form; public $data; /** * Method to display the view. * * @return string The rendered view. * * @since 3.2 */ public function render() { $form = null; $data = null; try { // Load Form and Data $form = $this->model->getForm(); $data = $this->model->getData(); $user = JFactory::getUser(); } catch (Exception $e) { JFactory::getApplication()->enqueueMessage($e->getMessage(), 'error'); return false; } // Bind data if ($form && $data) { $form->bind($data); } // Get the params for com_users. $usersParams = JComponentHelper::getParams('com_users'); // Get the params for com_media. $mediaParams = JComponentHelper::getParams('com_media'); // Load settings for the FTP layer. $ftp = JClientHelper::setCredentialsFromRequest('ftp'); $this->form = &$form; $this->data = &$data; $this->ftp = &$ftp; $this->usersParams = &$usersParams; $this->mediaParams = &$mediaParams; $this->components = ConfigHelperConfig::getComponentsWithConfig(); ConfigHelperConfig::loadLanguageForComponents($this->components); $this->userIsSuperAdmin = $user->authorise('core.admin'); $this->addToolbar(); return parent::render(); } /** * Add the page title and toolbar. * * @return void * * @since 3.2 */ protected function addToolbar() { JToolbarHelper::title(JText::_('COM_CONFIG_GLOBAL_CONFIGURATION'), 'equalizer config'); JToolbarHelper::apply('config.save.application.apply'); JToolbarHelper::save('config.save.application.save'); JToolbarHelper::divider(); JToolbarHelper::cancel('config.cancel.application'); JToolbarHelper::divider(); JToolbarHelper::help('JHELP_SITE_GLOBAL_CONFIGURATION'); } } PKb��\���!�� components/com_config/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_config</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_CONFIG_XML_DESCRIPTION</description> <administration> <files folder="admin"> <filename>config.php</filename> <filename>controller.php</filename> <folder>controllers</folder> <folder>models</folder> <folder>controller</folder> <folder>model</folder> <folder>view</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_config.ini</language> <language tag="en-GB">language/en-GB.com_config.sys.ini</language> </languages> </administration> </extension> PKb��\1uĽ�� components/com_config/access.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <access component="com_config"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> </section> </access> PKb��\Ђ� 'components/com_config/helper/config.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Components helper for com_config * * @since 3.0 */ class ConfigHelperConfig extends JHelperContent { /** * Get an array of all enabled components. * * @return array * * @since 3.0 */ public static function getAllComponents() { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('element') ->from('#__extensions') ->where('type = ' . $db->quote('component')) ->where('enabled = 1'); $db->setQuery($query); $result = $db->loadColumn(); return $result; } /** * Returns true if the component has configuration options. * * @param string $component Component name * * @return boolean * * @since 3.0 */ public static function hasComponentConfig($component) { return is_file(JPATH_ADMINISTRATOR . '/components/' . $component . '/config.xml'); } /** * Returns an array of all components with configuration options. * Optionally return only those components for which the current user has 'core.manage' rights. * * @param boolean $authCheck True to restrict to components where current user has 'core.manage' rights. * * @return array * * @since 3.0 */ public static function getComponentsWithConfig($authCheck = true) { $result = array(); $components = self::getAllComponents(); $user = JFactory::getUser(); // Remove com_config from the array as that may have weird side effects $components = array_diff($components, array('com_config')); foreach ($components as $component) { if (self::hasComponentConfig($component) && (!$authCheck || $user->authorise('core.manage', $component))) { $result[] = $component; } } return $result; } /** * Load the sys language for the given component. * * @param array $components Array of component names. * * @return void * * @since 3.0 */ public static function loadLanguageForComponents($components) { $lang = JFactory::getLanguage(); foreach ($components as $component) { if (!empty($component)) { // Load the core file then // Load extension-local file. $lang->load($component . '.sys', JPATH_BASE, null, false, true) || $lang->load($component . '.sys', JPATH_ADMINISTRATOR . '/components/' . $component, null, false, true); } } } } PKb��\gp�,components/com_config/models/application.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JLog::add( 'ConfigModelApplication has moved from ' . __DIR__ . '/application.php to ' . dirname(__DIR__) . '/model/application.', JLog::WARNING, 'deprecated' ); include_once JPATH_ADMINISTRATOR . '/components/com_config/model/application.php'; PKb��\��&*components/com_config/models/component.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JLog::add( 'ConfigModelApplication has moved from ' . __DIR__ . '/component.php to ' . dirname(__DIR__) . '/model/component.php.', JLog::WARNING, 'deprecated' ); include_once JPATH_ADMINISTRATOR . '/components/com_config/model/component.php'; PKb��\��Y��$components/com_config/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Config Component Controller * * @since 1.5 */ class ConfigController extends JControllerLegacy { /** * @var string The default view. * @since 1.6 * @deprecated 4.0 */ protected $default_view = 'application'; /** * Method to display the view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return ConfigController This object to support chaining. * * @since 1.5 * @deprecated 4.0 */ public function display($cachable = false, $urlparams = array()) { // Set the default view name and format from the Request. $vName = $this->input->get('view', 'application'); JLog::add( 'ConfigController is deprecated. Use ConfigControllerApplicationDisplay or ConfigControllerComponentDisplay instead.', JLog::WARNING, 'deprecated' ); if (ucfirst($vName) == 'Application') { $controller = new ConfigControllerApplicationDisplay; } elseif (ucfirst($vName) == 'Component') { $controller = new ConfigControllerComponentDisplay; } return $controller->execute(); } } PKb��\?��?"?"+components/com_config/model/application.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * Model for the global configuration * * @since 3.2 */ class ConfigModelApplication extends ConfigModelForm { /** * Method to get a form object. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return mixed A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_config.application', 'application', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } return $form; } /** * Method to get the configuration data. * * This method will load the global configuration data straight from * JConfig. If configuration data has been saved in the session, that * data will be merged into the original data, overwriting it. * * @return array An array containg all global config data. * * @since 1.6 */ public function getData() { // Get the config data. $config = new JConfig; $data = JArrayHelper::fromObject($config); // Prime the asset_id for the rules. $data['asset_id'] = 1; // Get the text filter data $params = JComponentHelper::getParams('com_config'); $data['filters'] = JArrayHelper::fromObject($params->get('filters')); // If no filter data found, get from com_content (update of 1.6/1.7 site) if (empty($data['filters'])) { $contentParams = JComponentHelper::getParams('com_content'); $data['filters'] = JArrayHelper::fromObject($contentParams->get('filters')); } // Check for data in the session. $temp = JFactory::getApplication()->getUserState('com_config.config.global.data'); // Merge in the session data. if (!empty($temp)) { $data = array_merge($data, $temp); } return $data; } /** * Method to save the configuration data. * * @param array $data An array containing all global config data. * * @return boolean True on success, false on failure. * * @since 1.6 */ public function save($data) { $app = JFactory::getApplication(); // Check that we aren't setting wrong database configuration $options = array( 'driver' => $data['dbtype'], 'host' => $data['host'], 'user' => $data['user'], 'password' => JFactory::getConfig()->get('password'), 'database' => $data['db'], 'prefix' => $data['dbprefix'] ); try { $dbc = JDatabaseDriver::getInstance($options)->getVersion(); } catch (Exception $e) { $app->enqueueMessage(JText::_('JLIB_DATABASE_ERROR_DATABASE_CONNECT'), 'error'); return false; } // Save the rules if (isset($data['rules'])) { $rules = new JAccessRules($data['rules']); // Check that we aren't removing our Super User permission // Need to get groups from database, since they might have changed $myGroups = JAccess::getGroupsByUser(JFactory::getUser()->get('id')); $myRules = $rules->getData(); $hasSuperAdmin = $myRules['core.admin']->allow($myGroups); if (!$hasSuperAdmin) { $app->enqueueMessage(JText::_('COM_CONFIG_ERROR_REMOVING_SUPER_ADMIN'), 'error'); return false; } $asset = JTable::getInstance('asset'); if ($asset->loadByName('root.1')) { $asset->rules = (string) $rules; if (!$asset->check() || !$asset->store()) { $app->enqueueMessage(JText::_('SOME_ERROR_CODE'), 'error'); return; } } else { $app->enqueueMessage(JText::_('COM_CONFIG_ERROR_ROOT_ASSET_NOT_FOUND'), 'error'); return false; } unset($data['rules']); } // Save the text filters if (isset($data['filters'])) { $registry = new Registry; $registry->loadArray(array('filters' => $data['filters'])); $extension = JTable::getInstance('extension'); // Get extension_id $extension_id = $extension->find(array('name' => 'com_config')); if ($extension->load((int) $extension_id)) { $extension->params = (string) $registry; if (!$extension->check() || !$extension->store()) { $app->enqueueMessage(JText::_('SOME_ERROR_CODE'), 'error'); return; } } else { $app->enqueueMessage(JText::_('COM_CONFIG_ERROR_CONFIG_EXTENSION_NOT_FOUND'), 'error'); return false; } unset($data['filters']); } // Get the previous configuration. $prev = new JConfig; $prev = JArrayHelper::fromObject($prev); // Merge the new data in. We do this to preserve values that were not in the form. $data = array_merge($prev, $data); /* * Perform miscellaneous options based on configuration settings/changes. */ // Escape the offline message if present. if (isset($data['offline_message'])) { $data['offline_message'] = JFilterOutput::ampReplace($data['offline_message']); } // Purge the database session table if we are changing to the database handler. if ($prev['session_handler'] != 'database' && $data['session_handler'] == 'database') { $table = JTable::getInstance('session'); $table->purge(-1); } if (empty($data['cache_handler'])) { $data['caching'] = 0; } $path = JPATH_SITE . '/cache'; // Give a warning if the cache-folder can not be opened if ($data['caching'] > 0 && $data['cache_handler'] == 'file' && @opendir($path) == false) { JLog::add(JText::sprintf('COM_CONFIG_ERROR_CACHE_PATH_NOTWRITABLE', $path), JLog::WARNING, 'jerror'); $data['caching'] = 0; } // Clean the cache if disabled but previously enabled. if (!$data['caching'] && $prev['caching']) { $cache = JFactory::getCache(); $cache->clean(); } // Create the new configuration object. $config = new Registry('config'); $config->loadArray($data); // Overwrite the old FTP credentials with the new ones. $temp = JFactory::getConfig(); $temp->set('ftp_enable', $data['ftp_enable']); $temp->set('ftp_host', $data['ftp_host']); $temp->set('ftp_port', $data['ftp_port']); $temp->set('ftp_user', $data['ftp_user']); $temp->set('ftp_pass', $data['ftp_pass']); $temp->set('ftp_root', $data['ftp_root']); // Clear cache of com_config component. $this->cleanCache('_system', 0); $this->cleanCache('_system', 1); // Write the configuration file. return $this->writeConfigFile($config); } /** * Method to unset the root_user value from configuration data. * * This method will load the global configuration data straight from * JConfig and remove the root_user value for security, then save the configuration. * * @return boolean True on success, false on failure. * * @since 1.6 */ public function removeroot() { // Get the previous configuration. $prev = new JConfig; $prev = JArrayHelper::fromObject($prev); // Create the new configuration object, and unset the root_user property $config = new Registry('config'); unset($prev['root_user']); $config->loadArray($prev); // Write the configuration file. return $this->writeConfigFile($config); } /** * Method to write the configuration to a file. * * @param Registry $config A Registry object containing all global config data. * * @return boolean True on success, false on failure. * * @since 2.5.4 * @throws RuntimeException */ private function writeConfigFile(Registry $config) { jimport('joomla.filesystem.path'); jimport('joomla.filesystem.file'); // Set the configuration file path. $file = JPATH_CONFIGURATION . '/configuration.php'; // Get the new FTP credentials. $ftp = JClientHelper::getCredentials('ftp', true); $app = JFactory::getApplication(); // Attempt to make the file writeable if using FTP. if (!$ftp['enabled'] && JPath::isOwner($file) && !JPath::setPermissions($file, '0644')) { $app->enqueueMessage(JText::_('COM_CONFIG_ERROR_CONFIGURATION_PHP_NOTWRITABLE'), 'notice'); } // Attempt to write the configuration file as a PHP class named JConfig. $configuration = $config->toString('PHP', array('class' => 'JConfig', 'closingtag' => false)); if (!JFile::write($file, $configuration)) { throw new RuntimeException(JText::_('COM_CONFIG_ERROR_WRITE_FAILED')); } // Attempt to make the file unwriteable if using FTP. if (!$ftp['enabled'] && JPath::isOwner($file) && !JPath::setPermissions($file, '0444')) { $app->enqueueMessage(JText::_('COM_CONFIG_ERROR_CONFIGURATION_PHP_NOTUNWRITABLE'), 'notice'); } return true; } } PKb��\��C?d?d0components/com_config/model/form/application.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset name="cache" label="COM_CONFIG_CACHE_SETTINGS_LABEL"> <field name="caching" type="list" default="2" label="COM_CONFIG_FIELD_CACHE_LABEL" description="COM_CONFIG_FIELD_CACHE_DESC" required="true" filter="integer"> <option value="0">COM_CONFIG_FIELD_VALUE_CACHE_OFF</option> <option value="1">COM_CONFIG_FIELD_VALUE_CACHE_CONSERVATIVE</option> <option value="2">COM_CONFIG_FIELD_VALUE_CACHE_PROGRESSIVE</option> </field> <field name="cache_handler" type="cachehandler" default="" label="COM_CONFIG_FIELD_CACHE_HANDLER_LABEL" description="COM_CONFIG_FIELD_CACHE_HANDLER_DESC" filter="word"> </field> <field name="cachetime" type="text" default="15" label="COM_CONFIG_FIELD_CACHE_TIME_LABEL" description="COM_CONFIG_FIELD_CACHE_TIME_DESC" required="true" filter="integer" size="6" /> <field name="memcache_persist" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONFIG_FIELD_MEMCACHE_PERSISTENT_LABEL" description="COM_CONFIG_FIELD_MEMCACHE_PERSISTENT_DESC" showon="cache_handler:memcache" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="memcache_compress" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONFIG_FIELD_MEMCACHE_COMPRESSION_LABEL" description="COM_CONFIG_FIELD_MEMCACHE_COMPRESSION_DESC" showon="cache_handler:memcache" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="memcache_server_host" type="text" default="localhost" label="COM_CONFIG_FIELD_MEMCACHE_HOST_LABEL" description="COM_CONFIG_FIELD_MEMCACHE_HOST_DESC" showon="cache_handler:memcache" filter="string" size="25" /> <field name="memcache_server_port" type="text" default="11211" label="COM_CONFIG_FIELD_MEMCACHE_PORT_LABEL" description="COM_CONFIG_FIELD_MEMCACHE_PORT_DESC" showon="cache_handler:memcache" filter="integer" size="5" /> <field name="memcached_persist" type="radio" class="btn-group" default="1" label="COM_CONFIG_FIELD_MEMCACHE_PERSISTENT_LABEL" description="COM_CONFIG_FIELD_MEMCACHE_PERSISTENT_DESC" showon="cache_handler:memcached" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="memcached_compress" type="radio" class="btn-group" default="0" label="COM_CONFIG_FIELD_MEMCACHE_COMPRESSION_LABEL" description="COM_CONFIG_FIELD_MEMCACHE_COMPRESSION_DESC" showon="cache_handler:memcached" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="memcached_server_host" type="text" default="localhost" label="COM_CONFIG_FIELD_MEMCACHE_HOST_LABEL" description="COM_CONFIG_FIELD_MEMCACHE_HOST_DESC" showon="cache_handler:memcached" filter="string" size="25" /> <field name="memcached_server_port" type="text" default="11211" label="COM_CONFIG_FIELD_MEMCACHE_PORT_LABEL" description="COM_CONFIG_FIELD_MEMCACHE_PORT_DESC" showon="cache_handler:memcached" filter="integer" size="5" /> <field name="redis_persist" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONFIG_FIELD_REDIS_PERSISTENT_LABEL" description="COM_CONFIG_FIELD_REDIS_PERSISTENT_DESC" filter="integer" showon="cache_handler:redis"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="redis_server_host" type="text" default="localhost" label="COM_CONFIG_FIELD_REDIS_HOST_LABEL" description="COM_CONFIG_FIELD_REDIS_HOST_DESC" filter="string" showon="cache_handler:redis" size="25" /> <field name="redis_server_port" type="text" default="6379" label="COM_CONFIG_FIELD_REDIS_PORT_LABEL" description="COM_CONFIG_FIELD_REDIS_PORT_DESC" filter="integer" showon="cache_handler:redis" size="5" /> <field name="redis_server_auth" type="password" label="COM_CONFIG_FIELD_REDIS_AUTH_LABEL" description="COM_CONFIG_FIELD_REDIS_AUTH_DESC" filter="raw" showon="cache_handler:redis" autocomplete="off" size="30" /> <field name="redis_server_db" type="text" default="0" label="COM_CONFIG_FIELD_REDIS_DB_LABEL" description="COM_CONFIG_FIELD_REDIS_DB_DESC" filter="integer" showon="cache_handler:redis" size="4" /> </fieldset> <fieldset name="memcache" label="COM_CONFIG_MEMCACHE_SETTINGS_LABEL"> </fieldset> <fieldset name="database" label="CONFIG_DATABASE_SETTINGS_LABEL"> <field name="dbtype" type="databaseconnection" label="COM_CONFIG_FIELD_DATABASE_TYPE_LABEL" description="COM_CONFIG_FIELD_DATABASE_TYPE_DESC" supported="mysql,mysqli,pdomysql,postgresql,sqlsrv,sqlazure" filter="string" /> <field name="host" type="text" label="COM_CONFIG_FIELD_DATABASE_HOST_LABEL" description="COM_CONFIG_FIELD_DATABASE_HOST_DESC" filter="string" size="30" /> <field name="user" type="text" label="COM_CONFIG_FIELD_DATABASE_USERNAME_LABEL" description="COM_CONFIG_FIELD_DATABASE_USERNAME_DESC" filter="string" size="30" /> <field name="db" type="text" label="COM_CONFIG_FIELD_DATABASE_NAME_LABEL" description="COM_CONFIG_FIELD_DATABASE_NAME_DESC" filter="string" size="30" /> <field name="dbprefix" type="text" default="jos_" label="COM_CONFIG_FIELD_DATABASE_PREFIX_LABEL" description="COM_CONFIG_FIELD_DATABASE_PREFIX_DESC" filter="string" size="10" /> </fieldset> <fieldset name="debug" label="CONFIG_DEBUG_SETTINGS_LABEL"> <field name="debug" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONFIG_FIELD_DEBUG_SYSTEM_LABEL" description="COM_CONFIG_FIELD_DEBUG_SYSTEM_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="debug_lang" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONFIG_FIELD_DEBUG_LANG_LABEL" description="COM_CONFIG_FIELD_DEBUG_LANG_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> </fieldset> <fieldset name="ftp" label="CONFIG_FTP_SETTINGS_LABEL"> <field name="ftp_enable" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONFIG_FIELD_FTP_ENABLE_LABEL" description="COM_CONFIG_FIELD_FTP_ENABLE_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="ftp_host" type="text" label="COM_CONFIG_FIELD_FTP_HOST_LABEL" description="COM_CONFIG_FIELD_FTP_HOST_DESC" filter="string" showon="ftp_enable:1" size="14" /> <field name="ftp_port" type="text" label="COM_CONFIG_FIELD_FTP_PORT_LABEL" description="COM_CONFIG_FIELD_FTP_PORT_DESC" filter="string" showon="ftp_enable:1" size="8" /> <field name="ftp_user" type="text" label="COM_CONFIG_FIELD_FTP_USERNAME_LABEL" description="COM_CONFIG_FIELD_FTP_USERNAME_DESC" filter="string" showon="ftp_enable:1" autocomplete="off" size="25" /> <field name="ftp_pass" type="password" label="COM_CONFIG_FIELD_FTP_PASSWORD_LABEL" description="COM_CONFIG_FIELD_FTP_PASSWORD_DESC" filter="raw" showon="ftp_enable:1" autocomplete="off" size="25" /> <field name="ftp_root" type="text" label="COM_CONFIG_FIELD_FTP_ROOT_LABEL" showon="ftp_enable:1" description="COM_CONFIG_FIELD_FTP_ROOT_DESC" filter="string" size="50" /> </fieldset> <fieldset name="proxy" label="CONFIG_PROXY_SETTINGS_LABEL"> <field name="proxy_enable" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONFIG_FIELD_PROXY_ENABLE_LABEL" description="COM_CONFIG_FIELD_PROXY_ENABLE_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="proxy_host" type="text" label="COM_CONFIG_FIELD_PROXY_HOST_LABEL" description="COM_CONFIG_FIELD_PROXY_HOST_DESC" filter="string" showon="proxy_enable:1" size="14" /> <field name="proxy_port" type="text" label="COM_CONFIG_FIELD_PROXY_PORT_LABEL" description="COM_CONFIG_FIELD_PROXY_PORT_DESC" filter="string" showon="proxy_enable:1" size="8" /> <field name="proxy_user" type="text" label="COM_CONFIG_FIELD_PROXY_USERNAME_LABEL" description="COM_CONFIG_FIELD_PROXY_USERNAME_DESC" filter="string" showon="proxy_enable:1" autocomplete="off" size="25" /> <field name="proxy_pass" type="password" label="COM_CONFIG_FIELD_PROXY_PASSWORD_LABEL" description="COM_CONFIG_FIELD_PROXY_PASSWORD_DESC" filter="raw" showon="proxy_enable:1" autocomplete="off" size="25" /> </fieldset> <fieldset name="locale" label="CONFIG_LOCATION_SETTINGS_LABEL"> <field name="offset" type="timezone" default="UTC" label="COM_CONFIG_FIELD_SERVER_TIMEZONE_LABEL" description="COM_CONFIG_FIELD_SERVER_TIMEZONE_DESC" required="true"> <option value="UTC">JLIB_FORM_VALUE_TIMEZONE_UTC</option> </field> </fieldset> <fieldset name="mail" label="CONFIG_MAIL_SETTINGS_LABEL"> <field name="mailonline" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONFIG_FIELD_MAIL_MAILONLINE_LABEL" description="COM_CONFIG_FIELD_MAIL_MAILONLINE_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="mailer" type="list" default="mail" label="COM_CONFIG_FIELD_MAIL_MAILER_LABEL" description="COM_CONFIG_FIELD_MAIL_MAILER_DESC" required="true" filter="word"> <option value="mail">COM_CONFIG_FIELD_VALUE_PHP_MAIL</option> <option value="sendmail">COM_CONFIG_FIELD_VALUE_SENDMAIL</option> <option value="smtp">COM_CONFIG_FIELD_VALUE_SMTP</option> </field> <field name="mailfrom" type="email" label="COM_CONFIG_FIELD_MAIL_FROM_EMAIL_LABEL" description="COM_CONFIG_FIELD_MAIL_FROM_EMAIL_DESC" filter="string" size="30" validate="email" /> <field name="fromname" type="text" label="COM_CONFIG_FIELD_MAIL_FROM_NAME_LABEL" description="COM_CONFIG_FIELD_MAIL_FROM_NAME_DESC" filter="string" size="30" /> <field name="massmailoff" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONFIG_FIELD_MAIL_MASSMAILOFF_LABEL" description="COM_CONFIG_FIELD_MAIL_MASSMAILOFF_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="sendmail" type="text" default="/usr/sbin/sendmail" showon="mailer:sendmail" label="COM_CONFIG_FIELD_MAIL_SENDMAIL_PATH_LABEL" description="COM_CONFIG_FIELD_MAIL_SENDMAIL_PATH_DESC" filter="string" size="30" /> <field name="smtpauth" type="radio" class="btn-group btn-group-yesno" default="0" showon="mailer:smtp" label="COM_CONFIG_FIELD_MAIL_SMTP_AUTH_LABEL" description="COM_CONFIG_FIELD_MAIL_SMTP_AUTH_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="smtpsecure" type="list" default="none" showon="mailer:smtp" label="COM_CONFIG_FIELD_MAIL_SMTP_SECURE_LABEL" description="COM_CONFIG_FIELD_MAIL_SMTP_SECURE_DESC" filter="word"> <option value="none">COM_CONFIG_FIELD_VALUE_NONE</option> <option value="ssl">COM_CONFIG_FIELD_VALUE_SSL</option> <option value="tls">COM_CONFIG_FIELD_VALUE_TLS</option> </field> <field name="smtpport" type="text" default="25" showon="mailer:smtp" label="COM_CONFIG_FIELD_MAIL_SMTP_PORT_LABEL" description="COM_CONFIG_FIELD_MAIL_SMTP_PORT_DESC" required="true" filter="string" size="6" /> <field name="smtpuser" type="text" showon="mailer:smtp" label="COM_CONFIG_FIELD_MAIL_SMTP_USERNAME_LABEL" description="COM_CONFIG_FIELD_MAIL_SMTP_USERNAME_DESC" filter="string" autocomplete="off" size="30" /> <field name="smtppass" type="password" showon="mailer:smtp" label="COM_CONFIG_FIELD_MAIL_SMTP_PASSWORD_LABEL" description="COM_CONFIG_FIELD_MAIL_SMTP_PASSWORD_DESC" filter="raw" autocomplete="off" size="30" /> <field name="smtphost" type="text" default="localhost" showon="mailer:smtp" label="COM_CONFIG_FIELD_MAIL_SMTP_HOST_LABEL" description="COM_CONFIG_FIELD_MAIL_SMTP_HOST_DESC" filter="string" size="30" /> </fieldset> <fieldset name="metadata" label="COM_CONFIG_METADATA_SETTINGS"> <field name="MetaDesc" type="textarea" label="COM_CONFIG_FIELD_METADESC_LABEL" description="COM_CONFIG_FIELD_METADESC_DESC" filter="string" cols="60" rows="3" /> <field name="MetaKeys" type="textarea" label="COM_CONFIG_FIELD_METAKEYS_LABEL" description="COM_CONFIG_FIELD_METAKEYS_DESC" filter="string" cols="60" rows="3" /> <field name="robots" type="list" label="JFIELD_METADATA_ROBOTS_LABEL" description="JFIELD_METADATA_ROBOTS_DESC" default="" > <option value="">JGLOBAL_INDEX_FOLLOW</option> <option value="noindex, follow">JGLOBAL_NOINDEX_FOLLOW</option> <option value="index, nofollow">JGLOBAL_INDEX_NOFOLLOW</option> <option value="noindex, nofollow">JGLOBAL_NOINDEX_NOFOLLOW</option> </field> <field name="MetaRights" type="textarea" label="JFIELD_META_RIGHTS_LABEL" description="JFIELD_META_RIGHTS_DESC" filter="string" cols="60" rows="2" /> <field name="MetaAuthor" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONFIG_FIELD_METAAUTHOR_LABEL" description="COM_CONFIG_FIELD_METAAUTHOR_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="MetaVersion" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONFIG_FIELD_METAVERSION_LABEL" description="COM_CONFIG_FIELD_METAVERSION_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> </fieldset> <fieldset name="seo" label="CONFIG_SEO_SETTINGS_LABEL"> <field name="sef" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_CONFIG_FIELD_SEF_URL_LABEL" description="COM_CONFIG_FIELD_SEF_URL_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="sef_rewrite" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONFIG_FIELD_SEF_REWRITE_LABEL" description="COM_CONFIG_FIELD_SEF_REWRITE_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="sef_suffix" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONFIG_FIELD_SEF_SUFFIX_LABEL" description="COM_CONFIG_FIELD_SEF_SUFFIX_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="unicodeslugs" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONFIG_FIELD_UNICODESLUGS_LABEL" description="COM_CONFIG_FIELD_UNICODESLUGS_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="sitename_pagetitles" type="list" default="0" label="COM_CONFIG_FIELD_SITENAME_PAGETITLES_LABEL" description="COM_CONFIG_FIELD_SITENAME_PAGETITLES_DESC" filter="integer"> <option value="2">COM_CONFIG_FIELD_VALUE_AFTER</option> <option value="1">COM_CONFIG_FIELD_VALUE_BEFORE</option> <option value="0">JNO</option> </field> </fieldset> <fieldset name="server" label="CONFIG_SERVER_SETTINGS_LABEL"> <field name="tmp_path" type="text" label="COM_CONFIG_FIELD_TEMP_PATH_LABEL" description="COM_CONFIG_FIELD_TEMP_PATH_DESC" filter="string" size="50" /> <field name="gzip" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONFIG_FIELD_GZIP_COMPRESSION_LABEL" description="COM_CONFIG_FIELD_GZIP_COMPRESSION_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="error_reporting" type="list" default="default" label="COM_CONFIG_FIELD_ERROR_REPORTING_LABEL" description="COM_CONFIG_FIELD_ERROR_REPORTING_DESC" filter="cmd"> <option value="default">COM_CONFIG_FIELD_VALUE_SYSTEM_DEFAULT</option> <option value="none">COM_CONFIG_FIELD_VALUE_NONE</option> <option value="simple">COM_CONFIG_FIELD_VALUE_SIMPLE</option> <option value="maximum">COM_CONFIG_FIELD_VALUE_MAXIMUM</option> <option value="development">COM_CONFIG_FIELD_VALUE_DEVELOPMENT</option> </field> <field name="force_ssl" type="list" default="-1" label="COM_CONFIG_FIELD_FORCE_SSL_LABEL" description="COM_CONFIG_FIELD_FORCE_SSL_DESC" filter="integer"> <option value="0">COM_CONFIG_FIELD_VALUE_NONE</option> <option value="1">COM_CONFIG_FIELD_VALUE_ADMINISTRATOR_ONLY</option> <option value="2">COM_CONFIG_FIELD_VALUE_ENTIRE_SITE</option> </field> </fieldset> <fieldset name="session" label="CONFIG_SESSION_SETTINGS_LABEL"> <field name="lifetime" type="text" default="15" label="COM_CONFIG_FIELD_SESSION_TIME_LABEL" description="COM_CONFIG_FIELD_SESSION_TIME_DESC" required="true" filter="integer" size="6" /> <field name="session_handler" type="sessionhandler" default="none" label="COM_CONFIG_FIELD_SESSION_HANDLER_LABEL" description="COM_CONFIG_FIELD_SESSION_HANDLER_DESC" required="true" filter="word" /> <field name="session_memcache_server_host" type="text" default="localhost" label="COM_CONFIG_FIELD_MEMCACHE_HOST_LABEL" description="COM_CONFIG_FIELD_MEMCACHE_HOST_DESC" filter="string" showon="session_handler:memcache" size="25" /> <field name="session_memcache_server_port" type="text" default="11211" label="COM_CONFIG_FIELD_MEMCACHE_PORT_LABEL" description="COM_CONFIG_FIELD_MEMCACHE_PORT_DESC" filter="integer" showon="session_handler:memcache" size="5" /> <field name="session_memcached_server_host" type="text" default="localhost" label="COM_CONFIG_FIELD_MEMCACHE_HOST_LABEL" description="COM_CONFIG_FIELD_MEMCACHE_HOST_DESC" filter="string" showon="session_handler:memcached" size="25" /> <field name="session_memcached_server_port" type="text" default="11211" label="COM_CONFIG_FIELD_MEMCACHE_PORT_LABEL" description="COM_CONFIG_FIELD_MEMCACHE_PORT_DESC" filter="integer" showon="session_handler:memcached" size="5" /> </fieldset> <fieldset name="site" label="CONFIG_SITE_SETTINGS_LABEL"> <field name="sitename" type="text" label="COM_CONFIG_FIELD_SITE_NAME_LABEL" description="COM_CONFIG_FIELD_SITE_NAME_DESC" required="true" filter="string" size="50" /> <field name="offline" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_CONFIG_FIELD_SITE_OFFLINE_LABEL" description="COM_CONFIG_FIELD_SITE_OFFLINE_DESC" filter="integer"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="display_offline_message" type="list" default="1" label="COM_CONFIG_FIELD_SITE_DISPLAY_MESSAGE_LABEL" description="COM_CONFIG_FIELD_SITE_DISPLAY_MESSAGE_DESC" filter="integer"> <option value="0">JHIDE</option> <option value="1">COM_CONFIG_FIELD_VALUE_DISPLAY_OFFLINE_MESSAGE_CUSTOM</option> <option value="2">COM_CONFIG_FIELD_VALUE_DISPLAY_OFFLINE_MESSAGE_LANGUAGE</option> </field> <field name="offline_message" type="textarea" label="COM_CONFIG_FIELD_OFFLINE_MESSAGE_LABEL" description="COM_CONFIG_FIELD_OFFLINE_MESSAGE_DESC" filter="safehtml" cols="60" rows="2" /> <field name="offline_image" type="media" label="COM_CONFIG_FIELD_OFFLINE_IMAGE_LABEL" description="COM_CONFIG_FIELD_OFFLINE_IMAGE_DESC" /> <field name="frontediting" type="list" default="1" label="COM_CONFIG_FRONTEDITING_LABEL" description="COM_CONFIG_FRONTEDITING_DESC" filter="integer"> <!-- <option value="3">COM_CONFIG_FRONTEDITING_MENUSANDMODULES_ADMIN_TOO</option> --> <option value="2">COM_CONFIG_FRONTEDITING_MENUSANDMODULES</option> <option value="1">COM_CONFIG_FRONTEDITING_MODULES</option> <option value="0">JNONE</option> </field> <field name="editor" type="plugins" folder="editors" default="tinymce" label="COM_CONFIG_FIELD_DEFAULT_EDITOR_LABEL" description="COM_CONFIG_FIELD_DEFAULT_EDITOR_DESC" required="true" filter="cmd" /> <field name="captcha" type="plugins" folder="captcha" default="0" label="COM_CONFIG_FIELD_DEFAULT_CAPTCHA_LABEL" description="COM_CONFIG_FIELD_DEFAULT_CAPTCHA_DESC" required="true" filter="cmd"> <option value="0">JOPTION_DO_NOT_USE</option> </field> <field name="access" type="accesslevel" default="1" label="COM_CONFIG_FIELD_DEFAULT_ACCESS_LEVEL_LABEL" description="COM_CONFIG_FIELD_DEFAULT_ACCESS_LEVEL_DESC" required="true" filter="integer" /> <field name="list_limit" type="list" default="20" label="COM_CONFIG_FIELD_DEFAULT_LIST_LIMIT_LABEL" description="COM_CONFIG_FIELD_DEFAULT_LIST_LIMIT_DESC" filter="integer"> <option value="5">J5</option> <option value="10">J10</option> <option value="15">J15</option> <option value="20">J20</option> <option value="25">J25</option> <option value="30">J30</option> <option value="50">J50</option> <option value="100">J100</option> </field> <field name="feed_limit" type="list" default="10" label="COM_CONFIG_FIELD_DEFAULT_FEED_LIMIT_LABEL" description="COM_CONFIG_FIELD_DEFAULT_FEED_LIMIT_DESC" filter="integer"> <option value="5">J5</option> <option value="10">J10</option> <option value="15">J15</option> <option value="20">J20</option> <option value="25">J25</option> <option value="30">J30</option> <option value="50">J50</option> <option value="100">J100</option> </field> <field name="feed_email" type="list" default="author" label="COM_CONFIG_FIELD_FEED_EMAIL_LABEL" description="COM_CONFIG_FIELD_FEED_EMAIL_DESC" filter="word"> <option value="author">COM_CONFIG_FIELD_VALUE_AUTHOR_EMAIL</option> <option value="site">COM_CONFIG_FIELD_VALUE_SITE_EMAIL</option> <option value="none">COM_CONFIG_FIELD_VALUE_NO_EMAIL</option> </field> </fieldset> <fieldset name="system" label="CONFIG_SYSTEM_SETTINGS_LABEL"> <field name="log_path" type="text" label="COM_CONFIG_FIELD_LOG_PATH_LABEL" description="COM_CONFIG_FIELD_LOG_PATH_DESC" required="true" filter="string" size="50" /> <field name="helpurl" type="helpsite" label="COM_CONFIG_FIELD_HELP_SERVER_LABEL" description="COM_CONFIG_FIELD_HELP_SERVER_DESC" required="true" /> </fieldset> <fieldset name="cookie" label="CONFIG_COOKIE_SETTINGS_LABEL"> <field name="cookie_domain" type="text" label="COM_CONFIG_FIELD_COOKIE_DOMAIN_LABEL" description="COM_CONFIG_FIELD_COOKIE_DOMAIN_DESC" required="false" filter="string" size="40" /> <field name="cookie_path" type="text" label="COM_CONFIG_FIELD_COOKIE_PATH_LABEL" description="COM_CONFIG_FIELD_COOKIE_PATH_DESC" required="false" filter="string" size="40" /> </fieldset> <fieldset name="permissions" label="CONFIG_PERMISSION_SETTINGS_LABEL"> <field name="rules" type="rules" label="FIELD_RULES_LABEL" translate_label="false" validate="rules" filter="rules"> <action name="core.login.site" title="JACTION_LOGIN_SITE" description="COM_CONFIG_ACTION_LOGIN_SITE_DESC" /> <action name="core.login.admin" title="JACTION_LOGIN_ADMIN" description="COM_CONFIG_ACTION_LOGIN_ADMIN_DESC" /> <action name="core.login.offline" title="JACTION_LOGIN_OFFLINE" description="COM_CONFIG_ACTION_LOGIN_OFFLINE_DESC" /> <action name="core.admin" title="JACTION_ADMIN_GLOBAL" description="COM_CONFIG_ACTION_ADMIN_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="COM_CONFIG_ACTION_MANAGE_DESC" /> <action name="core.create" title="JACTION_CREATE" description="COM_CONFIG_ACTION_CREATE_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="COM_CONFIG_ACTION_DELETE_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="COM_CONFIG_ACTION_EDIT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="COM_CONFIG_ACTION_EDITSTATE_DESC" /> <action name="core.edit.own" title="JACTION_EDITOWN" description="COM_CONFIG_ACTION_EDITOWN_DESC" /> </field> </fieldset> <fieldset name="filters" label="COM_CONFIG_TEXT_FILTERS" description="COM_CONFIG_TEXT_FILTERS_DESC" > <field name="filters" type="filters" label="COM_CONFIG_TEXT_FILTERS" filter="" /> </fieldset> <fieldset> <field name="asset_id" type="hidden" /> </fieldset> </form> PKb��\ǏU-components/com_config/model/field/filters.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; /** * Text Filters form field. * * @since 1.6 */ class JFormFieldFilters extends JFormField { /** * The form field type. * * @var string * @since 1.6 */ public $type = 'Filters'; /** * Method to get the field input markup. * * TODO: Add access check. * * @return string The field input markup. * * @since 1.6 */ protected function getInput() { // Get the available user groups. $groups = $this->getUserGroups(); // Build the form control. $html = array(); // Open the table. $html[] = '<table id="filter-config" class="table table-striped">'; // The table heading. $html[] = ' <thead>'; $html[] = ' <tr>'; $html[] = ' <th>'; $html[] = ' <span class="acl-action">' . JText::_('JGLOBAL_FILTER_GROUPS_LABEL') . '</span>'; $html[] = ' </th>'; $html[] = ' <th>'; $html[] = ' <span class="acl-action" title="' . JText::_('JGLOBAL_FILTER_TYPE_LABEL') . '">' . JText::_('JGLOBAL_FILTER_TYPE_LABEL') . '</span>'; $html[] = ' </th>'; $html[] = ' <th>'; $html[] = ' <span class="acl-action" title="' . JText::_('JGLOBAL_FILTER_TAGS_LABEL') . '">' . JText::_('JGLOBAL_FILTER_TAGS_LABEL') . '</span>'; $html[] = ' </th>'; $html[] = ' <th>'; $html[] = ' <span class="acl-action" title="' . JText::_('JGLOBAL_FILTER_ATTRIBUTES_LABEL') . '">' . JText::_('JGLOBAL_FILTER_ATTRIBUTES_LABEL') . '</span>'; $html[] = ' </th>'; $html[] = ' </tr>'; $html[] = ' </thead>'; // The table body. $html[] = ' <tbody>'; foreach ($groups as $group) { if (!isset($this->value[$group->value])) { $this->value[$group->value] = array('filter_type' => 'BL', 'filter_tags' => '', 'filter_attributes' => ''); } $group_filter = $this->value[$group->value]; $group_filter['filter_tags'] = !empty($group_filter['filter_tags']) ? $group_filter['filter_tags'] : ''; $group_filter['filter_attributes'] = !empty($group_filter['filter_attributes']) ? $group_filter['filter_attributes'] : ''; $html[] = ' <tr>'; $html[] = ' <th class="acl-groups left">'; $html[] = ' ' . str_repeat('<span class="gi">|—</span>', $group->level) . $group->text; $html[] = ' </th>'; $html[] = ' <td>'; $html[] = ' <select name="' . $this->name . '[' . $group->value . '][filter_type]" id="' . $this->id . $group->value . '_filter_type">'; $html[] = ' <option value="BL"' . ($group_filter['filter_type'] == 'BL' ? ' selected="selected"' : '') . '>' . JText::_('COM_CONFIG_FIELD_FILTERS_DEFAULT_BLACK_LIST') . '</option>'; $html[] = ' <option value="CBL"' . ($group_filter['filter_type'] == 'CBL' ? ' selected="selected"' : '') . '>' . JText::_('COM_CONFIG_FIELD_FILTERS_CUSTOM_BLACK_LIST') . '</option>'; $html[] = ' <option value="WL"' . ($group_filter['filter_type'] == 'WL' ? ' selected="selected"' : '') . '>' . JText::_('COM_CONFIG_FIELD_FILTERS_WHITE_LIST') . '</option>'; $html[] = ' <option value="NH"' . ($group_filter['filter_type'] == 'NH' ? ' selected="selected"' : '') . '>' . JText::_('COM_CONFIG_FIELD_FILTERS_NO_HTML') . '</option>'; $html[] = ' <option value="NONE"' . ($group_filter['filter_type'] == 'NONE' ? ' selected="selected"' : '') . '>' . JText::_('COM_CONFIG_FIELD_FILTERS_NO_FILTER') . '</option>'; $html[] = ' </select>'; $html[] = ' </td>'; $html[] = ' <td>'; $html[] = ' <input' . ' name="' . $this->name . '[' . $group->value . '][filter_tags]"' . ' type="text"' . ' id="' . $this->id . $group->value . '_filter_tags"' . ' title="' . JText::_('JGLOBAL_FILTER_TAGS_LABEL') . '"' . ' value="' . $group_filter['filter_tags'] . '"' . '/>'; $html[] = ' </td>'; $html[] = ' <td>'; $html[] = ' <input' . ' name="' . $this->name . '[' . $group->value . '][filter_attributes]"' . ' type="text"' . ' id="' . $this->id . $group->value . '_filter_attributes"' . ' title="' . JText::_('JGLOBAL_FILTER_ATTRIBUTES_LABEL') . '"' . ' value="' . $group_filter['filter_attributes'] . '"' . '/>'; $html[] = ' </td>'; $html[] = ' </tr>'; } $html[] = ' </tbody>'; // Close the table. $html[] = '</table>'; // Add notes $html[] = '<div class="alert">'; $html[] = '<p>' . JText::_('JGLOBAL_FILTER_TYPE_DESC') . '</p>'; $html[] = '<p>' . JText::_('JGLOBAL_FILTER_TAGS_DESC') . '</p>'; $html[] = '<p>' . JText::_('JGLOBAL_FILTER_ATTRIBUTES_DESC') . '</p>'; $html[] = '</div>'; return implode("\n", $html); } /** * A helper to get the list of user groups. * * @return array * * @since 1.6 */ protected function getUserGroups() { // Get a database object. $db = JFactory::getDbo(); // Get the user groups from the database. $query = $db->getQuery(true); $query->select('a.id AS value, a.title AS text, COUNT(DISTINCT b.id) AS level'); $query->from('#__usergroups AS a'); $query->join('LEFT', '#__usergroups AS b on a.lft > b.lft AND a.rgt < b.rgt'); $query->group('a.id, a.title, a.lft'); $query->order('a.lft ASC'); $db->setQuery($query); $options = $db->loadObjectList(); return $options; } } PKb��\D�ӡ��)components/com_config/model/component.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_config * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Model for component configuration * * @since 3.2 */ class ConfigModelComponent extends ConfigModelForm { /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @return void * * @since 3.2 */ protected function populateState() { $input = JFactory::getApplication()->input; // Set the component (option) we are dealing with. $component = $input->get('component'); $state = $this->loadState(); $state->set('component.option', $component); // Set an alternative path for the configuration file. if ($path = $input->getString('path')) { $path = JPath::clean(JPATH_SITE . '/' . $path); JPath::check($path); $state->set('component.path', $path); } $this->setState($state); } /** * Method to get a form object. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return mixed A JForm object on success, false on failure * * @since 3.2 */ public function getForm($data = array(), $loadData = true) { $state = $this->getState(); if ($path = $state->get('component.path')) { // Add the search path for the admin component config.xml file. JForm::addFormPath($path); } else { // Add the search path for the admin component config.xml file. JForm::addFormPath(JPATH_ADMINISTRATOR . '/components/' . $state->get('component.option')); } // Get the form. $form = $this->loadForm( 'com_config.component', 'config', array('control' => 'jform', 'load_data' => $loadData), false, '/config' ); if (empty($form)) { return false; } return $form; } /** * Get the component information. * * @return object * * @since 3.2 */ public function getComponent() { $state = $this->getState(); $option = $state->get('component.option'); // Load common and local language files. $lang = JFactory::getLanguage(); $lang->load($option, JPATH_BASE, null, false, true) || $lang->load($option, JPATH_BASE . "/components/$option", null, false, true); $result = JComponentHelper::getComponent($option); return $result; } /** * Method to save the configuration data. * * @param array $data An array containing all global config data. * * @return boolean True on success, false on failure. * * @since 3.2 * @throws RuntimeException */ public function save($data) { $table = JTable::getInstance('extension'); $dispatcher = JEventDispatcher::getInstance(); $context = $this->option . '.' . $this->name; JPluginHelper::importPlugin('extension'); // Save the rules. if (isset($data['params']) && isset($data['params']['rules'])) { $rules = new JAccessRules($data['params']['rules']); $asset = JTable::getInstance('asset'); if (!$asset->loadByName($data['option'])) { $root = JTable::getInstance('asset'); $root->loadByName('root.1'); $asset->name = $data['option']; $asset->title = $data['option']; $asset->setLocation($root->id, 'last-child'); } $asset->rules = (string) $rules; if (!$asset->check() || !$asset->store()) { throw new RuntimeException($asset->getError()); } // We don't need this anymore unset($data['option']); unset($data['params']['rules']); } // Load the previous Data if (!$table->load($data['id'])) { throw new RuntimeException($table->getError()); } unset($data['id']); // Bind the data. if (!$table->bind($data)) { throw new RuntimeException($table->getError()); } // Check the data. if (!$table->check()) { throw new RuntimeException($table->getError()); } $result = $dispatcher->trigger('onExtensionBeforeSave', array($context, &$table, false)); // Store the data. if (in_array(false, $result, true) || !$table->store()) { throw new RuntimeException($table->getError()); } // Trigger the after save event. $dispatcher->trigger('onExtensionAfterSave', array($context, &$table, false)); // Clean the component cache. $this->cleanCache('_system', 0); $this->cleanCache('_system', 1); return true; } } PKb��\�L�� � 'components/com_redirect/tables/link.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Link Table for Redirect. * * @since 1.6 */ class RedirectTableLink extends JTable { /** * Constructor * * @param JDatabaseDriver $db Database object. * * @since 1.6 */ public function __construct($db) { parent::__construct('#__redirect_links', 'id', $db); } /** * Overloaded check function * * @return boolean * * @since 1.6 */ public function check() { $this->old_url = trim(rawurldecode($this->old_url)); $this->new_url = trim(rawurldecode($this->new_url)); // Check for valid name. if (empty($this->old_url)) { $this->setError(JText::_('COM_REDIRECT_ERROR_SOURCE_URL_REQUIRED')); return false; } // Check for NOT NULL. if (empty($this->referer)) { $this->referer = ''; } // Check for valid name if not in advanced mode. if (empty($this->new_url) && JComponentHelper::getParams('com_redirect')->get('mode', 0) == false) { $this->setError(JText::_('COM_REDIRECT_ERROR_DESTINATION_URL_REQUIRED')); return false; } elseif (empty($this->new_url) && JComponentHelper::getParams('com_redirect')->get('mode', 0) == true) { // Else if an empty URL and in redirect mode only throw the same error if the code is a 3xx status code if ($this->header < 400 && $this->header >= 300) { $this->setError(JText::_('COM_REDIRECT_ERROR_DESTINATION_URL_REQUIRED')); return false; } } // Check for duplicates if ($this->old_url == $this->new_url) { $this->setError(JText::_('COM_REDIRECT_ERROR_DUPLICATE_URLS')); return false; } $db = $this->getDbo(); // Check for existing name $query = $db->getQuery(true) ->select($db->quoteName('id')) ->from('#__redirect_links') ->where($db->quoteName('old_url') . ' = ' . $db->quote($this->old_url)); $db->setQuery($query); $xid = (int) $db->loadResult(); if ($xid && $xid != (int) $this->id) { $this->setError(JText::_('COM_REDIRECT_ERROR_DUPLICATE_OLD_URL')); return false; } return true; } /** * Overriden store method to set dates. * * @param boolean $updateNulls True to update fields even if they are null. * * @return boolean True on success. * * @since 1.6 */ public function store($updateNulls = false) { $date = JFactory::getDate()->toSql(); $this->modified_date = $date; if (!$this->id) { // New record. $this->created_date = $date; } return parent::store($updateNulls); } } PKb��\nO���,components/com_redirect/controllers/link.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Redirect link controller class. * * @since 1.6 */ class RedirectControllerLink extends JControllerForm { // Parent class access checks are sufficient for this controller. } PKb��\�xO�a a -components/com_redirect/controllers/links.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Redirect link list controller class. * * @since 1.6 */ class RedirectControllerLinks extends JControllerAdmin { /** * Method to update a record. * * @return void. * * @since 1.6 */ public function activate() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $ids = $this->input->get('cid', array(), 'array'); $newUrl = $this->input->getString('new_url'); $comment = $this->input->getString('comment'); if (empty($ids)) { JError::raiseWarning(500, JText::_('COM_REDIRECT_NO_ITEM_SELECTED')); } else { // Get the model. $model = $this->getModel(); JArrayHelper::toInteger($ids); // Remove the items. if (!$model->activate($ids, $newUrl, $comment)) { JError::raiseWarning(500, $model->getError()); } else { $this->setMessage(JText::plural('COM_REDIRECT_N_LINKS_UPDATED', count($ids))); } } $this->setRedirect('index.php?option=com_redirect&view=links'); } /** * Proxy for getModel. * * @param string $name The name of the model. * @param string $prefix The prefix of the model. * @param array $config An array of settings. * * @return JModel instance * * @since 1.6 */ public function getModel($name = 'Link', $prefix = 'RedirectModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } /** * Executes the batch process to add URLs to the database * * @return void */ public function batch() { $batch_urls_request = $this->input->post->get('batch_urls', array(), 'array'); $batch_urls_lines = array_map('trim', explode("\n", $batch_urls_request[0])); $batch_urls = array(); foreach ($batch_urls_lines as $batch_urls_line) { if (!empty($batch_urls_line)) { $batch_urls[] = array_map('trim', explode('|', $batch_urls_line)); } } // Set default message on error - overwrite if successful $this->setMessage(JText::_('COM_REDIRECT_NO_ITEM_ADDED'), 'error'); if (!empty($batch_urls)) { $model = $this->getModel('Links'); // Execute the batch process if ($model->batchProcess($batch_urls)) { $this->setMessage(JText::plural('COM_REDIRECT_N_LINKS_ADDED', count($batch_urls))); } } $this->setRedirect('index.php?option=com_redirect&view=links'); } } PKb��\˕�E��"components/com_redirect/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="redirect" label="COM_REDIRECT_ADVANCED_OPTIONS" > <field name="mode" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_REDIRECT_MODE_LABEL" description="COM_REDIRECT_MODE_DESC" > <option value="1">JYES</option> <option value="0">JNO</option> </field> </fieldset> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC"> <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_redirect" section="component" /> </fieldset> </config> PKb��\,ް55"components/com_redirect/access.xmlnu�[���<?xml version="1.0" encoding="utf-8" ?> <access component="com_redirect"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> </section> </access> PKb��\����0components/com_redirect/views/link/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 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 HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); JHtml::_('formbehavior.chosen', 'select'); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'link.cancel' || document.formvalidator.isValid(document.getElementById('link-form'))) { Joomla.submitform(task, document.getElementById('link-form')); } }; "); ?> <form action="<?php echo JRoute::_('index.php?option=com_redirect&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="link-form" class="form-validate form-horizontal"> <fieldset> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'basic')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'basic', empty($this->item->id) ? JText::_('COM_REDIRECT_NEW_LINK', true) : JText::sprintf('COM_REDIRECT_EDIT_LINK', $this->item->id, array('jsSafe' => true))); ?> <?php echo $this->form->renderField('old_url'); ?> <?php echo $this->form->renderField('new_url'); ?> <?php echo $this->form->renderField('published'); ?> <?php echo $this->form->renderField('comment'); ?> <?php echo $this->form->renderField('id'); ?> <?php echo $this->form->renderField('created_date'); ?> <?php echo $this->form->renderField('modified_date'); ?> <?php if (JComponentHelper::getParams('com_redirect')->get('mode')) : ?> <?php echo $this->form->renderFieldset('advanced'); ?> <?php endif; ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </fieldset> </form> PKb��\�@-bjj0components/com_redirect/views/link/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View to edit a redirect link. * * @since 1.6 */ class RedirectViewLink extends JViewLegacy { protected $item; protected $form; protected $state; /** * Display the view. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return mixed False if unsuccessful, otherwise void. * * @since 1.6 */ public function display($tpl = null) { $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void. * * @since 1.6 */ protected function addToolbar() { JFactory::getApplication()->input->set('hidemainmenu', true); $isNew = ($this->item->id == 0); $canDo = JHelperContent::getActions('com_redirect'); JToolbarHelper::title($isNew ? JText::_('COM_REDIRECT_MANAGER_LINK_NEW') : JText::_('COM_REDIRECT_MANAGER_LINK_EDIT'), 'refresh redirect'); // If not checked out, can save the item. if ($canDo->get('core.edit')) { JToolbarHelper::apply('link.apply'); JToolbarHelper::save('link.save'); } /** * This component does not support Save as Copy due to uniqueness checks. * While it can be done, it causes too much confusion if the user does * not change the Old URL. */ if ($canDo->get('core.edit') && $canDo->get('core.create')) { JToolbarHelper::save2new('link.save2new'); } if (empty($this->item->id)) { JToolbarHelper::cancel('link.cancel'); } else { JToolbarHelper::cancel('link.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::help('JHELP_COMPONENTS_REDIRECT_MANAGER_EDIT'); } } PKb��\*�=�++?components/com_redirect/views/links/tmpl/default_batch_body.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $published = $this->state->get('filter.published'); ?> <div class="row-fluid"> <div class="control-group span12"> <div class="controls"> <textarea class="span12" rows="10" aria-required="true" value="" id="batch_urls" name="batch_urls"></textarea> </div> </div> </div>PKb��\����``<components/com_redirect/views/links/tmpl/default_addform.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div class="accordion hidden-phone" id="accordion1"> <div class="accordion-group"> <div class="accordion-heading"> <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#batch"> <?php echo JText::_('COM_REDIRECT_FIELD_NEW_URL_LABEL');?> </a> </div> <div id="batch" class="accordion-body collapse"> <div class="accordion-inner"> <fieldset class="batch form-inline"> <div class="control-group"> <label for="new_url" class="control-label"><?php echo JText::_('COM_REDIRECT_FIELD_NEW_URL_LABEL'); ?></label> <div class="controls"> <input type="text" name="new_url" id="new_url" value="" size="50" title="<?php echo JText::_('COM_REDIRECT_FIELD_NEW_URL_DESC'); ?>" /> </div> </div> <div class="control-group"> <label for="comment" class="control-label"><?php echo JText::_('COM_REDIRECT_FIELD_COMMENT_LABEL'); ?></label> <div class="controls"> <input type="text" name="comment" id="comment" value="" size="50" title="<?php echo JText::_('COM_REDIRECT_FIELD_COMMENT_DESC'); ?>" /> </div> </div> <button class="btn btn-primary" type="button" onclick="this.form.task.value='links.activate';this.form.submit();"><?php echo JText::_('COM_REDIRECT_BUTTON_UPDATE_LINKS'); ?></button> </fieldset> </div> </div> </div> </div> PKb��\��DDAcomponents/com_redirect/views/links/tmpl/default_batch_footer.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <button class="btn" type="button" onclick="document.id('batch_urls').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-success" type="submit" onclick="Joomla.submitbutton('links.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button>PKb��\"�;��4components/com_redirect/views/links/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $user = JFactory::getUser(); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_redirect&view=links'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_REDIRECT_SEARCH_LINKS'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC'); ?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> </div> <div class="clearfix"> </div> <?php if ($this->enabled) : ?> <div class="alert alert-info"> <a class="close" data-dismiss="alert">×</a> <?php echo JText::_('COM_REDIRECT_PLUGIN_ENABLED'); ?> <?php if ($this->collect_urls_enabled) : ?> <?php echo JText::_('COM_REDIRECT_COLLECT_URLS_ENABLED'); ?> <?php else : ?> <?php echo JText::_('COM_REDIRECT_COLLECT_URLS_DISABLED'); ?> <?php endif; ?> </div> <?php else : ?> <div class="alert alert-error"> <a class="close" data-dismiss="alert">×</a> <?php echo JText::_('COM_REDIRECT_PLUGIN_DISABLED'); ?> </div> <?php endif; ?> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped"> <thead> <tr> <th width="20" class="center"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.published', $listDirn, $listOrder); ?> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'COM_REDIRECT_HEADING_OLD_URL', 'a.old_url', $listDirn, $listOrder); ?> </th> <th width="30%" class="nowrap"> <?php echo JHtml::_('grid.sort', 'COM_REDIRECT_HEADING_NEW_URL', 'a.new_url', $listDirn, $listOrder); ?> </th> <th width="30%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_REDIRECT_HEADING_REFERRER', 'a.referer', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_REDIRECT_HEADING_CREATED_DATE', 'a.created_date', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_REDIRECT_HEADING_HITS', 'a.hits', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="8"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : $canCreate = $user->authorise('core.create', 'com_redirect'); $canEdit = $user->authorise('core.edit', 'com_redirect'); $canChange = $user->authorise('core.edit.state', 'com_redirect'); ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td> <?php echo JHtml::_('redirect.published', $item->published, $i); ?> </td> <td class="break-word"> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_redirect&task=link.edit&id=' . $item->id);?>" title="<?php echo $this->escape($item->old_url); ?>"> <?php echo $this->escape(str_replace(JUri::root(), '', rawurldecode($item->old_url))); ?></a> <?php else : ?> <?php echo $this->escape(str_replace(JUri::root(), '', rawurldecode($item->old_url))); ?> <?php endif; ?> </td> <td class="small break-word"> <?php echo $this->escape(rawurldecode($item->new_url)); ?> </td> <td class="small break-word hidden-phone"> <?php echo $this->escape($item->referer); ?> </td> <td class="small hidden-phone"> <?php echo JHtml::_('date', $item->created_date, JText::_('DATE_FORMAT_LC4')); ?> </td> <td class="hidden-phone"> <?php echo (int) $item->hits; ?> </td> <td class="hidden-phone"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php // Load the batch processing form if user is allowed ?> <?php if ($user->authorise('core.create', 'com_redirect') && $user->authorise('core.edit', 'com_redirect') && $user->authorise('core.edit.state', 'com_redirect')) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_REDIRECT_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif;?> <?php endif; ?> <?php if (!empty($this->items)) : ?> <?php echo $this->loadTemplate('addform'); ?> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKb��\�b�\��:components/com_redirect/views/links/tmpl/default_batch.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * * @deprecated 3.4 Use default_batch_body and default_batch_footer */ defined('_JEXEC') or die; ?> <div class="modal hide fade" id="collapseModal"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h3><?php echo JText::_('COM_REDIRECT_BATCH_OPTIONS'); ?></h3> </div> <div class="modal-body modal-batch"> <p><?php echo JText::_('COM_REDIRECT_BATCH_TIP'); ?></p> <div class="row-fluid"> <div class="control-group span12"> <div class="controls"> <textarea class="span12" rows="10" aria-required="true" value="" id="batch_urls" name="batch_urls"></textarea> </div> </div> </div> </div> <div class="modal-footer"> <button class="btn" type="button" onclick="document.id('batch_urls').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-primary" type="submit" onclick="Joomla.submitbutton('links.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button> </div> </div> PKb��\w��1components/com_redirect/views/links/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of redirection links. * * @since 1.6 */ class RedirectViewLinks extends JViewLegacy { protected $enabled; protected $collect_urls_enabled; protected $items; protected $pagination; protected $state; /** * Display the view. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return mixed False if unsuccessful, otherwise void. * * @since 1.6 */ public function display($tpl = null) { $this->enabled = RedirectHelper::isEnabled(); $this->collect_urls_enabled = RedirectHelper::collectUrlsEnabled(); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void. * * @since 1.6 */ protected function addToolbar() { $state = $this->get('State'); $canDo = JHelperContent::getActions('com_redirect'); JToolbarHelper::title(JText::_('COM_REDIRECT_MANAGER_LINKS'), 'refresh redirect'); if ($canDo->get('core.create')) { JToolbarHelper::addNew('link.add'); } if ($canDo->get('core.edit')) { JToolbarHelper::editList('link.edit'); } if ($canDo->get('core.edit.state')) { if ($state->get('filter.state') != 2) { JToolbarHelper::divider(); JToolbarHelper::publish('links.publish', 'JTOOLBAR_ENABLE', true); JToolbarHelper::unpublish('links.unpublish', 'JTOOLBAR_DISABLE', true); } if ($state->get('filter.state') != -1 ) { JToolbarHelper::divider(); if ($state->get('filter.state') != 2) { JToolbarHelper::archiveList('links.archive'); } elseif ($state->get('filter.state') == 2) { JToolbarHelper::unarchiveList('links.publish', 'JTOOLBAR_UNARCHIVE'); } } } if ($canDo->get('core.create')) { // Get the toolbar object instance $bar = JToolBar::getInstance('toolbar'); $title = JText::_('JTOOLBAR_BATCH'); // Instantiate a new JLayoutFile instance and render the batch button $layout = new JLayoutFile('joomla.toolbar.batch'); $dhtml = $layout->render(array('title' => $title)); $bar->appendButton('Custom', $dhtml, 'batch'); } if ($state->get('filter.state') == -2 && $canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'links.delete', 'JTOOLBAR_EMPTY_TRASH'); JToolbarHelper::divider(); } elseif ($canDo->get('core.edit.state')) { JToolbarHelper::trash('links.trash'); JToolbarHelper::divider(); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences('com_redirect'); JToolbarHelper::divider(); } JToolbarHelper::help('JHELP_COMPONENTS_REDIRECT_MANAGER'); JHtmlSidebar::setAction('index.php?option=com_redirect&view=links'); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_PUBLISHED'), 'filter_state', JHtml::_('select.options', RedirectHelper::publishedOptions(), 'value', 'text', $this->state->get('filter.state'), true) ); } } PKb��\�]��1components/com_redirect/helpers/html/redirect.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Utility class for creating HTML Grids. * * @since 1.6 */ class JHtmlRedirect { /** * Display the published or unpublished state of an item. * * @param int $value The state value. * @param int $i The ID of the item. * @param boolean $canChange An optional prefix for the task. * * @return string * * @since 1.6 * * @throws InvalidArgumentException */ public static function published($value = 0, $i = null, $canChange = true) { // Note: $i is required but has to be an optional argument in the function call due to argument order if (null === $i) { throw new InvalidArgumentException('$i is a required argument in JHtmlRedirect::published'); } // Array of image, task, title, action $states = array( 1 => array('publish', 'links.unpublish', 'JENABLED', 'COM_REDIRECT_DISABLE_LINK'), 0 => array('unpublish', 'links.publish', 'JDISABLED', 'COM_REDIRECT_ENABLE_LINK'), 2 => array('archive', 'links.unpublish', 'JARCHIVED', 'JUNARCHIVE'), -2 => array('trash', 'links.publish', 'JTRASHED', 'COM_REDIRECT_ENABLE_LINK'), ); $state = JArrayHelper::getValue($states, (int) $value, $states[0]); $icon = $state[0]; if ($canChange) { $html = '<a href="#" onclick="return listItemTask(\'cb' . $i . '\',\'' . $state[1] . '\')" class="btn btn-micro hasTooltip' . ($value == 1 ? ' active' : '') . '" title="' . JHtml::tooltipText($state[3]) . '"><span class="icon-' . $icon . '"></span></a>'; } return $html; } } PKb��\��w� � ,components/com_redirect/helpers/redirect.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * Redirect component helper. * * @since 1.6 */ class RedirectHelper { public static $extension = 'com_redirect'; /** * Configure the Linkbar. * * @param string $vName The name of the active view. * * @return void. * * @since 1.6 */ public static function addSubmenu($vName) { // No submenu for this component. } /** * Gets a list of the actions that can be performed. * * @return JObject * * @deprecated 3.2 Use JHelperContent::getActions() instead */ public static function getActions() { // Log usage of deprecated function JLog::add(__METHOD__ . '() is deprecated, use JHelperContent::getActions() with new arguments order instead.', JLog::WARNING, 'deprecated'); // Get list of actions $result = JHelperContent::getActions('com_redirect'); return $result; } /** * Returns an array of standard published state filter options. * * @return array An array containing the options * * @since 1.6 */ public static function publishedOptions() { // Build the active state filter options. $options = array(); $options[] = JHtml::_('select.option', '*', 'JALL'); $options[] = JHtml::_('select.option', '1', 'JENABLED'); $options[] = JHtml::_('select.option', '0', 'JDISABLED'); $options[] = JHtml::_('select.option', '2', 'JARCHIVED'); $options[] = JHtml::_('select.option', '-2', 'JTRASHED'); return $options; } /** * Determines if the plugin for Redirect to work is enabled. * * @return boolean * * @since 1.6 */ public static function isEnabled() { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select($db->quoteName('enabled')) ->from('#__extensions') ->where($db->quoteName('folder') . ' = ' . $db->quote('system')) ->where($db->quoteName('element') . ' = ' . $db->quote('redirect')); $db->setQuery($query); try { $result = (boolean) $db->loadResult(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); } return $result; } /** * Checks whether the option "Collect URLs" is enabled for the output message * * @return boolean * * @since 3.4 */ public static function collectUrlsEnabled() { $collect_urls = false; if (JPluginHelper::isEnabled('system', 'redirect')) { $params = new Registry(JPluginHelper::getPlugin('system', 'redirect')->params); $collect_urls = (bool) $params->get('collect_urls', 1); } return $collect_urls; } } PKb��\�}U�gg$components/com_redirect/redirect.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_redirect</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_REDIRECT_XML_DESCRIPTION</description> <administration> <menu link="option=com_redirect" img="class:redirect">Redirect</menu> <files folder="admin"> <filename>config.xml</filename> <filename>controller.php</filename> <filename>redirect.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>tables</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_redirect.ini</language> <language tag="en-GB">language/en-GB.com_redirect.sys.ini</language> </languages> </administration> </extension> PKb��\' e���2components/com_redirect/models/fields/redirect.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; JFormHelper::loadFieldClass('list'); /** * A drop down containing all valid HTTP 1.1 response codes. * * @package Joomla.Administrator * @subpackage com_redirect * @since 3.4 */ class JFormFieldRedirect extends JFormFieldList { /** * The form field type. * * @var string * @since 3.4 */ protected $type = 'Redirect'; /** * A map of integer HTTP 1.1 response codes to the full HTTP Status for the headers. * * @var object * @since 3.4 * @see http://www.iana.org/assignments/http-status-codes/ */ protected $responseMap = array( 100 => 'HTTP/1.1 100 Continue', 101 => 'HTTP/1.1 101 Switching Protocols', 102 => 'HTTP/1.1 102 Processing', 200 => 'HTTP/1.1 200 OK', 201 => 'HTTP/1.1 201 Created', 202 => 'HTTP/1.1 202 Accepted', 203 => 'HTTP/1.1 203 Non-Authoritative Information', 204 => 'HTTP/1.1 204 No Content', 205 => 'HTTP/1.1 205 Reset Content', 206 => 'HTTP/1.1 206 Partial Content', 207 => 'HTTP/1.1 207 Multi-Status', 208 => 'HTTP/1.1 208 Already Reported', 226 => 'HTTP/1.1 226 IM Used', 300 => 'HTTP/1.1 300 Multiple Choices', 301 => 'HTTP/1.1 301 Moved Permanently', 302 => 'HTTP/1.1 302 Found', 303 => 'HTTP/1.1 303 See other', 304 => 'HTTP/1.1 304 Not Modified', 305 => 'HTTP/1.1 305 Use Proxy', 306 => 'HTTP/1.1 306 (Unused)', 307 => 'HTTP/1.1 307 Temporary Redirect', 308 => 'HTTP/1.1 308 Permanent Redirect', 400 => 'HTTP/1.1 400 Bad Request', 401 => 'HTTP/1.1 401 Unauthorized', 402 => 'HTTP/1.1 402 Payment Required', 403 => 'HTTP/1.1 403 Forbidden', 404 => 'HTTP/1.1 404 Not Found', 405 => 'HTTP/1.1 405 Method Not Allowed', 406 => 'HTTP/1.1 406 Not Acceptable', 407 => 'HTTP/1.1 407 Proxy Authentication Required', 408 => 'HTTP/1.1 408 Request Timeout', 409 => 'HTTP/1.1 409 Conflict', 410 => 'HTTP/1.1 410 Gone', 411 => 'HTTP/1.1 411 Length Required', 412 => 'HTTP/1.1 412 Precondition Failed', 413 => 'HTTP/1.1 413 Payload Too Large', 414 => 'HTTP/1.1 414 URI Too Long', 415 => 'HTTP/1.1 415 Unsupported Media Type', 416 => 'HTTP/1.1 416 Requested Range Not Satisfiable', 417 => 'HTTP/1.1 417 Expectation Failed', 418 => 'HTTP/1.1 418 I\'m a teapot', 422 => 'HTTP/1.1 422 Unprocessable Entity', 423 => 'HTTP/1.1 423 Locked', 424 => 'HTTP/1.1 424 Failed Dependency', 425 => 'HTTP/1.1 425 Reserved for WebDAV advanced collections expired proposal', 426 => 'HTTP/1.1 426 Upgrade Required', 428 => 'HTTP/1.1 428 Precondition Required', 429 => 'HTTP/1.1 429 Too Many Requests', 431 => 'HTTP/1.1 431 Request Header Fields Too Large', 500 => 'HTTP/1.1 500 Internal Server Error', 501 => 'HTTP/1.1 501 Not Implemented', 502 => 'HTTP/1.1 502 Bad Gateway', 503 => 'HTTP/1.1 503 Service Unavailable', 504 => 'HTTP/1.1 504 Gateway Timeout', 505 => 'HTTP/1.1 505 HTTP Version Not Supported', 506 => 'HTTP/1.1 506 Variant Also Negotiates (Experimental)', 507 => 'HTTP/1.1 507 Insufficient Storage', 508 => 'HTTP/1.1 508 Loop Detected', 510 => 'HTTP/1.1 510 Not Extended', 511 => 'HTTP/1.1 511 Network Authentication Required', ); /** * Method to get the field input markup. * * @return string The field input markup. * * @since 3.4 */ protected function getOptions() { $options = array(); foreach ($this->responseMap as $key => $value) { $options[] = JHtml::_('select.option', $key, $value); } // Merge any additional options in the XML definition. $options = array_merge(parent::getOptions(), $options); return $options; } } PKb��\Gx���-components/com_redirect/models/forms/link.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field id="id" name="id" type="text" default="0" readonly="true" class="readonly" label="JGLOBAL_FIELD_ID_LABEL" description ="JGLOBAL_FIELD_ID_DESC" /> <field name="old_url" type="text" label="COM_REDIRECT_FIELD_OLD_URL_LABEL" description="COM_REDIRECT_FIELD_OLD_URL_DESC" size="50" required="true" /> <field name="new_url" type="text" label="COM_REDIRECT_FIELD_NEW_URL_LABEL" description="COM_REDIRECT_FIELD_NEW_URL_DESC" size="50" required="true" /> <field name="comment" type="text" label="COM_REDIRECT_FIELD_COMMENT_LABEL" description="COM_REDIRECT_FIELD_COMMENT_DESC" size="40" /> <field name="published" type="list" label="JSTATUS" description="JFIELD_PUBLISHED_DESC" size="1" required="true" default="1"> <option value="1"> JENABLED</option> <option value="0"> JDISABLED</option> <option value="2"> JARCHIVED</option> <option value="-2"> JTRASHED</option> </field> <field name="referer" type="text" id="referer" label="COM_REDIRECT_FIELD_REFERRER_LABEL" size="50" readonly="true" /> <field name="created_date" type="text" id="created_date" class="readonly" label="COM_REDIRECT_FIELD_CREATED_DATE_LABEL" size="20" readonly="true" /> <field name="modified_date" type="text" id="modified_date" class="readonly" label="COM_REDIRECT_FIELD_UPDATED_DATE_LABEL" size="20" readonly="true" /> <field name="hits" type="text" id="hits" class="readonly" label="JGLOBAL_HITS" size="20" readonly="true" filter="unset" /> </fieldset> <fieldset name="advanced"> <field name="header" type="redirect" default="301" class="input-xlarge" label="COM_REDIRECT_FIELD_REDIRECT_STATUS_CODE_LABEL" description="COM_REDIRECT_FIELD_REDIRECT_STATUS_CODE_DESC" /> </fieldset> </form> PKb��\�O+V'components/com_redirect/models/link.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Redirect link model. * * @since 1.6 */ class RedirectModelLink extends JModelAdmin { /** * @var string The prefix to use with controller messages. * @since 1.6 */ protected $text_prefix = 'COM_REDIRECT'; /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to delete the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canDelete($record) { if ($record->published != -2) { return false; } $user = JFactory::getUser(); return $user->authorise('core.delete', 'com_redirect'); } /** * Method to test whether a record can have its state edited. * * @param object $record A record object. * * @return boolean True if allowed to change the state of the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canEditState($record) { $user = JFactory::getUser(); // Check the component since there are no categories or other assets. return $user->authorise('core.edit.state', 'com_redirect'); } /** * Returns a reference to the a Table object, always creating it. * * @param string $type The table type to instantiate * @param string $prefix A prefix for the table class name. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A database object * * @since 1.6 */ public function getTable($type = 'Link', $prefix = 'RedirectTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Method to get the record form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return JForm A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_redirect.link', 'link', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } // Modify the form based on access controls. if ($this->canEditState((object) $data) != true) { // Disable fields for display. $form->setFieldAttribute('published', 'disabled', 'true'); // Disable fields while saving. // The controller has already verified this is a record you can edit. $form->setFieldAttribute('published', 'filter', 'unset'); } // If in advanced mode then we make sure the new url field is not compulsory and the header // field compulsory in case people select non-3xx redirects if (JComponentHelper::getParams('com_redirect')->get('mode', 0) == true) { $form->setFieldAttribute('new_url', 'required', 'false'); $form->setFieldAttribute('header', 'required', 'true'); } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_redirect.edit.link.data', array()); if (empty($data)) { $data = $this->getItem(); } $this->preprocessData('com_redirect.link', $data); return $data; } /** * Method to activate links. * * @param array &$pks An array of link ids. * @param string $url The new URL to set for the redirect. * @param string $comment A comment for the redirect links. * * @return boolean Returns true on success, false on failure. * * @since 1.6 */ public function activate(&$pks, $url, $comment = null) { $user = JFactory::getUser(); $db = $this->getDbo(); // Sanitize the ids. $pks = (array) $pks; JArrayHelper::toInteger($pks); // Populate default comment if necessary. $comment = (!empty($comment)) ? $comment : JText::sprintf('COM_REDIRECT_REDIRECTED_ON', JHtml::_('date', time())); // Access checks. if (!$user->authorise('core.edit', 'com_redirect')) { $pks = array(); $this->setError(JText::_('JLIB_APPLICATION_ERROR_EDIT_NOT_PERMITTED')); return false; } if (!empty($pks)) { // Update the link rows. $query = $db->getQuery(true) ->update($db->quoteName('#__redirect_links')) ->set($db->quoteName('new_url') . ' = ' . $db->quote($url)) ->set($db->quoteName('published') . ' = ' . (int) 1) ->set($db->quoteName('comment') . ' = ' . $db->quote($comment)) ->where($db->quoteName('id') . ' IN (' . implode(',', $pks) . ')'); $db->setQuery($query); try { $db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } } return true; } } PKb��\��e�(components/com_redirect/models/links.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Methods supporting a list of redirect links. * * @since 1.6 */ class RedirectModelLinks extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'old_url', 'a.old_url', 'new_url', 'a.new_url', 'referer', 'a.referer', 'hits', 'a.hits', 'created_date', 'a.created_date', 'published', 'a.published', ); } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $state = $this->getUserStateFromRequest($this->context . '.filter.state', 'filter_state', '', 'string'); $this->setState('filter.state', $state); // Load the parameters. $params = JComponentHelper::getParams('com_redirect'); $this->setState('params', $params); // List state information. parent::populateState('a.old_url', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. * * @since 1.6 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.state'); return parent::getStoreId($id); } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery * * @since 1.6 */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.*' ) ); $query->from($db->quoteName('#__redirect_links') . ' AS a'); // Filter by published state $state = $this->getState('filter.state'); if (is_numeric($state)) { $query->where('a.published = ' . (int) $state); } elseif ($state === '') { $query->where('(a.published IN (0,1,2))'); } // Filter the items over the search string if set. $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } else { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where( '(' . $db->quoteName('old_url') . ' LIKE ' . $search . ' OR ' . $db->quoteName('new_url') . ' LIKE ' . $search . ' OR ' . $db->quoteName('comment') . ' LIKE ' . $search . ' OR ' . $db->quoteName('referer') . ' LIKE ' . $search . ')' ); } } // Add the list ordering clause. $query->order($db->escape($this->getState('list.ordering', 'a.old_url')) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } /** * Add the entered URLs into the database * * @param array $batch_urls Array of URLs to enter into the database * * @return bool */ public function batchProcess($batch_urls) { $db = JFactory::getDbo(); $query = $db->getQuery(true); $columns = array( $db->quoteName('old_url'), $db->quoteName('new_url'), $db->quoteName('referer'), $db->quoteName('comment'), $db->quoteName('hits'), $db->quoteName('published'), $db->quoteName('created_date') ); $query->columns($columns); foreach ($batch_urls as $batch_url) { // Source URLs need to have the correct URL format to work properly if (strpos($batch_url[0], JUri::root()) === false) { $old_url = JUri::root() . $batch_url[0]; } else { $old_url = $batch_url[0]; } // Destination URL can also be an external URL if (!empty($batch_url[1])) { $new_url = $batch_url[1]; } else { $new_url = ''; } $query->insert($db->quoteName('#__redirect_links'), false) ->values( $db->quote($old_url) . ', ' . $db->quote($new_url) . ' ,' . $db->quote('') . ', ' . $db->quote('') . ', 0, 0, ' . $db->quote(JFactory::getDate()->toSql()) ); } $db->setQuery($query); $db->execute(); return true; } } PKb��\T�~{{&components/com_redirect/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Redirect master display controller. * * @since 1.6 */ class RedirectController extends JControllerLegacy { /** * @var string The default view. * @since 1.6 */ protected $default_view = 'links'; /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached. * @param mixed $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { require_once JPATH_COMPONENT . '/helpers/redirect.php'; // Load the submenu. RedirectHelper::addSubmenu($this->input->get('view', 'links')); $view = $this->input->get('view', 'links'); $layout = $this->input->get('layout', 'default'); $id = $this->input->getInt('id'); // Check for edit form. if ($view == 'link' && $layout == 'edit' && !$this->checkEditId('com_redirect.edit.link', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_redirect&view=links', false)); return false; } parent::display(); } } PKb��\��>>$components/com_redirect/redirect.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_redirect * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; if (!JFactory::getUser()->authorise('core.manage', 'com_redirect')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $controller = JControllerLegacy::getInstance('Redirect'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\�.v���/components/com_installer/controllers/update.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Installer Update Controller * * @since 1.6 */ class InstallerControllerUpdate extends JControllerLegacy { /** * Update a set of extensions. * * @return void * * @since 1.6 */ public function update() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); /** @var InstallerModelUpdate $model */ $model = $this->getModel('update'); $uid = $this->input->get('cid', array(), 'array'); JArrayHelper::toInteger($uid, array()); // Get the minimum stability. $component = JComponentHelper::getComponent('com_installer'); $params = $component->params; $minimum_stability = $params->get('minimum_stability', JUpdater::STABILITY_STABLE, 'int'); $model->update($uid, $minimum_stability); if ($model->getState('result', false)) { $cache = JFactory::getCache('mod_menu'); $cache->clean(); } $app = JFactory::getApplication(); $redirect_url = $app->getUserState('com_installer.redirect_url'); // Don't redirect to an external URL. if (!JUri::isInternal($redirect_url)) { $redirect_url = ''; } if (empty($redirect_url)) { $redirect_url = JRoute::_('index.php?option=com_installer&view=update', false); } else { // Wipe out the user state when we're going to redirect. $app->setUserState('com_installer.redirect_url', ''); $app->setUserState('com_installer.message', ''); $app->setUserState('com_installer.extension_message', ''); } $this->setRedirect($redirect_url); } /** * Find new updates. * * @return void * * @since 1.6 */ public function find() { (JSession::checkToken() or JSession::checkToken('get')) or jexit(JText::_('JINVALID_TOKEN')); // Get the caching duration. $component = JComponentHelper::getComponent('com_installer'); $params = $component->params; $cache_timeout = $params->get('cachetimeout', 6, 'int'); $cache_timeout = 3600 * $cache_timeout; // Get the minimum stability. $minimum_stability = $params->get('minimum_stability', JUpdater::STABILITY_STABLE, 'int'); // Find updates. /** @var InstallerModelUpdate $model */ $model = $this->getModel('update'); $disabledUpdateSites = $model->getDisabledUpdateSites(); if ($disabledUpdateSites) { $updateSitesUrl = JRoute::_('index.php?option=com_installer&view=updatesites'); $this->setMessage(JText::sprintf('COM_INSTALLER_MSG_UPDATE_SITES_COUNT_CHECK', $updateSitesUrl), 'warning'); } $model->findUpdates(0, $cache_timeout, $minimum_stability); $this->setRedirect(JRoute::_('index.php?option=com_installer&view=update', false)); } /** * Purges updates. * * @return void * * @since 1.6 */ public function purge() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $model = $this->getModel('update'); $model->purge(); /** * We no longer need to enable update sites in Joomla! 3.4 as we now allow the users to manage update sites * themselves. * $model->enableSites(); */ $this->setRedirect(JRoute::_('index.php?option=com_installer&view=update', false), $model->_message); } /** * Fetch and report updates in JSON format, for AJAX requests * * @return void * * @since 2.5 */ public function ajax() { $app = JFactory::getApplication(); if (!JSession::checkToken('get')) { JResponse::setHeader('status', 403, true); $app->sendHeaders(); echo JText::_('JINVALID_TOKEN'); $app->close(); } $eid = $this->input->getInt('eid', 0); $skip = $this->input->get('skip', array(), 'array'); $cache_timeout = $this->input->getInt('cache_timeout', 0); $minimum_stability = $this->input->getInt('minimum_stability', -1); $component = JComponentHelper::getComponent('com_installer'); $params = $component->params; if ($cache_timeout == 0) { $cache_timeout = $params->get('cachetimeout', 6, 'int'); $cache_timeout = 3600 * $cache_timeout; } if ($minimum_stability < 0) { $minimum_stability = $params->get('minimum_stability', JUpdater::STABILITY_STABLE, 'int'); } /** @var InstallerModelUpdate $model */ $model = $this->getModel('update'); $model->findUpdates($eid, $cache_timeout, $minimum_stability); $model->setState('list.start', 0); $model->setState('list.limit', 0); if ($eid != 0) { $model->setState('filter.extension_id', $eid); } $updates = $model->getItems(); if (!empty($skip)) { $unfiltered_updates = $updates; $updates = array(); foreach ($unfiltered_updates as $update) { if (!in_array($update->extension_id, $skip)) { $updates[] = $update; } } } echo json_encode($updates); $app->close(); } } PKb��\��k���2components/com_installer/controllers/languages.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License, see LICENSE.php */ defined('_JEXEC') or die; /** * Languages Installer Controller * * @since 2.5.7 */ class InstallerControllerLanguages extends JControllerLegacy { /** * Finds new Languages. * * @return void * * @since 2.5.7 */ public function find() { // Purge the updates list $model = $this->getModel('update'); $model->purge(); // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Get the caching duration $component = JComponentHelper::getComponent('com_installer'); $params = $component->params; $cache_timeout = $params->get('cachetimeout', 6, 'int'); $cache_timeout = 3600 * $cache_timeout; // Find updates $model = $this->getModel('languages'); if (!$model->findLanguages($cache_timeout)) { $this->setError($model->getError()); $this->setMessage($this->getError(), 'error'); } $this->setRedirect(JRoute::_('index.php?option=com_installer&view=languages', false)); } /** * Purge the updates list. * * @return void * * @since 2.5.7 */ public function purge() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Purge updates $model = $this->getModel('update'); $model->purge(); $model->enableSites(); $this->setRedirect(JRoute::_('index.php?option=com_installer&view=languages', false), $model->_message); } /** * Install languages. * * @return void * * @since 2.5.7 */ public function install() { $model = $this->getModel('languages'); // Get array of selected languages $lids = $this->input->get('cid', array(), 'array'); JArrayHelper::toInteger($lids, array()); if (!$lids) { // No languages have been selected $app = JFactory::getApplication(); $app->enqueueMessage(JText::_('COM_INSTALLER_MSG_DISCOVER_NOEXTENSIONSELECTED')); } else { // Install selected languages $model->install($lids); } $this->setRedirect(JRoute::_('index.php?option=com_installer&view=languages', false)); } } PKb��\��_��1components/com_installer/controllers/discover.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Discover Installation Controller * * @since 1.6 */ class InstallerControllerDiscover extends JControllerLegacy { /** * Refreshes the cache of discovered extensions. * * @return void * * @since 1.6 */ public function refresh() { $model = $this->getModel('discover'); $model->discover(); $this->setRedirect(JRoute::_('index.php?option=com_installer&view=discover', false)); } /** * Install a discovered extension. * * @return void * * @since 1.6 */ public function install() { $model = $this->getModel('discover'); $model->discover_install(); $this->setRedirect(JRoute::_('index.php?option=com_installer&view=discover', false)); } /** * Clean out the discovered extension cache. * * @return void * * @since 1.6 */ public function purge() { $model = $this->getModel('discover'); $model->purge(); $this->setRedirect(JRoute::_('index.php?option=com_installer&view=discover', false), $model->_message); } } PKb��\#SZZ/components/com_installer/controllers/manage.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Installer Manage Controller * * @since 1.6 */ class InstallerControllerManage extends JControllerLegacy { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { parent::__construct($config); $this->registerTask('unpublish', 'publish'); $this->registerTask('publish', 'publish'); } /** * Enable/Disable an extension (if supported). * * @return void * * @since 1.6 */ public function publish() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $ids = $this->input->get('cid', array(), 'array'); $values = array('publish' => 1, 'unpublish' => 0); $task = $this->getTask(); $value = JArrayHelper::getValue($values, $task, 0, 'int'); if (empty($ids)) { JError::raiseWarning(500, JText::_('COM_INSTALLER_ERROR_NO_EXTENSIONS_SELECTED')); } else { // Get the model. $model = $this->getModel('manage'); // Change the state of the records. if (!$model->publish($ids, $value)) { JError::raiseWarning(500, implode('<br />', $model->getErrors())); } else { if ($value == 1) { $ntext = 'COM_INSTALLER_N_EXTENSIONS_PUBLISHED'; } elseif ($value == 0) { $ntext = 'COM_INSTALLER_N_EXTENSIONS_UNPUBLISHED'; } $this->setMessage(JText::plural($ntext, count($ids))); } } $this->setRedirect(JRoute::_('index.php?option=com_installer&view=manage', false)); } /** * Remove an extension (Uninstall). * * @return void * * @since 1.5 */ public function remove() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $eid = $this->input->get('cid', array(), 'array'); $model = $this->getModel('manage'); JArrayHelper::toInteger($eid, array()); $model->remove($eid); $this->setRedirect(JRoute::_('index.php?option=com_installer&view=manage', false)); } /** * Refreshes the cached metadata about an extension. * * Useful for debugging and testing purposes when the XML file might change. * * @return void * * @since 1.6 */ public function refresh() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $uid = $this->input->get('cid', array(), 'array'); $model = $this->getModel('manage'); JArrayHelper::toInteger($uid, array()); $model->refresh($uid); $this->setRedirect(JRoute::_('index.php?option=com_installer&view=manage', false)); } } PKb��\d���0components/com_installer/controllers/install.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Installer controller for Joomla! installer class. * * @since 1.5 */ class InstallerControllerInstall extends JControllerLegacy { /** * Install an extension. * * @return void * * @since 1.5 */ public function install() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $model = $this->getModel('install'); if ($model->install()) { $cache = JFactory::getCache('mod_menu'); $cache->clean(); // TODO: Reset the users acl here as well to kill off any missing bits. } $app = JFactory::getApplication(); $redirect_url = $app->getUserState('com_installer.redirect_url'); // Don't redirect to an external URL. if (!JUri::isInternal($redirect_url)) { $redirect_url = ''; } if (empty($redirect_url)) { $redirect_url = JRoute::_('index.php?option=com_installer&view=install', false); } else { // Wipe out the user state when we're going to redirect. $app->setUserState('com_installer.redirect_url', ''); $app->setUserState('com_installer.message', ''); $app->setUserState('com_installer.extension_message', ''); } $this->setRedirect($redirect_url); } } PKb��\���$$1components/com_installer/controllers/database.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Installer Database Controller * * @since 2.5 */ class InstallerControllerDatabase extends JControllerLegacy { /** * Tries to fix missing database updates * * @return void * * @since 2.5 * @todo Purge updates has to be replaced with an events system */ public function fix() { $model = $this->getModel('database'); $model->fix(); // Purge updates JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_joomlaupdate/models', 'JoomlaupdateModel'); $updateModel = JModelLegacy::getInstance('default', 'JoomlaupdateModel'); $updateModel->purge(); // Refresh versionable assets cache JFactory::getApplication()->flushAssets(); $this->setRedirect(JRoute::_('index.php?option=com_installer&view=database', false)); } } PKb��\��_?cc4components/com_installer/controllers/updatesites.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Installer Update Sites Controller * * @package Joomla.Administrator * @subpackage com_installer * @since 3.4 */ class InstallerControllerUpdatesites extends JControllerLegacy { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 3.4 */ public function __construct($config = array()) { parent::__construct($config); $this->registerTask('unpublish', 'publish'); $this->registerTask('publish', 'publish'); } /** * Enable/Disable an extension (if supported). * * @return void * * @since 3.4 * * @throws Exception on error */ public function publish() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $ids = $this->input->get('cid', array(), 'array'); $values = array('publish' => 1, 'unpublish' => 0); $task = $this->getTask(); $value = JArrayHelper::getValue($values, $task, 0, 'int'); if (empty($ids)) { throw new Exception(JText::_('COM_INSTALLER_ERROR_NO_UPDATESITES_SELECTED'), 500); } // Get the model. $model = $this->getModel('Updatesites'); // Change the state of the records. if (!$model->publish($ids, $value)) { throw new Exception(implode('<br />', $model->getErrors()), 500); } $ntext = ($value == 0) ? 'COM_INSTALLER_N_UPDATESITES_UNPUBLISHED' : 'COM_INSTALLER_N_UPDATESITES_PUBLISHED'; $this->setMessage(JText::plural($ntext, count($ids))); $this->setRedirect(JRoute::_('index.php?option=com_installer&view=updatesites', false)); } } PKb��\��n;;#components/com_installer/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="preferences" label="COM_INSTALLER_PREFERENCES_LABEL" description="COM_INSTALLER_PREFERENCES_DESCRIPTION" > <field name="show_jed_info" type="radio" label="COM_INSTALLER_SHOW_JED_INFORMATION_LABEL" description="COM_INSTALLER_SHOW_JED_INFORMATION_DESC" class="btn-group btn-group-yesno" default="1"> <option value="1">COM_INSTALLER_SHOW_JED_INFORMATION_SHOW_MESSAGE</option> <option value="0">COM_INSTALLER_SHOW_JED_INFORMATION_HIDE_MESSAGE</option> </field> <field name="cachetimeout" type="integer" label="COM_INSTALLER_CACHETIMEOUT_LABEL" description="COM_INSTALLER_CACHETIMEOUT_DESC" first="0" last="24" step="1" default="6" /> <field name="minimum_stability" type="list" label="COM_INSTALLER_MINIMUM_STABILITY_LABEL" description="COM_INSTALLER_MINIMUM_STABILITY_DESC" default="4"> <option value="0">COM_INSTALLER_MINIMUM_STABILITY_DEV</option> <option value="1">COM_INSTALLER_MINIMUM_STABILITY_ALPHA</option> <option value="2">COM_INSTALLER_MINIMUM_STABILITY_BETA</option> <option value="3">COM_INSTALLER_MINIMUM_STABILITY_RC</option> <option value="4">COM_INSTALLER_MINIMUM_STABILITY_STABLE</option> </field> </fieldset> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_installer" section="component" /> </fieldset> </config> PKb��\g?vv#components/com_installer/access.xmlnu�[���<?xml version="1.0" encoding="utf-8" ?> <access component="com_installer"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> </section> </access> PKb��\4�� &components/com_installer/installer.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_installer</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_INSTALLER_XML_DESCRIPTION</description> <administration> <files folder="admin"> <filename>config.xml</filename> <filename>controller.php</filename> <filename>installer.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_installer.ini</language> <language tag="en-GB">language/en-GB.com_installer.sys.ini</language> </languages> </administration> </extension> PKb��\y�Qu��;components/com_installer/views/default/tmpl/default_ftp.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset title="<?php echo JText::_('COM_INSTALLER_MSG_DESCFTPTITLE'); ?>"> <legend><?php echo JText::_('COM_INSTALLER_MSG_DESCFTPTITLE'); ?></legend> <?php echo JText::_('COM_INSTALLER_MSG_DESCFTP'); ?> <?php if ($this->ftp instanceof Exception) : ?> <p><?php echo JText::_($this->ftp->getMessage()); ?></p> <?php endif; ?> <table class="adminform"> <tbody> <tr> <td width="120"> <label for="username"><?php echo JText::_('JGLOBAL_USERNAME'); ?></label> </td> <td> <input type="text" id="username" name="username" class="input_box" size="70" value="" /> </td> </tr> <tr> <td width="120"> <label for="password"><?php echo JText::_('JGLOBAL_PASSWORD'); ?></label> </td> <td> <input type="password" id="password" name="password" class="input_box" size="70" value="" /> </td> </tr> </tbody> </table> </fieldset> PKb��\r�qmm?components/com_installer/views/default/tmpl/default_message.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $state = $this->get('State'); $message1 = $state->get('message'); $message2 = $state->get('extension_message'); ?> <?php if ($message1) : ?> <div class="span12"> <strong><?php echo $message1; ?></strong> </div> <?php endif; ?> <?php if ($message2) : ?> <div class="span12"> <?php echo $message2; ?> </div> <?php endif; ?> PKb��\�}�9HH/components/com_installer/views/default/view.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Extension Manager Default View * * @since 1.5 */ class InstallerViewDefault extends JViewLegacy { /** * Constructor. * * @param array $config Configuration array * * @since 1.5 */ public function __construct($config = null) { $app = JFactory::getApplication(); parent::__construct($config); $this->_addPath('template', $this->_basePath . '/views/default/tmpl'); $this->_addPath('template', JPATH_THEMES . '/' . $app->getTemplate() . '/html/com_installer/default'); } /** * Display the view. * * @param string $tpl Template * * @return void * * @since 1.5 */ public function display($tpl = null) { // Get data from the model. $state = $this->get('State'); // Are there messages to display? $showMessage = false; if (is_object($state)) { $message1 = $state->get('message'); $message2 = $state->get('extension_message'); $showMessage = ($message1 || $message2); } $this->showMessage = $showMessage; $this->state = &$state; $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_installer'); JToolbarHelper::title(JText::_('COM_INSTALLER_HEADER_' . $this->getName()), 'puzzle install'); if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences('com_installer'); JToolbarHelper::divider(); } // Render side bar. $this->sidebar = JHtmlSidebar::render(); } } PKb��\�&�8components/com_installer/views/warnings/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div id="installer-warnings" class="clearfix"> <form action="<?php echo JRoute::_('index.php?option=com_installer&view=warnings');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <?php if (!count($this->messages)) : ?> <div class="alert alert-info"> <a class="close" data-dismiss="alert" href="#">×</a> <?php echo JText::_('COM_INSTALLER_MSG_WARNINGS_NONE'); ?> </div> <?php else : ?> <?php echo JHtml::_('bootstrap.startAccordion', 'warnings', array('active' => 'warning0')); ?> <?php $i = 0; ?> <?php foreach($this->messages as $message) : ?> <?php echo JHtml::_('bootstrap.addSlide', 'warnings', $message['message'], 'warning' . ($i++)); ?> <?php echo $message['description']; ?> <?php echo JHtml::_('bootstrap.endSlide'); ?> <?php endforeach; ?> <?php echo JHtml::_('bootstrap.addSlide', 'warnings', JText::_('COM_INSTALLER_MSG_WARNINGFURTHERINFO'), 'furtherinfo'); ?> <?php echo JText::_('COM_INSTALLER_MSG_WARNINGFURTHERINFODESC'); ?> <?php echo JHtml::_('bootstrap.endSlide'); ?> <?php echo JHtml::_('bootstrap.endAccordion'); ?> <?php endif; ?> <div> <input type="hidden" name="boxchecked" value="0" /> <?php echo JHtml::_('form.token'); ?> </div> </div> </form> </div>PKb��\Fl<��5components/com_installer/views/warnings/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; include_once __DIR__ . '/../default/view.php'; /** * Extension Manager Templates View * * @since 1.6 */ class InstallerViewWarnings extends InstallerViewDefault { /** * Display the view * * @param string $tpl Template * * @return void * * @since 1.6 */ public function display($tpl = null) { $items = $this->get('Items'); $this->messages = &$items; parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { parent::addToolbar(); JToolbarHelper::help('JHELP_EXTENSIONS_EXTENSION_MANAGER_WARNINGS'); } } PKb��\J^%FFF9components/com_installer/views/languages/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); JHtml::_('bootstrap.tooltip'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $version = new JVersion; ?> <div id="installer-languages" class="clearfix"> <form action="<?php echo JRoute::_('index.php?option=com_installer&view=languages');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <?php if (count($this->items) || $this->escape($this->state->get('filter.search'))) : ?> <?php echo $this->loadTemplate('filter'); ?> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped"> <thead> <tr> <th width="20" class="nowrap center"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th class="nowrap"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_NAME', 'name', $listDirn, $listOrder); ?> </th> <th width="10%"> <?php echo JText::_('JVERSION'); ?> </th> <th class="nowrap hidden-phone"> <?php echo JText::_('COM_INSTALLER_HEADING_TYPE'); ?> </th> <th width="35%" class="nowrap hidden-phone"> <?php echo JText::_('COM_INSTALLER_HEADING_DETAILS_URL'); ?> </th> <th width="30" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_ID', 'update_id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="6"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $language) : ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $language->update_id, false, 'cid'); ?> </td> <td> <label for="cb<?php echo $i; ?>"> <?php echo $language->name; ?> <?php // Display a Note if language pack version is not equal to Joomla version ?> <?php if (substr($language->version, 0, 3) != $version->RELEASE || substr($language->version, 0, 5) != $version->RELEASE . "." . $version->DEV_LEVEL) : ?> <div class="small"><?php echo JText::_('JGLOBAL_LANGUAGE_VERSION_NOT_PLATFORM'); ?></div> <?php endif; ?> </label> </td> <td class="small"> <?php echo $language->version; ?> </td> <td class="small hidden-phone"> <?php echo JText::_('COM_INSTALLER_TYPE_' . strtoupper($language->type)); ?> </td> <td class="small hidden-phone"> <?php echo $language->detailsurl; ?> </td> <td class="small hidden-phone"> <?php echo $language->update_id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> <?php else : ?> <div class="alert"><?php echo JText::_('COM_INSTALLER_MSG_LANGUAGES_NOLANGUAGES'); ?></div> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> </div> PKb��\��(��@components/com_installer/views/languages/tmpl/default_filter.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('bootstrap.tooltip'); ?> <div id="filter-bar" class="btn-toolbar"> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> <div class="filter-search btn-group pull-left"> <label for="filter_search" class="element-invisible"><?php echo JText::_('JSEARCH_FILTER_LABEL');?></label> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_INSTALLER_LANGUAGES_FILTER_SEARCH_DESC'); ?>" /> </div> <div class="btn-group pull-left hidden-phone"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> </div> <div class="clearfix"> </div> PKb��\�!;���6components/com_installer/views/languages/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; include_once __DIR__ . '/../default/view.php'; /** * Language installer view * * @since 2.5.7 */ class InstallerViewLanguages extends InstallerViewDefault { /** * @var object item list */ protected $items; /** * @var object pagination information */ protected $pagination; /** * @var object model state */ protected $state; /** * Display the view. * * @param null $tpl template to display * * @return mixed|void */ public function display($tpl = null) { // Run findLanguages from the model $this->model = $this->getModel('languages'); $this->model->findLanguages(); // Get data from the model. $this->state = $this->get('State'); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } parent::display($tpl); } /** * Add the page title and toolbar. * * @return void */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_installer'); JToolBarHelper::title(JText::_('COM_INSTALLER_HEADER_' . $this->getName()), 'puzzle install'); if ($canDo->get('core.admin')) { JToolBarHelper::custom('languages.install', 'upload', 'upload', 'COM_INSTALLER_TOOLBAR_INSTALL', true); JToolBarHelper::custom('languages.find', 'refresh', 'refresh', 'COM_INSTALLER_TOOLBAR_FIND_LANGUAGES', false); JToolBarHelper::divider(); parent::addToolbar(); // TODO: this help screen will need to be created. JToolBarHelper::help('JHELP_EXTENSIONS_EXTENSION_MANAGER_LANGUAGES'); } } } PKb��\�RP ;components/com_installer/views/updatesites/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); JHtml::_('bootstrap.tooltip'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <div id="installer-manage" class="clearfix"> <form action="<?php echo JRoute::_('index.php?option=com_installer&view=updatesites'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif; ?> <div id="filter-bar" class="btn-toolbar"> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC'); ?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_INSTALLER_FILTER_LABEL'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> </div> <div class="clearfix"> </div> <?php if (count($this->items)) : ?> <table class="table table-striped"> <thead> <tr> <th width="20" class="center"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="10%" class="center"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'enabled', $listDirn, $listOrder); ?> </th> <th class="nowrap"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_UPDATESITE_NAME', 'update_site_name', $listDirn, $listOrder); ?> </th> <th class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_NAME', 'name', $listDirn, $listOrder); ?> </th> <th class="hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_LOCATION', 'client_id', $listDirn, $listOrder); ?> </th> <th class="hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_TYPE', 'type', $listDirn, $listOrder); ?> </th> <th class="hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_FOLDER', 'folder', $listDirn, $listOrder); ?> </th> <th width="10" class="hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_UPDATESITEID', 'update_site_id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="12"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : ?> <tr class="row<?php echo $i % 2; if ($item->enabled == 2) echo ' protected'; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->update_site_id); ?> </td> <td class="center"> <?php if (!$item->element) : ?> <strong>X</strong> <?php else : ?> <?php echo JHtml::_('jgrid.published', $item->enabled, $i, 'updatesites.'); ?> <?php endif; ?> </td> <td> <label for="cb<?php echo $i; ?>"> <?php echo $item->update_site_name; ?> <br /> <span class="small"> <a href="<?php echo $item->location; ?>" target="_blank"><?php echo $this->escape($item->location); ?></a> </span> </label> </td> <td class="hidden-phone"> <span class="bold hasTooltip" title="<?php echo JHtml::tooltipText($item->name, $item->description, 0); ?>"> <?php echo $item->name; ?> </span> </td> <td class="hidden-phone"> <?php echo $item->client; ?> </td> <td class="hidden-phone"> <?php echo JText::_('COM_INSTALLER_TYPE_' . $item->type); ?> </td> <td class="hidden-phone"> <?php echo @$item->folder != '' ? $item->folder : JText::_('COM_INSTALLER_TYPE_NONAPPLICABLE'); ?> </td> <td class="hidden-phone"> <?php echo $item->update_site_id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> </div> PKb��\�S�S558components/com_installer/views/updatesites/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; include_once __DIR__ . '/../default/view.php'; /** * Extension Manager Update Sites View * * @package Joomla.Administrator * @subpackage com_installer * @since 3.4 */ class InstallerViewUpdatesites extends InstallerViewDefault { protected $items; protected $pagination; protected $form; protected $state; /** * Display the view * * @param string $tpl Template * * @return mixed|void * * @since 3.4 * * @throws Exception on errors */ public function display($tpl = null) { // Get data from the model $this->state = $this->get('State'); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); // Check for errors. if (count($errors = $this->get('Errors'))) { throw new Exception(implode("\n", $errors), 500); } // Check if there are no matching items if (!count($this->items)) { JFactory::getApplication()->enqueueMessage( JText::_('COM_INSTALLER_MSG_MANAGE_NOUPDATESITE'), 'warning' ); } // Include the component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); // Display the view parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 3.4 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_installer'); if ($canDo->get('core.edit.state')) { JToolbarHelper::publish('updatesites.publish', 'JTOOLBAR_ENABLE', true); JToolbarHelper::unpublish('updatesites.unpublish', 'JTOOLBAR_DISABLE', true); JToolbarHelper::divider(); } JHtmlSidebar::setAction('index.php?option=com_installer&view=updatesites'); JHtmlSidebar::addFilter( JText::_('COM_INSTALLER_VALUE_CLIENT_SELECT'), 'filter_client_id', JHtml::_('select.options', array('0' => 'JSITE', '1' => 'JADMINISTRATOR'), 'value', 'text', $this->state->get('filter.client_id'), true) ); JHtmlSidebar::addFilter( JText::_('COM_INSTALLER_VALUE_STATE_SELECT'), 'filter_enabled', JHtml::_('select.options', array('0' => 'JUNPUBLISHED', '1' => 'JPUBLISHED'), 'value', 'text', $this->state->get('filter.enabled'), true) ); JHtmlSidebar::addFilter( JText::_('COM_INSTALLER_VALUE_TYPE_SELECT'), 'filter_type', JHtml::_('select.options', InstallerHelper::getExtensionTypes(), 'value', 'text', $this->state->get('filter.type'), true) ); JHtmlSidebar::addFilter( JText::_('COM_INSTALLER_VALUE_FOLDER_SELECT'), 'filter_group', JHtml::_( 'select.options', array_merge( InstallerHelper::getExtensionGroupes(), array('*' => JText::_('COM_INSTALLER_VALUE_FOLDER_NONAPPLICABLE')) ), 'value', 'text', $this->state->get('filter.group'), true ) ); parent::addToolbar(); JToolbarHelper::help('JHELP_EXTENSIONS_EXTENSION_MANAGER_UPDATESITES'); } } PKb��\�ɸ/��8components/com_installer/views/database/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <div id="installer-database" class="clearfix"> <form action="<?php echo JRoute::_('index.php?option=com_installer&view=database');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <?php if ($this->errorCount === 0) : ?> <div class="alert alert-info"> <a class="close" data-dismiss="alert" href="#">×</a> <?php echo JText::_('COM_INSTALLER_MSG_DATABASE_OK'); ?> </div> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'other')); ?> <?php else : ?> <div class="alert alert-error"> <a class="close" data-dismiss="alert" href="#">×</a> <?php echo JText::_('COM_INSTALLER_MSG_DATABASE_ERRORS'); ?> </div> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'problems')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'problems', JText::plural('COM_INSTALLER_MSG_N_DATABASE_ERROR_PANEL', $this->errorCount)); ?> <fieldset class="panelform"> <ul> <?php if (!$this->filterParams) : ?> <li><?php echo JText::_('COM_INSTALLER_MSG_DATABASE_FILTER_ERROR'); ?></li> <?php endif; ?> <?php if ($this->schemaVersion != $this->changeSet->getSchema()) : ?> <li><?php echo JText::sprintf('COM_INSTALLER_MSG_DATABASE_SCHEMA_ERROR', $this->schemaVersion, $this->changeSet->getSchema()); ?></li> <?php endif; ?> <?php if (version_compare($this->updateVersion, JVERSION) != 0) : ?> <li><?php echo JText::sprintf('COM_INSTALLER_MSG_DATABASE_UPDATEVERSION_ERROR', $this->updateVersion, JVERSION); ?></li> <?php endif; ?> <?php foreach ($this->errors as $line => $error) : ?> <?php $key = 'COM_INSTALLER_MSG_DATABASE_' . $error->queryType; $msgs = $error->msgElements; $file = basename($error->file); $msg0 = (isset($msgs[0])) ? $msgs[0] : ' '; $msg1 = (isset($msgs[1])) ? $msgs[1] : ' '; $msg2 = (isset($msgs[2])) ? $msgs[2] : ' '; $message = JText::sprintf($key, $file, $msg0, $msg1, $msg2); ?> <li><?php echo $message; ?></li> <?php endforeach; ?> </ul> </fieldset> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'other', JText::_('COM_INSTALLER_MSG_DATABASE_INFO', true)); ?> <div class="control-group" > <fieldset class="panelform"> <ul> <li><?php echo JText::sprintf('COM_INSTALLER_MSG_DATABASE_SCHEMA_VERSION', $this->schemaVersion); ?></li> <li><?php echo JText::sprintf('COM_INSTALLER_MSG_DATABASE_UPDATE_VERSION', $this->updateVersion); ?></li> <li><?php echo JText::sprintf('COM_INSTALLER_MSG_DATABASE_DRIVER', JFactory::getDbo()->name); ?></li> <li><?php echo JText::sprintf('COM_INSTALLER_MSG_DATABASE_CHECKED_OK', count($this->results['ok'])); ?></li> <li><?php echo JText::sprintf('COM_INSTALLER_MSG_DATABASE_SKIPPED', count($this->results['skipped'])); ?></li> </ul> </fieldset> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <?php echo JHtml::_('form.token'); ?> </div> </form> </div> PKb��\'6���5components/com_installer/views/database/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; include_once __DIR__ . '/../default/view.php'; /** * Extension Manager Manage View * * @since 1.6 */ class InstallerViewDatabase extends InstallerViewDefault { /** * Display the view. * * @param string $tpl Template * * @return void * * @since 1.6 */ public function display($tpl = null) { // Get data from the model. $this->state = $this->get('State'); $this->changeSet = $this->get('Items'); $this->errors = $this->changeSet->check(); $this->results = $this->changeSet->getStatus(); $this->schemaVersion = $this->get('SchemaVersion'); $this->updateVersion = $this->get('UpdateVersion'); $this->filterParams = $this->get('DefaultTextFilters'); $this->schemaVersion = ($this->schemaVersion) ? $this->schemaVersion : JText::_('JNONE'); $this->updateVersion = ($this->updateVersion) ? $this->updateVersion : JText::_('JNONE'); $this->pagination = $this->get('Pagination'); $this->errorCount = count($this->errors); if ($this->schemaVersion != $this->changeSet->getSchema()) { $this->errorCount++; } if (!$this->filterParams) { $this->errorCount++; } if (version_compare($this->updateVersion, JVERSION) != 0) { $this->errorCount++; } parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { /* * Set toolbar items for the page. */ JToolbarHelper::custom('database.fix', 'refresh', 'refresh', 'COM_INSTALLER_TOOLBAR_DATABASE_FIX', false); JToolbarHelper::divider(); parent::addToolbar(); JToolbarHelper::help('JHELP_EXTENSIONS_EXTENSION_MANAGER_DATABASE'); } } PKb��\�-�UU6components/com_installer/views/manage/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); JHtml::_('bootstrap.tooltip'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <div id="installer-manage" class="clearfix"> <form action="<?php echo JRoute::_('index.php?option=com_installer&view=manage');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <?php if ($this->showMessage) : ?> <?php echo $this->loadTemplate('message'); ?> <?php endif; ?> <?php if ($this->ftp) : ?> <?php echo $this->loadTemplate('ftp'); ?> <?php endif; ?> <div id="filter-bar" class="btn-toolbar"> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_INSTALLER_FILTER_LABEL'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> </div> <div class="clearfix"> </div> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('COM_INSTALLER_MSG_MANAGE_NOEXTENSION'); ?> </div> <?php else : ?> <table class="table table-striped" id="manageList"> <thead> <tr> <th width="20"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="10%" class="center"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'status', $listDirn, $listOrder); ?> </th> <th class="nowrap"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_NAME', 'name', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_LOCATION', 'client_id', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_TYPE', 'type', $listDirn, $listOrder); ?> </th> <th width="10%" class="hidden-phone"> <?php echo JText::_('JVERSION'); ?> </th> <th width="10%" class="hidden-phone"> <?php echo JText::_('JDATE'); ?> </th> <th width="15%" class="hidden-phone"> <?php echo JText::_('JAUTHOR'); ?> </th> <th class="hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_FOLDER', 'folder', $listDirn, $listOrder); ?> </th> <th width="10" class="hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_ID', 'extension_id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="11"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : ?> <tr class="row<?php echo $i % 2; if ($item->status == 2) echo ' protected';?>"> <td> <?php echo JHtml::_('grid.id', $i, $item->extension_id); ?> </td> <td class="center"> <?php if (!$item->element) : ?> <strong>X</strong> <?php else : ?> <?php echo JHtml::_('InstallerHtml.Manage.state', $item->status, $i, $item->status < 2, 'cb'); ?> <?php endif; ?> </td> <td> <label for="cb<?php echo $i; ?>"> <span class="bold hasTooltip" title="<?php echo JHtml::tooltipText($item->name, $item->description, 0); ?>"> <?php echo $item->name; ?> </span> </label> </td> <td> <?php echo $item->client; ?> </td> <td> <?php echo JText::_('COM_INSTALLER_TYPE_' . $item->type); ?> </td> <td class="hidden-phone"> <?php echo @$item->version != '' ? $item->version : ' '; ?> </td> <td class="hidden-phone"> <?php echo @$item->creationDate != '' ? $item->creationDate : ' '; ?> </td> <td class="hidden-phone"> <span class="editlinktip hasTooltip" title="<?php echo JHtml::tooltipText(JText::_('COM_INSTALLER_AUTHOR_INFORMATION'), $item->author_info, 0); ?>"> <?php echo @$item->author != '' ? $item->author : ' '; ?> </span> </td> <td class="hidden-phone"> <?php echo @$item->folder != '' ? $item->folder : JText::_('COM_INSTALLER_TYPE_NONAPPLICABLE'); ?> </td> <td class="hidden-phone"> <?php echo $item->extension_id ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> <!-- End Content --> </div> </form> </div> PKb��\�H*�ss3components/com_installer/views/manage/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; include_once __DIR__ . '/../default/view.php'; /** * Extension Manager Manage View * * @since 1.6 */ class InstallerViewManage extends InstallerViewDefault { protected $items; protected $pagination; protected $form; protected $state; /** * Display the view. * * @param string $tpl Template * * @return mixed|void * * @since 1.6 */ public function display($tpl = null) { // Get data from the model. $this->state = $this->get('State'); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } // Include the component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); // Display the view. parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = JHelperContent::getActions('com_installer'); if ($canDo->get('core.edit.state')) { JToolbarHelper::publish('manage.publish', 'JTOOLBAR_ENABLE', true); JToolbarHelper::unpublish('manage.unpublish', 'JTOOLBAR_DISABLE', true); JToolbarHelper::divider(); } JToolbarHelper::custom('manage.refresh', 'refresh', 'refresh', 'JTOOLBAR_REFRESH_CACHE', true); JToolbarHelper::divider(); if ($canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'manage.remove', 'JTOOLBAR_UNINSTALL'); JToolbarHelper::divider(); } JHtmlSidebar::setAction('index.php?option=com_installer&view=manage'); JHtmlSidebar::addFilter( JText::_('COM_INSTALLER_VALUE_CLIENT_SELECT'), 'filter_client_id', JHtml::_( 'select.options', array('0' => 'JSITE', '1' => 'JADMINISTRATOR'), 'value', 'text', $this->state->get('filter.client_id'), true ) ); JHtmlSidebar::addFilter( JText::_('COM_INSTALLER_VALUE_STATE_SELECT'), 'filter_status', JHtml::_( 'select.options', array('0' => 'JDISABLED', '1' => 'JENABLED', '2' => 'JPROTECTED', '3' => 'JUNPROTECTED'), 'value', 'text', $this->state->get('filter.status'), true ) ); JHtmlSidebar::addFilter( JText::_('COM_INSTALLER_VALUE_TYPE_SELECT'), 'filter_type', JHtml::_( 'select.options', InstallerHelper::getExtensionTypes(), 'value', 'text', $this->state->get('filter.type'), true ) ); JHtmlSidebar::addFilter( JText::_('COM_INSTALLER_VALUE_FOLDER_SELECT'), 'filter_group', JHtml::_( 'select.options', array_merge(InstallerHelper::getExtensionGroupes(), array('*' => JText::_('COM_INSTALLER_VALUE_FOLDER_NONAPPLICABLE'))), 'value', 'text', $this->state->get('filter.group'), true ) ); parent::addToolbar(); JToolbarHelper::help('JHELP_EXTENSIONS_EXTENSION_MANAGER_MANAGE'); } } PKb��\I��|��8components/com_installer/views/discover/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('bootstrap.tooltip'); JHtml::_('formbehavior.chosen', 'select'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <div id="installer-discover" class="clearfix"> <form action="<?php echo JRoute::_('index.php?option=com_installer&view=discover');?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <?php if ($this->showMessage) : ?> <?php echo $this->loadTemplate('message'); ?> <?php endif; ?> <?php if ($this->ftp) : ?> <?php echo $this->loadTemplate('ftp'); ?> <?php endif; ?> <!-- Begin Filters --> <div id="filter-bar" class="btn-toolbar"> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_INSTALLER_FILTER_LABEL'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> </div> <div class="clearfix"> </div> <!-- Begin Content --> <?php if (count($this->items)) : ?> <table class="table table-striped"> <thead> <tr> <th width="20" class="center"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th class="nowrap"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_NAME', 'name', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_TYPE', 'type', $listDirn, $listOrder); ?> </th> <th width="10%"> <?php echo JText::_('JVERSION'); ?> </th> <th width="10%" class="hidden-phone"> <?php echo JText::_('JDATE'); ?> </th> <th class="hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_FOLDER', 'folder', $listDirn, $listOrder); ?> </th> <th class="hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_CLIENT', 'client_id', $listDirn, $listOrder); ?> </th> <th width="15%" class="hidden-phone"> <?php echo JText::_('JAUTHOR'); ?> </th> <th width="10" class="hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_ID', 'extension_id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot><tr><td colspan="10"><?php echo $this->pagination->getListFooter(); ?></td></tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : ?> <tr class="row<?php echo $i % 2;?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->extension_id); ?> </td> <td> <label for="cb<?php echo $i;?>"> <span class="bold hasTooltip" title="<?php echo JHtml::tooltipText($item->name, $item->description, 0); ?>"><?php echo $item->name; ?></span> </label> </td> <td> <?php echo JText::_('COM_INSTALLER_TYPE_' . $item->type); ?> </td> <td> <?php echo @$item->version != '' ? $item->version : ' '; ?> </td> <td class="hidden-phone"> <?php echo @$item->creationDate != '' ? $item->creationDate : ' '; ?> </td> <td class="hidden-phone"> <?php echo @$item->folder != '' ? $item->folder : JText::_('COM_INSTALLER_TYPE_NONAPPLICABLE'); ?> </td> <td class="hidden-phone"> <?php echo $item->client; ?> </td> <td class="hidden-phone"> <span class="editlinktip hasTooltip" title="<?php echo JHtml::tooltipText(JText::_('COM_INSTALLER_AUTHOR_INFORMATION'), $item->author_info, 0); ?>"> <?php echo @$item->author != '' ? $item->author : ' '; ?> </span> </td> <td class="hidden-phone"> <?php echo $item->extension_id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php echo JText::_('COM_INSTALLER_MSG_DISCOVER_DESCRIPTION'); ?> <?php else : ?> <p> <?php echo JText::_('COM_INSTALLER_MSG_DISCOVER_DESCRIPTION'); ?> </p> <div class="alert"> <?php echo JText::_('COM_INSTALLER_MSG_DISCOVER_NOEXTENSION'); ?> </div> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> </div> PKb��\UpWRR=components/com_installer/views/discover/tmpl/default_item.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <tr class="<?php echo "row" . $this->item->index % 2; ?>" <?php echo $this->item->style; ?>> <td> <input type="checkbox" id="cb<?php echo $this->item->index;?>" name="eid[]" value="<?php echo $this->item->extension_id; ?>" onclick="Joomla.isChecked(this.checked);" <?php echo $this->item->cbd; ?> /> <!-- <input type="checkbox" id="cb<?php echo $this->item->index;?>" name="eid" value="<?php echo $this->item->extension_id; ?>" onclick="Joomla.isChecked(this.checked);" <?php echo $this->item->cbd; ?> />--> <span class="bold"><?php echo $this->item->name; ?></span> </td> <td> <?php echo $this->item->type ?> </td> <td class="center"> <?php if (!$this->item->element) : ?> <strong>X</strong> <?php else : ?> <a href="index.php?option=com_installer&type=manage&task=<?php echo $this->item->task; ?>&eid[]=<?php echo $this->item->extension_id; ?>&limitstart=<?php echo $this->pagination->limitstart; ?>&<?php echo JSession::getFormToken();?>=1"><?php echo JHtml::_('image', 'images/' . $this->item->img, $this->item->alt, array('title' => $this->item->action)); ?></a> <?php endif; ?> </td> <td class="center"><?php echo @$this->item->folder != '' ? $this->item->folder : 'N/A'; ?></td> <td class="center"><?php echo @$this->item->client != '' ? $this->item->client : 'N/A'; ?></td> <td> <span class="editlinktip hasTooltip" title="<?php echo JHtml::tooltipText(JText::_('COM_INSTALLER_AUTHOR_INFORMATION'), $this->item->author_info, 0); ?>"> <?php echo @$this->item->author != '' ? $this->item->author : ' '; ?> </span> </td> </tr> PKb��\O�J��5components/com_installer/views/discover/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; include_once __DIR__ . '/../default/view.php'; /** * Extension Manager Discover View * * @since 1.6 */ class InstallerViewDiscover extends InstallerViewDefault { /** * Display the view. * * @param string $tpl Template * * @return void * * @since 1.6 */ public function display($tpl = null) { // Get data from the model. $this->state = $this->get('State'); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 3.1 */ protected function addToolbar() { /* * Set toolbar items for the page. */ JToolbarHelper::custom('discover.install', 'upload', 'upload', 'JTOOLBAR_INSTALL', true); JToolbarHelper::custom('discover.refresh', 'refresh', 'refresh', 'COM_INSTALLER_TOOLBAR_DISCOVER', false); JToolbarHelper::divider(); JHtmlSidebar::setAction('index.php?option=com_installer&view=discover'); JHtmlSidebar::addFilter( JText::_('COM_INSTALLER_VALUE_CLIENT_SELECT'), 'filter_client_id', JHtml::_( 'select.options', array('0' => 'JSITE', '1' => 'JADMINISTRATOR'), 'value', 'text', $this->state->get('filter.client_id'), true ) ); JHtmlSidebar::addFilter( JText::_('COM_INSTALLER_VALUE_TYPE_SELECT'), 'filter_type', JHtml::_( 'select.options', InstallerHelper::getExtensionTypes(), 'value', 'text', $this->state->get('filter.type'), true ) ); JHtmlSidebar::addFilter( JText::_('COM_INSTALLER_VALUE_FOLDER_SELECT'), 'filter_group', JHtml::_( 'select.options', array_merge(InstallerHelper::getExtensionGroupes(), array('*' => JText::_('COM_INSTALLER_VALUE_FOLDER_NONAPPLICABLE'))), 'value', 'text', $this->state->get('filter.group'), true ) ); parent::addToolbar(); JToolbarHelper::help('JHELP_EXTENSIONS_EXTENSION_MANAGER_DISCOVER'); } } PKb��\AM���7components/com_installer/views/install/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // MooTools is loaded for B/C for extensions generating JavaScript in their install scripts, this call will be removed at 4.0 JHtml::_('behavior.framework', true); JHtml::_('bootstrap.tooltip'); JText::script('COM_INSTALLER_MSG_INSTALL_PLEASE_SELECT_A_PACKAGE'); JText::script('COM_INSTALLER_MSG_INSTALL_PLEASE_SELECT_A_DIRECTORY'); JText::script('COM_INSTALLER_MSG_INSTALL_ENTER_A_URL'); ?> <script type="text/javascript"> Joomla.submitbutton = function() { var form = document.getElementById('adminForm'); // do field validation if (form.install_package.value == "") { alert(Joomla.JText._('COM_INSTALLER_MSG_INSTALL_PLEASE_SELECT_A_PACKAGE')); } else { jQuery('#loading').css('display', 'block'); form.installtype.value = 'upload'; form.submit(); } }; Joomla.submitbutton3 = function() { var form = document.getElementById('adminForm'); // do field validation if (form.install_directory.value == "") { alert(Joomla.JText._('COM_INSTALLER_MSG_INSTALL_PLEASE_SELECT_A_DIRECTORY')); } else { jQuery('#loading').css('display', 'block'); form.installtype.value = 'folder'; form.submit(); } }; Joomla.submitbutton4 = function() { var form = document.getElementById('adminForm'); // do field validation if (form.install_url.value == "" || form.install_url.value == "http://") { alert(Joomla.JText._('COM_INSTALLER_MSG_INSTALL_ENTER_A_URL')); } else { jQuery('#loading').css('display', 'block'); form.installtype.value = 'url'; form.submit(); } }; Joomla.submitbuttonInstallWebInstaller = function() { var form = document.getElementById('adminForm'); form.install_url.value = 'http://appscdn.joomla.org/webapps/jedapps/webinstaller.xml'; Joomla.submitbutton4(); }; // Add spindle-wheel for installations: jQuery(document).ready(function($) { var outerDiv = $('#installer-install'); $('#loading').css({ 'top': outerDiv.position().top - $(window).scrollTop(), 'left': outerDiv.position().left - $(window).scrollLeft(), 'width': outerDiv.width(), 'height': outerDiv.height(), 'display': 'none' }); }); </script> <style type="text/css"> #loading { background: rgba(255, 255, 255, .8) url('<?php echo JHtml::_('image', 'jui/ajax-loader.gif', '', null, true, true); ?>') 50% 15% no-repeat; position: fixed; opacity: 0.8; -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity = 80); filter: alpha(opacity = 80); } .j-jed-message { margin-bottom: 40px; line-height: 2em; color:#333333; } </style> <div id="installer-install" class="clearfix"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <!-- Render messages set by extension install scripts here --> <?php if ($this->showMessage) : ?> <?php echo $this->loadTemplate('message'); ?> <?php elseif ($this->showJedAndWebInstaller) : ?> <div class="alert alert-info j-jed-message"> <a href="<?php echo JRoute::_('index.php?option=com_config&view=component&component=com_installer&path=&return=' . urlencode(base64_encode(JUri::getInstance()))); ?>" class="close hasTooltip" data-dismiss="alert" title="<?php echo $this->escape(JText::_('COM_INSTALLER_SHOW_JED_INFORMATION_TOOLTIP')); ?>">×</a> <p><?php echo JText::_('COM_INSTALLER_INSTALL_FROM_WEB_INFO'); ?> <?php echo JText::_('COM_INSTALLER_INSTALL_FROM_WEB_TOS'); ?></p> <button class="btn" type="button" onclick="Joomla.submitbuttonInstallWebInstaller()"><?php echo JText::_('COM_INSTALLER_INSTALL_FROM_WEB_ADD_TAB'); ?></button> </div> <?php endif; ?> <form enctype="multipart/form-data" action="<?php echo JRoute::_('index.php?option=com_installer&view=install');?>" method="post" name="adminForm" id="adminForm" class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'upload')); ?> <?php JEventDispatcher::getInstance()->trigger('onInstallerViewBeforeFirstTab', array()); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'upload', JText::_('COM_INSTALLER_UPLOAD_PACKAGE_FILE', true)); ?> <fieldset class="uploadform"> <legend><?php echo JText::_('COM_INSTALLER_UPLOAD_INSTALL_JOOMLA_EXTENSION'); ?></legend> <div class="control-group"> <label for="install_package" class="control-label"><?php echo JText::_('COM_INSTALLER_EXTENSION_PACKAGE_FILE'); ?></label> <div class="controls"> <input class="input_box" id="install_package" name="install_package" type="file" size="57" /> </div> </div> <div class="form-actions"> <button class="btn btn-primary" type="button" onclick="Joomla.submitbutton()"><?php echo JText::_('COM_INSTALLER_UPLOAD_AND_INSTALL'); ?></button> </div> </fieldset> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'directory', JText::_('COM_INSTALLER_INSTALL_FROM_DIRECTORY', true)); ?> <fieldset class="uploadform"> <legend><?php echo JText::_('COM_INSTALLER_INSTALL_FROM_DIRECTORY'); ?></legend> <div class="control-group"> <label for="install_directory" class="control-label"><?php echo JText::_('COM_INSTALLER_INSTALL_DIRECTORY'); ?></label> <div class="controls"> <input type="text" id="install_directory" name="install_directory" class="span5 input_box" size="70" value="<?php echo $this->state->get('install.directory'); ?>" /> </div> </div> <div class="form-actions"> <button type="button" class="btn btn-primary" onclick="Joomla.submitbutton3()"><?php echo JText::_('COM_INSTALLER_INSTALL_BUTTON'); ?></button> </div> </fieldset> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'url', JText::_('COM_INSTALLER_INSTALL_FROM_URL', true)); ?> <fieldset class="uploadform"> <legend><?php echo JText::_('COM_INSTALLER_INSTALL_FROM_URL'); ?></legend> <div class="control-group"> <label for="install_url" class="control-label"><?php echo JText::_('COM_INSTALLER_INSTALL_URL'); ?></label> <div class="controls"> <input type="text" id="install_url" name="install_url" class="span5 input_box" size="70" value="http://" /> </div> </div> <div class="form-actions"> <button type="button" class="btn btn-primary" onclick="Joomla.submitbutton4()"><?php echo JText::_('COM_INSTALLER_INSTALL_BUTTON'); ?></button> </div> </fieldset> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php JEventDispatcher::getInstance()->trigger('onInstallerViewAfterLastTab', array()); ?> <?php if ($this->ftp) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'ftp', JText::_('COM_INSTALLER_MSG_DESCFTPTITLE', true)); ?> <?php echo $this->loadTemplate('ftp'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> <input type="hidden" name="type" value="" /> <input type="hidden" name="installtype" value="upload" /> <input type="hidden" name="task" value="install.install" /> <?php echo JHtml::_('form.token'); ?> </form> </div> <div id="loading"></div> </div>PKb��\�l�4components/com_installer/views/install/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; include_once __DIR__ . '/../default/view.php'; /** * Extension Manager Install View * * @since 1.5 */ class InstallerViewInstall extends InstallerViewDefault { /** * Display the view * * @param string $tpl Template * * @return void * * @since 1.5 */ public function display($tpl = null) { $paths = new stdClass; $paths->first = ''; $state = $this->get('state'); $this->paths = &$paths; $this->state = &$state; $this->showJedAndWebInstaller = JComponentHelper::getParams('com_installer')->get('show_jed_info', 1); JPluginHelper::importPlugin('installer'); $dispatcher = JEventDispatcher::getInstance(); $dispatcher->trigger('onInstallerBeforeDisplay', array(&$this->showJedAndWebInstaller, $this)); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { parent::addToolbar(); JToolbarHelper::help('JHELP_EXTENSIONS_EXTENSION_MANAGER_INSTALL'); } } PKb��\�M���6components/com_installer/views/update/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); JHtml::_('bootstrap.tooltip'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <div id="installer-update" class="clearfix"> <form action="<?php echo JRoute::_('index.php?option=com_installer&view=update');?>" method="post" name="adminForm" id="adminForm"> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php if ($this->showMessage) : ?> <?php echo $this->loadTemplate('message'); ?> <?php endif; ?> <?php if ($this->ftp) : ?> <?php echo $this->loadTemplate('ftp'); ?> <?php endif; ?> <div id="filter-bar" class="btn-toolbar"> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_INSTALLER_FILTER_LABEL'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> </div> <div class="clearfix"> </div> <!-- Begin Content --> <?php if (count($this->items)) : ?> <table class="table table-striped" > <thead> <tr> <th width="20"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th class="nowrap"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_NAME', 'name', $listDirn, $listOrder); ?> </th> <th class="nowrap"> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_INSTALLTYPE', 'extension_id', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_TYPE', 'type', $listDirn, $listOrder); ?> </th> <th width="10%"> <?php echo JText::_('JVERSION'); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_FOLDER', 'folder', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('grid.sort', 'COM_INSTALLER_HEADING_CLIENT', 'client_id', $listDirn, $listOrder); ?> </th> <th width="25%"> <?php echo JText::_('COM_INSTALLER_HEADING_DETAILSURL'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="9"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : $client = $item->client_id ? JText::_('JADMINISTRATOR') : JText::_('JSITE'); ?> <tr class="row<?php echo $i % 2; ?>"> <td> <?php echo JHtml::_('grid.id', $i, $item->update_id); ?> </td> <td> <label for="cb<?php echo $i; ?>"> <span class="editlinktip hasTooltip" title="<?php echo JHtml::tooltipText(JText::_('JGLOBAL_DESCRIPTION'), $item->description ? $item->description : JText::_('COM_INSTALLER_MSG_UPDATE_NODESC'), 0); ?>"> <?php echo $this->escape($item->name); ?> </span> </label> </td> <td> <?php echo $item->extension_id ? JText::_('COM_INSTALLER_MSG_UPDATE_UPDATE') : JText::_('COM_INSTALLER_NEW_INSTALL') ?> </td> <td> <?php echo JText::_('COM_INSTALLER_TYPE_' . $item->type) ?> </td> <td> <?php echo $item->version ?> </td> <td> <?php echo @$item->folder != '' ? $item->folder : JText::_('COM_INSTALLER_TYPE_NONAPPLICABLE'); ?> </td> <td> <?php echo $client; ?> </td> <td><?php echo $item->detailsurl ?> <?php if (isset($item->infourl)) : ?> <br /> <a href="<?php echo $item->infourl; ?>" target="_blank"> <?php echo $this->escape($item->infourl); ?> </a> <?php endif; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php else : ?> <div class="alert alert-info"> <a class="close" data-dismiss="alert" href="#">×</a> <?php echo JText::_('COM_INSTALLER_MSG_UPDATE_NOUPDATES'); ?> </div> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> </div> PKb��\*��� � 3components/com_installer/views/update/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; include_once __DIR__ . '/../default/view.php'; /** * Extension Manager Update View * * @since 1.6 */ class InstallerViewUpdate extends InstallerViewDefault { /** * List of update items. * * @var array */ protected $items; /** * Model state object. * * @var object */ protected $state; /** * List pagination. * * @var JPagination */ protected $pagination; /** * Display the view. * * @param string $tpl Template * * @return void * * @since 1.6 */ public function display($tpl = null) { $app = JFactory::getApplication(); // Get data from the model. $this->state = $this->get('State'); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $paths = new stdClass; $paths->first = ''; $this->paths = &$paths; if (count($this->items) > 0) { $app->enqueueMessage(JText::_('COM_INSTALLER_MSG_WARNINGS_UPDATE_NOTICE'), 'notice'); } parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JToolbarHelper::custom('update.update', 'upload', 'upload', 'COM_INSTALLER_TOOLBAR_UPDATE', true); JToolbarHelper::custom('update.find', 'refresh', 'refresh', 'COM_INSTALLER_TOOLBAR_FIND_UPDATES', false); JToolbarHelper::custom('update.purge', 'purge', 'purge', 'COM_INSTALLER_TOOLBAR_PURGE', false); JToolbarHelper::divider(); JHtmlSidebar::setAction('index.php?option=com_installer&view=manage'); JHtmlSidebar::addFilter( JText::_('COM_INSTALLER_VALUE_CLIENT_SELECT'), 'filter_client_id', JHtml::_('select.options', array('0' => 'JSITE', '1' => 'JADMINISTRATOR'), 'value', 'text', $this->state->get('filter.client_id'), true) ); JHtmlSidebar::addFilter( JText::_('COM_INSTALLER_VALUE_TYPE_SELECT'), 'filter_type', JHtml::_('select.options', InstallerHelper::getExtensionTypes(), 'value', 'text', $this->state->get('filter.type'), true) ); JHtmlSidebar::addFilter( JText::_('COM_INSTALLER_VALUE_FOLDER_SELECT'), 'filter_group', JHtml::_( 'select.options', array_merge(InstallerHelper::getExtensionGroupes(), array('*' => JText::_('COM_INSTALLER_VALUE_FOLDER_NONAPPLICABLE'))), 'value', 'text', $this->state->get('filter.group'), true ) ); parent::addToolbar(); JToolbarHelper::help('JHELP_EXTENSIONS_EXTENSION_MANAGER_UPDATE'); } } PKb��\�'iv��0components/com_installer/helpers/html/manage.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Installer HTML class. * * @since 2.5 */ abstract class InstallerHtmlManage { /** * Returns a published state on a grid. * * @param integer $value The state value. * @param integer $i The row index. * @param boolean $enabled An optional setting for access control on the action. * @param string $checkbox An optional prefix for checkboxes. * * @return string The Html code * * @see JHtmlJGrid::state * * @since 2.5 */ public static function state($value, $i, $enabled = true, $checkbox = 'cb') { $states = array( 2 => array( '', 'COM_INSTALLER_EXTENSION_PROTECTED', '', 'COM_INSTALLER_EXTENSION_PROTECTED', true, 'protected', 'protected', ), 1 => array( 'unpublish', 'COM_INSTALLER_EXTENSION_ENABLED', 'COM_INSTALLER_EXTENSION_DISABLE', 'COM_INSTALLER_EXTENSION_ENABLED', true, 'publish', 'publish', ), 0 => array( 'publish', 'COM_INSTALLER_EXTENSION_DISABLED', 'COM_INSTALLER_EXTENSION_ENABLE', 'COM_INSTALLER_EXTENSION_DISABLED', true, 'unpublish', 'unpublish', ), ); return JHtml::_('jgrid.state', $states, $value, $i, 'manage.', $enabled, true, $checkbox); } } PKb��\��(�# # .components/com_installer/helpers/installer.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Installer helper. * * @since 1.6 */ class InstallerHelper { /** * Configure the Linkbar. * * @param string $vName The name of the active view. * * @return void */ public static function addSubmenu($vName = 'install') { JHtmlSidebar::addEntry( JText::_('COM_INSTALLER_SUBMENU_INSTALL'), 'index.php?option=com_installer', $vName == 'install' ); JHtmlSidebar::addEntry( JText::_('COM_INSTALLER_SUBMENU_UPDATE'), 'index.php?option=com_installer&view=update', $vName == 'update' ); JHtmlSidebar::addEntry( JText::_('COM_INSTALLER_SUBMENU_MANAGE'), 'index.php?option=com_installer&view=manage', $vName == 'manage' ); JHtmlSidebar::addEntry( JText::_('COM_INSTALLER_SUBMENU_DISCOVER'), 'index.php?option=com_installer&view=discover', $vName == 'discover' ); JHtmlSidebar::addEntry( JText::_('COM_INSTALLER_SUBMENU_DATABASE'), 'index.php?option=com_installer&view=database', $vName == 'database' ); JHtmlSidebar::addEntry( JText::_('COM_INSTALLER_SUBMENU_WARNINGS'), 'index.php?option=com_installer&view=warnings', $vName == 'warnings' ); JHtmlSidebar::addEntry( JText::_('COM_INSTALLER_SUBMENU_LANGUAGES'), 'index.php?option=com_installer&view=languages', $vName == 'languages' ); JHtmlSidebar::addEntry( JText::_('COM_INSTALLER_SUBMENU_UPDATESITES'), 'index.php?option=com_installer&view=updatesites', $vName == 'updatesites' ); } /** * Get a list of filter options for the extension types. * * @return array An array of stdClass objects. * * @since 3.0 */ public static function getExtensionTypes() { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('DISTINCT type') ->from('#__extensions'); $db->setQuery($query); $types = $db->loadColumn(); $options = array(); foreach ($types as $type) { $options[] = JHtml::_('select.option', $type, 'COM_INSTALLER_TYPE_' . strtoupper($type)); } return $options; } /** * Get a list of filter options for the extension types. * * @return array An array of stdClass objects. * * @since 3.0 */ public static function getExtensionGroupes() { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('DISTINCT folder') ->from('#__extensions') ->where('folder != ' . $db->quote('')) ->order('folder'); $db->setQuery($query); $folders = $db->loadColumn(); $options = array(); foreach ($folders as $folder) { $options[] = JHtml::_('select.option', $folder, $folder); } return $options; } /** * Gets a list of the actions that can be performed. * * @return JObject * * @since 1.6 * @deprecated 3.2 Use JHelperContent::getActions() instead */ public static function getActions() { // Log usage of deprecated function JLog::add(__METHOD__ . '() is deprecated, use JHelperContent::getActions() with new arguments order instead.', JLog::WARNING, 'deprecated'); // Get list of actions $result = JHelperContent::getActions('com_installer'); return $result; } } PKb��\�ɥ@``&components/com_installer/installer.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.tabstate'); if (!JFactory::getUser()->authorise('core.manage', 'com_installer')) { return JError::raiseWarning(403, JText::_('JERROR_ALERTNOAUTHOR')); } $controller = JControllerLegacy::getInstance('Installer'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKb��\8�N��(�(*components/com_installer/models/update.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; jimport('joomla.updater.update'); /** * Installer Update Model * * @since 1.6 */ class InstallerModelUpdate extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'name', 'client_id', 'type', 'folder', 'extension_id', 'update_id', 'update_site_id', ); } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication(); $value = $app->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $value); $clientId = $this->getUserStateFromRequest($this->context . '.filter.client_id', 'filter_client_id', ''); $this->setState('filter.client_id', $clientId); $categoryId = $this->getUserStateFromRequest($this->context . '.filter.type', 'filter_type', ''); $this->setState('filter.type', $categoryId); $group = $this->getUserStateFromRequest($this->context . '.filter.group', 'filter_group', ''); $this->setState('filter.group', $group); $this->setState('message', $app->getUserState('com_installer.message')); $this->setState('extension_message', $app->getUserState('com_installer.extension_message')); $app->setUserState('com_installer.message', ''); $app->setUserState('com_installer.extension_message', ''); parent::populateState('name', 'asc'); } /** * Method to get the database query * * @return JDatabaseQuery The database query * * @since 1.6 */ protected function getListQuery() { $db = $this->getDbo(); $query = $db->getQuery(true); $type = $this->getState('filter.type'); $client = $this->getState('filter.client_id'); $group = $this->getState('filter.group'); // Grab updates ignoring new installs $query->select('*') ->from('#__updates') ->where('extension_id != 0') ->order($this->getState('list.ordering') . ' ' . $this->getState('list.direction')); if ($type) { $query->where('type=' . $db->quote($type)); } if ($client != '') { $query->where('client_id = ' . intval($client)); } if ($group != '' && in_array($type, array('plugin', 'library', ''))) { $query->where('folder=' . $db->quote($group == '*' ? '' : $group)); } // Filter by extension_id if ($eid = $this->getState('filter.extension_id')) { $query->where($db->quoteName('extension_id') . ' = ' . $db->quote((int) $eid)); } else { $query->where($db->quoteName('extension_id') . ' != ' . $db->quote(0)) ->where($db->quoteName('extension_id') . ' != ' . $db->quote(700)); } // Filter by search $search = $this->getState('filter.search'); if (!empty($search)) { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('name LIKE ' . $search); } return $query; } /** * Get the count of disabled update sites * * @return integer * * @since 3.4 */ public function getDisabledUpdateSites() { $db = $this->getDbo(); $query = $db->getQuery(true) ->select('count(*)') ->from('#__update_sites') ->where('enabled = 0'); $db->setQuery($query); return $db->loadResult(); } /** * Finds updates for an extension. * * @param int $eid Extension identifier to look for * @param int $cache_timeout Cache timout * @param int $minimum_stability Minimum stability for updates {@see JUpdater} (0=dev, 1=alpha, 2=beta, 3=rc, 4=stable) * * @return boolean Result * * @since 1.6 */ public function findUpdates($eid = 0, $cache_timeout = 0, $minimum_stability = JUpdater::STABILITY_STABLE) { // Purge the updates list $this->purge(); $updater = JUpdater::getInstance(); $updater->findUpdates($eid, $cache_timeout, $minimum_stability); return true; } /** * Removes all of the updates from the table. * * @return boolean result of operation * * @since 1.6 */ public function purge() { $db = $this->getDbo(); // Note: TRUNCATE is a DDL operation // This may or may not mean depending on your database $db->setQuery('TRUNCATE TABLE #__updates'); if (!$db->execute()) { $this->_message = JText::_('JLIB_INSTALLER_FAILED_TO_PURGE_UPDATES'); return false; } // Reset the last update check timestamp $query = $db->getQuery(true) ->update($db->quoteName('#__update_sites')) ->set($db->quoteName('last_check_timestamp') . ' = ' . $db->quote(0)); $db->setQuery($query); $db->execute(); $this->_message = JText::_('JLIB_INSTALLER_PURGED_UPDATES'); return true; } /** * Enables any disabled rows in #__update_sites table * * @return boolean result of operation * * @since 1.6 */ public function enableSites() { $db = $this->getDbo(); $query = $db->getQuery(true) ->update('#__update_sites') ->set('enabled = 1') ->where('enabled = 0'); $db->setQuery($query); if (!$db->execute()) { $this->_message .= JText::_('COM_INSTALLER_FAILED_TO_ENABLE_UPDATES'); return false; } if ($rows = $db->getAffectedRows()) { $this->_message .= JText::plural('COM_INSTALLER_ENABLED_UPDATES', $rows); } return true; } /** * Update function. * * Sets the "result" state with the result of the operation. * * @param array $uids Array[int] List of updates to apply * @param int $minimum_stability The minimum allowed stability for installed updates {@see JUpdater} * * @return void * * @since 1.6 */ public function update($uids, $minimum_stability = JUpdater::STABILITY_STABLE) { $result = true; foreach ($uids as $uid) { $update = new JUpdate; $instance = JTable::getInstance('update'); $instance->load($uid); $update->loadFromXml($instance->detailsurl, $minimum_stability); $update->set('extra_query', $instance->extra_query); // Install sets state and enqueues messages $res = $this->install($update); if ($res) { $instance->delete($uid); } $result = $res & $result; } // Set the final state $this->setState('result', $result); } /** * Handles the actual update installation. * * @param JUpdate $update An update definition * * @return boolean Result of install * * @since 1.6 */ private function install($update) { $app = JFactory::getApplication(); if (!isset($update->get('downloadurl')->_data)) { JError::raiseWarning('', JText::_('COM_INSTALLER_INVALID_EXTENSION_UPDATE')); return false; } $url = $update->downloadurl->_data; if ($extra_query = $update->get('extra_query')) { $url .= (strpos($url, '?') === false) ? '?' : '&'; $url .= $extra_query; } $p_file = JInstallerHelper::downloadPackage($url); // Was the package downloaded? if (!$p_file) { JError::raiseWarning('', JText::sprintf('COM_INSTALLER_PACKAGE_DOWNLOAD_FAILED', $url)); return false; } $config = JFactory::getConfig(); $tmp_dest = $config->get('tmp_path'); // Unpack the downloaded package file $package = JInstallerHelper::unpack($tmp_dest . '/' . $p_file); // Get an installer instance $installer = JInstaller::getInstance(); $update->set('type', $package['type']); // Install the package if (!$installer->update($package['dir'])) { // There was an error updating the package $msg = JText::sprintf('COM_INSTALLER_MSG_UPDATE_ERROR', JText::_('COM_INSTALLER_TYPE_TYPE_' . strtoupper($package['type']))); $result = false; } else { // Package updated successfully $msg = JText::sprintf('COM_INSTALLER_MSG_UPDATE_SUCCESS', JText::_('COM_INSTALLER_TYPE_TYPE_' . strtoupper($package['type']))); $result = true; } // Quick change $this->type = $package['type']; // Set some model state values $app->enqueueMessage($msg); // TODO: Reconfigure this code when you have more battery life left $this->setState('name', $installer->get('name')); $this->setState('result', $result); $app->setUserState('com_installer.message', $installer->message); $app->setUserState('com_installer.extension_message', $installer->get('extension_message')); // Cleanup the install files if (!is_file($package['packagefile'])) { $config = JFactory::getConfig(); $package['packagefile'] = $config->get('tmp_path') . '/' . $package['packagefile']; } JInstallerHelper::cleanupInstall($package['packagefile'], $package['extractdir']); return $result; } /** * Method to get the row form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return mixed A JForm object on success, false on failure * * @since 2.5.2 */ public function getForm($data = array(), $loadData = true) { // Get the form. JForm::addFormPath(JPATH_COMPONENT . '/models/forms'); JForm::addFieldPath(JPATH_COMPONENT . '/models/fields'); $form = JForm::getInstance('com_installer.update', 'update', array('load_data' => $loadData)); // Check for an error. if ($form == false) { $this->setError($form->getMessage()); return false; } // Check the session for previously entered form data. $data = $this->loadFormData(); // Bind the form data if present. if (!empty($data)) { $form->bind($data); } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 2.5.2 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState($this->context . '.data', array()); return $data; } } PKb��\p����&�&-components/com_installer/models/languages.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; jimport('joomla.updater.update'); /** * Languages Installer Model * * @since 2.5.7 */ class InstallerModelLanguages extends JModelList { /** * @var integer Extension ID of the en-GB language pack. * @since 3.4 */ private $enGbExtensionId = 0; /** * @var integer Upate Site ID of the en-GB language pack. * @since 3.4 */ private $updateSiteId = 0; /** * Constructor override, defines a white list of column filters. * * @param array $config An optional associative array of configuration settings. * * @since 2.5.7 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'update_id', 'update_id', 'name', 'name', ); } parent::__construct($config); // Get the extension_id of the en-GB package. $db = $this->getDbo(); $extQuery = $db->getQuery(true); $extType = 'language'; $extElem = 'en-GB'; $extQuery->select($db->quoteName('extension_id')) ->from($db->quoteName('#__extensions')) ->where($db->quoteName('type') . ' = ' . $db->quote($extType)) ->where($db->quoteName('element') . ' = ' . $db->quote($extElem)) ->where($db->quoteName('client_id') . ' = 0'); $db->setQuery($extQuery); $extId = (int) $db->loadResult(); // Get the update_site_id for the en-GB package if extension_id found before. if ($extId) { $this->enGbExtensionId = $extId; $siteQuery = $db->getQuery(true); $siteQuery->select($db->quoteName('update_site_id')) ->from($db->quoteName('#__update_sites_extensions')) ->where($db->quoteName('extension_id') . ' = ' . $extId); $db->setQuery($siteQuery); $siteId = (int) $db->loadResult(); if ($siteId) { $this->updateSiteId = $siteId; } } } /** * Method to get the available languages database query. * * @return JDatabaseQuery The database query * * @since 2.5.7 */ protected function _getListQuery() { $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the updates table. $query->select($db->quoteName(array('update_id', 'name', 'version', 'detailsurl', 'type'))) ->from($db->quoteName('#__updates')); /* * This where clause will limit to language updates only. * If no update site exists, set the where clause so * no available languages will be found later with the * query returned by this function here. */ if ($this->updateSiteId) { $query->where($db->quoteName('update_site_id') . ' = ' . $this->updateSiteId); } else { $query->where($db->quoteName('update_site_id') . ' = -1'); } // This where clause will avoid to list languages already installed. $query->where($db->quoteName('extension_id') . ' = 0'); // Filter by search in title $search = $this->getState('filter.search'); if (!empty($search)) { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('(name LIKE ' . $search . ')'); } // Add the list ordering clause. $listOrder = $this->state->get('list.ordering'); $orderDirn = $this->state->get('list.direction'); $query->order($db->escape($listOrder) . ' ' . $db->escape($orderDirn)); return $query; } /** * Method to get a store id based on model configuration state. * * @param string $id A prefix for the store id. * * @return string A store id. * * @since 2.5.7 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); return parent::getStoreId($id); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering list order * @param string $direction direction in the list * * @return void * * @since 2.5.7 */ protected function populateState($ordering = 'name', $direction = 'asc') { $app = JFactory::getApplication(); $value = $app->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $value); $this->setState('extension_message', $app->getUserState('com_installer.extension_message')); parent::populateState($ordering, $direction); } /** * Enable languages update server * * @return boolean * * @since 3.4 */ protected function enableUpdateSite() { // If no update site, return false. if (!$this->updateSiteId) { return false; } // Try to enable the update site, return false if some RuntimeException $db = $this->getDbo(); $query = $db->getQuery(true) ->update('#__update_sites') ->set('enabled = 1') ->where('update_site_id = ' . $this->updateSiteId); $db->setQuery($query); try { $db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } return true; } /** * Method to find available languages in the Accredited Languages Update Site. * * @param int $cache_timeout time before refreshing the cached updates * * @return bool * * @since 2.5.7 */ public function findLanguages($cache_timeout = 0) { if (!$this->enableUpdateSite()) { return false; } if (!$this->enGbExtensionId) { return false; } $updater = JUpdater::getInstance(); /* * The following function call uses the extension_id of the en-GB package. * In #__update_sites_extensions you should have this extension_id linked * to the Accredited Translations Repo. */ $updater->findUpdates(array($this->enGbExtensionId), $cache_timeout); return true; } /** * Install languages in the system. * * @param array $lids array of language ids selected in the list * * @return bool * * @since 2.5.7 */ public function install($lids) { $app = JFactory::getApplication(); // Loop through every selected language foreach ($lids as $id) { $installer = new JInstaller; // Loads the update database object that represents the language. $language = JTable::getInstance('update'); $language->load($id); // Get the url to the XML manifest file of the selected language. $remote_manifest = $this->_getLanguageManifest($id); if (!$remote_manifest) { // Could not find the url, the information in the update server may be corrupt. $message = JText::sprintf('COM_INSTALLER_MSG_LANGUAGES_CANT_FIND_REMOTE_MANIFEST', $language->name); $message .= ' ' . JText::_('COM_INSTALLER_MSG_LANGUAGES_TRY_LATER'); $app->enqueueMessage($message); continue; } // Based on the language XML manifest get the url of the package to download. $package_url = $this->_getPackageUrl($remote_manifest); if (!$package_url) { // Could not find the url , maybe the url is wrong in the update server, or there is not internet access $message = JText::sprintf('COM_INSTALLER_MSG_LANGUAGES_CANT_FIND_REMOTE_PACKAGE', $language->name); $message .= ' ' . JText::_('COM_INSTALLER_MSG_LANGUAGES_TRY_LATER'); $app->enqueueMessage($message); continue; } // Download the package to the tmp folder. $package = $this->_downloadPackage($package_url); // Install the package if (!$installer->install($package['dir'])) { // There was an error installing the package. $message = JText::sprintf('COM_INSTALLER_INSTALL_ERROR', $language->name); $message .= ' ' . JText::_('COM_INSTALLER_MSG_LANGUAGES_TRY_LATER'); $app->enqueueMessage($message); continue; } // Package installed successfully. $app->enqueueMessage(JText::sprintf('COM_INSTALLER_INSTALL_SUCCESS', $language->name)); // Cleanup the install files in tmp folder. if (!is_file($package['packagefile'])) { $config = JFactory::getConfig(); $package['packagefile'] = $config->get('tmp_path') . '/' . $package['packagefile']; } JInstallerHelper::cleanupInstall($package['packagefile'], $package['extractdir']); // Delete the installed language from the list. $language->delete($id); } } /** * Gets the manifest file of a selected language from a the language list in a update server. * * @param int $uid the id of the language in the #__updates table * * @return string * * @since 2.5.7 */ protected function _getLanguageManifest($uid) { $instance = JTable::getInstance('update'); $instance->load($uid); return $instance->detailsurl; } /** * Finds the url of the package to download. * * @param string $remote_manifest url to the manifest XML file of the remote package * * @return string|bool * * @since 2.5.7 */ protected function _getPackageUrl( $remote_manifest ) { $update = new JUpdate; $update->loadFromXml($remote_manifest); $package_url = trim($update->get('downloadurl', false)->_data); return $package_url; } /** * Download a language package from a URL and unpack it in the tmp folder. * * @param string $url hola * * @return array|bool Package details or false on failure * * @since 2.5.7 */ protected function _downloadPackage($url) { // Download the package from the given URL. $p_file = JInstallerHelper::downloadPackage($url); // Was the package downloaded? if (!$p_file) { JError::raiseWarning('', JText::_('COM_INSTALLER_MSG_INSTALL_INVALID_URL')); return false; } $config = JFactory::getConfig(); $tmp_dest = $config->get('tmp_path'); // Unpack the downloaded package file. $package = JInstallerHelper::unpack($tmp_dest . '/' . $p_file); return $package; } } PKb��\��&���,components/com_installer/models/discover.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require_once __DIR__ . '/extension.php'; /** * Installer Discover Model * * @since 1.6 */ class InstallerModelDiscover extends InstallerModel { /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 3.1 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication(); // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $clientId = $this->getUserStateFromRequest($this->context . '.filter.client_id', 'filter_client_id', ''); $this->setState('filter.client_id', $clientId); $categoryId = $this->getUserStateFromRequest($this->context . '.filter.type', 'filter_type', ''); $this->setState('filter.type', $categoryId); $group = $this->getUserStateFromRequest($this->context . '.filter.group', 'filter_group', ''); $this->setState('filter.group', $group); $this->setState('message', $app->getUserState('com_installer.message')); $this->setState('extension_message', $app->getUserState('com_installer.extension_message')); $app->setUserState('com_installer.message', ''); $app->setUserState('com_installer.extension_message', ''); parent::populateState('name', 'asc'); } /** * Method to get the database query. * * @return JDatabaseQuery the database query * * @since 3.1 */ protected function getListQuery() { $type = $this->getState('filter.type'); $client = $this->getState('filter.client_id'); $group = $this->getState('filter.group'); $query = $this->getDbo()->getQuery(true) ->select('*') ->from('#__extensions') ->where('state=-1'); if ($type) { $query->where('type=' . $this->_db->quote($type)); } if ($client != '') { $query->where('client_id=' . (int) $client); } if ($group != '' && in_array($type, array('plugin', 'library', ''))) { $query->where('folder=' . $this->_db->quote($group == '*' ? '' : $group)); } // Filter by search in id $search = $this->getState('filter.search'); if (!empty($search) && stripos($search, 'id:') === 0) { $query->where('extension_id = ' . (int) substr($search, 3)); } return $query; } /** * Discover extensions. * * Finds uninstalled extensions * * @return void * * @since 1.6 */ public function discover() { // Purge the list of discovered extensions $this->purge(); $installer = JInstaller::getInstance(); $results = $installer->discover(); // Get all templates, including discovered ones $db = $this->getDbo(); $query = $db->getQuery(true) ->select('extension_id, element, folder, client_id, type') ->from('#__extensions'); $db->setQuery($query); $installedtmp = $db->loadObjectList(); $extensions = array(); foreach ($installedtmp as $install) { $key = implode(':', array($install->type, $install->element, $install->folder, $install->client_id)); $extensions[$key] = $install; } unset($installedtmp); foreach ($results as $result) { // Check if we have a match on the element $key = implode(':', array($result->type, $result->element, $result->folder, $result->client_id)); if (!array_key_exists($key, $extensions)) { // Put it into the table $result->store(); } } } /** * Installs a discovered extension. * * @return void * * @since 1.6 */ public function discover_install() { $app = JFactory::getApplication(); $input = $app->input; $eid = $input->get('cid', 0, 'array'); if (is_array($eid) || $eid) { if (!is_array($eid)) { $eid = array($eid); } JArrayHelper::toInteger($eid); $failed = false; foreach ($eid as $id) { $installer = new JInstaller; $result = $installer->discover_install($id); if (!$result) { $failed = true; $app->enqueueMessage(JText::_('COM_INSTALLER_MSG_DISCOVER_INSTALLFAILED') . ': ' . $id); } } // TODO - We are only receiving the message for the last JInstaller instance $this->setState('action', 'remove'); $this->setState('name', $installer->get('name')); $app->setUserState('com_installer.message', $installer->message); $app->setUserState('com_installer.extension_message', $installer->get('extension_message')); if (!$failed) { $app->enqueueMessage(JText::_('COM_INSTALLER_MSG_DISCOVER_INSTALLSUCCESSFUL')); } } else { $app->enqueueMessage(JText::_('COM_INSTALLER_MSG_DISCOVER_NOEXTENSIONSELECTED')); } } /** * Cleans out the list of discovered extensions. * * @return bool True on success * * @since 1.6 */ public function purge() { $db = $this->getDbo(); $query = $db->getQuery(true) ->delete('#__extensions') ->where('state = -1'); $db->setQuery($query); if (!$db->execute()) { $this->_message = JText::_('COM_INSTALLER_MSG_DISCOVER_FAILEDTOPURGEEXTENSIONS'); return false; } $this->_message = JText::_('COM_INSTALLER_MSG_DISCOVER_PURGEDDISCOVEREDEXTENSIONS'); return true; } } PKb��\������*components/com_installer/models/manage.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require_once __DIR__ . '/extension.php'; /** * Installer Manage Model * * @since 1.5 */ class InstallerModelManage extends InstallerModel { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array('name', 'client_id', 'status', 'type', 'folder', 'extension_id',); } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication(); // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $clientId = $this->getUserStateFromRequest($this->context . '.filter.client_id', 'filter_client_id', ''); $this->setState('filter.client_id', $clientId); $status = $this->getUserStateFromRequest($this->context . '.filter.status', 'filter_status', ''); $this->setState('filter.status', $status); $categoryId = $this->getUserStateFromRequest($this->context . '.filter.type', 'filter_type', ''); $this->setState('filter.type', $categoryId); $group = $this->getUserStateFromRequest($this->context . '.filter.group', 'filter_group', ''); $this->setState('filter.group', $group); $this->setState('message', $app->getUserState('com_installer.message')); $this->setState('extension_message', $app->getUserState('com_installer.extension_message')); $app->setUserState('com_installer.message', ''); $app->setUserState('com_installer.extension_message', ''); parent::populateState('name', 'asc'); } /** * Enable/Disable an extension. * * @param array &$eid Extension ids to un/publish * @param int $value Publish value * * @return boolean True on success * * @since 1.5 */ public function publish(&$eid = array(), $value = 1) { $user = JFactory::getUser(); if (!$user->authorise('core.edit.state', 'com_installer')) { JError::raiseWarning(403, JText::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED')); return false; } $result = true; /* * Ensure eid is an array of extension ids * TODO: If it isn't an array do we want to set an error and fail? */ if (!is_array($eid)) { $eid = array($eid); } // Get a table object for the extension type $table = JTable::getInstance('Extension'); JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_templates/tables'); // Enable the extension in the table and store it in the database foreach ($eid as $i => $id) { $table->load($id); if ($table->type == 'template') { $style = JTable::getInstance('Style', 'TemplatesTable'); if ($style->load(array('template' => $table->element, 'client_id' => $table->client_id, 'home' => 1))) { JError::raiseNotice(403, JText::_('COM_INSTALLER_ERROR_DISABLE_DEFAULT_TEMPLATE_NOT_PERMITTED')); unset($eid[$i]); continue; } } if ($table->protected == 1) { $result = false; JError::raiseWarning(403, JText::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED')); } else { $table->enabled = $value; } if (!$table->store()) { $this->setError($table->getError()); $result = false; } } return $result; } /** * Refreshes the cached manifest information for an extension. * * @param int $eid extension identifier (key in #__extensions) * * @return boolean result of refresh * * @since 1.6 */ public function refresh($eid) { if (!is_array($eid)) { $eid = array($eid => 0); } // Get an installer object for the extension type $installer = JInstaller::getInstance(); $result = 0; // Uninstall the chosen extensions foreach ($eid as $id) { $result |= $installer->refreshManifestCache($id); } return $result; } /** * Remove (uninstall) an extension * * @param array $eid An array of identifiers * * @return boolean True on success * * @since 1.5 */ public function remove($eid = array()) { $user = JFactory::getUser(); if (!$user->authorise('core.delete', 'com_installer')) { JError::raiseWarning(403, JText::_('JERROR_CORE_DELETE_NOT_PERMITTED')); return false; } $failed = array(); /* * Ensure eid is an array of extension ids in the form id => client_id * TODO: If it isn't an array do we want to set an error and fail? */ if (!is_array($eid)) { $eid = array($eid => 0); } // Get an installer object for the extension type $installer = JInstaller::getInstance(); $row = JTable::getInstance('extension'); // Uninstall the chosen extensions $msgs = array(); $result = false; foreach ($eid as $id) { $id = trim($id); $row->load($id); $result = false; $langstring = 'COM_INSTALLER_TYPE_TYPE_' . strtoupper($row->type); $rowtype = JText::_($langstring); if (strpos($rowtype, $langstring) !== false) { $rowtype = $row->type; } if ($row->type && $row->type != 'language') { $result = $installer->uninstall($row->type, $id); // Build an array of extensions that failed to uninstall if ($result === false) { // There was an error in uninstalling the package $msgs[] = JText::sprintf('COM_INSTALLER_UNINSTALL_ERROR', $rowtype); continue; } // Package uninstalled sucessfully $msgs[] = JText::sprintf('COM_INSTALLER_UNINSTALL_SUCCESS', $rowtype); $result = true; continue; } if ($row->type == 'language') { // One should always uninstall a language package, not a single language $msgs[] = JText::_('COM_INSTALLER_UNINSTALL_LANGUAGE'); continue; } // There was an error in uninstalling the package $msgs[] = JText::sprintf('COM_INSTALLER_UNINSTALL_ERROR', $rowtype); } $msg = implode("<br />", $msgs); $app = JFactory::getApplication(); $app->enqueueMessage($msg); $this->setState('action', 'remove'); $this->setState('name', $installer->get('name')); $app->setUserState('com_installer.message', $installer->message); $app->setUserState('com_installer.extension_message', $installer->get('extension_message')); return $result; } /** * Method to get the database query * * @return JDatabaseQuery The database query * * @since 1.6 */ protected function getListQuery() { $status = $this->getState('filter.status'); $type = $this->getState('filter.type'); $client = $this->getState('filter.client_id'); $group = $this->getState('filter.group'); $query = $this->getDbo()->getQuery(true) ->select('*') ->select('2*protected+(1-protected)*enabled as status') ->from('#__extensions') ->where('state=0'); if ($status != '') { if ($status == '2') { $query->where('protected = 1'); } elseif ($status == '3') { $query->where('protected = 0'); } else { $query->where('protected = 0') ->where('enabled=' . (int) $status); } } if ($type) { $query->where('type=' . $this->_db->quote($type)); } if ($client != '') { $query->where('client_id=' . (int) $client); } if ($group != '') { $query->where('folder=' . $this->_db->quote($group == '*' ? '' : $group)); } // Filter by search in id $search = $this->getState('filter.search'); if (!empty($search) && stripos($search, 'id:') === 0) { $query->where('extension_id = ' . (int) substr($search, 3)); } return $query; } } PKb��\�=,&,&+components/com_installer/models/install.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Extension Manager Install Model * * @since 1.5 */ class InstallerModelInstall extends JModelLegacy { /** * @var object JTable object */ protected $_table = null; /** * @var object JTable object */ protected $_url = null; /** * Model context string. * * @var string */ protected $_context = 'com_installer.install'; /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @return void * * @since 1.6 */ protected function populateState() { $app = JFactory::getApplication('administrator'); $this->setState('message', $app->getUserState('com_installer.message')); $this->setState('extension_message', $app->getUserState('com_installer.extension_message')); $app->setUserState('com_installer.message', ''); $app->setUserState('com_installer.extension_message', ''); // Recall the 'Install from Directory' path. $path = $app->getUserStateFromRequest($this->_context . '.install_directory', 'install_directory', $app->get('tmp_path')); $this->setState('install.directory', $path); parent::populateState(); } /** * Install an extension from either folder, url or upload. * * @return boolean result of install. * * @since 1.5 */ public function install() { $this->setState('action', 'install'); // Set FTP credentials, if given. JClientHelper::setCredentialsFromRequest('ftp'); $app = JFactory::getApplication(); // Load installer plugins for assistance if required: JPluginHelper::importPlugin('installer'); $dispatcher = JEventDispatcher::getInstance(); $package = null; // This event allows an input pre-treatment, a custom pre-packing or custom installation. // (e.g. from a JSON description). $results = $dispatcher->trigger('onInstallerBeforeInstallation', array($this, &$package)); if (in_array(true, $results, true)) { return true; } if (in_array(false, $results, true)) { return false; } $installType = $app->input->getWord('installtype'); if ($package === null) { switch ($installType) { case 'folder': // Remember the 'Install from Directory' path. $app->getUserStateFromRequest($this->_context . '.install_directory', 'install_directory'); $package = $this->_getPackageFromFolder(); break; case 'upload': $package = $this->_getPackageFromUpload(); break; case 'url': $package = $this->_getPackageFromUrl(); break; default: $app->setUserState('com_installer.message', JText::_('COM_INSTALLER_NO_INSTALL_TYPE_FOUND')); return false; break; } } // This event allows a custom installation of the package or a customization of the package: $results = $dispatcher->trigger('onInstallerBeforeInstaller', array($this, &$package)); if (in_array(true, $results, true)) { return true; } if (in_array(false, $results, true)) { if (in_array($installType, array('upload', 'url'))) { JInstallerHelper::cleanupInstall($package['packagefile'], $package['extractdir']); } return false; } // Was the package unpacked? if (!$package || !$package['type']) { if (in_array($installType, array('upload', 'url'))) { JInstallerHelper::cleanupInstall($package['packagefile'], $package['extractdir']); } $app->enqueueMessage(JText::_('COM_INSTALLER_UNABLE_TO_FIND_INSTALL_PACKAGE'), 'error'); return false; } // Get an installer instance. $installer = JInstaller::getInstance(); // Install the package. if (!$installer->install($package['dir'])) { // There was an error installing the package. $msg = JText::sprintf('COM_INSTALLER_INSTALL_ERROR', JText::_('COM_INSTALLER_TYPE_TYPE_' . strtoupper($package['type']))); $result = false; $msgType = 'error'; } else { // Package installed sucessfully. $msg = JText::sprintf('COM_INSTALLER_INSTALL_SUCCESS', JText::_('COM_INSTALLER_TYPE_TYPE_' . strtoupper($package['type']))); $result = true; $msgType = 'message'; } // This event allows a custom a post-flight: $dispatcher->trigger('onInstallerAfterInstaller', array($this, &$package, $installer, &$result, &$msg)); // Set some model state values. $app = JFactory::getApplication(); $app->enqueueMessage($msg, $msgType); $this->setState('name', $installer->get('name')); $this->setState('result', $result); $app->setUserState('com_installer.message', $installer->message); $app->setUserState('com_installer.extension_message', $installer->get('extension_message')); $app->setUserState('com_installer.redirect_url', $installer->get('redirect_url')); // Cleanup the install files. if (!is_file($package['packagefile'])) { $config = JFactory::getConfig(); $package['packagefile'] = $config->get('tmp_path') . '/' . $package['packagefile']; } JInstallerHelper::cleanupInstall($package['packagefile'], $package['extractdir']); return $result; } /** * Works out an installation package from a HTTP upload. * * @return package definition or false on failure. */ protected function _getPackageFromUpload() { // Get the uploaded file information. $input = JFactory::getApplication()->input; // Do not change the filter type 'raw'. We need this to let files containing PHP code to upload. See JInputFiles::get. $userfile = $input->files->get('install_package', null, 'raw'); // Make sure that file uploads are enabled in php. if (!(bool) ini_get('file_uploads')) { JError::raiseWarning('', JText::_('COM_INSTALLER_MSG_INSTALL_WARNINSTALLFILE')); return false; } // Make sure that zlib is loaded so that the package can be unpacked. if (!extension_loaded('zlib')) { JError::raiseWarning('', JText::_('COM_INSTALLER_MSG_INSTALL_WARNINSTALLZLIB')); return false; } // If there is no uploaded file, we have a problem... if (!is_array($userfile)) { JError::raiseWarning('', JText::_('COM_INSTALLER_MSG_INSTALL_NO_FILE_SELECTED')); return false; } // Is the PHP tmp directory missing? if ($userfile['error'] && ($userfile['error'] == UPLOAD_ERR_NO_TMP_DIR)) { JError::raiseWarning( '', JText::_('COM_INSTALLER_MSG_INSTALL_WARNINSTALLUPLOADERROR') . '<br />' . JText::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSET') ); return false; } // Is the max upload size too small in php.ini? if ($userfile['error'] && ($userfile['error'] == UPLOAD_ERR_INI_SIZE)) { JError::raiseWarning( '', JText::_('COM_INSTALLER_MSG_INSTALL_WARNINSTALLUPLOADERROR') . '<br />' . JText::_('COM_INSTALLER_MSG_WARNINGS_SMALLUPLOADSIZE') ); return false; } // Check if there was a different problem uploading the file. if ($userfile['error'] || $userfile['size'] < 1) { JError::raiseWarning('', JText::_('COM_INSTALLER_MSG_INSTALL_WARNINSTALLUPLOADERROR')); return false; } // Build the appropriate paths. $config = JFactory::getConfig(); $tmp_dest = $config->get('tmp_path') . '/' . $userfile['name']; $tmp_src = $userfile['tmp_name']; // Move uploaded file. jimport('joomla.filesystem.file'); JFile::upload($tmp_src, $tmp_dest, false, true); // Unpack the downloaded package file. $package = JInstallerHelper::unpack($tmp_dest, true); return $package; } /** * Install an extension from a directory * * @return array Package details or false on failure * * @since 1.5 */ protected function _getPackageFromFolder() { $input = JFactory::getApplication()->input; // Get the path to the package to install. $p_dir = $input->getString('install_directory'); $p_dir = JPath::clean($p_dir); // Did you give us a valid directory? if (!is_dir($p_dir)) { JError::raiseWarning('', JText::_('COM_INSTALLER_MSG_INSTALL_PLEASE_ENTER_A_PACKAGE_DIRECTORY')); return false; } // Detect the package type $type = JInstallerHelper::detectType($p_dir); // Did you give us a valid package? if (!$type) { JError::raiseWarning('', JText::_('COM_INSTALLER_MSG_INSTALL_PATH_DOES_NOT_HAVE_A_VALID_PACKAGE')); } $package['packagefile'] = null; $package['extractdir'] = null; $package['dir'] = $p_dir; $package['type'] = $type; return $package; } /** * Install an extension from a URL. * * @return Package details or false on failure. * * @since 1.5 */ protected function _getPackageFromUrl() { $input = JFactory::getApplication()->input; // Get the URL of the package to install. $url = $input->getString('install_url'); // Did you give us a URL? if (!$url) { JError::raiseWarning('', JText::_('COM_INSTALLER_MSG_INSTALL_ENTER_A_URL')); return false; } // Handle updater XML file case: if (preg_match('/\.xml\s*$/', $url)) { jimport('joomla.updater.update'); $update = new JUpdate; $update->loadFromXml($url); $package_url = trim($update->get('downloadurl', false)->_data); if ($package_url) { $url = $package_url; } unset($update); } // Download the package at the URL given. $p_file = JInstallerHelper::downloadPackage($url); // Was the package downloaded? if (!$p_file) { JError::raiseWarning('', JText::_('COM_INSTALLER_MSG_INSTALL_INVALID_URL')); return false; } $config = JFactory::getConfig(); $tmp_dest = $config->get('tmp_path'); // Unpack the downloaded package file. $package = JInstallerHelper::unpack($tmp_dest . '/' . $p_file, true); return $package; } } PKb��\���QQ-components/com_installer/models/extension.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Extension Manager Abstract Extension Model. * * @since 1.5 */ class InstallerModel extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'name', 'client_id', 'enabled', 'type', 'folder', 'extension_id', ); } parent::__construct($config); } /** * Returns an object list * * @param string $query The query * @param int $limitstart Offset * @param int $limit The number of records * * @return array */ protected function _getList($query, $limitstart = 0, $limit = 0) { $ordering = $this->getState('list.ordering'); $search = $this->getState('filter.search'); // Replace slashes so preg_match will work $search = str_replace('/', ' ', $search); $db = $this->getDbo(); if ($ordering == 'name' || (!empty($search) && stripos($search, 'id:') !== 0)) { $db->setQuery($query); $result = $db->loadObjectList(); $this->translate($result); if (!empty($search)) { $escapedSearchString = $this->refineSearchStringToRegex($search, '/'); foreach ($result as $i => $item) { if (!preg_match("/$escapedSearchString/i", $item->name)) { unset($result[$i]); } } } JArrayHelper::sortObjects($result, $this->getState('list.ordering'), $this->getState('list.direction') == 'desc' ? -1 : 1, true, true); $total = count($result); $this->cache[$this->getStoreId('getTotal')] = $total; if ($total < $limitstart) { $limitstart = 0; $this->setState('list.start', 0); } return array_slice($result, $limitstart, $limit ? $limit : null); } $query->order($db->quoteName($ordering) . ' ' . $this->getState('list.direction')); $result = parent::_getList($query, $limitstart, $limit); $this->translate($result); return $result; } /** * Translate a list of objects * * @param array &$items The array of objects * * @return array The array of translated objects */ protected function translate(&$items) { $lang = JFactory::getLanguage(); foreach ($items as &$item) { if (strlen($item->manifest_cache) && $data = json_decode($item->manifest_cache)) { foreach ($data as $key => $value) { if ($key == 'type') { // Ignore the type field continue; } $item->$key = $value; } } $item->author_info = @$item->authorEmail . '<br />' . @$item->authorUrl; $item->client = $item->client_id ? JText::_('JADMINISTRATOR') : JText::_('JSITE'); $path = $item->client_id ? JPATH_ADMINISTRATOR : JPATH_SITE; switch ($item->type) { case 'component': $extension = $item->element; $source = JPATH_ADMINISTRATOR . '/components/' . $extension; $lang->load("$extension.sys", JPATH_ADMINISTRATOR, null, false, true) || $lang->load("$extension.sys", $source, null, false, true); break; case 'file': $extension = 'files_' . $item->element; $lang->load("$extension.sys", JPATH_SITE, null, false, true); break; case 'library': $extension = 'lib_' . $item->element; $lang->load("$extension.sys", JPATH_SITE, null, false, true); break; case 'module': $extension = $item->element; $source = $path . '/modules/' . $extension; $lang->load("$extension.sys", $path, null, false, true) || $lang->load("$extension.sys", $source, null, false, true); break; case 'plugin': $extension = 'plg_' . $item->folder . '_' . $item->element; $source = JPATH_PLUGINS . '/' . $item->folder . '/' . $item->element; $lang->load("$extension.sys", JPATH_ADMINISTRATOR, null, false, true) || $lang->load("$extension.sys", $source, null, false, true); break; case 'template': $extension = 'tpl_' . $item->element; $source = $path . '/templates/' . $item->element; $lang->load("$extension.sys", $path, null, false, true) || $lang->load("$extension.sys", $source, null, false, true); break; case 'package': default: $extension = $item->element; $lang->load("$extension.sys", JPATH_SITE, null, false, true); break; } if (!in_array($item->type, array('language', 'template', 'library'))) { $item->name = JText::_($item->name); } settype($item->description, 'string'); if (!in_array($item->type, array('language'))) { $item->description = JText::_($item->description); } } } } PKb��\jL#���,components/com_installer/models/database.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; JLoader::register('InstallerModel', __DIR__ . '/extension.php'); JLoader::register('JoomlaInstallerScript', JPATH_ADMINISTRATOR . '/components/com_admin/script.php'); /** * Installer Manage Model * * @since 1.6 */ class InstallerModelDatabase extends InstallerModel { protected $_context = 'com_installer.discover'; /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication(); $this->setState('message', $app->getUserState('com_installer.message')); $this->setState('extension_message', $app->getUserState('com_installer.extension_message')); $app->setUserState('com_installer.message', ''); $app->setUserState('com_installer.extension_message', ''); parent::populateState('name', 'asc'); } /** * Fixes database problems. * * @return void */ public function fix() { if (!$changeSet = $this->getItems()) { return false; } $changeSet->fix(); $this->fixSchemaVersion($changeSet); $this->fixUpdateVersion(); $installer = new JoomlaInstallerScript; $installer->deleteUnexistingFiles(); $this->fixDefaultTextFilters(); } /** * Gets the changeset object. * * @return JSchemaChangeset */ public function getItems() { $folder = JPATH_ADMINISTRATOR . '/components/com_admin/sql/updates/'; try { $changeSet = JSchemaChangeset::getInstance($this->getDbo(), $folder); } catch (RuntimeException $e) { JFactory::getApplication()->enqueueMessage($e->getMessage(), 'warning'); return false; } return $changeSet; } /** * Method to get a JPagination object for the data set. * * @return boolean * * @since 12.2 */ public function getPagination() { return true; } /** * Get version from #__schemas table. * * @return mixed the return value from the query, or null if the query fails. * * @throws Exception */ public function getSchemaVersion() { $db = $this->getDbo(); $query = $db->getQuery(true) ->select('version_id') ->from($db->quoteName('#__schemas')) ->where('extension_id = 700'); $db->setQuery($query); $result = $db->loadResult(); return $result; } /** * Fix schema version if wrong. * * @param JSchemaChangeSet $changeSet Schema change set. * * @return mixed string schema version if success, false if fail. */ public function fixSchemaVersion($changeSet) { // Get correct schema version -- last file in array. $schema = $changeSet->getSchema(); // Check value. If ok, don't do update. if ($schema == $this->getSchemaVersion()) { return $schema; } // Delete old row. $db = $this->getDbo(); $query = $db->getQuery(true) ->delete($db->quoteName('#__schemas')) ->where($db->quoteName('extension_id') . ' = 700'); $db->setQuery($query); $db->execute(); // Add new row. $query->clear() ->insert($db->quoteName('#__schemas')) ->columns($db->quoteName('extension_id') . ',' . $db->quoteName('version_id')) ->values('700, ' . $db->quote($schema)); $db->setQuery($query); if (!$db->execute()) { return false; } return $schema; } /** * Get current version from #__extensions table. * * @return mixed version if successful, false if fail. */ public function getUpdateVersion() { $table = JTable::getInstance('Extension'); $table->load('700'); $cache = new Registry($table->manifest_cache); return $cache->get('version'); } /** * Fix Joomla version in #__extensions table if wrong (doesn't equal JVersion short version). * * @return mixed string update version if success, false if fail. */ public function fixUpdateVersion() { $table = JTable::getInstance('Extension'); $table->load('700'); $cache = new Registry($table->manifest_cache); $updateVersion = $cache->get('version'); $cmsVersion = new JVersion; if ($updateVersion == $cmsVersion->getShortVersion()) { return $updateVersion; } $cache->set('version', $cmsVersion->getShortVersion()); $table->manifest_cache = $cache->toString(); if ($table->store()) { return $cmsVersion->getShortVersion(); } return false; } /** * For version 2.5.x only * Check if com_config parameters are blank. * * @return string default text filters (if any). */ public function getDefaultTextFilters() { $table = JTable::getInstance('Extension'); $table->load($table->find(array('name' => 'com_config'))); return $table->params; } /** * For version 2.5.x only * Check if com_config parameters are blank. If so, populate with com_content text filters. * * @return mixed boolean true if params are updated, null otherwise. */ public function fixDefaultTextFilters() { $table = JTable::getInstance('Extension'); $table->load($table->find(array('name' => 'com_config'))); // Check for empty $config and non-empty content filters. if (!$table->params) { // Get filters from com_content and store if you find them. $contentParams = JComponentHelper::getParams('com_content'); if ($contentParams->get('filters')) { $newParams = new Registry; $newParams->set('filters', $contentParams->get('filters')); $table->params = (string) $newParams; $table->store(); return true; } } } } PKb��\�hQTT,components/com_installer/models/warnings.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Extension Manager Templates Model * * @since 1.6 */ class InstallerModelWarnings extends JModelList { /** * Extension Type * @var string */ public $type = 'warnings'; /** * Return the byte value of a particular string. * * @param string $val String optionally with G, M or K suffix * * @return integer size in bytes * * @since 1.6 */ public function return_bytes($val) { $val = trim($val); $last = strtolower($val{strlen($val) - 1}); switch ($last) { // The 'G' modifier is available since PHP 5.1.0 case 'g': $val *= 1024; case 'm': $val *= 1024; case 'k': $val *= 1024; } return $val; } /** * Load the data. * * @return array Messages * * @since 1.6 */ public function getItems() { static $messages; if ($messages) { return $messages; } $messages = array(); $file_uploads = ini_get('file_uploads'); if (!$file_uploads) { $messages[] = array('message' => JText::_('COM_INSTALLER_MSG_WARNINGS_FILEUPLOADSDISABLED'), 'description' => JText::_('COM_INSTALLER_MSG_WARNINGS_FILEUPLOADISDISABLEDDESC')); } $upload_dir = ini_get('upload_tmp_dir'); if (!$upload_dir) { $messages[] = array('message' => JText::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSET'), 'description' => JText::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTSETDESC')); } else { if (!is_writeable($upload_dir)) { $messages[] = array('message' => JText::_('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLE'), 'description' => JText::sprintf('COM_INSTALLER_MSG_WARNINGS_PHPUPLOADNOTWRITEABLEDESC', $upload_dir)); } } $config = JFactory::getConfig(); $tmp_path = $config->get('tmp_path'); if (!$tmp_path) { $messages[] = array('message' => JText::_('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTSET'), 'description' => JText::_('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTSETDESC')); } else { if (!is_writeable($tmp_path)) { $messages[] = array('message' => JText::_('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTWRITEABLE'), 'description' => JText::sprintf('COM_INSTALLER_MSG_WARNINGS_JOOMLATMPNOTWRITEABLEDESC', $tmp_path)); } } $memory_limit = $this->return_bytes(ini_get('memory_limit')); if ($memory_limit < (8 * 1024 * 1024) && $memory_limit != -1) { // 8MB $messages[] = array('message' => JText::_('COM_INSTALLER_MSG_WARNINGS_LOWMEMORYWARN'), 'description' => JText::_('COM_INSTALLER_MSG_WARNINGS_LOWMEMORYDESC')); } elseif ($memory_limit < (16 * 1024 * 1024) && $memory_limit != -1) { // 16MB $messages[] = array('message' => JText::_('COM_INSTALLER_MSG_WARNINGS_MEDMEMORYWARN'), 'description' => JText::_('COM_INSTALLER_MSG_WARNINGS_MEDMEMORYDESC')); } $post_max_size = $this->return_bytes(ini_get('post_max_size')); $upload_max_filesize = $this->return_bytes(ini_get('upload_max_filesize')); if ($post_max_size < $upload_max_filesize) { $messages[] = array('message' => JText::_('COM_INSTALLER_MSG_WARNINGS_UPLOADBIGGERTHANPOST'), 'description' => JText::_('COM_INSTALLER_MSG_WARNINGS_UPLOADBIGGERTHANPOSTDESC')); } if ($post_max_size < (8 * 1024 * 1024)) // 8MB { $messages[] = array('message' => JText::_('COM_INSTALLER_MSG_WARNINGS_SMALLPOSTSIZE'), 'description' => JText::_('COM_INSTALLER_MSG_WARNINGS_SMALLPOSTSIZEDESC')); } if ($upload_max_filesize < (8 * 1024 * 1024)) // 8MB { $messages[] = array('message' => JText::_('COM_INSTALLER_MSG_WARNINGS_SMALLUPLOADSIZE'), 'description' => JText::_('COM_INSTALLER_MSG_WARNINGS_SMALLUPLOADSIZEDESC')); } return $messages; } } PKb��\ o�``/components/com_installer/models/updatesites.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require_once __DIR__ . '/extension.php'; /** * Installer Update Sites Model * * @package Joomla.Administrator * @subpackage com_installer * @since 3.4 */ class InstallerModelUpdatesites extends InstallerModel { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 3.4 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'update_site_name', 'name', 'client_id', 'status', 'type', 'folder', 'update_site_id', 'enabled' ); } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 3.4 */ protected function populateState($ordering = null, $direction = null) { // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $clientId = $this->getUserStateFromRequest($this->context . '.filter.client_id', 'filter_client_id', ''); $this->setState('filter.client_id', $clientId); $status = $this->getUserStateFromRequest($this->context . '.filter.enabled', 'filter_enabled', ''); $this->setState('filter.enabled', $status); $categoryId = $this->getUserStateFromRequest($this->context . '.filter.type', 'filter_type', ''); $this->setState('filter.type', $categoryId); $group = $this->getUserStateFromRequest($this->context . '.filter.group', 'filter_group', ''); $this->setState('filter.group', $group); parent::populateState('name', 'asc'); } /** * Enable/Disable an extension. * * @param array &$eid Extension ids to un/publish * @param int $value Publish value * * @return boolean True on success * * @since 3.4 * * @throws Exception on ACL error */ public function publish(&$eid = array(), $value = 1) { $user = JFactory::getUser(); if (!$user->authorise('core.edit.state', 'com_installer')) { throw new Exception(JText::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED'), 403); } $result = true; // Ensure eid is an array of extension ids if (!is_array($eid)) { $eid = array($eid); } // Get a table object for the extension type $table = JTable::getInstance('Updatesite'); // Enable the update site in the table and store it in the database foreach ($eid as $i => $id) { $table->load($id); $table->enabled = $value; if (!$table->store()) { $this->setError($table->getError()); $result = false; } } return $result; } /** * Method to get the database query * * @return JDatabaseQuery The database query * * @since 3.4 */ protected function getListQuery() { $enabled = $this->getState('filter.enabled'); $type = $this->getState('filter.type'); $client = $this->getState('filter.client_id'); $group = $this->getState('filter.group'); $query = JFactory::getDbo()->getQuery(true) ->select( array( 's.update_site_id', 's.name as update_site_name', 's.type as update_site_type', 's.location', 's.enabled', 'e.extension_id', 'e.name', 'e.type', 'e.element', 'e.folder', 'e.client_id', 'e.state', 'e.manifest_cache', ) ) ->from('#__update_sites AS s') ->innerJoin('#__update_sites_extensions AS se on(se.update_site_id = s.update_site_id)') ->innerJoin('#__extensions AS e ON(e.extension_id = se.extension_id)') ->where('state=0'); if ($enabled != '') { $query->where('s.enabled=' . (int) $enabled); } if ($type) { $query->where('e.type=' . $this->_db->quote($type)); } if ($client != '') { $query->where('client_id=' . (int) $client); } if ($group != '' && in_array($type, array('plugin', 'library', ''))) { $query->where('folder=' . $this->_db->quote($group == '*' ? '' : $group)); } // Filter by search in id $search = $this->getState('filter.search'); if (!empty($search) && stripos($search, 'id:') === 0) { $query->where('s.update_site_id = ' . (int) substr($search, 3)); } return $query; } /** * Returns an object list * * @param string $query The query * @param int $limitstart Offset * @param int $limit The number of records * * @return array * * @since 3.4 */ protected function _getList($query, $limitstart = 0, $limit = 0) { $ordering = $this->getState('list.ordering'); $search = $this->getState('filter.search'); // Replace slashes so preg_match will work $search = str_replace('/', ' ', $search); $db = $this->getDbo(); if ($ordering == 'name' || (!empty($search) && stripos($search, 'id:') !== 0)) { $db->setQuery($query); $result = $db->loadObjectList(); $this->translate($result); if (!empty($search) && (stripos($search, 'id:') !== 0)) { foreach ($result as $i => $item) { if (!preg_match("/$search/i", $item->name) && !preg_match("/$search/i", $item->update_site_name)) { unset($result[$i]); } } } JArrayHelper::sortObjects($result, $this->getState('list.ordering'), $this->getState('list.direction') == 'desc' ? -1 : 1, true, true); $total = count($result); $this->cache[$this->getStoreId('getTotal')] = $total; if ($total < $limitstart) { $limitstart = 0; $this->setState('list.start', 0); } return array_slice($result, $limitstart, $limit ? $limit : null); } $query->order($db->quoteName($ordering) . ' ' . $this->getState('list.direction')); $result = parent::_getList($query, $limitstart, $limit); $this->translate($result); return $result; } } PKb��\�5f7��'components/com_installer/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_installer * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Installer Controller * * @since 1.5 */ class InstallerController extends JControllerLegacy { /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { require_once JPATH_ADMINISTRATOR . '/components/com_installer/helpers/installer.php'; // Get the document object. $document = JFactory::getDocument(); // Set the default view name and format from the Request. $vName = $this->input->get('view', 'install'); $vFormat = $document->getType(); $lName = $this->input->get('layout', 'default', 'string'); // Get and render the view. if ($view = $this->getView($vName, $vFormat)) { $ftp = JClientHelper::setCredentialsFromRequest('ftp'); $view->ftp = &$ftp; // Get the model for the view. $model = $this->getModel($vName); // Push the model into the view (as default). $view->setModel($model, true); $view->setLayout($lName); // Push document object into the view. $view->document = $document; // Load the submenu. InstallerHelper::addSubmenu($vName); $view->display(); } return $this; } } PKc��\ԝ��mm2components/com_joomlaupdate/controllers/update.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_joomlaupdate * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * The Joomla! update controller for the Update view * * @since 2.5.4 */ class JoomlaupdateControllerUpdate extends JControllerLegacy { /** * Performs the download of the update package * * @return void * * @since 2.5.4 */ public function download() { $options['format'] = '{DATE}\t{TIME}\t{LEVEL}\t{CODE}\t{MESSAGE}'; $options['text_file'] = 'joomla_update.php'; JLog::addLogger($options, JLog::INFO, array('Update', 'databasequery', 'jerror')); $user = JFactory::getUser(); JLog::add(JText::sprintf('COM_JOOMLAUPDATE_UPDATE_LOG_START', $user->id, $user->name, JVERSION), JLog::INFO, 'Update'); $this->_applyCredentials(); $model = $this->getModel('Default'); $file = $model->download(); $message = null; $messageType = null; if ($file) { JFactory::getApplication()->setUserState('com_joomlaupdate.file', $file); $url = 'index.php?option=com_joomlaupdate&task=update.install'; JLog::add(JText::sprintf('COM_JOOMLAUPDATE_UPDATE_LOG_FILE', $file), JLog::INFO, 'Update'); } else { JFactory::getApplication()->setUserState('com_joomlaupdate.file', null); $url = 'index.php?option=com_joomlaupdate'; $message = JText::_('COM_JOOMLAUPDATE_VIEW_UPDATE_DOWNLOADFAILED'); } $this->setRedirect($url, $message, $messageType); } /** * Start the installation of the new Joomla! version * * @return void * * @since 2.5.4 */ public function install() { $options['format'] = '{DATE}\t{TIME}\t{LEVEL}\t{CODE}\t{MESSAGE}'; $options['text_file'] = 'joomla_update.php'; JLog::addLogger($options, JLog::INFO, array('Update', 'databasequery', 'jerror')); JLog::add(JText::_('COM_JOOMLAUPDATE_UPDATE_LOG_INSTALL'), JLog::INFO, 'Update'); $this->_applyCredentials(); $model = $this->getModel('Default'); $file = JFactory::getApplication()->getUserState('com_joomlaupdate.file', null); $model->createRestorationFile($file); $this->display(); } /** * Finalise the upgrade by running the necessary scripts * * @return void * * @since 2.5.4 */ public function finalise() { $options['format'] = '{DATE}\t{TIME}\t{LEVEL}\t{CODE}\t{MESSAGE}'; $options['text_file'] = 'joomla_update.php'; JLog::addLogger($options, JLog::INFO, array('Update', 'databasequery', 'jerror')); JLog::add(JText::_('COM_JOOMLAUPDATE_UPDATE_LOG_FINALISE'), JLog::INFO, 'Update'); $this->_applyCredentials(); $model = $this->getModel('Default'); $model->finaliseUpgrade(); $url = 'index.php?option=com_joomlaupdate&task=update.cleanup'; $this->setRedirect($url); } /** * Clean up after ourselves * * @return void * * @since 2.5.4 */ public function cleanup() { $options['format'] = '{DATE}\t{TIME}\t{LEVEL}\t{CODE}\t{MESSAGE}'; $options['text_file'] = 'joomla_update.php'; JLog::addLogger($options, JLog::INFO, array('Update', 'databasequery', 'jerror')); JLog::add(JText::_('COM_JOOMLAUPDATE_UPDATE_LOG_CLEANUP'), JLog::INFO, 'Update'); $this->_applyCredentials(); $model = $this->getModel('Default'); $model->cleanUp(); $url = 'index.php?option=com_joomlaupdate&layout=complete'; $this->setRedirect($url); JLog::add(JText::sprintf('COM_JOOMLAUPDATE_UPDATE_LOG_COMPLETE', JVERSION), JLog::INFO, 'Update'); } /** * Purges updates. * * @return void * * @since 3.0 */ public function purge() { // Purge updates // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $model = $this->getModel('Default'); $model->purge(); $url = 'index.php?option=com_joomlaupdate'; $this->setRedirect($url, $model->_message); } /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JoomlaupdateControllerUpdate This object to support chaining. * * @since 2.5.4 */ public function display($cachable = false, $urlparams = array()) { // Get the document object. $document = JFactory::getDocument(); // Set the default view name and format from the Request. $vName = $this->input->get('view', 'update'); $vFormat = $document->getType(); $lName = $this->input->get('layout', 'default', 'string'); // Get and render the view. if ($view = $this->getView($vName, $vFormat)) { // Get the model for the view. $model = $this->getModel('Default'); // Push the model into the view (as default). $view->setModel($model, true); $view->setLayout($lName); // Push document object into the view. $view->document = $document; $view->display(); } return $this; } /** * Applies FTP credentials to Joomla! itself, when required * * @return void * * @since 2.5.4 */ protected function _applyCredentials() { if (!JClientHelper::hasCredentials('ftp')) { $user = JFactory::getApplication()->getUserStateFromRequest('com_joomlaupdate.ftp_user', 'ftp_user', null, 'raw'); $pass = JFactory::getApplication()->getUserStateFromRequest('com_joomlaupdate.ftp_pass', 'ftp_pass', null, 'raw'); if ($user != '' && $pass != '') { // Add credentials to the session if (!JClientHelper::setCredentials('ftp', $user, $pass)) { JError::raiseWarning('SOME_ERROR_CODE', JText::_('JLIB_CLIENT_ERROR_HELPER_SETCREDENTIALSFROMREQUEST_FAILED')); } } } } } PKc��\�T ��,components/com_joomlaupdate/joomlaupdate.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_joomlaupdate</name> <author>Joomla! Project</author> <creationDate>February 2012</creationDate> <copyright>(C) 2005 - 2015 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>COM_JOOMLAUPDATE_XML_DESCRIPTION</description> <administration> <files folder="admin"> <filename>config.xml</filename> <filename>controller.php</filename> <filename>joomlaupdate.php</filename> <filename>restore.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_joomlaupdate.ini</language> <language tag="en-GB">language/en-GB.com_joomlaupdate.sys.ini</language> </languages> </administration> <updateservers> <server type="extension" name="Joomla! Update Component Update Site">http://update.joomla.org/core/extensions/com_joomlaupdate.xml</server> </updateservers> </extension> PKc��\�B!JJ,components/com_joomlaupdate/joomlaupdate.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_joomlaupdate * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; if (!JFactory::getUser()->authorise('core.manage', 'com_joomlaupdate')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $controller = JControllerLegacy::getInstance('Joomlaupdate'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKc��\�(��&components/com_joomlaupdate/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="sources" label="COM_JOOMLAUPDATE_CONFIG_SOURCES_LABEL" description="COM_JOOMLAUPDATE_CONFIG_SOURCES_DESC" > <field name="updatesource" type="list" default="default" label="COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_LABEL" description="COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DESC" > <!-- Note: Changed the values lts to default and sts to next with 3.4.0 --> <!-- Eliminated the 'nochange' option with 3.4.0 --> <!-- All invalid/unsupported/obsolete options equated to default in code with 3.4.0 --> <option value="default">COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT</option> <option value="next">COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT</option> <option value="testing">COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_TESTING</option> <option value="custom">COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_CUSTOM</option> </field> <field name="customurl" type="text" default="" length="50" label="COM_JOOMLAUPDATE_CONFIG_CUSTOMURL_LABEL" description="COM_JOOMLAUPDATE_CONFIG_CUSTOMURL_DESC" /> </fieldset> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_joomlaupdate" section="component" /> </fieldset> </config> PKc��\�8u�yy&components/com_joomlaupdate/access.xmlnu�[���<?xml version="1.0" encoding="utf-8" ?> <access component="com_joomlaupdate"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> </section> </access> PKc��\]?<��;components/com_joomlaupdate/views/default/tmpl/complete.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_joomlaupdate * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <fieldset> <legend> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_COMPLETE_HEADING') ?> </legend> <p class="alert alert-success"> <?php echo JText::sprintf('COM_JOOMLAUPDATE_VIEW_COMPLETE_MESSAGE', JVERSION); ?> </p> </fieldset> <form action="<?php echo JRoute::_('index.php?option=com_joomlaupdate'); ?>" method="post" id="adminForm"> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKc��\Qߥ���:components/com_joomlaupdate/views/default/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_joomlaupdate * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $ftpFieldsDisplay = $this->ftp['enabled'] ? '' : 'style = "display: none"'; $params = JComponentHelper::getParams('com_joomlaupdate'); switch ($params->get('updatesource', 'default')) { // "Minor & Patch Release for Current version AND Next Major Release". case 'sts': case 'next': $langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_NEXT'; $updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT'); break; // "Testing" case 'testing': $langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_TESTING'; $updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_TESTING'); break; // "Custom" case 'custom': $langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_CUSTOM'; $updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_CUSTOM'); break; /** * "Minor & Patch Release for Current version (recommended and default)". * The commented "case" below are for documenting where 'default' and legacy options falls * case 'default': * case 'lts': * case 'nochange': */ default: $langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_DEFAULT'; $updateSourceKey = JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT'); } JHtml::_('formbehavior.chosen', 'select'); ?> <form action="index.php" method="post" id="adminForm"> <?php if (is_null($this->updateInfo['object'])) : ?> <fieldset> <legend> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_NOUPDATES'); ?> </legend> <p> <?php echo JText::sprintf($langKey, $updateSourceKey); ?> </p> <p> <?php echo JText::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_NOUPDATESNOTICE', JVERSION); ?> </p> </fieldset> <?php else: ?> <fieldset> <legend> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATEFOUND'); ?> </legend> <p> <?php echo JText::sprintf($langKey, $updateSourceKey); ?> </p> <table class="table table-striped"> <tbody> <tr> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_INSTALLED'); ?> </td> <td> <?php echo $this->updateInfo['installed']; ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_LATEST'); ?> </td> <td> <?php echo $this->updateInfo['latest']; ?> </td> </tr> <tr> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_PACKAGE'); ?> </td> <td> <a href="<?php echo $this->updateInfo['object']->downloadurl->_data; ?>"> <?php echo $this->updateInfo['object']->downloadurl->_data; ?> </a> </td> </tr> <tr> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_INFOURL'); ?> </td> <td> <a href="<?php echo $this->updateInfo['object']->get('infourl')->_data; ?>"> <?php echo $this->updateInfo['object']->get('infourl')->title; ?> </a> </td> </tr> <tr> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_METHOD'); ?> </td> <td> <?php echo $this->methodSelect; ?> </td> </tr> <tr id="row_ftp_hostname" <?php echo $ftpFieldsDisplay; ?>> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_HOSTNAME'); ?> </td> <td> <input type="text" name="ftp_host" value="<?php echo $this->ftp['host']; ?>" /> </td> </tr> <tr id="row_ftp_port" <?php echo $ftpFieldsDisplay; ?>> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_PORT'); ?> </td> <td> <input type="text" name="ftp_port" value="<?php echo $this->ftp['port']; ?>" /> </td> </tr> <tr id="row_ftp_username" <?php echo $ftpFieldsDisplay; ?>> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_USERNAME'); ?> </td> <td> <input type="text" name="ftp_user" value="<?php echo $this->ftp['username']; ?>" /> </td> </tr> <tr id="row_ftp_password" <?php echo $ftpFieldsDisplay; ?>> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_PASSWORD'); ?> </td> <td> <input type="password" name="ftp_pass" value="<?php echo $this->ftp['password']; ?>" /> </td> </tr> <tr id="row_ftp_directory" <?php echo $ftpFieldsDisplay; ?>> <td> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_FTP_DIRECTORY'); ?> </td> <td> <input type="text" name="ftp_root" value="<?php echo $this->ftp['directory']; ?>" /> </td> </tr> </tbody> <tfoot> <tr> <td> </td> <td> <button class="btn btn-primary" type="submit"> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_INSTALLUPDATE'); ?> </button> </td> </tr> </tfoot> </table> </fieldset> <?php endif; ?> <?php echo JHtml::_('form.token'); ?> <input type="hidden" name="task" value="update.download" /> <input type="hidden" name="option" value="com_joomlaupdate" /> </form> <div class="download_message" style="display: none"> <p></p> <p class="nowarning"> <?php echo JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_DOWNLOAD_IN_PROGRESS'); ?> </p> <div class="joomlaupdate_spinner"></div> </div> PKc��\&I�S��7components/com_joomlaupdate/views/default/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_joomlaupdate * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Joomla! Update's Default View * * @since 2.5.4 */ class JoomlaupdateViewDefault extends JViewLegacy { /** * Renders the view * * @param string $tpl Template name * * @return void * * @since 2.5.4 */ public function display($tpl = null) { // Get data from the model. $this->state = $this->get('State'); // Load useful classes. $model = $this->getModel(); $this->loadHelper('select'); // Assign view variables. $ftp = $model->getFTPOptions(); $this->assign('updateInfo', $model->getUpdateInformation()); $this->assign('methodSelect', JoomlaupdateHelperSelect::getMethods($ftp['enabled'])); // Set the toolbar information. JToolbarHelper::title(JText::_('COM_JOOMLAUPDATE_OVERVIEW'), 'arrow-up-2 install'); JToolbarHelper::custom('update.purge', 'purge', 'purge', 'JTOOLBAR_PURGE_CACHE', false); // Add toolbar buttons. $user = JFactory::getUser(); if ($user->authorise('core.admin', 'com_joomlaupdate') || $user->authorise('core.options', 'com_joomlaupdate')) { JToolbarHelper::preferences('com_joomlaupdate'); } JToolBarHelper::divider(); JToolBarHelper::help('JHELP_COMPONENTS_JOOMLA_UPDATE'); // Load mooTools. JHtml::_('behavior.framework', true); // Include jQuery. JHtml::_('jquery.framework'); // Load our Javascript. $document = JFactory::getDocument(); $document->addScript('../media/com_joomlaupdate/default.js'); JHtml::_('stylesheet', 'media/mediamanager.css', array(), true); if (!is_null($this->updateInfo['object'])) { // Show the message if a update is found. JFactory::getApplication()->enqueueMessage(JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATE_NOTICE'), 'notice'); } // Render the view. parent::display($tpl); } } PKc��\g�7 ��9components/com_joomlaupdate/views/update/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_joomlaupdate * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <p class="nowarning"><?php echo JText::_('COM_JOOMLAUPDATE_VIEW_UPDATE_INPROGRESS') ?></p> <div class="joomlaupdate_spinner" ></div> <div id="update-progress"> <div id="extprogress"> <div class="extprogrow"> <?php echo JHtml::_( 'image', 'media/bar.gif', JText::_('COM_JOOMLAUPDATE_VIEW_PROGRESS'), array('class' => 'progress', 'id' => 'progress'), true ); ?> </div> <div class="extprogrow"> <span class="extlabel"><?php echo JText::_('COM_JOOMLAUPDATE_VIEW_UPDATE_PERCENT'); ?></span> <span class="extvalue" id="extpercent"></span> </div> <div class="extprogrow"> <span class="extlabel"><?php echo JText::_('COM_JOOMLAUPDATE_VIEW_UPDATE_BYTESREAD'); ?></span> <span class="extvalue" id="extbytesin"></span> </div> <div class="extprogrow"> <span class="extlabel"><?php echo JText::_('COM_JOOMLAUPDATE_VIEW_UPDATE_BYTESEXTRACTED'); ?></span> <span class="extvalue" id="extbytesout"></span> </div> <div class="extprogrow"> <span class="extlabel"><?php echo JText::_('COM_JOOMLAUPDATE_VIEW_UPDATE_FILESEXTRACTED'); ?></span> <span class="extvalue" id="extfiles"></span> </div> </div> </div> PKc��\�Ԯ�``6components/com_joomlaupdate/views/update/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_joomlaupdate * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Joomla! Update's Update View * * @since 2.5.4 */ class JoomlaupdateViewUpdate extends JViewLegacy { /** * Renders the view. * * @param string $tpl Template name. * * @return void */ public function display($tpl=null) { $password = JFactory::getApplication()->getUserState('com_joomlaupdate.password', null); $filesize = JFactory::getApplication()->getUserState('com_joomlaupdate.filesize', null); $ajaxUrl = JUri::base() . 'components/com_joomlaupdate/restore.php'; $returnUrl = 'index.php?option=com_joomlaupdate&task=update.finalise'; // Set the toolbar information. JToolbarHelper::title(JText::_('COM_JOOMLAUPDATE_OVERVIEW'), 'arrow-up-2 install'); JToolBarHelper::divider(); JToolBarHelper::help('JHELP_COMPONENTS_JOOMLA_UPDATE'); // Add toolbar buttons. $user = JFactory::getUser(); if ($user->authorise('core.admin', 'com_joomlaupdate') || $user->authorise('core.options', 'com_joomlaupdate')) { JToolbarHelper::preferences('com_joomlaupdate'); } // Load mooTools. JHtml::_('behavior.framework', true); // Include jQuery. JHtml::_('jquery.framework'); $updateScript = <<<ENDSCRIPT var joomlaupdate_password = '$password'; var joomlaupdate_totalsize = '$filesize'; var joomlaupdate_ajax_url = '$ajaxUrl'; var joomlaupdate_return_url = '$returnUrl'; ENDSCRIPT; // Load our Javascript. $document = JFactory::getDocument(); $document->addScript('../media/com_joomlaupdate/json2.js'); $document->addScript('../media/com_joomlaupdate/encryption.js'); $document->addScript('../media/com_joomlaupdate/update.js'); JHtml::_('jquery.framework'); JHtml::_('script', 'system/progressbar.js', true, true); JHtml::_('stylesheet', 'media/mediamanager.css', array(), true); $document->addScriptDeclaration($updateScript); // Render the view. parent::display($tpl); } } PKc��\���dd4components/com_joomlaupdate/helpers/joomlaupdate.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_joomlaupdate * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Joomla! update helper. * * @since 2.5.4 */ class JoomlaupdateHelper { /** * Gets a list of the actions that can be performed. * * @return JObject * * @since 2.5.4 * @deprecated 3.2 Use JHelperContent::getActions() instead */ public static function getActions() { // Log usage of deprecated function JLog::add(__METHOD__ . '() is deprecated, use JHelperContent::getActions() with new arguments order instead.', JLog::WARNING, 'deprecated'); // Get list of actions $result = JHelperContent::getActions('com_joomlaupdate'); return $result; } } PKc��\Ե�d��.components/com_joomlaupdate/helpers/select.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_joomlaupdate * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Joomla! update selection list helper. * * @since 2.5.4 */ class JoomlaupdateHelperSelect { /** * Returns an HTML select element with the different extraction modes * * @param string $default The default value of the select element * * @return string * * @since 2.5.4 */ public static function getMethods($default = 'direct') { $options = array(); $options[] = JHtml::_('select.option', 'direct', JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_METHOD_DIRECT')); $options[] = JHtml::_('select.option', 'ftp', JText::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_METHOD_FTP')); return JHtml::_('select.genericlist', $options, 'method', '', 'value', 'text', $default, 'extraction_method'); } } PKc��\��\�"�"0components/com_joomlaupdate/helpers/download.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_joomlaupdate * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Smart download helper. Automatically uses cURL or URL fopen() wrappers to * fetch the package. * * @since 2.5.4 */ class AdmintoolsHelperDownload { /** * Downloads from a URL and saves the result as a local file. * * @param string $url The URL to download from. * @param string $target The file path to download to. * * @return bool True on success * * @since 2.5.4 */ public static function download($url, $target) { jimport('joomla.filesystem.file'); // Make sure the target does not exist. if (JFile::exists($target)) { if (!@unlink($target)) { JFile::delete($target); } } // Try to open the output file for writing. $fp = @fopen($target, 'wb'); if ($fp === false) { // The file can not be opened for writing. Let's try a hack. $empty = ''; if ( JFile::write($target, $empty) ) { if ( self::chmod($target, 511) ) { $fp = @fopen($target, 'wb'); } } } $result = false; if ($fp !== false) { // First try to download directly to file if $fp !== false $adapters = self::getAdapters(); $result = false; while (!empty($adapters) && ($result === false)) { // Run the current download method. $method = 'get' . strtoupper(array_shift($adapters)); $result = self::$method($url, $fp); // Check if we have a download. if ($result === true) { // The download is complete, close the file pointer. @fclose($fp); // If the filesize is not at least 1 byte, we consider it failed. clearstatcache(); $filesize = @filesize($target); if ($filesize <= 0) { $result = false; $fp = @fopen($target, 'wb'); } } } // If we have no download, close the file pointer. if ($result === false) { @fclose($fp); } } if ($result === false) { // Delete the target file if it exists. if (file_exists($target)) { if ( !@unlink($target) ) { JFile::delete($target); } } // Download and write using JFile::write(). $result = JFile::write($target, self::downloadAndReturn($url)); } return $result; } /** * Downloads from a URL and returns the result as a string. * * @param string $url The URL to download from. * * @return mixed Result string on success, false on failure. * * @since 2.5.4 */ public static function downloadAndReturn($url) { $adapters = self::getAdapters(); $result = false; while (!empty($adapters) && ($result === false)) { // Run the current download method $method = 'get' . strtoupper(array_shift($adapters)); $result = self::$method($url, null); } return $result; } /** * Does the server support PHP's cURL extension? * * @return bool True if it is supported * * @since 2.5.4 */ private static function hasCURL() { static $result = null; if (is_null($result)) { $result = function_exists('curl_init'); } return $result; } /** * Downloads the contents of a URL and writes them to disk (if $fp is not null) * or returns them as a string (if $fp is null). * * @param string $url The URL to download from. * @param resource $fp The file pointer to download to. Omit to return the contents. * @param boolean $nofollow Should we follow 301/302/307 redirection HTTP headers? * * @return bool|string False on failure, true on success ($fp not null) or the URL contents (if $fp is null). * * @since 2.5.4 */ private static function &getCURL($url, $fp = null, $nofollow = false) { $ch = curl_init($url); if ( !@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1) && !$nofollow ) { // Safe Mode is enabled. We have to fetch the headers and // parse any redirections present in there. curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_FAILONERROR, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_TIMEOUT, 30); // Get the headers. $data = curl_exec($ch); curl_close($ch); // Init $newURL = $url; // Parse the headers. $lines = explode("\n", $data); foreach ($lines as $line) { if (substr($line, 0, 9) == "Location:") { $newURL = trim(substr($line, 9)); } } if ($url != $newURL) { return self::getCURL($newURL, $fp); } else { return self::getCURL($newURL, $fp, true); } } else { @curl_setopt($ch, CURLOPT_MAXREDIRS, 20); if (function_exists('set_time_limit')) { set_time_limit(0); } } curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_USERAGENT, 'Joomla/' . JVERSION); if (is_resource($fp)) { curl_setopt($ch, CURLOPT_FILE, $fp); } else { curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); } $result = curl_exec($ch); curl_close($ch); return $result; } /** * Does the server support URL fopen() wrappers? * * @return bool * * @since 2.5.4 */ private static function hasFOPEN() { static $result = null; if (is_null($result)) { // If we are not allowed to use ini_get, we assume that URL fopen is // disabled. if (!function_exists('ini_get')) { $result = false; } else { $result = ini_get('allow_url_fopen'); } } return $result; } /** * Download from a URL using URL fopen() wrappers. * * @param string $url The URL to download from. * @param resource $fp The file pointer to download to; leave null to return the d/l file as a string. * * @return bool|string False on failure, true on success ($fp not null) or the URL contents (if $fp is null). * * @since 2.5.4 */ private static function &getFOPEN($url, $fp = null) { $result = false; // Open the URL for reading if (function_exists('stream_context_create')) { $opts = stream_context_get_options(stream_context_get_default()); $opts['http']['user_agent'] = 'Joomla/' . JVERSION; $context = stream_context_create($opts); $ih = @fopen($url, 'r', false, $context); } else { // PHP 4 way (actually, it's just a fallback) if ( function_exists('ini_set') ) { ini_set('user_agent', 'Joomla/' . JVERSION); } $ih = @fopen($url, 'r'); } // If fopen() fails, abort if ( !is_resource($ih) ) { return $result; } // Try to download $bytes = 0; $result = true; $return = ''; while (!feof($ih) && $result) { $contents = fread($ih, 4096); if ($contents === false) { @fclose($ih); $result = false; return $result; } else { $bytes += strlen($contents); if (is_resource($fp)) { $result = @fwrite($fp, $contents); } else { $return .= $contents; unset($contents); } } } @fclose($ih); if (is_resource($fp)) { return $result; } elseif ( $result === true ) { return $return; } else { return $result; } } /** * Detect and return available download "adapters" (not really adapters, as * we don't follow the Adapter pattern, yet).. * * @return array * * @since 2.5.4 */ private static function getAdapters() { // Detect available adapters. $adapters = array(); if (self::hasCURL()) { $adapters[] = 'curl'; } if (self::hasFOPEN()) { $adapters[] = 'fopen'; } return $adapters; } /** * Change the permissions of a file, optionally using FTP. * * @param string $path Absolute path to file. * @param int $mode Permissions, e.g. 0755. * * @return boolean True on success. * * @since 2.5.4 */ private static function chmod($path, $mode) { if (is_string($mode)) { $mode = octdec($mode); if ( ($mode < 0600) || ($mode > 0777) ) { $mode = 0755; } } $ftpOptions = JClientHelper::getCredentials('ftp'); // Check to make sure the path valid and clean $path = JPath::clean($path); if ($ftpOptions['enabled'] == 1) { // Connect the FTP client $ftp = JClientFtp::getInstance( $ftpOptions['host'], $ftpOptions['port'], array(), $ftpOptions['user'], $ftpOptions['pass'] ); } if (@chmod($path, $mode)) { $ret = true; } elseif ($ftpOptions['enabled'] == 1) { // Translate path and delete $path = JPath::clean(str_replace(JPATH_ROOT, $ftpOptions['root'], $path), '/'); // FTP connector throws an error $ret = $ftp->chmod($path, $mode); } else { return false; } return $ret; } } PKc��\"��1F]F]'components/com_joomlaupdate/restore.phpnu�[���<?php /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ define('_AKEEBA_RESTORATION', 1); defined('DS') or define('DS', DIRECTORY_SEPARATOR); // Unarchiver run states define('AK_STATE_NOFILE', 0); // File header not read yet define('AK_STATE_HEADER', 1); // File header read; ready to process data define('AK_STATE_DATA', 2); // Processing file data define('AK_STATE_DATAREAD', 3); // Finished processing file data; ready to post-process define('AK_STATE_POSTPROC', 4); // Post-processing define('AK_STATE_DONE', 5); // Done with post-processing /* Windows system detection */ if (!defined('_AKEEBA_IS_WINDOWS')) { if (function_exists('php_uname')) { define('_AKEEBA_IS_WINDOWS', stristr(php_uname(), 'windows')); } else { define('_AKEEBA_IS_WINDOWS', DIRECTORY_SEPARATOR == '\\'); } } // Get the file's root if (!defined('KSROOTDIR')) { define('KSROOTDIR', dirname(__FILE__)); } if (!defined('KSLANGDIR')) { define('KSLANGDIR', KSROOTDIR); } // Make sure the locale is correct for basename() to work if (function_exists('setlocale')) { @setlocale(LC_ALL, 'en_US.UTF8'); } // fnmatch not available on non-POSIX systems // Thanks to soywiz@php.net for this usefull alternative function [http://gr2.php.net/fnmatch] if (!function_exists('fnmatch')) { function fnmatch($pattern, $string) { return @preg_match( '/^' . strtr(addcslashes($pattern, '/\\.+^$(){}=!<>|'), array('*' => '.*', '?' => '.?')) . '$/i', $string ); } } // Unicode-safe binary data length function if (!function_exists('akstringlen')) { if (function_exists('mb_strlen')) { function akstringlen($string) { return mb_strlen($string, '8bit'); } } else { function akstringlen($string) { return strlen($string); } } } /** * Gets a query parameter from GET or POST data * * @param $key * @param $default */ function getQueryParam($key, $default = null) { $value = $default; if (array_key_exists($key, $_REQUEST)) { $value = $_REQUEST[$key]; } if (get_magic_quotes_gpc() && !is_null($value)) { $value = stripslashes($value); } return $value; } // Debugging function function debugMsg($msg) { if (!defined('KSDEBUG')) { return; } $fp = fopen('debug.txt', 'at'); fwrite($fp, $msg . "\n"); fclose($fp); } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * Akeeba Backup's JSON compatibility layer * * On systems where json_encode and json_decode are not available, Akeeba * Backup will attempt to use PEAR's Services_JSON library to emulate them. * A copy of this library is included in this file and will be used if and * only if it isn't already loaded, e.g. due to PEAR's auto-loading, or a * 3PD extension loading it for its own purposes. */ /** * Converts to and from JSON format. * * JSON (JavaScript Object Notation) is a lightweight data-interchange * format. It is easy for humans to read and write. It is easy for machines * to parse and generate. It is based on a subset of the JavaScript * Programming Language, Standard ECMA-262 3rd Edition - December 1999. * This feature can also be found in Python. JSON is a text format that is * completely language independent but uses conventions that are familiar * to programmers of the C-family of languages, including C, C++, C#, Java, * JavaScript, Perl, TCL, and many others. These properties make JSON an * ideal data-interchange language. * * This package provides a simple encoder and decoder for JSON notation. It * is intended for use with client-side Javascript applications that make * use of HTTPRequest to perform server communication functions - data can * be encoded into JSON notation for use in a client-side javascript, or * decoded from incoming Javascript requests. JSON format is native to * Javascript, and can be directly eval()'ed with no further parsing * overhead * * All strings should be in ASCII or UTF-8 format! * * LICENSE: Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: Redistributions of source code must retain the * above copyright notice, this list of conditions and the following * disclaimer. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with the * distribution. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * @category * @package Services_JSON * @author Michal Migurski <mike-json@teczno.com> * @author Matt Knapp <mdknapp[at]gmail[dot]com> * @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com> * @copyright 2005 Michal Migurski * @version CVS: $Id: restore.php 612 2011-05-19 08:26:26Z nikosdion $ * @license http://www.opensource.org/licenses/bsd-license.php * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 */ if(!defined('JSON_FORCE_OBJECT')) { define('JSON_FORCE_OBJECT', 1); } if(!defined('SERVICES_JSON_SLICE')) { /** * Marker constant for Services_JSON::decode(), used to flag stack state */ define('SERVICES_JSON_SLICE', 1); /** * Marker constant for Services_JSON::decode(), used to flag stack state */ define('SERVICES_JSON_IN_STR', 2); /** * Marker constant for Services_JSON::decode(), used to flag stack state */ define('SERVICES_JSON_IN_ARR', 3); /** * Marker constant for Services_JSON::decode(), used to flag stack state */ define('SERVICES_JSON_IN_OBJ', 4); /** * Marker constant for Services_JSON::decode(), used to flag stack state */ define('SERVICES_JSON_IN_CMT', 5); /** * Behavior switch for Services_JSON::decode() */ define('SERVICES_JSON_LOOSE_TYPE', 16); /** * Behavior switch for Services_JSON::decode() */ define('SERVICES_JSON_SUPPRESS_ERRORS', 32); } /** * Converts to and from JSON format. * * Brief example of use: * * <code> * // create a new instance of Services_JSON * $json = new Services_JSON(); * * // convert a complexe value to JSON notation, and send it to the browser * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4))); * $output = $json->encode($value); * * print($output); * // prints: ["foo","bar",[1,2,"baz"],[3,[4]]] * * // accept incoming POST data, assumed to be in JSON notation * $input = file_get_contents('php://input', 1000000); * $value = $json->decode($input); * </code> */ if(!class_exists('Akeeba_Services_JSON')) { class Akeeba_Services_JSON { /** * constructs a new JSON instance * * @param int $use object behavior flags; combine with boolean-OR * * possible values: * - SERVICES_JSON_LOOSE_TYPE: loose typing. * "{...}" syntax creates associative arrays * instead of objects in decode(). * - SERVICES_JSON_SUPPRESS_ERRORS: error suppression. * Values which can't be encoded (e.g. resources) * appear as NULL instead of throwing errors. * By default, a deeply-nested resource will * bubble up with an error, so all return values * from encode() should be checked with isError() */ function Akeeba_Services_JSON($use = 0) { $this->use = $use; } /** * convert a string from one UTF-16 char to one UTF-8 char * * Normally should be handled by mb_convert_encoding, but * provides a slower PHP-only method for installations * that lack the multibye string extension. * * @param string $utf16 UTF-16 character * @return string UTF-8 character * @access private */ function utf162utf8($utf16) { // oh please oh please oh please oh please oh please if(function_exists('mb_convert_encoding')) { return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16'); } $bytes = (ord($utf16{0}) << 8) | ord($utf16{1}); switch(true) { case ((0x7F & $bytes) == $bytes): // this case should never be reached, because we are in ASCII range // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 return chr(0x7F & $bytes); case (0x07FF & $bytes) == $bytes: // return a 2-byte UTF-8 character // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 return chr(0xC0 | (($bytes >> 6) & 0x1F)) . chr(0x80 | ($bytes & 0x3F)); case (0xFFFF & $bytes) == $bytes: // return a 3-byte UTF-8 character // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 return chr(0xE0 | (($bytes >> 12) & 0x0F)) . chr(0x80 | (($bytes >> 6) & 0x3F)) . chr(0x80 | ($bytes & 0x3F)); } // ignoring UTF-32 for now, sorry return ''; } /** * convert a string from one UTF-8 char to one UTF-16 char * * Normally should be handled by mb_convert_encoding, but * provides a slower PHP-only method for installations * that lack the multibye string extension. * * @param string $utf8 UTF-8 character * @return string UTF-16 character * @access private */ function utf82utf16($utf8) { // oh please oh please oh please oh please oh please if(function_exists('mb_convert_encoding')) { return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'); } switch(strlen($utf8)) { case 1: // this case should never be reached, because we are in ASCII range // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 return $utf8; case 2: // return a UTF-16 character from a 2-byte UTF-8 char // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 return chr(0x07 & (ord($utf8{0}) >> 2)) . chr((0xC0 & (ord($utf8{0}) << 6)) | (0x3F & ord($utf8{1}))); case 3: // return a UTF-16 character from a 3-byte UTF-8 char // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 return chr((0xF0 & (ord($utf8{0}) << 4)) | (0x0F & (ord($utf8{1}) >> 2))) . chr((0xC0 & (ord($utf8{1}) << 6)) | (0x7F & ord($utf8{2}))); } // ignoring UTF-32 for now, sorry return ''; } /** * encodes an arbitrary variable into JSON format * * @param mixed $var any number, boolean, string, array, or object to be encoded. * see argument 1 to Services_JSON() above for array-parsing behavior. * if var is a strng, note that encode() always expects it * to be in ASCII or UTF-8 format! * * @return mixed JSON string representation of input var or an error if a problem occurs * @access public */ function encode($var) { switch (gettype($var)) { case 'boolean': return $var ? 'true' : 'false'; case 'NULL': return 'null'; case 'integer': return (int) $var; case 'double': case 'float': return (float) $var; case 'string': // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT $ascii = ''; $strlen_var = strlen($var); /* * Iterate over every character in the string, * escaping with a slash or encoding to UTF-8 where necessary */ for ($c = 0; $c < $strlen_var; ++$c) { $ord_var_c = ord($var{$c}); switch (true) { case $ord_var_c == 0x08: $ascii .= '\b'; break; case $ord_var_c == 0x09: $ascii .= '\t'; break; case $ord_var_c == 0x0A: $ascii .= '\n'; break; case $ord_var_c == 0x0C: $ascii .= '\f'; break; case $ord_var_c == 0x0D: $ascii .= '\r'; break; case $ord_var_c == 0x22: case $ord_var_c == 0x2F: case $ord_var_c == 0x5C: // double quote, slash, slosh $ascii .= '\\'.$var{$c}; break; case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): // characters U-00000000 - U-0000007F (same as ASCII) $ascii .= $var{$c}; break; case (($ord_var_c & 0xE0) == 0xC0): // characters U-00000080 - U-000007FF, mask 110XXXXX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $char = pack('C*', $ord_var_c, ord($var{$c + 1})); $c += 1; $utf16 = $this->utf82utf16($char); $ascii .= sprintf('\u%04s', bin2hex($utf16)); break; case (($ord_var_c & 0xF0) == 0xE0): // characters U-00000800 - U-0000FFFF, mask 1110XXXX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $char = pack('C*', $ord_var_c, ord($var{$c + 1}), ord($var{$c + 2})); $c += 2; $utf16 = $this->utf82utf16($char); $ascii .= sprintf('\u%04s', bin2hex($utf16)); break; case (($ord_var_c & 0xF8) == 0xF0): // characters U-00010000 - U-001FFFFF, mask 11110XXX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $char = pack('C*', $ord_var_c, ord($var{$c + 1}), ord($var{$c + 2}), ord($var{$c + 3})); $c += 3; $utf16 = $this->utf82utf16($char); $ascii .= sprintf('\u%04s', bin2hex($utf16)); break; case (($ord_var_c & 0xFC) == 0xF8): // characters U-00200000 - U-03FFFFFF, mask 111110XX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $char = pack('C*', $ord_var_c, ord($var{$c + 1}), ord($var{$c + 2}), ord($var{$c + 3}), ord($var{$c + 4})); $c += 4; $utf16 = $this->utf82utf16($char); $ascii .= sprintf('\u%04s', bin2hex($utf16)); break; case (($ord_var_c & 0xFE) == 0xFC): // characters U-04000000 - U-7FFFFFFF, mask 1111110X // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $char = pack('C*', $ord_var_c, ord($var{$c + 1}), ord($var{$c + 2}), ord($var{$c + 3}), ord($var{$c + 4}), ord($var{$c + 5})); $c += 5; $utf16 = $this->utf82utf16($char); $ascii .= sprintf('\u%04s', bin2hex($utf16)); break; } } return '"'.$ascii.'"'; case 'array': /* * As per JSON spec if any array key is not an integer * we must treat the the whole array as an object. We * also try to catch a sparsely populated associative * array with numeric keys here because some JS engines * will create an array with empty indexes up to * max_index which can cause memory issues and because * the keys, which may be relevant, will be remapped * otherwise. * * As per the ECMA and JSON specification an object may * have any string as a property. Unfortunately due to * a hole in the ECMA specification if the key is a * ECMA reserved word or starts with a digit the * parameter is only accessible using ECMAScript's * bracket notation. */ // treat as a JSON object if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { $properties = array_map(array($this, 'name_value'), array_keys($var), array_values($var)); foreach($properties as $property) { if(Akeeba_Services_JSON::isError($property)) { return $property; } } return '{' . join(',', $properties) . '}'; } // treat it like a regular array $elements = array_map(array($this, 'encode'), $var); foreach($elements as $element) { if(Akeeba_Services_JSON::isError($element)) { return $element; } } return '[' . join(',', $elements) . ']'; case 'object': $vars = get_object_vars($var); $properties = array_map(array($this, 'name_value'), array_keys($vars), array_values($vars)); foreach($properties as $property) { if(Akeeba_Services_JSON::isError($property)) { return $property; } } return '{' . join(',', $properties) . '}'; default: return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS) ? 'null' : new Akeeba_Services_JSON_Error(gettype($var)." can not be encoded as JSON string"); } } /** * array-walking function for use in generating JSON-formatted name-value pairs * * @param string $name name of key to use * @param mixed $value reference to an array element to be encoded * * @return string JSON-formatted name-value pair, like '"name":value' * @access private */ function name_value($name, $value) { $encoded_value = $this->encode($value); if(Akeeba_Services_JSON::isError($encoded_value)) { return $encoded_value; } return $this->encode(strval($name)) . ':' . $encoded_value; } /** * reduce a string by removing leading and trailing comments and whitespace * * @param $str string string value to strip of comments and whitespace * * @return string string value stripped of comments and whitespace * @access private */ function reduce_string($str) { $str = preg_replace(array( // eliminate single line comments in '// ...' form '#^\s*//(.+)$#m', // eliminate multi-line comments in '/* ... */' form, at start of string '#^\s*/\*(.+)\*/#Us', // eliminate multi-line comments in '/* ... */' form, at end of string '#/\*(.+)\*/\s*$#Us' ), '', $str); // eliminate extraneous space return trim($str); } /** * decodes a JSON string into appropriate variable * * @param string $str JSON-formatted string * * @return mixed number, boolean, string, array, or object * corresponding to given JSON input string. * See argument 1 to Akeeba_Services_JSON() above for object-output behavior. * Note that decode() always returns strings * in ASCII or UTF-8 format! * @access public */ function decode($str) { $str = $this->reduce_string($str); switch (strtolower($str)) { case 'true': return true; case 'false': return false; case 'null': return null; default: $m = array(); if (is_numeric($str)) { // Lookie-loo, it's a number // This would work on its own, but I'm trying to be // good about returning integers where appropriate: // return (float)$str; // Return float or int, as appropriate return ((float)$str == (integer)$str) ? (integer)$str : (float)$str; } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) { // STRINGS RETURNED IN UTF-8 FORMAT $delim = substr($str, 0, 1); $chrs = substr($str, 1, -1); $utf8 = ''; $strlen_chrs = strlen($chrs); for ($c = 0; $c < $strlen_chrs; ++$c) { $substr_chrs_c_2 = substr($chrs, $c, 2); $ord_chrs_c = ord($chrs{$c}); switch (true) { case $substr_chrs_c_2 == '\b': $utf8 .= chr(0x08); ++$c; break; case $substr_chrs_c_2 == '\t': $utf8 .= chr(0x09); ++$c; break; case $substr_chrs_c_2 == '\n': $utf8 .= chr(0x0A); ++$c; break; case $substr_chrs_c_2 == '\f': $utf8 .= chr(0x0C); ++$c; break; case $substr_chrs_c_2 == '\r': $utf8 .= chr(0x0D); ++$c; break; case $substr_chrs_c_2 == '\\"': case $substr_chrs_c_2 == '\\\'': case $substr_chrs_c_2 == '\\\\': case $substr_chrs_c_2 == '\\/': if (($delim == '"' && $substr_chrs_c_2 != '\\\'') || ($delim == "'" && $substr_chrs_c_2 != '\\"')) { $utf8 .= $chrs{++$c}; } break; case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)): // single, escaped unicode character $utf16 = chr(hexdec(substr($chrs, ($c + 2), 2))) . chr(hexdec(substr($chrs, ($c + 4), 2))); $utf8 .= $this->utf162utf8($utf16); $c += 5; break; case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F): $utf8 .= $chrs{$c}; break; case ($ord_chrs_c & 0xE0) == 0xC0: // characters U-00000080 - U-000007FF, mask 110XXXXX //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $utf8 .= substr($chrs, $c, 2); ++$c; break; case ($ord_chrs_c & 0xF0) == 0xE0: // characters U-00000800 - U-0000FFFF, mask 1110XXXX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $utf8 .= substr($chrs, $c, 3); $c += 2; break; case ($ord_chrs_c & 0xF8) == 0xF0: // characters U-00010000 - U-001FFFFF, mask 11110XXX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $utf8 .= substr($chrs, $c, 4); $c += 3; break; case ($ord_chrs_c & 0xFC) == 0xF8: // characters U-00200000 - U-03FFFFFF, mask 111110XX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $utf8 .= substr($chrs, $c, 5); $c += 4; break; case ($ord_chrs_c & 0xFE) == 0xFC: // characters U-04000000 - U-7FFFFFFF, mask 1111110X // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $utf8 .= substr($chrs, $c, 6); $c += 5; break; } } return $utf8; } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) { // array, or object notation if ($str{0} == '[') { $stk = array(SERVICES_JSON_IN_ARR); $arr = array(); } else { if ($this->use & SERVICES_JSON_LOOSE_TYPE) { $stk = array(SERVICES_JSON_IN_OBJ); $obj = array(); } else { $stk = array(SERVICES_JSON_IN_OBJ); $obj = new stdClass(); } } array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => 0, 'delim' => false)); $chrs = substr($str, 1, -1); $chrs = $this->reduce_string($chrs); if ($chrs == '') { if (reset($stk) == SERVICES_JSON_IN_ARR) { return $arr; } else { return $obj; } } //print("\nparsing {$chrs}\n"); $strlen_chrs = strlen($chrs); for ($c = 0; $c <= $strlen_chrs; ++$c) { $top = end($stk); $substr_chrs_c_2 = substr($chrs, $c, 2); if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) { // found a comma that is not inside a string, array, etc., // OR we've reached the end of the character list $slice = substr($chrs, $top['where'], ($c - $top['where'])); array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false)); //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); if (reset($stk) == SERVICES_JSON_IN_ARR) { // we are in an array, so just push an element onto the stack array_push($arr, $this->decode($slice)); } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) { // we are in an object, so figure // out the property name and set an // element in an associative array, // for now $parts = array(); if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { // "name":value pair $key = $this->decode($parts[1]); $val = $this->decode($parts[2]); if ($this->use & SERVICES_JSON_LOOSE_TYPE) { $obj[$key] = $val; } else { $obj->$key = $val; } } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { // name:value pair, where name is unquoted $key = $parts[1]; $val = $this->decode($parts[2]); if ($this->use & SERVICES_JSON_LOOSE_TYPE) { $obj[$key] = $val; } else { $obj->$key = $val; } } } } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) { // found a quote, and we are not inside a string array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c})); //print("Found start of string at {$c}\n"); } elseif (($chrs{$c} == $top['delim']) && ($top['what'] == SERVICES_JSON_IN_STR) && ((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) { // found a quote, we're in a string, and it's not escaped // we know that it's not escaped becase there is _not_ an // odd number of backslashes at the end of the string so far array_pop($stk); //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n"); } elseif (($chrs{$c} == '[') && in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { // found a left-bracket, and we are in an array, object, or slice array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false)); //print("Found start of array at {$c}\n"); } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) { // found a right-bracket, and we're in an array array_pop($stk); //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); } elseif (($chrs{$c} == '{') && in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { // found a left-brace, and we are in an array, object, or slice array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false)); //print("Found start of object at {$c}\n"); } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) { // found a right-brace, and we're in an object array_pop($stk); //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); } elseif (($substr_chrs_c_2 == '/*') && in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { // found a comment start, and we are in an array, object, or slice array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false)); $c++; //print("Found start of comment at {$c}\n"); } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) { // found a comment end, and we're in one now array_pop($stk); $c++; for ($i = $top['where']; $i <= $c; ++$i) $chrs = substr_replace($chrs, ' ', $i, 1); //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); } } if (reset($stk) == SERVICES_JSON_IN_ARR) { return $arr; } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) { return $obj; } } } } function isError($data, $code = null) { if (class_exists('pear')) { return PEAR::isError($data, $code); } elseif (is_object($data) && (get_class($data) == 'services_json_error' || is_subclass_of($data, 'services_json_error'))) { return true; } return false; } } class Akeeba_Services_JSON_Error { function Akeeba_Services_JSON_Error($message = 'unknown error', $code = null, $mode = null, $options = null, $userinfo = null) { } } } if(!function_exists('json_encode')) { function json_encode($value, $options = 0) { $flags = SERVICES_JSON_LOOSE_TYPE; if( $options & JSON_FORCE_OBJECT ) $flags = 0; $encoder = new Akeeba_Services_JSON($flags); return $encoder->encode($value); } } if(!function_exists('json_decode')) { function json_decode($value, $assoc = false) { $flags = 0; if($assoc) $flags = SERVICES_JSON_LOOSE_TYPE; $decoder = new Akeeba_Services_JSON($flags); return $decoder->decode($value); } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * The base class of Akeeba Engine objects. Allows for error and warnings logging * and propagation. Largely based on the Joomla! 1.5 JObject class. */ abstract class AKAbstractObject { /** @var array An array of errors */ private $_errors = array(); /** @var array The queue size of the $_errors array. Set to 0 for infinite size. */ protected $_errors_queue_size = 0; /** @var array An array of warnings */ private $_warnings = array(); /** @var array The queue size of the $_warnings array. Set to 0 for infinite size. */ protected $_warnings_queue_size = 0; /** * Public constructor, makes sure we are instanciated only by the factory class */ public function __construct() { /* // Assisted Singleton pattern if(function_exists('debug_backtrace')) { $caller=debug_backtrace(); if( ($caller[1]['class'] != 'AKFactory') && ($caller[2]['class'] != 'AKFactory') && ($caller[3]['class'] != 'AKFactory') && ($caller[4]['class'] != 'AKFactory') ) { var_dump(debug_backtrace()); trigger_error("You can't create direct descendants of ".__CLASS__, E_USER_ERROR); } } */ } /** * Get the most recent error message * @param integer $i Optional error index * @return string Error message */ public function getError($i = null) { return $this->getItemFromArray($this->_errors, $i); } /** * Return all errors, if any * @return array Array of error messages */ public function getErrors() { return $this->_errors; } /** * Add an error message * @param string $error Error message */ public function setError($error) { if($this->_errors_queue_size > 0) { if(count($this->_errors) >= $this->_errors_queue_size) { array_shift($this->_errors); } } array_push($this->_errors, $error); } /** * Resets all error messages */ public function resetErrors() { $this->_errors = array(); } /** * Get the most recent warning message * @param integer $i Optional warning index * @return string Error message */ public function getWarning($i = null) { return $this->getItemFromArray($this->_warnings, $i); } /** * Return all warnings, if any * @return array Array of error messages */ public function getWarnings() { return $this->_warnings; } /** * Add an error message * @param string $error Error message */ public function setWarning($warning) { if($this->_warnings_queue_size > 0) { if(count($this->_warnings) >= $this->_warnings_queue_size) { array_shift($this->_warnings); } } array_push($this->_warnings, $warning); } /** * Resets all warning messages */ public function resetWarnings() { $this->_warnings = array(); } /** * Propagates errors and warnings to a foreign object. The foreign object SHOULD * implement the setError() and/or setWarning() methods but DOESN'T HAVE TO be of * AKAbstractObject type. For example, this can even be used to propagate to a * JObject instance in Joomla!. Propagated items will be removed from ourself. * @param object $object The object to propagate errors and warnings to. */ public function propagateToObject(&$object) { // Skip non-objects if(!is_object($object)) return; if( method_exists($object,'setError') ) { if(!empty($this->_errors)) { foreach($this->_errors as $error) { $object->setError($error); } $this->_errors = array(); } } if( method_exists($object,'setWarning') ) { if(!empty($this->_warnings)) { foreach($this->_warnings as $warning) { $object->setWarning($warning); } $this->_warnings = array(); } } } /** * Propagates errors and warnings from a foreign object. Each propagated list is * then cleared on the foreign object, as long as it implements resetErrors() and/or * resetWarnings() methods. * @param object $object The object to propagate errors and warnings from */ public function propagateFromObject(&$object) { if( method_exists($object,'getErrors') ) { $errors = $object->getErrors(); if(!empty($errors)) { foreach($errors as $error) { $this->setError($error); } } if(method_exists($object,'resetErrors')) { $object->resetErrors(); } } if( method_exists($object,'getWarnings') ) { $warnings = $object->getWarnings(); if(!empty($warnings)) { foreach($warnings as $warning) { $this->setWarning($warning); } } if(method_exists($object,'resetWarnings')) { $object->resetWarnings(); } } } /** * Sets the size of the error queue (acts like a LIFO buffer) * @param int $newSize The new queue size. Set to 0 for infinite length. */ protected function setErrorsQueueSize($newSize = 0) { $this->_errors_queue_size = (int)$newSize; } /** * Sets the size of the warnings queue (acts like a LIFO buffer) * @param int $newSize The new queue size. Set to 0 for infinite length. */ protected function setWarningsQueueSize($newSize = 0) { $this->_warnings_queue_size = (int)$newSize; } /** * Returns the last item of a LIFO string message queue, or a specific item * if so specified. * @param array $array An array of strings, holding messages * @param int $i Optional message index * @return mixed The message string, or false if the key doesn't exist */ private function getItemFromArray($array, $i = null) { // Find the item if ( $i === null) { // Default, return the last item $item = end($array); } else if ( ! array_key_exists($i, $array) ) { // If $i has been specified but does not exist, return false return false; } else { $item = $array[$i]; } return $item; } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * The superclass of all Akeeba Kickstart parts. The "parts" are intelligent stateful * classes which perform a single procedure and have preparation, running and * finalization phases. The transition between phases is handled automatically by * this superclass' tick() final public method, which should be the ONLY public API * exposed to the rest of the Akeeba Engine. */ abstract class AKAbstractPart extends AKAbstractObject { /** * Indicates whether this part has finished its initialisation cycle * @var boolean */ protected $isPrepared = false; /** * Indicates whether this part has more work to do (it's in running state) * @var boolean */ protected $isRunning = false; /** * Indicates whether this part has finished its finalization cycle * @var boolean */ protected $isFinished = false; /** * Indicates whether this part has finished its run cycle * @var boolean */ protected $hasRan = false; /** * The name of the engine part (a.k.a. Domain), used in return table * generation. * @var string */ protected $active_domain = ""; /** * The step this engine part is in. Used verbatim in return table and * should be set by the code in the _run() method. * @var string */ protected $active_step = ""; /** * A more detailed description of the step this engine part is in. Used * verbatim in return table and should be set by the code in the _run() * method. * @var string */ protected $active_substep = ""; /** * Any configuration variables, in the form of an array. * @var array */ protected $_parametersArray = array(); /** @var string The database root key */ protected $databaseRoot = array(); /** @var int Last reported warnings's position in array */ private $warnings_pointer = -1; /** @var array An array of observers */ protected $observers = array(); /** * Runs the preparation for this part. Should set _isPrepared * to true */ abstract protected function _prepare(); /** * Runs the finalisation process for this part. Should set * _isFinished to true. */ abstract protected function _finalize(); /** * Runs the main functionality loop for this part. Upon calling, * should set the _isRunning to true. When it finished, should set * the _hasRan to true. If an error is encountered, setError should * be used. */ abstract protected function _run(); /** * Sets the BREAKFLAG, which instructs this engine part that the current step must break immediately, * in fear of timing out. */ protected function setBreakFlag() { AKFactory::set('volatile.breakflag', true); } /** * Sets the engine part's internal state, in an easy to use manner * * @param string $state One of init, prepared, running, postrun, finished, error * @param string $errorMessage The reported error message, should the state be set to error */ protected function setState($state = 'init', $errorMessage='Invalid setState argument') { switch($state) { case 'init': $this->isPrepared = false; $this->isRunning = false; $this->isFinished = false; $this->hasRun = false; break; case 'prepared': $this->isPrepared = true; $this->isRunning = false; $this->isFinished = false; $this->hasRun = false; break; case 'running': $this->isPrepared = true; $this->isRunning = true; $this->isFinished = false; $this->hasRun = false; break; case 'postrun': $this->isPrepared = true; $this->isRunning = false; $this->isFinished = false; $this->hasRun = true; break; case 'finished': $this->isPrepared = true; $this->isRunning = false; $this->isFinished = true; $this->hasRun = false; break; case 'error': default: $this->setError($errorMessage); break; } } /** * The public interface to an engine part. This method takes care for * calling the correct method in order to perform the initialisation - * run - finalisation cycle of operation and return a proper reponse array. * @return array A Reponse Array */ final public function tick() { // Call the right action method, depending on engine part state switch( $this->getState() ) { case "init": $this->_prepare(); break; case "prepared": $this->_run(); break; case "running": $this->_run(); break; case "postrun": $this->_finalize(); break; } // Send a Return Table back to the caller $out = $this->_makeReturnTable(); return $out; } /** * Returns a copy of the class's status array * @return array */ public function getStatusArray() { return $this->_makeReturnTable(); } /** * Sends any kind of setup information to the engine part. Using this, * we avoid passing parameters to the constructor of the class. These * parameters should be passed as an indexed array and should be taken * into account during the preparation process only. This function will * set the error flag if it's called after the engine part is prepared. * * @param array $parametersArray The parameters to be passed to the * engine part. */ final public function setup( $parametersArray ) { if( $this->isPrepared ) { $this->setState('error', "Can't modify configuration after the preparation of " . $this->active_domain); } else { $this->_parametersArray = $parametersArray; if(array_key_exists('root', $parametersArray)) { $this->databaseRoot = $parametersArray['root']; } } } /** * Returns the state of this engine part. * * @return string The state of this engine part. It can be one of * error, init, prepared, running, postrun, finished. */ final public function getState() { if( $this->getError() ) { return "error"; } if( !($this->isPrepared) ) { return "init"; } if( !($this->isFinished) && !($this->isRunning) && !( $this->hasRun ) && ($this->isPrepared) ) { return "prepared"; } if ( !($this->isFinished) && $this->isRunning && !( $this->hasRun ) ) { return "running"; } if ( !($this->isFinished) && !($this->isRunning) && $this->hasRun ) { return "postrun"; } if ( $this->isFinished ) { return "finished"; } } /** * Constructs a Response Array based on the engine part's state. * @return array The Response Array for the current state */ final protected function _makeReturnTable() { // Get a list of warnings $warnings = $this->getWarnings(); // Report only new warnings if there is no warnings queue size if( $this->_warnings_queue_size == 0 ) { if( ($this->warnings_pointer > 0) && ($this->warnings_pointer < (count($warnings)) ) ) { $warnings = array_slice($warnings, $this->warnings_pointer + 1); $this->warnings_pointer += count($warnings); } else { $this->warnings_pointer = count($warnings); } } $out = array( 'HasRun' => (!($this->isFinished)), 'Domain' => $this->active_domain, 'Step' => $this->active_step, 'Substep' => $this->active_substep, 'Error' => $this->getError(), 'Warnings' => $warnings ); return $out; } final protected function setDomain($new_domain) { $this->active_domain = $new_domain; } final public function getDomain() { return $this->active_domain; } final protected function setStep($new_step) { $this->active_step = $new_step; } final public function getStep() { return $this->active_step; } final protected function setSubstep($new_substep) { $this->active_substep = $new_substep; } final public function getSubstep() { return $this->active_substep; } /** * Attaches an observer object * @param AKAbstractPartObserver $obs */ function attach(AKAbstractPartObserver $obs) { $this->observers["$obs"] = $obs; } /** * Dettaches an observer object * @param AKAbstractPartObserver $obs */ function detach(AKAbstractPartObserver $obs) { delete($this->observers["$obs"]); } /** * Notifies observers each time something interesting happened to the part * @param mixed $message The event object */ protected function notify($message) { foreach ($this->observers as $obs) { $obs->update($this, $message); } } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * The base class of unarchiver classes */ abstract class AKAbstractUnarchiver extends AKAbstractPart { /** @var string Archive filename */ protected $filename = null; /** @var array List of the names of all archive parts */ public $archiveList = array(); /** @var int The total size of all archive parts */ public $totalSize = array(); /** @var integer Current archive part number */ protected $currentPartNumber = -1; /** @var integer The offset inside the current part */ protected $currentPartOffset = 0; /** @var bool Should I restore permissions? */ protected $flagRestorePermissions = false; /** @var AKAbstractPostproc Post processing class */ protected $postProcEngine = null; /** @var string Absolute path to prepend to extracted files */ protected $addPath = ''; /** @var array Which files to rename */ public $renameFiles = array(); /** @var array Which directories to rename */ public $renameDirs = array(); /** @var array Which files to skip */ public $skipFiles = array(); /** @var integer Chunk size for processing */ protected $chunkSize = 524288; /** @var resource File pointer to the current archive part file */ protected $fp = null; /** @var int Run state when processing the current archive file */ protected $runState = null; /** @var stdClass File header data, as read by the readFileHeader() method */ protected $fileHeader = null; /** @var int How much of the uncompressed data we've read so far */ protected $dataReadLength = 0; /** @var array Unwriteable files in these directories are always ignored and do not cause errors when not extracted */ protected $ignoreDirectories = array(); /** * Public constructor */ public function __construct() { parent::__construct(); } /** * Wakeup function, called whenever the class is unserialized */ public function __wakeup() { if($this->currentPartNumber >= 0) { $this->fp = @fopen($this->archiveList[$this->currentPartNumber], 'rb'); if( (is_resource($this->fp)) && ($this->currentPartOffset > 0) ) { @fseek($this->fp, $this->currentPartOffset); } } } /** * Sleep function, called whenever the class is serialized */ public function shutdown() { if(is_resource($this->fp)) { $this->currentPartOffset = @ftell($this->fp); @fclose($this->fp); } } /** * Implements the abstract _prepare() method */ final protected function _prepare() { parent::__construct(); if( count($this->_parametersArray) > 0 ) { foreach($this->_parametersArray as $key => $value) { switch($key) { // Archive's absolute filename case 'filename': $this->filename = $value; // Sanity check if (!empty($value)) { $value = strtolower($value); if (strlen($value) > 6) { if ( (substr($value, 0, 7) == 'http://') || (substr($value, 0, 8) == 'https://') || (substr($value, 0, 6) == 'ftp://') || (substr($value, 0, 7) == 'ssh2://') || (substr($value, 0, 6) == 'ssl://') ) { $this->setState('error', 'Invalid archive location'); } } } break; // Should I restore permissions? case 'restore_permissions': $this->flagRestorePermissions = $value; break; // Should I use FTP? case 'post_proc': $this->postProcEngine = AKFactory::getpostProc($value); break; // Path to add in the beginning case 'add_path': $this->addPath = $value; $this->addPath = str_replace('\\','/',$this->addPath); $this->addPath = rtrim($this->addPath,'/'); if(!empty($this->addPath)) $this->addPath .= '/'; break; // Which files to rename (hash array) case 'rename_files': $this->renameFiles = $value; break; // Which files to rename (hash array) case 'rename_dirs': $this->renameDirs = $value; break; // Which files to skip (indexed array) case 'skip_files': $this->skipFiles = $value; break; // Which directories to ignore when we can't write files in them (indexed array) case 'ignoredirectories': $this->ignoreDirectories = $value; break; } } } $this->scanArchives(); $this->readArchiveHeader(); $errMessage = $this->getError(); if(!empty($errMessage)) { $this->setState('error', $errMessage); } else { $this->runState = AK_STATE_NOFILE; $this->setState('prepared'); } } protected function _run() { if($this->getState() == 'postrun') return; $this->setState('running'); $timer = AKFactory::getTimer(); $status = true; while( $status && ($timer->getTimeLeft() > 0) ) { switch( $this->runState ) { case AK_STATE_NOFILE: debugMsg(__CLASS__.'::_run() - Reading file header'); $status = $this->readFileHeader(); if($status) { debugMsg(__CLASS__.'::_run() - Preparing to extract '.$this->fileHeader->realFile); // Send start of file notification $message = new stdClass; $message->type = 'startfile'; $message->content = new stdClass; if( array_key_exists('realfile', get_object_vars($this->fileHeader)) ) { $message->content->realfile = $this->fileHeader->realFile; } else { $message->content->realfile = $this->fileHeader->file; } $message->content->file = $this->fileHeader->file; if( array_key_exists('compressed', get_object_vars($this->fileHeader)) ) { $message->content->compressed = $this->fileHeader->compressed; } else { $message->content->compressed = 0; } $message->content->uncompressed = $this->fileHeader->uncompressed; $this->notify($message); } else { debugMsg(__CLASS__.'::_run() - Could not read file header'); } break; case AK_STATE_HEADER: case AK_STATE_DATA: debugMsg(__CLASS__.'::_run() - Processing file data'); $status = $this->processFileData(); break; case AK_STATE_DATAREAD: case AK_STATE_POSTPROC: debugMsg(__CLASS__.'::_run() - Calling post-processing class'); $this->postProcEngine->timestamp = $this->fileHeader->timestamp; $status = $this->postProcEngine->process(); $this->propagateFromObject( $this->postProcEngine ); $this->runState = AK_STATE_DONE; break; case AK_STATE_DONE: default: if($status) { debugMsg(__CLASS__.'::_run() - Finished extracting file'); // Send end of file notification $message = new stdClass; $message->type = 'endfile'; $message->content = new stdClass; if( array_key_exists('realfile', get_object_vars($this->fileHeader)) ) { $message->content->realfile = $this->fileHeader->realFile; } else { $message->content->realfile = $this->fileHeader->file; } $message->content->file = $this->fileHeader->file; if( array_key_exists('compressed', get_object_vars($this->fileHeader)) ) { $message->content->compressed = $this->fileHeader->compressed; } else { $message->content->compressed = 0; } $message->content->uncompressed = $this->fileHeader->uncompressed; $this->notify($message); } $this->runState = AK_STATE_NOFILE; continue; } } $error = $this->getError(); if( !$status && ($this->runState == AK_STATE_NOFILE) && empty( $error ) ) { debugMsg(__CLASS__.'::_run() - Just finished'); // We just finished $this->setState('postrun'); } elseif( !empty($error) ) { debugMsg(__CLASS__.'::_run() - Halted with an error:'); debugMsg($error); $this->setState( 'error', $error ); } } protected function _finalize() { // Nothing to do $this->setState('finished'); } /** * Returns the base extension of the file, e.g. '.jpa' * @return string */ private function getBaseExtension() { static $baseextension; if(empty($baseextension)) { $basename = basename($this->filename); $lastdot = strrpos($basename,'.'); $baseextension = substr($basename, $lastdot); } return $baseextension; } /** * Scans for archive parts */ private function scanArchives() { if(defined('KSDEBUG')) { @unlink('debug.txt'); } debugMsg('Preparing to scan archives'); $privateArchiveList = array(); // Get the components of the archive filename $dirname = dirname($this->filename); $base_extension = $this->getBaseExtension(); $basename = basename($this->filename, $base_extension); $this->totalSize = 0; // Scan for multiple parts until we don't find any more of them $count = 0; $found = true; $this->archiveList = array(); while($found) { ++$count; $extension = substr($base_extension, 0, 2).sprintf('%02d', $count); $filename = $dirname.DIRECTORY_SEPARATOR.$basename.$extension; $found = file_exists($filename); if($found) { debugMsg('- Found archive '.$filename); // Add yet another part, with a numeric-appended filename $this->archiveList[] = $filename; $filesize = @filesize($filename); $this->totalSize += $filesize; $privateArchiveList[] = array($filename, $filesize); } else { debugMsg('- Found archive '.$this->filename); // Add the last part, with the regular extension $this->archiveList[] = $this->filename; $filename = $this->filename; $filesize = @filesize($filename); $this->totalSize += $filesize; $privateArchiveList[] = array($filename, $filesize); } } debugMsg('Total archive parts: '.$count); $this->currentPartNumber = -1; $this->currentPartOffset = 0; $this->runState = AK_STATE_NOFILE; // Send start of file notification $message = new stdClass; $message->type = 'totalsize'; $message->content = new stdClass; $message->content->totalsize = $this->totalSize; $message->content->filelist = $privateArchiveList; $this->notify($message); } /** * Opens the next part file for reading */ protected function nextFile() { debugMsg('Current part is ' . $this->currentPartNumber . '; opening the next part'); ++$this->currentPartNumber; if($this->currentPartNumber > (count($this->archiveList) - 1)) { $this->setState('postrun'); return false; } if(is_resource($this->fp)) { @fclose($this->fp); } debugMsg('Opening file ' . $this->archiveList[$this->currentPartNumber]); $this->fp = @fopen($this->archiveList[$this->currentPartNumber], 'rb'); if($this->fp === false) { debugMsg('Could not open file - crash imminent'); } fseek($this->fp, 0); $this->currentPartOffset = 0; return true; } /** * Returns true if we have reached the end of file * @param $local bool True to return EOF of the local file, false (default) to return if we have reached the end of the archive set * @return bool True if we have reached End Of File */ protected function isEOF($local = false) { $eof = @feof($this->fp); if(!$eof) { // Border case: right at the part's end (eeeek!!!). For the life of me, I don't understand why // feof() doesn't report true. It expects the fp to be positioned *beyond* the EOF to report // true. Incredible! :( $position = @ftell($this->fp); $filesize = @filesize($this->archiveList[$this->currentPartNumber]); if($filesize <= 0) { // 2Gb or more files on a 32 bit version of PHP tend to get screwed up. Meh. $eof = false; } elseif($position >= $filesize) { $eof = true; } } if($local) { return $eof; } return $eof && ($this->currentPartNumber >= (count($this->archiveList)-1)); } /** * Tries to make a directory user-writable so that we can write a file to it * @param $path string A path to a file */ protected function setCorrectPermissions($path) { static $rootDir = null; if(is_null($rootDir)) { $rootDir = rtrim(AKFactory::get('kickstart.setup.destdir',''),'/\\'); } $directory = rtrim(dirname($path),'/\\'); if($directory != $rootDir) { // Is this an unwritable directory? if(!is_writeable($directory)) { $this->postProcEngine->chmod( $directory, 0755 ); } } $this->postProcEngine->chmod( $path, 0644 ); } /** * Concrete classes are supposed to use this method in order to read the archive's header and * prepare themselves to the point of being ready to extract the first file. */ protected abstract function readArchiveHeader(); /** * Concrete classes must use this method to read the file header * @return bool True if reading the file was successful, false if an error occured or we reached end of archive */ protected abstract function readFileHeader(); /** * Concrete classes must use this method to process file data. It must set $runState to AK_STATE_DATAREAD when * it's finished processing the file data. * @return bool True if processing the file data was successful, false if an error occured */ protected abstract function processFileData(); /** * Reads data from the archive and notifies the observer with the 'reading' message * @param $fp * @param $length */ protected function fread($fp, $length = null) { if(is_numeric($length)) { if($length > 0) { $data = fread($fp, $length); } else { $data = fread($fp, PHP_INT_MAX); } } else { $data = fread($fp, PHP_INT_MAX); } if($data === false) $data = ''; // Send start of file notification $message = new stdClass; $message->type = 'reading'; $message->content = new stdClass; $message->content->length = strlen($data); $this->notify($message); return $data; } /** * Is this file or directory contained in a directory we've decided to ignore * write errors for? This is useful to let the extraction work despite write * errors in the log, logs and tmp directories which MIGHT be used by the system * on some low quality hosts and Plesk-powered hosts. * * @param string $shortFilename The relative path of the file/directory in the package * * @return boolean True if it belongs in an ignored directory */ public function isIgnoredDirectory($shortFilename) { return false; if (substr($shortFilename, -1) == '/') { $check = substr($shortFilename, 0, -1); } else { $check = dirname($shortFilename); } return in_array($check, $this->ignoreDirectories); } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * File post processor engines base class */ abstract class AKAbstractPostproc extends AKAbstractObject { /** @var string The current (real) file path we'll have to process */ protected $filename = null; /** @var int The requested permissions */ protected $perms = 0755; /** @var string The temporary file path we gave to the unarchiver engine */ protected $tempFilename = null; /** @var int The UNIX timestamp of the file's desired modification date */ public $timestamp = 0; /** * Processes the current file, e.g. moves it from temp to final location by FTP */ abstract public function process(); /** * The unarchiver tells us the path to the filename it wants to extract and we give it * a different path instead. * @param string $filename The path to the real file * @param int $perms The permissions we need the file to have * @return string The path to the temporary file */ abstract public function processFilename($filename, $perms = 0755); /** * Recursively creates a directory if it doesn't exist * @param string $dirName The directory to create * @param int $perms The permissions to give to that directory */ abstract public function createDirRecursive( $dirName, $perms ); abstract public function chmod( $file, $perms ); abstract public function unlink( $file ); abstract public function rmdir( $directory ); abstract public function rename( $from, $to ); } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * Descendants of this class can be used in the unarchiver's observer methods (attach, detach and notify) * @author Nicholas * */ abstract class AKAbstractPartObserver { abstract public function update($object, $message); } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * Direct file writer */ class AKPostprocDirect extends AKAbstractPostproc { public function process() { $restorePerms = AKFactory::get('kickstart.setup.restoreperms', false); if($restorePerms) { @chmod($this->filename, $this->perms); } else { if(@is_file($this->filename)) { @chmod($this->filename, 0644); } else { @chmod($this->filename, 0755); } } if($this->timestamp > 0) { @touch($this->filename, $this->timestamp); } return true; } public function processFilename($filename, $perms = 0755) { $this->perms = $perms; $this->filename = $filename; return $filename; } public function createDirRecursive( $dirName, $perms ) { if( AKFactory::get('kickstart.setup.dryrun','0') ) return true; if (@mkdir($dirName, 0755, true)) { @chmod($dirName, 0755); return true; } $root = AKFactory::get('kickstart.setup.destdir'); $root = rtrim(str_replace('\\','/',$root),'/'); $dir = rtrim(str_replace('\\','/',$dirName),'/'); if(strpos($dir, $root) === 0) { $dir = ltrim(substr($dir, strlen($root)), '/'); $root .= '/'; } else { $root = ''; } if(empty($dir)) return true; $dirArray = explode('/', $dir); $path = ''; foreach( $dirArray as $dir ) { $path .= $dir . '/'; $ret = is_dir($root.$path) ? true : @mkdir($root.$path); if( !$ret ) { // Is this a file instead of a directory? if(is_file($root.$path) ) { @unlink($root.$path); $ret = @mkdir($root.$path); } if( !$ret ) { $this->setError( AKText::sprintf('COULDNT_CREATE_DIR',$path) ); return false; } } // Try to set new directory permissions to 0755 @chmod($root.$path, $perms); } return true; } public function chmod( $file, $perms ) { if( AKFactory::get('kickstart.setup.dryrun','0') ) return true; return @chmod( $file, $perms ); } public function unlink( $file ) { return @unlink( $file ); } public function rmdir( $directory ) { return @rmdir( $directory ); } public function rename( $from, $to ) { return @rename($from, $to); } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * FTP file writer */ class AKPostprocFTP extends AKAbstractPostproc { /** @var bool Should I use FTP over implicit SSL? */ public $useSSL = false; /** @var bool use Passive mode? */ public $passive = true; /** @var string FTP host name */ public $host = ''; /** @var int FTP port */ public $port = 21; /** @var string FTP user name */ public $user = ''; /** @var string FTP password */ public $pass = ''; /** @var string FTP initial directory */ public $dir = ''; /** @var resource The FTP handle */ private $handle = null; /** @var string The temporary directory where the data will be stored */ private $tempDir = ''; public function __construct() { parent::__construct(); $this->useSSL = AKFactory::get('kickstart.ftp.ssl', false); $this->passive = AKFactory::get('kickstart.ftp.passive', true); $this->host = AKFactory::get('kickstart.ftp.host', ''); $this->port = AKFactory::get('kickstart.ftp.port', 21); if(trim($this->port) == '') $this->port = 21; $this->user = AKFactory::get('kickstart.ftp.user', ''); $this->pass = AKFactory::get('kickstart.ftp.pass', ''); $this->dir = AKFactory::get('kickstart.ftp.dir', ''); $this->tempDir = AKFactory::get('kickstart.ftp.tempdir', ''); $connected = $this->connect(); if($connected) { if(!empty($this->tempDir)) { $tempDir = rtrim($this->tempDir, '/\\').'/'; $writable = $this->isDirWritable($tempDir); } else { $tempDir = ''; $writable = false; } if(!$writable) { // Default temporary directory is the current root $tempDir = KSROOTDIR; if(empty($tempDir)) { // Oh, we have no directory reported! $tempDir = '.'; } $absoluteDirToHere = $tempDir; $tempDir = rtrim(str_replace('\\','/',$tempDir),'/'); if(!empty($tempDir)) $tempDir .= '/'; $this->tempDir = $tempDir; // Is this directory writable? $writable = $this->isDirWritable($tempDir); } if(!$writable) { // Nope. Let's try creating a temporary directory in the site's root. $tempDir = $absoluteDirToHere.'/kicktemp'; $this->createDirRecursive($tempDir, 0777); // Try making it writable... $this->fixPermissions($tempDir); $writable = $this->isDirWritable($tempDir); } // Was the new directory writable? if(!$writable) { // Let's see if the user has specified one $userdir = AKFactory::get('kickstart.ftp.tempdir', ''); if(!empty($userdir)) { // Is it an absolute or a relative directory? $absolute = false; $absolute = $absolute || ( substr($userdir,0,1) == '/' ); $absolute = $absolute || ( substr($userdir,1,1) == ':' ); $absolute = $absolute || ( substr($userdir,2,1) == ':' ); if(!$absolute) { // Make absolute $tempDir = $absoluteDirToHere.$userdir; } else { // it's already absolute $tempDir = $userdir; } // Does the directory exist? if( is_dir($tempDir) ) { // Yeah. Is it writable? $writable = $this->isDirWritable($tempDir); } } } $this->tempDir = $tempDir; if(!$writable) { // No writable directory found!!! $this->setError(AKText::_('FTP_TEMPDIR_NOT_WRITABLE')); } else { AKFactory::set('kickstart.ftp.tempdir', $tempDir); $this->tempDir = $tempDir; } } } function __wakeup() { $this->connect(); } public function connect() { // Connect to server, using SSL if so required if($this->useSSL) { $this->handle = @ftp_ssl_connect($this->host, $this->port); } else { $this->handle = @ftp_connect($this->host, $this->port); } if($this->handle === false) { $this->setError(AKText::_('WRONG_FTP_HOST')); return false; } // Login if(! @ftp_login($this->handle, $this->user, $this->pass)) { $this->setError(AKText::_('WRONG_FTP_USER')); @ftp_close($this->handle); return false; } // Change to initial directory if(! @ftp_chdir($this->handle, $this->dir)) { $this->setError(AKText::_('WRONG_FTP_PATH1')); @ftp_close($this->handle); return false; } // Enable passive mode if the user requested it if( $this->passive ) { @ftp_pasv($this->handle, true); } else { @ftp_pasv($this->handle, false); } // Try to download ourselves $testFilename = defined('KSSELFNAME') ? KSSELFNAME : basename(__FILE__); $tempHandle = fopen('php://temp', 'r+'); if (@ftp_fget($this->handle, $tempHandle, $testFilename, FTP_ASCII, 0) === false) { $this->setError(AKText::_('WRONG_FTP_PATH2')); @ftp_close($this->handle); fclose($tempHandle); return false; } fclose($tempHandle); return true; } public function process() { if( is_null($this->tempFilename) ) { // If an empty filename is passed, it means that we shouldn't do any post processing, i.e. // the entity was a directory or symlink return true; } $remotePath = dirname($this->filename); $removePath = AKFactory::get('kickstart.setup.destdir',''); if(!empty($removePath)) { $removePath = ltrim($removePath, "/"); $remotePath = ltrim($remotePath, "/"); $left = substr($remotePath, 0, strlen($removePath)); if($left == $removePath) { $remotePath = substr($remotePath, strlen($removePath)); } } $absoluteFSPath = dirname($this->filename); $relativeFTPPath = trim($remotePath, '/'); $absoluteFTPPath = '/'.trim( $this->dir, '/' ).'/'.trim($remotePath, '/'); $onlyFilename = basename($this->filename); $remoteName = $absoluteFTPPath.'/'.$onlyFilename; $ret = @ftp_chdir($this->handle, $absoluteFTPPath); if($ret === false) { $ret = $this->createDirRecursive( $absoluteFSPath, 0755); if($ret === false) { $this->setError(AKText::sprintf('FTP_COULDNT_UPLOAD', $this->filename)); return false; } $ret = @ftp_chdir($this->handle, $absoluteFTPPath); if($ret === false) { $this->setError(AKText::sprintf('FTP_COULDNT_UPLOAD', $this->filename)); return false; } } $ret = @ftp_put($this->handle, $remoteName, $this->tempFilename, FTP_BINARY); if($ret === false) { // If we couldn't create the file, attempt to fix the permissions in the PHP level and retry! $this->fixPermissions($this->filename); $this->unlink($this->filename); $fp = @fopen($this->tempFilename, 'rb'); if($fp !== false) { $ret = @ftp_fput($this->handle, $remoteName, $fp, FTP_BINARY); @fclose($fp); } else { $ret = false; } } @unlink($this->tempFilename); if($ret === false) { $this->setError(AKText::sprintf('FTP_COULDNT_UPLOAD', $this->filename)); return false; } $restorePerms = AKFactory::get('kickstart.setup.restoreperms', false); if($restorePerms) { @ftp_chmod($this->_handle, $this->perms, $remoteName); } else { @ftp_chmod($this->_handle, 0644, $remoteName); } return true; } public function processFilename($filename, $perms = 0755) { // Catch some error conditions... if($this->getError()) { return false; } // If a null filename is passed, it means that we shouldn't do any post processing, i.e. // the entity was a directory or symlink if(is_null($filename)) { $this->filename = null; $this->tempFilename = null; return null; } // Strip absolute filesystem path to website's root $removePath = AKFactory::get('kickstart.setup.destdir',''); if(!empty($removePath)) { $left = substr($filename, 0, strlen($removePath)); if($left == $removePath) { $filename = substr($filename, strlen($removePath)); } } // Trim slash on the left $filename = ltrim($filename, '/'); $this->filename = $filename; $this->tempFilename = tempnam($this->tempDir, 'kickstart-'); $this->perms = $perms; if( empty($this->tempFilename) ) { // Oops! Let's try something different $this->tempFilename = $this->tempDir.'/kickstart-'.time().'.dat'; } return $this->tempFilename; } private function isDirWritable($dir) { $fp = @fopen($dir.'/kickstart.dat', 'wb'); if($fp === false) { return false; } else { @fclose($fp); unlink($dir.'/kickstart.dat'); return true; } } public function createDirRecursive( $dirName, $perms ) { // Strip absolute filesystem path to website's root $removePath = AKFactory::get('kickstart.setup.destdir',''); if(!empty($removePath)) { // UNIXize the paths $removePath = str_replace('\\','/',$removePath); $dirName = str_replace('\\','/',$dirName); // Make sure they both end in a slash $removePath = rtrim($removePath,'/\\').'/'; $dirName = rtrim($dirName,'/\\').'/'; // Process the path removal $left = substr($dirName, 0, strlen($removePath)); if($left == $removePath) { $dirName = substr($dirName, strlen($removePath)); } } if(empty($dirName)) $dirName = ''; // 'cause the substr() above may return FALSE. $check = '/'.trim($this->dir,'/').'/'.trim($dirName, '/'); if($this->is_dir($check)) return true; $alldirs = explode('/', $dirName); $previousDir = '/'.trim($this->dir); foreach($alldirs as $curdir) { $check = $previousDir.'/'.$curdir; if(!$this->is_dir($check)) { // Proactively try to delete a file by the same name @ftp_delete($this->handle, $check); if(@ftp_mkdir($this->handle, $check) === false) { // If we couldn't create the directory, attempt to fix the permissions in the PHP level and retry! $this->fixPermissions($removePath.$check); if(@ftp_mkdir($this->handle, $check) === false) { // Can we fall back to pure PHP mode, sire? if(!@mkdir($check)) { $this->setError(AKText::sprintf('FTP_CANT_CREATE_DIR', $check)); return false; } else { // Since the directory was built by PHP, change its permissions @chmod($check, "0777"); return true; } } } @ftp_chmod($this->handle, $perms, $check); } $previousDir = $check; } return true; } public function close() { @ftp_close($this->handle); } /* * Tries to fix directory/file permissions in the PHP level, so that * the FTP operation doesn't fail. * @param $path string The full path to a directory or file */ private function fixPermissions( $path ) { // Turn off error reporting if(!defined('KSDEBUG')) { $oldErrorReporting = @error_reporting(E_NONE); } // Get UNIX style paths $relPath = str_replace('\\','/',$path); $basePath = rtrim(str_replace('\\','/',KSROOTDIR),'/'); $basePath = rtrim($basePath,'/'); if(!empty($basePath)) $basePath .= '/'; // Remove the leading relative root if( substr($relPath,0,strlen($basePath)) == $basePath ) $relPath = substr($relPath,strlen($basePath)); $dirArray = explode('/', $relPath); $pathBuilt = rtrim($basePath,'/'); foreach( $dirArray as $dir ) { if(empty($dir)) continue; $oldPath = $pathBuilt; $pathBuilt .= '/'.$dir; if(is_dir($oldPath.$dir)) { @chmod($oldPath.$dir, 0777); } else { if(@chmod($oldPath.$dir, 0777) === false) { @unlink($oldPath.$dir); } } } // Restore error reporting if(!defined('KSDEBUG')) { @error_reporting($oldErrorReporting); } } public function chmod( $file, $perms ) { return @ftp_chmod($this->handle, $perms, $file); } private function is_dir( $dir ) { return @ftp_chdir( $this->handle, $dir ); } public function unlink( $file ) { $removePath = AKFactory::get('kickstart.setup.destdir',''); if(!empty($removePath)) { $left = substr($file, 0, strlen($removePath)); if($left == $removePath) { $file = substr($file, strlen($removePath)); } } $check = '/'.trim($this->dir,'/').'/'.trim($file, '/'); return @ftp_delete( $this->handle, $check ); } public function rmdir( $directory ) { $removePath = AKFactory::get('kickstart.setup.destdir',''); if(!empty($removePath)) { $left = substr($directory, 0, strlen($removePath)); if($left == $removePath) { $directory = substr($directory, strlen($removePath)); } } $check = '/'.trim($this->dir,'/').'/'.trim($directory, '/'); return @ftp_rmdir( $this->handle, $check ); } public function rename( $from, $to ) { $originalFrom = $from; $originalTo = $to; $removePath = AKFactory::get('kickstart.setup.destdir',''); if(!empty($removePath)) { $left = substr($from, 0, strlen($removePath)); if($left == $removePath) { $from = substr($from, strlen($removePath)); } } $from = '/'.trim($this->dir,'/').'/'.trim($from, '/'); if(!empty($removePath)) { $left = substr($to, 0, strlen($removePath)); if($left == $removePath) { $to = substr($to, strlen($removePath)); } } $to = '/'.trim($this->dir,'/').'/'.trim($to, '/'); $result = @ftp_rename( $this->handle, $from, $to ); if($result !== true) { return @rename($from, $to); } else { return true; } } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * FTP file writer */ class AKPostprocSFTP extends AKAbstractPostproc { /** @var bool Should I use FTP over implicit SSL? */ public $useSSL = false; /** @var bool use Passive mode? */ public $passive = true; /** @var string FTP host name */ public $host = ''; /** @var int FTP port */ public $port = 21; /** @var string FTP user name */ public $user = ''; /** @var string FTP password */ public $pass = ''; /** @var string FTP initial directory */ public $dir = ''; /** @var resource SFTP resource handle */ private $handle = null; /** @var resource SSH2 connection resource handle */ private $_connection = null; /** @var string Current remote directory, including the remote directory string */ private $_currentdir; /** @var string The temporary directory where the data will be stored */ private $tempDir = ''; public function __construct() { parent::__construct(); $this->host = AKFactory::get('kickstart.ftp.host', ''); $this->port = AKFactory::get('kickstart.ftp.port', 22); if(trim($this->port) == '') $this->port = 22; $this->user = AKFactory::get('kickstart.ftp.user', ''); $this->pass = AKFactory::get('kickstart.ftp.pass', ''); $this->dir = AKFactory::get('kickstart.ftp.dir', ''); $this->tempDir = AKFactory::get('kickstart.ftp.tempdir', ''); $connected = $this->connect(); if($connected) { if(!empty($this->tempDir)) { $tempDir = rtrim($this->tempDir, '/\\').'/'; $writable = $this->isDirWritable($tempDir); } else { $tempDir = ''; $writable = false; } if(!$writable) { // Default temporary directory is the current root $tempDir = KSROOTDIR; if(empty($tempDir)) { // Oh, we have no directory reported! $tempDir = '.'; } $absoluteDirToHere = $tempDir; $tempDir = rtrim(str_replace('\\','/',$tempDir),'/'); if(!empty($tempDir)) $tempDir .= '/'; $this->tempDir = $tempDir; // Is this directory writable? $writable = $this->isDirWritable($tempDir); } if(!$writable) { // Nope. Let's try creating a temporary directory in the site's root. $tempDir = $absoluteDirToHere.'/kicktemp'; $this->createDirRecursive($tempDir, 0777); // Try making it writable... $this->fixPermissions($tempDir); $writable = $this->isDirWritable($tempDir); } // Was the new directory writable? if(!$writable) { // Let's see if the user has specified one $userdir = AKFactory::get('kickstart.ftp.tempdir', ''); if(!empty($userdir)) { // Is it an absolute or a relative directory? $absolute = false; $absolute = $absolute || ( substr($userdir,0,1) == '/' ); $absolute = $absolute || ( substr($userdir,1,1) == ':' ); $absolute = $absolute || ( substr($userdir,2,1) == ':' ); if(!$absolute) { // Make absolute $tempDir = $absoluteDirToHere.$userdir; } else { // it's already absolute $tempDir = $userdir; } // Does the directory exist? if( is_dir($tempDir) ) { // Yeah. Is it writable? $writable = $this->isDirWritable($tempDir); } } } $this->tempDir = $tempDir; if(!$writable) { // No writable directory found!!! $this->setError(AKText::_('SFTP_TEMPDIR_NOT_WRITABLE')); } else { AKFactory::set('kickstart.ftp.tempdir', $tempDir); $this->tempDir = $tempDir; } } } function __wakeup() { $this->connect(); } public function connect() { $this->_connection = false; if(!function_exists('ssh2_connect')) { $this->setError(AKText::_('SFTP_NO_SSH2')); return false; } $this->_connection = @ssh2_connect($this->host, $this->port); if (!@ssh2_auth_password($this->_connection, $this->user, $this->pass)) { $this->setError(AKText::_('SFTP_WRONG_USER')); $this->_connection = false; return false; } $this->handle = @ssh2_sftp($this->_connection); // I must have an absolute directory if(!$this->dir) { $this->setError(AKText::_('SFTP_WRONG_STARTING_DIR')); return false; } // Change to initial directory if(!$this->sftp_chdir('/')) { $this->setError(AKText::_('SFTP_WRONG_STARTING_DIR')); unset($this->_connection); unset($this->handle); return false; } // Try to download ourselves $testFilename = defined('KSSELFNAME') ? KSSELFNAME : basename(__FILE__); $basePath = '/'.trim($this->dir, '/'); if(@fopen("ssh2.sftp://{$this->handle}$basePath/$testFilename",'r+') === false) { $this->setError(AKText::_('SFTP_WRONG_STARTING_DIR')); unset($this->_connection); unset($this->handle); return false; } return true; } public function process() { if( is_null($this->tempFilename) ) { // If an empty filename is passed, it means that we shouldn't do any post processing, i.e. // the entity was a directory or symlink return true; } $remotePath = dirname($this->filename); $absoluteFSPath = dirname($this->filename); $absoluteFTPPath = '/'.trim( $this->dir, '/' ).'/'.trim($remotePath, '/'); $onlyFilename = basename($this->filename); $remoteName = $absoluteFTPPath.'/'.$onlyFilename; $ret = $this->sftp_chdir($absoluteFTPPath); if($ret === false) { $ret = $this->createDirRecursive( $absoluteFSPath, 0755); if($ret === false) { $this->setError(AKText::sprintf('SFTP_COULDNT_UPLOAD', $this->filename)); return false; } $ret = $this->sftp_chdir($absoluteFTPPath); if($ret === false) { $this->setError(AKText::sprintf('SFTP_COULDNT_UPLOAD', $this->filename)); return false; } } // Create the file $ret = $this->write($this->tempFilename, $remoteName); // If I got a -1 it means that I wasn't able to open the file, so I have to stop here if($ret === -1) { $this->setError(AKText::sprintf('SFTP_COULDNT_UPLOAD', $this->filename)); return false; } if($ret === false) { // If we couldn't create the file, attempt to fix the permissions in the PHP level and retry! $this->fixPermissions($this->filename); $this->unlink($this->filename); $ret = $this->write($this->tempFilename, $remoteName); } @unlink($this->tempFilename); if($ret === false) { $this->setError(AKText::sprintf('SFTP_COULDNT_UPLOAD', $this->filename)); return false; } $restorePerms = AKFactory::get('kickstart.setup.restoreperms', false); if($restorePerms) { $this->chmod($remoteName, $this->perms); } else { $this->chmod($remoteName, 0644); } return true; } public function processFilename($filename, $perms = 0755) { // Catch some error conditions... if($this->getError()) { return false; } // If a null filename is passed, it means that we shouldn't do any post processing, i.e. // the entity was a directory or symlink if(is_null($filename)) { $this->filename = null; $this->tempFilename = null; return null; } // Strip absolute filesystem path to website's root $removePath = AKFactory::get('kickstart.setup.destdir',''); if(!empty($removePath)) { $left = substr($filename, 0, strlen($removePath)); if($left == $removePath) { $filename = substr($filename, strlen($removePath)); } } // Trim slash on the left $filename = ltrim($filename, '/'); $this->filename = $filename; $this->tempFilename = tempnam($this->tempDir, 'kickstart-'); $this->perms = $perms; if( empty($this->tempFilename) ) { // Oops! Let's try something different $this->tempFilename = $this->tempDir.'/kickstart-'.time().'.dat'; } return $this->tempFilename; } private function isDirWritable($dir) { if(@fopen("ssh2.sftp://{$this->handle}$dir/kickstart.dat",'wb') === false) { return false; } else { @ssh2_sftp_unlink($this->handle, $dir.'/kickstart.dat'); return true; } } public function createDirRecursive( $dirName, $perms ) { // Strip absolute filesystem path to website's root $removePath = AKFactory::get('kickstart.setup.destdir',''); if(!empty($removePath)) { // UNIXize the paths $removePath = str_replace('\\','/',$removePath); $dirName = str_replace('\\','/',$dirName); // Make sure they both end in a slash $removePath = rtrim($removePath,'/\\').'/'; $dirName = rtrim($dirName,'/\\').'/'; // Process the path removal $left = substr($dirName, 0, strlen($removePath)); if($left == $removePath) { $dirName = substr($dirName, strlen($removePath)); } } if(empty($dirName)) $dirName = ''; // 'cause the substr() above may return FALSE. $check = '/'.trim($this->dir,'/ ').'/'.trim($dirName, '/'); if($this->is_dir($check)) { return true; } $alldirs = explode('/', $dirName); $previousDir = '/'.trim($this->dir, '/ '); foreach($alldirs as $curdir) { if(!$curdir) { continue; } $check = $previousDir.'/'.$curdir; if(!$this->is_dir($check)) { // Proactively try to delete a file by the same name @ssh2_sftp_unlink($this->handle, $check); if(@ssh2_sftp_mkdir($this->handle, $check) === false) { // If we couldn't create the directory, attempt to fix the permissions in the PHP level and retry! $this->fixPermissions($check); if(@ssh2_sftp_mkdir($this->handle, $check) === false) { // Can we fall back to pure PHP mode, sire? if(!@mkdir($check)) { $this->setError(AKText::sprintf('FTP_CANT_CREATE_DIR', $check)); return false; } else { // Since the directory was built by PHP, change its permissions @chmod($check, "0777"); return true; } } } @ssh2_sftp_chmod($this->handle, $check, $perms); } $previousDir = $check; } return true; } public function close() { unset($this->_connection); unset($this->handle); } /* * Tries to fix directory/file permissions in the PHP level, so that * the FTP operation doesn't fail. * @param $path string The full path to a directory or file */ private function fixPermissions( $path ) { // Turn off error reporting if(!defined('KSDEBUG')) { $oldErrorReporting = @error_reporting(E_NONE); } // Get UNIX style paths $relPath = str_replace('\\','/',$path); $basePath = rtrim(str_replace('\\','/',KSROOTDIR),'/'); $basePath = rtrim($basePath,'/'); if(!empty($basePath)) { $basePath .= '/'; } // Remove the leading relative root if( substr($relPath,0,strlen($basePath)) == $basePath ) { $relPath = substr($relPath,strlen($basePath)); } $dirArray = explode('/', $relPath); $pathBuilt = rtrim($basePath,'/'); foreach( $dirArray as $dir ) { if(empty($dir)) { continue; } $oldPath = $pathBuilt; $pathBuilt .= '/'.$dir; if(is_dir($oldPath.'/'.$dir)) { @chmod($oldPath.'/'.$dir, 0777); } else { if(@chmod($oldPath.'/'.$dir, 0777) === false) { @unlink($oldPath.$dir); } } } // Restore error reporting if(!defined('KSDEBUG')) { @error_reporting($oldErrorReporting); } } public function chmod( $file, $perms ) { return @ssh2_sftp_chmod($this->handle, $file, $perms); } private function is_dir( $dir ) { return $this->sftp_chdir($dir); } private function write($local, $remote) { $fp = @fopen("ssh2.sftp://{$this->handle}$remote",'w'); $localfp = @fopen($local,'rb'); if($fp === false) { return -1; } if($localfp === false) { @fclose($fp); return -1; } $res = true; while(!feof($localfp) && ($res !== false)) { $buffer = @fread($localfp, 65567); $res = @fwrite($fp, $buffer); } @fclose($fp); @fclose($localfp); return $res; } public function unlink( $file ) { $check = '/'.trim($this->dir,'/').'/'.trim($file, '/'); return @ssh2_sftp_unlink($this->handle, $check); } public function rmdir( $directory ) { $check = '/'.trim($this->dir,'/').'/'.trim($directory, '/'); return @ssh2_sftp_rmdir( $this->handle, $check); } public function rename( $from, $to ) { $from = '/'.trim($this->dir,'/').'/'.trim($from, '/'); $to = '/'.trim($this->dir,'/').'/'.trim($to, '/'); $result = @ssh2_sftp_rename($this->handle, $from, $to); if($result !== true) { return @rename($from, $to); } else { return true; } } /** * Changes to the requested directory in the remote server. You give only the * path relative to the initial directory and it does all the rest by itself, * including doing nothing if the remote directory is the one we want. * * @param string $dir The (realtive) remote directory * * @return bool True if successful, false otherwise. */ private function sftp_chdir($dir) { // Strip absolute filesystem path to website's root $removePath = AKFactory::get('kickstart.setup.destdir',''); if(!empty($removePath)) { // UNIXize the paths $removePath = str_replace('\\','/',$removePath); $dir = str_replace('\\','/',$dir); // Make sure they both end in a slash $removePath = rtrim($removePath,'/\\').'/'; $dir = rtrim($dir,'/\\').'/'; // Process the path removal $left = substr($dir, 0, strlen($removePath)); if($left == $removePath) { $dir = substr($dir, strlen($removePath)); } } if(empty($dir)) { // Because the substr() above may return FALSE. $dir = ''; } // Calculate "real" (absolute) SFTP path $realdir = substr($this->dir, -1) == '/' ? substr($this->dir, 0, strlen($this->dir) - 1) : $this->dir; $realdir .= '/'.$dir; $realdir = substr($realdir, 0, 1) == '/' ? $realdir : '/'.$realdir; if($this->_currentdir == $realdir) { // Already there, do nothing return true; } $result = @ssh2_sftp_stat($this->handle, $realdir); if($result === false) { return false; } else { // Update the private "current remote directory" variable $this->_currentdir = $realdir; return true; } } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * Hybrid direct / FTP mode file writer */ class AKPostprocHybrid extends AKAbstractPostproc { /** @var bool Should I use the FTP layer? */ public $useFTP = false; /** @var bool Should I use FTP over implicit SSL? */ public $useSSL = false; /** @var bool use Passive mode? */ public $passive = true; /** @var string FTP host name */ public $host = ''; /** @var int FTP port */ public $port = 21; /** @var string FTP user name */ public $user = ''; /** @var string FTP password */ public $pass = ''; /** @var string FTP initial directory */ public $dir = ''; /** @var resource The FTP handle */ private $handle = null; /** @var string The temporary directory where the data will be stored */ private $tempDir = ''; /** @var null The FTP connection handle */ private $_handle = null; /** * Public constructor. Tries to connect to the FTP server. */ public function __construct() { parent::__construct(); $this->useFTP = true; $this->useSSL = AKFactory::get('kickstart.ftp.ssl', false); $this->passive = AKFactory::get('kickstart.ftp.passive', true); $this->host = AKFactory::get('kickstart.ftp.host', ''); $this->port = AKFactory::get('kickstart.ftp.port', 21); $this->user = AKFactory::get('kickstart.ftp.user', ''); $this->pass = AKFactory::get('kickstart.ftp.pass', ''); $this->dir = AKFactory::get('kickstart.ftp.dir', ''); $this->tempDir = AKFactory::get('kickstart.ftp.tempdir', ''); if (trim($this->port) == '') { $this->port = 21; } // If FTP is not configured, skip it altogether if (empty($this->host) || empty($this->user) || empty($this->pass)) { $this->useFTP = false; } // Try to connect to the FTP server $connected = $this->connect(); // If the connection fails, skip FTP altogether if (!$connected) { $this->useFTP = false; } if ($connected) { if (!empty($this->tempDir)) { $tempDir = rtrim($this->tempDir, '/\\') . '/'; $writable = $this->isDirWritable($tempDir); } else { $tempDir = ''; $writable = false; } if (!$writable) { // Default temporary directory is the current root $tempDir = KSROOTDIR; if (empty($tempDir)) { // Oh, we have no directory reported! $tempDir = '.'; } $absoluteDirToHere = $tempDir; $tempDir = rtrim(str_replace('\\', '/', $tempDir), '/'); if (!empty($tempDir)) { $tempDir .= '/'; } $this->tempDir = $tempDir; // Is this directory writable? $writable = $this->isDirWritable($tempDir); } if (!$writable) { // Nope. Let's try creating a temporary directory in the site's root. $tempDir = $absoluteDirToHere . '/kicktemp'; $this->createDirRecursive($tempDir, 0777); // Try making it writable... $this->fixPermissions($tempDir); $writable = $this->isDirWritable($tempDir); } // Was the new directory writable? if (!$writable) { // Let's see if the user has specified one $userdir = AKFactory::get('kickstart.ftp.tempdir', ''); if (!empty($userdir)) { // Is it an absolute or a relative directory? $absolute = false; $absolute = $absolute || (substr($userdir, 0, 1) == '/'); $absolute = $absolute || (substr($userdir, 1, 1) == ':'); $absolute = $absolute || (substr($userdir, 2, 1) == ':'); if (!$absolute) { // Make absolute $tempDir = $absoluteDirToHere . $userdir; } else { // it's already absolute $tempDir = $userdir; } // Does the directory exist? if (is_dir($tempDir)) { // Yeah. Is it writable? $writable = $this->isDirWritable($tempDir); } } } $this->tempDir = $tempDir; if (!$writable) { // No writable directory found!!! $this->setError(AKText::_('FTP_TEMPDIR_NOT_WRITABLE')); } else { AKFactory::set('kickstart.ftp.tempdir', $tempDir); $this->tempDir = $tempDir; } } } /** * Called after unserialisation, tries to reconnect to FTP */ function __wakeup() { if ($this->useFTP) { $this->connect(); } } function __destruct() { if (!$this->useFTP) { @ftp_close($this->handle); } } /** * Tries to connect to the FTP server * * @return bool */ public function connect() { if (!$this->useFTP) { return false; } // Connect to server, using SSL if so required if ($this->useSSL) { $this->handle = @ftp_ssl_connect($this->host, $this->port); } else { $this->handle = @ftp_connect($this->host, $this->port); } if ($this->handle === false) { $this->setError(AKText::_('WRONG_FTP_HOST')); return false; } // Login if (!@ftp_login($this->handle, $this->user, $this->pass)) { $this->setError(AKText::_('WRONG_FTP_USER')); @ftp_close($this->handle); return false; } // Change to initial directory if (!@ftp_chdir($this->handle, $this->dir)) { $this->setError(AKText::_('WRONG_FTP_PATH1')); @ftp_close($this->handle); return false; } // Enable passive mode if the user requested it if ($this->passive) { @ftp_pasv($this->handle, true); } else { @ftp_pasv($this->handle, false); } // Try to download ourselves $testFilename = defined('KSSELFNAME') ? KSSELFNAME : basename(__FILE__); $tempHandle = fopen('php://temp', 'r+'); if (@ftp_fget($this->handle, $tempHandle, $testFilename, FTP_ASCII, 0) === false) { $this->setError(AKText::_('WRONG_FTP_PATH2')); @ftp_close($this->handle); fclose($tempHandle); return false; } fclose($tempHandle); return true; } /** * Post-process an extracted file, using FTP or direct file writes to move it * * @return bool */ public function process() { if (is_null($this->tempFilename)) { // If an empty filename is passed, it means that we shouldn't do any post processing, i.e. // the entity was a directory or symlink return true; } $remotePath = dirname($this->filename); $removePath = AKFactory::get('kickstart.setup.destdir', ''); $root = rtrim($removePath, '/\\'); if (!empty($removePath)) { $removePath = ltrim($removePath, "/"); $remotePath = ltrim($remotePath, "/"); $left = substr($remotePath, 0, strlen($removePath)); if ($left == $removePath) { $remotePath = substr($remotePath, strlen($removePath)); } } $absoluteFSPath = dirname($this->filename); $relativeFTPPath = trim($remotePath, '/'); $absoluteFTPPath = '/' . trim($this->dir, '/') . '/' . trim($remotePath, '/'); $onlyFilename = basename($this->filename); $remoteName = $absoluteFTPPath . '/' . $onlyFilename; // Does the directory exist? if (!is_dir($root . '/' . $absoluteFSPath)) { $ret = $this->createDirRecursive($absoluteFSPath, 0755); if (($ret === false) && ($this->useFTP)) { $ret = @ftp_chdir($this->handle, $absoluteFTPPath); } if ($ret === false) { $this->setError(AKText::sprintf('FTP_COULDNT_UPLOAD', $this->filename)); return false; } } if ($this->useFTP) { $ret = @ftp_chdir($this->handle, $absoluteFTPPath); } // Try copying directly $ret = @copy($this->tempFilename, $root . '/' . $this->filename); if ($ret === false) { $this->fixPermissions($this->filename); $this->unlink($this->filename); $ret = @copy($this->tempFilename, $root . '/' . $this->filename); } if ($this->useFTP && ($ret === false)) { $ret = @ftp_put($this->handle, $remoteName, $this->tempFilename, FTP_BINARY); if ($ret === false) { // If we couldn't create the file, attempt to fix the permissions in the PHP level and retry! $this->fixPermissions($this->filename); $this->unlink($this->filename); $fp = @fopen($this->tempFilename, 'rb'); if ($fp !== false) { $ret = @ftp_fput($this->handle, $remoteName, $fp, FTP_BINARY); @fclose($fp); } else { $ret = false; } } } @unlink($this->tempFilename); if ($ret === false) { $this->setError(AKText::sprintf('FTP_COULDNT_UPLOAD', $this->filename)); return false; } $restorePerms = AKFactory::get('kickstart.setup.restoreperms', false); $perms = $restorePerms ? $this->perms : 0644; $ret = @chmod($root . '/' . $this->filename, $perms); if ($this->useFTP && ($ret === false)) { @ftp_chmod($this->_handle, $perms, $remoteName); } return true; } /** * Create a temporary filename * * @param string $filename The original filename * @param int $perms The file permissions * * @return string */ public function processFilename($filename, $perms = 0755) { // Catch some error conditions... if ($this->getError()) { return false; } // If a null filename is passed, it means that we shouldn't do any post processing, i.e. // the entity was a directory or symlink if (is_null($filename)) { $this->filename = null; $this->tempFilename = null; return null; } // Strip absolute filesystem path to website's root $removePath = AKFactory::get('kickstart.setup.destdir', ''); if (!empty($removePath)) { $left = substr($filename, 0, strlen($removePath)); if ($left == $removePath) { $filename = substr($filename, strlen($removePath)); } } // Trim slash on the left $filename = ltrim($filename, '/'); $this->filename = $filename; $this->tempFilename = tempnam($this->tempDir, 'kickstart-'); $this->perms = $perms; if (empty($this->tempFilename)) { // Oops! Let's try something different $this->tempFilename = $this->tempDir . '/kickstart-' . time() . '.dat'; } return $this->tempFilename; } /** * Is the directory writeable? * * @param string $dir The directory ti check * * @return bool */ private function isDirWritable($dir) { $fp = @fopen($dir . '/kickstart.dat', 'wb'); if ($fp === false) { return false; } @fclose($fp); unlink($dir . '/kickstart.dat'); return true; } /** * Create a directory, recursively * * @param string $dirName The directory to create * @param int $perms The permissions to give to the directory * * @return bool */ public function createDirRecursive($dirName, $perms) { // Strip absolute filesystem path to website's root $removePath = AKFactory::get('kickstart.setup.destdir', ''); if (!empty($removePath)) { // UNIXize the paths $removePath = str_replace('\\', '/', $removePath); $dirName = str_replace('\\', '/', $dirName); // Make sure they both end in a slash $removePath = rtrim($removePath, '/\\') . '/'; $dirName = rtrim($dirName, '/\\') . '/'; // Process the path removal $left = substr($dirName, 0, strlen($removePath)); if ($left == $removePath) { $dirName = substr($dirName, strlen($removePath)); } } // 'cause the substr() above may return FALSE. if (empty($dirName)) { $dirName = ''; } $check = '/' . trim($this->dir, '/') . '/' . trim($dirName, '/'); $checkFS = $removePath . trim($dirName, '/'); if ($this->is_dir($check)) { return true; } $alldirs = explode('/', $dirName); $previousDir = '/' . trim($this->dir); $previousDirFS = rtrim($removePath, '/\\'); foreach ($alldirs as $curdir) { $check = $previousDir . '/' . $curdir; $checkFS = $previousDirFS . '/' . $curdir; if (!is_dir($checkFS) && !$this->is_dir($check)) { // Proactively try to delete a file by the same name if (!@unlink($checkFS) && $this->useFTP) { @ftp_delete($this->handle, $check); } $createdDir = @mkdir($checkFS, 0755); if (!$createdDir && $this->useFTP) { $createdDir = @ftp_mkdir($this->handle, $check); } if ($createdDir === false) { // If we couldn't create the directory, attempt to fix the permissions in the PHP level and retry! $this->fixPermissions($checkFS); $createdDir = @mkdir($checkFS, 0755); if (!$createdDir && $this->useFTP) { $createdDir = @ftp_mkdir($this->handle, $check); } if ($createdDir === false) { $this->setError(AKText::sprintf('FTP_CANT_CREATE_DIR', $check)); return false; } } if (!@chmod($checkFS, $perms) && $this->useFTP) { @ftp_chmod($this->handle, $perms, $check); } } $previousDir = $check; $previousDirFS = $checkFS; } return true; } /** * Closes the FTP connection */ public function close() { if (!$this->useFTP) { @ftp_close($this->handle); } } /** * Tries to fix directory/file permissions in the PHP level, so that * the FTP operation doesn't fail. * * @param $path string The full path to a directory or file */ private function fixPermissions($path) { // Turn off error reporting if (!defined('KSDEBUG')) { $oldErrorReporting = @error_reporting(E_NONE); } // Get UNIX style paths $relPath = str_replace('\\', '/', $path); $basePath = rtrim(str_replace('\\', '/', KSROOTDIR), '/'); $basePath = rtrim($basePath, '/'); if (!empty($basePath)) { $basePath .= '/'; } // Remove the leading relative root if (substr($relPath, 0, strlen($basePath)) == $basePath) { $relPath = substr($relPath, strlen($basePath)); } $dirArray = explode('/', $relPath); $pathBuilt = rtrim($basePath, '/'); foreach ($dirArray as $dir) { if (empty($dir)) { continue; } $oldPath = $pathBuilt; $pathBuilt .= '/' . $dir; if (is_dir($oldPath . $dir)) { @chmod($oldPath . $dir, 0777); } else { if (@chmod($oldPath . $dir, 0777) === false) { @unlink($oldPath . $dir); } } } // Restore error reporting if (!defined('KSDEBUG')) { @error_reporting($oldErrorReporting); } } public function chmod($file, $perms) { if (AKFactory::get('kickstart.setup.dryrun', '0')) { return true; } $ret = @chmod($file, $perms); if (!$ret && $this->useFTP) { // Strip absolute filesystem path to website's root $removePath = AKFactory::get('kickstart.setup.destdir', ''); if (!empty($removePath)) { $left = substr($file, 0, strlen($removePath)); if ($left == $removePath) { $file = substr($file, strlen($removePath)); } } // Trim slash on the left $file = ltrim($file, '/'); $ret = @ftp_chmod($this->handle, $perms, $file); } return $ret; } private function is_dir($dir) { if ($this->useFTP) { return @ftp_chdir($this->handle, $dir); } return false; } public function unlink($file) { $ret = @unlink($file); if (!$ret && $this->useFTP) { $removePath = AKFactory::get('kickstart.setup.destdir', ''); if (!empty($removePath)) { $left = substr($file, 0, strlen($removePath)); if ($left == $removePath) { $file = substr($file, strlen($removePath)); } } $check = '/' . trim($this->dir, '/') . '/' . trim($file, '/'); $ret = @ftp_delete($this->handle, $check); } return $ret; } public function rmdir($directory) { $ret = @rmdir($directory); if (!$ret && $this->useFTP) { $removePath = AKFactory::get('kickstart.setup.destdir', ''); if (!empty($removePath)) { $left = substr($directory, 0, strlen($removePath)); if ($left == $removePath) { $directory = substr($directory, strlen($removePath)); } } $check = '/' . trim($this->dir, '/') . '/' . trim($directory, '/'); $ret = @ftp_rmdir($this->handle, $check); } return $ret; } public function rename($from, $to) { $ret = @rename($from, $to); if (!$ret && $this->useFTP) { $originalFrom = $from; $originalTo = $to; $removePath = AKFactory::get('kickstart.setup.destdir', ''); if (!empty($removePath)) { $left = substr($from, 0, strlen($removePath)); if ($left == $removePath) { $from = substr($from, strlen($removePath)); } } $from = '/' . trim($this->dir, '/') . '/' . trim($from, '/'); if (!empty($removePath)) { $left = substr($to, 0, strlen($removePath)); if ($left == $removePath) { $to = substr($to, strlen($removePath)); } } $to = '/' . trim($this->dir, '/') . '/' . trim($to, '/'); $ret = @ftp_rename($this->handle, $from, $to); } return $ret; } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * JPA archive extraction class */ class AKUnarchiverJPA extends AKAbstractUnarchiver { protected $archiveHeaderData = array(); protected function readArchiveHeader() { debugMsg('Preparing to read archive header'); // Initialize header data array $this->archiveHeaderData = new stdClass(); // Open the first part debugMsg('Opening the first part'); $this->nextFile(); // Fail for unreadable files if( $this->fp === false ) { debugMsg('Could not open the first part'); return false; } // Read the signature $sig = fread( $this->fp, 3 ); if ($sig != 'JPA') { // Not a JPA file debugMsg('Invalid archive signature'); $this->setError( AKText::_('ERR_NOT_A_JPA_FILE') ); return false; } // Read and parse header length $header_length_array = unpack( 'v', fread( $this->fp, 2 ) ); $header_length = $header_length_array[1]; // Read and parse the known portion of header data (14 bytes) $bin_data = fread($this->fp, 14); $header_data = unpack('Cmajor/Cminor/Vcount/Vuncsize/Vcsize', $bin_data); // Load any remaining header data (forward compatibility) $rest_length = $header_length - 19; if( $rest_length > 0 ) $junk = fread($this->fp, $rest_length); else $junk = ''; // Temporary array with all the data we read $temp = array( 'signature' => $sig, 'length' => $header_length, 'major' => $header_data['major'], 'minor' => $header_data['minor'], 'filecount' => $header_data['count'], 'uncompressedsize' => $header_data['uncsize'], 'compressedsize' => $header_data['csize'], 'unknowndata' => $junk ); // Array-to-object conversion foreach($temp as $key => $value) { $this->archiveHeaderData->{$key} = $value; } debugMsg('Header data:'); debugMsg('Length : '.$header_length); debugMsg('Major : '.$header_data['major']); debugMsg('Minor : '.$header_data['minor']); debugMsg('File count : '.$header_data['count']); debugMsg('Uncompressed size : '.$header_data['uncsize']); debugMsg('Compressed size : '.$header_data['csize']); $this->currentPartOffset = @ftell($this->fp); $this->dataReadLength = 0; return true; } /** * Concrete classes must use this method to read the file header * @return bool True if reading the file was successful, false if an error occured or we reached end of archive */ protected function readFileHeader() { // If the current part is over, proceed to the next part please if( $this->isEOF(true) ) { debugMsg('Archive part EOF; moving to next file'); $this->nextFile(); } debugMsg('Reading file signature'); // Get and decode Entity Description Block $signature = fread($this->fp, 3); $this->fileHeader = new stdClass(); $this->fileHeader->timestamp = 0; // Check signature if( $signature != 'JPF' ) { if($this->isEOF(true)) { // This file is finished; make sure it's the last one $this->nextFile(); if(!$this->isEOF(false)) { debugMsg('Invalid file signature before end of archive encountered'); $this->setError(AKText::sprintf('INVALID_FILE_HEADER', $this->currentPartNumber, $this->currentPartOffset)); return false; } // We're just finished return false; } else { $screwed = true; if(AKFactory::get('kickstart.setup.ignoreerrors', false)) { debugMsg('Invalid file block signature; launching heuristic file block signature scanner'); $screwed = !$this->heuristicFileHeaderLocator(); if(!$screwed) { $signature = 'JPF'; } else { debugMsg('Heuristics failed. Brace yourself for the imminent crash.'); } } if($screwed) { debugMsg('Invalid file block signature'); // This is not a file block! The archive is corrupt. $this->setError(AKText::sprintf('INVALID_FILE_HEADER', $this->currentPartNumber, $this->currentPartOffset)); return false; } } } // This a JPA Entity Block. Process the header. $isBannedFile = false; // Read length of EDB and of the Entity Path Data $length_array = unpack('vblocksize/vpathsize', fread($this->fp, 4)); // Read the path data if($length_array['pathsize'] > 0) { $file = fread( $this->fp, $length_array['pathsize'] ); } else { $file = ''; } // Handle file renaming $isRenamed = false; if(is_array($this->renameFiles) && (count($this->renameFiles) > 0) ) { if(array_key_exists($file, $this->renameFiles)) { $file = $this->renameFiles[$file]; $isRenamed = true; } } // Handle directory renaming $isDirRenamed = false; if(is_array($this->renameDirs) && (count($this->renameDirs) > 0)) { if(array_key_exists(dirname($file), $this->renameDirs)) { $file = rtrim($this->renameDirs[dirname($file)],'/').'/'.basename($file); $isRenamed = true; $isDirRenamed = true; } } // Read and parse the known data portion $bin_data = fread( $this->fp, 14 ); $header_data = unpack('Ctype/Ccompression/Vcompsize/Vuncompsize/Vperms', $bin_data); // Read any unknown data $restBytes = $length_array['blocksize'] - (21 + $length_array['pathsize']); if( $restBytes > 0 ) { // Start reading the extra fields while($restBytes >= 4) { $extra_header_data = fread($this->fp, 4); $extra_header = unpack('vsignature/vlength', $extra_header_data); $restBytes -= 4; $extra_header['length'] -= 4; switch($extra_header['signature']) { case 256: // File modified timestamp if($extra_header['length'] > 0) { $bindata = fread($this->fp, $extra_header['length']); $restBytes -= $extra_header['length']; $timestamps = unpack('Vmodified', substr($bindata,0,4)); $filectime = $timestamps['modified']; $this->fileHeader->timestamp = $filectime; } break; default: // Unknown field if($extra_header['length']>0) { $junk = fread($this->fp, $extra_header['length']); $restBytes -= $extra_header['length']; } break; } } if($restBytes > 0) $junk = fread($this->fp, $restBytes); } $compressionType = $header_data['compression']; // Populate the return array $this->fileHeader->file = $file; $this->fileHeader->compressed = $header_data['compsize']; $this->fileHeader->uncompressed = $header_data['uncompsize']; switch($header_data['type']) { case 0: $this->fileHeader->type = 'dir'; break; case 1: $this->fileHeader->type = 'file'; break; case 2: $this->fileHeader->type = 'link'; break; } switch( $compressionType ) { case 0: $this->fileHeader->compression = 'none'; break; case 1: $this->fileHeader->compression = 'gzip'; break; case 2: $this->fileHeader->compression = 'bzip2'; break; } $this->fileHeader->permissions = $header_data['perms']; // Find hard-coded banned files if( (basename($this->fileHeader->file) == ".") || (basename($this->fileHeader->file) == "..") ) { $isBannedFile = true; } // Also try to find banned files passed in class configuration if((count($this->skipFiles) > 0) && (!$isRenamed) ) { if(in_array($this->fileHeader->file, $this->skipFiles)) { $isBannedFile = true; } } // If we have a banned file, let's skip it if($isBannedFile) { debugMsg('Skipping file '.$this->fileHeader->file); // Advance the file pointer, skipping exactly the size of the compressed data $seekleft = $this->fileHeader->compressed; while($seekleft > 0) { // Ensure that we can seek past archive part boundaries $curSize = @filesize($this->archiveList[$this->currentPartNumber]); $curPos = @ftell($this->fp); $canSeek = $curSize - $curPos; if($canSeek > $seekleft) $canSeek = $seekleft; @fseek( $this->fp, $canSeek, SEEK_CUR ); $seekleft -= $canSeek; if($seekleft) $this->nextFile(); } $this->currentPartOffset = @ftell($this->fp); $this->runState = AK_STATE_DONE; return true; } // Last chance to prepend a path to the filename if(!empty($this->addPath) && !$isDirRenamed) { $this->fileHeader->file = $this->addPath.$this->fileHeader->file; } // Get the translated path name $restorePerms = AKFactory::get('kickstart.setup.restoreperms', false); if($this->fileHeader->type == 'file') { // Regular file; ask the postproc engine to process its filename if($restorePerms) { $this->fileHeader->realFile = $this->postProcEngine->processFilename( $this->fileHeader->file, $this->fileHeader->permissions ); } else { $this->fileHeader->realFile = $this->postProcEngine->processFilename( $this->fileHeader->file ); } } elseif($this->fileHeader->type == 'dir') { $dir = $this->fileHeader->file; // Directory; just create it if($restorePerms) { $this->postProcEngine->createDirRecursive( $this->fileHeader->file, $this->fileHeader->permissions ); } else { $this->postProcEngine->createDirRecursive( $this->fileHeader->file, 0755 ); } $this->postProcEngine->processFilename(null); } else { // Symlink; do not post-process $this->postProcEngine->processFilename(null); } $this->createDirectory(); // Header is read $this->runState = AK_STATE_HEADER; $this->dataReadLength = 0; return true; } /** * Concrete classes must use this method to process file data. It must set $runState to AK_STATE_DATAREAD when * it's finished processing the file data. * @return bool True if processing the file data was successful, false if an error occured */ protected function processFileData() { switch( $this->fileHeader->type ) { case 'dir': return $this->processTypeDir(); break; case 'link': return $this->processTypeLink(); break; case 'file': switch($this->fileHeader->compression) { case 'none': return $this->processTypeFileUncompressed(); break; case 'gzip': case 'bzip2': return $this->processTypeFileCompressedSimple(); break; } break; default: debugMsg('Unknown file type '.$this->fileHeader->type); break; } } private function processTypeFileUncompressed() { // Uncompressed files are being processed in small chunks, to avoid timeouts if( ($this->dataReadLength == 0) && !AKFactory::get('kickstart.setup.dryrun','0') ) { // Before processing file data, ensure permissions are adequate $this->setCorrectPermissions( $this->fileHeader->file ); } // Open the output file if( !AKFactory::get('kickstart.setup.dryrun','0') ) { $ignore = AKFactory::get('kickstart.setup.ignoreerrors', false) || $this->isIgnoredDirectory($this->fileHeader->file); if ($this->dataReadLength == 0) { $outfp = @fopen( $this->fileHeader->realFile, 'wb' ); } else { $outfp = @fopen( $this->fileHeader->realFile, 'ab' ); } // Can we write to the file? if( ($outfp === false) && (!$ignore) ) { // An error occured debugMsg('Could not write to output file'); $this->setError( AKText::sprintf('COULDNT_WRITE_FILE', $this->fileHeader->realFile) ); return false; } } // Does the file have any data, at all? if( $this->fileHeader->compressed == 0 ) { // No file data! if( !AKFactory::get('kickstart.setup.dryrun','0') && is_resource($outfp) ) @fclose($outfp); $this->runState = AK_STATE_DATAREAD; return true; } // Reference to the global timer $timer = AKFactory::getTimer(); $toReadBytes = 0; $leftBytes = $this->fileHeader->compressed - $this->dataReadLength; // Loop while there's data to read and enough time to do it while( ($leftBytes > 0) && ($timer->getTimeLeft() > 0) ) { $toReadBytes = ($leftBytes > $this->chunkSize) ? $this->chunkSize : $leftBytes; $data = $this->fread( $this->fp, $toReadBytes ); $reallyReadBytes = akstringlen($data); $leftBytes -= $reallyReadBytes; $this->dataReadLength += $reallyReadBytes; if($reallyReadBytes < $toReadBytes) { // We read less than requested! Why? Did we hit local EOF? if( $this->isEOF(true) && !$this->isEOF(false) ) { // Yeap. Let's go to the next file $this->nextFile(); } else { // Nope. The archive is corrupt debugMsg('Not enough data in file. The archive is truncated or corrupt.'); $this->setError( AKText::_('ERR_CORRUPT_ARCHIVE') ); return false; } } if( !AKFactory::get('kickstart.setup.dryrun','0') ) if(is_resource($outfp)) @fwrite( $outfp, $data ); } // Close the file pointer if( !AKFactory::get('kickstart.setup.dryrun','0') ) if(is_resource($outfp)) @fclose($outfp); // Was this a pre-timeout bail out? if( $leftBytes > 0 ) { $this->runState = AK_STATE_DATA; } else { // Oh! We just finished! $this->runState = AK_STATE_DATAREAD; $this->dataReadLength = 0; } return true; } private function processTypeFileCompressedSimple() { if( !AKFactory::get('kickstart.setup.dryrun','0') ) { // Before processing file data, ensure permissions are adequate $this->setCorrectPermissions( $this->fileHeader->file ); // Open the output file $outfp = @fopen( $this->fileHeader->realFile, 'wb' ); // Can we write to the file? $ignore = AKFactory::get('kickstart.setup.ignoreerrors', false) || $this->isIgnoredDirectory($this->fileHeader->file); if( ($outfp === false) && (!$ignore) ) { // An error occured debugMsg('Could not write to output file'); $this->setError( AKText::sprintf('COULDNT_WRITE_FILE', $this->fileHeader->realFile) ); return false; } } // Does the file have any data, at all? if( $this->fileHeader->compressed == 0 ) { // No file data! if( !AKFactory::get('kickstart.setup.dryrun','0') ) if(is_resource($outfp)) @fclose($outfp); $this->runState = AK_STATE_DATAREAD; return true; } // Simple compressed files are processed as a whole; we can't do chunk processing $zipData = $this->fread( $this->fp, $this->fileHeader->compressed ); while( akstringlen($zipData) < $this->fileHeader->compressed ) { // End of local file before reading all data, but have more archive parts? if($this->isEOF(true) && !$this->isEOF(false)) { // Yeap. Read from the next file $this->nextFile(); $bytes_left = $this->fileHeader->compressed - akstringlen($zipData); $zipData .= $this->fread( $this->fp, $bytes_left ); } else { debugMsg('End of local file before reading all data with no more parts left. The archive is corrupt or truncated.'); $this->setError( AKText::_('ERR_CORRUPT_ARCHIVE') ); return false; } } if($this->fileHeader->compression == 'gzip') { $unzipData = gzinflate( $zipData ); } elseif($this->fileHeader->compression == 'bzip2') { $unzipData = bzdecompress( $zipData ); } unset($zipData); // Write to the file. if( !AKFactory::get('kickstart.setup.dryrun','0') && is_resource($outfp) ) { @fwrite( $outfp, $unzipData, $this->fileHeader->uncompressed ); @fclose( $outfp ); } unset($unzipData); $this->runState = AK_STATE_DATAREAD; return true; } /** * Process the file data of a link entry * @return bool */ private function processTypeLink() { $readBytes = 0; $toReadBytes = 0; $leftBytes = $this->fileHeader->compressed; $data = ''; while( $leftBytes > 0) { $toReadBytes = ($leftBytes > $this->chunkSize) ? $this->chunkSize : $leftBytes; $mydata = $this->fread( $this->fp, $toReadBytes ); $reallyReadBytes = akstringlen($mydata); $data .= $mydata; $leftBytes -= $reallyReadBytes; if($reallyReadBytes < $toReadBytes) { // We read less than requested! Why? Did we hit local EOF? if( $this->isEOF(true) && !$this->isEOF(false) ) { // Yeap. Let's go to the next file $this->nextFile(); } else { debugMsg('End of local file before reading all data with no more parts left. The archive is corrupt or truncated.'); // Nope. The archive is corrupt $this->setError( AKText::_('ERR_CORRUPT_ARCHIVE') ); return false; } } } // Try to remove an existing file or directory by the same name if(file_exists($this->fileHeader->realFile)) { @unlink($this->fileHeader->realFile); @rmdir($this->fileHeader->realFile); } // Remove any trailing slash if(substr($this->fileHeader->realFile, -1) == '/') $this->fileHeader->realFile = substr($this->fileHeader->realFile, 0, -1); // Create the symlink - only possible within PHP context. There's no support built in the FTP protocol, so no postproc use is possible here :( if( !AKFactory::get('kickstart.setup.dryrun','0') ) @symlink($data, $this->fileHeader->realFile); $this->runState = AK_STATE_DATAREAD; return true; // No matter if the link was created! } /** * Process the file data of a directory entry * @return bool */ private function processTypeDir() { // Directory entries in the JPA do not have file data, therefore we're done processing the entry $this->runState = AK_STATE_DATAREAD; return true; } /** * Creates the directory this file points to */ protected function createDirectory() { if( AKFactory::get('kickstart.setup.dryrun','0') ) return true; // Do we need to create a directory? if(empty($this->fileHeader->realFile)) $this->fileHeader->realFile = $this->fileHeader->file; $lastSlash = strrpos($this->fileHeader->realFile, '/'); $dirName = substr( $this->fileHeader->realFile, 0, $lastSlash); $perms = $this->flagRestorePermissions ? $this->fileHeader->permissions : 0755; $ignore = AKFactory::get('kickstart.setup.ignoreerrors', false) || $this->isIgnoredDirectory($dirName); if( ($this->postProcEngine->createDirRecursive($dirName, $perms) == false) && (!$ignore) ) { $this->setError( AKText::sprintf('COULDNT_CREATE_DIR', $dirName) ); return false; } else { return true; } } protected function heuristicFileHeaderLocator() { $ret = false; $fullEOF = false; while(!$ret && !$fullEOF) { $this->currentPartOffset = @ftell($this->fp); if($this->isEOF(true)) { $this->nextFile(); } if($this->isEOF(false)) { $fullEOF = true; continue; } // Read 512Kb $chunk = fread($this->fp, 524288); $size_read = mb_strlen($chunk,'8bit'); //$pos = strpos($chunk, 'JPF'); $pos = mb_strpos($chunk, 'JPF', 0, '8bit'); if($pos !== false) { // We found it! $this->currentPartOffset += $pos + 3; @fseek($this->fp, $this->currentPartOffset, SEEK_SET); $ret = true; } else { // Not yet found :( $this->currentPartOffset = @ftell($this->fp); } } return $ret; } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * ZIP archive extraction class * * Since the file data portion of ZIP and JPA are similarly structured (it's empty for dirs, * linked node name for symlinks, dumped binary data for no compressions and dumped gzipped * binary data for gzip compression) we just have to subclass AKUnarchiverJPA and change the * header reading bits. Reusable code ;) */ class AKUnarchiverZIP extends AKUnarchiverJPA { var $expectDataDescriptor = false; protected function readArchiveHeader() { debugMsg('Preparing to read archive header'); // Initialize header data array $this->archiveHeaderData = new stdClass(); // Open the first part debugMsg('Opening the first part'); $this->nextFile(); // Fail for unreadable files if( $this->fp === false ) { debugMsg('The first part is not readable'); return false; } // Read a possible multipart signature $sigBinary = fread( $this->fp, 4 ); $headerData = unpack('Vsig', $sigBinary); // Roll back if it's not a multipart archive if( $headerData['sig'] == 0x04034b50 ) { debugMsg('The archive is not multipart'); fseek($this->fp, -4, SEEK_CUR); } else { debugMsg('The archive is multipart'); } $multiPartSigs = array( 0x08074b50, // Multi-part ZIP 0x30304b50, // Multi-part ZIP (alternate) 0x04034b50 // Single file ); if( !in_array($headerData['sig'], $multiPartSigs) ) { debugMsg('Invalid header signature '.dechex($headerData['sig'])); $this->setError(AKText::_('ERR_CORRUPT_ARCHIVE')); return false; } $this->currentPartOffset = @ftell($this->fp); debugMsg('Current part offset after reading header: '.$this->currentPartOffset); $this->dataReadLength = 0; return true; } /** * Concrete classes must use this method to read the file header * @return bool True if reading the file was successful, false if an error occured or we reached end of archive */ protected function readFileHeader() { // If the current part is over, proceed to the next part please if( $this->isEOF(true) ) { debugMsg('Opening next archive part'); $this->nextFile(); } if($this->expectDataDescriptor) { // The last file had bit 3 of the general purpose bit flag set. This means that we have a // 12 byte data descriptor we need to skip. To make things worse, there might also be a 4 // byte optional data descriptor header (0x08074b50). $junk = @fread($this->fp, 4); $junk = unpack('Vsig', $junk); if($junk['sig'] == 0x08074b50) { // Yes, there was a signature $junk = @fread($this->fp, 12); debugMsg('Data descriptor (w/ header) skipped at '.(ftell($this->fp)-12)); } else { // No, there was no signature, just read another 8 bytes $junk = @fread($this->fp, 8); debugMsg('Data descriptor (w/out header) skipped at '.(ftell($this->fp)-8)); } // And check for EOF, too if( $this->isEOF(true) ) { debugMsg('EOF before reading header'); $this->nextFile(); } } // Get and decode Local File Header $headerBinary = fread($this->fp, 30); $headerData = unpack('Vsig/C2ver/vbitflag/vcompmethod/vlastmodtime/vlastmoddate/Vcrc/Vcompsize/Vuncomp/vfnamelen/veflen', $headerBinary); // Check signature if(!( $headerData['sig'] == 0x04034b50 )) { debugMsg('Not a file signature at '.(ftell($this->fp)-4)); // The signature is not the one used for files. Is this a central directory record (i.e. we're done)? if($headerData['sig'] == 0x02014b50) { debugMsg('EOCD signature at '.(ftell($this->fp)-4)); // End of ZIP file detected. We'll just skip to the end of file... while( $this->nextFile() ) {}; @fseek($this->fp, 0, SEEK_END); // Go to EOF return false; } else { debugMsg( 'Invalid signature ' . dechex($headerData['sig']) . ' at '.ftell($this->fp) ); $this->setError(AKText::_('ERR_CORRUPT_ARCHIVE')); return false; } } // If bit 3 of the bitflag is set, expectDataDescriptor is true $this->expectDataDescriptor = ($headerData['bitflag'] & 4) == 4; $this->fileHeader = new stdClass(); $this->fileHeader->timestamp = 0; // Read the last modified data and time $lastmodtime = $headerData['lastmodtime']; $lastmoddate = $headerData['lastmoddate']; if($lastmoddate && $lastmodtime) { // ----- Extract time $v_hour = ($lastmodtime & 0xF800) >> 11; $v_minute = ($lastmodtime & 0x07E0) >> 5; $v_seconde = ($lastmodtime & 0x001F)*2; // ----- Extract date $v_year = (($lastmoddate & 0xFE00) >> 9) + 1980; $v_month = ($lastmoddate & 0x01E0) >> 5; $v_day = $lastmoddate & 0x001F; // ----- Get UNIX date format $this->fileHeader->timestamp = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); } $isBannedFile = false; $this->fileHeader->compressed = $headerData['compsize']; $this->fileHeader->uncompressed = $headerData['uncomp']; $nameFieldLength = $headerData['fnamelen']; $extraFieldLength = $headerData['eflen']; // Read filename field $this->fileHeader->file = fread( $this->fp, $nameFieldLength ); // Handle file renaming $isRenamed = false; if(is_array($this->renameFiles) && (count($this->renameFiles) > 0) ) { if(array_key_exists($this->fileHeader->file, $this->renameFiles)) { $this->fileHeader->file = $this->renameFiles[$this->fileHeader->file]; $isRenamed = true; } } // Handle directory renaming $isDirRenamed = false; if(is_array($this->renameDirs) && (count($this->renameDirs) > 0)) { if(array_key_exists(dirname($this->fileHeader->file), $this->renameDirs)) { $file = rtrim($this->renameDirs[dirname($this->fileHeader->file)],'/').'/'.basename($this->fileHeader->file); $isRenamed = true; $isDirRenamed = true; } } // Read extra field if present if($extraFieldLength > 0) { $extrafield = fread( $this->fp, $extraFieldLength ); } debugMsg( '*'.ftell($this->fp).' IS START OF '.$this->fileHeader->file. ' ('.$this->fileHeader->compressed.' bytes)' ); // Decide filetype -- Check for directories $this->fileHeader->type = 'file'; if( strrpos($this->fileHeader->file, '/') == strlen($this->fileHeader->file) - 1 ) $this->fileHeader->type = 'dir'; // Decide filetype -- Check for symbolic links if( ($headerData['ver1'] == 10) && ($headerData['ver2'] == 3) )$this->fileHeader->type = 'link'; switch( $headerData['compmethod'] ) { case 0: $this->fileHeader->compression = 'none'; break; case 8: $this->fileHeader->compression = 'gzip'; break; } // Find hard-coded banned files if( (basename($this->fileHeader->file) == ".") || (basename($this->fileHeader->file) == "..") ) { $isBannedFile = true; } // Also try to find banned files passed in class configuration if((count($this->skipFiles) > 0) && (!$isRenamed)) { if(in_array($this->fileHeader->file, $this->skipFiles)) { $isBannedFile = true; } } // If we have a banned file, let's skip it if($isBannedFile) { // Advance the file pointer, skipping exactly the size of the compressed data $seekleft = $this->fileHeader->compressed; while($seekleft > 0) { // Ensure that we can seek past archive part boundaries $curSize = @filesize($this->archiveList[$this->currentPartNumber]); $curPos = @ftell($this->fp); $canSeek = $curSize - $curPos; if($canSeek > $seekleft) $canSeek = $seekleft; @fseek( $this->fp, $canSeek, SEEK_CUR ); $seekleft -= $canSeek; if($seekleft) $this->nextFile(); } $this->currentPartOffset = @ftell($this->fp); $this->runState = AK_STATE_DONE; return true; } // Last chance to prepend a path to the filename if(!empty($this->addPath) && !$isDirRenamed) { $this->fileHeader->file = $this->addPath.$this->fileHeader->file; } // Get the translated path name if($this->fileHeader->type == 'file') { $this->fileHeader->realFile = $this->postProcEngine->processFilename( $this->fileHeader->file ); } elseif($this->fileHeader->type == 'dir') { $this->fileHeader->timestamp = 0; $dir = $this->fileHeader->file; $this->postProcEngine->createDirRecursive( $this->fileHeader->file, 0755 ); $this->postProcEngine->processFilename(null); } else { // Symlink; do not post-process $this->fileHeader->timestamp = 0; $this->postProcEngine->processFilename(null); } $this->createDirectory(); // Header is read $this->runState = AK_STATE_HEADER; return true; } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * JPS archive extraction class */ class AKUnarchiverJPS extends AKUnarchiverJPA { protected $archiveHeaderData = array(); protected $password = ''; public function __construct() { parent::__construct(); $this->password = AKFactory::get('kickstart.jps.password',''); } protected function readArchiveHeader() { // Initialize header data array $this->archiveHeaderData = new stdClass(); // Open the first part $this->nextFile(); // Fail for unreadable files if( $this->fp === false ) return false; // Read the signature $sig = fread( $this->fp, 3 ); if ($sig != 'JPS') { // Not a JPA file $this->setError( AKText::_('ERR_NOT_A_JPS_FILE') ); return false; } // Read and parse the known portion of header data (5 bytes) $bin_data = fread($this->fp, 5); $header_data = unpack('Cmajor/Cminor/cspanned/vextra', $bin_data); // Load any remaining header data (forward compatibility) $rest_length = $header_data['extra']; if( $rest_length > 0 ) $junk = fread($this->fp, $rest_length); else $junk = ''; // Temporary array with all the data we read $temp = array( 'signature' => $sig, 'major' => $header_data['major'], 'minor' => $header_data['minor'], 'spanned' => $header_data['spanned'] ); // Array-to-object conversion foreach($temp as $key => $value) { $this->archiveHeaderData->{$key} = $value; } $this->currentPartOffset = @ftell($this->fp); $this->dataReadLength = 0; return true; } /** * Concrete classes must use this method to read the file header * @return bool True if reading the file was successful, false if an error occured or we reached end of archive */ protected function readFileHeader() { // If the current part is over, proceed to the next part please if( $this->isEOF(true) ) { $this->nextFile(); } // Get and decode Entity Description Block $signature = fread($this->fp, 3); // Check for end-of-archive siganture if($signature == 'JPE') { $this->setState('postrun'); return true; } $this->fileHeader = new stdClass(); $this->fileHeader->timestamp = 0; // Check signature if( $signature != 'JPF' ) { if($this->isEOF(true)) { // This file is finished; make sure it's the last one $this->nextFile(); if(!$this->isEOF(false)) { $this->setError(AKText::sprintf('INVALID_FILE_HEADER', $this->currentPartNumber, $this->currentPartOffset)); return false; } // We're just finished return false; } else { fseek($this->fp, -6, SEEK_CUR); $signature = fread($this->fp, 3); if($signature == 'JPE') { return false; } $this->setError(AKText::sprintf('INVALID_FILE_HEADER', $this->currentPartNumber, $this->currentPartOffset)); return false; } } // This a JPA Entity Block. Process the header. $isBannedFile = false; // Read and decrypt the header $edbhData = fread($this->fp, 4); $edbh = unpack('vencsize/vdecsize', $edbhData); $bin_data = fread($this->fp, $edbh['encsize']); // Decrypt and truncate $bin_data = AKEncryptionAES::AESDecryptCBC($bin_data, $this->password, 128); $bin_data = substr($bin_data,0,$edbh['decsize']); // Read length of EDB and of the Entity Path Data $length_array = unpack('vpathsize', substr($bin_data,0,2) ); // Read the path data $file = substr($bin_data,2,$length_array['pathsize']); // Handle file renaming $isRenamed = false; if(is_array($this->renameFiles) && (count($this->renameFiles) > 0) ) { if(array_key_exists($file, $this->renameFiles)) { $file = $this->renameFiles[$file]; $isRenamed = true; } } // Handle directory renaming $isDirRenamed = false; if(is_array($this->renameDirs) && (count($this->renameDirs) > 0)) { if(array_key_exists(dirname($file), $this->renameDirs)) { $file = rtrim($this->renameDirs[dirname($file)],'/').'/'.basename($file); $isRenamed = true; $isDirRenamed = true; } } // Read and parse the known data portion $bin_data = substr($bin_data, 2 + $length_array['pathsize']); $header_data = unpack('Ctype/Ccompression/Vuncompsize/Vperms/Vfilectime', $bin_data); $this->fileHeader->timestamp = $header_data['filectime']; $compressionType = $header_data['compression']; // Populate the return array $this->fileHeader->file = $file; $this->fileHeader->uncompressed = $header_data['uncompsize']; switch($header_data['type']) { case 0: $this->fileHeader->type = 'dir'; break; case 1: $this->fileHeader->type = 'file'; break; case 2: $this->fileHeader->type = 'link'; break; } switch( $compressionType ) { case 0: $this->fileHeader->compression = 'none'; break; case 1: $this->fileHeader->compression = 'gzip'; break; case 2: $this->fileHeader->compression = 'bzip2'; break; } $this->fileHeader->permissions = $header_data['perms']; // Find hard-coded banned files if( (basename($this->fileHeader->file) == ".") || (basename($this->fileHeader->file) == "..") ) { $isBannedFile = true; } // Also try to find banned files passed in class configuration if((count($this->skipFiles) > 0) && (!$isRenamed) ) { if(in_array($this->fileHeader->file, $this->skipFiles)) { $isBannedFile = true; } } // If we have a banned file, let's skip it if($isBannedFile) { $done = false; while(!$done) { // Read the Data Chunk Block header $binMiniHead = fread($this->fp, 8); if( in_array( substr($binMiniHead,0,3), array('JPF','JPE') ) ) { // Not a Data Chunk Block header, I am done skipping the file @fseek($this->fp,-8,SEEK_CUR); // Roll back the file pointer $done = true; // Mark as done continue; // Exit loop } else { // Skip forward by the amount of compressed data $miniHead = unpack('Vencsize/Vdecsize', $binMiniHead); @fseek($this->fp, $miniHead['encsize'], SEEK_CUR); } } $this->currentPartOffset = @ftell($this->fp); $this->runState = AK_STATE_DONE; return true; } // Last chance to prepend a path to the filename if(!empty($this->addPath) && !$isDirRenamed) { $this->fileHeader->file = $this->addPath.$this->fileHeader->file; } // Get the translated path name $restorePerms = AKFactory::get('kickstart.setup.restoreperms', false); if($this->fileHeader->type == 'file') { // Regular file; ask the postproc engine to process its filename if($restorePerms) { $this->fileHeader->realFile = $this->postProcEngine->processFilename( $this->fileHeader->file, $this->fileHeader->permissions ); } else { $this->fileHeader->realFile = $this->postProcEngine->processFilename( $this->fileHeader->file ); } } elseif($this->fileHeader->type == 'dir') { $dir = $this->fileHeader->file; $this->fileHeader->realFile = $dir; // Directory; just create it if($restorePerms) { $this->postProcEngine->createDirRecursive( $this->fileHeader->file, $this->fileHeader->permissions ); } else { $this->postProcEngine->createDirRecursive( $this->fileHeader->file, 0755 ); } $this->postProcEngine->processFilename(null); } else { // Symlink; do not post-process $this->postProcEngine->processFilename(null); } $this->createDirectory(); // Header is read $this->runState = AK_STATE_HEADER; $this->dataReadLength = 0; return true; } /** * Concrete classes must use this method to process file data. It must set $runState to AK_STATE_DATAREAD when * it's finished processing the file data. * @return bool True if processing the file data was successful, false if an error occured */ protected function processFileData() { switch( $this->fileHeader->type ) { case 'dir': return $this->processTypeDir(); break; case 'link': return $this->processTypeLink(); break; case 'file': switch($this->fileHeader->compression) { case 'none': return $this->processTypeFileUncompressed(); break; case 'gzip': case 'bzip2': return $this->processTypeFileCompressedSimple(); break; } break; } } private function processTypeFileUncompressed() { // Uncompressed files are being processed in small chunks, to avoid timeouts if( ($this->dataReadLength == 0) && !AKFactory::get('kickstart.setup.dryrun','0') ) { // Before processing file data, ensure permissions are adequate $this->setCorrectPermissions( $this->fileHeader->file ); } // Open the output file if( !AKFactory::get('kickstart.setup.dryrun','0') ) { $ignore = AKFactory::get('kickstart.setup.ignoreerrors', false) || $this->isIgnoredDirectory($this->fileHeader->file); if ($this->dataReadLength == 0) { $outfp = @fopen( $this->fileHeader->realFile, 'wb' ); } else { $outfp = @fopen( $this->fileHeader->realFile, 'ab' ); } // Can we write to the file? if( ($outfp === false) && (!$ignore) ) { // An error occured $this->setError( AKText::sprintf('COULDNT_WRITE_FILE', $this->fileHeader->realFile) ); return false; } } // Does the file have any data, at all? if( $this->fileHeader->uncompressed == 0 ) { // No file data! if( !AKFactory::get('kickstart.setup.dryrun','0') && is_resource($outfp) ) @fclose($outfp); $this->runState = AK_STATE_DATAREAD; return true; } else { $this->setError('An uncompressed file was detected; this is not supported by this archive extraction utility'); return false; } return true; } private function processTypeFileCompressedSimple() { $timer = AKFactory::getTimer(); // Files are being processed in small chunks, to avoid timeouts if( ($this->dataReadLength == 0) && !AKFactory::get('kickstart.setup.dryrun','0') ) { // Before processing file data, ensure permissions are adequate $this->setCorrectPermissions( $this->fileHeader->file ); } // Open the output file if( !AKFactory::get('kickstart.setup.dryrun','0') ) { // Open the output file $outfp = @fopen( $this->fileHeader->realFile, 'wb' ); // Can we write to the file? $ignore = AKFactory::get('kickstart.setup.ignoreerrors', false) || $this->isIgnoredDirectory($this->fileHeader->file); if( ($outfp === false) && (!$ignore) ) { // An error occured $this->setError( AKText::sprintf('COULDNT_WRITE_FILE', $this->fileHeader->realFile) ); return false; } } // Does the file have any data, at all? if( $this->fileHeader->uncompressed == 0 ) { // No file data! if( !AKFactory::get('kickstart.setup.dryrun','0') ) if(is_resource($outfp)) @fclose($outfp); $this->runState = AK_STATE_DATAREAD; return true; } $leftBytes = $this->fileHeader->uncompressed - $this->dataReadLength; // Loop while there's data to write and enough time to do it while( ($leftBytes > 0) && ($timer->getTimeLeft() > 0) ) { // Read the mini header $binMiniHeader = fread($this->fp, 8); $reallyReadBytes = akstringlen($binMiniHeader); if($reallyReadBytes < 8) { // We read less than requested! Why? Did we hit local EOF? if( $this->isEOF(true) && !$this->isEOF(false) ) { // Yeap. Let's go to the next file $this->nextFile(); // Retry reading the header $binMiniHeader = fread($this->fp, 8); $reallyReadBytes = akstringlen($binMiniHeader); // Still not enough data? If so, the archive is corrupt or missing parts. if($reallyReadBytes < 8) { $this->setError( AKText::_('ERR_CORRUPT_ARCHIVE') ); return false; } } else { // Nope. The archive is corrupt $this->setError( AKText::_('ERR_CORRUPT_ARCHIVE') ); return false; } } // Read the encrypted data $miniHeader = unpack('Vencsize/Vdecsize', $binMiniHeader); $toReadBytes = $miniHeader['encsize']; $data = $this->fread( $this->fp, $toReadBytes ); $reallyReadBytes = akstringlen($data); if($reallyReadBytes < $toReadBytes) { // We read less than requested! Why? Did we hit local EOF? if( $this->isEOF(true) && !$this->isEOF(false) ) { // Yeap. Let's go to the next file $this->nextFile(); // Read the rest of the data $toReadBytes -= $reallyReadBytes; $restData = $this->fread( $this->fp, $toReadBytes ); $reallyReadBytes = akstringlen($restData); if($reallyReadBytes < $toReadBytes) { $this->setError( AKText::_('ERR_CORRUPT_ARCHIVE') ); return false; } if(akstringlen($data) == 0) { $data = $restData; } else { $data .= $restData; } } else { // Nope. The archive is corrupt $this->setError( AKText::_('ERR_CORRUPT_ARCHIVE') ); return false; } } // Decrypt the data $data = AKEncryptionAES::AESDecryptCBC($data, $this->password, 128); // Is the length of the decrypted data less than expected? $data_length = akstringlen($data); if($data_length < $miniHeader['decsize']) { $this->setError(AKText::_('ERR_INVALID_JPS_PASSWORD')); return false; } // Trim the data $data = substr($data,0,$miniHeader['decsize']); // Decompress $data = gzinflate($data); $unc_len = akstringlen($data); // Write the decrypted data if( !AKFactory::get('kickstart.setup.dryrun','0') ) if(is_resource($outfp)) @fwrite( $outfp, $data, akstringlen($data) ); // Update the read length $this->dataReadLength += $unc_len; $leftBytes = $this->fileHeader->uncompressed - $this->dataReadLength; } // Close the file pointer if( !AKFactory::get('kickstart.setup.dryrun','0') ) if(is_resource($outfp)) @fclose($outfp); // Was this a pre-timeout bail out? if( $leftBytes > 0 ) { $this->runState = AK_STATE_DATA; } else { // Oh! We just finished! $this->runState = AK_STATE_DATAREAD; $this->dataReadLength = 0; } return true; } /** * Process the file data of a link entry * @return bool */ private function processTypeLink() { // Does the file have any data, at all? if( $this->fileHeader->uncompressed == 0 ) { // No file data! $this->runState = AK_STATE_DATAREAD; return true; } // Read the mini header $binMiniHeader = fread($this->fp, 8); $reallyReadBytes = akstringlen($binMiniHeader); if($reallyReadBytes < 8) { // We read less than requested! Why? Did we hit local EOF? if( $this->isEOF(true) && !$this->isEOF(false) ) { // Yeap. Let's go to the next file $this->nextFile(); // Retry reading the header $binMiniHeader = fread($this->fp, 8); $reallyReadBytes = akstringlen($binMiniHeader); // Still not enough data? If so, the archive is corrupt or missing parts. if($reallyReadBytes < 8) { $this->setError( AKText::_('ERR_CORRUPT_ARCHIVE') ); return false; } } else { // Nope. The archive is corrupt $this->setError( AKText::_('ERR_CORRUPT_ARCHIVE') ); return false; } } // Read the encrypted data $miniHeader = unpack('Vencsize/Vdecsize', $binMiniHeader); $toReadBytes = $miniHeader['encsize']; $data = $this->fread( $this->fp, $toReadBytes ); $reallyReadBytes = akstringlen($data); if($reallyReadBytes < $toReadBytes) { // We read less than requested! Why? Did we hit local EOF? if( $this->isEOF(true) && !$this->isEOF(false) ) { // Yeap. Let's go to the next file $this->nextFile(); // Read the rest of the data $toReadBytes -= $reallyReadBytes; $restData = $this->fread( $this->fp, $toReadBytes ); $reallyReadBytes = akstringlen($data); if($reallyReadBytes < $toReadBytes) { $this->setError( AKText::_('ERR_CORRUPT_ARCHIVE') ); return false; } $data .= $restData; } else { // Nope. The archive is corrupt $this->setError( AKText::_('ERR_CORRUPT_ARCHIVE') ); return false; } } // Decrypt the data $data = AKEncryptionAES::AESDecryptCBC($data, $this->password, 128); // Is the length of the decrypted data less than expected? $data_length = akstringlen($data); if($data_length < $miniHeader['decsize']) { $this->setError(AKText::_('ERR_INVALID_JPS_PASSWORD')); return false; } // Trim the data $data = substr($data,0,$miniHeader['decsize']); // Try to remove an existing file or directory by the same name if(file_exists($this->fileHeader->file)) { @unlink($this->fileHeader->file); @rmdir($this->fileHeader->file); } // Remove any trailing slash if(substr($this->fileHeader->file, -1) == '/') $this->fileHeader->file = substr($this->fileHeader->file, 0, -1); // Create the symlink - only possible within PHP context. There's no support built in the FTP protocol, so no postproc use is possible here :( if( !AKFactory::get('kickstart.setup.dryrun','0') ) { @symlink($data, $this->fileHeader->file); } $this->runState = AK_STATE_DATAREAD; return true; // No matter if the link was created! } /** * Process the file data of a directory entry * @return bool */ private function processTypeDir() { // Directory entries in the JPA do not have file data, therefore we're done processing the entry $this->runState = AK_STATE_DATAREAD; return true; } /** * Creates the directory this file points to */ protected function createDirectory() { if( AKFactory::get('kickstart.setup.dryrun','0') ) return true; // Do we need to create a directory? $lastSlash = strrpos($this->fileHeader->realFile, '/'); $dirName = substr( $this->fileHeader->realFile, 0, $lastSlash); $perms = $this->flagRestorePermissions ? $retArray['permissions'] : 0755; $ignore = AKFactory::get('kickstart.setup.ignoreerrors', false) || $this->isIgnoredDirectory($dirName); if( ($this->postProcEngine->createDirRecursive($dirName, $perms) == false) && (!$ignore) ) { $this->setError( AKText::sprintf('COULDNT_CREATE_DIR', $dirName) ); return false; } else { return true; } } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * Timer class */ class AKCoreTimer extends AKAbstractObject { /** @var int Maximum execution time allowance per step */ private $max_exec_time = null; /** @var int Timestamp of execution start */ private $start_time = null; /** * Public constructor, creates the timer object and calculates the execution time limits * @return AECoreTimer */ public function __construct() { parent::__construct(); // Initialize start time $this->start_time = $this->microtime_float(); // Get configured max time per step and bias $config_max_exec_time = AKFactory::get('kickstart.tuning.max_exec_time', 14); $bias = AKFactory::get('kickstart.tuning.run_time_bias', 75)/100; // Get PHP's maximum execution time (our upper limit) if(@function_exists('ini_get')) { $php_max_exec_time = @ini_get("maximum_execution_time"); if ( (!is_numeric($php_max_exec_time)) || ($php_max_exec_time == 0) ) { // If we have no time limit, set a hard limit of about 10 seconds // (safe for Apache and IIS timeouts, verbose enough for users) $php_max_exec_time = 14; } } else { // If ini_get is not available, use a rough default $php_max_exec_time = 14; } // Apply an arbitrary correction to counter CMS load time $php_max_exec_time--; // Apply bias $php_max_exec_time = $php_max_exec_time * $bias; $config_max_exec_time = $config_max_exec_time * $bias; // Use the most appropriate time limit value if( $config_max_exec_time > $php_max_exec_time ) { $this->max_exec_time = $php_max_exec_time; } else { $this->max_exec_time = $config_max_exec_time; } } /** * Wake-up function to reset internal timer when we get unserialized */ public function __wakeup() { // Re-initialize start time on wake-up $this->start_time = $this->microtime_float(); } /** * Gets the number of seconds left, before we hit the "must break" threshold * @return float */ public function getTimeLeft() { return $this->max_exec_time - $this->getRunningTime(); } /** * Gets the time elapsed since object creation/unserialization, effectively how * long Akeeba Engine has been processing data * @return float */ public function getRunningTime() { return $this->microtime_float() - $this->start_time; } /** * Returns the current timestampt in decimal seconds */ private function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } /** * Enforce the minimum execution time */ public function enforce_min_exec_time() { // Try to get a sane value for PHP's maximum_execution_time INI parameter if(@function_exists('ini_get')) { $php_max_exec = @ini_get("maximum_execution_time"); } else { $php_max_exec = 10; } if ( ($php_max_exec == "") || ($php_max_exec == 0) ) { $php_max_exec = 10; } // Decrease $php_max_exec time by 500 msec we need (approx.) to tear down // the application, as well as another 500msec added for rounding // error purposes. Also make sure this is never gonna be less than 0. $php_max_exec = max($php_max_exec * 1000 - 1000, 0); // Get the "minimum execution time per step" Akeeba Backup configuration variable $minexectime = AKFactory::get('kickstart.tuning.min_exec_time',0); if(!is_numeric($minexectime)) $minexectime = 0; // Make sure we are not over PHP's time limit! if($minexectime > $php_max_exec) $minexectime = $php_max_exec; // Get current running time $elapsed_time = $this->getRunningTime() * 1000; // Only run a sleep delay if we haven't reached the minexectime execution time if( ($minexectime > $elapsed_time) && ($elapsed_time > 0) ) { $sleep_msec = $minexectime - $elapsed_time; if(function_exists('usleep')) { usleep(1000 * $sleep_msec); } elseif(function_exists('time_nanosleep')) { $sleep_sec = floor($sleep_msec / 1000); $sleep_nsec = 1000000 * ($sleep_msec - ($sleep_sec * 1000)); time_nanosleep($sleep_sec, $sleep_nsec); } elseif(function_exists('time_sleep_until')) { $until_timestamp = time() + $sleep_msec / 1000; time_sleep_until($until_timestamp); } elseif(function_exists('sleep')) { $sleep_sec = ceil($sleep_msec/1000); sleep( $sleep_sec ); } } elseif( $elapsed_time > 0 ) { // No sleep required, even if user configured us to be able to do so. } } /** * Reset the timer. It should only be used in CLI mode! */ public function resetTime() { $this->start_time = $this->microtime_float(); } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * A filesystem scanner which uses opendir() */ class AKUtilsLister extends AKAbstractObject { public function &getFiles($folder, $pattern = '*') { // Initialize variables $arr = array(); $false = false; if(!is_dir($folder)) return $false; $handle = @opendir($folder); // If directory is not accessible, just return FALSE if ($handle === FALSE) { $this->setWarning( 'Unreadable directory '.$folder); return $false; } while (($file = @readdir($handle)) !== false) { if( !fnmatch($pattern, $file) ) continue; if (($file != '.') && ($file != '..')) { $ds = ($folder == '') || ($folder == '/') || (@substr($folder, -1) == '/') || (@substr($folder, -1) == DIRECTORY_SEPARATOR) ? '' : DIRECTORY_SEPARATOR; $dir = $folder . $ds . $file; $isDir = is_dir($dir); if (!$isDir) { $arr[] = $dir; } } } @closedir($handle); return $arr; } public function &getFolders($folder, $pattern = '*') { // Initialize variables $arr = array(); $false = false; if(!is_dir($folder)) return $false; $handle = @opendir($folder); // If directory is not accessible, just return FALSE if ($handle === FALSE) { $this->setWarning( 'Unreadable directory '.$folder); return $false; } while (($file = @readdir($handle)) !== false) { if( !fnmatch($pattern, $file) ) continue; if (($file != '.') && ($file != '..')) { $ds = ($folder == '') || ($folder == '/') || (@substr($folder, -1) == '/') || (@substr($folder, -1) == DIRECTORY_SEPARATOR) ? '' : DIRECTORY_SEPARATOR; $dir = $folder . $ds . $file; $isDir = is_dir($dir); if ($isDir) { $arr[] = $dir; } } } @closedir($handle); return $arr; } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * A simple INI-based i18n engine */ class AKText extends AKAbstractObject { /** * The default (en_GB) translation used when no other translation is available * @var array */ private $default_translation = array( 'AUTOMODEON' => 'Auto-mode enabled', 'ERR_NOT_A_JPA_FILE' => 'The file is not a JPA archive', 'ERR_CORRUPT_ARCHIVE' => 'The archive file is corrupt, truncated or archive parts are missing', 'ERR_INVALID_LOGIN' => 'Invalid login', 'COULDNT_CREATE_DIR' => 'Could not create %s folder', 'COULDNT_WRITE_FILE' => 'Could not open %s for writing.', 'WRONG_FTP_HOST' => 'Wrong FTP host or port', 'WRONG_FTP_USER' => 'Wrong FTP username or password', 'WRONG_FTP_PATH1' => 'Wrong FTP initial directory - the directory doesn\'t exist', 'FTP_CANT_CREATE_DIR' => 'Could not create directory %s', 'FTP_TEMPDIR_NOT_WRITABLE' => 'Could not find or create a writable temporary directory', 'SFTP_TEMPDIR_NOT_WRITABLE' => 'Could not find or create a writable temporary directory', 'FTP_COULDNT_UPLOAD' => 'Could not upload %s', 'THINGS_HEADER' => 'Things you should know about Akeeba Kickstart', 'THINGS_01' => 'Kickstart is not an installer. It is an archive extraction tool. The actual installer was put inside the archive file at backup time.', 'THINGS_02' => 'Kickstart is not the only way to extract the backup archive. You can use Akeeba eXtract Wizard and upload the extracted files using FTP instead.', 'THINGS_03' => 'Kickstart is bound by your server\'s configuration. As such, it may not work at all.', 'THINGS_04' => 'You should download and upload your archive files using FTP in Binary transfer mode. Any other method could lead to a corrupt backup archive and restoration failure.', 'THINGS_05' => 'Post-restoration site load errors are usually caused by .htaccess or php.ini directives. You should understand that blank pages, 404 and 500 errors can usually be worked around by editing the aforementioned files. It is not our job to mess with your configuration files, because this could be dangerous for your site.', 'THINGS_06' => 'Kickstart overwrites files without a warning. If you are not sure that you are OK with that do not continue.', 'THINGS_07' => 'Trying to restore to the temporary URL of a cPanel host (e.g. http://1.2.3.4/~username) will lead to restoration failure and your site will appear to be not working. This is normal and it\'s just how your server and CMS software work.', 'THINGS_08' => 'You are supposed to read the documentation before using this software. Most issues can be avoided, or easily worked around, by understanding how this software works.', 'THINGS_09' => 'This text does not imply that there is a problem detected. It is standard text displayed every time you launch Kickstart.', 'CLOSE_LIGHTBOX' => 'Click here or press ESC to close this message', 'SELECT_ARCHIVE' => 'Select a backup archive', 'ARCHIVE_FILE' => 'Archive file:', 'SELECT_EXTRACTION' => 'Select an extraction method', 'WRITE_TO_FILES' => 'Write to files:', 'WRITE_HYBRID' => 'Hybrid (use FTP only if needed)', 'WRITE_DIRECTLY' => 'Directly', 'WRITE_FTP' => 'Use FTP for all files', 'WRITE_SFTP' => 'Use SFTP for all files', 'FTP_HOST' => '(S)FTP host name:', 'FTP_PORT' => '(S)FTP port:', 'FTP_FTPS' => 'Use FTP over SSL (FTPS)', 'FTP_PASSIVE' => 'Use FTP Passive Mode', 'FTP_USER' => '(S)FTP user name:', 'FTP_PASS' => '(S)FTP password:', 'FTP_DIR' => '(S)FTP directory:', 'FTP_TEMPDIR' => 'Temporary directory:', 'FTP_CONNECTION_OK' => 'FTP Connection Established', 'SFTP_CONNECTION_OK' => 'SFTP Connection Established', 'FTP_CONNECTION_FAILURE' => 'The FTP Connection Failed', 'SFTP_CONNECTION_FAILURE' => 'The SFTP Connection Failed', 'FTP_TEMPDIR_WRITABLE' => 'The temporary directory is writable.', 'FTP_TEMPDIR_UNWRITABLE' => 'The temporary directory is not writable. Please check the permissions.', 'FTPBROWSER_ERROR_HOSTNAME' => "Invalid FTP host or port", 'FTPBROWSER_ERROR_USERPASS' => "Invalid FTP username or password", 'FTPBROWSER_ERROR_NOACCESS' => "Directory doesn't exist or you don't have enough permissions to access it", 'FTPBROWSER_ERROR_UNSUPPORTED' => "Sorry, your FTP server doesn't support our FTP directory browser.", 'FTPBROWSER_LBL_GOPARENT' => "<up one level>", 'FTPBROWSER_LBL_INSTRUCTIONS' => 'Click on a directory to navigate into it. Click on OK to select that directory, Cancel to abort the procedure.', 'FTPBROWSER_LBL_ERROR' => 'An error occurred', 'SFTP_NO_SSH2' => 'Your web server does not have the SSH2 PHP module, therefore can not connect to SFTP servers.', 'SFTP_NO_FTP_SUPPORT' => 'Your SSH server does not allow SFTP connections', 'SFTP_WRONG_USER' => 'Wrong SFTP username or password', 'SFTP_WRONG_STARTING_DIR' => 'You must supply a valid absolute path', 'SFTPBROWSER_ERROR_NOACCESS' => "Directory doesn't exist or you don't have enough permissions to access it", 'SFTP_COULDNT_UPLOAD' => 'Could not upload %s', 'SFTP_CANT_CREATE_DIR' => 'Could not create directory %s', 'UI-ROOT' => '<root>', 'CONFIG_UI_FTPBROWSER_TITLE' => 'FTP Directory Browser', 'FTP_BROWSE' => 'Browse', 'BTN_CHECK' => 'Check', 'BTN_RESET' => 'Reset', 'BTN_TESTFTPCON' => 'Test FTP connection', 'BTN_TESTSFTPCON' => 'Test SFTP connection', 'BTN_GOTOSTART' => 'Start over', 'FINE_TUNE' => 'Fine tune', 'MIN_EXEC_TIME' => 'Minimum execution time:', 'MAX_EXEC_TIME' => 'Maximum execution time:', 'SECONDS_PER_STEP' => 'seconds per step', 'EXTRACT_FILES' => 'Extract files', 'BTN_START' => 'Start', 'EXTRACTING' => 'Extracting', 'DO_NOT_CLOSE_EXTRACT' => 'Do not close this window while the extraction is in progress', 'RESTACLEANUP' => 'Restoration and Clean Up', 'BTN_RUNINSTALLER' => 'Run the Installer', 'BTN_CLEANUP' => 'Clean Up', 'BTN_SITEFE' => 'Visit your site\'s front-end', 'BTN_SITEBE' => 'Visit your site\'s back-end', 'WARNINGS' => 'Extraction Warnings', 'ERROR_OCCURED' => 'An error occured', 'STEALTH_MODE' => 'Stealth mode', 'STEALTH_URL' => 'HTML file to show to web visitors', 'ERR_NOT_A_JPS_FILE' => 'The file is not a JPA archive', 'ERR_INVALID_JPS_PASSWORD' => 'The password you gave is wrong or the archive is corrupt', 'JPS_PASSWORD' => 'Archive Password (for JPS files)', 'INVALID_FILE_HEADER' => 'Invalid header in archive file, part %s, offset %s', 'NEEDSOMEHELPKS' => 'Want some help to use this tool? Read this first:', 'QUICKSTART' => 'Quick Start Guide', 'CANTGETITTOWORK' => 'Can\'t get it to work? Click me!', 'NOARCHIVESCLICKHERE' => 'No archives detected. Click here for troubleshooting instructions.', 'POSTRESTORATIONTROUBLESHOOTING' => 'Something not working after the restoration? Click here for troubleshooting instructions.', 'UPDATE_HEADER' => 'An updated version of Akeeba Kickstart (<span id="update-version">unknown</span>) is available!', 'UPDATE_NOTICE' => 'You are advised to always use the latest version of Akeeba Kickstart available. Older versions may be subject to bugs and will not be supported.', 'UPDATE_DLNOW' => 'Download now', 'UPDATE_MOREINFO' => 'More information', 'IGNORE_MOST_ERRORS' => 'Ignore most errors', 'WRONG_FTP_PATH2' => 'Wrong FTP initial directory - the directory doesn\'t correspond to your site\'s web root', 'ARCHIVE_DIRECTORY' => 'Archive directory:', 'RELOAD_ARCHIVES' => 'Reload', 'CONFIG_UI_SFTPBROWSER_TITLE' => 'SFTP Directory Browser', ); /** * The array holding the translation keys * @var array */ private $strings; /** * The currently detected language (ISO code) * @var string */ private $language; /* * Initializes the translation engine * @return AKText */ public function __construct() { // Start with the default translation $this->strings = $this->default_translation; // Try loading the translation file in English, if it exists $this->loadTranslation('en-GB'); // Try loading the translation file in the browser's preferred language, if it exists $this->getBrowserLanguage(); if(!is_null($this->language)) { $this->loadTranslation(); } } /** * Singleton pattern for Language * @return AKText The global AKText instance */ public static function &getInstance() { static $instance; if(!is_object($instance)) { $instance = new AKText(); } return $instance; } public static function _($string) { $text = self::getInstance(); $key = strtoupper($string); $key = substr($key, 0, 1) == '_' ? substr($key, 1) : $key; if (isset ($text->strings[$key])) { $string = $text->strings[$key]; } else { if (defined($string)) { $string = constant($string); } } return $string; } public static function sprintf($key) { $text = self::getInstance(); $args = func_get_args(); if (count($args) > 0) { $args[0] = $text->_($args[0]); return @call_user_func_array('sprintf', $args); } return ''; } public function dumpLanguage() { $out = ''; foreach($this->strings as $key => $value) { $out .= "$key=$value\n"; } return $out; } public function asJavascript() { $out = ''; foreach($this->strings as $key => $value) { $key = addcslashes($key, '\\\'"'); $value = addcslashes($value, '\\\'"'); if(!empty($out)) $out .= ",\n"; $out .= "'$key':\t'$value'"; } return $out; } public function resetTranslation() { $this->strings = $this->default_translation; } public function getBrowserLanguage() { // Detection code from Full Operating system language detection, by Harald Hope // Retrieved from http://techpatterns.com/downloads/php_language_detection.php $user_languages = array(); //check to see if language is set if ( isset( $_SERVER["HTTP_ACCEPT_LANGUAGE"] ) ) { $languages = strtolower( $_SERVER["HTTP_ACCEPT_LANGUAGE"] ); // $languages = ' fr-ch;q=0.3, da, en-us;q=0.8, en;q=0.5, fr;q=0.3'; // need to remove spaces from strings to avoid error $languages = str_replace( ' ', '', $languages ); $languages = explode( ",", $languages ); foreach ( $languages as $language_list ) { // pull out the language, place languages into array of full and primary // string structure: $temp_array = array(); // slice out the part before ; on first step, the part before - on second, place into array $temp_array[0] = substr( $language_list, 0, strcspn( $language_list, ';' ) );//full language $temp_array[1] = substr( $language_list, 0, 2 );// cut out primary language if( (strlen($temp_array[0]) == 5) && ( (substr($temp_array[0],2,1) == '-') || (substr($temp_array[0],2,1) == '_') ) ) { $langLocation = strtoupper(substr($temp_array[0],3,2)); $temp_array[0] = $temp_array[1].'-'.$langLocation; } //place this array into main $user_languages language array $user_languages[] = $temp_array; } } else// if no languages found { $user_languages[0] = array( '','' ); //return blank array. } $this->language = null; $basename=basename(__FILE__, '.php') . '.ini'; // Try to match main language part of the filename, irrespective of the location, e.g. de_DE will do if de_CH doesn't exist. if (class_exists('AKUtilsLister')) { $fs = new AKUtilsLister(); $iniFiles = $fs->getFiles(KSROOTDIR, '*.'.$basename ); if(empty($iniFiles) && ($basename != 'kickstart.ini')) { $basename = 'kickstart.ini'; $iniFiles = $fs->getFiles(KSROOTDIR, '*.'.$basename ); } } else { $iniFiles = null; } if (is_array($iniFiles)) { foreach($user_languages as $languageStruct) { if(is_null($this->language)) { // Get files matching the main lang part $iniFiles = $fs->getFiles(KSROOTDIR, $languageStruct[1].'-??.'.$basename ); if (count($iniFiles) > 0) { $filename = $iniFiles[0]; $filename = substr($filename, strlen(KSROOTDIR)+1); $this->language = substr($filename, 0, 5); } else { $this->language = null; } } } } if(is_null($this->language)) { // Try to find a full language match foreach($user_languages as $languageStruct) { if (@file_exists($languageStruct[0].'.'.$basename) && is_null($this->language)) { $this->language = $languageStruct[0]; } else { } } } else { // Do we have an exact match? foreach($user_languages as $languageStruct) { if(substr($this->language,0,strlen($languageStruct[1])) == $languageStruct[1]) { if(file_exists($languageStruct[0].'.'.$basename)) { $this->language = $languageStruct[0]; } } } } // Now, scan for full language based on the partial match } private function loadTranslation( $lang = null ) { if (defined('KSLANGDIR')) { $dirname = KSLANGDIR; } else { $dirname = KSROOTDIR; } $basename = basename(__FILE__, '.php') . '.ini'; if( empty($lang) ) $lang = $this->language; $translationFilename = $dirname.DIRECTORY_SEPARATOR.$lang.'.'.$basename; if(!@file_exists($translationFilename) && ($basename != 'kickstart.ini')) { $basename = 'kickstart.ini'; $translationFilename = $dirname.DIRECTORY_SEPARATOR.$lang.'.'.$basename; } if(!@file_exists($translationFilename)) return; $temp = self::parse_ini_file($translationFilename, false); if(!is_array($this->strings)) $this->strings = array(); if(empty($temp)) { $this->strings = array_merge($this->default_translation, $this->strings); } else { $this->strings = array_merge($this->strings, $temp); } } public function addDefaultLanguageStrings($stringList = array()) { if(!is_array($stringList)) return; if(empty($stringList)) return; $this->strings = array_merge($stringList, $this->strings); } /** * A PHP based INI file parser. * * Thanks to asohn ~at~ aircanopy ~dot~ net for posting this handy function on * the parse_ini_file page on http://gr.php.net/parse_ini_file * * @param string $file Filename to process * @param bool $process_sections True to also process INI sections * @return array An associative array of sections, keys and values * @access private */ public static function parse_ini_file($file, $process_sections = false, $raw_data = false) { $process_sections = ($process_sections !== true) ? false : true; if(!$raw_data) { $ini = @file($file); } else { $ini = $file; } if (count($ini) == 0) {return array();} $sections = array(); $values = array(); $result = array(); $globals = array(); $i = 0; if(!empty($ini)) foreach ($ini as $line) { $line = trim($line); $line = str_replace("\t", " ", $line); // Comments if (!preg_match('/^[a-zA-Z0-9[]/', $line)) {continue;} // Sections if ($line{0} == '[') { $tmp = explode(']', $line); $sections[] = trim(substr($tmp[0], 1)); $i++; continue; } // Key-value pair list($key, $value) = explode('=', $line, 2); $key = trim($key); $value = trim($value); if (strstr($value, ";")) { $tmp = explode(';', $value); if (count($tmp) == 2) { if ((($value{0} != '"') && ($value{0} != "'")) || preg_match('/^".*"\s*;/', $value) || preg_match('/^".*;[^"]*$/', $value) || preg_match("/^'.*'\s*;/", $value) || preg_match("/^'.*;[^']*$/", $value) ){ $value = $tmp[0]; } } else { if ($value{0} == '"') { $value = preg_replace('/^"(.*)".*/', '$1', $value); } elseif ($value{0} == "'") { $value = preg_replace("/^'(.*)'.*/", '$1', $value); } else { $value = $tmp[0]; } } } $value = trim($value); $value = trim($value, "'\""); if ($i == 0) { if (substr($line, -1, 2) == '[]') { $globals[$key][] = $value; } else { $globals[$key] = $value; } } else { if (substr($line, -1, 2) == '[]') { $values[$i-1][$key][] = $value; } else { $values[$i-1][$key] = $value; } } } for($j = 0; $j < $i; $j++) { if ($process_sections === true) { $result[$sections[$j]] = $values[$j]; } else { $result[] = $values[$j]; } } return $result + $globals; } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * The Akeeba Kickstart Factory class * This class is reponssible for instanciating all Akeeba Kicsktart classes */ class AKFactory { /** @var array A list of instanciated objects */ private $objectlist = array(); /** @var array Simple hash data storage */ private $varlist = array(); /** Private constructor makes sure we can't directly instanciate the class */ private function __construct() {} /** * Gets a single, internally used instance of the Factory * @param string $serialized_data [optional] Serialized data to spawn the instance from * @return AKFactory A reference to the unique Factory object instance */ protected static function &getInstance( $serialized_data = null ) { static $myInstance; if(!is_object($myInstance) || !is_null($serialized_data)) if(!is_null($serialized_data)) { $myInstance = unserialize($serialized_data); } else { $myInstance = new self(); } return $myInstance; } /** * Internal function which instanciates a class named $class_name. * The autoloader * @param object $class_name * @return */ protected static function &getClassInstance($class_name) { $self = self::getInstance(); if(!isset($self->objectlist[$class_name])) { $self->objectlist[$class_name] = new $class_name; } return $self->objectlist[$class_name]; } // ======================================================================== // Public factory interface // ======================================================================== /** * Gets a serialized snapshot of the Factory for safekeeping (hibernate) * @return string The serialized snapshot of the Factory */ public static function serialize() { $engine = self::getUnarchiver(); $engine->shutdown(); $serialized = serialize(self::getInstance()); if(function_exists('base64_encode') && function_exists('base64_decode')) { $serialized = base64_encode($serialized); } return $serialized; } /** * Regenerates the full Factory state from a serialized snapshot (resume) * @param string $serialized_data The serialized snapshot to resume from */ public static function unserialize($serialized_data) { if(function_exists('base64_encode') && function_exists('base64_decode')) { $serialized_data = base64_decode($serialized_data); } self::getInstance($serialized_data); } /** * Reset the internal factory state, freeing all previously created objects */ public static function nuke() { $self = self::getInstance(); foreach($self->objectlist as $key => $object) { $self->objectlist[$key] = null; } $self->objectlist = array(); } // ======================================================================== // Public hash data storage interface // ======================================================================== public static function set($key, $value) { $self = self::getInstance(); $self->varlist[$key] = $value; } public static function get($key, $default = null) { $self = self::getInstance(); if( array_key_exists($key, $self->varlist) ) { return $self->varlist[$key]; } else { return $default; } } // ======================================================================== // Akeeba Kickstart classes // ======================================================================== /** * Gets the post processing engine * @param string $proc_engine */ public static function &getPostProc($proc_engine = null) { static $class_name; if( empty($class_name) ) { if(empty($proc_engine)) { $proc_engine = self::get('kickstart.procengine','direct'); } $class_name = 'AKPostproc'.ucfirst($proc_engine); } return self::getClassInstance($class_name); } /** * Gets the unarchiver engine */ public static function &getUnarchiver( $configOverride = null ) { static $class_name; if(!empty($configOverride)) { if($configOverride['reset']) { $class_name = null; } } if( empty($class_name) ) { $filetype = self::get('kickstart.setup.filetype', null); if(empty($filetype)) { $filename = self::get('kickstart.setup.sourcefile', null); $basename = basename($filename); $baseextension = strtoupper(substr($basename,-3)); switch($baseextension) { case 'JPA': $filetype = 'JPA'; break; case 'JPS': $filetype = 'JPS'; break; case 'ZIP': $filetype = 'ZIP'; break; default: die('Invalid archive type or extension in file '.$filename); break; } } $class_name = 'AKUnarchiver'.ucfirst($filetype); } $destdir = self::get('kickstart.setup.destdir', null); if(empty($destdir)) { $destdir = KSROOTDIR; } $object = self::getClassInstance($class_name); if( $object->getState() == 'init') { $sourcePath = self::get('kickstart.setup.sourcepath', ''); $sourceFile = self::get('kickstart.setup.sourcefile', ''); if (!empty($sourcePath)) { $sourceFile = rtrim($sourcePath, '/\\') . '/' . $sourceFile; } // Initialize the object $config = array( 'filename' => $sourceFile, 'restore_permissions' => self::get('kickstart.setup.restoreperms', 0), 'post_proc' => self::get('kickstart.procengine', 'direct'), 'add_path' => self::get('kickstart.setup.targetpath', $destdir), 'rename_files' => array('.htaccess' => 'htaccess.bak', 'php.ini' => 'php.ini.bak', 'web.config' => 'web.config.bak'), 'skip_files' => array(basename(__FILE__), 'kickstart.php', 'abiautomation.ini', 'htaccess.bak', 'php.ini.bak', 'cacert.pem'), 'ignoredirectories' => array('tmp', 'log', 'logs'), ); if(!defined('KICKSTART')) { // In restore.php mode we have to exclude some more files $config['skip_files'][] = 'administrator/components/com_akeeba/restore.php'; $config['skip_files'][] = 'administrator/components/com_akeeba/restoration.php'; } if(!empty($configOverride)) { foreach($configOverride as $key => $value) { $config[$key] = $value; } } $object->setup($config); } return $object; } /** * Get the a reference to the Akeeba Engine's timer * @return AKCoreTimer */ public static function &getTimer() { return self::getClassInstance('AKCoreTimer'); } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * AES implementation in PHP (c) Chris Veness 2005-2013. * Right to use and adapt is granted for under a simple creative commons attribution * licence. No warranty of any form is offered. * * Modified for Akeeba Backup by Nicholas K. Dionysopoulos */ class AKEncryptionAES { // Sbox is pre-computed multiplicative inverse in GF(2^8) used in SubBytes and KeyExpansion [�5.1.1] protected static $Sbox = array(0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76, 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0, 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15, 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75, 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84, 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf, 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8, 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2, 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73, 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb, 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79, 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08, 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a, 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e, 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf, 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16); // Rcon is Round Constant used for the Key Expansion [1st col is 2^(r-1) in GF(2^8)] [�5.2] protected static $Rcon = array( array(0x00, 0x00, 0x00, 0x00), array(0x01, 0x00, 0x00, 0x00), array(0x02, 0x00, 0x00, 0x00), array(0x04, 0x00, 0x00, 0x00), array(0x08, 0x00, 0x00, 0x00), array(0x10, 0x00, 0x00, 0x00), array(0x20, 0x00, 0x00, 0x00), array(0x40, 0x00, 0x00, 0x00), array(0x80, 0x00, 0x00, 0x00), array(0x1b, 0x00, 0x00, 0x00), array(0x36, 0x00, 0x00, 0x00) ); protected static $passwords = array(); /** * AES Cipher function: encrypt 'input' with Rijndael algorithm * * @param input message as byte-array (16 bytes) * @param w key schedule as 2D byte-array (Nr+1 x Nb bytes) - * generated from the cipher key by KeyExpansion() * @return ciphertext as byte-array (16 bytes) */ protected static function Cipher($input, $w) { // main Cipher function [�5.1] $Nb = 4; // block size (in words): no of columns in state (fixed at 4 for AES) $Nr = count($w)/$Nb - 1; // no of rounds: 10/12/14 for 128/192/256-bit keys $state = array(); // initialise 4xNb byte-array 'state' with input [�3.4] for ($i=0; $i<4*$Nb; $i++) $state[$i%4][floor($i/4)] = $input[$i]; $state = self::AddRoundKey($state, $w, 0, $Nb); for ($round=1; $round<$Nr; $round++) { // apply Nr rounds $state = self::SubBytes($state, $Nb); $state = self::ShiftRows($state, $Nb); $state = self::MixColumns($state, $Nb); $state = self::AddRoundKey($state, $w, $round, $Nb); } $state = self::SubBytes($state, $Nb); $state = self::ShiftRows($state, $Nb); $state = self::AddRoundKey($state, $w, $Nr, $Nb); $output = array(4*$Nb); // convert state to 1-d array before returning [�3.4] for ($i=0; $i<4*$Nb; $i++) $output[$i] = $state[$i%4][floor($i/4)]; return $output; } protected static function AddRoundKey($state, $w, $rnd, $Nb) { // xor Round Key into state S [�5.1.4] for ($r=0; $r<4; $r++) { for ($c=0; $c<$Nb; $c++) $state[$r][$c] ^= $w[$rnd*4+$c][$r]; } return $state; } protected static function SubBytes($s, $Nb) { // apply SBox to state S [�5.1.1] for ($r=0; $r<4; $r++) { for ($c=0; $c<$Nb; $c++) $s[$r][$c] = self::$Sbox[$s[$r][$c]]; } return $s; } protected static function ShiftRows($s, $Nb) { // shift row r of state S left by r bytes [�5.1.2] $t = array(4); for ($r=1; $r<4; $r++) { for ($c=0; $c<4; $c++) $t[$c] = $s[$r][($c+$r)%$Nb]; // shift into temp copy for ($c=0; $c<4; $c++) $s[$r][$c] = $t[$c]; // and copy back } // note that this will work for Nb=4,5,6, but not 7,8 (always 4 for AES): return $s; // see fp.gladman.plus.com/cryptography_technology/rijndael/aes.spec.311.pdf } protected static function MixColumns($s, $Nb) { // combine bytes of each col of state S [�5.1.3] for ($c=0; $c<4; $c++) { $a = array(4); // 'a' is a copy of the current column from 's' $b = array(4); // 'b' is a�{02} in GF(2^8) for ($i=0; $i<4; $i++) { $a[$i] = $s[$i][$c]; $b[$i] = $s[$i][$c]&0x80 ? $s[$i][$c]<<1 ^ 0x011b : $s[$i][$c]<<1; } // a[n] ^ b[n] is a�{03} in GF(2^8) $s[0][$c] = $b[0] ^ $a[1] ^ $b[1] ^ $a[2] ^ $a[3]; // 2*a0 + 3*a1 + a2 + a3 $s[1][$c] = $a[0] ^ $b[1] ^ $a[2] ^ $b[2] ^ $a[3]; // a0 * 2*a1 + 3*a2 + a3 $s[2][$c] = $a[0] ^ $a[1] ^ $b[2] ^ $a[3] ^ $b[3]; // a0 + a1 + 2*a2 + 3*a3 $s[3][$c] = $a[0] ^ $b[0] ^ $a[1] ^ $a[2] ^ $b[3]; // 3*a0 + a1 + a2 + 2*a3 } return $s; } /** * Key expansion for Rijndael Cipher(): performs key expansion on cipher key * to generate a key schedule * * @param key cipher key byte-array (16 bytes) * @return key schedule as 2D byte-array (Nr+1 x Nb bytes) */ protected static function KeyExpansion($key) { // generate Key Schedule from Cipher Key [�5.2] $Nb = 4; // block size (in words): no of columns in state (fixed at 4 for AES) $Nk = count($key)/4; // key length (in words): 4/6/8 for 128/192/256-bit keys $Nr = $Nk + 6; // no of rounds: 10/12/14 for 128/192/256-bit keys $w = array(); $temp = array(); for ($i=0; $i<$Nk; $i++) { $r = array($key[4*$i], $key[4*$i+1], $key[4*$i+2], $key[4*$i+3]); $w[$i] = $r; } for ($i=$Nk; $i<($Nb*($Nr+1)); $i++) { $w[$i] = array(); for ($t=0; $t<4; $t++) $temp[$t] = $w[$i-1][$t]; if ($i % $Nk == 0) { $temp = self::SubWord(self::RotWord($temp)); for ($t=0; $t<4; $t++) $temp[$t] ^= self::$Rcon[$i/$Nk][$t]; } else if ($Nk > 6 && $i%$Nk == 4) { $temp = self::SubWord($temp); } for ($t=0; $t<4; $t++) $w[$i][$t] = $w[$i-$Nk][$t] ^ $temp[$t]; } return $w; } protected static function SubWord($w) { // apply SBox to 4-byte word w for ($i=0; $i<4; $i++) $w[$i] = self::$Sbox[$w[$i]]; return $w; } protected static function RotWord($w) { // rotate 4-byte word w left by one byte $tmp = $w[0]; for ($i=0; $i<3; $i++) $w[$i] = $w[$i+1]; $w[3] = $tmp; return $w; } /* * Unsigned right shift function, since PHP has neither >>> operator nor unsigned ints * * @param a number to be shifted (32-bit integer) * @param b number of bits to shift a to the right (0..31) * @return a right-shifted and zero-filled by b bits */ protected static function urs($a, $b) { $a &= 0xffffffff; $b &= 0x1f; // (bounds check) if ($a&0x80000000 && $b>0) { // if left-most bit set $a = ($a>>1) & 0x7fffffff; // right-shift one bit & clear left-most bit $a = $a >> ($b-1); // remaining right-shifts } else { // otherwise $a = ($a>>$b); // use normal right-shift } return $a; } /** * Encrypt a text using AES encryption in Counter mode of operation * - see http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf * * Unicode multi-byte character safe * * @param plaintext source text to be encrypted * @param password the password to use to generate a key * @param nBits number of bits to be used in the key (128, 192, or 256) * @return encrypted text */ public static function AESEncryptCtr($plaintext, $password, $nBits) { $blockSize = 16; // block size fixed at 16 bytes / 128 bits (Nb=4) for AES if (!($nBits==128 || $nBits==192 || $nBits==256)) return ''; // standard allows 128/192/256 bit keys // note PHP (5) gives us plaintext and password in UTF8 encoding! // use AES itself to encrypt password to get cipher key (using plain password as source for // key expansion) - gives us well encrypted key $nBytes = $nBits/8; // no bytes in key $pwBytes = array(); for ($i=0; $i<$nBytes; $i++) $pwBytes[$i] = ord(substr($password,$i,1)) & 0xff; $key = self::Cipher($pwBytes, self::KeyExpansion($pwBytes)); $key = array_merge($key, array_slice($key, 0, $nBytes-16)); // expand key to 16/24/32 bytes long // initialise counter block (NIST SP800-38A �B.2): millisecond time-stamp for nonce in // 1st 8 bytes, block counter in 2nd 8 bytes $counterBlock = array(); $nonce = floor(microtime(true)*1000); // timestamp: milliseconds since 1-Jan-1970 $nonceSec = floor($nonce/1000); $nonceMs = $nonce%1000; // encode nonce with seconds in 1st 4 bytes, and (repeated) ms part filling 2nd 4 bytes for ($i=0; $i<4; $i++) $counterBlock[$i] = self::urs($nonceSec, $i*8) & 0xff; for ($i=0; $i<4; $i++) $counterBlock[$i+4] = $nonceMs & 0xff; // and convert it to a string to go on the front of the ciphertext $ctrTxt = ''; for ($i=0; $i<8; $i++) $ctrTxt .= chr($counterBlock[$i]); // generate key schedule - an expansion of the key into distinct Key Rounds for each round $keySchedule = self::KeyExpansion($key); $blockCount = ceil(strlen($plaintext)/$blockSize); $ciphertxt = array(); // ciphertext as array of strings for ($b=0; $b<$blockCount; $b++) { // set counter (block #) in last 8 bytes of counter block (leaving nonce in 1st 8 bytes) // done in two stages for 32-bit ops: using two words allows us to go past 2^32 blocks (68GB) for ($c=0; $c<4; $c++) $counterBlock[15-$c] = self::urs($b, $c*8) & 0xff; for ($c=0; $c<4; $c++) $counterBlock[15-$c-4] = self::urs($b/0x100000000, $c*8); $cipherCntr = self::Cipher($counterBlock, $keySchedule); // -- encrypt counter block -- // block size is reduced on final block $blockLength = $b<$blockCount-1 ? $blockSize : (strlen($plaintext)-1)%$blockSize+1; $cipherByte = array(); for ($i=0; $i<$blockLength; $i++) { // -- xor plaintext with ciphered counter byte-by-byte -- $cipherByte[$i] = $cipherCntr[$i] ^ ord(substr($plaintext, $b*$blockSize+$i, 1)); $cipherByte[$i] = chr($cipherByte[$i]); } $ciphertxt[$b] = implode('', $cipherByte); // escape troublesome characters in ciphertext } // implode is more efficient than repeated string concatenation $ciphertext = $ctrTxt . implode('', $ciphertxt); $ciphertext = base64_encode($ciphertext); return $ciphertext; } /** * Decrypt a text encrypted by AES in counter mode of operation * * @param ciphertext source text to be decrypted * @param password the password to use to generate a key * @param nBits number of bits to be used in the key (128, 192, or 256) * @return decrypted text */ public static function AESDecryptCtr($ciphertext, $password, $nBits) { $blockSize = 16; // block size fixed at 16 bytes / 128 bits (Nb=4) for AES if (!($nBits==128 || $nBits==192 || $nBits==256)) return ''; // standard allows 128/192/256 bit keys $ciphertext = base64_decode($ciphertext); // use AES to encrypt password (mirroring encrypt routine) $nBytes = $nBits/8; // no bytes in key $pwBytes = array(); for ($i=0; $i<$nBytes; $i++) $pwBytes[$i] = ord(substr($password,$i,1)) & 0xff; $key = self::Cipher($pwBytes, self::KeyExpansion($pwBytes)); $key = array_merge($key, array_slice($key, 0, $nBytes-16)); // expand key to 16/24/32 bytes long // recover nonce from 1st element of ciphertext $counterBlock = array(); $ctrTxt = substr($ciphertext, 0, 8); for ($i=0; $i<8; $i++) $counterBlock[$i] = ord(substr($ctrTxt,$i,1)); // generate key schedule $keySchedule = self::KeyExpansion($key); // separate ciphertext into blocks (skipping past initial 8 bytes) $nBlocks = ceil((strlen($ciphertext)-8) / $blockSize); $ct = array(); for ($b=0; $b<$nBlocks; $b++) $ct[$b] = substr($ciphertext, 8+$b*$blockSize, 16); $ciphertext = $ct; // ciphertext is now array of block-length strings // plaintext will get generated block-by-block into array of block-length strings $plaintxt = array(); for ($b=0; $b<$nBlocks; $b++) { // set counter (block #) in last 8 bytes of counter block (leaving nonce in 1st 8 bytes) for ($c=0; $c<4; $c++) $counterBlock[15-$c] = self::urs($b, $c*8) & 0xff; for ($c=0; $c<4; $c++) $counterBlock[15-$c-4] = self::urs(($b+1)/0x100000000-1, $c*8) & 0xff; $cipherCntr = self::Cipher($counterBlock, $keySchedule); // encrypt counter block $plaintxtByte = array(); for ($i=0; $i<strlen($ciphertext[$b]); $i++) { // -- xor plaintext with ciphered counter byte-by-byte -- $plaintxtByte[$i] = $cipherCntr[$i] ^ ord(substr($ciphertext[$b],$i,1)); $plaintxtByte[$i] = chr($plaintxtByte[$i]); } $plaintxt[$b] = implode('', $plaintxtByte); } // join array of blocks into single plaintext string $plaintext = implode('',$plaintxt); return $plaintext; } /** * AES decryption in CBC mode. This is the standard mode (the CTR methods * actually use Rijndael-128 in CTR mode, which - technically - isn't AES). * * Supports AES-128, AES-192 and AES-256. It supposes that the last 4 bytes * contained a little-endian unsigned long integer representing the unpadded * data length. * * @since 3.0.1 * @author Nicholas K. Dionysopoulos * * @param string $ciphertext The data to encrypt * @param string $password Encryption password * @param int $nBits Encryption key size. Can be 128, 192 or 256 * @return string The plaintext */ public static function AESDecryptCBC($ciphertext, $password, $nBits = 128) { if (!($nBits==128 || $nBits==192 || $nBits==256)) return false; // standard allows 128/192/256 bit keys if(!function_exists('mcrypt_module_open')) return false; // Try to fetch cached key/iv or create them if they do not exist $lookupKey = $password.'-'.$nBits; if(array_key_exists($lookupKey, self::$passwords)) { $key = self::$passwords[$lookupKey]['key']; $iv = self::$passwords[$lookupKey]['iv']; } else { // use AES itself to encrypt password to get cipher key (using plain password as source for // key expansion) - gives us well encrypted key $nBytes = $nBits/8; // no bytes in key $pwBytes = array(); for ($i=0; $i<$nBytes; $i++) $pwBytes[$i] = ord(substr($password,$i,1)) & 0xff; $key = self::Cipher($pwBytes, self::KeyExpansion($pwBytes)); $key = array_merge($key, array_slice($key, 0, $nBytes-16)); // expand key to 16/24/32 bytes long $newKey = ''; foreach($key as $int) { $newKey .= chr($int); } $key = $newKey; // Create an Initialization Vector (IV) based on the password, using the same technique as for the key $nBytes = 16; // AES uses a 128 -bit (16 byte) block size, hence the IV size is always 16 bytes $pwBytes = array(); for ($i=0; $i<$nBytes; $i++) $pwBytes[$i] = ord(substr($password,$i,1)) & 0xff; $iv = self::Cipher($pwBytes, self::KeyExpansion($pwBytes)); $newIV = ''; foreach($iv as $int) { $newIV .= chr($int); } $iv = $newIV; self::$passwords[$lookupKey]['key'] = $key; self::$passwords[$lookupKey]['iv'] = $iv; } // Read the data size $data_size = unpack('V', substr($ciphertext,-4) ); // Decrypt $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); mcrypt_generic_init($td, $key, $iv); $plaintext = mdecrypt_generic($td, substr($ciphertext,0,-4)); mcrypt_generic_deinit($td); // Trim padding, if necessary if(strlen($plaintext) > $data_size) { $plaintext = substr($plaintext, 0, $data_size); } return $plaintext; } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ /** * The Master Setup will read the configuration parameters from restoration.php or * the JSON-encoded "configuration" input variable and return the status. * * @return bool True if the master configuration was applied to the Factory object */ function masterSetup() { // ------------------------------------------------------------ // 1. Import basic setup parameters // ------------------------------------------------------------ $ini_data = null; // In restore.php mode, require restoration.php or fail if (!defined('KICKSTART')) { // This is the standalone mode, used by Akeeba Backup Professional. It looks for a restoration.php // file to perform its magic. If the file is not there, we will abort. $setupFile = 'restoration.php'; if (!file_exists($setupFile)) { AKFactory::set('kickstart.enabled', false); return false; } // Load restoration.php. It creates a global variable named $restoration_setup require_once $setupFile; $ini_data = $restoration_setup; if (empty($ini_data)) { // No parameters fetched. Darn, how am I supposed to work like that?! AKFactory::set('kickstart.enabled', false); return false; } AKFactory::set('kickstart.enabled', true); } else { // Maybe we have $restoration_setup defined in the head of kickstart.php global $restoration_setup; if (!empty($restoration_setup) && !is_array($restoration_setup)) { $ini_data = AKText::parse_ini_file($restoration_setup, false, true); } elseif (is_array($restoration_setup)) { $ini_data = $restoration_setup; } } // Import any data from $restoration_setup if (!empty($ini_data)) { foreach ($ini_data as $key => $value) { AKFactory::set($key, $value); } AKFactory::set('kickstart.enabled', true); } // Reinitialize $ini_data $ini_data = null; // ------------------------------------------------------------ // 2. Explode JSON parameters into $_REQUEST scope // ------------------------------------------------------------ // Detect a JSON string in the request variable and store it. $json = getQueryParam('json', null); // Remove everything from the request, post and get arrays if (!empty($_REQUEST)) { foreach ($_REQUEST as $key => $value) { unset($_REQUEST[$key]); } } if (!empty($_POST)) { foreach ($_POST as $key => $value) { unset($_POST[$key]); } } if (!empty($_GET)) { foreach ($_GET as $key => $value) { unset($_GET[$key]); } } // Decrypt a possibly encrypted JSON string $password = AKFactory::get('kickstart.security.password', null); if (!empty($json)) { if (!empty($password)) { $json = AKEncryptionAES::AESDecryptCtr($json, $password, 128); if (empty($json)) { die('###{"status":false,"message":"Invalid login"}###'); } } // Get the raw data $raw = json_decode($json, true); if (!empty($password) && (empty($raw))) { die('###{"status":false,"message":"Invalid login"}###'); } // Pass all JSON data to the request array if (!empty($raw)) { foreach ($raw as $key => $value) { $_REQUEST[$key] = $value; } } } elseif (!empty($password)) { die('###{"status":false,"message":"Invalid login"}###'); } // ------------------------------------------------------------ // 3. Try the "factory" variable // ------------------------------------------------------------ // A "factory" variable will override all other settings. $serialized = getQueryParam('factory', null); if (!is_null($serialized)) { // Get the serialized factory AKFactory::unserialize($serialized); AKFactory::set('kickstart.enabled', true); return true; } // ------------------------------------------------------------ // 4. Try the configuration variable for Kickstart // ------------------------------------------------------------ if (defined('KICKSTART')) { $configuration = getQueryParam('configuration'); if (!is_null($configuration)) { // Let's decode the configuration from JSON to array $ini_data = json_decode($configuration, true); } else { // Neither exists. Enable Kickstart's interface anyway. $ini_data = array('kickstart.enabled' => true); } // Import any INI data we might have from other sources if (!empty($ini_data)) { foreach ($ini_data as $key => $value) { AKFactory::set($key, $value); } AKFactory::set('kickstart.enabled', true); return true; } } } /** * Akeeba Restore * A JSON-powered JPA, JPS and ZIP archive extraction library * * @copyright 2010-2014 Nicholas K. Dionysopoulos / Akeeba Ltd. * @license GNU GPL v2 or - at your option - any later version * @package akeebabackup * @subpackage kickstart */ // Mini-controller for restore.php if(!defined('KICKSTART')) { // The observer class, used to report number of files and bytes processed class RestorationObserver extends AKAbstractPartObserver { public $compressedTotal = 0; public $uncompressedTotal = 0; public $filesProcessed = 0; public function update($object, $message) { if(!is_object($message)) return; if( !array_key_exists('type', get_object_vars($message)) ) return; if( $message->type == 'startfile' ) { $this->filesProcessed++; $this->compressedTotal += $message->content->compressed; $this->uncompressedTotal += $message->content->uncompressed; } } public function __toString() { return __CLASS__; } } // Import configuration masterSetup(); $retArray = array( 'status' => true, 'message' => null ); $enabled = AKFactory::get('kickstart.enabled', false); if($enabled) { $task = getQueryParam('task'); switch($task) { case 'ping': // ping task - realy does nothing! $timer = AKFactory::getTimer(); $timer->enforce_min_exec_time(); break; case 'startRestore': AKFactory::nuke(); // Reset the factory // Let the control flow to the next step (the rest of the code is common!!) case 'stepRestore': $engine = AKFactory::getUnarchiver(); // Get the engine $observer = new RestorationObserver(); // Create a new observer $engine->attach($observer); // Attach the observer $engine->tick(); $ret = $engine->getStatusArray(); if( $ret['Error'] != '' ) { $retArray['status'] = false; $retArray['done'] = true; $retArray['message'] = $ret['Error']; } elseif( !$ret['HasRun'] ) { $retArray['files'] = $observer->filesProcessed; $retArray['bytesIn'] = $observer->compressedTotal; $retArray['bytesOut'] = $observer->uncompressedTotal; $retArray['status'] = true; $retArray['done'] = true; } else { $retArray['files'] = $observer->filesProcessed; $retArray['bytesIn'] = $observer->compressedTotal; $retArray['bytesOut'] = $observer->uncompressedTotal; $retArray['status'] = true; $retArray['done'] = false; $retArray['factory'] = AKFactory::serialize(); } break; case 'finalizeRestore': $root = AKFactory::get('kickstart.setup.destdir'); // Remove the installation directory recursive_remove_directory( $root.'/installation' ); $postproc = AKFactory::getPostProc(); // Rename htaccess.bak to .htaccess if(file_exists($root.'/htaccess.bak')) { if( file_exists($root.'/.htaccess') ) { $postproc->unlink($root.'/.htaccess'); } $postproc->rename( $root.'/htaccess.bak', $root.'/.htaccess' ); } // Rename htaccess.bak to .htaccess if(file_exists($root.'/web.config.bak')) { if( file_exists($root.'/web.config') ) { $postproc->unlink($root.'/web.config'); } $postproc->rename( $root.'/web.config.bak', $root.'/web.config' ); } // Remove restoration.php $basepath = KSROOTDIR; $basepath = rtrim( str_replace('\\','/',$basepath), '/' ); if(!empty($basepath)) $basepath .= '/'; $postproc->unlink( $basepath.'restoration.php' ); // Import a custom finalisation file if (file_exists(dirname(__FILE__) . '/restore_finalisation.php')) { include_once dirname(__FILE__) . '/restore_finalisation.php'; } // Run a custom finalisation script if (function_exists('finalizeRestore')) { finalizeRestore($root, $basepath); } break; default: // Invalid task! $enabled = false; break; } } // Maybe we weren't authorized or the task was invalid? if(!$enabled) { // Maybe the user failed to enter any information $retArray['status'] = false; $retArray['message'] = AKText::_('ERR_INVALID_LOGIN'); } // JSON encode the message $json = json_encode($retArray); // Do I have to encrypt? $password = AKFactory::get('kickstart.security.password', null); if(!empty($password)) { $json = AKEncryptionAES::AESEncryptCtr($json, $password, 128); } // Return the message echo "###$json###"; } // ------------ lixlpixel recursive PHP functions ------------- // recursive_remove_directory( directory to delete, empty ) // expects path to directory and optional TRUE / FALSE to empty // of course PHP has to have the rights to delete the directory // you specify and all files and folders inside the directory // ------------------------------------------------------------ function recursive_remove_directory($directory) { // if the path has a slash at the end we remove it here if(substr($directory,-1) == '/') { $directory = substr($directory,0,-1); } // if the path is not valid or is not a directory ... if(!file_exists($directory) || !is_dir($directory)) { // ... we return false and exit the function return FALSE; // ... if the path is not readable }elseif(!is_readable($directory)) { // ... we return false and exit the function return FALSE; // ... else if the path is readable }else{ // we open the directory $handle = opendir($directory); $postproc = AKFactory::getPostProc(); // and scan through the items inside while (FALSE !== ($item = readdir($handle))) { // if the filepointer is not the current directory // or the parent directory if($item != '.' && $item != '..') { // we build the new path to delete $path = $directory.'/'.$item; // if the new path is a directory if(is_dir($path)) { // we call this function with the new path recursive_remove_directory($path); // if the new path is a file }else{ // we remove the file $postproc->unlink($path); } } } // close the directory closedir($handle); // try to delete the now empty directory if(!$postproc->rmdir($directory)) { // return false if not possible return FALSE; } // return success return TRUE; } } PKc��\���uuNuN.components/com_joomlaupdate/models/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_joomlaupdate * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); /** * Joomla! update overview Model * * @since 2.5.4 */ class JoomlaupdateModelDefault extends JModelLegacy { /** * Detects if the Joomla! update site currently in use matches the one * configured in this component. If they don't match, it changes it. * * @return void * * @since 2.5.4 */ public function applyUpdateSite() { // Determine the intended update URL. $params = JComponentHelper::getParams('com_joomlaupdate'); switch ($params->get('updatesource', 'nochange')) { // "Minor & Patch Release for Current version AND Next Major Release". case 'sts': case 'next': $updateURL = 'http://update.joomla.org/core/sts/list_sts.xml'; break; // "Testing" case 'testing': $updateURL = 'http://update.joomla.org/core/test/list_test.xml'; break; // "Custom" // TODO: check if the customurl is valid and not just "not empty". case 'custom': if (trim($params->get('customurl', '')) != '') { $updateURL = trim($params->get('customurl', '')); } else { return JError::raiseWarning(403, JText::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_CUSTOM_ERROR')); } break; /** * "Minor & Patch Release for Current version (recommended and default)". * The commented "case" below are for documenting where 'default' and legacy options falls * case 'default': * case 'lts': * case 'nochange': */ default: $updateURL = 'http://update.joomla.org/core/list.xml'; } $db = $this->getDbo(); $query = $db->getQuery(true) ->select($db->quoteName('us') . '.*') ->from($db->quoteName('#__update_sites_extensions') . ' AS ' . $db->quoteName('map')) ->join( 'INNER', $db->quoteName('#__update_sites') . ' AS ' . $db->quoteName('us') . ' ON (' . 'us.update_site_id = map.update_site_id)' ) ->where('map.extension_id = ' . $db->quote(700)); $db->setQuery($query); $update_site = $db->loadObject(); if ($update_site->location != $updateURL) { // Modify the database record. $update_site->last_check_timestamp = 0; $update_site->location = $updateURL; $db->updateObject('#__update_sites', $update_site, 'update_site_id'); // Remove cached updates. $query->clear() ->delete($db->quoteName('#__updates')) ->where($db->quoteName('extension_id') . ' = ' . $db->quote('700')); $db->setQuery($query); $db->execute(); } } /** * Makes sure that the Joomla! update cache is up-to-date. * * @param boolean $force Force reload, ignoring the cache timeout. * * @return void * * @since 2.5.4 */ public function refreshUpdates($force = false) { if ($force) { $cache_timeout = 0; } else { $update_params = JComponentHelper::getParams('com_installer'); $cache_timeout = $update_params->get('cachetimeout', 6, 'int'); $cache_timeout = 3600 * $cache_timeout; } $updater = JUpdater::getInstance(); $updater->findUpdates(700, $cache_timeout); } /** * Returns an array with the Joomla! update information. * * @return array * * @since 2.5.4 */ public function getUpdateInformation() { // Initialise the return array. $ret = array( 'installed' => JVERSION, 'latest' => null, 'object' => null ); // Fetch the update information from the database. $db = $this->getDbo(); $query = $db->getQuery(true) ->select('*') ->from($db->quoteName('#__updates')) ->where($db->quoteName('extension_id') . ' = ' . $db->quote(700)); $db->setQuery($query); $updateObject = $db->loadObject(); if (is_null($updateObject)) { $ret['latest'] = JVERSION; return $ret; } else { $ret['latest'] = $updateObject->version; } // Fetch the full update details from the update details URL. jimport('joomla.updater.update'); $update = new JUpdate; $update->loadFromXML($updateObject->detailsurl); // Pass the update object. if ($ret['latest'] == JVERSION) { $ret['object'] = null; } else { $ret['object'] = $update; } return $ret; } /** * Returns an array with the configured FTP options. * * @return array * * @since 2.5.4 */ public function getFTPOptions() { $config = JFactory::getConfig(); return array( 'host' => $config->get('ftp_host'), 'port' => $config->get('ftp_port'), 'username' => $config->get('ftp_user'), 'password' => $config->get('ftp_pass'), 'directory' => $config->get('ftp_root'), 'enabled' => $config->get('ftp_enable'), ); } /** * Removes all of the updates from the table and enable all update streams. * * @return boolean Result of operation. * * @since 3.0 */ public function purge() { $db = $this->getDbo(); // Modify the database record $update_site = new stdClass; $update_site->last_check_timestamp = 0; $update_site->enabled = 1; $update_site->update_site_id = 1; $db->updateObject('#__update_sites', $update_site, 'update_site_id'); $query = $db->getQuery(true) ->delete($db->quoteName('#__updates')) ->where($db->quoteName('update_site_id') . ' = ' . $db->quote('1')); $db->setQuery($query); if ($db->execute()) { $this->_message = JText::_('JLIB_INSTALLER_PURGED_UPDATES'); return true; } else { $this->_message = JText::_('JLIB_INSTALLER_FAILED_TO_PURGE_UPDATES'); return false; } } /** * Downloads the update package to the site. * * @return bool|string False on failure, basename of the file in any other case. * * @since 2.5.4 */ public function download() { $updateInfo = $this->getUpdateInformation(); $packageURL = $updateInfo['object']->downloadurl->_data; $basename = basename($packageURL); // Find the path to the temp directory and the local package. $config = JFactory::getConfig(); $tempdir = $config->get('tmp_path'); $target = $tempdir . '/' . $basename; // Do we have a cached file? $exists = JFile::exists($target); if (!$exists) { // Not there, let's fetch it. return $this->downloadPackage($packageURL, $target); } else { // Is it a 0-byte file? If so, re-download please. $filesize = @filesize($target); if (empty($filesize)) { return $this->downloadPackage($packageURL, $target); } // Yes, it's there, skip downloading. return $basename; } } /** * Downloads a package file to a specific directory * * @param string $url The URL to download from * @param string $target The directory to store the file * * @return boolean True on success * * @since 2.5.4 */ protected function downloadPackage($url, $target) { JLoader::import('helpers.download', JPATH_COMPONENT_ADMINISTRATOR); JLog::add(JText::sprintf('COM_JOOMLAUPDATE_UPDATE_LOG_URL', $url), JLog::INFO, 'Update'); $result = AdmintoolsHelperDownload::download($url, $target); if (!$result) { return false; } else { return basename($target); } } /** * Create restoration file. * * @param string $basename Optional base path to the file. * * @return boolean True if successful; false otherwise. * * @since 2.5.4 */ public function createRestorationFile($basename = null) { // Get a password $password = JUserHelper::genRandomPassword(32); $app = JFactory::getApplication(); $app->setUserState('com_joomlaupdate.password', $password); // Do we have to use FTP? $method = $app->input->get('method', 'direct'); // Get the absolute path to site's root. $siteroot = JPATH_SITE; // If the package name is not specified, get it from the update info. if (empty($basename)) { $updateInfo = $this->getUpdateInformation(); $packageURL = $updateInfo['object']->downloadurl->_data; $basename = basename($packageURL); } // Get the package name. $config = JFactory::getConfig(); $tempdir = $config->get('tmp_path'); $file = $tempdir . '/' . $basename; $filesize = @filesize($file); $app->setUserState('com_joomlaupdate.password', $password); $app->setUserState('com_joomlaupdate.filesize', $filesize); $data = "<?php\ndefined('_AKEEBA_RESTORATION') or die('Restricted access');\n"; $data .= '$restoration_setup = array(' . "\n"; $data .= <<<ENDDATA 'kickstart.security.password' => '$password', 'kickstart.tuning.max_exec_time' => '5', 'kickstart.tuning.run_time_bias' => '75', 'kickstart.tuning.min_exec_time' => '0', 'kickstart.procengine' => '$method', 'kickstart.setup.sourcefile' => '$file', 'kickstart.setup.destdir' => '$siteroot', 'kickstart.setup.restoreperms' => '0', 'kickstart.setup.filetype' => 'zip', 'kickstart.setup.dryrun' => '0' ENDDATA; if ($method == 'ftp') { /* * Fetch the FTP parameters from the request. Note: The password should be * allowed as raw mode, otherwise something like !@<sdf34>43H% would be * sanitised to !@43H% which is just plain wrong. */ $ftp_host = $app->input->get('ftp_host', ''); $ftp_port = $app->input->get('ftp_port', '21'); $ftp_user = $app->input->get('ftp_user', ''); $ftp_pass = $app->input->get('ftp_pass', '', 'default', 'none', 2); $ftp_root = $app->input->get('ftp_root', ''); // Is the tempdir really writable? $writable = @is_writeable($tempdir); if ($writable) { // Let's be REALLY sure. $fp = @fopen($tempdir . '/test.txt', 'w'); if ($fp === false) { $writable = false; } else { fclose($fp); unlink($tempdir . '/test.txt'); } } // If the tempdir is not writable, create a new writable subdirectory. if (!$writable) { $FTPOptions = JClientHelper::getCredentials('ftp'); $ftp = JClientFtp::getInstance($FTPOptions['host'], $FTPOptions['port'], null, $FTPOptions['user'], $FTPOptions['pass']); $dest = JPath::clean(str_replace(JPATH_ROOT, $FTPOptions['root'], $tempdir . '/admintools'), '/'); if (!@mkdir($tempdir . '/admintools')) { $ftp->mkdir($dest); } if (!@chmod($tempdir . '/admintools', 511)) { $ftp->chmod($dest, 511); } $tempdir .= '/admintools'; } // Just in case the temp-directory was off-root, try using the default tmp directory. $writable = @is_writeable($tempdir); if (!$writable) { $tempdir = JPATH_ROOT . '/tmp'; // Does the JPATH_ROOT/tmp directory exist? if (!is_dir($tempdir)) { JFolder::create($tempdir, 511); JFile::write($tempdir . '/.htaccess', "order deny,allow\ndeny from all\nallow from none\n"); } // If it exists and it is unwritable, try creating a writable admintools subdirectory. if (!is_writable($tempdir)) { $FTPOptions = JClientHelper::getCredentials('ftp'); $ftp = JClientFtp::getInstance($FTPOptions['host'], $FTPOptions['port'], null, $FTPOptions['user'], $FTPOptions['pass']); $dest = JPath::clean(str_replace(JPATH_ROOT, $FTPOptions['root'], $tempdir . '/admintools'), '/'); if (!@mkdir($tempdir . '/admintools')) { $ftp->mkdir($dest); } if (!@chmod($tempdir . '/admintools', 511)) { $ftp->chmod($dest, 511); } $tempdir .= '/admintools'; } } // If we still have no writable directory, we'll try /tmp and the system's temp-directory. $writable = @is_writeable($tempdir); if (!$writable) { if (@is_dir('/tmp') && @is_writable('/tmp')) { $tempdir = '/tmp'; } else { // Try to find the system temp path. $tmpfile = @tempnam("dummy", ""); $systemp = @dirname($tmpfile); @unlink($tmpfile); if (!empty($systemp)) { if (@is_dir($systemp) && @is_writable($systemp)) { $tempdir = $systemp; } } } } $data .= <<<ENDDATA , 'kickstart.ftp.ssl' => '0', 'kickstart.ftp.passive' => '1', 'kickstart.ftp.host' => '$ftp_host', 'kickstart.ftp.port' => '$ftp_port', 'kickstart.ftp.user' => '$ftp_user', 'kickstart.ftp.pass' => '$ftp_pass', 'kickstart.ftp.dir' => '$ftp_root', 'kickstart.ftp.tempdir' => '$tempdir' ENDDATA; } $data .= ');'; // Remove the old file, if it's there... $configpath = JPATH_COMPONENT_ADMINISTRATOR . '/restoration.php'; if (JFile::exists($configpath)) { JFile::delete($configpath); } // Write new file. First try with JFile. $result = JFile::write($configpath, $data); // In case JFile used FTP but direct access could help. if (!$result) { if (function_exists('file_put_contents')) { $result = @file_put_contents($configpath, $data); if ($result !== false) { $result = true; } } else { $fp = @fopen($configpath, 'wt'); if ($fp !== false) { $result = @fwrite($fp, $data); if ($result !== false) { $result = true; } @fclose($fp); } } } return $result; } /** * Runs the schema update SQL files, the PHP update script and updates the * manifest cache and #__extensions entry. Essentially, it is identical to * JInstallerFile::install() without the file copy. * * @return boolean True on success. * * @since 2.5.4 */ public function finaliseUpgrade() { $installer = JInstaller::getInstance(); $installer->setPath('source', JPATH_ROOT); $installer->setPath('extension_root', JPATH_ROOT); if (!$installer->setupInstall()) { $installer->abort(JText::_('JLIB_INSTALLER_ABORT_DETECTMANIFEST')); return false; } $installer->extension = JTable::getInstance('extension'); $installer->extension->load(700); $installer->setAdapter($installer->extension->type); $manifest = $installer->getManifest(); $manifestPath = JPath::clean($installer->getPath('manifest')); $element = preg_replace('/\.xml/', '', basename($manifestPath)); // Run the script file. $manifestScript = (string) $manifest->scriptfile; if ($manifestScript) { $manifestScriptFile = JPATH_ROOT . '/' . $manifestScript; if (is_file($manifestScriptFile)) { // Load the file. include_once $manifestScriptFile; } $classname = 'JoomlaInstallerScript'; if (class_exists($classname)) { $manifestClass = new $classname($this); } } ob_start(); ob_implicit_flush(false); if ($manifestClass && method_exists($manifestClass, 'preflight')) { if ($manifestClass->preflight('update', $this) === false) { $installer->abort(JText::_('JLIB_INSTALLER_ABORT_FILE_INSTALL_CUSTOM_INSTALL_FAILURE')); return false; } } // Create msg object; first use here. $msg = ob_get_contents(); ob_end_clean(); // Get a database connector object. $db = $this->getDbo(); /* * Check to see if a file extension by the same name is already installed. * If it is, then update the table because if the files aren't there * we can assume that it was (badly) uninstalled. * If it isn't, add an entry to extensions. */ $query = $db->getQuery(true) ->select($db->quoteName('extension_id')) ->from($db->quoteName('#__extensions')) ->where($db->quoteName('type') . ' = ' . $db->quote('file')) ->where($db->quoteName('element') . ' = ' . $db->quote('joomla')); $db->setQuery($query); try { $db->execute(); } catch (RuntimeException $e) { // Install failed, roll back changes. $installer->abort( JText::sprintf('JLIB_INSTALLER_ABORT_FILE_ROLLBACK', JText::_('JLIB_INSTALLER_UPDATE'), $db->stderr(true)) ); return false; } $id = $db->loadResult(); $row = JTable::getInstance('extension'); if ($id) { // Load the entry and update the manifest_cache. $row->load($id); // Update name. $row->set('name', 'files_joomla'); // Update manifest. $row->manifest_cache = $installer->generateManifestCache(); if (!$row->store()) { // Install failed, roll back changes. $installer->abort( JText::sprintf('JLIB_INSTALLER_ABORT_FILE_ROLLBACK', JText::_('JLIB_INSTALLER_UPDATE'), $db->stderr(true)) ); return false; } } else { // Add an entry to the extension table with a whole heap of defaults. $row->set('name', 'files_joomla'); $row->set('type', 'file'); $row->set('element', 'joomla'); // There is no folder for files so leave it blank. $row->set('folder', ''); $row->set('enabled', 1); $row->set('protected', 0); $row->set('access', 0); $row->set('client_id', 0); $row->set('params', ''); $row->set('system_data', ''); $row->set('manifest_cache', $installer->generateManifestCache()); if (!$row->store()) { // Install failed, roll back changes. $installer->abort(JText::sprintf('JLIB_INSTALLER_ABORT_FILE_INSTALL_ROLLBACK', $db->stderr(true))); return false; } // Set the insert id. $row->set('extension_id', $db->insertid()); // Since we have created a module item, we add it to the installation step stack // so that if we have to rollback the changes we can undo it. $installer->pushStep(array('type' => 'extension', 'extension_id' => $row->extension_id)); } /* * Let's run the queries for the file. */ if ($manifest->update) { $result = $installer->parseSchemaUpdates($manifest->update->schemas, $row->extension_id); if ($result === false) { // Install failed, rollback changes. $installer->abort(JText::sprintf('JLIB_INSTALLER_ABORT_FILE_UPDATE_SQL_ERROR', $db->stderr(true))); return false; } } // Start Joomla! 1.6. ob_start(); ob_implicit_flush(false); if ($manifestClass && method_exists($manifestClass, 'update')) { if ($manifestClass->update($installer) === false) { // Install failed, rollback changes. $installer->abort(JText::_('JLIB_INSTALLER_ABORT_FILE_INSTALL_CUSTOM_INSTALL_FAILURE')); return false; } } // Append messages. $msg .= ob_get_contents(); ob_end_clean(); // Lastly, we will copy the manifest file to its appropriate place. $manifest = array(); $manifest['src'] = $installer->getPath('manifest'); $manifest['dest'] = JPATH_MANIFESTS . '/files/' . basename($installer->getPath('manifest')); if (!$installer->copyFiles(array($manifest), true)) { // Install failed, rollback changes. $installer->abort(JText::_('JLIB_INSTALLER_ABORT_FILE_INSTALL_COPY_SETUP')); return false; } // Clobber any possible pending updates. $update = JTable::getInstance('update'); $uid = $update->find( array('element' => $element, 'type' => 'file', 'client_id' => '0', 'folder' => '') ); if ($uid) { $update->delete($uid); } // And now we run the postflight. ob_start(); ob_implicit_flush(false); if ($manifestClass && method_exists($manifestClass, 'postflight')) { $manifestClass->postflight('update', $this); } // Append messages. $msg .= ob_get_contents(); ob_end_clean(); if ($msg != '') { $installer->set('extension_message', $msg); } // Refresh versionable assets cache. JFactory::getApplication()->flushAssets(); return true; } /** * Removes the extracted package file. * * @return void * * @since 2.5.4 */ public function cleanUp() { // Remove the update package. $config = JFactory::getConfig(); $tempdir = $config->get('tmp_path'); $file = JFactory::getApplication()->getUserState('com_joomlaupdate.file', null); $target = $tempdir . '/' . $file; if (!@unlink($target)) { JFile::delete($target); } // Remove the restoration.php file. $target = JPATH_COMPONENT_ADMINISTRATOR . '/restoration.php'; if (!@unlink($target)) { JFile::delete($target); } // Remove joomla.xml from the site's root. $target = JPATH_ROOT . '/joomla.xml'; if (!@unlink($target)) { JFile::delete($target); } // Unset the update filename from the session. JFactory::getApplication()->setUserState('com_joomlaupdate.file', null); } } PKc��\��F��*components/com_joomlaupdate/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_joomlaupdate * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Joomla! Update Controller * * @since 2.5.4 */ class JoomlaupdateController extends JControllerLegacy { /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached. * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 2.5.4 */ public function display($cachable = false, $urlparams = false) { // Get the document object. $document = JFactory::getDocument(); // Set the default view name and format from the Request. $vName = $this->input->get('view', 'default'); $vFormat = $document->getType(); $lName = $this->input->get('layout', 'default', 'string'); // Get and render the view. if ($view = $this->getView($vName, $vFormat)) { $ftp = JClientHelper::setCredentialsFromRequest('ftp'); $view->ftp = &$ftp; // Get the model for the view. $model = $this->getModel($vName); // Perform update source preference check and refresh update information. $model->applyUpdateSite(); $model->refreshUpdates(); // Push the model into the view (as default). $view->setModel($model, true); $view->setLayout($lName); // Push document object into the view. $view->document = $document; $view->display(); } return $this; } } PKc��\��N88 components/com_search/search.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_search * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; if (!JFactory::getUser()->authorise('core.manage', 'com_search')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $controller = JControllerLegacy::getInstance('Search'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKc��\����&&.components/com_search/controllers/searches.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_search * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Methods supporting a list of search terms. * * @since 1.6 */ class SearchControllerSearches extends JControllerLegacy { /** * Method to reset the seach log table. * * @return boolean */ public function reset() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $model = $this->getModel('Searches'); if (!$model->reset()) { JError::raiseWarning(500, $model->getError()); } $this->setRedirect('index.php?option=com_search&view=searches'); } } PKc��\3+W5�� components/com_search/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="component"> <field name="enabled" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_SEARCH_CONFIG_GATHER_SEARCH_STATISTICS_LABEL" description="COM_SEARCH_CONFIG_GATHER_SEARCH_STATISTICS_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="search_phrases" type="radio" class="btn-group btn-group-yesno" default="1" description="COM_SEARCH_FIELD_SEARCH_PHRASES_DESC" label="COM_SEARCH_FIELD_SEARCH_PHRASES_LABEL" > <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="search_areas" type="radio" class="btn-group btn-group-yesno" default="1" description="COM_SEARCH_FIELD_SEARCH_AREAS_DESC" label="COM_SEARCH_FIELD_SEARCH_AREAS_LABEL" > <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="show_date" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_SEARCH_CONFIG_FIELD_CREATED_DATE_LABEL" description="COM_SEARCH_CONFIG_FIELD_CREATED_DATE_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="opensearch_name" type="text" label="COM_SEARCH_CONFIG_FIELD_OPENSEARCH_NAME_LABEL" description="COM_SEARCH_CONFIG_FIELD_OPENSEARCH_NAME_DESC" /> <field name="opensearch_description" type="textarea" label="COM_SEARCH_CONFIG_FIELD_OPENSEARCH_DESCRIPTON_LABEL" description="COM_SEARCH_CONFIG_FIELD_OPENSEARCH_DESCRIPTON_DESC" cols="30" rows="2" /> </fieldset> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_search" section="component" /> </fieldset> </config> PKc��\*�{ components/com_search/access.xmlnu�[���<?xml version="1.0" encoding="utf-8" ?> <access component="com_search"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> </section> </access> PKc��\�B�cc components/com_search/search.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_search</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_SEARCH_XML_DESCRIPTION</description> <files folder="site"> <filename>controller.php</filename> <filename>router.php</filename> <filename>search.php</filename> <folder>models</folder> <folder>views</folder> </files> <languages folder="site"> <language tag="en-GB">language/en-GB.com_search.ini</language> </languages> <administration> <menu link="option=com_search" img="class:search">Search</menu> <files folder="admin"> <filename>config.xml</filename> <filename>controller.php</filename> <filename>search.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_search.ini</language> <language tag="en-GB">language/en-GB.com_search.sys.ini</language> </languages> </administration> </extension> PKc��\�=G775components/com_search/views/searches/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_search * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_search&view=searches'); ?>" method="post" name="adminForm" id="adminForm"> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_SEARCH_SEARCH_IN_PHRASE'); ?>" /> </div> <div class="filter-search btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> <div class="filter-select btn-group pull-left"> <span class="adminlist-searchstatus"> <?php if ($this->state->get('filter.results')) : ?> <a class="btn" href="<?php echo JRoute::_('index.php?option=com_search&filter_results=0');?>"> <span class="icon-zoom-out"></span> <?php echo JText::_('COM_SEARCH_HIDE_SEARCH_RESULTS'); ?></a> <?php else : ?> <a class="btn" href="<?php echo JRoute::_('index.php?option=com_search&filter_results=1');?>"> <span class="icon-zoom-in"></span> <?php echo JText::_('COM_SEARCH_SHOW_SEARCH_RESULTS'); ?></a> <?php endif; ?> </span> </div> </div> <div class="clearfix"> </div> <?php if ($this->enabled) : ?> <div class="alert alert-info"> <a class="close" data-dismiss="alert">×</a> <?php echo JText::_('COM_SEARCH_LOGGING_ENABLED'); ?> </div> <?php else : ?> <div class="alert alert-error"> <a class="close" data-dismiss="alert">×</a> <?php echo JText::_('COM_SEARCH_LOGGING_DISABLED'); ?> </div> <?php endif; ?> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped"> <thead> <tr> <th class="title"> <?php echo JHtml::_('grid.sort', 'COM_SEARCH_HEADING_PHRASE', 'a.search_term', $listDirn, $listOrder); ?> </th> <th width="15%"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_HITS', 'a.hits', $listDirn, $listOrder); ?> </th> <th width="15%"> <?php echo JText::_('COM_SEARCH_HEADING_RESULTS'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="3"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : ?> <tr class="row<?php echo $i % 2; ?>"> <td> <?php echo $this->escape($item->search_term); ?> </td> <td> <?php echo (int) $item->hits; ?> </td> <td> <?php if ($this->state->get('filter.results')) : ?> <?php echo (int) $item->returns; ?> <?php else: ?> <?php echo JText::_('COM_SEARCH_NO_RESULTS'); ?> <?php endif; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> <div> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKc��\ ��2components/com_search/views/searches/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_search * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of search terms. * * @since 1.5 */ class SearchViewSearches extends JViewLegacy { protected $enabled; protected $items; protected $pagination; protected $state; /** * Display the view. * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return mixed A string if successful, otherwise a Error object. */ public function display($tpl = null) { $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); $this->enabled = $this->state->params->get('enabled'); $this->canDo = JHelperContent::getActions('com_search'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $canDo = $this->canDo; JToolbarHelper::title(JText::_('COM_SEARCH_MANAGER_SEARCHES'), 'search'); if ($canDo->get('core.edit.state')) { JToolbarHelper::custom('searches.reset', 'refresh.png', 'refresh_f2.png', 'JSEARCH_RESET', false); } JToolbarHelper::divider(); if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences('com_search'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_COMPONENTS_SEARCH'); } } PKc��\����(components/com_search/helpers/search.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_search * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Search component helper. * * @since 1.5 */ class SearchHelper { /** * Configure the Linkbar. * * @param string $vName The name of the active view. * * @return void * * @since 1.6 */ public static function addSubmenu($vName) { // Not required. } /** * Gets a list of the actions that can be performed. * * @return JObject * * @deprecated 3.2 Use JHelperContent::getActions() instead. */ public static function getActions() { // Log usage of deprecated function. JLog::add(__METHOD__ . '() is deprecated, use JHelperContent::getActions() with new arguments order instead.', JLog::WARNING, 'deprecated'); // Get list of actions. $result = JHelperContent::getActions('com_search'); return $result; } /** * Sanitise search word. * * @param string &$searchword Search word to be sanitised. * @param string $searchphrase Either 'all', 'any' or 'exact'. * * @return boolean True if search word needs to be sanitised. */ public static function santiseSearchWord(&$searchword, $searchphrase) { $ignored = false; $lang = JFactory::getLanguage(); $tag = $lang->getTag(); $search_ignore = $lang->getIgnoredSearchWords(); // Deprecated in 1.6 use $lang->getIgnoredSearchWords instead. $ignoreFile = $lang->getLanguagePath() . '/' . $tag . '/' . $tag . '.ignore.php'; if (file_exists($ignoreFile)) { include $ignoreFile; } // Check for words to ignore. $aterms = explode(' ', JString::strtolower($searchword)); // First case is single ignored word. if (count($aterms) == 1 && in_array(JString::strtolower($searchword), $search_ignore)) { $ignored = true; } // Filter out search terms that are too small. $lower_limit = $lang->getLowerLimitSearchWord(); foreach ($aterms as $aterm) { if (JString::strlen($aterm) < $lower_limit) { $search_ignore[] = $aterm; } } // Next is to remove ignored words from type 'all' or 'any' (not exact) searches with multiple words. if (count($aterms) > 1 && $searchphrase != 'exact') { $pruned = array_diff($aterms, $search_ignore); $searchword = implode(' ', $pruned); } return $ignored; } /** * Does search word need to be limited? * * @param string &$searchword Search word to be checked. * * @return boolean True if search word should be limited; false otherwise. * * @since 1.5 */ public static function limitSearchWord(&$searchword) { $restriction = false; $lang = JFactory::getLanguage(); // Limit searchword to a maximum of characters. $upper_limit = $lang->getUpperLimitSearchWord(); if (JString::strlen($searchword) > $upper_limit) { $searchword = JString::substr($searchword, 0, $upper_limit - 1); $restriction = true; } // Searchword must contain a minimum of characters. if ($searchword && JString::strlen($searchword) < $lang->getLowerLimitSearchWord()) { $searchword = ''; $restriction = true; } return $restriction; } /** * Logs a search term. * * @param string $search_term The term being searched. * * @return void * * @since 1.5 * @deprecated 4.0 Use JSearchHelper::logSearch() instead. */ public static function logSearch($search_term) { JLog::add(__METHOD__ . '() is deprecated, use JSearchHelper::logSearch() instead.', JLog::WARNING, 'deprecated'); JSearchHelper::logSearch($search_term, 'com_search'); } /** * Prepares results from search for display. * * @param string $text The source string. * @param string $searchword The searchword to select around. * * @return string * * @since 1.5 */ public static function prepareSearchContent($text, $searchword) { // Strips tags won't remove the actual jscript. $text = preg_replace("'<script[^>]*>.*?</script>'si", "", $text); $text = preg_replace('/{.+?}/', '', $text); // $text = preg_replace('/<a\s+.*?href="([^"]+)"[^>]*>([^<]+)<\/a>/is','\2', $text); // Replace line breaking tags with whitespace. $text = preg_replace("'<(br[^/>]*?/|hr[^/>]*?/|/(div|h[1-6]|li|p|td))>'si", ' ', $text); return self::_smartSubstr(strip_tags($text), $searchword); } /** * Checks an object for search terms (after stripping fields of HTML). * * @param object $object The object to check. * @param string $searchTerm Search words to check for. * @param array $fields List of object variables to check against. * * @return boolean True if searchTerm is in object, false otherwise. */ public static function checkNoHtml($object, $searchTerm, $fields) { $searchRegex = array( '#<script[^>]*>.*?</script>#si', '#<style[^>]*>.*?</style>#si', '#<!.*?(--|]])>#si', '#<[^>]*>#i' ); $terms = explode(' ', $searchTerm); if (empty($fields)) { return false; } foreach ($fields as $field) { if (!isset($object->$field)) { continue; } $text = self::remove_accents($object->$field); foreach ($searchRegex as $regex) { $text = preg_replace($regex, '', $text); } foreach ($terms as $term) { $term = self::remove_accents($term); if (JString::stristr($text, $term) !== false) { return true; } } } return false; } /** * Transliterates given text to ASCII. * * @param string $str String to remove accents from. * * @return string * * @since 3.2 */ public static function remove_accents($str) { $str = JLanguageTransliterate::utf8_latin_to_ascii($str); // @TODO: remove other prefixes as well? return preg_replace("/[\"'^]([a-z])/ui", '\1', $str); } /** * Returns substring of characters around a searchword. * * @param string $text The source string. * @param integer $searchword Number of chars to return. * * @return string * * @since 1.5 */ public static function _smartSubstr($text, $searchword) { $lang = JFactory::getLanguage(); $length = $lang->getSearchDisplayedCharactersNumber(); $ltext = self::remove_accents($text); $textlen = JString::strlen($ltext); $lsearchword = JString::strtolower(self::remove_accents($searchword)); $wordfound = false; $pos = 0; while ($wordfound === false && $pos < $textlen) { if (($wordpos = @JString::strpos($ltext, ' ', $pos + $length)) !== false) { $chunk_size = $wordpos - $pos; } else { $chunk_size = $length; } $chunk = JString::substr($ltext, $pos, $chunk_size); $wordfound = JString::strpos(JString::strtolower($chunk), $lsearchword); if ($wordfound === false) { $pos += $chunk_size + 1; } } if ($wordfound !== false) { return (($pos > 0) ? '... ' : '') . JString::substr($text, $pos, $chunk_size) . ' ...'; } else { if (($wordpos = @JString::strpos($text, ' ', $length)) !== false) { return JString::substr($text, 0, $wordpos) . ' ...'; } else { return JString::substr($text, 0, $length); } } } } PKc��\�}��&components/com_search/helpers/site.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_search * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Mock JSite class used to fool the frontend search plugins because they route the results. * * @since 1.5 */ class JSite extends JObject { /** * False method to fool the frontend search plugins. * * @return JSite * * @since 1.5 */ public function getMenu() { $result = new JSite; return $result; } /** * False method to fool the frontend search plugins. * * @return array * * @since 1.5 */ public function getItems() { return array(); } } PKc��\�fq@@)components/com_search/models/searches.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_search * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Methods supporting a list of search terms. * * @since 1.6 */ class SearchModelSearches extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'search_term', 'a.search_term', 'hits', 'a.hits', ); } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search', false, 'string', false); $this->setState('filter.search', $search); $showResults = $this->getUserStateFromRequest($this->context . '.filter.results', 'filter_results', null, 'int', false); $this->setState('filter.results', $showResults); // Load the parameters. $params = JComponentHelper::getParams('com_search'); $this->setState('params', $params); // List state information. parent::populateState('a.hits', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. * * @since 1.6 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.results'); return parent::getStoreId($id); } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery * * @since 1.6 */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.*' ) ); $query->from($db->quoteName('#__core_log_searches') . ' AS a'); // Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } // Filter by search in title $search = $this->getState('filter.search'); if (!empty($search)) { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('a.search_term LIKE ' . $search); } // Add the list ordering clause. $query->order($db->escape($this->getState('list.ordering', 'a.hits')) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } /** * Override the parnet getItems to inject optional data. * * @return mixed An array of objects on success, false on failure. * * @since 1.6 */ public function getItems() { $items = parent::getItems(); // Determine if number of results for search item should be calculated // by default it is `off` as it is highly query intensive if ($this->getState('filter.results')) { JPluginHelper::importPlugin('search'); $app = JFactory::getApplication(); if (!class_exists('JSite')) { // This fools the routers in the search plugins into thinking it's in the frontend JLoader::register('JSite', JPATH_COMPONENT . '/helpers/site.php'); } foreach ($items as &$item) { $results = $app->triggerEvent('onContentSearch', array($item->search_term)); $item->returns = 0; foreach ($results as $result) { $item->returns += count($result); } } } return $items; } /** * Method to reset the seach log table. * * @return boolean * * @since 1.6 */ public function reset() { $db = $this->getDbo(); $query = $db->getQuery(true) ->delete($db->quoteName('#__core_log_searches')); $db->setQuery($query); try { $db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } return true; } } PKc��\����88$components/com_search/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_search * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Search master display controller. * * @since 1.6 */ class SearchController extends JControllerLegacy { /** * @var string The default view. * @since 1.6 */ protected $default_view = 'searches'; /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { require_once JPATH_COMPONENT . '/helpers/search.php'; // Load the submenu. SearchHelper::addSubmenu($this->input->get('view', 'searches')); parent::display(); } } PKc��\��O�66.components/com_media/controllers/file.json.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; jimport('joomla.filesystem.file'); jimport('joomla.filesystem.folder'); /** * File Media Controller * * @since 1.6 */ class MediaControllerFile extends JControllerLegacy { /** * Upload a file * * @return void * * @since 1.5 */ public function upload() { $params = JComponentHelper::getParams('com_media'); // Check for request forgeries if (!JSession::checkToken('request')) { $response = array( 'status' => '0', 'error' => JText::_('JINVALID_TOKEN') ); echo json_encode($response); return; } // Get the user $user = JFactory::getUser(); JLog::addLogger(array('text_file' => 'upload.error.php'), JLog::ALL, array('upload')); // Get some data from the request $file = $this->input->files->get('Filedata', '', 'array'); $folder = $this->input->get('folder', '', 'path'); // Instantiate the media helper $mediaHelper = new JHelperMedia; if ($_SERVER['CONTENT_LENGTH'] > ($params->get('upload_maxsize', 0) * 1024 * 1024) || $_SERVER['CONTENT_LENGTH'] > $mediaHelper->toBytes(ini_get('upload_max_filesize')) || $_SERVER['CONTENT_LENGTH'] > $mediaHelper->toBytes(ini_get('post_max_size')) || $_SERVER['CONTENT_LENGTH'] > $mediaHelper->toBytes(ini_get('memory_limit'))) { $response = array( 'status' => '0', 'error' => JText::_('COM_MEDIA_ERROR_WARNFILETOOLARGE') ); echo json_encode($response); return; } // Set FTP credentials, if given JClientHelper::setCredentialsFromRequest('ftp'); // Make the filename safe $file['name'] = JFile::makeSafe($file['name']); if (!isset($file['name'])) { $response = array( 'status' => '0', 'error' => JText::_('COM_MEDIA_ERROR_BAD_REQUEST') ); echo json_encode($response); return; } // The request is valid $err = null; $filepath = JPath::clean(COM_MEDIA_BASE . '/' . $folder . '/' . strtolower($file['name'])); if (!MediaHelper::canUpload($file, $err)) { JLog::add('Invalid: ' . $filepath . ': ' . $err, JLog::INFO, 'upload'); $response = array( 'status' => '0', 'error' => JText::_($err) ); echo json_encode($response); return; } // Trigger the onContentBeforeSave event. JPluginHelper::importPlugin('content'); $dispatcher = JEventDispatcher::getInstance(); $object_file = new JObject($file); $object_file->filepath = $filepath; $result = $dispatcher->trigger('onContentBeforeSave', array('com_media.file', &$object_file, true)); if (in_array(false, $result, true)) { // There are some errors in the plugins JLog::add('Errors before save: ' . $object_file->filepath . ' : ' . implode(', ', $object_file->getErrors()), JLog::INFO, 'upload'); $response = array( 'status' => '0', 'error' => JText::plural('COM_MEDIA_ERROR_BEFORE_SAVE', count($errors = $object_file->getErrors()), implode('<br />', $errors)) ); echo json_encode($response); return; } if (JFile::exists($object_file->filepath)) { // File exists JLog::add('File exists: ' . $object_file->filepath . ' by user_id ' . $user->id, JLog::INFO, 'upload'); $response = array( 'status' => '0', 'error' => JText::_('COM_MEDIA_ERROR_FILE_EXISTS') ); echo json_encode($response); return; } if (!$user->authorise('core.create', 'com_media')) { // File does not exist and user is not authorised to create JLog::add('Create not permitted: ' . $object_file->filepath . ' by user_id ' . $user->id, JLog::INFO, 'upload'); $response = array( 'status' => '0', 'error' => JText::_('COM_MEDIA_ERROR_CREATE_NOT_PERMITTED') ); echo json_encode($response); return; } if (!JFile::upload($object_file->tmp_name, $object_file->filepath)) { // Error in upload JLog::add('Error on upload: ' . $object_file->filepath, JLog::INFO, 'upload'); $response = array( 'status' => '0', 'error' => JText::_('COM_MEDIA_ERROR_UNABLE_TO_UPLOAD_FILE') ); echo json_encode($response); return; } // Trigger the onContentAfterSave event. $dispatcher->trigger('onContentAfterSave', array('com_media.file', &$object_file, true)); JLog::add($folder, JLog::INFO, 'upload'); $response = array( 'status' => '1', 'error' => JText::sprintf('COM_MEDIA_UPLOAD_COMPLETE', substr($object_file->filepath, strlen(COM_MEDIA_BASE))) ); echo json_encode($response); return; } } PKc��\\AT�!�!)components/com_media/controllers/file.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; jimport('joomla.filesystem.file'); jimport('joomla.filesystem.folder'); /** * Media File Controller * * @since 1.5 */ class MediaControllerFile extends JControllerLegacy { /** * The folder we are uploading into * * @var string */ protected $folder = ''; /** * Upload one or more files * * @return boolean * * @since 1.5 */ public function upload() { // Check for request forgeries JSession::checkToken('request') or jexit(JText::_('JINVALID_TOKEN')); $params = JComponentHelper::getParams('com_media'); // Get some data from the request $files = $this->input->files->get('Filedata', '', 'array'); $return = JFactory::getSession()->get('com_media.return_url'); $this->folder = $this->input->get('folder', '', 'path'); // Don't redirect to an external URL. if (!JUri::isInternal($return)) { $return = ''; } // Set the redirect if ($return) { $this->setRedirect($return . '&folder=' . $this->folder); } else { $this->setRedirect('index.php?option=com_media&folder=' . $this->folder); } // Authorize the user if (!$this->authoriseUser('create')) { return false; } // Total length of post back data in bytes. $contentLength = (int) $_SERVER['CONTENT_LENGTH']; // Instantiate the media helper $mediaHelper = new JHelperMedia; // Maximum allowed size of post back data in MB. $postMaxSize = $mediaHelper->toBytes(ini_get('post_max_size')); // Maximum allowed size of script execution in MB. $memoryLimit = $mediaHelper->toBytes(ini_get('memory_limit')); // Check for the total size of post back data. if (($postMaxSize > 0 && $contentLength > $postMaxSize) || ($memoryLimit != -1 && $contentLength > $memoryLimit)) { JError::raiseWarning(100, JText::_('COM_MEDIA_ERROR_WARNUPLOADTOOLARGE')); return false; } $uploadMaxSize = $params->get('upload_maxsize', 0) * 1024 * 1024; $uploadMaxFileSize = $mediaHelper->toBytes(ini_get('upload_max_filesize')); // Perform basic checks on file info before attempting anything foreach ($files as &$file) { $file['name'] = JFile::makeSafe($file['name']); $file['filepath'] = JPath::clean(implode(DIRECTORY_SEPARATOR, array(COM_MEDIA_BASE, $this->folder, $file['name']))); if (($file['error'] == 1) || ($uploadMaxSize > 0 && $file['size'] > $uploadMaxSize) || ($uploadMaxFileSize > 0 && $file['size'] > $uploadMaxFileSize)) { // File size exceed either 'upload_max_filesize' or 'upload_maxsize'. JError::raiseWarning(100, JText::_('COM_MEDIA_ERROR_WARNFILETOOLARGE')); return false; } if (JFile::exists($file['filepath'])) { // A file with this name already exists JError::raiseWarning(100, JText::_('COM_MEDIA_ERROR_FILE_EXISTS')); return false; } if (!isset($file['name'])) { // No filename (after the name was cleaned by JFile::makeSafe) $this->setRedirect('index.php', JText::_('COM_MEDIA_INVALID_REQUEST'), 'error'); return false; } } // Set FTP credentials, if given JClientHelper::setCredentialsFromRequest('ftp'); JPluginHelper::importPlugin('content'); $dispatcher = JEventDispatcher::getInstance(); foreach ($files as &$file) { // The request is valid $err = null; if (!MediaHelper::canUpload($file, $err)) { // The file can't be uploaded return false; } // Trigger the onContentBeforeSave event. $object_file = new JObject($file); $result = $dispatcher->trigger('onContentBeforeSave', array('com_media.file', &$object_file, true)); if (in_array(false, $result, true)) { // There are some errors in the plugins JError::raiseWarning(100, JText::plural('COM_MEDIA_ERROR_BEFORE_SAVE', count($errors = $object_file->getErrors()), implode('<br />', $errors))); return false; } if (!JFile::upload($object_file->tmp_name, $object_file->filepath)) { // Error in upload JError::raiseWarning(100, JText::_('COM_MEDIA_ERROR_UNABLE_TO_UPLOAD_FILE')); return false; } // Trigger the onContentAfterSave event. $dispatcher->trigger('onContentAfterSave', array('com_media.file', &$object_file, true)); $this->setMessage(JText::sprintf('COM_MEDIA_UPLOAD_COMPLETE', substr($object_file->filepath, strlen(COM_MEDIA_BASE)))); } return true; } /** * Check that the user is authorized to perform this action * * @param string $action - the action to be peformed (create or delete) * * @return boolean * * @since 1.6 */ protected function authoriseUser($action) { if (!JFactory::getUser()->authorise('core.' . strtolower($action), 'com_media')) { // User is not authorised JError::raiseWarning(403, JText::_('JLIB_APPLICATION_ERROR_' . strtoupper($action) . '_NOT_PERMITTED')); return false; } return true; } /** * Deletes paths from the current path * * @return boolean * * @since 1.5 */ public function delete() { JSession::checkToken('request') or jexit(JText::_('JINVALID_TOKEN')); // Get some data from the request $tmpl = $this->input->get('tmpl'); $paths = $this->input->get('rm', array(), 'array'); $folder = $this->input->get('folder', '', 'path'); $redirect = 'index.php?option=com_media&folder=' . $folder; if ($tmpl == 'component') { // We are inside the iframe $redirect .= '&view=mediaList&tmpl=component'; } $this->setRedirect($redirect); // Nothing to delete if (empty($paths)) { return true; } // Authorize the user if (!$this->authoriseUser('delete')) { return false; } // Set FTP credentials, if given JClientHelper::setCredentialsFromRequest('ftp'); JPluginHelper::importPlugin('content'); $dispatcher = JEventDispatcher::getInstance(); $ret = true; foreach ($paths as $path) { if ($path !== JFile::makeSafe($path)) { // Filename is not safe $filename = htmlspecialchars($path, ENT_COMPAT, 'UTF-8'); JError::raiseWarning(100, JText::sprintf('COM_MEDIA_ERROR_UNABLE_TO_DELETE_FILE_WARNFILENAME', substr($filename, strlen(COM_MEDIA_BASE)))); continue; } $fullPath = JPath::clean(implode(DIRECTORY_SEPARATOR, array(COM_MEDIA_BASE, $folder, $path))); $object_file = new JObject(array('filepath' => $fullPath)); if (is_file($object_file->filepath)) { // Trigger the onContentBeforeDelete event. $result = $dispatcher->trigger('onContentBeforeDelete', array('com_media.file', &$object_file)); if (in_array(false, $result, true)) { // There are some errors in the plugins $errors = $object_file->getErrors(); JError::raiseWarning(100, JText::plural('COM_MEDIA_ERROR_BEFORE_DELETE', count($errors), implode('<br />', $errors))); continue; } $ret &= JFile::delete($object_file->filepath); // Trigger the onContentAfterDelete event. $dispatcher->trigger('onContentAfterDelete', array('com_media.file', &$object_file)); $this->setMessage(JText::sprintf('COM_MEDIA_DELETE_COMPLETE', substr($object_file->filepath, strlen(COM_MEDIA_BASE)))); continue; } if (is_dir($object_file->filepath)) { $contents = JFolder::files($object_file->filepath, '.', true, false, array('.svn', 'CVS', '.DS_Store', '__MACOSX', 'index.html')); if (!empty($contents)) { // This makes no sense... $folderPath = substr($object_file->filepath, strlen(COM_MEDIA_BASE)); JError::raiseWarning(100, JText::sprintf('COM_MEDIA_ERROR_UNABLE_TO_DELETE_FOLDER_NOT_EMPTY', $folderPath)); continue; } // Trigger the onContentBeforeDelete event. $result = $dispatcher->trigger('onContentBeforeDelete', array('com_media.folder', &$object_file)); if (in_array(false, $result, true)) { // There are some errors in the plugins $errors = $object_file->getErrors(); JError::raiseWarning(100, JText::plural('COM_MEDIA_ERROR_BEFORE_DELETE', count($errors), implode('<br />', $errors))); continue; } $ret &= JFolder::delete($object_file->filepath); // Trigger the onContentAfterDelete event. $dispatcher->trigger('onContentAfterDelete', array('com_media.folder', &$object_file)); $this->setMessage(JText::sprintf('COM_MEDIA_DELETE_COMPLETE', substr($object_file->filepath, strlen(COM_MEDIA_BASE)))); } } return $ret; } } PKc��\�����+components/com_media/controllers/folder.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; jimport('joomla.filesystem.file'); jimport('joomla.filesystem.folder'); /** * Folder Media Controller * * @since 1.5 */ class MediaControllerFolder extends JControllerLegacy { /** * Deletes paths from the current path * * @return boolean * * @since 1.5 */ public function delete() { JSession::checkToken('request') or jexit(JText::_('JINVALID_TOKEN')); $user = JFactory::getUser(); // Get some data from the request $tmpl = $this->input->get('tmpl'); $paths = $this->input->get('rm', array(), 'array'); $folder = $this->input->get('folder', '', 'path'); $redirect = 'index.php?option=com_media&folder=' . $folder; if ($tmpl == 'component') { // We are inside the iframe $redirect .= '&view=mediaList&tmpl=component'; } $this->setRedirect($redirect); // Just return if there's nothing to do if (empty($paths)) { $this->setMessage(JText::_('JERROR_NO_ITEMS_SELECTED'), 'error'); return true; } if (!$user->authorise('core.delete', 'com_media')) { // User is not authorised to delete JError::raiseWarning(403, JText::_('JLIB_APPLICATION_ERROR_DELETE_NOT_PERMITTED')); return false; } // Set FTP credentials, if given JClientHelper::setCredentialsFromRequest('ftp'); $ret = true; JPluginHelper::importPlugin('content'); $dispatcher = JEventDispatcher::getInstance(); if (count($paths)) { foreach ($paths as $path) { if ($path !== JFile::makeSafe($path)) { $dirname = htmlspecialchars($path, ENT_COMPAT, 'UTF-8'); JError::raiseWarning(100, JText::sprintf('COM_MEDIA_ERROR_UNABLE_TO_DELETE_FOLDER_WARNDIRNAME', substr($dirname, strlen(COM_MEDIA_BASE)))); continue; } $fullPath = JPath::clean(implode(DIRECTORY_SEPARATOR, array(COM_MEDIA_BASE, $folder, $path))); $object_file = new JObject(array('filepath' => $fullPath)); if (is_file($object_file->filepath)) { // Trigger the onContentBeforeDelete event. $result = $dispatcher->trigger('onContentBeforeDelete', array('com_media.file', &$object_file)); if (in_array(false, $result, true)) { // There are some errors in the plugins $errors = $object_file->getErrors(); JError::raiseWarning(100, JText::plural('COM_MEDIA_ERROR_BEFORE_DELETE', count($errors), implode('<br />', $errors))); continue; } $ret &= JFile::delete($object_file->filepath); // Trigger the onContentAfterDelete event. $dispatcher->trigger('onContentAfterDelete', array('com_media.file', &$object_file)); $this->setMessage(JText::sprintf('COM_MEDIA_DELETE_COMPLETE', substr($object_file->filepath, strlen(COM_MEDIA_BASE)))); } elseif (is_dir($object_file->filepath)) { $contents = JFolder::files($object_file->filepath, '.', true, false, array('.svn', 'CVS', '.DS_Store', '__MACOSX', 'index.html')); if (empty($contents)) { // Trigger the onContentBeforeDelete event. $result = $dispatcher->trigger('onContentBeforeDelete', array('com_media.folder', &$object_file)); if (in_array(false, $result, true)) { // There are some errors in the plugins $errors = $object_file->getErrors(); JError::raiseWarning(100, JText::plural('COM_MEDIA_ERROR_BEFORE_DELETE', count($errors), implode('<br />', $errors))); continue; } $ret &= !JFolder::delete($object_file->filepath); // Trigger the onContentAfterDelete event. $dispatcher->trigger('onContentAfterDelete', array('com_media.folder', &$object_file)); $this->setMessage(JText::sprintf('COM_MEDIA_DELETE_COMPLETE', substr($object_file->filepath, strlen(COM_MEDIA_BASE)))); } else { // This makes no sense... $folderPath = substr($object_file->filepath, strlen(COM_MEDIA_BASE)); JError::raiseWarning(100, JText::sprintf('COM_MEDIA_ERROR_UNABLE_TO_DELETE_FOLDER_NOT_EMPTY', $folderPath)); } } } } return $ret; } /** * Create a folder * * @return boolean * * @since 1.5 */ public function create() { // Check for request forgeries JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $user = JFactory::getUser(); $folder = $this->input->get('foldername', ''); $folderCheck = (string) $this->input->get('foldername', null, 'raw'); $parent = $this->input->get('folderbase', '', 'path'); $this->setRedirect('index.php?option=com_media&folder=' . $parent . '&tmpl=' . $this->input->get('tmpl', 'index')); if (strlen($folder) > 0) { if (!$user->authorise('core.create', 'com_media')) { // User is not authorised to create JError::raiseWarning(403, JText::_('COM_MEDIA_ERROR_CREATE_NOT_PERMITTED')); return false; } // Set FTP credentials, if given JClientHelper::setCredentialsFromRequest('ftp'); $this->input->set('folder', $parent); if (($folderCheck !== null) && ($folder !== $folderCheck)) { $app = JFactory::getApplication(); $app->enqueueMessage(JText::_('COM_MEDIA_ERROR_UNABLE_TO_CREATE_FOLDER_WARNDIRNAME'), 'warning'); return false; } $path = JPath::clean(COM_MEDIA_BASE . '/' . $parent . '/' . $folder); if (!is_dir($path) && !is_file($path)) { // Trigger the onContentBeforeSave event. $object_file = new JObject(array('filepath' => $path)); JPluginHelper::importPlugin('content'); $dispatcher = JEventDispatcher::getInstance(); $result = $dispatcher->trigger('onContentBeforeSave', array('com_media.folder', &$object_file, true)); if (in_array(false, $result, true)) { // There are some errors in the plugins JError::raiseWarning(100, JText::plural('COM_MEDIA_ERROR_BEFORE_SAVE', count($errors = $object_file->getErrors()), implode('<br />', $errors))); return false; } if (JFolder::create($object_file->filepath)) { $data = "<html>\n<body bgcolor=\"#FFFFFF\">\n</body>\n</html>"; JFile::write($object_file->filepath . "/index.html", $data); // Trigger the onContentAfterSave event. $dispatcher->trigger('onContentAfterSave', array('com_media.folder', &$object_file, true)); $this->setMessage(JText::sprintf('COM_MEDIA_CREATE_COMPLETE', substr($object_file->filepath, strlen(COM_MEDIA_BASE)))); } } $this->input->set('folder', ($parent) ? $parent . '/' . $folder : $folder); } else { // File name is of zero length (null). JError::raiseWarning(100, JText::_('COM_MEDIA_ERROR_UNABLE_TO_CREATE_FOLDER_WARNDIRNAME')); return false; } return true; } } PKc��\�ƹ��components/com_media/media.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_media</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_MEDIA_XML_DESCRIPTION</description> <files folder="site"> <filename>controller.php</filename> <filename>media.php</filename> <folder>helpers</folder> </files> <languages folder="site"> <language tag="en-GB">language/en-GB.com_media.ini</language> </languages> <administration> <files folder="admin"> <filename>config.xml</filename> <filename>controller.php</filename> <filename>media.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>layouts</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_media.ini</language> <language tag="en-GB">language/en-GB.com_media.sys.ini</language> </languages> </administration> </extension> PKc��\��$�4components/com_media/layouts/toolbar/uploadmedia.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $title = JText::_('JTOOLBAR_UPLOAD'); ?> <button data-toggle="collapse" data-target="#collapseUpload" class="btn btn-small btn-success"> <span class="icon-plus icon-white" title="<?php echo $title; ?>"></span> <?php echo $title; ?> </button> PKc��\C�}��2components/com_media/layouts/toolbar/newfolder.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $title = JText::_('COM_MEDIA_CREATE_NEW_FOLDER'); ?> <button data-toggle="collapse" data-target="#collapseFolder" class="btn btn-small"> <span class="icon-folder" title="<?php echo $title; ?>"></span> <?php echo $title; ?> </button> PKc��\�B9��4components/com_media/layouts/toolbar/deletemedia.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $title = JText::_('JTOOLBAR_DELETE'); ?> <button onclick="MediaManager.submit('folder.delete');" class="btn btn-small"> <span class="icon-remove" title="<?php echo $title; ?>"></span> <?php echo $title; ?> </button> PKc��\����NNcomponents/com_media/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="component"> <field name="upload_extensions" type="text" size="50" default="bmp,csv,doc,gif,ico,jpg,jpeg,odg,odp,ods,odt,pdf,png,ppt,swf,txt,xcf,xls,BMP,CSV,DOC,GIF,ICO,JPG,JPEG,ODG,ODP,ODS,ODT,PDF,PNG,PPT,SWF,TXT,XCF,XLS" label="COM_MEDIA_FIELD_LEGAL_EXTENSIONS_LABEL" description="COM_MEDIA_FIELD_LEGAL_EXTENSIONS_DESC" /> <field name="upload_maxsize" type="text" size="50" default="10" label="COM_MEDIA_FIELD_MAXIMUM_SIZE_LABEL" description="COM_MEDIA_FIELD_MAXIMUM_SIZE_DESC" /> <field name="spacer1" type="spacer" class="text" label="COM_MEDIA_FOLDERS_PATH_LABEL" /> <field name="file_path" type="text" size="50" default="images" label="COM_MEDIA_FIELD_PATH_FILE_FOLDER_LABEL" description="COM_MEDIA_FIELD_PATH_FILE_FOLDER_DESC" /> <field name="image_path" type="text" size="50" default="images" label="COM_MEDIA_FIELD_PATH_IMAGE_FOLDER_LABEL" description="COM_MEDIA_FIELD_PATH_IMAGE_FOLDER_DESC" /> <field name="restrict_uploads" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_MEDIA_FIELD_RESTRICT_UPLOADS_LABEL" description="COM_MEDIA_FIELD_RESTRICT_UPLOADS_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="check_mime" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_MEDIA_FIELD_CHECK_MIME_LABEL" description="COM_MEDIA_FIELD_CHECK_MIME_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="image_extensions" type="text" size="50" default="bmp,gif,jpg,png" label="COM_MEDIA_FIELD_LEGAL_IMAGE_EXTENSIONS_LABEL" description="COM_MEDIA_FIELD_LEGAL_IMAGE_EXTENSIONS_DESC" /> <field name="ignore_extensions" type="text" size="50" label="COM_MEDIA_FIELD_IGNORED_EXTENSIONS_LABEL" description="COM_MEDIA_FIELD_IGNORED_EXTENSIONS_DESC" /> <field name="upload_mime" type="text" size="50" default="image/jpeg,image/gif,image/png,image/bmp,application/x-shockwave-flash,application/msword,application/excel,application/pdf,application/powerpoint,text/plain,application/x-zip" label="COM_MEDIA_FIELD_LEGAL_MIME_TYPES_LABEL" description="COM_MEDIA_FIELD_LEGAL_MIME_TYPES_DESC" /> <field name="upload_mime_illegal" type="text" size="50" default="text/html" label="COM_MEDIA_FIELD_ILLEGAL_MIME_TYPES_LABEL" description="COM_MEDIA_FIELD_ILLEGAL_MIME_TYPES_DESC" /> </fieldset> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_media" section="component" /> </fieldset> </config> PKc��\��b�hhcomponents/com_media/access.xmlnu�[���<?xml version="1.0" encoding="utf-8" ?> <access component="com_media"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> </section> </access> PKc��\�g@���8components/com_media/views/medialist/tmpl/thumbs_img.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; $user = JFactory::getUser(); $params = new Registry; $dispatcher = JEventDispatcher::getInstance(); $dispatcher->trigger('onContentBeforeDisplay', array('com_media.file', &$this->_tmp_img, &$params)); ?> <li class="imgOutline thumbnail height-80 width-80 center"> <?php if ($user->authorise('core.delete', 'com_media')):?> <a class="close delete-item" target="_top" href="index.php?option=com_media&task=file.delete&tmpl=index&<?php echo JSession::getFormToken(); ?>=1&folder=<?php echo $this->state->folder; ?>&rm[]=<?php echo $this->_tmp_img->name; ?>" rel="<?php echo $this->_tmp_img->name; ?>" title="<?php echo JText::_('JACTION_DELETE'); ?>">×</a> <input class="pull-left" type="checkbox" name="rm[]" value="<?php echo $this->_tmp_img->name; ?>" /> <div class="clearfix"></div> <?php endif; ?> <div class="height-50"> <a class="img-preview" href="<?php echo COM_MEDIA_BASEURL . '/' . $this->_tmp_img->path_relative; ?>" title="<?php echo $this->_tmp_img->name; ?>" > <?php echo JHtml::_('image', COM_MEDIA_BASEURL . '/' . $this->_tmp_img->path_relative, JText::sprintf('COM_MEDIA_IMAGE_TITLE', $this->_tmp_img->title, JHtml::_('number.bytes', $this->_tmp_img->size)), array('width' => $this->_tmp_img->width_60, 'height' => $this->_tmp_img->height_60)); ?> </a> </div> <div class="small"> <a href="<?php echo COM_MEDIA_BASEURL . '/' . $this->_tmp_img->path_relative; ?>" title="<?php echo $this->_tmp_img->name; ?>" class="preview"><?php echo JHtml::_('string.truncate', $this->_tmp_img->name, 10, false); ?></a> </div> </li> <?php $dispatcher->trigger('onContentAfterDisplay', array('com_media.file', &$this->_tmp_img, &$params)); PKc��\킸��;components/com_media/views/medialist/tmpl/thumbs_folder.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $user = JFactory::getUser(); ?> <li class="imgOutline thumbnail height-80 width-80 center"> <?php if ($user->authorise('core.delete', 'com_media')):?> <a class="close delete-item" target="_top" href="index.php?option=com_media&task=folder.delete&tmpl=index&<?php echo JSession::getFormToken(); ?>=1&folder=<?php echo $this->state->folder; ?>&rm[]=<?php echo $this->_tmp_folder->name; ?>" rel="<?php echo $this->_tmp_folder->name; ?> :: <?php echo $this->_tmp_folder->files + $this->_tmp_folder->folders; ?>" title="<?php echo JText::_('JACTION_DELETE');?>">×</a> <input class="pull-left" type="checkbox" name="rm[]" value="<?php echo $this->_tmp_folder->name; ?>" /> <div class="clearfix"></div> <?php endif;?> <div class="height-50"> <a href="index.php?option=com_media&view=mediaList&tmpl=component&folder=<?php echo $this->_tmp_folder->path_relative; ?>" target="folderframe"> <span class="icon-folder-2"></span> </a> </div> <div class="small"> <a href="index.php?option=com_media&view=mediaList&tmpl=component&folder=<?php echo $this->_tmp_folder->path_relative; ?>" target="folderframe"><?php echo JHtml::_('string.truncate', $this->_tmp_folder->name, 10, false); ?></a> </div> </li> PKc��\o7�RQQ9components/com_media/views/medialist/tmpl/details_doc.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; JHtml::_('bootstrap.tooltip'); $user = JFactory::getUser(); $params = new Registry; $dispatcher = JEventDispatcher::getInstance(); $dispatcher->trigger('onContentBeforeDisplay', array('com_media.file', &$this->_tmp_doc, &$params)); ?> <tr> <td> <a title="<?php echo $this->_tmp_doc->name; ?>"> <?php echo JHtml::_('image', $this->_tmp_doc->icon_16, $this->_tmp_doc->title, null, true, true) ? JHtml::_('image', $this->_tmp_doc->icon_16, $this->_tmp_doc->title, array('width' => 16, 'height' => 16), true) : JHtml::_('image', 'media/con_info.png', $this->_tmp_doc->title, array('width' => 16, 'height' => 16), true);?> </a> </td> <td class="description" title="<?php echo $this->_tmp_doc->name; ?>"> <?php echo $this->_tmp_doc->title; ?> </td> <td>  </td> <td class="filesize"> <?php echo JHtml::_('number.bytes', $this->_tmp_doc->size); ?> </td> <?php if ($user->authorise('core.delete', 'com_media')):?> <td> <a class="delete-item" target="_top" href="index.php?option=com_media&task=file.delete&tmpl=index&<?php echo JSession::getFormToken(); ?>=1&folder=<?php echo $this->state->folder; ?>&rm[]=<?php echo $this->_tmp_doc->name; ?>" rel="<?php echo $this->_tmp_doc->name; ?>"><span class="icon-remove hasTooltip" title="<?php echo JHtml::tooltipText('JACTION_DELETE');?>"></span></a> <input type="checkbox" name="rm[]" value="<?php echo $this->_tmp_doc->name; ?>" /> </td> <?php endif;?> </tr> <?php $dispatcher->trigger('onContentAfterDisplay', array('com_media.file', &$this->_tmp_doc, &$params)); PKc��\:�M``5components/com_media/views/medialist/tmpl/details.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $user = JFactory::getUser(); $params = JComponentHelper::getParams('com_media'); $path = 'file_path'; ?> <form target="_parent" action="index.php?option=com_media&tmpl=index&folder=<?php echo $this->state->folder; ?>" method="post" id="mediamanager-form" name="mediamanager-form"> <div class="muted"> <p> <span class="icon-folder"></span> <?php if ($this->state->folder != '') : ?> <?php echo JText::_('JGLOBAL_ROOT') . ': ' . $params->get($path, 'images') . '/' . $this->state->folder; ?> <?php else : ?> <?php echo JText::_('JGLOBAL_ROOT') . ': ' . $params->get($path, 'images'); ?> <?php endif; ?> </p> </div> <div class="manager"> <table class="table table-striped table-condensed"> <thead> <tr> <th width="1%"><?php echo JText::_('JGLOBAL_PREVIEW'); ?></th> <th><?php echo JText::_('COM_MEDIA_NAME'); ?></th> <th width="15%"><?php echo JText::_('COM_MEDIA_PIXEL_DIMENSIONS'); ?></th> <th width="8%"><?php echo JText::_('COM_MEDIA_FILESIZE'); ?></th> <?php if ($user->authorise('core.delete', 'com_media')):?> <th width="8%"><?php echo JText::_('JACTION_DELETE'); ?></th> <?php endif;?> </tr> </thead> <tbody> <?php echo $this->loadTemplate('up'); ?> <?php for ($i = 0, $n = count($this->folders); $i < $n; $i++) : $this->setFolder($i); echo $this->loadTemplate('folder'); endfor; ?> <?php for ($i = 0, $n = count($this->documents); $i < $n; $i++) : $this->setDoc($i); echo $this->loadTemplate('doc'); endfor; ?> <?php for ($i = 0, $n = count($this->images); $i < $n; $i++) : $this->setImage($i); echo $this->loadTemplate('img'); endfor; ?> </tbody> </table> <input type="hidden" name="task" value="list" /> <input type="hidden" name="username" value="" /> <input type="hidden" name="password" value="" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKc��\-����7components/com_media/views/medialist/tmpl/thumbs_up.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <?php if ($this->state->folder != '') : ?> <li class="imgOutline thumbnail height-80 width-80 center"> <div class="imgTotal"> <div class="imgBorder"> <a class="btn" href="index.php?option=com_media&view=mediaList&tmpl=component&folder=<?php echo $this->state->parent; ?>" target="folderframe"> <span class="icon-arrow-up"></span></a> </div> </div> <div class="controls"> <span> </span> </div> <div class="imginfoBorder"> <a href="index.php?option=com_media&view=mediaList&tmpl=component&folder=<?php echo $this->state->parent; ?>" target="folderframe">..</a> </div> </li> <?php endif; ?> PKc��\�4ѓ5components/com_media/views/medialist/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; PKc��\�����8components/com_media/views/medialist/tmpl/details_up.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $user = JFactory::getUser(); ?> <?php if ($this->state->folder != '') : ?> <tr> <td class="imgTotal"> <a href="index.php?option=com_media&view=mediaList&tmpl=component&folder=<?php echo $this->state->parent; ?>" target="folderframe"> <span class="icon-arrow-up"></span></a> </td> <td class="description"> <a href="index.php?option=com_media&view=mediaList&tmpl=component&folder=<?php echo $this->state->parent; ?>" target="folderframe">..</a> </td> <td> </td> <td> </td> <?php if ($user->authorise('core.delete', 'com_media')):?> <td> </td> <?php endif;?> </tr> <?php endif; ?> PKc��\?��hBB4components/com_media/views/medialist/tmpl/thumbs.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $params = JComponentHelper::getParams('com_media'); $path = 'file_path'; ?> <form target="_parent" action="index.php?option=com_media&tmpl=index&folder=<?php echo $this->state->folder; ?>" method="post" id="mediamanager-form" name="mediamanager-form"> <div class="muted"> <p> <span class="icon-folder"></span> <?php if ($this->state->folder != '') : ?> <?php echo JText::_('JGLOBAL_ROOT') . ': ' . $params->get($path, 'images') . '/' . $this->state->folder; ?> <?php else : ?> <?php echo JText::_('JGLOBAL_ROOT') . ': ' . $params->get($path, 'images'); ?> <?php endif; ?> </p> </div> <ul class="manager thumbnails"> <?php echo $this->loadTemplate('up'); ?> <?php for ($i = 0, $n = count($this->folders); $i < $n; $i++) : $this->setFolder($i); echo $this->loadTemplate('folder'); endfor; ?> <?php for ($i = 0, $n = count($this->documents); $i < $n; $i++) : $this->setDoc($i); echo $this->loadTemplate('doc'); endfor; ?> <?php for ($i = 0, $n = count($this->images); $i < $n; $i++) : $this->setImage($i); echo $this->loadTemplate('img'); endfor; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="username" value="" /> <input type="hidden" name="password" value="" /> <?php echo JHtml::_('form.token'); ?> </ul> </form> PKc��\Z{����<components/com_media/views/medialist/tmpl/details_folder.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $user = JFactory::getUser(); JHtml::_('bootstrap.tooltip'); ?> <tr> <td class="imgTotal"> <a href="index.php?option=com_media&view=mediaList&tmpl=component&folder=<?php echo $this->_tmp_folder->path_relative; ?>" target="folderframe"> <span class="icon-folder-2"></span></a> </td> <td class="description"> <a href="index.php?option=com_media&view=mediaList&tmpl=component&folder=<?php echo $this->_tmp_folder->path_relative; ?>" target="folderframe"><?php echo $this->_tmp_folder->name; ?></a> </td> <td>  </td> <td>  </td> <?php if ($user->authorise('core.delete', 'com_media')):?> <td> <a class="delete-item" target="_top" href="index.php?option=com_media&task=folder.delete&tmpl=index&folder=<?php echo $this->state->folder; ?>&<?php echo JSession::getFormToken(); ?>=1&rm[]=<?php echo $this->_tmp_folder->name; ?>" rel="<?php echo $this->_tmp_folder->name; ?>' :: <?php echo $this->_tmp_folder->files + $this->_tmp_folder->folders; ?>"><span class="icon-remove hasTooltip" title="<?php echo JHtml::tooltipText('JACTION_DELETE');?>"></span></a> <input type="checkbox" name="rm[]" value="<?php echo $this->_tmp_folder->name; ?>" /> </td> <?php endif;?> </tr> PKc��\����8components/com_media/views/medialist/tmpl/thumbs_doc.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; $user = JFactory::getUser(); $params = new Registry; $dispatcher = JEventDispatcher::getInstance(); $dispatcher->trigger('onContentBeforeDisplay', array('com_media.file', &$this->_tmp_doc, &$params)); ?> <li class="imgOutline thumbnail height-80 width-80 center"> <?php if ($user->authorise('core.delete', 'com_media')):?> <a class="close delete-item" target="_top" href="index.php?option=com_media&task=file.delete&tmpl=index&<?php echo JSession::getFormToken(); ?>=1&folder=<?php echo $this->state->folder; ?>&rm[]=<?php echo $this->_tmp_doc->name; ?>" rel="<?php echo $this->_tmp_doc->name; ?>" title="<?php echo JText::_('JACTION_DELETE');?>">×</a> <input class="pull-left" type="checkbox" name="rm[]" value="<?php echo $this->_tmp_doc->name; ?>" /> <div class="clearfix"></div> <?php endif;?> <div class="height-50"> <a style="display: block; width: 100%; height: 100%" title="<?php echo $this->_tmp_doc->name; ?>" > <?php echo JHtml::_('image', $this->_tmp_doc->icon_32, $this->_tmp_doc->name, null, true, true) ? JHtml::_('image', $this->_tmp_doc->icon_32, $this->_tmp_doc->title, null, true) : JHtml::_('image', 'media/con_info.png', $this->_tmp_doc->name, null, true); ?></a> </div> <div class="small" title="<?php echo $this->_tmp_doc->name; ?>" > <?php echo JHtml::_('string.truncate', $this->_tmp_doc->name, 10, false); ?> </div> </li> <?php $dispatcher->trigger('onContentAfterDisplay', array('com_media.file', &$this->_tmp_doc, &$params)); PKc��\C'ȩ��9components/com_media/views/medialist/tmpl/details_img.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; JHtml::_('bootstrap.tooltip'); $user = JFactory::getUser(); $params = new Registry; $dispatcher = JEventDispatcher::getInstance(); $dispatcher->trigger('onContentBeforeDisplay', array('com_media.file', &$this->_tmp_img, &$params)); ?> <tr> <td> <a class="img-preview" href="<?php echo COM_MEDIA_BASEURL . '/' . $this->_tmp_img->path_relative; ?>" title="<?php echo $this->_tmp_img->name; ?>"><?php echo JHtml::_('image', COM_MEDIA_BASEURL . '/' . $this->_tmp_img->path_relative, JText::sprintf('COM_MEDIA_IMAGE_TITLE', $this->_tmp_img->title, JHtml::_('number.bytes', $this->_tmp_img->size)), array('width' => $this->_tmp_img->width_16, 'height' => $this->_tmp_img->height_16)); ?></a> </td> <td class="description"> <a href="<?php echo COM_MEDIA_BASEURL . '/' . $this->_tmp_img->path_relative; ?>" title="<?php echo $this->_tmp_img->name; ?>" rel="preview"><?php echo $this->escape($this->_tmp_img->title); ?></a> </td> <td class="dimensions"> <?php echo JText::sprintf('COM_MEDIA_IMAGE_DIMENSIONS', $this->_tmp_img->width, $this->_tmp_img->height); ?> </td> <td class="filesize"> <?php echo JHtml::_('number.bytes', $this->_tmp_img->size); ?> </td> <?php if ($user->authorise('core.delete', 'com_media')):?> <td> <a class="delete-item" target="_top" href="index.php?option=com_media&task=file.delete&tmpl=index&<?php echo JSession::getFormToken(); ?>=1&folder=<?php echo $this->state->folder; ?>&rm[]=<?php echo $this->_tmp_img->name; ?>" rel="<?php echo $this->_tmp_img->name; ?>"><span class="icon-remove hasTooltip" title="<?php echo JHtml::tooltipText('JACTION_DELETE');?>"></span></a> <input type="checkbox" name="rm[]" value="<?php echo $this->_tmp_img->name; ?>" /> </td> <?php endif;?> </tr> <?php $dispatcher->trigger('onContentAfterDisplay', array('com_media.file', &$this->_tmp_img, &$params)); PKc��\���==2components/com_media/views/medialist/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * HTML View class for the Media component * * @since 1.0 */ class MediaViewMediaList 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 a Error object. * * @since 1.0 */ public function display($tpl = null) { $app = JFactory::getApplication(); if (!$app->isAdmin()) { return $app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'warning'); } // Do not allow cache $app->allowCache(false); JHtml::_('behavior.framework', true); JFactory::getDocument()->addScriptDeclaration(" window.addEvent('domready', function() { window.parent.document.updateUploader(); $$('a.img-preview').each(function(el) { el.addEvent('click', function(e) { window.top.document.preview.fromElement(el); return false; }); }); });"); $images = $this->get('images'); $documents = $this->get('documents'); $folders = $this->get('folders'); $state = $this->get('state'); // Check for invalid folder name if (empty($state->folder)) { $dirname = JRequest::getVar('folder', '', '', 'string'); if (!empty($dirname)) { $dirname = htmlspecialchars($dirname, ENT_COMPAT, 'UTF-8'); JError::raiseWarning(100, JText::sprintf('COM_MEDIA_ERROR_UNABLE_TO_BROWSE_FOLDER_WARNDIRNAME', $dirname)); } } $this->baseURL = JUri::root(); $this->images = &$images; $this->documents = &$documents; $this->folders = &$folders; $this->state = &$state; parent::display($tpl); } /** * Set the active folder * * @param integer $index Folder position * * @return void * * @since 1.0 */ public function setFolder($index = 0) { if (isset($this->folders[$index])) { $this->_tmp_folder = &$this->folders[$index]; } else { $this->_tmp_folder = new JObject; } } /** * Set the active image * * @param integer $index Image position * * @return void * * @since 1.0 */ public function setImage($index = 0) { if (isset($this->images[$index])) { $this->_tmp_img = &$this->images[$index]; } else { $this->_tmp_img = new JObject; } } /** * Set the active doc * * @param integer $index Doc position * * @return void * * @since 1.0 */ public function setDoc($index = 0) { if (isset($this->documents[$index])) { $this->_tmp_doc = &$this->documents[$index]; } else { $this->_tmp_doc = new JObject; } } } PKc��\���<components/com_media/views/imageslist/tmpl/default_image.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; $params = new Registry; $dispatcher = JEventDispatcher::getInstance(); $dispatcher->trigger('onContentBeforeDisplay', array('com_media.file', &$this->_tmp_img, &$params)); ?> <li class="imgOutline thumbnail height-80 width-80 center"> <a class="img-preview" href="javascript:ImageManager.populateFields('<?php echo $this->_tmp_img->path_relative; ?>')" title="<?php echo $this->_tmp_img->name; ?>" > <div class="height-50"> <?php echo JHtml::_('image', $this->baseURL . '/' . $this->_tmp_img->path_relative, JText::sprintf('COM_MEDIA_IMAGE_TITLE', $this->_tmp_img->title, JHtml::_('number.bytes', $this->_tmp_img->size)), array('width' => $this->_tmp_img->width_60, 'height' => $this->_tmp_img->height_60)); ?> </div> <div class="small"> <?php echo JHtml::_('string.truncate', $this->_tmp_img->name, 10, false); ?> </div> </a> </li> <?php $dispatcher->trigger('onContentAfterDisplay', array('com_media.file', &$this->_tmp_img, &$params)); PKc��\O�GG=components/com_media/views/imageslist/tmpl/default_folder.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $input = JFactory::getApplication()->input; ?> <li class="imgOutline thumbnail height-80 width-80 center"> <a href="index.php?option=com_media&view=imagesList&tmpl=component&folder=<?php echo $this->_tmp_folder->path_relative; ?>&asset=<?php echo $input->getCmd('asset');?>&author=<?php echo $input->getCmd('author');?>" target="imageframe"> <div class="height-50"> <span class="icon-folder-2"></span> </div> <div class="small"> <?php echo JHtml::_('string.truncate', $this->_tmp_folder->name, 10, false); ?> </div> </a> </li> PKc��\�b*>>6components/com_media/views/imageslist/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <?php if (count($this->images) > 0 || count($this->folders) > 0) : ?> <ul class="manager thumbnails"> <?php for ($i = 0, $n = count($this->folders); $i < $n; $i++) : $this->setFolder($i); echo $this->loadTemplate('folder'); endfor; ?> <?php for ($i = 0, $n = count($this->images); $i < $n; $i++) : $this->setImage($i); echo $this->loadTemplate('image'); endfor; ?> </ul> <?php else : ?> <div id="media-noimages"> <div class="alert alert-info"><?php echo JText::_('COM_MEDIA_NO_IMAGES_FOUND'); ?></div> </div> <?php endif; ?> PKc��\�$���3components/com_media/views/imageslist/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * HTML View class for the Media component * * @since 1.0 */ class MediaViewImagesList 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 a Error object. * * @since 1.0 */ public function display($tpl = null) { // Do not allow cache JFactory::getApplication()->allowCache(false); $lang = JFactory::getLanguage(); JHtml::_('stylesheet', 'media/popup-imagelist.css', array(), true); if ($lang->isRtl()) { JHtml::_('stylesheet', 'media/popup-imagelist_rtl.css', array(), true); } $document = JFactory::getDocument(); $document->addScriptDeclaration("var ImageManager = window.parent.ImageManager;"); $images = $this->get('images'); $folders = $this->get('folders'); $state = $this->get('state'); $this->baseURL = COM_MEDIA_BASEURL; $this->images = &$images; $this->folders = &$folders; $this->state = &$state; parent::display($tpl); } /** * Set the active folder * * @param integer $index Folder position * * @return void * * @since 1.0 */ public function setFolder($index = 0) { if (isset($this->folders[$index])) { $this->_tmp_folder = &$this->folders[$index]; } else { $this->_tmp_folder = new JObject; } } /** * Set the active image * * @param integer $index Image position * * @return void * * @since 1.0 */ public function setImage($index = 0) { if (isset($this->images[$index])) { $this->_tmp_img = &$this->images[$index]; } else { $this->_tmp_img = new JObject; } } } PKc��\5� ��<components/com_media/views/media/tmpl/default_navigation.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $app = JFactory::getApplication(); $style = $app->getUserStateFromRequest('media.list.layout', 'layout', 'thumbs', 'word'); ?> <div class="media btn-group"> <a href="#" id="thumbs" onclick="MediaManager.setViewType('thumbs')" class="btn <?php echo ($style == "thumbs") ? 'active' : '';?>"> <span class="icon-grid-view-2"></span> <?php echo JText::_('COM_MEDIA_THUMBNAIL_VIEW'); ?></a> <a href="#" id="details" onclick="MediaManager.setViewType('details')" class="btn <?php echo ($style == "details") ? 'active' : '';?>"> <span class="icon-list-view"></span> <?php echo JText::_('COM_MEDIA_DETAIL_VIEW'); ?></a> </div> PKc��\��J%��1components/com_media/views/media/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $user = JFactory::getUser(); $input = JFactory::getApplication()->input; ?> <div class="row-fluid"> <!-- Begin Sidebar --> <div class="span2"> <div id="treeview"> <div id="media-tree_tree" class="sidebar-nav"> <?php echo $this->loadTemplate('folders'); ?> </div> </div> </div> <!-- End Sidebar --> <!-- Begin Content --> <div class="span10"> <?php echo $this->loadTemplate('navigation'); ?> <?php if (($user->authorise('core.create', 'com_media')) and $this->require_ftp) : ?> <form action="index.php?option=com_media&task=ftpValidate" name="ftpForm" id="ftpForm" method="post"> <fieldset title="<?php echo JText::_('COM_MEDIA_DESCFTPTITLE'); ?>"> <legend><?php echo JText::_('COM_MEDIA_DESCFTPTITLE'); ?></legend> <?php echo JText::_('COM_MEDIA_DESCFTP'); ?> <label for="username"><?php echo JText::_('JGLOBAL_USERNAME'); ?></label> <input type="text" id="username" name="username" size="70" value="" /> <label for="password"><?php echo JText::_('JGLOBAL_PASSWORD'); ?></label> <input type="password" id="password" name="password" size="70" value="" /> </fieldset> </form> <?php endif; ?> <form action="index.php?option=com_media" name="adminForm" id="mediamanager-form" method="post" enctype="multipart/form-data" > <input type="hidden" name="task" value="" /> <input type="hidden" name="cb1" id="cb1" value="0" /> <input class="update-folder" type="hidden" name="folder" id="folder" value="<?php echo $this->state->folder; ?>" /> </form> <?php if ($user->authorise('core.create', 'com_media')):?> <!-- File Upload Form --> <div id="collapseUpload" class="collapse"> <form action="<?php echo JUri::base(); ?>index.php?option=com_media&task=file.upload&tmpl=component&<?php echo $this->session->getName() . '=' . $this->session->getId(); ?>&<?php echo JSession::getFormToken();?>=1&format=html" id="uploadForm" class="form-inline" name="uploadForm" method="post" enctype="multipart/form-data"> <div id="uploadform"> <fieldset id="upload-noflash" class="actions"> <label for="upload-file" class="control-label"><?php echo JText::_('COM_MEDIA_UPLOAD_FILE'); ?></label> <input type="file" id="upload-file" name="Filedata[]" multiple /> <button class="btn btn-primary" id="upload-submit"><span class="icon-upload icon-white"></span> <?php echo JText::_('COM_MEDIA_START_UPLOAD'); ?></button> <p class="help-block"><?php echo $this->config->get('upload_maxsize') == '0' ? JText::_('COM_MEDIA_UPLOAD_FILES_NOLIMIT') : JText::sprintf('COM_MEDIA_UPLOAD_FILES', $this->config->get('upload_maxsize')); ?></p> </fieldset> <input class="update-folder" type="hidden" name="folder" id="folder" value="<?php echo $this->state->folder; ?>" /> <?php JFactory::getSession()->set('com_media.return_url', 'index.php?option=com_media'); ?> </div> </form> </div> <div id="collapseFolder" class="collapse"> <form action="index.php?option=com_media&task=folder.create&tmpl=<?php echo $input->getCmd('tmpl', 'index');?>" name="folderForm" id="folderForm" class="form-inline" method="post"> <div class="path"> <input type="text" id="folderpath" readonly="readonly" class="update-folder" /> <input type="text" id="foldername" name="foldername" /> <input class="update-folder" type="hidden" name="folderbase" id="folderbase" value="<?php echo $this->state->folder; ?>" /> <button type="submit" class="btn"><span class="icon-folder-open"></span> <?php echo JText::_('COM_MEDIA_CREATE_FOLDER'); ?></button> </div> <?php echo JHtml::_('form.token'); ?> </form> </div> <?php endif;?> <form action="index.php?option=com_media&task=folder.create&tmpl=<?php echo $input->getCmd('tmpl', 'index');?>" name="folderForm" id="folderForm" method="post"> <div id="folderview"> <div class="view"> <iframe class="thumbnail" src="index.php?option=com_media&view=mediaList&tmpl=component&folder=<?php echo $this->state->folder;?>" id="folderframe" name="folderframe" width="100%" height="500px" marginwidth="0" marginheight="0" scrolling="auto"></iframe> </div> <?php echo JHtml::_('form.token'); ?> </div> </form> </div> <!-- End Content --> </div> PKc��\�/")aa9components/com_media/views/media/tmpl/default_folders.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Set up the sanitised target for the ul $ulTarget = str_replace('/', '-', $this->folders['data']->relative); ?> <ul class="nav nav-list collapse in" id="collapseFolder-<?php echo $ulTarget; ?>"> <?php if (isset($this->folders['children'])) : foreach ($this->folders['children'] as $folder) : // Get a sanitised name for the target $target = str_replace('/', '-', $folder['data']->relative); ?> <li id="<?php echo $target; ?>"> <span class="icon-folder-2 pull-left" data-toggle="collapse" data-target="#collapseFolder-<?php echo $target; ?>"></span> <a href="index.php?option=com_media&view=mediaList&tmpl=component&folder=<?php echo $folder['data']->relative; ?>" target="folderframe"> <?php echo $folder['data']->name; ?> </a> <?php echo $this->getFolderLevel($folder); ?> </li> <?php endforeach; endif; ?> </ul> PKc��\����.components/com_media/views/media/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; // Include jQuery JHtml::_('jquery.framework'); /** * HTML View class for the Media component * * @since 1.0 */ class MediaViewMedia 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 a Error object. * * @since 1.0 */ public function display($tpl = null) { $app = JFactory::getApplication(); $config = JComponentHelper::getParams('com_media'); if (!$app->isAdmin()) { return $app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'warning'); } $lang = JFactory::getLanguage(); $style = $app->getUserStateFromRequest('media.list.layout', 'layout', 'thumbs', 'word'); $document = JFactory::getDocument(); JHtml::_('behavior.framework', true); JHtml::_('script', 'media/mediamanager.min.js', true, true); JHtml::_('behavior.modal'); $document->addScriptDeclaration(" window.addEvent('domready', function() { document.preview = SqueezeBox; });"); JHtml::_('stylesheet', 'system/mootree.css', array(), true); if ($lang->isRtl()) { JHtml::_('stylesheet', 'media/mootree_rtl.css', array(), true); } if (DIRECTORY_SEPARATOR == '\\') { $base = str_replace(DIRECTORY_SEPARATOR, "\\\\", COM_MEDIA_BASE); } else { $base = COM_MEDIA_BASE; } $js = " var basepath = '" . $base . "'; var viewstyle = '" . $style . "'; "; $document->addScriptDeclaration($js); /* * Display form for FTP credentials? * Don't set them here, as there are other functions called before this one if there is any file write operation */ $ftp = !JClientHelper::hasCredentials('ftp'); $session = JFactory::getSession(); $state = $this->get('state'); $this->session = $session; $this->config = &$config; $this->state = &$state; $this->require_ftp = $ftp; $this->folders_id = ' id="media-tree"'; $this->folders = $this->get('folderTree'); // Set the toolbar $this->addToolbar(); parent::display($tpl); echo JHtml::_('behavior.keepalive'); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { // Get the toolbar object instance $bar = JToolBar::getInstance('toolbar'); $user = JFactory::getUser(); // The toolbar functions depend on Bootstrap JS JHtml::_('bootstrap.framework'); // Set the titlebar text JToolbarHelper::title(JText::_('COM_MEDIA'), 'images mediamanager'); // Add a upload button if ($user->authorise('core.create', 'com_media')) { // Instantiate a new JLayoutFile instance and render the layout $layout = new JLayoutFile('toolbar.uploadmedia'); $bar->appendButton('Custom', $layout->render(array()), 'upload'); JToolbarHelper::divider(); } // Add a create folder button if ($user->authorise('core.create', 'com_media')) { // Instantiate a new JLayoutFile instance and render the layout $layout = new JLayoutFile('toolbar.newfolder'); $bar->appendButton('Custom', $layout->render(array()), 'upload'); JToolbarHelper::divider(); } // Add a delete button if ($user->authorise('core.delete', 'com_media')) { // Instantiate a new JLayoutFile instance and render the layout $layout = new JLayoutFile('toolbar.deletemedia'); $bar->appendButton('Custom', $layout->render(array()), 'upload'); JToolbarHelper::divider(); } // Add a preferences button if ($user->authorise('core.admin', 'com_media') || $user->authorise('core.options', 'com_media')) { JToolbarHelper::preferences('com_media'); JToolbarHelper::divider(); } JToolbarHelper::help('JHELP_CONTENT_MEDIA_MANAGER'); } /** * Display a folder level * * @param array $folder Array with folder data * * @return string * * @since 1.0 */ protected function getFolderLevel($folder) { $this->folders_id = null; $txt = null; if (isset($folder['children']) && count($folder['children'])) { $tmp = $this->folders; $this->folders = $folder; $txt = $this->loadTemplate('folders'); $this->folders = $tmp; } return $txt; } } PKc��\ zg��2components/com_media/views/images/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('formbehavior.chosen', 'select'); // Load tooltip instance without HTML support because we have a HTML tag in the tip JHtml::_('bootstrap.tooltip', '.noHtmlTip', array('html' => false)); $user = JFactory::getUser(); $input = JFactory::getApplication()->input; $params = JComponentHelper::getParams('com_media'); JFactory::getDocument()->addScriptDeclaration( " var image_base_path = '" . $params->get('image_path', 'images') . "/'; " ); ?> <form action="index.php?option=com_media&asset=<?php echo $input->getCmd('asset');?>&author=<?php echo $input->getCmd('author'); ?>" class="form-vertical" id="imageForm" method="post" enctype="multipart/form-data"> <div id="messages" style="display: none;"> <span id="message"></span><?php echo JHtml::_('image', 'media/dots.gif', '...', array('width' => 22, 'height' => 12), true) ?> </div> <div class="well"> <div class="row"> <div class="span9 control-group"> <div class="control-label"> <label class="control-label" for="folder"><?php echo JText::_('COM_MEDIA_DIRECTORY') ?></label> </div> <div class="controls"> <?php echo $this->folderList; ?> <button class="btn" type="button" id="upbutton" title="<?php echo JText::_('COM_MEDIA_DIRECTORY_UP') ?>"><?php echo JText::_('COM_MEDIA_UP') ?></button> </div> </div> <div class="pull-right"> <button class="btn btn-primary" type="button" onclick="<?php if ($this->state->get('field.id')):?>window.parent.jInsertFieldValue(document.getElementById('f_url').value,'<?php echo $this->state->get('field.id');?>');<?php else:?>ImageManager.onok();<?php endif;?>window.parent.jModalClose();"><?php echo JText::_('COM_MEDIA_INSERT') ?></button> <button class="btn" type="button" onclick="window.parent.jModalClose();"><?php echo JText::_('JCANCEL') ?></button> </div> </div> </div> <iframe id="imageframe" name="imageframe" src="index.php?option=com_media&view=imagesList&tmpl=component&folder=<?php echo $this->state->folder?>&asset=<?php echo $input->getCmd('asset');?>&author=<?php echo $input->getCmd('author');?>"></iframe> <div class="well"> <div class="row"> <div class="span6 control-group"> <div class="control-label"> <label for="f_url"><?php echo JText::_('COM_MEDIA_IMAGE_URL') ?></label> </div> <div class="controls"> <input type="text" id="f_url" value="" /> </div> </div> <?php if (!$this->state->get('field.id')):?> <div class="span6 control-group"> <div class="control-label"> <label title="<?php echo JText::_('COM_MEDIA_ALIGN_DESC'); ?>" class="noHtmlTip" for="f_align"><?php echo JText::_('COM_MEDIA_ALIGN') ?></label> </div> <div class="controls"> <select size="1" id="f_align"> <option value="" selected="selected"><?php echo JText::_('COM_MEDIA_NOT_SET') ?></option> <option value="left"><?php echo JText::_('JGLOBAL_LEFT') ?></option> <option value="center"><?php echo JText::_('JGLOBAL_CENTER') ?></option> <option value="right"><?php echo JText::_('JGLOBAL_RIGHT') ?></option> </select> </div> </div> <?php endif;?> </div> <?php if (!$this->state->get('field.id')):?> <div class="row"> <div class="span6 control-group"> <div class="control-label"> <label for="f_alt"><?php echo JText::_('COM_MEDIA_IMAGE_DESCRIPTION') ?></label> </div> <div class="controls"> <input type="text" id="f_alt" value="" /> </div> </div> <div class="span6 control-group"> <div class="control-label"> <label for="f_title"><?php echo JText::_('COM_MEDIA_TITLE') ?></label> </div> <div class="controls"> <input type="text" id="f_title" value="" /> </div> </div> </div> <div class="row"> <div class="span6 control-group"> <div class="control-label"> <label for="f_caption"><?php echo JText::_('COM_MEDIA_CAPTION') ?></label> </div> <div class="controls"> <input type="text" id="f_caption" value="" /> </div> </div> <div class="span6 control-group"> <div class="control-label"> <label title="<?php echo JText::_('COM_MEDIA_CAPTION_CLASS_DESC'); ?>" class="noHtmlTip" for="f_caption_class"><?php echo JText::_('COM_MEDIA_CAPTION_CLASS_LABEL') ?></label> </div> <div class="controls"> <input type="text" list="d_caption_class" id="f_caption_class" value="" /> <datalist id="d_caption_class"> <option value="text-left"> <option value="text-center"> <option value="text-right"> </datalist> </div> </div> </div> <?php endif;?> <input type="hidden" id="dirPath" name="dirPath" /> <input type="hidden" id="f_file" name="f_file" /> <input type="hidden" id="tmpl" name="component" /> </div> </form> <?php if ($user->authorise('core.create', 'com_media')) : ?> <form action="<?php echo JUri::base(); ?>index.php?option=com_media&task=file.upload&tmpl=component&<?php echo $this->session->getName() . '=' . $this->session->getId(); ?>&<?php echo JSession::getFormToken();?>=1&asset=<?php echo $input->getCmd('asset');?>&author=<?php echo $input->getCmd('author');?>&view=images" id="uploadForm" class="form-horizontal" name="uploadForm" method="post" enctype="multipart/form-data"> <div id="uploadform" class="well"> <fieldset id="upload-noflash" class="actions"> <div class="control-group"> <div class="control-label"> <label for="upload-file" class="control-label"><?php echo JText::_('COM_MEDIA_UPLOAD_FILE'); ?></label> </div> <div class="controls"> <input type="file" id="upload-file" name="Filedata[]" multiple /><button class="btn btn-primary" id="upload-submit"><span class="icon-upload icon-white"></span> <?php echo JText::_('COM_MEDIA_START_UPLOAD'); ?></button> <p class="help-block"><?php echo $this->config->get('upload_maxsize') == '0' ? JText::_('COM_MEDIA_UPLOAD_FILES_NOLIMIT') : JText::sprintf('COM_MEDIA_UPLOAD_FILES', $this->config->get('upload_maxsize')); ?></p> </div> </div> </fieldset> <?php JFactory::getSession()->set('com_media.return_url', 'index.php?option=com_media&view=images&tmpl=component&fieldid=' . $input->getCmd('fieldid', '') . '&e_name=' . $input->getCmd('e_name') . '&asset=' . $input->getCmd('asset') . '&author=' . $input->getCmd('author')); ?> </div> </form> <?php endif; PKc��\���/components/com_media/views/images/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * HTML View class for the Media component * * @since 1.0 */ class MediaViewImages 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 a Error object. * * @since 1.0 */ public function display($tpl = null) { $config = JComponentHelper::getParams('com_media'); $lang = JFactory::getLanguage(); // Include jQuery JHtml::_('jquery.framework'); JHtml::_('script', 'media/popup-imagemanager.js', true, true); JHtml::_('stylesheet', 'media/popup-imagemanager.css', array(), true); if ($lang->isRtl()) { JHtml::_('stylesheet', 'media/popup-imagemanager_rtl.css', array(), true); } /* * Display form for FTP credentials? * Don't set them here, as there are other functions called before this one if there is any file write operation */ $ftp = !JClientHelper::hasCredentials('ftp'); $this->session = JFactory::getSession(); $this->config = $config; $this->state = $this->get('state'); $this->folderList = $this->get('folderList'); $this->require_ftp = $ftp; parent::display($tpl); } } PKc��\R�ᣦ � &components/com_media/helpers/media.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Media helper class. * * @since 1.6 * @deprecated 4.0 Use JHelperMedia instead */ abstract class MediaHelper { /** * Checks if the file is an image * * @param string $fileName The filename * * @return boolean * * @since 1.5 * @deprecated 4.0 Use JHelperMedia::isImage instead */ public static function isImage($fileName) { JLog::add('MediaHelper::isImage() is deprecated. Use JHelperMedia::isImage() instead.', JLog::WARNING, 'deprecated'); $mediaHelper = new JHelperMedia; return $mediaHelper->isImage($fileName); } /** * Gets the file extension for the purpose of using an icon. * * @param string $fileName The filename * * @return string File extension * * @since 1.5 * @deprecated 4.0 Use JHelperMedia::getTypeIcon instead */ public static function getTypeIcon($fileName) { JLog::add('MediaHelper::getTypeIcon() is deprecated. Use JHelperMedia::getTypeIcon() instead.', JLog::WARNING, 'deprecated'); $mediaHelper = new JHelperMedia; return $mediaHelper->getTypeIcon($fileName); } /** * Checks if the file can be uploaded * * @param array $file File information * @param string $error An error message to be returned * * @return boolean * * @since 1.5 * @deprecated 4.0 Use JHelperMedia::canUpload instead */ public static function canUpload($file, $error = '') { JLog::add('MediaHelper::canUpload() is deprecated. Use JHelperMedia::canUpload() instead.', JLog::WARNING, 'deprecated'); $mediaHelper = new JHelperMedia; return $mediaHelper->canUpload($file, 'com_media'); } /** * Method to parse a file size * * @param integer $size The file size in bytes * * @return string The converted file size * * @since 1.6 * @deprecated 4.0 Use JHtmlNumber::bytes() instead */ public static function parseSize($size) { JLog::add('MediaHelper::parseSize() is deprecated. Use JHtmlNumber::bytes() instead.', JLog::WARNING, 'deprecated'); return JHtml::_('number.bytes', $size); } /** * Calculate the size of a resized image * * @param integer $width Image width * @param integer $height Image height * @param integer $target Target size * * @return array The new width and height * * @since 3.2 * @deprecated 4.0 Use JHelperMedia::imageResize instead */ public static function imageResize($width, $height, $target) { JLog::add('MediaHelper::countFiles() is deprecated. Use JHelperMedia::countFiles() instead.', JLog::WARNING, 'deprecated'); $mediaHelper = new JHelperMedia; return $mediaHelper->imageResize($width, $height, $target); } /** * Counts the files and directories in a directory that are not php or html files. * * @param string $dir Directory name * * @return array The number of files and directories in the given directory * * @since 1.5 * @deprecated 4.0 Use JHelperMedia::countFiles instead */ public static function countFiles($dir) { JLog::add('MediaHelper::countFiles() is deprecated. Use JHelperMedia::countFiles() instead.', JLog::WARNING, 'deprecated'); $mediaHelper = new JHelperMedia; return $mediaHelper->countFiles($dir); } } PKc��\d���components/com_media/media.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $input = JFactory::getApplication()->input; $user = JFactory::getUser(); $asset = $input->get('asset'); $author = $input->get('author'); // Access check. if (!$user->authorise('core.manage', 'com_media') && (!$asset or (!$user->authorise('core.edit', $asset) && !$user->authorise('core.create', $asset) && count($user->getAuthorisedCategories($asset, 'core.create')) == 0) && !($user->id == $author && $user->authorise('core.edit.own', $asset)))) { return JError::raiseWarning(403, JText::_('JERROR_ALERTNOAUTHOR')); } $params = JComponentHelper::getParams('com_media'); // Load the helper class require_once JPATH_COMPONENT_ADMINISTRATOR . '/helpers/media.php'; // Set the path definitions $popup_upload = $input->get('pop_up', null); $path = 'file_path'; $view = $input->get('view'); if (substr(strtolower($view), 0, 6) == 'images' || $popup_upload == 1) { $path = 'image_path'; } define('COM_MEDIA_BASE', JPATH_ROOT . '/' . $params->get($path, 'images')); define('COM_MEDIA_BASEURL', JUri::root() . $params->get($path, 'images')); $controller = JControllerLegacy::getInstance('Media', array('base_path' => JPATH_COMPONENT_ADMINISTRATOR)); $controller->execute($input->get('task')); $controller->redirect(); PKc��\�V�,components/com_media/models/forms/index.htmlnu�[���<!DOCTYPE html><title></title> PKc��\X�N�??$components/com_media/models/list.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); /** * Media Component List Model * * @since 1.5 */ class MediaModelList extends JModelLegacy { /** * Method to get model state variables * * @param string $property Optional parameter name * @param mixed $default Optional default value * * @return object The property where specified, the state object where omitted * * @since 1.5 */ public function getState($property = null, $default = null) { static $set; if (!$set) { $input = JFactory::getApplication()->input; $folder = $input->get('folder', '', 'path'); $this->setState('folder', $folder); $parent = str_replace("\\", "/", dirname($folder)); $parent = ($parent == '.') ? null : $parent; $this->setState('parent', $parent); $set = true; } return parent::getState($property, $default); } /** * Get the images on the current folder * * @return array * * @since 1.5 */ public function getImages() { $list = $this->getList(); return $list['images']; } /** * Get the folders on the current folder * * @return array * * @since 1.5 */ public function getFolders() { $list = $this->getList(); return $list['folders']; } /** * Get the documents on the current folder * * @return array * * @since 1.5 */ public function getDocuments() { $list = $this->getList(); return $list['docs']; } /** * Build imagelist * * @return array * * @since 1.5 */ public function getList() { static $list; // Only process the list once per request if (is_array($list)) { return $list; } // Get current path from request $current = (string) $this->getState('folder'); $basePath = COM_MEDIA_BASE . ((strlen($current) > 0) ? '/' . $current : ''); $mediaBase = str_replace(DIRECTORY_SEPARATOR, '/', COM_MEDIA_BASE . '/'); $images = array (); $folders = array (); $docs = array (); $fileList = false; $folderList = false; if (file_exists($basePath)) { // Get the list of files and folders from the given folder $fileList = JFolder::files($basePath); $folderList = JFolder::folders($basePath); } // Iterate over the files if they exist if ($fileList !== false) { foreach ($fileList as $file) { if (is_file($basePath . '/' . $file) && substr($file, 0, 1) != '.' && strtolower($file) !== 'index.html') { $tmp = new JObject; $tmp->name = $file; $tmp->title = $file; $tmp->path = str_replace(DIRECTORY_SEPARATOR, '/', JPath::clean($basePath . '/' . $file)); $tmp->path_relative = str_replace($mediaBase, '', $tmp->path); $tmp->size = filesize($tmp->path); $ext = strtolower(JFile::getExt($file)); switch ($ext) { // Image case 'jpg': case 'png': case 'gif': case 'xcf': case 'odg': case 'bmp': case 'jpeg': case 'ico': $info = @getimagesize($tmp->path); $tmp->width = @$info[0]; $tmp->height = @$info[1]; $tmp->type = @$info[2]; $tmp->mime = @$info['mime']; if (($info[0] > 60) || ($info[1] > 60)) { $dimensions = MediaHelper::imageResize($info[0], $info[1], 60); $tmp->width_60 = $dimensions[0]; $tmp->height_60 = $dimensions[1]; } else { $tmp->width_60 = $tmp->width; $tmp->height_60 = $tmp->height; } if (($info[0] > 16) || ($info[1] > 16)) { $dimensions = MediaHelper::imageResize($info[0], $info[1], 16); $tmp->width_16 = $dimensions[0]; $tmp->height_16 = $dimensions[1]; } else { $tmp->width_16 = $tmp->width; $tmp->height_16 = $tmp->height; } $images[] = $tmp; break; // Non-image document default: $tmp->icon_32 = "media/mime-icon-32/" . $ext . ".png"; $tmp->icon_16 = "media/mime-icon-16/" . $ext . ".png"; $docs[] = $tmp; break; } } } } // Iterate over the folders if they exist if ($folderList !== false) { foreach ($folderList as $folder) { $tmp = new JObject; $tmp->name = basename($folder); $tmp->path = str_replace(DIRECTORY_SEPARATOR, '/', JPath::clean($basePath . '/' . $folder)); $tmp->path_relative = str_replace($mediaBase, '', $tmp->path); $count = MediaHelper::countFiles($tmp->path); $tmp->files = $count[0]; $tmp->folders = $count[1]; $folders[] = $tmp; } } $list = array('folders' => $folders, 'docs' => $docs, 'images' => $images); return $list; } } PKc��\Ԃ-'components/com_media/models/manager.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Media Component Manager Model * * @since 1.5 */ class MediaModelManager extends JModelLegacy { /** * Method to get model state variables * * @param string $property Optional parameter name * @param mixed $default Optional default value * * @return object The property where specified, the state object where omitted * * @since 1.5 */ public function getState($property = null, $default = null) { static $set; if (!$set) { $input = JFactory::getApplication()->input; $folder = $input->get('folder', '', 'path'); $this->setState('folder', $folder); $fieldid = $input->get('fieldid', ''); $this->setState('field.id', $fieldid); $parent = str_replace("\\", "/", dirname($folder)); $parent = ($parent == '.') ? null : $parent; $this->setState('parent', $parent); $set = true; } return parent::getState($property, $default); } /** * Get a select field with a list of available folders * * @param string $base The image directory to display * * @return html * * @since 1.5 */ public function getFolderList($base = null) { // Get some paths from the request if (empty($base)) { $base = COM_MEDIA_BASE; } // Corrections for windows paths $base = str_replace(DIRECTORY_SEPARATOR, '/', $base); $com_media_base_uni = str_replace(DIRECTORY_SEPARATOR, '/', COM_MEDIA_BASE); // Get the list of folders jimport('joomla.filesystem.folder'); $folders = JFolder::folders($base, '.', true, true); $document = JFactory::getDocument(); $document->setTitle(JText::_('COM_MEDIA_INSERT_IMAGE')); // Build the array of select options for the folder list $options[] = JHtml::_('select.option', "", "/"); foreach ($folders as $folder) { $folder = str_replace($com_media_base_uni, "", str_replace(DIRECTORY_SEPARATOR, '/', $folder)); $value = substr($folder, 1); $text = str_replace(DIRECTORY_SEPARATOR, "/", $folder); $options[] = JHtml::_('select.option', $value, $text); } // Sort the folder list array if (is_array($options)) { sort($options); } // Get asset and author id (use integer filter) $input = JFactory::getApplication()->input; $asset = $input->get('asset', 0, 'integer'); // For new items the asset is a string. JAccess always checks type first // so both string and integer are supported. if ($asset == 0) { $asset = htmlspecialchars(json_encode(trim($input->get('asset', 0, 'cmd')))); } $author = $input->get('author', 0, 'integer'); // Create the drop-down folder select list $attribs = 'size="1" onchange="ImageManager.setFolder(this.options[this.selectedIndex].value, ' . $asset . ', ' . $author . ')" '; $list = JHtml::_('select.genericlist', $options, 'folderlist', $attribs, 'value', 'text', $base); return $list; } /** * Get the folder tree * * @param mixed $base Base folder | null for using base media folder * * @return array * * @since 1.5 */ public function getFolderTree($base = null) { // Get some paths from the request if (empty($base)) { $base = COM_MEDIA_BASE; } $mediaBase = str_replace(DIRECTORY_SEPARATOR, '/', COM_MEDIA_BASE . '/'); // Get the list of folders jimport('joomla.filesystem.folder'); $folders = JFolder::folders($base, '.', true, true); $tree = array(); foreach ($folders as $folder) { $folder = str_replace(DIRECTORY_SEPARATOR, '/', $folder); $name = substr($folder, strrpos($folder, '/') + 1); $relative = str_replace($mediaBase, '', $folder); $absolute = $folder; $path = explode('/', $relative); $node = (object) array('name' => $name, 'relative' => $relative, 'absolute' => $absolute); $tmp = &$tree; for ($i = 0, $n = count($path); $i < $n; $i++) { if (!isset($tmp['children'])) { $tmp['children'] = array(); } if ($i == $n - 1) { // We need to place the node $tmp['children'][$relative] = array('data' => $node, 'children' => array()); break; } if (array_key_exists($key = implode('/', array_slice($path, 0, $i + 1)), $tmp['children'])) { $tmp = &$tmp['children'][$key]; } } } $tree['data'] = (object) array('name' => JText::_('COM_MEDIA_MEDIA'), 'relative' => '', 'absolute' => $base); return $tree; } } PKc��\9�]��#components/com_media/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_media * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Media Manager Component Controller * * @since 1.5 */ class MediaController extends JControllerLegacy { /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { JPluginHelper::importPlugin('content'); $vName = $this->input->get('view', 'media'); switch ($vName) { case 'images': $vLayout = $this->input->get('layout', 'default', 'string'); $mName = 'manager'; break; case 'imagesList': $mName = 'list'; $vLayout = $this->input->get('layout', 'default', 'string'); break; case 'mediaList': $app = JFactory::getApplication(); $mName = 'list'; $vLayout = $app->getUserStateFromRequest('media.list.layout', 'layout', 'thumbs', 'word'); break; case 'media': default: $vName = 'media'; $vLayout = $this->input->get('layout', 'default', 'string'); $mName = 'manager'; break; } $document = JFactory::getDocument(); $vType = $document->getType(); // Get/Create the view $view = $this->getView($vName, $vType); $view->addTemplatePath(JPATH_COMPONENT_ADMINISTRATOR . '/views/' . strtolower($vName) . '/tmpl'); // Get/Create the model if ($model = $this->getModel($mName)) { // Push the model into the view (as default) $view->setModel($model, true); } // Set the layout $view->setLayout($vLayout); // Display the view $view->display(); return $this; } /** * Validate FTP credentials * * @return void * * @since 1.5 */ public function ftpValidate() { // Set FTP credentials, if given JClientHelper::setCredentialsFromRequest('ftp'); } } PKc��\�q.Faa,components/com_newsfeeds/tables/newsfeed.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Newsfeed Table class. * * @since 1.6 */ class NewsfeedsTableNewsfeed extends JTable { /** * Ensure the params, metadata and images are json encoded in the bind method * * @var array * @since 3.3 */ protected $_jsonEncode = array('params', 'metadata', 'images'); /** * Constructor * * @param JDatabaseDriver &$db A database connector object */ public function __construct(&$db) { parent::__construct('#__newsfeeds', 'id', $db); JTableObserverTags::createObserver($this, array('typeAlias' => 'com_newsfeeds.newsfeed')); JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_newsfeeds.newsfeed')); } /** * Overloaded check method to ensure data integrity. * * @return boolean True on success. */ public function check() { // Check for valid name. if (trim($this->name) == '') { $this->setError(JText::_('COM_NEWSFEEDS_WARNING_PROVIDE_VALID_NAME')); return false; } if (empty($this->alias)) { $this->alias = $this->name; } $this->alias = JApplication::stringURLSafe($this->alias); if (trim(str_replace('-', '', $this->alias)) == '') { $this->alias = JFactory::getDate()->format("Y-m-d-H-i-s"); } // Check the publish down date is not earlier than publish up. if ((int) $this->publish_down > 0 && $this->publish_down < $this->publish_up) { $this->setError(JText::_('JGLOBAL_START_PUBLISH_AFTER_FINISH')); return false; } // Clean up keywords -- eliminate extra spaces between phrases // and cr (\r) and lf (\n) characters from string if not empty if (!empty($this->metakey)) { // Array of characters to remove $bad_characters = array("\n", "\r", "\"", "<", ">"); // Remove bad characters $after_clean = JString::str_ireplace($bad_characters, "", $this->metakey); // Create array using commas as delimiter $keys = explode(',', $after_clean); $clean_keys = array(); foreach ($keys as $key) { if (trim($key)) { // Ignore blank keywords $clean_keys[] = trim($key); } } // Put array back together delimited by ", " $this->metakey = implode(", ", $clean_keys); } // Clean up description -- eliminate quotes and <> brackets if (!empty($this->metadesc)) { // Only process if not empty $bad_characters = array("\"", "<", ">"); $this->metadesc = JString::str_ireplace($bad_characters, "", $this->metadesc); } return true; } /** * Overriden JTable::store to set modified data. * * @param boolean $updateNulls True to update fields even if they are null. * * @return boolean True on success. * * @since 1.6 */ public function store($updateNulls = false) { $date = JFactory::getDate(); $user = JFactory::getUser(); $this->modified = $date->toSql(); if ($this->id) { // Existing item $this->modified_by = $user->get('id'); } else { // New newsfeed. A feed created and created_by field can be set by the user, // so we don't touch either of these if they are set. if (!(int) $this->created) { $this->created = $date->toSql(); } if (empty($this->created_by)) { $this->created_by = $user->get('id'); } } // Verify that the alias is unique $table = JTable::getInstance('Newsfeed', 'NewsfeedsTable'); if ($table->load(array('alias' => $this->alias, 'catid' => $this->catid)) && ($table->id != $this->id || $this->id == 0)) { $this->setError(JText::_('COM_NEWSFEEDS_ERROR_UNIQUE_ALIAS')); return false; } // Save links as punycode. $this->link = JStringPunycode::urlToPunycode($this->link); return parent::store($updateNulls); } } PKc��\�1U���2components/com_newsfeeds/controllers/newsfeeds.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Newsfeeds list controller class. * * @since 1.6 */ class NewsfeedsControllerNewsfeeds extends JControllerAdmin { /** * Method to get a model object, loading it if required. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 1.6 */ public function getModel($name = 'Newsfeed', $prefix = 'NewsfeedsModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } /** * Function that allows child controller access to model data * after the item has been deleted. * * @param JModelLegacy $model The data model object. * @param integer $ids The validated data. * * @return void * * @since 3.1 */ protected function postDeleteHook(JModelLegacy $model, $ids = null) { } } PKc��\�c�y--1components/com_newsfeeds/controllers/newsfeed.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Newsfeed controller class. * * @since 1.6 */ class NewsfeedsControllerNewsfeed extends JControllerForm { /** * Method override to check if you can add a new record. * * @param array $data An array of input data. * * @return boolean * * @since 1.6 */ protected function allowAdd($data = array()) { $user = JFactory::getUser(); $categoryId = JArrayHelper::getValue($data, 'catid', $this->input->getInt('filter_category_id'), 'int'); $allow = null; if ($categoryId) { // If the category has been passed in the URL check it. $allow = $user->authorise('core.create', $this->option . '.category.' . $categoryId); } if ($allow === null) { // In the absence of better information, revert to the component permissions. return parent::allowAdd($data); } else { return $allow; } } /** * Method to check if you can edit a record. * * @param array $data An array of input data. * @param string $key The name of the key for the primary key. * * @return boolean * * @since 1.6 */ protected function allowEdit($data = array(), $key = 'id') { $user = JFactory::getUser(); $recordId = (int) isset($data[$key]) ? $data[$key] : 0; $categoryId = 0; if ($recordId) { $categoryId = (int) $this->getModel()->getItem($recordId)->catid; } if ($categoryId) { // The category has been set. Check the category permissions. return $user->authorise('core.edit', $this->option . '.category.' . $categoryId); } else { // Since there is no asset tracking, revert to the component permissions. return parent::allowEdit($data, $key); } } /** * Method to run batch operations. * * @param object $model The model. * * @return boolean True if successful, false otherwise and internal error is set. * * @since 2.5 */ public function batch($model = null) { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Set the model $model = $this->getModel('Newsfeed', '', array()); // Preset the redirect $this->setRedirect(JRoute::_('index.php?option=com_newsfeeds&view=newsfeeds' . $this->getRedirectToListAppend(), false)); return parent::batch($model); } /** * Function that allows child controller access to model data after the data has been saved. * * @param JModelLegacy $model The data model object. * @param array $validData The validated data. * * @return void * * @since 3.1 */ protected function postSaveHook(JModelLegacy $model, $validData = array()) { } } PKc��\\�~``&components/com_newsfeeds/newsfeeds.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.tabstate'); if (!JFactory::getUser()->authorise('core.manage', 'com_newsfeeds')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } $controller = JControllerLegacy::getInstance('Newsfeeds'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKc��\"߿(�(#components/com_newsfeeds/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="newsfeed" label="COM_NEWSFEEDS_FIELD_CONFIG_NEWSFEED_SETTINGS_LABEL" description="COM_NEWSFEEDS_FIELD_CONFIG_NEWSFEED_SETTINGS_DESC"> <field name="newsfeed_layout" type="componentlayout" label="JGLOBAL_FIELD_LAYOUT_LABEL" description="JGLOBAL_FIELD_LAYOUT_DESC" menuitems="true" extension="com_newsfeeds" view="newsfeed" /> <field name="save_history" type="radio" class="btn-group btn-group-yesno" default="0" label="JGLOBAL_SAVE_HISTORY_OPTIONS_LABEL" description="JGLOBAL_SAVE_HISTORY_OPTIONS_DESC" > <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="history_limit" type="text" filter="integer" label="JGLOBAL_HISTORY_LIMIT_OPTIONS_LABEL" description="JGLOBAL_HISTORY_LIMIT_OPTIONS_DESC" default="5" /> <field id="show_feed_image" name="show_feed_image" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_NEWSFEEDS_FIELD_SHOW_FEED_IMAGE_LABEL" description="COM_NEWSFEEDS_FIELD_SHOW_FEED_IMAGE_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field id="show_feed_description" name="show_feed_description" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_NEWSFEEDS_FIELD_SHOW_FEED_DESCRIPTION_LABEL" description="COM_NEWSFEEDS_FIELD_SHOW_FEED_DESCRIPTION_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field id="show_item_description" name="show_item_description" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_NEWSFEEDS_FIELD_SHOW_ITEM_DESCRIPTION_LABEL" description="COM_NEWSFEEDS_FIELD_SHOW_ITEM_DESCRIPTION_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field id="feed_character_count" name="feed_character_count" type="text" size="6" default="0" label="COM_NEWSFEEDS_FIELD_CHARACTER_COUNT_LABEL" description="COM_NEWSFEEDS_FIELD_CHARACTER_COUNT_DESC" /> <field id="feed_display_order" name="feed_display_order" type="list" label="COM_NEWSFEEDS_FIELD_FEED_DISPLAY_ORDER_LABEL" description="COM_NEWSFEEDS_FIELD_FEED_DISPLAY_ORDER_DESC" > <option value="des">JGLOBAL_MOST_RECENT_FIRST</option> <option value="asc">JGLOBAL_OLDEST_FIRST</option> </field> <field name="float_first" type="list" label="COM_NEWSFEEDS_FLOAT_LABEL" description="COM_NEWSFEEDS_FLOAT_DESC"> <option value="right">COM_NEWSFEEDS_RIGHT</option> <option value="left">COM_NEWSFEEDS_LEFT</option> <option value="none">COM_NEWSFEEDS_NONE</option> </field> <field name="float_second" type="list" label="COM_NEWSFEEDS_FLOAT_LABEL" description="COM_NEWSFEEDS_FLOAT_DESC"> <option value="right">COM_NEWSFEEDS_RIGHT</option> <option value="left">COM_NEWSFEEDS_LEFT</option> <option value="none">COM_NEWSFEEDS_NONE</option> </field> <field id="show_tags" name="show_tags" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_NEWSFEEDS_FIELD_SHOW_TAGS_LABEL" description="COM_NEWSFEEDS_FIELD_SHOW_TAGS_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> </fieldset> <fieldset name="category" label="JCATEGORY" description="COM_NEWSFEEDS_FIELD_CONFIG_CATEGORY_SETTINGS_DESC"> <field name="category_layout" type="componentlayout" label="JGLOBAL_FIELD_LAYOUT_LABEL" description="JGLOBAL_FIELD_LAYOUT_DESC" menuitems="true" extension="com_newsfeeds" view="category" /> <field name="show_category_title" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_CATEGORY_TITLE" description="JGLOBAL_SHOW_CATEGORY_TITLE_DESC" default="1" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field id="show_description" name="show_description" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_LABEL" description="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_DESC"> <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_description_image" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_SHOW_CATEGORY_IMAGE_LABEL" description="JGLOBAL_SHOW_CATEGORY_IMAGE_DESC" > <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="maxLevel" type="list" description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC" label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL" default="-1" > <option value="0">JNONE</option> <option value="-1">JALL</option> <option value="1">J1</option> <option value="2">J2</option> <option value="3">J3</option> <option value="4">J4</option> <option value="5">J5</option> </field> <field name="show_empty_categories" type="radio" class="btn-group btn-group-yesno" label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL" description="COM_NEWSFEEDS_SHOW_EMPTY_CATEGORIES_DESC" default="0" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_subcat_desc" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL" description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field id="show_cat_items" name="show_cat_items" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_NEWSFEEDS_FIELD_SHOW_CAT_ITEMS_LABEL" description="COM_NEWSFEEDS_FIELD_SHOW_CAT_ITEMS_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_cat_tags" type="radio" label="COM_NEWSFEEDS_FIELD_SHOW_CAT_TAGS_LABEL" description="COM_NEWSFEEDS_FIELD_SHOW_CAT_TAGS_DESC" class="btn-group btn-group-yesno" default="1" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> </fieldset> <fieldset name="categories" label="JCATEGORIES" description="COM_NEWSFEEDS_CATEGORIES_DESC"> <field name="show_base_description" type="radio" default="1" class="btn-group btn-group-yesno" label="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_LABEL" description="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="maxLevelcat" type="list" default="-1" description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC" label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL" > <option value="-1">JALL</option> <option value="1">J1</option> <option value="2">J2</option> <option value="3">J3</option> <option value="4">J4</option> <option value="5">J5</option> </field> <field name="show_empty_categories_cat" type="radio" class="btn-group btn-group-yesno" default="0" label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL" description="COM_NEWSFEEDS_SHOW_EMPTY_CATEGORIES_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_subcat_desc_cat" type="radio" class="btn-group btn-group-yesno" default="1" description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC" label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_cat_items_cat" type="radio" class="btn-group btn-group-yesno" default="1" description="COM_NEWSFEEDS_FIELD_SHOW_CAT_ITEMS_DESC" label="COM_NEWSFEEDS_FIELD_SHOW_CAT_ITEMS_LABEL" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> </fieldset> <fieldset name="listlayout" label="JGLOBAL_LIST_LAYOUT_OPTIONS" description="COM_NEWSFEEDS_FIELD_CONFIG_LIST_SETTINGS_DESC"> <field name="filter_field" type="radio" class="btn-group btn-group-yesno" default="1" description="JGLOBAL_FILTER_FIELD_DESC" label="JGLOBAL_FILTER_FIELD_LABEL" > <option value="1">JSHOW</option> <option value="hide">JHIDE</option> </field> <field name="show_pagination_limit" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_DISPLAY_SELECT_LABEL" description="JGLOBAL_DISPLAY_SELECT_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field id="show_headings" name="show_headings" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_SHOW_HEADINGS_LABEL" description="JGLOBAL_SHOW_HEADINGS_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field id="show_articles" name="show_articles" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_NEWSFEEDS_FIELD_NUM_ARTICLES_COLUMN_LABEL" description="COM_NEWSFEEDS_FIELD_NUM_ARTICLES_COLUMN_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field id="show_link" name="show_link" type="radio" class="btn-group btn-group-yesno" default="1" label="COM_NEWSFEEDS_FIELD_SHOW_LINKS_LABEL" description="COM_NEWSFEEDS_FIELD_SHOW_LINKS_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> <field name="show_pagination" type="list" default="2" label="JGLOBAL_PAGINATION_LABEL" description="JGLOBAL_PAGINATION_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> <option value="2">JGLOBAL_AUTO</option> </field> <field name="show_pagination_results" type="radio" class="btn-group btn-group-yesno" default="1" label="JGLOBAL_PAGINATION_RESULTS_LABEL" description="JGLOBAL_PAGINATION_RESULTS_DESC" > <option value="1">JSHOW</option> <option value="0">JHIDE</option> </field> </fieldset> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_newsfeeds" section="component"/> </fieldset> </config> PKc��\�)�&&5components/com_newsfeeds/sql/uninstall.mysql.utf8.sqlnu�[���DROP TABLE IF EXISTS `#__newsfeeds`; PKc��\����3components/com_newsfeeds/sql/install.mysql.utf8.sqlnu�[���CREATE TABLE `#__newsfeeds` ( `catid` integer NOT NULL default '0', `id` integer(10) UNSIGNED NOT NULL auto_increment, `name` varchar(100) NOT NULL DEFAULT '', `alias` varchar(100) NOT NULL default '', `link` varchar(200) NOT NULL DEFAULT '', `filename` varchar(200) default NULL, `published` tinyint(1) NOT NULL default '0', `numarticles` integer unsigned NOT NULL default '1', `cache_time` integer unsigned NOT NULL default '3600', `checked_out` integer(10) unsigned NOT NULL default '0', `checked_out_time` datetime NOT NULL default '0000-00-00 00:00:00', `ordering` integer NOT NULL default '0', `rtl` tinyint(4) NOT NULL default '0', `access` tinyint UNSIGNED NOT NULL DEFAULT '0', `language` char(7) NOT NULL DEFAULT '', `params` text NOT NULL, `created` datetime NOT NULL default '0000-00-00 00:00:00', `created_by` int(10) unsigned NOT NULL default '0', `created_by_alias` varchar(255) NOT NULL default '', `modified` datetime NOT NULL default '0000-00-00 00:00:00', `modified_by` int(10) unsigned NOT NULL default '0', `metakey` text NOT NULL, `metadesc` text NOT NULL, `metadata` text NOT NULL, `xreference` varchar(50) NOT NULL COMMENT 'A reference to enable linkages to external data sets.', `publish_up` datetime NOT NULL default '0000-00-00 00:00:00', `publish_down` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`id`), KEY `idx_access` (`access`), KEY `idx_checkout` (`checked_out`), KEY `idx_state` (`published`), KEY `idx_catid` (`catid`), KEY `idx_createdby` (`created_by`), KEY `idx_language` (`language`), KEY `idx_xreference` (`xreference`) ) DEFAULT CHARSET=utf8; PKc��\�x��#components/com_newsfeeds/access.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <access component="com_newsfeeds"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> <action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_COMPONENT_DESC" /> </section> <section name="category"> <action name="core.create" title="JACTION_CREATE" description="COM_CATEGORIES_ACCESS_CREATE_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="COM_CATEGORIES_ACCESS_DELETE_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="COM_CATEGORIES_ACCESS_EDIT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="COM_CATEGORIES_ACCESS_EDITSTATE_DESC" /> <action name="core.edit.own" title="JACTION_EDITOWN" description="COM_CATEGORIES_ACCESS_EDITOWN_DESC" /> </section> </access>PKc��\��9ܰ�Dcomponents/com_newsfeeds/views/newsfeeds/tmpl/default_batch_body.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeed * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $published = $this->state->get('filter.published'); ?> <div class="row-fluid"> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.language'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.access'); ?> </div> </div> </div> <div class="row-fluid"> <?php if ($published >= 0) : ?> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.item', 'com_newsfeeds'); ?> </div> </div> <?php endif; ?> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.tag'); ?> </div> </div> </div> PKc��\f_Ls��Fcomponents/com_newsfeeds/views/newsfeeds/tmpl/default_batch_footer.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeed * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <button class="btn" type="button" onclick="document.getElementById('batch-category-id').value='';document.getElementById('batch-access').value='';document.getElementById('batch-language-id').value='';document.getElementById('batch-tag-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-success" type="submit" onclick="Joomla.submitbutton('newsfeed.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button>PKc��\�$����7components/com_newsfeeds/views/newsfeeds/tmpl/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; require_once JPATH_ROOT . '/components/com_newsfeeds/helpers/route.php'; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.framework', true); $input = JFactory::getApplication()->input; $function = JFactory::getApplication()->input->getCmd('function', 'jSelectNewsfeed'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); ?> <form action="<?php echo JRoute::_('index.php?option=com_newsfeeds&view=newsfeeds&layout=modal&tmpl=component&function=' . $function);?>" method="post" name="adminForm" id="adminForm" class="form-inline"> <fieldset class="filter clearfix"> <div class="btn-toolbar"> <div class="btn-group pull-left"> <label for="filter_search"> <?php echo JText::_('JSEARCH_FILTER_LABEL'); ?> </label> <input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" size="30" title="<?php echo JText::_('COM_NEWSFEEDS_FILTER_SEARCH_DESC'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>" data-placement="bottom"> <span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" data-placement="bottom" onclick="document.getElementById('filter_search').value='';this.form.submit();"> <span class="icon-remove"></span></button> </div> <div class="clearfix"></div> </div> <hr class="hr-condensed" /> <div class="filters pull-left"> <select name="filter_access" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_ACCESS');?></option> <?php echo JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access'));?> </select> <select name="filter_published" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option> <?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true);?> </select> <?php if ($this->state->get('filter.forcedLanguage')) : ?> <select name="filter_category_id" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option> <?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_newsfeeds', array('filter.language' => array('*', $this->state->get('filter.forcedLanguage')))), 'value', 'text', $this->state->get('filter.category_id'));?> </select> <input type="hidden" name="forcedLanguage" value="<?php echo $this->escape($this->state->get('filter.forcedLanguage')); ?>" /> <input type="hidden" name="filter_language" value="<?php echo $this->escape($this->state->get('filter.language')); ?>" /> <?php else : ?> <select name="filter_category_id" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_CATEGORY');?></option> <?php echo JHtml::_('select.options', JHtml::_('category.options', 'com_newsfeeds'), 'value', 'text', $this->state->get('filter.category_id'));?> </select> <select name="filter_language" class="input-medium" onchange="this.form.submit()"> <option value=""><?php echo JText::_('JOPTION_SELECT_LANGUAGE');?></option> <?php echo JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language'));?> </select> <?php endif; ?> </div> </fieldset> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped table-condensed"> <thead> <tr> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.name', $listDirn, $listOrder); ?> </th> <th width="15%" class="nowrap center"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'access_level', $listDirn, $listOrder); ?> </th> <th width="15%" class="nowrap center"> <?php echo JHtml::_('grid.sort', 'JCATEGORY', 'a.catid', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap center"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'language', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap center"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="15"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : ?> <?php if ($item->language && JLanguageMultilang::isEnabled()) { $tag = strlen($item->language); if ($tag == 5) { $lang = substr($item->language, 0, 2); } elseif ($tag == 6) { $lang = substr($item->language, 0, 3); } else { $lang = ""; } } elseif (!JLanguageMultilang::isEnabled()) { $lang = ""; } ?> <tr class="row<?php echo $i % 2; ?>"> <td> <a href="javascript:void(0)" onclick="if (window.parent) window.parent.<?php echo $this->escape($function);?>('<?php echo $item->id; ?>', '<?php echo $this->escape(addslashes($item->name)); ?>', '<?php echo $this->escape($item->catid); ?>', null, '<?php echo $this->escape(NewsfeedsHelperRoute::getNewsfeedRoute($item->id, $item->catid, $item->language)); ?>', '<?php echo $this->escape($lang); ?>', null);"> <?php echo $this->escape($item->name); ?></a> </td> <td class="center"> <?php echo $this->escape($item->access_level); ?> </td> <td class="center"> <?php echo $this->escape($item->category_title); ?> </td> <td class="center"> <?php if ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td align="center"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> <div> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKc��\ItC��+�+9components/com_newsfeeds/views/newsfeeds/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 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 component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $app = JFactory::getApplication(); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $archived = $this->state->get('filter.published') == 2 ? true : false; $trashed = $this->state->get('filter.published') == -2 ? true : false; $canOrder = $user->authorise('core.edit.state', 'com_newsfeeds.category'); $saveOrder = $listOrder == 'a.ordering'; if ($saveOrder) { $saveOrderingUrl = 'index.php?option=com_newsfeeds&task=newsfeeds.saveOrderAjax&tmpl=component'; JHtml::_('sortablelist.sortable', 'newsfeedList', 'adminForm', strtolower($listDirn), $saveOrderingUrl); } $sortFields = $this->getSortFields(); $assoc = JLanguageAssociations::isEnabled(); JFactory::getDocument()->addScriptDeclaration(' Joomla.orderTable = function() { table = document.getElementById("sortTable"); direction = document.getElementById("directionTable"); order = table.options[table.selectedIndex].value; if (order != "' . $listOrder . '") { dirn = "asc"; } else { dirn = direction.options[direction.selectedIndex].value; } Joomla.tableOrdering(order, dirn, ""); }; '); ?> <form action="<?php echo JRoute::_('index.php?option=com_newsfeeds&view=newsfeeds'); ?>" method="post" name="adminForm" id="adminForm"> <?php if (!empty( $this->sidebar)) : ?> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php else : ?> <div id="j-main-container"> <?php endif;?> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <label for="filter_search" class="element-invisible"><?php echo JText::_('COM_NEWSFEEDS_FILTER_SEARCH_DESC');?></label> <input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_NEWSFEEDS_SEARCH_IN_TITLE'); ?>" /> </div> <div class="btn-group pull-left"> <button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><span class="icon-search"></span></button> <button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.getElementById('filter_search').value='';this.form.submit();"><span class="icon-remove"></span></button> </div> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> <div class="btn-group pull-right hidden-phone"> <label for="directionTable" class="element-invisible"><?php echo JText::_('JFIELD_ORDERING_DESC');?></label> <select name="directionTable" id="directionTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JFIELD_ORDERING_DESC');?></option> <option value="asc" <?php if ($listDirn == 'asc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_ASCENDING');?></option> <option value="desc" <?php if ($listDirn == 'desc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_DESCENDING');?></option> </select> </div> <div class="btn-group pull-right hidden-phone"> <label for="sortTable" class="element-invisible"><?php echo JText::_('JGLOBAL_SORT_BY');?></label> <select name="sortTable" id="sortTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JGLOBAL_SORT_BY');?></option> <?php echo JHtml::_('select.options', $sortFields, 'value', 'text', $listOrder);?> </select> </div> </div> <div class="clearfix"> </div> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped" id="newsfeedList"> <thead> <tr> <th width="1%" class="nowrap center"> <?php echo JHtml::_('grid.sort', '<span class="icon-menu-2"></span>', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?> </th> <th width="1%" class="hidden-phone"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="5%" class="nowrap center"> <?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.published', $listDirn, $listOrder); ?> </th> <th class="title"> <?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.name', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_NEWSFEEDS_NUM_ARTICLES_HEADING', 'numarticles', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_NEWSFEEDS_CACHE_TIME_HEADING', 'a.cache_time', $listDirn, $listOrder); ?> </th> <?php if ($assoc) : ?> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'COM_NEWSFEEDS_HEADING_ASSOCIATION', 'association', $listDirn, $listOrder); ?> </th> <?php endif;?> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'a.language', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="11"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : $ordering = ($listOrder == 'a.ordering'); $canCreate = $user->authorise('core.create', 'com_newsfeeds.category.' . $item->catid); $canEdit = $user->authorise('core.edit', 'com_newsfeeds.category.' . $item->catid); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_newsfeeds.category.' . $item->catid) && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>" sortable-group-id="<?php echo $item->catid?>"> <td class="order nowrap center hidden-phone"> <?php $iconClass = ''; if (!$canChange) { $iconClass = ' inactive'; } elseif (!$saveOrder) { $iconClass = ' inactive tip-top hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED'); } ?> <span class="sortable-handler<?php echo $iconClass ?>"> <span class="icon-menu"></span> </span> <?php if ($canChange && $saveOrder) : ?> <input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering;?>" class="width-20 text-area-order" /> <?php endif; ?> </td> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td class="center"> <div class="btn-group"> <?php echo JHtml::_('jgrid.published', $item->published, $i, 'newsfeeds.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?> <?php // Create dropdown items $action = $archived ? 'unarchive' : 'archive'; JHtml::_('actionsdropdown.' . $action, 'cb' . $i, 'newsfeeds'); $action = $trashed ? 'untrash' : 'trash'; JHtml::_('actionsdropdown.' . $action, 'cb' . $i, 'newsfeeds'); // Render dropdown list echo JHtml::_('actionsdropdown.render', $this->escape($item->name)); ?> </div> </td> <td class="nowrap has-context"> <div class="pull-left"> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'newsfeeds.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_newsfeeds&task=newsfeed.edit&id=' . (int) $item->id); ?>"> <?php echo $this->escape($item->name); ?></a> <?php else : ?> <?php echo $this->escape($item->name); ?> <?php endif; ?> <span class="small"> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias));?> </span> <div class="small"> <?php echo $this->escape($item->category_title); ?> </div> </div> </td> <td class="small hidden-phone"> <?php echo $this->escape($item->access_level); ?> </td> <td class="hidden-phone"> <?php echo (int) $item->numarticles; ?> </td> <td class="hidden-phone"> <?php echo (int) $item->cache_time; ?> </td> <?php if ($assoc) : ?> <td class="hidden-phone"> <?php if ($item->association) : ?> <?php echo JHtml::_('newsfeed.association', $item->id); ?> <?php endif; ?> </td> <?php endif;?> <td class="small hidden-phone"> <?php if ($item->language == '*'):?> <?php echo JText::alt('JALL', 'language'); ?> <?php else:?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif;?> </td> <td class="hidden-phone"> <?php echo (int) $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php // Load the batch processing form if user is allowed ?> <?php if ($user->authorise('core.create', 'com_newsfeeds') && $user->authorise('core.edit', 'com_newsfeeds') && $user->authorise('core.edit.state', 'com_newsfeeds')) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_NEWSFEEDS_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif;?> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKc��\7A���?components/com_newsfeeds/views/newsfeeds/tmpl/default_batch.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * * @deprecated 3.4 Use default_batch_body and default_batch_footer */ defined('_JEXEC') or die; $published = $this->state->get('filter.published'); ?> <div class="modal hide fade" id="collapseModal"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h3><?php echo JText::_('COM_NEWSFEEDS_BATCH_OPTIONS'); ?></h3> </div> <div class="modal-body modal-batch"> <p><?php echo JText::_('COM_NEWSFEEDS_BATCH_TIP'); ?></p> <div class="row-fluid"> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.language'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.access'); ?> </div> </div> </div> <div class="row-fluid"> <?php if ($published >= 0) : ?> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.item', 'com_newsfeeds'); ?> </div> </div> <?php endif; ?> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.tag'); ?> </div> </div> </div> </div> <div class="modal-footer"> <button class="btn" type="button" onclick="document.getElementById('batch-category-id').value='';document.getElementById('batch-access').value='';document.getElementById('batch-language-id').value='';document.getElementById('batch-tag-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-primary" type="submit" onclick="Joomla.submitbutton('newsfeed.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button> </div> </div> PKc��\�m���6components/com_newsfeeds/views/newsfeeds/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of newsfeeds. * * @since 1.6 */ class NewsfeedsViewNewsfeeds extends JViewLegacy { /** * The list of newsfeeds * * @var JObject * @since 1.6 */ protected $items; /** * The pagination object * * @var JPagination * @since 1.6 */ protected $pagination; /** * The model state * * @var JObject * @since 1.6 */ protected $state; /** * 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 a Error object. * * @since 1.6 */ public function display($tpl = null) { $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); NewsfeedsHelper::addSubmenu('newsfeeds'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { $state = $this->get('State'); $canDo = JHelperContent::getActions('com_newsfeeds', 'category', $state->get('filter.category_id')); $user = JFactory::getUser(); // Get the toolbar object instance $bar = JToolBar::getInstance('toolbar'); JToolbarHelper::title(JText::_('COM_NEWSFEEDS_MANAGER_NEWSFEEDS'), 'feed newsfeeds'); if (count($user->getAuthorisedCategories('com_newsfeeds', 'core.create')) > 0) { JToolbarHelper::addNew('newsfeed.add'); } if ($canDo->get('core.edit')) { JToolbarHelper::editList('newsfeed.edit'); } if ($canDo->get('core.edit.state')) { JToolbarHelper::publish('newsfeeds.publish', 'JTOOLBAR_PUBLISH', true); JToolbarHelper::unpublish('newsfeeds.unpublish', 'JTOOLBAR_UNPUBLISH', true); JToolbarHelper::archiveList('newsfeeds.archive'); } if ($canDo->get('core.admin')) { JToolbarHelper::checkin('newsfeeds.checkin'); } // Add a batch button if ($user->authorise('core.create', 'com_newsfeeds') && $user->authorise('core.edit', 'com_newsfeeds') && $user->authorise('core.edit.state', 'com_newsfeeds')) { $title = JText::_('JTOOLBAR_BATCH'); // Instantiate a new JLayoutFile instance and render the batch button $layout = new JLayoutFile('joomla.toolbar.batch'); $dhtml = $layout->render(array('title' => $title)); $bar->appendButton('Custom', $dhtml, 'batch'); } if ($state->get('filter.published') == -2 && $canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'newsfeeds.delete', 'JTOOLBAR_EMPTY_TRASH'); } elseif ($canDo->get('core.edit.state')) { JToolbarHelper::trash('newsfeeds.trash'); } if ($user->authorise('core.admin', 'com_newsfeeds') || $user->authorise('core.options', 'com_newsfeeds')) { JToolbarHelper::preferences('com_newsfeeds'); } JToolbarHelper::help('JHELP_COMPONENTS_NEWSFEEDS_FEEDS'); JHtmlSidebar::setAction('index.php?option=com_newsfeeds&view=newsfeeds'); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_PUBLISHED'), 'filter_published', JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.published'), true) ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_CATEGORY'), 'filter_category_id', JHtml::_('select.options', JHtml::_('category.options', 'com_newsfeeds'), 'value', 'text', $this->state->get('filter.category_id')) ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_ACCESS'), 'filter_access', JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access')) ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_LANGUAGE'), 'filter_language', JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language')) ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_TAG'), 'filter_tag', JHtml::_('select.options', JHtml::_('tag.options', true, true), 'value', 'text', $this->state->get('filter.tag')) ); } /** * Returns an array of fields the table can be sorted by * * @return array Array containing the field name to sort by as the key and display text as value * * @since 3.0 */ protected function getSortFields() { return array( 'a.ordering' => JText::_('JGRID_HEADING_ORDERING'), 'a.published' => JText::_('JSTATUS'), 'a.name' => JText::_('JGLOBAL_TITLE'), 'category_title' => JText::_('JCATEGORY'), 'a.access' => JText::_('JGRID_HEADING_ACCESS'), 'numarticles' => JText::_('COM_NEWSFEEDS_NUM_ARTICLES_HEADING'), 'a.cache_time' => JText::_('COM_NEWSFEEDS_CACHE_TIME_HEADING'), 'a.language' => JText::_('JGRID_HEADING_LANGUAGE'), 'a.id' => JText::_('JGRID_HEADING_ID') ); } } PKc��\��#Voo=components/com_newsfeeds/views/newsfeed/tmpl/edit_display.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->fieldset = 'jbasic'; echo JLayoutHelper::render('joomla.edit.fieldset', $this); PKc��\׳���=components/com_newsfeeds/views/newsfeed/tmpl/modal_params.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $fieldSets = $this->form->getFieldsets('params'); foreach ($fieldSets as $name => $fieldSet) : ?> <div class="tab-pane" id="params-<?php echo $name;?>"> <?php if (isset($fieldSet->description) && trim($fieldSet->description)) : ?> <p class="alert alert-info"><?php echo $this->escape(JText::_($fieldSet->description)); ?></p> <?php endif; ?> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <div class="control-group"> <div class="control-label"><?php echo $field->label; ?></div> <div class="controls"><?php echo $field->input; ?></div> </div> <?php endforeach; ?> </div> <?php endforeach; ?> PKc��\�PsWWBcomponents/com_newsfeeds/views/newsfeed/tmpl/edit_associations.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.associations', $this); PKc��\S�]� � 5components/com_newsfeeds/views/newsfeed/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 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 HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); JHtml::_('formbehavior.chosen', 'select'); $app = JFactory::getApplication(); $input = $app->input; $assoc = JLanguageAssociations::isEnabled(); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'newsfeed.cancel' || document.formvalidator.isValid(document.getElementById('newsfeed-form'))) { Joomla.submitform(task, document.getElementById('newsfeed-form')); } }; "); // Fieldsets to not automatically render by /layouts/joomla/edit/params.php $this->ignore_fieldsets = array('images', 'jbasic', 'jmetadata', 'item_associations'); ?> <form action="<?php echo JRoute::_('index.php?option=com_newsfeeds&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="newsfeed-form" class="form-validate"> <?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?> <div class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'details')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'details', empty($this->item->id) ? JText::_('COM_NEWSFEEDS_NEW_NEWSFEED', true) : JText::_('COM_NEWSFEEDS_EDIT_NEWSFEED', true)); ?> <div class="row-fluid"> <div class="span9"> <div class="form-vertical"> <?php echo $this->form->getControlGroup('link'); ?> <?php echo $this->form->getControlGroup('description'); ?> </div> </div> <div class="span3"> <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'images', JText::_('JGLOBAL_FIELDSET_IMAGE_OPTIONS', true)); ?> <div class="row-fluid"> <div class="span6"> <?php echo $this->form->getControlGroup('images'); ?> <?php foreach ($this->form->getGroup('images') as $field) : ?> <?php echo $field->getControlGroup(); ?> <?php endforeach; ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'publishing', JText::_('JGLOBAL_FIELDSET_PUBLISHING', true)); ?> <div class="row-fluid form-horizontal-desktop"> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.publishingdata', $this); ?> </div> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.metadata', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'attrib-jbasic', JText::_('JGLOBAL_FIELDSET_DISPLAY_OPTIONS', true)); ?> <?php echo $this->loadTemplate('display'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JLayoutHelper::render('joomla.edit.params', $this); ?> <?php if ($assoc) : ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'associations', JText::_('JGLOBAL_FIELDSET_ASSOCIATIONS', true)); ?> <?php echo $this->loadTemplate('associations'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php endif; ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> </div> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKc��\׳���<components/com_newsfeeds/views/newsfeed/tmpl/edit_params.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $fieldSets = $this->form->getFieldsets('params'); foreach ($fieldSets as $name => $fieldSet) : ?> <div class="tab-pane" id="params-<?php echo $name;?>"> <?php if (isset($fieldSet->description) && trim($fieldSet->description)) : ?> <p class="alert alert-info"><?php echo $this->escape(JText::_($fieldSet->description)); ?></p> <?php endif; ?> <?php foreach ($this->form->getFieldset($name) as $field) : ?> <div class="control-group"> <div class="control-label"><?php echo $field->label; ?></div> <div class="controls"><?php echo $field->input; ?></div> </div> <?php endforeach; ?> </div> <?php endforeach; ?> PKc��\�PsWWCcomponents/com_newsfeeds/views/newsfeed/tmpl/modal_associations.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.associations', $this); PKc��\�+��6components/com_newsfeeds/views/newsfeed/tmpl/modal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 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 HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('behavior.keepalive'); JHtml::_('formbehavior.chosen', 'select'); $app = JFactory::getApplication(); $input = $app->input; $assoc = JLanguageAssociations::isEnabled(); JFactory::getDocument()->addScriptDeclaration(" Joomla.submitbutton = function(task) { if (task == 'newsfeed.cancel' || document.formvalidator.isValid(document.getElementById('newsfeed-form'))) { if (window.opener && (task == 'newsfeed.save' || task == 'newsfeed.cancel')) { window.opener.document.closeEditWindow = self; window.opener.setTimeout('window.document.closeEditWindow.close()', 1000); } Joomla.submitform(task, document.getElementById('newsfeed-form')); } }; "); $this->ignore_fieldsets = array('jbasic', 'item_associations'); ?> <div class="container-popup"> <div class="pull-right"> <button class="btn btn-primary" type="button" onclick="Joomla.submitbutton('newsfeed.apply');"><?php echo JText::_('JTOOLBAR_APPLY') ?></button> <button class="btn btn-primary" type="button" onclick="Joomla.submitbutton('newsfeed.save');"><?php echo JText::_('JTOOLBAR_SAVE') ?></button> <button class="btn" type="button" onclick="Joomla.submitbutton('newsfeed.cancel');"><?php echo JText::_('JCANCEL') ?></button> </div> <div class="clearfix"> </div> <hr class="hr-condensed" /> <form action="<?php echo JRoute::_('index.php?option=com_newsfeeds&layout=modal&tmpl=component&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="newsfeed-form" class="form-validate form-horizontal"> <?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?> <div class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'details')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'details', empty($this->item->id) ? JText::_('COM_NEWSFEEDS_NEW_NEWSFEED', true) : JText::_('COM_NEWSFEEDS_EDIT_NEWSFEED', true)); ?> <div class="row-fluid"> <div class="span9"> <div class="form-vertical"> <?php echo $this->form->getControlGroup('link'); ?> <?php echo $this->form->getControlGroup('description'); ?> </div> </div> <div class="span3"> <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'images', JText::_('JGLOBAL_FIELDSET_IMAGE_OPTIONS', true)); ?> <div class="row-fluid"> <div class="span6"> <?php echo $this->form->getControlGroup('images'); ?> <?php foreach ($this->form->getGroup('images') as $field) : ?> <?php echo $field->getControlGroup(); ?> <?php endforeach; ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'publishing', JText::_('JGLOBAL_FIELDSET_PUBLISHING', true)); ?> <div class="row-fluid form-horizontal-desktop"> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.publishingdata', $this); ?> </div> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.metadata', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'attrib-jbasic', JText::_('JGLOBAL_FIELDSET_DISPLAY_OPTIONS', true)); ?> <?php echo $this->loadTemplate('display'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JLayoutHelper::render('joomla.edit.params', $this); ?> <?php if ($assoc) : ?> <div class="hidden"><?php echo $this->loadTemplate('associations'); ?></div> <?php endif; ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> </div> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKc��\�<�.SS>components/com_newsfeeds/views/newsfeed/tmpl/edit_metadata.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.metadata', $this); PKc��\��#Voo>components/com_newsfeeds/views/newsfeed/tmpl/modal_display.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $this->fieldset = 'jbasic'; echo JLayoutHelper::render('joomla.edit.fieldset', $this); PKc��\�<�.SS?components/com_newsfeeds/views/newsfeed/tmpl/modal_metadata.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; echo JLayoutHelper::render('joomla.edit.metadata', $this); PKc��\��<Yvv5components/com_newsfeeds/views/newsfeed/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View to edit a newsfeed. * * @since 1.6 */ class NewsfeedsViewNewsfeed extends JViewLegacy { /** * The item object for the newsfeed * * @var JObject * @since 1.6 */ protected $item; /** * The form object for the newsfeed * * @var JForm * @since 1.6 */ protected $form; /** * The model state of the newsfeed * * @var JObject * @since 1.6 */ protected $state; /** * 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 a Error object. * * @since 1.6 */ public function display($tpl = null) { $this->state = $this->get('State'); $this->item = $this->get('Item'); $this->form = $this->get('Form'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } if ($this->getLayout() == 'modal') { $this->form->setFieldAttribute('language', 'readonly', 'true'); $this->form->setFieldAttribute('catid', 'readonly', 'true'); } $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JFactory::getApplication()->input->set('hidemainmenu', true); $user = JFactory::getUser(); $isNew = ($this->item->id == 0); $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id')); // Since we don't track these assets at the item level, use the category id. $canDo = JHelperContent::getActions('com_newsfeeds', 'category', $this->item->catid); JToolbarHelper::title($isNew ? JText::_('COM_NEWSFEEDS_MANAGER_NEWSFEED_NEW') : JText::_('COM_NEWSFEEDS_MANAGER_NEWSFEED_EDIT'), 'feed newsfeeds'); // If not checked out, can save the item. if (!$checkedOut && ($canDo->get('core.edit') || count($user->getAuthorisedCategories('com_newsfeeds', 'core.create')) > 0)) { JToolbarHelper::apply('newsfeed.apply'); JToolbarHelper::save('newsfeed.save'); } if (!$checkedOut && count($user->getAuthorisedCategories('com_newsfeeds', 'core.create')) > 0) { JToolbarHelper::save2new('newsfeed.save2new'); } // If an existing item, can save to a copy. if (!$isNew && $canDo->get('core.create')) { JToolbarHelper::save2copy('newsfeed.save2copy'); } if (empty($this->item->id)) { JToolbarHelper::cancel('newsfeed.cancel'); } else { if ($this->state->params->get('save_history', 0) && $user->authorise('core.edit')) { JToolbarHelper::versions('com_newsfeeds.newsfeed', $this->item->id); } JToolbarHelper::cancel('newsfeed.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_COMPONENTS_NEWSFEEDS_FEEDS_EDIT'); } } PKc��\�(AR��.components/com_newsfeeds/helpers/newsfeeds.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Newsfeeds component helper. * * @since 1.6 */ class NewsfeedsHelper extends JHelperContent { public static $extension = 'com_newsfeeds'; /** * Configure the Linkbar. * * @param string $vName The name of the active view. * * @return void */ public static function addSubmenu($vName) { JHtmlSidebar::addEntry( JText::_('COM_NEWSFEEDS_SUBMENU_NEWSFEEDS'), 'index.php?option=com_newsfeeds&view=newsfeeds', $vName == 'newsfeeds' ); JHtmlSidebar::addEntry( JText::_('COM_NEWSFEEDS_SUBMENU_CATEGORIES'), 'index.php?option=com_categories&extension=com_newsfeeds', $vName == 'categories' ); } } PKc��\ϙlC� � 2components/com_newsfeeds/helpers/html/newsfeed.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JLoader::register('NewsfeedsHelper', JPATH_ADMINISTRATOR . '/components/com_newsfeeds/helpers/newsfeeds.php'); /** * Utility class for creating HTML Grids. * * @since 1.5 */ class JHtmlNewsfeed { /** * Get the associated language flags * * @param int $newsfeedid The item id to search associations * * @return string The language HTML * * @throws Exception Throws a 500 Exception on Database failure */ public static function association($newsfeedid) { // Defaults $html = ''; // Get the associations if ($associations = JLanguageAssociations::getAssociations('com_newsfeeds', '#__newsfeeds', 'com_newsfeeds.item', $newsfeedid)) { foreach ($associations as $tag => $associated) { $associations[$tag] = (int) $associated->id; } // Get the associated newsfeed items $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('c.id, c.name as title') ->select('l.sef as lang_sef') ->from('#__newsfeeds as c') ->select('cat.title as category_title') ->join('LEFT', '#__categories as cat ON cat.id=c.catid') ->where('c.id IN (' . implode(',', array_values($associations)) . ')') ->join('LEFT', '#__languages as l ON c.language=l.lang_code') ->select('l.image') ->select('l.title as language_title'); $db->setQuery($query); try { $items = $db->loadObjectList('id'); } catch (RuntimeException $e) { throw new Exception($e->getMessage(), 500); } if ($items) { foreach ($items as &$item) { $text = strtoupper($item->lang_sef); $url = JRoute::_('index.php?option=com_newsfeeds&task=newsfeed.edit&id=' . (int) $item->id); $tooltipParts = array( JHtml::_('image', 'mod_languages/' . $item->image . '.gif', $item->language_title, array('title' => $item->language_title), true ), $item->title, '(' . $item->category_title . ')' ); $item->link = JHtml::_( 'tooltip', implode(' ', $tooltipParts), null, null, $text, $url, null, 'hasTooltip label label-association label-' . $item->lang_sef ); } } $html = JLayoutHelper::render('joomla.content.associations', $items); } return $html; } } PKc��\|�(��&components/com_newsfeeds/newsfeeds.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_newsfeeds</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_NEWSFEEDS_XML_DESCRIPTION</description> <install> <!-- Runs on install --> <sql> <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file> </sql> </install> <uninstall> <!-- Runs on uninstall --> <sql> <file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file> </sql> </uninstall> <files folder="site"> <filename>controller.php</filename> <filename>metadata.xml</filename> <filename>newsfeeds.php</filename> <filename>router.php</filename> <folder>helpers</folder> <folder>models</folder> <folder>views</folder> </files> <languages folder="site"> <language tag="en-GB">language/en-GB.com_newsfeeds.ini</language> </languages> <administration> <menu img="class:newsfeeds">com_newsfeeds</menu> <submenu> <!-- Note that all & must be escaped to & for the file to be valid XML and be parsed by the installer --> <menu link="option=com_newsfeeds" view="feeds" img="class:newsfeeds" alt="Newsfeeds/Feeds">com_newsfeeds_feeds</menu> <menu link="option=com_categories&extension=com_newsfeeds" view="categories" img="class:newsfeeds-cat" alt="Newsfeeds/Categories">com_newsfeeds_categories</menu> </submenu> <files folder="admin"> <filename>access.xml</filename> <filename>config.xml</filename> <filename>controller.php</filename> <filename>newsfeeds.php</filename> <folder>controllers</folder> <folder>elements</folder> <folder>helpers</folder> <folder>models</folder> <folder>tables</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_newsfeeds.ini</language> <language tag="en-GB">language/en-GB.com_newsfeeds.sys.ini</language> </languages> </administration> </extension> PKc��\)G���4components/com_newsfeeds/models/fields/newsfeeds.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; JFormHelper::loadFieldClass('list'); /** * Form Field class for the Joomla Framework. * * @since 1.6 */ class JFormFieldNewsfeeds extends JFormFieldList { /** * The form field type. * * @var string * @since 1.6 */ protected $type = 'Newsfeeds'; /** * Method to get the field options. * * @return array The field option objects. * * @since 1.6 */ protected function getOptions() { $options = array(); $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('id As value, name As text') ->from('#__newsfeeds AS a') ->order('a.name'); // Get the options. $db->setQuery($query); try { $options = $db->loadObjectList(); } catch (RuntimeException $e) { JError::raiseWarning(500, $db->getMessage()); } // Merge any additional options in the XML definition. $options = array_merge(parent::getOptions(), $options); return $options; } } PKc��\O،"��9components/com_newsfeeds/models/fields/modal/newsfeed.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; /** * Supports a modal newsfeeds picker. * * @since 1.6 */ class JFormFieldModal_Newsfeed extends JFormField { /** * The form field type. * * @var string * @since 1.6 */ protected $type = 'Modal_Newsfeed'; /** * Method to get the field input markup. * * @return string The field input markup. * * @since 1.6 */ protected function getInput() { $allowEdit = ((string) $this->element['edit'] == 'true') ? true : false; $allowClear = ((string) $this->element['clear'] != 'false') ? true : false; // Load language JFactory::getLanguage()->load('com_newsfeeds', JPATH_ADMINISTRATOR); // Load the javascript JHtml::_('bootstrap.tooltip'); // Build the script. $script = array(); // Select button script $script[] = ' function jSelectNewsfeed_' . $this->id . '(id, name, object) {'; $script[] = ' document.getElementById("' . $this->id . '_id").value = id;'; $script[] = ' document.getElementById("' . $this->id . '_name").value = name;'; if ($allowEdit) { $script[] = ' jQuery("#' . $this->id . '_edit").removeClass("hidden");'; } if ($allowClear) { $script[] = ' jQuery("#' . $this->id . '_clear").removeClass("hidden");'; } $script[] = ' jQuery("#modalNewsfeed' . $this->id . '").modal("hide");'; if ($this->required) { $script[] = ' document.formvalidator.validate(document.getElementById("' . $this->id . '_id"));'; $script[] = ' document.formvalidator.validate(document.getElementById("' . $this->id . '_name"));'; } $script[] = ' }'; // Clear button script static $scriptClear; if ($allowClear && !$scriptClear) { $scriptClear = true; $script[] = ' function jClearNewsfeed(id) {'; $script[] = ' document.getElementById(id + "_id").value = "";'; $script[] = ' document.getElementById(id + "_name").value = "' . htmlspecialchars(JText::_('COM_NEWSFEEDS_SELECT_A_FEED', true), ENT_COMPAT, 'UTF-8') . '";'; $script[] = ' jQuery("#"+id + "_clear").addClass("hidden");'; $script[] = ' if (document.getElementById(id + "_edit")) {'; $script[] = ' jQuery("#"+id + "_edit").addClass("hidden");'; $script[] = ' }'; $script[] = ' return false;'; $script[] = ' }'; } // Add the script to the document head. JFactory::getDocument()->addScriptDeclaration(implode("\n", $script)); // Setup variables for display. $html = array(); $link = 'index.php?option=com_newsfeeds&view=newsfeeds&layout=modal&tmpl=component&function=jSelectNewsfeed_' . $this->id; if (isset($this->element['language'])) { $link .= '&forcedLanguage=' . $this->element['language']; } // Get the title of the linked chart if ((int) $this->value > 0) { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select($db->quoteName('name')) ->from($db->quoteName('#__newsfeeds')) ->where($db->quoteName('id') . ' = ' . (int) $this->value); $db->setQuery($query); try { $title = $db->loadResult(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); } } if (empty($title)) { $title = JText::_('COM_NEWSFEEDS_SELECT_A_FEED'); } $title = htmlspecialchars($title, ENT_QUOTES, 'UTF-8'); // The active newsfeed id field. if (0 == (int) $this->value) { $value = ''; } else { $value = (int) $this->value; } // The current newsfeed display field. $html[] = '<span class="input-append">'; $html[] = '<input type="text" class="input-medium" id="' . $this->id . '_name" value="' . $title . '" disabled="disabled" size="35" />'; $html[] = '<a href="#modalNewsfeed' . $this->id . '" class="btn hasTooltip" role="button" data-toggle="modal"' . ' title="' . JHtml::tooltipText('COM_NEWSFEEDS_CHANGE_FEED_BUTTON') . '">' . '<span class="icon-file"></span> ' . JText::_('JSELECT') . '</a>'; $html[] = JHtml::_( 'bootstrap.renderModal', 'modalNewsfeed' . $this->id, array( 'url' => $link . '&' . JSession::getFormToken() . '=1"', 'title' => JText::_('COM_NEWSFEEDS_CHANGE_FEED_BUTTON'), 'width' => '800px', 'height' => '300px', 'footer' => '<button class="btn" data-dismiss="modal" aria-hidden="true">' . JText::_("JLIB_HTML_BEHAVIOR_CLOSE") . '</button>' ) ); // Edit newsfeed button if ($allowEdit) { $html[] = '<a class="btn hasTooltip' . ($value ? '' : ' hidden') . '" href="index.php?option=com_newsfeeds&layout=modal&tmpl=component&task=newsfeed.edit&id=' . $value . '" target="_blank" title="' . JHtml::tooltipText('COM_NEWSFEEDS_EDIT_NEWSFEED') . '" ><span class="icon-edit"></span>' . JText::_('JACTION_EDIT') . '</a>'; } // Clear newsfeed button if ($allowClear) { $html[] = '<button id="' . $this->id . '_clear" class="btn' . ($value ? '' : ' hidden') . '" onclick="return jClearNewsfeed(\'' . $this->id . '\')"><span class="icon-remove"></span>' . JText::_('JCLEAR') . '</button>'; } $html[] = '</span>'; // Add class='required' for client side validation $class = ''; if ($this->required) { $class = ' class="required modal-value"'; } $html[] = '<input type="hidden" id="' . $this->id . '_id"' . $class . ' name="' . $this->name . '" value="' . $value . '" />'; return implode("\n", $html); } /** * Method to get the field label markup. * * @return string The field label markup. * * @since 3.4 */ protected function getLabel() { return str_replace($this->id, $this->id . '_id', parent::getLabel()); } } PKc��\]*-components/com_newsfeeds/models/newsfeeds.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Methods supporting a list of newsfeed records. * * @since 1.6 */ class NewsfeedsModelNewsfeeds extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'name', 'a.name', 'alias', 'a.alias', 'checked_out', 'a.checked_out', 'checked_out_time', 'a.checked_out_time', 'catid', 'a.catid', 'category_title', 'published', 'a.published', 'access', 'a.access', 'access_level', 'created', 'a.created', 'created_by', 'a.created_by', 'ordering', 'a.ordering', 'language', 'a.language', 'publish_up', 'a.publish_up', 'publish_down', 'a.publish_down', 'cache_time', 'a.cache_time', 'numarticles', ); $app = JFactory::getApplication(); $assoc = JLanguageAssociations::isEnabled(); if ($assoc) { $config['filter_fields'][] = 'association'; } } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { $app = JFactory::getApplication('administrator'); // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $accessId = $this->getUserStateFromRequest($this->context . '.filter.access', 'filter_access', null, 'int'); $this->setState('filter.access', $accessId); $state = $this->getUserStateFromRequest($this->context . '.filter.published', 'filter_published', '', 'string'); $this->setState('filter.published', $state); $categoryId = $this->getUserStateFromRequest($this->context . '.filter.category_id', 'filter_category_id', null); $this->setState('filter.category_id', $categoryId); $language = $this->getUserStateFromRequest($this->context . '.filter.language', 'filter_language', ''); $this->setState('filter.language', $language); // Force a language $forcedLanguage = $app->input->get('forcedLanguage'); if (!empty($forcedLanguage)) { $this->setState('filter.language', $forcedLanguage); $this->setState('filter.forcedLanguage', $forcedLanguage); } $tag = $this->getUserStateFromRequest($this->context . '.filter.tag', 'filter_tag', ''); $this->setState('filter.tag', $tag); // Load the parameters. $params = JComponentHelper::getParams('com_newsfeeds'); $this->setState('params', $params); // List state information. parent::populateState('a.name', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.access'); $id .= ':' . $this->getState('filter.published'); $id .= ':' . $this->getState('filter.category_id'); $id .= ':' . $this->getState('filter.language'); return parent::getStoreId($id); } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); $user = JFactory::getUser(); $app = JFactory::getApplication(); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.id, a.name, a.alias, a.checked_out, a.checked_out_time, a.catid,' . ' a.numarticles, a.cache_time,' . ' a.published, a.access, a.ordering, a.language, a.publish_up, a.publish_down' ) ); $query->from($db->quoteName('#__newsfeeds') . ' AS a'); // Join over the language $query->select('l.title AS language_title') ->join('LEFT', $db->quoteName('#__languages') . ' AS l ON l.lang_code = a.language'); // Join over the users for the checked out user. $query->select('uc.name AS editor') ->join('LEFT', '#__users AS uc ON uc.id=a.checked_out'); // Join over the asset groups. $query->select('ag.title AS access_level') ->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); // Join over the categories. $query->select('c.title AS category_title') ->join('LEFT', '#__categories AS c ON c.id = a.catid'); // Join over the associations. $assoc = JLanguageAssociations::isEnabled(); if ($assoc) { $query->select('COUNT(asso2.id)>1 as association') ->join('LEFT', '#__associations AS asso ON asso.id = a.id AND asso.context=' . $db->quote('com_newsfeeds.item')) ->join('LEFT', '#__associations AS asso2 ON asso2.key = asso.key') ->group('a.id, l.title, uc.name, ag.title, c.title'); } // Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } // Implement View Level Access if (!$user->authorise('core.admin')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } // Filter by published state. $published = $this->getState('filter.published'); if (is_numeric($published)) { $query->where('a.published = ' . (int) $published); } elseif ($published === '') { $query->where('(a.published IN (0, 1))'); } // Filter by category. $categoryId = $this->getState('filter.category_id'); if (is_numeric($categoryId)) { $query->where('a.catid = ' . (int) $categoryId); } // Filter by search in title $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } else { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('(a.name LIKE ' . $search . ' OR a.alias LIKE ' . $search . ')'); } } // Filter on the language. if ($language = $this->getState('filter.language')) { $query->where('a.language = ' . $db->quote($language)); } // Filter by a single tag. $tagId = $this->getState('filter.tag'); if (is_numeric($tagId)) { $query->where($db->quoteName('tagmap.tag_id') . ' = ' . (int) $tagId) ->join( 'LEFT', $db->quoteName('#__contentitem_tag_map', 'tagmap') . ' ON ' . $db->quoteName('tagmap.content_item_id') . ' = ' . $db->quoteName('a.id') . ' AND ' . $db->quoteName('tagmap.type_alias') . ' = ' . $db->quote('com_newsfeeds.newsfeed') ); } // Add the list ordering clause. $orderCol = $this->state->get('list.ordering'); $orderDirn = $this->state->get('list.direction'); if ($orderCol == 'a.ordering' || $orderCol == 'category_title') { $orderCol = 'c.title ' . $orderDirn . ', a.ordering'; } $query->order($db->escape($orderCol . ' ' . $orderDirn)); return $query; } } PKc��\����(�(2components/com_newsfeeds/models/forms/newsfeed.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset addfieldpath="/administrator/components/com_categories/models/fields" > <field name="id" type="text" default="0" readonly="true" class="readonly" label="JGLOBAL_FIELD_ID_LABEL" description="JGLOBAL_FIELD_ID_DESC" /> <field name="name" type="text" label="JGLOBAL_TITLE" description="JFIELD_TITLE_DESC" class="input-xxlarge input-large-text" size="40" required="true" /> <field name="alias" type="text" label="JFIELD_ALIAS_LABEL" description="JFIELD_ALIAS_DESC" hint="JFIELD_ALIAS_PLACEHOLDER" size="45" /> <field name="published" type="list" label="JSTATUS" description="JFIELD_PUBLISHED_DESC" class="chzn-color-state" size="1" default="1" > <option value="1"> JPUBLISHED</option> <option value="0"> JUNPUBLISHED</option> <option value="2"> JARCHIVED</option> <option value="-2"> JTRASHED</option> </field> <field name="catid" type="categoryedit" extension="com_newsfeeds" label="JCATEGORY" description="COM_NEWSFEEDS_FIELD_CATEGORY_DESC" required="true" > </field> <field name="language" type="contentlanguage" label="JFIELD_LANGUAGE_LABEL" description="COM_NEWSFEEDS_FIELD_LANGUAGE_DESC" > <option value="*">JALL</option> </field> <field name="tags" type="tag" label="JTAG" description="JTAG_DESC" class="span12" multiple="true" > </field> <field name="version_note" type="text" label="JGLOBAL_FIELD_VERSION_NOTE_LABEL" description="JGLOBAL_FIELD_VERSION_NOTE_DESC" maxlength="255" class="span12" size="45" labelclass="control-label" /> <field name="description" type="editor" buttons="true" hide="pagebreak,readmore" filter="JComponentHelper::filterText" label="JGLOBAL_DESCRIPTION" description="COM_NEWSFEEDS_FIELD_DESCRIPTION_DESC" /> <field name="link" type="url" filter="url" class="span12" size="60" label="COM_NEWSFEEDS_FIELD_LINK_LABEL" description="COM_NEWSFEEDS_FIELD_LINK_DESC" required="true" /> <field name="numarticles" type="Text" default="5" size="2" label="COM_NEWSFEEDS_FIELD_NUM_ARTICLES_LABEL" description="COM_NEWSFEEDS_FIELD_NUM_ARTICLES_DESC" required="true" /> <field name="cache_time" type="Text" default="3600" size="4" label="COM_NEWSFEEDS_FIELD_CACHETIME_LABEL" description="JGLOBAL_FIELD_FIELD_CACHETIME_DESC" required="true" /> <field name="ordering" type="ordering" content_type="com_newsfeeds.newsfeed" label="JFIELD_ORDERING_LABEL" description="JFIELD_ORDERING_DESC" /> <field name="created" type="calendar" label="JGLOBAL_FIELD_CREATED_LABEL" description="JGLOBAL_FIELD_CREATED_DESC" size="22" format="%Y-%m-%d %H:%M:%S" filter="user_utc" /> <field name="created_by" type="user" label="JGLOBAL_FIELD_Created_by_Label" description="JGLOBAL_FIELD_CREATED_BY_DESC" /> <field name="created_by_alias" type="text" label="JGLOBAL_FIELD_Created_by_alias_Label" description="JGLOBAL_FIELD_CREATED_BY_ALIAS_DESC" size="20" /> <field name="modified" type="calendar" class="readonly" label="JGLOBAL_FIELD_Modified_Label" description="COM_NEWSFEEDS_FIELD_MODIFIED_DESC" size="22" readonly="true" format="%Y-%m-%d %H:%M:%S" filter="user_utc" /> <field name="modified_by" type="user" label="JGLOBAL_FIELD_MODIFIED_BY_LABEL" class="readonly" readonly="true" filter="unset" /> <field name="version" type="text" class="readonly" label="COM_NEWSFEEDS_FIELD_VERSION_LABEL" size="6" description="COM_NEWSFEEDS_FIELD_VERSION_DESC" readonly="true" filter="unset" /> <field name="checked_out" type="Text" size="6" label="JGLOBAL_FIELD_CHECKEDOUT_LABEL" description="JGLOBAL_FIELD_CHECKEDOUT_DESC" readonly="true" filter="unset" /> <field name="checked_out_time" type="Text" size="6" label="JGLOBAL_FIELD_CHECKEDOUT_TIME_LABEL" description="JGLOBAL_FIELD_CHECKEDOUT_TIME_DESC" readonly="true" filter="unset" /> <field name="publish_up" type="calendar" label="JGLOBAL_FIELD_PUBLISH_UP_LABEL" description="JGLOBAL_FIELD_PUBLISH_UP_DESC" format="%Y-%m-%d %H:%M:%S" size="22" filter="user_utc" /> <field name="publish_down" type="calendar" label="JGLOBAL_FIELD_PUBLISH_DOWN_LABEL" description="JGLOBAL_FIELD_PUBLISH_DOWN_DESC" format="%Y-%m-%d %H:%M:%S" size="22" filter="user_utc" /> <field name="access" type="accesslevel" label="JFIELD_ACCESS_LABEL" description="JFIELD_ACCESS_DESC" size="1" /> <field name="metakey" type="textarea" label="JFIELD_META_KEYWORDS_LABEL" description="JFIELD_META_KEYWORDS_DESC" rows="3" cols="30" /> <field name="metadesc" type="textarea" label="JFIELD_META_DESCRIPTION_LABEL" description="JFIELD_META_DESCRIPTION_DESC" rows="3" cols="30" /> <field name="xreference" type="text" label="JFIELD_XREFERENCE_LABEL" description="JFIELD_XREFERENCE_DESC" size="20" /> <fields name="images"> <fieldset name="images" label="JGLOBAL_FIELDSET_IMAGE_OPTIONS"> <field name="image_first" type="media" label="COM_NEWSFEEDS_FIELD_FIRST_LABEL" description="COM_NEWSFEEDS_FIELD_FIRST_DESC" /> <field name="float_first" type="list" label="COM_NEWSFEEDS_FLOAT_LABEL" description="COM_NEWSFEEDS_FLOAT_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="right">COM_NEWSFEEDS_RIGHT</option> <option value="left">COM_NEWSFEEDS_LEFT</option> <option value="none">COM_NEWSFEEDS_NONE</option> </field> <field name="image_first_alt" type="text" label="COM_NEWSFEEDS_FIELD_IMAGE_ALT_LABEL" description="COM_NEWSFEEDS_FIELD_IMAGE_ALT_DESC" size="20" /> <field name="image_first_caption" type="text" label="COM_NEWSFEEDS_FIELD_IMAGE_CAPTION_LABEL" description="COM_NEWSFEEDS_FIELD_IMAGE_CAPTION_DESC" size="20" /> <field name="spacer1" type="spacer" hr="true" /> <field name="image_second" type="media" label="COM_NEWSFEEDS_FIELD_SECOND_LABEL" description="COM_NEWSFEEDS_FIELD_SECOND_DESC" /> <field name="float_second" type="list" label="COM_NEWSFEEDS_FLOAT_LABEL" description="COM_NEWSFEEDS_FLOAT_DESC"> <option value="">JGLOBAL_USE_GLOBAL</option> <option value="right">COM_NEWSFEEDS_RIGHT</option> <option value="left">COM_NEWSFEEDS_LEFT</option> <option value="none">COM_NEWSFEEDS_NONE</option> </field> <field name="image_second_alt" type="text" label="COM_NEWSFEEDS_FIELD_IMAGE_ALT_LABEL" description="COM_NEWSFEEDS_FIELD_IMAGE_ALT_DESC" size="20" /> <field name="image_second_caption" type="text" label="COM_NEWSFEEDS_FIELD_IMAGE_CAPTION_LABEL" description="COM_NEWSFEEDS_FIELD_IMAGE_CAPTION_DESC" size="20" /> </fieldset> </fields> </fieldset> <fieldset name="jbasic" label="JGLOBAL_FIELDSET_DISPLAY_OPTIONS"> <field name="numarticles" type="Text" default="5" size="2" label="COM_NEWSFEEDS_FIELD_NUM_ARTICLES_LABEL" description="COM_NEWSFEEDS_FIELD_NUM_ARTICLES_DESC" required="true" /> <field name="cache_time" type="Text" default="3600" size="4" label="COM_NEWSFEEDS_FIELD_CACHETIME_LABEL" description="JGLOBAL_FIELD_FIELD_CACHETIME_DESC" required="true" /> <field name="rtl" type="list" default="0" label="COM_NEWSFEEDS_FIELD_RTL_LABEL" description="COM_NEWSFEEDS_FIELD_RTL_DESC" > <option value="0">COM_NEWSFEEDS_FIELD_VALUE_SITE </option> <option value="1">COM_NEWSFEEDS_FIELD_VALUE_LTR </option> <option value="2">COM_NEWSFEEDS_FIELD_VALUE_RTL </option> </field> <fields name="params" label="JGLOBAL_FIELDSET_DISPLAY_OPTIONS"> <field name="show_feed_image" type="list" label="COM_NEWSFEEDS_FIELD_SHOW_FEED_IMAGE_LABEL" description="COM_NEWSFEEDS_FIELD_SHOW_FEED_IMAGE_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_feed_description" type="list" label="COM_NEWSFEEDS_FIELD_SHOW_FEED_DESCRIPTION_LABEL" description="COM_NEWSFEEDS_FIELD_SHOW_FEED_DESCRIPTION_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="show_item_description" type="list" label="COM_NEWSFEEDS_FIELD_SHOW_ITEM_DESCRIPTION_LABEL" description="COM_NEWSFEEDS_FIELD_SHOW_ITEM_DESCRIPTION_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="0">JHIDE</option> <option value="1">JSHOW</option> </field> <field name="feed_character_count" type="text" size="6" default="0" label="COM_NEWSFEEDS_FIELD_CHARACTERS_COUNT_LABEL" description="COM_NEWSFEEDS_FIELD_CHARACTERS_COUNT_DESC" /> <field name="newsfeed_layout" type="componentlayout" label="JFIELD_ALT_LAYOUT_LABEL" description="JFIELD_ALT_COMPONENT_LAYOUT_DESC" extension="com_newsfeeds" view="newsfeed" useglobal="true" /> <field name="feed_display_order" type="list" label="COM_NEWSFEEDS_FIELD_FEED_DISPLAY_ORDER_LABEL" description="COM_NEWSFEEDS_FIELD_FEED_DISPLAY_ORDER_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="des">JGLOBAL_MOST_RECENT_FIRST</option> <option value="asc">JGLOBAL_OLDEST_FIRST</option> </field> </fields> </fieldset> <fields name="params" label="JGLOBAL_FIELDSET_DISPLAY_OPTIONS"> </fields> <fields name="metadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS"> <fieldset name="jmetadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS"> <field name="robots" type="list" label="JFIELD_METADATA_ROBOTS_LABEL" description="JFIELD_METADATA_ROBOTS_DESC" > <option value="">JGLOBAL_USE_GLOBAL</option> <option value="index, follow">JGLOBAL_INDEX_FOLLOW</option> <option value="noindex, follow">JGLOBAL_NOINDEX_FOLLOW</option> <option value="index, nofollow">JGLOBAL_INDEX_NOFOLLOW</option> <option value="noindex, nofollow">JGLOBAL_NOINDEX_NOFOLLOW</option> </field> <field name="rights" type="text" label="JFIELD_META_RIGHTS_LABEL" description="JFIELD_META_RIGHTS_DESC" required="false" filter="string" cols="30" rows="2" /> </fieldset> <field name="hits" type="text" class="readonly" size="6" label="JGLOBAL_HITS" description="COM_WEBLINKS_HITS_DESC" readonly="true" filter="unset" /> </fields> </form> PKc��\�w���3�3,components/com_newsfeeds/models/newsfeed.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; JLoader::register('NewsfeedsHelper', JPATH_ADMINISTRATOR . '/components/com_newsfeeds/helpers/newsfeeds.php'); /** * Newsfeed model. * * @since 1.6 */ class NewsfeedsModelNewsfeed extends JModelAdmin { /** * The type alias for this content type. * * @var string * @since 3.2 */ public $typeAlias = 'com_newsfeeds.newsfeed'; /** * The context used for the associations table * * @var string * @since 3.4.4 */ protected $associationsContext = 'com_newsfeeds.item'; /** * @var string The prefix to use with controller messages. * @since 1.6 */ protected $text_prefix = 'COM_NEWSFEEDS'; /** * Batch copy items to a new category or current. * * @param integer $value The new category. * @param array $pks An array of row IDs. * @param array $contexts An array of item contexts. * * @return mixed An array of new IDs on success, boolean false on failure. * * @since 11.1 */ protected function batchCopy($value, $pks, $contexts) { $categoryId = (int) $value; $newIds = array(); if (!parent::checkCategoryId($categoryId)) { return false; } // Parent exists so we let's proceed while (!empty($pks)) { // Pop the first ID off the stack $pk = array_shift($pks); $this->table->reset(); // Check that the row actually exists if (!$this->table->load($pk)) { if ($error = $this->table->getError()) { // Fatal error $this->setError($error); return false; } else { // Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } } // Alter the title & alias $data = $this->generateNewTitle($categoryId, $this->table->alias, $this->table->name); $this->table->name = $data['0']; $this->table->alias = $data['1']; // Reset the ID because we are making a copy $this->table->id = 0; // Unpublish because we are making a copy $this->table->published = 0; // New category ID $this->table->catid = $categoryId; // TODO: Deal with ordering? // $this->table->ordering = 1; // Check the row. if (!$this->table->check()) { $this->setError($this->table->getError()); return false; } parent::createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); // Store the row. if (!$this->table->store()) { $this->setError($this->table->getError()); return false; } // Get the new item ID $newId = $this->table->get('id'); // Add the new ID to the array $newIds[$pk] = $newId; } // Clean the cache $this->cleanCache(); return $newIds; } /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to delete the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canDelete($record) { if (!empty($record->id)) { if ($record->published != -2) { return false; } $user = JFactory::getUser(); if (!empty($record->catid)) { return $user->authorise('core.delete', 'com_newsfeed.category.' . (int) $record->catid); } else { return parent::canDelete($record); } } return false; } /** * Method to test whether a record can have its state changed. * * @param object $record A record object. * * @return boolean True if allowed to change the state of the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canEditState($record) { $user = JFactory::getUser(); if (!empty($record->catid)) { return $user->authorise('core.edit.state', 'com_newsfeeds.category.' . (int) $record->catid); } else { return parent::canEditState($record); } } /** * Returns a Table object, always creating it. * * @param string $type The table type to instantiate * @param string $prefix A prefix for the table class name. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A database object * * @since 1.6 */ public function getTable($type = 'Newsfeed', $prefix = 'NewsfeedsTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Method to get the record form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return JForm A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_newsfeeds.newsfeed', 'newsfeed', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } // Determine correct permissions to check. if ($this->getState('newsfeed.id')) { // Existing record. Can only edit in selected categories. $form->setFieldAttribute('catid', 'action', 'core.edit'); } else { // New record. Can only create in selected categories. $form->setFieldAttribute('catid', 'action', 'core.create'); } // Modify the form based on access controls. if (!$this->canEditState((object) $data)) { // Disable fields for display. $form->setFieldAttribute('ordering', 'disabled', 'true'); $form->setFieldAttribute('published', 'disabled', 'true'); $form->setFieldAttribute('publish_up', 'disabled', 'true'); $form->setFieldAttribute('publish_down', 'disabled', 'true'); // Disable fields while saving. // The controller has already verified this is a record you can edit. $form->setFieldAttribute('ordering', 'filter', 'unset'); $form->setFieldAttribute('published', 'filter', 'unset'); $form->setFieldAttribute('publish_up', 'filter', 'unset'); $form->setFieldAttribute('publish_down', 'filter', 'unset'); } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_newsfeeds.edit.newsfeed.data', array()); if (empty($data)) { $data = $this->getItem(); // Prime some default values. if ($this->getState('newsfeed.id') == 0) { $app = JFactory::getApplication(); $data->set('catid', $app->input->get('catid', $app->getUserState('com_newsfeeds.newsfeeds.filter.category_id'), 'int')); } } $this->preprocessData('com_newsfeeds.newsfeed', $data); return $data; } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 3.0 */ public function save($data) { $input = JFactory::getApplication()->input; // Alter the name for save as copy if ($input->get('task') == 'save2copy') { $origTable = clone $this->getTable(); $origTable->load($input->getInt('id')); if ($data['name'] == $origTable->name) { list($name, $alias) = $this->generateNewTitle($data['catid'], $data['alias'], $data['name']); $data['name'] = $name; $data['alias'] = $alias; } else { if ($data['alias'] == $origTable->alias) { $data['alias'] = ''; } } $data['published'] = 0; } return parent::save($data); } /** * Method to get a single record. * * @param integer $pk The id of the primary key. * * @return mixed Object on success, false on failure. * * @since 1.6 */ public function getItem($pk = null) { if ($item = parent::getItem($pk)) { // Convert the params field to an array. $registry = new Registry; $registry->loadString($item->metadata); $item->metadata = $registry->toArray(); // Convert the images field to an array. $registry = new Registry; $registry->loadString($item->images); $item->images = $registry->toArray(); } // Load associated newsfeeds items $app = JFactory::getApplication(); $assoc = JLanguageAssociations::isEnabled(); if ($assoc) { $item->associations = array(); if ($item->id != null) { $associations = JLanguageAssociations::getAssociations('com_newsfeeds', '#__newsfeeds', 'com_newsfeeds.item', $item->id); foreach ($associations as $tag => $association) { $item->associations[$tag] = $association->id; } } } if (!empty($item->id)) { $item->tags = new JHelperTags; $item->tags->getTagIds($item->id, 'com_newsfeeds.newsfeed'); $item->metadata['tags'] = $item->tags; } return $item; } /** * Prepare and sanitise the table prior to saving. * * @param JTable $table The table object * * @return void */ protected function prepareTable($table) { $date = JFactory::getDate(); $user = JFactory::getUser(); $table->name = htmlspecialchars_decode($table->name, ENT_QUOTES); $table->alias = JApplication::stringURLSafe($table->alias); if (empty($table->alias)) { $table->alias = JApplication::stringURLSafe($table->name); } if (empty($table->id)) { // Set the values $table->created = $date->toSql(); // Set ordering to the last item if not set if (empty($table->ordering)) { $db = $this->getDbo(); $query = $db->getQuery(true) ->select('MAX(ordering)') ->from($db->quoteName('#__newsfeeds')); $db->setQuery($query); $max = $db->loadResult(); $table->ordering = $max + 1; } } else { // Set the values $table->modified = $date->toSql(); $table->modified_by = $user->get('id'); } // Increment the content version number. $table->version++; } /** * Method to change the published state of one or more records. * * @param array &$pks A list of the primary keys to change. * @param integer $value The value of the published state. * * @return boolean True on success. * * @since 1.6 */ public function publish(&$pks, $value = 1) { $result = parent::publish($pks, $value); // Clean extra cache for newsfeeds $this->cleanCache('feed_parser'); return $result; } /** * A protected method to get a set of ordering conditions. * * @param object $table A record object. * * @return array An array of conditions to add to add to ordering queries. * * @since 1.6 */ protected function getReorderConditions($table) { $condition = array(); $condition[] = 'catid = ' . (int) $table->catid; return $condition; } /** * A protected method to get a set of ordering conditions. * * @param JForm $form The form object. * @param array $data The data to be injected into the form * @param string $group The plugin group to process * * @return array An array of conditions to add to add to ordering queries. * * @since 1.6 */ protected function preprocessForm(JForm $form, $data, $group = 'content') { // Association newsfeeds items $app = JFactory::getApplication(); $assoc = JLanguageAssociations::isEnabled(); if ($assoc) { $languages = JLanguageHelper::getLanguages('lang_code'); $addform = new SimpleXMLElement('<form />'); $fields = $addform->addChild('fields'); $fields->addAttribute('name', 'associations'); $fieldset = $fields->addChild('fieldset'); $fieldset->addAttribute('name', 'item_associations'); $fieldset->addAttribute('description', 'COM_NEWSFEEDS_ITEM_ASSOCIATIONS_FIELDSET_DESC'); $add = false; foreach ($languages as $tag => $language) { if (empty($data->language) || $tag != $data->language) { $add = true; $field = $fieldset->addChild('field'); $field->addAttribute('name', $tag); $field->addAttribute('type', 'modal_newsfeed'); $field->addAttribute('language', $tag); $field->addAttribute('label', $language->title); $field->addAttribute('translate_label', 'false'); $field->addAttribute('edit', 'true'); $field->addAttribute('clear', 'true'); } } if ($add) { $form->load($addform, false); } } parent::preprocessForm($form, $data, $group); } /** * Method to change the title & alias. * * @param integer $category_id The id of the parent. * @param string $alias The alias. * @param string $name The title. * * @return array Contains the modified title and alias. * * @since 3.1 */ protected function generateNewTitle($category_id, $alias, $name) { // Alter the title & alias $table = $this->getTable(); while ($table->load(array('alias' => $alias, 'catid' => $category_id))) { if ($name == $table->name) { $name = JString::increment($name); } $alias = JString::increment($alias, 'dash'); } return array($name, $alias); } } PKc��\�S�`��'components/com_newsfeeds/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_newsfeeds * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Newsfeeds master display controller. * * @since 1.6 */ class NewsfeedsController extends JControllerLegacy { /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JControllerLegacy This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = array()) { require_once JPATH_COMPONENT . '/helpers/newsfeeds.php'; $view = $this->input->get('view', 'newsfeeds'); $layout = $this->input->get('layout', 'default'); $id = $this->input->getInt('id'); // Check for edit form. if ($view == 'newsfeed' && $layout == 'edit' && !$this->checkEditId('com_newsfeeds.edit.newsfeed', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_newsfeeds&view=newsfeeds', false)); return false; } return parent::display(); } } PKc��\.�\��(components/com_banners/tables/banner.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 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\Registry\Registry; /** * Banner table * * @since 1.5 */ class BannersTableBanner extends JTable { /** * Constructor * * @param JDatabaseDriver &$_db Database connector object * * @since 1.5 */ public function __construct(&$_db) { parent::__construct('#__banners', 'id', $_db); JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_banners.banner')); $date = JFactory::getDate(); $this->created = $date->toSql(); $this->setColumnAlias('published', 'state'); } /** * Increase click count * * @return void */ public function clicks() { $query = 'UPDATE #__banners' . ' SET clicks = (clicks + 1)' . ' WHERE id = ' . (int) $this->id; $this->_db->setQuery($query); $this->_db->execute(); } /** * Overloaded check function * * @return boolean * * @see JTable::check * @since 1.5 */ public function check() { // Set name $this->name = htmlspecialchars_decode($this->name, ENT_QUOTES); // Set alias $this->alias = JApplication::stringURLSafe($this->alias); if (empty($this->alias)) { $this->alias = JApplication::stringURLSafe($this->name); } // Check the publish down date is not earlier than publish up. if ($this->publish_down > $this->_db->getNullDate() && $this->publish_down < $this->publish_up) { $this->setError(JText::_('JGLOBAL_START_PUBLISH_AFTER_FINISH')); return false; } // Set ordering if ($this->state < 0) { // Set ordering to 0 if state is archived or trashed $this->ordering = 0; } elseif (empty($this->ordering)) { // Set ordering to last if ordering was 0 $this->ordering = self::getNextOrder($this->_db->quoteName('catid') . '=' . $this->_db->quote($this->catid) . ' AND state>=0'); } return true; } /** * Overloaded bind function * * @param array $array Named array to bind * @param mixed $ignore An optional array or space separated list of properties to ignore while binding. * * @return mixed Null if operation was satisfactory, otherwise returns an error * * @since 1.5 */ public function bind($array, $ignore = array()) { if (isset($array['params']) && is_array($array['params'])) { $registry = new Registry; $registry->loadArray($array['params']); if ((int) $registry->get('width', 0) < 0) { $this->setError(JText::sprintf('JLIB_DATABASE_ERROR_NEGATIVE_NOT_PERMITTED', JText::_('COM_BANNERS_FIELD_WIDTH_LABEL'))); return false; } if ((int) $registry->get('height', 0) < 0) { $this->setError(JText::sprintf('JLIB_DATABASE_ERROR_NEGATIVE_NOT_PERMITTED', JText::_('COM_BANNERS_FIELD_HEIGHT_LABEL'))); return false; } // Converts the width and height to an absolute numeric value: $width = abs((int) $registry->get('width', 0)); $height = abs((int) $registry->get('height', 0)); // Sets the width and height to an empty string if = 0 $registry->set('width', ($width ? $width : '')); $registry->set('height', ($height ? $height : '')); $array['params'] = (string) $registry; } if (isset($array['imptotal'])) { $array['imptotal'] = abs((int) $array['imptotal']); } return parent::bind($array, $ignore); } /** * Method to store a row * * @param boolean $updateNulls True to update fields even if they are null. * * @return boolean True on success, false on failure. */ public function store($updateNulls = false) { if (empty($this->id)) { $purchase_type = $this->purchase_type; if ($purchase_type < 0 && $this->cid) { $client = JTable::getInstance('Client', 'BannersTable'); $client->load($this->cid); $purchase_type = $client->purchase_type; } if ($purchase_type < 0) { $params = JComponentHelper::getParams('com_banners'); $purchase_type = $params->get('purchase_type'); } switch ($purchase_type) { case 1: $this->reset = $this->_db->getNullDate(); break; case 2: $date = JFactory::getDate('+1 year ' . date('Y-m-d', strtotime('now'))); $this->reset = $this->_db->quote($date->toSql()); break; case 3: $date = JFactory::getDate('+1 month ' . date('Y-m-d', strtotime('now'))); $this->reset = $this->_db->quote($date->toSql()); break; case 4: $date = JFactory::getDate('+7 day ' . date('Y-m-d', strtotime('now'))); $this->reset = $this->_db->quote($date->toSql()); break; case 5: $date = JFactory::getDate('+1 day ' . date('Y-m-d', strtotime('now'))); $this->reset = $this->_db->quote($date->toSql()); break; } // Store the row parent::store($updateNulls); } else { // Get the old row $oldrow = JTable::getInstance('Banner', 'BannersTable'); if (!$oldrow->load($this->id) && $oldrow->getError()) { $this->setError($oldrow->getError()); } // Verify that the alias is unique $table = JTable::getInstance('Banner', 'BannersTable'); if ($table->load(array('alias' => $this->alias, 'catid' => $this->catid)) && ($table->id != $this->id || $this->id == 0)) { $this->setError(JText::_('COM_BANNERS_ERROR_UNIQUE_ALIAS')); return false; } // Store the new row parent::store($updateNulls); // Need to reorder ? if ($oldrow->state >= 0 && ($this->state < 0 || $oldrow->catid != $this->catid)) { // Reorder the oldrow $this->reorder($this->_db->quoteName('catid') . '=' . $this->_db->quote($oldrow->catid) . ' AND state>=0'); } } return count($this->getErrors()) == 0; } /** * Method to set the sticky state for a row or list of rows in the database * table. The method respects checked out rows by other users and will attempt * to checkin rows that it can after adjustments are made. * * @param mixed $pks An optional array of primary key values to update. If not set the instance property value is used. * @param integer $state The sticky state. eg. [0 = unsticked, 1 = sticked] * @param integer $userId The user id of the user performing the operation. * * @return boolean True on success. * * @since 1.6 */ public function stick($pks = null, $state = 1, $userId = 0) { $k = $this->_tbl_key; // Sanitize input. JArrayHelper::toInteger($pks); $userId = (int) $userId; $state = (int) $state; // If there are no primary keys set check to see if the instance key is set. if (empty($pks)) { if ($this->$k) { $pks = array($this->$k); } // Nothing to set publishing state on, return false. else { $this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED')); return false; } } // Get an instance of the table $table = JTable::getInstance('Banner', 'BannersTable'); // For all keys foreach ($pks as $pk) { // Load the banner if (!$table->load($pk)) { $this->setError($table->getError()); } // Verify checkout if ($table->checked_out == 0 || $table->checked_out == $userId) { // Change the state $table->sticky = $state; $table->checked_out = 0; $table->checked_out_time = $this->_db->getNullDate(); // Check the row $table->check(); // Store the row if (!$table->store()) { $this->setError($table->getError()); } } } return count($this->getErrors()) == 0; } } PKc��\Lo(components/com_banners/tables/client.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Client table * * @since 1.6 */ class BannersTableClient extends JTable { /** * Constructor * * @param JDatabaseDriver &$_db Database connector object * * @since 1.5 */ public function __construct(&$_db) { $this->checked_out_time = $_db->getNullDate(); parent::__construct('#__banner_clients', 'id', $_db); JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_banners.client')); } /** * Method to set the publishing state for a row or list of rows in the database * table. The method respects checked out rows by other users and will attempt * to checkin rows that it can after adjustments are made. * * @param mixed $pks An optional array of primary key values to update. If not set the instance property value is used. * @param integer $state The publishing state. eg. [0 = unpublished, 1 = published, 2=archived, -2=trashed] * @param integer $userId The user id of the user performing the operation. * * @return boolean True on success. * * @since 1.0.4 */ public function publish($pks = null, $state = 1, $userId = 0) { $k = $this->_tbl_key; // Sanitize input. JArrayHelper::toInteger($pks); $userId = (int) $userId; $state = (int) $state; // If there are no primary keys set check to see if the instance key is set. if (empty($pks)) { if ($this->$k) { $pks = array($this->$k); } // Nothing to set publishing state on, return false. else { $this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED')); return false; } } // Build the WHERE clause for the primary keys. $where = $k . '=' . implode(' OR ' . $k . '=', $pks); // Determine if there is checkin support for the table. if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time')) { $checkin = ''; } else { $checkin = ' AND (checked_out = 0 OR checked_out = ' . (int) $userId . ')'; } // Update the publishing state for rows with the given primary keys. $this->_db->setQuery( 'UPDATE ' . $this->_db->quoteName($this->_tbl) . ' SET ' . $this->_db->quoteName('state') . ' = ' . (int) $state . ' WHERE (' . $where . ')' . $checkin ); try { $this->_db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } // If checkin is supported and all rows were adjusted, check them in. if ($checkin && (count($pks) == $this->_db->getAffectedRows())) { // Checkin the rows. foreach ($pks as $pk) { $this->checkin($pk); } } // If the JTable instance value is in the list of primary keys that were set, set the instance. if (in_array($this->$k, $pks)) { $this->state = $state; } $this->setError(''); return true; } } PKc��\��byU U -components/com_banners/controllers/banner.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Banner controller class. * * @since 1.6 */ class BannersControllerBanner extends JControllerForm { /** * @var string The prefix to use with controller messages. * @since 1.6 */ protected $text_prefix = 'COM_BANNERS_BANNER'; /** * Method override to check if you can add a new record. * * @param array $data An array of input data. * * @return boolean * * @since 1.6 */ protected function allowAdd($data = array()) { $user = JFactory::getUser(); $filter = $this->input->getInt('filter_category_id'); $categoryId = JArrayHelper::getValue($data, 'catid', $filter, 'int'); $allow = null; if ($categoryId) { // If the category has been passed in the URL check it. $allow = $user->authorise('core.create', $this->option . '.category.' . $categoryId); } if ($allow === null) { // In the absence of better information, revert to the component permissions. return parent::allowAdd($data); } else { return $allow; } } /** * Method override to check if you can edit an existing record. * * @param array $data An array of input data. * @param string $key The name of the key for the primary key. * * @return boolean * * @since 1.6 */ protected function allowEdit($data = array(), $key = 'id') { $user = JFactory::getUser(); $recordId = (int) isset($data[$key]) ? $data[$key] : 0; $categoryId = 0; if ($recordId) { $categoryId = (int) $this->getModel()->getItem($recordId)->catid; } if ($categoryId) { // The category has been set. Check the category permissions. return $user->authorise('core.edit', $this->option . '.category.' . $categoryId); } else { // Since there is no asset tracking, revert to the component permissions. return parent::allowEdit($data, $key); } } /** * Method to run batch operations. * * @param string $model The model * * @return boolean True on success. * * @since 2.5 */ public function batch($model = null) { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Set the model $model = $this->getModel('Banner', '', array()); // Preset the redirect $this->setRedirect(JRoute::_('index.php?option=com_banners&view=banners' . $this->getRedirectToListAppend(), false)); return parent::batch($model); } } PKc��\o �. . .components/com_banners/controllers/banners.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Banners list controller class. * * @since 1.6 */ class BannersControllerBanners extends JControllerAdmin { /** * @var string The prefix to use with controller messages. * * @since 1.6 */ protected $text_prefix = 'COM_BANNERS_BANNERS'; /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { parent::__construct($config); $this->registerTask('sticky_unpublish', 'sticky_publish'); } /** * Proxy for getModel. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 1.6 */ public function getModel($name = 'Banner', $prefix = 'BannersModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } /** * Stick items * * @return void * * @since 1.6 */ public function sticky_publish() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $ids = $this->input->get('cid', array(), 'array'); $values = array('sticky_publish' => 1, 'sticky_unpublish' => 0); $task = $this->getTask(); $value = JArrayHelper::getValue($values, $task, 0, 'int'); if (empty($ids)) { JError::raiseWarning(500, JText::_('COM_BANNERS_NO_BANNERS_SELECTED')); } else { // Get the model. $model = $this->getModel(); // Change the state of the records. if (!$model->stick($ids, $value)) { JError::raiseWarning(500, $model->getError()); } else { if ($value == 1) { $ntext = 'COM_BANNERS_N_BANNERS_STUCK'; } else { $ntext = 'COM_BANNERS_N_BANNERS_UNSTUCK'; } $this->setMessage(JText::plural($ntext, count($ids))); } } $this->setRedirect('index.php?option=com_banners&view=banners'); } } PKc��\H��5��1components/com_banners/controllers/tracks.raw.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Tracks list controller class. * * @since 1.6 */ class BannersControllerTracks extends JControllerLegacy { /** * @var string The context for persistent state. * * @since 1.6 */ protected $context = 'com_banners.tracks'; /** * Proxy for getModel. * * @param string $name The name of the model. * @param string $prefix The prefix for the model class name. * @param array $config Configuration array for model. Optional. * * @return JModel * * @since 1.6 */ public function getModel($name = 'Tracks', $prefix = 'BannersModel', $config = array()) { $model = parent::getModel($name, $prefix, array('ignore_request' => true)); return $model; } /** * Display method for the raw track data. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 * @todo This should be done as a view, not here! */ public function display($cachable = false, $urlparams = false) { // Get the document object. $document = JFactory::getDocument(); $vName = 'tracks'; $vFormat = 'raw'; // Get and render the view. if ($view = $this->getView($vName, $vFormat)) { // Get the model for the view. $model = $this->getModel($vName); // Load the filter state. $app = JFactory::getApplication(); $type = $app->getUserState($this->context . '.filter.type'); $model->setState('filter.type', $type); $begin = $app->getUserState($this->context . '.filter.begin'); $model->setState('filter.begin', $begin); $end = $app->getUserState($this->context . '.filter.end'); $model->setState('filter.end', $end); $categoryId = $app->getUserState($this->context . '.filter.category_id'); $model->setState('filter.category_id', $categoryId); $clientId = $app->getUserState($this->context . '.filter.client_id'); $model->setState('filter.client_id', $clientId); $model->setState('list.limit', 0); $model->setState('list.start', 0); $input = JFactory::getApplication()->input; $form = $input->get('jform', array(), 'array'); $model->setState('basename', $form['basename']); $model->setState('compressed', $form['compressed']); $config = JFactory::getConfig(); $cookie_domain = $config->get('cookie_domain', ''); $cookie_path = $config->get('cookie_path', '/'); setcookie(JApplicationHelper::getHash($this->context . '.basename'), $form['basename'], time() + 365 * 86400, $cookie_path, $cookie_domain); setcookie(JApplicationHelper::getHash($this->context . '.compressed'), $form['compressed'], time() + 365 * 86400, $cookie_path, $cookie_domain); // Push the model into the view (as default). $view->setModel($model, true); // Push document object into the view. $view->document = $document; $view->display(); } } } PKc��\z4�.components/com_banners/controllers/clients.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Clients list controller class. * * @since 1.6 */ class BannersControllerClients extends JControllerAdmin { /** * @var string The prefix to use with controller messages. * * @since 1.6 */ protected $text_prefix = 'COM_BANNERS_CLIENTS'; /** * Method to get a model object, loading it if required. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 1.6 */ public function getModel($name = 'Client', $prefix = 'BannersModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } } PKc��\�&--components/com_banners/controllers/client.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Client controller class. * * @since 1.6 */ class BannersControllerClient extends JControllerForm { /** * @var string The prefix to use with controller messages. * * @since 1.6 */ protected $text_prefix = 'COM_BANNERS_CLIENT'; } PKc��\_��{ { -components/com_banners/controllers/tracks.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Tracks list controller class. * * @since 1.6 */ class BannersControllerTracks extends JControllerLegacy { /** * @var string The prefix to use with controller messages. * * @since 1.6 */ protected $context = 'com_banners.tracks'; /** * Method to get a model object, loading it if required. * * @param string $name The model name. Optional. * @param string $prefix The class prefix. Optional. * @param array $config Configuration array for model. Optional. * * @return object The model. * * @since 1.6 */ public function getModel($name = 'Tracks', $prefix = 'BannersModel', $config = array('ignore_request' => true)) { $model = parent::getModel($name, $prefix, $config); return $model; } /** * Method to remove a record. * * @return void * * @since 1.6 */ public function delete() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); // Get the model. $model = $this->getModel(); // Load the filter state. $app = JFactory::getApplication(); $type = $app->getUserState($this->context . '.filter.type'); $model->setState('filter.type', $type); $begin = $app->getUserState($this->context . '.filter.begin'); $model->setState('filter.begin', $begin); $end = $app->getUserState($this->context . '.filter.end'); $model->setState('filter.end', $end); $categoryId = $app->getUserState($this->context . '.filter.category_id'); $model->setState('filter.category_id', $categoryId); $clientId = $app->getUserState($this->context . '.filter.client_id'); $model->setState('filter.client_id', $clientId); $model->setState('list.limit', 0); $model->setState('list.start', 0); $count = $model->getTotal(); // Remove the items. if (!$model->delete()) { JError::raiseWarning(500, $model->getError()); } elseif (count > 0) { $this->setMessage(JText::plural('COM_BANNERS_TRACKS_N_ITEMS_DELETED', $count)); } else { $this->setMessage(JText::_('COM_BANNERS_TRACKS_NO_ITEMS_DELETED')); } $this->setRedirect('index.php?option=com_banners&view=tracks'); } } PKc��\�?<�# # "components/com_banners/banners.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="3.1" method="upgrade"> <name>com_banners</name> <author>Joomla! Project</author> <creationDate>April 2006</creationDate> <copyright>(C) 2005 - 2015 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>COM_BANNERS_XML_DESCRIPTION</description> <install> <!-- Runs on install --> <sql> <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file> </sql> </install> <uninstall> <!-- Runs on uninstall --> <sql> <file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file> </sql> </uninstall> <files folder="site"> <filename>banners.php</filename> <filename>controller.php</filename> <filename>router.php</filename> <folder>helpers</folder> <folder>models</folder> </files> <administration> <menu img="class:banners">com_banners</menu> <submenu> <!-- Note that all & must be escaped to & for the file to be valid XML and be parsed by the installer --> <menu link="option=com_banners" view="banners" img="class:banners" alt="Banners/Banners">com_banners_banners</menu> <menu link="option=com_categories&extension=com_banners" view="categories" img="class:banners-cat" alt="Banners/Categories">com_banners_categories</menu> <menu link="option=com_banners&view=clients" view="clients" img="class:banners-clients" alt="Banners/Clients">com_banners_clients</menu> <menu link="option=com_banners&view=tracks" view="tracks" img="class:banners-tracks" alt="Banners/Tracks">com_banners_tracks</menu> </submenu> <files folder="admin"> <filename>access.xml</filename> <filename>banners.php</filename> <filename>config.xml</filename> <filename>controller.php</filename> <folder>controllers</folder> <folder>helpers</folder> <folder>models</folder> <folder>tables</folder> <folder>views</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB.com_banners.ini</language> <language tag="en-GB">language/en-GB.com_banners.sys.ini</language> </languages> </administration> </extension> PKc��\`���oo"components/com_banners/banners.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.tabstate'); if (!JFactory::getUser()->authorise('core.manage', 'com_banners')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } // Execute the task. $controller = JControllerLegacy::getInstance('Banners'); $controller->execute(JFactory::getApplication()->input->get('task')); $controller->redirect(); PKc��\\3�Qm m !components/com_banners/config.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <config> <fieldset name="component" label="COM_BANNERS_FIELDSET_CONFIG_CLIENT_OPTIONS_LABEL" description="COM_BANNERS_FIELDSET_CONFIG_CLIENT_OPTIONS_DESC"> <field id="purchase_type" name="purchase_type" type="list" label="COM_BANNERS_FIELD_PURCHASETYPE_LABEL" description="COM_BANNERS_FIELD_PURCHASETYPE_DESC" default="0" > <option value="1">COM_BANNERS_FIELD_VALUE_1</option> <option value="2">COM_BANNERS_FIELD_VALUE_2</option> <option value="3">COM_BANNERS_FIELD_VALUE_3</option> <option value="4">COM_BANNERS_FIELD_VALUE_4</option> <option value="5">COM_BANNERS_FIELD_VALUE_5</option> </field> <field name="track_impressions" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_BANNERS_FIELD_TRACKIMPRESSION_LABEL" description="COM_BANNERS_FIELD_TRACKIMPRESSION_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="track_clicks" type="radio" class="btn-group btn-group-yesno" default="0" label="COM_BANNERS_FIELD_TRACKCLICK_LABEL" description="COM_BANNERS_FIELD_TRACKCLICK_DESC"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="metakey_prefix" type="text" label="COM_BANNERS_FIELD_METAKEYWORDPREFIX_LABEL" description="COM_BANNERS_FIELD_METAKEYWORDPREFIX_DESC" /> </fieldset> <fieldset name="banners" label="COM_BANNERS_FIELDSET_CONFIG_BANNER_OPTIONS_LABEL" description="COM_BANNERS_FIELDSET_CONFIG_BANNER_OPTIONS_DESC"> <field name="save_history" type="radio" class="btn-group btn-group-yesno" default="0" label="JGLOBAL_SAVE_HISTORY_OPTIONS_LABEL" description="JGLOBAL_SAVE_HISTORY_OPTIONS_DESC" > <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="history_limit" type="text" filter="integer" label="JGLOBAL_HISTORY_LIMIT_OPTIONS_LABEL" description="JGLOBAL_HISTORY_LIMIT_OPTIONS_DESC" default="5" /> </fieldset> <fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC" > <field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" filter="rules" validate="rules" component="com_banners" section="component" /> </fieldset> </config> PKc��\���yy3components/com_banners/sql/uninstall.mysql.utf8.sqlnu�[���DROP TABLE IF EXISTS `#__banners`; DROP TABLE IF EXISTS `#__banner_clients`; DROP TABLE IF EXISTS `#__banner_tracks`; PKc��\N*Ɣ 1components/com_banners/sql/install.mysql.utf8.sqlnu�[���CREATE TABLE `#__banners` ( `id` INTEGER NOT NULL auto_increment, `cid` INTEGER NOT NULL DEFAULT '0', `type` INTEGER NOT NULL DEFAULT '0', `name` VARCHAR(255) NOT NULL DEFAULT '', `alias` VARCHAR(255) NOT NULL DEFAULT '', `imptotal` INTEGER NOT NULL DEFAULT '0', `impmade` INTEGER NOT NULL DEFAULT '0', `clicks` INTEGER NOT NULL DEFAULT '0', `clickurl` VARCHAR(200) NOT NULL DEFAULT '', `state` TINYINT(3) NOT NULL DEFAULT '0', `catid` INTEGER UNSIGNED NOT NULL DEFAULT 0, `description` TEXT NOT NULL, `custombannercode` VARCHAR(2048) NOT NULL, `sticky` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, `ordering` INTEGER NOT NULL DEFAULT 0, `metakey` TEXT NOT NULL, `params` TEXT NOT NULL, `own_prefix` TINYINT(1) NOT NULL DEFAULT '0', `metakey_prefix` VARCHAR(255) NOT NULL DEFAULT '', `purchase_type` TINYINT NOT NULL DEFAULT '-1', `track_clicks` TINYINT NOT NULL DEFAULT '-1', `track_impressions` TINYINT NOT NULL DEFAULT '-1', `checked_out` INTEGER UNSIGNED NOT NULL DEFAULT '0', `checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `publish_up` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `publish_down` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `reset` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `language` char(7) NOT NULL DEFAULT '', PRIMARY KEY (`id`), INDEX `idx_state` (`state`), INDEX `idx_own_prefix` (`own_prefix`), INDEX `idx_metakey_prefix` (`metakey_prefix`), INDEX `idx_banner_catid`(`catid`), INDEX `idx_language` (`language`) ) DEFAULT CHARSET=utf8; CREATE TABLE `#__banner_clients` ( `id` INTEGER NOT NULL auto_increment, `name` VARCHAR(255) NOT NULL DEFAULT '', `contact` VARCHAR(255) NOT NULL DEFAULT '', `email` VARCHAR(255) NOT NULL DEFAULT '', `extrainfo` TEXT NOT NULL, `state` TINYINT(3) NOT NULL DEFAULT '0', `checked_out` INTEGER UNSIGNED NOT NULL DEFAULT '0', `checked_out_time` DATETIME NOT NULL default '0000-00-00 00:00:00', `metakey` TEXT NOT NULL, `own_prefix` TINYINT NOT NULL DEFAULT '0', `metakey_prefix` VARCHAR(255) NOT NULL default '', `purchase_type` TINYINT NOT NULL DEFAULT '-1', `track_clicks` TINYINT NOT NULL DEFAULT '-1', `track_impressions` TINYINT NOT NULL DEFAULT '-1', PRIMARY KEY (`id`), INDEX `idx_own_prefix` (`own_prefix`), INDEX `idx_metakey_prefix` (`metakey_prefix`) ) DEFAULT CHARSET=utf8; CREATE TABLE `#__banner_tracks` ( `track_date` DATETIME NOT NULL, `track_type` INTEGER UNSIGNED NOT NULL, `banner_id` INTEGER UNSIGNED NOT NULL, `count` INTEGER UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`track_date`, `track_type`, `banner_id`), INDEX `idx_track_date` (`track_date`), INDEX `idx_track_type` (`track_type`), INDEX `idx_banner_id` (`banner_id`) ) DEFAULT CHARSET=utf8; PKc��\���"��!components/com_banners/access.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <access component="com_banners"> <section name="component"> <action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" /> <action name="core.options" title="JACTION_OPTIONS" description="JACTION_OPTIONS_COMPONENT_DESC" /> <action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" /> <action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" /> </section> <section name="category"> <action name="core.create" title="JACTION_CREATE" description="COM_CATEGORIES_ACCESS_CREATE_DESC" /> <action name="core.delete" title="JACTION_DELETE" description="COM_CATEGORIES_ACCESS_DELETE_DESC" /> <action name="core.edit" title="JACTION_EDIT" description="COM_CATEGORIES_ACCESS_EDIT_DESC" /> <action name="core.edit.state" title="JACTION_EDITSTATE" description="COM_CATEGORIES_ACCESS_EDITSTATE_DESC" /> </section> </access> PKc��\JZ�ll6components/com_banners/views/download/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <form action="<?php echo JRoute::_('index.php?option=com_banners&task=tracks.display&format=raw'); ?>" method="post" name="adminForm" id="download-form" class="form-validate"> <fieldset class="adminform"> <legend><?php echo JText::_('COM_BANNERS_TRACKS_DOWNLOAD'); ?></legend> <?php foreach ($this->form->getFieldset() as $field) : ?> <?php if (!$field->hidden) : ?> <?php echo $field->label; ?> <?php endif; ?> <?php echo $field->input; ?> <?php endforeach; ?> <div class="clr"></div> <button type="button" class="btn" onclick="this.form.submit();window.top.setTimeout('window.parent.jModalClose()', 700);"><?php echo JText::_('COM_BANNERS_TRACKS_EXPORT'); ?></button> <button type="button" class="btn" onclick="window.parent.jModalClose();"><?php echo JText::_('COM_BANNERS_CANCEL'); ?></button> </fieldset> </form> PKc��\���NN3components/com_banners/views/download/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for download a list of tracks. * * @since 1.6 */ class BannersViewDownload extends JViewLegacy { protected $form; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $this->form = $this->get('Form'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } parent::display($tpl); } } PKc��\6�V�<<@components/com_banners/views/banners/tmpl/default_batch_body.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; $published = $this->state->get('filter.published'); ?> <div class="row-fluid"> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.language'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('banner.clients'); ?> </div> </div> </div> <div class="row-fluid"> <?php if ($published >= 0) : ?> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.item', 'com_banners'); ?> </div> </div> <?php endif; ?> </div> PKc��\������Bcomponents/com_banners/views/banners/tmpl/default_batch_footer.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; ?> <button class="btn" type="button" onclick="document.getElementById('batch-category-id').value='';document.getElementById('batch-client-id').value='';document.getElementById('batch-language-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-success" type="submit" onclick="Joomla.submitbutton('banner.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button> PKc��\��� � 5components/com_banners/views/banners/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $canOrder = $user->authorise('core.edit.state', 'com_banners.category'); $archived = $this->state->get('filter.state') == 2 ? true : false; $trashed = $this->state->get('filter.state') == -2 ? true : false; $saveOrder = $listOrder == 'a.ordering'; if ($saveOrder) { $saveOrderingUrl = 'index.php?option=com_banners&task=banners.saveOrderAjax&tmpl=component'; JHtml::_('sortablelist.sortable', 'articleList', 'adminForm', strtolower($listDirn), $saveOrderingUrl); } ?> <form action="<?php echo JRoute::_('index.php?option=com_banners&view=banners'); ?>" method="post" name="adminForm" id="adminForm"> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php // Search tools bar echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this)); ?> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped" id="articleList"> <thead> <tr> <th width="1%" class="nowrap center hidden-phone"> <?php echo JHtml::_('searchtools.sort', '', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING', 'icon-menu-2'); ?> </th> <th width="1%" class="center"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="1%" class="nowrap center"> <?php echo JHtml::_('searchtools.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('searchtools.sort', 'COM_BANNERS_HEADING_NAME', 'a.name', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap center hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'COM_BANNERS_HEADING_STICKY', 'a.sticky', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'COM_BANNERS_HEADING_CLIENT', 'client_name', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'COM_BANNERS_HEADING_IMPRESSIONS', 'impmade', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'COM_BANNERS_HEADING_CLICKS', 'clicks', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_LANGUAGE', 'a.language', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="13"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : $ordering = ($listOrder == 'ordering'); $item->cat_link = JRoute::_('index.php?option=com_categories&extension=com_banners&task=edit&type=other&cid[]=' . $item->catid); $canCreate = $user->authorise('core.create', 'com_banners.category.' . $item->catid); $canEdit = $user->authorise('core.edit', 'com_banners.category.' . $item->catid); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_banners.category.' . $item->catid) && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>" sortable-group-id="<?php echo $item->catid; ?>"> <td class="order nowrap center hidden-phone"> <?php $iconClass = ''; if (!$canChange) { $iconClass = ' inactive'; } elseif (!$saveOrder) { $iconClass = ' inactive tip-top hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED'); } ?> <span class="sortable-handler <?php echo $iconClass ?>"> <span class="icon-menu"></span> </span> <?php if ($canChange && $saveOrder) : ?> <input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering; ?>" class="width-20 text-area-order " /> <?php endif; ?> </td> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td class="center"> <div class="btn-group"> <?php echo JHtml::_('jgrid.published', $item->state, $i, 'banners.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?> <?php // Create dropdown items $action = $archived ? 'unarchive' : 'archive'; JHtml::_('actionsdropdown.' . $action, 'cb' . $i, 'banners'); $action = $trashed ? 'untrash' : 'trash'; JHtml::_('actionsdropdown.' . $action, 'cb' . $i, 'banners'); // Render dropdown list echo JHtml::_('actionsdropdown.render', $this->escape($item->name)); ?> </div> </td> <td class="nowrap has-context"> <div class="pull-left"> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'banners.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_banners&task=banner.edit&id=' . (int) $item->id); ?>"> <?php echo $this->escape($item->name); ?></a> <?php else : ?> <?php echo $this->escape($item->name); ?> <?php endif; ?> <span class="small"> <?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias)); ?> </span> <div class="small"> <?php echo $this->escape($item->category_title); ?> </div> </div> </td> <td class="center hidden-phone"> <?php echo JHtml::_('banner.pinned', $item->sticky, $i, $canChange); ?> </td> <td class="small hidden-phone"> <?php echo $item->client_name; ?> </td> <td class="small hidden-phone"> <?php echo JText::sprintf('COM_BANNERS_IMPRESSIONS', $item->impmade, $item->imptotal ? $item->imptotal : JText::_('COM_BANNERS_UNLIMITED')); ?> </td> <td class="small hidden-phone"> <?php echo $item->clicks; ?> - <?php echo sprintf('%.2f%%', $item->impmade ? 100 * $item->clicks / $item->impmade : 0); ?> </td> <td class="small nowrap hidden-phone"> <?php if ($item->language == '*'): ?> <?php echo JText::alt('JALL', 'language'); ?> <?php else: ?> <?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?> <?php endif; ?> </td> <td class="hidden-phone"> <?php echo $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php // Load the batch processing form. ?> <?php if ($user->authorise('core.create', 'com_banners') && $user->authorise('core.edit', 'com_banners') && $user->authorise('core.edit.state', 'com_banners')) : ?> <?php echo JHtml::_( 'bootstrap.renderModal', 'collapseModal', array( 'title' => JText::_('COM_BANNERS_BATCH_OPTIONS'), 'footer' => $this->loadTemplate('batch_footer') ), $this->loadTemplate('batch_body') ); ?> <?php endif; ?> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKc��\ݤ���;components/com_banners/views/banners/tmpl/default_batch.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * * @deprecated 3.4 Use default_batch_body and default_batch_footer */ defined('_JEXEC') or die; $published = $this->state->get('filter.published'); ?> <div class="modal hide fade" id="collapseModal"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h3><?php echo JText::_('COM_BANNERS_BATCH_OPTIONS'); ?></h3> </div> <div class="modal-body modal-batch"> <p><?php echo JText::_('COM_BANNERS_BATCH_TIP'); ?></p> <div class="row-fluid"> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.language'); ?> </div> </div> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('banner.clients'); ?> </div> </div> </div> <div class="row-fluid"> <?php if ($published >= 0) : ?> <div class="control-group span6"> <div class="controls"> <?php echo JHtml::_('batch.item', 'com_banners'); ?> </div> </div> <?php endif; ?> </div> </div> <div class="modal-footer"> <button class="btn" type="button" onclick="document.getElementById('batch-category-id').value='';document.getElementById('batch-client-id').value='';document.getElementById('batch-language-id').value=''" data-dismiss="modal"> <?php echo JText::_('JCANCEL'); ?> </button> <button class="btn btn-primary" type="submit" onclick="Joomla.submitbutton('banner.batch');"> <?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?> </button> </div> </div> PKc��\�(8_��2components/com_banners/views/banners/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of banners. * * @since 1.6 */ class BannersViewBanners extends JViewLegacy { protected $categories; protected $items; protected $pagination; protected $state; /** * Method to display the view. * * @param string $tpl A template file to load. [optional] * * @return mixed A string if successful, otherwise a JError object. * * @since 1.6 */ public function display($tpl = null) { $this->categories = $this->get('CategoryOrders'); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); $this->filterForm = $this->get('FilterForm'); $this->activeFilters = $this->get('ActiveFilters'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } BannersHelper::addSubmenu('banners'); $this->addToolbar(); require_once JPATH_COMPONENT . '/models/fields/bannerclient.php'; // Include the component HTML helpers. JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { require_once JPATH_COMPONENT . '/helpers/banners.php'; $canDo = JHelperContent::getActions('com_banners', 'category', $this->state->get('filter.category_id')); $user = JFactory::getUser(); // Get the toolbar object instance $bar = JToolBar::getInstance('toolbar'); JToolbarHelper::title(JText::_('COM_BANNERS_MANAGER_BANNERS'), 'bookmark banners'); if (count($user->getAuthorisedCategories('com_banners', 'core.create')) > 0) { JToolbarHelper::addNew('banner.add'); } if (($canDo->get('core.edit'))) { JToolbarHelper::editList('banner.edit'); } if ($canDo->get('core.edit.state')) { if ($this->state->get('filter.state') != 2) { JToolbarHelper::publish('banners.publish', 'JTOOLBAR_PUBLISH', true); JToolbarHelper::unpublish('banners.unpublish', 'JTOOLBAR_UNPUBLISH', true); } if ($this->state->get('filter.state') != -1) { if ($this->state->get('filter.state') != 2) { JToolbarHelper::archiveList('banners.archive'); } elseif ($this->state->get('filter.state') == 2) { JToolbarHelper::unarchiveList('banners.publish'); } } } if ($canDo->get('core.edit.state')) { JToolbarHelper::checkin('banners.checkin'); } // Add a batch button if ($user->authorise('core.create', 'com_banners') && $user->authorise('core.edit', 'com_banners') && $user->authorise('core.edit.state', 'com_banners')) { $title = JText::_('JTOOLBAR_BATCH'); // Instantiate a new JLayoutFile instance and render the batch button $layout = new JLayoutFile('joomla.toolbar.batch'); $dhtml = $layout->render(array('title' => $title)); $bar->appendButton('Custom', $dhtml, 'batch'); } if ($this->state->get('filter.state') == -2 && $canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'banners.delete', 'JTOOLBAR_EMPTY_TRASH'); } elseif ($canDo->get('core.edit.state')) { JToolbarHelper::trash('banners.trash'); } if ($user->authorise('core.admin', 'com_banners') || $user->authorise('core.options', 'com_banners')) { JToolbarHelper::preferences('com_banners'); } JToolbarHelper::help('JHELP_COMPONENTS_BANNERS_BANNERS'); } /** * Returns an array of fields the table can be sorted by * * @return array Array containing the field name to sort by as the key and display text as value * * @since 3.0 */ protected function getSortFields() { return array( 'ordering' => JText::_('JGRID_HEADING_ORDERING'), 'a.state' => JText::_('JSTATUS'), 'a.name' => JText::_('COM_BANNERS_HEADING_NAME'), 'a.sticky' => JText::_('COM_BANNERS_HEADING_STICKY'), 'client_name' => JText::_('COM_BANNERS_HEADING_CLIENT'), 'impmade' => JText::_('COM_BANNERS_HEADING_IMPRESSIONS'), 'clicks' => JText::_('COM_BANNERS_HEADING_CLICKS'), 'a.language' => JText::_('JGRID_HEADING_LANGUAGE'), 'a.id' => JText::_('JGRID_HEADING_ID') ); } } PKc��\�n-qTT4components/com_banners/views/tracks/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.multiselect'); JHtml::_('behavior.modal', 'a.modal'); JHtml::_('formbehavior.chosen', 'select'); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $sortFields = $this->getSortFields(); JFactory::getDocument()->addScriptDeclaration( ' Joomla.orderTable = function() { table = document.getElementById("sortTable"); direction = document.getElementById("directionTable"); order = table.options[table.selectedIndex].value; if (order != "' . $listOrder . '") { dirn = "asc"; } else { dirn = direction.options[direction.selectedIndex].value; } Joomla.tableOrdering(order, dirn, ""); }; Joomla.closeModalDialog = function() { window.jQuery("#modal-download").modal("hide"); };' ); ?> <form action="<?php echo JRoute::_('index.php?option=com_banners&view=tracks'); ?>" method="post" name="adminForm" id="adminForm"> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <div id="filter-bar" class="btn-toolbar"> <div class="filter-search btn-group pull-left"> <label class="filter-hide-lbl" for="filter_begin"><?php echo JText::_('COM_BANNERS_BEGIN_LABEL'); ?></label> <?php echo JHtml::_('calendar', $this->state->get('filter.begin'), 'filter_begin', 'filter_begin', '%Y-%m-%d', array('size' => 10, 'onchange' => "this.form.fireEvent('submit');this.form.submit()")); ?> </div> <div class="filter-search btn-group pull-left"> <label class="filter-hide-lbl" for="filter_end"><?php echo JText::_('COM_BANNERS_END_LABEL'); ?></label> <?php echo JHtml::_('calendar', $this->state->get('filter.end'), 'filter_end', 'filter_end', '%Y-%m-%d', array('size' => 10, 'onchange' => "this.form.fireEvent('submit');this.form.submit()")); ?> </div> <div class="btn-group pull-right hidden-phone"> <label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC'); ?></label> <?php echo $this->pagination->getLimitBox(); ?> </div> <div class="btn-group pull-right hidden-phone"> <label for="directionTable" class="element-invisible"><?php echo JText::_('JFIELD_ORDERING_DESC'); ?></label> <select name="directionTable" id="directionTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JFIELD_ORDERING_DESC'); ?></option> <option value="asc" <?php echo $listDirn == 'asc' ? 'selected="selected"' : ''; ?>><?php echo JText::_('JGLOBAL_ORDER_ASCENDING'); ?></option> <option value="desc" <?php echo $listDirn == 'desc' ? 'selected="selected"' : ''; ?>><?php echo JText::_('JGLOBAL_ORDER_DESCENDING'); ?></option> </select> </div> <div class="btn-group pull-right hidden-phone"> <label for="sortTable" class="element-invisible"><?php echo JText::_('JGLOBAL_SORT_BY'); ?></label> <select name="sortTable" id="sortTable" class="input-medium" onchange="Joomla.orderTable()"> <option value=""><?php echo JText::_('JGLOBAL_SORT_BY'); ?></option> <?php echo JHtml::_('select.options', $sortFields, 'value', 'text', $listOrder); ?> </select> </div> </div> <div class="clearfix"></div> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped"> <thead> <tr> <th class="title"> <?php echo JText::_('COM_BANNERS_HEADING_NAME'); ?> </th> <th width="20%" class="nowrap"> <?php echo JText::_('COM_BANNERS_HEADING_CLIENT'); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JText::_('COM_BANNERS_HEADING_TYPE'); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JText::_('COM_BANNERS_HEADING_COUNT'); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JText::_('JDATE'); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="6"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : ?> <tr class="row<?php echo $i % 2; ?>"> <td> <?php echo $item->name; ?> <div class="small"> <?php echo $item->category_title; ?> </div> </td> <td> <?php echo $item->client_name; ?> </td> <td class="small hidden-phone"> <?php echo $item->track_type == 1 ? JText::_('COM_BANNERS_IMPRESSION') : JText::_('COM_BANNERS_CLICK'); ?> </td> <td class="hidden-phone"> <?php echo $item->count; ?> </td> <td class="hidden-phone"> <?php echo JHtml::_('date', $item->track_date, JText::_('DATE_FORMAT_LC4') . ' H:i'); ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" /> <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKc��\��P��0components/com_banners/views/tracks/view.raw.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of tracks. * * @since 1.6 */ class BannersViewTracks extends JViewLegacy { /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $basename = $this->get('BaseName'); $filetype = $this->get('FileType'); $mimetype = $this->get('MimeType'); $content = $this->get('Content'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $document = JFactory::getDocument(); $document->setMimeEncoding($mimetype); JFactory::getApplication() ->setHeader( 'Content-disposition', 'attachment; filename="' . $basename . '.' . $filetype . '"; creation-date="' . JFactory::getDate()->toRFC822() . '"', true ); echo $content; } } PKc��\�ta� � 1components/com_banners/views/tracks/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of tracks. * * @since 1.6 */ class BannersViewTracks extends JViewLegacy { protected $items; protected $pagination; protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } BannersHelper::addSubmenu('tracks'); $this->addToolbar(); require_once JPATH_COMPONENT . '/models/fields/bannerclient.php'; $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { require_once JPATH_COMPONENT . '/helpers/banners.php'; $canDo = JHelperContent::getActions('com_banners', 'category', $this->state->get('filter.category_id')); JToolbarHelper::title(JText::_('COM_BANNERS_MANAGER_TRACKS'), 'bookmark banners-tracks'); $bar = JToolBar::getInstance('toolbar'); $bar->appendButton('Popup', 'download', 'JTOOLBAR_EXPORT', 'index.php?option=com_banners&view=download&tmpl=component', 600, 300); if ($canDo->get('core.delete')) { $bar->appendButton('Confirm', 'COM_BANNERS_DELETE_MSG', 'delete', 'COM_BANNERS_TRACKS_DELETE', 'tracks.delete', false); JToolbarHelper::divider(); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences('com_banners'); JToolbarHelper::divider(); } JToolbarHelper::help('JHELP_COMPONENTS_BANNERS_TRACKS'); JHtmlSidebar::setAction('index.php?option=com_banners&view=tracks'); JHtmlSidebar::addFilter( JText::_('COM_BANNERS_SELECT_CLIENT'), 'filter_client_id', JHtml::_('select.options', BannersHelper::getClientOptions(), 'value', 'text', $this->state->get('filter.client_id')) ); JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_CATEGORY'), 'filter_category_id', JHtml::_('select.options', JHtml::_('category.options', 'com_banners'), 'value', 'text', $this->state->get('filter.category_id')) ); JHtmlSidebar::addFilter( JText::_('COM_BANNERS_SELECT_TYPE'), 'filter_type', JHtml::_( 'select.options', array(JHtml::_('select.option', 1, JText::_('COM_BANNERS_IMPRESSION')), JHtml::_('select.option', 2, JText::_('COM_BANNERS_CLICK'))), 'value', 'text', $this->state->get('filter.type') ) ); } /** * Returns an array of fields the table can be sorted by * * @return array Array containing the field name to sort by as the key and display text as value * * @since 3.0 */ protected function getSortFields() { return array( 'b.name' => JText::_('COM_BANNERS_HEADING_NAME'), 'cl.name' => JText::_('COM_BANNERS_HEADING_CLIENT'), 'track_type' => JText::_('COM_BANNERS_HEADING_TYPE'), 'count' => JText::_('COM_BANNERS_HEADING_COUNT'), 'track_date' => JText::_('JDATE') ); } } PKc��\>u\y��5components/com_banners/views/clients/tmpl/default.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->escape($this->state->get('list.ordering')); $listDirn = $this->escape($this->state->get('list.direction')); $params = (isset($this->state->params)) ? $this->state->params : new JObject; $archived = $this->state->get('filter.state') == 2 ? true : false; $trashed = $this->state->get('filter.state') == -2 ? true : false; ?> <form action="<?php echo JRoute::_('index.php?option=com_banners&view=clients'); ?>" method="post" name="adminForm" id="adminForm"> <div id="j-sidebar-container" class="span2"> <?php echo $this->sidebar; ?> </div> <div id="j-main-container" class="span10"> <?php // Search tools bar echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this)); ?> <?php if (empty($this->items)) : ?> <div class="alert alert-no-items"> <?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?> </div> <?php else : ?> <table class="table table-striped"> <thead> <tr> <th width="1%" class="center"> <?php echo JHtml::_('grid.checkall'); ?> </th> <th width="5%" class="nowrap center"> <?php echo JHtml::_('searchtools.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?> </th> <th> <?php echo JHtml::_('searchtools.sort', 'COM_BANNERS_HEADING_CLIENT', 'a.name', $listDirn, $listOrder); ?> </th> <th width="20%" class="hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'COM_BANNERS_HEADING_CONTACT', 'contact', $listDirn, $listOrder); ?> </th> <th width="5%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'COM_BANNERS_HEADING_BANNERS', 'nbanners', $listDirn, $listOrder); ?> </th> <th width="10%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'COM_BANNERS_HEADING_PURCHASETYPE', 'purchase_type', $listDirn, $listOrder); ?> </th> <th width="1%" class="nowrap hidden-phone"> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?> </th> </tr> </thead> <tfoot> <tr> <td colspan="8"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : $canCreate = $user->authorise('core.create', 'com_banners'); $canEdit = $user->authorise('core.edit', 'com_banners'); $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || $item->checked_out == 0; $canChange = $user->authorise('core.edit.state', 'com_banners') && $canCheckin; ?> <tr class="row<?php echo $i % 2; ?>"> <td class="center"> <?php echo JHtml::_('grid.id', $i, $item->id); ?> </td> <td class="center"> <div class="btn-group"> <?php echo JHtml::_('jgrid.published', $item->state, $i, 'clients.', $canChange); ?> <?php // Create dropdown items $action = $archived ? 'unarchive' : 'archive'; JHtml::_('actionsdropdown.' . $action, 'cb' . $i, 'clients'); $action = $trashed ? 'untrash' : 'trash'; JHtml::_('actionsdropdown.' . $action, 'cb' . $i, 'clients'); // Render dropdown list echo JHtml::_('actionsdropdown.render', $this->escape($item->name)); ?> </div> </td> <td class="nowrap has-context"> <div class="pull-left"> <?php if ($item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'clients.', $canCheckin); ?> <?php endif; ?> <?php if ($canEdit) : ?> <a href="<?php echo JRoute::_('index.php?option=com_banners&task=client.edit&id=' . (int) $item->id); ?>"> <?php echo $this->escape($item->name); ?></a> <?php else : ?> <?php echo $this->escape($item->name); ?> <?php endif; ?> </div> </td> <td class="small hidden-phone"> <?php echo $item->contact; ?> </td> <td class="hidden-phone"> <?php echo $item->nbanners; ?> </td> <td class="small hidden-phone"> <?php if ($item->purchase_type < 0): ?> <?php echo JText::sprintf('COM_BANNERS_DEFAULT', JText::_('COM_BANNERS_FIELD_VALUE_' . $params->get('purchase_type'))); ?> <?php else: ?> <?php echo JText::_('COM_BANNERS_FIELD_VALUE_' . $item->purchase_type); ?> <?php endif; ?> </td> <td class="hidden-phone"> <?php echo $item->id; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php endif; ?> <input type="hidden" name="task" value="" /> <input type="hidden" name="boxchecked" value="0" /> <?php echo JHtml::_('form.token'); ?> </div> </form> PKc��\$@���2components/com_banners/views/clients/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * View class for a list of clients. * * @since 1.6 */ class BannersViewClients extends JViewLegacy { protected $items; protected $pagination; protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->state = $this->get('State'); $this->filterForm = $this->get('FilterForm'); $this->activeFilters = $this->get('ActiveFilters'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } BannersHelper::addSubmenu('clients'); $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { require_once JPATH_COMPONENT . '/helpers/banners.php'; $canDo = JHelperContent::getActions('com_banners'); JToolbarHelper::title(JText::_('COM_BANNERS_MANAGER_CLIENTS'), 'bookmark banners-clients'); if ($canDo->get('core.create')) { JToolbarHelper::addNew('client.add'); } if ($canDo->get('core.edit')) { JToolbarHelper::editList('client.edit'); } if ($canDo->get('core.edit.state')) { JToolbarHelper::publish('clients.publish', 'JTOOLBAR_PUBLISH', true); JToolbarHelper::unpublish('clients.unpublish', 'JTOOLBAR_UNPUBLISH', true); JToolbarHelper::archiveList('clients.archive'); JToolbarHelper::checkin('clients.checkin'); } if ($this->state->get('filter.state') == -2 && $canDo->get('core.delete')) { JToolbarHelper::deleteList('', 'clients.delete', 'JTOOLBAR_EMPTY_TRASH'); } elseif ($canDo->get('core.edit.state')) { JToolbarHelper::trash('clients.trash'); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { JToolbarHelper::preferences('com_banners'); } JToolbarHelper::help('JHELP_COMPONENTS_BANNERS_CLIENTS'); } /** * Returns an array of fields the table can be sorted by * * @return array Array containing the field name to sort by as the key and display text as value * * @since 3.0 */ protected function getSortFields() { return array( 'a.status' => JText::_('JSTATUS'), 'a.name' => JText::_('COM_BANNERS_HEADING_CLIENT'), 'contact' => JText::_('COM_BANNERS_HEADING_CONTACT'), 'client_name' => JText::_('COM_BANNERS_HEADING_CLIENT'), 'nbanners' => JText::_('COM_BANNERS_HEADING_ACTIVE'), 'a.id' => JText::_('JGRID_HEADING_ID') ); } } PKc��\z�̯��1components/com_banners/views/banner/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('formbehavior.chosen', 'select'); JFactory::getDocument()->addScriptDeclaration(' Joomla.submitbutton = function(task) { if (task == "banner.cancel" || document.formvalidator.isValid(document.getElementById("banner-form"))) { Joomla.submitform(task, document.getElementById("banner-form")); } }; jQuery(document).ready(function ($){ $("#jform_type").on("change", function (a, params) { var v = typeof(params) !== "object" ? $("#jform_type").val() : params.selected; var img_url = $("#image, #url"); var custom = $("#custom"); switch (v) { case "0": // Image img_url.show(); custom.hide(); break; case "1": // Custom img_url.hide(); custom.show(); break; } }).trigger("change"); }); '); ?> <form action="<?php echo JRoute::_('index.php?option=com_banners&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="banner-form" class="form-validate"> <?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?> <div class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'details')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'details', JText::_('COM_BANNERS_BANNER_DETAILS', true)); ?> <div class="row-fluid"> <div class="span9"> <?php echo $this->form->getControlGroup('type'); ?> <div id="image"> <?php echo $this->form->getControlGroups('image'); ?> </div> <div id="custom"> <?php echo $this->form->getControlGroup('custombannercode'); ?> </div> <?php echo $this->form->getControlGroup('clickurl'); echo $this->form->getControlGroup('description'); ?> </div> <div class="span3"> <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'otherparams', JText::_('COM_BANNERS_GROUP_LABEL_BANNER_DETAILS', true)); ?> <?php echo $this->form->getControlGroups('otherparams'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'publishing', JText::_('JGLOBAL_FIELDSET_PUBLISHING', true)); ?> <div class="row-fluid form-horizontal-desktop"> <div class="span6"> <?php echo JLayoutHelper::render('joomla.edit.publishingdata', $this); ?> </div> <div class="span6"> <?php echo $this->form->getControlGroups('metadata'); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> </div> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKc��\?��� � 1components/com_banners/views/banner/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JLoader::register('BannersHelper', JPATH_COMPONENT . '/helpers/banners.php'); /** * View to edit a banner. * * @since 1.5 */ class BannersViewBanner extends JViewLegacy { protected $form; protected $item; protected $state; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { // Initialiase variables. $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); JHtml::_('jquery.framework'); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JFactory::getApplication()->input->set('hidemainmenu', true); $user = JFactory::getUser(); $userId = $user->get('id'); $isNew = ($this->item->id == 0); $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $userId); // Since we don't track these assets at the item level, use the category id. $canDo = JHelperContent::getActions('com_banners', 'category', $this->item->catid); JToolbarHelper::title($isNew ? JText::_('COM_BANNERS_MANAGER_BANNER_NEW') : JText::_('COM_BANNERS_MANAGER_BANNER_EDIT'), 'bookmark banners'); // If not checked out, can save the item. if (!$checkedOut && ($canDo->get('core.edit') || count($user->getAuthorisedCategories('com_banners', 'core.create')) > 0)) { JToolbarHelper::apply('banner.apply'); JToolbarHelper::save('banner.save'); if ($canDo->get('core.create')) { JToolbarHelper::save2new('banner.save2new'); } } // If an existing item, can save to a copy. if (!$isNew && $canDo->get('core.create')) { JToolbarHelper::save2copy('banner.save2copy'); } if (empty($this->item->id)) { JToolbarHelper::cancel('banner.cancel'); } else { if ($this->state->params->get('save_history', 0) && $user->authorise('core.edit')) { JToolbarHelper::versions('com_banners.banner', $this->item->id); } JToolbarHelper::cancel('banner.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_COMPONENTS_BANNERS_BANNERS_EDIT'); } } PKc��\gu���1components/com_banners/views/client/tmpl/edit.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('behavior.formvalidator'); JHtml::_('formbehavior.chosen', 'select'); JFactory::getDocument()->addScriptDeclaration( ' Joomla.submitbutton = function(task) { if (task == "client.cancel" || document.formvalidator.isValid(document.getElementById("client-form"))) { Joomla.submitform(task, document.getElementById("client-form")); } };' ); ?> <form action="<?php echo JRoute::_('index.php?option=com_banners&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="client-form" class="form-validate"> <?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?> <div class="form-horizontal"> <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'general')); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'general', empty($this->item->id) ? JText::_('COM_BANNERS_NEW_CLIENT', true) : JText::_('COM_BANNERS_EDIT_CLIENT', true)); ?> <div class="row-fluid"> <div class="span9"> <?php echo $this->form->getControlGroup('contact'); echo $this->form->getControlGroup('email'); echo $this->form->getControlGroup('purchase_type'); echo $this->form->getControlGroup('track_impressions'); echo $this->form->getControlGroup('track_clicks'); echo $this->form->getControlGroups('extra'); ?> </div> <div class="span3"> <?php echo JLayoutHelper::render('joomla.edit.global', $this); ?> </div> </div> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'metadata', JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS', true)); ?> <?php echo $this->form->getControlGroups('metadata'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?> </div> <input type="hidden" name="task" value="" /> <?php echo JHtml::_('form.token'); ?> </form> PKc��\�>�YX X 1components/com_banners/views/client/view.html.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JLoader::register('BannersHelper', JPATH_COMPONENT . '/helpers/banners.php'); /** * View to edit a client. * * @since 1.5 */ class BannersViewClient extends JViewLegacy { protected $form; protected $item; protected $state; /** * @var JObject Object containing permissions for the item */ protected $canDo; /** * Display the view * * @param string $tpl The name of the template file to parse; automatically searches through the template paths. * * @return void */ public function display($tpl = null) { $this->form = $this->get('Form'); $this->item = $this->get('Item'); $this->state = $this->get('State'); $this->canDo = JHelperContent::getActions('com_banners'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); parent::display($tpl); } /** * Add the page title and toolbar. * * @return void * * @since 1.6 */ protected function addToolbar() { JFactory::getApplication()->input->set('hidemainmenu', true); $user = JFactory::getUser(); $isNew = ($this->item->id == 0); $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id')); $canDo = $this->canDo; JToolbarHelper::title( $isNew ? JText::_('COM_BANNERS_MANAGER_CLIENT_NEW') : JText::_('COM_BANNERS_MANAGER_CLIENT_EDIT'), 'bookmark banners-clients' ); // If not checked out, can save the item. if (!$checkedOut && ($canDo->get('core.edit') || $canDo->get('core.create'))) { JToolbarHelper::apply('client.apply'); JToolbarHelper::save('client.save'); } if (!$checkedOut && $canDo->get('core.create')) { JToolbarHelper::save2new('client.save2new'); } // If an existing item, can save to a copy. if (!$isNew && $canDo->get('core.create')) { JToolbarHelper::save2copy('client.save2copy'); } if (empty($this->item->id)) { JToolbarHelper::cancel('client.cancel'); } else { if ($this->state->params->get('save_history', 0) && $user->authorise('core.edit')) { JToolbarHelper::versions('com_banners.client', $this->item->id); } JToolbarHelper::cancel('client.cancel', 'JTOOLBAR_CLOSE'); } JToolbarHelper::divider(); JToolbarHelper::help('JHELP_COMPONENTS_BANNERS_CLIENTS_EDIT'); } } PKc��\_�ؼ� � .components/com_banners/helpers/html/banner.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; /** * Banner HTML class. * * @since 2.5 */ abstract class JHtmlBanner { /** * Display a batch widget for the client selector. * * @return string The necessary HTML for the widget. * * @since 2.5 */ public static function clients() { JHtml::_('bootstrap.tooltip'); // Create the batch selector to change the client on a selection list. $lines = array( '<label id="batch-client-lbl" for="batch-client" class="hasTooltip" title="' . JHtml::tooltipText('COM_BANNERS_BATCH_CLIENT_LABEL', 'COM_BANNERS_BATCH_CLIENT_LABEL_DESC') . '">', JText::_('COM_BANNERS_BATCH_CLIENT_LABEL'), '</label>', '<select name="batch[client_id]" id="batch-client-id">', '<option value="">' . JText::_('COM_BANNERS_BATCH_CLIENT_NOCHANGE') . '</option>', '<option value="0">' . JText::_('COM_BANNERS_NO_CLIENT') . '</option>', JHtml::_('select.options', static::clientlist(), 'value', 'text'), '</select>' ); return implode("\n", $lines); } /** * Method to get the field options. * * @return array The field option objects. * * @since 1.6 */ public static function clientlist() { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('id As value, name As text') ->from('#__banner_clients AS a') ->order('a.name'); // Get the options. $db->setQuery($query); try { $options = $db->loadObjectList(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); } return $options; } /** * Returns a pinned state on a grid * * @param integer $value The state value. * @param integer $i The row index * @param boolean $enabled An optional setting for access control on the action. * @param string $checkbox An optional prefix for checkboxes. * * @return string The Html code * * @see JHtmlJGrid::state * * @since 2.5.5 */ public static function pinned($value, $i, $enabled = true, $checkbox = 'cb') { $states = array( 1 => array( 'sticky_unpublish', 'COM_BANNERS_BANNERS_PINNED', 'COM_BANNERS_BANNERS_HTML_PIN_BANNER', 'COM_BANNERS_BANNERS_PINNED', true, 'publish', 'publish' ), 0 => array( 'sticky_publish', 'COM_BANNERS_BANNERS_UNPINNED', 'COM_BANNERS_BANNERS_HTML_UNPIN_BANNER', 'COM_BANNERS_BANNERS_UNPINNED', true, 'unpublish', 'unpublish' ), ); return JHtml::_('jgrid.state', $states, $value, $i, 'banners.', $enabled, true, $checkbox); } } PKc��\��/�^^*components/com_banners/helpers/banners.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Banners component helper. * * @since 1.6 */ class BannersHelper extends JHelperContent { /** * Configure the Linkbar. * * @param string $vName The name of the active view. * * @return void * * @since 1.6 */ public static function addSubmenu($vName) { JHtmlSidebar::addEntry( JText::_('COM_BANNERS_SUBMENU_BANNERS'), 'index.php?option=com_banners&view=banners', $vName == 'banners' ); JHtmlSidebar::addEntry( JText::_('COM_BANNERS_SUBMENU_CATEGORIES'), 'index.php?option=com_categories&extension=com_banners', $vName == 'categories' ); JHtmlSidebar::addEntry( JText::_('COM_BANNERS_SUBMENU_CLIENTS'), 'index.php?option=com_banners&view=clients', $vName == 'clients' ); JHtmlSidebar::addEntry( JText::_('COM_BANNERS_SUBMENU_TRACKS'), 'index.php?option=com_banners&view=tracks', $vName == 'tracks' ); } /** * Update / reset the banners * * @return boolean * * @since 1.6 */ public static function updateReset() { $user = JFactory::getUser(); $db = JFactory::getDbo(); $nullDate = $db->getNullDate(); $now = JFactory::getDate(); $query = $db->getQuery(true) ->select('*') ->from('#__banners') ->where($db->quote($now) . ' >= ' . $db->quote('reset')) ->where($db->quoteName('reset') . ' != ' . $db->quote($nullDate) . ' AND ' . $db->quoteName('reset') . '!=NULL') ->where('(' . $db->quoteName('checked_out') . ' = 0 OR ' . $db->quoteName('checked_out') . ' = ' . (int) $db->quote($user->id) . ')'); $db->setQuery($query); try { $rows = $db->loadObjectList(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); return false; } JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . '/tables'); foreach ($rows as $row) { $purchase_type = $row->purchase_type; if ($purchase_type < 0 && $row->cid) { $client = JTable::getInstance('Client', 'BannersTable'); $client->load($row->cid); $purchase_type = $client->purchase_type; } if ($purchase_type < 0) { $params = JComponentHelper::getParams('com_banners'); $purchase_type = $params->get('purchase_type'); } switch ($purchase_type) { case 1: $reset = $nullDate; break; case 2: $date = JFactory::getDate('+1 year ' . date('Y-m-d', strtotime('now'))); $reset = $db->quote($date->toSql()); break; case 3: $date = JFactory::getDate('+1 month ' . date('Y-m-d', strtotime('now'))); $reset = $db->quote($date->toSql()); break; case 4: $date = JFactory::getDate('+7 day ' . date('Y-m-d', strtotime('now'))); $reset = $db->quote($date->toSql()); break; case 5: $date = JFactory::getDate('+1 day ' . date('Y-m-d', strtotime('now'))); $reset = $db->quote($date->toSql()); break; } // Update the row ordering field. $query->clear() ->update($db->quoteName('#__banners')) ->set($db->quoteName('reset') . ' = ' . $db->quote($reset)) ->set($db->quoteName('impmade') . ' = ' . $db->quote(0)) ->set($db->quoteName('clicks') . ' = ' . $db->quote(0)) ->where($db->quoteName('id') . ' = ' . $db->quote($row->id)); $db->setQuery($query); try { $db->execute(); } catch (RuntimeException $e) { JError::raiseWarning(500, $db->getMessage()); return false; } } return true; } /** * Get client list in text/value format for a select field * * @return array */ public static function getClientOptions() { $options = array(); $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('id As value, name As text') ->from('#__banner_clients AS a') ->where('a.state = 1') ->order('a.name'); // Get the options. $db->setQuery($query); try { $options = $db->loadObjectList(); } catch (RuntimeException $e) { JError::raiseWarning(500, $e->getMessage()); } // Merge any additional options in the XML definition. // $options = array_merge(parent::getOptions(), $options); array_unshift($options, JHtml::_('select.option', '0', JText::_('COM_BANNERS_NO_CLIENT'))); return $options; } } PKc��\%m�D.D.(components/com_banners/models/banner.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Banner model. * * @since 1.6 */ class BannersModelBanner extends JModelAdmin { /** * @var string The prefix to use with controller messages. * @since 1.6 */ protected $text_prefix = 'COM_BANNERS_BANNER'; /** * The type alias for this content type. * * @var string * @since 3.2 */ public $typeAlias = 'com_banners.banner'; /** * Batch copy/move command. If set to false, * the batch copy/move command is not supported * * @var string */ protected $batch_copymove = 'category_id'; /** * Allowed batch commands * * @var array */ protected $batch_commands = array( 'client_id' => 'batchClient', 'language_id' => 'batchLanguage' ); /** * Batch client changes for a group of banners. * * @param string $value The new value matching a client. * @param array $pks An array of row IDs. * @param array $contexts An array of item contexts. * * @return boolean True if successful, false otherwise and internal error is set. * * @since 2.5 */ protected function batchClient($value, $pks, $contexts) { // Set the variables $user = JFactory::getUser(); $table = $this->getTable(); foreach ($pks as $pk) { if ($user->authorise('core.edit', $contexts[$pk])) { $table->reset(); $table->load($pk); $table->cid = (int) $value; if (!$table->store()) { $this->setError($table->getError()); return false; } } else { $this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT')); return false; } } // Clean the cache $this->cleanCache(); return true; } /** * Batch copy items to a new category or current. * * @param integer $value The new category. * @param array $pks An array of row IDs. * @param array $contexts An array of item contexts. * * @return mixed An array of new IDs on success, boolean false on failure. * * @since 2.5 */ protected function batchCopy($value, $pks, $contexts) { $categoryId = (int) $value; $table = $this->getTable(); $newIds = array(); // Check that the category exists if ($categoryId) { $categoryTable = JTable::getInstance('Category'); if (!$categoryTable->load($categoryId)) { if ($error = $categoryTable->getError()) { // Fatal error $this->setError($error); return false; } else { $this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_MOVE_CATEGORY_NOT_FOUND')); return false; } } } if (empty($categoryId)) { $this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_MOVE_CATEGORY_NOT_FOUND')); return false; } // Check that the user has create permission for the component $user = JFactory::getUser(); if (!$user->authorise('core.create', 'com_banners.category.' . $categoryId)) { $this->setError(JText::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_CREATE')); return false; } // Parent exists so we let's proceed while (!empty($pks)) { // Pop the first ID off the stack $pk = array_shift($pks); $table->reset(); // Check that the row actually exists if (!$table->load($pk)) { if ($error = $table->getError()) { // Fatal error $this->setError($error); return false; } else { // Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } } // Alter the title & alias $data = $this->generateNewTitle($categoryId, $table->alias, $table->name); $table->name = $data['0']; $table->alias = $data['1']; // Reset the ID because we are making a copy $table->id = 0; // New category ID $table->catid = $categoryId; // Unpublish because we are making a copy $table->state = 0; // TODO: Deal with ordering? // $table->ordering = 1; // Check the row. if (!$table->check()) { $this->setError($table->getError()); return false; } // Store the row. if (!$table->store()) { $this->setError($table->getError()); return false; } // Get the new item ID $newId = $table->get('id'); // Add the new ID to the array $newIds[$pk] = $newId; } // Clean the cache $this->cleanCache(); return $newIds; } /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to delete the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canDelete($record) { if (!empty($record->id)) { if ($record->state != -2) { return; } $user = JFactory::getUser(); if (!empty($record->catid)) { return $user->authorise('core.delete', 'com_banners.category.' . (int) $record->catid); } else { return parent::canDelete($record); } } } /** * Method to test whether a record can have its state changed. * * @param object $record A record object. * * @return boolean True if allowed to change the state of the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canEditState($record) { $user = JFactory::getUser(); // Check against the category. if (!empty($record->catid)) { return $user->authorise('core.edit.state', 'com_banners.category.' . (int) $record->catid); } // Default to component settings if category not known. else { return parent::canEditState($record); } } /** * Returns a JTable object, always creating it. * * @param string $type The table type to instantiate. [optional] * @param string $prefix A prefix for the table class name. [optional] * @param array $config Configuration array for model. [optional] * * @return JTable A database object * * @since 1.6 */ public function getTable($type = 'Banner', $prefix = 'BannersTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Method to get the record form. * * @param array $data Data for the form. [optional] * @param boolean $loadData True if the form is to load its own data (default case), false if not. [optional] * * @return mixed A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_banners.banner', 'banner', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } // Determine correct permissions to check. if ($this->getState('banner.id')) { // Existing record. Can only edit in selected categories. $form->setFieldAttribute('catid', 'action', 'core.edit'); } else { // New record. Can only create in selected categories. $form->setFieldAttribute('catid', 'action', 'core.create'); } // Modify the form based on access controls. if (!$this->canEditState((object) $data)) { // Disable fields for display. $form->setFieldAttribute('ordering', 'disabled', 'true'); $form->setFieldAttribute('publish_up', 'disabled', 'true'); $form->setFieldAttribute('publish_down', 'disabled', 'true'); $form->setFieldAttribute('state', 'disabled', 'true'); $form->setFieldAttribute('sticky', 'disabled', 'true'); // Disable fields while saving. // The controller has already verified this is a record you can edit. $form->setFieldAttribute('ordering', 'filter', 'unset'); $form->setFieldAttribute('publish_up', 'filter', 'unset'); $form->setFieldAttribute('publish_down', 'filter', 'unset'); $form->setFieldAttribute('state', 'filter', 'unset'); $form->setFieldAttribute('sticky', 'filter', 'unset'); } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $app = JFactory::getApplication(); $data = $app->getUserState('com_banners.edit.banner.data', array()); if (empty($data)) { $data = $this->getItem(); // Prime some default values. if ($this->getState('banner.id') == 0) { $filters = (array) $app->getUserState('com_banners.banners.filter'); $filterCatId = isset($filters['category_id']) ? $filters['category_id'] : null; $data->set('catid', $app->input->getInt('catid', $filterCatId)); } } $this->preprocessData('com_banners.banner', $data); return $data; } /** * Method to stick records. * * @param array &$pks The ids of the items to publish. * @param integer $value The value of the published state * * @return boolean True on success. * * @since 1.6 */ public function stick(&$pks, $value = 1) { $user = JFactory::getUser(); $table = $this->getTable(); $pks = (array) $pks; // Access checks. foreach ($pks as $i => $pk) { if ($table->load($pk)) { if (!$this->canEditState($table)) { // Prune items that you can't change. unset($pks[$i]); JError::raiseWarning(403, JText::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED')); } } } // Attempt to change the state of the records. if (!$table->stick($pks, $value, $user->get('id'))) { $this->setError($table->getError()); return false; } return true; } /** * A protected method to get a set of ordering conditions. * * @param JTable $table A record object. * * @return array An array of conditions to add to add to ordering queries. * * @since 1.6 */ protected function getReorderConditions($table) { $condition = array(); $condition[] = 'catid = ' . (int) $table->catid; $condition[] = 'state >= 0'; return $condition; } /** * Prepare and sanitise the table prior to saving. * * @param JTable $table A JTable object. * * @return void * * @since 1.6 */ protected function prepareTable($table) { $date = JFactory::getDate(); $user = JFactory::getUser(); if (empty($table->id)) { // Set the values $table->created = $date->toSql(); $table->created_by = $user->id; // Set ordering to the last item if not set if (empty($table->ordering)) { $db = $this->getDbo(); $query = $db->getQuery(true) ->select('MAX(ordering)') ->from('#__banners'); $db->setQuery($query); $max = $db->loadResult(); $table->ordering = $max + 1; } } else { // Set the values $table->modified = $date->toSql(); $table->modified_by = $user->get('id'); } // Increment the content version number. $table->version++; } /** * Method to save the form data. * * @param array $data The form data. * * @return boolean True on success. * * @since 1.6 */ public function save($data) { $input = JFactory::getApplication()->input; // Alter the name for save as copy if ($input->get('task') == 'save2copy') { $origTable = clone $this->getTable(); $origTable->load($input->getInt('id')); if ($data['name'] == $origTable->name) { list($name, $alias) = $this->generateNewTitle($data['catid'], $data['alias'], $data['name']); $data['name'] = $name; $data['alias'] = $alias; } else { if ($data['alias'] == $origTable->alias) { $data['alias'] = ''; } } $data['state'] = 0; } if (parent::save($data)) { return true; } return false; } } PKc��\��-TT1components/com_banners/models/fields/imptotal.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; /** * Impressions Field class for the Joomla Framework. * * @since 1.6 */ class JFormFieldImpTotal extends JFormField { /** * The form field type. * * @var string * @since 1.6 */ protected $type = 'ImpTotal'; /** * Method to get the field input markup. * * @return string The field input markup. * * @since 1.6 */ protected function getInput() { $class = ' class="validate-numeric text_area"'; $onchange = ' onchange="document.getElementById(\'' . $this->id . '_unlimited\').checked=document.getElementById(\'' . $this->id . '\').value==\'\';"'; $onclick = ' onclick="if (document.getElementById(\'' . $this->id . '_unlimited\').checked) document.getElementById(\'' . $this->id . '\').value=\'\';"'; $value = empty($this->value) ? '' : $this->value; $checked = empty($this->value) ? ' checked="checked"' : ''; return '<input type="text" name="' . $this->name . '" id="' . $this->id . '" size="9" value="' . htmlspecialchars($value, ENT_COMPAT, 'UTF-8') . '" ' . $class . $onchange . ' />' . '<fieldset class="checkboxes impunlimited"><input id="' . $this->id . '_unlimited" type="checkbox"' . $checked . $onclick . ' />' . '<label for="' . $this->id . '_unlimited" id="jform-imp" type="text">' . JText::_('COM_BANNERS_UNLIMITED') . '</label></fieldset>'; } } PKc��\��11/components/com_banners/models/fields/clicks.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; /** * Clicks Field class for the Joomla Framework. * * @since 1.6 */ class JFormFieldClicks extends JFormField { /** * The form field type. * * @var string * @since 1.6 */ protected $type = 'Clicks'; /** * Method to get the field input markup. * * @return string The field input markup. * * @since 1.6 */ protected function getInput() { $onclick = ' onclick="document.getElementById(\'' . $this->id . '\').value=\'0\';"'; return '<input class="input-small" type="text" name="' . $this->name . '" id="' . $this->id . '" value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '" readonly="readonly" /> <a class="btn" ' . $onclick . '>' . '<span class="icon-refresh"></span> ' . JText::_('COM_BANNERS_RESET_CLICKS') . '</a>'; } } PKc��\8�440components/com_banners/models/fields/impmade.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; /** * Clicks Field class for the Joomla Framework. * * @since 1.6 */ class JFormFieldImpMade extends JFormField { /** * The form field type. * * @var string * @since 1.6 */ protected $type = 'ImpMade'; /** * Method to get the field input markup. * * @return string The field input markup. * * @since 1.6 */ protected function getInput() { $onclick = ' onclick="document.getElementById(\'' . $this->id . '\').value=\'0\';"'; return '<input class="input-small" type="text" name="' . $this->name . '" id="' . $this->id . '" value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '" readonly="readonly" /> <a class="btn" ' . $onclick . '>' . '<span class="icon-refresh"></span> ' . JText::_('COM_BANNERS_RESET_IMPMADE') . '</a>'; } } PKc��\�`!ll5components/com_banners/models/fields/bannerclient.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('JPATH_BASE') or die; JFormHelper::loadFieldClass('list'); require_once __DIR__ . '/../../helpers/banners.php'; /** * Bannerclient Field class for the Joomla Framework. * * @since 1.6 */ class JFormFieldBannerClient extends JFormFieldList { /** * The form field type. * * @var string * @since 1.6 */ protected $type = 'BannerClient'; /** * Method to get the field options. * * @return array The field option objects. * * @since 1.6 */ public function getOptions() { $options = BannersHelper::getClientOptions(); return array_merge(parent::getOptions(), $options); } } PKc��\6<�� � 6components/com_banners/models/forms/filter_clients.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fields name="filter"> <field name="search" type="text" label="COM_BANNERS_SEARCH_IN_TITLE" description="COM_BANNERS_SEARCH_IN_TITLE" hint="JSEARCH_FILTER" class="js-stools-search-string" /> <field name="state" type="status" label="JOPTION_SELECT_PUBLISHED" description="JOPTION_SELECT_PUBLISHED_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_PUBLISHED</option> </field> <field name="purchase_type" type="list" label="COM_BANNERS_FILTER_PURCHASETYPE_LABEL" description="COM_BANNERS_FIELD_PURCHASETYPE_DESC" default="0" onchange="this.form.submit();" > <option value="">COM_BANNERS_SELECT_TYPE</option> <option value="1">COM_BANNERS_FIELD_VALUE_1</option> <option value="2">COM_BANNERS_FIELD_VALUE_2</option> <option value="3">COM_BANNERS_FIELD_VALUE_3</option> <option value="4">COM_BANNERS_FIELD_VALUE_4</option> <option value="5">COM_BANNERS_FIELD_VALUE_5</option> </field> </fields> <fields name="list"> <field name="fullordering" type="list" label="JGLOBAL_SORT_BY" statuses="*,0,1,2,-2" description="JGLOBAL_SORT_BY" onchange="this.form.submit();" default="a.name ASC" > <option value="">JGLOBAL_SORT_BY</option> <option value="a.state ASC">JSTATUS_ASC</option> <option value="a.state DESC">JSTATUS_DESC</option> <option value="a.name ASC">COM_BANNERS_HEADING_NAME_ASC</option> <option value="a.name DESC">COM_BANNERS_HEADING_NAME_DESC</option> <option value="contact ASC">COM_BANNERS_HEADING_CONTACT_ASC</option> <option value="contact DESC">COM_BANNERS_HEADING_CONTACT_DESC</option> <option value="client_name ASC">COM_BANNERS_HEADING_CLIENT_ASC</option> <option value="client_name DESC">COM_BANNERS_HEADING_CLIENT_DESC</option> <option value="nbanners ASC">COM_BANNERS_HEADING_BANNERS_ASC</option> <option value="nbanners DESC">COM_BANNERS_HEADING_BANNERS_DESC</option> <option value="purchase_type ASC">COM_BANNERS_HEADING_PURCHASETYPE_ASC</option> <option value="purchase_type DESC">COM_BANNERS_HEADING_PURCHASETYPE_DESC</option> <option value="a.id ASC">JGRID_HEADING_ID_ASC</option> <option value="a.id DESC">JGRID_HEADING_ID_DESC</option> </field> <field name="limit" type="limitbox" class="input-mini" default="25" label="COM_BANNERS_LIST_LIMIT" description="COM_BANNERS_LIST_LIMIT_DESC" onchange="this.form.submit();" /> </fields> </form> PKc��\�6���.components/com_banners/models/forms/banner.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset name="details" addfieldpath="/administrator/components/com_banners/models/fields"> <field name="id" type="text" default="0" readonly="true" class="readonly" label="JGLOBAL_FIELD_ID_LABEL" description="JGLOBAL_FIELD_ID_DESC" /> <field name="name" type="text" class="input-xxlarge input-large-text" size="40" label="COM_BANNERS_FIELD_NAME_LABEL" description="COM_BANNERS_FIELD_NAME_DESC" required="true" /> <field name="alias" type="text" size="40" label="JFIELD_ALIAS_LABEL" description="COM_BANNERS_FIELD_ALIAS_DESC" hint="JFIELD_ALIAS_PLACEHOLDER" /> <field name="catid" type="categoryedit" extension="com_banners" label="JCATEGORY" description="COM_BANNERS_FIELD_CATEGORY_DESC" required="true" addfieldpath="/administrator/components/com_categories/models/fields" /> <field name="state" type="list" label="JSTATUS" description="COM_BANNERS_FIELD_STATE_DESC" class="chzn-color-state" size="1" default="1"> <option value="1">JPUBLISHED</option> <option value="0">JUNPUBLISHED</option> <option value="2">JARCHIVED</option> <option value="-2">JTRASHED</option> </field> <field name="ordering" type="ordering" label="JFIELD_ORDERING_LABEL" description="JFIELD_ORDERING_DESC" table="#__banners" /> <field name="language" type="contentlanguage" label="JFIELD_LANGUAGE_LABEL" description="COM_BANNERS_FIELD_LANGUAGE_DESC"> <option value="*">JALL</option> </field> <field name="version_note" type="text" label="JGLOBAL_FIELD_VERSION_NOTE_LABEL" description="JGLOBAL_FIELD_VERSION_NOTE_DESC" maxlength="255" class="span12" size="45" labelclass="control-label" /> <field name="description" type="textarea" rows="3" cols="30" label="JGLOBAL_DESCRIPTION" description="COM_BANNERS_FIELD_DESCRIPTION_DESC" /> <field name="type" type="list" label="COM_BANNERS_FIELD_TYPE_LABEL" description="COM_BANNERS_FIELD_TYPE_DESC" default="0"> <option value="0">COM_BANNERS_FIELD_VALUE_IMAGE </option> <option value="1">COM_BANNERS_FIELD_VALUE_CUSTOM </option> </field> <field name="custombannercode" type="textarea" rows="3" cols="30" filter="raw" label="COM_BANNERS_FIELD_CUSTOMCODE_LABEL" description="COM_BANNERS_FIELD_CUSTOMCODE_DESC" /> <field name="clickurl" type="url" filter="url" label="COM_BANNERS_FIELD_CLICKURL_LABEL" description="COM_BANNERS_FIELD_CLICKURL_DESC" /> </fieldset> <fieldset name="publish" label="COM_BANNERS_GROUP_LABEL_PUBLISHING_DETAILS"> <field name="created" type="calendar" label="COM_BANNERS_FIELD_CREATED_LABEL" description="COM_BANNERS_FIELD_CREATED_DESC" size="22" format="%Y-%m-%d %H:%M:%S" filter="user_utc" /> <field name="created_by" type="user" label="COM_BANNERS_FIELD_CREATED_BY_LABEL" description="COM_BANNERS_FIELD_CREATED_BY_DESC" /> <field name="created_by_alias" type="text" label="COM_BANNERS_FIELD_CREATED_BY_ALIAS_LABEL" description="COM_BANNERS_FIELD_CREATED_BY_ALIAS_DESC" size="20" /> <field name="modified" type="calendar" class="readonly" label="JGLOBAL_FIELD_MODIFIED_LABEL" description="COM_BANNERS_FIELD_MODIFIED_DESC" size="22" readonly="true" format="%Y-%m-%d %H:%M:%S" filter="user_utc" /> <field name="modified_by" type="user" label="JGLOBAL_FIELD_MODIFIED_BY_LABEL" class="readonly" readonly="true" filter="unset" /> <field name="version" type="text" class="readonly" label="COM_BANNERS_FIELD_VERSION_LABEL" size="6" description="COM_BANNERS_FIELD_VERSION_DESC" readonly="true" filter="unset" /> <field name="publish_up" type="calendar" label="COM_BANNERS_FIELD_PUBLISH_UP_LABEL" description="COM_BANNERS_FIELD_PUBLISH_UP_DESC" format="%Y-%m-%d %H:%M:%S" size="22" filter="user_utc" /> <field name="publish_down" type="calendar" label="COM_BANNERS_FIELD_PUBLISH_DOWN_LABEL" description="COM_BANNERS_FIELD_PUBLISH_DOWN_DESC" format="%Y-%m-%d %H:%M:%S" size="22" filter="user_utc" /> </fieldset> <fieldset name="bannerdetails" label="COM_BANNERS_GROUP_LABEL_BANNER_DETAILS"> <field name="sticky" type="radio" default="0" label="COM_BANNERS_FIELD_STICKY_LABEL" description="COM_BANNERS_FIELD_STICKY_DESC" class="btn-group btn-group-yesno"> <option value="1">JYES</option> <option value="0">JNO</option> </field> </fieldset> <fieldset name="otherparams"> <field name="imptotal" type="imptotal" default="0" label="COM_BANNERS_FIELD_IMPTOTAL_LABEL" description="COM_BANNERS_FIELD_IMPTOTAL_DESC" /> <field name="impmade" type="impmade" default="0" label="COM_BANNERS_FIELD_IMPMADE_LABEL" description="COM_BANNERS_FIELD_IMPMADE_DESC" /> <field name="clicks" type="clicks" default="0" label="COM_BANNERS_FIELD_CLICKS_LABEL" description="COM_BANNERS_FIELD_CLICKS_DESC" /> <field name="cid" type="bannerclient" label="COM_BANNERS_FIELD_CLIENT_LABEL" description="COM_BANNERS_FIELD_CLIENT_DESC" /> <field name="purchase_type" type="list" label="COM_BANNERS_FIELD_PURCHASETYPE_LABEL" description="COM_BANNERS_FIELD_PURCHASETYPE_DESC" default="0"> <option value="-1">COM_BANNERS_FIELD_VALUE_USECLIENTDEFAULT </option> <option value="1">COM_BANNERS_FIELD_VALUE_1 </option> <option value="2">COM_BANNERS_FIELD_VALUE_2 </option> <option value="3">COM_BANNERS_FIELD_VALUE_3 </option> <option value="4">COM_BANNERS_FIELD_VALUE_4 </option> <option value="5">COM_BANNERS_FIELD_VALUE_5 </option> </field> <field name="track_impressions" type="list" default="0" label="COM_BANNERS_FIELD_TRACKIMPRESSION_LABEL" description="COM_BANNERS_FIELD_TRACKIMPRESSION_DESC"> <option value="-1">COM_BANNERS_FIELD_VALUE_USECLIENTDEFAULT </option> <option value="0">JNO</option> <option value="1">JYES</option> </field> <field name="track_clicks" type="list" default="0" label="COM_BANNERS_FIELD_TRACKCLICK_LABEL" description="COM_BANNERS_FIELD_TRACKCLICK_DESC"> <option value="-1">COM_BANNERS_FIELD_VALUE_USECLIENTDEFAULT </option> <option value="0">JNO</option> <option value="1">JYES</option> </field> </fieldset> <fieldset name="metadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS"> <field name="metakey" type="textarea" rows="3" cols="30" label="JFIELD_META_KEYWORDS_LABEL" description="COM_BANNERS_FIELD_METAKEYWORDS_DESC" /> <field name="own_prefix" type="radio" class="btn-group btn-group-yesno" label="COM_BANNERS_FIELD_BANNEROWNPREFIX_LABEL" description="COM_BANNERS_FIELD_BANNEROWNPREFIX_DESC" default="0"> <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="metakey_prefix" type="text" label="COM_BANNERS_FIELD_METAKEYWORDPREFIX_LABEL" description="COM_BANNERS_FIELD_METAKEYWORDPREFIX_DESC" /> </fieldset> <fields name="params" label="JGLOBAL_FIELDSET_DISPLAY_OPTIONS"> <fieldset name="image"> <field name="imageurl" type="media" directory="banners" hide_none="1" label="COM_BANNERS_FIELD_IMAGE_LABEL" size="40" description="COM_BANNERS_FIELD_IMAGE_DESC" /> <field name="width" type="text" class="input-mini validate-numeric" label="COM_BANNERS_FIELD_WIDTH_LABEL" description="COM_BANNERS_FIELD_WIDTH_DESC" /> <field name="height" type="text" class="input-mini validate-numeric" label="COM_BANNERS_FIELD_HEIGHT_LABEL" description="COM_BANNERS_FIELD_HEIGHT_DESC" /> <field name="alt" type="text" label="COM_BANNERS_FIELD_ALT_LABEL" description="COM_BANNERS_FIELD_ALT_DESC" /> </fieldset> </fields> <fieldset name="custom"> <field name="bannercode" type="textarea" rows="3" cols="30" filter="raw" label="COM_BANNERS_FIELD_CUSTOMCODE_LABEL" description="COM_BANNERS_FIELD_CUSTOMCODE_DESC" /> </fieldset> </form> PKc��\S�!���0components/com_banners/models/forms/download.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset name="details"> <field name="compressed" type="radio" class="btn-group btn-group-yesno" label="COM_BANNERS_FIELD_COMPRESSED_LABEL" description="COM_BANNERS_FIELD_COMPRESSED_DESC" default="0" > <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="basename" type="text" size="40" label="COM_BANNERS_FIELD_BASENAME_LABEL" description="COM_BANNERS_FIELD_BASENAME_DESC" /> </fieldset> </form> PKc��\�Qc�GG6components/com_banners/models/forms/filter_banners.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fields name="filter"> <field name="search" type="text" label="COM_BANNERS_SEARCH_IN_TITLE" description="COM_BANNERS_SEARCH_IN_TITLE" hint="JSEARCH_FILTER" class="js-stools-search-string" /> <field name="state" type="status" label="JOPTION_SELECT_PUBLISHED" description="JOPTION_SELECT_PUBLISHED_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_PUBLISHED</option> </field> <field name="category_id" type="category" label="JOPTION_FILTER_CATEGORY" extension="com_banners" description="JOPTION_FILTER_CATEGORY_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_CATEGORY</option> </field> <field name="language" type="contentlanguage" label="JOPTION_FILTER_LANGUAGE" description="JOPTION_FILTER_LANGUAGE_DESC" onchange="this.form.submit();" > <option value="">JOPTION_SELECT_LANGUAGE</option> <option value="*">JALL</option> </field> <field name="client_id" type="bannerclient" label="COM_BANNERS_FILTER_CLIENT" extension="com_content" description="COM_BANNERS_FILTER_CLIENT_DESC" onchange="this.form.submit();" > <option value="">COM_BANNERS_SELECT_CLIENT</option> </field> </fields> <fields name="list"> <field name="fullordering" type="list" label="JGLOBAL_SORT_BY" statuses="*,0,1,2,-2" description="JGLOBAL_SORT_BY" onchange="this.form.submit();" default="a.name ASC" > <option value="">JGLOBAL_SORT_BY</option> <option value="ordering ASC">JGRID_HEADING_ORDERING_ASC</option> <option value="ordering DESC">JGRID_HEADING_ORDERING_DESC</option> <option value="a.state ASC">JSTATUS_ASC</option> <option value="a.state DESC">JSTATUS_DESC</option> <option value="a.name ASC">COM_BANNERS_HEADING_NAME_ASC</option> <option value="a.name DESC">COM_BANNERS_HEADING_NAME_DESC</option> <option value="a.sticky ASC">COM_BANNERS_HEADING_STICKY_ASC</option> <option value="a.sticky DESC">COM_BANNERS_HEADING_STICKY_DESC</option> <option value="client_name ASC">COM_BANNERS_HEADING_CLIENT_ASC</option> <option value="client_name DESC">COM_BANNERS_HEADING_CLIENT_DESC</option> <option value="impmade ASC">COM_BANNERS_HEADING_IMPRESSIONS_ASC</option> <option value="impmade DESC">COM_BANNERS_HEADING_IMPRESSIONS_DESC</option> <option value="clicks ASC">COM_BANNERS_HEADING_CLICKS_ASC</option> <option value="clicks DESC">COM_BANNERS_HEADING_CLICKS_DESC</option> <option value="a.language ASC">JGRID_HEADING_LANGUAGE_ASC</option> <option value="a.language DESC">JGRID_HEADING_LANGUAGE_DESC</option> <option value="a.id ASC">JGRID_HEADING_ID_ASC</option> <option value="a.id DESC">JGRID_HEADING_ID_DESC</option> </field> <field name="limit" type="limitbox" class="input-mini" default="25" label="COM_BANNERS_LIST_LIMIT" description="COM_BANNERS_LIST_LIMIT_DESC" onchange="this.form.submit();" /> </fields> </form> PKc��\����� � .components/com_banners/models/forms/client.xmlnu�[���<?xml version="1.0" encoding="utf-8"?> <form> <fieldset name="details" addfieldpath="/administrator/components/com_banners/models/fields" > <field name="id" type="text" default="0" readonly="true" class="readonly" label="JGLOBAL_FIELD_ID_LABEL" description="JGLOBAL_FIELD_ID_DESC" /> <field name="name" type="text" class="input-xxlarge input-large-text" size="40" label="COM_BANNERS_FIELD_NAME_LABEL" description="COM_BANNERS_FIELD_CLIENT_NAME_DESC" required="true" /> <field name="contact" type="text" size="40" label="COM_BANNERS_FIELD_CONTACT_LABEL" description="COM_BANNERS_FIELD_CONTACT_DESC" required="true" /> <field name="email" type="email" size="40" label="COM_BANNERS_FIELD_EMAIL_LABEL" description="COM_BANNERS_FIELD_EMAIL_DESC" validate="email" required="true" /> <field name="state" type="list" label="JSTATUS" description="COM_BANNERS_FIELD_CLIENT_STATE_DESC" class="chzn-color-state" size="1" default="1" > <option value="1">JPUBLISHED</option> <option value="0">JUNPUBLISHED</option> <option value="2">JARCHIVED</option> <option value="-2">JTRASHED</option> </field> <field name="version_note" type="text" label="JGLOBAL_FIELD_VERSION_NOTE_LABEL" description="JGLOBAL_FIELD_VERSION_NOTE_DESC" maxlength="255" size="45" labelclass="control-label" /> <field name="purchase_type" type="list" label="COM_BANNERS_FIELD_PURCHASETYPE_LABEL" description="COM_BANNERS_FIELD_PURCHASETYPE_DESC" default="0" > <option value="-1">JGLOBAL_USE_GLOBAL </option> <option value="1">COM_BANNERS_FIELD_VALUE_1 </option> <option value="2">COM_BANNERS_FIELD_VALUE_2 </option> <option value="3">COM_BANNERS_FIELD_VALUE_3 </option> <option value="4">COM_BANNERS_FIELD_VALUE_4 </option> <option value="5">COM_BANNERS_FIELD_VALUE_5 </option> </field> <field name="track_impressions" type="list" default="0" class="chzn-color" label="COM_BANNERS_FIELD_TRACKIMPRESSION_LABEL" description="COM_BANNERS_FIELD_TRACKIMPRESSION_DESC" > <option value="-1">JGLOBAL_USE_GLOBAL</option> <option value="0">JNO</option> <option value="1">JYES</option> </field> <field name="track_clicks" type="list" default="0" class="chzn-color" label="COM_BANNERS_FIELD_TRACKCLICK_LABEL" description="COM_BANNERS_FIELD_TRACKCLICK_DESC" > <option value="-1">JGLOBAL_USE_GLOBAL</option> <option value="0">JNO</option> <option value="1">JYES</option> </field> </fieldset> <fieldset name="metadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS" > <field name="metakey" type="textarea" rows="3" cols="30" label="JFIELD_META_KEYWORDS_LABEL" description="COM_BANNERS_FIELD_CLIENT_METAKEYWORDS_DESC" /> <field name="own_prefix" type="radio" class="btn-group btn-group-yesno" label="COM_BANNERS_FIELD_CLIENTOWNPREFIX_LABEL" description="COM_BANNERS_FIELD_CLIENTOWNPREFIX_DESC" default="0" > <option value="1">JYES</option> <option value="0">JNO</option> </field> <field name="metakey_prefix" type="text" label="COM_BANNERS_FIELD_CLIENT_METAKEYWORDPREFIX_LABEL" description="COM_BANNERS_FIELD_CLIENT_METAKEYWORDPREFIX_DESC" /> </fieldset> <fieldset name="extra" label="COM_BANNERS_EXTRA"> <field name="extrainfo" type="textarea" class="span12" rows="5" cols="80" label="COM_BANNERS_FIELD_EXTRAINFO_LABEL" description="COM_BANNERS_FIELD_EXTRAINFO_DESC" /> </fieldset> </form> PKc��\�y�f��)components/com_banners/models/banners.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Methods supporting a list of banner records. * * @since 1.6 */ class BannersModelBanners extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'cid', 'a.cid', 'client_name', 'name', 'a.name', 'alias', 'a.alias', 'state', 'a.state', 'ordering', 'a.ordering', 'language', 'a.language', 'catid', 'a.catid', 'category_title', 'checked_out', 'a.checked_out', 'checked_out_time', 'a.checked_out_time', 'created', 'a.created', 'impmade', 'a.impmade', 'imptotal', 'a.imptotal', 'clicks', 'a.clicks', 'publish_up', 'a.publish_up', 'publish_down', 'a.publish_down', 'state', 'sticky', 'a.sticky', 'client_id', 'category_id', 'published' ); } parent::__construct($config); } /** * Method to get the maximum ordering value for each category. * * @return array * * @since 1.6 */ public function &getCategoryOrders() { if (!isset($this->cache['categoryorders'])) { $db = $this->getDbo(); $query = $db->getQuery(true) ->select('MAX(ordering) as ' . $db->quoteName('max') . ', catid') ->select('catid') ->from('#__banners') ->group('catid'); $db->setQuery($query); $this->cache['categoryorders'] = $db->loadAssocList('catid', 0); } return $this->cache['categoryorders']; } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery * * @since 1.6 */ protected function getListQuery() { $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.id AS id,' . 'a.name AS name,' . 'a.alias AS alias,' . 'a.checked_out AS checked_out,' . 'a.checked_out_time AS checked_out_time,' . 'a.catid AS catid,' . 'a.clicks AS clicks,' . 'a.metakey AS metakey,' . 'a.sticky AS sticky,' . 'a.impmade AS impmade,' . 'a.imptotal AS imptotal,' . 'a.state AS state,' . 'a.ordering AS ordering,' . 'a.purchase_type AS purchase_type,' . 'a.language,' . 'a.publish_up,' . 'a.publish_down' ) ); $query->from($db->quoteName('#__banners') . ' AS a'); // Join over the language $query->select('l.title AS language_title') ->join('LEFT', $db->quoteName('#__languages') . ' AS l ON l.lang_code = a.language'); // Join over the users for the checked out user. $query->select('uc.name AS editor') ->join('LEFT', '#__users AS uc ON uc.id=a.checked_out'); // Join over the categories. $query->select('c.title AS category_title') ->join('LEFT', '#__categories AS c ON c.id = a.catid'); // Join over the clients. $query->select('cl.name AS client_name,cl.purchase_type as client_purchase_type') ->join('LEFT', '#__banner_clients AS cl ON cl.id = a.cid'); // Filter by published state $published = $this->getState('filter.state'); if (is_numeric($published)) { $query->where('a.state = ' . (int) $published); } elseif ($published === '') { $query->where('(a.state IN (0, 1))'); } // Filter by category. $categoryId = $this->getState('filter.category_id'); if (is_numeric($categoryId)) { $query->where('a.catid = ' . (int) $categoryId); } // Filter by client. $clientId = $this->getState('filter.client_id'); if (is_numeric($clientId)) { $query->where('a.cid = ' . (int) $clientId); } // Filter by search in title $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } else { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('(a.name LIKE ' . $search . ' OR a.alias LIKE ' . $search . ')'); } } // Filter on the language. if ($language = $this->getState('filter.language')) { $query->where('a.language = ' . $db->quote($language)); } // Add the list ordering clause. $orderCol = $this->state->get('list.ordering', 'ordering'); $orderDirn = $this->state->get('list.direction', 'ASC'); if ($orderCol == 'ordering' || $orderCol == 'category_title') { $orderCol = 'c.title ' . $orderDirn . ', a.ordering'; } if ($orderCol == 'client_name') { $orderCol = 'cl.name'; } $query->order($db->escape($orderCol . ' ' . $orderDirn)); return $query; } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. * * @since 1.6 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.access'); $id .= ':' . $this->getState('filter.state'); $id .= ':' . $this->getState('filter.category_id'); $id .= ':' . $this->getState('filter.language'); return parent::getStoreId($id); } /** * Returns a reference to the a Table object, always creating it. * * @param string $type The table type to instantiate * @param string $prefix A prefix for the table class name. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A database object * * @since 1.6 */ public function getTable($type = 'Banner', $prefix = 'BannersTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $state = $this->getUserStateFromRequest($this->context . '.filter.state', 'filter_state', '', 'string'); $this->setState('filter.state', $state); $categoryId = $this->getUserStateFromRequest($this->context . '.filter.category_id', 'filter_category_id', ''); $this->setState('filter.category_id', $categoryId); $clientId = $this->getUserStateFromRequest($this->context . '.filter.client_id', 'filter_client_id', ''); $this->setState('filter.client_id', $clientId); $language = $this->getUserStateFromRequest($this->context . '.filter.language', 'filter_language', ''); $this->setState('filter.language', $language); // Load the parameters. $params = JComponentHelper::getParams('com_banners'); $this->setState('params', $params); // List state information. parent::populateState('a.name', 'asc'); } } PKc��\pLA�)components/com_banners/models/clients.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Methods supporting a list of banner records. * * @since 1.6 */ class BannersModelClients extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'id', 'a.id', 'name', 'a.name', 'contact', 'a.contact', 'state', 'a.state', 'checked_out', 'a.checked_out', 'checked_out_time', 'a.checked_out_time', 'nbanners', 'purchase_type' ); } parent::__construct($config); } /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { // Load the filter state. $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); $this->setState('filter.search', $search); $state = $this->getUserStateFromRequest($this->context . '.filter.state', 'filter_state', '', 'string'); $this->setState('filter.state', $state); // Load the parameters. $params = JComponentHelper::getParams('com_banners'); $this->setState('params', $params); // List state information. parent::populateState('a.name', 'asc'); } /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.access'); $id .= ':' . $this->getState('filter.state'); return parent::getStoreId($id); } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery */ protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); $params = JComponentHelper::getParams('com_banners'); $defaultPurchase = $params->get('purchase_type', 3); // Select the required fields from the table. $query->select( $this->getState( 'list.select', 'a.id AS id,' . 'a.name AS name,' . 'a.contact AS contact,' . 'a.checked_out AS checked_out,' . 'a.checked_out_time AS checked_out_time, ' . 'a.state AS state,' . 'a.metakey AS metakey,' . 'a.purchase_type as purchase_type' ) ); $query->from($db->quoteName('#__banner_clients') . ' AS a'); // Join over the banners for counting $query->select('COUNT(b.id) as nbanners') ->join('LEFT', '#__banners AS b ON a.id = b.cid'); // Join over the users for the checked out user. $query->select('uc.name AS editor') ->join('LEFT', '#__users AS uc ON uc.id=a.checked_out'); // Filter by published state $published = $this->getState('filter.state'); if (is_numeric($published)) { $query->where('a.state = ' . (int) $published); } elseif ($published === '') { $query->where('(a.state IN (0, 1))'); } $query->group('a.id, a.name, a.contact, a.checked_out, a.checked_out_time, a.state, a.metakey, a.purchase_type, uc.name'); // Filter by search in title $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } else { $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); $query->where('a.name LIKE ' . $search); } } // Filter by purchase type $purchaseType = $this->getState('filter.purchase_type'); if (!empty($purchaseType)) { if ($defaultPurchase == $purchaseType) { $query->where('(a.purchase_type = ' . (int) $purchaseType . ' OR a.purchase_type = -1)'); } else { $query->where('a.purchase_type = ' . (int) $purchaseType); } } $ordering = $this->getState('list.ordering', 'ordering'); if ($ordering == 'nbanners') { $ordering = 'COUNT(b.id)'; } // Add the list ordering clause. $query->order($db->escape($ordering) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } } PKc��\��@� � (components/com_banners/models/client.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Client model. * * @since 1.6 */ class BannersModelClient extends JModelAdmin { /** * The type alias for this content type. * * @var string * @since 3.2 */ public $typeAlias = 'com_banners.client'; /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to delete the record. Defaults to the permission set in the component. * * @since 1.6 */ protected function canDelete($record) { if (!empty($record->id)) { if ($record->state != -2) { return; } $user = JFactory::getUser(); if (!empty($record->catid)) { return $user->authorise('core.delete', 'com_banners.category.' . (int) $record->catid); } else { return $user->authorise('core.delete', 'com_banners'); } } } /** * Method to test whether a record can be deleted. * * @param object $record A record object. * * @return boolean True if allowed to change the state of the record. * Defaults to the permission set in the component. * * @since 1.6 */ protected function canEditState($record) { $user = JFactory::getUser(); if (!empty($record->catid)) { return $user->authorise('core.edit.state', 'com_banners.category.' . (int) $record->catid); } else { return $user->authorise('core.edit.state', 'com_banners'); } } /** * Returns a reference to the a Table object, always creating it. * * @param string $type The table type to instantiate * @param string $prefix A prefix for the table class name. Optional. * @param array $config Configuration array for model. Optional. * * @return JTable A database object * * @since 1.6 */ public function getTable($type = 'Client', $prefix = 'BannersTable', $config = array()) { return JTable::getInstance($type, $prefix, $config); } /** * Method to get the record form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return mixed A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_banners.client', 'client', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { // Check the session for previously entered form data. $data = JFactory::getApplication()->getUserState('com_banners.edit.client.data', array()); if (empty($data)) { $data = $this->getItem(); } $this->preprocessData('com_banners.client', $data); return $data; } /** * Prepare and sanitise the table prior to saving. * * @param JTable $table A JTable object. * * @return void * * @since 1.6 */ protected function prepareTable($table) { $table->name = htmlspecialchars_decode($table->name, ENT_QUOTES); } } PKc��\^;Dzz*components/com_banners/models/download.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Download model. * * @since 1.5 */ class BannersModelDownload extends JModelForm { protected $_context = 'com_banners.tracks'; /** * Auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @return void * * @since 1.6 */ protected function populateState() { $input = JFactory::getApplication()->input; $basename = $input->cookie->getString(JApplicationHelper::getHash($this->_context . '.basename'), '__SITE__'); $this->setState('basename', $basename); $compressed = $input->cookie->getInt(JApplicationHelper::getHash($this->_context . '.compressed'), 1); $this->setState('compressed', $compressed); } /** * Method to get the record form. * * @param array $data Data for the form. * @param boolean $loadData True if the form is to load its own data (default case), false if not. * * @return mixed A JForm object on success, false on failure * * @since 1.6 */ public function getForm($data = array(), $loadData = true) { // Get the form. $form = $this->loadForm('com_banners.download', 'download', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) { return false; } return $form; } /** * Method to get the data that should be injected in the form. * * @return mixed The data for the form. * * @since 1.6 */ protected function loadFormData() { $data = array( 'basename' => $this->getState('basename'), 'compressed' => $this->getState('compressed'), ); $this->preprocessData('com_banners.download', $data); return $data; } } PKc��\J��0�0(components/com_banners/models/tracks.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Methods supporting a list of tracks. * * @since 1.6 */ class BannersModelTracks extends JModelList { /** * Constructor. * * @param array $config An optional associative array of configuration settings. * * @see JController * @since 1.6 */ public function __construct($config = array()) { if (empty($config['filter_fields'])) { $config['filter_fields'] = array( 'name', 'b.name', 'cl.name', 'client_name', 'cat.title', 'category_title', 'track_type', 'a.track_type', 'count', 'a.count', 'track_date', 'a.track_date', ); } parent::__construct($config); } /** * @since 1.6 */ protected $basename; /** * Method to auto-populate the model state. * * Note. Calling getState in this method will result in recursion. * * @param string $ordering An optional ordering field. * @param string $direction An optional direction (asc|desc). * * @return void * * @since 1.6 */ protected function populateState($ordering = null, $direction = null) { // Load the filter state. $type = $this->getUserStateFromRequest($this->context . '.filter.type', 'filter_type'); $this->setState('filter.type', $type); $begin = $this->getUserStateFromRequest($this->context . '.filter.begin', 'filter_begin', '', 'string'); $this->setState('filter.begin', $begin); $end = $this->getUserStateFromRequest($this->context . '.filter.end', 'filter_end', '', 'string'); $this->setState('filter.end', $end); $categoryId = $this->getUserStateFromRequest($this->context . '.filter.category_id', 'filter_category_id', ''); $this->setState('filter.category_id', $categoryId); $clientId = $this->getUserStateFromRequest($this->context . '.filter.client_id', 'filter_client_id', ''); $this->setState('filter.client_id', $clientId); // Load the parameters. $params = JComponentHelper::getParams('com_banners'); $this->setState('params', $params); // List state information. parent::populateState('b.name', 'asc'); } /** * Build an SQL query to load the list data. * * @return JDatabaseQuery * * @since 1.6 */ protected function getListQuery() { require_once JPATH_COMPONENT . '/helpers/banners.php'; // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select( 'a.track_date as track_date,' . 'a.track_type as track_type,' . $db->quoteName('a.count') . ' as ' . $db->quoteName('count') ); $query->from($db->quoteName('#__banner_tracks') . ' AS a'); // Join with the banners $query->join('LEFT', $db->quoteName('#__banners') . ' as b ON b.id=a.banner_id') ->select('b.name as name'); // Join with the client $query->join('LEFT', $db->quoteName('#__banner_clients') . ' as cl ON cl.id=b.cid') ->select('cl.name as client_name'); // Join with the category $query->join('LEFT', $db->quoteName('#__categories') . ' as cat ON cat.id=b.catid') ->select('cat.title as category_title'); // Filter by type $type = $this->getState('filter.type'); if (!empty($type)) { $query->where('a.track_type = ' . (int) $type); } // Filter by client $clientId = $this->getState('filter.client_id'); if (is_numeric($clientId)) { $query->where('b.cid = ' . (int) $clientId); } // Filter by category $catedoryId = $this->getState('filter.category_id'); if (is_numeric($catedoryId)) { $query->where('b.catid = ' . (int) $catedoryId); } // Filter by begin date $begin = $this->getState('filter.begin'); if (!empty($begin)) { $query->where('a.track_date >= ' . $db->quote($begin)); } // Filter by end date $end = $this->getState('filter.end'); if (!empty($end)) { $query->where('a.track_date <= ' . $db->quote($end)); } // Add the list ordering clause. $orderCol = $this->getState('list.ordering', 'name'); $query->order($db->escape($orderCol) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } /** * Method to delete rows. * * @return boolean Returns true on success, false on failure. */ public function delete() { $user = JFactory::getUser(); $categoryId = $this->getState('category_id'); // Access checks. if ($categoryId) { $allow = $user->authorise('core.delete', 'com_banners.category.' . (int) $categoryId); } else { $allow = $user->authorise('core.delete', 'com_banners'); } if ($allow) { // Delete tracks from this banner $db = $this->getDbo(); $query = $db->getQuery(true) ->delete($db->quoteName('#__banner_tracks')); // Filter by type $type = $this->getState('filter.type'); if (!empty($type)) { $query->where('track_type = ' . (int) $type); } // Filter by begin date $begin = $this->getState('filter.begin'); if (!empty($begin)) { $query->where('track_date >= ' . $db->quote($begin)); } // Filter by end date $end = $this->getState('filter.end'); if (!empty($end)) { $query->where('track_date <= ' . $db->quote($end)); } $where = '1'; // Filter by client $clientId = $this->getState('filter.client_id'); if (!empty($clientId)) { $where .= ' AND cid = ' . (int) $clientId; } // Filter by category if (!empty($categoryId)) { $where .= ' AND catid = ' . (int) $categoryId; } $query->where('banner_id IN (SELECT id FROM ' . $db->quoteName('#__banners') . ' WHERE ' . $where . ')'); $db->setQuery($query); $this->setError((string) $query); try { $db->execute(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } } else { JError::raiseWarning(403, JText::_('JERROR_CORE_DELETE_NOT_PERMITTED')); } return true; } /** * Get file name * * @return string The file name * * @since 1.6 */ public function getBaseName() { if (!isset($this->basename)) { $app = JFactory::getApplication(); $basename = $this->getState('basename'); $basename = str_replace('__SITE__', $app->get('sitename'), $basename); $categoryId = $this->getState('filter.category_id'); if (is_numeric($categoryId)) { if ($categoryId > 0) { $basename = str_replace('__CATID__', $categoryId, $basename); } else { $basename = str_replace('__CATID__', '', $basename); } $categoryName = $this->getCategoryName(); $basename = str_replace('__CATNAME__', $categoryName, $basename); } else { $basename = str_replace('__CATID__', '', $basename); $basename = str_replace('__CATNAME__', '', $basename); } $clientId = $this->getState('filter.client_id'); if (is_numeric($clientId)) { if ($clientId > 0) { $basename = str_replace('__CLIENTID__', $clientId, $basename); } else { $basename = str_replace('__CLIENTID__', '', $basename); } $clientName = $this->getClientName(); $basename = str_replace('__CLIENTNAME__', $clientName, $basename); } else { $basename = str_replace('__CLIENTID__', '', $basename); $basename = str_replace('__CLIENTNAME__', '', $basename); } $type = $this->getState('filter.type'); if ($type > 0) { $basename = str_replace('__TYPE__', $type, $basename); $typeName = JText::_('COM_BANNERS_TYPE' . $type); $basename = str_replace('__TYPENAME__', $typeName, $basename); } else { $basename = str_replace('__TYPE__', '', $basename); $basename = str_replace('__TYPENAME__', '', $basename); } $begin = $this->getState('filter.begin'); if (!empty($begin)) { $basename = str_replace('__BEGIN__', $begin, $basename); } else { $basename = str_replace('__BEGIN__', '', $basename); } $end = $this->getState('filter.end'); if (!empty($end)) { $basename = str_replace('__END__', $end, $basename); } else { $basename = str_replace('__END__', '', $basename); } $this->basename = $basename; } return $this->basename; } /** * Get the category name. * * @return string The category name * * @since 1.6 */ protected function getCategoryName() { $categoryId = $this->getState('filter.category_id'); if ($categoryId) { $db = $this->getDbo(); $query = $db->getQuery(true) ->select('title') ->from($db->quoteName('#__categories')) ->where($db->quoteName('id') . '=' . $db->quote($categoryId)); $db->setQuery($query); try { $name = $db->loadResult(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } } else { $name = JText::_('COM_BANNERS_NOCATEGORYNAME'); } return $name; } /** * Get the category name * * @return string The category name. * * @since 1.6 */ protected function getClientName() { $clientId = $this->getState('filter.client_id'); if ($clientId) { $db = $this->getDbo(); $query = $db->getQuery(true) ->select('name') ->from($db->quoteName('#__banner_clients')) ->where($db->quoteName('id') . '=' . $db->quote($clientId)); $db->setQuery($query); try { $name = $db->loadResult(); } catch (RuntimeException $e) { $this->setError($e->getMessage()); return false; } } else { $name = JText::_('COM_BANNERS_NOCLIENTNAME'); } return $name; } /** * Get the file type. * * @return string The file type * * @since 1.6 */ public function getFileType() { return $this->getState('compressed') ? 'zip' : 'csv'; } /** * Get the mime type. * * @return string The mime type. * * @since 1.6 */ public function getMimeType() { return $this->getState('compressed') ? 'application/zip' : 'text/csv'; } /** * Get the content * * @return string The content. * * @since 1.6 */ public function getContent() { if (!isset($this->content)) { $this->content = ''; $this->content .= '"' . str_replace('"', '""', JText::_('COM_BANNERS_HEADING_NAME')) . '","' . str_replace('"', '""', JText::_('COM_BANNERS_HEADING_CLIENT')) . '","' . str_replace('"', '""', JText::_('JCATEGORY')) . '","' . str_replace('"', '""', JText::_('COM_BANNERS_HEADING_TYPE')) . '","' . str_replace('"', '""', JText::_('COM_BANNERS_HEADING_COUNT')) . '","' . str_replace('"', '""', JText::_('JDATE')) . '"' . "\n"; foreach ($this->getItems() as $item) { $this->content .= '"' . str_replace('"', '""', $item->name) . '","' . str_replace('"', '""', $item->client_name) . '","' . str_replace('"', '""', $item->category_title) . '","' . str_replace('"', '""', ($item->track_type == 1 ? JText::_('COM_BANNERS_IMPRESSION') : JText::_('COM_BANNERS_CLICK'))) . '","' . str_replace('"', '""', $item->count) . '","' . str_replace('"', '""', $item->track_date) . '"' . "\n"; } if ($this->getState('compressed')) { $app = JFactory::getApplication('administrator'); $files = array(); $files['track'] = array(); $files['track']['name'] = $this->getBasename() . '.csv'; $files['track']['data'] = $this->content; $files['track']['time'] = time(); $ziproot = $app->get('tmp_path') . '/' . uniqid('banners_tracks_') . '.zip'; // Run the packager jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); $delete = JFolder::files($app->get('tmp_path') . '/', uniqid('banners_tracks_'), false, true); if (!empty($delete)) { if (!JFile::delete($delete)) { // JFile::delete throws an error $this->setError(JText::_('COM_BANNERS_ERR_ZIP_DELETE_FAILURE')); return false; } } if (!$packager = JArchive::getAdapter('zip')) { $this->setError(JText::_('COM_BANNERS_ERR_ZIP_ADAPTER_FAILURE')); return false; } elseif (!$packager->create($ziproot, $files)) { $this->setError(JText::_('COM_BANNERS_ERR_ZIP_CREATE_FAILURE')); return false; } $this->content = file_get_contents($ziproot); } } return $this->content; } } PKc��\�>۾��%components/com_banners/controller.phpnu�[���<?php /** * @package Joomla.Administrator * @subpackage com_banners * * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Banners master display controller. * * @since 1.6 */ class BannersController extends JControllerLegacy { /** * Method to display a view. * * @param boolean $cachable If true, the view output will be cached * @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. * * @return JController This object to support chaining. * * @since 1.5 */ public function display($cachable = false, $urlparams = false) { require_once JPATH_COMPONENT . '/helpers/banners.php'; BannersHelper::updateReset(); $view = $this->input->get('view', 'banners'); $layout = $this->input->get('layout', 'default'); $id = $this->input->getInt('id'); // Check for edit form. if ($view == 'banner' && $layout == 'edit' && !$this->checkEditId('com_banners.edit.banner', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_banners&view=banners', false)); return false; } elseif ($view == 'client' && $layout == 'edit' && !$this->checkEditId('com_banners.edit.client', $id)) { // Somehow the person just went to the form - we don't allow that. $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id)); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=com_banners&view=clients', false)); return false; } parent::display(); return $this; } } PKb��\�E3�#modules/mod_popular/mod_popular.phpnu�[���PKb��\���� � #nmodules/mod_popular/mod_popular.xmlnu�[���PKb��\�J�Y��$xmodules/mod_popular/tmpl/default.phpnu�[���PKb��\u_�S� � �modules/mod_popular/helper.phpnu�[���PKb��\ [� �modules/mod_menu/mod_menu.phpnu�[���PKb��\{�eH: : >"modules/mod_menu/mod_menu.xmlnu�[���PKb��\�En�$�$�+modules/mod_menu/menu.phpnu�[���PKb��\c�v� *�Pmodules/mod_menu/tmpl/default_disabled.phpnu�[���PKb��\Ʉ��.�.) Xmodules/mod_menu/tmpl/default_enabled.phpnu�[���PKb��\�B��88!�modules/mod_menu/tmpl/default.phpnu�[���PKb��\,������modules/mod_menu/helper.phpnu�[���PKb��\^b[���!��modules/mod_logged/mod_logged.phpnu�[���PKb��\S�RI��!��modules/mod_logged/mod_logged.xmlnu�[���PKb��\ʧ깩�#ݤmodules/mod_logged/tmpl/default.phpnu�[���PKb��\���5JJ٫modules/mod_logged/helper.phpnu�[���PKb��\�+xx$p�modules/mod_version/tmpl/default.phpnu�[���PKb��\�TNN<�modules/mod_version/helper.phpnu�[���PKb��\#� yy8عmodules/mod_version/language/en-GB/en-GB.mod_version.ininu�[���PKb��\��;{{<��modules/mod_version/language/en-GB/en-GB.mod_version.sys.ininu�[���PKb��\!����#��modules/mod_version/mod_version.xmlnu�[���PKb��\�����#��modules/mod_version/mod_version.phpnu�[���PKb��\rW����#��modules/mod_status/tmpl/default.phpnu�[���PKb��\1+�W� � !E�modules/mod_status/mod_status.xmlnu�[���PKb��\/p�}��!��modules/mod_status/mod_status.phpnu�[���PKb��\I�����+��modules/mod_stats_admin/mod_stats_admin.phpnu�[���PKb��\e�>>(��modules/mod_stats_admin/tmpl/default.phpnu�[���PKb��\�U�*]]":�modules/mod_stats_admin/helper.phpnu�[���PKb��\���m��:�modules/mod_stats_admin/language/en-GB.mod_stats_admin.ininu�[���PKb��\��\�>��modules/mod_stats_admin/language/en-GB.mod_stats_admin.sys.ininu�[���PKb��\��� +omodules/mod_stats_admin/mod_stats_admin.xmlnu�[���PKb��\�jJ{{�modules/mod_login/mod_login.xmlnu�[���PKb��\\{!�}}"�modules/mod_login/tmpl/default.phpnu�[���PKb��\�j~��$modules/mod_login/helper.phpnu�[���PKb��\)��ee�+modules/mod_login/mod_login.phpnu�[���PKb��\�e��''$�.modules/mod_submenu/tmpl/default.phpnu�[���PKb��\{,ם��#6modules/mod_submenu/mod_submenu.phpnu�[���PKb��\�PB�#�8modules/mod_submenu/mod_submenu.xmlnu�[���PKb��\mCDh?modules/mod_feed/mod_feed.phpnu�[���PKb��\�i��!�Bmodules/mod_feed/tmpl/default.phpnu�[���PKb��\ؑ����Omodules/mod_feed/helper.phpnu�[���PKb��\A�%j$$ASmodules/mod_feed/mod_feed.xmlnu�[���PKb��\�X��� � !�bmodules/mod_latest/mod_latest.xmlnu�[���PKb��\�.NPP#�mmodules/mod_latest/tmpl/default.phpnu�[���PKb��\}_�����tmodules/mod_latest/helper.phpnu�[���PKb��\u�/��!��modules/mod_latest/mod_latest.phpnu�[���PKb��\<06,,#��modules/mod_custom/tmpl/default.phpnu�[���PKb��\�!�[��!.�modules/mod_custom/mod_custom.xmlnu�[���PKb��\�.��!�modules/mod_custom/mod_custom.phpnu�[���PKb��\�SZ'��#J�modules/mod_toolbar/mod_toolbar.phpnu�[���PKb��\\Xe�::$L�modules/mod_toolbar/tmpl/default.phpnu�[���PKb��\��W#ڔmodules/mod_toolbar/mod_toolbar.xmlnu�[���PKb��\QZ���,C�modules/mod_multilangstatus/tmpl/default.phpnu�[���PKb��\��g~~3C�modules/mod_multilangstatus/mod_multilangstatus.phpnu�[���PKb��\�"���3$�modules/mod_multilangstatus/mod_multilangstatus.xmlnu�[���PKb��\K���ssL�modules/mod_multilangstatus/language/en-GB/en-GB.mod_multilangstatus.sys.ininu�[���PKb��\K���ssH��modules/mod_multilangstatus/language/en-GB/en-GB.mod_multilangstatus.ininu�[���PKb��\d���'�modules/mod_quickicon/mod_quickicon.xmlnu�[���PKb��\�}��';�modules/mod_quickicon/mod_quickicon.phpnu�[���PKb��\%mW���&`�modules/mod_quickicon/tmpl/default.phpnu�[���PKb��\,�MM ��modules/mod_quickicon/helper.phpnu�[���PKb��\�hn�\\"3�modules/mod_title/tmpl/default.phpnu�[���PKb��\Ⱟ[����modules/mod_title/mod_title.phpnu�[���PKb��\#X�y-�modules/mod_title/mod_title.xmlnu�[���PKb��\c�+����help/en-GB/toc.jsonnu�[���PKb��\D������help/helpsites.xmlnu�[���PKb��\�V�k�cache/index.htmlnu�[���PKb��\��++��templates/hathor/cpanel.phpnu�[���PKb��\鱦��*@templates/hathor/less/colour_standard.lessnu�[���PKb��\ 0I)qq!= templates/hathor/less/modals.lessnu�[���PKb��\JVs��"�templates/hathor/less/buttons.lessnu�[���PKb��\"V.���"�templates/hathor/less/icomoon.lessnu�[���PKb��\N����&!templates/hathor/less/colour_blue.lessnu�[���PKb��\Q�=����#&templates/hathor/less/template.lessnu�[���PKb��\ +"��$�templates/hathor/less/variables.lessnu�[���PKb��\���q�q�*�templates/hathor/less/colour_baseline.lessnu�[���PKb��\Ϙ�+��templates/hathor/less/hathor_variables.lessnu�[���PKb��\<��� �templates/hathor/less/forms.lessnu�[���PKb��\�h�'B�templates/hathor/less/colour_brown.lessnu�[���PKb��\�������templates/hathor/error.phpnu�[���PKb��\�P�E�E��templates/hathor/LICENSE.txtnu�[���PKb��\I�JQll/�templates/hathor/html/com_tags/tags/default.phpnu�[���PKb��\cD����3�,templates/hathor/html/com_tags/tag/edit_options.phpnu�[���PKb��\T�NN+�5templates/hathor/html/com_tags/tag/edit.phpnu�[���PKb��\ܹ�S��4�Ftemplates/hathor/html/com_tags/tag/edit_metadata.phpnu�[���PKb��\)�M���1zLtemplates/hathor/html/com_cache/cache/default.phpnu�[���PKb��\�\f�aa1�Xtemplates/hathor/html/com_cache/purge/default.phpnu�[���PKb��\ˌ���&�&6�]templates/hathor/html/com_content/featured/default.phpnu�[���PKb��\�ێ�4τtemplates/hathor/html/com_content/articles/modal.phpnu�[���PKb��\�m��/�/6��templates/hathor/html/com_content/articles/default.phpnu�[���PKb��\UM�i*i*2��templates/hathor/html/com_content/article/edit.phpnu�[���PKb��\s�b�9��templates/hathor/html/com_languages/languages/default.phpnu�[���PKb��\Hw�]��9�templates/hathor/html/com_languages/overrides/default.phpnu�[���PKb��\%����=�%templates/hathor/html/com_languages/installed/default_ftp.phpnu�[���PKb��\�&�F��9*templates/hathor/html/com_languages/installed/default.phpnu�[���PKb��\.Q��(�(;b7templates/hathor/html/com_categories/categories/default.phpnu�[���PKb��\��<��>�`templates/hathor/html/com_categories/category/edit_options.phpnu�[���PKb��\���{��6�itemplates/hathor/html/com_categories/category/edit.phpnu�[���PKb��\/�z 9!�templates/hathor/html/com_templates/templates/default.phpnu�[���PKb��\�/M��=��templates/hathor/html/com_templates/style/edit_assignment.phpnu�[���PKb��\��p�"":̟templates/hathor/html/com_templates/style/edit_options.phpnu�[���PKb��\��fZ��2X�templates/hathor/html/com_templates/style/edit.phpnu�[���PKb��\G�LL6��templates/hathor/html/com_templates/styles/default.phpnu�[���PKb��\S��OOD6�templates/hathor/html/com_templates/template/default_description.phpnu�[���PKb��\g�j���=��templates/hathor/html/com_templates/template/default_tree.phpnu�[���PKb��\*�PP8X�templates/hathor/html/com_templates/template/default.phpnu�[���PKb��\b�W�@�'templates/hathor/html/com_templates/template/default_folders.phpnu�[���PKb��\6�;� 0 02b+templates/hathor/html/mod_menu/default_enabled.phpnu�[���PKb��\�xE!nn:�[templates/hathor/html/com_postinstall/messages/default.phpnu�[���PKb��\�4k���5�gtemplates/hathor/html/com_users/debuguser/default.phpnu�[���PKb��\�-templates/hathor/html/com_users/user/edit.phpnu�[���PKb��\��@AA1d�templates/hathor/html/com_users/notes/default.phpnu�[���PKb��\!�'� � /�templates/hathor/html/com_users/users/modal.phpnu�[���PKb��\~u���"�"1�templates/hathor/html/com_users/users/default.phpnu�[���PKb��\#��''2P�templates/hathor/html/com_users/groups/default.phpnu�[���PKb��\��F^��2��templates/hathor/html/com_users/levels/default.phpnu�[���PKb��\ud��6�templates/hathor/html/com_users/debuggroup/default.phpnu�[���PKb��\ujH%H%7templates/hathor/html/com_weblinks/weblinks/default.phpnu�[���PKb��\����3�?templates/hathor/html/com_weblinks/weblink/edit.phpnu�[���PKb��\������:Stemplates/hathor/html/com_weblinks/weblink/edit_params.phpnu�[���PKb��\r��55Wtemplates/hathor/html/com_checkin/checkin/default.phpnu�[���PKb��\�9�HHA�btemplates/hathor/html/layouts/com_messages/toolbar/mysettings.phpnu�[���PKb��\ig�C��BUetemplates/hathor/html/layouts/com_modules/toolbar/cancelselect.phpnu�[���PKb��\�P���?�gtemplates/hathor/html/layouts/com_modules/toolbar/newmodule.phpnu�[���PKb��\jL��xx8 jtemplates/hathor/html/layouts/joomla/quickicons/icon.phpnu�[���PKb��\9I�t��9�ntemplates/hathor/html/layouts/joomla/sidebars/submenu.phpnu�[���PKb��\�/0��:stemplates/hathor/html/layouts/joomla/toolbar/separator.phpnu�[���PKb��\L3�\��72utemplates/hathor/html/layouts/joomla/toolbar/slider.phpnu�[���PKb��\�:�C^^9*xtemplates/hathor/html/layouts/joomla/toolbar/versions.phpnu�[���PKb��\%7���6�{templates/hathor/html/layouts/joomla/toolbar/batch.phpnu�[���PKb��\���DD??~templates/hathor/html/layouts/joomla/toolbar/containerclose.phpnu�[���PKb��\�F4�8�templates/hathor/html/layouts/joomla/toolbar/confirm.phpnu�[���PKb��\�G�EE9s�templates/hathor/html/layouts/joomla/toolbar/standard.phpnu�[���PKb��\O��bb6!�templates/hathor/html/layouts/joomla/toolbar/popup.phpnu�[���PKb��\�}���5�templates/hathor/html/layouts/joomla/toolbar/help.phpnu�[���PKb��\�?Nmee>H�templates/hathor/html/layouts/joomla/toolbar/containeropen.phpnu�[���PKb��\�3����5�templates/hathor/html/layouts/joomla/toolbar/base.phpnu�[���PKb��\|�I��6�templates/hathor/html/layouts/joomla/toolbar/title.phpnu�[���PKb��\5�q_��5��templates/hathor/html/layouts/joomla/toolbar/link.phpnu�[���PKb��\�>�HH:Y�templates/hathor/html/layouts/joomla/toolbar/iconclass.phpnu�[���PKb��\�#Jw w 5�templates/hathor/html/layouts/joomla/edit/details.phpnu�[���PKb��\ �a::6�templates/hathor/html/layouts/joomla/edit/metadata.phpnu�[���PKb��\(n��?��templates/hathor/html/layouts/com_media/toolbar/uploadmedia.phpnu�[���PKb��\<|���=�templates/hathor/html/layouts/com_media/toolbar/newfolder.phpnu�[���PKb��\����?J�templates/hathor/html/layouts/com_media/toolbar/deletemedia.phpnu�[���PKb��\��"��A��templates/hathor/html/layouts/plugins/user/profile/fields/dob.phpnu�[���PKb��\����0��templates/hathor/html/com_admin/help/default.phpnu�[���PKb��\�,���0˹templates/hathor/html/com_admin/profile/edit.phpnu�[���PKb��\�F[k��:��templates/hathor/html/com_admin/sysinfo/default_system.phpnu�[���PKb��\�,��>V�templates/hathor/html/com_admin/sysinfo/default_navigation.phpnu�[���PKb��\�}���:��templates/hathor/html/com_admin/sysinfo/default_config.phpnu�[���PKb��\���22?��templates/hathor/html/com_admin/sysinfo/default_phpsettings.phpnu�[���PKb��\�GӅ��3(�templates/hathor/html/com_admin/sysinfo/default.phpnu�[���PKb��\�ĝ��=U�templates/hathor/html/com_admin/sysinfo/default_directory.phpnu�[���PKb��\��X��3��templates/hathor/html/com_messages/message/edit.phpnu�[���PKb��\b*^^7�templates/hathor/html/com_messages/messages/default.phpnu�[���PKb��\�X>_( ( 5�templates/hathor/html/com_menus/item/edit_options.phpnu�[���PKb��\{�]d��-0templates/hathor/html/com_menus/item/edit.phpnu�[���PKb��\�P�Ы,�,1j'templates/hathor/html/com_menus/items/default.phpnu�[���PKb��\^<�-vTtemplates/hathor/html/com_menus/menu/edit.phpnu�[���PKb��\ĭ�ښ�5�Ztemplates/hathor/html/com_menus/menutypes/default.phpnu�[���PKb��\Aq;��!�!1�ftemplates/hathor/html/com_menus/menus/default.phpnu�[���PKb��\d{͉��9/�templates/hathor/html/com_plugins/plugin/edit_options.phpnu�[���PKb��\��=� � 1b�templates/hathor/html/com_plugins/plugin/edit.phpnu�[���PKb��\�_�AXX5��templates/hathor/html/com_plugins/plugins/default.phpnu�[���PKb��\�|�##3~�templates/hathor/html/com_cpanel/cpanel/default.phpnu�[���PKb��\K��+�templates/hathor/html/mod_login/default.phpnu�[���PKb��\ �Opp4]�templates/hathor/html/com_finder/filters/default.phpnu�[���PKb��\�"t__21�templates/hathor/html/com_finder/index/default.phpnu�[���PKb��\�F�1�templates/hathor/html/com_finder/maps/default.phpnu�[���PKb��\�n��O(O(5W templates/hathor/html/com_modules/modules/default.phpnu�[���PKb��\#���77<8 templates/hathor/html/com_modules/module/edit_assignment.phpnu�[���PKb��\����9�K templates/hathor/html/com_modules/module/edit_options.phpnu�[���PKb��\����1�P templates/hathor/html/com_modules/module/edit.phpnu�[���PKb��\&0����5e templates/hathor/html/com_modules/positions/modal.phpnu�[���PKb��\��k�WW21w templates/hathor/html/com_contact/contact/edit.phpnu�[���PKb��\�mw���9� templates/hathor/html/com_contact/contact/edit_params.phpnu�[���PKb��\E6�� 4� templates/hathor/html/com_contact/contacts/modal.phpnu�[���PKb��\���A�*�*6�� templates/hathor/html/com_contact/contacts/default.phpnu�[���PKb��\�!�mPP6�� templates/hathor/html/com_config/component/default.phpnu�[���PKb��\��!���?P� templates/hathor/html/com_config/application/default_locale.phpnu�[���PKb��\��Bv��?C� templates/hathor/html/com_config/application/default_system.phpnu�[���PKb��\�e�̂�?4� templates/hathor/html/com_config/application/default_server.phpnu�[���PKb��\��+��C%� templates/hathor/html/com_config/application/default_navigation.phpnu�[���PKb��\�p�~~=K� templates/hathor/html/com_config/application/default_site.phpnu�[���PKb��\2U��A6� templates/hathor/html/com_config/application/default_metadata.phpnu�[���PKb��\���Ʀ�@2� templates/hathor/html/com_config/application/default_filters.phpnu�[���PKb��\ ���?H� templates/hathor/html/com_config/application/default_cookie.phpnu�[���PKb��\๛��<;� templates/hathor/html/com_config/application/default_seo.phpnu�[���PKb��\VD���@(� templates/hathor/html/com_config/application/default_session.phpnu�[���PKb��\��u�||< templates/hathor/html/com_config/application/default_ftp.phpnu�[���PKb��\�x!���A templates/hathor/html/com_config/application/default_database.phpnu�[���PKb��\AU1�55A� templates/hathor/html/com_config/application/default_ftplogin.phpnu�[���PKb��\41��@ @ 8� templates/hathor/html/com_config/application/default.phpnu�[���PKb��\A���iiDI templates/hathor/html/com_config/application/default_permissions.phpnu�[���PKb��\^0����>& templates/hathor/html/com_config/application/default_debug.phpnu�[���PKb��\�o�~~= templates/hathor/html/com_config/application/default_mail.phpnu�[���PKb��\5����>� templates/hathor/html/com_config/application/default_cache.phpnu�[���PKb��\�"�{::4�" templates/hathor/html/com_redirect/links/default.phpnu�[���PKb��\)�z��;�< templates/hathor/html/com_installer/default/default_ftp.phpnu�[���PKb��\�\����8�@ templates/hathor/html/com_installer/warnings/default.phpnu�[���PKb��\�g�9)G templates/hathor/html/com_installer/languages/default.phpnu�[���PKb��\>ω-@�U templates/hathor/html/com_installer/languages/default_filter.phpnu�[���PKb��\�vf��81Z templates/hathor/html/com_installer/database/default.phpnu�[���PKb��\���WW6�g templates/hathor/html/com_installer/manage/default.phpnu�[���PKb��\hg�7NN=Ny templates/hathor/html/com_installer/manage/default_filter.phpnu�[���PKb��\9�����8 � templates/hathor/html/com_installer/discover/default.phpnu�[���PKb��\Y�(���<5� templates/hathor/html/com_installer/install/default_form.phpnu�[���PKb��\�Ѧ�7H� templates/hathor/html/com_installer/install/default.phpnu�[���PKb��\��9�226U� templates/hathor/html/com_installer/update/default.phpnu�[���PKb��\e:1��!� templates/hathor/html/modules.phpnu�[���PKb��\u�k��:"� templates/hathor/html/com_joomlaupdate/default/default.phpnu�[���PKb��\� � � 5�� templates/hathor/html/com_search/searches/default.phpnu�[���PKb��\�z]��$�� templates/hathor/html/pagination.phpnu�[���PKb��\�ϱ�/�� templates/hathor/html/mod_quickicon/default.phpnu�[���PKb��\�~��997�� templates/hathor/html/com_newsfeeds/newsfeeds/modal.phpnu�[���PKb��\�y~@\)\)94templates/hathor/html/com_newsfeeds/newsfeeds/default.phpnu�[���PKb��\"�ڒ5�7templates/hathor/html/com_newsfeeds/newsfeed/edit.phpnu�[���PKb��\����<wLtemplates/hathor/html/com_newsfeeds/newsfeed/edit_params.phpnu�[���PKb��\����*�*5�Ptemplates/hathor/html/com_banners/banners/default.phpnu�[���PKb��\�T��4�{templates/hathor/html/com_banners/tracks/default.phpnu�[���PKb��\������5Ətemplates/hathor/html/com_banners/clients/default.phpnu�[���PKb��\�.�aa1�templates/hathor/html/com_banners/banner/edit.phpnu�[���PKb��\�7�p p 1��templates/hathor/html/com_banners/client/edit.phpnu�[���PKb��\qsw��0��templates/hathor/css/colour_highcontrast_rtl.cssnu�[���PKb��\��6\y�y�!p�templates/hathor/css/template.cssnu�[���PKb��\��{{!:�templates/hathor/css/boldtext.cssnu�[���PKb��\Br9" �templates/hathor/css/ie8.cssnu�[���PKb��\��M���_�templates/hathor/css/ie7.cssnu�[���PKb��\@�F�O�O%}�templates/hathor/css/template_rtl.cssnu�[���PKb��\饰�<�<�(�9 templates/hathor/css/colour_standard.cssnu�[���PKb��\> <�<�%V� templates/hathor/css/colour_brown.cssnu�[���PKb��\��4Y<�<�$�templates/hathor/css/colour_blue.cssnu�[���PKb��\ǀ%���wZtemplates/hathor/css/error.cssnu�[���PKb��\� �)�_templates/hathor/css/colour_brown_rtl.cssnu�[���PKb��\�ޜ,hh(�wtemplates/hathor/css/colour_blue_rtl.cssnu�[���PKb��\�a�dd,��templates/hathor/css/colour_standard_rtl.cssnu�[���PKb��\��$w����,~�templates/hathor/css/colour_highcontrast.cssnu�[���PKb��\Pg���Utemplates/hathor/css/theme.cssnu�[���PKb��\�k;m[m[%smtemplates/hathor/template_preview.pngnu�[���PKb��\К���5�templates/hathor/index.phpnu�[���PKb��\" ����"�templates/hathor/favicon.iconu�[���PKb��\r���Q�templates/hathor/login.phpnu�[���PKb��\��hee8y�templates/hathor/language/en-GB/en-GB.tpl_hathor.sys.ininu�[���PKb��\�����4Ftemplates/hathor/language/en-GB/en-GB.tpl_hathor.ininu�[���PKb��\Xs���templates/hathor/component.phpnu�[���PKb��\Q��3nn^templates/hathor/js/template.jsnu�[���PKb��\aG�S'templates/hathor/template_thumbnail.pngnu�[���PKb��\��~s��(~.templates/hathor/images/j_arrow_left.pngnu�[���PKb��\���'�/templates/hathor/images/notice-note.pngnu�[���PKb��\�|뷉�$3templates/hathor/images/required.pngnu�[���PKb��\�4H��.�3templates/hathor/images/selector-arrow-std.pngnu�[���PKb��\a�]���%�4templates/hathor/images/mini_icon.pngnu�[���PKb��\"p�'dd �7templates/hathor/images/logo.pngnu�[���PKb��\ ��jj+hLtemplates/hathor/images/system/calendar.pngnu�[���PKb��\6g���1-Otemplates/hathor/images/system/selector-arrow.pngnu�[���PKb��\���)��-TPtemplates/hathor/images/selector-arrow-hc.pngnu�[���PKb��\;v:$$-?Qtemplates/hathor/images/menu/icon-16-tags.pngnu�[���PKb��\&+���/�Stemplates/hathor/images/menu/icon-16-delete.pngnu�[���PKb��\������.Vtemplates/hathor/images/menu/icon-16-inbox.pngnu�[���PKb��\����-0Ytemplates/hathor/images/menu/icon-16-edit.pngnu�[���PKb��\�z)��/�[templates/hathor/images/menu/icon-16-cpanel.pngnu�[���PKb��\��O0�]templates/hathor/images/menu/icon-16-menumgr.pngnu�[���PKb��\��D��2#`templates/hathor/images/menu/icon-16-help-this.pngnu�[���PKb��\�)�C2xctemplates/hathor/images/menu/icon-16-messaging.pngnu�[���PKb��\Re��-�ftemplates/hathor/images/menu/icon-16-menu.pngnu�[���PKb��\��P}��-�htemplates/hathor/images/menu/icon-16-help.pngnu�[���PKb��\L�����1�ktemplates/hathor/images/menu/icon-16-help-dev.pngnu�[���PKb��\%e3_88..ntemplates/hathor/images/menu/icon-16-links.pngnu�[���PKb��\�=t��1�ptemplates/hathor/images/menu/icon-16-readmess.pngnu�[���PKb��\��\�__0�stemplates/hathor/images/menu/icon-16-default.pngnu�[���PKb��\6���1�utemplates/hathor/images/menu/icon-16-newlevel.pngnu�[���PKb��\]�;0�wtemplates/hathor/images/menu/icon-16-user-dd.pngnu�[���PKb��\_䧹��21ztemplates/hathor/images/menu/icon-16-component.pngnu�[���PKb��\��!!ff4}|templates/hathor/images/menu/icon-16-newcategory.pngnu�[���PKb��\��Kȫ�<G~templates/hathor/images/menu/icon-16-contacts-categories.pngnu�[���PKb��\��_��0^�templates/hathor/images/menu/icon-16-content.pngnu�[���PKb��\v5��GG-F�templates/hathor/images/menu/icon-16-send.pngnu�[���PKb��\�&�99/�templates/hathor/images/menu/icon-16-groups.pngnu�[���PKb��\�����1��templates/hathor/images/menu/icon-16-language.pngnu�[���PKb��\Ν���/��templates/hathor/images/menu/icon-16-upload.pngnu�[���PKb��\iF�S::1��templates/hathor/images/menu/icon-16-featured.pngnu�[���PKb��\��h� 4$�templates/hathor/images/menu/icon-16-maintenance.pngnu�[���PKb��\P���2��templates/hathor/images/menu/icon-16-help-shop.pngnu�[���PKb��\��E��2��templates/hathor/images/menu/icon-16-writemess.pngnu�[���PKb��\���S��2�templates/hathor/images/menu/icon-16-unarticle.pngnu�[���PKb��\> �0�templates/hathor/images/menu/icon-16-article.pngnu�[���PKb��\.�� .S�templates/hathor/images/menu/icon-16-clear.pngnu�[���PKb��\ց5��0��templates/hathor/images/menu/icon-16-checkin.pngnu�[���PKb��\��1��7�templates/hathor/images/menu/icon-16-help-community.pngnu�[���PKb��\6�&��2&�templates/hathor/images/menu/icon-16-help-docs.pngnu�[���PKb��\�fFc��2��templates/hathor/images/menu/icon-16-newsfeeds.pngnu�[���PKb��\bj��/|�templates/hathor/images/menu/icon-16-levels.pngnu�[���PKb��\�n �770Ҫtemplates/hathor/images/menu/icon-16-preview.pngnu�[���PKb��\���^^/i�templates/hathor/images/menu/icon-16-plugin.pngnu�[���PKb��\��ZZ:&�templates/hathor/images/menu/icon-16-banner-categories.pngnu�[���PKb��\�2��1�templates/hathor/images/menu/icon-16-category.pngnu�[���PKb��\V���/)�templates/hathor/images/menu/icon-16-logout.pngnu�[���PKb��\�����3l�templates/hathor/images/menu/icon-16-help-forum.pngnu�[���PKb��\�P�0$$1��templates/hathor/images/menu/icon-16-viewsite.pngnu�[���PKb��\ �ss/3�templates/hathor/images/menu/icon-16-revert.pngnu�[���PKb��\���T.�templates/hathor/images/menu/icon-16-stats.pngnu�[���PKb��\}�ts.y�templates/hathor/images/menu/icon-16-trash.pngnu�[���PKb��\�x�k��6�templates/hathor/images/menu/icon-16-newsfeeds-cat.pngnu�[���PKb��\���--2�templates/hathor/images/menu/icon-16-user-note.pngnu�[���PKb��\=T\UU1��templates/hathor/images/menu/icon-16-messages.pngnu�[���PKb��\k����-c�templates/hathor/images/menu/icon-16-user.pngnu�[���PKb��\Ը]�--2��templates/hathor/images/menu/icon-16-nopreview.pngnu�[���PKb��\����2(�templates/hathor/images/menu/icon-16-back-user.pngnu�[���PKb��\g�j�EE3e�templates/hathor/images/menu/icon-16-newarticle.pngnu�[���PKb��\�6��0 �templates/hathor/images/menu/icon-16-install.pngnu�[���PKb��\��f���0+�templates/hathor/images/menu/icon-16-generic.pngnu�[���PKb��\������<�templates/hathor/images/menu/icon-16-read-privatemessage.pngnu�[���PKb��\�s�((0^�templates/hathor/images/menu/icon-16-newuser.pngnu�[���PKb��\�DY��.��templates/hathor/images/menu/icon-16-apply.pngnu�[���PKb��\:�j�MM/��templates/hathor/images/menu/icon-16-module.pngnu�[���PKb��\B�nn,��templates/hathor/images/menu/icon-16-new.pngnu�[���PKb��\$Mr)}}6f�templates/hathor/images/menu/icon-16-help-security.pngnu�[���PKb��\ �.�mm3I�templates/hathor/images/menu/icon-16-help-trans.pngnu�[���PKb��\Q��}}/�templates/hathor/images/menu/icon-16-banner.pngnu�[���PKb��\�[�g��.��templates/hathor/images/menu/icon-16-purge.pngnu�[���PKb��\�6_sdd/7�templates/hathor/images/menu/icon-16-themes.pngnu�[���PKb��\�W��/��templates/hathor/images/menu/icon-16-config.pngnu�[���PKb��\[�e�EE.M�templates/hathor/images/menu/icon-16-alert.pngnu�[���PKb��\�̗�66-��templates/hathor/images/menu/icon-16-move.pngnu�[���PKb��\��1��templates/hathor/images/menu/icon-16-redirect.pngnu�[���PKb��\�&'cc6~�templates/hathor/images/menu/icon-16-banner-client.pngnu�[���PKb��\��51G�templates/hathor/images/menu/icon-16-newgroup.pngnu�[���PKb��\T�3�;;-��templates/hathor/images/menu/icon-16-info.pngnu�[���PKb��\O��i��.X�templates/hathor/images/menu/icon-16-print.pngnu�[���PKb��\�0� 1�templates/hathor/images/menu/icon-16-help-jrd.pngnu�[���PKb��\�G�6�templates/hathor/images/menu/icon-16-banner-tracks.pngnu�[���PKb��\�w��;;1itemplates/hathor/images/menu/icon-16-calendar.pngnu�[���PKb��\d6���1templates/hathor/images/menu/icon-16-help-jed.pngnu�[���PKb��\�y/]]2- templates/hathor/images/menu/icon-16-frontpage.pngnu�[���PKb��\yw�0�templates/hathor/images/menu/icon-16-archive.pngnu�[���PKb��\P>LL1ftemplates/hathor/images/menu/icon-16-download.pngnu�[���PKb��\�iڿ""2templates/hathor/images/menu/icon-16-links-cat.pngnu�[���PKb��\�y'(##1�templates/hathor/images/menu/icon-16-contacts.pngnu�[���PKb��\iE�hh;templates/hathor/images/menu/icon-16-new-privatemessage.pngnu�[���PKb��\��]��/�templates/hathor/images/menu/icon-16-search.pngnu�[���PKb��\� c-��-templates/hathor/images/menu/icon-16-deny.pngnu�[���PKb��\� ���1?templates/hathor/images/menu/icon-16-massmail.pngnu�[���PKb��\�;�<mm3Y"templates/hathor/images/menu/icon-16-notdefault.pngnu�[���PKb��\��\A��/)%templates/hathor/images/menu/icon-16-notice.pngnu�[���PKb��\����^^.'templates/hathor/images/menu/icon-16-media.pngnu�[���PKb��\ _�Ď�";*templates/hathor/images/j_logo.pngnu�[���PKb��\@H�7%%#9templates/hathor/images/bg-menu.gifnu�[���PKb��\Е�cjj(�9templates/hathor/images/notice-alert.pngnu�[���PKb��\�ZSrr!U=templates/hathor/images/arrow.pngnu�[���PKb��\Y�$\\'>templates/hathor/images/notice-info.pngnu�[���PKb��\�� , 0�Btemplates/hathor/images/header/icon-48-alert.pngnu�[���PKb��\��J���89Ltemplates/hathor/images/header/icon-48-newsfeeds-cat.pngnu�[���PKb��\�1�Rtemplates/hathor/images/header/icon-48-module.pngnu�[���PKb��\0�a���0�Vtemplates/hathor/images/header/icon-48-trash.pngnu�[���PKb��\P ]�^^1_templates/hathor/images/header/icon-48-themes.pngnu�[���PKb��\��m6� � 3�btemplates/hathor/images/header/icon-48-readmess.pngnu�[���PKb��\��회�3�ltemplates/hathor/images/header/icon-48-language.pngnu�[���PKb��\��6�1�xtemplates/hathor/images/header/icon-48-cpanel.pngnu�[���PKb��\Z 2�~templates/hathor/images/header/icon-48-article.pngnu�[���PKb��\WGD�GG/1�templates/hathor/images/header/icon-48-edit.pngnu�[���PKb��\!Qt���7templates/hathor/images/header/icon-48-user-profile.pngnu�[���PKb��\�Sq=��1�templates/hathor/images/header/icon-48-plugin.pngnu�[���PKb��\�zH���12�templates/hathor/images/header/icon-48-static.pngnu�[���PKb��\ N���3[�templates/hathor/images/header/icon-48-redirect.pngnu�[���PKb��\ ��f� � 7c�templates/hathor/images/header/icon-48-article-edit.pngnu�[���PKb��\C�((2��templates/hathor/images/header/icon-48-archive.pngnu�[���PKb��\�Y/�||/%�templates/hathor/images/header/icon-48-move.pngnu�[���PKb��\�GSgg/�templates/hathor/images/header/icon-48-deny.pngnu�[���PKb��\coU�PP8��templates/hathor/images/header/icon-48-banner-tracks.pngnu�[���PKb��\��Ϋ��=~�templates/hathor/images/header/icon-48-new-privatemessage.pngnu�[���PKb��\��%�++>r�templates/hathor/images/header/icon-48-contacts-categories.pngnu�[���PKb��\`N0`114�templates/hathor/images/header/icon-48-newsfeeds.pngnu�[���PKb��\�����5��templates/hathor/images/header/icon-48-help-forum.pngnu�[���PKb��\c�663�templates/hathor/images/header/icon-48-menu-add.pngnu�[���PKb��\�zH���2ttemplates/hathor/images/header/icon-48-content.pngnu�[���PKb��\VՀD��1� templates/hathor/images/header/icon-48-banner.pngnu�[���PKb��\螧�ll7�templates/hathor/images/header/icon-48-category-add.pngnu�[���PKb��\�9��� � 0ttemplates/hathor/images/header/icon-48-inbox.pngnu�[���PKb��\7D���2�$templates/hathor/images/header/icon-48-default.pngnu�[���PKb��\�P��/�&templates/hathor/images/header/icon-48-tags.pngnu�[���PKb��\H==KK5�-templates/hathor/images/header/icon-48-levels-add.pngnu�[���PKb��\�胁��4U1templates/hathor/images/header/icon-48-user-edit.pngnu�[���PKb��\�):��0�7templates/hathor/images/header/icon-48-apply.pngnu�[���PKb��\�&��4y=templates/hathor/images/header/icon-48-links-cat.pngnu�[���PKb��\�2� � 0iFtemplates/hathor/images/header/icon-48-print.pngnu�[���PKb��\/ �A. . 6XQtemplates/hathor/images/header/icon-48-article-add.pngnu�[���PKb��\Zkk0�Ztemplates/hathor/images/header/icon-48-clear.pngnu�[���PKb��\Α$���4�atemplates/hathor/images/header/icon-48-unarchive.pngnu�[���PKb��\��?222ntemplates/hathor/images/header/icon-48-generic.pngnu�[���PKb��\��oL L >�rtemplates/hathor/images/header/icon-48-read-privatemessage.pngnu�[���PKb��\��5� 4Z�templates/hathor/images/header/icon-48-help-this.pngnu�[���PKb��\n&���1Ȑtemplates/hathor/images/header/icon-48-groups.pngnu�[���PKb��\��6���1��templates/hathor/images/header/icon-48-search.pngnu�[���PKb��\��/##42�templates/hathor/images/header/icon-48-frontpage.pngnu�[���PKb��\��hh8��templates/hathor/images/header/icon-48-banner-client.pngnu�[���PKb��\�胁��3��templates/hathor/images/header/icon-48-user-add.pngnu�[���PKb��\���RR1��templates/hathor/images/header/icon-48-revert.pngnu�[���PKb��\;���4n�templates/hathor/images/header/icon-48-extension.pngnu�[���PKb��\x���2��templates/hathor/images/header/icon-48-checkin.pngnu�[���PKb��\!Qt���/��templates/hathor/images/header/icon-48-info.pngnu�[���PKb��\�]�64�templates/hathor/images/header/icon-48-newcategory.pngnu�[���PKb��\��� 1��templates/hathor/images/header/icon-48-config.pngnu�[���PKb��\�V�- 3!�templates/hathor/images/header/icon-48-massmail.pngnu�[���PKb��\���e 1��templates/hathor/images/header/icon-48-notice.pngnu�[���PKb��\���1�templates/hathor/images/header/icon-48-levels.pngnu�[���PKb��\�sD�% % 3e�templates/hathor/images/header/icon-48-contacts.pngnu�[���PKb��\�{ ��1�templates/hathor/images/header/icon-48-upload.pngnu�[���PKb��\ ��] ] 5�templates/hathor/images/header/icon-48-groups-add.pngnu�[���PKb��\S���/�templates/hathor/images/header/icon-48-user.pngnu�[���PKb��\(��1�(templates/hathor/images/header/icon-messaging.pngnu�[���PKb��\y��� � 3e5templates/hathor/images/header/icon-48-featured.pngnu�[���PKb��\yYp�N N 0�?templates/hathor/images/header/icon-48-links.pngnu�[���PKb��\�|�pp;LJtemplates/hathor/images/header/icon-48-jupdate-uptodate.pngnu�[���PKb��\���-��6'Qtemplates/hathor/images/header/icon-48-help_header.pngnu�[���PKb��\�:.�3#]templates/hathor/images/header/icon-48-calendar.pngnu�[���PKb��\82C�2�etemplates/hathor/images/header/icon-48-section.pngnu�[���PKb��\틭�� � /ltemplates/hathor/images/header/icon-48-send.pngnu�[���PKb��\������2wtemplates/hathor/images/header/icon-48-install.pngnu�[���PKb��\���880<}templates/hathor/images/header/icon-48-media.pngnu�[���PKb��\�T��<ԅtemplates/hathor/images/header/icon-48-banner-categories.pngnu�[���PKb��\��b23�templates/hathor/images/header/icon-48-download.pngnu�[���PKb��\U���3T�templates/hathor/images/header/icon-48-category.pngnu�[���PKb��\���߰�2h�templates/hathor/images/header/icon-48-menumgr.pngnu�[���PKb��\ ��0z�templates/hathor/images/header/icon-48-stats.pngnu�[���PKb��\�j~�''2��templates/hathor/images/header/icon-48-preview.pngnu�[���PKb��\S�4��templates/hathor/images/header/icon-48-component.pngnu�[���PKb��\��Q/�templates/hathor/images/header/icon-48-menu.pngnu�[���PKb��\�!~QQ>e�templates/hathor/images/header/icon-48-jupdate-updatefound.pngnu�[���PKb��\Oc���0$�templates/hathor/images/header/icon-48-purge.pngnu�[���PKb��\g�؏--4L�templates/hathor/images/header/icon-48-writemess.pngnu�[���PKb��\����(��templates/hathor/images/j_arrow_down.pngnu�[���PKb��\ց5��&��templates/hathor/images/admin/tick.pngnu�[���PKb��\+l#*�templates/hathor/images/admin/filesave.pngnu�[���PKb��\%e3_88/��templates/hathor/images/admin/icon-16-links.pngnu�[���PKb��\,a��+�templates/hathor/images/admin/downarrow.pngnu�[���PKb��\��t��-,�templates/hathor/images/admin/note_add_16.pngnu�[���PKb��\Gb�:��*8�templates/hathor/images/admin/featured.pngnu�[���PKb��\±kA--+��templates/hathor/images/admin/publish_r.pngnu�[���PKb��\�0��- �templates/hathor/images/admin/collapseall.pngnu�[���PKb��\�tW�zz*�templates/hathor/images/admin/sort_asc.pngnu�[���PKb��\A[�__'��templates/hathor/images/admin/blank.pngnu�[���PKb��\)�ˇ��)��templates/hathor/images/admin/uparrow.pngnu�[���PKb��\��0���+��templates/hathor/images/admin/uparrow-1.pngnu�[���PKb��\�[��qq/��templates/hathor/images/admin/icon-16-allow.pngnu�[���PKb��\Q��-��templates/hathor/images/admin/downarrow-1.pngnu�[���PKb��\#���qq6��templates/hathor/images/admin/icon-16-denyinactive.pngnu�[���PKb��\:#�2��'}�templates/hathor/images/admin/trash.pngnu�[���PKb��\"+�+KK.X�templates/hathor/images/admin/menu_divider.pngnu�[���PKb��\�:d��-�templates/hathor/images/admin/checked_out.pngnu�[���PKb��\& �4��,��templates/hathor/images/admin/downarrow0.pngnu�[���PKb��\��߶�* �templates/hathor/images/admin/uparrow0.pngnu�[���PKb��\����5�templates/hathor/images/admin/icon-16-notice-note.pngnu�[���PKb��\h�ʂ�+t�templates/hathor/images/admin/sort_desc.pngnu�[���PKb��\�LG2��3Q�templates/hathor/images/admin/icon-16-protected.pngnu�[���PKb��\0�贸�+z�templates/hathor/images/admin/publish_x.pngnu�[���PKb��\�.Tz��+��templates/hathor/images/admin/expandall.pngnu�[���PKb��\`!�kk*��templates/hathor/images/admin/disabled.pngnu�[���PKb��\��b�tt7d�templates/hathor/images/admin/icon-16-allowinactive.pngnu�[���PKb��\J9�|}}+?�templates/hathor/images/admin/publish_y.pngnu�[���PKb��\~oD��+�templates/hathor/images/admin/filter_16.pngnu�[���PKb��\a>B�ss.k�templates/hathor/images/admin/icon-16-deny.pngnu�[���PKb��\�r ��+<�templates/hathor/images/admin/publish_g.pngnu�[���PKb��\ ��jj$6�templates/hathor/images/calendar.pngnu�[���PKb��\��r���)�templates/hathor/images/j_arrow_right.pngnu�[���PKb��\&��337templates/hathor/images/toolbar/icon-32-article-add.pngnu�[���PKb��\���4��4� templates/hathor/images/toolbar/icon-32-user-add.pngnu�[���PKb��\Cq�� � 1�templates/hathor/images/toolbar/icon-32-inbox.pngnu�[���PKb��\P�*��1�templates/hathor/images/toolbar/icon-32-stats.pngnu�[���PKb��\Ռ��rr0�templates/hathor/images/toolbar/icon-32-lock.pngnu�[���PKb��\�i3pp=�"templates/hathor/images/toolbar/icon-32-banner-categories.pngnu�[���PKb��\��dB��4�+templates/hathor/images/toolbar/icon-32-download.pngnu�[���PKb��\�+���3�2templates/hathor/images/toolbar/icon-32-archive.pngnu�[���PKb��\d��//0�7templates/hathor/images/toolbar/icon-32-back.pngnu�[���PKb��\���/�=templates/hathor/images/toolbar/icon-32-xml.pngnu�[���PKb��\�S�1�@templates/hathor/images/toolbar/icon-32-alert.pngnu�[���PKb��\h�~��?nItemplates/hathor/images/toolbar/icon-32-contacts-categories.pngnu�[���PKb��\wR�T��0pOtemplates/hathor/images/toolbar/icon-32-copy.pngnu�[���PKb��\�*�C��2rQtemplates/hathor/images/toolbar/icon-32-upload.pngnu�[���PKb��\�z+0\\5�Ytemplates/hathor/images/toolbar/icon-32-extension.pngnu�[���PKb��\&/��PP3�btemplates/hathor/images/toolbar/icon-32-preview.pngnu�[���PKb��\�N�� 3=gtemplates/hathor/images/toolbar/icon-32-adduser.pngnu�[���PKb��\�#�L��1�mtemplates/hathor/images/toolbar/icon-32-batch.pngnu�[���PKb��\V�F���0�utemplates/hathor/images/toolbar/icon-32-html.pngnu�[���PKb��\����0|templates/hathor/images/toolbar/icon-32-save.pngnu�[���PKb��\ٙ� � 9@�templates/hathor/images/toolbar/icon-32-banner-tracks.pngnu�[���PKb��\s9��0d�templates/hathor/images/toolbar/icon-32-edit.pngnu�[���PKb��\���D D 9T�templates/hathor/images/toolbar/icon-32-banner-client.pngnu�[���PKb��\>N{7��3�templates/hathor/images/toolbar/icon-32-refresh.pngnu�[���PKb��\Z��b0O�templates/hathor/images/toolbar/icon-32-send.pngnu�[���PKb��\;)�<661ͮtemplates/hathor/images/toolbar/icon-32-error.pngnu�[���PKb��\�Zk%%2d�templates/hathor/images/toolbar/icon-32-module.pngnu�[���PKb��\n���330�templates/hathor/images/toolbar/icon-32-info.pngnu�[���PKb��\)�ʜ��2~�templates/hathor/images/toolbar/icon-32-revert.pngnu�[���PKb��\��3�//2h�templates/hathor/images/toolbar/icon-32-delete.pngnu�[���PKb��\�����0��templates/hathor/images/toolbar/icon-32-move.pngnu�[���PKb��\��Jz��5(�templates/hathor/images/toolbar/icon-32-messaging.pngnu�[���PKb��\���5P�templates/hathor/images/toolbar/icon-32-unpublish.pngnu�[���PKb��\�-��1��templates/hathor/images/toolbar/icon-32-apply.pngnu�[���PKb��\��]AA5L�templates/hathor/images/toolbar/icon-32-save-copy.pngnu�[���PKb��\�q�� � 0�templates/hathor/images/toolbar/icon-32-help.pngnu�[���PKb��\��T�LL1 templates/hathor/images/toolbar/icon-32-purge.pngnu�[���PKb��\�V��**2�templates/hathor/images/toolbar/icon-32-remove.pngnu�[���PKb��\$-�-��2Btemplates/hathor/images/toolbar/icon-32-config.pngnu�[���PKb��\�>/��0�templates/hathor/images/toolbar/icon-32-deny.pngnu�[���PKb��\���]]2�templates/hathor/images/toolbar/icon-32-notice.pngnu�[���PKb��\hFs���2j"templates/hathor/images/toolbar/icon-32-cancel.pngnu�[���PKb��\"�hh3�+templates/hathor/images/toolbar/icon-32-publish.pngnu�[���PKb��\D���3c3templates/hathor/images/toolbar/icon-32-article.pngnu�[���PKb��\�`*BB0�:templates/hathor/images/toolbar/icon-32-menu.pngnu�[���PKb��\����38?templates/hathor/images/toolbar/icon-32-checkin.pngnu�[���PKb��\)�W���4Ftemplates/hathor/images/toolbar/icon-32-featured.pngnu�[���PKb��\`�Q;mm3"Otemplates/hathor/images/toolbar/icon-32-default.pngnu�[���PKb��\�m�4�Stemplates/hathor/images/toolbar/icon-32-calendar.pngnu�[���PKb��\i��QQ2Y\templates/hathor/images/toolbar/icon-32-export.pngnu�[���PKb��\��5�. . >atemplates/hathor/images/toolbar/icon-32-new-privatemessage.pngnu�[���PKb��\N ����6�jtemplates/hathor/images/toolbar/icon-32-messanging.pngnu�[���PKb��\��q!!3�stemplates/hathor/images/toolbar/icon-32-forward.pngnu�[���PKb��\��\JJ?Uytemplates/hathor/images/toolbar/icon-32-read-privatemessage.pngnu�[���PKb��\���Wm m 1�templates/hathor/images/toolbar/icon-32-print.pngnu�[���PKb��\���ll3ܐtemplates/hathor/images/toolbar/icon-32-unblock.pngnu�[���PKb��\�h���5��templates/hathor/images/toolbar/icon-32-component.pngnu�[���PKb��\�d2� � 1��templates/hathor/images/toolbar/icon-32-links.pngnu�[���PKb��\r�A�� � 5�templates/hathor/images/toolbar/icon-32-new-style.pngnu�[���PKb��\GSI�EE/�templates/hathor/images/toolbar/icon-32-css.pngnu�[���PKb��\�h���1��templates/hathor/images/toolbar/icon-32-trash.pngnu�[���PKb��\�ӕ�# # 8��templates/hathor/images/toolbar/icon-32-delete-style.pngnu�[���PKb��\@1�Yj j 4t�templates/hathor/images/toolbar/icon-32-contacts.pngnu�[���PKb��\͌|��2B�templates/hathor/images/toolbar/icon-32-search.pngnu�[���PKb��\�?+�{ { 2��templates/hathor/images/toolbar/icon-32-banner.pngnu�[���PKb��\�ͧ��4_�templates/hathor/images/toolbar/icon-32-save-new.pngnu�[���PKb��\˪�� 5��templates/hathor/images/toolbar/icon-32-unarchive.pngnu�[���PKb��\Z�T�/h�templates/hathor/images/toolbar/icon-32-new.pngnu�[���PKb��\X�#�� � (�templates/hathor/images/j_login_lock.pngnu�[���PKb��\���p��#�templates/hathor/images/j_arrow.pngnu�[���PKb��\�^���.�templates/hathor/images/selector-arrow-rtl.pngnu�[���PKb��\6g���*�templates/hathor/images/selector-arrow.pngnu�[���PKb��\L�i4��$templates/hathor/templateDetails.xmlnu�[���PKb��\9 � ��<!templates/system/error.phpnu�[���PKb��\��NS� � !.'templates/system/html/modules.phpnu�[���PKb��\�y��02templates/system/css/system.cssnu�[���PKb��\�Ե�>>�3templates/system/css/error.cssnu�[���PKb��\�M�>>7templates/system/index.phpnu�[���PKb��\������8templates/system/component.phpnu�[���PKb��\ ��jj$�;templates/system/images/calendar.pngnu�[���PKb��\�.�j>>z>templates/isis/cpanel.phpnu�[���PKb��\���LL%@templates/isis/less/template-rtl.lessnu�[���PKb��\Y��@@ �Ntemplates/isis/less/icomoon.lessnu�[���PKb��\�e&��W�W!2Stemplates/isis/less/template.lessnu�[���PKb��\E�s&s&"L�templates/isis/less/variables.lessnu�[���PKb��\�P5+5+�templates/isis/error.phpnu�[���PKb��\+r����+��templates/isis/html/mod_version/default.phpnu�[���PKb��\����5q�templates/isis/html/layouts/joomla/system/message.phpnu�[���PKb��\0�+��templates/isis/html/modules.phpnu�[���PKb��\�|�4&templates/isis/html/editor_content.cssnu�[���PKb��\�9��"Xtemplates/isis/html/pagination.phpnu�[���PKb��\�<J/�����'templates/isis/css/template.cssnu�[���PKb��\������#��templates/isis/css/template-rtl.cssnu�[���PKb��\�̞%s%s#�templates/isis/template_preview.pngnu�[���PKb��\ �oV..�-templates/isis/index.phpnu�[���PKb��\" �����[templates/isis/favicon.iconu�[���PKb��\x�qHccdtemplates/isis/login.phpnu�[���PKb��\mg7��0�ttemplates/isis/language/en-GB/en-GB.tpl_isis.ininu�[���PKb��\�*���4~templates/isis/language/en-GB/en-GB.tpl_isis.sys.ininu�[���PKb��\a�?"?"11�templates/isis/img/glyphicons-halflings-white.pngnu�[���PKb��\���1�1+Ѥtemplates/isis/img/glyphicons-halflings.pngnu�[���PKb��\I�\����templates/isis/component.phpnu�[���PKb��\]y�YQYQ"��templates/isis/js/bootstrap.min.jsnu�[���PKb��\������I/templates/isis/js/template.jsnu�[���PKb��\TE-�n�ngFtemplates/isis/js/jquery.jsnu�[���PKb��\r�;�tt^� templates/isis/js/classes.jsnu�[���PKb��\D�;��� � templates/isis/js/application.jsnu�[���PKb��\D�I�%*� templates/isis/template_thumbnail.pngnu�[���PKb��\G�k�%�%�� templates/isis/images/logo.pngnu�[���PKb��\,�Aɧ�)y!templates/isis/images/system/sort_asc.pngnu�[���PKb��\b�K��*y!templates/isis/images/system/sort_desc.pngnu�[���PKb��\A�ͣMM.~!templates/isis/images/login-joomla-inverse.pngnu�[���PKb��\�jˀ��%) !templates/isis/images/printButton.pngnu�[���PKb��\�bhkPP%6 !templates/isis/images/emailButton.pngnu�[���PKb��\��/bb&�!templates/isis/images/login-joomla.pngnu�[���PKb��\���[��$�!templates/isis/images/admin/tick.pngnu�[���PKb��\��(�!templates/isis/images/admin/filesave.pngnu�[���PKb��\%e3_88-<!templates/isis/images/admin/icon-16-links.pngnu�[���PKb��\��j�,,)�!templates/isis/images/admin/downarrow.pngnu�[���PKb��\ɨ���+V"!templates/isis/images/admin/note_add_16.pngnu�[���PKb��\,�55��(c$!templates/isis/images/admin/featured.pngnu�[���PKb��\saq�__)�%!templates/isis/images/admin/publish_r.pngnu�[���PKb��\i����+[(!templates/isis/images/admin/collapseall.pngnu�[���PKb��\�tW�zz(o)!templates/isis/images/admin/sort_asc.pngnu�[���PKb��\A[�__%A*!templates/isis/images/admin/blank.pngnu�[���PKb��\�$��::'�*!templates/isis/images/admin/uparrow.pngnu�[���PKb��\��0���)�-!templates/isis/images/admin/uparrow-1.pngnu�[���PKb��\o�y��-�.!templates/isis/images/admin/icon-16-allow.pngnu�[���PKb��\Q��+�0!templates/isis/images/admin/downarrow-1.pngnu�[���PKb��\���?��4�1!templates/isis/images/admin/icon-16-denyinactive.pngnu�[���PKb��\���y##%�3!templates/isis/images/admin/trash.pngnu�[���PKb��\N�"?NN,/6!templates/isis/images/admin/menu_divider.pngnu�[���PKb��\V���+�6!templates/isis/images/admin/checked_out.pngnu�[���PKb��\��j�,,*�8!templates/isis/images/admin/downarrow0.pngnu�[���PKb��\�$��::(Y;!templates/isis/images/admin/uparrow0.pngnu�[���PKb��\����3�=!templates/isis/images/admin/icon-16-notice-note.pngnu�[���PKb��\�2���)D@!templates/isis/images/admin/sort_desc.pngnu�[���PKb��\�c���1!A!templates/isis/images/admin/icon-16-protected.pngnu�[���PKb��\eE����)LC!templates/isis/images/admin/publish_x.pngnu�[���PKb��\±�~��)�E!templates/isis/images/admin/expandall.pngnu�[���PKb��\B;�\��(�F!templates/isis/images/admin/disabled.pngnu�[���PKb��\!d���5�G!templates/isis/images/admin/icon-16-allowinactive.pngnu�[���PKb��\p��ۢ�)�I!templates/isis/images/admin/publish_y.pngnu�[���PKb��\�)���+�K!templates/isis/images/admin/icon-16-add.pngnu�[���PKb��\/��� )�N!templates/isis/images/admin/filter_16.pngnu�[���PKb��\ax�9��,7P!templates/isis/images/admin/icon-16-deny.pngnu�[���PKb��\�r ��)NR!templates/isis/images/admin/publish_g.pngnu�[���PKb��\�w� ��&FT!templates/isis/images/logo-inverse.pngnu�[���PKb��\�);�;;$]l!templates/isis/images/pdf_button.pngnu�[���PKb��\��?"a"a �n!templates/isis/images/joomla.pngnu�[���PKb��\v5�"^�!templates/isis/templateDetails.xmlnu�[���PKb��\�N��TT��!includes/framework.phpnu�[���PKb��\����--[�!includes/defines.phpnu�[���PKb��\*nh����!includes/subtoolbar.phpnu�[���PKb��\d�%���!includes/helper.phpnu�[���PKb��\1���oEoE��!includes/toolbar.phpnu�[���PKb��\�33 oE"index.phpnu�[���PKb��\�V��J"language/overrides/index.htmlnu�[���PKb��\�z��,GK"language/en-GB/en-GB.com_postinstall.sys.ininu�[���PKb��\N���0*M"language/en-GB/en-GB.plg_finder_contacts.sys.ininu�[���PKb��\�}�G%%,�O"language/en-GB/en-GB.plg_editors_tinymce.ininu�[���PKb��\u=�U8U8$u"language/en-GB/en-GB.com_banners.ininu�[���PKb��\ƽ ���-��"language/en-GB/en-GB.plg_extension_joomla.ininu�[���PKb��\W|�??-��"language/en-GB/en-GB.plg_system_cache.sys.ininu�[���PKb��\�O����(7�"language/en-GB/en-GB.mod_popular.sys.ininu�[���PKb��\h�����'y�"language/en-GB/en-GB.mod_latest.sys.ininu�[���PKb��\���B��4��"language/en-GB/en-GB.plg_system_languagecode.sys.ininu�[���PKb��\E���,,(��"language/en-GB/en-GB.com_checkin.sys.ininu�[���PKb��\Ĩ!ee&>�"language/en-GB/en-GB.mod_title.sys.ininu�[���PKb��\W�ʺ,��"language/en-GB/en-GB.plg_search_contacts.ininu�[���PKb��\Ѷlj��(d�"language/en-GB/en-GB.com_banners.sys.ininu�[���PKb��\�� ���'��"language/en-GB/en-GB.com_categories.ininu�[���PKb��\�YZ��"�"%l�"language/en-GB/en-GB.com_weblinks.ininu�[���PKb��\�i����0��"language/en-GB/en-GB.plg_content_contact.sys.ininu�[���PKb��\�$?#�#language/en-GB/en-GB.com_cpanel.ininu�[���PKb��\rΎ��(#language/en-GB/en-GB.com_postinstall.ininu�[���PKb��\�m���S�S##language/en-GB/en-GB.com_config.ininu�[���PKb��\(�u dd' h#language/en-GB/en-GB.tpl_hathor.sys.ininu�[���PKb��\;��II/�k#language/en-GB/en-GB.com_contenthistory.sys.ininu�[���PKb��\t�ErMM+lm#language/en-GB/en-GB.plg_system_log.sys.ininu�[���PKb��\Tl�.��+o#language/en-GB/en-GB.plg_search_content.ininu�[���PKb��\��D���6Nr#language/en-GB/en-GB.plg_editors-xtd_pagebreak.sys.ininu�[���PKb��\_�����$ut#language/en-GB/en-GB.com_wrapper.ininu�[���PKb��\�g� ��(s{#language/en-GB/en-GB.plg_search_tags.ininu�[���PKb��\y�RW��2�~#language/en-GB/en-GB.plg_editors-xtd_image.sys.ininu�[���PKb��\��ؓ�,À#language/en-GB/en-GB.plg_finder_contacts.ininu�[���PKb��\F��rr0��#language/en-GB/en-GB.mod_multilangstatus.sys.ininu�[���PKb��\_�w*CC%��#language/en-GB/en-GB.com_ajax.sys.ininu�[���PKb��\�z��T2T2"�#language/en-GB/en-GB.com_menus.ininu�[���PKb��\M0կ��&¹#language/en-GB/en-GB.mod_login.sys.ininu�[���PKb��\�?v")��#language/en-GB/en-GB.plg_content_vote.ininu�[���PKb��\�-��%�#language/en-GB/en-GB.com_tags.sys.ininu�[���PKb��\�$ HH)t�#language/en-GB/en-GB.plg_system_cache.ininu�[���PKb��\���3rr%�#language/en-GB/en-GB.mod_feed.sys.ininu�[���PKb��\e"$2��#language/en-GB/en-GB.plg_finder_categories.sys.ininu�[���PKb��\��q��0Q�#language/en-GB/en-GB.plg_system_redirect.sys.ininu�[���PKb��\\�wp�R�R$L�#language/en-GB/en-GB.com_contact.ininu�[���PKb��\���m�+�+!{!$language/en-GB/en-GB.com_tags.ininu�[���PKb��\�4L>$$'tM$language/en-GB/en-GB.plg_system_sef.ininu�[���PKb��\�k� (�O$language/en-GB/en-GB.com_content.sys.ininu�[���PKb��\�x�T�A�A#MY$language/en-GB/en-GB.com_finder.ininu�[���PKb��\�!b(L�$language/en-GB/en-GB.mod_submenu.sys.ininu�[���PKb��\fcXA��6#�$language/en-GB/en-GB.plg_system_languagefilter.sys.ininu�[���PKb��\��Tbb1�$language/en-GB/en-GB.plg_editors-xtd_readmore.ininu�[���PKb��\c�� � .ҡ$language/en-GB/en-GB.plg_content_pagebreak.ininu�[���PKb��\��z(!�$language/en-GB/en-GB.com_wrapper.sys.ininu�[���PKb��\�i����,��$language/en-GB/en-GB.plg_content_contact.ininu�[���PKb��\d���,w�$language/en-GB/en-GB.plg_system_remember.ininu�[���PKb��\�-����(s�$language/en-GB/en-GB.mod_toolbar.sys.ininu�[���PKb��\��`cc6h�$language/en-GB/en-GB.plg_twofactorauth_yubikey.sys.ininu�[���PKb��\��h6>>31�$language/en-GB/en-GB.plg_content_pagenavigation.ininu�[���PKb��\_W�5>>#Ҽ$language/en-GB/en-GB.mod_logged.ininu�[���PKb��\�##!c�$language/en-GB/en-GB.mod_menu.ininu�[���PKb��\rMx�7�7$��$language/en-GB/en-GB.com_content.ininu�[���PKb��\K���w�w��%language/en-GB/en-GB.ininu�[���PKb��\�êf22&��%language/en-GB/en-GB.com_cache.sys.ininu�[���PKb��\[ETXX1.�%language/en-GB/en-GB.plg_search_newsfeeds.sys.ininu�[���PKb��\�1AA*��%language/en-GB/en-GB.com_languages.sys.ininu�[���PKb��\h�����.��%language/en-GB/en-GB.plg_editors-xtd_image.ininu�[���PKb��\pk���2��%language/en-GB/en-GB.plg_content_pagebreak.sys.ininu�[���PKb��\#�N���'�%language/en-GB/en-GB.plg_system_log.ininu�[���PKb��\�@.��)e�%language/en-GB/en-GB.com_joomlaupdate.ininu�[���PKb��\� �AA"�&language/en-GB/en-GB.mod_title.ininu�[���PKb��\���,!&language/en-GB/en-GB.plg_finder_tags.sys.ininu�[���PKb��\O�Lk??(b&language/en-GB/en-GB.com_plugins.sys.ininu�[���PKb��\=&%'�&language/en-GB/en-GB.mod_logged.sys.ininu�[���PKb��\\7EE-� &language/en-GB/en-GB.plg_editors_none.sys.ininu�[���PKb��\���.nn+q&language/en-GB/en-GB.com_contenthistory.ininu�[���PKb��\�#T��7:&language/en-GB/en-GB.plg_installer_webinstaller.sys.ininu�[���PKb��\S)c8RR0-&language/en-GB/en-GB.plg_system_remember.sys.ininu�[���PKb��\����%�&language/en-GB/en-GB.com_redirect.ininu�[���PKb��\����6Q.&language/en-GB/en-GB.plg_authentication_joomla.sys.ininu�[���PKb��\JK)��7�0&language/en-GB/en-GB.plg_content_pagenavigation.sys.ininu�[���PKb��\�C����/�2&language/en-GB/en-GB.plg_content_loadmodule.ininu�[���PKb��\���vv$�6&language/en-GB/en-GB.mod_toolbar.ininu�[���PKb��\Yق���*c8&language/en-GB/en-GB.com_newsfeeds.sys.ininu�[���PKb��\](�cc&�=&language/en-GB/en-GB.mod_quickicon.ininu�[���PKb��\�q���$TD&language/en-GB/en-GB.com_checkin.ininu�[���PKb��\�Bթ�+�+�I&language/en-GB/install.xmlnu�[���PKb��\�k#�u&language/en-GB/en-GB.mod_custom.ininu�[���PKb��\0� [[3�w&language/en-GB/en-GB.plg_editors_codemirror.sys.ininu�[���PKb��\�^wFrr/�y&language/en-GB/en-GB.plg_content_emailcloak.ininu�[���PKb��\�c�||%o|&language/en-GB/en-GB.mod_menu.sys.ininu�[���PKb��\Q���#@~&language/en-GB/en-GB.mod_latest.ininu�[���PKb��\��ܲ�'��&language/en-GB/en-GB.plg_system_p3p.ininu�[���PKb��\_����(�($��&language/en-GB/en-GB.com_modules.ininu�[���PKb��\4"D0�&language/en-GB/en-GB.plg_system_languagecode.ininu�[���PKb��\��11"d�&language/en-GB/en-GB.com_cache.ininu�[���PKb��\�,6��(��&language/en-GB/en-GB.mod_stats_admin.ininu�[���PKb��\�@��"�&language/en-GB/en-GB.com_login.ininu�[���PKb��\��N���+r�&language/en-GB/en-GB.plg_finder_content.ininu�[���PKb��\x4DX��$e�&language/en-GB/en-GB.mod_version.ininu�[���PKb��\�D�?aa*I�&language/en-GB/en-GB.com_installer.sys.ininu�[���PKb��\��:.�&language/en-GB/en-GB.plg_search_categories.ininu�[���PKb��\��;{{(��&language/en-GB/en-GB.mod_version.sys.ininu�[���PKb��\e���)T�&language/en-GB/en-GB.com_messages.sys.ininu�[���PKb��\�ץ���#Q�&language/en-GB/en-GB.tpl_hathor.ininu�[���PKb��\��@��+y�&language/en-GB/en-GB.plg_system_sef.sys.ininu�[���PKb��\��oƯ�!_�&language/en-GB/en-GB.mod_feed.ininu�[���PKb��\_��;FF-_�&language/en-GB/en-GB.plg_content_vote.sys.ininu�[���PKb��\y����-�&language/en-GB/en-GB.plg_system_debug.sys.ininu�[���PKb��\V&&)��&language/en-GB/en-GB.plg_system_debug.ininu�[���PKb��\&�0�ff.k 'language/en-GB/en-GB.plg_finder_categories.ininu�[���PKb��\� 8���4/'language/en-GB/en-GB.plg_editors-xtd_article.sys.ininu�[���PKb��\mg7��!J 'language/en-GB/en-GB.tpl_isis.ininu�[���PKb��\/b��0�'language/en-GB/en-GB.plg_authentication_ldap.ininu�[���PKb��\]t*77.�#'language/en-GB/en-GB.plg_captcha_recaptcha.ininu�[���PKb��\j6R��<�<&F4'language/en-GB/en-GB.com_templates.ininu�[���PKb��\�s��55&+q'language/en-GB/en-GB.com_media.sys.ininu�[���PKb��\FN/�(�r'language/en-GB/en-GB.com_modules.sys.ininu�[���PKb��\Y���-u'language/en-GB/en-GB.plg_search_newsfeeds.ininu�[���PKb��\�h��//-�w'language/en-GB/en-GB.plg_user_profile.sys.ininu�[���PKb��\?�FF)y'language/en-GB/en-GB.com_redirect.sys.ininu�[���PKb��\�0� 2�z'language/en-GB/en-GB.plg_system_languagefilter.ininu�[���PKb��\�Q�r 0%�'language/en-GB/en-GB.plg_finder_weblinks.sys.ininu�[���PKb��\��� $��'language/en-GB/en-GB.mod_popular.ininu�[���PKb��\��V V $�'language/en-GB/en-GB.com_plugins.ininu�[���PKb��\rV�V"��'language/en-GB/en-GB.com_users.ininu�[���PKb��\ȏ�++6��'language/en-GB/en-GB.plg_authentication_cookie.sys.ininu�[���PKb��\oP5ZZ$%�'language/en-GB/en-GB.mod_submenu.ininu�[���PKb��\1М�??&�'language/en-GB/en-GB.com_login.sys.ininu�[���PKb��\8I���"h�'language/en-GB/en-GB.mod_login.ininu�[���PKb��\4��11&��'language/en-GB/en-GB.com_menus.sys.ininu�[���PKb��\� ن��%�'language/en-GB/en-GB.tpl_isis.sys.ininu�[���PKb��\��n��0%(language/en-GB/en-GB.plg_user_contactcreator.ininu�[���PKb��\�)� DD+J(language/en-GB/en-GB.com_categories.sys.ininu�[���PKb��\Y�q//+�(language/en-GB/en-GB.plg_content_joomla.ininu�[���PKb��\�!�kNN3s (language/en-GB/en-GB.plg_twofactorauth_totp.sys.ininu�[���PKb��\Hp[��($ (language/en-GB/en-GB.plg_finder_tags.ininu�[���PKb��\FĩG��'"(language/en-GB/en-GB.com_config.sys.ininu�[���PKb��\y���,�(language/en-GB/en-GB.plg_system_redirect.ininu�[���PKb��\~qq, (language/en-GB/en-GB.mod_multilangstatus.ininu�[���PKb��\�����/�(language/en-GB/en-GB.plg_editors_codemirror.ininu�[���PKb��\�P�i��+'(language/en-GB/en-GB.plg_content_finder.ininu�[���PKb��\y�ؓ�5L*(language/en-GB/en-GB.plg_editors-xtd_readmore.sys.ininu�[���PKb��\ހ����0D,(language/en-GB/en-GB.plg_editors-xtd_article.ininu�[���PKb��\V�||4~.(language/en-GB/en-GB.plg_user_contactcreator.sys.ininu�[���PKb��\���$��2^0(language/en-GB/en-GB.plg_captcha_recaptcha.sys.ininu�[���PKb��\tb�I@@*M3(language/en-GB/en-GB.com_templates.sys.ininu�[���PKb��\�çXX-�4(language/en-GB/en-GB.com_joomlaupdate.sys.ininu�[���PKb��\�@ ��#�6(language/en-GB/en-GB.mod_status.ininu�[���PKb��\ى5%��2�;(language/en-GB/en-GB.plg_editors-xtd_pagebreak.ininu�[���PKb��\ޟ9� 3�=(language/en-GB/en-GB.plg_content_loadmodule.sys.ininu�[���PKb��\���CC)g@(language/en-GB/en-GB.plg_user_profile.ininu�[���PKb��\w��'L(language/en-GB/en-GB.mod_custom.sys.ininu�[���PKb��\ -0303&�M(language/en-GB/en-GB.com_languages.ininu�[���PKb��\f�Y_��.m�(language/en-GB/en-GB.plg_system_logout.sys.ininu�[���PKb��\�&O��3��(language/en-GB/en-GB.plg_content_emailcloak.sys.ininu�[���PKb��\d+�;;'l�(language/en-GB/en-GB.com_mailto.sys.ininu�[���PKb��\T��]��-��(language/en-GB/en-GB.plg_finder_newsfeeds.ininu�[���PKb��\!�80bb20�(language/en-GB/en-GB.plg_search_categories.sys.ininu�[���PKb��\~���/�(language/en-GB/en-GB.plg_twofactorauth_totp.ininu�[���PKb��\#%�+aa-�(language/en-GB/en-GB.plg_system_highlight.ininu�[���PKb��\s0�55'̟(language/en-GB/en-GB.com_cpanel.sys.ininu�[���PKb��\��m��(X�(language/en-GB/en-GB.com_contact.sys.ininu�[���PKb��\�n���&J�(language/en-GB/en-GB.com_users.sys.ininu�[���PKb��\\7EE)T�(language/en-GB/en-GB.plg_editors_none.ininu�[���PKb��\Z�G�]]0�(language/en-GB/en-GB.plg_search_contacts.sys.ininu�[���PKb��\3-HE��6��(language/en-GB/en-GB.plg_quickicon_extensionupdate.ininu�[���PKb��\A�Y���2е(language/en-GB/en-GB.plg_authentication_cookie.ininu�[���PKb��\ �X8*�(language/en-GB/en-GB.plg_system_logout.ininu�[���PKb��\�I��,p�(language/en-GB/en-GB.plg_search_weblinks.ininu�[���PKb��\�7��\\&ܿ(language/en-GB/en-GB.com_admin.sys.ininu�[���PKb��\��]]0��(language/en-GB/en-GB.plg_search_weblinks.sys.ininu�[���PKb��\Wr_��%�%&K�(language/en-GB/en-GB.com_newsfeeds.ininu�[���PKb��\Q�uFMM/;�(language/en-GB/en-GB.plg_search_content.sys.ininu�[���PKb��\��a��7��(language/en-GB/en-GB.plg_quickicon_joomlaupdate.sys.ininu�[���PKb��\�yW���'��(language/en-GB/en-GB.com_search.sys.ininu�[���PKb��\|&Pw�M�M&7�(language/en-GB/en-GB.com_installer.ininu�[���PKb��\r\\1k=)language/en-GB/en-GB.plg_extension_joomla.sys.ininu�[���PKb��\硸Ǧ�/(?)language/en-GB/en-GB.plg_content_joomla.sys.ininu�[���PKb��\� ��L L #-A)language/en-GB/en-GB.com_search.ininu�[���PKb��\��AA,�J)language/en-GB/en-GB.plg_search_tags.sys.ininu�[���PKb��\Z1g�1iL)language/en-GB/en-GB.plg_finder_newsfeeds.sys.ininu�[���PKb��\,^QQ3�N)language/en-GB/en-GB.plg_quickicon_joomlaupdate.ininu�[���PKb��\�.]DD%�S)language/en-GB/en-GB.com_messages.ininu�[���PKb��\!�ܹ��"1c)language/en-GB/en-GB.com_media.ininu�[���PKb��\��j�[[!a�)language/en-GB/en-GB.localise.phpnu�[���PKb��\N6<�, �)language/en-GB/en-GB.mod_stats_admin.sys.ininu�[���PKb��\@ h�5m�)language/en-GB/en-GB.plg_authentication_gmail.sys.ininu�[���PKb��\�呫�*�)language/en-GB/en-GB.mod_quickicon.sys.ininu�[���PKb��\)�s����#�)language/en-GB/en-GB.lib_joomla.ininu�[���PKb��\mb��(!f*language/en-GB/en-GB.plg_user_joomla.ininu�[���PKb��\"���4�n*language/en-GB/en-GB.plg_authentication_ldap.sys.ininu�[���PKb��\2���3�p*language/en-GB/en-GB.plg_installer_webinstaller.ininu�[���PKb��\�y��xx2t*language/en-GB/en-GB.plg_authentication_joomla.ininu�[���PKb��\m��@��/�v*language/en-GB/en-GB.plg_content_finder.sys.ininu�[���PKb��\�_<���+�x*language/en-GB/en-GB.plg_system_p3p.sys.ininu�[���PKb��\+S�x��:*{*language/en-GB/en-GB.plg_quickicon_extensionupdate.sys.ininu�[���PKb��\�ʎ���)q}*language/en-GB/en-GB.com_weblinks.sys.ininu�[���PKb��\Ѻu��!Ƃ*language/en-GB/en-GB.com_ajax.ininu�[���PKb��\S���[[υ*language/en-GB/en-GB.xmlnu�[���PKb��\��rr0r�*language/en-GB/en-GB.plg_editors_tinymce.sys.ininu�[���PKb��\��d���,D�*language/en-GB/en-GB.plg_finder_weblinks.ininu�[���PKb��\���u4 4 1l�*language/en-GB/en-GB.plg_authentication_gmail.ininu�[���PKb��\�p]�oo/�*language/en-GB/en-GB.plg_finder_content.sys.ininu�[���PKb��\���s s 2ϙ*language/en-GB/en-GB.plg_twofactorauth_yubikey.ininu�[���PKb��\G���1��*language/en-GB/en-GB.plg_system_highlight.sys.ininu�[���PKb��\睠�UU,�*language/en-GB/en-GB.plg_user_joomla.sys.ininu�[���PKb��\E�J�+�+"��*language/en-GB/en-GB.com_admin.ininu�[���PKb��\iN���'~�*language/en-GB/en-GB.com_finder.sys.ininu�[���PKb��\�^�tt'w�*language/en-GB/en-GB.mod_status.sys.ininu�[���PKb��\V]*��B�*manifests/libraries/fof.xmlnu�[���PKb��\��J��z�*manifests/libraries/phputf8.xmlnu�[���PKb��\n�u�tti�*manifests/libraries/joomla.xmlnu�[���PKb��\X�f��!+�*manifests/libraries/simplepie.xmlnu�[���PKb��\e��$��$,�*manifests/libraries/idna_convert.xmlnu�[���PKb��\�F�%BB.�*manifests/libraries/phpass.xmlnu�[���PKb��\�V���*manifests/packages/index.htmlnu�[���PKb��\�R�QQ*�*manifests/files/joomla.xmlnu�[���PKb��\��__"�*components/com_tags/tables/tag.phpnu�[���PKb��\�33'v+components/com_tags/controllers/tag.phpnu�[���PKb��\ƫ���(+components/com_tags/controllers/tags.phpnu�[���PKb��\�����+components/com_tags/tags.xmlnu�[���PKb��\/����)�)� +components/com_tags/config.xmlnu�[���PKb��\(��11K+components/com_tags/access.xmlnu�[���PKb��\�Z�QQ�N+components/com_tags/tags.phpnu�[���PKb��\?���YY:Q+components/com_tags/views/tags/tmpl/default_batch_body.phpnu�[���PKb��\� ��<�S+components/com_tags/views/tags/tmpl/default_batch_footer.phpnu�[���PKb��\���(�(/W+components/com_tags/views/tags/tmpl/default.phpnu�[���PKb��\���4��5^�+components/com_tags/views/tags/tmpl/default_batch.phpnu�[���PKb��\@���,��+components/com_tags/views/tags/view.html.phpnu�[���PKb��\��q��3��+components/com_tags/views/tag/tmpl/edit_options.phpnu�[���PKb��\�E��+�+components/com_tags/views/tag/tmpl/edit.phpnu�[���PKb��\Q��/ii4�+components/com_tags/views/tag/tmpl/edit_metadata.phpnu�[���PKb��\���! ! +�+components/com_tags/views/tag/view.html.phpnu�[���PKb��\`�o�CC$`�+components/com_tags/helpers/tags.phpnu�[���PKb��\M;����(��+components/com_tags/models/forms/tag.xmlnu�[���PKb��\�iuH�)�)">�+components/com_tags/models/tag.phpnu�[���PKb��\Ck�b #| ,components/com_tags/models/tags.phpnu�[���PKb��\#�W���"�),components/com_tags/controller.phpnu�[���PKb��\�MHFF�/,components/com_cache/config.xmlnu�[���PKb��\�AV V 1�2,components/com_cache/views/cache/tmpl/default.phpnu�[���PKb��\�e���.:<,components/com_cache/views/cache/view.html.phpnu�[���PKb��\ᐜs1OD,components/com_cache/views/purge/tmpl/default.phpnu�[���PKb��\Y�$$./H,components/com_cache/views/purge/view.html.phpnu�[���PKb��\ܟ�55�M,components/com_cache/cache.phpnu�[���PKb��\8�ǾEE&4P,components/com_cache/helpers/cache.phpnu�[���PKb��\c|I��%�U,components/com_cache/models/cache.phpnu�[���PKb��\��9c[ [ #f,components/com_cache/controller.phpnu�[���PKb��\��j���p,components/com_cache/cache.xmlnu�[���PKb��\d��:��"�t,components/com_content/content.phpnu�[���PKb��\-�#SS*�w,components/com_content/tables/featured.phpnu�[���PKb��\��4NN.Xz,components/com_content/controllers/article.phpnu�[���PKb��\]�m�88/�,components/com_content/controllers/featured.phpnu�[���PKb��\�0� /��,components/com_content/controllers/articles.phpnu�[���PKb��\b�X��\�\!��,components/com_content/config.xmlnu�[���PKb��\K��c##!�,components/com_content/access.xmlnu�[���PKb��\��P�$!$!6]-components/com_content/views/featured/tmpl/default.phpnu�[���PKb��\��Tͣ�3�%-components/com_content/views/featured/view.html.phpnu�[���PKb��\v�ԭ�A�5-components/com_content/views/articles/tmpl/default_batch_body.phpnu�[���PKb��\M�X[""C:-components/com_content/views/articles/tmpl/default_batch_footer.phpnu�[���PKb��\v vw��4�=-components/com_content/views/articles/tmpl/modal.phpnu�[���PKb��\#z''6�[-components/com_content/views/articles/tmpl/default.phpnu�[���PKb��\ss���<�-components/com_content/views/articles/tmpl/default_batch.phpnu�[���PKb��\r�m��3�-components/com_content/views/articles/view.html.phpnu�[���PKb��\O�D�UU?�-components/com_content/views/article/tmpl/edit_associations.phpnu�[���PKb��\�oѬ772٠-components/com_content/views/article/tmpl/edit.phpnu�[���PKb��\O�D�UU@r�-components/com_content/views/article/tmpl/modal_associations.phpnu�[���PKb��\��y��37�-components/com_content/views/article/tmpl/modal.phpnu�[���PKb��\�L�%TT;I�-components/com_content/views/article/tmpl/edit_metadata.phpnu�[���PKb��\�L�%TT<�-components/com_content/views/article/tmpl/modal_metadata.phpnu�[���PKb��\�Z~,7��-components/com_content/views/article/tmpl/pagebreak.phpnu�[���PKb��\q�FA��2>�-components/com_content/views/article/view.html.phpnu�[���PKb��\ŕ�*z�-components/com_content/helpers/content.phpnu�[���PKb��\�|AA<��-components/com_content/helpers/html/contentadministrator.phpnu�[���PKb��\�T�և�"�.components/com_content/content.xmlnu�[���PKb��\�P�??6p .components/com_content/models/fields/modal/article.phpnu�[���PKb��\����X�X/ .components/com_content/models/forms/article.xmlnu�[���PKb��\�N(���7y.components/com_content/models/forms/filter_articles.xmlnu�[���PKb��\r|��7�.components/com_content/models/forms/filter_featured.xmlnu�[���PKb��\�U�|�M�M) �.components/com_content/models/article.phpnu�[���PKb��\�x�J��*#�.components/com_content/models/featured.phpnu�[���PKb��\~�=��)J�.components/com_content/models/feature.phpnu�[���PKb��\d��&�)�)*o/components/com_content/models/articles.phpnu�[���PKb��\'s����%s-/components/com_content/controller.phpnu�[���PKb��\Ng``&�3/components/com_languages/languages.phpnu�[���PKb��\~����2i6/components/com_languages/controllers/languages.phpnu�[���PKb��\�5a�2�</components/com_languages/controllers/installed.phpnu�[���PKb��\��6��2A/components/com_languages/controllers/overrides.phpnu�[���PKb��\�J�QQ1G/components/com_languages/controllers/language.phpnu�[���PKb��\0�)��1�J/components/com_languages/controllers/override.phpnu�[���PKb��\�8v�>>5�b/components/com_languages/controllers/strings.json.phpnu�[���PKb��\�� ��#Xf/components/com_languages/config.xmlnu�[���PKb��\[�zn��#uh/components/com_languages/access.xmlnu�[���PKb��\��~~?�k/components/com_languages/views/multilangstatus/tmpl/default.phpnu�[���PKb��\%�jԟ�<��/components/com_languages/views/multilangstatus/view.html.phpnu�[���PKb��\���C�$�$9��/components/com_languages/views/languages/tmpl/default.phpnu�[���PKb��\3�h��6��/components/com_languages/views/languages/view.html.phpnu�[���PKb��\��@#��9��/components/com_languages/views/overrides/tmpl/default.phpnu�[���PKb��\m[Ҋ � 6W�/components/com_languages/views/overrides/view.html.phpnu�[���PKb��\%x�CC5G�/components/com_languages/views/override/tmpl/edit.phpnu�[���PKb��\�[3G� � 5��/components/com_languages/views/override/view.html.phpnu�[���PKb��\��&T��9�/components/com_languages/views/installed/tmpl/default.phpnu�[���PKb��\o�& & 630components/com_languages/views/installed/view.html.phpnu�[���PKb��\;��9 5�0components/com_languages/views/language/tmpl/edit.phpnu�[���PKb��\m��HH5$"0components/com_languages/views/language/view.html.phpnu�[���PKb��\[�4���.�*0components/com_languages/helpers/languages.phpnu�[���PKb��\���[3�70components/com_languages/helpers/html/languages.phpnu�[���PKb��\��E�i i 1/@0components/com_languages/helpers/jsonresponse.phpnu�[���PKb��\�? ɫ�4�J0components/com_languages/helpers/multilangstatus.phpnu�[���PKb��\R ��-]0components/com_languages/models/languages.phpnu�[���PKb��\i�>^^-}s0components/com_languages/models/installed.phpnu�[���PKb��\��Ӷ�28�0components/com_languages/models/forms/override.xmlnu�[���PKb��\T�Il� � 2P�0components/com_languages/models/forms/language.xmlnu�[���PKb��\(h�oo-j�0components/com_languages/models/overrides.phpnu�[���PKb��\r ��^^,6�0components/com_languages/models/language.phpnu�[���PKb��\�;tK��,��0components/com_languages/models/override.phpnu�[���PKb��\Y��}77+G�0components/com_languages/models/strings.phpnu�[���PKb��\`RX�=='�1components/com_languages/controller.phpnu�[���PKb��\�9t�&m 1components/com_languages/languages.xmlnu�[���PKb��\���\\-�1components/com_categories/tables/category.phpnu�[���PKb��\�|���2�1components/com_categories/controllers/category.phpnu�[���PKb��\��U�n n 4�(1components/com_categories/controllers/categories.phpnu�[���PKb��\��ar(�61components/com_categories/categories.xmlnu�[���PKb��\�����(2;1components/com_categories/categories.phpnu�[���PKb��\rPRZnnFS?1components/com_categories/views/categories/tmpl/default_batch_body.phpnu�[���PKb��\�}��H7G1components/com_categories/views/categories/tmpl/default_batch_footer.phpnu�[���PKb��\s��'��9rJ1components/com_categories/views/categories/tmpl/modal.phpnu�[���PKb��\����!!;�e1components/com_categories/views/categories/tmpl/default.phpnu�[���PKb��\�&� � � A�1components/com_categories/views/categories/tmpl/default_batch.phpnu�[���PKb��\{#ņ@@8T�1components/com_categories/views/categories/view.html.phpnu�[���PKb��\ۍ��//B��1components/com_categories/views/category/tmpl/edit_extrafields.phpnu�[���PKb��\�y?XXC��1components/com_categories/views/category/tmpl/edit_associations.phpnu�[���PKb��\ۍ��//>h�1components/com_categories/views/category/tmpl/edit_options.phpnu�[���PKb��\�K����?�1components/com_categories/views/category/tmpl/modal_options.phpnu�[���PKb��\7���CZ�1components/com_categories/views/category/tmpl/modal_extrafields.phpnu�[���PKb��\�,��6�1components/com_categories/views/category/tmpl/edit.phpnu�[���PKb��\�y?XXD��1components/com_categories/views/category/tmpl/modal_associations.phpnu�[���PKb��\��)�EE7��1components/com_categories/views/category/tmpl/modal.phpnu�[���PKb��\)�(}TT?I�1components/com_categories/views/category/tmpl/edit_metadata.phpnu�[���PKb��\)�(}TT@�1components/com_categories/views/category/tmpl/modal_metadata.phpnu�[���PKb��\���muu6��1components/com_categories/views/category/view.html.phpnu�[���PKb��\y�e+ + B��1components/com_categories/helpers/html/categoriesadministrator.phpnu�[���PKb��\�|�qq0H2components/com_categories/helpers/categories.phpnu�[���PKb��\�W���12components/com_categories/helpers/association.phpnu�[���PKb��\9��vv8s2components/com_categories/models/fields/categoryedit.phpnu�[���PKb��\Q��ݶ�:Q22components/com_categories/models/fields/categoryparent.phpnu�[���PKb��\0�ue��:qE2components/com_categories/models/fields/modal/category.phpnu�[���PKb��\��^��3�[2components/com_categories/models/forms/category.xmlnu�[���PKb��\��y)AA<�p2components/com_categories/models/forms/filter_categories.xmlnu�[���PKb��\���{�{-�|2components/com_categories/models/category.phpnu�[���PKb��\k����"�"/�2components/com_categories/models/categories.phpnu�[���PKb��\xƙ}� � (�3components/com_categories/controller.phpnu�[���PKb��\�D"���)'3components/com_templates/tables/style.phpnu�[���PKb��\9u=��.43components/com_templates/controllers/style.phpnu�[���PKb��\J&\~SS1�D3components/com_templates/controllers/template.phpnu�[���PKb��\�M�%ff/W�3components/com_templates/controllers/styles.phpnu�[���PKb��\�0.|mm#�3components/com_templates/config.xmlnu�[���PKb��\>�jc66#ܬ3components/com_templates/access.xmlnu�[���PKb��\��L���&e�3components/com_templates/templates.phpnu�[���PKb��\M�!���9��3components/com_templates/views/templates/tmpl/default.phpnu�[���PKb��\��W* * 6��3components/com_templates/views/templates/view.html.phpnu�[���PKb��\M'2�3components/com_templates/views/style/view.json.phpnu�[���PKb��\:`�=��3components/com_templates/views/style/tmpl/edit_assignment.phpnu�[���PKb��\� ;//:Z�3components/com_templates/views/style/tmpl/edit_options.phpnu�[���PKb��\��I� � 2��3components/com_templates/views/style/tmpl/edit.phpnu�[���PKb��\��� 2��3components/com_templates/views/style/view.html.phpnu�[���PKb��\a,�Gww6Q�3components/com_templates/views/styles/tmpl/default.phpnu�[���PKb��\zEnYY3.4components/com_templates/views/styles/view.html.phpnu�[���PKb��\S��OOD�%4components/com_templates/views/template/tmpl/default_description.phpnu�[���PKb��\�&��__9�)4components/com_templates/views/template/tmpl/readonly.phpnu�[���PKb��\FIsO��=u.4components/com_templates/views/template/tmpl/default_tree.phpnu�[���PKb��\�@�P�W�W8�44components/com_templates/views/template/tmpl/default.phpnu�[���PKb��\b�W�@،4components/com_templates/views/template/tmpl/default_folders.phpnu�[���PKb��\D����5\�4components/com_templates/views/template/view.html.phpnu�[���PKb��\V���$$&h�4components/com_templates/templates.xmlnu�[���PKb��\�kVh-�4components/com_templates/helpers/template.phpnu�[���PKb��\�$B�� � 3X�4components/com_templates/helpers/html/templates.phpnu�[���PKb��\� GG.f�4components/com_templates/helpers/templates.phpnu�[���PKb��\�r5zEzE)�4components/com_templates/models/style.phpnu�[���PKb��\� H����,�'5components/com_templates/models/template.phpnu�[���PKb��\�4���*Ϊ5components/com_templates/models/styles.phpnu�[���PKb��\1���??4�5components/com_templates/models/forms/style_site.xmlnu�[���PKb��\~ ���0��5components/com_templates/models/forms/source.xmlnu�[���PKb��\Z���cc=��5components/com_templates/models/forms/style_administrator.xmlnu�[���PKb��\YUZ��/l�5components/com_templates/models/forms/style.xmlnu�[���PKb��\:� ��-S�5components/com_templates/models/templates.phpnu�[���PKb��\�q��'{�5components/com_templates/controller.phpnu�[���PKb��\Tl߀��*��5components/com_postinstall/postinstall.phpnu�[���PKb��\��k�pp2��5components/com_postinstall/controllers/message.phpnu�[���PKb��\9�����"��5components/com_postinstall/fof.xmlnu�[���PKb��\�L_RR%��5components/com_postinstall/config.xmlnu�[���PKb��\?�6�NN%*�5components/com_postinstall/access.xmlnu�[���PKb��\a�,���&��5components/com_postinstall/toolbar.phpnu�[���PKb��\�;�w��:��5components/com_postinstall/views/messages/tmpl/default.phpnu�[���PKb��\����71�5components/com_postinstall/views/messages/view.html.phpnu�[���PKb��\�ʳ::*�6components/com_postinstall/postinstall.xmlnu�[���PKb��\��R�9�9.6components/com_postinstall/models/messages.phpnu�[���PKb��\����A6components/com_users/users.phpnu�[���PKb��\�MB��$�C6components/com_users/tables/note.phpnu�[���PKb��\�zVs22*1S6components/com_users/controllers/users.phpnu�[���PKb��\�A)�_6components/com_users/controllers/user.phpnu�[���PKb��\킪��*1h6components/com_users/controllers/level.phpnu�[���PKb��\�Z����+�p6components/com_users/controllers/groups.phpnu�[���PKb��\�����)�|6components/com_users/controllers/mail.phpnu�[���PKb��\����zz*��6components/com_users/controllers/group.phpnu�[���PKb��\������+҈6components/com_users/controllers/levels.phpnu�[���PKb��\���``) �6components/com_users/controllers/note.phpnu�[���PKb��\@' ��*Ñ6components/com_users/controllers/notes.phpnu�[���PKb��\�������6components/com_users/config.xmlnu�[���PKb��\Z|X�dd9�6components/com_users/access.xmlnu�[���PKb��\�7�^ ^ -�6components/com_users/views/note/tmpl/edit.phpnu�[���PKb��\]saҜ�-��6components/com_users/views/note/view.html.phpnu�[���PKb��\���eEE5��6components/com_users/views/debuguser/tmpl/default.phpnu�[���PKb��\Ә��CC2J�6components/com_users/views/debuguser/view.html.phpnu�[���PKb��\��3�nn.��6components/com_users/views/group/tmpl/edit.phpnu�[���PKb��\�<�^^.��6components/com_users/views/group/view.html.phpnu�[���PKb��\��P��0w�6components/com_users/views/mail/tmpl/default.phpnu�[���PKb��\<���-�7components/com_users/views/mail/view.html.phpnu�[���PKb��\�]�*11- 7components/com_users/views/user/tmpl/edit.phpnu�[���PKb��\�n$a��4�"7components/com_users/views/user/tmpl/edit_groups.phpnu�[���PKb��\�� � -�$7components/com_users/views/user/view.html.phpnu�[���PKb��\�|�zz.�.7components/com_users/views/level/tmpl/edit.phpnu�[���PKb��\$\mDjj.�;7components/com_users/views/level/view.html.phpnu�[���PKb��\��R�ee/gD7components/com_users/views/notes/tmpl/modal.phpnu�[���PKb��\���+��1+K7components/com_users/views/notes/tmpl/default.phpnu�[���PKb��\pq���.ng7components/com_users/views/notes/view.html.phpnu�[���PKb��\E\٤��<ex7components/com_users/views/users/tmpl/default_batch_body.phpnu�[���PKb��\�n'�PP>�7components/com_users/views/users/tmpl/default_batch_footer.phpnu�[���PKb��\U���/V�7components/com_users/views/users/tmpl/modal.phpnu�[���PKb��\*����1ʓ7components/com_users/views/users/tmpl/default.phpnu�[���PKb��\ E��� � 7ɰ7components/com_users/views/users/tmpl/default_batch.phpnu�[���PKb��\�A�zz.�7components/com_users/views/users/view.html.phpnu�[���PKb��\��/##2��7components/com_users/views/groups/tmpl/default.phpnu�[���PKb��\��N� � /F�7components/com_users/views/groups/view.html.phpnu�[���PKb��\o�SXX2,�7components/com_users/views/levels/tmpl/default.phpnu�[���PKb��\k�lp� � /�8components/com_users/views/levels/view.html.phpnu�[���PKb��\����KK68components/com_users/views/debuggroup/tmpl/default.phpnu�[���PKb��\ b�!!3�+8components/com_users/views/debuggroup/view.html.phpnu�[���PKb��\kwrȣ�&:78components/com_users/helpers/users.phpnu�[���PKb��\�/l�JJ+3M8components/com_users/helpers/html/users.phpnu�[���PKb��\}�--&�d8components/com_users/helpers/debug.phpnu�[���PKb��\.��.UU[t8components/com_users/users.xmlnu�[���PKb��\_�!G,G,%�y8components/com_users/models/users.phpnu�[���PKb��\l|k�FF2��8components/com_users/models/fields/groupparent.phpnu�[���PKb��\1z�{�{$B�8components/com_users/models/user.phpnu�[���PKb��\?=_RR2�+9components/com_users/models/forms/filter_users.xmlnu�[���PKb��\��E+D79components/com_users/models/forms/level.xmlnu�[���PKb��\I�8@��+�99components/com_users/models/forms/group.xmlnu�[���PKb��\} N�@ @ *�<9components/com_users/models/forms/note.xmlnu�[���PKb��\8��m��*PG9components/com_users/models/forms/mail.xmlnu�[���PKb��\�>���*>M9components/com_users/models/forms/user.xmlnu�[���PKb��\"�=���%~`9components/com_users/models/level.phpnu�[���PKb��\)�H��&~u9components/com_users/models/groups.phpnu�[���PKb��\�n%R��$��9components/com_users/models/mail.phpnu�[���PKb��\�~8Y*�9components/com_users/models/debuggroup.phpnu�[���PKb��\p#�!�!%T�9components/com_users/models/group.phpnu�[���PKb��\������&\�9components/com_users/models/levels.phpnu�[���PKb��\�!����)T�9components/com_users/models/debuguser.phpnu�[���PKb��\ۯ�v $�:components/com_users/models/note.phpnu�[���PKb��\jZC�FF%:components/com_users/models/notes.phpnu�[���PKb��\�����#�+:components/com_users/controller.phpnu�[���PKb��\��NN�8:components/com_ajax/ajax.phpnu�[���PKb��\4����::components/com_ajax/ajax.xmlnu�[���PKb��\C�5HH!I>:components/com_checkin/config.xmlnu�[���PKb��\[Y�;;"�@:components/com_checkin/checkin.phpnu�[���PKb��\_RLk��5oC:components/com_checkin/views/checkin/tmpl/default.phpnu�[���PKb��\C[s�gg2ZO:components/com_checkin/views/checkin/view.html.phpnu�[���PKb��\u�^��"#V:components/com_checkin/checkin.xmlnu�[���PKb��\��l��)Z:components/com_checkin/models/checkin.phpnu�[���PKb��\C��XX%dj:components/com_checkin/controller.phpnu�[���PKb��\n Yݱ�,s:components/com_admin/controllers/profile.phpnu�[���PKb��\�-g�� � 1{:components/com_admin/postinstall/eaccelerator.phpnu�[���PKb��\����-{�:components/com_admin/postinstall/htaccess.phpnu�[���PKb��\�<U�MM/o�:components/com_admin/postinstall/phpversion.phpnu�[���PKb��\�-�|��6�:components/com_admin/postinstall/languageaccess340.phpnu�[���PKb��\�)�L��P�:components/com_admin/admin.xmlnu�[���PKb��\���1�1Z�:components/com_admin/script.phpnu�[���PKb��\Ԫ�6��*�;components/com_admin/admin.phpnu�[���PKb��\u���;V�;components/com_admin/sql/updates/mysql/3.4.0-2015-02-26.sqlnu�[���PKb��\)0�g::0��;components/com_admin/sql/updates/mysql/3.1.3.sqlnu�[���PKb��\c�=��;\�;components/com_admin/sql/updates/mysql/3.4.0-2014-12-03.sqlnu�[���PKb��\PɐUU;k�;components/com_admin/sql/updates/mysql/3.3.4-2014-08-03.sqlnu�[���PKb��\K���@@;+�;components/com_admin/sql/updates/mysql/2.5.0-2011-12-20.sqlnu�[���PKb��\S�4q;��;components/com_admin/sql/updates/mysql/2.5.1-2012-01-26.sqlnu�[���PKb��\59�S��;D�;components/com_admin/sql/updates/mysql/3.3.0-2014-04-02.sqlnu�[���PKb��\�e���;I�;components/com_admin/sql/updates/mysql/2.5.0-2011-12-24.sqlnu�[���PKb��\L��F� � ;v�;components/com_admin/sql/updates/mysql/2.5.0-2011-12-22.sqlnu�[���PKb��\��/990��;components/com_admin/sql/updates/mysql/3.0.2.sqlnu�[���PKb��\�o�`QQ;7�;components/com_admin/sql/updates/mysql/2.5.0-2012-01-10.sqlnu�[���PKb��\(��nhh0��;components/com_admin/sql/updates/mysql/3.2.1.sqlnu�[���PKb��\�����=��;components/com_admin/sql/updates/mysql/2.5.0-2011-12-21-1.sqlnu�[���PKb��\!4a!��;�;components/com_admin/sql/updates/mysql/3.3.6-2014-09-30.sqlnu�[���PKb��\�_��\\;L�;components/com_admin/sql/updates/mysql/2.5.4-2012-03-19.sqlnu�[���PKb��\� ���;�;components/com_admin/sql/updates/mysql/3.2.2-2013-12-28.sqlnu�[���PKb��\#�3 # #0*�;components/com_admin/sql/updates/mysql/3.1.2.sqlnu�[���PKb��\?�ݿw w =�<components/com_admin/sql/updates/mysql/2.5.0-2011-12-21-2.sqlnu�[���PKb��\ݡ)�;{6<components/com_admin/sql/updates/mysql/3.3.0-2014-02-16.sqlnu�[���PKb��\��ͪll0z7<components/com_admin/sql/updates/mysql/3.1.4.sqlnu�[���PKb��\���1::0F9<components/com_admin/sql/updates/mysql/3.1.5.sqlnu�[���PKb��\lG���;�9<components/com_admin/sql/updates/mysql/2.5.0-2011-12-16.sqlnu�[���PKb��\H=���;@;<components/com_admin/sql/updates/mysql/3.4.0-2014-08-24.sqlnu�[���PKb��\sS�/;�=<components/com_admin/sql/updates/mysql/3.4.0-2015-01-21.sqlnu�[���PKb��\$.5�^^;r?<components/com_admin/sql/updates/mysql/2.5.0-2012-01-14.sqlnu�[���PKb��\� &&;;@<components/com_admin/sql/updates/mysql/2.5.2-2012-03-05.sqlnu�[���PKb��\@݂���;�@<components/com_admin/sql/updates/mysql/3.4.0-2014-09-16.sqlnu�[���PKb��\T�990�A<components/com_admin/sql/updates/mysql/2.5.6.sqlnu�[���PKb��\���990ZB<components/com_admin/sql/updates/mysql/3.1.1.sqlnu�[���PKb��\Si&��;�B<components/com_admin/sql/updates/mysql/3.2.2-2014-01-15.sqlnu�[���PKb��\�ݟ�ff;CE<components/com_admin/sql/updates/mysql/3.2.2-2014-01-18.sqlnu�[���PKb��\�qU�``;F<components/com_admin/sql/updates/mysql/3.2.2-2014-01-23.sqlnu�[���PKb��\��rlss;�H<components/com_admin/sql/updates/mysql/3.2.2-2014-01-08.sqlnu�[���PKb��\����nn0�J<components/com_admin/sql/updates/mysql/3.0.3.sqlnu�[���PKb��\�;{O=#=#0�K<components/com_admin/sql/updates/mysql/3.0.0.sqlnu�[���PKb��\� &&;(o<components/com_admin/sql/updates/mysql/2.5.3-2012-03-13.sqlnu�[���PKb��\f��]uu0�o<components/com_admin/sql/updates/mysql/2.5.5.sqlnu�[���PKb��\��ܶ990�q<components/com_admin/sql/updates/mysql/3.0.1.sqlnu�[���PKb��\�=�/;'r<components/com_admin/sql/updates/mysql/2.5.0-2011-12-23.sqlnu�[���PKb��\���;�z<components/com_admin/sql/updates/mysql/3.4.0-2014-09-01.sqlnu�[���PKb��\�����;�}<components/com_admin/sql/updates/mysql/3.2.2-2013-12-22.sqlnu�[���PKb��\����;<components/com_admin/sql/updates/mysql/3.2.3-2014-02-20.sqlnu�[���PKb��\ �G���;�<components/com_admin/sql/updates/mysql/2.5.4-2012-03-18.sqlnu�[���PKb��\a���;N�<components/com_admin/sql/updates/mysql/2.5.0-2011-12-19.sqlnu�[���PKb��\j ʵM�M0��<components/com_admin/sql/updates/mysql/3.2.0.sqlnu�[���PKb��\��J�F�F0��<components/com_admin/sql/updates/mysql/3.1.0.sqlnu�[���PKb��\�m�WW;�=components/com_admin/sql/updates/mysql/2.5.0-2011-12-06.sqlnu�[���PKb��\_�88;e"=components/com_admin/sql/updates/mysql/3.4.0-2014-10-20.sqlnu�[���PKb��\S�0#=components/com_admin/sql/updates/mysql/2.5.7.sqlnu�[���PKb��\BU��>l%=components/com_admin/sql/updates/sqlazure/3.4.0-2015-02-26.sqlnu�[���PKb��\)0�g::3�'=components/com_admin/sql/updates/sqlazure/3.1.3.sqlnu�[���PKb��\�~����>v(=components/com_admin/sql/updates/sqlazure/3.4.0-2014-12-03.sqlnu�[���PKb��\_a��VV>�)=components/com_admin/sql/updates/sqlazure/3.3.4-2014-08-03.sqlnu�[���PKb��\S����>L*=components/com_admin/sql/updates/sqlazure/3.3.0-2014-04-02.sqlnu�[���PKb��\��/993�,=components/com_admin/sql/updates/sqlazure/3.0.2.sqlnu�[���PKb��\i��hh3;-=components/com_admin/sql/updates/sqlazure/3.2.1.sqlnu�[���PKb��\�Ù��>.=components/com_admin/sql/updates/sqlazure/3.3.6-2014-09-30.sqlnu�[���PKb��\��,QQ>F0=components/com_admin/sql/updates/sqlazure/2.5.4-2012-03-19.sqlnu�[���PKb��\t�&Ӭ�>2=components/com_admin/sql/updates/sqlazure/3.2.2-2013-12-28.sqlnu�[���PKb��\*x�p�"�"33=components/com_admin/sql/updates/sqlazure/3.1.2.sqlnu�[���PKb��\��g�EE>V=components/com_admin/sql/updates/sqlazure/3.3.0-2014-02-16.sqlnu�[���PKb��\�VAY��32W=components/com_admin/sql/updates/sqlazure/3.1.4.sqlnu�[���PKb��\���1::3,Y=components/com_admin/sql/updates/sqlazure/3.1.5.sqlnu�[���PKb��\��D���>�Y=components/com_admin/sql/updates/sqlazure/3.4.0-2014-08-24.sqlnu�[���PKb��\ު"}}>\=components/com_admin/sql/updates/sqlazure/3.4.0-2015-01-21.sqlnu�[���PKb��\� &&>�]=components/com_admin/sql/updates/sqlazure/2.5.2-2012-03-05.sqlnu�[���PKb��\d�h���>�^=components/com_admin/sql/updates/sqlazure/3.4.0-2014-09-16.sqlnu�[���PKb��\T�993�_=components/com_admin/sql/updates/sqlazure/2.5.6.sqlnu�[���PKb��\���9933`=components/com_admin/sql/updates/sqlazure/3.1.1.sqlnu�[���PKb��\�� o��>�`=components/com_admin/sql/updates/sqlazure/3.4.4-2015-07-11.sqlnu�[���PKb��\��R��>�b=components/com_admin/sql/updates/sqlazure/3.2.2-2014-01-15.sqlnu�[���PKb��\��CYgg>'e=components/com_admin/sql/updates/sqlazure/3.2.2-2014-01-18.sqlnu�[���PKb��\ּ1YY>�e=components/com_admin/sql/updates/sqlazure/3.2.2-2014-01-23.sqlnu�[���PKb��\U����>�g=components/com_admin/sql/updates/sqlazure/3.2.2-2014-01-08.sqlnu�[���PKb��\B��W113�i=components/com_admin/sql/updates/sqlazure/3.0.3.sqlnu�[���PKb��\��::3�j=components/com_admin/sql/updates/sqlazure/3.0.0.sqlnu�[���PKb��\� &&>"k=components/com_admin/sql/updates/sqlazure/2.5.3-2012-03-13.sqlnu�[���PKb��\Ԍ@��3�k=components/com_admin/sql/updates/sqlazure/2.5.5.sqlnu�[���PKb��\�5�::3�l=components/com_admin/sql/updates/sqlazure/3.0.1.sqlnu�[���PKb��\�B� >�m=components/com_admin/sql/updates/sqlazure/3.4.0-2014-09-01.sqlnu�[���PKb��\qJ>��>%r=components/com_admin/sql/updates/sqlazure/3.2.2-2013-12-22.sqlnu�[���PKb��\�Y�G��>2s=components/com_admin/sql/updates/sqlazure/3.2.3-2014-02-20.sqlnu�[���PKb��\�����>=t=components/com_admin/sql/updates/sqlazure/2.5.4-2012-03-18.sqlnu�[���PKb��\��1�L�L3hy=components/com_admin/sql/updates/sqlazure/3.2.0.sqlnu�[���PKb��\x5p7U7U3j�=components/com_admin/sql/updates/sqlazure/3.1.0.sqlnu�[���PKb��\��zu88>>components/com_admin/sql/updates/sqlazure/3.4.0-2014-10-20.sqlnu�[���PKb��\^�<��3�>components/com_admin/sql/updates/sqlazure/2.5.7.sqlnu�[���PKb��\vB�@>components/com_admin/sql/updates/postgresql/3.4.0-2015-02-26.sqlnu�[���PKb��\)0�g::5w!>components/com_admin/sql/updates/postgresql/3.1.3.sqlnu�[���PKb��\+8�\��@">components/com_admin/sql/updates/postgresql/3.4.0-2014-12-03.sqlnu�[���PKb��\ Bf�GG@*#>components/com_admin/sql/updates/postgresql/3.3.4-2014-08-03.sqlnu�[���PKb��\�����@�#>components/com_admin/sql/updates/postgresql/3.3.0-2014-04-02.sqlnu�[���PKb��\��/995�%>components/com_admin/sql/updates/postgresql/3.0.2.sqlnu�[���PKb��\���3hh5�&>components/com_admin/sql/updates/postgresql/3.2.1.sqlnu�[���PKb��\Wc6��@V'>components/com_admin/sql/updates/postgresql/3.3.6-2014-09-30.sqlnu�[���PKb��\v���@�)>components/com_admin/sql/updates/postgresql/3.2.2-2013-12-28.sqlnu�[���PKb��\���d # #5�*>components/com_admin/sql/updates/postgresql/3.1.2.sqlnu�[���PKb��\K ui��@*N>components/com_admin/sql/updates/postgresql/3.3.0-2014-02-16.sqlnu�[���PKb��\�m�ll5>O>components/com_admin/sql/updates/postgresql/3.1.4.sqlnu�[���PKb��\���1::5Q>components/com_admin/sql/updates/postgresql/3.1.5.sqlnu�[���PKb��\R�Π��@�Q>components/com_admin/sql/updates/postgresql/3.4.0-2014-08-24.sqlnu�[���PKb��\�I0@�S>components/com_admin/sql/updates/postgresql/3.4.0-2015-01-21.sqlnu�[���PKb��\��WC��@�U>components/com_admin/sql/updates/postgresql/3.4.0-2014-09-16.sqlnu�[���PKb��\��B88@�V>components/com_admin/sql/updates/postgresql/3.3.0-2013-12-21.sqlnu�[���PKb��\���995�W>components/com_admin/sql/updates/postgresql/3.1.1.sqlnu�[���PKb��\�į ��@8X>components/com_admin/sql/updates/postgresql/3.4.4-2015-07-11.sqlnu�[���PKb��\U-<y��@JY>components/com_admin/sql/updates/postgresql/3.2.2-2014-01-15.sqlnu�[���PKb��\3i�pp@�[>components/com_admin/sql/updates/postgresql/3.2.2-2014-01-18.sqlnu�[���PKb��\+M��``@\>components/com_admin/sql/updates/postgresql/3.2.2-2014-01-23.sqlnu�[���PKb��\: ;tt@O_>components/com_admin/sql/updates/postgresql/3.2.2-2014-01-08.sqlnu�[���PKb��\ N�<<53a>components/com_admin/sql/updates/postgresql/3.0.3.sqlnu�[���PKb��\���#::5�a>components/com_admin/sql/updates/postgresql/3.0.0.sqlnu�[���PKb��\��ܶ995sb>components/com_admin/sql/updates/postgresql/3.0.1.sqlnu�[���PKb��\C%)���@c>components/com_admin/sql/updates/postgresql/3.4.0-2014-09-01.sqlnu�[���PKb��\x�����@hf>components/com_admin/sql/updates/postgresql/3.2.2-2013-12-22.sqlnu�[���PKb��\/�ߞ�@ug>components/com_admin/sql/updates/postgresql/3.2.3-2014-02-20.sqlnu�[���PKb��\^�fQfQ5�h>components/com_admin/sql/updates/postgresql/3.2.0.sqlnu�[���PKb��\�|ֿM�M5N�>components/com_admin/sql/updates/postgresql/3.1.0.sqlnu�[���PKb��\ Tt�88@r?components/com_admin/sql/updates/postgresql/3.4.0-2014-10-20.sqlnu�[���PKb��\_���((0 ?components/com_admin/views/help/tmpl/default.phpnu�[���PKb��\�/���-�?components/com_admin/views/help/view.html.phpnu�[���PKb��\�i=z; ; 0�?components/com_admin/views/profile/tmpl/edit.phpnu�[���PKb��\��-�zz0S"?components/com_admin/views/profile/view.html.phpnu�[���PKb��\V�ܴ :-)?components/com_admin/views/sysinfo/tmpl/default_system.phpnu�[���PKb��\�:�m��;�2?components/com_admin/views/sysinfo/tmpl/default_phpinfo.phpnu�[���PKb��\�����:�4?components/com_admin/views/sysinfo/tmpl/default_config.phpnu�[���PKb��\�-�II?�8?components/com_admin/views/sysinfo/tmpl/default_phpsettings.phpnu�[���PKb��\?��3�H?components/com_admin/views/sysinfo/tmpl/default.phpnu�[���PKb��\}���=�O?components/com_admin/views/sysinfo/tmpl/default_directory.phpnu�[���PKb��\��l�hh0`T?components/com_admin/views/sysinfo/view.html.phpnu�[���PKb��\iq���0(]?components/com_admin/helpers/html/phpsetting.phpnu�[���PKb��\�@���/Kc?components/com_admin/helpers/html/directory.phpnu�[���PKb��\c!z1ee,�h?components/com_admin/helpers/html/system.phpnu�[���PKb��\5�œ � -ek?components/com_admin/models/forms/profile.xmlnu�[���PKb��\#?o1&&'Uy?components/com_admin/models/sysinfo.phpnu�[���PKb��\�~&��$Ɵ?components/com_admin/models/help.phpnu�[���PKb��\Y_v�zz'�?components/com_admin/models/profile.phpnu�[���PKb��\���Xvv#��?components/com_admin/controller.phpnu�[���PKb��\�:�FF*|�?components/com_messages/tables/message.phpnu�[���PKb��\��=�.�?components/com_messages/controllers/config.phpnu�[���PKb��\�*�ۍ�0��?components/com_messages/controllers/messages.phpnu�[���PKb��\��d*))/}�?components/com_messages/controllers/message.phpnu�[���PKb��\���||$�?components/com_messages/messages.phpnu�[���PKb��\�07��$��?components/com_messages/messages.xmlnu�[���PKb��\y��KK6��?components/com_messages/layouts/toolbar/mysettings.phpnu�[���PKb��\�Y��cc"d�?components/com_messages/config.xmlnu�[���PKb��\�8�rr"�?components/com_messages/access.xmlnu�[���PKb��\�Ԅ͚�3��?components/com_messages/views/message/tmpl/edit.phpnu�[���PKb��\ 0α[[6��?components/com_messages/views/message/tmpl/default.phpnu�[���PKb��\�(|SJJ3��?components/com_messages/views/message/view.html.phpnu�[���PKb��\R)����5H@components/com_messages/views/config/tmpl/default.phpnu�[���PKb��\���ee2 @components/com_messages/views/config/view.html.phpnu�[���PKb��\�~���7F@components/com_messages/views/messages/tmpl/default.phpnu�[���PKb��\��֯G G 4f$@components/com_messages/views/messages/view.html.phpnu�[���PKb��\Dj�,/@components/com_messages/helpers/messages.phpnu�[���PKb��\V�a=� � 1�6@components/com_messages/helpers/html/messages.phpnu�[���PKb��\p�ӧ��6�@@components/com_messages/models/fields/usermessages.phpnu�[���PKb��\�#��z z )�G@components/com_messages/models/config.phpnu�[���PKb��\����0�U@components/com_messages/models/forms/message.xmlnu�[���PKb��\�1m�,,/�X@components/com_messages/models/forms/config.xmlnu�[���PKb��\��+g\@components/com_messages/models/messages.phpnu�[���PKb��\5�b�!�!*�k@components/com_messages/models/message.phpnu�[���PKb��\��iA&&&�@components/com_messages/controller.phpnu�[���PKb��\ n1FF$��@components/com_menus/tables/menu.phpnu�[���PKb��\����*,�@components/com_menus/controllers/items.phpnu�[���PKb��\Fg��)�@components/com_menus/controllers/menu.phpnu�[���PKb��\G�>���*�@components/com_menus/controllers/menus.phpnu�[���PKb��\g���E0E0)'�@components/com_menus/controllers/item.phpnu�[���PKb��\��I��?�@components/com_menus/layouts/joomla/searchtools/default/bar.phpnu�[���PKb��\�y�;�Acomponents/com_menus/layouts/joomla/searchtools/default.phpnu�[���PKb��\�u {��`Acomponents/com_menus/config.xmlnu�[���PKb��\8hd�22�Acomponents/com_menus/access.xmlnu�[���PKb��\�jZd55 Acomponents/com_menus/menus.phpnu�[���PKb��\^���SS:�Acomponents/com_menus/views/item/tmpl/edit_associations.phpnu�[���PKb��\�,���5IAcomponents/com_menus/views/item/tmpl/edit_options.phpnu�[���PKb��\.�P5pAcomponents/com_menus/views/item/tmpl/edit_modules.phpnu�[���PKb��\��mxx-�)Acomponents/com_menus/views/item/tmpl/edit.phpnu�[���PKb��\���VV-�=Acomponents/com_menus/views/item/view.html.phpnu�[���PKb��\� ��99<rJAcomponents/com_menus/views/items/tmpl/default_batch_body.phpnu�[���PKb��\�����>QAcomponents/com_menus/views/items/tmpl/default_batch_footer.phpnu�[���PKb��\��pM�&�&1;TAcomponents/com_menus/views/items/tmpl/default.phpnu�[���PKb��\�*͉ � 7x{Acomponents/com_menus/views/items/tmpl/default_batch.phpnu�[���PKb��\�ϱ"".h�Acomponents/com_menus/views/items/view.html.phpnu�[���PKb��\��f�))-�Acomponents/com_menus/views/menu/tmpl/edit.phpnu�[���PKb��\)Z��) ) -j�Acomponents/com_menus/views/menu/view.html.phpnu�[���PKb��\��(��5�Acomponents/com_menus/views/menutypes/tmpl/default.phpnu�[���PKb��\3j� � 2�Acomponents/com_menus/views/menutypes/view.html.phpnu�[���PKb��\�6�R�'�'1��Acomponents/com_menus/views/menus/tmpl/default.phpnu�[���PKb��\��\�rr.=�Acomponents/com_menus/views/menus/view.html.phpnu�[���PKb��\���nn+ �Acomponents/com_menus/helpers/html/menus.phpnu�[���PKb��\]e[&�Bcomponents/com_menus/helpers/menus.phpnu�[���PKb��\g�N��?+Bcomponents/com_menus/menus.xmlnu�[���PKb��\�5At't'%�/Bcomponents/com_menus/models/items.phpnu�[���PKb��\�;��&&1JWBcomponents/com_menus/models/fields/menuparent.phpnu�[���PKb��\^�d 3�_Bcomponents/com_menus/models/fields/menuordering.phpnu�[���PKb��\��Q'/AiBcomponents/com_menus/models/fields/menutype.phpnu�[���PKb��\�P�+��2�uBcomponents/com_menus/models/forms/item_heading.xmlnu�[���PKb��\�q�� 0�yBcomponents/com_menus/models/forms/item_alias.xmlnu�[���PKb��\W[����4_Bcomponents/com_menus/models/forms/item_separator.xmlnu�[���PKb��\d��8��*s�Bcomponents/com_menus/models/forms/menu.xmlnu�[���PKb��\������.��Bcomponents/com_menus/models/forms/item_url.xmlnu�[���PKb��\ŀ3���*��Bcomponents/com_menus/models/forms/item.xmlnu�[���PKb��\ BU__2S�Bcomponents/com_menus/models/forms/filter_items.xmlnu�[���PKb��\�4�Bcomponents/com_menus/models/forms/item_component.xmlnu�[���PKb��\v�`���$��Bcomponents/com_menus/models/menu.phpnu�[���PKb��\ cc;;%��Bcomponents/com_menus/models/menus.phpnu�[���PKb��\R�9:`�`�$�Bcomponents/com_menus/models/item.phpnu�[���PKb��\��T��/�/)�{Ccomponents/com_menus/models/menutypes.phpnu�[���PKb��\@�g��#�Ccomponents/com_menus/controller.phpnu�[���PKb��\�c'ZZ"�Ccomponents/com_plugins/plugins.phpnu�[���PKb��\�du���.��Ccomponents/com_plugins/controllers/plugins.phpnu�[���PKb��\Η^��-q�Ccomponents/com_plugins/controllers/plugin.phpnu�[���PKb��\��m.__!T�Ccomponents/com_plugins/config.xmlnu�[���PKb��\��m�!�Ccomponents/com_plugins/access.xmlnu�[���PKb��\ ����"]�Ccomponents/com_plugins/plugins.xmlnu�[���PKb��\��9��Ccomponents/com_plugins/views/plugin/tmpl/edit_options.phpnu�[���PKb��\��Y"1+�Ccomponents/com_plugins/views/plugin/tmpl/edit.phpnu�[���PKb��\��%���1��Ccomponents/com_plugins/views/plugin/view.html.phpnu�[���PKb��\ߜ6�5!5!5��Ccomponents/com_plugins/views/plugins/tmpl/default.phpnu�[���PKb��\��]]2JDcomponents/com_plugins/views/plugins/view.html.phpnu�[���PKb��\i:ů� � * Dcomponents/com_plugins/helpers/plugins.phpnu�[���PKb��\��P��70Dcomponents/com_plugins/models/fields/pluginordering.phpnu�[���PKb��\����)=!Dcomponents/com_plugins/models/plugins.phpnu�[���PKb��\�rMM.�=Dcomponents/com_plugins/models/forms/plugin.xmlnu�[���PKb��\�S)��$�$(6CDcomponents/com_plugins/models/plugin.phpnu�[���PKb��\��"�$$%�hDcomponents/com_plugins/controller.phpnu�[���PKb��\���0�nDcomponents/com_contenthistory/contenthistory.xmlnu�[���PKb��\,����5�sDcomponents/com_contenthistory/controllers/history.phpnu�[���PKb��\���ff5�Dcomponents/com_contenthistory/controllers/preview.phpnu�[���PKb��\�|��B!B!:��Dcomponents/com_contenthistory/views/history/tmpl/modal.phpnu�[���PKb��\��]��9^�Dcomponents/com_contenthistory/views/history/view.html.phpnu�[���PKb��\vFѯ�<��Dcomponents/com_contenthistory/views/preview/tmpl/preview.phpnu�[���PKb��\�G�m��9۰Dcomponents/com_contenthistory/views/preview/view.html.phpnu�[���PKb��\;6�>��<�Dcomponents/com_contenthistory/views/compare/tmpl/compare.phpnu�[���PKb��\h��9��Dcomponents/com_contenthistory/views/compare/view.html.phpnu�[���PKb��\��W���7�Dcomponents/com_contenthistory/helpers/html/textdiff.phpnu�[���PKb��\l��$F+F+8s�Dcomponents/com_contenthistory/helpers/contenthistory.phpnu�[���PKb��\S{<}}0!�Dcomponents/com_contenthistory/contenthistory.phpnu�[���PKb��\�9�"�"0�Ecomponents/com_contenthistory/models/history.phpnu�[���PKb��\S��{��0�#Ecomponents/com_contenthistory/models/preview.phpnu�[���PKb��\�$Lr""0"+Ecomponents/com_contenthistory/models/compare.phpnu�[���PKb��\iP���,�3Ecomponents/com_contenthistory/controller.phpnu�[���PKb��\�� ,�� �5Ecomponents/com_cpanel/cpanel.phpnu�[���PKb��\�J��� �7Ecomponents/com_cpanel/cpanel.xmlnu�[���PKb��\(Ў'��3r;Ecomponents/com_cpanel/views/cpanel/tmpl/default.phpnu�[���PKb��\���X0�CEcomponents/com_cpanel/views/cpanel/view.html.phpnu�[���PKb��\�Q�%yy$�JEcomponents/com_cpanel/controller.phpnu�[���PKb��\�*.� � $�LEcomponents/com_finder/tables/map.phpnu�[���PKb��\F���'�VEcomponents/com_finder/tables/filter.phpnu�[���PKb��\B�ֳ\\%pEcomponents/com_finder/tables/link.phpnu�[���PKb��\�+�~$$2�rEcomponents/com_finder/controllers/indexer.json.phpnu�[���PKb��\�^�~~*=�Ecomponents/com_finder/controllers/maps.phpnu�[���PKb��\�#t�yy+�Ecomponents/com_finder/controllers/index.phpnu�[���PKb��\��=H��-�Ecomponents/com_finder/controllers/filters.phpnu�[���PKb��\��+� ,̥Ecomponents/com_finder/controllers/filter.phpnu�[���PKb��\�u44 2�Ecomponents/com_finder/finder.phpnu�[���PKb��\,�O�(( ��Ecomponents/com_finder/finder.xmlnu�[���PKb��\5V,!! .�Ecomponents/com_finder/config.xmlnu�[���PKb��\�|��ww2��Ecomponents/com_finder/sql/uninstall.postgresql.sqlnu�[���PKb��\�aY<<+u�Ecomponents/com_finder/sql/install.mysql.sqlnu�[���PKb��\�)���0�0Fcomponents/com_finder/sql/install.postgresql.sqlnu�[���PKb��\�1�iww-(�Fcomponents/com_finder/sql/uninstall.mysql.sqlnu�[���PKb��\|I�33 ��Fcomponents/com_finder/access.xmlnu�[���PKb��\݀�]��0�Fcomponents/com_finder/views/filter/tmpl/edit.phpnu�[���PKb��\����0��Fcomponents/com_finder/views/filter/view.html.phpnu�[���PKb��\ �z���4�Fcomponents/com_finder/views/filters/tmpl/default.phpnu�[���PKb��\�h=�f f 1Gcomponents/com_finder/views/filters/view.html.phpnu�[���PKb��\�� ��2�Gcomponents/com_finder/views/index/tmpl/default.phpnu�[���PKb��\8J��[[/�1Gcomponents/com_finder/views/index/view.html.phpnu�[���PKb��\��FF7h>Gcomponents/com_finder/views/statistics/tmpl/default.phpnu�[���PKb��\� �ff4GGcomponents/com_finder/views/statistics/view.html.phpnu�[���PKb��\יӇ**1�JGcomponents/com_finder/views/maps/tmpl/default.phpnu�[���PKb��\w��11.j_Gcomponents/com_finder/views/maps/view.html.phpnu�[���PKb��\Λ�^KK4�jGcomponents/com_finder/views/indexer/tmpl/default.phpnu�[���PKb��\��7~~1�oGcomponents/com_finder/views/indexer/view.html.phpnu�[���PKb��\=�cCC(�qGcomponents/com_finder/helpers/finder.phpnu�[���PKb��\Ň!���-"xGcomponents/com_finder/helpers/html/finder.phpnu�[���PKb��\�P�� � *\�Gcomponents/com_finder/helpers/language.phpnu�[���PKb��\��3�?'?';R�Gcomponents/com_finder/helpers/indexer/stemmer/porter_en.phpnu�[���PKb��\���H)H)4��Gcomponents/com_finder/helpers/indexer/stemmer/fr.phpnu�[���PKb��\�0�� � :��Gcomponents/com_finder/helpers/indexer/stemmer/snowball.phpnu�[���PKb��\,ug�0��Gcomponents/com_finder/helpers/indexer/parser.phpnu�[���PKb��\��Kj�/�/1Q�Gcomponents/com_finder/helpers/indexer/indexer.phpnu�[���PKb��\���1k'Hcomponents/com_finder/helpers/indexer/stemmer.phpnu�[���PKb��\�i��2�2�/M/Hcomponents/com_finder/helpers/indexer/query.phpnu�[���PKb��\����5Hcomponents/com_finder/helpers/indexer/parser/html.phpnu�[���PKb��\�w�--4�Hcomponents/com_finder/helpers/indexer/parser/rtf.phpnu�[���PKb��\:؏���4��Hcomponents/com_finder/helpers/indexer/parser/txt.phpnu�[���PKb��\��s;85850��Hcomponents/com_finder/helpers/indexer/helper.phpnu�[���PKb��\�d� V V1� Icomponents/com_finder/helpers/indexer/adapter.phpnu�[���PKb��\�[h�2V2V6`Icomponents/com_finder/helpers/indexer/driver/mysql.phpnu�[���PKb��\(Y���Q�Q7��Icomponents/com_finder/helpers/indexer/driver/sqlsrv.phpnu�[���PKb��\�5��SS;�Jcomponents/com_finder/helpers/indexer/driver/postgresql.phpnu�[���PKb��\���3�%�%2\Jcomponents/com_finder/helpers/indexer/taxonomy.phpnu�[���PKb��\e$&�LL/p�Jcomponents/com_finder/helpers/indexer/token.phpnu�[���PKb��\:)�� " "0�Jcomponents/com_finder/helpers/indexer/result.phpnu�[���PKb��\��[EE3��Jcomponents/com_finder/models/fields/directories.phpnu�[���PKb��\L;�.��4,�Jcomponents/com_finder/models/fields/searchfilter.phpnu�[���PKb��\���V V -�Jcomponents/com_finder/models/forms/filter.xmlnu�[���PKb��\��cv��(��Jcomponents/com_finder/models/indexer.phpnu�[���PKb��\�|�"�"%��Jcomponents/com_finder/models/maps.phpnu�[���PKb��\z�nOO+��Jcomponents/com_finder/models/statistics.phpnu�[���PKb��\t���'�'&]�Jcomponents/com_finder/models/index.phpnu�[���PKb��\���<vv(�$Kcomponents/com_finder/models/filters.phpnu�[���PKb��\�b�� '3Kcomponents/com_finder/models/filter.phpnu�[���PKb��\�u��UU$�@Kcomponents/com_finder/controller.phpnu�[���PKb��\Ȍ�-�GKcomponents/com_modules/controllers/module.phpnu�[���PKb��\�{�cc.�]Kcomponents/com_modules/controllers/modules.phpnu�[���PKb��\�_X��7�dKcomponents/com_modules/layouts/toolbar/cancelselect.phpnu�[���PKb��\2f�-4gKcomponents/com_modules/layouts/toolbar/newmodule.phpnu�[���PKb��\M��&��"�iKcomponents/com_modules/modules.xmlnu�[���PKb��\��>�GG!�mKcomponents/com_modules/config.xmlnu�[���PKb��\�>�b;;!rqKcomponents/com_modules/access.xmlnu�[���PKb��\�lq@�vKcomponents/com_modules/views/modules/tmpl/default_batch_body.phpnu�[���PKb��\�7]'��B~Kcomponents/com_modules/views/modules/tmpl/default_batch_footer.phpnu�[���PKb��\#��*�*5��Kcomponents/com_modules/views/modules/tmpl/default.phpnu�[���PKb��\�?�d{{;��Kcomponents/com_modules/views/modules/tmpl/default_batch.phpnu�[���PKb��\}����2��Kcomponents/com_modules/views/modules/view.html.phpnu�[���PKb��\���8;;5��Kcomponents/com_modules/views/preview/tmpl/default.phpnu�[���PKb��\R���2��Kcomponents/com_modules/views/preview/view.html.phpnu�[���PKb��\H-sv&&1��Kcomponents/com_modules/views/module/view.json.phpnu�[���PKb��\�$/<U�Kcomponents/com_modules/views/module/tmpl/edit_assignment.phpnu�[���PKb��\Qx/>>9��Kcomponents/com_modules/views/module/tmpl/edit_options.phpnu�[���PKb��\Te?y��;x�Kcomponents/com_modules/views/module/tmpl/edit_positions.phpnu�[���PKb��\~�B#B#1j�Kcomponents/com_modules/views/module/tmpl/edit.phpnu�[���PKb��\p�J��2 Lcomponents/com_modules/views/module/tmpl/modal.phpnu�[���PKb��\��G�CC1A#Lcomponents/com_modules/views/module/view.html.phpnu�[���PKb��\��e==5�.Lcomponents/com_modules/views/positions/tmpl/modal.phpnu�[���PKb��\����4�?Lcomponents/com_modules/views/positions/view.html.phpnu�[���PKb��\C��??4�CLcomponents/com_modules/views/select/tmpl/default.phpnu�[���PKb��\�����1aJLcomponents/com_modules/views/select/view.html.phpnu�[���PKb��\^$aʕ�&|PLcomponents/com_modules/helpers/xml.phpnu�[���PKb��\���CC/gULcomponents/com_modules/helpers/html/modules.phpnu�[���PKb��\�;'Z�!�!* nLcomponents/com_modules/helpers/modules.phpnu�[���PKb��\����ZZ"\�Lcomponents/com_modules/modules.phpnu�[���PKb��\p'���0�Lcomponents/com_modules/models/forms/advanced.xmlnu�[���PKb��\�i**.b�Lcomponents/com_modules/models/forms/module.xmlnu�[���PKb��\7M�ii(�Lcomponents/com_modules/models/module.phpnu�[���PKb��\�VI'+H Mcomponents/com_modules/models/positions.phpnu�[���PKb��\�����(�%Mcomponents/com_modules/models/select.phpnu�[���PKb��\8���%�%)�5Mcomponents/com_modules/models/modules.phpnu�[���PKb��\Fb�[[%�[Mcomponents/com_modules/controller.phpnu�[���PKb��\�h��""�bMcomponents/com_login/login.phpnu�[���PKb��\P�*���1eMcomponents/com_login/views/login/tmpl/default.phpnu�[���PKb��\v �Ȇ�.jiMcomponents/com_login/views/login/view.html.phpnu�[���PKb��\l��I��NkMcomponents/com_login/login.xmlnu�[���PKb��\x1���%2oMcomponents/com_login/models/login.phpnu�[���PKb��\��g�� � #h�Mcomponents/com_login/controller.phpnu�[���PKb��\^�ʙZZ"��Mcomponents/com_contact/contact.phpnu�[���PKb��\��)�'')D�Mcomponents/com_contact/tables/contact.phpnu�[���PKb��\7��'**.ĢMcomponents/com_contact/controllers/contact.phpnu�[���PKb��\w�Ki� � /L�Mcomponents/com_contact/controllers/contacts.phpnu�[���PKb��\��VQ`X`X!M�Mcomponents/com_contact/config.xmlnu�[���PKb��\��,,3�Ncomponents/com_contact/sql/uninstall.mysql.utf8.sqlnu�[���PKb��\�2��1�Ncomponents/com_contact/sql/install.mysql.utf8.sqlnu�[���PKb��\e�����!�Ncomponents/com_contact/access.xmlnu�[���PKb��\�O���:�!Ncomponents/com_contact/views/contact/tmpl/modal_params.phpnu�[���PKb��\@>_oUU?S&Ncomponents/com_contact/views/contact/tmpl/edit_associations.phpnu�[���PKb��\$%���2(Ncomponents/com_contact/views/contact/tmpl/edit.phpnu�[���PKb��\�O���9x8Ncomponents/com_contact/views/contact/tmpl/edit_params.phpnu�[���PKb��\@>_oUU@�<Ncomponents/com_contact/views/contact/tmpl/modal_associations.phpnu�[���PKb��\6a���3�>Ncomponents/com_contact/views/contact/tmpl/modal.phpnu�[���PKb��\/��iQQ;�QNcomponents/com_contact/views/contact/tmpl/edit_metadata.phpnu�[���PKb��\/��iQQ<CSNcomponents/com_contact/views/contact/tmpl/modal_metadata.phpnu�[���PKb��\k��` ` 2UNcomponents/com_contact/views/contact/view.html.phpnu�[���PKb��\��D6##A�bNcomponents/com_contact/views/contacts/tmpl/default_batch_body.phpnu�[���PKb��\��Ad""CVgNcomponents/com_contact/views/contacts/tmpl/default_batch_footer.phpnu�[���PKb��\nj�x��4�jNcomponents/com_contact/views/contacts/tmpl/modal.phpnu�[���PKb��\�E~-~-6�Ncomponents/com_contact/views/contacts/tmpl/default.phpnu�[���PKb��\E�����<��Ncomponents/com_contact/views/contacts/tmpl/default_batch.phpnu�[���PKb��\�ų�EE3W�Ncomponents/com_contact/views/contacts/view.html.phpnu�[���PKb��\���quu*��Ncomponents/com_contact/helpers/contact.phpnu�[���PKb��\WXuY��/��Ncomponents/com_contact/helpers/html/contact.phpnu�[���PKb��\� ����6�Ncomponents/com_contact/models/fields/modal/contact.phpnu�[���PKb��\c�x��7�7)L�Ncomponents/com_contact/models/contact.phpnu�[���PKb��\���TT/�5Ocomponents/com_contact/models/forms/contact.xmlnu�[���PKb��\����%�%*�Ocomponents/com_contact/models/contacts.phpnu�[���PKb��\�F��,,%ίOcomponents/com_contact/controller.phpnu�[���PKb��\�?�$��"O�Ocomponents/com_contact/contact.xmlnu�[���PKb��\P�,@�� [�Ocomponents/com_config/config.phpnu�[���PKb��\�P� � 1F�Ocomponents/com_config/controllers/application.phpnu�[���PKb��\��c�33/��Ocomponents/com_config/controllers/component.phpnu�[���PKb��\Q��x��5.�Ocomponents/com_config/controller/component/cancel.phpnu�[���PKb��\҇)�443��Ocomponents/com_config/controller/component/save.phpnu�[���PKb��\$��446#�Ocomponents/com_config/controller/component/display.phpnu�[���PKb��\*���;��Ocomponents/com_config/controller/application/removeroot.phpnu�[���PKb��\S�n[��<��Ocomponents/com_config/controller/application/refreshhelp.phpnu�[���PKb��\/�膠�7�Ocomponents/com_config/controller/application/cancel.phpnu�[���PKb��\LI�y5�Ocomponents/com_config/controller/application/save.phpnu�[���PKb��\Z��u668�Pcomponents/com_config/controller/application/display.phpnu�[���PKb��\�h6�@' Pcomponents/com_config/view/component/tmpl/default_navigation.phpnu�[���PKb��\i��> > 5� Pcomponents/com_config/view/component/tmpl/default.phpnu�[���PKb��\b���-EPcomponents/com_config/view/component/html.phpnu�[���PKb��\��[��/m$Pcomponents/com_config/view/application/json.phpnu�[���PKb��\߇����>�*Pcomponents/com_config/view/application/tmpl/default_locale.phpnu�[���PKb��\+��+��>�,Pcomponents/com_config/view/application/tmpl/default_system.phpnu�[���PKb��\�_P��>�.Pcomponents/com_config/view/application/tmpl/default_server.phpnu�[���PKb��\`2~��=�0Pcomponents/com_config/view/application/tmpl/default_proxy.phpnu�[���PKb��\F��<��B�2Pcomponents/com_config/view/application/tmpl/default_navigation.phpnu�[���PKb��\Ֆ�P��<�6Pcomponents/com_config/view/application/tmpl/default_site.phpnu�[���PKb��\��v��@9Pcomponents/com_config/view/application/tmpl/default_metadata.phpnu�[���PKb��\��G��?6;Pcomponents/com_config/view/application/tmpl/default_filters.phpnu�[���PKb��\��#ܮ�>�=Pcomponents/com_config/view/application/tmpl/default_cookie.phpnu�[���PKb��\����;�?Pcomponents/com_config/view/application/tmpl/default_seo.phpnu�[���PKb��\cYn`��?�APcomponents/com_config/view/application/tmpl/default_session.phpnu�[���PKb��\� y���;�CPcomponents/com_config/view/application/tmpl/default_ftp.phpnu�[���PKb��\U��ò�@�EPcomponents/com_config/view/application/tmpl/default_database.phpnu�[���PKb��\��MRyy@HPcomponents/com_config/view/application/tmpl/default_ftplogin.phpnu�[���PKb��\���� 7MPcomponents/com_config/view/application/tmpl/default.phpnu�[���PKb��\�����Cu]Pcomponents/com_config/view/application/tmpl/default_permissions.phpnu�[���PKb��\ǎm���=�_Pcomponents/com_config/view/application/tmpl/default_debug.phpnu�[���PKb��\�ğ)��<�aPcomponents/com_config/view/application/tmpl/default_mail.phpnu�[���PKb��\�w���=dPcomponents/com_config/view/application/tmpl/default_cache.phpnu�[���PKb��\;�h�aa/%fPcomponents/com_config/view/application/html.phpnu�[���PKb��\���!�� �nPcomponents/com_config/config.xmlnu�[���PKb��\1uĽ�� 'sPcomponents/com_config/access.xmlnu�[���PKb��\Ђ� 'VtPcomponents/com_config/helper/config.phpnu�[���PKb��\gp�,�~Pcomponents/com_config/models/application.phpnu�[���PKb��\��&*�Pcomponents/com_config/models/component.phpnu�[���PKb��\��Y��$��Pcomponents/com_config/controller.phpnu�[���PKb��\?��?"?"+��Pcomponents/com_config/model/application.phpnu�[���PKb��\��C?d?d0D�Pcomponents/com_config/model/form/application.xmlnu�[���PKb��\ǏU-�Qcomponents/com_config/model/field/filters.phpnu�[���PKb��\D�ӡ��)]&Qcomponents/com_config/model/component.phpnu�[���PKb��\�L�� � 'H8Qcomponents/com_redirect/tables/link.phpnu�[���PKb��\nO���,=CQcomponents/com_redirect/controllers/link.phpnu�[���PKb��\�xO�a a -iEQcomponents/com_redirect/controllers/links.phpnu�[���PKb��\˕�E��"'PQcomponents/com_redirect/config.xmlnu�[���PKb��\,ް55"(SQcomponents/com_redirect/access.xmlnu�[���PKb��\����0�VQcomponents/com_redirect/views/link/tmpl/edit.phpnu�[���PKb��\�@-bjj0�^Qcomponents/com_redirect/views/link/view.html.phpnu�[���PKb��\*�=�++?�gQcomponents/com_redirect/views/links/tmpl/default_batch_body.phpnu�[���PKb��\����``<PjQcomponents/com_redirect/views/links/tmpl/default_addform.phpnu�[���PKb��\��DDAqQcomponents/com_redirect/views/links/tmpl/default_batch_footer.phpnu�[���PKb��\"�;��4�sQcomponents/com_redirect/views/links/tmpl/default.phpnu�[���PKb��\�b�\��:�Qcomponents/com_redirect/views/links/tmpl/default_batch.phpnu�[���PKb��\w��1o�Qcomponents/com_redirect/views/links/view.html.phpnu�[���PKb��\�]��1�Qcomponents/com_redirect/helpers/html/redirect.phpnu�[���PKb��\��w� � ,]�Qcomponents/com_redirect/helpers/redirect.phpnu�[���PKb��\�}U�gg$��Qcomponents/com_redirect/redirect.xmlnu�[���PKb��\' e���2^�Qcomponents/com_redirect/models/fields/redirect.phpnu�[���PKb��\Gx���-��Qcomponents/com_redirect/models/forms/link.xmlnu�[���PKb��\�O+V'��Qcomponents/com_redirect/models/link.phpnu�[���PKb��\��e�(V�Qcomponents/com_redirect/models/links.phpnu�[���PKb��\T�~{{&�Qcomponents/com_redirect/controller.phpnu�[���PKb��\��>>$�Rcomponents/com_redirect/redirect.phpnu�[���PKb��\�.v���/.Rcomponents/com_installer/controllers/update.phpnu�[���PKb��\��k���2YRcomponents/com_installer/controllers/languages.phpnu�[���PKb��\��_��1�!Rcomponents/com_installer/controllers/discover.phpnu�[���PKb��\#SZZ/�&Rcomponents/com_installer/controllers/manage.phpnu�[���PKb��\d���0�2Rcomponents/com_installer/controllers/install.phpnu�[���PKb��\���$$1�8Rcomponents/com_installer/controllers/database.phpnu�[���PKb��\��_?cc4<=Rcomponents/com_installer/controllers/updatesites.phpnu�[���PKb��\��n;;#ERcomponents/com_installer/config.xmlnu�[���PKb��\g?vv#�KRcomponents/com_installer/access.xmlnu�[���PKb��\4�� &ZNRcomponents/com_installer/installer.xmlnu�[���PKb��\y�Qu��;�RRcomponents/com_installer/views/default/tmpl/default_ftp.phpnu�[���PKb��\r�qmm?�WRcomponents/com_installer/views/default/tmpl/default_message.phpnu�[���PKb��\�}�9HH/�ZRcomponents/com_installer/views/default/view.phpnu�[���PKb��\�&�8;bRcomponents/com_installer/views/warnings/tmpl/default.phpnu�[���PKb��\Fl<��5�iRcomponents/com_installer/views/warnings/view.html.phpnu�[���PKb��\J^%FFF9�mRcomponents/com_installer/views/languages/tmpl/default.phpnu�[���PKb��\��(��@P}Rcomponents/com_installer/views/languages/tmpl/default_filter.phpnu�[���PKb��\�!;���6��Rcomponents/com_installer/views/languages/view.html.phpnu�[���PKb��\�RP ;��Rcomponents/com_installer/views/updatesites/tmpl/default.phpnu�[���PKb��\�S�S5580�Rcomponents/com_installer/views/updatesites/view.html.phpnu�[���PKb��\�ɸ/��8ͭRcomponents/com_installer/views/database/tmpl/default.phpnu�[���PKb��\'6���5�Rcomponents/com_installer/views/database/view.html.phpnu�[���PKb��\�-�UU6��Rcomponents/com_installer/views/manage/tmpl/default.phpnu�[���PKb��\�H*�ss3��Rcomponents/com_installer/views/manage/view.html.phpnu�[���PKb��\I��|��8k�Rcomponents/com_installer/views/discover/tmpl/default.phpnu�[���PKb��\UpWRR=~�Rcomponents/com_installer/views/discover/tmpl/default_item.phpnu�[���PKb��\O�J��5=Scomponents/com_installer/views/discover/view.html.phpnu�[���PKb��\AM���7hScomponents/com_installer/views/install/tmpl/default.phpnu�[���PKb��\�l�4�.Scomponents/com_installer/views/install/view.html.phpnu�[���PKb��\�M���6�3Scomponents/com_installer/views/update/tmpl/default.phpnu�[���PKb��\*��� � 3�HScomponents/com_installer/views/update/view.html.phpnu�[���PKb��\�'iv��0�SScomponents/com_installer/helpers/html/manage.phpnu�[���PKb��\��(�# # .;ZScomponents/com_installer/helpers/installer.phpnu�[���PKb��\�ɥ@``&�gScomponents/com_installer/installer.phpnu�[���PKb��\8�N��(�(*rjScomponents/com_installer/models/update.phpnu�[���PKb��\p����&�&-˓Scomponents/com_installer/models/languages.phpnu�[���PKb��\��&���,غScomponents/com_installer/models/discover.phpnu�[���PKb��\������*��Scomponents/com_installer/models/manage.phpnu�[���PKb��\�=,&,&+/�Scomponents/com_installer/models/install.phpnu�[���PKb��\���QQ-�Tcomponents/com_installer/models/extension.phpnu�[���PKb��\jL#���,d+Tcomponents/com_installer/models/database.phpnu�[���PKb��\�hQTT,�BTcomponents/com_installer/models/warnings.phpnu�[���PKb��\ o�``/URTcomponents/com_installer/models/updatesites.phpnu�[���PKb��\�5f7��'kTcomponents/com_installer/controller.phpnu�[���PKc��\ԝ��mm2rTcomponents/com_joomlaupdate/controllers/update.phpnu�[���PKc��\�T ��,�Tcomponents/com_joomlaupdate/joomlaupdate.xmlnu�[���PKc��\�B!JJ,,�Tcomponents/com_joomlaupdate/joomlaupdate.phpnu�[���PKc��\�(��&ҐTcomponents/com_joomlaupdate/config.xmlnu�[���PKc��\�8u�yy&͖Tcomponents/com_joomlaupdate/access.xmlnu�[���PKc��\]?<��;��Tcomponents/com_joomlaupdate/views/default/tmpl/complete.phpnu�[���PKc��\Qߥ���:לTcomponents/com_joomlaupdate/views/default/tmpl/default.phpnu�[���PKc��\&I�S��7�Tcomponents/com_joomlaupdate/views/default/view.html.phpnu�[���PKc��\g�7 ��9u�Tcomponents/com_joomlaupdate/views/update/tmpl/default.phpnu�[���PKc��\�Ԯ�``6}�Tcomponents/com_joomlaupdate/views/update/view.html.phpnu�[���PKc��\���dd4C�Tcomponents/com_joomlaupdate/helpers/joomlaupdate.phpnu�[���PKc��\Ե�d��.�Tcomponents/com_joomlaupdate/helpers/select.phpnu�[���PKc��\��\�"�"0Q�Tcomponents/com_joomlaupdate/helpers/download.phpnu�[���PKc��\"��1F]F]'��Tcomponents/com_joomlaupdate/restore.phpnu�[���PKc��\���uuNuN.9RXcomponents/com_joomlaupdate/models/default.phpnu�[���PKc��\��F��*�Xcomponents/com_joomlaupdate/controller.phpnu�[���PKc��\��N88 �Xcomponents/com_search/search.phpnu�[���PKc��\����&&.��Xcomponents/com_search/controllers/searches.phpnu�[���PKc��\3+W5�� �Xcomponents/com_search/config.xmlnu�[���PKc��\*�{ �Xcomponents/com_search/access.xmlnu�[���PKc��\�B�cc x�Xcomponents/com_search/search.xmlnu�[���PKc��\�=G775+�Xcomponents/com_search/views/searches/tmpl/default.phpnu�[���PKc��\ ��2��Xcomponents/com_search/views/searches/view.html.phpnu�[���PKc��\����(B�Xcomponents/com_search/helpers/search.phpnu�[���PKc��\�}��&8�Xcomponents/com_search/helpers/site.phpnu�[���PKc��\�fq@@)��Xcomponents/com_search/models/searches.phpnu�[���PKc��\����88$) Ycomponents/com_search/controller.phpnu�[���PKc��\��O�66.�Ycomponents/com_media/controllers/file.json.phpnu�[���PKc��\\AT�!�!)I!Ycomponents/com_media/controllers/file.phpnu�[���PKc��\�����+8CYcomponents/com_media/controllers/folder.phpnu�[���PKc��\�ƹ��@^Ycomponents/com_media/media.xmlnu�[���PKc��\��$�4�cYcomponents/com_media/layouts/toolbar/uploadmedia.phpnu�[���PKc��\C�}��2�eYcomponents/com_media/layouts/toolbar/newfolder.phpnu�[���PKc��\�B9��4VhYcomponents/com_media/layouts/toolbar/deletemedia.phpnu�[���PKc��\����NN�jYcomponents/com_media/config.xmlnu�[���PKc��\��b�hhDvYcomponents/com_media/access.xmlnu�[���PKc��\�g@���8�xYcomponents/com_media/views/medialist/tmpl/thumbs_img.phpnu�[���PKc��\킸��;9�Ycomponents/com_media/views/medialist/tmpl/thumbs_folder.phpnu�[���PKc��\o7�RQQ9��Ycomponents/com_media/views/medialist/tmpl/details_doc.phpnu�[���PKc��\:�M``5\�Ycomponents/com_media/views/medialist/tmpl/details.phpnu�[���PKc��\-����7!�Ycomponents/com_media/views/medialist/tmpl/thumbs_up.phpnu�[���PKc��\�4ѓ5�Ycomponents/com_media/views/medialist/tmpl/default.phpnu�[���PKc��\�����8��Ycomponents/com_media/views/medialist/tmpl/details_up.phpnu�[���PKc��\?��hBB4��Ycomponents/com_media/views/medialist/tmpl/thumbs.phpnu�[���PKc��\Z{����<0�Ycomponents/com_media/views/medialist/tmpl/details_folder.phpnu�[���PKc��\����8��Ycomponents/com_media/views/medialist/tmpl/thumbs_doc.phpnu�[���PKc��\C'ȩ��9�Ycomponents/com_media/views/medialist/tmpl/details_img.phpnu�[���PKc��\���==2��Ycomponents/com_media/views/medialist/view.html.phpnu�[���PKc��\���<��Ycomponents/com_media/views/imageslist/tmpl/default_image.phpnu�[���PKc��\O�GG=��Ycomponents/com_media/views/imageslist/tmpl/default_folder.phpnu�[���PKc��\�b*>>6��Ycomponents/com_media/views/imageslist/tmpl/default.phpnu�[���PKc��\�$���3K�Ycomponents/com_media/views/imageslist/view.html.phpnu�[���PKc��\5� ��<��Ycomponents/com_media/views/media/tmpl/default_navigation.phpnu�[���PKc��\��J%��1q�Ycomponents/com_media/views/media/tmpl/default.phpnu�[���PKc��\�/")aa9��Ycomponents/com_media/views/media/tmpl/default_folders.phpnu�[���PKc��\����.r�Ycomponents/com_media/views/media/view.html.phpnu�[���PKc��\ zg��2�Zcomponents/com_media/views/images/tmpl/default.phpnu�[���PKc��\���/�&Zcomponents/com_media/views/images/view.html.phpnu�[���PKc��\R�ᣦ � &I-Zcomponents/com_media/helpers/media.phpnu�[���PKc��\d���E;Zcomponents/com_media/media.phpnu�[���PKc��\�V�,�AZcomponents/com_media/models/forms/index.htmlnu�[���PKc��\X�N�??$�AZcomponents/com_media/models/list.phpnu�[���PKc��\Ԃ-'�UZcomponents/com_media/models/manager.phpnu�[���PKc��\9�]��#�gZcomponents/com_media/controller.phpnu�[���PKc��\�q.Faa,�pZcomponents/com_newsfeeds/tables/newsfeed.phpnu�[���PKc��\�1U���2��Zcomponents/com_newsfeeds/controllers/newsfeeds.phpnu�[���PKc��\�c�y--1 �Zcomponents/com_newsfeeds/controllers/newsfeed.phpnu�[���PKc��\\�~``&��Zcomponents/com_newsfeeds/newsfeeds.phpnu�[���PKc��\"߿(�(#N�Zcomponents/com_newsfeeds/config.xmlnu�[���PKc��\�)�&&5`�Zcomponents/com_newsfeeds/sql/uninstall.mysql.utf8.sqlnu�[���PKc��\����3�Zcomponents/com_newsfeeds/sql/install.mysql.utf8.sqlnu�[���PKc��\�x��#��Zcomponents/com_newsfeeds/access.xmlnu�[���PKc��\��9ܰ�D��Zcomponents/com_newsfeeds/views/newsfeeds/tmpl/default_batch_body.phpnu�[���PKc��\f_Ls��F �Zcomponents/com_newsfeeds/views/newsfeeds/tmpl/default_batch_footer.phpnu�[���PKc��\�$����7��Zcomponents/com_newsfeeds/views/newsfeeds/tmpl/modal.phpnu�[���PKc��\ItC��+�+9��Zcomponents/com_newsfeeds/views/newsfeeds/tmpl/default.phpnu�[���PKc��\7A���? [components/com_newsfeeds/views/newsfeeds/tmpl/default_batch.phpnu�[���PKc��\�m���6#[components/com_newsfeeds/views/newsfeeds/view.html.phpnu�[���PKc��\��#Voo=d8[components/com_newsfeeds/views/newsfeed/tmpl/edit_display.phpnu�[���PKc��\׳���=@:[components/com_newsfeeds/views/newsfeed/tmpl/modal_params.phpnu�[���PKc��\�PsWWBD>[components/com_newsfeeds/views/newsfeed/tmpl/edit_associations.phpnu�[���PKc��\S�]� � 5 @[components/com_newsfeeds/views/newsfeed/tmpl/edit.phpnu�[���PKc��\׳���<YN[components/com_newsfeeds/views/newsfeed/tmpl/edit_params.phpnu�[���PKc��\�PsWWC\R[components/com_newsfeeds/views/newsfeed/tmpl/modal_associations.phpnu�[���PKc��\�+��6&T[components/com_newsfeeds/views/newsfeed/tmpl/modal.phpnu�[���PKc��\�<�.SS>�d[components/com_newsfeeds/views/newsfeed/tmpl/edit_metadata.phpnu�[���PKc��\��#Voo>[f[components/com_newsfeeds/views/newsfeed/tmpl/modal_display.phpnu�[���PKc��\�<�.SS?8h[components/com_newsfeeds/views/newsfeed/tmpl/modal_metadata.phpnu�[���PKc��\��<Yvv5�i[components/com_newsfeeds/views/newsfeed/view.html.phpnu�[���PKc��\�(AR��.�v[components/com_newsfeeds/helpers/newsfeeds.phpnu�[���PKc��\ϙlC� � 2�z[components/com_newsfeeds/helpers/html/newsfeed.phpnu�[���PKc��\|�(��&%�[components/com_newsfeeds/newsfeeds.xmlnu�[���PKc��\)G���4[�[components/com_newsfeeds/models/fields/newsfeeds.phpnu�[���PKc��\O،"��9{�[components/com_newsfeeds/models/fields/modal/newsfeed.phpnu�[���PKc��\]*-��[components/com_newsfeeds/models/newsfeeds.phpnu�[���PKc��\����(�(2 �[components/com_newsfeeds/models/forms/newsfeed.xmlnu�[���PKc��\�w���3�3,�[components/com_newsfeeds/models/newsfeed.phpnu�[���PKc��\�S�`��'?&\components/com_newsfeeds/controller.phpnu�[���PKc��\.�\��(x,\components/com_banners/tables/banner.phpnu�[���PKc��\Lo(�J\components/com_banners/tables/client.phpnu�[���PKc��\��byU U -W\components/com_banners/controllers/banner.phpnu�[���PKc��\o �. . .�a\components/com_banners/controllers/banners.phpnu�[���PKc��\H��5��1Ck\components/com_banners/controllers/tracks.raw.phpnu�[���PKc��\z4�.�x\components/com_banners/controllers/clients.phpnu�[���PKc��\�&--}\components/com_banners/controllers/client.phpnu�[���PKc��\_��{ { -u\components/com_banners/controllers/tracks.phpnu�[���PKc��\�?<�# # "M�\components/com_banners/banners.xmlnu�[���PKc��\`���oo"\components/com_banners/banners.phpnu�[���PKc��\\3�Qm m !��\components/com_banners/config.xmlnu�[���PKc��\���yy3A�\components/com_banners/sql/uninstall.mysql.utf8.sqlnu�[���PKc��\N*Ɣ 1�\components/com_banners/sql/install.mysql.utf8.sqlnu�[���PKc��\���"��!��\components/com_banners/access.xmlnu�[���PKc��\JZ�ll6�\components/com_banners/views/download/tmpl/default.phpnu�[���PKc��\���NN3��\components/com_banners/views/download/view.html.phpnu�[���PKc��\6�V�<<@l�\components/com_banners/views/banners/tmpl/default_batch_body.phpnu�[���PKc��\������B�\components/com_banners/views/banners/tmpl/default_batch_footer.phpnu�[���PKc��\��� � 5L�\components/com_banners/views/banners/tmpl/default.phpnu�[���PKc��\ݤ���;��\components/com_banners/views/banners/tmpl/default_batch.phpnu�[���PKc��\�(8_��2��\components/com_banners/views/banners/view.html.phpnu�[���PKc��\�n-qTT4�\components/com_banners/views/tracks/tmpl/default.phpnu�[���PKc��\��P��0�]components/com_banners/views/tracks/view.raw.phpnu�[���PKc��\�ta� � 1�]components/com_banners/views/tracks/view.html.phpnu�[���PKc��\>u\y��5�$]components/com_banners/views/clients/tmpl/default.phpnu�[���PKc��\$@���2 :]components/com_banners/views/clients/view.html.phpnu�[���PKc��\z�̯��1.F]components/com_banners/views/banner/tmpl/edit.phpnu�[���PKc��\?��� � 1�R]components/com_banners/views/banner/view.html.phpnu�[���PKc��\gu���1�]]components/com_banners/views/client/tmpl/edit.phpnu�[���PKc��\�>�YX X 1|f]components/com_banners/views/client/view.html.phpnu�[���PKc��\_�ؼ� � .5q]components/com_banners/helpers/html/banner.phpnu�[���PKc��\��/�^^*}|]components/com_banners/helpers/banners.phpnu�[���PKc��\%m�D.D.(5�]components/com_banners/models/banner.phpnu�[���PKc��\��-TT1Ѽ]components/com_banners/models/fields/imptotal.phpnu�[���PKc��\��11/��]components/com_banners/models/fields/clicks.phpnu�[���PKc��\8�440�]components/com_banners/models/fields/impmade.phpnu�[���PKc��\�`!ll5��]components/com_banners/models/fields/bannerclient.phpnu�[���PKc��\6<�� � 6{�]components/com_banners/models/forms/filter_clients.xmlnu�[���PKc��\�6���.��]components/com_banners/models/forms/banner.xmlnu�[���PKc��\S�!���0��]components/com_banners/models/forms/download.xmlnu�[���PKc��\�Qc�GG6��]components/com_banners/models/forms/filter_banners.xmlnu�[���PKc��\����� � .�^components/com_banners/models/forms/client.xmlnu�[���PKc��\�y�f��)�^components/com_banners/models/banners.phpnu�[���PKc��\pLA�)y4^components/com_banners/models/clients.phpnu�[���PKc��\��@� � (�G^components/com_banners/models/client.phpnu�[���PKc��\^;Dzz*�U^components/com_banners/models/download.phpnu�[���PKc��\J��0�0(�]^components/com_banners/models/tracks.phpnu�[���PKc��\�>۾��%��^components/com_banners/controller.phpnu�[���PK������^
/home/poliximo/public_html/4690b/../media/../da45a/administrator.zip