Esempio n. 1
0
 public static function on_post_delete(Context $ctx)
 {
     $map = BaseRoute::load($ctx);
     foreach ((array) $ctx->post('delete') as $path) {
         if (array_key_exists($key = $path, $map)) {
             unset($map[$key]);
         } else {
             throw new PageNotFoundException(t('Путь <tt>%path</tt> не найден.', array('%path' => $path)));
         }
     }
     BaseRoute::save($map);
     return $ctx->getRedirect(self::listurl);
 }
Esempio n. 2
0
 private static function update(Context $ctx, $name, array $info)
 {
     $widgets = Widget::loadWidgets($ctx);
     if (isset($info['pages'])) {
         $pages = $info['pages'];
         unset($info['pages']);
     } else {
         $pages = null;
     }
     // Список виджетов без текущего.
     $reduced = array_diff(array_keys($widgets), array($name));
     // Удаляем лишнее из списка маршрутов.
     $routes = self::remove_dead_widgets(BaseRoute::load($ctx), $reduced);
     // Цепляем текущий виджет к выбранным страницам.
     if (null !== $pages) {
         foreach ($pages as $page) {
             if (!array_key_exists($route = $page, $routes)) {
                 throw new PageNotFoundException(t('Страница %page перестала существовать.', array('%page' => $page)));
             }
             $pwlist = isset($routes[$route]['widgets']) ? (array) $routes[$route]['widgets'] : array();
             $pwlist[] = $name;
             sort($pwlist);
             $routes[$route]['widgets'] = array_unique($pwlist);
         }
     }
     $widgets[$name] = $info;
     Widget::save($widgets);
     BaseRoute::save($routes);
 }