git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/6] gitweb: Mark matched 'ctag' / contents tag (?by_tag=foo)

From
Jakub Narebski <jnareb@gmail.com>
Date
Apr 29, 2011, 17:51 UTC
Message-ID
<1304099521-27617-4-git-send-email-jnareb@gmail.com>
In-Reply-To
<1304099521-27617-1-git-send-email-jnareb@gmail.com>

It might have been hard to discover that current view is limited to projects with given content tag (ctag), as it was distinquished only in gitweb URL. Mark matched contents tag in the tag cloud using "match" class, for easier discovery.

This commit introduces a bit of further code duplication in git_populate_project_tagcloud().

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Acked-by: Petr Baudis <pasky@suse.cz>
---
This patch was originally sent to git mailing list as
  [PATCH 2/1] gitweb: Mark matched 'ctag' / contents tag (?by_tag=foo)
  http://thread.gmane.org/gmane.linux.debian.devel.bugs.general/802865/focus=168731
(yes, it was crossposted).
 gitweb/gitweb.perl |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 60cb772..e81c27d 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -2653,6 +2653,7 @@ sub git_populate_project_tagcloud {
 	}
 
 	my $cloud;
+	my $matched = $cgi->param('by_tag');
 	if (eval { require HTML::TagCloud; 1; }) {
 		$cloud = HTML::TagCloud->new;
 		foreach my $ctag (sort keys %ctags_lc) {
@@ -2662,17 +2663,22 @@ sub git_populate_project_tagcloud {
 			$title =~ s/ /&nbsp;/g;
 			$title =~ s/^/&nbsp;/g;
 			$title =~ s/$/&nbsp;/g;
+			if (defined $matched && $matched eq $ctag) {
+				$title = qq(<span class="match">$title</span>);
+			}
 			$cloud->add($title, href(project=>undef, ctag=>$ctag),
 			            $ctags_lc{$ctag}->{count});
 		}
 	} else {
 		$cloud = {};
 		foreach my $ctag (keys %ctags_lc) {
-			my $title = $ctags_lc{$ctag}->{topname};
+			my $title = esc_html($ctags_lc{$ctag}->{topname}, -nbsp=>1);
+			if (defined $matched && $matched eq $ctag) {
+				$title = qq(<span class="match">$title</span>);
+			}
 			$cloud->{$ctag}{count} = $ctags_lc{$ctag}->{count};
 			$cloud->{$ctag}{ctag} =
-				$cgi->a({-href=>href(project=>undef, ctag=>$ctag)},
-			          esc_html($title, -nbsp=>1));
+				$cgi->a({-href=>href(project=>undef, ctag=>$ctag)}, $title);
 		}
 	}
 	return $cloud;
-- 
1.7.3
Previous: Jakub NarebskiNext: Jakub Narebski
Message 5 of 13 in “gitweb: Improve ctags, introduce categories”
  1. 0/6 gitweb: Improve ctags, introduce categoriesJakub Narebski, Apr 29, 2011
  2. 1/6 gitweb: Restructure projects list generationJakub Narebski, Apr 29, 2011
  3. Jakub NarebskiMay 7, 2011
  4. 2/6 gitweb: Change the way "content tags" ('ctags') are handledJakub Narebski, Apr 29, 2011
  5. 3/6 gitweb: Mark matched 'ctag' / contents tag (?by_tag=foo)Jakub Narebski, Apr 29, 2011
  6. 4/6 gitweb: Split git_project_list_body in two functionsJakub Narebski, Apr 29, 2011
  7. 5/6 gitweb: Modularized git_get_project_description to be more genericJakub Narebski, Apr 29, 2011
  8. 6/6 gitweb: Optional grouping of projects by categoryJakub Narebski, Apr 29, 2011
  9. Junio C HamanoApr 29, 2011
  10. Jakub NarebskiApr 29, 2011
  11. Øyvind A. HolmApr 30, 2011
  12. Jakub NarebskiMay 3, 2011
  13. git-send-email: Do not encode Subject if not required (was: git-send-email and non 7bit clean message)Jakub Narebski, May 4, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.