application_helper.rb 4.5 KB
Newer Older
G
gitlabhq 已提交
1 2
require 'digest/md5'
module ApplicationHelper
3

4
  def gravatar_icon(user_email = '', size = 40)
5
    return unless user_email
6
    gravatar_host = request.ssl? ? "https://secure.gravatar.com" :  "http://www.gravatar.com"
7 8
    user_email.strip!
    "#{gravatar_host}/avatar/#{Digest::MD5.hexdigest(user_email.downcase)}?s=#{size}&d=identicon"
G
gitlabhq 已提交
9 10
  end

11 12 13 14 15
  def request_protocol
    request.ssl? ? "https" : "http"
  end

  def web_app_url
16
    "#{request_protocol}://#{Gitlab.config.web_host}/"
17 18
  end

G
gitlabhq 已提交
19
  def last_commit(project)
N
Nihad Abbasov 已提交
20
    if project.repo_exists?
G
gitlabhq 已提交
21
      time_ago_in_words(project.commit.committed_date) + " ago"
N
Nihad Abbasov 已提交
22
    else
G
gitlabhq 已提交
23 24
      "Never"
    end
N
Nihad Abbasov 已提交
25
  rescue
G
gitlabhq 已提交
26
    "Never"
G
gitlabhq 已提交
27 28
  end

G
gitlabhq 已提交
29
  def grouped_options_refs(destination = :tree)
G
gitlabhq 已提交
30
    options = [
D
Dmitriy Zaporozhets 已提交
31
      ["Branch", @project.repo.heads.map(&:name) ],
G
gitlabhq 已提交
32 33 34
      [ "Tag", @project.tags ]
    ]

A
Andrey Vakarev 已提交
35
    # If reference is commit id -
36
    # we should add it to branch/tag selectbox
37
    if(@ref && !options.flatten.include?(@ref) &&
38 39 40 41
       @ref =~ /^[0-9a-zA-Z]{6,52}$/)
      options << ["Commit", [@ref]]
    end

D
Dmitriy Zaporozhets 已提交
42
    grouped_options_for_select(options, @ref || @project.default_branch)
G
gitlabhq 已提交
43 44
  end

N
Nihad Abbasov 已提交
45
  def markdown(text)
46 47 48 49 50 51 52 53 54 55 56 57
    @__renderer ||= Redcarpet::Markdown.new(Redcarpet::Render::GitlabHTML.new(filter_html: true), {
      no_intra_emphasis: true,
      tables: true,
      fenced_code_blocks: true,
      autolink: true,
      strikethrough: true,
      lax_html_blocks: true,
      space_after_headers: true,
      superscript: true
    })

    @__renderer.render(text).html_safe
N
Nihad Abbasov 已提交
58 59
  end

G
gitlabhq 已提交
60 61 62
  def search_autocomplete_source
    projects = current_user.projects.map{ |p| { :label => p.name, :url => project_path(p) } }
    default_nav = [
R
randx 已提交
63
      { :label => "Profile", :url => profile_path },
N
Nihad Abbasov 已提交
64
      { :label => "Keys", :url => keys_path },
R
randx 已提交
65
      { :label => "Dashboard", :url => root_path },
G
gitlabhq 已提交
66 67 68 69 70 71 72
      { :label => "Admin", :url => admin_root_path }
    ]

    project_nav = []

    if @project && !@project.new_record?
      project_nav = [
73 74 75 76 77
        { :label => "#{@project.name} / Issues", :url => project_issues_path(@project) },
        { :label => "#{@project.name} / Wall", :url => wall_project_path(@project) },
        { :label => "#{@project.name} / Tree", :url => tree_project_ref_path(@project, @project.root_ref) },
        { :label => "#{@project.name} / Commits", :url => project_commits_path(@project) },
        { :label => "#{@project.name} / Team", :url => team_project_path(@project) }
G
gitlabhq 已提交
78 79 80 81 82 83
      ]
    end

    [projects, default_nav, project_nav].flatten.to_json
  end

V
vsizov 已提交
84 85 86
  def ldap_enable?
    Devise.omniauth_providers.include?(:ldap)
  end
87

88
  def app_theme
89
    Gitlab::Theme.css_class_by_id(current_user.try(:theme_id))
90
  end
R
randx 已提交
91 92

  def show_last_push_widget?(event)
R
randx 已提交
93 94 95 96 97
    event && 
      event.last_push_to_non_root? &&
      !event.rm_ref? &&
      event.project && 
      event.project.merge_requests_enabled
R
randx 已提交
98
  end
D
Dmitriy Zaporozhets 已提交
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129

  def tab_class(tab_key)
    active = case tab_key
             
             # Project Area
             when :wall; wall_tab?
             when :wiki; controller.controller_name == "wikis"
             when :issues; issues_tab?
             when :network; current_page?(:controller => "projects", :action => "graph", :id => @project)
             when :merge_requests; controller.controller_name == "merge_requests"

             # Dashboard Area
             when :help; controller.controller_name == "help"
             when :search; current_page?(search_path)
             when :dash_issues; current_page?(dashboard_issues_path)
             when :dash_mr; current_page?(dashboard_merge_requests_path)
             when :root; current_page?(dashboard_path) || current_page?(root_path)

             # Profile Area
             when :profile;  current_page?(:controller => "profile", :action => :show)
             when :password; current_page?(:controller => "profile", :action => :password)
             when :token;    current_page?(:controller => "profile", :action => :token)
             when :design;   current_page?(:controller => "profile", :action => :design)
             when :ssh_keys; controller.controller_name == "keys"

             # Admin Area
             when :admin_root;     controller.controller_name == "dashboard"
             when :admin_users;    controller.controller_name == 'users'
             when :admin_projects; controller.controller_name == "projects"
             when :admin_emails;   controller.controller_name == 'mailer'
             when :admin_resque;   controller.controller_name == 'resque'
130
             when :admin_logs;   controller.controller_name == 'logs'
D
Dmitriy Zaporozhets 已提交
131 132 133 134 135 136

             else
               false
             end
    active ? "current" : nil
  end
G
gitlabhq 已提交
137
end