Drag&drop error messages

This commit is contained in:
karel.picman@lbcfree.net 2020-07-24 13:37:14 +02:00
parent 11c9129002
commit 88acc1f868
4 changed files with 25 additions and 21 deletions

View File

@ -392,6 +392,7 @@ class DmsfController < ApplicationController
# Move the dragged object to the given destination
def drop
result = false
object = nil
if params[:dmsf_folder].present? && params[:dmsf_folder][:drag_id].present? && params[:dmsf_folder][:drop_id].present?
if params[:dmsf_folder][:drag_id] =~ /(.+)-(\d+)/
type = $1
@ -399,22 +400,20 @@ class DmsfController < ApplicationController
if params[:dmsf_folder][:drop_id] =~ /^folder.*-(\d+)/
case type
when 'file'
dmsf_file = DmsfFile.find_by(id: id)
dmsf_folder = DmsfFolder.find_by(id: $1)
if dmsf_file && dmsf_folder
result = dmsf_file.move_to(dmsf_file.project, dmsf_folder)
end
object = DmsfFile.find_by(id: id)
when 'folder'
dmsf_folder = DmsfFolder.find_by(id: id)
if dmsf_folder
dmsf_folder.dmsf_folder_id = $1
result = dmsf_folder.save
end
object = DmsfFolder.find_by(id: id)
when 'file-link', 'folder-link', 'url-link'
dmsf_link = DmsfLink.find_by(id: id)
if dmsf_link
dmsf_link.dmsf_folder_id = $1
result = dmsf_link.save
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)
end
end
end
@ -424,7 +423,13 @@ class DmsfController < ApplicationController
if result
format.js { head 200 }
else
format.js { head 422 }
format.js {
if object
flash.now[:error] = object.errors.full_messages.to_sentence
else
head 422
end
}
end
end
end

View File

@ -240,10 +240,12 @@ class DmsfFile < ActiveRecord::Base
def move_to(project, folder)
if locked_for_user?
errors[:base] << l(:error_file_is_locked)
Rails.logger.error l(:error_file_is_locked)
return false
end
unless last_revision
errors[:base] << l(:error_at_least_one_revision_must_be_present)
Rails.logger.error l(:error_at_least_one_revision_must_be_present)
return false
end
source = "#{project.identifier}:#{dmsf_path_str}"

View File

@ -70,7 +70,7 @@
dataType: 'script',
data: data,
error: function(jqXHR, textStatus, errorThrown){
alert(textStatus + " " + jqXHR.status);
alert(errorThrown);
ui.draggable.animate(ui.draggable.data("ui-draggable").originalPosition, "slow");
},
complete: function(jqXHR, textStatus, errorThrown){
@ -85,6 +85,7 @@
}
ui.draggable.remove();
}
window.location.reload();
}
}
});

View File

@ -20,8 +20,4 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
%>
var modal = $('#ajax-modal');
modal.html("<%= escape_javascript(render partial: 'dmsf/add_email') %>");
showModal('ajax-modal', '400px');
modal.addClass('new-user');
throw new Error("<%= j flash[:error] %>");