caboose-cms 0.5.194 → 0.5.195

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YTI4NDUyZWM4ZDQyZjMyYTFkMTRlZDAyYjY5NDkzOGViOTI2N2U5YQ==
4
+ MTEwZDI1Njk1NzdlN2EzYmMzZGFhODVmYjZhNjI1ZTU4NTg5NGNhOA==
5
5
  data.tar.gz: !binary |-
6
- OWVjMjAxMjZjNDUyNjUwNTMxNDJkNzA5ODc2OWUxMjYxNWQ2ZDhlMw==
6
+ Y2RhMGVjMDM1MGMyYjFkYzAyMWQ5ZmI2OGE0ZmY3NzYxNjYzN2U4MQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZWY0ODkwOWNjNzEyYzliMmFiNzE5YWY5MDI1MDA1NWQ4ZjQ2MWY2ZWExMTFk
10
- YmY4MDViY2FlY2VlODFmM2VhYzVhODMwNWFiZDI0MWY1NTc1Y2M1ZjExMzMw
11
- ZTlhMjViNjYzYWIzODFhOThmMjQxODRjN2E2M2I5NzJmYjkyZjg=
9
+ OWY3NTU3OGEyNDgyZjJiZjA4OWZjY2I2NWM4NTI1NzdkMjNiMjcyYzdkZjg5
10
+ NDMxMzY5MzQ0ZDdlNDc2NzE2NDRhMTc5OTc2OTI2NjFmMGQxZGY3NGUxZTJm
11
+ NmI2MWJiYzYwN2ZiOGRjNjQ0YmIwN2MwM2RjMDFjNWI2Mzk5NzQ=
12
12
  data.tar.gz: !binary |-
13
- MTFmZTE3OTNlODY3MmU2MmUyMDNkZTZhOWEwZGY0MjMwYzZmNGM5NTRlZTg0
14
- M2I4OWY2NTBmY2ZhZWYxNDNlNzUxZjk0NmE3ZWQ1YzY3MzZlYWJmYWFjNjUz
15
- ODc3ZDc4ZGJkNGZlMjk1MmI5NzQ0MmMwMTkzNjU1OTg0OGI4Yzc=
13
+ YjU0NWMyMDdmZDdkYzc5MTQ5MWFjMGJiYjgxNTljMmVhOTM4YzMwNDNkYTgw
14
+ MTgzMGY0YmY3MDc5ZjA3YjlhMzFhZTU5NDIxMGMwODg1MGJkMGMyYjViZjE1
15
+ YTAyNTZiNzA2ODcwZTc4NzczODc5MDIzMDZhNGI5ZWYzNTc3YjE=
@@ -54,7 +54,9 @@ Caboose.Store.Modules.Product = (function() {
54
54
  self.initalize_zoom = function(image_url) {
55
55
  var big_image = $("#product-images").children("figure").first();
56
56
  big_image.data("zoom-image",image_url);
57
- big_image.elevateZoom();
57
+ if (typeof elevateZoom !== 'undefined') {
58
+ big_image.elevateZoom();
59
+ }
58
60
  }
59
61
 
60
62
  self.render_images = function(callback) {
@@ -442,3 +442,59 @@ Page Bar Generator
442
442
  height: 0;
443
443
  clear: both;
444
444
  }
445
+
446
+ .caboose-btn {
447
+ background: #141516;
448
+ color: #f7f7f7;
449
+ text-align: center;
450
+ padding: 8px 15px 6px 15px;
451
+ height: auto;
452
+ display: inline-block;
453
+ margin: 0 auto;
454
+ font-size: 15px;
455
+ line-height: 18px;
456
+ cursor: pointer;
457
+ border: 1px solid #fff;
458
+ -webkit-border-radius: 5px;
459
+ -moz-border-radius: 5px;
460
+ border-width: 0;
461
+ -webkit-appearance: none;
462
+ border-radius: 5px;
463
+ text-decoration: none;
464
+ }
465
+
466
+ .caboose-btn-white, input[type="submit"], input[type="button"] {
467
+ background: #e3e3e3;
468
+ border: 1px solid #fff;
469
+ color: #141516;
470
+ text-align: center;
471
+ padding: 8px 15px 6px 15px;
472
+ height: auto;
473
+ display: inline-block;
474
+ margin: 0 auto;
475
+ font-size: 15px;
476
+ cursor: pointer;
477
+ -webkit-border-radius: 5px;
478
+ border-width: 0;
479
+ -webkit-appearance: none;
480
+ -moz-border-radius: 5px;
481
+ border-radius: 5px;
482
+ line-height: 18px;
483
+ text-decoration: none;
484
+ }
485
+
486
+ .caboose-btn:focus {
487
+ outline-width: 0;
488
+ }
489
+
490
+ .caboose-btn-white:focus, input[type="submit"]:focus, input[type="button"]:focus {
491
+ outline-width: 0;
492
+ }
493
+
494
+ .caboose-btn:hover {
495
+ background: #4f4448;
496
+ }
497
+
498
+ .caboose-btn-white:hover, input[type="submit"]:hover, input[type="button"]:hover {
499
+ background: #ccc;
500
+ }
@@ -71,6 +71,26 @@ module Caboose
71
71
  @site = Site.find(params[:id])
72
72
  end
73
73
 
74
+ # GET /admin/sites/:id/css
75
+ def admin_edit_css
76
+ return if !user_is_allowed('sites', 'edit')
77
+ if !@site.is_master
78
+ @error = "You are not allowed to manage sites."
79
+ render :file => 'caboose/extras/error' and return
80
+ end
81
+ @site = Site.find(params[:id])
82
+ end
83
+
84
+ # GET /admin/sites/:id/js
85
+ def admin_edit_js
86
+ return if !user_is_allowed('sites', 'edit')
87
+ if !@site.is_master
88
+ @error = "You are not allowed to manage sites."
89
+ render :file => 'caboose/extras/error' and return
90
+ end
91
+ @site = Site.find(params[:id])
92
+ end
93
+
74
94
  # GET /admin/sites/:id/delete
75
95
  def admin_delete_form
76
96
  return if !user_is_allowed('sites', 'edit')
@@ -127,6 +147,8 @@ module Caboose
127
147
  when 'under_construction_html' then site.under_construction_html = value
128
148
  when 'use_store' then site.use_store = value
129
149
  when 'use_retargeting' then site.use_retargeting = value
150
+ when 'custom_css' then site.custom_css = value
151
+ when 'custom_js' then site.custom_js = value
130
152
  end
131
153
  end
132
154
 
@@ -47,9 +47,11 @@ module Caboose
47
47
  t = AuthorizeNet::Reporting::Transaction.new(sc.pp_username, sc.pp_password)
48
48
  resp = t.get_transaction_details(ot.transaction_id)
49
49
  t2 = resp.transaction
50
- self.card_type = t2.payment_method.card_type.upcase
51
- self.card_number = t2.payment_method.card_number.gsub('X', '')
52
-
50
+ if t2
51
+ self.card_type = t2.payment_method.card_type.upcase
52
+ self.card_number = t2.payment_method.card_number.gsub('X', '')
53
+ end
54
+
53
55
  end
54
56
 
55
57
  end
@@ -130,7 +132,7 @@ module Caboose
130
132
  if li.variant.product.option1 && li.variant.option1 then options += li.variant.product.option1 + ": " + li.variant.option1 + "\n" end
131
133
  if li.variant.product.option2 && li.variant.option2 then options += li.variant.product.option2 + ": " + li.variant.option2 + "\n" end
132
134
  if li.variant.product.option3 && li.variant.option3 then options += li.variant.product.option3 + ": " + li.variant.option3 + "\n" end
133
- if li.variant.product.product_images.count > 0
135
+ if li.variant.product.product_images.count > 0 && li.variant.product.product_images.first.url(:tiny)
134
136
  image = open("#{li.variant.product.product_images.first.url(:tiny)}")
135
137
  else
136
138
  image = ""
@@ -140,7 +142,11 @@ module Caboose
140
142
  arr << { :content => package + "\n" + carrier + "\n" + service, :width => 115, :rowspan => (index == 0 ? pk.line_items.count : 1) }
141
143
  end
142
144
 
143
- arr << { :image => image, :fit => [40, 40], :borders => [:top, :bottom, :left], :width => 50 }
145
+ if !image.blank?
146
+ arr << { :image => image, :fit => [40, 40], :borders => [:top, :bottom, :left], :width => 50 }
147
+ else
148
+ arr << { :content => "No Image" }
149
+ end
144
150
  arr << { :content => "#{li.variant.product.title}\n#{li.variant.sku}", :borders => [:top, :right, :bottom], :width => 100 }
145
151
  arr << { :content => options }
146
152
  arr << { :content => "#{li.quantity}" , :align => :right }
@@ -158,7 +164,7 @@ module Caboose
158
164
  if li.variant.product.option1 && li.variant.option1 then options += li.variant.product.option1 + ": " + li.variant.option1 + "\n" end
159
165
  if li.variant.product.option2 && li.variant.option2 then options += li.variant.product.option2 + ": " + li.variant.option2 + "\n" end
160
166
  if li.variant.product.option3 && li.variant.option3 then options += li.variant.product.option3 + ": " + li.variant.option3 + "\n" end
161
- if li.variant.product.product_images.count > 0
167
+ if li.variant.product.product_images.count > 0 && li.variant.product.product_images.first.url(:tiny)
162
168
  image = open("#{li.variant.product.product_images.first.url(:tiny)}")
163
169
  else
164
170
  image = ""
@@ -167,11 +173,19 @@ module Caboose
167
173
  if index == 0
168
174
  arr << { :content => "Unassigned", :width => 115, :rowspan => (index == 0 ? unassigned.count : 1) }
169
175
  end
170
- arr << { :image => image, :fit => [40, 40], :borders => [:top, :bottom, :left], :width => 50 }
176
+ if !image.blank?
177
+ arr << { :image => image, :fit => [40, 40], :borders => [:top, :bottom, :left], :width => 50 }
178
+ else
179
+ arr << { :content => "No Image" }
180
+ end
171
181
  arr << { :content => "#{li.variant.product.title}\n#{li.variant.sku}", :borders => [:top, :right, :bottom], :width => 100 }
172
182
  arr << { :content => options }
173
183
  arr << { :content => "#{li.quantity}" , :align => :right }
174
- arr << { :content => "$" + sprintf("%.2f", li.price) , :align => :right }
184
+ if li.unit_price
185
+ arr << { :content => "$" + sprintf("%.2f", li.unit_price) , :align => :right }
186
+ else
187
+ arr << { :content => "" }
188
+ end
175
189
  arr << { :content => "$" + sprintf("%.2f", li.subtotal) , :align => :right }
176
190
  tbl << arr
177
191
  end
@@ -192,14 +206,34 @@ module Caboose
192
206
  tbl2 = []
193
207
  tbl3 = []
194
208
 
195
- tbl2 << [{ :content => "Card Type" , :width => 127, :border_width => 0 },{ :content => self.card_type , :width => 128, :border_width => 0 }]
196
- tbl2 << [{ :content => "Transaction ID" , :width => 127, :border_width => 0 },{ :content => trans.transaction_id.to_s , :width => 128, :border_width => 0 }]
197
- tbl2 << [{ :content => "Gateway Response" , :width => 127, :border_width => 0 },{ :content => trans.response_code.to_s , :width => 128, :border_width => 0 }]
198
- tbl3 << [{ :content => "Card Number" , :width => 127, :border_width => 0 },{ :content => "XXXX XXXX XXXX " + self.card_number , :width => 128, :border_width => 0 }]
199
- tbl3 << [{ :content => "Transaction Time" , :width => 127, :border_width => 0 },{ :content => trans.date_processed.strftime("%d %b %Y %H:%M:%S %p") , :width => 128, :border_width => 0 }]
200
- tbl3 << [{ :content => "Payment Process" , :width => 127, :border_width => 0 },{ :content => trans.success ? "Successful" : "Failed" , :width => 128, :border_width => 0 }]
201
-
202
- tbl << [{ :content => "Authorization Details", :colspan => 2, :font_style => :bold }]
209
+ tbl2 << [
210
+ { :content => "Card Type", :width => 127, :border_width => 0 },
211
+ { :content => self.card_type.blank? ? "N/A" : self.card_type, :width => 128, :border_width => 0 }
212
+ ]
213
+ tbl2 << [
214
+ { :content => "Transaction ID", :width => 127, :border_width => 0 },
215
+ { :content => trans.transaction_id.to_s, :width => 128, :border_width => 0 }
216
+ ]
217
+ tbl2 << [
218
+ { :content => "Gateway Response", :width => 127, :border_width => 0},
219
+ { :content => trans.response_code.to_s, :width => 128, :border_width => 0 }
220
+ ]
221
+ tbl3 << [
222
+ { :content => "Card Number", :width => 127, :border_width => 0},
223
+ { :content => self.card_number ? ("XXXX XXXX XXXX " + self.card_number) : "N/A", :width => 128, :border_width => 0 }
224
+ ]
225
+ tbl3 << [
226
+ { :content => "Transaction Time", :width => 127, :border_width => 0},
227
+ { :content => trans.date_processed.strftime("%d %b %Y %H:%M:%S %p"), :width => 128, :border_width => 0 }
228
+ ]
229
+ tbl3 << [
230
+ { :content => "Payment Process", :width => 127, :border_width => 0},
231
+ { :content => trans.success ? "Successful" : "Failed", :width => 128, :border_width => 0 }
232
+ ]
233
+ tbl << [
234
+ { :content => "Authorization Details", :colspan => 2, :font_style => :bold }
235
+ ]
236
+
203
237
  tbl << [
204
238
  { :content => tbl2, :width => 255 },
205
239
  { :content => tbl3, :width => 255 }
@@ -44,8 +44,10 @@ module Caboose
44
44
  t = AuthorizeNet::Reporting::Transaction.new(sc.pp_username, sc.pp_password)
45
45
  resp = t.get_transaction_details(ot.transaction_id)
46
46
  t2 = resp.transaction
47
- self.card_type = t2.payment_method.card_type.upcase
48
- self.card_number = t2.payment_method.card_number.gsub('X', '')
47
+ if t2
48
+ self.card_type = t2.payment_method.card_type.upcase
49
+ self.card_number = t2.payment_method.card_number.gsub('X', '')
50
+ end
49
51
  end
50
52
  end
51
53
 
@@ -133,7 +135,9 @@ module Caboose
133
135
  if li.variant.product.option1 && li.variant.option1 then options += li.variant.product.option1 + ": " + li.variant.option1 + "\n" end
134
136
  if li.variant.product.option2 && li.variant.option2 then options += li.variant.product.option2 + ": " + li.variant.option2 + "\n" end
135
137
  if li.variant.product.option3 && li.variant.option3 then options += li.variant.product.option3 + ": " + li.variant.option3 + "\n" end
136
- if li.variant.product.product_images.count > 0
138
+ if li.variant.product.product_images.count > 0 && li.variant.product.product_images.first.url(:tiny)
139
+ # Caboose.log("image path: #{li.variant.product.product_images.first.url(:tiny)}")
140
+ # image = ""
137
141
  image = open("#{li.variant.product.product_images.first.url(:tiny)}")
138
142
  else
139
143
  image = ""
@@ -143,7 +147,11 @@ module Caboose
143
147
  arr << { :content => package + "\n" + carrier + "\n" + service, :width => 115, :rowspan => (index == 0 ? pk.line_items.count : 1) }
144
148
  end
145
149
 
146
- arr << { :image => image, :fit => [40, 40], :borders => [:top, :bottom, :left], :width => 50 }
150
+ if !image.blank?
151
+ arr << { :image => image, :fit => [40, 40], :borders => [:top, :bottom, :left], :width => 50 }
152
+ else
153
+ arr << { :content => "No Image" }
154
+ end
147
155
  arr << { :content => "#{li.variant.product.title}\n#{li.variant.sku}", :borders => [:top, :right, :bottom], :width => 100 }
148
156
  arr << { :content => options }
149
157
  arr << { :content => "#{li.quantity}" , :align => :right }
@@ -161,7 +169,9 @@ module Caboose
161
169
  if li.variant.product.option1 && li.variant.option1 then options += li.variant.product.option1 + ": " + li.variant.option1 + "\n" end
162
170
  if li.variant.product.option2 && li.variant.option2 then options += li.variant.product.option2 + ": " + li.variant.option2 + "\n" end
163
171
  if li.variant.product.option3 && li.variant.option3 then options += li.variant.product.option3 + ": " + li.variant.option3 + "\n" end
164
- if li.variant.product.product_images.count > 0
172
+ if li.variant.product.product_images.count > 0 && li.variant.product.product_images.first.url(:tiny)
173
+ # Caboose.log("image path: #{li.variant.product.product_images.first.url(:tiny)}")
174
+ # image = ""
165
175
  image = open("#{li.variant.product.product_images.first.url(:tiny)}")
166
176
  else
167
177
  image = ""
@@ -170,15 +180,23 @@ module Caboose
170
180
  if index == 0
171
181
  arr << { :content => "Unassigned", :width => 115, :rowspan => (index == 0 ? unassigned.count : 1) }
172
182
  end
173
- arr << { :image => image, :fit => [40, 40], :borders => [:top, :bottom, :left], :width => 50 }
183
+ if !image.blank?
184
+ arr << { :image => image, :fit => [40, 40], :borders => [:top, :bottom, :left], :width => 50 }
185
+ else
186
+ arr << { :content => "No Image" }
187
+ end
174
188
  arr << { :content => "#{li.variant.product.title}\n#{li.variant.sku}", :borders => [:top, :right, :bottom], :width => 100 }
175
189
  arr << { :content => options }
176
190
  arr << { :content => "#{li.quantity}" , :align => :right }
177
- arr << { :content => "$" + sprintf("%.2f", li.price) , :align => :right }
191
+ if li.unit_price
192
+ arr << { :content => "$" + sprintf("%.2f", li.unit_price) , :align => :right }
193
+ else
194
+ arr << { :content => "" }
195
+ end
178
196
  arr << { :content => "$" + sprintf("%.2f", li.subtotal) , :align => :right }
179
197
  tbl << arr
180
198
  end
181
-
199
+ order.calculate
182
200
  tbl << [{ :content => "Subtotal" , :colspan => 6, :align => :right }, { :content => "$" + sprintf("%.2f", order.subtotal ) , :align => :right }]
183
201
  tbl << [{ :content => "Discount" , :colspan => 6, :align => :right }, { :content => "(-) $" + sprintf("%.2f", order.discount ? order.discount : 0.0 ) , :align => :right }]
184
202
  tbl << [{ :content => "Shipping and Handling Charges" , :colspan => 6, :align => :right }, { :content => "(+) $" + sprintf("%.2f", order.shipping_and_handling ) , :align => :right }]
@@ -198,7 +216,7 @@ module Caboose
198
216
  if trans
199
217
  tbl2 << [
200
218
  { :content => "Card Type", :width => 127, :border_width => 0 },
201
- { :content => self.card_type, :width => 128, :border_width => 0 }
219
+ { :content => self.card_type.blank? ? "N/A" : self.card_type, :width => 128, :border_width => 0 }
202
220
  ]
203
221
  tbl2 << [
204
222
  { :content => "Transaction ID", :width => 127, :border_width => 0 },
@@ -210,7 +228,7 @@ module Caboose
210
228
  ]
211
229
  tbl3 << [
212
230
  { :content => "Card Number", :width => 127, :border_width => 0},
213
- { :content => "XXXX XXXX XXXX " + self.card_number, :width => 128, :border_width => 0 }
231
+ { :content => self.card_number ? ("XXXX XXXX XXXX " + self.card_number) : "N/A", :width => 128, :border_width => 0 }
214
232
  ]
215
233
  tbl3 << [
216
234
  { :content => "Transaction Time", :width => 127, :border_width => 0},
@@ -568,14 +568,16 @@ class Caboose::Schema < Caboose::Utilities::Schema
568
568
  [ :shipping_method_id , :integer ]
569
569
  ],
570
570
  Caboose::Site => [
571
- [ :name , :string ],
572
- [ :description , :text ],
573
- [ :under_construction_html , :text ],
574
- [ :use_store , :boolean , { :default => false }],
571
+ [ :name , :string ],
572
+ [ :description , :text ],
573
+ [ :under_construction_html , :text ],
574
+ [ :use_store , :boolean , { :default => false }],
575
575
  [ :logo , :attachment ],
576
- [ :is_master , :boolean , { :default => false }],
577
- [ :analytics_id , :string ],
578
- [ :use_retargeting , :boolean , { :default => false }]
576
+ [ :is_master , :boolean , { :default => false }],
577
+ [ :analytics_id , :string ],
578
+ [ :use_retargeting , :boolean , { :default => false }],
579
+ [ :date_js_updated , :datetime ],
580
+ [ :date_css_updated , :datetime ]
579
581
  ],
580
582
  Caboose::SiteMembership => [
581
583
  [ :site_id , :integer ],
@@ -1,3 +1,4 @@
1
+ require 'httparty'
1
2
 
2
3
  class Caboose::Site < ActiveRecord::Base
3
4
  self.table_name = "sites"
@@ -51,4 +52,52 @@ class Caboose::Site < ActiveRecord::Base
51
52
  Caboose::Domain.where(:site_id => self.id, :primary => true).first
52
53
  end
53
54
 
55
+ def custom_js_url
56
+ url = "http://#{Caboose::cdn_domain}/assets/#{self.name}/js/custom.js"
57
+ url << "?#{self.date_js_updated.strftime('%Y%m%d%H%M%S')}" if self.date_js_updated
58
+ return url
59
+ end
60
+
61
+ def custom_css_url
62
+ url = "http://#{Caboose::cdn_domain}/assets/#{self.name}/css/custom.css"
63
+ url << "?#{self.date_css_updated.strftime('%Y%m%d%H%M%S')}" if self.date_css_updated
64
+ return url
65
+ end
66
+
67
+ def custom_js
68
+ resp = HTTParty.get(self.custom_js_url)
69
+ if resp.nil? || resp.code.to_i == 403
70
+ self.custom_js = ""
71
+ return ""
72
+ end
73
+ return resp.body
74
+ end
75
+
76
+ def custom_css
77
+ resp = HTTParty.get(self.custom_css_url)
78
+ if resp.nil? || resp.code.to_i == 403
79
+ self.custom_css = ""
80
+ return ""
81
+ end
82
+ return resp.body
83
+ end
84
+
85
+ def custom_js=(str)
86
+ config = YAML.load(File.read(Rails.root.join('config', 'aws.yml')))[Rails.env]
87
+ AWS.config(:access_key_id => config['access_key_id'], :secret_access_key => config['secret_access_key'])
88
+ bucket = AWS::S3.new.buckets[config['bucket']]
89
+ bucket.objects["assets/#{self.name}/js/custom.js"].write(str, :acl => 'public-read')
90
+ self.date_js_updated = DateTime.now.utc
91
+ self.save
92
+ end
93
+
94
+ def custom_css=(str)
95
+ config = YAML.load(File.read(Rails.root.join('config', 'aws.yml')))[Rails.env]
96
+ AWS.config(:access_key_id => config['access_key_id'], :secret_access_key => config['secret_access_key'])
97
+ bucket = AWS::S3.new.buckets[config['bucket']]
98
+ bucket.objects["assets/#{self.name}/css/custom.css"].write(str, :acl => 'public-read')
99
+ self.date_css_updated = DateTime.now.utc
100
+ self.save
101
+ end
102
+
54
103
  end
@@ -121,7 +121,7 @@ function delete_calendar(calendar_id, confirm)
121
121
 
122
122
  #calendar table { border-collapse: collapse; width: 95%; }
123
123
  #calendar th { border: #666 1px solid; background: #666; color: #fff; margin: 0; padding: 4px 8px; }
124
- #calendar td { border: #666 1px solid; position: relative; margin: 0; padding: 0; width: 14%; height: 100px; vertical-align: top; }
124
+ #calendar td { border: #666 1px solid; position: relative; margin: 0; padding: 0; width: 14%; height: 100px; cursor: pointer;vertical-align: top; }
125
125
  #calendar td.blank { background: #efefef; border: #666 1px solid; }
126
126
  #calendar td.over { background: #ffcc99; }
127
127
  #calendar td span.day { display: block; float: left; border-right: #666 1px solid; border-bottom: #666 1px solid; width: 20px; text-align: center; }
@@ -5,7 +5,7 @@
5
5
  <input type='submit' value='Search' />
6
6
  </form>
7
7
 
8
- <p><a href='/admin/calendars/new' id='new_calendar'>New Calendar</a></p>
8
+ <p><a href='/admin/calendars/new' id='new_calendar' class="caboose-btn-white">New Calendar</a></p>
9
9
 
10
10
  <form action='/admin/calendars' method='post' id='new_calendar_form'>
11
11
  <input type='hidden' name='authenticity_token' value='<%= form_authenticity_token %>'>
@@ -5,9 +5,9 @@
5
5
  </style>
6
6
 
7
7
  <p>
8
- <a href='#' onclick="$('#search_form').toggle(400, function() { modal.autosize(); });">Show/hide search form</a> |
9
- <a href='/admin/orders/new'>New Manual Order</a> |
10
- <a href='/admin/orders/print-pending' target='_blank'>Print Pending Orders</a>
8
+ <a class="caboose-btn" href='#' onclick="$('#search_form').toggle(400, function() { modal.autosize(); });">Show/hide search form</a>
9
+ <a class="caboose-btn" href='/admin/orders/new'>New Manual Order</a>
10
+ <a class="caboose-btn" href='/admin/orders/print-pending' target='_blank'>Print Pending Orders</a>
11
11
  </p>
12
12
  <form action='/admin/orders' method='get' id='search_form' style='display: none;'>
13
13
  <p><input type='text' name='id' placeholder='Order ID' value="<%= @pager.params['id'] %>" style='width: 100px;' /></p>
@@ -1,7 +1,7 @@
1
1
  <h1>Pages</h1>
2
2
 
3
3
  <% if @domain %>
4
- <p><a href='/admin/pages/new'>New Page</a></p>
4
+ <p><a href='/admin/pages/new' class="caboose-btn-white">New Page</a></p>
5
5
  <%= raw pages_list(@home_page) %>
6
6
  <% else %>
7
7
  <p>It doesn't look like this site is configured for the current domain. Please <a href='/admin/sites'>configure your sites</a>.</p>
@@ -1,12 +1,19 @@
1
1
  <% content_for :caboose_css do %>
2
2
  <%= stylesheet_link_tag "caboose/admin_products" %>
3
+ <style>
4
+ #product-title {
5
+ font-size: 24px !important;
6
+ height: auto !important;
7
+ padding: 10px 2% !important;
8
+ }
9
+ </style>
3
10
  <% end %>
4
11
  <% content_for :caboose_js do %>
5
12
  <%= javascript_include_tag "caboose/model/all" %>
6
13
  <%= javascript_include_tag "caboose/admin_products" %>
7
14
  <% end %>
8
15
 
9
- <h1>Edit Product - <%= @product.title %></h1>
16
+ <h1 id="product-title">Edit Product - <%= @product.title %></h1>
10
17
  <ul id='tabs'>
11
18
  <%
12
19
  tabs = {
@@ -27,6 +34,6 @@ tabs["/admin/products/#{@product.id}/delete" ] = 'Delete Product'
27
34
  <% tabs.each do |href,text| %>
28
35
  <li<%= raw request.fullpath == href ? " class='selected'" : '' %>><a href='<%= href %>'><%= raw text %></a></li>
29
36
  <% end %>
30
- <li class='back'><input type='button' value='< Back' onclick="window.location='/admin/products';" /></li>
37
+ <li class='back'><input type='button' class="caboose-btn" value='< Back' onclick="window.location='/admin/products';" /></li>
31
38
  </ul>
32
- <div id='content2'>
39
+ <div id='content2'>
@@ -26,6 +26,8 @@
26
26
  tabs = {
27
27
  'General' => "/admin/sites/#{@site.id}",
28
28
  'Block Types' => "/admin/sites/#{@site.id}/block-types",
29
+ 'Custom CSS' => "/admin/sites/#{@site.id}/css",
30
+ 'Custom JS' => "/admin/sites/#{@site.id}/js",
29
31
  'Retargeting' => "/admin/sites/#{@site.id}/retargeting",
30
32
  'Delete Site' => "/admin/sites/#{@site.id}/delete"
31
33
  }
@@ -0,0 +1,24 @@
1
+
2
+ <%= render :partial => 'caboose/sites/admin_header' %>
3
+
4
+ <p><div id='site_<%= @site.id %>_custom_css' ></div></p>
5
+
6
+ <%= render :partial => 'caboose/sites/admin_footer' %>
7
+
8
+ <% content_for :caboose_js do %>
9
+ <script type="text/javascript">
10
+
11
+ $(document).ready(function() {
12
+ new ModelBinder({
13
+ name: 'Site',
14
+ id: <%= @site.id %>,
15
+ update_url: '/admin/sites/<%= @site.id %>',
16
+ authenticity_token: '<%= form_authenticity_token %>',
17
+ attributes: [
18
+ { name: 'custom_css', nice_name: 'Custom CSS', type: 'textarea' , value: <%= raw Caboose.json(@site.custom_css) %>, width: 600, height: 200 }
19
+ ]
20
+ });
21
+ });
22
+
23
+ </script>
24
+ <% end %>
@@ -0,0 +1,24 @@
1
+
2
+ <%= render :partial => 'caboose/sites/admin_header' %>
3
+
4
+ <p><div id='site_<%= @site.id %>_custom_js' ></div></p>
5
+
6
+ <%= render :partial => 'caboose/sites/admin_footer' %>
7
+
8
+ <% content_for :caboose_js do %>
9
+ <script type="text/javascript">
10
+
11
+ $(document).ready(function() {
12
+ new ModelBinder({
13
+ name: 'Site',
14
+ id: <%= @site.id %>,
15
+ update_url: '/admin/sites/<%= @site.id %>',
16
+ authenticity_token: '<%= form_authenticity_token %>',
17
+ attributes: [
18
+ { name: 'custom_js', nice_name: 'Custom Javascript', type: 'textarea' , value: <%= raw Caboose.json(@site.custom_js) %>, width: 600, height: 200 }
19
+ ]
20
+ });
21
+ });
22
+
23
+ </script>
24
+ <% end %>
@@ -15,8 +15,8 @@
15
15
  <div id='top_nav'>
16
16
  <div class='caboose_logo'></div>
17
17
  <ul>
18
- <li class='back' ><a href='/'><span><< Back to Site</span></a></li>
19
- <li class='cpanel' ><a href='/station' id='caboose_station' class='caboose_modal'><span>Menu</span></a></li>
18
+ <li class='back' ><a href='/' class="caboose-btn"><span><< Back to Site</span></a></li>
19
+ <li class='cpanel' ><a href='/station' id='caboose_station' class='caboose_modal caboose-btn'><span>Menu</span></a></li>
20
20
  </ul>
21
21
  </div>
22
22
  </div>
@@ -5,14 +5,16 @@
5
5
  <script>window.loggedIn = <%= logged_in?.to_json %></script>
6
6
  <% Caboose::javascripts.each do |js| %><%= javascript_include_tag(js) %><% end %>
7
7
  <% @page.linked_resources_map[:js].each do |r| %><%= javascript_include_tag r %><% end %>
8
+ <% if @site.date_js_updated %><script type='text/javascript' src="<%= raw @site.custom_js_url %>"></script><% end %>
8
9
  <% if @page.custom_js && @page.custom_js.strip.length > 0 %><script type='text/javascript'><%= raw @page.custom_js %></script><% end %>
9
10
  <%= yield :caboose_js %>
10
- <% end %>
11
+ <% end %>
11
12
  <% content_for :css do %>
12
13
  <%= stylesheet_link_tag 'caboose/application' %>
13
14
  <%= stylesheet_link_tag @site.name == 'application' ? 'application' : "#{@site.name}/css/application" %>
14
15
  <% Caboose::stylesheets.each do |css| %><%= stylesheet_link_tag(css) %><% end %>
15
16
  <% @page.linked_resources_map[:css].each do |r| %><%= stylesheet_link_tag r %><% end %>
17
+ <% if @site.date_css_updated %><link rel='stylesheet' type='text/css' url="<%= raw @site.custom_css_url %>" /><% end %>
16
18
  <% if @page.custom_css && @page.custom_css.strip.length > 0 %><style><%= raw @page.custom_css %></style><% end %>
17
19
  <%= yield :caboose_css %>
18
20
  <% end %>
data/config/routes.rb CHANGED
@@ -62,6 +62,8 @@ Caboose::Engine.routes.draw do
62
62
 
63
63
  get "admin/sites/options" => "sites#options"
64
64
  get "admin/sites/new" => "sites#admin_new"
65
+ get "admin/sites/:id/css" => "sites#admin_edit_css"
66
+ get "admin/sites/:id/js" => "sites#admin_edit_js"
65
67
  get "admin/sites/:id/block-types" => "sites#admin_edit_block_types"
66
68
  get "admin/sites/:id/delete" => "sites#admin_delete_form"
67
69
  get "admin/sites/:id" => "sites#admin_edit"
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = '0.5.194'
2
+ VERSION = '0.5.195'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caboose-cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.194
4
+ version: 0.5.195
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-06 00:00:00.000000000 Z
11
+ date: 2015-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -873,6 +873,8 @@ files:
873
873
  - app/views/caboose/sites/admin_delete_form.html.erb
874
874
  - app/views/caboose/sites/admin_edit.html.erb
875
875
  - app/views/caboose/sites/admin_edit_block_types.html.erb
876
+ - app/views/caboose/sites/admin_edit_css.html.erb
877
+ - app/views/caboose/sites/admin_edit_js.html.erb
876
878
  - app/views/caboose/sites/admin_index.html.erb
877
879
  - app/views/caboose/sites/admin_new.html.erb
878
880
  - app/views/caboose/smtp/admin_edit.html.erb