* 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:
parent
920d94e822
commit
ea9603077e
@ -84,15 +84,19 @@ class DmsfDetailController < ApplicationController
|
|||||||
@revision = @file.last_revision.clone
|
@revision = @file.last_revision.clone
|
||||||
end
|
end
|
||||||
|
|
||||||
#TODO: separate control for approval
|
|
||||||
#TODO: don't create revision if nothing change
|
#TODO: don't create revision if nothing change
|
||||||
def save_file
|
def save_file
|
||||||
if @file.locked_for_user?
|
if @file.locked_for_user?
|
||||||
flash[:error] = l(:error_file_is_locked)
|
flash[:error] = l(:error_file_is_locked)
|
||||||
redirect_to :action => "file_detail", :id => @project, :file_id => @file
|
redirect_to :action => "file_detail", :id => @project, :file_id => @file
|
||||||
else
|
else
|
||||||
new_revision = params[:dmsf_file_revision]
|
new_revision = DmsfFileRevision.from_saved_file(@file, params[:dmsf_file_revision])
|
||||||
DmsfFileRevision.from_saved_file(@file, new_revision)
|
new_revision.save
|
||||||
|
|
||||||
|
@file.name = new_revision.name
|
||||||
|
@file.folder = new_revision.folder
|
||||||
|
@file.save
|
||||||
|
|
||||||
if @file.locked?
|
if @file.locked?
|
||||||
@file.unlock
|
@file.unlock
|
||||||
flash[:notice] = l(:notice_file_unlocked) + ", "
|
flash[:notice] = l(:notice_file_unlocked) + ", "
|
||||||
|
|||||||
@ -51,4 +51,22 @@ module DmsfHelper
|
|||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|||||||
@ -79,8 +79,6 @@ class DmsfFileRevision < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
revision.from_form_post(dmsf_file, saved_file)
|
revision.from_form_post(dmsf_file, saved_file)
|
||||||
|
|
||||||
revision.save!
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def version
|
def version
|
||||||
@ -108,8 +106,14 @@ class DmsfFileRevision < ActiveRecord::Base
|
|||||||
|
|
||||||
self.file = file
|
self.file = file
|
||||||
self.source_revision = source_revision
|
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?
|
if source_revision.nil?
|
||||||
from_form_post_create(posted)
|
from_form_post_create(posted)
|
||||||
@ -122,6 +126,10 @@ class DmsfFileRevision < ActiveRecord::Base
|
|||||||
self.description = posted["description"]
|
self.description = posted["description"]
|
||||||
self.comment = posted["comment"]
|
self.comment = posted["comment"]
|
||||||
|
|
||||||
|
unless posted["file"].nil?
|
||||||
|
copy_file_content(posted)
|
||||||
|
end
|
||||||
|
|
||||||
self
|
self
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -180,11 +188,11 @@ class DmsfFileRevision < ActiveRecord::Base
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
#FIXME: put file uploaded check to standard validation
|
||||||
def from_form_post_create(posted)
|
def from_form_post_create(posted)
|
||||||
if posted["file"].nil?
|
if posted["file"].nil?
|
||||||
raise DmsfContentError, "First revision require uploaded file"
|
raise DmsfContentError, "First revision require uploaded file"
|
||||||
else
|
else
|
||||||
copy_file_content(posted)
|
|
||||||
self.major_version = case posted["version"]
|
self.major_version = case posted["version"]
|
||||||
when "major" then 1
|
when "major" then 1
|
||||||
else 0
|
else 0
|
||||||
@ -211,7 +219,6 @@ class DmsfFileRevision < ActiveRecord::Base
|
|||||||
self.mime_type = source_revision.mime_type
|
self.mime_type = source_revision.mime_type
|
||||||
self.size = source_revision.size
|
self.size = source_revision.size
|
||||||
else
|
else
|
||||||
copy_file_content(posted)
|
|
||||||
self.minor_version = case posted["version"]
|
self.minor_version = case posted["version"]
|
||||||
when "major" then 0
|
when "major" then 0
|
||||||
else self.minor_version + 1
|
else self.minor_version + 1
|
||||||
|
|||||||
@ -31,7 +31,10 @@ form_for(:dmsf_file_revision, @revision, :url => {:action => "save_file", :id =>
|
|||||||
<div class="splitcontentright">
|
<div class="splitcontentright">
|
||||||
<p>
|
<p>
|
||||||
<%= label_tag("", l(:label_filename) + ":") %>
|
<%= 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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user