Sha256: 94629d1df20b48dd6ec796e295e0a604eae7f34ad88ce787514c7bd81e9d538a

Contents?: true

Size: 1.71 KB

Versions: 3

Compression:

Stored size: 1.71 KB

Contents

# frozen_string_literal: true

module SolidusFriendlyPromotions
  module Admin
    class BaseController < Spree::Admin::ResourceController
      def parent
        @parent ||= self.class.parent_data[:model_class]
          .includes(self.class.parent_data[:includes])
          .find_by!(self.class.parent_data[:find_by] => params["#{parent_model_name}_id"])
        instance_variable_set("@#{parent_model_name}", @parent)
      rescue ActiveRecord::RecordNotFound => e
        resource_not_found(flash_class: e.model.constantize, redirect_url: routes_proxy.polymorphic_url([:admin, parent_model_name.pluralize.to_sym]))
      end

      def new_object_url(options = {})
        if parent?
          routes_proxy.new_polymorphic_url([:admin, parent, model_class], options)
        else
          routes_proxy.new_polymorphic_url([:admin, model_class], options)
        end
      end

      def edit_object_url(object, options = {})
        if parent?
          routes_proxy.polymorphic_url([:edit, :admin, parent, object], options)
        else
          routes_proxy.polymorphic_url([:edit, :admin, object], options)
        end
      end

      def object_url(object = nil, options = {})
        target = object || @object

        if parent?
          routes_proxy.polymorphic_url([:admin, parent, target], options)
        else
          routes_proxy.polymorphic_url([:admin, target], options)
        end
      end

      def collection_url(options = {})
        if parent?
          routes_proxy.polymorphic_url([:admin, parent, model_class], options)
        else
          routes_proxy.polymorphic_url([:admin, model_class], options)
        end
      end

      def routes_proxy
        solidus_friendly_promotions
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
solidus_friendly_promotions-1.0.0.rc.2 app/controllers/solidus_friendly_promotions/admin/base_controller.rb
solidus_friendly_promotions-1.0.0.rc.1 app/controllers/solidus_friendly_promotions/admin/base_controller.rb
solidus_friendly_promotions-1.0.0.pre app/controllers/solidus_friendly_promotions/admin/base_controller.rb