Show More
@@ -1050,7 +1050,8 b' class hgwebdir(object):' | |||
|
1050 | 1050 | if ui.configbool("web", "allow" + i, False): |
|
1051 | 1051 | yield {"type" : i, "node": nodeid, "url": url} |
|
1052 | 1052 | |
|
1053 | def entries(**map): | |
|
1053 | def entries(sortcolumn="", descending=False, **map): | |
|
1054 | rows = [] | |
|
1054 | 1055 | parity = 0 |
|
1055 | 1056 | for name, path in self.repos: |
|
1056 | 1057 | u = ui.ui() |
@@ -1069,17 +1070,36 b' class hgwebdir(object):' | |||
|
1069 | 1070 | except OSError: |
|
1070 | 1071 | continue |
|
1071 | 1072 | |
|
1072 |
|
|
|
1073 | contact = (get("ui", "username") or # preferred | |
|
1073 | 1074 |
|
|
1074 |
|
|
|
1075 |
|
|
|
1075 | get("web", "author", "")) # also | |
|
1076 | description = get("web", "description", "") | |
|
1077 | name = get("web", "name", name) | |
|
1078 | row = dict(contact=contact or "unknown", | |
|
1079 | contact_sort=contact.upper() or "unknown", | |
|
1080 | name=name, | |
|
1081 | name_sort=name.upper(), | |
|
1076 | 1082 | url=url, |
|
1077 |
|
|
|
1078 |
|
|
|
1079 |
last |
|
|
1083 | description=description or "unknown", | |
|
1084 | description_sort=description.upper() or "unknown", | |
|
1085 | lastchange=d, | |
|
1086 | lastchange_sort=d[1]-d[0], | |
|
1080 | 1087 | archives=archivelist(u, "tip", url)) |
|
1081 | ||
|
1088 | if not sortcolumn: | |
|
1089 | # fast path for unsorted output | |
|
1090 | row['parity'] = parity | |
|
1082 | 1091 | parity = 1 - parity |
|
1092 | yield row | |
|
1093 | else: | |
|
1094 | rows.append((row["%s_sort" % sortcolumn], row)) | |
|
1095 | if rows: | |
|
1096 | rows.sort() | |
|
1097 | if descending: | |
|
1098 | rows.reverse() | |
|
1099 | for key, row in rows: | |
|
1100 | row['parity'] = parity | |
|
1101 | parity = 1 - parity | |
|
1102 | yield row | |
|
1083 | 1103 | |
|
1084 | 1104 | virtual = req.env.get("PATH_INFO", "").strip('/') |
|
1085 | 1105 | if virtual: |
@@ -1100,4 +1120,20 b' class hgwebdir(object):' | |||
|
1100 | 1120 | req.write(staticfile(static, fname) |
|
1101 | 1121 | or tmpl("error", error="%r not found" % fname)) |
|
1102 | 1122 | else: |
|
1103 | req.write(tmpl("index", entries=entries)) | |
|
1123 | sortable = ["name", "description", "contact", "lastchange"] | |
|
1124 | sortcolumn = "" | |
|
1125 | if req.form.has_key('sort'): | |
|
1126 | sortcolumn = req.form['sort'][0] | |
|
1127 | descending = sortcolumn.startswith('-') | |
|
1128 | if descending: | |
|
1129 | sortcolumn = sortcolumn[1:] | |
|
1130 | if sortcolumn not in sortable: | |
|
1131 | sortcolumn = "" | |
|
1132 | ||
|
1133 | sort = [("sort_%s" % column, | |
|
1134 | "%s%s" % ((not descending and column == sortcolumn) | |
|
1135 | and "-" or "", column)) | |
|
1136 | for column in sortable] | |
|
1137 | req.write(tmpl("index", entries=entries, | |
|
1138 | sortcolumn=sortcolumn, descending=descending, | |
|
1139 | **dict(sort))) |
@@ -7,10 +7,10 b'' | |||
|
7 | 7 | |
|
8 | 8 | <table> |
|
9 | 9 | <tr> |
|
10 | <td>Name</td> | |
|
11 | <td>Description</td> | |
|
12 | <td>Contact</td> | |
|
13 | <td>Last change</td> | |
|
10 | <td><a href="?sort=#sort_name#">Name</a></td> | |
|
11 | <td><a href="?sort=#sort_description#">Description</a></td> | |
|
12 | <td><a href="?sort=#sort_contact#">Contact</a></td> | |
|
13 | <td><a href="?sort=#sort_lastchange#">Last change</a></td> | |
|
14 | 14 | <td> </td> |
|
15 | 15 | <tr> |
|
16 | 16 | #entries%indexentry# |
@@ -43,7 +43,7 b' filediffparent = \'<tr><th class="parent"' | |||
|
43 | 43 | filelogparent = '<tr><th>parent #rev#:</th><td><a href="?f=#node|short#;file=#file|urlescape#">#node|short#</a></td></tr>' |
|
44 | 44 | filediffchild = '<tr><th class="child">child #rev#:</th><td class="child"><a href="?cs=#node|short#">#node|short#</a></td></tr>' |
|
45 | 45 | filelogchild = '<tr><th>child #rev#:</th><td><a href="?f=#node|short#;file=#file|urlescape#">#node|short#</a></td></tr>' |
|
46 |
indexentry = '<tr class="parity#parity#"><td><a href="#url#">#name|escape#</a></td><td># |
|
|
46 | indexentry = '<tr class="parity#parity#"><td><a href="#url#">#name|escape#</a></td><td>#description#</td><td>#contact|obfuscate#</td><td class="age">#lastchange|age# ago</td><td class="indexlinks"><a href="#url#?cl=tip;style=rss">RSS</a> #archives%archiveentry#</td></tr>' | |
|
47 | 47 | index = index.tmpl |
|
48 | 48 | archiveentry = '<a href="#url#?ca=#node|short#;type=#type|urlescape#">#type|escape#</a> ' |
|
49 | 49 | notfound = notfound.tmpl |
General Comments 0
You need to be logged in to leave comments.
Login now