Skip to content

Instantly share code, notes, and snippets.

@jens
Created February 24, 2011 20:33
class ShoppingCartWidget < Apotomo::Widget
include Devise::Controllers::Helpers
helper ApplicationHelper
after_add do |me, parent|
me.root.respond_to_event :item_removed, :with => :redraw, :on => me.name
end
has_widgets do |me|
@user = User.find(param(:user))
@user.shopping_cart.cart_items.each do |cart_item|
me << widget(:cart_item_widget, "item-#{ cart_item.product_no}", :display, :cart_item => cart_item)
end
end
def display
if user_signed_in?
@shopping_cart = @user.shopping_cart
render
else
return render :view => :blank unless user_signed_in?
end
end
def checkout
render
end
def redraw
replace :state => :display
end
end
class CartItemWidget < Apotomo::Widget
include Devise::Controllers::Helpers
helper ApplicationHelper
responds_to_event :remove, :with => :remove_item
def display
@cart_item = @opts[:cart_item]
return render :view => :blank unless @cart_item
render
end
def remove_item
@cart_item = current_user.shopping_cart.cart_items.find(param(:id))
@cart_item.destroy
trigger :item_removed
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment