Anyhow, I was too tired to sleep after an unscheduled day-job on
Sunday X-<, and whipped this up for fun.
-- >8 --
[PATCH] gitweb: remove UNIXy mode bits from tree display
and replace it with an image icon for cuteness ;-).
Signed-off-by: Junio C Hamano <junkio@cox.net>
---
gitweb/gitweb.css | 20 ++++++++++++++++++++
gitweb/gitweb.perl | 21 ++++++++++++++++++++-
2 files changed, 40 insertions(+), 1 deletions(-)
diff --git a/gitweb/gitweb.css b/gitweb/gitweb.css
index eb9fc38..c4aaf7c 100644
--- a/gitweb/gitweb.css
+++ b/gitweb/gitweb.css
@@ -211,6 +211,26 @@ td.selflink {
padding-right: 0px;
}
+td.executable {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANAQMAAABIJXY/AAAABlBMVEX///+UAN7OszyBAAAAAXRSTlMAQObYZgAAACVJREFUCNdjYGBgYGdgMEhgUFBgYGJgcBKAIiAbKAIUB8oyMAAANBcCqbivEbgAAAAASUVORK5CYII=);
+ background-repeat: no-repeat;
+}
+
+td.folder {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANAQMAAABIJXY/AAAABlBMVEX///+UAN7OszyBAAAAAXRSTlMAQObYZgAAAB1JREFUCNdjYGBgkGFgUGJgcPzA4CCABdV/ACoBAFTTBQ822ZerAAAAAElFTkSuQmCC);
+ background-repeat: no-repeat;
+}
+
+td.regular {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANAQMAAABIJXY/AAAABlBMVEX///+UAN7OszyBAAAAAXRSTlMAQObYZgAAABtJREFUCNdjqD/A4JDA4BDA4FDB4MCBHdX/AACO5wbfUNnbqwAAAABJRU5ErkJggg==);
+ background-repeat: no-repeat;
+}
+
+td.symlink {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANAQMAAABIJXY/AAAABlBMVEX///+UAN7OszyBAAAAAXRSTlMAQObYZgAAACVJREFUCNdjYGBg4G9gMEhgUFBgcBAAIQYYYlFg4ElgkG8AKgEARSsDX750+Y0AAAAASUVORK5CYII=);
+ background-repeat: no-repeat;
+}
+
td.sha1 {
font-family: monospace;
}
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 7e4ec8d..8c54a5d 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -567,6 +567,23 @@ sub age_string {
}
# convert file mode in octal to symbolic file mode string
+sub kind_class {
+ my ($type, $mode) = @_;
+ $mode = oct $mode;
+ if (S_ISDIR($mode & S_IFMT)) {
+ return 'folder';
+ } elsif (S_ISLNK($mode)) {
+ return 'symlink';
+ } elsif (S_ISREG($mode)) {
+ # git cares only about the executable bit
+ if ($mode & S_IXUSR) {
+ return 'executable';
+ } else {
+ return 'regular';
+ };
+ }
+}
+
sub mode_str {
my $mode = oct shift;
@@ -1651,7 +1668,9 @@ sub git_print_tree_entry {
# the mode of the entry, list is the name of the entry, an href,
# and link is the action links of the entry.
- print "<td class=\"mode\">" . mode_str($t->{'mode'}) . "</td>\n";
+ my $kind = kind_class($t->{'type'}, $t->{'mode'});
+ print "<td class=\"$kind\"> </td>\n";
+
if ($t->{'type'} eq "blob") {
print "<td class=\"list\">" .
$cgi->a({-href => href(action=>"blob", hash=>$t->{'hash'},
--
1.4.2.2.g91c5
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html