Module: Sunrise::Models::Asset

Extended by:
ActiveSupport::Concern
Includes:
Uploader::Asset
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



59
60
61
62
63
64
65
66
67
# File 'lib/sunrise/models/asset.rb', line 59

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

#content_typeObject



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

def content_type
  data_content_type
end

#cropper_geometry=(value) ⇒ Object



77
78
79
80
81
82
83
84
# File 'lib/sunrise/models/asset.rb', line 77

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)


86
87
88
# File 'lib/sunrise/models/asset.rb', line 86

def cropper_geometry_changed?
  @cropper_geometry_changed === true
end

#filenameObject



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

def filename
  data_file_name        
end

#format_created_atObject



43
44
45
# File 'lib/sunrise/models/asset.rb', line 43

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

#has_dimensions?Boolean

Returns:

  • (Boolean)


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

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

#image?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/sunrise/models/asset.rb', line 73

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

#rotate_degrees=(value) ⇒ Object



90
91
92
93
94
95
# File 'lib/sunrise/models/asset.rb', line 90

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

#rotate_degrees_changed?Boolean

Returns:

  • (Boolean)


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

def rotate_degrees_changed?
  @rotate_degrees_changed === true
end

#sizeObject



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

def size
  data_file_size
end

#thumb_urlObject



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

def thumb_url
  data.thumb.url
end

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



47
48
49
50
51
52
53
54
55
56
57
# File 'lib/sunrise/models/asset.rb', line 47

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)


124
125
126
127
# File 'lib/sunrise/models/asset.rb', line 124

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

#uploader_create(params, request = nil) ⇒ Object



105
106
107
108
109
110
111
112
113
114
# File 'lib/sunrise/models/asset.rb', line 105

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



116
117
118
119
120
121
122
# File 'lib/sunrise/models/asset.rb', line 116

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

#uploader_user(request) ⇒ Object



101
102
103
# File 'lib/sunrise/models/asset.rb', line 101

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