From f6d25f603395481f263c502833b58db13d6e804e Mon Sep 17 00:00:00 2001 From: Karel Picman Date: Fri, 7 Mar 2014 13:33:57 +0100 Subject: [PATCH] #183 link name updating --- app/controllers/dmsf_links_controller.rb | 60 +++++++++++++++--------- app/views/dmsf_links/_form.html.erb | 26 +++++----- 2 files changed, 50 insertions(+), 36 deletions(-) diff --git a/app/controllers/dmsf_links_controller.rb b/app/controllers/dmsf_links_controller.rb index 3d66ac7c..766b6cc6 100644 --- a/app/controllers/dmsf_links_controller.rb +++ b/app/controllers/dmsf_links_controller.rb @@ -33,27 +33,35 @@ class DmsfLinksController < ApplicationController @dmsf_file_id = params[:dmsf_link][:dmsf_file_id] @type = params[:dmsf_link][:type] @dmsf_link.target_project_id = params[:dmsf_link][:target_project_id] - @target_folder_id = params[:dmsf_link][:target_folder_id].to_i if params[:reload].blank? && DmsfLinksHelper.is_a_number?(params[:dmsf_link][:target_folder_id]) - if params[:dmsf_link][:name].blank? - if @type == 'link_to' - if params[:dmsf_link][:dmsf_file_id].present? - file = DmsfFile.find_by_id params[:dmsf_link][:dmsf_file_id] - @dmsf_link.name = file.title if file - else - folder = DmsfFolder.find_by_id params[:dmsf_link][:dmsf_folder_id] - @dmsf_link.name = folder.title if folder - end + @target_folder_id = params[:dmsf_link][:target_folder_id].to_i if params[:reload].blank? && DmsfLinksHelper.is_a_number?(params[:dmsf_link][:target_folder_id]) + if @type == 'link_to' + if params[:dmsf_link][:dmsf_file_id].present? + file = DmsfFile.find_by_id params[:dmsf_link][:dmsf_file_id] + @dmsf_link.name = file.title if file else - if params[:dmsf_link][:target_file_id].present? - file = DmsfFile.find_by_id params[:dmsf_link][:target_file_id] - @dmsf_link.name = file.title if file - else - folder = DmsfFolder.find_by_id params[:dmsf_link][:target_folder_id] - @dmsf_link.name = folder.title if folder - end + folder = DmsfFolder.find_by_id params[:dmsf_link][:dmsf_folder_id] + @dmsf_link.name = folder.title if folder + end + else + if params[:dmsf_link][:target_file_id].present? + @target_file_id = params[:dmsf_link][:target_file_id] + file = DmsfFile.find_by_id @target_file_id + + if file + folder = DmsfFolder.find_by_id params[:dmsf_link][:target_folder_id] + if folder && (folder.project_id == @dmsf_link.target_project_id) && folder.files.include?(file) + @dmsf_link.name = file.title + end + end + else + folder = DmsfFolder.find_by_id params[:dmsf_link][:target_folder_id] + + if folder + if folder.project_id == @dmsf_link.target_project_id + @dmsf_link.name = folder.title if folder + end + end end - else - @dmsf_link.name = params[:dmsf_link][:name] end else # Link from/to @@ -96,7 +104,11 @@ class DmsfLinksController < ApplicationController if @dmsf_link.save flash[:notice] = l(:notice_successful_create) redirect_to dmsf_folder_path(:id => @project.id, :folder_id => @dmsf_link.dmsf_folder_id) - else + else + @dmsf_file_id = params[:dmsf_link][:dmsf_file_id] + @type = params[:dmsf_link][:type] + @target_folder_id = params[:dmsf_link][:target_folder_id].to_i if DmsfLinksHelper.is_a_number?(params[:dmsf_link][:target_folder_id]) + @target_file_id = @dmsf_link.target_id if @dmsf_link.target_type == DmsfFile.model_name render :action => 'new' end else @@ -120,7 +132,13 @@ class DmsfLinksController < ApplicationController else redirect_to edit_dmsf_path(:id => params[:dmsf_link][:project_id], :folder_id => params[:dmsf_link][:dmsf_folder_id]) end - else + else + @dmsf_file_id = params[:dmsf_link][:dmsf_file_id] + @type = params[:dmsf_link][:type] + @target_folder_id = @dmsf_link.dmsf_folder_id + @dmsf_link.target_project_id = @dmsf_link.project.id + @dmsf_link.project_id = params[:dmsf_link][:project_id] + @dmsf_link.dmsf_folder_id = params[:dmsf_link][:dmsf_folder_id] render :action => 'new' end end diff --git a/app/views/dmsf_links/_form.html.erb b/app/views/dmsf_links/_form.html.erb index d76c0959..4d33d59f 100644 --- a/app/views/dmsf_links/_form.html.erb +++ b/app/views/dmsf_links/_form.html.erb @@ -21,12 +21,8 @@
-<% type = (@type || params[:dmsf_link].blank?) ? @type : params[:dmsf_link][:type] %> -<% dmsf_file_id = (@dmsf_file_id || params[:dmsf_link].blank?) ? @dmsf_file_id : params[:dmsf_link][:dmsf_file_id] %> -<% target_folder_id = (@target_folder_id || params[:dmsf_link].blank? || !DmsfLinksHelper.is_a_number?(params[:dmsf_link][:target_folder_id])) ? @target_folder_id : params[:dmsf_link][:target_folder_id].to_i %> - -<% if dmsf_file_id %> - <% file = DmsfFile.find_by_id dmsf_file_id%> +<% if @dmsf_file_id %> + <% file = DmsfFile.find_by_id @dmsf_file_id%> <% title = file.title if file %> <% end %> @@ -36,11 +32,11 @@ <%= error_messages_for @dmsf_link %> <%= f.hidden_field :project_id, :value => @dmsf_link.project_id %> <%= f.hidden_field :dmsf_folder_id, :value => @dmsf_link.dmsf_folder_id if @dmsf_link.dmsf_folder_id %> - <%= f.hidden_field :type, :value => type %> - <%= f.hidden_field :dmsf_file_id, :value => dmsf_file_id %> + <%= f.hidden_field :type, :value => @type %> + <%= f.hidden_field :dmsf_file_id, :value => @dmsf_file_id %>

- <% if type == 'link_from' %> + <% if @type == 'link_from' %> <%= label_tag('dmsf_link[target_project_id]', l(:label_source_project), :class => 'required') %> <% else %> <%= label_tag('dmsf_link[target_project_id]', l(:label_target_project), :class => 'required') %> @@ -50,25 +46,25 @@ :selected => @dmsf_link.target_project)) %>

- <% if type == 'link_from' %> + <% if @type == 'link_from' %> <%= label_tag('dmsf_link[target_folder_id]', l(:label_source_folder)) %> <% else %> <%= label_tag('dmsf_link[target_folder_id]', l(:label_target_folder)) %> <% end %> <%= select_tag('dmsf_link[target_folder_id]', folder_tree_options_for_select(DmsfFolder.directory_tree(@dmsf_link.target_project), - :selected => target_folder_id)) %> + :selected => @target_folder_id)) %>

- <% if type == 'link_from' %> + <% if @type == 'link_from' %>

- <% if target_folder_id %> - <% folder = DmsfFolder.find_by_id target_folder_id %> + <% if @target_folder_id %> + <% folder = DmsfFolder.find_by_id @target_folder_id %> <% files = folder.files.visible if folder %> <% else %> <% files = @dmsf_link.target_project.dmsf_files.visible if @dmsf_link.target_project %> <% end %> <%= f.select(:target_file_id, - options_for_select(DmsfFolder.file_list(files), params[:dmsf_link].present? ? params[:dmsf_link][:target_file_id] : nil)) %> + options_for_select(DmsfFolder.file_list(files), @target_file_id)) %>

<% end %>