# HG changeset patch # User souliane # Date 1421867240 -3600 # Node ID eda4deefecd1a1ea757f449fe037fa1b123f7566 # Parent 3df49721008c8732d1217b9230812b93ae61e3e2 reorganisation of the menu using submenus diff -r 3df49721008c -r eda4deefecd1 sat_website/templatetags/utils.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sat_website/templatetags/utils.py Wed Jan 21 20:07:20 2015 +0100 @@ -0,0 +1,14 @@ +from django import template +register = template.Library() + +@register.filter +def is_tuple(value): + """Tell if this value is a tuple or not. + + @param value (obj): any object + @return: True if value is a tuple + """ + # XXX: we would like to have is_type with an argument instead, but it would + # rely on a strange comparison - isinstance(value, arg) doesn't work here + return type(value) == tuple + diff -r 3df49721008c -r eda4deefecd1 sat_website/views.py --- a/sat_website/views.py Mon Jan 19 21:22:40 2015 +0100 +++ b/sat_website/views.py Wed Jan 21 20:07:20 2015 +0100 @@ -27,12 +27,29 @@ from collections import OrderedDict import screenshots, social_contract, utils -CATEGORIES = OrderedDict([("features", _(u"Features")), - ("frontends", _(u"Frontends")), - ("screenshots", _(u"Screenshots & Videos")), - ("community", _(u"Community")), - ("developers", _(u"Developers corner")), - ("social_contract", _(u"Social contract"))]) +CATEGORIES = OrderedDict([('frontends', (_(u"Presentation"), + OrderedDict([("features", _(u"Features")), + ("frontends", _(u"Frontends")), + ("screenshots", _(u"Screenshots & Videos")), + ]))), + ('principles', (_(u"Technical area"), + OrderedDict([("principles", _(u"Principles")), + ("specifications", _(u"Specifications")), + ("screenshots_tech", _(u"Screenshots & Videos")), + ("downloads", _(u"Downloads")), + ("developers", _(u"Developers corner")), + ]))), + ('community', (_(u"Community"), + OrderedDict([("community", _(u"Get in touch")), + ("association", _(u"Association")), + ("links", _(u"Links")), + ]))), + ]) + +CATEGORIES_RIGHT = OrderedDict([("adhesion", _(u"Adhesion")), + ("social_contract", _(u"Social contract")), + ]) + def overview(request): return render_to_response('sat_website/overview.html') @@ -42,10 +59,12 @@ context = { "available_languages": ['fr', 'en'], "categories": CATEGORIES, + "categories_right": CATEGORIES_RIGHT, "category": category, "latest_dl_path": latest_dl_path, "latest_version": latest_version, } + context.update(csrf(request)) if not category or category == "overview": @@ -53,11 +72,17 @@ elif category == "screenshots": context["screenshots"] = screenshots.screenshots context["screencasts"] = screenshots.screencasts - return render_to_response('sat_website/screenshots.html', context) + elif category == "screenshots_tech": + context["screenshots"] = screenshots.screencasts + context["screencasts"] = screenshots.screencasts elif category == "social_contract": context["SOCIAL_CONTRACT"] = social_contract.get_social_contract() - return render_to_response('sat_website/social_contract.html', context) - elif category in CATEGORIES.keys(): + + def all_keys(cats): + subcats = [value[1].keys() for value in cats.values() if isinstance(value, tuple)] + return sum(subcats, cats.keys()) + + if category in all_keys(CATEGORIES) or category in all_keys(CATEGORIES_RIGHT): return render_to_response('sat_website/%s.html' % (category,), context) else: raise Http404 diff -r 3df49721008c -r eda4deefecd1 templates/sat_website/base.html --- a/templates/sat_website/base.html Mon Jan 19 21:22:40 2015 +0100 +++ b/templates/sat_website/base.html Wed Jan 21 20:07:20 2015 +0100 @@ -28,7 +28,7 @@ - + {% block title %}{% trans "Salut à Toi: the multi-frontends, multi-purposes communication tool" %}{% endblock %} @@ -49,17 +49,8 @@ diff -r 3df49721008c -r eda4deefecd1 templates/sat_website/menu.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/templates/sat_website/menu.html Wed Jan 21 20:07:20 2015 +0100 @@ -0,0 +1,41 @@ +{% comment %} +SàT website: Salut à Toi's presentation website +Copyright (C) 2012 Jérôme Poisson (goffi@goffi.org) + +This file is part of SàT website. + +SàT website is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Foobar is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Foobar. If not, see . +{% endcomment %} + +{% load utils %} + +