POTFILE = $(PO_PATH)/webapp.pot
POFILES = $(wildcard $(PO_PATH)/*/LC_MESSAGES/*.po)
-ALL_FILES = $(shell find . /usr/lib*/python*/site-packages/tornado -name "*.py" -or -name "*.html")
+ALL_FILES = $(shell find webapp templates /usr/lib*/python*/site-packages/tornado -name "*.py" -or -name "*.html")
.PHONY: pot
pot: $(POTFILE)
padding-bottom: 20px;
}
}
+
+.planet-table td.date {
+ width: 10em;
+}
+
+.planet-table td.author {
+ width: 10em;
+}
{% if show_avatar %}
<a class="pull-right" href="/user/{{ entry.author.uid }}">
- <img class="img-rounded img-padding" src="{{ entry.author.gravatar_icon(96) }}" alt="{{ entry.author.cn }}" />
+ <img class="img-rounded img-padding" src="{{ entry.author.gravatar_icon(128) }}" alt="{{ entry.author.cn }}" />
</a>
{% end %}
{% block title %}{{ _("IPFire Planet") }}{% end block %}
{% block body %}
- <div class="ac">
- <p class="lead">
- The <strong>IPFire Planet</strong> is a place for the people
- who are involved in the project to tell the community about
- new progress in the development or make some minor announcements.
- </p>
+ <p class="lead ac">
+ The <strong>IPFire Planet</strong> is a place for the people
+ who are involved in the project to tell the community about
+ new progress in the development or make some minor announcements.
+ </p>
+ <br>
- <br>
+ <div class="row">
+ <div class="span4 offset4">
+ <form class="form-inline" action="/search" method="GET">
+ <div class="input-append">
+ <input type="text" class="input-medium" name="q" placeholder="{{ _("Search") }}">
+ <button type="submit" class="btn"><i class="icon-search"></i></button>
+ </div>
- <form action="/search" method="GET">
- <div class="input-append">
- <input type="text" class="input-medium" name="q" placeholder="{{ _("Search") }}">
- <button type="submit" class="btn"><i class="icon-search"></i></button>
- </div>
- </form>
+ <div class="btn-group">
+ <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
+ {{ _("All posts from") }}
+ <span class="caret"></span>
+ </a>
+ <ul class="dropdown-menu">
+ {% for y in years %}
+ <li><a href="/year/{{ y }}">{{ y }}</a></li>
+ {% end %}
+ </ul>
+ </div>
+ </form>
+ </div>
</div>
<hr class="separator">
{% module PlanetEntry(entry) %}
{% end %}
- <div class="row">
- <div class="span9">
- <ul class="pager">
- <li class="previous">
- <a href="?offset={{ offset }}">← {{ _("Older posts") }}</a>
- </li>
- {% if offset - limit %}
- <li class="next">
- <a href="?offset={{ offset - (2 * limit) }}">{{ _("Newer posts") }} →</a>
- </li>
- {% end %}
- </ul>
- </div>
- </div>
+ <ul class="pager">
+ <li class="previous">
+ <a href="?offset={{ offset }}">← {{ _("Older posts") }}</a>
+ </li>
+ {% if offset - limit %}
+ <li class="next">
+ <a href="?offset={{ offset - (2 * limit) }}">{{ _("Newer posts") }} →</a>
+ </li>
+ {% end %}
+ </ul>
{% end block %}
--- /dev/null
+{% extends "base.html" %}
+
+{% block title %}{{ _("IPFire Planet") }}{% end block %}
+
+{% block subtitle %}
+ {{ _("Year %s") % year }}</p>
+{% end block %}
+
+{% block body %}
+ {% for month, entries in months %}
+ <h3>{{ format_month_name(month) }}</h3>
+
+ <table class="table planet-table">
+ {% for entry in entries %}
+ <tr>
+ <td class="date">
+ {{ locale.format_date(entry.published, shorter=True) }}
+ </td>
+ <td class="title">
+ <a href="/post/{{ entry.slug }}">{{ entry.title }}</a>
+ </td>
+ <td class="author">
+ <a href="/user/{{ entry.author.uid }}">{{ entry.author.cn }}</a>
+ </td>
+ </tr>
+ {% end %}
+ </table>
+ {% end %}
+{% end block %}
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-02-19 12:41+0100\n"
+"POT-Creation-Date: 2013-05-04 11:38+0200\n"
"PO-Revision-Date: 2013-02-19 12:38+0100\n"
"Last-Translator: Michael Tremer <michael.tremer@ipfire.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+#: webapp/handlers_news.py:43 webapp/ui_modules.py:76
+msgid "Unknown author"
+msgstr "Unbekannter Autor"
+
+#: webapp/__init__.py:278
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:225
+msgid "January"
+msgstr "Januar"
+
+#: webapp/__init__.py:280
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:225
+msgid "February"
+msgstr "Februar"
+
+#: webapp/__init__.py:282
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:225
+msgid "March"
+msgstr "März"
+
+#: webapp/__init__.py:284
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:225
+msgid "April"
+msgstr "April"
+
+#: webapp/__init__.py:286
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:226
+msgid "May"
+msgstr "Mai"
+
+#: webapp/__init__.py:288
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:226
+msgid "June"
+msgstr "Juni"
+
+#: webapp/__init__.py:290
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:226
+msgid "July"
+msgstr "Juli"
+
+#: webapp/__init__.py:292
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:226
+msgid "August"
+msgstr "August"
+
+#: webapp/__init__.py:294
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:227
+msgid "September"
+msgstr "September"
+
+#: webapp/__init__.py:296
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:227
+msgid "October"
+msgstr "Oktober"
+
+#: webapp/__init__.py:298
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:227
+msgid "November"
+msgstr "November"
+
+#: webapp/__init__.py:300
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:227
+msgid "December"
+msgstr "Dezember"
+
+#: webapp/ui_modules.py:239
+#, python-format
+msgid "%s to %s"
+msgstr "%s nach %s"
+
+#: webapp/backend/wishlist.py:153
+msgid "Checkout this crowdfunding wish from #ipfire:"
+msgstr ""
+
+#: webapp/backend/releases.py:96
+msgid "Image for the armv5tel architecture"
+msgstr "Image für die armv5tel-Architektur"
+
+#: webapp/backend/releases.py:97
+msgid "armv5tel image for boards with serial console"
+msgstr "armv5tel-Image für Boards mit serieller Konsole"
+
+#: webapp/backend/releases.py:98
+msgid "Installable CD image"
+msgstr "Bootbares CD-Image"
+
+#: webapp/backend/releases.py:99
+msgid "Torrent file"
+msgstr "Torrentdatei"
+
+#: webapp/backend/releases.py:100
+msgid "Flash image"
+msgstr "Flash-Image"
+
+#: webapp/backend/releases.py:101
+msgid "Alix image"
+msgstr "Alix-Image"
+
+#: webapp/backend/releases.py:102
+msgid "USB FDD Image"
+msgstr "USB-FDD-Image"
+
+#: webapp/backend/releases.py:103
+msgid "USB HDD Image"
+msgstr "USB-HDD-Image"
+
+#: webapp/backend/releases.py:104
+msgid "Pregenerated Xen image"
+msgstr "Vorgefertigtes Xen-Image"
+
+#: webapp/backend/releases.py:110 webapp/backend/releases.py:150
+msgid "Unknown image type"
+msgstr "Unbekanntes Imageformat"
+
+#: webapp/backend/releases.py:136
+msgid "This image runs on many ARM-based boards"
+msgstr "Dieses Image läuft auf vielen ARM-basierten Boards"
+
+#: webapp/backend/releases.py:137
+msgid "This image runs on ARM boards with a serial console"
+msgstr "Dieses Image läuft auf ARM-Boards mit serieller Konsole"
+
+#: webapp/backend/releases.py:138
+msgid "Use this image to burn a CD and install IPFire from it."
+msgstr ""
+"Nutze dieses Image um eine CD zu erstellen und IPFire von dieser zu "
+"installieren."
+
+#: webapp/backend/releases.py:139
+msgid "Download the CD image from the torrent network."
+msgstr "CD-Image mit aus dem Torrentnetzwerk laden"
+
+#: webapp/backend/releases.py:140
+msgid "An image that is meant to run on embedded devices."
+msgstr "Ein Image, das für eingebettete Systeme optimiert ist."
+
+#: webapp/backend/releases.py:141
+msgid "Flash image where a serial console is enabled by default."
+msgstr "Image, bei welchem die serielle Konsole eingeschaltet ist."
+
+#: webapp/backend/releases.py:142
+msgid "Install IPFire from a floppy-formated USB key."
+msgstr "IPFire von einem Floppy-formatiertem USB-Stick installieren."
+
+#: webapp/backend/releases.py:143
+msgid "If the floppy image doesn't work, use this image instead."
+msgstr "Wenn das Floppy-Image nicht funktioniert, dieses verwenden."
+
+#: webapp/backend/releases.py:144
+msgid "A ready-to-run image for Xen."
+msgstr "Ein fertiges Image für Xen."
+
+#: webapp/backend/iuse.py:165
+#, python-format
+msgid "Mem: %s"
+msgstr "RAM: %s"
+
+#: webapp/backend/iuse.py:168
+#, python-format
+msgid "Disk: %s"
+msgstr "HDD: %s"
+
+#: webapp/backend/iuse.py:180
+#, python-format
+msgid "Networks: %s"
+msgstr "Netzwerke: %s"
+
#: templates/wishlist/wish.html:3
msgid "Wish"
msgstr "Wunsch"
#: templates/wishlist/donate.html:13 templates/wishlist/donate.html:23
#: templates/wishlist/terms.html:3 templates/wishlist/terms.html:7
-#: templates/base.html:78 www/templates/base.html:81
+#: templates/base.html:78
msgid "Terms & Conditions"
msgstr "Allgemeine Bedingungen"
msgid "Stay up to date"
msgstr "Informiere dich"
-#: templates/news.html:61 templates/planet/user.html:3
+#: templates/news.html:61 templates/planet/year.html:3
+#: templates/planet/user.html:3 templates/planet/search.html:3
#: templates/planet/base.html:6 templates/planet/index.html:3
#: templates/planet/posting.html:3
msgid "IPFire Planet"
msgid "Account Administrator"
msgstr "Accountadministrator"
-#: templates/planet/user.html:22 templates/planet/index.html:30
+#: templates/planet/year.html:6
+#, python-format
+msgid "Year %s"
+msgstr ""
+
+#: templates/planet/user.html:22 templates/planet/index.html:44
msgid "Older posts"
msgstr "Ältere Beiträge"
-#: templates/planet/user.html:26 templates/planet/index.html:34
+#: templates/planet/user.html:26 templates/planet/index.html:48
msgid "Newer posts"
msgstr "Neuere Beiträge"
msgid "Mail"
msgstr "Mail"
-#: templates/planet/base.html:7
+#: templates/planet/search.html:6
+#, python-format
+msgid "Search results for '%s'"
+msgstr ""
+
+#: templates/planet/search.html:16
+#, python-format
+msgid "No results found for '%s'"
+msgstr ""
+
+#: templates/planet/base.html:9
msgid "The official blog of the IPFire team"
msgstr "Das offizielle Blog des IPFire-Team"
+#: templates/planet/index.html:23
+msgid "All posts from"
+msgstr ""
+
#: templates/planet/posting.html:18 templates/modules/planet-entry.html:14
msgid "Posted by"
msgstr "Erstellt von"
msgid "on"
msgstr "am"
-#: templates/base.html:4 www/templates/base.html:4
+#: templates/base.html:4
msgid "No title given"
msgstr "Kein Titel"
msgstr "IPFire ist freie Software"
#: templates/base.html:69 templates/static/press.html:3
-#: templates/static/press.html:7 www/templates/base.html:76
+#: templates/static/press.html:7
msgid "Press"
msgstr "Presse"
msgid "Worldwide mirror servers"
msgstr "Weltweite Mirrorserver"
-#: webapp/handlers_news.py:43 webapp/ui_modules.py:76
-msgid "Unknown author"
-msgstr "Unbekannter Autor"
-
-#: webapp/ui_modules.py:239
-#, python-format
-msgid "%s to %s"
-msgstr "%s nach %s"
-
-#: webapp/backend/wishlist.py:153
-msgid "Checkout this crowdfunding wish from #ipfire:"
-msgstr ""
-
-#: webapp/backend/releases.py:96
-msgid "Image for the armv5tel architecture"
-msgstr "Image für die armv5tel-Architektur"
-
-#: webapp/backend/releases.py:97
-msgid "armv5tel image for boards with serial console"
-msgstr "armv5tel-Image für Boards mit serieller Konsole"
-
-#: webapp/backend/releases.py:98
-msgid "Installable CD image"
-msgstr "Bootbares CD-Image"
-
-#: webapp/backend/releases.py:99
-msgid "Torrent file"
-msgstr "Torrentdatei"
-
-#: webapp/backend/releases.py:100
-msgid "Flash image"
-msgstr "Flash-Image"
-
-#: webapp/backend/releases.py:101
-msgid "Alix image"
-msgstr "Alix-Image"
-
-#: webapp/backend/releases.py:102
-msgid "USB FDD Image"
-msgstr "USB-FDD-Image"
-
-#: webapp/backend/releases.py:103
-msgid "USB HDD Image"
-msgstr "USB-HDD-Image"
-
-#: webapp/backend/releases.py:104
-msgid "Pregenerated Xen image"
-msgstr "Vorgefertigtes Xen-Image"
-
-#: webapp/backend/releases.py:110 webapp/backend/releases.py:150
-msgid "Unknown image type"
-msgstr "Unbekanntes Imageformat"
-
-#: webapp/backend/releases.py:136
-msgid "This image runs on many ARM-based boards"
-msgstr "Dieses Image läuft auf vielen ARM-basierten Boards"
-
-#: webapp/backend/releases.py:137
-msgid "This image runs on ARM boards with a serial console"
-msgstr "Dieses Image läuft auf ARM-Boards mit serieller Konsole"
-
-#: webapp/backend/releases.py:138
-msgid "Use this image to burn a CD and install IPFire from it."
-msgstr ""
-"Nutze dieses Image um eine CD zu erstellen und IPFire von dieser zu "
-"installieren."
-
-#: webapp/backend/releases.py:139
-msgid "Download the CD image from the torrent network."
-msgstr "CD-Image mit aus dem Torrentnetzwerk laden"
-
-#: webapp/backend/releases.py:140
-msgid "An image that is meant to run on embedded devices."
-msgstr "Ein Image, das für eingebettete Systeme optimiert ist."
-
-#: webapp/backend/releases.py:141
-msgid "Flash image where a serial console is enabled by default."
-msgstr "Image, bei welchem die serielle Konsole eingeschaltet ist."
-
-#: webapp/backend/releases.py:142
-msgid "Install IPFire from a floppy-formated USB key."
-msgstr "IPFire von einem Floppy-formatiertem USB-Stick installieren."
-
-#: webapp/backend/releases.py:143
-msgid "If the floppy image doesn't work, use this image instead."
-msgstr "Wenn das Floppy-Image nicht funktioniert, dieses verwenden."
-
-#: webapp/backend/releases.py:144
-msgid "A ready-to-run image for Xen."
-msgstr "Ein fertiges Image für Xen."
-
-#: webapp/backend/iuse.py:165
-#, python-format
-msgid "Mem: %s"
-msgstr "RAM: %s"
-
-#: webapp/backend/iuse.py:168
-#, python-format
-msgid "Disk: %s"
-msgstr "HDD: %s"
-
-#: webapp/backend/iuse.py:180
-#, python-format
-msgid "Networks: %s"
-msgstr "Netzwerke: %s"
-
-#: www/templates/nopaste-index.html:3 www/templates/nopaste-index.html:6
-msgid "IPFire nopaste service"
-msgstr "IPFire nopaste Service"
-
-#: www/templates/nopaste-index.html:14
-msgid "Subject"
-msgstr "Betreff"
-
-#: www/templates/base.html:78
-msgid "imprint"
-msgstr "Impressum"
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:225
-msgid "January"
-msgstr "Januar"
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:225
-msgid "February"
-msgstr "Februar"
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:225
-msgid "March"
-msgstr "März"
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:225
-msgid "April"
-msgstr "April"
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:226
-msgid "May"
-msgstr "Mai"
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:226
-msgid "June"
-msgstr "Juni"
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:226
-msgid "July"
-msgstr "Juli"
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:226
-msgid "August"
-msgstr "August"
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:227
-msgid "September"
-msgstr "September"
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:227
-msgid "October"
-msgstr "Oktober"
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:227
-msgid "November"
-msgstr "November"
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:227
-msgid "December"
-msgstr "Dezember"
-
#: /usr/lib/python2.7/site-packages/tornado/locale.py:229
msgid "Monday"
msgstr "Montag"
msgid "%(commas)s and %(last)s"
msgstr "%(commas)s und %(last)s"
+#~ msgid "IPFire nopaste service"
+#~ msgstr "IPFire nopaste Service"
+
+#~ msgid "Subject"
+#~ msgstr "Betreff"
+
+#~ msgid "imprint"
+#~ msgstr "Impressum"
+
#~ msgid "Profile lookup"
#~ msgstr "Profilsuche"
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-02-19 12:41+0100\n"
+"POT-Creation-Date: 2013-05-04 11:38+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+#: webapp/handlers_news.py:43 webapp/ui_modules.py:76
+msgid "Unknown author"
+msgstr ""
+
+#: webapp/__init__.py:278
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:225
+msgid "January"
+msgstr ""
+
+#: webapp/__init__.py:280
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:225
+msgid "February"
+msgstr ""
+
+#: webapp/__init__.py:282
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:225
+msgid "March"
+msgstr ""
+
+#: webapp/__init__.py:284
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:225
+msgid "April"
+msgstr ""
+
+#: webapp/__init__.py:286
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:226
+msgid "May"
+msgstr ""
+
+#: webapp/__init__.py:288
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:226
+msgid "June"
+msgstr ""
+
+#: webapp/__init__.py:290
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:226
+msgid "July"
+msgstr ""
+
+#: webapp/__init__.py:292
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:226
+msgid "August"
+msgstr ""
+
+#: webapp/__init__.py:294
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:227
+msgid "September"
+msgstr ""
+
+#: webapp/__init__.py:296
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:227
+msgid "October"
+msgstr ""
+
+#: webapp/__init__.py:298
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:227
+msgid "November"
+msgstr ""
+
+#: webapp/__init__.py:300
+#: /usr/lib/python2.7/site-packages/tornado/locale.py:227
+msgid "December"
+msgstr ""
+
+#: webapp/ui_modules.py:239
+#, python-format
+msgid "%s to %s"
+msgstr ""
+
+#: webapp/backend/wishlist.py:153
+msgid "Checkout this crowdfunding wish from #ipfire:"
+msgstr ""
+
+#: webapp/backend/releases.py:96
+msgid "Image for the armv5tel architecture"
+msgstr ""
+
+#: webapp/backend/releases.py:97
+msgid "armv5tel image for boards with serial console"
+msgstr ""
+
+#: webapp/backend/releases.py:98
+msgid "Installable CD image"
+msgstr ""
+
+#: webapp/backend/releases.py:99
+msgid "Torrent file"
+msgstr ""
+
+#: webapp/backend/releases.py:100
+msgid "Flash image"
+msgstr ""
+
+#: webapp/backend/releases.py:101
+msgid "Alix image"
+msgstr ""
+
+#: webapp/backend/releases.py:102
+msgid "USB FDD Image"
+msgstr ""
+
+#: webapp/backend/releases.py:103
+msgid "USB HDD Image"
+msgstr ""
+
+#: webapp/backend/releases.py:104
+msgid "Pregenerated Xen image"
+msgstr ""
+
+#: webapp/backend/releases.py:110 webapp/backend/releases.py:150
+msgid "Unknown image type"
+msgstr ""
+
+#: webapp/backend/releases.py:136
+msgid "This image runs on many ARM-based boards"
+msgstr ""
+
+#: webapp/backend/releases.py:137
+msgid "This image runs on ARM boards with a serial console"
+msgstr ""
+
+#: webapp/backend/releases.py:138
+msgid "Use this image to burn a CD and install IPFire from it."
+msgstr ""
+
+#: webapp/backend/releases.py:139
+msgid "Download the CD image from the torrent network."
+msgstr ""
+
+#: webapp/backend/releases.py:140
+msgid "An image that is meant to run on embedded devices."
+msgstr ""
+
+#: webapp/backend/releases.py:141
+msgid "Flash image where a serial console is enabled by default."
+msgstr ""
+
+#: webapp/backend/releases.py:142
+msgid "Install IPFire from a floppy-formated USB key."
+msgstr ""
+
+#: webapp/backend/releases.py:143
+msgid "If the floppy image doesn't work, use this image instead."
+msgstr ""
+
+#: webapp/backend/releases.py:144
+msgid "A ready-to-run image for Xen."
+msgstr ""
+
+#: webapp/backend/iuse.py:165
+#, python-format
+msgid "Mem: %s"
+msgstr ""
+
+#: webapp/backend/iuse.py:168
+#, python-format
+msgid "Disk: %s"
+msgstr ""
+
+#: webapp/backend/iuse.py:180
+#, python-format
+msgid "Networks: %s"
+msgstr ""
+
#: templates/wishlist/wish.html:3
msgid "Wish"
msgstr ""
#: templates/wishlist/donate.html:13 templates/wishlist/donate.html:23
#: templates/wishlist/terms.html:3 templates/wishlist/terms.html:7
-#: templates/base.html:78 www/templates/base.html:81
+#: templates/base.html:78
msgid "Terms & Conditions"
msgstr ""
msgid "Stay up to date"
msgstr ""
-#: templates/news.html:61 templates/planet/user.html:3
+#: templates/news.html:61 templates/planet/year.html:3
+#: templates/planet/user.html:3 templates/planet/search.html:3
#: templates/planet/base.html:6 templates/planet/index.html:3
#: templates/planet/posting.html:3
msgid "IPFire Planet"
msgid "Account Administrator"
msgstr ""
-#: templates/planet/user.html:22 templates/planet/index.html:30
+#: templates/planet/year.html:6
+#, python-format
+msgid "Year %s"
+msgstr ""
+
+#: templates/planet/user.html:22 templates/planet/index.html:44
msgid "Older posts"
msgstr ""
-#: templates/planet/user.html:26 templates/planet/index.html:34
+#: templates/planet/user.html:26 templates/planet/index.html:48
msgid "Newer posts"
msgstr ""
msgid "Mail"
msgstr ""
-#: templates/planet/base.html:7
+#: templates/planet/search.html:6
+#, python-format
+msgid "Search results for '%s'"
+msgstr ""
+
+#: templates/planet/search.html:16
+#, python-format
+msgid "No results found for '%s'"
+msgstr ""
+
+#: templates/planet/base.html:9
msgid "The official blog of the IPFire team"
msgstr ""
+#: templates/planet/index.html:23
+msgid "All posts from"
+msgstr ""
+
#: templates/planet/posting.html:18 templates/modules/planet-entry.html:14
msgid "Posted by"
msgstr ""
msgid "on"
msgstr ""
-#: templates/base.html:4 www/templates/base.html:4
+#: templates/base.html:4
msgid "No title given"
msgstr ""
msgstr ""
#: templates/base.html:69 templates/static/press.html:3
-#: templates/static/press.html:7 www/templates/base.html:76
+#: templates/static/press.html:7
msgid "Press"
msgstr ""
msgid "Worldwide mirror servers"
msgstr ""
-#: webapp/handlers_news.py:43 webapp/ui_modules.py:76
-msgid "Unknown author"
-msgstr ""
-
-#: webapp/ui_modules.py:239
-#, python-format
-msgid "%s to %s"
-msgstr ""
-
-#: webapp/backend/wishlist.py:153
-msgid "Checkout this crowdfunding wish from #ipfire:"
-msgstr ""
-
-#: webapp/backend/releases.py:96
-msgid "Image for the armv5tel architecture"
-msgstr ""
-
-#: webapp/backend/releases.py:97
-msgid "armv5tel image for boards with serial console"
-msgstr ""
-
-#: webapp/backend/releases.py:98
-msgid "Installable CD image"
-msgstr ""
-
-#: webapp/backend/releases.py:99
-msgid "Torrent file"
-msgstr ""
-
-#: webapp/backend/releases.py:100
-msgid "Flash image"
-msgstr ""
-
-#: webapp/backend/releases.py:101
-msgid "Alix image"
-msgstr ""
-
-#: webapp/backend/releases.py:102
-msgid "USB FDD Image"
-msgstr ""
-
-#: webapp/backend/releases.py:103
-msgid "USB HDD Image"
-msgstr ""
-
-#: webapp/backend/releases.py:104
-msgid "Pregenerated Xen image"
-msgstr ""
-
-#: webapp/backend/releases.py:110 webapp/backend/releases.py:150
-msgid "Unknown image type"
-msgstr ""
-
-#: webapp/backend/releases.py:136
-msgid "This image runs on many ARM-based boards"
-msgstr ""
-
-#: webapp/backend/releases.py:137
-msgid "This image runs on ARM boards with a serial console"
-msgstr ""
-
-#: webapp/backend/releases.py:138
-msgid "Use this image to burn a CD and install IPFire from it."
-msgstr ""
-
-#: webapp/backend/releases.py:139
-msgid "Download the CD image from the torrent network."
-msgstr ""
-
-#: webapp/backend/releases.py:140
-msgid "An image that is meant to run on embedded devices."
-msgstr ""
-
-#: webapp/backend/releases.py:141
-msgid "Flash image where a serial console is enabled by default."
-msgstr ""
-
-#: webapp/backend/releases.py:142
-msgid "Install IPFire from a floppy-formated USB key."
-msgstr ""
-
-#: webapp/backend/releases.py:143
-msgid "If the floppy image doesn't work, use this image instead."
-msgstr ""
-
-#: webapp/backend/releases.py:144
-msgid "A ready-to-run image for Xen."
-msgstr ""
-
-#: webapp/backend/iuse.py:165
-#, python-format
-msgid "Mem: %s"
-msgstr ""
-
-#: webapp/backend/iuse.py:168
-#, python-format
-msgid "Disk: %s"
-msgstr ""
-
-#: webapp/backend/iuse.py:180
-#, python-format
-msgid "Networks: %s"
-msgstr ""
-
-#: www/templates/nopaste-index.html:3 www/templates/nopaste-index.html:6
-msgid "IPFire nopaste service"
-msgstr ""
-
-#: www/templates/nopaste-index.html:14
-msgid "Subject"
-msgstr ""
-
-#: www/templates/base.html:78
-msgid "imprint"
-msgstr ""
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:225
-msgid "January"
-msgstr ""
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:225
-msgid "February"
-msgstr ""
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:225
-msgid "March"
-msgstr ""
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:225
-msgid "April"
-msgstr ""
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:226
-msgid "May"
-msgstr ""
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:226
-msgid "June"
-msgstr ""
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:226
-msgid "July"
-msgstr ""
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:226
-msgid "August"
-msgstr ""
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:227
-msgid "September"
-msgstr ""
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:227
-msgid "October"
-msgstr ""
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:227
-msgid "November"
-msgstr ""
-
-#: /usr/lib/python2.7/site-packages/tornado/locale.py:227
-msgid "December"
-msgstr ""
-
#: /usr/lib/python2.7/site-packages/tornado/locale.py:229
msgid "Monday"
msgstr ""
gzip = True,
login_url = "/login",
template_path = os.path.join(BASEDIR, "templates"),
+ ui_methods = {
+ "format_month_name" : self.format_month_name,
+ },
ui_modules = {
"Advertisement" : AdvertisementModule,
"DonationBox" : DonationBoxModule,
(r"/post/([A-Za-z0-9_-]+)", PlanetPostingHandler),
(r"/user/([a-z0-9_-]+)", PlanetUserHandler),
(r"/search", PlanetSearchHandler),
+ (r"/year/(\d+)", PlanetYearHandler),
# RSS
(r"/rss", RSSPlanetAllHandler),
def reload(self):
logging.debug("Caught reload signal")
+
+ def format_month_name(self, handler, month):
+ _ = handler.locale.translate
+
+ if month == 1:
+ return _("January")
+ elif month == 2:
+ return _("February")
+ elif month == 3:
+ return _("March")
+ elif month == 4:
+ return _("April")
+ elif month == 5:
+ return _("May")
+ elif month == 6:
+ return _("June")
+ elif month == 7:
+ return _("July")
+ elif month == 8:
+ return _("August")
+ elif month == 9:
+ return _("September")
+ elif month == 10:
+ return _("October")
+ elif month == 11:
+ return _("November")
+ elif month == 12:
+ return _("December")
+
+ return month
name = name.replace("ü", "ue")
for mail in self.mail:
- if mail.startswith(name + "@"):
+ if mail.startswith("%s@ipfire.org" % name):
return mail
raise Exception, "Cannot figure out email address"
def published(self):
return self.__entry.published
+ @property
+ def year(self):
+ return self.published.year
+
+ @property
+ def month(self):
+ return self.published.month
+
@property
def updated(self):
return self.__entry.updated
return sorted(authors)
+ def get_years(self):
+ res = self.db.query("SELECT DISTINCT YEAR(published) AS year \
+ FROM planet ORDER BY year DESC")
+
+ return [row.year for row in res]
+
def get_entry_by_slug(self, slug):
entry = self.db.get("SELECT * FROM planet WHERE slug = %s", slug)
if entry:
return [PlanetEntry(e) for e in entries]
+ def get_entries_by_year(self, year):
+ entries = self.db.query("SELECT * FROM planet \
+ WHERE YEAR(published) = %s ORDER BY published DESC", year)
+
+ return [PlanetEntry(e) for e in entries]
+
def render(self, text, limit=0):
if limit and len(text) >= limit:
text = text[:limit] + "..."
from __future__ import division
import httplib
+import datetime
import time
import tornado.locale
import tornado.web
@property
def render_args(self):
+ today = datetime.date.today()
+
return {
"format_size" : format_size,
"hostname" : self.request.host,
"lang" : self.locale.code[:2],
"rss_url" : self.rss_url,
- "year" : time.strftime("%Y"),
+ "year" : today.year,
}
def render(self, *args, **_kwargs):
limit = int(self.get_argument("limit", 4))
entries = self.planet.get_entries(offset=offset, limit=limit)
+ years = self.planet.get_years()
- self.render("planet/index.html", entries=entries,
+ self.render("planet/index.html", entries=entries, years=years,
offset=offset + limit, limit=limit)
entries = []
self.render("planet/search.html", entries=entries, query=query)
+
+
+class PlanetYearHandler(PlanetBaseHandler):
+ def get(self, year):
+ entries = self.planet.get_entries_by_year(year)
+
+ months = {}
+ for entry in entries:
+ try:
+ months[entry.month].append(entry)
+ except KeyError:
+ months[entry.month] = [entry]
+
+ months = months.items()
+ months.sort(reverse=True)
+
+ self.render("planet/year.html", months=months, year=year)