mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Shipping methods can be tagged
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
angular.module("admin.shippingMethods").controller "shippingMethodCtrl", ($scope, shippingMethod) ->
|
||||
$scope.shippingMethod = shippingMethod
|
||||
@@ -1 +1 @@
|
||||
angular.module("admin.shippingMethods", [])
|
||||
angular.module("admin.shippingMethods", ["ngTagsInput", 'admin.utils'])
|
||||
|
||||
@@ -27,6 +27,10 @@ module Admin
|
||||
admin_inject_json_ams_array "admin.shippingMethods", "shippingMethods", @shipping_methods, Api::Admin::IdNameSerializer
|
||||
end
|
||||
|
||||
def admin_inject_shipping_method
|
||||
admin_inject_json_ams "admin.shippingMethods", "shippingMethod", @shipping_method, Api::Admin::ShippingMethodSerializer
|
||||
end
|
||||
|
||||
def admin_inject_shops(ngModule='admin.customers')
|
||||
admin_inject_json_ams_array ngModule, "shops", @shops, Api::Admin::IdNameSerializer
|
||||
end
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
Spree::ShippingMethod.class_eval do
|
||||
acts_as_taggable
|
||||
|
||||
has_many :distributor_shipping_methods
|
||||
has_many :distributors, through: :distributor_shipping_methods, class_name: 'Enterprise', foreign_key: 'distributor_id'
|
||||
|
||||
after_save :touch_distributors
|
||||
attr_accessible :distributor_ids, :description
|
||||
attr_accessible :require_ship_address
|
||||
attr_accessible :require_ship_address, :tag_list
|
||||
|
||||
validates :distributors, presence: { message: "^At least one hub must be selected" }
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
/ replace "div[data-hook='admin_shipping_method_form_fields']"
|
||||
|
||||
.alpha.eleven.columns{"data-hook" => "admin_shipping_method_form_fields"}
|
||||
=admin_inject_shipping_method
|
||||
.alpha.eleven.columns{ "data-hook" => "admin_shipping_method_form_fields",
|
||||
"ng-app" => "admin.shippingMethods",
|
||||
"ng-controller" => "shippingMethodCtrl" }
|
||||
.row
|
||||
.alpha.three.columns
|
||||
= f.label :name, t(:name)
|
||||
@@ -46,6 +49,13 @@
|
||||
|
||||
= f.label :pick_up, t(:pick_up)
|
||||
|
||||
.row
|
||||
.alpha.three.columns
|
||||
= f.label :tags, t(:tags)
|
||||
.omega.eight.columns
|
||||
= f.hidden_field :tag_list, "ng-value" => "shippingMethod.tag_list"
|
||||
%tags-with-translation#something{ object: "shippingMethod" }
|
||||
|
||||
.row
|
||||
.alpha.eleven.columns
|
||||
= render :partial => 'spree/admin/shared/calculator_fields', :locals => { :f => f }
|
||||
|
||||
7
app/serializers/api/admin/shipping_method_serializer.rb
Normal file
7
app/serializers/api/admin/shipping_method_serializer.rb
Normal file
@@ -0,0 +1,7 @@
|
||||
class Api::Admin::ShippingMethodSerializer < ActiveModel::Serializer
|
||||
attributes :id, :name, :tags
|
||||
|
||||
def tags
|
||||
object.tag_list.map{ |t| { text: t } }
|
||||
end
|
||||
end
|
||||
@@ -93,12 +93,16 @@ feature 'shipping methods' do
|
||||
fill_in 'shipping_method_name', :with => 'Teleport'
|
||||
|
||||
check "shipping_method_distributor_ids_#{distributor1.id}"
|
||||
find(:css, "tags-input .tags input").set "local\n"
|
||||
|
||||
click_button 'Create'
|
||||
|
||||
flash_message.should == 'Shipping method "Teleport" has been successfully created!'
|
||||
expect(first('tags-input .tag-list ti-tag-item')).to have_content "local"
|
||||
|
||||
shipping_method = Spree::ShippingMethod.find_by_name('Teleport')
|
||||
shipping_method.distributors.should == [distributor1]
|
||||
shipping_method.tag_list.should == ["local"]
|
||||
end
|
||||
|
||||
it "shows me only shipping methods I have access to" do
|
||||
|
||||
Reference in New Issue
Block a user