Sha256: 3e5d511356d8b49af974a4700feae9870a38c3835f69fcce3a9a888c5a14510d

Contents?: true

Size: 1.19 KB

Versions: 5

Compression:

Stored size: 1.19 KB

Contents

module CamaleonCms
  class NavMenu < CamaleonCms::TermTaxonomy
    default_scope { where(taxonomy: :nav_menu).order(id: :asc) }
    alias_attribute :site_id, :parent_id

    cama_define_common_relationships('NavMenu')
    has_many :children, class_name: "CamaleonCms::NavMenuItem", foreign_key: :parent_id, dependent: :destroy, inverse_of: :parent
    belongs_to :site, foreign_key: :parent_id, inverse_of: :nav_menus, required: false

    # add menu item for current menu
    # value: (Hash) is a hash object that contains label, type, link
    #   options for type: post | category | post_type | post_tag | external
    # sample: {label: "my label", type: "external", link: "http://camaleon.tuzitio.com", target: '_blank'}
    # sample: {label: "my label", type: "post", link: 10}
    # sample: {label: "my label", type: "category", link: 12}
    # return item created
    def append_menu_item (value)
      item = children.create!({name: value[:label], url: value[:link], kind: value[:type], target: value[:target]})
      item
    end

    # skip uniq slug validation
    def skip_slug_validation?
      true
    end

    private
    # overwrite termtaxonomy method
    def destroy_dependencies
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
camaleon_cms-2.6.4 app/models/camaleon_cms/nav_menu.rb
camaleon_cms-2.6.3 app/models/camaleon_cms/nav_menu.rb
camaleon_cms-2.6.2 app/models/camaleon_cms/nav_menu.rb
camaleon_cms-2.6.1 app/models/camaleon_cms/nav_menu.rb
camaleon_cms-2.6.0.1 app/models/camaleon_cms/nav_menu.rb