mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 14:45:56 +08:00
Merge pull request #39 from biosistemika/lm-explvl-routes
Additional fixes related to experiment level routes
This commit is contained in:
commit
02b7c952e6
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -2,4 +2,4 @@
|
|||
<%= render partial: "shared/sidebar" %>
|
||||
<%= render partial: "shared/secondary_navigation" %>
|
||||
|
||||
TODO
|
||||
<!-- TODO -->
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 %>
|
||||
|
|
|
@ -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 %>
|
||||
|
|
|
@ -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 %>
|
||||
|
|
|
@ -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) %>
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue