Sha256: 88967b578f2d2570d59a087d3cd928798fb41e030cf8af6fec42e1587595db40

Contents?: true

Size: 1.81 KB

Versions: 8

Compression:

Stored size: 1.81 KB

Contents

module Ecm
  module Cms
    module Importers
      class NavigationItem
        def initialize(yaml, option = {})
          @navigation_items = nil
          @yaml = YAML.load(yaml)
        end

        def create_navigation_items
          built_navigation_items = []
          @yaml.each do |navigation_locale, navigation|
            navigation.each do |navigation_name, navigation_items|
              n = find_or_create_navigation(navigation_locale, navigation_name)
              navigation_items.each do |navigation_item_attributes|
                ni = create_navigation_item(navigation_item_attributes, n)
                built_navigation_items << ni
              end
            end if navigation_locale.respond_to?(:each)
          end if @yaml.respond_to?(:each)
          built_navigation_items
        end

        def create_navigation_item(navigation_item_attributes, navigation)
          subitems = navigation_item_attributes.delete('subitems')

          ni = Ecm::Cms::NavigationItem.new(navigation_item_attributes)
          ni.ecm_cms_navigation = navigation
          ni.save!

          subitems.each do |subitem_attributes|
            subitem_attributes['parent'] = ni
            create_navigation_item(subitem_attributes, navigation)
          end if subitems.respond_to?(:each)

          ni
        end

        def find_or_create_navigation(navigation_locale, navigation_name)
          navigation = Ecm::Cms::Navigation.where(:locale => navigation_locale, :name => navigation_name).first
          navigation = Ecm::Cms::Navigation.create!(:locale => navigation_locale, :name => navigation_name) if navigation.nil?
          navigation
        end

        def navigation_items
          @navigation_items ||= create_navigation_items
        end

        def yaml
          @yaml
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
ecm_cms-0.0.11.pre lib/ecm/cms/importers/navigation_item.rb
ecm_cms-0.0.10.pre lib/ecm/cms/importers/navigation_item.rb
ecm_cms-0.0.8.pre lib/ecm/cms/importers/navigation_item.rb
ecm_cms-0.0.7.pre lib/ecm/cms/importers/navigation_item.rb
ecm_cms-0.0.6.pre lib/ecm/cms/importers/navigation_item.rb
ecm_cms-0.0.5.pre lib/ecm/cms/importers/navigation_item.rb
ecm_cms-0.0.4.pre lib/ecm/cms/importers/navigation_item.rb
ecm_cms-0.0.3.pre lib/ecm/cms/importers/navigation_item.rb