require 'digest' module Bookends module ApplicationHelper def relative_search_path '/search' end def search_disabled? false end def header_search_input tag 'input', type: 'text', spellcheck: 'false', autocomplete: 'off', name: 'q', title: 'search' end def logged_in? !!cookies[:heroku_session] end def glostick_user_name glostick_user['full_name'] end def glostick_user_email glostick_user['email'] end def glostick_user_id glostick_user['id'] end # Available options: # - class: classes to be set in the class HTML attribute # - redirect_url: will be inserted as a redirect-url param in the signup URL # - signup_path: will be appended to the signup URL (e.g: signup_path "ruby" will generate a link to signup.h.c/ruby) def signup_link(title, ga_label: nil, **options) url = 'https://signup.heroku.com' url += "/#{options[:signup_path]}" if options[:signup_path] if options[:redirect_url] params = { 'redirect-url' => options[:redirect_url] } url << "?#{params.to_query}" end data = { trackable: { category: 'Sign Up Links', action: 'Clicked', label: ga_label } } link_to title, url, class: options[:class], data: data end def hero_class #to be overriden by consumers, optionally end def avatar_url(email) default_avatar_url = 'https://www.herokucdn.com/images/ninja-avatar-48x48.png' return default_avatar_url unless email gravatar_url = 'https://gravatar.com/avatar' hashed_email = Digest::MD5.hexdigest(email) size = 48 "#{gravatar_url}/#{hashed_email}?s=#{size}&d=#{default_avatar_url}" end def link_to_new_window(text, link, options = {}) words = text.split(' ') link_to( link, { aria: { label: "#{text} (Opens in new window)" }, target: '_blank' }.merge!(options) ) do concat(words[0..-2].join(' ')) concat(' ') concat(content_tag(:span, class: 'new-window-icon') do words[-1] end) end end private def glostick_user @glostick_user ||= Bookends::GlostickUserExtractor.new(cookies, session_cookie_secret).user end def session_cookie_secret ENV['SESSION_COOKIE_SECRET_PRIMARY'] || ENV['SESSION_COOKIE_SECRET_SECONDARY'] end end end