Commit 9a2d62543f4d019f55bbae8d7ac4f456816edcda
1 parent
eb68553a
Exists in
master
and in
29 other branches
[shopping-cart-plugin] Fixing Chromium problem
* The history.go used to revert the url don't work properly on chromium. We're commenting it for now to avoid problems. * Also fixing the show/hide feature.
Showing
2 changed files
with
82 additions
and
7 deletions
Show diff stats
plugins/shopping_cart/controllers/shopping_cart_plugin_profile_controller.rb
@@ -108,6 +108,48 @@ class ShoppingCartPluginProfileController < ProfileController | @@ -108,6 +108,48 @@ class ShoppingCartPluginProfileController < ProfileController | ||
108 | end | 108 | end |
109 | end | 109 | end |
110 | 110 | ||
111 | + def visibility | ||
112 | + render :text => session[:cart].has_key?(:visibility) ? session[:cart][:visibility].to_json : true.to_json | ||
113 | + end | ||
114 | + | ||
115 | + def show | ||
116 | + begin | ||
117 | + session[:cart][:visibility] = true | ||
118 | + render :text => { | ||
119 | + :ok => true, | ||
120 | + :message => _('Cart displayed.'), | ||
121 | + :error => {:code => 0} | ||
122 | + }.to_json | ||
123 | + rescue Exception => exception | ||
124 | + render :text => { | ||
125 | + :ok => false, | ||
126 | + :error => { | ||
127 | + :code => 7, | ||
128 | + :message => exception.message | ||
129 | + } | ||
130 | + }.to_json | ||
131 | + end | ||
132 | + end | ||
133 | + | ||
134 | + def hide | ||
135 | + begin | ||
136 | + session[:cart][:visibility] = false | ||
137 | + render :text => { | ||
138 | + :ok => true, | ||
139 | + :message => _('Cart Hidden.'), | ||
140 | + :error => {:code => 0} | ||
141 | + }.to_json | ||
142 | + rescue Exception => exception | ||
143 | + render :text => { | ||
144 | + :ok => false, | ||
145 | + :error => { | ||
146 | + :code => 8, | ||
147 | + :message => exception.message | ||
148 | + } | ||
149 | + }.to_json | ||
150 | + end | ||
151 | + end | ||
152 | + | ||
111 | private | 153 | private |
112 | 154 | ||
113 | def validate_same_enterprise | 155 | def validate_same_enterprise |
plugins/shopping_cart/public/cart.js
@@ -6,13 +6,26 @@ function Cart(config) { | @@ -6,13 +6,26 @@ function Cart(config) { | ||
6 | this.contentBox = $("#cart1 .cart-content"); | 6 | this.contentBox = $("#cart1 .cart-content"); |
7 | this.itemsBox = $("#cart1 .cart-items"); | 7 | this.itemsBox = $("#cart1 .cart-items"); |
8 | this.items = {}; | 8 | this.items = {}; |
9 | + this.empty = !config.hasProducts; | ||
9 | this.visible = false; | 10 | this.visible = false; |
10 | $(".cart-buy", this.cartElem).button({ icons: { primary: 'ui-icon-cart'} }); | 11 | $(".cart-buy", this.cartElem).button({ icons: { primary: 'ui-icon-cart'} }); |
11 | - if (config.hasProducts) { | 12 | + if (!this.empty) { |
12 | $(this.cartElem).show(); | 13 | $(this.cartElem).show(); |
13 | this.enterprise = config.enterprise; | 14 | this.enterprise = config.enterprise; |
15 | + me = this; | ||
16 | + $.ajax({ | ||
17 | + url: '/profile/'+ this.enterprise +'/plugins/shopping_cart/visibility', | ||
18 | + dataType: 'json', | ||
19 | + success: function(data, status, ajax){ | ||
20 | + me.visible = /^true$/i.test(data); | ||
21 | + me.listProducts(); | ||
22 | + }, | ||
23 | + cache: false, | ||
24 | + error: function(ajax, status, errorThrown) { | ||
25 | + alert('Visibility - HTTP '+status+': '+errorThrown); | ||
26 | + } | ||
27 | + }); | ||
14 | $(".cart-buy", this.cartElem).colorbox({href: '/profile/' + this.enterprise + '/plugins/shopping_cart/buy'}); | 28 | $(".cart-buy", this.cartElem).colorbox({href: '/profile/' + this.enterprise + '/plugins/shopping_cart/buy'}); |
15 | - this.listProducts(); | ||
16 | } | 29 | } |
17 | } | 30 | } |
18 | 31 | ||
@@ -63,17 +76,20 @@ function Cart(config) { | @@ -63,17 +76,20 @@ function Cart(config) { | ||
63 | input.onchange = function() { | 76 | input.onchange = function() { |
64 | me.updateQuantity(this, this.itemId, this.value); | 77 | me.updateQuantity(this, this.itemId, this.value); |
65 | }; | 78 | }; |
66 | - document.location.href = "#"+liId; | ||
67 | - document.location.href = "#"+this.cartElem.id; | ||
68 | - history.go(-2); | 79 | +// document.location.href = "#"+liId; |
80 | +// document.location.href = "#"+this.cartElem.id; | ||
81 | +// history.go(-2); | ||
69 | var liBg = li.css("background-color"); | 82 | var liBg = li.css("background-color"); |
70 | li[0].style.backgroundColor = "#FF0"; | 83 | li[0].style.backgroundColor = "#FF0"; |
71 | li.animate({ backgroundColor: liBg }, 1000); | 84 | li.animate({ backgroundColor: liBg }, 1000); |
72 | } | 85 | } |
73 | - if( !this.visible ) { | 86 | + |
87 | + if (!clear && this.empty) $(this.cartElem).show(); | ||
88 | + if((!clear && this.empty) || (this.visible && clear)) { | ||
74 | this.contentBox.hide(); | 89 | this.contentBox.hide(); |
75 | this.show(); | 90 | this.show(); |
76 | } | 91 | } |
92 | + this.empty = false; | ||
77 | } | 93 | } |
78 | 94 | ||
79 | Cart.prototype.updateQuantity = function(input, itemId, quantity) { | 95 | Cart.prototype.updateQuantity = function(input, itemId, quantity) { |
@@ -135,7 +151,7 @@ function Cart(config) { | @@ -135,7 +151,7 @@ function Cart(config) { | ||
135 | if(!this.enterprise) { | 151 | if(!this.enterprise) { |
136 | this.enterprise = enterprise; | 152 | this.enterprise = enterprise; |
137 | $(".cart-buy", this.cartElem).colorbox({href: '/profile/' + this.enterprise + '/plugins/shopping_cart/buy'}); | 153 | $(".cart-buy", this.cartElem).colorbox({href: '/profile/' + this.enterprise + '/plugins/shopping_cart/buy'}); |
138 | - if( !this.visible ) $(this.cartElem).show(); | 154 | +// $(this.cartElem).show(); |
139 | } | 155 | } |
140 | var me = this; | 156 | var me = this; |
141 | $.ajax({ | 157 | $.ajax({ |
@@ -183,6 +199,14 @@ function Cart(config) { | @@ -183,6 +199,14 @@ function Cart(config) { | ||
183 | } | 199 | } |
184 | 200 | ||
185 | Cart.prototype.show = function() { | 201 | Cart.prototype.show = function() { |
202 | + $.ajax({ | ||
203 | + url: '/profile/'+ this.enterprise +'/plugins/shopping_cart/show', | ||
204 | + dataType: 'json', | ||
205 | + cache: false, | ||
206 | + error: function(ajax, status, errorThrown) { | ||
207 | + alert('Show - HTTP '+status+': '+errorThrown); | ||
208 | + } | ||
209 | + }); | ||
186 | this.visible = true; | 210 | this.visible = true; |
187 | this.contentBox.slideDown(500); | 211 | this.contentBox.slideDown(500); |
188 | $(".cart-toggle .str-show", this.cartElem).hide(); | 212 | $(".cart-toggle .str-show", this.cartElem).hide(); |
@@ -190,6 +214,14 @@ function Cart(config) { | @@ -190,6 +214,14 @@ function Cart(config) { | ||
190 | 214 | ||
191 | } | 215 | } |
192 | Cart.prototype.hide = function() { | 216 | Cart.prototype.hide = function() { |
217 | + $.ajax({ | ||
218 | + url: '/profile/'+ this.enterprise +'/plugins/shopping_cart/hide', | ||
219 | + dataType: 'json', | ||
220 | + cache: false, | ||
221 | + error: function(ajax, status, errorThrown) { | ||
222 | + alert('Hide - HTTP '+status+': '+errorThrown); | ||
223 | + } | ||
224 | + }); | ||
193 | this.visible = false; | 225 | this.visible = false; |
194 | this.contentBox.slideUp(500); | 226 | this.contentBox.slideUp(500); |
195 | $(".cart-toggle .str-show", this.cartElem).show(); | 227 | $(".cart-toggle .str-show", this.cartElem).show(); |
@@ -231,6 +263,7 @@ function Cart(config) { | @@ -231,6 +263,7 @@ function Cart(config) { | ||
231 | me.hide(); | 263 | me.hide(); |
232 | me.enterprise = null; | 264 | me.enterprise = null; |
233 | me.updateTotal(); | 265 | me.updateTotal(); |
266 | + me.empty = true; | ||
234 | }); | 267 | }); |
235 | } | 268 | } |
236 | }, | 269 | }, |