summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-10-21 04:08:45 -0700
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-10-21 04:08:45 -0700
commitcd9f135a660d835763d63a7ffaefb325f03faaeb (patch)
treeda4e6c1b9c6c71d9672765ed8ddf2c58b1ae6bc4
parent0189ee97ed34b74cf0f500d678d4435b17ab6a85 (diff)
parent4fd73683d904ecc71af3ebce128630f0f90997ae (diff)
downloadgitlab-ce-cd9f135a660d835763d63a7ffaefb325f03faaeb.tar.gz
Merge pull request #1717 from riyad/add-author-to-tree-listing
Update author info in tree listing
-rw-r--r--app/assets/stylesheets/sections/tree.scss24
-rw-r--r--app/decorators/commit_decorator.rb22
-rw-r--r--app/roles/team.rb6
-rw-r--r--app/views/refs/logs_tree.js.haml7
-rw-r--r--app/views/tree/_tree_commit.html.haml3
-rw-r--r--app/views/tree/_tree_commit_column.html.haml2
6 files changed, 48 insertions, 16 deletions
diff --git a/app/assets/stylesheets/sections/tree.scss b/app/assets/stylesheets/sections/tree.scss
index fd12ed00a2a..9f78a6b6ae3 100644
--- a/app/assets/stylesheets/sections/tree.scss
+++ b/app/assets/stylesheets/sections/tree.scss
@@ -52,14 +52,26 @@
}
}
- .tree-commit-link {
- color:#333;
+ .tree_author {
+ padding-right: 8px;
+
+ img.avatar {
+ border: 0 none;
+ float: none;
+ margin-right: 0;
+ padding: 0;
+ width: 16px;
+ }
}
- a.tree-commit-link {
- color: #666;
- &:hover {
- text-decoration: underline;
+ .tree_commit {
+ color: gray;
+
+ .tree-commit-link {
+ color: #444;
+ &:hover {
+ text-decoration: underline;
+ }
}
}
}
diff --git a/app/decorators/commit_decorator.rb b/app/decorators/commit_decorator.rb
index 777580a6d5e..24723941037 100644
--- a/app/decorators/commit_decorator.rb
+++ b/app/decorators/commit_decorator.rb
@@ -42,6 +42,28 @@ class CommitDecorator < ApplicationDecorator
end
end
+ # Returns a link to the commit author. If the author has a matching user and
+ # is a member of the current @project it will link to the team member page.
+ # Otherwise it will link to the author email as specified in the commit.
+ #
+ # options:
+ # avatar: true will prepend avatar image
+ def author_link(options)
+ text = if options[:avatar]
+ avatar = h.image_tag h.gravatar_icon(author_email), class: "avatar", width: 16
+ "#{avatar} #{author_name}"
+ else
+ author_name
+ end
+ team_member = @project.try(:team_member_by_name_or_email, author_name, author_email)
+
+ if team_member.nil?
+ h.mail_to author_email, text.html_safe, class: "commit-author-link"
+ else
+ h.link_to text, h.project_team_member_path(@project, team_member), class: "commit-author-link"
+ end
+ end
+
protected
def no_commit_message
diff --git a/app/roles/team.rb b/app/roles/team.rb
index 8aef405aaf3..a7ba0588cf5 100644
--- a/app/roles/team.rb
+++ b/app/roles/team.rb
@@ -1,7 +1,7 @@
module Team
- def team_member_by_name_or_email(email = nil, name = nil)
- user = users.where("email like ? or name like ?", email, name).first
- users_projects.find_by_user_id(user.id) if user
+ def team_member_by_name_or_email(name = nil, email = nil)
+ user = users.where("name like ? or email like ?", name, email).first
+ users_projects.where(user: user) if user
end
# Get Team Member record by user id
diff --git a/app/views/refs/logs_tree.js.haml b/app/views/refs/logs_tree.js.haml
index b0ac0c4b0fd..23a6dae7810 100644
--- a/app/views/refs/logs_tree.js.haml
+++ b/app/views/refs/logs_tree.js.haml
@@ -1,9 +1,8 @@
- @logs.each do |content_data|
- file_name = content_data[:file_name]
- - content_commit = content_data[:commit]
- - tm = @project.team_member_by_name_or_email(content_commit.author_email, content_commit.author_name)
+ - commit = content_data[:commit]
:plain
var row = $("table.table_#{@hex_path} tr.file_#{hexdigest(file_name)}");
- row.find("td.tree_time_ago").html('#{escape_javascript(time_ago_in_words(content_commit.committed_date))} ago');
- row.find("td.tree_commit").html('#{escape_javascript(render("tree/tree_commit", tm: tm, content_commit: content_commit))}');
+ row.find("td.tree_time_ago").html('#{escape_javascript time_ago_in_words(commit.committed_date)} ago');
+ row.find("td.tree_commit").html('#{escape_javascript render("tree/tree_commit_column", commit: commit)}');
diff --git a/app/views/tree/_tree_commit.html.haml b/app/views/tree/_tree_commit.html.haml
deleted file mode 100644
index 1bcf1a7ea1d..00000000000
--- a/app/views/tree/_tree_commit.html.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-- if tm
- = link_to "[#{tm.user_name}]", project_team_member_path(@project, tm)
-= link_to_gfm truncate(content_commit.title, length: tm ? 30 : 50), project_commit_path(@project, content_commit.id), class: "tree-commit-link"
diff --git a/app/views/tree/_tree_commit_column.html.haml b/app/views/tree/_tree_commit_column.html.haml
new file mode 100644
index 00000000000..9d02132b0f4
--- /dev/null
+++ b/app/views/tree/_tree_commit_column.html.haml
@@ -0,0 +1,2 @@
+%span.tree_author= commit.author_link avatar: true
+= link_to_gfm truncate(commit.title, length: 80), project_commit_path(@project, commit.id), class: "tree-commit-link"