mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-01-21 07:55:00 +00:00
help: Fix showing manual pages in fallback cases
- When a manual page for a certain language is not found, redirect to 'en' for that manual page. Simply showing English content will cause issues with serving images. - Don't use language preferences unless the URL language is not generic. The language of the page shown will always correspond to the language in the URL. Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
This commit is contained in:
parent
78839173fd
commit
121c1cf4ca
@ -123,25 +123,26 @@ def about(request):
|
||||
|
||||
def manual(request, lang=None, page=None):
|
||||
"""Serve the manual page from the 'doc' directory"""
|
||||
language_code = get_language_from_request(request)
|
||||
|
||||
if not lang or lang == '-':
|
||||
kwargs = {'lang': language_code}
|
||||
kwargs = {'lang': get_language_from_request(request)}
|
||||
if page:
|
||||
return HttpResponseRedirect(
|
||||
reverse('help:manual-page', kwargs=dict(kwargs, page=page)))
|
||||
|
||||
return HttpResponseRedirect(reverse('help:manual', kwargs=kwargs))
|
||||
|
||||
def read_file(language_code, page):
|
||||
def read_file(lang, file_name):
|
||||
"""Read the page from disk and return contents or None."""
|
||||
page_file = pathlib.Path(cfg.doc_dir) / 'manual' / language_code / page
|
||||
page_file = pathlib.Path(cfg.doc_dir) / 'manual' / lang / file_name
|
||||
return page_file.read_text() if page_file.exists() else None
|
||||
|
||||
page = page or 'freedombox-manual'
|
||||
page = f'{page}.part.html'
|
||||
content = read_file(language_code, page) or read_file(language_code, 'en')
|
||||
content = read_file(lang, f'{page}.part.html')
|
||||
if not content:
|
||||
if lang != 'en':
|
||||
return HttpResponseRedirect(
|
||||
reverse('help:manual-page', kwargs=dict(lang='en', page=page)))
|
||||
|
||||
raise Http404
|
||||
|
||||
return TemplateResponse(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user