2659: Fix up 404 page.
authorTom Clegg <tom@curoverse.com>
Tue, 3 Feb 2015 16:18:56 +0000 (11:18 -0500)
committerTom Clegg <tom@curoverse.com>
Tue, 3 Feb 2015 16:18:56 +0000 (11:18 -0500)
apps/workbench/app/controllers/application_controller.rb
apps/workbench/app/views/application/404.html.erb

index 02ae656299be331be6e81a5e9dcc0f26c7944040..b52591bc0caa5ff1b14da6ac7485a829eaeab1d8 100644 (file)
@@ -435,6 +435,7 @@ class ApplicationController < ActionController::Base
 
   protected
 
+  helper_method :strip_token_from_path
   def strip_token_from_path(path)
     path.sub(/([\?&;])api_token=[^&;]*[&;]?/, '\1')
   end
@@ -497,7 +498,7 @@ class ApplicationController < ActionController::Base
       else
         @object = model_class.find(params[:uuid])
       end
-    rescue ArvadosApiClient::NotFoundException, RuntimeError => error
+    rescue ArvadosApiClient::NotFoundException, ArvadosApiClient::NotLoggedInException, RuntimeError => error
       if error.is_a?(RuntimeError) and (error.message !~ /^argument to find\(/)
         raise
       end
index 4c8fa7635ebd85912f8dd280c861207ac104822e..aa1ffda017120bb085997e130074e1bd799dace9 100644 (file)
 
 <h2>Not Found</h2>
 
+<p>The <%= req_item %> was not found.</p>
+
 <% if !current_user %>
-<p>You are not logged into Arvados. Please retry after log in.</p><br/>
-<% end %>
 
-<p>The <%= req_item %> was not found.
+  <p>
+    (I notice you are not logged in. If you're looking for a private
+    page, you'll need to <%=link_to 'log in', arvados_api_client.arvados_login_url(return_to: strip_token_from_path(request.url))%> first.)
+  </p>
 
-<% if class_name %>
-Perhaps you'd like to
-<%= link_to("browse all #{class_name_h.pluralize}", action: :index, controller: class_name.tableize) %>?
-<% end %>
+<% elsif class_name %>
 
-</p>
+  <p>
+    Perhaps you'd like to <%= link_to("browse all
+    #{class_name_h.pluralize}", action: :index, controller:
+    class_name.tableize) %>?
+  </p>
+
+<% end %>
 
 <% error_message = "The #{req_item_plain_text} was not found." %>
 <%= render :partial => "report_error", :locals => {error_message: error_message, error_type: '404'} %>