From 9f145e78d906f3d7fd7aa95e7a7fad02c8c5e84b Mon Sep 17 00:00:00 2001 From: Mauricio Giacomini Girardello <mgg12@inf.ufpr.br> Date: Wed, 16 Dec 2015 10:22:17 -0200 Subject: [PATCH] adding feedback buttons and forms --- .../javascripts/application/feedbacks.coffee | 21 ++++++++ .../stylesheets/application/feedbacks.scss | 4 ++ app/controllers/feedbacks_controller.rb | 54 +++++++++++++++++++ .../learning_objects_controller.rb | 1 + app/helpers/feedback_helper.rb | 2 + app/services/feedback_service.rb | 2 +- app/views/feedbacks/new.html.erb | 24 +++++++++ app/views/feedbacks/new_bug.html.erb | 24 +++++++++ app/views/layouts/application.html.erb | 4 ++ .../shared/application/_feedback.html.erb | 2 + test/controllers/feedback_controller_test.rb | 24 +++++++++ 11 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/application/feedbacks.coffee create mode 100644 app/assets/stylesheets/application/feedbacks.scss create mode 100644 app/controllers/feedbacks_controller.rb create mode 100644 app/helpers/feedback_helper.rb create mode 100644 app/views/feedbacks/new.html.erb create mode 100644 app/views/feedbacks/new_bug.html.erb create mode 100644 app/views/shared/application/_feedback.html.erb create mode 100644 test/controllers/feedback_controller_test.rb diff --git a/app/assets/javascripts/application/feedbacks.coffee b/app/assets/javascripts/application/feedbacks.coffee new file mode 100644 index 000000000..67df285c4 --- /dev/null +++ b/app/assets/javascripts/application/feedbacks.coffee @@ -0,0 +1,21 @@ +# mapping permitted actions with controller action to display right views +permitted_actions = [] +permitted_actions['send_feedback'] = 'new' +permitted_actions['report_bug'] = 'new_bug' + +# bind click events for create feedbacks and report bug +$(document).on 'click', '.report_bug', -> + $(document).trigger('open_feedback_modal', [type: 'report_bug']) + +$(document).on 'click', '.send_feedback', -> + $(document).trigger('open_feedback_modal', [type: 'send_feedback']) + +# open modal event +$(document).on 'open_feedback_modal', (evt, params) -> + type = permitted_actions[params.type] + url = "/feedback/#{type}" + $.get url, (d) -> + $('#feedback-modal').remove() + $('body').append d + $('#feedback-modal').modal('show') + return \ No newline at end of file diff --git a/app/assets/stylesheets/application/feedbacks.scss b/app/assets/stylesheets/application/feedbacks.scss new file mode 100644 index 000000000..973120146 --- /dev/null +++ b/app/assets/stylesheets/application/feedbacks.scss @@ -0,0 +1,4 @@ +.report_bug, .send_feedback {position: fixed; bottom: 0; height: 30px; width: auto; padding: 5px; z-index: 999;} + +.report_bug {left: 25%; background-color: #730E15; color: white;} +.send_feedback {right: 25%; background-color: #ffae0d; color: black;} \ No newline at end of file diff --git a/app/controllers/feedbacks_controller.rb b/app/controllers/feedbacks_controller.rb new file mode 100644 index 000000000..e511d6025 --- /dev/null +++ b/app/controllers/feedbacks_controller.rb @@ -0,0 +1,54 @@ +class FeedbacksController < ApplicationController + before_filter :authenticate_user! + + # GET /feedbacks/new + def new + # @feedbacks = Feedback.new + +# render layout: false + end + + # GET /feedbacks/new_bug + def new_bug + @bug = Bug.new + + render layout: false + end + + # POST /feedbacks + def create + # @feedbacks = Feedback.new(feedback_params) + + # respond_to do |format| + # if feedback_service.send_feedback @feedbacks + # format.html { redirect_to :back, notice: 'Obrigado pela sua avaliação!' } + # end + # end + end + + # POST /feedbacks/report_bug + def report_bug + @bug = Bug.new(bug_params) + + respond_to do |format| + if feedback_service.report_bug @bug + format.html { redirect_to :back, notice: 'Problema relatado com sucesso!' } + end + end + end + + private + + def feedback_service + FeedbackService.new(GitlabBugreporterService.new(Gitlab)) + end + + def bug_params + params.require(:bug).permit(:title, :description) + end + + def feedback_params + params.require(:feedbacks).permit(:object, :message, :description) + end + +end diff --git a/app/controllers/learning_objects_controller.rb b/app/controllers/learning_objects_controller.rb index c4586e395..56a62abf8 100644 --- a/app/controllers/learning_objects_controller.rb +++ b/app/controllers/learning_objects_controller.rb @@ -6,6 +6,7 @@ class LearningObjectsController < ApplicationController before_action :authenticate_user!, except: [:index, :show] before_action :set_complaint_messages, only: :show before_action :set_dspace_collection, :create_repositories, :process_params, :get_selected_subjects, only: :create + # GET /learning_objects # GET /learning_objects.json def index diff --git a/app/helpers/feedback_helper.rb b/app/helpers/feedback_helper.rb new file mode 100644 index 000000000..ae51a5646 --- /dev/null +++ b/app/helpers/feedback_helper.rb @@ -0,0 +1,2 @@ +module FeedbackHelper +end diff --git a/app/services/feedback_service.rb b/app/services/feedback_service.rb index 1409a2f2d..86660f706 100644 --- a/app/services/feedback_service.rb +++ b/app/services/feedback_service.rb @@ -11,7 +11,7 @@ class FeedbackService end ## - # store the feedback in database and send notification + # store the feedbacks in database and send notification def send_feedback(feedback) # save and send an email feedback.save! diff --git a/app/views/feedbacks/new.html.erb b/app/views/feedbacks/new.html.erb new file mode 100644 index 000000000..c0ea94b3d --- /dev/null +++ b/app/views/feedbacks/new.html.erb @@ -0,0 +1,24 @@ +<div class="modal fade" id="feedback-modal"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> + <h4 class="modal-title">Relatar problema</h4> + </div> + <%= form_for @feedback, url: feedback_path, method: :post do |f| %> + <form id="feedback-modal-form"> + <div class="modal-body"> + <%= f.label :title, 'O que está acontecendo?' %> + <%= f.text_field :title %> + + <%= f.label :description, 'Descreva melhor seu problema para que possamos resolve-lo mais rápido:' %> + <%= f.text_field :description %> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal">Cancelar</button> + <button type="submit" class="btn btn-primary">Enviar</button> + </div> + <% end %> + </div> + </div> +</div> \ No newline at end of file diff --git a/app/views/feedbacks/new_bug.html.erb b/app/views/feedbacks/new_bug.html.erb new file mode 100644 index 000000000..867b62fc8 --- /dev/null +++ b/app/views/feedbacks/new_bug.html.erb @@ -0,0 +1,24 @@ +<div class="modal fade" id="feedback-modal"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> + <h4 class="modal-title">Relatar problema</h4> + </div> + <%= form_for @bug, url: report_bug_feedback_path, method: :post do |f| %> + <form id="feedback-modal-form"> + <div class="modal-body"> + <%= f.label :title, 'O que está acontecendo?' %> + <%= f.text_field :title %> + + <%= f.label :description, 'Descreva melhor seu problema para que possamos resolve-lo mais rápido:' %> + <%= f.text_field :description %> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal">Cancelar</button> + <button type="submit" class="btn btn-primary">Enviar</button> + </div> + <% end %> + </div> + </div> +</div> \ No newline at end of file diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index e978812d1..f86551658 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -33,6 +33,10 @@ </div> </div> +<% if user_signed_in? %> + <%= render 'shared/application/feedback' %> +<% end %> + <%= render 'shared/application/footer' %> <script defer="defer" src="//barra.brasil.gov.br/barra.js" type="text/javascript"></script> diff --git a/app/views/shared/application/_feedback.html.erb b/app/views/shared/application/_feedback.html.erb new file mode 100644 index 000000000..cddf7936a --- /dev/null +++ b/app/views/shared/application/_feedback.html.erb @@ -0,0 +1,2 @@ +<a href="#report_bug" class="report_bug">Está com problemas? Clique aqui e nos mantenha informado.</a> +<a href="#send_feedback" class="send_feedback">Mande seu feedback!</a> \ No newline at end of file diff --git a/test/controllers/feedback_controller_test.rb b/test/controllers/feedback_controller_test.rb new file mode 100644 index 000000000..310ffb9c0 --- /dev/null +++ b/test/controllers/feedback_controller_test.rb @@ -0,0 +1,24 @@ +require 'test_helper' + +class FeedbackControllerTest < ActionController::TestCase + test "should get new_feedback" do + get :new_feedback + assert_response :success + end + + test "should get new_bug" do + get :new_bug + assert_response :success + end + + test "should get create" do + get :create + assert_response :success + end + + test "should get report_bug" do + get :report_bug + assert_response :success + end + +end -- GitLab