* implemented file renaming (validation checks not yet)

* implemented file movement to different folders 

git-svn-id: http://redmine-dmsf.googlecode.com/svn/trunk/redmine_dmsf@60 5e329b0b-a2ee-ea63-e329-299493fc886d
This commit is contained in:
vit.jonas@gmail.com 2011-05-20 08:57:14 +00:00
parent 920d94e822
commit ea9603077e
4 changed files with 43 additions and 11 deletions

View File

@ -84,15 +84,19 @@ class DmsfDetailController < ApplicationController
@revision = @file.last_revision.clone
end
#TODO: separate control for approval
#TODO: don't create revision if nothing change
def save_file
if @file.locked_for_user?
flash[:error] = l(:error_file_is_locked)
redirect_to :action => "file_detail", :id => @project, :file_id => @file
else
new_revision = params[:dmsf_file_revision]
DmsfFileRevision.from_saved_file(@file, new_revision)
new_revision = DmsfFileRevision.from_saved_file(@file, params[:dmsf_file_revision])
new_revision.save
@file.name = new_revision.name
@file.folder = new_revision.folder
@file.save
if @file.locked?
@file.unlock
flash[:notice] = l(:notice_file_unlocked) + ", "

View File

@ -51,4 +51,22 @@ module DmsfHelper
end
end
def self.directory_tree(project)
tree = [["Documents", nil]]
DmsfFolder.project_root_folders(project).each do |folder|
tree.push(["...#{folder.name}", folder.id])
directory_subtree(tree, folder, 2)
end
return tree
end
private
def self.directory_subtree(tree, folder, level)
folder.subfolders.each do |subfolder|
tree.push(["#{"..." * level}#{subfolder.name}", subfolder.id])
directory_subtree(tree, subfolder, level + 1)
end
end
end

View File

@ -79,8 +79,6 @@ class DmsfFileRevision < ActiveRecord::Base
end
revision.from_form_post(dmsf_file, saved_file)
revision.save!
end
def version
@ -108,8 +106,14 @@ class DmsfFileRevision < ActiveRecord::Base
self.file = file
self.source_revision = source_revision
self.name = self.file.name
self.folder = self.file.folder
self.name = posted.has_key?("name") ? posted["name"] : self.file.name
if posted.has_key?("folder")
self.folder = posted["folder"].blank? ? nil : DmsfFolder.find(posted["folder"])
else
self.folder = self.file.folder
end
if source_revision.nil?
from_form_post_create(posted)
@ -122,6 +126,10 @@ class DmsfFileRevision < ActiveRecord::Base
self.description = posted["description"]
self.comment = posted["comment"]
unless posted["file"].nil?
copy_file_content(posted)
end
self
end
@ -179,12 +187,12 @@ class DmsfFileRevision < ActiveRecord::Base
end
private
#FIXME: put file uploaded check to standard validation
def from_form_post_create(posted)
if posted["file"].nil?
raise DmsfContentError, "First revision require uploaded file"
else
copy_file_content(posted)
self.major_version = case posted["version"]
when "major" then 1
else 0
@ -211,7 +219,6 @@ class DmsfFileRevision < ActiveRecord::Base
self.mime_type = source_revision.mime_type
self.size = source_revision.size
else
copy_file_content(posted)
self.minor_version = case posted["version"]
when "major" then 0
else self.minor_version + 1

View File

@ -31,7 +31,10 @@ form_for(:dmsf_file_revision, @revision, :url => {:action => "save_file", :id =>
<div class="splitcontentright">
<p>
<%= label_tag("", l(:label_filename) + ":") %>
<%= h(@revision.name) %>
<%= f.select(:folder,
options_for_select(DmsfHelper.directory_tree(@project),
:selected => (@revision.folder.id unless @revision.folder.nil?))) %> /
<%= f.text_field(:name, :size => "24") %>
</p>
</div>
</div>