Class: Newsletter::Field::InlineAsset

Inherits:
Newsletter::Field show all
Defined in:
app/models/newsletter/field/inline_asset.rb

Defined Under Namespace

Classes: Value

Instance Method Summary collapse

Methods inherited from Newsletter::Field

#export_fields, #form_partial_path, #get_value, import, morph, #set_value, valid_types

Methods included from Deleteable

#delete, included, #is_deleted?, #undelete

Instance Method Details

#asset(piece) ⇒ Object



48
49
50
# File 'app/models/newsletter/field/inline_asset.rb', line 48

def asset(piece)
  assets.by_piece(piece).first
end

#set_value_for_piece(piece, params) ⇒ Object

overridden from main class to choose between a Newsletter::Asset or a given URL



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/models/newsletter/field/inline_asset.rb', line 20

def set_value_for_piece(piece,params)
  if params[:url]
    unless url_for_piece(piece).eql?(params[:url])
      asset(piece).destroy if asset(piece)
      set_value(piece,:url,params[:url])
    end
  end
  set_value(piece,:text,params[:text]) if params[:text]
  if params[:uploaded_data]
    asset = asset(piece)
    if asset && params[:asset_id] == asset.id.to_s
      asset.image = params[:uploaded_data]
    else
      asset = assets.build
      piece.assets << asset
      asset.image = params[:uploaded_data]
    end
    asset.save
  end
end

#url_for_piece(piece) ⇒ Object

uniformly get URL so we can know whether it has been modified and delete any asset uploaded



43
44
45
46
# File 'app/models/newsletter/field/inline_asset.rb', line 43

def url_for_piece(piece)
  return "#{::Newsletter.site_url}/#{asset(piece).public_filename}" unless asset(piece).try(:public_filename).nil?
  get_value(piece,:url)
end

#value_for_piece(piece) ⇒ Object

overridden from main class to choose between a Newsletter::Asset or a given URL



15
16
17
# File 'app/models/newsletter/field/inline_asset.rb', line 15

def value_for_piece(piece)
  Value.new(:url => url_for_piece(piece), :text => get_value(piece,:text), :asset => asset(piece))
end