redirect_to controller: 'collections', action: :show, id: newc.uuid
end
+ def report_issue_popup
+ @popup_params = params
+ respond_to do |format|
+ format.js
+ format.html
+ end
+ end
+
+ def report_issue
+ respond_to do |format|
+ IssueReporter.send_report(current_user, params).deliver
+ format.js
+ end
+ end
+
end
--- /dev/null
+class IssueReporter < ActionMailer::Base
+ default from: Rails.configuration.report_notifier_email_from
+ default to: Rails.configuration.report_notifier_email_to
+
+ def send_report(user, data)
+ @user = user
+ @data = data
+ mail(subject: 'Issue reported')
+ end
+end
--- /dev/null
+<%
+ api_version = arvados_api_client.discovery[:source_version]
+ generated_at = arvados_api_client.discovery[:generatedAt]
+ wb_version = Rails.configuration.source_version + ' ' + Rails.configuration.local_modified
+ arvados_base = Rails.configuration.arvados_v1_base
+ support_email = Rails.configuration.support_email_address
+
+ additional_info = "User's email: " + current_user.email + "\n" +
+ "Current Location: " + @popup_params[:current_location]
+%>
+<div class="modal-dialog modal-with-loading-spinner">
+ <div class="modal-content">
+
+ <%= form_tag report_issue_path, {id: 'report-issue-form', name: 'report-issue-form', method: 'post',
+ class: 'form-horizontal', remote: true} do %>
+
+ <%
+ title = 'Version / debugging info'
+ title = 'Report a problem' if @popup_params[:popup_type] == 'report'
+ %>
+
+ <div class="modal-header">
+ <button type="button" class="close" onClick="reset_form()" data-dismiss="modal" aria-hidden="true">×</button>
+ <div>
+ <div class="col-sm-8"> <h4 class="modal-title"><%=title%></h4> </div>
+ <div class="spinner spinner-32px spinner-h-center col-sm-1" hidden="true"></div>
+ </div>
+ <br/>
+ </div>
+
+ <div class="modal-body">
+ <div class="form-group">
+ <label for="support_version" class="col-sm-4 control-label"> Support email </label>
+ <div class="col-sm-8">
+ <p class="form-control-static" id="support_version" name="support_version"><%=support_email%></p>
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label for="server_version" class="col-sm-4 control-label"> Server Version </label>
+ <div class="col-sm-8">
+ <p class="form-control-static" id="server_version" name="server_version"><%=api_version%></p>
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label for="generated_at" class="col-sm-4 control-label"> Server restarted at </label>
+ <div class="col-sm-8">
+ <p class="form-control-static" id="generated_at" name="generated_at"><%=generated_at%></p>
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label for="wb_version" class="col-sm-4 control-label"> Workbench version </label>
+ <div class="col-sm-8">
+ <p class="form-control-static" id="wb_version" name="wb_version"><%=wb_version%></p>
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label for="arvados_base" class="col-sm-4 control-label"> Arvados base </label>
+ <div class="col-sm-8">
+ <p class="form-control-static" id="arvados_base" name="arvados_base"><%=arvados_base%></p>
+ </div>
+ </div>
+
+ <% if @popup_params[:popup_type] == 'report' %>
+ <div class="form-group">
+ <label for="report_text" class="col-sm-4 control-label"> Report text </label>
+ <div class="col-sm-8">
+ <textarea class="form-control" id="report_text" rows="1" name="report_text" type="text"/>
+ </div>
+ </div>
+ <% end %>
+
+ <div class="form-group">
+ <label for="additional_info" class="col-sm-4 control-label"> Additional info </label>
+ <div class="col-sm-8">
+ <textarea readonly class="form-control" id="additional_info" rows="1" name="additional_info" type="text"><%=additional_info%></textarea>
+ </div>
+ </div>
+
+ <div class="modal-footer">
+ <% if @popup_params[:popup_type] == 'report' %>
+ <button type="submit" id="register" class="btn btn-primary" autofocus>Report issue</button>
+ <button class="btn btn-default" onClick="reset_form()" data-dismiss="modal" aria-hidden="true">Cancel</button>
+ <% else %>
+ <button class="btn btn-default" onClick="reset_form()" data-dismiss="modal" aria-hidden="true">Close</button>
+ <% end %>
+ </div>
+
+ <% end #form %>
+ </div>
+</div>
--- /dev/null
+$("#user-setup-modal-window").modal("hide");
+document.location.reload();
--- /dev/null
+$("#report-issue-modal-window").html("<%= escape_javascript(render partial: 'report_issue_popup') %>");
+
+// reset form input fields, for the next time around
+function reset_form() {
+ $('#report_text').val("");
+ $('#additional_info').val("");
+}
--- /dev/null
+Issue reported by user <%=@user.full_name%> <%=@user.email%>
+Details of the report: <%=@data.inspect%>
<li><%= link_to raw('<i class="fa fa-book fa-fw"></i> Tutorials and User guide'), "#{Rails.configuration.arvados_docsite}/user", target: "_blank" %></li>
<li><%= link_to raw('<i class="fa fa-book fa-fw"></i> API Reference'), "#{Rails.configuration.arvados_docsite}/api", target: "_blank" %></li>
<li><%= link_to raw('<i class="fa fa-book fa-fw"></i> SDK Reference'), "#{Rails.configuration.arvados_docsite}/sdk", target: "_blank" %></li>
+ <li role="presentation" class="divider"></li>
+ <li> <%= link_to report_issue_popup_path(popup_type: 'version', current_location: request.fullpath, action_method: 'post'),
+ {class: 'report-issue-modal-window', 'data-toggle' => "modal", 'data-target' => '#report-issue-modal-window', :remote => true, return_to: request.url} do %>
+ <i class="fa fa-fw fa-support"></i> Show version / debugging info
+ <% end %>
+ </li>
+ <li> <%= link_to report_issue_popup_path(popup_type: 'report', current_location: request.fullpath, action_method: 'post'),
+ {class: 'report-issue-modal-window', 'data-toggle' => "modal", 'data-target' => '#report-issue-modal-window', :remote => true, return_to: request.url} do %>
+ <i class="fa fa-fw fa-support"></i> Report a problem
+ <% end %>
+ </li>
</ul>
</li>
</ul>
<%= yield :footer_html %>
<div class="modal-container"></div>
+<div id="report-issue-modal-window" class="modal fade" role="dialog" aria-labelledby="report-issue-modal" aria-hidden="true"></div>
assets.debug: true
profiling_enabled: true
site_name: Arvados Workbench (dev)
+ local_modified: <%= '-modified' if `git status -s` %>
production:
force_ssl: true
# Use "user_profile_form_message" to configure the message you want to display in
# the profile page. If this is not provided, a default message will be displayed.
user_profile_form_message: Welcome to Arvados. Please fill in all required fields before you can access Arvados Workbench. Missing required fields are in <span style="color:red">red</span>.
+
+ # source_version
+ source_version: <%= `git log -n 1 --format=%h` %>
+ local_modified: false
+
+ # report nitification to and from addresses
+ report_notifier_email_from: arvados@example.com
+ report_notifier_email_to: arvados@example.com
+ support_email_address: arvados@example.com
get '/user_agreements/signatures' => 'user_agreements#signatures'
get "users/setup_popup" => 'users#setup_popup', :as => :setup_user_popup
get "users/setup" => 'users#setup', :as => :setup_user
+ get "actions/report_issue_popup" => 'actions#report_issue_popup', :as => :report_issue_popup
+ post "actions/report_issue" => 'actions#report_issue', :as => :report_issue
resources :nodes
resources :humans
resources :traits
--- /dev/null
+require 'test_helper'
+
+class ActionsControllerTest < ActionController::TestCase
+
+ test "send report" do
+ post :report_issue, {format: 'js'}, session_for(:admin)
+ assert_response :success
+
+ found_email = false
+ ActionMailer::Base.deliveries.andand.each do |email|
+ if email.subject == "Issue reported"
+ found_email = true
+ break
+ end
+ end
+ assert_equal true, found_email, 'Expected email after issue reported'
+ end
+
+end
user_profile_notification_address: false
# source_version
- source_version: <%= `git log -n 1 --format=%H` %>
+ source_version: <%= `git log -n 1 --format=%h` %>
local_modified: false