module HackathonManagerHelper def title(page_title) content_for(:page_title) { page_title } content_for(:title) { page_title } page_title end def btn_link_to(name, path, options = {}) options[:class] ? options[:class] += " button" : options[:class] = "button" link_to(name, path, options) end def phone_link_to(phone_number) link_to(phone_number, "tel:#{phone_number}") end def markdown(text) markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, no_intra_emphasis: true, fenced_code_blocks: true, disable_indented_code_blocks: true, autolink: true, tables: true, underline: true, hard_wrap: true) markdown.render(text).html_safe end def bold(value) "#{h(value)}".html_safe end # Same as link_to, but adds a special active class whenever the link matches # the current page. # Only https://github.com/rails/rails/blob/master/actionview/lib/action_view/helpers/url_helper.rb def active_link_to(name = nil, options = nil, html_options = nil, &block) # this is from Rails source - ignore rubocop # rubocop:disable Style/ParallelAssignment html_options, options, name = options, name, block if block_given? options ||= {} # rubocop:enable Style/ParallelAssignment html_options = convert_options_to_data_attributes(options, html_options) url = url_for(options) html_options["href".freeze] ||= url # Begin custom active_children = html_options.delete('active_children') active_children = true if active_children.nil? current_url = request.env['PATH_INFO'] if current_page?(url) || (active_children && current_url.include?(url)) active_class = html_options.delete('active_class') || 'active' existing_class = html_options['class'] || '' html_options['class'] = existing_class + ' ' + active_class end # End custom content_tag("a".freeze, name || url, html_options, &block) end # https://github.com/rails/sprockets-rails/issues/298#issuecomment-168927471 def asset_available?(logical_path) if Rails.configuration.assets.compile Rails.application.precompiled_assets.include? logical_path else Rails.application.assets_manifest.assets[logical_path].present? end end def collection_or_text(model_value, collection) model_value.blank? || collection.include?(model_value) ? collection : nil end def acc_status_class(acc_status) case acc_status when "denied" "danger" when "accepted" "success" when "waitlist" "info" when "late_waitlist" "secondary" when "pending" "secondary" when "rsvp_denied" "danger" when "rsvp_confirmed" "success" end end def display_datetime(datetime, opts = {}) formatted = "" if Time.now - datetime < 5.hours formatted << "#{time_ago_in_words(datetime, include_seconds: true)} ago" else format = datetime.year == Time.now.year ? "%b %-d at %I:%M %P" : "%b %-d, %Y at %I:%M %P" formatted << "on " if opts[:in_sentence] formatted << datetime.strftime(format) end "#{formatted}".html_safe end def google_maps_link(*args) query = args.reject(&:blank?).join('+') query = CGI.escape(query) "https://www.google.com/maps/search/?api=1&query=#{query}" end end