Nicer commit headers.

This commit is contained in:
Arthur Schreiber 2012-04-14 00:46:11 +02:00
parent a1d59d8053
commit c530543c1a
4 changed files with 99 additions and 21 deletions

View file

@ -94,7 +94,12 @@ $hover: #FDF5D9;
@import "common.scss"; @import "common.scss";
/** /**
* This scss file redefine chozen selectbox styles for * Styles related to displaying commits
*/
@import "sections/commits.scss";
/**
* This scss file redefine chozen selectbox styles for
* project Branch/Tag select element * project Branch/Tag select element
*/ */
@import "ref_select.scss"; @import "ref_select.scss";

View file

@ -0,0 +1,33 @@
.commit-head {
@extend .well;
padding: 14px;
padding-bottom: 8px;
.browse-button {
@extend .btn;
@extend .btn-small;
float: right;
}
.commit-title {
line-height: 26px;
}
.commit-description {
background-color: white;
}
.sha-block {
float: right;
margin-left: 10px
}
.committer {
padding-left: 32px;
}
.avatar {
margin-right: 4px;
}
}

View file

@ -106,6 +106,41 @@ class Commit
utf8 author.name utf8 author.name
end end
# Returns the commits title.
#
# Usually, the commit title is the first line of the commit message.
# In case this first line is longer than 80 characters, it is cut off
# after 70 characters and ellipses (`&hellp;`) are appended.
#
# @todo This might be better placed in a view helper.
def title
title_end = safe_message.index(/\n/)
if (!title_end && safe_message.length > 80) || (title_end && title_end > 80)
safe_message[0..69] << "&hellip;".html_safe
else
safe_message.split(/\n/, 2).first
end
end
# Returns the commits description
#
# cut off, ellipses (`&hellp;`) are prepended to the commit message.
#
# @todo This might be better placed in a view helper.
def description
title_end = safe_message.index(/\n/)
if (!title_end && safe_message.length > 80) || (title_end && title_end > 80)
"&hellip;".html_safe << safe_message[70..-1]
else
safe_message.split(/\n/, 2)[1].try(:chomp)
end
end
# Was this commit committed by a different person than the original author?
def different_committer?
author_name != committer_name || author_email != committer_email
end
def committer_name def committer_name
utf8 committer.name utf8 committer.name
end end

View file

@ -1,26 +1,31 @@
.main_box .commit-head{class: @commit.parents.count > 1 ? "merge-commit" : ""}
.top_box_content = link_to "Browse Code »", tree_project_ref_path(@project, @commit.id), :class => "browse-button"
.right %h3.commit-title
- unless @notes_count.zero? = commit_msg_with_link_to_issues(@project, @commit.title)
%span.btn.small.disabled.padded= pluralize @notes_count, 'note' - if @commit.description.present?
%pre.commit-description
= link_to tree_project_ref_path(@project, @commit.id), :class => "btn small" do = commit_msg_with_link_to_issues(@project, @commit.description)
Browse Code » %span.sha-block
= image_tag gravatar_icon(@commit.author_email), :class => "avatar" commit
%code= @commit.id.to_s %code= @commit.id
%h5 %span.sha-block
= pluralize(@commit.parents.count, "parent")
- @commit.parents.each do |parent|
%code= link_to parent.id, project_commit_path(@project, parent)
.commit-info
.author
= image_tag gravatar_icon(@commit.author_email, 24), :class => "avatar", :height => 24, :width => 24
= @commit.author_name = @commit.author_name
%small= @commit.created_at.stamp("Aug 21, 2011 9:23pm") authored
- if @commit.author_name != @commit.committer_name or @commit.author_email != @commit.committer_email or @commit.authored_date != @commit.committed_date %time{title: @commit.authored_date.stamp("Aug 21, 2011 9:23pm")}
&ndash; #{time_ago_in_words(@commit.authored_date)} ago
%cite committed by - if @commit.different_committer?
.committer
= @commit.committer_name = @commit.committer_name
%small= @commit.committed_date.stamp("Aug 21, 2011 9:23pm") committed
%time{title: @commit.committed_date.stamp("Aug 21, 2011 9:23pm")}
#{time_ago_in_words(@commit.committed_date)} ago
.middle_box_content
%pre.commit_message
= commit_msg_with_link_to_issues(@project, @commit.safe_message)
%br
= render "commits/diffs", :diffs => @commit.diffs = render "commits/diffs", :diffs => @commit.diffs
= render "notes/notes", :tid => @commit.id, :tt => "commit" = render "notes/notes", :tid => @commit.id, :tt => "commit"
= render "notes/per_line_form" = render "notes/per_line_form"