public function getIndex() { // ------------------------------------------------------------------------------------------------------------ // WRITER LIST // ------------------------------------------------------------------------------------------------------------ $writers = User::isAdmin(true)->orderBy('name')->get(); $writer_list = $writers->lists('name', 'id'); // ------------------------------------------------------------------------------------------------------------ // STATUS LIST // ------------------------------------------------------------------------------------------------------------ foreach (Article::statusList() as $status) { $status_list[$status] = ucwords($status); } // ------------------------------------------------------------------------------------------------------------ // QUERY INDEX // ------------------------------------------------------------------------------------------------------------ $filters = Input::only('title', 'writer', 'status'); $q = Article::latest(); // Filter title if ($filters['title']) { $q = $q->NameLike('*' . $filters['title'] . '*'); } // Filter Status if ($filters['status']) { switch (strtolower($filters['status'])) { case 'published': $q = $q->published(); break; case 'draft': $q = $q->draft(); break; case 'upcoming': $q = $q->upcoming(); break; } } // Filter Writer if ($filters['writer']) { $q = $q->WriterById($filters['writer']); $filters['writer_name'] = $writers->find($filters['writer'])->name; } $data = $q->paginate(30); // ------------------------------------------------------------------------------------------------------------ // SHOW DISPLAY // ------------------------------------------------------------------------------------------------------------ $this->layout->page = view($this->page_base_dir . 'index')->with('route_name', $this->route_name)->with('view_name', $this->view_name); $this->layout->page->data = $data; $this->layout->page->writer_list = $writer_list; $this->layout->page->status_list = $status_list; $this->layout->page->filters = $filters; return $this->layout; }