Class: Orange::AssetResource

Inherits:
ModelResource show all
Defined in:
lib/orange-more/assets/resources/asset_resource.rb

Instance Attribute Summary

Attributes inherited from ModelResource

#model_class

Instance Method Summary collapse

Methods inherited from ModelResource

#afterDelete, #afterNew, #afterSave, #beforeDelete, #beforeNew, #beforeSave, #create, #delete, #do_list_view, #do_view, #edit, #find_list, #find_one, #index, #list, new, #onSave, #save, #show, #table_row, use, #view, #view_opts

Methods inherited from RoutableResource

#routable, #route

Methods inherited from Resource

#afterLoad, call_me, #do_view, #init, #initialize, #options, #orange, #orange_name, #routable, #set_orange, set_orange, #view, #view_opts

Methods included from ClassInheritableAttributes

#cattr_accessor, #cattr_reader, #cattr_writer, eval_in_accessor_module, fetch_value, store_value

Constructor Details

This class inherits a constructor from Orange::Resource

Instance Method Details

#asset_html(packet, id = false) ⇒ Object



109
110
111
112
113
# File 'lib/orange-more/assets/resources/asset_resource.rb', line 109

def asset_html(packet, id = false)
  id ||= packet['route.resource_id']
  m = model_class.get(id)
  m ? m.to_asset_tag : false
end

#change(packet, opts = {}) ⇒ Object



91
92
93
# File 'lib/orange-more/assets/resources/asset_resource.rb', line 91

def change(packet, opts = {})
  do_view(packet, :change, opts)
end

#find_extras(packet, mode, opts = {}) ⇒ Object



95
96
97
# File 'lib/orange-more/assets/resources/asset_resource.rb', line 95

def find_extras(packet, mode, opts = {})
  {:list => model_class.all}
end

#insert(packet, opts = {}) ⇒ Object



87
88
89
# File 'lib/orange-more/assets/resources/asset_resource.rb', line 87

def insert(packet, opts = {})
  do_view(packet, :insert, opts)
end

#new(packet, opts = {}) ⇒ Object

Creates a new model object and saves it (if a post), then reroutes to the main page

Parameters:



72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/orange-more/assets/resources/asset_resource.rb', line 72

def new(packet, opts = {})
  no_reroute = opts.delete(:no_reroute) 
  xhr = packet.request.xhr? || packet.request.params["fake_xhr"]
  if packet.request.post? || !opts.blank?
    params = opts.with_defaults(opts.delete(:params) || packet.request.params[@my_orange_name.to_s] || {})
    before = beforeNew(packet, params)
    obj = onNew(packet, params) if before
    afterNew(packet, obj, params) if before
    obj.save if obj && before
  end
  packet.reroute(@my_orange_name, :orange) unless (xhr || no_reroute)
  packet['template.disable'] = true if xhr
  (xhr ? obj.to_s : obj) || false
end

#onDelete(packet, m, opts = {}) ⇒ Object



99
100
101
102
103
104
105
106
107
# File 'lib/orange-more/assets/resources/asset_resource.rb', line 99

def onDelete(packet, m, opts = {})
  begin
    FileUtils.rm(orange.app_dir('assets','uploaded', m.path)) if m.path
    FileUtils.rm(orange.app_dir('assets','uploaded', m.secondary_path)) if m.secondary_path
  rescue
    # Problem deleting file
  end
  m.destroy if m
end

#onNew(packet, params = {}) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/orange-more/assets/resources/asset_resource.rb', line 42

def onNew(packet, params = {})
  m = false
  if(file = params['file'][:tempfile])
    file_path = orange.app_dir('assets','uploaded', params['file'][:filename]) if params['file'][:filename]
    # Check for secondary file (useful for videos/images with thumbnails)
    if(params['file2'] && secondary = params['file2'][:tempfile])
      secondary_path = orange.app_dir('assets','uploaded', params['file2'][:filename])
    else
      secondary_path = nil
    end
    # Move the files
    FileUtils.cp(file.path, file_path)
    FileUtils.chmod(0644, file_path)
    FileUtils.cp(secondary.path, secondary_path) if secondary_path
    FileUtils.chmod(0644, secondary_path) if secondary_path
    
    params['path'] = params['file'][:filename] if file_path
    params['secondary_path'] = params['file2'][:filename] if secondary_path
    params['mime_type'] = params['file'][:type] if file_path
    params['secondary_mime_type'] = params['file2'][:type] if secondary_path
    params.delete('file')
    params.delete('file2')
    
    m = model_class.new(params)
  end
  m
end

#stack_initObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/orange-more/assets/resources/asset_resource.rb', line 15

def stack_init
  orange[:admin, true].add_link("Content", :resource => @my_orange_name, :text => 'Assets')
  orange[:radius, true].define_tag "asset" do |tag|
    if tag.attr['id']
      (m = model_class.first(:id => tag.attr['id'])) ? m.to_asset_tag : 'Invalid Asset'
    else
      ''
    end
  end
  orange[:scaffold].add_scaffold_type(:asset) do |name, val, opts|
    if opts[:show]
      opts[:model].to_asset_tag
    else
      packet = opts[:packet]
      
      asset_html = val ? orange[:assets].asset_html(packet, val) : ""
      ret = "<input type=\"hidden\" value=\"#{val}\" name=\"#{opts[:model_name]}[#{name}]\" />"
      if val.blank?
        ret += "<span class='asset_preview'></span><a class='insert_asset' rel=\"#{opts[:model_name]}[#{name}]\" href='/admin/assets/insert'>Insert Asset</a>"
      else
        ret += "<span class='asset_preview'>#{asset_html}</span><a class='insert_asset' rel=\"#{opts[:model_name]}[#{name}]\" href='/admin/assets/#{val}/change'>Change Asset</a>"
      end
      ret = "<label for=''>#{opts[:display_name]}</label><br />" + ret if opts[:label]
    end
  end
end