Show More
@@ -0,0 +1,30 b'' | |||
|
1 | % if c.repo_branches: | |
|
2 | <table class="table_disp"> | |
|
3 | <tr class="header"> | |
|
4 | <td>${_('date')}</td> | |
|
5 | <td>${_('revision')}</td> | |
|
6 | <td>${_('name')}</td> | |
|
7 | <td>${_('links')}</td> | |
|
8 | </tr> | |
|
9 | %for cnt,branch in enumerate(c.repo_branches.items()): | |
|
10 | <tr class="parity${cnt%2}"> | |
|
11 | <td>${h.age(branch[1]._ctx.date())}</td> | |
|
12 | <td>r${branch[1].revision}:${branch[1].raw_id}</td> | |
|
13 | <td> | |
|
14 | <span class="logtags"> | |
|
15 | <span class="branchtag">${h.link_to(branch[0], | |
|
16 | h.url('changeset_home',repo_name=c.repo_name,revision=branch[1].raw_id))}</span> | |
|
17 | </span> | |
|
18 | </td> | |
|
19 | <td class="nowrap"> | |
|
20 | ${h.link_to(_('changeset'),h.url('changeset_home',repo_name=c.repo_name,revision=branch[1].raw_id))} | |
|
21 | | | |
|
22 | ${h.link_to(_('files'),h.url('files_home',repo_name=c.repo_name,revision=branch[1].raw_id))} | |
|
23 | </td> | |
|
24 | </tr> | |
|
25 | %endfor | |
|
26 | </table> | |
|
27 | %else: | |
|
28 | ${_('There are no branches yet')} | |
|
29 | %endif | |
|
30 |
@@ -0,0 +1,29 b'' | |||
|
1 | %if c.repo_tags: | |
|
2 | <table class="table_disp"> | |
|
3 | <tr class="header"> | |
|
4 | <td>${_('date')}</td> | |
|
5 | <td>${_('revision')}</td> | |
|
6 | <td>${_('name')}</td> | |
|
7 | <td>${_('links')}</td> | |
|
8 | </tr> | |
|
9 | %for cnt,tag in enumerate(c.repo_tags.items()): | |
|
10 | <tr class="parity${cnt%2}"> | |
|
11 | <td>${h.age(tag[1]._ctx.date())}</td> | |
|
12 | <td>r${tag[1].revision}:${tag[1].raw_id}</td> | |
|
13 | <td> | |
|
14 | <span class="logtags"> | |
|
15 | <span class="tagtag">${h.link_to(tag[0], | |
|
16 | h.url('changeset_home',repo_name=c.repo_name,revision=tag[1].raw_id))}</span> | |
|
17 | </span> | |
|
18 | </td> | |
|
19 | <td class="nowrap"> | |
|
20 | ${h.link_to(_('changeset'),h.url('changeset_home',repo_name=c.repo_name,revision=tag[1].raw_id))} | |
|
21 | | | |
|
22 | ${h.link_to(_('files'),h.url('files_home',repo_name=c.repo_name,revision=tag[1].raw_id))} | |
|
23 | </td> | |
|
24 | </tr> | |
|
25 | %endfor | |
|
26 | </table> | |
|
27 | %else: | |
|
28 | ${_('There are no tags yet')} | |
|
29 | %endif No newline at end of file |
@@ -49,12 +49,13 b' class ChangelogController(BaseController' | |||
|
49 | 49 | session['changelog_size'] = c.size |
|
50 | 50 | session.save() |
|
51 | 51 | else: |
|
52 | c.size = session.get('changelog_size', default) | |
|
52 | c.size = int(session.get('changelog_size', default)) | |
|
53 | 53 | |
|
54 | 54 | changesets = HgModel().get_repo(c.repo_name) |
|
55 | 55 | |
|
56 | 56 | p = int(request.params.get('page', 1)) |
|
57 | c.pagination = Page(changesets, page=p, item_count=len(changesets), | |
|
57 | c.total_cs = len(changesets) | |
|
58 | c.pagination = Page(changesets, page=p, item_count=c.total_cs, | |
|
58 | 59 | items_per_page=c.size) |
|
59 | 60 | |
|
60 | 61 | #self._graph(c.repo, c.size,p) |
@@ -25,9 +25,9 b' graph controller for pylons' | |||
|
25 | 25 | from mercurial.graphmod import revisions as graph_rev, colored, CHANGESET |
|
26 | 26 | from mercurial.node import short |
|
27 | 27 | from pylons import request, tmpl_context as c |
|
28 | import pylons_app.lib.helpers as h | |
|
28 | 29 | from pylons_app.lib.auth import LoginRequired |
|
29 | 30 | from pylons_app.lib.base import BaseController, render |
|
30 | from pylons_app.lib.filters import age as _age, person | |
|
31 | 31 | from pylons_app.model.hg_model import HgModel |
|
32 | 32 | from simplejson import dumps |
|
33 | 33 | from webhelpers.paginate import Page |
@@ -74,9 +74,9 b' class GraphController(BaseController):' | |||
|
74 | 74 | if type != CHANGESET: |
|
75 | 75 | continue |
|
76 | 76 | node = short(ctx.node()) |
|
77 |
age = |
|
|
77 | age = h.age(ctx.date()) | |
|
78 | 78 | desc = ctx.description() |
|
79 | user = person(ctx.user()) | |
|
79 | user = h.person(ctx.user()) | |
|
80 | 80 | branch = ctx.branch() |
|
81 | 81 | branch = branch, repo.repo.branchtags().get(branch) == ctx.node() |
|
82 | 82 | data.append((node, vtx, edges, desc, user, age, branch, ctx.tags())) |
@@ -25,7 +25,8 b' summary controller for pylons' | |||
|
25 | 25 | from pylons import tmpl_context as c, request |
|
26 | 26 | from pylons_app.lib.auth import LoginRequired |
|
27 | 27 | from pylons_app.lib.base import BaseController, render |
|
28 |
from pylons_app.model.hg_model import HgModel |
|
|
28 | from pylons_app.model.hg_model import HgModel | |
|
29 | from webhelpers.paginate import Page | |
|
29 | 30 | import logging |
|
30 | 31 | |
|
31 | 32 | log = logging.getLogger(__name__) |
@@ -39,7 +40,7 b' class SummaryController(BaseController):' | |||
|
39 | 40 | def index(self): |
|
40 | 41 | hg_model = HgModel() |
|
41 | 42 | c.repo_info = hg_model.get_repo(c.repo_name) |
|
42 |
c.repo_changesets = |
|
|
43 | c.repo_changesets = Page(list(c.repo_info[:10]), page=1, items_per_page=20) | |
|
43 | 44 | e = request.environ |
|
44 | 45 | uri = u'%(protocol)s://%(user)s@%(host)s/%(repo_name)s' % { |
|
45 | 46 | 'protocol': e.get('wsgi.url_scheme'), |
@@ -203,3 +203,29 b' def repo_name_slug(value):' | |||
|
203 | 203 | return slug |
|
204 | 204 | |
|
205 | 205 | flash = _Flash() |
|
206 | ||
|
207 | ||
|
208 | #=============================================================================== | |
|
209 | # MERCURIAL FILTERS available via h. | |
|
210 | #=============================================================================== | |
|
211 | ||
|
212 | ||
|
213 | from mercurial import util | |
|
214 | from mercurial.templatefilters import age as _age, person as _person | |
|
215 | ||
|
216 | age = lambda x:_age(x) | |
|
217 | capitalize = lambda x: x.capitalize() | |
|
218 | date = lambda x: util.datestr(x) | |
|
219 | email = util.email | |
|
220 | person = lambda x: _person(x) | |
|
221 | hgdate = lambda x: "%d %d" % x | |
|
222 | isodate = lambda x: util.datestr(x, '%Y-%m-%d %H:%M %1%2') | |
|
223 | isodatesec = lambda x: util.datestr(x, '%Y-%m-%d %H:%M:%S %1%2') | |
|
224 | localdate = lambda x: (x[0], util.makedate()[1]) | |
|
225 | rfc822date = lambda x: util.datestr(x, "%a, %d %b %Y %H:%M:%S %1%2") | |
|
226 | rfc3339date = lambda x: util.datestr(x, "%Y-%m-%dT%H:%M:%S%1:%2") | |
|
227 | time_ago = lambda x: util.datestr(_age(x), "%a, %d %b %Y %H:%M:%S %1%2") | |
|
228 | ||
|
229 | ||
|
230 | ||
|
231 |
@@ -1,5 +1,4 b'' | |||
|
1 | 1 | <%inherit file="/base/base.html"/> |
|
2 | <%! from pylons_app.lib import filters %> | |
|
3 | 2 | <%def name="title()"> |
|
4 | 3 | ${_('Branches')} |
|
5 | 4 | </%def> |
@@ -14,33 +13,6 b'' | |||
|
14 | 13 | ${self.menu('branches')} |
|
15 | 14 | </%def> |
|
16 | 15 | <%def name="main()"> |
|
17 | ||
|
18 | 16 | <h2 class="no-link no-border">${_('Branches')}</h2> |
|
19 | ||
|
20 | <table class="table_disp"> | |
|
21 | <tr class="header"> | |
|
22 | <td>${_('date')}</td> | |
|
23 | <td>${_('revision')}</td> | |
|
24 | <td>${_('name')}</td> | |
|
25 | <td>${_('links')}</td> | |
|
26 | </tr> | |
|
27 | %for cnt,branch in enumerate(c.repo_branches.items()): | |
|
28 | <tr class="parity${cnt%2}"> | |
|
29 | <td>${branch[1]._ctx.date()|n,filters.age}</td> | |
|
30 | <td>r${branch[1].revision}:${branch[1].raw_id}</td> | |
|
31 | <td> | |
|
32 | <span class="logtags"> | |
|
33 | <span class="branchtag">${h.link_to(branch[0], | |
|
34 | h.url('changeset_home',repo_name=c.repo_name,revision=branch[1].raw_id))}</span> | |
|
35 | </span> | |
|
36 | </td> | |
|
37 | <td class="nowrap"> | |
|
38 | ${h.link_to(_('changeset'),h.url('changeset_home',repo_name=c.repo_name,revision=branch[1].raw_id))} | |
|
39 | | | |
|
40 | ${h.link_to(_('files'),h.url('files_home',repo_name=c.repo_name,revision=branch[1].raw_id))} | |
|
41 | </td> | |
|
42 | </tr> | |
|
43 | %endfor | |
|
44 | </table> | |
|
45 | ||
|
17 | <%include file='branches_data.html'/> | |
|
46 | 18 | </%def> No newline at end of file |
@@ -1,6 +1,3 b'' | |||
|
1 | <%! | |
|
2 | from pylons_app.lib import filters | |
|
3 | %> | |
|
4 | 1 |
|
|
5 | 2 | |
|
6 | 3 | <%def name="title()"> |
@@ -19,8 +16,12 b' from pylons_app.lib import filters' | |||
|
19 | 16 | |
|
20 | 17 | <%def name="main()"> |
|
21 | 18 | |
|
22 |
<h2 class="no-link no-border">${_('Changelog')} - ${_('showing |
|
|
19 | <h2 class="no-link no-border">${_('Changelog')} - ${_('showing ')} | |
|
20 | ${c.size if c.size <= c.total_cs else c.total_cs} | |
|
21 | ${_('out of')} ${c.total_cs} ${_('revisions')} | |
|
22 | </h2> | |
|
23 | 23 | <noscript>${_('The revision graph only works with JavaScript-enabled browsers.')}</noscript> |
|
24 | % if c.pagination: | |
|
24 | 25 | |
|
25 | 26 | <div id="graph"> |
|
26 | 27 | ##<div id="graph_nodes" style="height:1000px"> |
@@ -89,4 +90,7 b' from pylons_app.lib import filters' | |||
|
89 | 90 | <div> |
|
90 | 91 | <h2>${c.pagination.pager('$link_previous ~2~ $link_next')}</h2> |
|
91 | 92 | </div> |
|
93 | %else: | |
|
94 | ${_('There are no changes yet')} | |
|
95 | %endif | |
|
92 | 96 | </%def> No newline at end of file |
@@ -1,6 +1,3 b'' | |||
|
1 | <%! | |
|
2 | from pylons_app.lib import filters | |
|
3 | %> | |
|
4 | 1 |
|
|
5 | 2 | |
|
6 | 3 | <%def name="title()"> |
@@ -1,7 +1,4 b'' | |||
|
1 | 1 | ## -*- coding: utf-8 -*- |
|
2 | <%! | |
|
3 | from pylons_app.lib import filters | |
|
4 | %> | |
|
5 | 2 | <%inherit file="./../base/base.html"/> |
|
6 | 3 | |
|
7 | 4 | <%def name="title()"> |
@@ -1,7 +1,4 b'' | |||
|
1 | 1 | ## -*- coding: utf-8 -*- |
|
2 | <%! | |
|
3 | from pylons_app.lib import filters | |
|
4 | %> | |
|
5 | 2 | <%inherit file="base/base.html"/> |
|
6 | 3 | <%def name="title()"> |
|
7 | 4 | ${c.repos_prefix} Mercurial Repositories |
@@ -38,12 +35,12 b' from pylons_app.lib import filters' | |||
|
38 | 35 | <td>${h.link_to(repo['name'], |
|
39 | 36 | h.url('summary_home',repo_name=repo['name']))}</td> |
|
40 | 37 | <td title="${repo['description']}">${h.truncate(repo['description'],60)}</td> |
|
41 |
<td>${repo['last_change'] |
|
|
38 | <td>${h.age(repo['last_change'])}</td> | |
|
42 | 39 | <td>${h.link_to('r%s:%s' % (repo['rev'],repo['tip']), |
|
43 | 40 | h.url('changeset_home',repo_name=repo['name'],revision=repo['tip']), |
|
44 | 41 | class_="tooltip", |
|
45 | 42 | tooltip_title=h.tooltip(repo['last_msg']))}</td> |
|
46 |
<td title="${repo['contact']}">${repo['contact'] |
|
|
43 | <td title="${repo['contact']}">${h.person(repo['contact'])}</td> | |
|
47 | 44 | <td> |
|
48 | 45 | <a title="${_('Subscribe to %s rss feed')%repo['name']}" class="rss_logo" href="${h.url('rss_feed_home',repo_name=repo['name'])}"></a> |
|
49 | 46 | </td> |
@@ -1,7 +1,4 b'' | |||
|
1 | 1 | ## -*- coding: utf-8 -*- |
|
2 | <%! | |
|
3 | from pylons_app.lib import filters | |
|
4 | %> | |
|
5 | 2 | <%inherit file="base/base.html"/> |
|
6 | 3 | <%def name="title()"> |
|
7 | 4 | ${c.repos_prefix} Mercurial Repositories |
@@ -1,7 +1,6 b'' | |||
|
1 | 1 | ## -*- coding: utf-8 -*- |
|
2 | <%! | |
|
3 | from pylons_app.lib import filters | |
|
4 | %> | |
|
2 | % if c.repo_changesets: | |
|
3 | ||
|
5 | 4 | <table class="table_disp"> |
|
6 | 5 | <tr class="header"> |
|
7 | 6 | <td>${_('date')}</td> |
@@ -15,8 +14,8 b' from pylons_app.lib import filters' | |||
|
15 | 14 | </tr> |
|
16 | 15 | %for cnt,cs in enumerate(c.repo_changesets): |
|
17 | 16 | <tr class="parity${cnt%2}"> |
|
18 |
<td>${cs._ctx.date() |
|
|
19 |
<td title="${cs.author}">${cs.author |
|
|
17 | <td>${h.age(cs._ctx.date())}</td> | |
|
18 | <td title="${cs.author}">${h.person(cs.author)}</td> | |
|
20 | 19 | <td>r${cs.revision}:${cs.raw_id}</td> |
|
21 | 20 | <td> |
|
22 | 21 | ${h.link_to(h.truncate(cs.message,60), |
@@ -59,4 +58,7 b' from pylons_app.lib import filters' | |||
|
59 | 58 | YAHOO.util.Dom.setStyle(data_div,'opacity','0.3');}); |
|
60 | 59 | YAHOO.util.Dom.setStyle(data_div,'opacity','1');}},null); return false;""")} |
|
61 | 60 | </h2> |
|
62 | </div> No newline at end of file | |
|
61 | </div> | |
|
62 | %else: | |
|
63 | ${_('There are no commits yet')} | |
|
64 | %endif No newline at end of file |
@@ -1,7 +1,4 b'' | |||
|
1 | 1 | <%inherit file="/base/base.html"/> |
|
2 | <%! | |
|
3 | from pylons_app.lib import filters | |
|
4 | %> | |
|
5 | 2 | <%def name="title()"> |
|
6 | 3 | ${_('Repository managment')} |
|
7 | 4 | </%def> |
@@ -41,7 +38,7 b' E.onDOMReady(function(e){' | |||
|
41 | 38 | <dt>${_('contact')}</dt> |
|
42 | 39 | <dd>${c.repo_info.contact}</dd> |
|
43 | 40 | <dt>${_('last change')}</dt> |
|
44 |
<dd>${c.repo_info.last_change |
|
|
41 | <dd>${h.age(c.repo_info.last_change)} - ${h.rfc822date(c.repo_info.last_change)}</dd> | |
|
45 | 42 | <dt>${_('clone url')}</dt> |
|
46 | 43 | <dd><input type="text" id="clone_url" readonly="readonly" value="hg clone ${c.clone_repo_url}" size="70"/></dd> |
|
47 | 44 | <dt>${_('download')}</dt> |
@@ -63,100 +60,12 b' E.onDOMReady(function(e){' | |||
|
63 | 60 | </dl> |
|
64 | 61 | |
|
65 | 62 | <h2>${h.link_to(_('Last ten changes'),h.url('changelog_home',repo_name=c.repo_name))}</h2> |
|
66 | <table class="table_disp"> | |
|
67 | <tr class="header"> | |
|
68 | <td>${_('date')}</td> | |
|
69 | <td>${_('author')}</td> | |
|
70 | <td>${_('revision')}</td> | |
|
71 | <td>${_('commit message')}</td> | |
|
72 | <td>${_('branch')}</td> | |
|
73 | <td>${_('tags')}</td> | |
|
74 | <td>${_('links')}</td> | |
|
75 | ||
|
76 | </tr> | |
|
77 | %for cnt,cs in enumerate(c.repo_changesets): | |
|
78 | <tr class="parity${cnt%2}"> | |
|
79 | <td>${cs._ctx.date()|n,filters.age}</td> | |
|
80 | <td>${cs.author|n,filters.person}</td> | |
|
81 | <td>r${cs.revision}:${cs.raw_id}</td> | |
|
82 | <td> | |
|
83 | ${h.link_to(h.truncate(cs.message,60), | |
|
84 | h.url('changeset_home',repo_name=c.repo_name,revision=cs._short), | |
|
85 | title=cs.message)} | |
|
86 | </td> | |
|
87 | <td> | |
|
88 | <span class="logtags"> | |
|
89 | <span class="branchtag">${cs.branch}</span> | |
|
90 | </span> | |
|
91 | </td> | |
|
92 | <td> | |
|
93 | <span class="logtags"> | |
|
94 | %for tag in cs.tags: | |
|
95 | <span class="tagtag">${tag}</span> | |
|
96 | %endfor | |
|
97 | </span> | |
|
98 | </td> | |
|
99 | <td class="nowrap"> | |
|
100 | ${h.link_to(_('changeset'),h.url('changeset_home',repo_name=c.repo_name,revision=cs._short))} | |
|
101 | | | |
|
102 | ${h.link_to(_('files'),h.url('files_home',repo_name=c.repo_name,revision=cs._short))} | |
|
103 | </td> | |
|
104 | </tr> | |
|
105 | %endfor | |
|
106 | </table> | |
|
63 | <%include file='../shortlog/shortlog_data.html'/> | |
|
107 | 64 | |
|
108 | 65 | <h2>${h.link_to(_('Last ten tags'),h.url('tags_home',repo_name=c.repo_name))}</h2> |
|
109 | <table class="table_disp"> | |
|
110 | <tr class="header"> | |
|
111 | <td>${_('date')}</td> | |
|
112 | <td>${_('revision')}</td> | |
|
113 | <td>${_('name')}</td> | |
|
114 | <td>${_('links')}</td> | |
|
115 | </tr> | |
|
116 | %for cnt,tag in enumerate(c.repo_tags.items()): | |
|
117 | <tr class="parity${cnt%2}"> | |
|
118 | <td>${tag[1]._ctx.date()|n,filters.age}</td> | |
|
119 | <td>r${tag[1].revision}:${tag[1].raw_id}</td> | |
|
120 | <td> | |
|
121 | <span class="logtags"> | |
|
122 | <span class="tagtag">${h.link_to(tag[0], | |
|
123 | h.url('changeset_home',repo_name=c.repo_name,revision=tag[1].raw_id))}</span> | |
|
124 | </span> | |
|
125 | </td> | |
|
126 | <td class="nowrap"> | |
|
127 | ${h.link_to(_('changeset'),h.url('changeset_home',repo_name=c.repo_name,revision=tag[1].raw_id))} | |
|
128 | | | |
|
129 | ${h.link_to(_('files'),h.url('files_home',repo_name=c.repo_name,revision=tag[1].raw_id))} | |
|
130 | </td> | |
|
131 | </tr> | |
|
132 | %endfor | |
|
133 | </table> | |
|
66 | <%include file='../tags/tags_data.html'/> | |
|
134 | 67 | |
|
135 | 68 | <h2>${h.link_to(_('Last ten branches'),h.url('branches_home',repo_name=c.repo_name))}</h2> |
|
136 | <table class="table_disp"> | |
|
137 | <tr class="header"> | |
|
138 | <td>${_('date')}</td> | |
|
139 | <td>${_('revision')}</td> | |
|
140 | <td>${_('name')}</td> | |
|
141 | <td>${_('links')}</td> | |
|
142 | </tr> | |
|
143 | %for cnt,branch in enumerate(c.repo_branches.items()): | |
|
144 | <tr class="parity${cnt%2}"> | |
|
145 | <td>${branch[1]._ctx.date()|n,filters.age}</td> | |
|
146 | <td>r${branch[1].revision}:${branch[1].raw_id}</td> | |
|
147 | <td> | |
|
148 | <span class="logtags"> | |
|
149 | <span class="branchtag">${h.link_to(branch[0], | |
|
150 | h.url('changeset_home',repo_name=c.repo_name,revision=branch[1].raw_id))}</span> | |
|
151 | </span> | |
|
152 | </td> | |
|
153 | <td class="nowrap"> | |
|
154 | ${h.link_to(_('changeset'),h.url('changeset_home',repo_name=c.repo_name,revision=branch[1].raw_id))} | |
|
155 | | | |
|
156 | ${h.link_to(_('files'),h.url('files_home',repo_name=c.repo_name,revision=branch[1].raw_id))} | |
|
157 | </td> | |
|
158 | </tr> | |
|
159 | %endfor | |
|
160 | </table> | |
|
69 | <%include file='../branches/branches_data.html'/> | |
|
161 | 70 | |
|
162 | 71 | </%def> No newline at end of file |
@@ -1,7 +1,4 b'' | |||
|
1 | 1 | <%inherit file="/base/base.html"/> |
|
2 | <%! | |
|
3 | from pylons_app.lib import filters | |
|
4 | %> | |
|
5 | 2 | <%def name="title()"> |
|
6 | 3 | ${_('Tags')} |
|
7 | 4 | </%def> |
@@ -18,30 +15,6 b' from pylons_app.lib import filters' | |||
|
18 | 15 | <%def name="main()"> |
|
19 | 16 | |
|
20 | 17 | <h2 class="no-link no-border">${_('Tags')}</h2> |
|
21 | <table class="table_disp"> | |
|
22 | <tr class="header"> | |
|
23 | <td>${_('date')}</td> | |
|
24 | <td>${_('revision')}</td> | |
|
25 | <td>${_('name')}</td> | |
|
26 | <td>${_('links')}</td> | |
|
27 | </tr> | |
|
28 | %for cnt,tag in enumerate(c.repo_tags.items()): | |
|
29 | <tr class="parity${cnt%2}"> | |
|
30 | <td>${tag[1]._ctx.date()|n,filters.age}</td> | |
|
31 | <td>r${tag[1].revision}:${tag[1].raw_id}</td> | |
|
32 | <td> | |
|
33 | <span class="logtags"> | |
|
34 | <span class="tagtag">${h.link_to(tag[0], | |
|
35 | h.url('changeset_home',repo_name=c.repo_name,revision=tag[1].raw_id))}</span> | |
|
36 | </span> | |
|
37 | </td> | |
|
38 | <td class="nowrap"> | |
|
39 | ${h.link_to(_('changeset'),h.url('changeset_home',repo_name=c.repo_name,revision=tag[1].raw_id))} | |
|
40 | | | |
|
41 | ${h.link_to(_('files'),h.url('files_home',repo_name=c.repo_name,revision=tag[1].raw_id))} | |
|
42 | </td> | |
|
43 | </tr> | |
|
44 | %endfor | |
|
45 | </table> | |
|
18 | <%include file='tags_data.html'/> | |
|
46 | 19 | |
|
47 | 20 | </%def> No newline at end of file |
|
1 | NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now