module Spina module ApplicationHelper def markdown(text) sha = Digest::SHA1.hexdigest(text.to_s) Rails.cache.fetch sha do renderer = Redcarpet::Render::HTML.new(hard_wrap: true, filter_html: false) options = { autolink: true, no_intra_emphasis: true, fenced_code_blocks: true, lax_spacing: true, strikethrough: true, superscript: true } html = Redcarpet::Markdown.new(renderer, options).render(text.to_s) html.gsub!(/\[vimeo\s+(\d*)\]/, '
') html.gsub!(/\[button\s+(.*)\](.*)\[\/button\]/, '\2') html.html_safe end end def link_to_add_fields(name, f, association) new_object = f.object.send(association).klass.new id = new_object.object_id fields = f.fields_for(association, new_object, child_index: id) do |builder| render(association.to_s.singularize + "_fields", f: builder) end link_to(name, '#', class: "add_fields button button-primary button-link", data: {id: id, fields: fields.gsub("\n", ""), icon: '&'}) end def current_account @current_account ||= Account.first end def image_tag_with_at2x(name_at_1x, options={}) name_at_2x = name_at_1x.gsub(%r{\.\w+$}, '@2x\0') image_tag(name_at_1x, options.merge("data-at2x" => asset_path(name_at_2x))) end def error_explanation!(resource) return "" if resource.errors.empty? messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join sentence = I18n.t("errors.messages.not_saved", count: resource.errors.count, resource: resource.class.model_name.human.downcase) html = <<-HTML

#{sentence}

HTML html.html_safe end def captcha NegativeCaptcha.new( secret: Engine.config.NEGATIVE_CAPTCHA_SECRET, spinner: request.remote_ip, fields: [:email, :message, :name], params: params ) end end end