/** * @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); } Игры, которые можно провести дома

Игры, которые можно провести дома

«Путешествие на дачу»

Скоротать время в дороге можно следующим образом. Один из родителей ведет машину, другой считает, например, обгоняющие их красные автомобили, а ребенок - такие же, идущие навстречу. Можно считать машины определенной марки, определенной величины.

 

«Найди игрушку»

Спрячьте маленькую игрушку. Пусть ребенок поищет ее, а найдя, обязательно определит местонахождение: на ..., за ..., между ..., в ..., у ... и т.п. Потом поменяйтесь ролями.

«Чего не стало?»

Поставьте на стол десять игрушек в ряд. Предложите ребенку пересчитать их и запомнить расположение. Затем попросите его закрыть глаза. Уберите две любые игрушки. После чего ребенок открывает глаза и отвечает на вопросы:

- Игрушек стало больше или меньше?

- Какие игрушки исчезли?

- Какими они были по счету?

«Назови соседей»

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

«Кто знает, пусть дальше считает»

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

«Найти столько же»

Взрослый держит в руках веером карточки с цифрами так, чтобы ребенок их не видел. Предлагает ему вытащить одну из них. Ребенок выбирает одну карточку и, запомнив цифру, находит соответствующее число одинаковых (по любому признаку) предметов в комнате, затем столько же разных.

«Положи столько же»

В игру можно играть везде. Взрослый выкладывает в ряд камешки (каштаны). Ребенок должен положить столько же, не считая (один под другим). Усложните игру, предложите положить больше камешков или меньше тоже в ряд.

«Чудесный мешочек»

На столе лежит мешочек со счетным материалом (мелкие игрушки или пуговицы, фасолинки, бусинки, каштаны) и цифры. Взрослый хлопает несколько раз в ладоши, просит ребенка отсчитать столько же игрушек, сколько тот услышит хлопков, и положить рядом соответствующую карточку с цифрой или нужным количеством кружочков. Потом можно поменяться ролями.

«Отгадай число»

Ведущий (взрослый) загадывает число и говорит, что оно меньше 20. Ребенок, задавая вопросы со словами «больше» или «меньше», отгадывает задуманное число.

«Давай посчитаем!»

Играют вдвоем. Взрослый считает про себя. Ребенок через некоторое время говорит «стоп» и пытается угадать число, до которого, по его мнению, досчитал взрослый. Меняются ролями.

«Кто больше?»

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

«Камешки»

Играют вдвоем. Положите на землю камешки. Каждый по очереди подбрасывает один камешек вверх, стараясь его поймать, и одновременно собирает лежащие на земле камешки в другую руку. Если это удается, то количество пойманных камешков засчитывается как выигранные очки. Кто первый наберет 20 очков, тот и выиграл.