Sha256: 092d1a2a5173999b1ff7ca8dc6919280b4ad4c4cdda249f58a70da5e77574410

Contents?: true

Size: 1.15 KB

Versions: 4

Compression:

Stored size: 1.15 KB

Contents

require 'orange-more/administration/cartons/site_carton'
require 'dm-is-awesome_set'

module Orange
  class Route < SiteCarton
    id
    admin do
      text :slug
      text :link_text
      boolean :show_in_nav, :default => false, :display_name => 'Show in Navigation?'
    end
    orange do
      string :resource
      string :resource_id
      string :resource_action
      boolean :accept_args, :default => true
    end
    include DataMapper::Transaction::Resource # Make sure Transactions are included (for awesome_set)
    is :awesome_set, :scope => [:orange_site_id]
  
    def full_path
      self_and_ancestors.inject('') do |path, part| 
        if part.parent # Check if this is a child
          path = path + part.slug + '/' 
        else  # The root slug is just the initial '/'
          path = path + '/' 
        end
      end
    end
  
    def self.home_for_site(site_id)
      root(:orange_site_id => site_id) 
    end
  
  
    def self.create_home_for_site(site_id)
      home = self.new({:orange_site_id => site_id, :slug => '_index_', :accept_args => false, :link_text => 'Home'})
      home.move(:root)
      home.save
      home
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
orange-0.1.2 lib/orange-more/sitemap/cartons/route.rb
orange-0.1.0 lib/orange-more/sitemap/cartons/route.rb
orange-0.0.15 lib/orange-more/sitemap/cartons/route.rb
orange-0.0.14 lib/orange-more/sitemap/cartons/route.rb