Module: Sunrise::Models::Asset

Extended by:
ActiveSupport::Concern
Included in:
Asset
Defined in:
lib/sunrise/models/asset.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#as_json(options = nil) ⇒ Object



56
57
58
59
60
61
62
63
64
# File 'lib/sunrise/models/asset.rb', line 56

def as_json(options = nil)
  options = {
    :root => "asset",
    :only => [:id, :guid, :assetable_id, :assetable_type, :user_id, :public_token], 
    :methods => [:filename, :url, :thumb_url, :size, :content_type]
  }.merge(options || {})
  
  super(options)
end

#content_typeObject



36
37
38
# File 'lib/sunrise/models/asset.rb', line 36

def content_type
  data_content_type
end

#cropper_geometry=(value) ⇒ Object



74
75
76
77
78
79
80
81
# File 'lib/sunrise/models/asset.rb', line 74

def cropper_geometry=(value)
  geometry = (value || '').to_s.split(',')
  
  unless geometry.map(&:blank?).any?
    @cropper_geometry_changed = true
    @cropper_geometry = geometry
  end
end

#cropper_geometry_changed?Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/sunrise/models/asset.rb', line 83

def cropper_geometry_changed?
  @cropper_geometry_changed === true
end

#filenameObject



28
29
30
# File 'lib/sunrise/models/asset.rb', line 28

def filename
  data_file_name        
end

#format_created_atObject



40
41
42
# File 'lib/sunrise/models/asset.rb', line 40

def format_created_at
  I18n.l(created_at, :format => "%d.%m.%Y %H:%M")
end

#has_dimensions?Boolean

Returns:

  • (Boolean)


66
67
68
# File 'lib/sunrise/models/asset.rb', line 66

def has_dimensions?
  respond_to?(:width) && respond_to?(:height)
end

#image?Boolean

Returns:

  • (Boolean)


70
71
72
# File 'lib/sunrise/models/asset.rb', line 70

def image?
  Sunrise::Utils::IMAGE_TYPES.include?(data_content_type)
end

#rotate_degrees=(value) ⇒ Object



87
88
89
90
91
92
# File 'lib/sunrise/models/asset.rb', line 87

def rotate_degrees=(value)
  unless value.blank?
    @rotate_degrees_changed = true
    @rotate_degrees = value.to_s
  end
end

#rotate_degrees_changed?Boolean

Returns:

  • (Boolean)


94
95
96
# File 'lib/sunrise/models/asset.rb', line 94

def rotate_degrees_changed?
  @rotate_degrees_changed === true
end

#sizeObject



32
33
34
# File 'lib/sunrise/models/asset.rb', line 32

def size
  data_file_size
end

#thumb_urlObject



24
25
26
# File 'lib/sunrise/models/asset.rb', line 24

def thumb_url
  data.thumb.url
end

#to_xml(options = {}, &block) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/sunrise/models/asset.rb', line 44

def to_xml(options = {}, &block)
  options = {:only => [:id], :root => 'asset'}.merge(options)
  
  options[:procs] ||= Proc.new do |options, record| 
    options[:builder].tag!('filename', filename)
    options[:builder].tag!('path', url)
    options[:builder].tag!('size', data_file_size)
  end
  
  super
end

#uploader_can?(action, request) ⇒ Boolean

Returns:

  • (Boolean)


121
122
123
124
# File 'lib/sunrise/models/asset.rb', line 121

def uploader_can?(action, request)
  ability = ::Ability.new(uploader_user(request))
  ability.can? action.to_sym, self
end

#uploader_create(params, request = nil) ⇒ Object



102
103
104
105
106
107
108
109
110
111
# File 'lib/sunrise/models/asset.rb', line 102

def uploader_create(params, request = nil)
  if uploader_can?(:create, request)
    self.user_id = uploader_user(request).try(:id)
    params[:assetable_type] = "Noname" if params[:assetable_type].blank?
    params[:assetable_id] = 0 if params[:assetable_id].blank?
    super
  else
    errors.add(:id, :access_denied)
  end
end

#uploader_destroy(params, request = nil) ⇒ Object



113
114
115
116
117
118
119
# File 'lib/sunrise/models/asset.rb', line 113

def uploader_destroy(params, request = nil)
  if uploader_can?(:delete, request)
    super
  else
    errors.add(:id, :access_denied)
  end
end

#uploader_user(request) ⇒ Object



98
99
100
# File 'lib/sunrise/models/asset.rb', line 98

def uploader_user(request)
  request.env['warden'].user
end