module Alchemy
module Admin
module ContentsHelper
include Alchemy::Admin::BaseHelper
# Returns a string for the id attribute of a html element for the given content
def content_dom_id(content)
return "" if content.nil?
if content.class == String
c = Content.find_by_name(content)
return "" if c.nil?
else
c = content
end
"#{c.essence_type.demodulize.underscore}_#{c.id}"
end
# Renders the name of elements content or the default name defined in elements.yml
def render_content_name(content)
if content.blank?
warning('Element is nil')
return ""
else
content_name = content.name_for_label
end
if content.description.blank?
warning("Content #{content.name} is missing its description")
title = t("Warning: Content is missing its description.", :contentname => content.name)
content_name = %( #{content_name}).html_safe
end
content.has_validations? ? "#{content_name}*".html_safe : content_name
end
# Renders a link to show the new content overlay
def render_new_content_link(element)
link_to_overlay_window(
t('add new content'),
alchemy.new_admin_element_content_path(element),
{
:size => '305x40',
:title => t('Select an content'),
:overflow => true
},
{
:id => "add_content_for_element_#{element.id}",
:class => 'button new_content_link'
}
)
end
# Renders a link to create a new content in element editor
def render_create_content_link(element, options = {})
defaults = {
:label => t('add new content')
}
options = defaults.merge(options)
link_to(
options[:label],
alchemy.admin_contents_path(
:content => {
:name => options[:content_name],
:element_id => element.id
}
),
:method => 'post',
:remote => true,
:id => "add_content_for_element_#{element.id}",
:class => 'button new_content_link'
)
end
# Returns a textarea ready to use with tinymce
def tinymce_tag(name, content = '', options = {})
append_class_name(options, 'tinymce')
text_area_tag(name, content, options)
end
end
end
end