From c5da1e620c07697c2b7b5d4b51db73ef0fc143e4 Mon Sep 17 00:00:00 2001
From: Paul Duncan <pabs@pablotron.org>
Date: Tue, 24 May 2016 21:14:13 -0400
Subject: add state filter and dropdown.js

---
 src/guff.cr                 | 28 ++++++++++++++--------------
 src/views/admin-page.ecr    | 41 +++++++++++++++++++++++++++++++++++++++--
 src/views/dropdown/menu.ecr |  2 +-
 3 files changed, 54 insertions(+), 17 deletions(-)

(limited to 'src')

diff --git a/src/guff.cr b/src/guff.cr
index 121f150..d3817d0 100644
--- a/src/guff.cr
+++ b/src/guff.cr
@@ -460,11 +460,11 @@ module Guff
       LIMIT = 50
 
       def get_posts(
-        site_id   : Int64?   = nil,
-        post_type : String?  = nil,
-        state     : String?  = nil,
-        q         : String?  = nil,
-        page      : Int32    = 1,
+        site_id : Int64?   = nil,
+        type    : String?  = nil,
+        state   : String?  = nil,
+        q       : String?  = nil,
+        page    : Int32    = 1,
       )
         filters = %w{1}
         args = [] of String
@@ -478,9 +478,9 @@ module Guff
           args << site_id.to_s
         end
 
-        if post_type
+        if type
           # add type filter
-          filters << case post_type
+          filters << case type
           when "blog"
             "x.post_id IS NOT NULL"
           when "page"
@@ -491,11 +491,11 @@ module Guff
             # allow "all"
             "1"
           else
-            raise "unknown post type: #{post_type}"
+            raise "unknown post type: #{type}"
           end
         end
 
-        if state
+        if state && state != "default"
           # add state filter
           filters << "b.state = ?"
           args << state
@@ -1450,11 +1450,11 @@ module Guff
     module PostAPI
       def do_post_get_posts(params : HTTP::Params)
         @context.models.post.get_posts(
-          site_id:    params["site_id"]? ? params["site_id"].to_i64 : nil,
-          state:      params["state"]?,
-          post_type:  params["post_type"]?,
-          q:          params["q"]?,
-          page:       params["page"].to_i32,
+          site_id:  params["site_id"]? ? params["site_id"].to_i64 : nil,
+          state:    params["state"]?,
+          type:     params["type"]?,
+          q:        params["q"]?,
+          page:     params["page"].to_i32,
         )
       end
     end
diff --git a/src/views/admin-page.ecr b/src/views/admin-page.ecr
index eedc41c..ad8d429 100644
--- a/src/views/admin-page.ecr
+++ b/src/views/admin-page.ecr
@@ -87,11 +87,14 @@
                   <div class='btn-group btn-group-sm'><%=
                     dropdown(
                       id:       "posts-filter-type",
-                      name:     "Type",
                       css:      "posts-filter-menu",
-                      text:     "Filter by type.",
+
+                      name:     "Type",
+                      text:     "Filter posts by type.",
+
                       icon:     "",
                       default:  "all",
+
                       items: [{
                         id:   "all",
                         name: "All",
@@ -114,6 +117,39 @@
                     )
                   %></div><!-- btn-group -->
 
+                  <div class='btn-group btn-group-sm'><%=
+                    dropdown(
+                      id:       "posts-filter-state",
+                      css:      "posts-filter-menu",
+
+                      name:     "State",
+                      text:     "Filter by post state.",
+
+                      icon:     "",
+                      default:  "default",
+
+                      items: [{
+                        id:   "default",
+                        name: "Default",
+                        text: "Show drafts and posted items.",
+                      }, {
+                        type: "divider",
+                      }, {
+                        id:   "draft",
+                        name: "Draft",
+                        text: "Show draft items.",
+                      }, {
+                        id:   "posted",
+                        name: "Posted",
+                        text: "Show posted items.",
+                      }, {
+                        id:   "deleted",
+                        name: "Deleted",
+                        text: "Show deleted items.",
+                      }],
+                    )
+                  %></div><!-- btn-group -->
+
                   <div class='btn-group btn-group-sm pull-right'>
                     <a
                       href='#'
@@ -1050,6 +1086,7 @@
       assets/bootstrap-3.3.6/js/bootstrap.min.js
       assets/ckeditor-4.5.8-custom/ckeditor.js
       assets/js/search-field.js
+      assets/js/dropdown.js
       assets/js/admin/tabs/users.js
       assets/js/admin/tabs/posts.js
       assets/js/admin/dialogs/user-add.js
diff --git a/src/views/dropdown/menu.ecr b/src/views/dropdown/menu.ecr
index ca39c1e..df17ba2 100644
--- a/src/views/dropdown/menu.ecr
+++ b/src/views/dropdown/menu.ecr
@@ -12,7 +12,7 @@
 
 <ul
   id='<%= h(@id) %>'
-  class='dropdown-menu <%= h(@css) %>'
+  class='dropdown-menu guff-dropdown <%= h(@css) %>'
   data-default='<%= h(@default) %>'
 ><%=
   items
-- 
cgit v1.2.3