Class: Caboose::Site

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/caboose/site.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.id_for_domain(domain) ⇒ Object



84
85
86
87
88
# File 'app/models/caboose/site.rb', line 84

def self.id_for_domain(domain)
  d = Caboose::Domain.where(:domain => domain).first
  return nil if d.nil?
  return d.site_id
end

.sanitize_name(name) ⇒ Object



90
91
92
# File 'app/models/caboose/site.rb', line 90

def self.sanitize_name(name)
  self.name = self.name.downcase.gsub(' ', '_')
end

Instance Method Details

#custom_cssObject



119
120
121
122
123
124
125
126
# File 'app/models/caboose/site.rb', line 119

def custom_css    
  resp = HTTParty.get('https:' + self.custom_css_url)
  if resp.nil? || resp.code.to_i == 403
    self.custom_css = ""
    return ""            
  end
  return resp.body    
end

#custom_css=(str) ⇒ Object



137
138
139
140
141
142
143
144
# File 'app/models/caboose/site.rb', line 137

def custom_css=(str)    
  config = YAML.load(File.read(Rails.root.join('config', 'aws.yml')))[Rails.env]
  AWS.config(:access_key_id => config['access_key_id'], :secret_access_key => config['secret_access_key'])
  bucket =  AWS::S3.new.buckets[config['bucket']]                         
  bucket.objects["assets/#{self.name}/css/custom.css"].write(str, :acl => 'public-read')                        
  self.date_css_updated = DateTime.now.utc
  self.save
end

#custom_css_urlObject



104
105
106
107
108
# File 'app/models/caboose/site.rb', line 104

def custom_css_url
  url = "//#{Caboose::cdn_domain}/assets/#{self.name}/css/custom.css"
  url << "?#{self.date_css_updated.strftime('%Y%m%d%H%M%S')}" if self.date_css_updated
  return url
end

#custom_jsObject



110
111
112
113
114
115
116
117
# File 'app/models/caboose/site.rb', line 110

def custom_js
  resp = HTTParty.get('https:' + self.custom_js_url)
  if resp.nil? || resp.code.to_i == 403
    self.custom_js = ""
    return ""            
  end
  return resp.body    
end

#custom_js=(str) ⇒ Object



128
129
130
131
132
133
134
135
# File 'app/models/caboose/site.rb', line 128

def custom_js=(str)    
  config = YAML.load(File.read(Rails.root.join('config', 'aws.yml')))[Rails.env]
  AWS.config(:access_key_id => config['access_key_id'], :secret_access_key => config['secret_access_key'])
  bucket =  AWS::S3.new.buckets[config['bucket']]                         
  bucket.objects["assets/#{self.name}/js/custom.js"].write(str, :acl => 'public-read')                        
  self.date_js_updated = DateTime.now.utc
  self.save
end

#custom_js_urlObject



98
99
100
101
102
# File 'app/models/caboose/site.rb', line 98

def custom_js_url
  url = "//#{Caboose::cdn_domain}/assets/#{self.name}/js/custom.js"
  url << "?#{self.date_js_updated.strftime('%Y%m%d%H%M%S')}" if self.date_js_updated
  return url
end

#default_layoutObject



49
50
51
52
# File 'app/models/caboose/site.rb', line 49

def default_layout    
  return Caboose::BlockType.where(:id => self.default_layout_id).first if self.default_layout_id
  return Caboose::BlockType.where(:name => 'layout_basic').first
end

#init_users_and_rolesObject



146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# File 'app/models/caboose/site.rb', line 146

def init_users_and_roles
      
  admin_user = Caboose::User.where( :site_id => self.id, :username => 'admin').first    
  admin_user = Caboose::User.create(:site_id => self.id, :username => 'admin', :email => '[email protected]', :password => Digest::SHA1.hexdigest(Caboose::salt + 'caboose')) if admin_user.nil?                          
  admin_role = Caboose::Role.where( :site_id => self.id, :name => 'Admin').first    
  admin_role = Caboose::Role.create(:site_id => self.id, :parent_id => -1, :name => 'Admin') if admin_role.nil?    
  elo_user   = Caboose::User.where( :site_id => self.id, :username => 'elo').first    
  elo_user   = Caboose::User.create(:site_id => self.id, :username => 'elo', :email => '[email protected]') if elo_user.nil?    
  elo_role   = Caboose::Role.where( :site_id => self.id, :name => 'Everyone Logged Out').first
  elo_role   = Caboose::Role.create(:site_id => self.id, :name => 'Everyone Logged Out', :parent_id => -1) if elo_role.nil?    
  eli_user   = Caboose::User.where( :site_id => self.id, :username => 'eli').first    
  eli_user   = Caboose::User.create(:site_id => self.id, :username => 'eli', :email => '[email protected]') if eli_user.nil?    
  eli_role   = Caboose::Role.where( :site_id => self.id, :name => 'Everyone Logged In').first
  eli_role   = Caboose::Role.create(:site_id => self.id, :name => 'Everyone Logged In', :parent_id => elo_role.id) if eli_role.nil?
  
  # Make sure the admin role has the admin "all" permission
  admin_perm = Caboose::Permission.where(:resource => 'all', :action => 'all').first
  rp = Caboose::RolePermission.where(:role_id => admin_role.id, :permission_id => admin_perm.id).first
  rp = Caboose::RolePermission.create(:role_id => admin_role.id, :permission_id => admin_perm.id) if rp.nil?
  
  # Make sure the admin user is a member of the admin role
  rm = Caboose::RoleMembership.where(:role_id => admin_role.id, :user_id => admin_user.id).first
  rm = Caboose::RoleMembership.create(:role_id => admin_role.id, :user_id => admin_user.id) if rm.nil?
  
  # Make sure the elo user is a member of the elo role
  rm = Caboose::RoleMembership.where( :role_id => elo_role.id, :user_id => elo_user.id).first
  rm = Caboose::RoleMembership.create(:role_id => elo_role.id, :user_id => elo_user.id) if rm.nil?
  
  # Make sure the eli user is a member of the eli role
  rm = Caboose::RoleMembership.where( :role_id => eli_role.id, :user_id => eli_user.id).first
  rm = Caboose::RoleMembership.create(:role_id => eli_role.id, :user_id => eli_user.id) if rm.nil?
      
end

#primary_domainObject



94
95
96
# File 'app/models/caboose/site.rb', line 94

def primary_domain
  Caboose::Domain.where(:site_id => self.id, :primary => true).first
end

#product_defaultObject



72
73
74
75
76
# File 'app/models/caboose/site.rb', line 72

def product_default
  pd = Caboose::ProductDefault.where(:site_id => self.id).first
  pd = Caboose::ProductDefault.create(:site_id => self.id) if pd.nil?
  return pd    
end

#retargeting_configObject



66
67
68
69
70
# File 'app/models/caboose/site.rb', line 66

def retargeting_config
  c = Caboose::RetargetingConfig.where(:site_id => self.id).first
  c = Caboose::RetargetingConfig.create(:site_id => self.id) if c.nil?      
  return c      
end

#smtp_configObject



54
55
56
57
58
# File 'app/models/caboose/site.rb', line 54

def smtp_config
  c = Caboose::SmtpConfig.where(:site_id => self.id).first
  c = Caboose::SmtpConfig.create(:site_id => self.id) if c.nil?
  return c
end

#social_configObject



60
61
62
63
64
# File 'app/models/caboose/site.rb', line 60

def social_config
  s = Caboose::SocialConfig.where(:site_id => self.id).first
  s = Caboose::SocialConfig.create(:site_id => self.id) if s.nil?
  return s
end

#validate_presence_of_store_configObject



43
44
45
46
47
# File 'app/models/caboose/site.rb', line 43

def validate_presence_of_store_config
  if self.use_store && !Caboose::StoreConfig.where(:site_id => self.id).exists?
    Caboose::StoreConfig.create(:site_id => self.id)
  end
end

#variant_defaultObject



78
79
80
81
82
# File 'app/models/caboose/site.rb', line 78

def variant_default
  vd = Caboose::VariantDefault.where(:site_id => self.id).first
  vd = Caboose::VariantDefault.create(:site_id => self.id) if vd.nil?
  return vd
end