class Lolita::Configuration::Tab::Files
FileTab extend Lolita
default tab with new lolita accessors.
-
extensions
- Array of extension white list -
maxfilesize
- uploaded file maximums size
Attributes
association[R]
association_type[R]
uploader[R]
Public Class Methods
new(dbi, *args, &block)
click to toggle source
As any other Lolita::Configuration::Tab
this should receive dbi object. Additional args that may represent methods, for details see Lolita::Configuration::Tab
. And block.
Calls superclass method
# File lib/lolita-file-upload/configuration/tab/files.rb, line 15 def initialize(dbi, *args, &block) @type=:files @dissociate = true @filters=[] @dbi=dbi set_default_association super(dbi, @type, *args, &block) end
Public Instance Methods
association_dbi()
click to toggle source
# File lib/lolita-file-upload/configuration/tab/files.rb, line 57 def association_dbi Lolita::DBI::Base.new self.association.klass end
default_fields()
click to toggle source
# File lib/lolita-file-upload/configuration/tab/files.rb, line 69 def default_fields if association association_dbi.fields.each{|db_field| self.field(:name => db_field.name, :type => db_field.type, :dbi_field => db_field) if db_field.content? } end end
editable_fields()
click to toggle source
# File lib/lolita-file-upload/configuration/tab/files.rb, line 77 def editable_fields if association self.default_fields if self.fields.empty? self.fields end end
extension_white_list()
click to toggle source
# File lib/lolita-file-upload/configuration/tab/files.rb, line 84 def extension_white_list self.association.klass.uploaders[self.uploader].new.extension_white_list end
field(*args, &block)
click to toggle source
# File lib/lolita-file-upload/configuration/tab/files.rb, line 61 def field *args, &block if association field = Lolita::Configuration::Factory::Field.add(association_dbi,*args,&block) @fields << field field end end
filters(title=nil, extensions=nil)
click to toggle source
NOTE: Filters only limit frontend, backend limit is set in Uploader
Add another filter or just title for uploader's extension_white_list
Example¶ ↑
# using in lolita configuration definition lolita do tab(:file) do title "Pictures" filters "Images", "png,jpg" # OR filters "Pictures" end end
# File lib/lolita-file-upload/configuration/tab/files.rb, line 38 def filters(title=nil, extensions=nil) @filters << {:title => title, :extensions => extensions || self.extension_white_list} if title (@filters.empty? && self.extension_white_list) ? [{:title => self.title, :extensions => self.extension_white_list}] : @filters end
Private Instance Methods
all_text_fields()
click to toggle source
# File lib/lolita-file-upload/configuration/tab/files.rb, line 90 def all_text_fields adapter = Lolita::DBI::Base.create(self.association.klass) @text_fields ||=adapter.fields.collect{|field| if field.type == "string" field.name end }.compact end
set_default_association()
click to toggle source
# File lib/lolita-file-upload/configuration/tab/files.rb, line 99 def set_default_association @association=self.dbi.associations.detect{|name,assoc| !assoc.polymorphic? && !assoc.klass.uploaders.empty? } if @association @association = @association.last @association_type = @association.macro @uploader = @association.klass.uploaders.keys.first #FIXME what to do when there is more than one uploader end end
validate()
click to toggle source
Calls superclass method
# File lib/lolita-file-upload/configuration/tab/files.rb, line 110 def validate super unless self.uploader raise "#{self.dbi.klass} has no uploader. Add your custom uploader or use Lolita's built in `has_many :files, :class_name=>'Lolita::Upload::File'`." end end