require 'redcarpet' module ApplicationHelper @@keyQueue = nil @@translationsOnThisPage = nil @@lastTranslation = nil @@allTranslations = nil @@no_banner = true @@banner_attribution_details = nil @@banner_image = nil @@has_content = true @@front_page = false @@body_class = nil @@test_location = nil def init_vars @@keyQueue = nil @@no_banner = true @@banner_attribution_details = nil @@banner_image = nil @@has_content = true @@front_page = false @@body_class = nil end def this_is_the_front_page @@front_page = true end def header_is_fixed @fixed_header = true end def is_header_fixed? @fixed_header ||= false end def is_this_the_front_page? return @@front_page end def header_classes classes = Array.new classes << 'fixed' if is_header_fixed? return classes end def ThereAreTranslationsOnThisPage? @@translationsOnThisPage end def get_all_translations @@allTranslations end def title(page_title) content_for(:title) { page_title.to_s } end def description(page_description) content_for(:description) { page_description.to_s } end def banner_image(banner_image, name: nil, id: nil, user_id: nil, src: nil) @@no_banner = false @@banner_image = banner_image if (name || id || user_id || src) @@banner_attribution_details = {:name => name, :id => id, :user_id => user_id, :src => src} end content_for(:banner_image) { banner_image.to_s } end def banner_attrs(banner_image) @@no_banner = false if banner_image.length > 0 @@banner_image = banner_image return {style: 'background-image: url(' + banner_image + ');', class: 'has-image' } end {class: 'no-image'} end def has_banner? !@@no_banner end def has_content? @@has_content end def has_no_content @@has_content = false end def banner_title(banner_title) @@no_banner = false content_for(:banner) { ('

' + banner_title.to_s + '

').html_safe } end def banner_attribution if @@banner_image && @@banner_attribution_details src = @@banner_attribution_details[:src] attribution = '
' if src == 'panoramio' attribution += '© ' + _('Banner_image_provided_by_panoramio_user') + ' ' + @@banner_attribution_details[:name] + '' + '' + _('Photos_provided_by_Panoramio_are_under_the_copyright_of_their_owners') + '' end attribution += '
' attribution.html_safe end end def dom_ready(&block) content_for(:dom_ready, &block) end def body_class(c) @@body_class ||= Array.new @@body_class << (c.is_a?(Array) ? c.join(' ') : c) end def page_style#(style) #classes = ['page-style-' + style.to_s] classes = Array.new classes << 'has-translations' if ThereAreTranslationsOnThisPage? classes << 'no-content' unless @@has_content classes << 'has-banner-image' if @@banner_image classes << @@body_class.join(' ') if @@body_class classes << 'fixed-banner' if is_header_fixed? if params[:controller] if params[:controller] == 'application' if params[:action] classes << params[:action] end else classes << params[:controller] if params[:action] classes << params[:controller] + '-' + params[:action] end end end return classes end def yield_or_default(section, default = '') content_for?(section) ? content_for(section) : default end # def _(key, behavior = nil, behavior_size = nil, locale: nil, vars: {}, html: nil, blockData: {}, &block) # options = vars # options[:fallback] = true # if behavior # options[:behavior] = behavior # options[:behavior_size] = behavior_size # end # if locale # options[:locale] = locale.to_sym # end # #if vars # # puts "\nVARS:\t#{vars}\n" # #end # I18n.translate(key, options) # # #queued_keys = nil # #result = nil # # #if key.kind_of?(Hash) # # blockData.merge!(key) # # key = key.keys # #end # # #if block_given? # # @@keyQueue ||= Array.new # # # if key.kind_of?(Array) # # @@keyQueue += key # # else # # @@keyQueue << key # # end # #end # # #if key.kind_of?(Array) # # new_key = key.shift # # if key.count > 0 # # queued_keys = key.dup # # end # # key = new_key # #end # # #if blockData[key] # # behavior = blockData[key][:behavior] || nil # # behavior_size = blockData[key][:behavior_size] || nil # # vars = blockData[key][:vars] || {} # #end # # #@@lastTranslation = nil # #generate_control = _can_translate? # # #puts "\nLLOOCCAALLEE:\t#{locale.to_s}" # #translation = _do_translate(key, vars, behavior, behavior_size, locale) # # #if block_given? # # html = capture(&block) # #end # # #if html # # translation['html'] = html.gsub('%' + key + '%', translation['untranslated']) # #end # # #if generate_control # # @@lastTranslation = translation # # @@allTranslations ||= Hash.new # # @@allTranslations[key] = key # # # result = _translate_me(translation) # #end # # #result ||= translation['html'] || (behavior.to_s == 'strict' ? nil : translation['untranslated']) # # #if queued_keys # # return _ queued_keys, behavior, behavior_size, vars: vars, html: result, blockData: blockData # #end # #return result # end def _translate_me(translation) @@translationsOnThisPage = true datakeys = '' translation['vars'].each { |key, value| datakeys += ' data-var-' + key.to_s + '="' + value.to_s.gsub('"', '"') + '"' } ('' + (translation['html'] || translation['untranslated']) + '').to_s.html_safe end def _do_translate(key, vars, behavior, behavior_size, locale) translation = {'key' => key, 'lang' => '0', 'vars' => vars} v = vars.dup begin v[:raise] = true options = {:raise => true} if locale options[:locale] = locale.to_sym end translation['untranslated'] = I18n.translate(key, v, options) translation['lang'] = locale.to_s translation['is_translated'] = true hash = Hash.new translations = Translation.where(["locale = ? AND key LIKE ?", locale.to_s, key + '%']).take(6).each { |o| hash[o.key] = o.value } translation['translated'] = hash.to_json.gsub('"', '"') rescue I18n::MissingTranslationData default_translation = I18n::MissingTranslationExceptionHandler.note(key, behavior, behavior_size) translation['untranslated'] = default_translation end return translation end def _can_translate?() false end #def _!() # if @@keyQueue # return '%' + @@keyQueue.shift + '%' # end #end #def _?() # if @@keyQueue # return '%' + @@keyQueue[0] + '%' # end #end def sortable(objects, id = 'id', url: nil, &block) result = '