Esempio n. 1
0
 /**
  * Adds protected node types.
  */
 public function onEnable($event, $module)
 {
     foreach ((array) $module->get('nodes') as $type => $route) {
         if (isset($route['protected']) and $route['protected'] and !Node::where(['type = ?'], [$type])->first()) {
             Node::create(['title' => $route['label'], 'slug' => App::filter($route['label'], 'slugify'), 'type' => $type, 'status' => 1, 'link' => $route['name']])->save();
         }
     }
 }
Esempio n. 2
0
 /**
  * Register a node type.
  *
  * @param string $type
  * @param array  $route
  */
 public function registerType($type, array $route)
 {
     if (isset($route['protected']) and $route['protected'] and !array_filter(Node::findAll(true), function ($node) use($type) {
         return $type === $node->type;
     })) {
         Node::create(['title' => $route['label'], 'slug' => App::filter($route['label'], 'slugify'), 'type' => $type, 'status' => 1, 'link' => $route['name']])->save();
     }
     $route['id'] = $type;
     $this->types[$type] = $route;
 }
 /**
  * @Route("/", methods="POST")
  * @Route("/{id}", methods="POST", requirements={"id"="\d+"})
  * @Request({"node": "array", "id": "int"}, csrf=true)
  */
 public function saveAction($data, $id = 0)
 {
     if (!($node = Node::find($id))) {
         $node = Node::create();
         unset($data['id']);
     }
     if (!($data['slug'] = App::filter($data['slug'] ?: $data['title'], 'slugify'))) {
         App::abort(400, __('Invalid slug.'));
     }
     $node->save($data);
     return ['message' => 'success', 'node' => $node];
 }
Esempio n. 4
0
 /**
  * @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())]];
 }
Esempio n. 5
0
 /**
  * {@inheritdoc}
  */
 public function main(App $app)
 {
     $app['node'] = function ($app) {
         if ($id = $app['request']->attributes->get('_node') and $node = Node::find($id)) {
             return $node;
         }
         return Node::create();
     };
     $app['menu'] = function ($app) {
         $menus = new MenuManager($app->config($app['theme']->name), $this->config('menus'));
         foreach ($app['theme']->get('menus', []) as $name => $label) {
             $menus->register($name, $label);
         }
         return $menus;
     };
     $app->extend('view', function ($view) use($app) {
         return $view->addHelper(new MenuHelper($app['menu']));
     });
 }