Class: Caboose::MediaController

Inherits:
ApplicationController show all
Defined in:
app/controllers/caboose/media_controller.rb

Instance Method Summary collapse

Methods inherited from ApplicationController

#add_ga_event, #admin_add, #admin_bulk_add, #admin_bulk_update, #admin_json_single, #before_before_action, #hashify_query_string, #init_cart, #logged_in?, #logged_in_user, #login_user, #logout_user, #parse_url_params, #reject_param, #under_construction_or_forwarding_domain?, #user_is_allowed, #user_is_allowed_to, #validate_cookie, #validate_token, #var, #verify_logged_in

Instance Method Details

#admin_bulk_deleteObject

DELETE /admin/media/bulk



93
94
95
96
97
98
99
100
101
102
# File 'app/controllers/caboose/media_controller.rb', line 93

def admin_bulk_delete
  return unless user_is_allowed('media', 'delete')      
  ids = params[:ids]
  if ids
    ids.each do |id|                
      Media.where(:id => id).destroy_all
    end
  end
  render :json => { :success => true }
end

#admin_deleteObject

DELETE /admin/media/:id



86
87
88
89
90
# File 'app/controllers/caboose/media_controller.rb', line 86

def admin_delete
  return unless user_is_allowed('media', 'delete')
  Media.find(params[:id]).destroy                  
  render :json => { :success => true }
end

#admin_editObject

GET /admin/media/:id



60
61
62
63
64
# File 'app/controllers/caboose/media_controller.rb', line 60

def admin_edit
  return unless user_is_allowed('media', 'edit')
  @media = Media.find(params[:id])
  render :layout => 'caboose/admin'
end

#admin_indexObject

GET /admin/media



12
13
14
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 'app/controllers/caboose/media_controller.rb', line 12

def admin_index
  return if !user_is_allowed('media', 'view')
  render :file => 'caboose/extras/error_invalid_site' and return if @site.nil?
             
  config = YAML.load(File.read(Rails.root.join('config', 'aws.yml')))[Rails.env]      
  access_key = config['access_key_id']
  secret_key = config['secret_access_key']
  bucket     = config['bucket']      
  policy = {        
    "expiration" => 1.hour.from_now.utc.xmlschema,
    "conditions" => [
      { "bucket" => "#{bucket}-uploads" },          
      { "acl" => "public-read" },
      [ "starts-with", "$key", '' ],
      #[ "starts-with", "$Content-Type", 'image/' ],          
      [ 'starts-with', '$name', '' ], 	
      [ 'starts-with', '$Filename', '' ],          
    ]
  }
  @policy = Base64.encode64(policy.to_json).gsub(/\n/,'')      
  @signature = Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new('sha1'), secret_key, @policy)).gsub("\n","")
  @s3_upload_url = "https://#{bucket}-uploads.s3.amazonaws.com/"
  @aws_access_key_id = access_key                            
  
  id = params[:media_category_id]        
  @top_media_category = MediaCategory.top_category(@site.id)
  @media_category = id ? MediaCategory.find(id) : @top_media_category
  render :layout => 'caboose/admin'      
end

#admin_jsonObject

GET /admin/media/json



43
44
45
46
47
48
49
50
# File 'app/controllers/caboose/media_controller.rb', line 43

def admin_json
  return if !user_is_allowed('media', 'view')
  render :json => false and return if @site.nil?
  
  id = params[:media_category_id]        
  cat = id ? MediaCategory.find(id) : MediaCategory.top_category(@site.id)      
  render :json => cat.api_hash
end

#admin_newObject

GET /admin/media/new



53
54
55
56
57
# File 'app/controllers/caboose/media_controller.rb', line 53

def admin_new
  return unless user_is_allowed('media', 'add')
  @media_category_id = params[:media_category_id]             
  render :layout => 'caboose/admin'
end

#admin_pre_uploadObject

POST /admin/media/pre-upload



105
106
107
108
109
110
111
112
113
# File 'app/controllers/caboose/media_controller.rb', line 105

def admin_pre_upload
  return unless user_is_allowed('media', 'view')
  media_category_id = params[:media_category_id]
  original_name = params[:name]
  name = Caboose::Media.upload_name(original_name)                        
  m = Media.where(:media_category_id => media_category_id, :original_name => original_name, :name => name).first
  Media.create(:media_category_id => media_category_id, :original_name => original_name, :name => name, :processed => false) if m.nil?
  render :json => { :success => true }
end

#admin_updateObject

PUT /admin/media/:id



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'app/controllers/caboose/media_controller.rb', line 67

def admin_update
  return unless user_is_allowed('media', 'edit')
  
  resp = StdClass.new({'attributes' => {}})
  m = Media.find(params[:id])
  
  save = true      
  params.each do |name, value|
    case name
      when 'name'         then m.name         = value
      when 'description'  then m.description  = value          
    end
  end

  resp.success = save && m.save
  render :json => resp
end

#before_actionObject



7
8
9
# File 'app/controllers/caboose/media_controller.rb', line 7

def before_action
  @page = Page.page_with_uri(request.host_with_port, '/admin')
end