Merge pull request #39 from biosistemika/lm-explvl-routes

Additional fixes related to experiment level routes
This commit is contained in:
Luka Murn 2016-07-29 10:51:14 +02:00 committed by GitHub
commit 02b7c952e6
14 changed files with 49 additions and 38 deletions

View file

@ -2,6 +2,7 @@ class ExperimentsController < ApplicationController
include PermissionHelper include PermissionHelper
before_action :set_experiment, except: [:new, :create] before_action :set_experiment, except: [:new, :create]
before_action :set_project, only: [:new, :create] before_action :set_project, only: [:new, :create]
before_action :check_view_permissions, only: [:canvas]
# except parameter could be used but it is not working. # except parameter could be used but it is not working.
layout :choose_layout layout :choose_layout
@ -9,13 +10,13 @@ class ExperimentsController < ApplicationController
def new def new
@experiment = Experiment.new @experiment = Experiment.new
respond_to do |format| respond_to do |format|
format.json { format.json do
render json:{ render json: {
html: render_to_string( { html: render_to_string(
partial: "new_modal.html.erb" partial: 'new_modal.html.erb'
}) )
} }
} end
end end
end end
@ -69,16 +70,22 @@ class ExperimentsController < ApplicationController
def set_experiment def set_experiment
@experiment = Experiment.find_by_id(params[:id]) @experiment = Experiment.find_by_id(params[:id])
render_404 unless @experiment
end end
def set_project def set_project
@project = Project.find_by_id(params[:project_id]) @project = Project.find_by_id(params[:project_id])
render_404 unless @project
end end
def experiment_params def experiment_params
params.require(:experiment).permit(:name, :description) params.require(:experiment).permit(:name, :description)
end end
def check_view_permissions
render_403 unless can_view_experiment(@experiment)
end
def choose_layout def choose_layout
action_name.in?(['index', 'archive']) ? 'main' : 'fluid' action_name.in?(['index', 'archive']) ? 'main' : 'fluid'
end end

View file

@ -2,16 +2,17 @@ class ProjectsController < ApplicationController
include SampleActions include SampleActions
include RenamingUtil include RenamingUtil
before_action :load_vars, only: [:show, :edit, :update, :canvas, before_action :load_vars, only: [:show, :edit, :update,
:notifications, :reports, :notifications, :reports,
:samples, :module_archive, :samples, :experiment_archive,
:delete_samples, :samples_index] :delete_samples, :samples_index]
before_action :check_view_permissions, only: [:show, :canvas, :reports, before_action :check_view_permissions, only: [:show, :reports,
:samples, :module_archive, :samples, :experiment_archive,
:samples_index] :samples_index]
before_action :check_view_notifications_permissions, only: [ :notifications ] before_action :check_view_notifications_permissions, only: [ :notifications ]
before_action :check_edit_permissions, only: [ :edit ] before_action :check_edit_permissions, only: [ :edit ]
before_action :check_module_archive_permissions, only: [:module_archive] before_action :check_experiment_archive_permissions,
only: [:experiment_archive]
filter_by_archived = false filter_by_archived = false
@ -238,10 +239,6 @@ class ProjectsController < ApplicationController
# This is the "info" view # This is the "info" view
end end
def canvas
# This is the "structure/overview/canvas" view
end
def notifications def notifications
@modules = @project @modules = @project
.assigned_modules(current_user) .assigned_modules(current_user)
@ -263,8 +260,7 @@ class ProjectsController < ApplicationController
@organization = @project.organization @organization = @project.organization
end end
def module_archive def experiment_archive
end end
def samples_index def samples_index
@ -310,10 +306,8 @@ class ProjectsController < ApplicationController
end end
end end
def check_module_archive_permissions def check_experiment_archive_permissions
unless can_restore_archived_modules(@project) render_403 unless can_view_project_archive(@project)
render_403
end
end end
def choose_layout def choose_layout

View file

@ -118,7 +118,13 @@ module PermissionHelper
:can_edit_result_asset_in_module, :can_edit_result_asset_in_module,
:can_archive_result_asset_in_module, :can_archive_result_asset_in_module,
:can_add_samples_to_module, :can_add_samples_to_module,
:can_delete_samples_from_module :can_delete_samples_from_module,
:can_create_experiment,
:can_edit_experiment,
:can_view_experiment,
:can_view_experiment_archive,
:can_archive_experiment,
:can_restore_experiment
] do |proxy, *args, &block| ] do |proxy, *args, &block|
if args[0] if args[0]
my_module = args[0] my_module = args[0]
@ -313,6 +319,10 @@ module PermissionHelper
can_view_project(experiment.project) can_view_project(experiment.project)
end end
def can_view_experiment_archive(experiment)
can_view_project(experiment.project)
end
def can_archive_experiment(project) def can_archive_experiment(project)
is_user_or_higher_of_project(project) is_user_or_higher_of_project(project)
end end

View file

@ -13,7 +13,7 @@ module SidebarHelper
when "samples" when "samples"
return samples_project_path(project) return samples_project_path(project)
when "archive" when "archive"
return module_archive_project_url(project) return experiment_archive_project_url(project)
else else
return project_path(project) return project_path(project)
end end

View file

@ -2,4 +2,4 @@
<%= render partial: "shared/sidebar" %> <%= render partial: "shared/sidebar" %>
<%= render partial: "shared/secondary_navigation" %> <%= render partial: "shared/secondary_navigation" %>
TODO <!-- TODO -->

View file

@ -14,7 +14,7 @@
<span> <span>
<%=t "search.index.project" %> <%=t "search.index.project" %>
<%= render partial: "search/results/partials/project_text.html.erb", <%= render partial: "search/results/partials/project_text.html.erb",
locals: { project: experiment.project, link_to_page: :canvas } %> locals: { project: experiment.project, link_to_page: :show } %>
</span> </span>
<br> <br>
<span> <span>

View file

@ -2,7 +2,7 @@
<h5> <h5>
<span class="glyphicon glyphicon-blackboard"></span> <span class="glyphicon glyphicon-blackboard"></span>
<%= render partial: "search/results/partials/project_text.html.erb", <%= render partial: "search/results/partials/project_text.html.erb",
locals: { project: project, query: search_query, link_to_page: :canvas } %> locals: { project: project, query: search_query, link_to_page: :show } %>
</h5> </h5>
<p> <p>

View file

@ -19,7 +19,7 @@
<span> <span>
<%=t "search.index.project" %> <%=t "search.index.project" %>
<%= render partial: "search/results/partials/project_text.html.erb", <%= render partial: "search/results/partials/project_text.html.erb",
locals: { project: workflow.experiment.project, link_to_page: :canvas } %> locals: { project: workflow.experiment.project, link_to_page: :show } %>
</span> </span>
<br> <br>
<span> <span>

View file

@ -4,8 +4,8 @@
<% if my_module.archived? %> <% if my_module.archived? %>
<span class="label label-warning"><%=t "search.index.archived" %></span> <span class="label label-warning"><%=t "search.index.archived" %></span>
<% if can_view_project_archive(my_module.experiment.project) and can_restore_module(my_module) %> <% if can_view_experiment_archive(my_module.experiment) and can_restore_module(my_module) %>
<a href="<%= module_archive_project_url(my_module.experiment.project) %>"> <a href="<%= module_archive_experiment_url(my_module.experiment) %>">
<%= text %> <%= text %>
</a> </a>
<% else %> <% else %>
@ -23,7 +23,7 @@
<%= text %> <%= text %>
</a> </a>
<% when :canvas %> <% when :canvas %>
<a href="<%= canvas_project_path(my_module.experiment.project) %>"> <a href="<%= canvas_experiment_path(my_module.experiment) %>">
<%= text %> <%= text %>
</a> </a>
<% when :results %> <% when :results %>

View file

@ -13,8 +13,8 @@
<% end %> <% end %>
<% else %> <% else %>
<% if can_view_project(project) %> <% if can_view_project(project) %>
<% if link_to_page == :canvas %> <% if link_to_page == :show %>
<a href="<%= canvas_project_path(project) %>"> <a href="<%= project_path(project) %>">
<%= text %> <%= text %>
</a> </a>
<% else %> <% else %>

View file

@ -2,7 +2,7 @@
<% text = query.present? ? highlight(tag.name, query.strip.split(/\s+/)) : tag.name %> <% text = query.present? ? highlight(tag.name, query.strip.split(/\s+/)) : tag.name %>
<% if can_view_project(tag.project) %> <% if can_view_project(tag.project) %>
<a href="<%= canvas_project_path(tag.project) %>"> <a href="<%= project_path(tag.project) %>">
<%= text %> <%= text %>
</a> </a>
<% else %> <% else %>

View file

@ -17,7 +17,7 @@
<li> <li>
<% end %> <% end %>
<% if can_view_project(@project) %> <% if can_view_project(@project) %>
<a href="<%= canvas_experiment_url(@experiment) %>"> <a href="<%= project_url(@project) %>">
<% end %> <% end %>
<%= @project.name %> <%= @project.name %>
<% if can_view_project(@project) %> <% if can_view_project(@project) %>
@ -48,7 +48,7 @@
</li>--> </li>-->
<% if can_view_project(@project) then %> <% if can_view_project(@project) then %>
<li id="canvas-nav-tab" class="<%= "active" if is_project_canvas? %>"> <li id="canvas-nav-tab" class="<%= "active" if is_project_canvas? %>">
<a href="<%= canvas_project_url(@project) %>" title="<%=t "nav2.projects.canvas" %>"> <a href="<%= project_url(@project) %>" title="<%=t "nav2.projects.canvas" %>">
<span class="hidden-sm hidden-md"><%=t "nav2.projects.canvas" %></span> <span class="hidden-sm hidden-md"><%=t "nav2.projects.canvas" %></span>
<span class="hidden-xs hidden-lg glyphicon glyphicon-blackboard"></span> <span class="hidden-xs hidden-lg glyphicon glyphicon-blackboard"></span>
</a> </a>
@ -76,7 +76,7 @@
<% end %> <% end %>
<% if can_view_project_archive(@project) then %> <% if can_view_project_archive(@project) then %>
<li id="project-archive-nav-tab" class="<%= "active" if is_project_archive? %>"> <li id="project-archive-nav-tab" class="<%= "active" if is_project_archive? %>">
<a href="<%= module_archive_project_url(@project) %>"><span class="glyphicon glyphicon-briefcase"></span></a> <a href="<%= experiment_archive_project_url(@project) %>"><span class="glyphicon glyphicon-briefcase"></span></a>
</li> </li>
<% end %> <% end %>
@ -150,7 +150,7 @@
<li> <li>
<% end %> <% end %>
<% if can_view_project(@project) %> <% if can_view_project(@project) %>
<a href="<%= canvas_experiment_url(@experiment) %>"> <a href="<%= project_url(@project) %>">
<% end %> <% end %>
<%= truncate( @project.name, length: 20 ) %> <%= truncate( @project.name, length: 20 ) %>
<% if can_view_project(@project) %> <% if can_view_project(@project) %>

View file

@ -101,7 +101,7 @@ Rails.application.routes.draw do
get 'users/edit', to: 'user_projects#index_edit' get 'users/edit', to: 'user_projects#index_edit'
end end
resources :experiments, only: [:show] do resources :experiments do
member do member do
get 'canvas' # Overview/structure for single experiment get 'canvas' # Overview/structure for single experiment
get 'canvas/edit', to: 'canvas#edit' # AJAX-loaded canvas edit mode (from canvas) get 'canvas/edit', to: 'canvas#edit' # AJAX-loaded canvas edit mode (from canvas)