diff options
-rw-r--r-- | app/assets/stylesheets/admin/layout.scss | 13 | ||||
-rw-r--r-- | app/controllers/admin/quotes_controller.rb | 20 | ||||
-rw-r--r-- | app/views/admin/quotes/_form.html.haml | 27 | ||||
-rw-r--r-- | app/views/admin/quotes/edit.html.haml | 3 | ||||
-rw-r--r-- | app/views/admin/quotes/index.html.haml | 1 | ||||
-rw-r--r-- | app/views/admin/quotes/pending.html.haml | 1 | ||||
-rw-r--r-- | app/views/layouts/quotes.html.haml | 4 | ||||
-rw-r--r-- | app/views/quotes/_quote.html.haml | 2 | ||||
-rw-r--r-- | config/routes.rb | 2 |
9 files changed, 71 insertions, 2 deletions
diff --git a/app/assets/stylesheets/admin/layout.scss b/app/assets/stylesheets/admin/layout.scss index dbf84d2..f0017ed 100644 --- a/app/assets/stylesheets/admin/layout.scss +++ b/app/assets/stylesheets/admin/layout.scss | |||
@@ -152,6 +152,19 @@ body { | |||
152 | height: 100%; | 152 | height: 100%; |
153 | } | 153 | } |
154 | } | 154 | } |
155 | |||
156 | .halfbody-field { | ||
157 | height: 40%; | ||
158 | |||
159 | label { | ||
160 | display: none; | ||
161 | } | ||
162 | |||
163 | textarea { | ||
164 | width: 100%; | ||
165 | height: 100%; | ||
166 | } | ||
167 | } | ||
155 | } | 168 | } |
156 | 169 | ||
157 | #entries { | 170 | #entries { |
diff --git a/app/controllers/admin/quotes_controller.rb b/app/controllers/admin/quotes_controller.rb index 2c09627..70a541f 100644 --- a/app/controllers/admin/quotes_controller.rb +++ b/app/controllers/admin/quotes_controller.rb | |||
@@ -9,6 +9,22 @@ class Admin::QuotesController < Admin::AdminController | |||
9 | @quotes = Quote.pending.order(id: :desc).paginate(page: params[:page], per_page: 20) | 9 | @quotes = Quote.pending.order(id: :desc).paginate(page: params[:page], per_page: 20) |
10 | end | 10 | end |
11 | 11 | ||
12 | def edit | ||
13 | @quote = Quote.find(params[:id]) | ||
14 | end | ||
15 | |||
16 | def update | ||
17 | @quote = Quote.find(params[:id]) | ||
18 | |||
19 | if @quote.update(quote_params) | ||
20 | flash[:notice] = "Quote was successfully updated." | ||
21 | else | ||
22 | flash[:error] = "Error updating quote." | ||
23 | end | ||
24 | |||
25 | render :edit | ||
26 | end | ||
27 | |||
12 | def accept | 28 | def accept |
13 | @quote = Quote.find(params[:id]) | 29 | @quote = Quote.find(params[:id]) |
14 | @quote.state = :published | 30 | @quote.state = :published |
@@ -31,4 +47,8 @@ class Admin::QuotesController < Admin::AdminController | |||
31 | def set_section | 47 | def set_section |
32 | @section = "quotes" | 48 | @section = "quotes" |
33 | end | 49 | end |
50 | |||
51 | def quote_params | ||
52 | params.require(:quote).permit(:content, :state, :notes, :submitter, :tag_list) | ||
53 | end | ||
34 | end | 54 | end |
diff --git a/app/views/admin/quotes/_form.html.haml b/app/views/admin/quotes/_form.html.haml new file mode 100644 index 0000000..920835b --- /dev/null +++ b/app/views/admin/quotes/_form.html.haml | |||
@@ -0,0 +1,27 @@ | |||
1 | %fieldset#content | ||
2 | %h2 Quote ##{f.object.id} | ||
3 | .halfbody-field | ||
4 | = f.label :content | ||
5 | = f.text_area :content | ||
6 | %h3 Notes | ||
7 | .halfbody-field | ||
8 | = f.label :notes | ||
9 | = f.text_area :notes | ||
10 | %fieldset#details | ||
11 | - if f.object.errors.any? | ||
12 | #errors.details-module | ||
13 | %h3 Error! | ||
14 | %ul | ||
15 | - f.object.errors.full_messages.each do |error| | ||
16 | %li= error | ||
17 | - unless f.object.new_record? | ||
18 | #entry-preview-link.details-module= link_to "View quote", quote_url(f.object.id), target: "entry-preview" | ||
19 | .details-module | ||
20 | .tags-field | ||
21 | = f.label :tag_list, "Tags" | ||
22 | = f.text_field :tag_list, type: :tags, value: f.object.tag_list.join(",") | ||
23 | .details-module | ||
24 | .published-field | ||
25 | = f.label :state | ||
26 | = f.select :state, Quote.state.options | ||
27 | .details-module= f.submit | ||
diff --git a/app/views/admin/quotes/edit.html.haml b/app/views/admin/quotes/edit.html.haml new file mode 100644 index 0000000..47ff2d1 --- /dev/null +++ b/app/views/admin/quotes/edit.html.haml | |||
@@ -0,0 +1,3 @@ | |||
1 | - title "Editing Quote \##{@quote.id}" | ||
2 | = form_for @quote, url: admin_quote_url(@quote.id), html: { id: "entry-form" } do |f| | ||
3 | = render partial: "form", locals: { f: f } | ||
diff --git a/app/views/admin/quotes/index.html.haml b/app/views/admin/quotes/index.html.haml index afe2c20..c1a4866 100644 --- a/app/views/admin/quotes/index.html.haml +++ b/app/views/admin/quotes/index.html.haml | |||
@@ -16,5 +16,6 @@ | |||
16 | %td | 16 | %td |
17 | %ul.admin-actions | 17 | %ul.admin-actions |
18 | %li= link_to "View", quote | 18 | %li= link_to "View", quote |
19 | %li= link_to "Edit", edit_admin_quote_url(quote) | ||
19 | %li= link_to "Delete", admin_quote_url(quote), method: :delete, data: { confirm: "Are you sure?" } | 20 | %li= link_to "Delete", admin_quote_url(quote), method: :delete, data: { confirm: "Are you sure?" } |
20 | = will_paginate @quotes | 21 | = will_paginate @quotes |
diff --git a/app/views/admin/quotes/pending.html.haml b/app/views/admin/quotes/pending.html.haml index 14d6cf8..ef52099 100644 --- a/app/views/admin/quotes/pending.html.haml +++ b/app/views/admin/quotes/pending.html.haml | |||
@@ -15,6 +15,7 @@ | |||
15 | %td= quote.created_at.strftime("%B %d, %Y, %l:%M%P") | 15 | %td= quote.created_at.strftime("%B %d, %Y, %l:%M%P") |
16 | %td | 16 | %td |
17 | %ul.admin-actions | 17 | %ul.admin-actions |
18 | %li= link_to "Edit", edit_admin_quote_url(quote) | ||
18 | %li= link_to "Accept", accept_admin_quote_url(quote), method: :post, data: { confirm: "Are you sure you want to accept this quote?" } | 19 | %li= link_to "Accept", accept_admin_quote_url(quote), method: :post, data: { confirm: "Are you sure you want to accept this quote?" } |
19 | %li= link_to "Reject", admin_quote_url(quote), method: :delete, data: { confirm: "Are you sure you want to reject this quote?" } | 20 | %li= link_to "Reject", admin_quote_url(quote), method: :delete, data: { confirm: "Are you sure you want to reject this quote?" } |
20 | = will_paginate @quotes | 21 | = will_paginate @quotes |
diff --git a/app/views/layouts/quotes.html.haml b/app/views/layouts/quotes.html.haml index f42eee0..98a7a86 100644 --- a/app/views/layouts/quotes.html.haml +++ b/app/views/layouts/quotes.html.haml | |||
@@ -11,7 +11,7 @@ | |||
11 | %body | 11 | %body |
12 | #wrap | 12 | #wrap |
13 | %header#banner | 13 | %header#banner |
14 | %h1#banner-title= link_to "The Four Island Quotes DB", root_path | 14 | %h1#banner-title= link_to "The Four Island Quotes DB", quotes_url |
15 | #banner-abbr FIQDB | 15 | #banner-abbr FIQDB |
16 | .cleardiv | 16 | .cleardiv |
17 | %nav#top-bar | 17 | %nav#top-bar |
@@ -25,6 +25,8 @@ | |||
25 | %li= link_to_unless_current "Tags", tags_quotes_url | 25 | %li= link_to_unless_current "Tags", tags_quotes_url |
26 | %li= link_to_unless_current "Stats", stats_quotes_url | 26 | %li= link_to_unless_current "Stats", stats_quotes_url |
27 | %li= link_to_unless_current "Feed", latest_quotes_url(:atom) | 27 | %li= link_to_unless_current "Feed", latest_quotes_url(:atom) |
28 | - if user_signed_in? | ||
29 | %li= link_to_unless_current "Admin", admin_url | ||
28 | .cleardiv | 30 | .cleardiv |
29 | #page-body | 31 | #page-body |
30 | - if flash[:notice] | 32 | - if flash[:notice] |
diff --git a/app/views/quotes/_quote.html.haml b/app/views/quotes/_quote.html.haml index 2a9fb37..46b0266 100644 --- a/app/views/quotes/_quote.html.haml +++ b/app/views/quotes/_quote.html.haml | |||
@@ -5,6 +5,8 @@ | |||
5 | %span.quote-rating{ :id => "quote-rating-#{quote.id}" }= "+#{quote.upvotes}/-#{quote.downvotes}" | 5 | %span.quote-rating{ :id => "quote-rating-#{quote.id}" }= "+#{quote.upvotes}/-#{quote.downvotes}" |
6 | %span.vote-link{ :id => "quote-downvote-link-#{quote.id}" }= link_to_unless (quote.new_record? or quote.already_downvoted?(request.remote_ip)), "Down", downvote_quote_path(quote.id), :remote => true, :rel => "nofollow", :class => "quote-downvote-link", method: :post | 6 | %span.vote-link{ :id => "quote-downvote-link-#{quote.id}" }= link_to_unless (quote.new_record? or quote.already_downvoted?(request.remote_ip)), "Down", downvote_quote_path(quote.id), :remote => true, :rel => "nofollow", :class => "quote-downvote-link", method: :post |
7 | %datetime= quote.published_date | 7 | %datetime= quote.published_date |
8 | - if user_signed_in? and !quote.new_record? | ||
9 | = link_to "Edit", edit_admin_quote_path(quote), :class => "quote-edit-link" | ||
8 | %blockquote.quote-body= raw quote_format(h(quote.content)) | 10 | %blockquote.quote-body= raw quote_format(h(quote.content)) |
9 | - if !quote.new_record? and quote.has_extra? | 11 | - if !quote.new_record? and quote.has_extra? |
10 | .quote-footer | 12 | .quote-footer |
diff --git a/config/routes.rb b/config/routes.rb index 59589aa..1671d54 100644 --- a/config/routes.rb +++ b/config/routes.rb | |||
@@ -28,7 +28,7 @@ Rails.application.routes.draw do | |||
28 | end | 28 | end |
29 | end | 29 | end |
30 | 30 | ||
31 | resources :quotes, only: [:index, :destroy] do | 31 | resources :quotes do |
32 | collection do | 32 | collection do |
33 | get 'pending' | 33 | get 'pending' |
34 | end | 34 | end |