Sha256: 4350d48fdde658974bc04fc5c7167218819b26a220aaf5bfa5dfcffeb2a20fc0

Contents?: true

Size: 1.25 KB

Versions: 12

Compression:

Stored size: 1.25 KB

Contents

require "active_support/concern"

module BitPlayer
  module ContentProviders
    # Presentation logic for a "new" or "edit" view on a data model.
    module FormViewProvider
      extend ActiveSupport::Concern

      included do
        def self.data_class(klass)
          @source_class = klass
        end

        def self.source_class
          @source_class || fail("Classes inheriting from #{ self } must define
                                a source classwith `data_class <class>`")
        end

        def self.show_nav_link
          @show_nav_link = true
        end

        def self.hide_nav_link
          @show_nav_link = false
        end

        def self.show_nav_link?
          @show_nav_link
        end

        def self.view_type(type)
          unless ["new", "edit"].include?(type)
            fail("view type must be one of 'new', 'edit'")
          end
          @view_type = type
        end

        def self.get_view_type
          @view_type
        end
      end

      def show_nav_link?
        self.class.show_nav_link?
      end

      def template
        "#{ plural_name }/#{ self.class.get_view_type }"
      end

      private

      def plural_name
        self.class.source_class.to_s.underscore.pluralize
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
bit_player-0.4.4 app/models/bit_player/content_providers/form_view_provider.rb
bit_player-0.4.3 app/models/bit_player/content_providers/form_view_provider.rb
bit_player-0.4.2 app/models/bit_player/content_providers/form_view_provider.rb
bit_player-0.4.1 app/models/bit_player/content_providers/form_view_provider.rb
bit_player-0.4.0 app/models/bit_player/content_providers/form_view_provider.rb
bit_player-0.3.0 app/models/bit_player/content_providers/form_view_provider.rb
bit_player-0.2.5 app/models/bit_player/content_providers/form_view_provider.rb
bit_player-0.2.3 app/models/bit_player/content_providers/form_view_provider.rb
bit_player-0.2.2 app/models/bit_player/content_providers/form_view_provider.rb
bit_player-0.2.1 app/models/bit_player/content_providers/form_view_provider.rb
bit_player-0.2.0 app/models/bit_player/content_providers/form_view_provider.rb
bit_player-0.1.4 app/models/bit_player/content_providers/form_view_provider.rb