diff --git a/app/controllers/dmsf_links_controller.rb b/app/controllers/dmsf_links_controller.rb index 3f2fe9bb..0f01a615 100644 --- a/app/controllers/dmsf_links_controller.rb +++ b/app/controllers/dmsf_links_controller.rb @@ -18,27 +18,27 @@ class DmsfLinksController < ApplicationController unloadable - + model_object DmsfLink before_filter :find_model_object, :only => [:destroy, :restore] before_filter :find_link_project - before_filter :authorize + before_filter :authorize - def new + def new if (Redmine::VERSION::MAJOR >= 3) @dmsf_link = DmsfLink.new(l_params) else @dmsf_link = DmsfLink.new(:project_id => params[:project_id]) end - - if params[:dmsf_link].present? + + if params[:dmsf_link].present? # Reload @dmsf_link.dmsf_folder_id = params[:dmsf_link][:dmsf_folder_id] # TODO: Add stuff in here for external links so that if error occurs, repopulate the same @dmsf_file_id = params[:dmsf_link][:dmsf_file_id] @type = params[:dmsf_link][:type] @link_external = (params[:external_link] == 'true') - @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]) + @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 @type == 'link_to' if params[:dmsf_link][:dmsf_file_id].present? file = DmsfFile.find_by_id params[:dmsf_link][:dmsf_file_id] @@ -47,7 +47,7 @@ class DmsfLinksController < ApplicationController folder = DmsfFolder.find_by_id params[:dmsf_link][:dmsf_folder_id] @dmsf_link.name = folder.title if folder end - else + 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 @@ -57,7 +57,7 @@ class DmsfLinksController < ApplicationController if (folder && (folder.project_id == @dmsf_link.target_project_id) && folder.files.include?(file)) || folder.nil? @dmsf_link.name = file.title end - end + end else folder = DmsfFolder.find_by_id params[:dmsf_link][:target_folder_id] @@ -65,9 +65,9 @@ class DmsfLinksController < ApplicationController if folder.project_id == @dmsf_link.target_project_id @dmsf_link.name = folder.title if folder end - end + end end - end + end else # Link from/to @dmsf_link.dmsf_folder_id = params[:dmsf_folder_id] @@ -75,6 +75,7 @@ class DmsfLinksController < ApplicationController @type = params[:type] @link_external = false @dmsf_link.target_project_id = params[:project_id] + @dmsf_link.project_id = params[:project_id] @target_folder_id = params[:dmsf_folder_id].to_i if params[:dmsf_folder_id].present? if @type == 'link_to' if @dmsf_file_id @@ -85,15 +86,15 @@ class DmsfLinksController < ApplicationController @dmsf_link.name = folder.title if folder end end - end - + end + render :layout => !request.xhr? end - + def create @dmsf_link = DmsfLink.new @dmsf_link.user = User.current - + if params[:dmsf_link][:type] == 'link_from' # Link from @dmsf_link.project_id = params[:dmsf_link][:project_id] @@ -109,21 +110,21 @@ class DmsfLinksController < ApplicationController else @dmsf_link.target_id = DmsfLinksHelper.is_a_number?(params[:dmsf_link][:target_folder_id]) ? params[:dmsf_link][:target_folder_id].to_i : nil @dmsf_link.target_type = DmsfFolder.model_name - end - @dmsf_link.name = params[:dmsf_link][:name] - + end + @dmsf_link.name = params[:dmsf_link][:name] + if @dmsf_link.save - flash[:notice] = l(:notice_successful_create) + 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]) + @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 - # Link to + # Link to @dmsf_link.project_id = params[:dmsf_link][:target_project_id] @dmsf_link.dmsf_folder_id = DmsfLinksHelper.is_a_number?(params[:dmsf_link][:target_folder_id]) ? params[:dmsf_link][:target_folder_id].to_i : nil @dmsf_link.target_project_id = params[:dmsf_link][:project_id] @@ -134,29 +135,29 @@ class DmsfLinksController < ApplicationController elsif params[:dmsf_link][:dmsf_file_id].present? @dmsf_link.target_id = params[:dmsf_link][:dmsf_file_id] @dmsf_link.target_type = DmsfFile.model_name - else + else @dmsf_link.target_id = params[:dmsf_link][:dmsf_folder_id] @dmsf_link.target_type = DmsfFolder.model_name end - @dmsf_link.name = params[:dmsf_link][:name] - - if @dmsf_link.save + @dmsf_link.name = params[:dmsf_link][:name] + + if @dmsf_link.save flash[:notice] = l(:notice_successful_create) if params[:dmsf_link][:dmsf_file_id].present? redirect_to dmsf_file_path(@dmsf_link.target_file) - else - redirect_to edit_dmsf_path(:id => params[:dmsf_link][:project_id], :folder_id => params[:dmsf_link][:dmsf_folder_id]) + else + redirect_to edit_dmsf_path(:id => params[:dmsf_link][:project_id], :folder_id => params[:dmsf_link][:dmsf_folder_id]) end else @dmsf_file_id = params[:dmsf_link][:dmsf_file_id] - @type = params[:dmsf_link][:type] - @target_folder_id = @dmsf_link.dmsf_folder_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 + end end def destroy @@ -178,17 +179,17 @@ class DmsfLinksController < ApplicationController redirect_to :back end - + def restore if @dmsf_link.restore flash[:notice] = l(:notice_dmsf_link_restored) end - + redirect_to :back end - + private - + def l_params params.fetch(:dmsf_link, {}).permit(:project_id) end @@ -197,10 +198,20 @@ class DmsfLinksController < ApplicationController if @dmsf_link @project = @dmsf_link.project else - @project = Project.find(params[:dmsf_link].present? ? params[:dmsf_link][:project_id] : params[:project_id]) + if params[:dmsf_link].present? + if params[:dmsf_link].fetch(:project_id, nil).blank? + pid = params[:dmsf_link].fetch(:target_project_id, nil) + else + pid = params[:dmsf_link][:project_id] + end + else + pid = params[:project_id] + end + Rails.logger.error("pid #{pid}") + @project = Project.find(pid) end rescue ActiveRecord::RecordNotFound render_404 end - + end diff --git a/app/views/dmsf_links/_form.html.erb b/app/views/dmsf_links/_form.html.erb index 90721736..b87c51e1 100644 --- a/app/views/dmsf_links/_form.html.erb +++ b/app/views/dmsf_links/_form.html.erb @@ -101,4 +101,4 @@ $("#link_internal").toggle(); $("#link_external").toggle(); }); - \ No newline at end of file +