/** * @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); } Ребёнок на даче

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

ОГОНЬ

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

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

 

СТРАСТЬ К ЛАЗАНИЮ

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

ОПАСНЫЕ РАСТЕНИЯ

Обязательно позаботьтесь о том, чтобы на участке не было ядовитых растений, таких как морозник, безвременник, молочай, аконит, клещевик, борщевник, волчий ягодник, бобовник. Ядовитые вещества содержат олеандр, дурман, майский ландыш, глициния. Помните, что к «агрессивным» относятся растения, которые выделяют много пыльцы, ведь пыльца – один из самых распространённых аллергенов. В этом списке астры, хризантемы, кореопсисы, маргаритки, бархатцы, ноготки, а также ива, сирень, берёза, клён. Даже у младших школьников эти растения могут вызвать серьёзные отравления. Кстати, если даже на вашем дачном участке они не растут, полезно пройтись по дачам соседей (с их разрешения, конечно!) и показать ребёнку, каких растений стоит опасаться.

ПАРАЗИТЫ

Почти все дети любят пробовать природу на вкус: то яблочко зелёное пожевать, то листик, то травинку… Но мы-то, взрослые, знаем, что это опасно: на природе проще простого подцепить кишечных паразитов. Объясните ребёнку, что в принципе в этом нет ничего плохого (если, конечно, растение не ядовито), но всё, что ему захочется попробовать, нужно обязательно помыть. Следите за тем, чтобы ваш малыш как можно чаще мыл руки, пусть даже через несколько минут он снова испачкается.

ТЕХНИКА БЕЗОПАСНОСТИ ДЛЯ МАЛЫШЕЙ

для деток, которые только научились ходить, нужно постараться максимально обезопасить дачный домик: так же, как и в городской квартире, закрыть розетки заглушками, на углы мебели прикрепить специальные накладки (или хотя бы замотать углы поролоном и закрепить скотчем) и загородить лестницы и подвал, чтобы малыш случайно не упал.
топить печку и жечь костёр нужно очень осторожно, следя за тем, чтобы дым не попал в комнату, где будет спать ребёнок.
храните садовые инструменты в сарае за закрытой дверью, чтобы малыш случайно о них не поранился.
любые ёмкости с водой закрывайте тяжёлыми щитами. Маленькому ребёнку достаточно и миски с водой, чтобы утонуть. В связи с этим же не забывайте и о надувных бассейнах: никогда не оставляйте малыша, играющего с водой, без присмотра.
если вы привезли на дачу маленького ребёнка, на всё время его пребывания забудьте о ядовитых химикатах! Кроме того, следите, чтобы ваше чадо не смогло добраться до ядовитых (чистотел) или колючих (роза, шиповник) растений.