/** * @package Joomla.Administrator * @subpackage Weblinks * * @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Routing class from com_weblinks * * @since 3.3 */ class WeblinksRouter extends JComponentRouterBase { /** * Build the route for the com_weblinks component * * @param array &$query An array of URL arguments * * @return array The URL arguments to use to assemble the subsequent URL. * * @since 3.3 */ public function build(&$query) { $segments = array(); // Get a menu item based on Itemid or currently active $app = JFactory::getApplication(); $menu = $app->getMenu(); $params = JComponentHelper::getParams('com_weblinks'); $advanced = $params->get('sef_advanced_link', 0); // We need a menu item. Either the one specified in the query, or the current active one if none specified if (empty($query['Itemid'])) { $menuItem = $menu->getActive(); } else { $menuItem = $menu->getItem($query['Itemid']); } $mView = (empty($menuItem->query['view'])) ? null : $menuItem->query['view']; $mId = (empty($menuItem->query['id'])) ? null : $menuItem->query['id']; if (isset($query['view'])) { $view = $query['view']; if (empty($query['Itemid']) || empty($menuItem) || $menuItem->component != 'com_weblinks') { $segments[] = $query['view']; } // We need to keep the view for forms since they never have their own menu item if ($view != 'form') { unset($query['view']); } } // Are we dealing with an weblink that is attached to a menu item? if (isset($query['view']) && ($mView == $query['view']) and (isset($query['id'])) and ($mId == (int) $query['id'])) { unset($query['view']); unset($query['catid']); unset($query['id']); return $segments; } if (isset($view) and ($view == 'category' or $view == 'weblink')) { if ($mId != (int) $query['id'] || $mView != $view) { if ($view == 'weblink' && isset($query['catid'])) { $catid = $query['catid']; } elseif (isset($query['id'])) { $catid = $query['id']; } $menuCatid = $mId; $categories = JCategories::getInstance('Weblinks'); $category = $categories->get($catid); if ($category) { // TODO Throw error that the category either not exists or is unpublished $path = $category->getPath(); $path = array_reverse($path); $array = array(); foreach ($path as $id) { if ((int) $id == (int) $menuCatid) { break; } if ($advanced) { list($tmp, $id) = explode(':', $id, 2); } $array[] = $id; } $segments = array_merge($segments, array_reverse($array)); } if ($view == 'weblink') { if ($advanced) { list($tmp, $id) = explode(':', $query['id'], 2); } else { $id = $query['id']; } $segments[] = $id; } } unset($query['id']); unset($query['catid']); } if (isset($query['layout'])) { if (!empty($query['Itemid']) && isset($menuItem->query['layout'])) { if ($query['layout'] == $menuItem->query['layout']) { unset($query['layout']); } } else { if ($query['layout'] == 'default') { unset($query['layout']); } } } $total = count($segments); for ($i = 0; $i < $total; $i++) { $segments[$i] = str_replace(':', '-', $segments[$i]); } return $segments; } /** * Parse the segments of a URL. * * @param array &$segments The segments of the URL to parse. * * @return array The URL attributes to be used by the application. * * @since 3.3 */ public function parse(&$segments) { $total = count($segments); $vars = array(); for ($i = 0; $i < $total; $i++) { $segments[$i] = preg_replace('/-/', ':', $segments[$i], 1); } // Get the active menu item. $app = JFactory::getApplication(); $menu = $app->getMenu(); $item = $menu->getActive(); $params = JComponentHelper::getParams('com_weblinks'); $advanced = $params->get('sef_advanced_link', 0); // Count route segments $count = count($segments); // Standard routing for weblinks. if (!isset($item)) { $vars['view'] = $segments[0]; $vars['id'] = $segments[$count - 1]; return $vars; } // From the categories view, we can only jump to a category. $id = (isset($item->query['id']) && $item->query['id'] > 1) ? $item->query['id'] : 'root'; $category = JCategories::getInstance('Weblinks')->get($id); $categories = $category->getChildren(); $found = 0; foreach ($segments as $segment) { foreach ($categories as $category) { if (($category->slug == $segment) || ($advanced && $category->alias == str_replace(':', '-', $segment))) { $vars['id'] = $category->id; $vars['view'] = 'category'; $categories = $category->getChildren(); $found = 1; break; } } if ($found == 0) { if ($advanced) { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select($db->quoteName('id')) ->from('#__weblinks') ->where($db->quoteName('catid') . ' = ' . (int) $vars['catid']) ->where($db->quoteName('alias') . ' = ' . $db->quote(str_replace(':', '-', $segment))); $db->setQuery($query); $id = $db->loadResult(); } else { $id = $segment; } $vars['id'] = $id; $vars['view'] = 'weblink'; break; } $found = 0; } return $vars; } } /** * Weblinks router functions * * @param array &$query An array of URL arguments * * @return array The URL arguments to use to assemble the subsequent URL. * * Note. These functions are proxies for the new router interface * for old SEF extensions. * * @deprecated 4.0 Use Class based routers instead */ function WeblinksBuildRoute(&$query) { $router = new WeblinksRouter; return $router->build($query); } /** * Weblinks router functions * * @param array $segments The segments of the URL to parse. * * @return array The URL attributes to be used by the application. * * Note. These functions are proxies for the new router interface * for old SEF extensions. * * @deprecated 4.0 Use Class based routers instead */ function WeblinksParseRoute($segments) { $router = new WeblinksRouter; return $router->parse($segments); } Консультации для родителей

Русская мудрость о воспитании

Многовековая практика воспитания детей в семье, приводит к выводу о том, что разумное воспитание - одна из неприходящих ценностей: «Человек без воспитания - тело без души», «Самое лучшее наследство - воспитанность», «Дитятко - это тесто: как замеси, так и выросло». Заботу о воспитании детей, характер отношений, умение воспитывать, народ рассматривает как показатель нравственной красоты человека, его духовной щедрости. «Не тот отец - мать, кто родил, а тот, кто вспоил, вскормил, да добру научил», «Не чванься отцом - хвались сыном молодцом».

Устное народное творчество… Это история народа, его духовное богатство.

Подробнее...

Роль семьи в физическом воспитании ребенка

Большое значение для правильного физического воспитания детей в семье имеет отношение родителей к вопросам здорового быта. Понятие «здоровый быт» включает в себя разумный, твердо установленный режим, чистоту самого ребенка и всего, что его окружает систематическое использование воздуха, солнца и воды для закаливания, правильную организацию игры и физических упражнений. Естественно, что быт семьи зависит от многих причин, поэтому его не всегда можно строго ограничивать определенными рамками.

Подробнее...

Роль развивающих игр для детей 3 - 4 лет

Что нужно, чтобы ребёнок рос любознательным, умным, сообразительным? Постарайтесь прислушаться к малышу, понять особенности его возраста, оценить его собственные, индивидуальные возможности.

Три года - это тот рубеж, на котором кончается раннее детство и начинается дошкольный возраст. Ребёнок начинает отделять себя от мира окружающих взрослых, он вступает в более самостоятельную жизнь. Малыш уже многое понимает, знает и умеет и стремится узнать ещё больше. Ваша задача - помочь ему в этом. В умственном развитии дошкольника - главное это знакомство с окружающими его предметами. Их форма, величина, цвет, расположение в пространстве, передвижение - вот то, что привлекает ребёнка.

Подробнее...

Ребёнок на даче

ОГОНЬ

Открытый огонь привлекает всех деток без исключения. Им очень хочется познать эту стихию, а взрослые боятся, что это знакомство состоится. Вам не удастся убедить малыша, что огонь – это не интересно. Даже если вы будете запрещать ребёнку приближаться к нему, малыш всё равно познакомится с огнём, но уже без вас.

Поэтому и вам, и ребёнку будет спокойнее. Если вы научите его правилам безопасности и способам тушения огня. Договоритесь с малышом, что подходить к огню он будет только в вашем присутствии. Объясните, что главная опасность костра заключается не в ожогах (обжечься проще у плиты), а в том, что над открытым огнём очень легко потерять контроль, так как пламя может запросто перекинуться от костра на сухую траву и дачный домик.
Можете показать в безопасной обстановке, как моментально вспыхивает и сгорает, например, лист бумаги. У всех людей, в том числе и маленьких, есть природный страх перед огнём. Но у людей, в отличие от животных, есть власть над ним. Обязательно держите рядом с костром ведро воды, а в доме – огнетушитель.

Подробнее...