mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-10 05:46:47 +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
14 changed files with 49 additions and 38 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -2,4 +2,4 @@
|
||||||
<%= render partial: "shared/sidebar" %>
|
<%= render partial: "shared/sidebar" %>
|
||||||
<%= render partial: "shared/secondary_navigation" %>
|
<%= render partial: "shared/secondary_navigation" %>
|
||||||
|
|
||||||
TODO
|
<!-- TODO -->
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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 %>
|
||||||
|
|
|
@ -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 %>
|
||||||
|
|
|
@ -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 %>
|
||||||
|
|
|
@ -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) %>
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Reference in a new issue