require 'md5' module ApplicationHelper def submit_tag(value = "Save Changes", options={} ) or_option = options.delete(:or) return super + "or " + or_option + "" if or_option super end def ajax_spinner_for(id, spinner="spinner.gif") " " end def avatar_for(user, size=32) image_tag "https://www.gravatar.com/avatar.php?gravatar_id=#{MD5.md5(user.email)}&size=#{size}", :size => "#{size}x#{size}", :class => 'photo' end def feed_icon_tag(title, url) (@feed_icons ||= []) << { :url => url, :title => title } link_to image_tag('feed-icon.png', :size => '14x14', :alt => "Subscribe to #{title}"), url end def search_posts_title returning(params[:q].blank? ? 'Recent Posts' : "Searching for '#{h params[:q]}'") do |title| title << " by #{h User.find(params[:user_id]).display_name}" if params[:user_id] title << " in #{h Forum.find(params[:forum_id]).name}" if params[:forum_id] end end def search_posts_path(rss = false) options = params[:q].blank? ? {} : {:q => params[:q]} prefix = rss ? 'formatted_' : '' options[:format] = 'rss' if rss [[:user, :user_id], [:forum, :forum_id]].each do |(route_key, param_key)| return send("#{prefix}#{route_key}_posts_path", options.update(param_key => params[param_key])) if params[param_key] end options[:q] ? all_search_posts_path(options) : send("#{prefix}all_posts_path", options) end def apphelp_pagination_fields "#{hidden_field_tag :page, params[:page] if params.has_key?(:page)}" << "#{hidden_field_tag :posts_per_page, params[:posts_per_page] if params.has_key?(:posts_per_page)}" end def distance_of_time_in_words(from_time, to_time = 0, include_seconds = false) from_time = from_time.to_time if from_time.respond_to?(:to_time) to_time = to_time.to_time if to_time.respond_to?(:to_time) distance_in_minutes = (((to_time - from_time).abs)/60).round case distance_in_minutes when 0..1 then (distance_in_minutes==0) ? 'a few seconds ago' : '1 minute ago' when 2..59 then "#{distance_in_minutes} minutes ago" when 60..90 then "1 hour ago" when 90..1440 then "#{(distance_in_minutes.to_f / 60.0).round} hours ago" when 1440..2160 then '1 day ago' # 1 day to 1.5 days when 2160..2880 then "#{(distance_in_minutes.to_f / 1440.0).round} days ago" # 1.5 days to 2 days else from_time.strftime("%b %e, %Y %l:%M%p").gsub(/([AP]M)/) { |x| x.downcase } end end end