[PATCH 2/4] gitweb: show notes in shortlog view
From: Giuseppe Bilotta <hidden>
Date: 2016-06-15 22:48:10
Subsystem:
the rest · Maintainer:
Linus Torvalds
The presence of the note is shown by a small icon, hovering on which reveals the actual note content. --- gitweb/gitweb.css | 29 +++++++++++++++++++++++++++++ gitweb/gitweb.perl | 30 +++++++++++++++++++++++++++++- 2 files changed, 58 insertions(+), 1 deletions(-)
diff --git a/gitweb/gitweb.css b/gitweb/gitweb.css
index 50067f2..7d1836b 100644
--- a/gitweb/gitweb.css
+++ b/gitweb/gitweb.css@@ -572,3 +572,32 @@ span.match { div.binary { font-style: italic; } + +span.notes { + float:right; + position:relative; +} + +span.notes span.note-container:before { + content: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAgMAAAC5YVYYAAAAAXNSR0IArs4c6QAAAAlQTFRFAABnybuD//+t5rXizQAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAAGElEQVQI12MIDWXIWglDQHYIQ1YAQ6gDAFWPBrAKFe0fAAAAAElFTkSuQmCC'); +} + +span.notes span.note { + display:none; +} + +span.notes span.note-container img { + content: normal; +} + +span.notes span.note-container:hover span.note { + display:block; + content:normal; + background-color:#ffffad; + border:1px solid #c9bb83; + padding:4px;margin:0; + position:absolute; + top:0;right:0; + z-index:10; + overflow:visible; +}
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 9ba5815..1701ed1 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl@@ -1628,6 +1628,33 @@ sub format_subject_html { } } +# display notes next to a commit +sub format_notes_html { + my %notes = %{$_[0]}; + my $ret = ""; + while (my ($ref, $text) = each %notes) { + # remove 'refs/notes/' and an optional final s + $ref =~ s/^refs\/notes\///; + $ref =~ s/s$//; + + # double markup is needed to allow pure CSS cross-browser 'popup' + # of the note + $ret .= "<span title='$ref' class='note-container $ref'>"; + $ret .= "<span title='$ref' class='note $ref'>"; + foreach my $line (split /\n/, $text) { + $ret .= esc_html($line) . "<br/>"; + } + $ret .= "</span></span>"; + } + if ($ret) { + return "<span class='notes'>$ret</span>"; + } else { + return $ret; + } + + +} + # Rather than recomputing the url for an email multiple times, we cache it # after the first hit. This gives a visible benefit in views where the avatar # for the same email is used repeatedly (e.g. shortlog).
@@ -4595,6 +4622,7 @@ sub git_shortlog_body { my %co = %{$commitlist->[$i]}; my $commit = $co{'id'}; my $ref = format_ref_marker($refs, $commit); + my $notes = format_notes_html($co{'notes'}); if ($alternate) { print "<tr class=\"dark\">\n"; } else {
@@ -4605,7 +4633,7 @@ sub git_shortlog_body { print "<td title=\"$co{'age_string_age'}\"><i>$co{'age_string_date'}</i></td>\n" . format_author_html('td', \%co, 10) . "<td>"; print format_subject_html($co{'title'}, $co{'title_short'}, - href(action=>"commit", hash=>$commit), $ref); + href(action=>"commit", hash=>$commit), $ref . $notes); print "</td>\n" . "<td class=\"link\">" . $cgi->a({-href => href(action=>"commit", hash=>$commit)}, "commit") . " | " .
--
1.7.0.rc1.193.ge8618