##// END OF EJS Templates
remove trailing white-spaces from vendor/plugins/acts_as_attachable/lib/acts_as_attachable.rb...
Toshi MARUYAMA -
r9168:f9d123c08fd1
parent child
Show More
@@ -1,102 +1,102
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
2 # Copyright (C) 2006-2012 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 module Redmine
18 module Redmine
19 module Acts
19 module Acts
20 module Attachable
20 module Attachable
21 def self.included(base)
21 def self.included(base)
22 base.extend ClassMethods
22 base.extend ClassMethods
23 end
23 end
24
24
25 module ClassMethods
25 module ClassMethods
26 def acts_as_attachable(options = {})
26 def acts_as_attachable(options = {})
27 cattr_accessor :attachable_options
27 cattr_accessor :attachable_options
28 self.attachable_options = {}
28 self.attachable_options = {}
29 attachable_options[:view_permission] = options.delete(:view_permission) || "view_#{self.name.pluralize.underscore}".to_sym
29 attachable_options[:view_permission] = options.delete(:view_permission) || "view_#{self.name.pluralize.underscore}".to_sym
30 attachable_options[:delete_permission] = options.delete(:delete_permission) || "edit_#{self.name.pluralize.underscore}".to_sym
30 attachable_options[:delete_permission] = options.delete(:delete_permission) || "edit_#{self.name.pluralize.underscore}".to_sym
31
31
32 has_many :attachments, options.merge(:as => :container,
32 has_many :attachments, options.merge(:as => :container,
33 :order => "#{Attachment.table_name}.created_on",
33 :order => "#{Attachment.table_name}.created_on",
34 :dependent => :destroy)
34 :dependent => :destroy)
35 send :include, Redmine::Acts::Attachable::InstanceMethods
35 send :include, Redmine::Acts::Attachable::InstanceMethods
36 before_save :attach_saved_attachments
36 before_save :attach_saved_attachments
37 end
37 end
38 end
38 end
39
39
40 module InstanceMethods
40 module InstanceMethods
41 def self.included(base)
41 def self.included(base)
42 base.extend ClassMethods
42 base.extend ClassMethods
43 end
43 end
44
44
45 def attachments_visible?(user=User.current)
45 def attachments_visible?(user=User.current)
46 (respond_to?(:visible?) ? visible?(user) : true) &&
46 (respond_to?(:visible?) ? visible?(user) : true) &&
47 user.allowed_to?(self.class.attachable_options[:view_permission], self.project)
47 user.allowed_to?(self.class.attachable_options[:view_permission], self.project)
48 end
48 end
49
49
50 def attachments_deletable?(user=User.current)
50 def attachments_deletable?(user=User.current)
51 (respond_to?(:visible?) ? visible?(user) : true) &&
51 (respond_to?(:visible?) ? visible?(user) : true) &&
52 user.allowed_to?(self.class.attachable_options[:delete_permission], self.project)
52 user.allowed_to?(self.class.attachable_options[:delete_permission], self.project)
53 end
53 end
54
54
55 def saved_attachments
55 def saved_attachments
56 @saved_attachments ||= []
56 @saved_attachments ||= []
57 end
57 end
58
58
59 def unsaved_attachments
59 def unsaved_attachments
60 @unsaved_attachments ||= []
60 @unsaved_attachments ||= []
61 end
61 end
62
62
63 def save_attachments(attachments, author=User.current)
63 def save_attachments(attachments, author=User.current)
64 if attachments.is_a?(Hash)
64 if attachments.is_a?(Hash)
65 attachments = attachments.values
65 attachments = attachments.values
66 end
66 end
67 if attachments.is_a?(Array)
67 if attachments.is_a?(Array)
68 attachments.each do |attachment|
68 attachments.each do |attachment|
69 a = nil
69 a = nil
70 if file = attachment['file']
70 if file = attachment['file']
71 next unless file.size > 0
71 next unless file.size > 0
72 a = Attachment.create(:file => file, :author => author)
72 a = Attachment.create(:file => file, :author => author)
73 elsif token = attachment['token']
73 elsif token = attachment['token']
74 a = Attachment.find_by_token(token)
74 a = Attachment.find_by_token(token)
75 next unless a
75 next unless a
76 a.filename = attachment['filename'] unless attachment['filename'].blank?
76 a.filename = attachment['filename'] unless attachment['filename'].blank?
77 a.content_type = attachment['content_type']
77 a.content_type = attachment['content_type']
78 end
78 end
79 next unless a
79 next unless a
80 a.description = attachment['description'].to_s.strip
80 a.description = attachment['description'].to_s.strip
81 if a.new_record?
81 if a.new_record?
82 unsaved_attachments << a
82 unsaved_attachments << a
83 else
83 else
84 saved_attachments << a
84 saved_attachments << a
85 end
85 end
86 end
86 end
87 end
87 end
88 {:files => saved_attachments, :unsaved => unsaved_attachments}
88 {:files => saved_attachments, :unsaved => unsaved_attachments}
89 end
89 end
90
90
91 def attach_saved_attachments
91 def attach_saved_attachments
92 saved_attachments.each do |attachment|
92 saved_attachments.each do |attachment|
93 self.attachments << attachment
93 self.attachments << attachment
94 end
94 end
95 end
95 end
96
96
97 module ClassMethods
97 module ClassMethods
98 end
98 end
99 end
99 end
100 end
100 end
101 end
101 end
102 end
102 end
General Comments 0
You need to be logged in to leave comments. Login now