Commit 885502fc98104a3b68e1422412b03d9af571a510
1 parent
5faa5da5
Exists in
master
and in
29 other branches
shopping_cart: refactor to use orders and delivery plugins
Showing
45 changed files
with
1173 additions
and
1787 deletions
Show diff stats
plugins/shopping_cart/controllers/shopping_cart_plugin_controller.rb
1 | 1 | require 'base64' |
2 | 2 | |
3 | -class ShoppingCartPluginController < PublicController | |
3 | +class ShoppingCartPluginController < OrdersPluginController | |
4 | 4 | |
5 | 5 | include ShoppingCartPlugin::CartHelper |
6 | 6 | helper ShoppingCartPlugin::CartHelper |
7 | 7 | |
8 | - append_view_path File.join(File.dirname(__FILE__) + '/../views') | |
9 | - before_filter :login_required, :only => [] | |
10 | - | |
11 | - before_filter :login_required, :only => [] | |
12 | - | |
13 | 8 | def get |
14 | 9 | config = |
15 | 10 | if cart.nil? |
16 | - { :profile_id => nil, | |
11 | + { :profile_id => params[:profile_id], | |
17 | 12 | :has_products => false, |
18 | 13 | :visible => false, |
19 | 14 | :products => []} |
20 | 15 | else |
21 | - { :profile_id => cart[:profile_id], | |
16 | + { | |
17 | + :profile_id => cart[:profile_id], | |
18 | + :profile_short_name => cart_profile.short_name, | |
22 | 19 | :has_products => (cart[:items].keys.size > 0), |
23 | 20 | :visible => visible?, |
24 | - :products => products} | |
21 | + :products => products, | |
22 | + } | |
25 | 23 | end |
24 | + config[:has_previous_orders] = if cart_profile then previous_orders.first.present? else false end | |
26 | 25 | render :text => config.to_json |
27 | 26 | end |
28 | 27 | |
29 | 28 | def add |
30 | 29 | product = find_product(params[:id]) |
31 | - if product && profile = validate_same_profile(product) | |
32 | - self.cart = { :profile_id => profile.id, :items => {} } if self.cart.nil? | |
33 | - self.cart[:items][product.id] = 0 if self.cart[:items][product.id].nil? | |
34 | - self.cart[:items][product.id] += 1 | |
35 | - render :text => { | |
36 | - :ok => true, | |
37 | - :error => {:code => 0}, | |
38 | - :products => [{ | |
39 | - :id => product.id, | |
40 | - :name => product.name, | |
41 | - :price => get_price(product, profile.environment), | |
42 | - :description => product.description, | |
43 | - :picture => product.default_image(:minor), | |
44 | - :quantity => self.cart[:items][product.id] | |
45 | - }] | |
46 | - }.to_json | |
30 | + if product && (profile = validate_same_profile(product)) | |
31 | + self.cart = { :profile_id => profile.id, :items => {} } if self.cart.nil? | |
32 | + self.cart[:items][product.id] = 0 if self.cart[:items][product.id].nil? | |
33 | + self.cart[:items][product.id] += 1 | |
34 | + render :text => { | |
35 | + :ok => true, | |
36 | + :error => {:code => 0}, | |
37 | + :products => [{ | |
38 | + :id => product.id, | |
39 | + :name => product.name, | |
40 | + :price => get_price(product, profile.environment), | |
41 | + :description => product.description, | |
42 | + :picture => product.default_image(:minor), | |
43 | + :quantity => self.cart[:items][product.id] | |
44 | + }] | |
45 | + }.to_json | |
47 | 46 | end |
48 | 47 | end |
49 | 48 | |
... | ... | @@ -93,36 +92,56 @@ class ShoppingCartPluginController < PublicController |
93 | 92 | }.to_json |
94 | 93 | end |
95 | 94 | |
95 | + # override from OrdersPluginController | |
96 | + def repeat | |
97 | + unless params[:id].present? | |
98 | + @orders = previous_orders.last(5).reverse | |
99 | + @orders.each{ |o| o.enable_product_diff } | |
100 | + else | |
101 | + @order = cart_profile.orders.find params[:id] | |
102 | + self.cart = { profile_id: cart_profile.id, items: {} } | |
103 | + @order.items.each do |item| | |
104 | + next unless item.repeat_product and item.repeat_product.available | |
105 | + self.cart[:items][item.repeat_product.id] = item.quantity_consumer_ordered.to_i | |
106 | + end | |
107 | + self.cart[:repeat_order_id] = @order.id | |
108 | + | |
109 | + render json: { | |
110 | + products: products, | |
111 | + } | |
112 | + end | |
113 | + end | |
114 | + | |
96 | 115 | def buy |
116 | + @no_design_blocks = true | |
97 | 117 | @customer = user || Person.new |
98 | - if validate_cart_presence | |
99 | - @cart = cart | |
100 | - @profile = environment.profiles.find(cart[:profile_id]) | |
101 | - @settings = Noosfero::Plugin::Settings.new(@profile, ShoppingCartPlugin) | |
102 | - render :layout => false | |
118 | + return redirect_to request.referer || environment.top_url if self.cart.nil? | |
119 | + @settings = cart_profile.shopping_cart_settings | |
120 | + @cart = cart | |
121 | + @profile = cart_profile | |
122 | + @order = profile.sales.build consumer: user | |
123 | + | |
124 | + @order.supplier_delivery = profile.delivery_methods.find session[:cart][:last_delivery_option_id] rescue nil | |
125 | + if repeat_order_id = self.cart[:repeat_order_id] | |
126 | + repeat_order = cart_profile.orders.where(id: repeat_order_id).first | |
127 | + @order.consumer_delivery_data = repeat_order.consumer_delivery_data if repeat_order | |
103 | 128 | end |
104 | 129 | end |
105 | 130 | |
106 | 131 | def send_request |
107 | - register_order(params[:customer], self.cart[:items]) | |
132 | + order = register_order(params[:customer], self.cart[:items]) | |
108 | 133 | begin |
109 | - profile = environment.profiles.find(cart[:profile_id]) | |
110 | - ShoppingCartPlugin::Mailer.customer_notification(params[:customer], profile, self.cart[:items], params[:delivery_option]).deliver | |
111 | - ShoppingCartPlugin::Mailer.supplier_notification(params[:customer], profile, self.cart[:items], params[:delivery_option]).deliver | |
134 | + ShoppingCartPlugin::Mailer.customer_notification(order, self.cart[:items]).deliver | |
135 | + ShoppingCartPlugin::Mailer.supplier_notification(order, self.cart[:items]).deliver | |
136 | + session[:notice] = _('Your order has been sent successfully! You will receive a confirmation e-mail shortly.') | |
137 | + @success = true | |
138 | + @profile = cart_profile | |
139 | + session[:cart] ||= {} | |
140 | + session[:cart][:last_delivery_option_id] = order.supplier_delivery_id | |
112 | 141 | self.cart = nil |
113 | - render :text => { | |
114 | - :ok => true, | |
115 | - :message => _('Request sent successfully. Check your email.'), | |
116 | - :error => {:code => 0} | |
117 | - }.to_json | |
118 | - rescue ActiveRecord::ActiveRecordError | |
119 | - render :text => { | |
120 | - :ok => false, | |
121 | - :error => { | |
122 | - :code => 6, | |
123 | - :message => exception.message | |
124 | - } | |
125 | - }.to_json | |
142 | + rescue ActiveRecord::ActiveRecordError => exception | |
143 | + @success = false | |
144 | + @error = exception.message | |
126 | 145 | end |
127 | 146 | end |
128 | 147 | |
... | ... | @@ -168,35 +187,35 @@ class ShoppingCartPluginController < PublicController |
168 | 187 | end |
169 | 188 | end |
170 | 189 | |
171 | - def update_delivery_option | |
172 | - profile = environment.profiles.find(cart[:profile_id]) | |
173 | - settings = Noosfero::Plugin::Settings.new(profile, ShoppingCartPlugin) | |
174 | - delivery_price = settings.delivery_options[params[:delivery_option]] | |
175 | - delivery = Product.new(:name => params[:delivery_option], :price => delivery_price) | |
176 | - delivery.save(false) | |
177 | - items = self.cart[:items].clone | |
178 | - items[delivery.id] = 1 | |
179 | - total_price = get_total_on_currency(items, environment) | |
180 | - delivery.destroy | |
181 | - render :text => { | |
182 | - :ok => true, | |
183 | - :delivery_price => float_to_currency_cart(delivery_price, environment), | |
184 | - :total_price => total_price, | |
185 | - :message => _('Delivery option updated.'), | |
186 | - :error => {:code => 0} | |
187 | - }.to_json | |
190 | + def update_supplier_delivery | |
191 | + @profile = cart_profile | |
192 | + supplier_delivery = @profile.delivery_methods.find params[:order][:supplier_delivery_id] | |
193 | + order = build_order self.cart[:items], supplier_delivery | |
194 | + total_price = order.total_price | |
195 | + render json: { | |
196 | + ok: true, | |
197 | + delivery_price: float_to_currency_cart(supplier_delivery.cost(total_price), environment, unit: ''), | |
198 | + total_price: float_to_currency_cart(total_price, environment, unit: ''), | |
199 | + message: _('Delivery option updated.'), | |
200 | + error: {code: 0} | |
201 | + } | |
188 | 202 | end |
189 | 203 | |
190 | - private | |
204 | + # must be public | |
205 | + def profile | |
206 | + cart_profile | |
207 | + end | |
208 | + | |
209 | + protected | |
191 | 210 | |
192 | 211 | def validate_same_profile(product) |
193 | 212 | if self.cart && self.cart[:profile_id] && product.profile_id != self.cart[:profile_id] |
194 | 213 | render :text => { |
195 | 214 | :ok => false, |
196 | 215 | :error => { |
197 | - :code => 1, | |
198 | - :message => _("Can't join items from different enterprises.") | |
199 | - } | |
216 | + :code => 1, | |
217 | + :message => _("Your basket contains items from '%{profile_name}'. Please empty the basket or checkout before adding items from here.") % {profile_name: cart_profile.short_name} | |
218 | + } | |
200 | 219 | }.to_json |
201 | 220 | return nil |
202 | 221 | end |
... | ... | @@ -262,40 +281,48 @@ class ShoppingCartPluginController < PublicController |
262 | 281 | end |
263 | 282 | |
264 | 283 | def register_order(custumer, items) |
265 | - new_items = {} | |
266 | - items.each do |id, quantity| | |
284 | + products_list = {}; items.each do |id, quantity| | |
267 | 285 | product = Product.find(id) |
268 | 286 | price = product.price || 0 |
269 | - new_items[id] = {:quantity => quantity, :price => price, :name => product.name} | |
287 | + products_list[id] = {:quantity => quantity, :price => price, :name => product.name} | |
270 | 288 | end |
271 | - purchase_order = ShoppingCartPlugin::PurchaseOrder.new | |
272 | - purchase_order.seller = environment.profiles.find(cart[:profile_id]) | |
273 | - purchase_order.customer = user | |
274 | - purchase_order.status = ShoppingCartPlugin::PurchaseOrder::Status::OPENED | |
275 | - purchase_order.products_list = new_items | |
276 | - purchase_order.customer_delivery_option = params[:delivery_option] | |
277 | - purchase_order.customer_payment = params[:customer][:payment] | |
278 | - purchase_order.customer_change = params[:customer][:change] | |
279 | - purchase_order.customer_name = params[:customer][:name] | |
280 | - purchase_order.customer_email = params[:customer][:email] | |
281 | - purchase_order.customer_contact_phone = params[:customer][:contact_phone] | |
282 | - purchase_order.customer_address = params[:customer][:address] | |
283 | - purchase_order.customer_district = params[:customer][:district] | |
284 | - purchase_order.customer_city = params[:customer][:city] | |
285 | - purchase_order.customer_zip_code = params[:customer][:zip_code] | |
286 | - purchase_order.save! | |
287 | - end | |
288 | 289 | |
289 | - protected | |
290 | + order = OrdersPlugin::Sale.new | |
291 | + order.profile = environment.profiles.find(cart[:profile_id]) | |
292 | + order.supplier_delivery = profile.delivery_methods.find params[:order][:supplier_delivery_id] | |
293 | + order.session_id = session_id unless user | |
294 | + order.consumer = user | |
295 | + order.source = 'shopping_cart_plugin' | |
296 | + order.status = 'ordered' | |
297 | + order.products_list = products_list | |
298 | + order.consumer_data = params[:order][:consumer_data] | |
299 | + order.payment_data = params[:order][:payment_data] | |
300 | + order.consumer_delivery_data = params[:order][:consumer_delivery_data] | |
301 | + order.save! | |
302 | + | |
303 | + order | |
304 | + end | |
290 | 305 | |
291 | 306 | def cart |
292 | 307 | @cart ||= |
293 | 308 | begin |
294 | 309 | cookies[cookie_key] && YAML.load(Base64.decode64(cookies[cookie_key])) || nil |
295 | 310 | end |
311 | + # migrate from old attribute | |
312 | + @cart[:profile_id] ||= @cart.delete(:enterprise_id) if @cart and @cart[:enterprise_id].present? | |
296 | 313 | @cart |
297 | 314 | end |
298 | 315 | |
316 | + def cart_profile | |
317 | + profile_id = if params[:profile_id].present? then params[:profile_id] elsif cart then cart[:profile_id] end | |
318 | + @cart_profile ||= environment.profiles.find profile_id rescue nil | |
319 | + end | |
320 | + | |
321 | + # from OrdersPluginController | |
322 | + def supplier | |
323 | + cart_profile | |
324 | + end | |
325 | + | |
299 | 326 | def cart=(data) |
300 | 327 | @cart = data |
301 | 328 | end | ... | ... |
plugins/shopping_cart/controllers/shopping_cart_plugin_myprofile_controller.rb
1 | 1 | class ShoppingCartPluginMyprofileController < MyProfileController |
2 | - def edit | |
3 | - params[:settings] = treat_cart_options(params[:settings]) | |
4 | - | |
5 | - @settings = Noosfero::Plugin::Settings.new(profile, ShoppingCartPlugin, params[:settings]) | |
6 | - if request.post? | |
7 | - begin | |
8 | - @settings.save! | |
9 | - session[:notice] = _('Option updated successfully.') | |
10 | - rescue Exception => exception | |
11 | - session[:notice] = _('Option wasn\'t updated successfully.') | |
12 | - end | |
13 | - redirect_to :action => 'edit' | |
14 | - end | |
15 | - end | |
16 | - | |
17 | - def reports | |
18 | - utc_string = ' 00:00:00 UTC' | |
19 | - @from = params[:from] ? Time.parse(params[:from] + utc_string) : Time.now.utc.at_beginning_of_month | |
20 | - @to = params[:to] ? Time.parse(params[:to] + utc_string) : Time.now.utc | |
21 | - @status = !params[:filter_status].blank? ? params[:filter_status].to_i : nil | |
22 | - | |
23 | - condition = 'created_at >= ? AND created_at <= ?' | |
24 | - condition_parameters = [@from, @to+1.day] | |
25 | - if @status | |
26 | - condition += ' AND status = ?' | |
27 | - condition_parameters << @status | |
28 | - end | |
29 | 2 | |
30 | - conditions = [condition] + condition_parameters | |
31 | - @orders = profile.orders.find(:all, :conditions => conditions) | |
3 | + helper DeliveryPlugin::DisplayHelper | |
32 | 4 | |
33 | - @products = {} | |
34 | - @orders.each do |order| | |
35 | - order.products_list.each do |id, qp| | |
36 | - @products[id] ||= ShoppingCartPlugin::LineItem.new(id, qp[:name]) | |
37 | - @products[id].quantity += qp[:quantity] | |
5 | + def edit | |
6 | + params[:settings] = treat_cart_options(params[:settings]) | |
7 | + @settings = profile.shopping_cart_settings params[:settings] || {} | |
8 | + respond_to do |format| | |
9 | + format.js do | |
10 | + if request.post? | |
11 | + @success = @settings.save! | |
12 | + end | |
38 | 13 | end |
14 | + format.html | |
39 | 15 | end |
40 | 16 | end |
41 | 17 | |
42 | - def update_order_status | |
43 | - order = ShoppingCartPlugin::PurchaseOrder.find(params[:order_id].to_i) | |
44 | - order.status = params[:order_status].to_i | |
45 | - order.save! | |
46 | - redirect_to :action => 'reports', :from => params[:context_from], :to => params[:context_to], :filter_status => params[:context_status] | |
47 | - end | |
48 | - | |
49 | - private | |
18 | + protected | |
50 | 19 | |
51 | 20 | def treat_cart_options(settings) |
52 | 21 | return if settings.blank? |
53 | 22 | settings[:enabled] = settings[:enabled] == '1' |
54 | - settings[:delivery] = settings[:delivery] == '1' | |
55 | - settings[:free_delivery_price] = settings[:free_delivery_price].blank? ? nil : settings[:free_delivery_price].to_d | |
56 | - settings[:delivery_options] = treat_delivery_options(settings[:delivery_options]) | |
57 | 23 | settings |
58 | 24 | end |
59 | 25 | |
60 | - def treat_delivery_options(params) | |
61 | - result = {} | |
62 | - return result if params.nil? || params[:options].nil? | |
63 | - params[:options].size.times do |counter| | |
64 | - if params[:options][counter].present? && params[:prices][counter].present? | |
65 | - result[params[:options][counter]] = params[:prices][counter] | |
66 | - end | |
67 | - end | |
68 | - result | |
69 | - end | |
70 | 26 | end | ... | ... |
plugins/shopping_cart/db/migrate/20121022190819_move_fields_included_on_profiles_table_to_settings.rb
1 | 1 | class MoveFieldsIncludedOnProfilesTableToSettings < ActiveRecord::Migration |
2 | 2 | def self.up |
3 | 3 | Profile.find_each do |profile| |
4 | - settings = Noosfero::Plugin::Settings.new(profile, ShoppingCartPlugin) | |
4 | + settings = profile.shopping_cart_settings | |
5 | 5 | settings.enabled = profile.shopping_cart |
6 | 6 | settings.delivery = profile.shopping_cart_delivery |
7 | 7 | settings.delivery_price = profile.shopping_cart_delivery_price | ... | ... |
plugins/shopping_cart/db/migrate/20131226125124_move_shopping_cart_purchase_order_to_orders_plugin_order.rb
0 → 100644
... | ... | @@ -0,0 +1,86 @@ |
1 | +OrdersPlugin.send :remove_const, :Item if defined? OrdersPlugin::Item | |
2 | +OrdersPlugin.send :remove_const, :Order if defined? OrdersPlugin::Order | |
3 | + | |
4 | +class ShoppingCartPlugin::PurchaseOrder < Noosfero::Plugin::ActiveRecord | |
5 | + acts_as_having_settings :field => :data | |
6 | + | |
7 | + module Status | |
8 | + OPENED = 0 | |
9 | + CANCELED = 1 | |
10 | + CONFIRMED = 2 | |
11 | + SHIPPED = 3 | |
12 | + end | |
13 | +end | |
14 | + | |
15 | +class Profile | |
16 | + has_many :orders, :class_name => 'OrdersPlugin::Order' | |
17 | +end | |
18 | + | |
19 | +class OrdersPlugin::Item < Noosfero::Plugin::ActiveRecord | |
20 | + belongs_to :order, :class_name => 'OrdersPlugin::Order' | |
21 | +end | |
22 | +class OrdersPlugin::Order < Noosfero::Plugin::ActiveRecord | |
23 | + has_many :items, :class_name => 'OrdersPlugin::Item', :foreign_key => :order_id | |
24 | + | |
25 | + extend CodeNumbering::ClassMethods | |
26 | + code_numbering :code, :scope => proc{ self.profile.orders } | |
27 | +end | |
28 | + | |
29 | +StatusTransform = { | |
30 | + ShoppingCartPlugin::PurchaseOrder::Status::OPENED => 'ordered', | |
31 | + ShoppingCartPlugin::PurchaseOrder::Status::CONFIRMED => 'accepted', | |
32 | + ShoppingCartPlugin::PurchaseOrder::Status::CANCELED => 'cancelled', | |
33 | + ShoppingCartPlugin::PurchaseOrder::Status::SHIPPED => 'delivered', | |
34 | +} | |
35 | + | |
36 | +class MoveShoppingCartPurchaseOrderToOrdersPluginOrder < ActiveRecord::Migration | |
37 | + def self.up | |
38 | + OrdersPlugin::Order.record_timestamps = false | |
39 | + | |
40 | + ShoppingCartPlugin::PurchaseOrder.all(:order => 'created_at ASC').each do |purchase_order| | |
41 | + data = purchase_order.data | |
42 | + | |
43 | + order = OrdersPlugin::Order.new :profile_id => purchase_order.seller_id, :consumer_id => purchase_order.customer_id | |
44 | + | |
45 | + order.consumer_data = {} | |
46 | + ['contact_phone','name','email'].each do |prop| | |
47 | + order.consumer_data[prop.to_sym] = data[('customer_'+prop).to_sym] | |
48 | + end | |
49 | + | |
50 | + order.consumer_delivery_data = { | |
51 | + :name => data[:customer_delivery_option], | |
52 | + :address_line1 => data[:customer_address], | |
53 | + :address_line2 => data[:customer_district], | |
54 | + :postal_code => data[:customer_zip_code], | |
55 | + :state => data[:customer_state], | |
56 | + :country => 'Brasil' | |
57 | + } | |
58 | + order.supplier_delivery_data = {} | |
59 | + | |
60 | + data[:products_list].each do |id, data| | |
61 | + item = order.items.build :product_id => id, :name => data[:name], :quantity_consumer_ordered => data[:quantity], :price => data[:price] | |
62 | + item.order = order | |
63 | + end | |
64 | + | |
65 | + order.payment_data = { | |
66 | + :method => data[:customer_payment], | |
67 | + :change => data[:customer_change] | |
68 | + } | |
69 | + | |
70 | + order.status = StatusTransform[purchase_order.status] | |
71 | + | |
72 | + order.updated_at = purchase_order.updated_at | |
73 | + order.created_at = purchase_order.created_at | |
74 | + | |
75 | + order.save! | |
76 | + end | |
77 | + | |
78 | + # Leave table for registry | |
79 | + #drop_table :shopping_cart_plugin_purchase_orders | |
80 | + | |
81 | + OrdersPlugin::Order.record_timestamps = true | |
82 | + end | |
83 | + | |
84 | + def self.down | |
85 | + end | |
86 | +end | ... | ... |
plugins/shopping_cart/db/migrate/20150202122535_move_shopping_delivery_options_to_delivery_plugin.rb
0 → 100644
... | ... | @@ -0,0 +1,21 @@ |
1 | +class MoveShoppingDeliveryOptionsToDeliveryPlugin < ActiveRecord::Migration | |
2 | + def up | |
3 | + Enterprise.find_each batch_size: 20 do |enterprise| | |
4 | + settings = enterprise.shopping_cart_settings | |
5 | + next if settings.delivery_options.blank? | |
6 | + | |
7 | + free_over_price = settings.free_delivery_price | |
8 | + settings.delivery_options.each do |name, price| | |
9 | + enterprise.delivery_methods.create! name: name, fixed_cost: price.to_f, delivery_type: 'deliver', free_over_price: free_over_price | |
10 | + end | |
11 | + | |
12 | + settings.free_delivery_price = nil | |
13 | + settings.delivery_options = nil | |
14 | + enterprise.save! | |
15 | + end | |
16 | + end | |
17 | + | |
18 | + def down | |
19 | + say "this migration can't be reverted" | |
20 | + end | |
21 | +end | ... | ... |
plugins/shopping_cart/lib/ext/enterprise.rb
plugins/shopping_cart/lib/ext/person.rb
... | ... | @@ -0,0 +1,24 @@ |
1 | +require_dependency 'profile' | |
2 | + | |
3 | +class Profile | |
4 | + | |
5 | + def shopping_cart_settings attrs = {} | |
6 | + @shopping_cart_settings ||= Noosfero::Plugin::Settings.new self, ShoppingCartPlugin, attrs | |
7 | + attrs.each{ |a, v| @shopping_cart_settings.send "#{a}=", v } | |
8 | + @shopping_cart_settings | |
9 | + end | |
10 | + | |
11 | + def shopping_cart_enabled | |
12 | + self.shopping_cart_settings.enabled | |
13 | + end | |
14 | + | |
15 | + # may be customized by other profiles | |
16 | + def cart_order_supplier_notification_recipients | |
17 | + if self.contact_email.present? | |
18 | + [self.contact_email] | |
19 | + else | |
20 | + self.admins.collect(&:contact_email).select{ |email| email.present? } | |
21 | + end | |
22 | + end | |
23 | + | |
24 | +end | ... | ... |
plugins/shopping_cart/lib/shopping_cart_plugin.rb
1 | 1 | class ShoppingCartPlugin < Noosfero::Plugin |
2 | 2 | |
3 | - class << self | |
4 | - def plugin_name | |
3 | + def self.plugin_name | |
5 | 4 | "Shopping Basket" |
6 | - end | |
7 | - | |
8 | - def plugin_description | |
9 | - _("A shopping basket feature for enterprises") | |
10 | - end | |
11 | - | |
12 | - def delivery_default_setting | |
13 | - false | |
14 | - end | |
15 | - | |
16 | - def delivery_price_default_setting | |
17 | - 0 | |
18 | - end | |
19 | - | |
20 | - def delivery_options_default_setting | |
21 | - {} | |
22 | - end | |
23 | 5 | end |
24 | 6 | |
25 | - def add_to_cart_button(item) | |
26 | - profile = item.profile | |
27 | - settings = Noosfero::Plugin::Settings.new(profile, ShoppingCartPlugin) | |
28 | - if settings.enabled && item.available | |
29 | - lambda { | |
30 | - link_to(_('Add to basket'), "add:#{item.name}", | |
31 | - :class => 'cart-add-item', | |
32 | - :onclick => "Cart.addItem(#{item.id}, this); return false" | |
33 | - ) | |
34 | - } | |
35 | - end | |
7 | + def self.plugin_description | |
8 | + _("A shopping basket feature for enterprises") | |
36 | 9 | end |
37 | 10 | |
38 | - alias :product_info_extras :add_to_cart_button | |
39 | - alias :catalog_item_extras :add_to_cart_button | |
40 | - alias :asset_product_extras :add_to_cart_button | |
41 | - | |
42 | 11 | def stylesheet? |
43 | 12 | true |
44 | 13 | end |
... | ... | @@ -48,19 +17,45 @@ class ShoppingCartPlugin < Noosfero::Plugin |
48 | 17 | end |
49 | 18 | |
50 | 19 | def body_beginning |
51 | - expanded_template('cart.html.erb') | |
20 | + lambda do | |
21 | + extend ShoppingCartPlugin::CartHelper | |
22 | + render 'public/cart' unless cart_minimized | |
23 | + end | |
52 | 24 | end |
53 | 25 | |
54 | 26 | def control_panel_buttons |
55 | - settings = Noosfero::Plugin::Settings.new(context.profile, ShoppingCartPlugin) | |
56 | 27 | buttons = [] |
57 | 28 | if context.profile.enterprise? |
58 | 29 | buttons << { :title => _('Shopping basket'), :icon => 'shopping-cart-icon', :url => {:controller => 'shopping_cart_plugin_myprofile', :action => 'edit'} } |
59 | 30 | end |
60 | - if context.profile.enterprise? && settings.enabled | |
61 | - buttons << { :title => _('Purchase reports'), :icon => 'shopping-cart-purchase-report', :url => {:controller => 'shopping_cart_plugin_myprofile', :action => 'reports'} } | |
62 | - end | |
63 | 31 | |
64 | 32 | buttons |
65 | 33 | end |
34 | + | |
35 | + def add_to_cart_button item, options = {} | |
36 | + profile = item.profile | |
37 | + return unless profile.shopping_cart_enabled and item.available | |
38 | + lambda do | |
39 | + extend ShoppingCartPlugin::CartHelper | |
40 | + add_to_cart_button item, options | |
41 | + end | |
42 | + end | |
43 | + | |
44 | + alias :product_info_extras :add_to_cart_button | |
45 | + alias :catalog_item_extras :add_to_cart_button | |
46 | + alias :asset_product_extras :add_to_cart_button | |
47 | + | |
48 | + # We now think that it's not a good idea to have the basket in the same time. | |
49 | + #def catalog_autocomplete_item_extras product | |
50 | + # add_to_cart_button product, with_text: false | |
51 | + #end | |
52 | + | |
53 | + def catalog_search_extras_begin | |
54 | + return unless profile.shopping_cart_enabled | |
55 | + lambda do | |
56 | + extend ShoppingCartPlugin::CartHelper | |
57 | + content_tag 'li', render('public/cart'), :class => 'catalog-cart' | |
58 | + end | |
59 | + end | |
60 | + | |
66 | 61 | end | ... | ... |
plugins/shopping_cart/lib/shopping_cart_plugin/cart_helper.rb
1 | +require_dependency 'delivery_plugin/display_helper' | |
2 | + | |
1 | 3 | module ShoppingCartPlugin::CartHelper |
2 | 4 | |
3 | 5 | include ActionView::Helpers::NumberHelper |
4 | 6 | include ActionView::Helpers::TagHelper |
5 | 7 | |
8 | + include DeliveryPlugin::DisplayHelper | |
9 | + | |
10 | + def add_to_cart_button item, options = {} | |
11 | + label = if options[:with_text].nil? or options[:with_text] then _('Add to basket') else '' end | |
12 | + button_to_function 'cart', label, "Cart.addItem(#{item.id}, this)", class: 'cart-add-item', type: 'primary' | |
13 | + end | |
14 | + | |
15 | + def cart_applet | |
16 | + button_to_function 'cart', ' <span class="cart-qtty"></span>', "cart.toggle()", class: 'cart-applet-indicator', type: 'primary' | |
17 | + end | |
18 | + | |
19 | + def cart_minimized | |
20 | + @catalog_bar | |
21 | + end | |
22 | + | |
23 | + def repeat_checkout_order_button order | |
24 | + button_to_function :check, t('views.public.repeat.checkout'), 'cart.repeatCheckout(event, this)', 'data-order-id' => order.id, class: 'repeat-checkout-order' | |
25 | + end | |
26 | + | |
27 | + def repeat_choose_order_button order | |
28 | + button_to_function :edit, t('views.public.repeat.choose'), 'cart.repeatChoose(event, this)', 'data-order-id' => order.id, class: 'repeat-choose-order' | |
29 | + end | |
30 | + | |
6 | 31 | def sell_price(product) |
7 | 32 | return 0 if product.price.nil? |
8 | 33 | product.discount ? product.price_with_discount : product.price |
9 | 34 | end |
10 | 35 | |
11 | - def get_price(product, environment, quantity=1) | |
12 | - float_to_currency_cart(price_with_quantity(product,quantity), environment) | |
36 | + def get_price product, environment, quantity=1, options = {} | |
37 | + float_to_currency_cart price_with_quantity(product,quantity), environment, options | |
13 | 38 | end |
14 | 39 | |
15 | 40 | def price_with_quantity(product, quantity=1) |
... | ... | @@ -25,68 +50,28 @@ module ShoppingCartPlugin::CartHelper |
25 | 50 | float_to_currency_cart(get_total(items), environment) |
26 | 51 | end |
27 | 52 | |
28 | - def items_table(items, profile, delivery_option = nil, by_mail = false) | |
29 | - environment = profile.environment | |
30 | - settings = Noosfero::Plugin::Settings.new(profile, ShoppingCartPlugin) | |
31 | - items = items.to_a | |
32 | - | |
33 | - quantity_opts = { :class => 'cart-table-quantity' } | |
34 | - quantity_opts.merge!({:align => 'center'}) if by_mail | |
35 | - price_opts = {:class => 'cart-table-price'} | |
36 | - price_opts.merge!({:align => 'right'}) if by_mail | |
37 | - items.sort! {|a, b| Product.find(a.first).name <=> Product.find(b.first).name} | |
38 | - | |
39 | - if settings.delivery | |
40 | - if settings.free_delivery_price && get_total(items) >= settings.free_delivery_price | |
41 | - delivery = Product.new(:name => _('Free delivery'), :price => 0) | |
42 | - else | |
43 | - delivery = Product.new(:name => delivery_option || _('Delivery'), :price => settings.delivery_options[delivery_option]) | |
44 | - end | |
45 | - delivery.save(false) | |
46 | - items << [delivery.id, ''] | |
53 | + def build_order items, delivery_method = nil | |
54 | + @order = @profile.sales.build | |
55 | + items.each do |product_id, quantity| | |
56 | + @order.items.build product_id: product_id, quantity_consumer_ordered: quantity | |
47 | 57 | end |
58 | + @order.supplier_delivery = delivery_method | |
59 | + @order | |
60 | + end | |
48 | 61 | |
49 | - table = '<table id="cart-items-table" cellpadding="2" cellspacing="0" | |
50 | - border="'+(by_mail ? '1' : '0')+'" | |
51 | - style="'+(by_mail ? 'border-collapse:collapse' : '')+'">' + | |
52 | - content_tag('tr', | |
53 | - content_tag('th', _('Item name')) + | |
54 | - content_tag('th', by_mail ? ' # ' : '#') + | |
55 | - content_tag('th', c_('Price')) | |
56 | - ) + | |
57 | - items.map do |id, quantity| | |
58 | - product = Product.find(id) | |
59 | - name_opts = {} | |
60 | - is_delivery = quantity.kind_of?(String) | |
61 | - if is_delivery | |
62 | - price_opts.merge!({:id => 'delivery-price'}) | |
63 | - name_opts.merge!({:id => 'delivery-name'}) | |
64 | - end | |
65 | - content_tag('tr', | |
66 | - content_tag('td', product.name, name_opts) + | |
67 | - content_tag('td', quantity, quantity_opts ) + | |
68 | - content_tag('td', get_price(product, environment, quantity), price_opts) | |
69 | - ) | |
70 | - end.join("\n") | |
71 | - | |
72 | - total = get_total_on_currency(items, environment) | |
73 | - delivery.destroy if settings.delivery | |
74 | - | |
75 | - table + | |
76 | - content_tag('th', _('Total:'), :colspan => 2, :class => 'cart-table-total-label') + | |
77 | - content_tag('th', total, :class => 'cart-table-total-value') + | |
78 | - '</table>' | |
62 | + def items_table(items, profile, delivery_method = nil, by_mail = false) | |
63 | + # partial key needed in mailer context | |
64 | + render partial: 'shopping_cart_plugin/items', locals: {order: build_order(items, delivery_method), by_mail: by_mail} | |
79 | 65 | end |
80 | 66 | |
81 | - def float_to_currency_cart(value, environment) | |
82 | - number_to_currency(value, :unit => environment.currency_unit, :separator => environment.currency_separator, :delimiter => environment.currency_delimiter, :precision => 2, :format => "%u%n") | |
67 | + def float_to_currency_cart value, environment, _options = {} | |
68 | + options = {:unit => environment.currency_unit, :separator => environment.currency_separator, :delimiter => environment.currency_delimiter, :precision => 2, :format => "%u%n"} | |
69 | + options.merge! _options | |
70 | + number_to_currency value, options | |
83 | 71 | end |
84 | 72 | |
85 | - def select_delivery_options(options, environment) | |
86 | - result = options.map do |option, price| | |
87 | - ["#{option} (#{float_to_currency_cart(price, environment)})", option] | |
88 | - end | |
89 | - result << ["#{_('Delivery')} (#{float_to_currency_cart(0, environment)})", 'delivery'] if result.empty? | |
90 | - result | |
73 | + def options_for_payment | |
74 | + options_for_select OrdersPlugin::Order::PaymentMethods.map{ |key, text| [text.call, key] } | |
91 | 75 | end |
76 | + | |
92 | 77 | end | ... | ... |
plugins/shopping_cart/lib/shopping_cart_plugin/mailer.rb
... | ... | @@ -2,38 +2,38 @@ class ShoppingCartPlugin::Mailer < Noosfero::Plugin::MailerBase |
2 | 2 | |
3 | 3 | include ShoppingCartPlugin::CartHelper |
4 | 4 | |
5 | - def customer_notification(customer, supplier, items, delivery_option) | |
6 | - domain = supplier.hostname || supplier.environment.default_hostname | |
7 | - @customer = customer | |
8 | - @supplier = supplier | |
5 | + helper ShoppingCartPlugin::CartHelper | |
6 | + | |
7 | + attr_accessor :environment, :profile | |
8 | + | |
9 | + def customer_notification order, items | |
10 | + domain = order.profile.hostname || order.profile.environment.default_hostname | |
11 | + self.profile = order.profile | |
12 | + self.environment = order.profile.environment | |
13 | + @order = order | |
9 | 14 | @items = items |
10 | - @environment = supplier.environment | |
11 | - @helper = self | |
12 | - @delivery_option = delivery_option | |
13 | 15 | |
14 | 16 | mail( |
15 | - to: customer[:email], | |
17 | + to: @order.consumer_data[:email], | |
16 | 18 | from: 'no-reply@' + domain, |
17 | - reply_to: supplier.contact_email, | |
18 | - subject: _("[%s] Your buy request was performed successfully.") % supplier[:name], | |
19 | + reply_to: @order.profile.cart_order_supplier_notification_recipients, | |
20 | + subject: _("[%s] Your buy request was performed successfully.") % @order.profile.short_name(nil), | |
19 | 21 | content_type: 'text/html' |
20 | 22 | ) |
21 | 23 | end |
22 | 24 | |
23 | - def supplier_notification(customer, supplier, items, delivery_option) | |
24 | - domain = supplier.environment.default_hostname | |
25 | - @customer = customer | |
26 | - @supplier = supplier | |
25 | + def supplier_notification order, items | |
26 | + domain = order.profile.environment.default_hostname | |
27 | + self.profile = order.profile | |
28 | + self.environment = order.profile.environment | |
29 | + @order = order | |
27 | 30 | @items = items |
28 | - @environment = supplier.environment | |
29 | - @helper = self | |
30 | - @delivery_option = delivery_option | |
31 | 31 | |
32 | 32 | mail( |
33 | - to: supplier.contact_email, | |
33 | + to: @order.profile.cart_order_supplier_notification_recipients, | |
34 | 34 | from: 'no-reply@' + domain, |
35 | - reply_to: customer[:email], | |
36 | - subject: _("[%s] You have a new buy request from %s.") % [supplier.environment.name, customer[:name]], | |
35 | + reply_to: @order.consumer_data[:email], | |
36 | + subject: _("[%s] You have a new buy request from %s.") % [order.profile.environment.name, @order.consumer_data[:name]], | |
37 | 37 | content_type: 'text/html' |
38 | 38 | ) |
39 | 39 | end | ... | ... |
plugins/shopping_cart/lib/shopping_cart_plugin/purchase_order.rb
... | ... | @@ -1,43 +0,0 @@ |
1 | -class ShoppingCartPlugin::PurchaseOrder < Noosfero::Plugin::ActiveRecord | |
2 | - | |
3 | - belongs_to :customer, :class_name => "Profile" | |
4 | - belongs_to :seller, :class_name => "Profile" | |
5 | - | |
6 | - validates_presence_of :status, :seller | |
7 | - | |
8 | - attr_accessible :seller, :status, :products_list | |
9 | - | |
10 | - acts_as_having_settings :field => :data | |
11 | - | |
12 | - settings_items :products_list, :type => Array, :default => {} | |
13 | - settings_items :customer_name, :type => String | |
14 | - settings_items :customer_email, :type => String | |
15 | - settings_items :customer_contact_phone, :type => String | |
16 | - settings_items :customer_address, :type => String | |
17 | - settings_items :customer_district, :type => String | |
18 | - settings_items :customer_city, :type => String | |
19 | - settings_items :customer_zip_code, :type => String | |
20 | - settings_items :customer_delivery_option, :type => String | |
21 | - settings_items :customer_payment, :type => String | |
22 | - settings_items :customer_change, :type => String | |
23 | - | |
24 | - before_create do |order| | |
25 | - order.created_at = Time.now.utc | |
26 | - order.updated_at = Time.now.utc | |
27 | - end | |
28 | - | |
29 | - before_update do |order| | |
30 | - order.updated_at = Time.now.utc | |
31 | - end | |
32 | - | |
33 | - module Status | |
34 | - OPENED = 0 | |
35 | - CANCELED = 1 | |
36 | - CONFIRMED = 2 | |
37 | - SHIPPED = 3 | |
38 | - | |
39 | - def self.name | |
40 | - [_('Opened'), _('Canceled'), _('Confirmed'), _('Shipped')] | |
41 | - end | |
42 | - end | |
43 | -end |
plugins/shopping_cart/po/de/shopping_cart.po
... | ... | @@ -6,8 +6,8 @@ |
6 | 6 | # |
7 | 7 | msgid "" |
8 | 8 | msgstr "" |
9 | -"Project-Id-Version: 1.1-166-gaf47713\n" | |
10 | -"POT-Creation-Date: 2015-06-01 17:26-0300\n" | |
9 | +"Project-Id-Version: 1.0-690-gcb6e853\n" | |
10 | +"POT-Creation-Date: 2015-03-05 12:09-0300\n" | |
11 | 11 | "PO-Revision-Date: 2015-02-23 11:36+0200\n" |
12 | 12 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
13 | 13 | "Language-Team: German <https://hosted.weblate.org/projects/noosfero/plugin-" | ... | ... |
plugins/shopping_cart/po/es/shopping_cart.po
... | ... | @@ -5,8 +5,8 @@ |
5 | 5 | # |
6 | 6 | msgid "" |
7 | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.1-166-gaf47713\n" | |
9 | -"POT-Creation-Date: 2015-06-01 17:26-0300\n" | |
8 | +"Project-Id-Version: 1.0-690-gcb6e853\n" | |
9 | +"POT-Creation-Date: 2015-03-05 12:09-0300\n" | |
10 | 10 | "PO-Revision-Date: 2015-02-23 11:35+0200\n" |
11 | 11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
12 | 12 | "Language-Team: Spanish <https://hosted.weblate.org/projects/noosfero/plugin-" | ... | ... |
plugins/shopping_cart/po/fr/shopping_cart.po
... | ... | @@ -4,9 +4,9 @@ |
4 | 4 | # , 2009. |
5 | 5 | msgid "" |
6 | 6 | msgstr "" |
7 | -"Project-Id-Version: 1.1-166-gaf47713\n" | |
7 | +"Project-Id-Version: 1.0-690-gcb6e853\n" | |
8 | 8 | "Report-Msgid-Bugs-To: \n" |
9 | -"POT-Creation-Date: 2015-06-01 17:26-0300\n" | |
9 | +"POT-Creation-Date: 2015-03-05 12:09-0300\n" | |
10 | 10 | "PO-Revision-Date: 2015-03-07 10:49+0200\n" |
11 | 11 | "Last-Translator: Tuux <tuxa@galaxie.eu.org>\n" |
12 | 12 | "Language-Team: French <https://hosted.weblate.org/projects/noosfero/plugin-" | ... | ... |
plugins/shopping_cart/po/hy/shopping_cart.po
... | ... | @@ -5,8 +5,8 @@ |
5 | 5 | # |
6 | 6 | msgid "" |
7 | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.1-166-gaf47713\n" | |
9 | -"POT-Creation-Date: 2015-06-01 17:26-0300\n" | |
8 | +"Project-Id-Version: 1.0-690-gcb6e853\n" | |
9 | +"POT-Creation-Date: 2015-03-05 12:09-0300\n" | |
10 | 10 | "PO-Revision-Date: 2015-02-23 11:37+0200\n" |
11 | 11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
12 | 12 | "Language-Team: Armenian <https://hosted.weblate.org/projects/noosfero/plugin-" | ... | ... |
plugins/shopping_cart/po/pt/shopping_cart.po
... | ... | @@ -11,12 +11,12 @@ |
11 | 11 | # |
12 | 12 | msgid "" |
13 | 13 | msgstr "" |
14 | -"Project-Id-Version: 1.1-166-gaf47713\n" | |
15 | -"POT-Creation-Date: 2015-06-01 17:26-0300\n" | |
16 | -"PO-Revision-Date: 2015-02-23 11:36+0200\n" | |
14 | +"Project-Id-Version: 1.0-690-gcb6e853\n" | |
15 | +"POT-Creation-Date: 2015-03-05 12:09-0300\n" | |
16 | +"PO-Revision-Date: 2015-06-12 11:29-0300\n" | |
17 | 17 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
18 | -"Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero/" | |
19 | -"plugin-shopping-cart/pt/>\n" | |
18 | +"Language-Team: Portuguese <https://hosted.weblate.org/projects/noosfero" | |
19 | +"/plugin-shopping-cart/pt/>\n" | |
20 | 20 | "Language: pt\n" |
21 | 21 | "MIME-Version: 1.0\n" |
22 | 22 | "Content-Type: text/plain; charset=UTF-8\n" |
... | ... | @@ -65,6 +65,18 @@ msgstr "Frete grátis" |
65 | 65 | msgid "Delivery" |
66 | 66 | msgstr "Entrega" |
67 | 67 | |
68 | +#: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/edit.html.erb:7 | |
69 | +msgid "Delivery or pickup" | |
70 | +msgstr "Forma de retirada ou entrega" | |
71 | + | |
72 | +#: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/edit.html.erb:7 | |
73 | +msgid "Deliveries or pickups" | |
74 | +msgstr "Formas de retirada ou entrega" | |
75 | + | |
76 | +#: plugins/delivery/views/delivery_plugin/_order_select.html.slim | |
77 | +msgid "Instructions" | |
78 | +msgstr "Instruções" | |
79 | + | |
68 | 80 | #: plugins/shopping_cart/lib/shopping_cart_plugin/cart_helper.rb:53 |
69 | 81 | msgid "Item name" |
70 | 82 | msgstr "Nome do item" |
... | ... | @@ -86,6 +98,10 @@ msgstr "[%s] Você tem um novo pedido de compra de %s." |
86 | 98 | msgid "Request sent successfully. Check your email." |
87 | 99 | msgstr "Requisição enviada com sucesso. Cheque seu email." |
88 | 100 | |
101 | +#: plugins/shopping_cart/controllers/shopping_cart_plugin_controller.rb:115 | |
102 | +msgid "Your order has been sent successfully! You will receive a confirmation e-mail shortly." | |
103 | +msgstr "Seu pedido foi enviado com sucesso! Você receberá uma confirmação em breve." | |
104 | + | |
89 | 105 | #: plugins/shopping_cart/controllers/shopping_cart_plugin_controller.rb:138 |
90 | 106 | msgid "Basket displayed." |
91 | 107 | msgstr "Cesto exibido." |
... | ... | @@ -134,18 +150,15 @@ msgstr "Opção foi atualizada com sucesso." |
134 | 150 | msgid "Option wasn't updated successfully." |
135 | 151 | msgstr "Opção não foi atualizada com sucesso." |
136 | 152 | |
137 | -#: plugins/shopping_cart/views/shopping_cart_plugin_profile/buy.html.erb:6 | |
138 | 153 | #: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_orders_list.html.erb:35 |
139 | 154 | #: plugins/shopping_cart/views/shopping_cart_plugin/buy.html.erb:5 |
140 | 155 | msgid "Name" |
141 | 156 | msgstr "Nome" |
142 | 157 | |
143 | -#: plugins/shopping_cart/views/shopping_cart_plugin_profile/buy.html.erb:10 | |
144 | 158 | #: plugins/shopping_cart/views/shopping_cart_plugin/buy.html.erb:13 |
145 | -msgid "Delivery Address" | |
146 | -msgstr "Endereço de Entrega" | |
159 | +msgid "Delivery or pickup method" | |
160 | +msgstr "Forma de entrega ou retirada" | |
147 | 161 | |
148 | -#: plugins/shopping_cart/views/shopping_cart_plugin_profile/buy.html.erb:16 | |
149 | 162 | #: plugins/shopping_cart/views/shopping_cart_plugin/buy.html.erb:22 |
150 | 163 | msgid "Send buy request" |
151 | 164 | msgstr "Enviar pedido de compra" |
... | ... | @@ -176,10 +189,9 @@ msgstr "Estado" |
176 | 189 | msgid "E-mail" |
177 | 190 | msgstr "E-mail" |
178 | 191 | |
179 | -#: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_orders_list.html.erb:35 | |
180 | -#: plugins/shopping_cart/views/shopping_cart_plugin/buy.html.erb:8 | |
181 | -msgid "Delivery option" | |
182 | -msgstr "Opção de entrega" | |
192 | +#: plugins/shopping_cart/views/shopping_cart_plugin/buy.html.erb:9 | |
193 | +msgid "Personal identification" | |
194 | +msgstr "Identificação pessoal" | |
183 | 195 | |
184 | 196 | #: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_orders_list.html.erb:35 |
185 | 197 | #: plugins/shopping_cart/views/shopping_cart_plugin/mailer/customer_notification.html.erb:20 |
... | ... | @@ -188,12 +200,20 @@ msgstr "Opção de entrega" |
188 | 200 | msgid "Payment" |
189 | 201 | msgstr "Pagamento" |
190 | 202 | |
203 | +#: plugins/shopping_cart/views/shopping_cart_plugin/buy.html.erb:9 | |
204 | +msgid "Payment's method" | |
205 | +msgstr "Forma de pagamento" | |
206 | + | |
191 | 207 | #: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_orders_list.html.erb:35 |
192 | 208 | #: plugins/shopping_cart/views/shopping_cart_plugin/mailer/customer_notification.html.erb:22 |
193 | 209 | #: plugins/shopping_cart/views/shopping_cart_plugin/mailer/supplier_notification.html.erb:20 |
194 | 210 | #: plugins/shopping_cart/views/shopping_cart_plugin/buy.html.erb:10 |
195 | 211 | msgid "shopping_cart|Change" |
196 | -msgstr "Troco" | |
212 | +msgstr "Troco para" | |
213 | + | |
214 | +#: plugins/shopping_cart/views/shopping_cart_plugin/buy.html.erb:10 | |
215 | +msgid "Your Order" | |
216 | +msgstr "Seu Pedido" | |
197 | 217 | |
198 | 218 | #: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_products_list.html.erb:7 |
199 | 219 | msgid "Quantity" |
... | ... | @@ -303,42 +323,30 @@ msgid "Hi %s!" |
303 | 323 | msgstr "Olá %s!" |
304 | 324 | |
305 | 325 | #: plugins/shopping_cart/views/shopping_cart_plugin/mailer/customer_notification.html.erb:10 |
306 | -msgid "This is a notification e-mail about your buy request on %s." | |
307 | -msgstr "Esse é um email de notificação sobre o seu pedido de compra em %s." | |
326 | +msgid "This is a notification e-mail about your buy request on the enterprise %s." | |
327 | +msgstr "Esse é um email de notificação sobre o seu pedido de compra no empreendimento %s." | |
308 | 328 | |
309 | 329 | #: plugins/shopping_cart/views/shopping_cart_plugin/mailer/customer_notification.html.erb:11 |
310 | 330 | msgid "" |
311 | -"The supplier already received your buy request and may contact you for " | |
331 | +"The enterprise already received your buy request and will contact you for " | |
312 | 332 | "confirmation." |
313 | 333 | msgstr "" |
314 | -"O fornecedor já recebeu o seu pedido de compra e deve te contactar para " | |
334 | +"O empreendimento já recebeu o seu pedido de compra e entrará em contato para " | |
315 | 335 | "confirmação." |
316 | 336 | |
317 | 337 | #: plugins/shopping_cart/views/shopping_cart_plugin/mailer/customer_notification.html.erb:12 |
318 | -msgid "If you have any doubts, contact us at: %s" | |
319 | -msgstr "Se você tem alguma dúvida, nos contacte em: %s" | |
338 | +msgid "If you have any doubts about your order, write to us at: %s." | |
339 | +msgstr "Se você tem alguma dúvida sobre o seu pedido, nos escreva: %s." | |
320 | 340 | |
321 | 341 | #: plugins/shopping_cart/views/shopping_cart_plugin/mailer/customer_notification.html.erb:13 |
322 | -msgid "Please check if your information below is correct:" | |
323 | -msgstr "Por favor cheque se suas informações abaixo estão corretas:" | |
342 | +msgid "Review below the informations of your order:" | |
343 | +msgstr "Abaixo, revise as informações do seu pedido:" | |
324 | 344 | |
325 | 345 | #: plugins/shopping_cart/views/shopping_cart_plugin/mailer/customer_notification.html.erb:19 |
326 | 346 | #: plugins/shopping_cart/views/shopping_cart_plugin/mailer/supplier_notification.html.erb:17 |
327 | 347 | msgid "Phone number" |
328 | 348 | msgstr "Telefone" |
329 | 349 | |
330 | -#: plugins/shopping_cart/views/shopping_cart_plugin/mailer/customer_notification.html.erb:20 | |
331 | -#: plugins/shopping_cart/views/shopping_cart_plugin/mailer/supplier_notification.html.erb:18 | |
332 | -#: plugins/shopping_cart/views/shopping_cart_plugin/buy.html.erb:9 | |
333 | -msgid "Money" | |
334 | -msgstr "Dinheiro" | |
335 | - | |
336 | -#: plugins/shopping_cart/views/shopping_cart_plugin/mailer/customer_notification.html.erb:20 | |
337 | -#: plugins/shopping_cart/views/shopping_cart_plugin/mailer/supplier_notification.html.erb:18 | |
338 | -#: plugins/shopping_cart/views/shopping_cart_plugin/buy.html.erb:9 | |
339 | -msgid "shopping_cart|Check" | |
340 | -msgstr "Cheque" | |
341 | - | |
342 | 350 | #: plugins/shopping_cart/views/shopping_cart_plugin/mailer/customer_notification.html.erb:47 |
343 | 351 | msgid "Here are the products you bought:" |
344 | 352 | msgstr "Aqui estão os produtos que você pediu:" |
... | ... | @@ -368,3 +376,17 @@ msgstr "E aqui estão os itens pedidos por esse consumidor:" |
368 | 376 | msgid "If there are any problems with this email contact the admin of %s." |
369 | 377 | msgstr "" |
370 | 378 | "Se houver algum problema com esse email contacte o administrador de %s." |
379 | + | |
380 | +#: plugins/shopping_cart/views/shopping_cart_plugin/buy.html.erb:15 | |
381 | +msgid "Address completion" | |
382 | +msgstr "Complemento (p.ex. apto)" | |
383 | + | |
384 | +#: | |
385 | +msgid "repeat order" | |
386 | +msgstr "repetir pedido" | |
387 | + | |
388 | +#: plugins/shopping_cart/views/shopping_cart_plugin/buy.html.erb | |
389 | +msgid "haven't finished yet: back to shopping" | |
390 | +msgstr "ainda não concluí: voltar às compras" | |
391 | + | |
392 | + | ... | ... |
plugins/shopping_cart/po/ru/shopping_cart.po
... | ... | @@ -5,8 +5,8 @@ |
5 | 5 | # |
6 | 6 | msgid "" |
7 | 7 | msgstr "" |
8 | -"Project-Id-Version: 1.1-166-gaf47713\n" | |
9 | -"POT-Creation-Date: 2015-06-01 17:26-0300\n" | |
8 | +"Project-Id-Version: 1.0-690-gcb6e853\n" | |
9 | +"POT-Creation-Date: 2015-03-05 12:09-0300\n" | |
10 | 10 | "PO-Revision-Date: 2015-02-23 11:36+0200\n" |
11 | 11 | "Last-Translator: Michal Čihař <michal@cihar.com>\n" |
12 | 12 | "Language-Team: Russian <https://hosted.weblate.org/projects/noosfero/plugin-" |
... | ... | @@ -15,8 +15,8 @@ msgstr "" |
15 | 15 | "MIME-Version: 1.0\n" |
16 | 16 | "Content-Type: text/plain; charset=UTF-8\n" |
17 | 17 | "Content-Transfer-Encoding: 8bit\n" |
18 | -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" | |
19 | -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" | |
18 | +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" | |
19 | +"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" | |
20 | 20 | "X-Generator: Weblate 2.3-dev\n" |
21 | 21 | |
22 | 22 | #: plugins/shopping_cart/lib/shopping_cart_plugin.rb:9 | ... | ... |
plugins/shopping_cart/public/buy.js
1 | -jQuery(document).ready(function(){ | |
2 | - jQuery("#cart-request-form").validate({ | |
3 | - submitHandler: function(form) { | |
4 | - jQuery(form).find('input.submit').attr('disabled', true); | |
5 | - jQuery('#cboxLoadingOverlay').show().addClass('loading'); | |
6 | - jQuery('#cboxLoadingGraphic').show().addClass('loading'); | |
7 | - } | |
8 | - }); | |
9 | -}); | |
1 | +shopping_cart.buy = { | |
10 | 2 | |
11 | -jQuery('#delivery_option').change(function(){ | |
12 | - jQuery('#cboxLoadingGraphic').show(); | |
13 | - me = this; | |
14 | - profile = jQuery(me).attr('data-profile-identifier'); | |
15 | - option = jQuery(me).val(); | |
16 | - jQuery.ajax({ | |
17 | - url: '/plugin/shopping_cart/update_delivery_option', | |
18 | - dataType: "json", | |
19 | - data: 'delivery_option='+option, | |
20 | - success: function(data, st, ajax) { | |
21 | - jQuery('#delivery-price').text(data.delivery_price); | |
22 | - jQuery('.cart-table-total-value').text(data.total_price); | |
23 | - jQuery('#delivery-name').text(option); | |
24 | - jQuery('#cboxLoadingGraphic').hide(); | |
25 | - }, | |
26 | - error: function(ajax, st, errorThrown) { | |
27 | - alert('Update delivery option - HTTP '+st+': '+errorThrown); | |
28 | - }, | |
29 | - }); | |
30 | -}); | |
3 | + validate: function() { | |
4 | + $("#cart-request-form").validate({ | |
5 | + submitHandler: function(form) { | |
6 | + $(form).find('input.submit').attr('disabled', true); | |
7 | + $('#cboxLoadingOverlay').show().addClass('loading'); | |
8 | + $('#cboxLoadingGraphic').show().addClass('loading'); | |
9 | + } | |
10 | + }); | |
11 | + }, | |
12 | + | |
13 | + update_delivery: function () { | |
14 | + $('#cboxLoadingGraphic').show(); | |
15 | + var me = $(this); | |
16 | + var profile = me.attr('data-profile-identifier'); | |
17 | + var id = me.val(); | |
18 | + var name = me.find('option:selected').attr('data-label'); | |
19 | + $.ajax({ | |
20 | + url: '/plugin/shopping_cart/update_supplier_delivery', | |
21 | + dataType: "json", | |
22 | + data: 'order[supplier_delivery_id]='+id, | |
23 | + success: function(data, st, ajax) { | |
24 | + $('#delivery-price').text(data.delivery_price); | |
25 | + $('.cart-table-total-value').text(data.total_price); | |
26 | + $('#delivery-name').text(name); | |
27 | + $('#cboxLoadingGraphic').hide(); | |
28 | + display_notice(data.message) | |
29 | + }, | |
30 | + error: function(ajax, st, errorThrown) { | |
31 | + alert('Update delivery option - HTTP '+st+': '+errorThrown); | |
32 | + }, | |
33 | + }); | |
34 | + }, | |
35 | + | |
36 | + update_payment: function() { | |
37 | + var payment = $(this) | |
38 | + var form = $(payment.get(0).form) | |
39 | + var changeField = form.find('#order_payment_data_change').parents('.form-group'); | |
40 | + var method = payment.val() == 'money' ? 'slideDown' : 'slideUp'; | |
41 | + changeField[method]('fast'); | |
42 | + }, | |
43 | +} | |
44 | + | |
45 | +$(document).ready(shopping_cart.buy.validate) | |
46 | +$('#order_supplier_delivery_id').on('change keyup', shopping_cart.buy.update_delivery) | |
47 | +$('#order_payment_data_method').on('change keyup', shopping_cart.buy.update_payment) | |
31 | 48 | |
32 | -jQuery('#customer_payment').change(function(){ | |
33 | - jQuery(this).closest('.formfieldline').next().slideToggle('fast'); | |
34 | -}); | ... | ... |
plugins/shopping_cart/public/cart.js
1 | +shopping_cart = { | |
2 | +} | |
3 | + | |
1 | 4 | function Cart(config) { |
2 | 5 | var $ = jQuery; |
6 | + config.minimized = Cart.minimized; | |
3 | 7 | Cart.instance = this; // this may be a list on the future; |
4 | - this.cartElem = $("#cart1")[0]; | |
8 | + this.cartElem = $("#cart1"); | |
5 | 9 | this.cartElem.cartObj = this; |
6 | - this.contentBox = $("#cart1 .cart-content"); | |
10 | + this.contentBox = (config.minimized) ? $("#cart1 .cart-inner") : $("#cart1 .cart-inner .cart-content"); | |
7 | 11 | this.itemsBox = $("#cart1 .cart-items"); |
12 | + this.profileId = config.profile_id; | |
8 | 13 | this.items = {}; |
14 | + this.products = config.products; | |
9 | 15 | this.empty = !config.has_products; |
16 | + this.minimized = config.minimized; | |
17 | + this.hasPreviousOrders = config.has_previous_orders; | |
10 | 18 | this.visible = false; |
19 | + this.itemTemplate = _.template(jQuery('#cart-item-template').html()); | |
20 | + $("#cart-profile-name").text(config.profile_short_name); | |
11 | 21 | $(".cart-buy", this.cartElem).button({ icons: { primary: 'ui-icon-cart'} }); |
12 | - if (!this.empty) { | |
13 | - $(this.cartElem).show(); | |
14 | - this.visible = config.visible; | |
15 | - this.addToList(config.products, true) | |
16 | - } | |
22 | + this.load() | |
17 | 23 | } |
18 | 24 | |
19 | 25 | (function($){ |
20 | - | |
21 | 26 | // Forbidding the user to request more the one action on the cart |
22 | - // simultaneously because the cart in the cookie doesn't supports it. | |
27 | + // simultaneously because the cart in the cookie doesn't support it. | |
23 | 28 | Cart.prototype.ajax = function(config){ |
24 | 29 | var me = this; |
25 | 30 | this.disabled = true; |
... | ... | @@ -31,6 +36,17 @@ function Cart(config) { |
31 | 36 | $.ajax(config); |
32 | 37 | } |
33 | 38 | |
39 | + Cart.prototype.load = function(){ | |
40 | + if (!this.empty) { | |
41 | + if (!this.minimized) { | |
42 | + $(this.cartElem).show(); | |
43 | + } | |
44 | + this.addToList(this.products, true) | |
45 | + } else if (this.minimized) { | |
46 | + this.setQuantity(0) | |
47 | + } | |
48 | + } | |
49 | + | |
34 | 50 | Cart.prototype.addToList = function(products, clear) { |
35 | 51 | if( clear ) this.itemsBox.empty(); |
36 | 52 | var me = this; |
... | ... | @@ -38,17 +54,12 @@ function Cart(config) { |
38 | 54 | for( var item,i=0; item=products[i]; i++ ) { |
39 | 55 | this.items[item.id] = { price:item.price, quantity:item.quantity }; |
40 | 56 | this.updateTotal(); |
41 | - var liId = "cart-item-"+item.id; | |
42 | - var li = $("#"+liId); | |
43 | - if( !li[0] ) li = $('<li id="'+liId+'"></li>\n').appendTo(this.itemsBox); | |
44 | - li.empty(); | |
45 | - $('<div class="picture" style="background-image:url('+item.picture+')"></div>' + | |
46 | - '<span class="item-name">'+ item.name +'</span>' + | |
47 | - '<div class="item-price">' + | |
48 | - '<input size="1" value="'+item.quantity+'" />'+ (item.price ? '× '+ item.price : '') +'</div>' + | |
49 | - ' <a href="remove:'+item.name+'" onclick="Cart.removeItem('+item.id+'); return false"' + | |
50 | - ' class="button icon-remove"><span>remove</span></a>' | |
51 | - ).appendTo(li); | |
57 | + item.priceTxt = (item.price) ? '×' + item.price : ''; | |
58 | + | |
59 | + jQuery('#cart-item-'+item.id).remove() | |
60 | + var li = jQuery(this.itemTemplate({item: item})) | |
61 | + li.appendTo(this.itemsBox); | |
62 | + | |
52 | 63 | var input = $("input", li)[0]; |
53 | 64 | input.lastValue = input.value; |
54 | 65 | input.productId = item.id; |
... | ... | @@ -67,16 +78,24 @@ function Cart(config) { |
67 | 78 | li.animate({ backgroundColor: liBg }, 1000); |
68 | 79 | } |
69 | 80 | |
70 | - if (!clear && this.empty) $(this.cartElem).show(); | |
71 | - if((!clear && this.empty) || (this.visible && clear)) { | |
72 | - this.contentBox.hide(); | |
73 | - this.show(!clear); | |
81 | + if (!Cart.minimized) { | |
82 | + if (!clear && this.empty) $(this.cartElem).show(); | |
83 | + if((!clear && this.empty) || (this.visible && clear)) { | |
84 | + this.contentBox.hide(); | |
85 | + } | |
86 | + } else { | |
87 | + if (!clear) { | |
88 | + $( ".cart-applet .cart-applet-indicator" ).addClass( 'cart-highlight' ); | |
89 | + $( ".cart-applet" ).effect('bounce', 300, function(){ | |
90 | + $( ".cart-applet .cart-applet-indicator" ).removeClass( 'cart-highlight' ); | |
91 | + }); | |
92 | + } | |
74 | 93 | } |
75 | 94 | this.empty = false; |
76 | 95 | } |
77 | 96 | |
78 | 97 | Cart.prototype.updateQuantity = function(input, itemId, quantity) { |
79 | - if(this.disabled) return alert(shoppingCartPluginL10n.waitLastRequest); | |
98 | + if(this.disabled) return alert(Cart.l10n.waitLastRequest); | |
80 | 99 | quantity = parseInt(quantity); |
81 | 100 | input.disabled = true; |
82 | 101 | var originalBg = input.style.backgroundImage; |
... | ... | @@ -117,24 +136,16 @@ function Cart(config) { |
117 | 136 | } |
118 | 137 | |
119 | 138 | Cart.addItem = function(itemId, link) { |
120 | - if(this.instance.disabled) return alert(shoppingCartPluginL10n.waitLastRequest); | |
139 | + if(this.instance.disabled) return alert(Cart.l10n.waitLastRequest); | |
121 | 140 | if ( this.productsLength > 100 ) { |
122 | 141 | // This limit protect the user from losing data on cookie limit. |
123 | 142 | // This is NOT limiting to 100 products, is limiting to 100 kinds of products. |
124 | - alert(shoppingCartPluginL10n.maxNumberOfItens); | |
143 | + alert(Cart.l10n.maxNumberOfItens); | |
125 | 144 | return false; |
126 | 145 | } |
127 | - link.intervalId = setInterval(function() { | |
128 | - $(link).addClass('loading'); | |
129 | - steps = ['w', 'n', 'e', 's']; | |
130 | - if( !link.step || link.step==3 ) link.step = 0; | |
131 | - link.step++; | |
132 | - $(link).button({ icons: { primary: 'ui-icon-arrowrefresh-1-'+steps[link.step]}}) | |
133 | - }, 100); | |
146 | + $(link).addClass('small-loading'); | |
134 | 147 | var stopBtLoading = function() { |
135 | - clearInterval(link.intervalId); | |
136 | - $(link).removeClass('loading'); | |
137 | - $(link).button({ icons: { primary: 'ui-icon-cart'}}); | |
148 | + $(link).removeClass('small-loading'); | |
138 | 149 | }; |
139 | 150 | this.instance.addItem(itemId, stopBtLoading); |
140 | 151 | } |
... | ... | @@ -145,7 +156,12 @@ function Cart(config) { |
145 | 156 | url: '/plugin/shopping_cart/add/'+ itemId, |
146 | 157 | dataType: 'json', |
147 | 158 | success: function(data, status, ajax){ |
148 | - if ( !data.ok ) log.error('Shopping cart data failure', data.error); | |
159 | + if ( !data.ok ) { | |
160 | + if (typeof data.error.message != "undefined") | |
161 | + alert(data.error.message) | |
162 | + else | |
163 | + log.error('Shopping cart data failure', data.error); | |
164 | + } | |
149 | 165 | else me.addToList(data.products); |
150 | 166 | }, |
151 | 167 | cache: false, |
... | ... | @@ -157,8 +173,8 @@ function Cart(config) { |
157 | 173 | } |
158 | 174 | |
159 | 175 | Cart.removeItem = function(itemId) { |
160 | - if(this.instance.disabled) return alert(shoppingCartPluginL10n.waitLastRequest); | |
161 | - if( confirm(shoppingCartPluginL10n.removeItem) ) this.instance.removeItem(itemId); | |
176 | + if(this.instance.disabled) return alert(Cart.l10n.waitLastRequest); | |
177 | + if( confirm(Cart.l10n.removeItem) ) this.instance.removeItem(itemId); | |
162 | 178 | } |
163 | 179 | |
164 | 180 | Cart.prototype.removeItem = function(itemId) { |
... | ... | @@ -179,11 +195,51 @@ function Cart(config) { |
179 | 195 | } |
180 | 196 | |
181 | 197 | Cart.toggle = function(link) { |
182 | - if(this.instance.disabled) return alert(shoppingCartPluginL10n.waitLastRequest); | |
198 | + if(this.instance.disabled) return alert(Cart.l10n.waitLastRequest); | |
183 | 199 | link.parentNode.parentNode.cartObj.toggle(); |
184 | 200 | } |
185 | 201 | Cart.prototype.toggle = function() { |
186 | - this.visible ? this.hide(true) : this.show(true); | |
202 | + if (this.empty && this.hasPreviousOrders) | |
203 | + noosfero.modal.url('/plugin/shopping_cart/repeat?profile_id='+cart.profileId) | |
204 | + else | |
205 | + this.visible ? this.hide(true) : this.show(true) | |
206 | + } | |
207 | + | |
208 | + Cart.prototype.repeat = function(order_id, callback) { | |
209 | + this.ajax({ | |
210 | + url: '/plugin/shopping_cart/repeat/'+order_id+'?profile_id='+cart.profileId, | |
211 | + success: function(data) { | |
212 | + cart.addToList(data.products, true) | |
213 | + callback(data) | |
214 | + }, | |
215 | + // can't do POST because of firefox cookie reset bug | |
216 | + type: 'GET', dataType: 'json', cache: false | |
217 | + }) | |
218 | + } | |
219 | + | |
220 | + Cart.prototype.repeatCheckout = function(event, button) { | |
221 | + var order_id = jQuery(button).attr('data-order-id') | |
222 | + this.repeat(order_id, function(data) { | |
223 | + window.location.href = '/plugin/shopping_cart/buy' | |
224 | + }) | |
225 | + event.stopPropagation() | |
226 | + return false; | |
227 | + } | |
228 | + | |
229 | + Cart.prototype.repeatChoose = function(event, button) { | |
230 | + var order_id = jQuery(button).attr('data-order-id') | |
231 | + this.repeat(order_id, function(data) { | |
232 | + noosfero.modal.close() | |
233 | + cart.show(true); | |
234 | + }) | |
235 | + event.stopPropagation() | |
236 | + return false; | |
237 | + } | |
238 | + | |
239 | + Cart.prototype.clearOrdersSession = function() { | |
240 | + noosfero.modal.close() | |
241 | + cart.hasPreviousOrders = false; | |
242 | + cart.setQuantity(0) | |
187 | 243 | } |
188 | 244 | |
189 | 245 | Cart.prototype.show = function(register) { |
... | ... | @@ -221,7 +277,7 @@ function Cart(config) { |
221 | 277 | } |
222 | 278 | |
223 | 279 | Cart.prototype.updateTotal = function() { |
224 | - var total = 0; | |
280 | + var total = qtty = 0; | |
225 | 281 | var currency, sep = ""; |
226 | 282 | for( var itemId in this.items ) { |
227 | 283 | var item = this.items[itemId]; |
... | ... | @@ -230,15 +286,27 @@ function Cart(config) { |
230 | 286 | sep = item.price.charAt(item.price.length-3); |
231 | 287 | var price = item.price.replace(/[^0-9]/g,""); |
232 | 288 | total += item.quantity * parseFloat(price); |
289 | + qtty += item.quantity; | |
233 | 290 | } |
234 | 291 | } |
235 | 292 | total = Math.round(total).toString().replace(/(..)$/, sep+"$1") |
236 | 293 | $(".cart-total b", this.cartElem).text( ( (total!=0) ? currency+" "+total : "---" ) ); |
294 | + this.setQuantity(qtty) | |
295 | + } | |
296 | + | |
297 | + Cart.prototype.setQuantity = function(qtty) { | |
298 | + this.cartElem.find('.cart-applet-checkout').toggle(qtty > 0) | |
299 | + this.cartElem.find('.cart-applet-checkout-disabled').toggle(qtty === 0) | |
300 | + | |
301 | + if (qtty === 0 && this.hasPreviousOrders) | |
302 | + $(".cart-qtty", this.cartElem).text( Cart.l10n.repeatOrder ) | |
303 | + else | |
304 | + $(".cart-qtty", this.cartElem).text( qtty ) | |
237 | 305 | } |
238 | 306 | |
239 | 307 | Cart.clean = function(link) { |
240 | - if(this.instance.disabled) return alert(shoppingCartPluginL10n.waitLastRequest); | |
241 | - if( confirm(shoppingCartPluginL10n.cleanCart) ) link.parentNode.parentNode.parentNode.cartObj.clean(); | |
308 | + if(this.instance.disabled) return alert(Cart.l10n.waitLastRequest); | |
309 | + if( confirm(Cart.l10n.cleanCart) ) link.parentNode.parentNode.parentNode.cartObj.clean(); | |
242 | 310 | } |
243 | 311 | |
244 | 312 | Cart.prototype.clean = function() { |
... | ... | @@ -250,9 +318,9 @@ function Cart(config) { |
250 | 318 | if ( !data.ok ) log.error(data.error); |
251 | 319 | else{ |
252 | 320 | me.items = {}; |
253 | - $(me.cartElem).slideUp(500, function() { | |
321 | + $(me.contentBox).slideUp(500, function() { | |
254 | 322 | $(me.itemsBox).empty(); |
255 | - me.hide(); | |
323 | + //me.hide(); | |
256 | 324 | me.updateTotal(); |
257 | 325 | me.empty = true; |
258 | 326 | }); |
... | ... | @@ -277,21 +345,8 @@ function Cart(config) { |
277 | 345 | type: 'POST', |
278 | 346 | url: '/plugin/shopping_cart/send_request', |
279 | 347 | data: params, |
280 | - dataType: 'json', | |
281 | - success: function(data, status, ajax){ | |
282 | - if ( !data.ok ) display_notice(data.error.message); | |
283 | - else { | |
284 | - me.clean(); | |
285 | - display_notice(data.message); | |
286 | - } | |
287 | - }, | |
348 | + dataType: 'script', | |
288 | 349 | cache: false, |
289 | - error: function(ajax, status, errorThrown) { | |
290 | - log.error('Send request - HTTP '+status, errorThrown); | |
291 | - }, | |
292 | - complete: function() { | |
293 | - noosfero.modal.close(); | |
294 | - } | |
295 | 350 | }); |
296 | 351 | } |
297 | 352 | |
... | ... | @@ -301,31 +356,4 @@ function Cart(config) { |
301 | 356 | Cart.unloadingPage = true; |
302 | 357 | }); |
303 | 358 | |
304 | - $(function(){ | |
305 | - | |
306 | - $.ajax({ | |
307 | - url: "/plugin/shopping_cart/get", | |
308 | - dataType: 'json', | |
309 | - success: function(data) { | |
310 | - new Cart(data); | |
311 | - $('.cart-add-item').button({ icons: { primary: 'ui-icon-cart'} }) | |
312 | - }, | |
313 | - cache: false, | |
314 | - error: function(ajax, status, errorThrown) { | |
315 | - // Give some time to register page unload. | |
316 | - setTimeout(function() { | |
317 | - // page unload is not our problem. | |
318 | - if (Cart.unloadingPage) { | |
319 | - log('Page unload before cart load.'); | |
320 | - } else { | |
321 | - log.error('Error getting shopping cart - HTTP '+status, errorThrown); | |
322 | - if ( confirm(shoppingCartPluginL10n.getProblemConfirmReload) ) { | |
323 | - document.location.reload(); | |
324 | - } | |
325 | - } | |
326 | - }, 100); | |
327 | - } | |
328 | - }); | |
329 | - }); | |
330 | - | |
331 | 359 | })(jQuery); | ... | ... |
plugins/shopping_cart/public/edit.js
1 | -jQuery('#settings_delivery').click(function(){ | |
2 | - jQuery('#delivery_settings').toggle('fast'); | |
1 | +$('#settings_enabled').click(function(){ | |
2 | + $('#delivery-settings').toggle('fast'); | |
3 | 3 | }); |
4 | +$('#delivery-settings').toggle($('#settings_enabled').prop('checked')) | |
4 | 5 | |
5 | -jQuery('#add-new-option').click(function(){ | |
6 | - new_option = jQuery('#empty-option').clone(); | |
6 | +$('#add-new-option').click(function(){ | |
7 | + new_option = $('#empty-option').clone(); | |
7 | 8 | new_option.removeAttr('id'); |
8 | - jQuery('#add-new-option-row').before(new_option); | |
9 | + $('#add-new-option-row').before(new_option); | |
9 | 10 | new_option.show(); |
10 | 11 | return false; |
11 | 12 | }); |
12 | 13 | |
13 | -jQuery('.remove-option').live('click', function(){ | |
14 | - jQuery(this).closest('tr').remove(); | |
14 | +$('.remove-option').live('click', function(){ | |
15 | + $(this).closest('tr').remove(); | |
15 | 16 | return false; |
16 | 17 | }); |
18 | + | ... | ... |
plugins/shopping_cart/public/images/control-panel/purchase-report.gif
1.6 KB
plugins/shopping_cart/public/images/control-panel/purchase-report.png
3.13 KB
plugins/shopping_cart/public/images/control-panel/purchase-report.svg
... | ... | @@ -1,742 +0,0 @@ |
1 | -<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |
2 | -<!-- Created with Inkscape (http://www.inkscape.org/) --> | |
3 | - | |
4 | -<svg | |
5 | - xmlns:dc="http://purl.org/dc/elements/1.1/" | |
6 | - xmlns:cc="http://creativecommons.org/ns#" | |
7 | - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |
8 | - xmlns:svg="http://www.w3.org/2000/svg" | |
9 | - xmlns="http://www.w3.org/2000/svg" | |
10 | - xmlns:xlink="http://www.w3.org/1999/xlink" | |
11 | - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |
12 | - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |
13 | - width="48" | |
14 | - height="48" | |
15 | - id="svg2" | |
16 | - version="1.1" | |
17 | - inkscape:version="0.48.2 r9819" | |
18 | - sodipodi:docname="purchase-report.svg" | |
19 | - inkscape:export-filename="/home/aurium/purchase-report.png" | |
20 | - inkscape:export-xdpi="90" | |
21 | - inkscape:export-ydpi="90"> | |
22 | - <defs | |
23 | - id="defs4"> | |
24 | - <linearGradient | |
25 | - inkscape:collect="always" | |
26 | - id="linearGradient4980"> | |
27 | - <stop | |
28 | - style="stop-color:#2e3436;stop-opacity:1;" | |
29 | - offset="0" | |
30 | - id="stop4982" /> | |
31 | - <stop | |
32 | - style="stop-color:#babdb6;stop-opacity:0" | |
33 | - offset="1" | |
34 | - id="stop4984" /> | |
35 | - </linearGradient> | |
36 | - <linearGradient | |
37 | - id="linearGradient4962" | |
38 | - inkscape:collect="always"> | |
39 | - <stop | |
40 | - id="stop4964" | |
41 | - offset="0" | |
42 | - style="stop-color:#ffffff;stop-opacity:0" /> | |
43 | - <stop | |
44 | - id="stop4966" | |
45 | - offset="1" | |
46 | - style="stop-color:#ffffff;stop-opacity:1" /> | |
47 | - </linearGradient> | |
48 | - <linearGradient | |
49 | - inkscape:collect="always" | |
50 | - id="linearGradient4952"> | |
51 | - <stop | |
52 | - style="stop-color:#555753;stop-opacity:1;" | |
53 | - offset="0" | |
54 | - id="stop4954" /> | |
55 | - <stop | |
56 | - style="stop-color:#888a85;stop-opacity:1" | |
57 | - offset="1" | |
58 | - id="stop4956" /> | |
59 | - </linearGradient> | |
60 | - <linearGradient | |
61 | - inkscape:collect="always" | |
62 | - id="linearGradient4944"> | |
63 | - <stop | |
64 | - style="stop-color:#888a85;stop-opacity:1;" | |
65 | - offset="0" | |
66 | - id="stop4946" /> | |
67 | - <stop | |
68 | - style="stop-color:#555753;stop-opacity:1" | |
69 | - offset="1" | |
70 | - id="stop4948" /> | |
71 | - </linearGradient> | |
72 | - <linearGradient | |
73 | - inkscape:collect="always" | |
74 | - id="linearGradient4914"> | |
75 | - <stop | |
76 | - style="stop-color:#cccccc;stop-opacity:1" | |
77 | - offset="0" | |
78 | - id="stop4916" /> | |
79 | - <stop | |
80 | - style="stop-color:#4d4d4d;stop-opacity:1" | |
81 | - offset="1" | |
82 | - id="stop4918" /> | |
83 | - </linearGradient> | |
84 | - <linearGradient | |
85 | - inkscape:collect="always" | |
86 | - id="linearGradient4853"> | |
87 | - <stop | |
88 | - style="stop-color:#000000;stop-opacity:1;" | |
89 | - offset="0" | |
90 | - id="stop4855" /> | |
91 | - <stop | |
92 | - style="stop-color:#000000;stop-opacity:0;" | |
93 | - offset="1" | |
94 | - id="stop4857" /> | |
95 | - </linearGradient> | |
96 | - <inkscape:perspective | |
97 | - sodipodi:type="inkscape:persp3d" | |
98 | - inkscape:vp_x="0 : 526.18109 : 1" | |
99 | - inkscape:vp_y="0 : 1000 : 0" | |
100 | - inkscape:vp_z="744.09448 : 526.18109 : 1" | |
101 | - inkscape:persp3d-origin="372.04724 : 350.78739 : 1" | |
102 | - id="perspective10" /> | |
103 | - <inkscape:perspective | |
104 | - id="perspective3634" | |
105 | - inkscape:persp3d-origin="0.5 : 0.33333333 : 1" | |
106 | - inkscape:vp_z="1 : 0.5 : 1" | |
107 | - inkscape:vp_y="0 : 1000 : 0" | |
108 | - inkscape:vp_x="0 : 0.5 : 1" | |
109 | - sodipodi:type="inkscape:persp3d" /> | |
110 | - <inkscape:perspective | |
111 | - id="perspective3659" | |
112 | - inkscape:persp3d-origin="0.5 : 0.33333333 : 1" | |
113 | - inkscape:vp_z="1 : 0.5 : 1" | |
114 | - inkscape:vp_y="0 : 1000 : 0" | |
115 | - inkscape:vp_x="0 : 0.5 : 1" | |
116 | - sodipodi:type="inkscape:persp3d" /> | |
117 | - <inkscape:perspective | |
118 | - id="perspective4618" | |
119 | - inkscape:persp3d-origin="0.5 : 0.33333333 : 1" | |
120 | - inkscape:vp_z="1 : 0.5 : 1" | |
121 | - inkscape:vp_y="0 : 1000 : 0" | |
122 | - inkscape:vp_x="0 : 0.5 : 1" | |
123 | - sodipodi:type="inkscape:persp3d" /> | |
124 | - <linearGradient | |
125 | - id="linearGradient2251"> | |
126 | - <stop | |
127 | - style="stop-color:#ffffff;stop-opacity:1;" | |
128 | - offset="0" | |
129 | - id="stop2253" /> | |
130 | - <stop | |
131 | - style="stop-color:#ffffff;stop-opacity:0;" | |
132 | - offset="1" | |
133 | - id="stop2255" /> | |
134 | - </linearGradient> | |
135 | - <linearGradient | |
136 | - inkscape:collect="always" | |
137 | - xlink:href="#linearGradient2224" | |
138 | - id="linearGradient4602" | |
139 | - gradientUnits="userSpaceOnUse" | |
140 | - gradientTransform="translate(3.2628514,1006.5776)" | |
141 | - x1="36.237148" | |
142 | - y1="41.284599" | |
143 | - x2="33.664921" | |
144 | - y2="37.770721" /> | |
145 | - <linearGradient | |
146 | - id="linearGradient2224"> | |
147 | - <stop | |
148 | - style="stop-color:#7c7c7c;stop-opacity:1;" | |
149 | - offset="0" | |
150 | - id="stop2226" /> | |
151 | - <stop | |
152 | - style="stop-color:#b8b8b8;stop-opacity:1;" | |
153 | - offset="1" | |
154 | - id="stop2228" /> | |
155 | - </linearGradient> | |
156 | - <linearGradient | |
157 | - inkscape:collect="always" | |
158 | - xlink:href="#linearGradient2259" | |
159 | - id="linearGradient4605" | |
160 | - gradientUnits="userSpaceOnUse" | |
161 | - gradientTransform="matrix(0.999421,0,0,1,-5.0089689,998.39565)" | |
162 | - x1="26.076092" | |
163 | - y1="26.696676" | |
164 | - x2="30.811172" | |
165 | - y2="42.007351" /> | |
166 | - <linearGradient | |
167 | - inkscape:collect="always" | |
168 | - id="linearGradient2259"> | |
169 | - <stop | |
170 | - style="stop-color:#ffffff;stop-opacity:1;" | |
171 | - offset="0" | |
172 | - id="stop2261" /> | |
173 | - <stop | |
174 | - style="stop-color:#ffffff;stop-opacity:0;" | |
175 | - offset="1" | |
176 | - id="stop2263" /> | |
177 | - </linearGradient> | |
178 | - <linearGradient | |
179 | - inkscape:collect="always" | |
180 | - xlink:href="#linearGradient15218" | |
181 | - id="linearGradient4608" | |
182 | - gradientUnits="userSpaceOnUse" | |
183 | - gradientTransform="matrix(1.067236,0,0,0.989276,4.391684,4.035227)" | |
184 | - x1="22.308331" | |
185 | - y1="18.99214" | |
186 | - x2="35.785294" | |
187 | - y2="39.498238" /> | |
188 | - <linearGradient | |
189 | - id="linearGradient15218"> | |
190 | - <stop | |
191 | - style="stop-color:#f0f0ef;stop-opacity:1.0000000;" | |
192 | - offset="0.0000000" | |
193 | - id="stop15220" /> | |
194 | - <stop | |
195 | - id="stop2269" | |
196 | - offset="0.59928656" | |
197 | - style="stop-color:#e8e8e8;stop-opacity:1;" /> | |
198 | - <stop | |
199 | - id="stop2267" | |
200 | - offset="0.82758623" | |
201 | - style="stop-color:#ffffff;stop-opacity:1;" /> | |
202 | - <stop | |
203 | - style="stop-color:#d8d8d3;stop-opacity:1.0000000;" | |
204 | - offset="1.0000000" | |
205 | - id="stop15222" /> | |
206 | - </linearGradient> | |
207 | - <inkscape:perspective | |
208 | - id="perspective4722" | |
209 | - inkscape:persp3d-origin="0.5 : 0.33333333 : 1" | |
210 | - inkscape:vp_z="1 : 0.5 : 1" | |
211 | - inkscape:vp_y="0 : 1000 : 0" | |
212 | - inkscape:vp_x="0 : 0.5 : 1" | |
213 | - sodipodi:type="inkscape:persp3d" /> | |
214 | - <linearGradient | |
215 | - y2="-968.28137" | |
216 | - x2="46.01725" | |
217 | - y1="-987.48724" | |
218 | - x1="31.962252" | |
219 | - gradientTransform="matrix(1.067236,0,0,0.989276,-9.611267,2002.7597)" | |
220 | - gradientUnits="userSpaceOnUse" | |
221 | - id="linearGradient4644-0" | |
222 | - xlink:href="#linearGradient15218-5" | |
223 | - inkscape:collect="always" /> | |
224 | - <linearGradient | |
225 | - id="linearGradient15218-5"> | |
226 | - <stop | |
227 | - style="stop-color:#f0f0ef;stop-opacity:1.0000000;" | |
228 | - offset="0.0000000" | |
229 | - id="stop15220-1" /> | |
230 | - <stop | |
231 | - id="stop2269-8" | |
232 | - offset="0.59928656" | |
233 | - style="stop-color:#e8e8e8;stop-opacity:1;" /> | |
234 | - <stop | |
235 | - id="stop2267-9" | |
236 | - offset="0.82758623" | |
237 | - style="stop-color:#ffffff;stop-opacity:1;" /> | |
238 | - <stop | |
239 | - style="stop-color:#d8d8d3;stop-opacity:1.0000000;" | |
240 | - offset="1.0000000" | |
241 | - id="stop15222-1" /> | |
242 | - </linearGradient> | |
243 | - <linearGradient | |
244 | - y2="39.498238" | |
245 | - x2="35.785294" | |
246 | - y1="18.99214" | |
247 | - x1="22.308331" | |
248 | - gradientTransform="matrix(1.067236,0,0,0.989276,-11.611266,-5.9647499)" | |
249 | - gradientUnits="userSpaceOnUse" | |
250 | - id="linearGradient4733" | |
251 | - xlink:href="#linearGradient15218-5" | |
252 | - inkscape:collect="always" /> | |
253 | - <linearGradient | |
254 | - inkscape:collect="always" | |
255 | - xlink:href="#linearGradient4853" | |
256 | - id="linearGradient4870" | |
257 | - gradientUnits="userSpaceOnUse" | |
258 | - x1="32.5" | |
259 | - y1="1026.8622" | |
260 | - x2="36.5" | |
261 | - y2="1026.8622" | |
262 | - gradientTransform="translate(0,15)" /> | |
263 | - <linearGradient | |
264 | - inkscape:collect="always" | |
265 | - xlink:href="#linearGradient4914" | |
266 | - id="linearGradient4926" | |
267 | - gradientUnits="userSpaceOnUse" | |
268 | - x1="21.5" | |
269 | - y1="16.5" | |
270 | - x2="32.5" | |
271 | - y2="38.5" | |
272 | - gradientTransform="translate(0,1004.3622)" /> | |
273 | - <mask | |
274 | - maskUnits="userSpaceOnUse" | |
275 | - id="mask4922"> | |
276 | - <rect | |
277 | - style="color:#000000;fill:url(#linearGradient4926);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |
278 | - id="rect4924" | |
279 | - width="34" | |
280 | - height="41" | |
281 | - x="7.5" | |
282 | - y="1006.8622" /> | |
283 | - </mask> | |
284 | - <filter | |
285 | - inkscape:collect="always" | |
286 | - id="filter4938" | |
287 | - x="-0.063571429" | |
288 | - width="1.1271429" | |
289 | - y="-1.0679999" | |
290 | - height="3.1359998"> | |
291 | - <feGaussianBlur | |
292 | - inkscape:collect="always" | |
293 | - stdDeviation="1.1124999" | |
294 | - id="feGaussianBlur4940" /> | |
295 | - </filter> | |
296 | - <linearGradient | |
297 | - inkscape:collect="always" | |
298 | - xlink:href="#linearGradient4944" | |
299 | - id="linearGradient4950" | |
300 | - x1="5.5" | |
301 | - y1="1015.8622" | |
302 | - x2="11.5" | |
303 | - y2="1049.8622" | |
304 | - gradientUnits="userSpaceOnUse" /> | |
305 | - <linearGradient | |
306 | - inkscape:collect="always" | |
307 | - xlink:href="#linearGradient4962" | |
308 | - id="linearGradient4958" | |
309 | - x1="36.5" | |
310 | - y1="1047.8622" | |
311 | - x2="31.5" | |
312 | - y2="1038.8622" | |
313 | - gradientUnits="userSpaceOnUse" /> | |
314 | - <linearGradient | |
315 | - inkscape:collect="always" | |
316 | - xlink:href="#linearGradient4952" | |
317 | - id="linearGradient4960" | |
318 | - gradientUnits="userSpaceOnUse" | |
319 | - x1="34.5" | |
320 | - y1="1046.8622" | |
321 | - x2="29.5" | |
322 | - y2="1039.8622" /> | |
323 | - <linearGradient | |
324 | - inkscape:collect="always" | |
325 | - xlink:href="#linearGradient4962" | |
326 | - id="linearGradient4968" | |
327 | - gradientUnits="userSpaceOnUse" | |
328 | - x1="37.420265" | |
329 | - y1="1044.8622" | |
330 | - x2="36.5" | |
331 | - y2="1043.8622" /> | |
332 | - <linearGradient | |
333 | - inkscape:collect="always" | |
334 | - xlink:href="#linearGradient4980" | |
335 | - id="linearGradient4986" | |
336 | - x1="38.5" | |
337 | - y1="41.5" | |
338 | - x2="41.5" | |
339 | - y2="44.5" | |
340 | - gradientUnits="userSpaceOnUse" /> | |
341 | - </defs> | |
342 | - <sodipodi:namedview | |
343 | - id="base" | |
344 | - pagecolor="#ffffff" | |
345 | - bordercolor="#666666" | |
346 | - borderopacity="1.0" | |
347 | - inkscape:pageopacity="0.0" | |
348 | - inkscape:pageshadow="2" | |
349 | - inkscape:zoom="12.541667" | |
350 | - inkscape:cx="24" | |
351 | - inkscape:cy="24" | |
352 | - inkscape:document-units="px" | |
353 | - inkscape:current-layer="layer1" | |
354 | - showgrid="true" | |
355 | - inkscape:window-width="1366" | |
356 | - inkscape:window-height="721" | |
357 | - inkscape:window-x="-3" | |
358 | - inkscape:window-y="-3" | |
359 | - inkscape:window-maximized="1"> | |
360 | - <inkscape:grid | |
361 | - type="xygrid" | |
362 | - id="grid2816" | |
363 | - empspacing="5" | |
364 | - visible="true" | |
365 | - enabled="true" | |
366 | - snapvisiblegridlinesonly="true" | |
367 | - spacingx="1px" | |
368 | - originx="0.5px" | |
369 | - originy="0.5px" /> | |
370 | - </sodipodi:namedview> | |
371 | - <metadata | |
372 | - id="metadata7"> | |
373 | - <rdf:RDF> | |
374 | - <cc:Work | |
375 | - rdf:about=""> | |
376 | - <dc:format>image/svg+xml</dc:format> | |
377 | - <dc:type | |
378 | - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |
379 | - <dc:title></dc:title> | |
380 | - </cc:Work> | |
381 | - </rdf:RDF> | |
382 | - </metadata> | |
383 | - <g | |
384 | - inkscape:label="Camada 1" | |
385 | - inkscape:groupmode="layer" | |
386 | - id="layer1" | |
387 | - transform="translate(0,-1004.3622)"> | |
388 | - <rect | |
389 | - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter4938);opacity:0.7" | |
390 | - id="rect4928" | |
391 | - width="41.999996" | |
392 | - height="2.5" | |
393 | - x="3.5" | |
394 | - y="43.5" | |
395 | - transform="translate(0,1004.3622)" | |
396 | - ry="1" /> | |
397 | - <rect | |
398 | - style="color:#000000;fill:url(#linearGradient4644-0);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4950);stroke-width:1.00000024000000010;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |
399 | - id="rect4699" | |
400 | - width="38" | |
401 | - height="45" | |
402 | - x="5.5" | |
403 | - y="1004.8622" | |
404 | - ry="1" /> | |
405 | - <path | |
406 | - style="fill:url(#linearGradient4986);stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1;opacity:0.59999999999999998" | |
407 | - d="M 33.5,45 43,36.5 43,45 33.5,45 z" | |
408 | - id="path4970" | |
409 | - transform="translate(0,1004.3622)" | |
410 | - sodipodi:nodetypes="cccc" /> | |
411 | - <rect | |
412 | - style="fill:none;stroke:url(#linearGradient4605);stroke-width:1.00000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" | |
413 | - id="rect15244" | |
414 | - width="35.997337" | |
415 | - height="43.000019" | |
416 | - x="6.5026627" | |
417 | - y="1005.8622" | |
418 | - rx="0" | |
419 | - ry="0" /> | |
420 | - <g | |
421 | - id="g4873" | |
422 | - mask="url(#mask4922)" | |
423 | - transform="translate(0,1.7382813e-5)"> | |
424 | - <path | |
425 | - sodipodi:nodetypes="cccccc" | |
426 | - d="m 29.5,1015.8622 11,0 m -11,-3 11,0 m -11,-3 11,0" | |
427 | - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" | |
428 | - id="path4802" | |
429 | - inkscape:connector-curvature="0" /> | |
430 | - <path | |
431 | - transform="translate(0,1004.3622)" | |
432 | - d="m 27.5,5.5 c 0,0.5522847 -0.447715,1 -1,1 -0.552285,0 -1,-0.4477153 -1,-1 0,-0.5522847 0.447715,-1 1,-1 0.552285,0 1,0.4477153 1,1 z" | |
433 | - sodipodi:ry="1" | |
434 | - sodipodi:rx="1" | |
435 | - sodipodi:cy="5.5" | |
436 | - sodipodi:cx="26.5" | |
437 | - id="path4804" | |
438 | - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |
439 | - sodipodi:type="arc" /> | |
440 | - <path | |
441 | - sodipodi:type="arc" | |
442 | - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |
443 | - id="path4806" | |
444 | - sodipodi:cx="26.5" | |
445 | - sodipodi:cy="5.5" | |
446 | - sodipodi:rx="1" | |
447 | - sodipodi:ry="1" | |
448 | - d="m 27.5,5.5 c 0,0.5522847 -0.447715,1 -1,1 -0.552285,0 -1,-0.4477153 -1,-1 0,-0.5522847 0.447715,-1 1,-1 0.552285,0 1,0.4477153 1,1 z" | |
449 | - transform="translate(0,1007.3622)" /> | |
450 | - <path | |
451 | - transform="translate(0,1010.3622)" | |
452 | - d="m 27.5,5.5 c 0,0.5522847 -0.447715,1 -1,1 -0.552285,0 -1,-0.4477153 -1,-1 0,-0.5522847 0.447715,-1 1,-1 0.552285,0 1,0.4477153 1,1 z" | |
453 | - sodipodi:ry="1" | |
454 | - sodipodi:rx="1" | |
455 | - sodipodi:cy="5.5" | |
456 | - sodipodi:cx="26.5" | |
457 | - id="path4808" | |
458 | - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |
459 | - sodipodi:type="arc" /> | |
460 | - <path | |
461 | - id="path4811" | |
462 | - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" | |
463 | - d="m 29.5,1029.8622 11,0 m -11,-3 11,0 m -11,-3 11,0" | |
464 | - sodipodi:nodetypes="cccccc" | |
465 | - inkscape:connector-curvature="0" /> | |
466 | - <path | |
467 | - sodipodi:type="arc" | |
468 | - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |
469 | - id="path4813" | |
470 | - sodipodi:cx="26.5" | |
471 | - sodipodi:cy="5.5" | |
472 | - sodipodi:rx="1" | |
473 | - sodipodi:ry="1" | |
474 | - d="m 27.5,5.5 c 0,0.5522847 -0.447715,1 -1,1 -0.552285,0 -1,-0.4477153 -1,-1 0,-0.5522847 0.447715,-1 1,-1 0.552285,0 1,0.4477153 1,1 z" | |
475 | - transform="translate(0,1018.3622)" /> | |
476 | - <path | |
477 | - transform="translate(0,1021.3622)" | |
478 | - d="m 27.5,5.5 c 0,0.5522847 -0.447715,1 -1,1 -0.552285,0 -1,-0.4477153 -1,-1 0,-0.5522847 0.447715,-1 1,-1 0.552285,0 1,0.4477153 1,1 z" | |
479 | - sodipodi:ry="1" | |
480 | - sodipodi:rx="1" | |
481 | - sodipodi:cy="5.5" | |
482 | - sodipodi:cx="26.5" | |
483 | - id="path4815" | |
484 | - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |
485 | - sodipodi:type="arc" /> | |
486 | - <path | |
487 | - sodipodi:type="arc" | |
488 | - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |
489 | - id="path4817" | |
490 | - sodipodi:cx="26.5" | |
491 | - sodipodi:cy="5.5" | |
492 | - sodipodi:rx="1" | |
493 | - sodipodi:ry="1" | |
494 | - d="m 27.5,5.5 c 0,0.5522847 -0.447715,1 -1,1 -0.552285,0 -1,-0.4477153 -1,-1 0,-0.5522847 0.447715,-1 1,-1 0.552285,0 1,0.4477153 1,1 z" | |
495 | - transform="translate(0,1024.3622)" /> | |
496 | - <path | |
497 | - id="path4827" | |
498 | - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" | |
499 | - d="m 29.5,1038.8622 11,0 m -11,3 11,0 m -11,3 9,0" | |
500 | - inkscape:connector-curvature="0" /> | |
501 | - <path | |
502 | - transform="translate(0,1033.3622)" | |
503 | - d="m 27.5,5.5 c 0,0.5522847 -0.447715,1 -1,1 -0.552285,0 -1,-0.4477153 -1,-1 0,-0.5522847 0.447715,-1 1,-1 0.552285,0 1,0.4477153 1,1 z" | |
504 | - sodipodi:ry="1" | |
505 | - sodipodi:rx="1" | |
506 | - sodipodi:cy="5.5" | |
507 | - sodipodi:cx="26.5" | |
508 | - id="path4829" | |
509 | - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |
510 | - sodipodi:type="arc" /> | |
511 | - <path | |
512 | - sodipodi:type="arc" | |
513 | - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |
514 | - id="path4831" | |
515 | - sodipodi:cx="26.5" | |
516 | - sodipodi:cy="5.5" | |
517 | - sodipodi:rx="1" | |
518 | - sodipodi:ry="1" | |
519 | - d="m 27.5,5.5 c 0,0.5522847 -0.447715,1 -1,1 -0.552285,0 -1,-0.4477153 -1,-1 0,-0.5522847 0.447715,-1 1,-1 0.552285,0 1,0.4477153 1,1 z" | |
520 | - transform="translate(0,1036.3622)" /> | |
521 | - <path | |
522 | - transform="translate(0,1039.3622)" | |
523 | - d="m 27.5,5.5 c 0,0.5522847 -0.447715,1 -1,1 -0.552285,0 -1,-0.4477153 -1,-1 0,-0.5522847 0.447715,-1 1,-1 0.552285,0 1,0.4477153 1,1 z" | |
524 | - sodipodi:ry="1" | |
525 | - sodipodi:rx="1" | |
526 | - sodipodi:cy="5.5" | |
527 | - sodipodi:cx="26.5" | |
528 | - id="path4833" | |
529 | - style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |
530 | - sodipodi:type="arc" /> | |
531 | - <g | |
532 | - id="g5575-7" | |
533 | - transform="matrix(0.01545762,0,0,0.01545762,-84.564216,932.96399)" | |
534 | - style="fill:#d38d5f"> | |
535 | - <path | |
536 | - inkscape:connector-curvature="0" | |
537 | - id="rect5245-9-6" | |
538 | - d="m 6408.0436,5064.9271 c -11.726,-11.2912 -32.3679,-9.6218 -42.4594,3.1418 -19.6123,19.9856 -39.9641,39.4417 -59.1428,59.74 -9.518,12.5005 -6.3676,31.3823 5.826,40.9329 19.6892,19.3981 38.735,39.51 58.8119,58.4787 12.3484,9.5947 31.3846,6.505 40.8262,-5.7528 19.4803,-19.979 39.9713,-39.2016 58.856,-59.6292 9.0558,-12.4283 5.7503,-30.9531 -6.2232,-40.3134 -18.839,-18.8581 -37.6197,-37.7778 -56.4947,-56.598 z" | |
539 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
540 | - <path | |
541 | - inkscape:connector-curvature="0" | |
542 | - id="rect5245-3-6-2" | |
543 | - d="m 6271.4191,5203.1033 c -11.659,-11.815 -32.7156,-10.3098 -42.9669,2.6329 -19.7244,20.2091 -40.4303,39.6819 -59.5621,60.3374 -9.0337,12.4807 -5.8043,30.8944 6.2011,40.2912 19.927,19.5313 39.0995,40.0758 59.474,59.0098 12.4653,9.0761 30.8739,5.764 40.2082,-6.2396 19.3801,-19.7478 39.4876,-38.9701 58.4368,-59.0318 9.4652,-12.3353 6.4045,-31.4347 -5.8482,-40.9551 -18.655,-18.6738 -37.2518,-37.4088 -55.9429,-56.0448 z" | |
544 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
545 | - <path | |
546 | - inkscape:connector-curvature="0" | |
547 | - id="rect5245-8-6-2" | |
548 | - d="m 6545.5287,5202.6829 c -11.7363,-11.3217 -32.3801,-9.5656 -42.4593,3.1418 -19.5937,19.9946 -39.9139,39.3349 -59.0767,59.7178 -9.5513,12.3449 -6.4556,31.438 5.7819,40.9772 19.6941,19.3922 38.7293,39.519 58.8119,58.4788 12.4118,9.6084 31.3584,6.4621 40.8704,-5.797 19.3229,-19.7402 39.4821,-38.8781 58.3264,-58.9655 9.5617,-12.3467 6.4938,-31.475 -5.7378,-40.933 -18.8464,-18.8655 -37.6344,-37.7925 -56.5168,-56.6201 z" | |
549 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
550 | - <path | |
551 | - inkscape:connector-curvature="0" | |
552 | - id="rect5245-7-4-7" | |
553 | - d="m 6683.1903,5065.7678 c -11.6727,-11.8214 -32.6711,-10.2704 -42.9667,2.6331 -19.5831,19.9842 -39.9685,39.3886 -59.0767,59.7177 -9.5608,12.3477 -6.4907,31.4696 5.7376,40.9329 19.6964,19.4311 38.8692,39.5905 58.8782,58.5894 12.4019,9.5309 31.358,6.4013 40.8042,-5.8192 19.3581,-19.7586 39.4434,-38.8626 58.3704,-59.0098 9.5628,-12.3863 6.44,-31.439 -5.7818,-40.977 -18.6625,-18.6812 -37.2665,-37.4235 -55.9652,-56.0671 z" | |
554 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
555 | - <path | |
556 | - inkscape:connector-curvature="0" | |
557 | - id="rect5245-5-2-8" | |
558 | - d="m 6820.3665,5203.4794 c -11.6211,-11.8358 -32.7205,-10.3463 -42.9888,2.6109 -19.6161,19.9836 -39.9579,39.4428 -59.1429,59.7399 -9.5091,12.4948 -6.4432,31.3232 5.7819,40.8887 19.7364,19.4377 38.8215,39.6072 58.9443,58.6115 12.2819,9.5014 31.2571,6.4201 40.7379,-5.8413 19.38,-19.7479 39.4876,-38.9702 58.4367,-59.0319 9.212,-12.1115 6.6473,-30.6982 -5.1419,-40.247 -18.8831,-18.9025 -37.708,-37.8662 -56.6272,-56.7308 z" | |
559 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
560 | - <path | |
561 | - inkscape:connector-curvature="0" | |
562 | - id="rect5245-5-4-1-9" | |
563 | - d="m 6662,5332.625 c -15.2378,0.1612 -24.0529,14.157 -34.1146,23.4276 -15.476,15.9413 -31.8697,31.086 -46.7916,47.5099 -2.9405,4.2478 -4.8192,9.3664 -5.1563,14.4687 58.2812,-0.042 116.7292,0.083 174.9063,-0.062 -0.7632,-15.4178 -15.3649,-24.1142 -24.7148,-34.6559 -15.4837,-15.0104 -30.156,-31.1956 -46.0978,-45.5317 -5.23,-3.6558 -11.6538,-5.4746 -18.0312,-5.1562 z" | |
564 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
565 | - <path | |
566 | - inkscape:connector-curvature="0" | |
567 | - id="rect5245-5-4-4-4-1" | |
568 | - d="m 6387.75,5331.1875 c -12.8167,-0.2843 -21.9125,9.8823 -29.9201,18.4726 -16.9981,17.3803 -34.8059,34.2122 -51.3299,51.9024 -3.1649,4.3908 -5.2116,9.685 -5.5625,15.0313 58.2812,-0.042 116.7292,0.083 174.9063,-0.063 -0.723,-15.0722 -14.844,-23.7682 -24.0397,-33.9792 -15.7089,-15.2187 -30.5296,-31.6073 -46.7416,-46.1458 -5.0231,-3.5423 -11.1737,-5.3579 -17.3125,-5.2187 z" | |
569 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
570 | - <path | |
571 | - inkscape:connector-curvature="0" | |
572 | - id="rect5245-5-4-7-7-7" | |
573 | - d="m 6438.0625,5011.4375 c 0.8844,15.3847 15.3961,24.0874 24.746,34.5934 15.4791,14.996 30.0891,31.1552 46.0665,45.4691 12.3222,9.0732 30.8351,5.8023 40.1691,-6.1752 19.3539,-19.7366 39.5157,-38.9385 58.3934,-58.981 3.1742,-4.3805 5.1726,-9.6672 5.5625,-15.0313 -58.2707,0.083 -116.8752,-0.1665 -174.9375,0.125 z" | |
574 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
575 | - <path | |
576 | - inkscape:connector-curvature="0" | |
577 | - id="rect5245-5-4-7-4-6-5" | |
578 | - d="m 6701.375,5008.75 c 27.4204,26.9864 54.2733,54.7791 81.9688,81.3438 12.312,9.5662 31.425,6.3692 40.8246,-5.801 59.1737,-59.3365 118.4716,-118.5488 177.7691,-177.7616 -100.1875,34.073 -200.375,68.1459 -300.5625,102.2188 z" | |
579 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
580 | - <path | |
581 | - inkscape:connector-curvature="0" | |
582 | - id="rect5245-5-4-7-4-3-3-0" | |
583 | - d="m 6998.8438,4984.5938 c -47.3943,47.7404 -95.4006,94.9567 -142.5626,142.875 -10.1297,12.3088 -7.0115,31.8296 5.3324,41.3869 25.2451,25.1714 50.3907,50.4424 75.5426,75.7068 34.073,-100.1875 68.1459,-200.375 102.2188,-300.5625 -13.5104,13.5313 -27.0208,27.0625 -40.5312,40.5938 z" | |
584 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
585 | - <path | |
586 | - inkscape:connector-curvature="0" | |
587 | - id="rect5245-5-4-7-4-2-3-8" | |
588 | - d="m 6114.2812,5244.9062 c 26.8771,-27.2005 54.2641,-54.0149 80.875,-81.4062 10.0644,-12.3049 7.0844,-31.7597 -5.3634,-41.3871 -59.3365,-59.1737 -118.5488,-118.4717 -177.7616,-177.7691 34.0834,100.1874 68.1667,200.375 102.25,300.5624 z" | |
589 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
590 | - <path | |
591 | - inkscape:connector-curvature="0" | |
592 | - id="rect5245-5-4-7-4-3-5-8-2" | |
593 | - d="m 6090.125,4947.4375 c 47.677,47.4093 94.9671,95.3478 142.7812,142.5313 12.3096,10.0651 31.7648,7.1628 41.4222,-5.2972 25.2023,-25.2247 50.4579,-50.3961 75.7341,-75.5466 -100.1875,-34.0729 -200.375,-68.1458 -300.5625,-102.2188 13.5417,13.5105 27.0833,27.0209 40.625,40.5313 z" | |
594 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
595 | - </g> | |
596 | - <g | |
597 | - id="g5575-7-8" | |
598 | - transform="matrix(0.01545762,0,0,0.01545762,-84.486184,947.26528)" | |
599 | - style="fill:#d38d5f"> | |
600 | - <path | |
601 | - inkscape:connector-curvature="0" | |
602 | - id="rect5245-9-6-5" | |
603 | - d="m 6408.0436,5064.9271 c -11.726,-11.2912 -32.3679,-9.6218 -42.4594,3.1418 -19.6123,19.9856 -39.9641,39.4417 -59.1428,59.74 -9.518,12.5005 -6.3676,31.3823 5.826,40.9329 19.6892,19.3981 38.735,39.51 58.8119,58.4787 12.3484,9.5947 31.3846,6.505 40.8262,-5.7528 19.4803,-19.979 39.9713,-39.2016 58.856,-59.6292 9.0558,-12.4283 5.7503,-30.9531 -6.2232,-40.3134 -18.839,-18.8581 -37.6197,-37.7778 -56.4947,-56.598 z" | |
604 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
605 | - <path | |
606 | - inkscape:connector-curvature="0" | |
607 | - id="rect5245-3-6-2-0" | |
608 | - d="m 6271.4191,5203.1033 c -11.659,-11.815 -32.7156,-10.3098 -42.9669,2.6329 -19.7244,20.2091 -40.4303,39.6819 -59.5621,60.3374 -9.0337,12.4807 -5.8043,30.8944 6.2011,40.2912 19.927,19.5313 39.0995,40.0758 59.474,59.0098 12.4653,9.0761 30.8739,5.764 40.2082,-6.2396 19.3801,-19.7478 39.4876,-38.9701 58.4368,-59.0318 9.4652,-12.3353 6.4045,-31.4347 -5.8482,-40.9551 -18.655,-18.6738 -37.2518,-37.4088 -55.9429,-56.0448 z" | |
609 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
610 | - <path | |
611 | - inkscape:connector-curvature="0" | |
612 | - id="rect5245-8-6-2-9" | |
613 | - d="m 6545.5287,5202.6829 c -11.7363,-11.3217 -32.3801,-9.5656 -42.4593,3.1418 -19.5937,19.9946 -39.9139,39.3349 -59.0767,59.7178 -9.5513,12.3449 -6.4556,31.438 5.7819,40.9772 19.6941,19.3922 38.7293,39.519 58.8119,58.4788 12.4118,9.6084 31.3584,6.4621 40.8704,-5.797 19.3229,-19.7402 39.4821,-38.8781 58.3264,-58.9655 9.5617,-12.3467 6.4938,-31.475 -5.7378,-40.933 -18.8464,-18.8655 -37.6344,-37.7925 -56.5168,-56.6201 z" | |
614 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
615 | - <path | |
616 | - inkscape:connector-curvature="0" | |
617 | - id="rect5245-7-4-7-6" | |
618 | - d="m 6683.1903,5065.7678 c -11.6727,-11.8214 -32.6711,-10.2704 -42.9667,2.6331 -19.5831,19.9842 -39.9685,39.3886 -59.0767,59.7177 -9.5608,12.3477 -6.4907,31.4696 5.7376,40.9329 19.6964,19.4311 38.8692,39.5905 58.8782,58.5894 12.4019,9.5309 31.358,6.4013 40.8042,-5.8192 19.3581,-19.7586 39.4434,-38.8626 58.3704,-59.0098 9.5628,-12.3863 6.44,-31.439 -5.7818,-40.977 -18.6625,-18.6812 -37.2665,-37.4235 -55.9652,-56.0671 z" | |
619 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
620 | - <path | |
621 | - inkscape:connector-curvature="0" | |
622 | - id="rect5245-5-2-8-3" | |
623 | - d="m 6820.3665,5203.4794 c -11.6211,-11.8358 -32.7205,-10.3463 -42.9888,2.6109 -19.6161,19.9836 -39.9579,39.4428 -59.1429,59.7399 -9.5091,12.4948 -6.4432,31.3232 5.7819,40.8887 19.7364,19.4377 38.8215,39.6072 58.9443,58.6115 12.2819,9.5014 31.2571,6.4201 40.7379,-5.8413 19.38,-19.7479 39.4876,-38.9702 58.4367,-59.0319 9.212,-12.1115 6.6473,-30.6982 -5.1419,-40.247 -18.8831,-18.9025 -37.708,-37.8662 -56.6272,-56.7308 z" | |
624 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
625 | - <path | |
626 | - inkscape:connector-curvature="0" | |
627 | - id="rect5245-5-4-1-9-8" | |
628 | - d="m 6662,5332.625 c -15.2378,0.1612 -24.0529,14.157 -34.1146,23.4276 -15.476,15.9413 -31.8697,31.086 -46.7916,47.5099 -2.9405,4.2478 -4.8192,9.3664 -5.1563,14.4687 58.2812,-0.042 116.7292,0.083 174.9063,-0.062 -0.7632,-15.4178 -15.3649,-24.1142 -24.7148,-34.6559 -15.4837,-15.0104 -30.156,-31.1956 -46.0978,-45.5317 -5.23,-3.6558 -11.6538,-5.4746 -18.0312,-5.1562 z" | |
629 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
630 | - <path | |
631 | - inkscape:connector-curvature="0" | |
632 | - id="rect5245-5-4-4-4-1-5" | |
633 | - d="m 6387.75,5331.1875 c -12.8167,-0.2843 -21.9125,9.8823 -29.9201,18.4726 -16.9981,17.3803 -34.8059,34.2122 -51.3299,51.9024 -3.1649,4.3908 -5.2116,9.685 -5.5625,15.0313 58.2812,-0.042 116.7292,0.083 174.9063,-0.063 -0.723,-15.0722 -14.844,-23.7682 -24.0397,-33.9792 -15.7089,-15.2187 -30.5296,-31.6073 -46.7416,-46.1458 -5.0231,-3.5423 -11.1737,-5.3579 -17.3125,-5.2187 z" | |
634 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
635 | - <path | |
636 | - inkscape:connector-curvature="0" | |
637 | - id="rect5245-5-4-7-7-7-6" | |
638 | - d="m 6438.0625,5011.4375 c 0.8844,15.3847 15.3961,24.0874 24.746,34.5934 15.4791,14.996 30.0891,31.1552 46.0665,45.4691 12.3222,9.0732 30.8351,5.8023 40.1691,-6.1752 19.3539,-19.7366 39.5157,-38.9385 58.3934,-58.981 3.1742,-4.3805 5.1726,-9.6672 5.5625,-15.0313 -58.2707,0.083 -116.8752,-0.1665 -174.9375,0.125 z" | |
639 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
640 | - <path | |
641 | - inkscape:connector-curvature="0" | |
642 | - id="rect5245-5-4-7-4-6-5-1" | |
643 | - d="m 6701.375,5008.75 c 27.4204,26.9864 54.2733,54.7791 81.9688,81.3438 12.312,9.5662 31.425,6.3692 40.8246,-5.801 59.1737,-59.3365 118.4716,-118.5488 177.7691,-177.7616 -100.1875,34.073 -200.375,68.1459 -300.5625,102.2188 z" | |
644 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
645 | - <path | |
646 | - inkscape:connector-curvature="0" | |
647 | - id="rect5245-5-4-7-4-3-3-0-1" | |
648 | - d="m 6998.8438,4984.5938 c -47.3943,47.7404 -95.4006,94.9567 -142.5626,142.875 -10.1297,12.3088 -7.0115,31.8296 5.3324,41.3869 25.2451,25.1714 50.3907,50.4424 75.5426,75.7068 34.073,-100.1875 68.1459,-200.375 102.2188,-300.5625 -13.5104,13.5313 -27.0208,27.0625 -40.5312,40.5938 z" | |
649 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
650 | - <path | |
651 | - inkscape:connector-curvature="0" | |
652 | - id="rect5245-5-4-7-4-2-3-8-5" | |
653 | - d="m 6114.2812,5244.9062 c 26.8771,-27.2005 54.2641,-54.0149 80.875,-81.4062 10.0644,-12.3049 7.0844,-31.7597 -5.3634,-41.3871 -59.3365,-59.1737 -118.5488,-118.4717 -177.7616,-177.7691 34.0834,100.1874 68.1667,200.375 102.25,300.5624 z" | |
654 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
655 | - <path | |
656 | - inkscape:connector-curvature="0" | |
657 | - id="rect5245-5-4-7-4-3-5-8-2-9" | |
658 | - d="m 6090.125,4947.4375 c 47.677,47.4093 94.9671,95.3478 142.7812,142.5313 12.3096,10.0651 31.7648,7.1628 41.4222,-5.2972 25.2023,-25.2247 50.4579,-50.3961 75.7341,-75.5466 -100.1875,-34.0729 -200.375,-68.1458 -300.5625,-102.2188 13.5417,13.5105 27.0833,27.0209 40.625,40.5313 z" | |
659 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
660 | - </g> | |
661 | - <g | |
662 | - id="g5575-7-8-8" | |
663 | - transform="matrix(0.01545762,0,0,0.01545762,-84.564216,961.96398)" | |
664 | - style="fill:#d38d5f"> | |
665 | - <path | |
666 | - inkscape:connector-curvature="0" | |
667 | - id="rect5245-9-6-5-4" | |
668 | - d="m 6408.0436,5064.9271 c -11.726,-11.2912 -32.3679,-9.6218 -42.4594,3.1418 -19.6123,19.9856 -39.9641,39.4417 -59.1428,59.74 -9.518,12.5005 -6.3676,31.3823 5.826,40.9329 19.6892,19.3981 38.735,39.51 58.8119,58.4787 12.3484,9.5947 31.3846,6.505 40.8262,-5.7528 19.4803,-19.979 39.9713,-39.2016 58.856,-59.6292 9.0558,-12.4283 5.7503,-30.9531 -6.2232,-40.3134 -18.839,-18.8581 -37.6197,-37.7778 -56.4947,-56.598 z" | |
669 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
670 | - <path | |
671 | - inkscape:connector-curvature="0" | |
672 | - id="rect5245-3-6-2-0-8" | |
673 | - d="m 6271.4191,5203.1033 c -11.659,-11.815 -32.7156,-10.3098 -42.9669,2.6329 -19.7244,20.2091 -40.4303,39.6819 -59.5621,60.3374 -9.0337,12.4807 -5.8043,30.8944 6.2011,40.2912 19.927,19.5313 39.0995,40.0758 59.474,59.0098 12.4653,9.0761 30.8739,5.764 40.2082,-6.2396 19.3801,-19.7478 39.4876,-38.9701 58.4368,-59.0318 9.4652,-12.3353 6.4045,-31.4347 -5.8482,-40.9551 -18.655,-18.6738 -37.2518,-37.4088 -55.9429,-56.0448 z" | |
674 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
675 | - <path | |
676 | - inkscape:connector-curvature="0" | |
677 | - id="rect5245-8-6-2-9-1" | |
678 | - d="m 6545.5287,5202.6829 c -11.7363,-11.3217 -32.3801,-9.5656 -42.4593,3.1418 -19.5937,19.9946 -39.9139,39.3349 -59.0767,59.7178 -9.5513,12.3449 -6.4556,31.438 5.7819,40.9772 19.6941,19.3922 38.7293,39.519 58.8119,58.4788 12.4118,9.6084 31.3584,6.4621 40.8704,-5.797 19.3229,-19.7402 39.4821,-38.8781 58.3264,-58.9655 9.5617,-12.3467 6.4938,-31.475 -5.7378,-40.933 -18.8464,-18.8655 -37.6344,-37.7925 -56.5168,-56.6201 z" | |
679 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
680 | - <path | |
681 | - inkscape:connector-curvature="0" | |
682 | - id="rect5245-7-4-7-6-0" | |
683 | - d="m 6683.1903,5065.7678 c -11.6727,-11.8214 -32.6711,-10.2704 -42.9667,2.6331 -19.5831,19.9842 -39.9685,39.3886 -59.0767,59.7177 -9.5608,12.3477 -6.4907,31.4696 5.7376,40.9329 19.6964,19.4311 38.8692,39.5905 58.8782,58.5894 12.4019,9.5309 31.358,6.4013 40.8042,-5.8192 19.3581,-19.7586 39.4434,-38.8626 58.3704,-59.0098 9.5628,-12.3863 6.44,-31.439 -5.7818,-40.977 -18.6625,-18.6812 -37.2665,-37.4235 -55.9652,-56.0671 z" | |
684 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
685 | - <path | |
686 | - inkscape:connector-curvature="0" | |
687 | - id="rect5245-5-2-8-3-3" | |
688 | - d="m 6820.3665,5203.4794 c -11.6211,-11.8358 -32.7205,-10.3463 -42.9888,2.6109 -19.6161,19.9836 -39.9579,39.4428 -59.1429,59.7399 -9.5091,12.4948 -6.4432,31.3232 5.7819,40.8887 19.7364,19.4377 38.8215,39.6072 58.9443,58.6115 12.2819,9.5014 31.2571,6.4201 40.7379,-5.8413 19.38,-19.7479 39.4876,-38.9702 58.4367,-59.0319 9.212,-12.1115 6.6473,-30.6982 -5.1419,-40.247 -18.8831,-18.9025 -37.708,-37.8662 -56.6272,-56.7308 z" | |
689 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
690 | - <path | |
691 | - inkscape:connector-curvature="0" | |
692 | - id="rect5245-5-4-1-9-8-0" | |
693 | - d="m 6662,5332.625 c -15.2378,0.1612 -24.0529,14.157 -34.1146,23.4276 -15.476,15.9413 -31.8697,31.086 -46.7916,47.5099 -2.9405,4.2478 -4.8192,9.3664 -5.1563,14.4687 58.2812,-0.042 116.7292,0.083 174.9063,-0.062 -0.7632,-15.4178 -15.3649,-24.1142 -24.7148,-34.6559 -15.4837,-15.0104 -30.156,-31.1956 -46.0978,-45.5317 -5.23,-3.6558 -11.6538,-5.4746 -18.0312,-5.1562 z" | |
694 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
695 | - <path | |
696 | - inkscape:connector-curvature="0" | |
697 | - id="rect5245-5-4-4-4-1-5-4" | |
698 | - d="m 6387.75,5331.1875 c -12.8167,-0.2843 -21.9125,9.8823 -29.9201,18.4726 -16.9981,17.3803 -34.8059,34.2122 -51.3299,51.9024 -3.1649,4.3908 -5.2116,9.685 -5.5625,15.0313 58.2812,-0.042 116.7292,0.083 174.9063,-0.063 -0.723,-15.0722 -14.844,-23.7682 -24.0397,-33.9792 -15.7089,-15.2187 -30.5296,-31.6073 -46.7416,-46.1458 -5.0231,-3.5423 -11.1737,-5.3579 -17.3125,-5.2187 z" | |
699 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
700 | - <path | |
701 | - inkscape:connector-curvature="0" | |
702 | - id="rect5245-5-4-7-7-7-6-4" | |
703 | - d="m 6438.0625,5011.4375 c 0.8844,15.3847 15.3961,24.0874 24.746,34.5934 15.4791,14.996 30.0891,31.1552 46.0665,45.4691 12.3222,9.0732 30.8351,5.8023 40.1691,-6.1752 19.3539,-19.7366 39.5157,-38.9385 58.3934,-58.981 3.1742,-4.3805 5.1726,-9.6672 5.5625,-15.0313 -58.2707,0.083 -116.8752,-0.1665 -174.9375,0.125 z" | |
704 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
705 | - <path | |
706 | - inkscape:connector-curvature="0" | |
707 | - id="rect5245-5-4-7-4-6-5-1-4" | |
708 | - d="m 6701.375,5008.75 c 27.4204,26.9864 54.2733,54.7791 81.9688,81.3438 12.312,9.5662 31.425,6.3692 40.8246,-5.801 59.1737,-59.3365 118.4716,-118.5488 177.7691,-177.7616 -100.1875,34.073 -200.375,68.1459 -300.5625,102.2188 z" | |
709 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
710 | - <path | |
711 | - inkscape:connector-curvature="0" | |
712 | - id="rect5245-5-4-7-4-3-3-0-1-4" | |
713 | - d="m 6998.8438,4984.5938 c -47.3943,47.7404 -95.4006,94.9567 -142.5626,142.875 -10.1297,12.3088 -7.0115,31.8296 5.3324,41.3869 25.2451,25.1714 50.3907,50.4424 75.5426,75.7068 34.073,-100.1875 68.1459,-200.375 102.2188,-300.5625 -13.5104,13.5313 -27.0208,27.0625 -40.5312,40.5938 z" | |
714 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
715 | - <path | |
716 | - inkscape:connector-curvature="0" | |
717 | - id="rect5245-5-4-7-4-2-3-8-5-7" | |
718 | - d="m 6114.2812,5244.9062 c 26.8771,-27.2005 54.2641,-54.0149 80.875,-81.4062 10.0644,-12.3049 7.0844,-31.7597 -5.3634,-41.3871 -59.3365,-59.1737 -118.5488,-118.4717 -177.7616,-177.7691 34.0834,100.1874 68.1667,200.375 102.25,300.5624 z" | |
719 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
720 | - <path | |
721 | - inkscape:connector-curvature="0" | |
722 | - id="rect5245-5-4-7-4-3-5-8-2-9-6" | |
723 | - d="m 6090.125,4947.4375 c 47.677,47.4093 94.9671,95.3478 142.7812,142.5313 12.3096,10.0651 31.7648,7.1628 41.4222,-5.2972 25.2023,-25.2247 50.4579,-50.3961 75.7341,-75.5466 -100.1875,-34.0729 -200.375,-68.1458 -300.5625,-102.2188 13.5417,13.5105 27.0833,27.0209 40.625,40.5313 z" | |
724 | - style="fill:#d38d5f;fill-opacity:1;stroke:none" /> | |
725 | - </g> | |
726 | - </g> | |
727 | - <g | |
728 | - id="g4835" | |
729 | - style="stroke:url(#linearGradient4958)"> | |
730 | - <path | |
731 | - sodipodi:nodetypes="csccc" | |
732 | - id="path2210" | |
733 | - d="m 30.5,1049.8622 c 3,0 4.031657,-1.3115 7,-4 2.357963,-2.1356 6,-4 6,-8 0,5 -5,4 -10,4 0,4 1,8 -3,8 z" | |
734 | - style="color:#000000;fill:url(#linearGradient4602);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4960);stroke-width:1.00000024000000010;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" /> | |
735 | - <path | |
736 | - style="opacity:0.50000000000000000;color:#000000;fill:none;stroke:url(#linearGradient4968);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" | |
737 | - d="m 39.5,1042.8622 -5,0 0,4" | |
738 | - id="path2247" | |
739 | - sodipodi:nodetypes="ccc" /> | |
740 | - </g> | |
741 | - </g> | |
742 | -</svg> |
plugins/shopping_cart/public/style.css
... | ... | @@ -1,226 +0,0 @@ |
1 | -.cart-add-item .ui-icon-cart { | |
2 | - background: url("/plugins/shopping_cart/images/button-icon.png") no-repeat scroll left center transparent; | |
3 | - width: 22px; | |
4 | -} | |
5 | -.cart-buy .ui-icon-cart { | |
6 | - background: url("/plugins/shopping_cart/images/button-icon.png") no-repeat scroll left center transparent; | |
7 | - width: 22px; | |
8 | -} | |
9 | -.cart-add-item .ui-button-text { | |
10 | - padding-left: 2.6em; | |
11 | -} | |
12 | - | |
13 | -.product-item .cart-add-item { | |
14 | - top: 0px; | |
15 | -} | |
16 | - | |
17 | -.cart { | |
18 | - position: fixed; | |
19 | - right: 20px; | |
20 | - top: 0px; | |
21 | - width: 200px; | |
22 | - z-index: 1000; | |
23 | - border: 1px solid #777; | |
24 | - background: rgba(100,100,100,0.8); | |
25 | -} | |
26 | - | |
27 | -.cart h3 { | |
28 | - color: #000; | |
29 | - margin: 0px 0px 0px 5px; | |
30 | -} | |
31 | - | |
32 | -.cart-clean { | |
33 | - color: #AAA; | |
34 | - position: absolute; | |
35 | - top: 1px; | |
36 | - right: 5px; | |
37 | - text-decoration: none; | |
38 | -} | |
39 | -.cart-clean:hover { | |
40 | - color: #888; | |
41 | -} | |
42 | - | |
43 | -.cart-content { | |
44 | - display: none; | |
45 | -} | |
46 | - | |
47 | -.cart-items { | |
48 | - margin: 0px; | |
49 | - padding: 0px; | |
50 | - max-height: 328px; | |
51 | - overflow: auto; | |
52 | -} | |
53 | - | |
54 | -.cart-items li { | |
55 | - height: 50px; | |
56 | - padding: 5px; | |
57 | - margin: 3px; | |
58 | - border: 1px solid #999; | |
59 | - list-style: none; | |
60 | - background: #FFF; | |
61 | - position: relative; | |
62 | -} | |
63 | - | |
64 | -.cart-items .picture { | |
65 | - float: left; | |
66 | - width: 50px; | |
67 | - height: 50px; | |
68 | - margin-right: 10px; | |
69 | - background-repeat: no-repeat; | |
70 | - background-position: 50% 50%; | |
71 | -} | |
72 | - | |
73 | -.cart .item-name { | |
74 | - margin-right: 20px; | |
75 | -} | |
76 | - | |
77 | -.cart .button { | |
78 | - position: absolute; | |
79 | - top: 2px; | |
80 | - right: 2px; | |
81 | -} | |
82 | - | |
83 | -.cart input { | |
84 | - border: 1px solid transparent; | |
85 | - background: transparent 50% 50% no-repeat; | |
86 | - text-align: center; | |
87 | - padding: 0px; | |
88 | - font-family: monospace; | |
89 | - width: 2em; | |
90 | -} | |
91 | -.cart:hover input, .cart input:focus { | |
92 | - border: 1px solid #CCC; | |
93 | -} | |
94 | - | |
95 | -.cart-buy { | |
96 | - display: block; | |
97 | - margin: 2px 4px; | |
98 | -} | |
99 | - | |
100 | -.cart-total { | |
101 | - position: absolute; | |
102 | - left: 5px; | |
103 | - bottom: 0px; | |
104 | -} | |
105 | - | |
106 | -.cart-toggle { | |
107 | - display: block; | |
108 | - color: #AAA; | |
109 | - text-decoration: none; | |
110 | - float: right; | |
111 | - padding: 0px 5px; | |
112 | -} | |
113 | -.cart-toggle:hover { | |
114 | - color: #fff; | |
115 | -} | |
116 | - | |
117 | -#cart-request-box { | |
118 | - width: 690px; | |
119 | -} | |
120 | - | |
121 | -#cart-request-form { | |
122 | - width: 274px; | |
123 | - float: left; | |
124 | -} | |
125 | - | |
126 | -#cart-request-box .cart-box-close { | |
127 | - position: absolute; | |
128 | - right: 10px; | |
129 | - bottom: 10px; | |
130 | - width: 16px; | |
131 | - height: 16px; | |
132 | - background-repeat: no-repeat; | |
133 | -} | |
134 | - | |
135 | -#cart-form-main { | |
136 | - border: 2px solid #FFF; | |
137 | - padding: 0px 10px; | |
138 | -} | |
139 | - | |
140 | -#cart-request-form fieldset { | |
141 | - clear: left; | |
142 | - color: #999; | |
143 | - border: 1px solid #BBB; | |
144 | - margin-top: 5px; | |
145 | -} | |
146 | - | |
147 | -#cart-request-form input, | |
148 | -#cart-request-form select { | |
149 | - width: 250px; | |
150 | -} | |
151 | - | |
152 | -#cart-form-actions { | |
153 | - clear: both; | |
154 | - padding-top: 15px; | |
155 | - text-align: center; | |
156 | -} | |
157 | - | |
158 | -#cart-form-actions .submit { | |
159 | - cursor: pointer; | |
160 | -} | |
161 | - | |
162 | -#cart-items-table { | |
163 | - margin-left: 285px; | |
164 | - width: 400px | |
165 | -} | |
166 | - | |
167 | -.cart-table-quantity { | |
168 | - text-align: center; | |
169 | -} | |
170 | - | |
171 | -.cart-table-price, | |
172 | -.cart-table-total-label, | |
173 | -.cart-table-total-value { | |
174 | - text-align: right; | |
175 | -} | |
176 | - | |
177 | -label.error { | |
178 | - float: none; | |
179 | - color: red; | |
180 | - padding-left: .5em; | |
181 | - vertical-align: top; | |
182 | -} | |
183 | - | |
184 | -.controller-profile_editor a.control-panel-shopping-cart-purchase-report {background-image: url("/plugins/shopping_cart/images/control-panel/purchase-report.png")} | |
185 | -.controller-profile_editor .msie6 a.control-panel-shopping-cart-purchase-report {background-image: url("/plugins/shopping_cart/images/control-panel/purchase-report.gif")} | |
186 | -.controller-profile_editor a.control-panel-shopping-cart-icon {background-image: url("/plugins/shopping_cart/images/control-panel/icon.png")} | |
187 | -.controller-profile_editor .msie6 a.control-panel-shopping-cart-icon {background-image: url("/plugins/shopping_cart/images/control-panel/icon.gif")} | |
188 | - | |
189 | -.action-shopping_cart_plugin_myprofile-reports td.order-info { | |
190 | - padding: 0px; | |
191 | - height: auto; | |
192 | -} | |
193 | - | |
194 | -.action-shopping_cart_plugin_myprofile-reports .customer-details, | |
195 | -.action-shopping_cart_plugin_myprofile-reports .order-products { | |
196 | - list-style-position: inside; | |
197 | - float: left; | |
198 | - width: 49%; | |
199 | - margin: 0px; | |
200 | - padding: 10px 0px; | |
201 | -} | |
202 | - | |
203 | -.action-shopping_cart_plugin_myprofile-reports .order-products { | |
204 | - float: right; | |
205 | -} | |
206 | - | |
207 | -.action-shopping_cart_plugin_myprofile-reports .customer-details li, | |
208 | -.action-shopping_cart_plugin_myprofile-reports .order-products li { | |
209 | - padding-left: 5px; | |
210 | -} | |
211 | - | |
212 | -#cart-order-filter { | |
213 | - background-color: #ccc; | |
214 | - border: 1px solid #aaa; | |
215 | - border-radius: 5px; | |
216 | - padding: 3px 8px; | |
217 | - margin-bottom: 10px; | |
218 | -} | |
219 | - | |
220 | -th { | |
221 | - text-align: center; | |
222 | -} | |
223 | - | |
224 | -td { | |
225 | - text-align: left; | |
226 | -} |
... | ... | @@ -0,0 +1,289 @@ |
1 | +.cart-add-item .ui-icon-cart, | |
2 | +.cart-buy .ui-icon-cart, | |
3 | +.icon-cart, .btn.icon-cart { | |
4 | + background-image: url("/plugins/shopping_cart/images/button-icon.png"); | |
5 | + background-repeat: no-repeat; | |
6 | + background-position: 5px center; | |
7 | +} | |
8 | +.cart-add-item.small-loading { | |
9 | + background-image: url(/images/loading-small.gif); | |
10 | +} | |
11 | + | |
12 | +a.button.with-text.icon-cart, | |
13 | +a.button.with-text.icon-cart:visited, | |
14 | +body.noosfero a.button.with-text.icon-cart, | |
15 | +body.noosfero a.button.with-text.icon-cart:visited, | |
16 | +input.button.with-text.icon-cart, | |
17 | +.icon-cart, .btn.icon-cart { | |
18 | + padding-left: 30px; | |
19 | +} | |
20 | +.catalog-autocomplete .cart-add-item { | |
21 | + display: block; | |
22 | + float: right; | |
23 | +} | |
24 | +.cart-add-item .ui-button-text { | |
25 | + padding-left: 2.6em; | |
26 | +} | |
27 | +.product-item .cart-add-item { | |
28 | + top: 0px; | |
29 | +} | |
30 | + | |
31 | + | |
32 | +.action-shopping_cart_plugin-buy .cart { | |
33 | + display: none !important; | |
34 | +} | |
35 | +.cart { | |
36 | + display: none; | |
37 | + position: fixed; | |
38 | + right: 20px; | |
39 | + top: 0px; | |
40 | + z-index: 100; | |
41 | +} | |
42 | +.cart-minimized { | |
43 | + float: right; | |
44 | + position: relative; | |
45 | +} | |
46 | +#catalog-options ul .catalog-cart { | |
47 | + float: right; | |
48 | + margin: 0; | |
49 | +} | |
50 | +#cart1 .cart-inner { | |
51 | + width: 200px; | |
52 | + z-index: 1000; | |
53 | + border: 1px solid #777; | |
54 | + border-radius: 10px; | |
55 | + box-shadow: #000 2px 2px 8px; | |
56 | + background: rgba(130,130,130,0.9); | |
57 | +} | |
58 | +.cart .cart-inner { | |
59 | + position: relative; | |
60 | + top: 2px; | |
61 | + padding-bottom: 20px; | |
62 | +} | |
63 | +.cart .cart-inner .cart-content { | |
64 | + display: none; | |
65 | +} | |
66 | +.cart-minimized .cart-inner { | |
67 | + display: none; | |
68 | + position: absolute; | |
69 | + top: 24px; | |
70 | + left: -150px; | |
71 | +} | |
72 | +.cart-minimized .cart-applet { | |
73 | + float: right; | |
74 | + text-align: center; | |
75 | +} | |
76 | +#content .cart-minimized .cart-applet .cart-highlight { | |
77 | + background-color: yellow; | |
78 | +} | |
79 | +.cart-minimized .cart-applet-checkout, .cart-minimized .cart-applet-checkout-disabled { | |
80 | + display: block; | |
81 | + font-size: 80%; | |
82 | + margin-top: 3px; | |
83 | +} | |
84 | +.cart-minimized .cart-applet-checkout-disabled { | |
85 | + pointer-events: none; | |
86 | + cursor: default; | |
87 | + color: #CCC; | |
88 | + text-decoration: none; | |
89 | +} | |
90 | +.cart-qtty { | |
91 | + font-weight: bold; | |
92 | +} | |
93 | +#cart1 h3 { | |
94 | + color: #036276; | |
95 | + margin: 0px 0px 0px 5px; | |
96 | + font-weight: lighter; | |
97 | +} | |
98 | +#cart-profile-name { | |
99 | + white-space: nowrap; | |
100 | + text-overflow: ellipsis; | |
101 | + overflow: hidden; | |
102 | + margin: 0px 5px; | |
103 | + color: #000; | |
104 | +} | |
105 | +.cart-clean { | |
106 | + color: #AAA; | |
107 | + position: absolute; | |
108 | + top: 1px; | |
109 | + right: 5px; | |
110 | + text-decoration: none; | |
111 | +} | |
112 | +.cart-clean:hover { | |
113 | + color: #888; | |
114 | +} | |
115 | +.cart-items { | |
116 | + margin: 0px; | |
117 | + padding: 0px; | |
118 | + max-height: 328px; | |
119 | + overflow-y: auto; | |
120 | + overflow-x: hidden; | |
121 | +} | |
122 | +#catalog-options .cart-items { | |
123 | + padding: 0; | |
124 | + margin: 0; | |
125 | +} | |
126 | +#catalog-options .cart-items li { | |
127 | + margin-right: 0; | |
128 | +} | |
129 | +.cart-items li { | |
130 | + padding: 0; | |
131 | + border: 2px solid #999; | |
132 | + width: 98%; | |
133 | + list-style: none; | |
134 | + background: #FFF; | |
135 | + position: relative; | |
136 | + border-radius: 5px; | |
137 | + font-size: 85%; | |
138 | + min-height: 50px; | |
139 | +} | |
140 | +.cart-items .picture { | |
141 | + float: left; | |
142 | + width: 50px; | |
143 | + height: 50px; | |
144 | + margin-right: 10px; | |
145 | + background-repeat: no-repeat; | |
146 | + background-position: 50% 50%; | |
147 | +} | |
148 | +#cart1 .item-name { | |
149 | + margin-right: 0; | |
150 | +} | |
151 | +.cart-items .cart-remove-item { | |
152 | + float: right; | |
153 | +} | |
154 | + | |
155 | +#cart1 input { | |
156 | + border: 1px solid transparent; | |
157 | + background: transparent 50% 50% no-repeat; | |
158 | + text-align: center; | |
159 | + padding: 0px; | |
160 | + font-family: monospace; | |
161 | + width: 2em; | |
162 | +} | |
163 | +#cart1:hover input, #cart1 input:focus { | |
164 | + border: 1px solid #CCC; | |
165 | +} | |
166 | +.cart-buy { | |
167 | + display: block; | |
168 | + margin: 2px 4px; | |
169 | +} | |
170 | +.cart-total { | |
171 | + float: left; | |
172 | +} | |
173 | +.cart-toggle, .cart-toggle:visited { | |
174 | + display: block; | |
175 | + color: #036276; | |
176 | + text-decoration: none; | |
177 | + float: right; | |
178 | + padding: 0px 5px; | |
179 | +} | |
180 | +.cart-toggle:hover { | |
181 | + color: #fff; | |
182 | +} | |
183 | +.str-hide { | |
184 | + display: none; | |
185 | +} | |
186 | + | |
187 | +#cart-request-box { | |
188 | + overflow: hidden; | |
189 | +} | |
190 | +#cart-request-box a { | |
191 | + font-size: smaller; | |
192 | +} | |
193 | +#cart-request-form { | |
194 | +} | |
195 | +#cart-request-box .cart-box-close { | |
196 | + position: absolute; | |
197 | + right: 10px; | |
198 | + bottom: 10px; | |
199 | + width: 16px; | |
200 | + height: 16px; | |
201 | + background-repeat: no-repeat; | |
202 | +} | |
203 | +#cart-request-box .cart-go-back { | |
204 | + float: right; | |
205 | + text-transform: none; | |
206 | + font-variant: normal; | |
207 | +} | |
208 | + | |
209 | +#cart-request-form fieldset { | |
210 | + clear: left; | |
211 | + color: #999; | |
212 | + margin-top: 5px; | |
213 | +} | |
214 | + | |
215 | +#cart-request-form input, | |
216 | +#cart-request-form select { | |
217 | +} | |
218 | + | |
219 | +#cart-form-actions { | |
220 | + clear: both; | |
221 | + padding-top: 15px; | |
222 | + text-align: center; | |
223 | +} | |
224 | + | |
225 | +#cart-form-actions .submit { | |
226 | + cursor: pointer; | |
227 | +} | |
228 | + | |
229 | +#cart-items-table { | |
230 | +} | |
231 | + | |
232 | +.cart-table-quantity { | |
233 | + text-align: center; | |
234 | +} | |
235 | + | |
236 | +.cart-table-price, | |
237 | +.cart-table-total-label, | |
238 | +.cart-table-total-value { | |
239 | + text-align: right; | |
240 | +} | |
241 | +label.error { | |
242 | + float: none; | |
243 | + color: red; | |
244 | + padding-left: .5em; | |
245 | + vertical-align: top; | |
246 | +} | |
247 | + | |
248 | +.controller-profile_editor a.control-panel-shopping-cart-icon {background-image: url("/plugins/shopping_cart/images/control-panel/icon.png")} | |
249 | +.controller-profile_editor .msie6 a.control-panel-shopping-cart-icon {background-image: url("/plugins/shopping_cart/images/control-panel/icon.gif")} | |
250 | + | |
251 | +.action-shopping_cart_plugin_myprofile-reports td.order-info { | |
252 | + padding: 0px; | |
253 | + height: auto; | |
254 | +} | |
255 | +.action-shopping_cart_plugin_myprofile-reports .customer-details, | |
256 | +.action-shopping_cart_plugin_myprofile-reports .order-products { | |
257 | + list-style-position: inside; | |
258 | + float: left; | |
259 | + width: 49%; | |
260 | + margin: 0px; | |
261 | + padding: 10px 0px; | |
262 | +} | |
263 | +.action-shopping_cart_plugin_myprofile-reports .order-products { | |
264 | + float: right; | |
265 | +} | |
266 | +.action-shopping_cart_plugin_myprofile-reports .customer-details li, | |
267 | +.action-shopping_cart_plugin_myprofile-reports .order-products li { | |
268 | + padding-left: 5px; | |
269 | +} | |
270 | +#cart-order-filter { | |
271 | + background-color: #ccc; | |
272 | + border: 1px solid #aaa; | |
273 | + border-radius: 5px; | |
274 | + padding: 3px 8px; | |
275 | + margin-bottom: 10px; | |
276 | +} | |
277 | +th { | |
278 | + text-align: center; | |
279 | +} | |
280 | +td { | |
281 | + text-align: left; | |
282 | +} | |
283 | +/* Repeat orders */ | |
284 | +a.button.repeat-checkout-order, a.button.repeat-choose-order { | |
285 | + display: block; | |
286 | + margin: 0 5px 5px 40px; | |
287 | + font-size: 80%; | |
288 | + background-color: #ffc64c; | |
289 | +} | ... | ... |
plugins/shopping_cart/test/functional/shopping_cart_plugin_controller_test.rb
... | ... | @@ -154,29 +154,29 @@ class ShoppingCartPluginControllerTest < ActionController::TestCase |
154 | 154 | product1 = fast_create(Product, :profile_id => profile.id, :price => 1.99) |
155 | 155 | product2 = fast_create(Product, :profile_id => profile.id, :price => 2.23) |
156 | 156 | @controller.stubs(:cart).returns({ :profile_id => profile.id, :items => {product1.id => 1, product2.id => 2}}) |
157 | - assert_difference 'ShoppingCartPlugin::PurchaseOrder.count', 1 do | |
157 | + assert_difference 'OrdersPlugin::Order.count', 1 do | |
158 | 158 | post :send_request, |
159 | 159 | :customer => {:name => "Manuel", :email => "manuel@ceu.com"} |
160 | 160 | end |
161 | 161 | |
162 | - order = ShoppingCartPlugin::PurchaseOrder.last | |
162 | + order = OrdersPlugin::Order.last | |
163 | 163 | |
164 | 164 | assert_equal 1.99, order.products_list[product1.id][:price] |
165 | 165 | assert_equal 1, order.products_list[product1.id][:quantity] |
166 | 166 | assert_equal 2.23, order.products_list[product2.id][:price] |
167 | 167 | assert_equal 2, order.products_list[product2.id][:quantity] |
168 | - assert_equal ShoppingCartPlugin::PurchaseOrder::Status::OPENED, order.status | |
168 | + assert_equal 'confirmed', order.status | |
169 | 169 | end |
170 | 170 | |
171 | 171 | should 'register order on send request and not crash if product is not defined' do |
172 | 172 | product1 = fast_create(Product, :profile_id => profile.id) |
173 | 173 | @controller.stubs(:cart).returns({ :profile_id => profile.id, :items => {product1.id => 1}}) |
174 | - assert_difference 'ShoppingCartPlugin::PurchaseOrder.count', 1 do | |
174 | + assert_difference 'OrdersPlugin::Order.count', 1 do | |
175 | 175 | post :send_request, |
176 | 176 | :customer => {:name => "Manuel", :email => "manuel@ceu.com"} |
177 | 177 | end |
178 | 178 | |
179 | - order = ShoppingCartPlugin::PurchaseOrder.last | |
179 | + order = OrdersPlugin::Order.last | |
180 | 180 | |
181 | 181 | assert_equal 0, order.products_list[product1.id][:price] |
182 | 182 | end | ... | ... |
plugins/shopping_cart/test/functional/shopping_cart_plugin_myprofile_controller_test.rb
... | ... | @@ -51,6 +51,7 @@ class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase |
51 | 51 | assert settings.delivery_price == price.to_s |
52 | 52 | end |
53 | 53 | |
54 | + # FIXME | |
54 | 55 | should 'be able to choose delivery_options' do |
55 | 56 | delivery_options = {:options => ['car', 'bike'], :prices => ['20', '5']} |
56 | 57 | post :edit, :profile => profile.identifier, :settings => {:delivery_options => delivery_options} |
... | ... | @@ -61,18 +62,18 @@ class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase |
61 | 62 | |
62 | 63 | should 'filter the reports correctly' do |
63 | 64 | another_profile = fast_create(Enterprise) |
64 | - po1 = ShoppingCartPlugin::PurchaseOrder.create!(:seller => profile, :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED) | |
65 | - po2 = ShoppingCartPlugin::PurchaseOrder.create!(:seller => profile, :status => ShoppingCartPlugin::PurchaseOrder::Status::SHIPPED) | |
66 | - po3 = ShoppingCartPlugin::PurchaseOrder.create!(:seller => profile, :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED) | |
65 | + po1 = OrdersPlugin::Sale.create! :profile => profile, :status => 'confirmed' | |
66 | + po2 = OrdersPlugin::Sale.create! :profile => profile, :status => 'shipped' | |
67 | + po3 = OrdersPlugin::Sale.create! :profile => profile, :status => 'confirmed' | |
67 | 68 | po3.created_at = 1.year.ago |
68 | 69 | po3.save! |
69 | - po4 = ShoppingCartPlugin::PurchaseOrder.create!(:seller => another_profile, :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED) | |
70 | + po4 = OrdersPlugin::Sale.create! :profile => another_profile, :status => 'confirmed' | |
70 | 71 | |
71 | 72 | post :reports, |
72 | 73 | :profile => profile.identifier, |
73 | 74 | :from => (Time.now - 1.day).strftime(TIME_FORMAT), |
74 | 75 | :to => (Time.now + 1.day).strftime(TIME_FORMAT), |
75 | - :filter_status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED | |
76 | + :filter_status => 'confirmed' | |
76 | 77 | |
77 | 78 | assert_includes assigns(:orders), po1 |
78 | 79 | assert_not_includes assigns(:orders), po2 |
... | ... | @@ -86,14 +87,14 @@ class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase |
86 | 87 | p3 = fast_create(Product, :profile_id => profile.id, :price => 3) |
87 | 88 | po1_products = {p1.id => {:quantity => 1, :price => p1.price, :name => p1.name}, p2.id => {:quantity => 2, :price => p2.price, :name => p2.name }} |
88 | 89 | po2_products = {p2.id => {:quantity => 1, :price => p2.price, :name => p2.name }, p3.id => {:quantity => 2, :price => p3.price, :name => p3.name}} |
89 | - po1 = ShoppingCartPlugin::PurchaseOrder.create!(:seller => profile, :products_list => po1_products, :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED) | |
90 | - po2 = ShoppingCartPlugin::PurchaseOrder.create!(:seller => profile, :products_list => po2_products, :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED) | |
90 | + po1 = OrdersPlugin::Sale.create! :profile => profile, :products_list => po1_products, :status => 'confirmed' | |
91 | + po2 = OrdersPlugin::Sale.create! :profile => profile, :products_list => po2_products, :status => 'confirmed' | |
91 | 92 | |
92 | 93 | post :reports, |
93 | 94 | :profile => profile.identifier, |
94 | 95 | :from => (Time.now - 1.day).strftime(TIME_FORMAT), |
95 | 96 | :to => (Time.now + 1.day).strftime(TIME_FORMAT), |
96 | - :filter_status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED | |
97 | + :filter_status => 'confirmed' | |
97 | 98 | |
98 | 99 | lineitem1 = ShoppingCartPlugin::LineItem.new(p1.id, p1.name) |
99 | 100 | lineitem1.quantity = 1 |
... | ... | @@ -107,20 +108,20 @@ class ShoppingCartPluginMyprofileControllerTest < ActionController::TestCase |
107 | 108 | end |
108 | 109 | |
109 | 110 | should 'be able to update the order status' do |
110 | - po = ShoppingCartPlugin::PurchaseOrder.create!(:seller => profile, :status => ShoppingCartPlugin::PurchaseOrder::Status::OPENED) | |
111 | + po = OrdersPlugin::Sale.create!(:profile => profile, :status => 'confirmed') | |
111 | 112 | |
112 | 113 | post :update_order_status, |
113 | 114 | :profile => profile.identifier, |
114 | 115 | :order_id => po.id, |
115 | - :order_status => ShoppingCartPlugin::PurchaseOrder::Status::CONFIRMED | |
116 | + :order_status => 'confirmed' | |
116 | 117 | po.reload |
117 | - assert_equal ShoppingCartPlugin::PurchaseOrder::Status::CONFIRMED, po.status | |
118 | + assert_equal 'confirmed', po.status | |
118 | 119 | end |
119 | 120 | |
120 | 121 | private |
121 | 122 | |
122 | 123 | def settings |
123 | 124 | @profile.reload |
124 | - Noosfero::Plugin::Settings.new(@profile, ShoppingCartPlugin) | |
125 | + profile.shopping_cart_settings | |
125 | 126 | end |
126 | 127 | end | ... | ... |
plugins/shopping_cart/test/unit/shopping_cart_plugin_test.rb
... | ... | @@ -28,7 +28,7 @@ class ShoppingCartPluginTest < ActiveSupport::TestCase |
28 | 28 | |
29 | 29 | should 'be disabled by default on the enterprise' do |
30 | 30 | profile = fast_create(Enterprise) |
31 | - settings = Noosfero::Plugin::Settings.new(profile, ShoppingCartPlugin) | |
31 | + settings = profile.shopping_cart_settings | |
32 | 32 | assert !settings.enabled |
33 | 33 | end |
34 | 34 | end | ... | ... |
plugins/shopping_cart/views/cart.html.erb
... | ... | @@ -1,30 +0,0 @@ |
1 | -<div id="cart1" class="cart" style="display:none"> | |
2 | - <div class="cart-inner"> | |
3 | - <div class="cart-content"> | |
4 | - <h3><%= _("Basket") %></h3> | |
5 | - <a href="cart:clean" onclick="Cart.clean(this); return false" class="cart-clean"><%=_('Clean basket')%></a> | |
6 | - <ul class="cart-items"></ul> | |
7 | - <div class="cart-total"><%=_('Total:')%> <b></b></div> | |
8 | - <a href="/plugin/shopping_cart/buy" class="cart-buy modal"><%=_('Shopping checkout')%></a> | |
9 | - </div> | |
10 | - <a href="#" onclick="Cart.toggle(this); return false" class="cart-toggle"> | |
11 | - <span class="str-show"><%=_('Show basket')%></span> | |
12 | - <span class="str-hide" style="display:none"><%=_('Hide basket')%></span> | |
13 | - </a> | |
14 | - </div> | |
15 | -</div> | |
16 | -<script> | |
17 | - var shoppingCartPluginL10n = { | |
18 | - getProblemConfirmReload: <%= ( | |
19 | - _('Ups... I had a problem to load the basket list.') + | |
20 | - "\n" + | |
21 | - _('Did you want to reload this page?') | |
22 | - ).to_json %>, | |
23 | - maxNumberOfItens: <%= ( | |
24 | - _('Sorry, you can\'t have more then 100 kinds of items on this basket.') | |
25 | - ).to_json %>, | |
26 | - waitLastRequest: <%= _('Oops, you must wait your last request to finish first!').to_json %>, | |
27 | - removeItem: <%= _('Are you sure you want to remove this item?').to_json %>, | |
28 | - cleanCart: <%= _('Are you sure you want to clean your basket?').to_json %> | |
29 | - } | |
30 | -</script> |
... | ... | @@ -0,0 +1,82 @@ |
1 | +<div id="cart1" class="cart<%= '-minimized' if cart_minimized %>"> | |
2 | + <% if cart_minimized %> | |
3 | + <div class="cart-applet"> | |
4 | + <%= cart_applet %> | |
5 | + | |
6 | + <%= link_to _('Shopping checkout'), "/plugin/shopping_cart/buy", class: 'cart-applet-checkout' %> | |
7 | + <span class="cart-applet-checkout-disabled"> | |
8 | + <%= _('Basket is empty') %> | |
9 | + </span> | |
10 | + </div> | |
11 | + <% end %> | |
12 | + <div class="cart-inner"> | |
13 | + <div class="cart-content"> | |
14 | + <h3><%= _("Basket") %></h3> | |
15 | + <div id="cart-profile-name"></div> | |
16 | + <a href="cart:clean" onclick="cart.clean(); return false" class="cart-clean"><%=_('Clean basket')%></a> | |
17 | + <ul class="cart-items"> | |
18 | + </ul> | |
19 | + <%= button 'cart', _('Shopping checkout'), "/plugin/shopping_cart/buy", :class => 'cart-buy modal-toggle' %> | |
20 | + <div class="cart-total"><%=_('Total:')%> <b></b></div> | |
21 | + </div> | |
22 | + <a href="#" onclick="cart.toggle(); return false" class="cart-toggle"> | |
23 | + <span class="str-show"><%=_('Show basket')%></span> | |
24 | + <span class="str-hide"><%=_('Hide basket')%></span> | |
25 | + </a> | |
26 | + </div> | |
27 | + | |
28 | + <script id="cart-item-template" type="text/template"> | |
29 | + <li id="cart-item-{{item.id}}"> | |
30 | + <%= button_to_function_without_text 'remove', '', "Cart.removeItem({{item.id}}); return false", :class => 'cart-remove-item' %> | |
31 | + <div class="picture" style="background-image:url({{item.picture}})"></div> | |
32 | + <span class="item-name">{{item.name}}</span> | |
33 | + <div class="item-price"> | |
34 | + <input size="1" value="{{item.quantity}}" />{{item.priceTxt}} | |
35 | + </div> | |
36 | + </li> | |
37 | + </script> | |
38 | +</div> | |
39 | + | |
40 | +<script type="text/javascript"> | |
41 | +jQuery(function($) { | |
42 | + Cart.l10n = { | |
43 | + getProblemConfirmReload: <%= ( | |
44 | + _('Ups... I had a problem to load the basket list.') + | |
45 | + "\n" + | |
46 | + _('Did you want to reload this page?') | |
47 | + ).to_json %>, | |
48 | + maxNumberOfItens: <%= ( | |
49 | + _('Sorry, you can\'t have more then 100 kinds of items on this basket.') | |
50 | + ).to_json %>, | |
51 | + waitLastRequest: <%= _('Oops, you must wait your last request to finish first!').to_json %>, | |
52 | + removeItem: <%= _('Are you sure you want to remove this item?').to_json %>, | |
53 | + cleanCart: <%= _('Are you sure you want to clean your basket?').to_json %>, | |
54 | + repeatOrder: <%= _('repeat order').to_json %>, | |
55 | + } | |
56 | + // boolean configuration that defines if the behaviour of the cart is "minimized" or "full" | |
57 | + Cart.minimized = <%= cart_minimized.to_json %> | |
58 | + | |
59 | + $.ajax({ | |
60 | + url: "/plugin/shopping_cart/get?profile_id="+<%= profile.id.to_json rescue ''.to_json %>, | |
61 | + dataType: 'json', | |
62 | + success: function(data) { | |
63 | + cart = new Cart(data); | |
64 | + }, | |
65 | + cache: false, | |
66 | + error: function(ajax, status, errorThrown) { | |
67 | + // Give some time to register page unload. | |
68 | + setTimeout(function() { | |
69 | + // page unload is not our problem. | |
70 | + if (Cart.unloadingPage) { | |
71 | + log('Page unload before cart load.'); | |
72 | + } else { | |
73 | + log.error('Error getting shopping cart - HTTP '+status, errorThrown); | |
74 | + if ( confirm(Cart.l10n.getProblemConfirmReload) ) { | |
75 | + document.location.reload(); | |
76 | + } | |
77 | + } | |
78 | + }, 100); | |
79 | + } | |
80 | + }); | |
81 | +}); | |
82 | +</script> | ... | ... |
plugins/shopping_cart/views/shopping_cart_plugin/_items.html.erb
0 → 100644
... | ... | @@ -0,0 +1,47 @@ |
1 | +<table id="cart-items-table" cellpadding="2" cellspacing="0" | |
2 | + border="<%= if by_mail then 1 else 0 end %>" | |
3 | + style="<%= 'border-collapse: collapse' if by_mail %>"> | |
4 | + | |
5 | + <tr> | |
6 | + <th> | |
7 | + <%= _('Item name') %> | |
8 | + </th> | |
9 | + <th> | |
10 | + <%= if by_mail then ' # ' else '#' end %> | |
11 | + </th> | |
12 | + <th> | |
13 | + <%= _('Price') + " (#{@environment.currency_unit})" %> | |
14 | + </th> | |
15 | + </tr> | |
16 | + | |
17 | + <% order.items.each do |item| %> | |
18 | + <tr> | |
19 | + <td> | |
20 | + <%= item.name %> | |
21 | + </td> | |
22 | + <td class='cart-table-quantity' align="<%= 'center' if by_mail %>"> | |
23 | + <%= item.quantity_consumer_ordered %> | |
24 | + </td> | |
25 | + <td class='cart-table-price' align="<%= 'right' if by_mail %>"> | |
26 | + <%= get_price item.product, @environment, item.quantity_consumer_ordered, unit: '' %> | |
27 | + </td> | |
28 | + | |
29 | + </tr> | |
30 | + <% end %> | |
31 | + | |
32 | + <tr> | |
33 | + <td colspan=2 id='delivery-name'> | |
34 | + <%= order.supplier_delivery.name if order.supplier_delivery %> | |
35 | + </td> | |
36 | + <td id='delivery-price' class="cart-table-price"> | |
37 | + <%= float_to_currency_cart order.supplier_delivery.cost(order.total_price), @environment, unit: '' if order.supplier_delivery %> | |
38 | + </td> | |
39 | + </tr> | |
40 | + | |
41 | + <th colspan=2 class="cart-table-total-label"> | |
42 | + <%= _('Total:') %> | |
43 | + </th> | |
44 | + <th class="cart-table-total-value"> | |
45 | + <%= float_to_currency_cart order.total, @environment %> | |
46 | + </th> | |
47 | +</table> | ... | ... |
plugins/shopping_cart/views/shopping_cart_plugin/buy.html.erb
1 | -<div id='cart-request-box'> | |
2 | - <%= form_for(:customer, :url => {:action => 'send_request'}, | |
3 | - :html => {:onsubmit => "return Cart.send_request(this)", :id => 'cart-request-form'}) do |f| %> | |
4 | - <div id="cart-form-main"> | |
5 | - <%= labelled_form_field('* ' + _("Name"), f.text_field(:name, :class => 'required') ) %> | |
6 | - <%= labelled_form_field('* ' + c_("Email"), f.text_field(:email, :class => 'required email') ) %> | |
7 | - <%= labelled_form_field('* ' + c_("Contact phone"), f.text_field(:contact_phone, :class => 'required') ) %> | |
8 | - <%= labelled_form_field(_('Delivery option'), select_tag(:delivery_option, options_for_select(select_delivery_options(@settings.delivery_options, environment)), 'data-profile-identifier' => @profile.identifier)) unless !@settings.delivery || (@settings.free_delivery_price && get_total(@cart[:items]) >= @settings.free_delivery_price) %> | |
9 | - <%= labelled_form_field(_('Payment'), select_tag('customer[payment]', options_for_select([[_("Money"), :money],[_('shopping_cart|Check'), :check]]))) %> | |
10 | - <%= labelled_form_field(s_('shopping_cart|Change'), text_field_tag('customer[change]')) %> | |
1 | +<div id='cart-request-box' class="row"> | |
2 | + <h1> | |
3 | + <%= _('Shopping checkout') %> | |
4 | + <%= button :back, _("haven't finished yet: back to shopping"), 'javascript:history.back()', class: 'cart-go-back' %> | |
5 | + </h1> | |
6 | + | |
7 | + <%= form_for :order, url: {action: :send_request}, | |
8 | + html: {onsubmit: "return Cart.send_request(this)", id: 'cart-request-form'} do |f| %> | |
9 | + | |
10 | + <div class="col-lg-6 col-md-6 col-sm-6"> | |
11 | + <fieldset> | |
12 | + <legend><%=_('Personal identification')%></legend> | |
13 | + | |
14 | + <%= f.fields_for :consumer_data, @order.consumer do |ff| %> | |
15 | + <%= labelled_form_field('* ' + _("Name"), ff.text_field(:name, value: (user.name if user), class: 'required') ) %> | |
16 | + <%= labelled_form_field('* ' + _("Email"), ff.text_field(:email, value: (user.email if user), class: 'required email') ) %> | |
17 | + <%= labelled_form_field('* ' + _("Contact phone"), ff.text_field(:contact_phone, value: (user.contact_phone if user), class: 'required') ) %> | |
18 | + <% end %> | |
19 | + </fieldset> | |
20 | + | |
21 | + <fieldset> | |
22 | + <legend><%=_("Payment's method")%></legend> | |
23 | + | |
24 | + <%= f.fields_for :payment_data do |ff| %> | |
25 | + <%= labelled_form_field _('Payment'), ff.select(:method, options_for_payment) %> | |
26 | + <%= labelled_form_field(s_('shopping_cart|Change'), ff.text_field(:change)) %> | |
27 | + <% end %> | |
28 | + </fieldset> | |
29 | + | |
30 | + <% if profile.delivery_methods.size > 0 %> | |
31 | + <fieldset> | |
32 | + <legend><%=_('Delivery or pickup method')%></legend> | |
33 | + <%= render 'delivery_plugin/order_select', f: f, order: @order %> | |
34 | + </fieldset> | |
35 | + <% end %> | |
11 | 36 | </div> |
12 | - <% if @settings.delivery %> | |
13 | - <fieldset><legend><%=_('Delivery Address')%></legend> | |
14 | - <%= labelled_form_field(c_('Address (street and number)'), f.text_field(:address)) %> | |
15 | - <%= labelled_form_field(c_('Address reference'), f.text_field(:address_reference)) %> | |
16 | - <%= labelled_form_field(c_('District'), f.text_field(:district)) %> | |
17 | - <%= labelled_form_field( c_("City"), f.text_field(:city)) %> | |
18 | - <%= labelled_form_field(c_('ZIP code'), f.text_field(:zip_code)) %> | |
37 | + | |
38 | + <div class="col-lg-6 col-md-6 col-sm-6"> | |
39 | + <fieldset> | |
40 | + <legend><%=s_('Your Order')%></legend> | |
41 | + <% supplier_delivery = @order.supplier_delivery || profile.delivery_methods.first %> | |
42 | + <%= items_table @cart[:items], @profile, supplier_delivery %> | |
19 | 43 | </fieldset> |
20 | - <% end %> | |
21 | - <div id="cart-form-actions"> | |
44 | + </div> | |
45 | + | |
46 | + <div id="cart-form-actions" class="row"> | |
22 | 47 | <%= submit_button(:send, _('Send buy request')) %> |
23 | 48 | </div> |
24 | 49 | <% end %> |
25 | - <% delivery_option = @settings.delivery_options.first && @settings.delivery_options.first.first %> | |
26 | - <%= items_table(@cart[:items], @profile, delivery_option) %> | |
27 | - <%= link_to_function '', "noosfero.modal.close();", :class => 'cart-box-close icon-cancel' %> | |
28 | 50 | </div> |
29 | 51 | |
30 | 52 | <%= javascript_include_tag '../plugins/shopping_cart/buy' %> |
53 | + | ... | ... |
plugins/shopping_cart/views/shopping_cart_plugin/clear_orders_session.js.erb
0 → 100644
... | ... | @@ -0,0 +1 @@ |
1 | +cart.clearOrdersSession(); | ... | ... |
plugins/shopping_cart/views/shopping_cart_plugin/mailer/customer_notification.html.erb
... | ... | @@ -4,52 +4,66 @@ |
4 | 4 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> |
5 | 5 | </head> |
6 | 6 | <body> |
7 | - <h4><%= _('Hi %s!') % @customer[:name] %></h4> | |
7 | + <h4><%= _('Hi %s!') % @order.consumer_data[:name] %></h4> | |
8 | 8 | |
9 | 9 | <p> |
10 | - <%= _('This is a notification e-mail about your buy request on %s.') % link_to(@supplier.name, @supplier.url) %> | |
11 | - <%= _('The supplier already received your buy request and may contact you for confirmation.') %> | |
12 | - <%= _('If you have any doubts, contact us at: %s') % @supplier.contact_email %> | |
13 | - <%= _('Please check if your information below is correct:') %> | |
10 | + <%= _('This is a notification e-mail about your buy request on the enterprise %s.') % link_to(@order.profile.name, @order.profile.url) %> | |
11 | + <%= _('The enterprise already received your buy request and will contact you for confirmation.') %> | |
12 | + <%= _('If you have any doubts about your order, write to us at: %s.') % @order.profile.contact_email %> | |
13 | + <%= _('Review below the informations of your order:') %> | |
14 | 14 | </p> |
15 | 15 | |
16 | 16 | <ul> |
17 | - <li><b><%= c_('Full name') %>: </b><%= @customer[:name] %></li> | |
18 | - <li><b><%= c_('Email') %>: </b><%= @customer[:email] %></li> | |
19 | - <li><b><%= _('Phone number') %>: </b><%= @customer[:contact_phone] %></li> | |
20 | - <li><b><%= _('Payment') %>: </b><%= @customer[:payment] == 'money' ? _('Money') : _('shopping_cart|Check') %></li> | |
21 | - <% if @customer[:payment] == 'money' %> | |
22 | - <li><b><%= _('shopping_cart|Change') %>: </b><%= @customer[:change] %></li> | |
17 | + <li><b><%= c_('Full name') %>: </b><%= @order.consumer_data[:name] %></li> | |
18 | + <li><b><%= c_('Email') %>: </b><%= @order.consumer_data[:email] %></li> | |
19 | + <li><b><%= _('Phone number') %>: </b><%= @order.consumer_data[:contact_phone] %></li> | |
20 | + | |
21 | + <li><b><%= _("Payment's method") %>: </b><%= _ OrdersPlugin::Order::PaymentMethods[@order.payment_data[:method].to_sym].call %></li> | |
22 | + <% if @order.payment_data[:method] == 'money' %> | |
23 | + <li><b><%= s_('shopping_cart|Change') %>: </b><%= @order.payment_data[:change] %></li> | |
24 | + <% end %> | |
25 | + | |
26 | + <li><b><%= _('Delivery or pickup') %>:</b></li> | |
27 | + <%= @order.supplier_delivery_data[:name] %><br/> | |
28 | + <p> | |
29 | + <i><%= @order.supplier_delivery_data[:description] %></i> | |
30 | + </p> | |
31 | + | |
32 | + <% if !@order.consumer_delivery_data[:address].blank? || !@order.consumer_delivery_data[:city].blank? || !@order.consumer_delivery_data[:zip_code].blank? || !@order.consumer_delivery_data[:district].blank? || !@order.consumer_delivery_data[:address_reference].blank? %> | |
33 | + <li><b><%= c_('Address') %>:</b></li> | |
34 | + <% end %> | |
35 | + <% if !@order.consumer_delivery_data[:address].blank? %> | |
36 | + <%= @order.consumer_delivery_data[:address] %><br \> | |
23 | 37 | <% end %> |
24 | - <% if !@customer[:address].blank? || !@customer[:city].blank? || !@customer[:zip_code].blank? || !@customer[:district].blank? || !@customer[:address_reference].blank? %> | |
25 | - <li><b><%= c_('Address') %>:</b> | |
38 | + <% if !@order.consumer_delivery_data[:address_line2].blank? %> | |
39 | + <%= @order.consumer_delivery_data[:address_line2] %><br \> | |
26 | 40 | <% end %> |
27 | - <% if !@customer[:address].blank? %> | |
28 | - <%= @customer[:address] %><br \> | |
41 | + <% if !@order.consumer_delivery_data[:address_reference].blank? %> | |
42 | + <%= @order.consumer_delivery_data[:address_reference] %><br \> | |
29 | 43 | <% end %> |
30 | - <% if !@customer[:district].blank? %> | |
31 | - <%= @customer[:district] %><br \> | |
44 | + <% if !@order.consumer_delivery_data[:district].blank? %> | |
45 | + <%= @order.consumer_delivery_data[:district] %><br \> | |
32 | 46 | <% end %> |
33 | - <% if !@customer[:city].blank? %> | |
34 | - <%= @customer[:city] %><br \> | |
47 | + <% if !@order.consumer_delivery_data[:city].blank? %> | |
48 | + <%= @order.consumer_delivery_data[:city] %><br \> | |
35 | 49 | <% end %> |
36 | - <% if !@customer[:zip_code].blank? %> | |
37 | - <%= @customer[:zip_code] %> | |
50 | + <% if !@order.consumer_delivery_data[:state].blank? %> | |
51 | + <%= @order.consumer_delivery_data[:state] %><br \> | |
38 | 52 | <% end %> |
39 | - <% if !@customer[:address_reference].blank? %> | |
40 | - <%= @customer[:address_reference] %><br \> | |
53 | + <% if !@order.consumer_delivery_data[:zip_code].blank? %> | |
54 | + <%= @order.consumer_delivery_data[:zip_code] %> | |
41 | 55 | <% end %> |
42 | - <% if !@customer[:address].blank? || !@customer[:city].blank? || !@customer[:zip_code].blank? || !@customer[:district].blank? || !@customer[:address_reference].blank? %> | |
56 | + <% if !@order.consumer_delivery_data[:address].blank? || !@order.consumer_delivery_data[:city].blank? || !@order.consumer_delivery_data[:zip_code].blank? || !@order.consumer_delivery_data[:district].blank? || !@order.consumer_delivery_data[:address_reference].blank? %> | |
43 | 57 | </li> |
44 | 58 | <% end %> |
45 | 59 | </ul> |
46 | 60 | |
47 | 61 | <p><%=_('Here are the products you bought:')%></p> |
48 | - <%= @helper.items_table(@items, @supplier, @delivery_option, true) %> | |
62 | + <%= items_table(@items, @order.profile, @order.supplier_delivery, true) %> | |
49 | 63 | <p> |
50 | 64 | --<br/> |
51 | 65 | <%=_('Thanks for buying with us!')%><br/> |
52 | - <%= link_to @supplier.name, @supplier.url %> | |
66 | + <%= link_to @order.profile.name, @order.profile.url %> | |
53 | 67 | </p> |
54 | 68 | <small style="color: #888"><%= _('A service of %s.') % @environment.name %></small> |
55 | 69 | </body> | ... | ... |
plugins/shopping_cart/views/shopping_cart_plugin/mailer/supplier_notification.html.erb
... | ... | @@ -4,46 +4,54 @@ |
4 | 4 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> |
5 | 5 | </head> |
6 | 6 | <body> |
7 | - <h4><%= _('Hi %s!') % @supplier.name %></h4> | |
7 | + <h4><%= _('Hi %s!') % @order.profile.name %></h4> | |
8 | 8 | |
9 | 9 | <p> |
10 | - <%= _('This is a buy request made by %s.') % @customer[:name] %> | |
10 | + <%= _('This is a buy request made by %s.') % @order.consumer_data[:name] %> | |
11 | 11 | <%= _('Below follows the customer informations:') %> |
12 | 12 | </p> |
13 | 13 | |
14 | 14 | <ul> |
15 | - <li><b><%= c_('Full name') %>: </b><%= @customer[:name] %></li> | |
16 | - <li><b><%= c_('Email') %>: </b><%= @customer[:email] %></li> | |
17 | - <li><b><%= _('Phone number') %>: </b><%= @customer[:contact_phone] %></li> | |
18 | - <li><b><%= _('Payment') %>: </b><%= @customer[:payment] == 'money' ? _('Money') : _('shopping_cart|Check') %></li> | |
19 | - <% if @customer[:payment] == 'money' %> | |
20 | - <li><b><%= _('shopping_cart|Change') %>: </b><%= @customer[:change] %></li> | |
21 | - <% end %> | |
22 | - <% if !@customer[:address].blank? || !@customer[:city].blank? || !@customer[:zip_code].blank? || !@customer[:district].blank? || !@customer[:address_reference].blank? %> | |
15 | + <li><b><%= c_('Full name') %>: </b><%= @order.consumer_data[:name] %></li> | |
16 | + <li><b><%= c_('Email') %>: </b><%= @order.consumer_data[:email] %></li> | |
17 | + <li><b><%= _('Phone number') %>: </b><%= @order.consumer_data[:contact_phone] %></li> | |
18 | + | |
19 | + <li><b><%= _('Payment') %>: </b><%= OrdersPlugin::Order::PaymentMethods[@order.payment_data[:method].to_sym].call %></li> | |
20 | + <% if @order.payment_data[:method] == 'money' %> | |
21 | + <li><b><%= s_('shopping_cart|Change') %>: </b><%= @order.payment_data[:change] %></li> | |
22 | + <% end %> | |
23 | + | |
24 | + <% if !@order.consumer_delivery_data[:address].blank? || !@order.consumer_delivery_data[:city].blank? || !@order.consumer_delivery_data[:zip_code].blank? || !@order.consumer_delivery_data[:district].blank? || !@order.consumer_delivery_data[:address_reference].blank? %> | |
23 | 25 | <li><b><%= c_('Address') %>:</b> |
24 | 26 | <% end %> |
25 | - <% if !@customer[:address].blank? %> | |
26 | - <%= @customer[:address] %><br \> | |
27 | + <% if !@order.consumer_delivery_data[:address].blank? %> | |
28 | + <%= @order.consumer_delivery_data[:address] %><br \> | |
29 | + <% end %> | |
30 | + <% if !@order.consumer_delivery_data[:address_line2].blank? %> | |
31 | + <%= @order.consumer_delivery_data[:address_line2] %><br \> | |
32 | + <% end %> | |
33 | + <% if !@order.consumer_delivery_data[:address_reference].blank? %> | |
34 | + <%= @order.consumer_delivery_data[:address_reference] %><br \> | |
27 | 35 | <% end %> |
28 | - <% if !@customer[:district].blank? %> | |
29 | - <%= @customer[:district] %><br \> | |
36 | + <% if !@order.consumer_delivery_data[:district].blank? %> | |
37 | + <%= @order.consumer_delivery_data[:district] %><br \> | |
30 | 38 | <% end %> |
31 | - <% if !@customer[:city].blank? %> | |
32 | - <%= @customer[:city] %><br \> | |
39 | + <% if !@order.consumer_delivery_data[:city].blank? %> | |
40 | + <%= @order.consumer_delivery_data[:city] %><br \> | |
33 | 41 | <% end %> |
34 | - <% if !@customer[:zip_code].blank? %> | |
35 | - <%= @customer[:zip_code] %> | |
42 | + <% if !@order.consumer_delivery_data[:state].blank? %> | |
43 | + <%= @order.consumer_delivery_data[:state] %><br \> | |
36 | 44 | <% end %> |
37 | - <% if !@customer[:address_reference].blank? %> | |
38 | - <%= @customer[:address_reference] %><br \> | |
45 | + <% if !@order.consumer_delivery_data[:zip_code].blank? %> | |
46 | + <%= @order.consumer_delivery_data[:zip_code] %> | |
39 | 47 | <% end %> |
40 | - <% if !@customer[:address].blank? || !@customer[:city].blank? || !@customer[:zip_code].blank? || !@customer[:district].blank? || !@customer[:address_reference].blank? %> | |
48 | + <% if !@order.consumer_delivery_data[:address].blank? || !@order.consumer_delivery_data[:city].blank? || !@order.consumer_delivery_data[:zip_code].blank? || !@order.consumer_delivery_data[:district].blank? || !@order.consumer_delivery_data[:address_reference].blank? %> | |
41 | 49 | </li> |
42 | 50 | <% end %> |
43 | 51 | </ul> |
44 | 52 | |
45 | 53 | <p><%=_('And here are the items bought by this customer:')%></p> |
46 | - <%= @helper.items_table(@items, @supplier, @delivery_option, true) %> | |
54 | + <%= items_table(@items, @order.profile, @order.supplier_delivery, true) %> | |
47 | 55 | <p> |
48 | 56 | --<br/> |
49 | 57 | <%=_('If there are any problems with this email contact the admin of %s.') % @environment.name %> | ... | ... |
plugins/shopping_cart/views/shopping_cart_plugin/send_request.html.erb
... | ... | @@ -1 +0,0 @@ |
1 | -<%= _("Request sent successfully check your email.")%> |
plugins/shopping_cart/views/shopping_cart_plugin/send_request.js.erb
0 → 100644
plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_orders_list.html.erb
... | ... | @@ -1,61 +0,0 @@ |
1 | -<% if @orders.empty? %> | |
2 | - <p><i><%= _("No results.") %></i></p> | |
3 | -<% else %> | |
4 | - <table> | |
5 | - <tr> | |
6 | - <th><%= _('Date') %></th> | |
7 | - <th><%= _('Customer') %></th> | |
8 | - <th><%= _('Purchase value') %></th> | |
9 | - <th><%= _('Status')%></th> | |
10 | - <th> </th> | |
11 | - </tr> | |
12 | - <% status_collection.delete_at(0) %> | |
13 | - <% @orders.each do |order|%> | |
14 | - <tr> | |
15 | - <td><%= order.created_at.strftime("%Y-%m-%d")%></td> | |
16 | - <td><%= order.customer_name %></td> | |
17 | - <td style="text-align: right"><%= float_to_currency_cart(order.products_list.sum {|id, qp| qp[:price]*qp[:quantity]}, environment) %></td> | |
18 | - <td> | |
19 | - <% form_tag :action => 'update_order_status' do %> | |
20 | - <%= hidden_field_tag(:order_id, order.id) + | |
21 | - hidden_field_tag(:context_from, @from) + | |
22 | - hidden_field_tag(:context_to, @to) + | |
23 | - hidden_field_tag(:context_status, @status) + | |
24 | - select_tag( :order_status, options_from_collection_for_select(status_collection, :first, :last, order.status), | |
25 | - :onchange => "this.form.submit()" ) | |
26 | - %> | |
27 | - <% end %> | |
28 | - </td> | |
29 | - <td><button class="view-order-details" data-order="<%=order.id%>"><%=c_('View details')%></button></td> | |
30 | - </tr> | |
31 | - <tr id="order-details-<%=order.id%>" style="display:none"> | |
32 | - <td class="order-info" colspan="5"> | |
33 | - <div style="display:none"> | |
34 | - <ul class="customer-details"> | |
35 | - <% [['name', _('Name')], ['email', _('E-mail')], ['contact_phone', c_('Contact phone')], ['address', c_('Address')], ['district', c_('District')], ['city', c_('City')], ['zip_code', c_('Zip code')], ['delivery_option', _('Delivery option')], ['payment', _('Payment')], ['change', _('shopping_cart|Change')]].each do |field| %> | |
36 | - <% attribute = field.first %> | |
37 | - <% name = field.last %> | |
38 | - <%= content_tag('li', content_tag('strong', name+': ') + order.send('customer_'+attribute)) if !order.send('customer_'+attribute).blank? %> | |
39 | - <% end %> | |
40 | - </ul> | |
41 | - <ul class="order-products"> | |
42 | - <% order.products_list.each do |id, qp| %> | |
43 | - <% | |
44 | - begin | |
45 | - product = Product.find(id) | |
46 | - rescue | |
47 | - product = nil | |
48 | - end | |
49 | - %> | |
50 | - <li><%= product ? link_to(product.name, product.url) : qp[:name]%> | |
51 | - × <%= qp[:quantity] %> = <%= float_to_currency_cart( qp[:quantity] * qp[:price], environment ) %></li> | |
52 | - <% end %> | |
53 | - </ul> | |
54 | - <br style="clear:both"/> | |
55 | - </div> | |
56 | - </td> | |
57 | - </tr> | |
58 | - <% end %> | |
59 | - </table> | |
60 | -<% end %> | |
61 | - |
plugins/shopping_cart/views/shopping_cart_plugin_myprofile/_products_list.html.erb
... | ... | @@ -1,17 +0,0 @@ |
1 | -<% if @products.empty? %> | |
2 | - <p><i><%= _("No results.") %></i></p> | |
3 | -<% else %> | |
4 | - <table> | |
5 | - <tr> | |
6 | - <th><%= c_('Product') %></th> | |
7 | - <th><%= _('Quantity') %></th> | |
8 | - </tr> | |
9 | - <% @products.each do |id, item|%> | |
10 | - <tr> | |
11 | - <td><%= item.product ? link_to(item.name, item.product.url) : item.name %></td> | |
12 | - <td style="text-align: center"><%= item.quantity %></td> | |
13 | - </tr> | |
14 | - <% end %> | |
15 | - </table> | |
16 | -<% end %> | |
17 | - |
plugins/shopping_cart/views/shopping_cart_plugin_myprofile/edit.html.erb
1 | 1 | <h1> <%= _('Basket options') %> </h1> |
2 | 2 | |
3 | -<%= form_for(:settings, :url => {:action => 'edit'}, :html => {:method => 'post'}) do |f| %> | |
4 | - <%= labelled_form_field(_('Enable shopping basket'), f.check_box(:enabled)) %> | |
5 | - <%= labelled_form_field(_('Enable delivery fields on orders'), f.check_box(:delivery)) %> | |
6 | - <% display_delivery_settings = @settings.delivery ? 'auto' : 'none' %> | |
7 | - <fieldset id='delivery_settings' style="display: <%= display_delivery_settings %>"><legend><%=_('Delivery')%></legend> | |
8 | - <table> | |
9 | - <tr> | |
10 | - <th><%= _('Option') %></th> | |
11 | - <th><%= c_('Price') %></th> | |
12 | - <th> </th> | |
13 | - </tr> | |
14 | - <% @settings.delivery_options.each do |option, price| %> | |
15 | - <tr> | |
16 | - <td><%= text_field_tag('settings[delivery_options][options][]', option, :style => 'width: 100%') %></td> | |
17 | - <td><%= text_field_tag('settings[delivery_options][prices][]', price, :style => 'width: 100%') %></td> | |
18 | - <td><%= button_without_text(:close, _('Remove option'), '', :class => 'remove-option') %></td> | |
19 | - </tr> | |
20 | - <% end %> | |
21 | - <tr> | |
22 | - <td><%= text_field_tag('settings[delivery_options][options][]', nil, :style => 'width: 100%') %></td> | |
23 | - <td><%= text_field_tag('settings[delivery_options][prices][]', nil, :style => 'width: 100%') %></td> | |
24 | - <td><%= button_without_text(:close, _('Remove option'), '', :class => 'remove-option') %></td> | |
25 | - </tr> | |
26 | - <tr id='add-new-option-row'> | |
27 | - <td colspan='3' style='background-color: #EEE; text-align: center'><%= link_to(_('ADD NEW OPTION'), '', :id => 'add-new-option') %></td> | |
28 | - </tr> | |
29 | - <tr id="empty-option" style='display: none'> | |
30 | - <td><%= text_field_tag('settings[delivery_options][options][]', nil, :style => 'width: 100%') %></td> | |
31 | - <td><%= text_field_tag('settings[delivery_options][prices][]', nil, :style => 'width: 100%') %></td> | |
32 | - <td><%= button_without_text(:close, _('Remove option'), '', :class => 'remove-option') %></td> | |
33 | - </tr> | |
34 | - </table> | |
3 | +<%= form_for :settings, url: {action: 'edit'}, html: {onsubmit: '$(this).ajaxSubmit()'} do |f| %> | |
35 | 4 | |
36 | - <%= labelled_form_field(_("Order's minimum price for free delivery:"), f.text_field(:free_delivery_price)) %> | |
37 | - <%= content_tag('small', _('Leave empty to always charge the delivery.')) %> | |
38 | - </fieldset> | |
39 | - <br style='clear: both'/> | |
40 | - <br style='clear: both'/> | |
41 | 5 | <div> |
42 | - <%= submit_button(:save, c_('Save')) %> | |
43 | - <%= button :back, c_('Back to control panel'), :controller => 'profile_editor' %> | |
6 | + <%= f.check_box :enabled, onchange: 'this.form.onsubmit()' %> | |
7 | + <%= f.label :enabled, _('Enable shopping basket') %> | |
44 | 8 | </div> |
45 | -<% end%> | |
9 | + | |
10 | +<% end %> | |
11 | + | |
12 | +<fieldset id='delivery-settings'> | |
13 | + <label><%=_('Deliveries or pickups')%></label> | |
14 | + <%= render 'delivery_plugin/admin_method/index' %> | |
15 | +</fieldset> | |
46 | 16 | |
47 | 17 | <%= javascript_include_tag '../plugins/shopping_cart/edit' %> | ... | ... |
plugins/shopping_cart/views/shopping_cart_plugin_myprofile/edit.js.erb
0 → 100644
plugins/shopping_cart/views/shopping_cart_plugin_myprofile/reports.html.erb
... | ... | @@ -1,57 +0,0 @@ |
1 | -<h1> <%= _('Purchase Reports') %> </h1> | |
2 | - | |
3 | -<% extend ProfileHelper %> | |
4 | -<% extend ShoppingCartPlugin::CartHelper %> | |
5 | - | |
6 | -<% status = ShoppingCartPlugin::PurchaseOrder::Status.name; pos=-1 %> | |
7 | -<% status_collection = [[nil, c_('All')]] %> | |
8 | -<% status_collection += status.map{|s| [pos+=1, s] } %> | |
9 | - | |
10 | -<% form_tag({}, {:id => 'cart-order-filter'}) do %> | |
11 | - <%= labelled_text_field(c_('From')+' ', :from, @from.strftime("%Y-%m-%d"), :id => 'from', :size => 9) %> | |
12 | - <%= labelled_text_field(_('to')+' ', :to, @to.strftime("%Y-%m-%d"), :id => 'to', :size => 9) %> | |
13 | - <span style="white-space:nowrap"><%= labelled_select(_('Status')+' ', :filter_status, :first, :last, @status, status_collection)%></span> | |
14 | - | |
15 | - <%= submit_button('save', c_('Filter')) %> | |
16 | -<% end %> | |
17 | - | |
18 | -<% tabs = [] %> | |
19 | -<% tabs << {:title => _('Products list'), :id => 'products_list', :content => (render :partial => 'products_list')} %> | |
20 | -<% tabs << {:title => _('Orders list'), :id => 'orders_list', :content => (render :partial => 'orders_list', :locals => {:status_collection => status_collection})} %> | |
21 | -<%= render_tabs(tabs) %> | |
22 | - | |
23 | -<script> | |
24 | - var dates = jQuery( "#from, #to" ).datepicker({ | |
25 | - defaultDate: "+1w", | |
26 | - changeMonth: true, | |
27 | - dateFormat: 'yy-mm-dd', | |
28 | - onSelect: function( selectedDate ) { | |
29 | - var option = this.id == "from" ? "minDate" : "maxDate", | |
30 | - instance = jQuery( this ).data( "datepicker" ), | |
31 | - date = jQuery.datepicker.parseDate( | |
32 | - instance.settings.dateFormat || | |
33 | - jQuery.datepicker._defaults.dateFormat, | |
34 | - selectedDate, instance.settings ); | |
35 | - dates.not( this ).datepicker( "option", option, date ); | |
36 | - } | |
37 | - }); | |
38 | - jQuery(".view-order-details").each(function(index, bt){ | |
39 | - jQuery(bt).button({ | |
40 | - icons: { | |
41 | - primary: "ui-icon-info" | |
42 | - }, | |
43 | - text: false | |
44 | - }); | |
45 | - bt.onclick = function(){ | |
46 | - var orderId = this.getAttribute("data-order"); | |
47 | - var tr = jQuery("#order-details-"+orderId); | |
48 | - var div = jQuery("#order-details-"+orderId+" div"); | |
49 | - if ( tr[0].style.display == "none" ) { | |
50 | - tr.show(); | |
51 | - div.slideDown('fast'); | |
52 | - } else { | |
53 | - div.slideUp("fast", function(){tr.hide()}); | |
54 | - } | |
55 | - } | |
56 | - }); | |
57 | -</script> |
plugins/shopping_cart/views/shopping_cart_plugin_profile/buy.html.erb
... | ... | @@ -1,35 +0,0 @@ |
1 | -<% person = user.nil? ? Person.new : user %> | |
2 | -<div id='cart-request-box'> | |
3 | - <%= form_for(:customer, person, :url => {:action => 'send_request'}, | |
4 | - :html => {:onsubmit => "return Cart.send_request(this)", :id => 'cart-request-form' }) do |f| %> | |
5 | - <div id="cart-form-main"> | |
6 | - <%= labelled_form_field('* ' + _("Name"), f.text_field(:name, :class => 'required') ) %> | |
7 | - <%= labelled_form_field('* ' + c_("Email"), f.text_field(:email, :class => 'required email') ) %> | |
8 | - <%= labelled_form_field('* ' + c_("Contact phone"), f.text_field(:contact_phone, :class => 'required') ) %> | |
9 | - </div> | |
10 | - <fieldset><legend><%=_('Delivery Address')%></legend> | |
11 | - <%= labelled_form_field(c_('Address (street and number)'), f.text_field(:address)) %> | |
12 | - <%= labelled_form_field( c_("City"), f.text_field(:city)) %> | |
13 | - <%= labelled_form_field(c_('ZIP code'), f.text_field(:zip_code)) %> | |
14 | - </fieldset> | |
15 | - <div id="cart-form-actions"> | |
16 | - <%= submit_button(:send, _('Send buy request')) %> | |
17 | - </div> | |
18 | - <% end %> | |
19 | - <%= items_table(session[:cart][:items], profile) %> | |
20 | - <%= link_to_function '', "noosfero.modal.close();", :class => 'cart-box-close icon-cancel' %> | |
21 | -</div> | |
22 | - | |
23 | -<script type="text/javascript"> | |
24 | -//<![CDATA[ | |
25 | - jQuery(document).ready(function(){ | |
26 | - jQuery("#cart-request-form").validate({ | |
27 | - submitHandler: function(form) { | |
28 | - jQuery(form).find('input.submit').attr('disabled', true); | |
29 | - jQuery('#cboxLoadingOverlay').show().addClass('loading'); | |
30 | - jQuery('#cboxLoadingGraphic').show().addClass('loading'); | |
31 | - } | |
32 | - }); | |
33 | - }); | |
34 | -//]]> | |
35 | -</script> |