Class: Admin::ProductsController
- Inherits:
-
BaseController
- Object
- BaseController
- Admin::ProductsController
- Defined in:
- app/controllers/admin/products_controller.rb
Instance Method Summary collapse
- #clone ⇒ Object
- #collection ⇒ Object
-
#destroy ⇒ Object
override the destory method to set deleted_at value instead of actually deleting the product.
-
#json_data ⇒ Object
Allow different formats of json data to suit different ajax calls.
- #load_data ⇒ Object
- #update_before ⇒ Object
Instance Method Details
#clone ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'app/controllers/admin/products_controller.rb', line 51 def clone load_object @new = @product.duplicate if @new.save flash.notice = I18n.t("notice_messages.product_cloned") else flash.notice = I18n.t("notice_messages.product_not_cloned") end redirect_to edit_admin_product_url(@new) end |
#collection ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'app/controllers/admin/products_controller.rb', line 80 def collection return @collection if @collection.present? unless request.xhr? params[:search] ||= {} # Note: the MetaSearch scopes are on/off switches, so we need to select "not_deleted" explicitly if the switch is off if params[:search][:deleted_at_is_null].nil? params[:search][:deleted_at_is_null] = "1" end params[:search][:meta_sort] ||= "name.asc" @search = end_of_association_chain.(params[:search]) = {:include => {:variants => [:images, :option_values]}, :per_page => Spree::Config[:admin_products_per_page], :page => params[:page]} @collection = @search.relation.group_by_products_id.paginate() else includes = [{:variants => [:images, {:option_values => :option_type}]}, :master, :images] @collection = end_of_association_chain.where(["name LIKE ?", "%#{params[:q]}%"]) @collection = @collection.includes(includes).limit(params[:limit] || 10) tmp = end_of_association_chain.where(["variants.sku LIKE ?", "%#{params[:q]}%"]) tmp = tmp.includes(:variants_including_master).limit(params[:limit] || 10) @collection.concat(tmp) @collection.uniq end end |
#destroy ⇒ Object
override the destory method to set deleted_at value instead of actually deleting the product.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'app/controllers/admin/products_controller.rb', line 30 def destroy @product = Product.find_by_permalink(params[:id]) @product.deleted_at = Time.now() @product.variants.each do |v| v.deleted_at = Time.now() v.save end if @product.save flash.notice = I18n.t("notice_messages.product_deleted") else flash.notice = I18n.t("notice_messages.product_not_deleted") end respond_to do |format| format.html { redirect_to collection_url } format.js { render_js_for_destroy } end end |
#json_data ⇒ Object
Allow different formats of json data to suit different ajax calls
65 66 67 68 69 70 71 72 73 |
# File 'app/controllers/admin/products_controller.rb', line 65 def json_data json_format = params[:json_format] or 'default' case json_format when 'basic' collection.map {|p| {'id' => p.id, 'name' => p.name}}.to_json else collection.to_json(:include => {:variants => {:include => {:option_values => {:include => :option_type}, :images => {}}}, :images => {}, :master => {}}) end end |
#load_data ⇒ Object
75 76 77 78 |
# File 'app/controllers/admin/products_controller.rb', line 75 def load_data @tax_categories = TaxCategory.order(:name) @shipping_categories = ShippingCategory.order(:name) end |
#update_before ⇒ Object
113 114 115 116 117 |
# File 'app/controllers/admin/products_controller.rb', line 113 def update_before # note: we only reset the product properties if we're receiving a post from the form on that tab return unless params[:clear_product_properties] params[:product] ||= {} end |