diff --git a/app/assets/javascripts/admin/payment_methods/controllers/stripe_controller.js.coffee b/app/assets/javascripts/admin/payment_methods/controllers/stripe_controller.js.coffee new file mode 100644 index 0000000000..c9f6c3ffe0 --- /dev/null +++ b/app/assets/javascripts/admin/payment_methods/controllers/stripe_controller.js.coffee @@ -0,0 +1,2 @@ +angular.module("admin.paymentMethods").controller "StripeController", ($scope, shops) -> + $scope.shops = shops diff --git a/app/assets/javascripts/admin/index_utils/directives/ofn-select2.js.coffee b/app/assets/javascripts/admin/utils/directives/ofn-select2.js.coffee similarity index 93% rename from app/assets/javascripts/admin/index_utils/directives/ofn-select2.js.coffee rename to app/assets/javascripts/admin/utils/directives/ofn-select2.js.coffee index 6890589b9d..b0afdc46e5 100644 --- a/app/assets/javascripts/admin/index_utils/directives/ofn-select2.js.coffee +++ b/app/assets/javascripts/admin/utils/directives/ofn-select2.js.coffee @@ -1,4 +1,4 @@ -angular.module("admin.indexUtils").directive "ofnSelect2", ($sanitize, $timeout, $filter) -> +angular.module("admin.utils").directive "ofnSelect2", ($sanitize, $timeout, $filter) -> require: 'ngModel' restrict: 'C' scope: diff --git a/app/overrides/spree/admin/payment_methods/_form/replace_form_fields.html.haml.deface b/app/overrides/spree/admin/payment_methods/_form/replace_form_fields.html.haml.deface index aa9ead7a0f..16164c5137 100644 --- a/app/overrides/spree/admin/payment_methods/_form/replace_form_fields.html.haml.deface +++ b/app/overrides/spree/admin/payment_methods/_form/replace_form_fields.html.haml.deface @@ -1,6 +1,7 @@ / replace "div[data-hook='admin_payment_method_form_fields']" = admin_inject_payment_method += admin_inject_json_ams_array "admin.paymentMethods", "shops", @hubs, Api::Admin::IdNameSerializer %div.alpha.eleven.columns{ "ng-app" => "admin.paymentMethods", "ng-controller" => "paymentMethodCtrl" } .row .alpha.three.columns diff --git a/app/serializers/api/admin/payment_method_serializer.rb b/app/serializers/api/admin/payment_method_serializer.rb index 42c11a6953..edcf482915 100644 --- a/app/serializers/api/admin/payment_method_serializer.rb +++ b/app/serializers/api/admin/payment_method_serializer.rb @@ -1,11 +1,31 @@ class Api::Admin::PaymentMethodSerializer < ActiveModel::Serializer - attributes :id, :name, :type, :tag_list, :tags - - def tag_list - object.tag_list.join(",") + def serializable_hash + method_serializer.serializable_hash end - def tags - object.tag_list.map{ |t| { text: t } } + def method_serializer + if object.type == 'Spree::Gateway::StripeConnect' + Api::Admin::PaymentMethod::StripeSerializer.new(object) + else + Api::Admin::PaymentMethod::BaseSerializer.new(object) + end + end +end + +module Api::Admin::PaymentMethod + class BaseSerializer < ActiveModel::Serializer + attributes :id, :name, :type, :tag_list, :tags + + def tag_list + object.tag_list.join(",") + end + + def tags + object.tag_list.map{ |t| { text: t } } + end + end + + class StripeSerializer < BaseSerializer + attributes :preferred_enterprise_id end end diff --git a/app/views/spree/admin/payment_methods/_provider_settings.html.haml b/app/views/spree/admin/payment_methods/_provider_settings.html.haml index e227180fc3..c64ad9f1d2 100644 --- a/app/views/spree/admin/payment_methods/_provider_settings.html.haml +++ b/app/views/spree/admin/payment_methods/_provider_settings.html.haml @@ -1,7 +1,11 @@ -- if @payment_method.preferences.present? - %fieldset.alpha.eleven.columns.no-border-bottom#gateway_fields - %legend{ align: "center"} - = t(:provider_settings) - .preference-settings - = fields_for :payment_method, @payment_method do |payment_method_form| - = preference_fields(@payment_method, payment_method_form) \ No newline at end of file +- case @payment_method +- when Spree::Gateway::StripeConnect + = render 'stripe_connect' +- else + - if @payment_method.preferences.present? + %fieldset.alpha.eleven.columns.no-border-bottom#gateway_fields + %legend{ align: "center"} + = t(:provider_settings) + .preference-settings + = fields_for :payment_method, @payment_method do |payment_method_form| + = preference_fields(@payment_method, payment_method_form) diff --git a/app/views/spree/admin/payment_methods/_stripe_connect.html.haml b/app/views/spree/admin/payment_methods/_stripe_connect.html.haml new file mode 100644 index 0000000000..28c039c009 --- /dev/null +++ b/app/views/spree/admin/payment_methods/_stripe_connect.html.haml @@ -0,0 +1,11 @@ +%fieldset.alpha.eleven.columns.no-border-bottom#gateway_fields + %legend{ align: "center"} + = t(:provider_settings) + .preference-settings{ ng: { controller: "StripeController" } } + = fields_for :payment_method, @payment_method do |payment_method_form| + = payment_method_form.label :stripe_account_owner + %br + -# = payment_method_form.collection_select(:preferred_enterprise_id, @hubs, :id, :name, {:include_blank => true}, {:class => "select2 fullwidth"}) + %input.ofn-select2.fullwidth#payment_method_preferred_enterprise_id{ type: 'number', + name: 'payment_method[preferred_enterprise_id]', + data: 'shops', ng: { model: 'paymentMethod.preferred_enterprise_id' } }