module Freeberry module Controllers module HelperUtils def title(content) content_for(:title) { content } unless content.blank? end def javascript(*args) content_for(:head) { javascript_include_tag(*args) } end def stylesheet(*args) content_for(:head) { stylesheet_link_tag(*args) } end def description(content) content_for(:description) { tag(:meta, :content=>content, :name=>"description") } unless content.blank? end def keywords(content) content_for(:keywords) { tag(:meta, :content=>content, :name=>"keywords") } unless content.blank? end def page_title h([@page_title, I18n.t("page.title")].compact.join(' – ')) end def page_keywords h([@page_keywords, I18n.t("page.meta_keywords")].compact.join(' ')) end def page_description h([@page_description, I18n.t("page.meta_description")].compact.join(', ')) end def anchor_to(name, options={}) return if name.blank? options[:name] = name content_tag(:a, '', options) end def link_by_href(name, options={}) link_to name, name, options end def link_to_unless_current_span(name, options = {}, html_options = {}, &block) link_to_unless_span current_page?(options), name, options, html_options, &block end def link_to_unless_span(condition, name, options = {}, html_options = {}, &block) if condition if block_given? block.arity <= 1 ? yield(name) : yield(name, options, html_options) else content_tag(:span, name, html_options) end else link_to(name, options, html_options) end end def link_to_unless_current_tag(name, options = {}, html_options = {}, &block) link_to_unless_tag current_page?(options), name, options, html_options, &block end def link_to_if_tag(condition, name, options = {}, html_options = {}, &block) tag_name = html_options.delete(:tag) || :span if condition link_to(name, options, html_options) else if block_given? block.arity <= 1 ? yield(name) : yield(name, options, html_options) else content_tag(tag_name, name, html_options) end end end def link_to_unless_tag(condition, name, options = {}, html_options = {}, &block) tag_name = html_options.delete(:tag) || :span unless condition link_to(name, options, html_options) else if block_given? block.arity <= 1 ? yield(name) : yield(name, options, html_options) else content_tag(tag_name, name, html_options) end end end def link_to_remote_if(condition, name, options = {}, html_options = nil) return name unless condition link_to_function(name, remote_function(options), html_options || options.delete(:html)) end def submit_image(name, src, options={}) html_options = options.dup.symbolize_keys html_options[:name] = name html_options[:src] = src html_options[:type] ||= 'image' tag(:input, html_options) end def submit_image_to_remote(name, value, options = {}) options[:with] ||= 'Form.serialize(this.form)' html_options = options.delete(:html) || {} html_options[:name] = name html_options[:type] ||= 'button' onclick = html_options.delete(:onclick) || remote_function(options) tag(:input, html_options.merge(:value => name, :onclick => onclick)) end def locale_image_tag(source, options = {}) source = "#{I18n.locale}/#{source}" image_tag(source, options) end # swf_object def swf_object(swf, id, width, height, flash_version, options = {}) options.symbolize_keys! params = options.delete(:params) || {} attributes = options.delete(:attributes) || {} flashvars = options.delete(:flashvars) || {} attributes[:classid] ||= "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" attributes[:id] ||= id attributes[:name] ||= id output_buffer = ActiveSupport::SafeBuffer.new if options[:create_div] output_buffer << content_tag(:div, "This website requires Flash player #{flash_version} or higher.", :id => id) end js = [] js << "var params = {#{params.to_a.map{|item| "#{item[0]}:'#{item[1]}'" }.join(',')}};" js << "var attributes = {#{attributes.to_a.map{|item| "#{item[0]}:'#{item[1]}'" }.join(',')}};" js << "var flashvars = {#{flashvars.to_a.map{|item| "#{item[0]}:'#{item[1]}'" }.join(',')}};" js << "swfobject.embedSWF('#{swf}', '#{id}', '#{width}', '#{height}', '#{flash_version}', '/swf/expressInstall.swf', flashvars, params, attributes);" output_buffer << javascript_tag(js.join) output_buffer end def encode_email(email_address, options = {}) email_address = email_address.to_s string = '' "document.write('#{email_address}');".each_byte do |c| string << sprintf("%%%x", c) end "" end end end end