profile_design_controller.rb 1.72 KB
class ProfileDesignController < BoxOrganizerController

  needs_profile

  protect 'edit_profile_design', :profile
  
  def available_blocks
    @available_blocks = [ ArticleBlock, TagsBlock, RecentDocumentsBlock, ProfileInfoBlock, LinkListBlock, MyNetworkBlock, FeedReaderBlock, ProfileImageBlock, LocationBlock, SlideshowBlock, ProfileSearchBlock, HighlightsBlock ]
    @available_blocks += plugins.dispatch(:extra_blocks)

    # blocks exclusive to people
    if profile.person?
      @available_blocks << FavoriteEnterprisesBlock
      @available_blocks << CommunitiesBlock
      @available_blocks << EnterprisesBlock
      @available_blocks += plugins.dispatch(:extra_blocks, :type => Person)
    end

    # blocks exclusive to communities
    if profile.community?
      @available_blocks += plugins.dispatch(:extra_blocks, :type => Community)
    end

    # blocks exclusive for enterprises
    if profile.enterprise?
      @available_blocks << DisabledEnterpriseMessageBlock
      @available_blocks << HighlightsBlock
      @available_blocks << ProductCategoriesBlock
      @available_blocks << FeaturedProductsBlock
      @available_blocks << FansBlock
      @available_blocks += plugins.dispatch(:extra_blocks, :type => Enterprise)
    end

    # product block exclusive for enterprises in environments that permits it
    if profile.enterprise? && profile.environment.enabled?('products_for_enterprises')
      @available_blocks << ProductsBlock
    end

    # block exclusive to profiles that have blog
    if profile.has_blog?
      @available_blocks << BlogArchivesBlock
    end

    if user.is_admin?(profile.environment)
      @available_blocks << RawHTMLBlock
    end

    @available_blocks

  end

  def index
    available_blocks
  end

end