diff --git a/app/assets/javascripts/inbox.coffee b/app/assets/javascripts/inbox.coffee index 87bd87e9..b4b28998 100644 --- a/app/assets/javascripts/inbox.coffee +++ b/app/assets/javascripts/inbox.coffee @@ -14,12 +14,39 @@ complete: (jqxhr, status) -> btn.button "reset" + +($ document).on "click", "button#ib-delete-all", -> + if confirm 'Are you sure?' + btn = ($ this) + btn.button "loading" + succ = no + $.ajax + url: '/ajax/delete_all_inbox' + type: 'POST' + dataType: 'json' + success: (data, status, jqxhr) -> + if data.success + succ = yes + entries = ($ "div#entries") + entries.slideUp 400, -> + entries.html("Nothing to see here.") + entries.fadeIn() + error: (jqxhr, status, error) -> + console.log jqxhr, status, error + showNotification "An error occurred, a developer should check the console for details", false + complete: (jqxhr, status) -> + btn.button "reset" + if succ + btn.attr "disabled", "disabled" # this doesn't really work like I wanted it to… + + $(document).on "keydown", "textarea[name=ib-answer]", (evt) -> iid = $(this)[0].dataset.id if evt.keyCode == 13 and evt.ctrlKey # trigger warning: $("button[name=ib-answer][data-ib-id=#{iid}]").trigger 'click' + $(document).on "click", "button[name=ib-answer]", -> btn = $(this) btn.button "loading" @@ -48,6 +75,7 @@ $(document).on "click", "button[name=ib-answer]", -> btn.button "reset" $("textarea[name=ib-answer][data-id=#{iid}]").removeAttr "readonly" + $(document).on "click", "button[name=ib-destroy]", -> if confirm 'Are you sure?' btn = $(this) diff --git a/app/assets/stylesheets/scss/user.scss b/app/assets/stylesheets/scss/user.scss index 3b6b19fa..896a8f4b 100644 --- a/app/assets/stylesheets/scss/user.scss +++ b/app/assets/stylesheets/scss/user.scss @@ -44,4 +44,18 @@ .profile--panel .panel-body { padding-top: 0px; +} + +.inbox--panel .panel-heading { + color: $brand-info; + border-bottom: 2px solid $brand-info; + background-color: #fff; + text-transform: uppercase; +} + +.warning--panel .panel-heading { + color: $brand-danger; + border-bottom: 2px solid $brand-danger; + background-color: #fff; + text-transform: uppercase; } \ No newline at end of file diff --git a/app/controllers/ajax/inbox_controller.rb b/app/controllers/ajax/inbox_controller.rb index 88393659..21ff83dc 100644 --- a/app/controllers/ajax/inbox_controller.rb +++ b/app/controllers/ajax/inbox_controller.rb @@ -85,4 +85,20 @@ class Ajax::InboxController < ApplicationController @message = "Successfully deleted question." @success = true end + + def remove_all + begin + Inbox.where(user: current_user).each { |i| i.remove } + rescue + @status = :err + @message = "An error occurred" + @success = false + return + end + + @status = :okay + @message = "Successfully deleted questions." + @success = true + render 'ajax/inbox/remove' + end end diff --git a/app/views/inbox/show.html.haml b/app/views/inbox/show.html.haml index 7506b491..afce224b 100644 --- a/app/views/inbox/show.html.haml +++ b/app/views/inbox/show.html.haml @@ -1,19 +1,25 @@ .container.j2-page - = render 'layouts/messages' - .alert.alert-info - .row - .col-md-9.col-sm-8.col-xs-12 - Out of questions? - .col-md-3.col-sm-5.col-xs-12 - %button.btn.btn-block.btn-info{type: :button, id: 'ib-generate-question'} Get new question + .row + .col-md-3.col-xs-12.col-sm-3 + .panel.panel-default.inbox--panel + .panel-heading + %h3.panel-title Out of questions? + .panel-body + %button.btn.btn-block.btn-info{type: :button, id: 'ib-generate-question'} Get new question + .panel.panel-default.warning--panel + .panel-heading + %h3.panel-title Actions + .panel-body + %button.btn.btn-block.btn-danger{type: :button, id: 'ib-delete-all', disabled: (@inbox.empty? ? 'disabled' : nil)} Delete all questions + .col-md-9.col-xs-12.col-sm-9 + = render 'layouts/messages' + #entries + - @inbox.each do |i| + = render 'inbox/entry', i: i - #entries - - @inbox.each do |i| - = render 'inbox/entry', i: i + - if @inbox.empty? - - if @inbox.empty? - - Nothing to see here. + Nothing to see here. = render "shared/links" - @inbox.update_all(new: false) \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 663b0705..cc6ccb8a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -46,6 +46,7 @@ Rails.application.routes.draw do match '/answer', to: 'inbox#destroy', via: :post, as: :answer match '/generate_question', to: 'inbox#create', via: :post, as: :generate_question match '/delete_inbox', to: 'inbox#remove', via: :post, as: :delete_inbox + match '/delete_all_inbox', to: 'inbox#remove_all', via: :post, as: :delete_all_inbox match '/destroy_answer', to: 'answer#destroy', via: :post, as: :destroy_answer match '/create_friend', to: 'friend#create', via: :post, as: :create_friend match '/destroy_friend', to: 'friend#destroy', via: :post, as: :destroy_friend