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
before_action :set_experiment, except: [: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.
layout :choose_layout
@ -9,13 +10,13 @@ class ExperimentsController < ApplicationController
def new
@experiment = Experiment.new
respond_to do |format|
format.json {
render json:{
html: render_to_string( {
partial: "new_modal.html.erb"
})
format.json do
render json: {
html: render_to_string(
partial: 'new_modal.html.erb'
)
}
}
end
end
end
@ -69,16 +70,22 @@ class ExperimentsController < ApplicationController
def set_experiment
@experiment = Experiment.find_by_id(params[:id])
render_404 unless @experiment
end
def set_project
@project = Project.find_by_id(params[:project_id])
render_404 unless @project
end
def experiment_params
params.require(:experiment).permit(:name, :description)
end
def check_view_permissions
render_403 unless can_view_experiment(@experiment)
end
def choose_layout
action_name.in?(['index', 'archive']) ? 'main' : 'fluid'
end

View file

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

View file

@ -118,7 +118,13 @@ module PermissionHelper
:can_edit_result_asset_in_module,
:can_archive_result_asset_in_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|
if args[0]
my_module = args[0]
@ -313,6 +319,10 @@ module PermissionHelper
can_view_project(experiment.project)
end
def can_view_experiment_archive(experiment)
can_view_project(experiment.project)
end
def can_archive_experiment(project)
is_user_or_higher_of_project(project)
end

View file

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

View file

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

View file

@ -14,7 +14,7 @@
<span>
<%=t "search.index.project" %>
<%= 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>
<br>
<span>

View file

@ -2,7 +2,7 @@
<h5>
<span class="glyphicon glyphicon-blackboard"></span>
<%= 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>
<p>

View file

@ -19,7 +19,7 @@
<span>
<%=t "search.index.project" %>
<%= 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>
<br>
<span>

View file

@ -4,8 +4,8 @@
<% if my_module.archived? %>
<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) %>
<a href="<%= module_archive_project_url(my_module.experiment.project) %>">
<% if can_view_experiment_archive(my_module.experiment) and can_restore_module(my_module) %>
<a href="<%= module_archive_experiment_url(my_module.experiment) %>">
<%= text %>
</a>
<% else %>
@ -23,7 +23,7 @@
<%= text %>
</a>
<% when :canvas %>
<a href="<%= canvas_project_path(my_module.experiment.project) %>">
<a href="<%= canvas_experiment_path(my_module.experiment) %>">
<%= text %>
</a>
<% when :results %>

View file

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

View file

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

View file

@ -17,7 +17,7 @@
<li>
<% end %>
<% if can_view_project(@project) %>
<a href="<%= canvas_experiment_url(@experiment) %>">
<a href="<%= project_url(@project) %>">
<% end %>
<%= @project.name %>
<% if can_view_project(@project) %>
@ -48,7 +48,7 @@
</li>-->
<% if can_view_project(@project) then %>
<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-xs hidden-lg glyphicon glyphicon-blackboard"></span>
</a>
@ -76,7 +76,7 @@
<% end %>
<% if can_view_project_archive(@project) then %>
<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>
<% end %>
@ -150,7 +150,7 @@
<li>
<% end %>
<% if can_view_project(@project) %>
<a href="<%= canvas_experiment_url(@experiment) %>">
<a href="<%= project_url(@project) %>">
<% end %>
<%= truncate( @project.name, length: 20 ) %>
<% if can_view_project(@project) %>

View file

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