diff options
| -rw-r--r-- | app/controllers/admin/comments_controller.rb | 24 | ||||
| -rw-r--r-- | app/views/admin/comments/pending.haml | 25 | ||||
| -rw-r--r-- | app/views/layouts/admin.html.haml | 2 | ||||
| -rw-r--r-- | config/routes.rb | 11 |
4 files changed, 60 insertions, 2 deletions
| diff --git a/app/controllers/admin/comments_controller.rb b/app/controllers/admin/comments_controller.rb index bd255ad..ccde3e6 100644 --- a/app/controllers/admin/comments_controller.rb +++ b/app/controllers/admin/comments_controller.rb | |||
| @@ -2,7 +2,29 @@ class Admin::CommentsController < Admin::AdminController | |||
| 2 | before_action :set_section | 2 | before_action :set_section |
| 3 | 3 | ||
| 4 | def index | 4 | def index |
| 5 | @comments = Comment.order(updated_at: :desc).paginate(page: params[:page], per_page: 20) | 5 | @comments = Comment.where(status: :published).order(updated_at: :desc).paginate(page: params[:page], per_page: 20) |
| 6 | end | ||
| 7 | |||
| 8 | def pending | ||
| 9 | @comments = Comment.where(status: :pending).order(updated_at: :desc).paginate(page: params[:page], per_page: 20) | ||
| 10 | end | ||
| 11 | |||
| 12 | def accept | ||
| 13 | @comment = Comment.find(params[:id]) | ||
| 14 | @comment.status = :published | ||
| 15 | @comment.save! | ||
| 16 | |||
| 17 | flash.notice = "Comment successfully published." | ||
| 18 | redirect_to pending_admin_comments_url | ||
| 19 | end | ||
| 20 | |||
| 21 | def reject | ||
| 22 | @comment = Comment.find(params[:id]) | ||
| 23 | @comment.status = :rejected | ||
| 24 | @comment.save! | ||
| 25 | |||
| 26 | flash.notice = "Comment successfully rejected." | ||
| 27 | redirect_to pending_admin_comments_url | ||
| 6 | end | 28 | end |
| 7 | 29 | ||
| 8 | def destroy | 30 | def destroy |
| diff --git a/app/views/admin/comments/pending.haml b/app/views/admin/comments/pending.haml new file mode 100644 index 0000000..6abf371 --- /dev/null +++ b/app/views/admin/comments/pending.haml | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | - title "Pending Comments" | ||
| 2 | = will_paginate @comments | ||
| 3 | %table#entries | ||
| 4 | %tr | ||
| 5 | %th Text | ||
| 6 | %th Author | ||
| 7 | %th Blog post | ||
| 8 | %th Date updated | ||
| 9 | %th | ||
| 10 | - @comments.each do |comment| | ||
| 11 | %tr{ class: cycle("even", "odd") } | ||
| 12 | %td= comment.body | ||
| 13 | %td | ||
| 14 | %ul | ||
| 15 | %li= comment.username | ||
| 16 | %li= comment.email | ||
| 17 | - unless comment.website.empty? | ||
| 18 | %li= comment.website | ||
| 19 | %td= link_to comment.blog.title, comment.blog | ||
| 20 | %td= comment.published_at.strftime("%B %d, %Y, %l:%M%P") | ||
| 21 | %td | ||
| 22 | %ul.admin-actions | ||
| 23 | %li= link_to "Accept", accept_admin_comment_url(comment), method: :post, data: { confirm: "Are you sure you want to accept this comment?" } | ||
| 24 | %li= link_to "Reject", reject_admin_comment_url(comment), method: :post, data: { confirm: "Are you sure you want to reject this comment?" } | ||
| 25 | = will_paginate @comments | ||
| diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml index 0f54183..3949b5e 100644 --- a/app/views/layouts/admin.html.haml +++ b/app/views/layouts/admin.html.haml | |||
| @@ -39,5 +39,7 @@ | |||
| 39 | %li.minor= link_to "New game", new_admin_game_url | 39 | %li.minor= link_to "New game", new_admin_game_url |
| 40 | %li{major_sidebar_attrs("comments")} | 40 | %li{major_sidebar_attrs("comments")} |
| 41 | = link_to "Comments", admin_comments_url, class: "major-link" | 41 | = link_to "Comments", admin_comments_url, class: "major-link" |
| 42 | %ul.minors | ||
| 43 | %li.minor= link_to "Pending", pending_admin_comments_url | ||
| 42 | #main | 44 | #main |
| 43 | = yield | 45 | = yield |
| diff --git a/config/routes.rb b/config/routes.rb index 5aa1558..4b68dc3 100644 --- a/config/routes.rb +++ b/config/routes.rb | |||
| @@ -16,7 +16,16 @@ Rails.application.routes.draw do | |||
| 16 | 16 | ||
| 17 | resources :games, except: [:show] | 17 | resources :games, except: [:show] |
| 18 | 18 | ||
| 19 | resources :comments, only: [:index, :destroy] | 19 | resources :comments, only: [:index, :destroy] do |
| 20 | collection do | ||
| 21 | get 'pending' | ||
| 22 | end | ||
| 23 | |||
| 24 | member do | ||
| 25 | post 'accept' | ||
| 26 | post 'reject' | ||
| 27 | end | ||
| 28 | end | ||
| 20 | end | 29 | end |
| 21 | 30 | ||
| 22 | devise_for :users, controllers: { | 31 | devise_for :users, controllers: { |
