]> BookStack Code Mirror - bookstack/commitdiff
Added search
authorDan Brown <redacted>
Thu, 16 Jul 2015 18:53:24 +0000 (19:53 +0100)
committerDan Brown <redacted>
Thu, 16 Jul 2015 18:53:24 +0000 (19:53 +0100)
app/Http/Controllers/PageController.php
app/Http/routes.php
app/Repos/PageRepo.php
resources/assets/sass/_forms.scss
resources/assets/sass/_text.scss
resources/assets/sass/styles.scss
resources/views/base.blade.php
resources/views/pages/search-results.blade.php [new file with mode: 0644]

index 0a9f11844d074f95d1fb242e97b3cafb4163330b..57901573b594b923f21f21c41a97039d0d3231c6 100644 (file)
@@ -132,6 +132,15 @@ class PageController extends Controller
         return redirect($page->getUrl());
     }
 
+    public function searchAll(Request $request)
+    {
+        $searchTerm = $request->get('term');
+        if(empty($searchTerm)) return redirect()->back();
+
+        $pages = $this->pageRepo->getBySearch($searchTerm);
+        return view('pages/search-results', ['pages' => $pages, 'searchTerm' => $searchTerm]);
+    }
+
     /**
      * Remove the specified resource from storage.
      *
index 52394c56456de4779141fc92d5de507732b9a843..c190da616c3835c4ec092a9f22fd6e9b772f665a 100644 (file)
@@ -36,6 +36,7 @@ Route::get('/images/all/{page}', 'ImageController@getAll');
 Route::get('/images/{any}', 'ImageController@getImage')->where('any', '.*');
 
 Route::get('/link/{id}', 'PageController@redirectFromLink');
+Route::get('/pages/search/all', 'PageController@searchAll');
 
 Route::get('/', function () {
     return view('base');
index 62fbe9d8f18947aab2457d2ab8945d6779605c6e..a62907472883ce55d48941b16a2bcc01c4709247 100644 (file)
@@ -49,4 +49,14 @@ class PageRepo
         $page->delete();
     }
 
+    public function getBySearch($term)
+    {
+        $terms = explode(' ', trim($term));
+        $query = $this->page;
+        foreach($terms as $term) {
+            $query = $query->where('text', 'like', '%'.$term.'%');
+        }
+        return $query->get();
+    }
+
 }
\ No newline at end of file
index 37e03c3cf1f67efc2af877e936300765bb091fdf..861cfbb9fae95829028e1dd3c30592ba0790125b 100644 (file)
@@ -1,9 +1,8 @@
 
 .input-base {
   background-color: #FFF;
-  border-radius: 2px;
-  border: 1px solid #BBB;
-  border-top: 1px solid #AAA;
+  border-radius: 3px;
+  border: 1px solid #CCC;
   display: inline-block;
   font-size: $fs-s;
   font-family: $text;
index 584b12b5bbf1561efa951203e070c47cac7ae31b..7c8e025dd8e391ee4008b59cdb4f76a9c6c38c9a 100644 (file)
@@ -164,6 +164,14 @@ p.secondary, p .secondary, span.secondary, .text-secondary {
        color: $secondary;
 }
 
+/*
+ * Lists
+ */
+ul {
+  list-style: disc;
+  margin-left: $-m;
+}
+
 /*
  * Generic text styling classes
  */
index 853e98454be47c1a4b480c48e64238adfe6a88c7..9dc65cb8d17a7cc41d238276f60cd0783e4d779b 100644 (file)
@@ -29,9 +29,10 @@ header hr {
 header .menu {
   margin-bottom: 0;
   list-style: none;
+  margin-left: 0;
   li {
     display: inline-block;
-    margin-left: $-m;
+    margin-right: $-m;
   }
 }
 
index e61944e37325ccd0eaea1eb55bc00fca1e814478..6345de2b4ea2be75bc5d64d5c74c2be05403d326 100644 (file)
             }, 800); // Adjust to change animations speed (ms)
             return this;
         };
+        $.expr[":"].contains = $.expr.createPseudo(function(arg) {
+            return function( elem ) {
+                return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
+            };
+        });
     </script>
     @yield('head')
 </head>
 
     <header>
         <div class="container">
-            <div class="padded-vertical clearfix">
-                <div class="logo float left">Oxbow</div>
-                <ul class="menu float right">
-                    <li><a href="/books"><i class="fa fa-book"></i>Books</a></li>
-                </ul>
+            <div class="padded-vertical row clearfix">
+                <div class="col-md-3">
+                    <div class="logo float left">Oxbow</div>
+                </div>
+                <div class="col-md-9">
+                    <ul class="menu float">
+                        <li><a href="/books"><i class="fa fa-book"></i>Books</a></li>
+                    </ul>
+                    <div class="search-box float right">
+                        <form action="/pages/search/all" id="search-form" method="GET">
+                            {!! csrf_field() !!}
+                            <input type="text" placeholder="Search all pages..." name="term" id="search-input">
+                        </form>
+                    </div>
+                </div>
             </div>
         </div>
     </header>
diff --git a/resources/views/pages/search-results.blade.php b/resources/views/pages/search-results.blade.php
new file mode 100644 (file)
index 0000000..cf3066d
--- /dev/null
@@ -0,0 +1,30 @@
+@extends('base')
+
+@section('content')
+
+
+    <div class="row">
+
+        <div class="col-md-3 page-menu">
+
+        </div>
+
+        <div class="col-md-9 page-content">
+            <h1>Search Results <span class="subheader">For '{{$searchTerm}}'</span></h1>
+            <div class="page-list">
+                @if(count($pages) > 0)
+                    @foreach($pages as $page)
+                        <a href="{{$page->getUrl() . '#' . $searchTerm}}">{{$page->name}}</a>
+                    @endforeach
+                @else
+                    <p class="text-muted">No pages matched this search</p>
+                @endif
+            </div>
+        </div>
+
+    </div>
+
+
+
+
+@stop
\ No newline at end of file