/** * @Request({"id": "int", "type": "string"}) */ public function editAction($id = 0, $type = null) { if (!$id) { $widget = Widget::create(['type' => $type]); } else { if (!($widget = Widget::find($id))) { App::abort(404, 'Widget not found.'); } } return ['$view' => ['title' => __('Widgets'), 'name' => 'system/widget/edit.php'], '$data' => ['widget' => $widget, 'config' => ['menus' => App::menu(), 'nodes' => array_values(Node::query()->get()), 'roles' => array_values(Role::findAll()), 'types' => array_values(App::widget()->all()), 'positions' => array_values(App::position()->all())]]]; }
/** * @Route("/", methods="POST") * @Request({"menu":"array"}, csrf=true) */ public function saveAction($menu) { $oldId = isset($menu['id']) ? trim($menu['id']) : null; $label = trim($menu['label']); if (!($id = App::filter($label, 'slugify'))) { App::abort(400, __('Invalid id.')); } if ($id != $oldId) { if ($this->config->has('menus.' . $id)) { throw new ConflictException(__('Duplicate Menu Id.')); } $this->config->remove('menus.' . $oldId); Node::where(['menu = :old'], [':old' => $oldId])->update(['menu' => $id]); } $this->config->merge(['menus' => [$id => compact('id', 'label')]]); App::menu()->assign($id, $menu['positions']); return ['message' => 'success', 'menu' => $menu]; }
/** * @Route("site/page/edit", name="page/edit") * @Access("site: manage site", admin=true) * @Request({"id", "menu"}) */ public function editAction($id = '', $menu = '') { if (is_numeric($id)) { if (!$id or !($node = Node::find($id))) { App::abort(404, 'Node not found.'); } } else { $node = Node::create(['type' => $id]); if ($menu && !App::menu($menu)) { App::abort(404, 'Menu not found.'); } $node->menu = $menu; } if (!($type = $this->site->getType($node->type))) { App::abort(404, 'Type not found.'); } return ['$view' => ['title' => __('Pages'), 'name' => 'system/site/admin/edit.php'], '$data' => ['node' => $node, 'type' => $type, 'roles' => array_values(Role::findAll())]]; }