mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 23:16:15 +08:00
Fix navigation between archived and active projects [SCI-5419] (#3100)
* Fix navigation between archived and active projects [SCI-5419]
This commit is contained in:
parent
bba1165c7b
commit
f15d984d47
|
@ -332,13 +332,12 @@
|
|||
}
|
||||
}
|
||||
|
||||
$(projectsWrapper).on('click', '.project-folder-link', function(event) {
|
||||
$('#content-wrapper').on('click', '.project-folder-link', function(event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
let viewContainer = $(cardsWrapper);
|
||||
viewContainer.data('projects-cards-url', $(this).data('projectsCardsUrl'));
|
||||
$(cardsWrapper).data('projectsCardsUrl', $(this).data('projectsCardsUrl'));
|
||||
history.replaceState({}, '', this.href);
|
||||
$('.sidebar-container').data('sidebar-url', $(this).data('sidebar-url'));
|
||||
$('.sidebar-container').data('sidebarUrl', $(this).data('sidebarUrl'));
|
||||
refreshCurrentView();
|
||||
});
|
||||
|
||||
|
|
|
@ -5,6 +5,9 @@ class ProjectFoldersController < ApplicationController
|
|||
include ProjectsHelper
|
||||
include ProjectFoldersHelper
|
||||
|
||||
attr_reader :current_folder
|
||||
helper_method :current_folder
|
||||
|
||||
before_action :load_current_folder, only: %i(new)
|
||||
before_action :load_project_folder, only: %i(edit update)
|
||||
before_action :check_create_permissions, only: %i(new create)
|
||||
|
@ -12,7 +15,7 @@ class ProjectFoldersController < ApplicationController
|
|||
|
||||
def new
|
||||
@project_folder =
|
||||
current_team.project_folders.new(parent_folder: @current_folder, archived: projects_view_mode_archived?)
|
||||
current_team.project_folders.new(parent_folder: current_folder, archived: projects_view_mode_archived?)
|
||||
respond_to do |format|
|
||||
format.json do
|
||||
render json: {
|
||||
|
|
|
@ -6,6 +6,9 @@ class ProjectsController < ApplicationController
|
|||
include InputSanitizeHelper
|
||||
include ProjectsHelper
|
||||
|
||||
attr_reader :current_folder
|
||||
helper_method :current_folder
|
||||
|
||||
before_action :switch_team_with_param, only: :index
|
||||
before_action :load_vars, only: %i(show edit update notifications experiment_archive sidebar)
|
||||
before_action :load_current_folder, only: %i(index cards new)
|
||||
|
@ -26,7 +29,7 @@ class ProjectsController < ApplicationController
|
|||
end
|
||||
|
||||
def cards
|
||||
overview_service = ProjectsOverviewService.new(current_team, current_user, @current_folder, params)
|
||||
overview_service = ProjectsOverviewService.new(current_team, current_user, current_folder, params)
|
||||
|
||||
if filters_included?
|
||||
render json: {
|
||||
|
@ -38,8 +41,8 @@ class ProjectsController < ApplicationController
|
|||
}
|
||||
else
|
||||
render json: {
|
||||
projects_cards_url: @current_folder ? project_folder_cards_url(@current_folder) : cards_projects_url,
|
||||
breadcrumbs_html: @current_folder ? render_to_string(partial: 'projects/index/breadcrumbs.html.erb') : '',
|
||||
projects_cards_url: current_folder ? project_folder_cards_url(current_folder) : cards_projects_url,
|
||||
breadcrumbs_html: current_folder ? render_to_string(partial: 'projects/index/breadcrumbs.html.erb') : '',
|
||||
toolbar_html: render_to_string(partial: 'projects/index/toolbar.html.erb'),
|
||||
cards_html: render_to_string(
|
||||
partial: 'projects/index/team_projects.html.erb',
|
||||
|
@ -62,7 +65,7 @@ class ProjectsController < ApplicationController
|
|||
end
|
||||
|
||||
def new
|
||||
@project = current_team.projects.new(project_folder: @current_folder)
|
||||
@project = current_team.projects.new(project_folder: current_folder)
|
||||
respond_to do |format|
|
||||
format.json do
|
||||
render json: {
|
||||
|
|
|
@ -3,6 +3,9 @@
|
|||
class TeamsController < ApplicationController
|
||||
include ProjectsHelper
|
||||
|
||||
attr_reader :current_folder
|
||||
helper_method :current_folder
|
||||
|
||||
before_action :load_vars, only: %i(sidebar export_projects export_projects_modal)
|
||||
before_action :load_current_folder, only: :sidebar
|
||||
before_action :check_read_permissions
|
||||
|
|
|
@ -2,11 +2,13 @@
|
|||
|
||||
module ProjectsHelper
|
||||
def projects_view_mode
|
||||
return 'archived' if current_folder&.archived?
|
||||
|
||||
params[:view_mode] == 'archived' ? 'archived' : 'active'
|
||||
end
|
||||
|
||||
def projects_view_mode_archived?
|
||||
params[:view_mode] == 'archived'
|
||||
projects_view_mode == 'archived'
|
||||
end
|
||||
|
||||
def user_project_role_to_s(user_project)
|
||||
|
|
|
@ -7,7 +7,11 @@ class ProjectsOverviewService
|
|||
@current_folder = folder
|
||||
@params = params
|
||||
@view_state = @team.current_view_state(@user)
|
||||
@view_mode = params[:view_mode]
|
||||
@view_mode = if @current_folder.present?
|
||||
@view_mode = @current_folder.archived? ? 'archived' : 'active'
|
||||
else
|
||||
params[:view_mode]
|
||||
end
|
||||
|
||||
# Update sort if chanhed
|
||||
@sort = @view_state.state.dig('projects', @view_mode, 'sort') || 'atoz'
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<% provide(:sidebar_title, t("projects.index.navigation_title")) %>
|
||||
<% provide(:sidebar_url, sidebar_team_path(current_team, project_folder_id: @current_folder&.id)) %>
|
||||
<% provide(:sidebar_url, sidebar_team_path(current_team, project_folder_id: current_folder&.id)) %>
|
||||
<% provide(:container_class, 'no-second-nav-container') %>
|
||||
|
||||
<%= content_for :sidebar do %>
|
||||
|
@ -7,7 +7,7 @@
|
|||
<% end %>
|
||||
|
||||
<% content_for :breadcrumbs do %>
|
||||
<%= render partial: 'projects/index/breadcrumbs' if @current_folder %>
|
||||
<%= render partial: 'projects/index/breadcrumbs' if current_folder %>
|
||||
<% end %>
|
||||
|
||||
<div id="projectsWrapper" class="content-pane flexible projects-index <%= projects_view_mode %>" data-view-mode="<%= projects_view_mode %>">
|
||||
|
@ -23,7 +23,7 @@
|
|||
<div class="projects-container">
|
||||
<div id="toolbarWrapper">
|
||||
</div>
|
||||
<div class="cards-wrapper" id="cardsWrapper" data-projects-cards-url="<%= @current_folder ? project_folder_cards_url(@current_folder) : cards_projects_url %>">
|
||||
<div class="cards-wrapper" id="cardsWrapper" data-projects-cards-url="<%= current_folder ? project_folder_cards_url(current_folder) : cards_projects_url %>">
|
||||
<div class="table-header">
|
||||
<div class="table-header-cell select-all-checkboxes">
|
||||
<div class="sci-checkbox-container">
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<% target_folder ||= @current_folder %>
|
||||
<% target_folder ||= current_folder %>
|
||||
<div class="projects-breadcrumbs">
|
||||
<%= link_to(t('projects.index.breadcrumbs_root'),
|
||||
projects_path,
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<div class="project-actions">
|
||||
<!-- new project button -->
|
||||
<% if current_team && can_create_projects?(current_team) %>
|
||||
<%= link_to new_project_path(project_folder_id: @current_folder),
|
||||
<%= link_to new_project_path(project_folder_id: current_folder),
|
||||
class: 'btn btn-primary new-project-btn',
|
||||
data: { view_mode: 'active' },
|
||||
remote: true do %>
|
||||
|
@ -13,7 +13,7 @@
|
|||
<% end %>
|
||||
<!-- new project folder button -->
|
||||
<% if current_team && can_create_project_folders?(current_team) %>
|
||||
<%= link_to new_project_folder_path(project_folder_id: @current_folder, view_mode: projects_view_mode),
|
||||
<%= link_to new_project_folder_path(project_folder_id: current_folder, view_mode: projects_view_mode),
|
||||
class: 'btn btn-light new-project-folder-btn',
|
||||
remote: true do %>
|
||||
<span class="fas fa-folder" aria-hidden="true"></span>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<li class="sidebar-leaf">
|
||||
<%= link_to projects_path(view_mode: :archived), class: "sidebar-link" do %>
|
||||
<span class="fas fa-archive"></span>
|
||||
<%= t("projects.index.navigation_archived_projects") %>
|
||||
<%= t('projects.index.navigation_archived_projects') %>
|
||||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<i class="fas fa-caret-right toggle-branch collapsed"></i>
|
||||
<% end %>
|
||||
<%= link_to project_folder_path(record[:folder]),
|
||||
class: "sidebar-link project-folder-link folder #{'selected' if @current_folder == record[:folder]}",
|
||||
class: "sidebar-link project-folder-link folder #{'selected' if current_folder == record[:folder]}",
|
||||
data: {
|
||||
sidebar_url: sidebar_team_path(current_team, project_folder_id: record[:folder].id),
|
||||
projects_cards_url: project_folder_cards_url(record[:folder])
|
||||
|
|
Loading…
Reference in a new issue