public function index() { // Términos por página $tpp = 5; // indice de letras $index = array(); // sacamos todo el glosario $glossary = Model\Glossary::getAll(); //recolocamos los post para la paginacion $p = 1; $page = 1; $posts = array(); foreach ($glossary as $id => $post) { // tratar el texto para las entradas $post->text = str_replace(array('%SITE_URL%'), array(SITE_URL), $post->text); $posts[] = $post; // y la inicial en el indice $letra = \strtolower($post->title[0]); $index[$letra][] = (object) array('title' => $post->title, 'url' => '/glossary/?page=' . $page . '#term' . $post->id); $p++; if ($p > $tpp) { $p = 1; $page++; } } return new View('view/glossary/index.html.php', array('tpp' => $tpp, 'index' => $index, 'posts' => $posts)); }
public static function process($action = 'list', $id = null) { $errors = array(); $url = '/admin/glossary'; if ($_SERVER['REQUEST_METHOD'] == 'POST') { $editing = false; if (!empty($_POST['id'])) { $post = Model\Glossary::get($_POST['id']); } else { $post = new Model\Glossary(); } // campos que actualizamos $fields = array('id', 'title', 'text', 'media', 'legend'); foreach ($fields as $field) { $post->{$field} = $_POST[$field]; } // tratar la imagen y ponerla en la propiedad image if (!empty($_FILES['image_upload']['name'])) { $post->image = $_FILES['image_upload']; $editing = true; } // tratar las imagenes que quitan foreach ($post->gallery as $key => $image) { if (!empty($_POST["gallery-{$image->id}-remove"])) { $image->remove('glossary'); unset($post->gallery[$key]); if ($post->image == $image->id) { $post->image = ''; } $editing = true; } } if (!empty($post->media)) { $post->media = new Model\Project\Media($post->media); } /// este es el único save que se lanza desde un metodo process_ if ($post->save($errors)) { if ($action == 'edit') { Message::Info('El término se ha actualizado correctamente'); } else { Message::Info('Se ha añadido un nuevo término'); $id = $post->id; } $action = $editing ? 'edit' : 'list'; } else { Message::Error(implode('<br />', $errors)); Message::Error('Ha habido algun problema al guardar los datos'); } } switch ($action) { case 'remove': // eliminar un término if (Model\Glossary::delete($id)) { Message::Info('Término eliminado'); } else { Message::Error('No se ha podido eliminar el término'); } break; case 'add': // nueva entrada con wisiwig // obtenemos datos basicos $post = new Model\Glossary(); $message = 'Añadiendo un nuevo término'; return new View('view/admin/index.html.php', array('folder' => 'glossary', 'file' => 'edit', 'action' => 'add', 'post' => $post, 'message' => $message)); break; case 'edit': if (empty($id)) { throw new Redirection('/admin/glossary'); break; } else { $post = Model\Glossary::get($id); if (!$post instanceof Model\Glossary) { Message::Error('La entrada esta corrupta, contacte con nosotros.'); $action = 'list'; break; } } $message = 'Editando un término existente'; return new View('view/admin/index.html.php', array('folder' => 'glossary', 'file' => 'edit', 'action' => 'edit', 'post' => $post, 'message' => $message)); break; } // lista de términos $posts = Model\Glossary::getAll(); return new View('view/admin/index.html.php', array('folder' => 'glossary', 'file' => 'list', 'posts' => $posts)); }