module Cms
module ContentBlockHelper
# From 3.3.x (Performance)
# Delete once we confirm that content_block_tr_tag below works.
# Prints the
for each block. Adds classes based on:
# * Name/id of the block
# * If a block is published/draft
# * If the user can edit/publish it
def block_row_tag(block)
cname = class_name_for(block)
can_modify = current_user.able_to_modify?(block)
options = {
:id => "#{cname}_#{block.id}",
:class => cname
}
options[:class] += block.class.publishable? && !block.published? ? ' draft' : ' published'
options[:class] += ' non-editable' unless can_modify && current_user.able_to?(:edit_content)
options[:class] += ' non-publishable' unless can_modify && current_user.able_to?(:publish_content)
tag "tr", options, true
end
# From 3.4.x (Namespaced and using Data elements to clean up JS in pages)
# For each row in content block table, we need to output all the paths for the actions in a way that JS can read them.
# We use 'data-' elements here to avoid duplication of path calculations.
def content_block_tr_tag(block)
cname = class_name_for(block)
can_modify = current_user.able_to_modify?(block)
options = {}
data = options[:data] = {}
data[:status] = block.class.publishable? && !block.published? ? 'draft' : 'published'
options[:id] = "#{cname}_#{block.id}"
options[:class] = [cname]
options[:class] << 'non-editable' unless can_modify && current_user.able_to?(:edit_content)
options[:class] << 'non-publishable' unless can_modify && current_user.able_to?(:publish_content)
options['data-new_path'] = url_for(new_engine_aware_path(block)) unless block.try :readonly?
options['data-view_path'] = url_for(engine_aware_path(block, nil))
options['data-edit_path'] = url_for(edit_engine_aware_path(block)) unless block.try :readonly?
options['data-preview_path'] = block.path if block.class.addressable?
options['data-versions_path'] = engine(block).polymorphic_path(block, action: :versions) if block.class.versioned?
options['data-delete_path'] = url_for(engine_aware_path(block)) unless block.try :readonly?
options['data-publish_path'] = engine(block).polymorphic_path([:publish, block]) if block.class.publishable?
tag "tr", options, true
end
def class_name_for(block)
block.class.name.underscore
end
end
end