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 | 108 | end |
109 | 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 | 153 | private |
112 | 154 | |
113 | 155 | def validate_same_enterprise | ... | ... |
plugins/shopping_cart/public/cart.js
... | ... | @@ -6,13 +6,26 @@ function Cart(config) { |
6 | 6 | this.contentBox = $("#cart1 .cart-content"); |
7 | 7 | this.itemsBox = $("#cart1 .cart-items"); |
8 | 8 | this.items = {}; |
9 | + this.empty = !config.hasProducts; | |
9 | 10 | this.visible = false; |
10 | 11 | $(".cart-buy", this.cartElem).button({ icons: { primary: 'ui-icon-cart'} }); |
11 | - if (config.hasProducts) { | |
12 | + if (!this.empty) { | |
12 | 13 | $(this.cartElem).show(); |
13 | 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 | 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 | 76 | input.onchange = function() { |
64 | 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 | 82 | var liBg = li.css("background-color"); |
70 | 83 | li[0].style.backgroundColor = "#FF0"; |
71 | 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 | 89 | this.contentBox.hide(); |
75 | 90 | this.show(); |
76 | 91 | } |
92 | + this.empty = false; | |
77 | 93 | } |
78 | 94 | |
79 | 95 | Cart.prototype.updateQuantity = function(input, itemId, quantity) { |
... | ... | @@ -135,7 +151,7 @@ function Cart(config) { |
135 | 151 | if(!this.enterprise) { |
136 | 152 | this.enterprise = enterprise; |
137 | 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 | 156 | var me = this; |
141 | 157 | $.ajax({ |
... | ... | @@ -183,6 +199,14 @@ function Cart(config) { |
183 | 199 | } |
184 | 200 | |
185 | 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 | 210 | this.visible = true; |
187 | 211 | this.contentBox.slideDown(500); |
188 | 212 | $(".cart-toggle .str-show", this.cartElem).hide(); |
... | ... | @@ -190,6 +214,14 @@ function Cart(config) { |
190 | 214 | |
191 | 215 | } |
192 | 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 | 225 | this.visible = false; |
194 | 226 | this.contentBox.slideUp(500); |
195 | 227 | $(".cart-toggle .str-show", this.cartElem).show(); |
... | ... | @@ -231,6 +263,7 @@ function Cart(config) { |
231 | 263 | me.hide(); |
232 | 264 | me.enterprise = null; |
233 | 265 | me.updateTotal(); |
266 | + me.empty = true; | |
234 | 267 | }); |
235 | 268 | } |
236 | 269 | }, | ... | ... |