def move_or_copy action
uuids_to_add = params["selection"]
uuids_to_add = [ uuids_to_add ] unless uuids_to_add.is_a? Array
- uuids_to_add.
+ resource_classes = uuids_to_add.
collect { |x| ArvadosBase::resource_class_for_uuid(x) }.
- uniq.
- each do |resource_class|
+ uniq
+ resource_classes.each do |resource_class|
resource_class.filter([['uuid','in',uuids_to_add]]).each do |src|
if resource_class == Collection and not Collection.attribute_info.include?(:name)
dst = Link.new(owner_uuid: @object.uuid,
end
end
end
- redirect_to @object
+ if (resource_classes == [Collection] and
+ @object.is_a? Group and
+ @object.group_class == 'project')
+ # In the common case where only collections are copied/moved
+ # into a project, it's polite to land on the collections tab on
+ # the destination project.
+ redirect_to project_url(@object.uuid, anchor: 'Data_collections')
+ else
+ # Otherwise just land on the default (Summary) tab.
+ redirect_to @object
+ end
end
def arv_normalize mt, *opts
files.each do |m|
mt = chash[m[1]+m[2]].andand.manifest_text
if not m[4].nil? and m[4].size > 1
- combined += arv_normalize mt, '--extract', m[4][1..-1]
+ combined += arv_normalize mt, '--extract', ".#{m[4]}"
else
combined += mt
end
newc.name = newc.name || "Collection created at #{Time.now.localtime}"
# set owner_uuid to current project, provided it is writable
- current_project = nil
+ current_project_writable = false
action_data = JSON.parse(params['action_data']) if params['action_data']
if action_data && action_data['current_project_uuid']
- current_project = Group.find(action_data['current_project_uuid'])
- if (current_project.andand.writable_by.include?(current_user.uuid) rescue nil)
+ current_project = Group.find(action_data['current_project_uuid']) rescue nil
+ if (current_project && current_project.writable_by.andand.include?(current_user.uuid))
newc.owner_uuid = action_data['current_project_uuid']
+ current_project_writable = true
end
end
l.save!
end
- msg = current_project ? "Created new collection in the project #{current_project.name}." :
- "Created new collection in your Home project."
+ msg = current_project_writable ?
+ "Created new collection in the project #{current_project.name}." :
+ "Created new collection in your Home project."
redirect_to newc, flash: {'message' => msg}
end