Sha256: aeaff3fb6cc221f4a272eff4816ad33a9c9e10b41e511acf7640af7a2d093ba7

Contents?: true

Size: 1.33 KB

Versions: 5

Compression:

Stored size: 1.33 KB

Contents

require 'digest/sha1'
class GroupsDataset < Dataset::Base
  datasets = [:pages, :group_readers]
  datasets << :group_sites if defined? Site
  uses *datasets

  def load
    create_group "Normal"
    create_group "Special"
    create_group "Homed", :homepage_id => page_id(:parent)
    create_group "Elsewhere", :site_id => site_id(:elsewhere) if defined? Site

    add_pages_to_group :homed, [:parent, :childless]
    add_readers_to_group :homed, [:normal] 

    add_readers_to_group :special, [:another]
    add_pages_to_group :special, [:news]

    add_readers_to_group :normal, [:normal, :inactive] 
  end
  
  helpers do
    def create_group(name, att={})
      group = create_record Group, name.symbolize, group_attributes(att.update(:name => name))
    end
    
    def group_attributes(att={})
      name = att[:name] || "A group"
      attributes = { 
        :name => name,
        :description => "Test group"
      }.merge(att)
      attributes[:site_id] ||= site_id(:test) if defined? Site
      attributes
    end
  end
  
  def add_pages_to_group(g, pp)
    g = groups(g) unless g.is_a? Group
    pp.each {|p| 
      p = pages(p) unless p.is_a? Page
      p.permit(g)
    }
  end
  
  def add_readers_to_group(g, rr)
    g = groups(g) unless g.is_a? Group
    rr.each {|r| 
      r = readers(r) unless r.is_a? Reader
      g.admit(r)
    }
  end
  
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
radiant-reader_group-extension-1.2.4 spec/datasets/groups_dataset.rb
radiant-reader_group-extension-1.2.3 spec/datasets/groups_dataset.rb
radiant-reader_group-extension-1.2.2 spec/datasets/groups_dataset.rb
radiant-reader_group-extension-1.2.1 spec/datasets/groups_dataset.rb
radiant-reader_group-extension-1.2.0 spec/datasets/groups_dataset.rb