Top Level Namespace

Defined Under Namespace

Modules: GroupsHelper Classes: Group

Constant Summary collapse

PageModelExtensions =
Proc.new do
  belongs_to :group
  
  def group_owners
    self.group.nil? ? [] : self.group.users
  end
  
  def group_name
    self.group.nil? ? '' : self.group.name
  end
end
UserModelExtensions =
Proc.new do
  has_and_belongs_to_many :groups
  def designer_or_developer?
    respond_to?(:designer?) ? designer? : developer?
  end
end
PageControllerExtensions =
Proc.new do
    
  only_allow_access_to :new, :edit, :create, :update, :remove, :destroy,
    :if => :user_is_in_page_group,
    :denied_url => :back,
    :denied_message => "You must have group privileges to perform this action."
  
  def user_is_in_page_group
    return true if current_user.admin? || current_user.designer_or_developer?
    
    page = Page.find(params[:id] || params[:page_id] || params[:parent_id] || params[:page][:parent_id])
    
    until page.nil? do
      return true if page.group_owners.include? current_user
      page = page.parent
    end
    
    return false
  end
  
  before_filter :disallow_group_edits
  def disallow_group_edits
    if params[:page] && !current_user.admin?
      params[:page].delete(:group_id.to_s)
    end
  end
end