]> BookStack Code Mirror - bookstack/blobdiff - app/Http/Controllers/SearchController.php
Added auto-suggestions to tag names and values
[bookstack] / app / Http / Controllers / SearchController.php
index 074a4c777c7d7e9abe9f6d4f26c7fcca500cb69a..e198dc767913b9ac2f3ae5ffb7b8bdae00b5056f 100644 (file)
@@ -1,14 +1,14 @@
 <?php
 
-namespace Oxbow\Http\Controllers;
+namespace BookStack\Http\Controllers;
 
 use Illuminate\Http\Request;
 
-use Oxbow\Http\Requests;
-use Oxbow\Http\Controllers\Controller;
-use Oxbow\Repos\BookRepo;
-use Oxbow\Repos\ChapterRepo;
-use Oxbow\Repos\PageRepo;
+use BookStack\Http\Requests;
+use BookStack\Http\Controllers\Controller;
+use BookStack\Repos\BookRepo;
+use BookStack\Repos\ChapterRepo;
+use BookStack\Repos\PageRepo;
 
 class SearchController extends Controller
 {
@@ -38,15 +38,100 @@ class SearchController extends Controller
      */
     public function searchAll(Request $request)
     {
-        if(!$request->has('term')) {
+        if (!$request->has('term')) {
             return redirect()->back();
         }
         $searchTerm = $request->get('term');
-        $pages = $this->pageRepo->getBySearch($searchTerm);
-        $books = $this->bookRepo->getBySearch($searchTerm);
-        $chapters = $this->chapterRepo->getBySearch($searchTerm);
-        return view('search/all', ['pages' => $pages, 'books'=>$books, 'chapters' => $chapters, 'searchTerm' => $searchTerm]);
+        $paginationAppends = $request->only('term');
+        $pages = $this->pageRepo->getBySearch($searchTerm, [], 20, $paginationAppends);
+        $books = $this->bookRepo->getBySearch($searchTerm, 10, $paginationAppends);
+        $chapters = $this->chapterRepo->getBySearch($searchTerm, [], 10, $paginationAppends);
+        $this->setPageTitle('Search For ' . $searchTerm);
+        return view('search/all', [
+            'pages' => $pages,
+            'books' => $books,
+            'chapters' => $chapters,
+            'searchTerm' => $searchTerm
+        ]);
     }
 
+    /**
+     * Search only the pages in the system.
+     * @param Request $request
+     * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View
+     */
+    public function searchPages(Request $request)
+    {
+        if (!$request->has('term')) return redirect()->back();
+
+        $searchTerm = $request->get('term');
+        $paginationAppends = $request->only('term');
+        $pages = $this->pageRepo->getBySearch($searchTerm, [], 20, $paginationAppends);
+        $this->setPageTitle('Page Search For ' . $searchTerm);
+        return view('search/entity-search-list', [
+            'entities' => $pages,
+            'title' => 'Page Search Results',
+            'searchTerm' => $searchTerm
+        ]);
+    }
+
+    /**
+     * Search only the chapters in the system.
+     * @param Request $request
+     * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View
+     */
+    public function searchChapters(Request $request)
+    {
+        if (!$request->has('term')) return redirect()->back();
+
+        $searchTerm = $request->get('term');
+        $paginationAppends = $request->only('term');
+        $chapters = $this->chapterRepo->getBySearch($searchTerm, [], 20, $paginationAppends);
+        $this->setPageTitle('Chapter Search For ' . $searchTerm);
+        return view('search/entity-search-list', [
+            'entities' => $chapters,
+            'title' => 'Chapter Search Results',
+            'searchTerm' => $searchTerm
+        ]);
+    }
+
+    /**
+     * Search only the books in the system.
+     * @param Request $request
+     * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View
+     */
+    public function searchBooks(Request $request)
+    {
+        if (!$request->has('term')) return redirect()->back();
+
+        $searchTerm = $request->get('term');
+        $paginationAppends = $request->only('term');
+        $books = $this->bookRepo->getBySearch($searchTerm, 20, $paginationAppends);
+        $this->setPageTitle('Book Search For ' . $searchTerm);
+        return view('search/entity-search-list', [
+            'entities' => $books,
+            'title' => 'Book Search Results',
+            'searchTerm' => $searchTerm
+        ]);
+    }
+
+    /**
+     * Searches all entities within a book.
+     * @param Request $request
+     * @param integer $bookId
+     * @return \Illuminate\View\View
+     * @internal param string $searchTerm
+     */
+    public function searchBook(Request $request, $bookId)
+    {
+        if (!$request->has('term')) {
+            return redirect()->back();
+        }
+        $searchTerm = $request->get('term');
+        $searchWhereTerms = [['book_id', '=', $bookId]];
+        $pages = $this->pageRepo->getBySearch($searchTerm, $searchWhereTerms);
+        $chapters = $this->chapterRepo->getBySearch($searchTerm, $searchWhereTerms);
+        return view('search/book', ['pages' => $pages, 'chapters' => $chapters, 'searchTerm' => $searchTerm]);
+    }
 
 }