Пример #1
0
 /**
  * Editing Widgets
  */
 public function action_edit()
 {
     $id = (int) $this->request->param('id', 0);
     $widget = ORM::factory('widget', $id);
     if (!$widget->loaded()) {
         Log::error('Attempt to access non-existent widget.');
         Message::error(__('Widget doesn\'t exists!'));
         $this->request->redirect(Route::get('admin/widget')->uri());
     }
     $widget_regions = array();
     $adminTheme = Theme::getTheme();
     $frontTheme = Theme::getTheme(Config::get('site.theme', $adminTheme->name));
     if (isset($adminTheme->regions) and !empty($adminTheme->regions)) {
         $widget_regions = Arr::merge($widget_regions, $adminTheme->regions);
     }
     if (isset($frontTheme->regions) and !empty($frontTheme->regions)) {
         $widget_regions = Arr::merge($widget_regions, $frontTheme->regions);
     }
     $handler = Widget::factory($widget->name, $widget);
     $fields = $handler->form();
     // Add a last region for disabled blocks.
     $widget_regions = Arr::merge($widget_regions, array(self::$WIDGET_REGION_NONE => self::$WIDGET_REGION_NONE));
     if (isset($widget_regions[self::$WIDGET_REGION_NONE])) {
         $widget_regions[self::$WIDGET_REGION_NONE] = __('Disabled');
     }
     $all_roles = ORM::factory('role')->find_all()->as_array('id', 'name');
     $this->title = __('Edit %widget widget', array('%widget' => $widget->title));
     $view = View::factory('admin/widget/form')->set('widget', $widget)->set('fields', $fields)->set('roles', $all_roles)->set('regions', $widget_regions);
     if ($this->valid_post('widget')) {
         $widget->values($_POST);
         try {
             $widget->save();
             if (isset($_POST['widget'])) {
                 unset($_POST['widget'], $_POST['_token'], $_POST['_action']);
             }
             $handler->save($_POST);
             Message::success(__('Widget %name updated successful!', array('%name' => $widget->title)));
             Cache::instance('widgets')->delete_all();
             // Redirect to listing
             $this->request->redirect(Route::get('admin/widget')->uri());
         } catch (ORM_Validation_Exception $e) {
             $view->errors = $e->errors('models');
         }
     }
     Assets::select2();
     $this->response->body($view);
 }
Пример #2
0
 /**
  * Edit menu item
  *
  * @uses  Message::error
  * @uses  Log::add
  * @uses  Request::redirect
  * @uses  Route::get
  * @uses  Route::uri
  * @uses  ORM::save
  * @uses  Cache::delete_all
  * @uses  Assets::select2
  */
 public function action_edit()
 {
     $id = (int) $this->request->param('id', 0);
     $menu = ORM::factory('menu', $id);
     if (!$menu->loaded()) {
         Log::error('Attempt to access non-existent Menu.');
         Message::error(__("Menu doesn't exists!"));
         $this->request->redirect(Route::get('admin/menu')->uri());
     }
     $this->title = __('Edit Item :name', array(':name' => $menu->title));
     $view = View::factory('admin/menu/item/form')->bind('menu', $menu)->bind('post', $menu)->bind('errors', $this->_errors);
     $post = ORM::factory('menu', $id)->values($_POST);
     if ($this->valid_post('menu-item')) {
         try {
             $post->save();
             Message::success(__('Menu Item %name updated successful!', array('%name' => $post->title)));
             Cache::instance('menus')->delete_all();
             $this->request->redirect(Route::get('admin/menu/item')->uri(array('action' => 'list', 'id' => $menu->scp)), 200);
         } catch (ORM_Validation_Exception $e) {
             $this->_errors = $e->errors('models', TRUE);
         }
     }
     Assets::select2();
     $this->response->body($view);
 }