public static function process($action = 'list', $id = null) { $node = isset($_SESSION['admin_node']) ? $_SESSION['admin_node'] : \GOTEO_NODE; $errors = array(); switch ($action) { case 'add': if ($_SERVER['REQUEST_METHOD'] == 'POST') { $page = new Page(); $page->id = $_POST['id']; $page->name = $_POST['name']; if ($page->add($errors)) { Message::Info('La página <strong>' . $page->name . '</strong> se ha creado correctamente, se puede editar ahora.'); throw new Redirection("/admin/pages/edit/{$page->id}"); } else { Message::Error('No se ha creado bien ' . implode('<br />', $errors)); throw new Redirection("/admin/pages/add"); } } return new View('view/admin/index.html.php', array('folder' => 'pages', 'file' => 'add')); break; case 'edit': if ($node != \GOTEO_NODE && !in_array($id, static::_node_pages())) { Message::Info('No puedes gestionar la página <strong>' . $id . '</strong>'); throw new Redirection("/admin/pages"); } // si estamos editando una página $page = Page::get($id, $node, \GOTEO_DEFAULT_LANG); // si llega post, vamos a guardar los cambios if ($_SERVER['REQUEST_METHOD'] == 'POST') { $page->name = $_POST['name']; $page->description = $_POST['description']; $page->content = $_POST['content']; if ($page->save($errors)) { // Evento Feed $log = new Feed(); if ($node != \GOTEO_NODE && in_array($id, static::_node_pages())) { $log->setTarget($node, 'node'); } $log->populate(Text::_('modificacion de página institucional (admin)'), '/admin/pages', \vsprintf("El admin %s ha %s la página institucional %s", array(Feed::item('user', $_SESSION['user']->name, $_SESSION['user']->id), Feed::item('relevant', 'Modificado'), Feed::item('relevant', $page->name, $page->url)))); $log->doAdmin('admin'); unset($log); Message::Info('La página ' . $page->name . ' se ha actualizado correctamente'); throw new Redirection("/admin/pages"); } else { Message::Error(implode('<br />', $errors)); } } // sino, mostramos para editar return new View('view/admin/index.html.php', array('folder' => 'pages', 'file' => 'edit', 'page' => $page)); break; case 'list': // si estamos en la lista de páginas $pages = Page::getList($node); return new View('view/admin/index.html.php', array('folder' => 'pages', 'file' => 'list', 'pages' => $pages, 'node' => $node)); break; } }