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



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

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



143
144
145
# File 'app/models/caboose/site.rb', line 143

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

Instance Method Details

#build_new_siteObject



88
89
90
91
92
93
94
# File 'app/models/caboose/site.rb', line 88

def build_new_site
 # if defined?(SuiteBuilder) == 'constant' && SuiteBuilder.class == Class  
    helper = Caboose::SiteBuilder.new(self.name)
    helper.create_site_blocks(self.id)
 # end
#  self.init_users_and_roles
end

#custom_cssObject



172
173
174
175
176
177
178
179
# File 'app/models/caboose/site.rb', line 172

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



190
191
192
193
194
195
196
197
# File 'app/models/caboose/site.rb', line 190

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', :content_type => 'text/css')                        
  self.date_css_updated = DateTime.now.utc
  self.save
end

#custom_css_urlObject



157
158
159
160
161
# File 'app/models/caboose/site.rb', line 157

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



163
164
165
166
167
168
169
170
# File 'app/models/caboose/site.rb', line 163

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



181
182
183
184
185
186
187
188
# File 'app/models/caboose/site.rb', line 181

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', :content_type => 'application/javascript')                        
  self.date_js_updated = DateTime.now.utc
  self.save
end

#custom_js_urlObject



151
152
153
154
155
# File 'app/models/caboose/site.rb', line 151

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



102
103
104
105
# File 'app/models/caboose/site.rb', line 102

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



199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
# File 'app/models/caboose/site.rb', line 199

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



147
148
149
# File 'app/models/caboose/site.rb', line 147

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

#product_defaultObject



125
126
127
128
129
# File 'app/models/caboose/site.rb', line 125

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



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

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



107
108
109
110
111
# File 'app/models/caboose/site.rb', line 107

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



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

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

#themeObject



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

def theme
  Caboose::Theme.where(:id => self.theme_id).first
end

#update_cloudinary_faviconObject



80
81
82
83
84
85
86
# File 'app/models/caboose/site.rb', line 80

def update_cloudinary_favicon
  if Caboose::use_cloudinary
    result = Cloudinary::Uploader.upload("https:#{self.favicon.url(:thumb)}" , :public_id => "caboose/favicons/#{self.id}_thumb", :overwrite => true)
    self.cl_favicon_version = result['version'] if result && result['version']
    self.save
  end
end

#update_cloudinary_logoObject



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

def 
  if Caboose::use_cloudinary
    result = Cloudinary::Uploader.upload("https:#{self..url(:large)}" , :public_id => "caboose/site_logos/#{self.id}_large", :overwrite => true)
    self.cl_logo_version = result['version'] if result && result['version']
    self.save
  end
end

#validate_presence_of_store_configObject



96
97
98
99
100
# File 'app/models/caboose/site.rb', line 96

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



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

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