From 9a37d893e8c6bdd7ca6b8c2ef25a19b57593661c Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Tue, 5 Jun 2012 12:24:06 +0200 Subject: [PATCH] Show links to other versions of docs Main patch from Marti Raudsepp, but with some fairly extensive changes --- media/css/docs.css | 2 +- pgweb/docs/models.py | 9 +++++++++ pgweb/docs/views.py | 9 ++++++--- templates/docs/docspage.html | 30 +++++++++++++++++++++++++++--- 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/media/css/docs.css b/media/css/docs.css index 24857b0f..3b272f69 100644 --- a/media/css/docs.css +++ b/media/css/docs.css @@ -51,7 +51,7 @@ div.NAVHEADER table { padding-bottom: 2px; } -#docNav { +#docNav, #docVersions { position: relative; text-align: left; margin-left: 10px; diff --git a/pgweb/docs/models.py b/pgweb/docs/models.py index 4aafde41..5ea1497d 100644 --- a/pgweb/docs/models.py +++ b/pgweb/docs/models.py @@ -12,8 +12,17 @@ class DocPage(models.Model): title = models.CharField(max_length=256, null=True, blank=True) content = models.TextField(null=True, blank=True) + def display_version(self): + """Version as used for displaying and in URLs""" + if self.version == 0: + return 'devel' + else: + return str(self.version) + class Meta: db_table = 'docs' + # Index file first, because we want to list versions by file + unique_together = [('file', 'version')] class DocComment(PgModel, models.Model): version = models.DecimalField(max_digits=3, decimal_places=1, null=False) diff --git a/pgweb/docs/views.py b/pgweb/docs/views.py index d5969a8b..bad6e511 100644 --- a/pgweb/docs/views.py +++ b/pgweb/docs/views.py @@ -41,17 +41,20 @@ def docpage(request, version, typ, filename): else: indexname = "index.html" - page = get_object_or_404(DocPage, version=ver, file="%s.%s" % (filename, extension)) + fullname = "%s.%s" % (filename, extension) + page = get_object_or_404(DocPage, version=ver, file=fullname) + versions = DocPage.objects.filter(file=fullname).extra(select={'supported':"COALESCE((SELECT supported FROM core_version v WHERE v.tree=version), 'f')"}).order_by('-supported', '-version').only('version', 'file') if typ=="interactive": - comments = DocComment.objects.filter(version=ver, file="%s.%s" % (filename, extension), approved=True).order_by('posted_at') + comments = DocComment.objects.filter(version=ver, file=fullname, approved=True).order_by('posted_at') else: comments = None return render_to_response('docs/docspage.html', { 'page': page, + 'supported_versions': [v for v in versions if v.supported], + 'unsupported_versions': [v for v in versions if not v.supported], 'title': page.title, - 'doc_nav_version': ver > 0 and ver or "devel", 'doc_type': typ, 'comments': comments, 'can_comment': (typ=="interactive" and ver==currver), diff --git a/templates/docs/docspage.html b/templates/docs/docspage.html index d68dafe5..0d71b7a1 100644 --- a/templates/docs/docspage.html +++ b/templates/docs/docspage.html @@ -1,7 +1,7 @@ - PostgreSQL: Documentation: {{doc_nav_version}}: {{page.title}} + PostgreSQL: Documentation: {{page.display_version}}: {{page.title}} @@ -30,14 +30,38 @@
- +
Text Size: Normal / Large
-HomeDocumentationManualsPostgreSQL {{doc_nav_version}}{%if loaddate%} ({{loaddate|date:"Y-m-d H:i:s"}}){%endif%} +HomeDocumentationManualsPostgreSQL {{page.display_version}}{%if loaddate%} ({{loaddate|date:"Y-m-d H:i:s"}}){%endif%} +
+
+{%if supported_versions%} +This page in other versions: +{%for ver in supported_versions %} + {%if not forloop.first %}/{%endif%} + {%if ver.version == page.version %} + {{ver.display_version}} + {%else%} + {{ver.display_version}} + {%endif%} +{%endfor%} +{%endif%} +{%if unsupported_versions%} +Unsupported versions: +{%for ver in unsupported_versions %} + {%if not forloop.first %}/{%endif%} + {%if ver.version == page.version %} + {{ver.display_version}} + {% else %} + {{ver.display_version}} + {%endif%} +{%endfor%} +{%endif%}
-- 2.39.5