#1207 drag & drop, on/off

This commit is contained in:
karel.picman@lbcfree.net 2021-02-18 17:19:37 +01:00
parent 6065f9baad
commit 37de665053
23 changed files with 72 additions and 18 deletions

View File

@ -402,7 +402,7 @@ class DmsfController < ApplicationController
if params[:dmsf_folder][:drag_id] =~ /(.+)-(\d+)/
type = $1
id = $2
if params[:dmsf_folder][:drop_id] =~ /^folder.*-(\d+)/
if params[:dmsf_folder][:drop_id] =~ /^(\d+)(p|f)span$/
case type
when 'file'
object = DmsfFile.find_by(id: id)
@ -411,14 +411,25 @@ class DmsfController < ApplicationController
when 'file-link', 'folder-link', 'url-link'
object = DmsfLink.find_by(id: id)
end
dmsf_folder = DmsfFolder.find_by(id: $1)
if object && dmsf_folder
if dmsf_folder == object.dmsf_folder
object.errors[:base] << l(:error_target_folder_same)
elsif object.dmsf_folder&.locked_for_user?
object.errors[:base] << l(:error_folder_is_locked)
else
result = object.move_to(dmsf_folder.project, dmsf_folder)
if object
case $2
when 'p'
project = Project.find_by(id: $1)
if project && User.current.allowed_to?(:file_manipulation, project) &&
User.current.allowed_to?(:folder_manipulation, project)
result = object.move_to(project, nil)
end
when 'f'
dmsf_folder = DmsfFolder.find_by(id: $1)
if dmsf_folder
if dmsf_folder == object.dmsf_folder
object.errors[:base] << l(:error_target_folder_same)
elsif object.dmsf_folder&.locked_for_user?
object.errors[:base] << l(:error_folder_is_locked)
else
result = object.move_to(dmsf_folder.project, dmsf_folder)
end
end
end
end
end

View File

@ -578,7 +578,7 @@ class DmsfFolder < ActiveRecord::Base
classes << 'hascontextmenu'
classes << 'dmsf-draggable'
end
if type =~ /^folder/
if %(project folder).include?(type)
classes << 'dmsf-droppable'
end
if type =~ /link$/

View File

@ -83,7 +83,7 @@ class DmsfQuery < Query
def base_scope
unless @scope
@scope = [dmsf_folders_scope, dmsf_folder_links_scope, dmsf_projects_scope, dmsf_files_scope, dmsf_file_links_scope, dmsf_url_links_scope].
inject(:union_all)
compact.inject(:union_all)
end
@scope
end
@ -192,6 +192,7 @@ class DmsfQuery < Query
private
def dmsf_projects_scope
return nil unless Setting.plugin_redmine_dmsf['dmsf_projects_as_subfolders']
cf_columns = +''
if statement.present?
DmsfFileRevisionCustomField.visible.order(:position).pluck(:id).each do |id|

View File

@ -44,7 +44,7 @@
<%= content_tag 'td', column_content(column, node), class: column.css_classes %>
<% end %>
<td class="buttons">
<% unless system %>
<% unless (system || (node.type == 'project')) %>
<% if defined?(EasyExtensions) %>
<%= link_to '', '#', title: l(:button_actions), class: 'icon-only icon-actions js-contextmenu icon-more-horiz' %>
<% else %>
@ -75,10 +75,10 @@
});
$(".dmsf-droppable" ).droppable({
drop: function(event, ui) {
var handle = $(this);
var dragObjectId = ui.draggable.find("td").find("input").val()
var dropObjectId = handle.find("td").find("input").val();
var data = {};
let handle = $(this);
let dragObjectId = ui.draggable.find("td").find("input").val()
let dropObjectId = handle.attr('id');
let data = {};
handle.addClass("ui-state-highlight ajax-loading")
data['dmsf_folder'] = { drag_id: dragObjectId, drop_id: dropObjectId};
$.ajax({

View File

@ -150,6 +150,15 @@
</em>
</p>
<p>
<%= content_tag :label, l(:label_dmsf_projects_as_subfolders) %>
<%= check_box_tag 'settings[dmsf_projects_as_subfolders]', true, @settings['dmsf_projects_as_subfolders'] %>
<em class="info">
<%= l(:note_dmsf_projects_as_subfolders) %><br/>
<%= l(:label_default) %>: <%= l(:general_text_Yes) %>
</em>
</p>
<hr/>
<em class="info">
<%= l(:menu_dmsf) %> <%= l(:field_column_names) %>

View File

@ -418,6 +418,8 @@ cs:
dmsf_copy: "Kopie (%{n})"
label_empty_trash_bin: Vysypat koš
label_dmsf_projects_as_subfolders: Podprojekty jako podaresáře
note_dmsf_projects_as_subfolders: Přidá podprojekty jako podadresáře do pohledu DMS
easy_pages:
modules:

View File

@ -417,6 +417,8 @@ de:
dmsf_copy: "Kopie (%{n})"
label_empty_trash_bin: Empty Trash
label_dmsf_projects_as_subfolders: Sub-projects as sub-folders
note_dmsf_projects_as_subfolders: Add sub-projects as sub-folders into DMS view
easy_pages:
modules:

View File

@ -418,6 +418,8 @@ en:
dmsf_copy: "Copy (%{n})"
label_empty_trash_bin: Empty Trash
label_dmsf_projects_as_subfolders: Sub-projects as sub-folders
note_dmsf_projects_as_subfolders: Add sub-projects as sub-folders into DMS view
easy_pages:
modules:

View File

@ -418,6 +418,8 @@ es:
dmsf_copy: "Copy (%{n})"
label_empty_trash_bin: Empty Trash
label_dmsf_projects_as_subfolders: Sub-projects as sub-folders
note_dmsf_projects_as_subfolders: Add sub-projects as sub-folders into DMS view
easy_pages:
modules:

View File

@ -418,6 +418,8 @@ fr:
dmsf_copy: "Copy (%{n})"
label_empty_trash_bin: Empty Trash
label_dmsf_projects_as_subfolders: Sub-projects as sub-folders
note_dmsf_projects_as_subfolders: Add sub-projects as sub-folders into DMS view
easy_pages:
modules:

View File

@ -417,6 +417,8 @@ hu:
dmsf_copy: "Copy (%{n})"
label_empty_trash_bin: Empty Trash
label_dmsf_projects_as_subfolders: Sub-projects as sub-folders
note_dmsf_projects_as_subfolders: Add sub-projects as sub-folders into DMS view
easy_pages:
modules:

View File

@ -418,6 +418,8 @@ it: # Italian strings thx 2 Matteo Arceci!
dmsf_copy: "Copy (%{n})"
label_empty_trash_bin: Empty Trash
label_dmsf_projects_as_subfolders: Sub-projects as sub-folders
note_dmsf_projects_as_subfolders: Add sub-projects as sub-folders into DMS view
easy_pages:
modules:

View File

@ -418,6 +418,8 @@ ja:
dmsf_copy: "Copy (%{n})"
label_empty_trash_bin: Empty Trash
label_dmsf_projects_as_subfolders: Sub-projects as sub-folders
note_dmsf_projects_as_subfolders: Add sub-projects as sub-folders into DMS view
easy_pages:
modules:

View File

@ -417,6 +417,8 @@ ko:
dmsf_copy: "Copy (%{n})"
label_empty_trash_bin: Empty Trash
label_dmsf_projects_as_subfolders: Sub-projects as sub-folders
note_dmsf_projects_as_subfolders: Add sub-projects as sub-folders into DMS view
easy_pages:
modules:

View File

@ -418,6 +418,8 @@ nl:
dmsf_copy: "Copy (%{n})"
label_empty_trash_bin: Empty Trash
label_dmsf_projects_as_subfolders: Sub-projects as sub-folders
note_dmsf_projects_as_subfolders: Add sub-projects as sub-folders into DMS view
easy_pages:
modules:

View File

@ -418,6 +418,8 @@ pl:
dmsf_copy: "Copy (%{n})"
label_empty_trash_bin: Empty Trash
label_dmsf_projects_as_subfolders: Sub-projects as sub-folders
note_dmsf_projects_as_subfolders: Add sub-projects as sub-folders into DMS view
easy_pages:
modules:

View File

@ -418,6 +418,8 @@ pt-BR:
dmsf_copy: "Copy (%{n})"
label_empty_trash_bin: Empty Trash
label_dmsf_projects_as_subfolders: Sub-projects as sub-folders
note_dmsf_projects_as_subfolders: Add sub-projects as sub-folders into DMS view
easy_pages:
modules:

View File

@ -418,6 +418,8 @@ ru:
dmsf_copy: "Copy (%{n})"
label_empty_trash_bin: Empty Trash
label_dmsf_projects_as_subfolders: Sub-projects as sub-folders
note_dmsf_projects_as_subfolders: Add sub-projects as sub-folders into DMS view
easy_pages:
modules:

View File

@ -418,6 +418,8 @@ sl:
dmsf_copy: "Copy (%{n})"
label_empty_trash_bin: Empty Trash
label_dmsf_projects_as_subfolders: Sub-projects as sub-folders
note_dmsf_projects_as_subfolders: Add sub-projects as sub-folders into DMS view
easy_pages:
modules:

View File

@ -417,6 +417,8 @@ zh-TW:
dmsf_copy: "Copy (%{n})"
label_empty_trash_bin: Empty Trash
label_dmsf_projects_as_subfolders: Sub-projects as sub-folders
note_dmsf_projects_as_subfolders: Add sub-projects as sub-folders into DMS view
easy_pages:
modules:

View File

@ -418,6 +418,8 @@ zh:
dmsf_copy: "Copy (%{n})"
label_empty_trash_bin: Empty Trash
label_dmsf_projects_as_subfolders: Sub-projects as sub-folders
note_dmsf_projects_as_subfolders: Add sub-projects as sub-folders into DMS view
easy_pages:
modules:

View File

@ -59,7 +59,8 @@ Redmine::Plugin.register :redmine_dmsf do
'dmsf_documents_email_links_only' => nil,
'dmsf_enable_cjk_ngrams' => nil,
'dmsf_webdav_use_project_names' => Redmine::Plugin.installed?(:easy_extensions) ? '1' : nil,
'dmsf_webdav_ignore_1b_file_for_authentication' => '1'
'dmsf_webdav_ignore_1b_file_for_authentication' => '1',
'dmsf_projects_as_subfolders' => Redmine::Plugin.installed?(:easy_extensions) ? '1' : nil,
}
end

View File

@ -30,7 +30,7 @@ module RedmineDmsf
@children = []
if project
# Sub-projects
load_projects project.children
load_projects(project.children) if Setting.plugin_redmine_dmsf['dmsf_projects_as_subfolders']
if project.module_enabled?(:dmsf)
# Folders
if User.current.allowed_to?(:view_dmsf_folders, project)