Class: Lolita::Configuration::Tab::Files

Inherits:
Base
  • Object
show all
Defined in:
lib/lolita-file-upload/configuration/tab/files.rb

Overview

FileTab extend Lolita default tab with new lolita accessors.

  • extensions - Array of extension white list

  • maxfilesize - uploaded file maximums size

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dbi, *args, &block) ⇒ Files

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.



15
16
17
18
19
20
21
22
# 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

Instance Attribute Details

#association(name = nil) ⇒ Object (readonly)

Returns the value of attribute association.



10
11
12
# File 'lib/lolita-file-upload/configuration/tab/files.rb', line 10

def association
  @association
end

#association_typeObject (readonly)

Returns the value of attribute association_type.



10
11
12
# File 'lib/lolita-file-upload/configuration/tab/files.rb', line 10

def association_type
  @association_type
end

#uploader(name = nil) ⇒ Object (readonly)

Returns the value of attribute uploader.



10
11
12
# File 'lib/lolita-file-upload/configuration/tab/files.rb', line 10

def uploader
  @uploader
end

Instance Method Details

#association_dbiObject



57
58
59
# File 'lib/lolita-file-upload/configuration/tab/files.rb', line 57

def association_dbi
  Lolita::DBI::Base.new self.association.klass
end

#default_fieldsObject



69
70
71
72
73
74
75
# 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_fieldsObject



77
78
79
80
81
82
# 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_listObject



84
85
86
# 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) ⇒ Object



61
62
63
64
65
66
67
# 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) ⇒ Object

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


38
39
40
41
# 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