mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 23:16:15 +08:00
Fix folder creation for archived view [SCI-5383]
This commit is contained in:
parent
04f68facd3
commit
78ec862a2c
|
@ -454,7 +454,7 @@
|
|||
loadCardsView();
|
||||
Sidebar.reload({
|
||||
sort: projectsCurrentSort,
|
||||
view_mode: $('.projects-index').data('mode')
|
||||
view_mode: $('.projects-index').data('view-mode')
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -540,7 +540,7 @@
|
|||
folders = selectedProjectFolders.map(e => ({ id: e, type: 'project_folder' }));
|
||||
let movables = projects.concat(folders);
|
||||
|
||||
$.get(url, { items: items, sort: projectsCurrentSort, mode: $('.projects-index').data('mode') }, function(result) {
|
||||
$.get(url, { items: items, sort: projectsCurrentSort, view_mode: $('.projects-index').data('view-mode') }, function(result) {
|
||||
$(moveToModal).find('.modal-content').html(result.html);
|
||||
$(moveToModal).modal('show');
|
||||
initializeJSTree($(moveToModal).find('#moveToFolders'));
|
||||
|
@ -584,7 +584,7 @@
|
|||
type: 'GET',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
view_mode: $('.projects-index').data('mode'),
|
||||
view_mode: $('.projects-index').data('view-mode'),
|
||||
sort: projectsCurrentSort,
|
||||
search: projectsViewSearch,
|
||||
members: membersFilter,
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
class ProjectFoldersController < ApplicationController
|
||||
include InputSanitizeHelper
|
||||
include ProjectsHelper
|
||||
include ProjectFoldersHelper
|
||||
|
||||
before_action :load_current_folder, only: %i(new)
|
||||
|
@ -10,7 +11,8 @@ class ProjectFoldersController < ApplicationController
|
|||
before_action :check_manage_permissions, only: %i(archive move_to)
|
||||
|
||||
def new
|
||||
@project_folder = current_team.project_folders.new(parent_folder: @current_folder)
|
||||
@project_folder =
|
||||
current_team.project_folders.new(parent_folder: @current_folder, archived: projects_view_mode_archived?)
|
||||
respond_to do |format|
|
||||
format.json do
|
||||
render json: {
|
||||
|
@ -65,8 +67,7 @@ class ProjectFoldersController < ApplicationController
|
|||
|
||||
def move_to_modal
|
||||
view_state = current_team.current_view_state(current_user)
|
||||
@current_view_mode = params[:mode] || 'active'
|
||||
@current_sort = view_state.state.dig('projects', @current_view_mode, 'sort') || 'atoz'
|
||||
@current_sort = view_state.state.dig('projects', projects_view_mode, 'sort') || 'atoz'
|
||||
|
||||
render json: {
|
||||
html: render_to_string(partial: 'projects/index/modals/move_to_modal_contents.html.erb',
|
||||
|
@ -113,7 +114,7 @@ class ProjectFoldersController < ApplicationController
|
|||
end
|
||||
|
||||
def project_folders_params
|
||||
params.require(:project_folder).permit(:name, :parent_folder_id)
|
||||
params.require(:project_folder).permit(:name, :parent_folder_id, :archived)
|
||||
end
|
||||
|
||||
def move_params
|
||||
|
|
|
@ -21,8 +21,7 @@ class ProjectsController < ApplicationController
|
|||
def index
|
||||
if current_team
|
||||
view_state = current_team.current_view_state(current_user)
|
||||
@current_view_mode = params[:mode] || 'active'
|
||||
@current_sort = view_state.state.dig('projects', @current_view_mode, 'sort') || 'atoz'
|
||||
@current_sort = view_state.state.dig('projects', projects_view_mode, 'sort') || 'atoz'
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -14,11 +14,7 @@ class TeamsController < ApplicationController
|
|||
render json: {
|
||||
html: render_to_string(
|
||||
partial: 'shared/sidebar/projects.html.erb',
|
||||
locals: {
|
||||
team: current_team,
|
||||
sort: params[:sort],
|
||||
view_mode: params[:view_mode]
|
||||
}
|
||||
locals: { team: current_team, sort: params[:sort] }
|
||||
)
|
||||
}
|
||||
end
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module ProjectsHelper
|
||||
def projects_view_mode
|
||||
params[:view_mode] == 'archived' ? 'archived' : 'active'
|
||||
end
|
||||
|
||||
def projects_view_mode_archived?
|
||||
params[:view_mode] == 'archived'
|
||||
end
|
||||
|
||||
def user_project_role_to_s(user_project)
|
||||
t('user_projects.enums.role.' + user_project.role)
|
||||
end
|
||||
|
@ -21,16 +29,14 @@ module ProjectsHelper
|
|||
conns.to_s[1..-2]
|
||||
end
|
||||
|
||||
def sidebar_folders_tree(team, user, sort, view_mode, folders_only: false)
|
||||
records = if view_mode == 'archived'
|
||||
items = ProjectFolder.archived.inner_folders(team)
|
||||
items += team.projects.archived.visible_to(user, team) unless folders_only
|
||||
items
|
||||
else
|
||||
items = ProjectFolder.active.inner_folders(team)
|
||||
items += team.projects.active.visible_to(user, team) unless folders_only
|
||||
items
|
||||
end
|
||||
def sidebar_folders_tree(team, user, sort, folders_only: false)
|
||||
if projects_view_mode_archived?
|
||||
records = ProjectFolder.archived.inner_folders(team)
|
||||
records += team.projects.archived.visible_to(user, team) unless folders_only
|
||||
else
|
||||
records = ProjectFolder.active.inner_folders(team)
|
||||
records += team.projects.active.visible_to(user, team) unless folders_only
|
||||
end
|
||||
sort ||= team.current_view_state(user).state.dig('projects', 'active', 'sort')
|
||||
records = case sort
|
||||
when 'new'
|
||||
|
|
|
@ -48,12 +48,9 @@ class ProjectsOverviewService
|
|||
elsif @params[:folders_search] == 'true'
|
||||
folders = ProjectFolder.inner_folders(@team, nil).or(ProjectFolder.where(id: nil))
|
||||
fetch_project_records
|
||||
elsif @view_mode == 'archived'
|
||||
folders = ProjectFolder.where(id: nil)
|
||||
fetch_project_records.where(team: @team)
|
||||
else
|
||||
folders = ProjectFolder.where(id: nil)
|
||||
fetch_project_records.where(project_folder: nil, team: @team)
|
||||
fetch_project_records.where(project_folder: @current_folder, team: @team)
|
||||
end
|
||||
|
||||
project_records = sort_records(filter_project_records(project_records)).includes(:project_folder).to_a
|
||||
|
@ -66,13 +63,8 @@ class ProjectsOverviewService
|
|||
end
|
||||
|
||||
def project_and_folder_cards
|
||||
cards =
|
||||
if @view_mode == 'archived'
|
||||
filter_project_records(fetch_project_records) + filter_project_folder_records(fetch_project_folder_records)
|
||||
else
|
||||
filter_project_records(fetch_project_records.where(project_folder: @current_folder)) +
|
||||
filter_project_folder_records(fetch_project_folder_records.where(parent_folder: @current_folder))
|
||||
end
|
||||
cards = filter_project_records(fetch_project_records.where(project_folder: @current_folder)) +
|
||||
filter_project_folder_records(fetch_project_folder_records.where(parent_folder: @current_folder))
|
||||
|
||||
mixed_sort_records(cards)
|
||||
end
|
||||
|
|
|
@ -4,14 +4,14 @@
|
|||
<% provide(:container_class, 'no-second-nav-container') %>
|
||||
|
||||
<%= content_for :sidebar do %>
|
||||
<%= render partial: 'shared/sidebar/projects', locals: { team: current_team, sort: nil, view_mode: @current_view_mode } if current_team %>
|
||||
<%= render partial: 'shared/sidebar/projects', locals: { team: current_team, sort: nil, view_mode: projects_view_mode } if current_team %>
|
||||
<% end %>
|
||||
|
||||
<% content_for :breadcrumbs do %>
|
||||
<%= render partial: 'projects/index/breadcrumbs' if @current_folder %>
|
||||
<% end %>
|
||||
|
||||
<div class="content-pane flexible projects-index <%= @current_view_mode %>" data-mode="<%= @current_view_mode %>">
|
||||
<div class="content-pane flexible projects-index <%= projects_view_mode %>" data-view-mode="<%= projects_view_mode %>">
|
||||
<%= render partial: 'projects/index/header' %>
|
||||
|
||||
<span style="display: none;" data-hook="projects-index-html"></span>
|
||||
|
|
|
@ -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),
|
||||
<%= link_to new_project_folder_path(project_folder_id: @current_folder, view_mode: projects_view_mode),
|
||||
class: 'btn btn-light new-project-folder-btn',
|
||||
data: { view_mode: 'active' },
|
||||
remote: true do %>
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
<li class="jstree-open" id="root_folder" data-jstree='{"icon":"fas fa-folder root-folder"}'>
|
||||
<a class="jstree-clicked" href="#">Projects</a>
|
||||
<%= render partial: 'projects/index/modals/move_to_folders_tree.html.erb',
|
||||
locals: { records: sidebar_folders_tree(current_team, current_user, @current_sort, @current_view_mode, folders_only: true) } %>
|
||||
locals: { records: sidebar_folders_tree(current_team, current_user, projects_view_mode, folders_only: true) } %>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
<p><%= t('projects.index.modal_new_project_folder.description') %></p>
|
||||
<div class="form-group sci-input-container">
|
||||
<%= f.hidden_field :parent_folder_id %>
|
||||
<%= f.hidden_field :archived %>
|
||||
<%= f.text_field :name, label: t('projects.index.modal_new_project_folder.name'), placeholder: t('projects.index.modal_new_project_folder.name_placeholder') %>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<ul class="sidebar-branch">
|
||||
<li class="sidebar-leaf">
|
||||
<% if @project.archived? %>
|
||||
<%= link_to t('sidebar.experiments.back_archived_projects'), projects_path(mode: :archived), class: 'sidebar-link back-button' %>
|
||||
<%= link_to t('sidebar.experiments.back_archived_projects'), projects_path(view_mode: :archived), class: 'sidebar-link back-button' %>
|
||||
<% elsif archived %>
|
||||
<%= link_to t('sidebar.experiments.back_active_experiments'), project_url(@project), class: 'sidebar-link back-button' %>
|
||||
<% else %>
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
<ul class="sidebar-branch">
|
||||
<% if view_mode == 'archived' %>
|
||||
<% if projects_view_mode_archived? %>
|
||||
<li class="sidebar-leaf">
|
||||
<%= link_to projects_path, class: "sidebar-link back-button" do %>
|
||||
<%= t("projects.index.back_to_active_projects") %>
|
||||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
<%= render partial: 'shared/sidebar/projects_tree_branch.html.erb', locals: { records: sidebar_folders_tree(team, current_user, sort, view_mode) } %>
|
||||
<% if view_mode != 'archived' %>
|
||||
<%= render partial: 'shared/sidebar/projects_tree_branch.html.erb', locals: { records: sidebar_folders_tree(team, current_user, sort) } %>
|
||||
<% if !projects_view_mode_archived? %>
|
||||
<li class="sidebar-leaf">
|
||||
<%= link_to projects_path(mode: :archived), class: "sidebar-link" do %>
|
||||
<%= link_to projects_path(view_mode: :archived), class: "sidebar-link" do %>
|
||||
<span class="fas fa-archive"></span>
|
||||
<%= t("projects.index.navigation_archived_projects") %>
|
||||
<% end %>
|
||||
|
|
Loading…
Reference in a new issue