damned-lies r1422 - in trunk: . languages media media/css stats templates/languages templates/teams
- From: claudep svn gnome org
- To: svn-commits-list gnome org
- Subject: damned-lies r1422 - in trunk: . languages media media/css stats templates/languages templates/teams
- Date: Tue, 3 Feb 2009 13:29:12 +0000 (UTC)
Author: claudep
Date: Tue Feb 3 13:29:12 2009
New Revision: 1422
URL: http://svn.gnome.org/viewvc/damned-lies?rev=1422&view=rev
Log:
2009-02-03 Claude Paroz <claude 2xlibre net>
* languages/views.py:
* media/css/main.css: Add branch class.
* stats/models.py: Make get_lang_stats_by_type a method of Statistics
instead of Release.
* templates/languages/language_all_modules.html: Include
language_release_stats.html
* templates/languages/language_release.html:
* templates/languages/language_release_stats.html: Module table is now
sortable. Move "Download all po files" to language_release.
* templates/teams/team_detail.html: Add links to "all modules" view.
Fixes bugs #415315, #567084.
Modified:
trunk/ChangeLog
trunk/languages/views.py
trunk/media/ (props changed)
trunk/media/css/main.css
trunk/stats/models.py
trunk/templates/languages/language_all_modules.html
trunk/templates/languages/language_release.html
trunk/templates/languages/language_release_stats.html
trunk/templates/teams/team_detail.html
Modified: trunk/languages/views.py
==============================================================================
--- trunk/languages/views.py (original)
+++ trunk/languages/views.py Tue Feb 3 13:29:12 2009
@@ -42,13 +42,14 @@
def language_all(request, locale, dtype):
language = get_object_or_404(Language, locale=Language.unslug_locale(locale))
- stats = Statistics.objects.filter(language=language, domain__dtype=dtype).select_related('branch__module', 'domain')
+ stats = Statistics.get_lang_stats_by_type(language, dtype, release=None)
context = {
'pageSection': "languages",
'language': language,
'stats_title': {'ui': _("UI Translations"),
'doc': _("Documentation")}.get(dtype),
'stats': stats,
+ 'dateformat': get_date_formats()[0],
}
return render_to_response('languages/language_all_modules.html', context,
context_instance=RequestContext(request))
@@ -56,7 +57,7 @@
def language_release(request, locale, release_name, dtype):
language = get_object_or_404(Language, locale=Language.unslug_locale(locale))
release = get_object_or_404(Release, name=release_name)
- stats = release.get_lang_stats_by_type(language, dtype)
+ stats = Statistics.get_lang_stats_by_type(language, dtype, release)
context = {
'pageSection': "languages",
'language': language,
Modified: trunk/media/css/main.css
==============================================================================
--- trunk/media/css/main.css (original)
+++ trunk/media/css/main.css Tue Feb 3 13:29:12 2009
@@ -201,6 +201,12 @@
color: #666666;
}
+.branch {
+ font-size: x-small;
+ font-style: italic;
+ color: #666666;
+}
+
.help {
font-size: 10px;
color: #999;
@@ -274,4 +280,4 @@
clear: both;
margin-top: 20px;
color: #aaaaaa;
-}
\ No newline at end of file
+}
Modified: trunk/stats/models.py
==============================================================================
--- trunk/stats/models.py (original)
+++ trunk/stats/models.py Tue Feb 3 13:29:12 2009
@@ -793,120 +793,10 @@
""" Get statistics for a specific language, producing the stats data structure
Used for displaying the language-release template """
- stats = {'doc': self.get_lang_stats_by_type(lang, 'doc'),
- 'ui': self.get_lang_stats_by_type(lang, 'ui'),
+ stats = {'doc': Statistics.get_lang_stats_by_type(lang, 'doc', self),
+ 'ui': Statistics.get_lang_stats_by_type(lang, 'ui', self),
}
return stats
-
- def get_lang_stats_by_type(self, lang, dtype):
- """ Cook statistics for an entire release, a domain type dtype and the language lang.
- Structure of the resulting stats dictionary is as follows:
- stats = {
- 'dtype':dtype, # 'ui' or 'doc'
- 'total': 0,
- 'totaltrans': 0,
- 'totalfuzzy': 0,
- 'totaluntrans': 0,
- 'totaltransperc': 0,
- 'totalfuzzyperc': 0,
- 'totaluntransperc': 0,
- 'categs': {
- <categname>: {
- 'catname': <catname>, # translated category name (see CATEGORY_CHOICES)
- 'cattotal': 0,
- 'cattrans': 0,
- 'catfuzzy': 0,
- 'catuntrans': 0,
- 'cattransperc': 0,
- 'modules': { # This dict is converted to a sorted list at the end of stats computation
- <modname>: {
- 'domains': [(<domname>, <stat>), ...], # List of tuples (domain name, Statistics object)
- # First element is a placeholder for a FakeStatistics object
- # only used for summary if module has more than 1 domain
- 'branch': <branch>
- }
- }
- }
- }
- },
- 'all_errors':[]
- }
- """
- from vertimus.models import StateDb # import here to prevent a circular dependency
-
- stats = {'dtype':dtype, 'totaltrans':0, 'totalfuzzy':0, 'totaluntrans':0,
- 'totaltransperc': 0, 'totalfuzzyperc': 0, 'totaluntransperc': 0,
- 'categs':{}, 'all_errors':[]}
- # Sorted by module to allow grouping ('fake' stats)
- pot_stats = Statistics.objects.extra(select={'categ_name': "category.name"}).select_related('domain', 'branch__module').filter(language=None, branch__releases=self, domain__dtype=dtype).order_by('branch__module__id')
-
- tr_stats = Statistics.objects.select_related('domain', 'language', 'branch__module').filter(language=lang, branch__releases=self, domain__dtype=dtype).order_by('branch__module__id')
- tr_stats_dict = dict([("%d-%d" % (st.branch.id, st.domain.id),st) for st in tr_stats])
-
- infos_dict = Information.get_info_dict(lang)
-
- vt_states = StateDb.objects.select_related('branch','domain').filter(language=lang, branch__releases=self, domain__dtype=dtype)
- vt_states_dict = dict([("%d-%d" % (vt.branch.id, vt.domain.id),vt) for vt in vt_states])
-
- for stat in pot_stats:
- categdescr = stat.categ_name
- domname = _(stat.domain.description)
- modname = stat.branch.module.name
- if categdescr not in stats['categs']:
- stats['categs'][categdescr] = {'cattrans':0, 'catfuzzy':0, 'catuntrans':0,
- 'cattransperc':0, 'modules':{}}
- # Try to get translated stat, else stick with POT stat
- br_dom_key = "%d-%d" % (stat.branch.id, stat.domain.id)
- if br_dom_key in tr_stats_dict:
- stat = tr_stats_dict[br_dom_key]
- # Match stat with error list
- if stat.id in infos_dict:
- stat.info_list = infos_dict[stat.id]
- stats['all_errors'].extend(stat.info_list)
-
- # Search if a state exists for this statistic
- if br_dom_key in vt_states_dict:
- stat.state = vt_states_dict[br_dom_key]
-
- stats['totaltrans'] += stat.translated
- stats['totalfuzzy'] += stat.fuzzy
- stats['totaluntrans'] += stat.untranslated
- stats['categs'][categdescr]['cattrans'] += stat.translated
- stats['categs'][categdescr]['catfuzzy'] += stat.fuzzy
- stats['categs'][categdescr]['catuntrans'] += stat.untranslated
- if modname not in stats['categs'][categdescr]['modules']:
- # first element is a placeholder for a fake stat
- stats['categs'][categdescr]['modules'][modname] = {'domains':[[' fake', None], (domname, stat)],
- 'branch': stat.branch.name }
- else:
- if len(stats['categs'][categdescr]['modules'][modname]['domains']) == 2:
- # Create a fake statistics object for module summary
- stats['categs'][categdescr]['modules'][modname]['domains'][0][1] = FakeStatistics(stat.domain.module, dtype)
- stats['categs'][categdescr]['modules'][modname]['domains'][0][1].trans(stats['categs'][categdescr]['modules'][modname]['domains'][1][1])
- stats['categs'][categdescr]['modules'][modname]['domains'].append((domname, stat))
- stats['categs'][categdescr]['modules'][modname]['domains'][0][1].trans(stat)
-
- # Compute percentages and sorting
- stats['total'] = stats['totaltrans'] + stats['totalfuzzy'] + stats['totaluntrans']
- if stats['total'] > 0:
- stats['totaltransperc'] = int(100*stats['totaltrans']/stats['total'])
- stats['totalfuzzyperc'] = int(100*stats['totalfuzzy']/stats['total'])
- stats['totaluntransperc'] = int(100*stats['totaluntrans']/stats['total'])
- for key, categ in stats['categs'].items():
- categ['catname'] = Category.get_cat_name(key)
- categ['cattotal'] = categ['cattrans'] + categ['catfuzzy'] + categ['catuntrans']
- if categ['cattotal'] > 0:
- categ['cattransperc'] = int(100*categ['cattrans']/categ['cattotal'])
- # Sort modules
- mods = [[name,mod] for name, mod in categ['modules'].items()]
- mods.sort()
- categ['modules'] = mods
- # Sort domains
- for mod in categ['modules']:
- mod[1]['domains'].sort()
- # Sort errors
- stats['all_errors'].sort()
- return stats
def get_lang_files(self, lang, dtype):
""" Return a list of all po files of a lang for this release, preceded by the more recent modification date
@@ -1115,7 +1005,137 @@
if not error or e.type == 'error' or (e.type == 'warn' and error.type == 'info'):
error = e
return error
+
+ @classmethod
+ def get_lang_stats_by_type(cls, lang, dtype, release):
+ """ Cook statistics for an entire release, a domain type dtype and the language lang.
+ Structure of the resulting stats dictionary is as follows:
+ stats = {
+ 'dtype':dtype, # 'ui' or 'doc'
+ 'total': 0,
+ 'totaltrans': 0,
+ 'totalfuzzy': 0,
+ 'totaluntrans': 0,
+ 'totaltransperc': 0,
+ 'totalfuzzyperc': 0,
+ 'totaluntransperc': 0,
+ 'categs': {
+ <categname>: {
+ 'catname': <catname>, # translated category name (see CATEGORY_CHOICES)
+ 'cattotal': 0,
+ 'cattrans': 0,
+ 'catfuzzy': 0,
+ 'catuntrans': 0,
+ 'cattransperc': 0,
+ 'modules': { # This dict is converted to a sorted list at the end of stats computation
+ <modname>: {
+ <branchname>:
+ [(<domname>, <stat>), ...], # List of tuples (domain name, Statistics object)
+ # First element is a placeholder for a FakeStatistics object
+ # only used for summary if module has more than 1 domain
+ }
+ }
+ }
+ }
+ },
+ 'all_errors':[]
+ }
+ """
+ from vertimus.models import StateDb # import here to prevent a circular dependency
+
+ stats = {'dtype':dtype, 'totaltrans':0, 'totalfuzzy':0, 'totaluntrans':0,
+ 'totaltransperc': 0, 'totalfuzzyperc': 0, 'totaluntransperc': 0,
+ 'categs':{}, 'all_errors':[]}
+ # Sorted by module to allow grouping ('fake' stats)
+ pot_stats = Statistics.objects.select_related('domain', 'branch__module')
+ if release:
+ pot_stats = pot_stats.extra(select={'categ_name': "category.name"}).filter(language=None, branch__releases=release, domain__dtype=dtype).order_by('branch__module__id')
+ else:
+ pot_stats = pot_stats.filter(language=None, domain__dtype=dtype).order_by('branch__module__id')
+
+ tr_stats = Statistics.objects.select_related('domain', 'language', 'branch__module')
+ if release:
+ tr_stats = tr_stats.filter(language=lang, branch__releases=release, domain__dtype=dtype).order_by('branch__module__id')
+ else:
+ tr_stats = tr_stats.filter(language=lang, domain__dtype=dtype).order_by('branch__module__id')
+ tr_stats_dict = dict([("%d-%d" % (st.branch.id, st.domain.id),st) for st in tr_stats])
+
+ infos_dict = Information.get_info_dict(lang)
+ vt_states = StateDb.objects.select_related('branch','domain')
+ if release:
+ vt_states = vt_states.filter(language=lang, branch__releases=release, domain__dtype=dtype)
+ else:
+ vt_states = vt_states.filter(language=lang, domain__dtype=dtype)
+ vt_states_dict = dict([("%d-%d" % (vt.branch.id, vt.domain.id),vt) for vt in vt_states])
+
+ for stat in pot_stats:
+ categdescr = "default"
+ if release:
+ categdescr = stat.categ_name
+ domname = _(stat.domain.description)
+ branchname = stat.branch.name
+ modname = stat.branch.module.name
+ if categdescr not in stats['categs']:
+ stats['categs'][categdescr] = {'cattrans':0, 'catfuzzy':0, 'catuntrans':0,
+ 'cattransperc':0, 'modules':{}}
+ # Try to get translated stat, else stick with POT stat
+ br_dom_key = "%d-%d" % (stat.branch.id, stat.domain.id)
+ if br_dom_key in tr_stats_dict:
+ stat = tr_stats_dict[br_dom_key]
+ # Match stat with error list
+ if stat.id in infos_dict:
+ stat.info_list = infos_dict[stat.id]
+ stats['all_errors'].extend(stat.info_list)
+
+ # Search if a state exists for this statistic
+ if br_dom_key in vt_states_dict:
+ stat.state = vt_states_dict[br_dom_key]
+
+ stats['totaltrans'] += stat.translated
+ stats['totalfuzzy'] += stat.fuzzy
+ stats['totaluntrans'] += stat.untranslated
+ stats['categs'][categdescr]['cattrans'] += stat.translated
+ stats['categs'][categdescr]['catfuzzy'] += stat.fuzzy
+ stats['categs'][categdescr]['catuntrans'] += stat.untranslated
+ if modname not in stats['categs'][categdescr]['modules']:
+ # first element is a placeholder for a fake stat
+ stats['categs'][categdescr]['modules'][modname] = {branchname:[[' fake', None], (domname, stat)]}
+ elif branchname not in stats['categs'][categdescr]['modules'][modname]:
+ # first element is a placeholder for a fake stat
+ stats['categs'][categdescr]['modules'][modname][branchname] = [[' fake', None], (domname, stat)]
+ else:
+ # Here we add the 2nd or more stat to the same module-branch
+ if len(stats['categs'][categdescr]['modules'][modname][branchname]) == 2:
+ # Create a fake statistics object for module summary
+ stats['categs'][categdescr]['modules'][modname][branchname][0][1] = FakeStatistics(stat.domain.module, dtype)
+ stats['categs'][categdescr]['modules'][modname][branchname][0][1].trans(stats['categs'][categdescr]['modules'][modname][branchname][1][1])
+ stats['categs'][categdescr]['modules'][modname][branchname].append((domname, stat))
+ stats['categs'][categdescr]['modules'][modname][branchname][0][1].trans(stat)
+
+ # Compute percentages and sorting
+ stats['total'] = stats['totaltrans'] + stats['totalfuzzy'] + stats['totaluntrans']
+ if stats['total'] > 0:
+ stats['totaltransperc'] = int(100*stats['totaltrans']/stats['total'])
+ stats['totalfuzzyperc'] = int(100*stats['totalfuzzy']/stats['total'])
+ stats['totaluntransperc'] = int(100*stats['totaluntrans']/stats['total'])
+ for key, categ in stats['categs'].items():
+ categ['catname'] = Category.get_cat_name(key)
+ categ['cattotal'] = categ['cattrans'] + categ['catfuzzy'] + categ['catuntrans']
+ if categ['cattotal'] > 0:
+ categ['cattransperc'] = int(100*categ['cattrans']/categ['cattotal'])
+ # Sort modules
+ mods = [[name,mod] for name, mod in categ['modules'].items()]
+ mods.sort()
+ categ['modules'] = mods
+ # Sort domains
+ for mod in categ['modules']:
+ for branch, doms in mod[1].items():
+ doms.sort()
+ # Sort errors
+ stats['all_errors'].sort()
+ return stats
+
class FakeStatistics(object):
""" This is a fake statistics class where a summary value is needed for a multi-domain module
This is used in get_lang_stats for the language-release-stats template """
Modified: trunk/templates/languages/language_all_modules.html
==============================================================================
--- trunk/templates/languages/language_all_modules.html (original)
+++ trunk/templates/languages/language_all_modules.html Tue Feb 3 13:29:12 2009
@@ -29,38 +29,9 @@
</p>
<h3>{{ stats_title }}</h3>
-<table class="tablesorter" name="stats-table" id="stats-table">
-<thead>
- <tr><th>{% trans "Module" %}</th><th>{% trans "Branch" %}</th><th>{% trans "Statistics" %}</th></tr>
-</thead>
-<tbody>
-{% for stat in stats %}
- {% with stat.branch.module.name as modname %}
- {% ifequal stat.tr_percentage 100 %}
- <tr id="{{ modname }}-{{ stat.domain.id }}-complete">
- {% else %}
- <tr>
- {% endifequal %}
- <td><a href="{% url vertimus-names-view modname stat.branch.name stat.domain.name language.locale %}">{{ stat.branch.module.name }}</a></td>
- <td>{{ stat.branch.name }}
- {% ifnotequal stat.domain.name "po" %}
- ({{ stat.domain.name }})
- {% endifnotequal %}
- </td>
- <td><span style="display:none;">{{ stat.tr_percentage }}</span>
- {{ stat.tr_percentage }}% ({{ stat.translated }}/{{ stat.fuzzy }}/{{ stat.untranslated }})</td>
- <td style="width: 108px; text-align: center;">
- <div class="graph">
- <div class="translated" style="width: {{ stat.tr_percentage }}px;"></div>
- <div class="fuzzy" style="{{ LANGUAGE_BIDI|yesno:"right,left" }}:{{ stat.tr_percentage }}px; width:{{ stat.fu_percentage }}px;"></div>
- <div class="untranslated" style="{{ LANGUAGE_BIDI|yesno:"right,left" }}:{{ stat.tr_percentage|add:stat.fu_percentage }}px; width: {{ stat.un_percentage }}px;"></div>
- </div>
- </td>
- </tr>
- {% endwith %}
-{% endfor %}
-</tbody>
-</table>
+{% with stats as modstats %}
+ {% include "languages/language_release_stats.html" %}
+{% endwith %}
</div>
{% endblock %}
Modified: trunk/templates/languages/language_release.html
==============================================================================
--- trunk/templates/languages/language_release.html (original)
+++ trunk/templates/languages/language_release.html Tue Feb 3 13:29:12 2009
@@ -2,6 +2,20 @@
{% load i18n %}
{% block title %} {% trans release.description %} - {% trans language.name %}{% endblock %}
+{% block extrahead %}
+<script type="text/javascript" src="{{ MEDIA_URL }}js/jquery.min.js"></script>
+<script type="text/javascript" src="{{ MEDIA_URL }}js/jquery.tablesorter.min.js"></script>
+<script type="text/javascript">
+$(document).ready(function()
+ {
+ $("#stats-table").tablesorter({headers: {3:{sorter: false}}});
+ $("#stats-table").bind("sortStart",function() {
+ /* Hide category subheaders when sorting */
+ $("tr.subheader").hide();
+ })
+ }
+);
+</script>{% endblock %}
{% block content %}
<div class="mainpage">
@@ -25,5 +39,8 @@
{% include "languages/language_release_stats.html" %}
{% endwith %}
+<hr />
+<p><a href="{% url languages.views.language_release_tar locale=language.locale release_name=release.name dtype=stats.dtype %}"><img src="{{ MEDIA_URL }}img/download.png" /> {% trans "Download all po files" %}</a></p>
+
</div>
{% endblock %}
Modified: trunk/templates/languages/language_release_stats.html
==============================================================================
--- trunk/templates/languages/language_release_stats.html (original)
+++ trunk/templates/languages/language_release_stats.html Tue Feb 3 13:29:12 2009
@@ -2,9 +2,9 @@
{% load i18n %}
-<table name="stats-table">
+<table>
<tr>
- <td class="leftcell" colspan="2">{{ modstats.totaltransperc }}% ({{ modstats.totaltrans }}/{{ modstats.totalfuzzy }}/{{ modstats.totaluntrans }})</td>
+ <td class="leftcell" colspan="3">{{ modstats.totaltransperc }}% ({{ modstats.totaltrans }}/{{ modstats.totalfuzzy }}/{{ modstats.totaluntrans }})</td>
<td style="width: 108px; text-align: center;"><div class="graph">
<div class="translated" style="width: {{ modstats.totaltransperc }}px;"></div>
<div class="fuzzy" style="left:{{ modstats.totaltransperc }}px; width:{{ modstats.totalfuzzyperc }}px;"></div>
@@ -14,46 +14,53 @@
</div>
</td>
</tr>
+</table>
+<table class="tablesorter" name="stats-table" id="stats-table">
+<thead>
+ <tr><th>{% trans "Module" %}</th><th>{% trans "Branch " %}</th><th >{% trans "Statistics" %}</th>
+ <th></th><th>{% trans "Status " %}</th><th>{% trans "Date " %}</th></tr>
+</thead>
+<tbody>
+ {# empty line to not disturb tablesorter if 1st line is a colspan #}
+ <tr style="display:none;"><td>mod</td><td>br</td><td>100</td><td></td><td>state</td><td></td></tr>
{% for catname,categ in modstats.categs.items %}
{% ifnotequal catname "default" %}
- <tr><td colspan="3" class="leftcell" style="font-weight: bold; padding-top:1em;">
+ <tr class="subheader"><td colspan="4" class="leftcell" style="font-weight: bold; padding-top:1em;">
{% with categ.cattransperc as percentage %}
{% with categ.catname as categname %}
{% blocktrans %}{{ categname }} ({{ percentage }}% translated){% endblocktrans %}
{% endwith %}
{% endwith %}
- </td></tr>
+ </td><td></td></tr>
{% endifnotequal %}
{% for module in categ.modules %}
{% with module.0 as modname %}
- {% for dom in module.1.domains %}
+ {% for branch, doms in module.1.items %}
+ {% for dom in doms %}
{% with dom.0 as domname %}
{% with dom.1 as stat %}
- {% if stat %}
+ {% if stat and not stat.is_fake %}
{% ifequal stat.tr_percentage 100 %}
<tr id="{{ modname }}-{{ stat.domain.id }}-complete">
{% else %}
<tr>
{% endifequal %}
+ <td class="leftcell">
+ <a href="{% url vertimus-names-view modname branch stat.domain.name language.locale %}">{{ stat.module_description }}
{% if stat.partial_po %}
- {# This is a partial po, indented, with the domain description #}
- <td class="leftcell" style="padding-left:2em; padding-right:2em;">
- <a href="{% url vertimus-names-view modname module.1.branch stat.domain.name language.locale %}">{{ domname }}</a>
- {% else %}
- <td class="leftcell">
- {% if not stat.is_fake %}
- <a href="{% url vertimus-names-view modname module.1.branch stat.domain.name language.locale %}">{{ stat.module_description }}</a>
- {% else %}
- <em>{{ stat.module_description }}</em>
- {% endif %}
+ {# For a partial po, domain description is appended #}
+ • {{ domname }}
{% endif %}
+ </a>
{% for err in stat.info_list %}
<img src="{{ err.get_icon }}" title="{{ err.get_description|striptags }}" alt="{{ err.type }}" />
{% endfor %}
- </td>
- <td>{{ stat.tr_percentage }}% ({{ stat.translated }}/{{ stat.fuzzy }}/{{ stat.untranslated }})</td>
+ </td>
+ <td><span class="branch">{{ branch }}</span></td>
+ <td><span style="display:none;">{{ stat.tr_percentage }}</span>
+ {{ stat.tr_percentage }}% ({{ stat.translated }}/{{ stat.fuzzy }}/{{ stat.untranslated }})</td>
<td style="width: 108px; text-align: center;"><div class="graph">
<div class="translated" style="width: {{ stat.tr_percentage }}px;"></div>
<div class="fuzzy" style="left:{{ stat.tr_percentage }}px; width:{{ stat.fu_percentage }}px;"></div>
@@ -65,18 +72,23 @@
<td>
{% if stat.state.name %}
{% ifnotequal stat.state.name "None" %}
- <em><small>{{ stat.state.get_state }} - {{ stat.state.updated|date:dateformat }}</small></em>
+ <em><small>{{ stat.state.get_state }}</small></em></td>
+ <td><span style="display: none;">{{ stat.state.updated }}</span><em><small>{{ stat.state.updated|date:dateformat }}
+ {% else %} </td><td>
{% endifnotequal %}
+ {% else %} </td><td>
{% endif %}
</td>
</tr>
{% endif %}
{% endwith %}
{% endwith %}
+ {% endfor %}
{% endfor %}
{% endwith %}
{% endfor %}
{% endfor %}
+</tbody>
</table>
{% if modstats.all_errors %}
@@ -88,6 +100,4 @@
{% endfor %}
</ul>
{% endif %}
-<hr />
-<p><a href="{% url languages.views.language_release_tar locale=language.locale release_name=release.name dtype=modstats.dtype %}"><img src="/media/img/download.png" /> {% trans "Download all po files" %}</a></p>
Modified: trunk/templates/teams/team_detail.html
==============================================================================
--- trunk/templates/teams/team_detail.html (original)
+++ trunk/templates/teams/team_detail.html Tue Feb 3 13:29:12 2009
@@ -56,6 +56,8 @@
{% endif %}
</tr>
{% endfor %}
+ <tr><td></td><td><a href="{% url language_all lang.locale,"ui" %}">{% trans "All modules" %}</a></td>
+ <td></td><td><a href="{% url language_all lang.locale,"doc" %}">{% trans "All modules" %}</a></td><td></td></tr>
</table>
{% endfor %}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]