Link to user manual within left column

merge-requests/30/head
Bob Mottram 2022-10-10 10:25:46 +01:00
parent 763633cac2
commit 0c67bea614
29 changed files with 154 additions and 26 deletions

View File

@ -178,6 +178,7 @@ from webapp_calendar import html_calendar_delete_confirm
from webapp_calendar import html_calendar
from webapp_about import html_about
from webapp_specification import html_specification
from webapp_manual import html_manual
from webapp_accesskeys import html_access_keys
from webapp_accesskeys import load_access_keys_for_accounts
from webapp_confirm import html_confirm_delete
@ -16473,6 +16474,36 @@ class PubServer(BaseHTTPRequestHandler):
self.server.debug)
return
if self.path in ('/manual', '/usermanual', '/userguide'):
if calling_domain.endswith('.onion'):
msg = \
html_manual(self.server.base_dir, 'http',
self.server.onion_domain,
None, self.server.translate,
self.server.system_language)
elif calling_domain.endswith('.i2p'):
msg = \
html_manual(self.server.base_dir, 'http',
self.server.i2p_domain,
None, self.server.translate,
self.server.system_language)
else:
msg = \
html_manual(self.server.base_dir,
self.server.http_prefix,
self.server.domain_full,
self.server.onion_domain,
self.server.translate,
self.server.system_language)
msg = msg.encode('utf-8')
msglen = len(msg)
self._login_headers('text/html', msglen, calling_domain)
self._write(msg)
fitness_performance(getreq_start_time, self.server.fitness,
'_GET', 'show user manual screen',
self.server.debug)
return
if html_getreq and users_in_path and authorized and \
self.path.endswith('/accesskeys'):
nickname = self.path.split('/users/')[1]

View File

@ -239,7 +239,7 @@ git pull
chown -R epicyon:epicyon *
systemctl restart epicyon
```
# Configuration
# Registering accounts
# Following
# Creating posts
## Post scopes

View File

@ -594,5 +594,6 @@
"Site DevOps": "DevOps الموقع",
"A list of devops nicknames. One per line.": "قائمة بأسماء المطورين. واحد في كل سطر.",
"devops": "devops",
"Reject spam accounts": "رفض حسابات البريد العشوائي"
"Reject spam accounts": "رفض حسابات البريد العشوائي",
"User Manual": "دليل الاستخدام"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "সাইট DevOps",
"A list of devops nicknames. One per line.": "ডেভপস ডাকনামের একটি তালিকা। প্রতি লাইনে একটি।",
"devops": "devops",
"Reject spam accounts": "স্প্যাম অ্যাকাউন্ট প্রত্যাখ্যান করুন"
"Reject spam accounts": "স্প্যাম অ্যাকাউন্ট প্রত্যাখ্যান করুন",
"User Manual": "ব্যবহার বিধি"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "Lloc DevOps",
"A list of devops nicknames. One per line.": "Una llista de sobrenoms de devops. Un per línia.",
"devops": "devops",
"Reject spam accounts": "Rebutja els comptes de correu brossa"
"Reject spam accounts": "Rebutja els comptes de correu brossa",
"User Manual": "Manual d'usuari"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "Gwefan DevOps",
"A list of devops nicknames. One per line.": "Mae rhestr o devops llysenwau. Un i bob llinell.",
"devops": "devops",
"Reject spam accounts": "Gwrthod cyfrifon sbam"
"Reject spam accounts": "Gwrthod cyfrifon sbam",
"User Manual": "Llawlyfr Defnyddiwr"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "Site-DevOps",
"A list of devops nicknames. One per line.": "Eine Liste von Entwickler-Spitznamen. Eine pro Zeile.",
"devops": "devops",
"Reject spam accounts": "Gwrthod cyfrifon sbam"
"Reject spam accounts": "Gwrthod cyfrifon sbam",
"User Manual": "Benutzerhandbuch"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "DevOps ιστότοπου",
"A list of devops nicknames. One per line.": "Μια λίστα με ψευδώνυμα devops. Ένα ανά γραμμή.",
"devops": "devops",
"Reject spam accounts": "Gwrthod cyfrifon sbam"
"Reject spam accounts": "Gwrthod cyfrifon sbam",
"User Manual": "Εγχειρίδιο χρήστη"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "Site DevOps",
"A list of devops nicknames. One per line.": "A list of devops nicknames. One per line.",
"devops": "devops",
"Reject spam accounts": "Reject spam accounts"
"Reject spam accounts": "Reject spam accounts",
"User Manual": "User Manual"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "DevOps del sitio",
"A list of devops nicknames. One per line.": "Una lista de apodos de devops. Uno por línea.",
"devops": "devops",
"Reject spam accounts": "Rechazar cuentas de spam"
"Reject spam accounts": "Rechazar cuentas de spam",
"User Manual": "Manual de usuario"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "DevOps du site",
"A list of devops nicknames. One per line.": "Une liste de surnoms de devops. Un par ligne.",
"devops": "devops",
"Reject spam accounts": "Rejeter les comptes de spam"
"Reject spam accounts": "Rejeter les comptes de spam",
"User Manual": "Manuel de l'Utilisateur"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "Suíomh DevOps",
"A list of devops nicknames. One per line.": "Tá liosta devops leasainmneacha. Ceann in aghaidh an líne.",
"devops": "devops",
"Reject spam accounts": "Diúltaigh cuntais turscair"
"Reject spam accounts": "Diúltaigh cuntais turscair",
"User Manual": "Lámhleabhar Úsáideora"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "साइट देवऑप्स",
"A list of devops nicknames. One per line.": "देवोप्स उपनामों की एक सूची। प्रति पंक्ति एक।",
"devops": "devops",
"Reject spam accounts": "स्पैम खातों को अस्वीकार करें"
"Reject spam accounts": "स्पैम खातों को अस्वीकार करें",
"User Manual": "उपयोगकर्ता पुस्तिका"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "Sito DevOps",
"A list of devops nicknames. One per line.": "Un elenco di soprannomi devops. Uno per riga.",
"devops": "devops",
"Reject spam accounts": "Rifiuta gli account spam"
"Reject spam accounts": "Rifiuta gli account spam",
"User Manual": "Manuale d'uso"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "サイト DevOps",
"A list of devops nicknames. One per line.": "DevOps ニックネームのリスト。 1 行に 1 つ。",
"devops": "devops",
"Reject spam accounts": "スパムアカウントを拒否"
"Reject spam accounts": "スパムアカウントを拒否",
"User Manual": "ユーザーマニュアル"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "사이트 DevOps",
"A list of devops nicknames. One per line.": "데브옵스 닉네임 목록입니다. 한 줄에 하나씩.",
"devops": "devops",
"Reject spam accounts": "스팸 계정 거부"
"Reject spam accounts": "스팸 계정 거부",
"User Manual": "사용자 매뉴얼"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "Malpera DevOps",
"A list of devops nicknames. One per line.": "Lîsteya navên devops. Her rêzek yek.",
"devops": "devops",
"Reject spam accounts": "Hesabên spam red bikin"
"Reject spam accounts": "Hesabên spam red bikin",
"User Manual": "Manual Bikarhêner"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "Site DevOps",
"A list of devops nicknames. One per line.": "Een lijst met devops-bijnamen. Een per regel.",
"devops": "devops",
"Reject spam accounts": "Spamaccounts afwijzen"
"Reject spam accounts": "Spamaccounts afwijzen",
"User Manual": "Handleiding"
}

View File

@ -590,5 +590,6 @@
"Site DevOps": "Site DevOps",
"A list of devops nicknames. One per line.": "A list of devops nicknames. One per line.",
"devops": "devops",
"Reject spam accounts": "Reject spam accounts"
"Reject spam accounts": "Reject spam accounts",
"User Manual": "User Manual"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "Deweloperzy witryny",
"A list of devops nicknames. One per line.": "Lista pseudonimów Devopa. Jeden na linię.",
"devops": "devops",
"Reject spam accounts": "Odrzuć konta spamowe"
"Reject spam accounts": "Odrzuć konta spamowe",
"User Manual": "Instrukcja obsługi"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "Site DevOps",
"A list of devops nicknames. One per line.": "Uma lista de apelidos de devops. Um por linha.",
"devops": "devops",
"Reject spam accounts": "Rejeitar contas de spam"
"Reject spam accounts": "Rejeitar contas de spam",
"User Manual": "Manual do usuário"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "DevOps сайта",
"A list of devops nicknames. One per line.": "Список псевдонимов devops. По одному на строку.",
"devops": "devops",
"Reject spam accounts": "Отклонить спам-аккаунты"
"Reject spam accounts": "Отклонить спам-аккаунты",
"User Manual": "Руководство пользователя"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "Tovuti ya DevOps",
"A list of devops nicknames. One per line.": "Orodha ya majina ya utani ya devops. Moja kwa kila mstari.",
"devops": "devops",
"Reject spam accounts": "Kataa akaunti za barua taka"
"Reject spam accounts": "Kataa akaunti za barua taka",
"User Manual": "Mwongozo wa mtumiaji"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "Site DevOps",
"A list of devops nicknames. One per line.": "Devops takma adlarının listesi. Her satıra bir tane.",
"devops": "devops",
"Reject spam accounts": "Spam hesapları reddet"
"Reject spam accounts": "Spam hesapları reddet",
"User Manual": "Kullanım kılavuzu"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "Сайт DevOps",
"A list of devops nicknames. One per line.": "Список ніків devops. По одному на рядок.",
"devops": "devops",
"Reject spam accounts": "Відхилити спам-акаунти"
"Reject spam accounts": "Відхилити спам-акаунти",
"User Manual": "Посібник користувача"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "וועבזייטל DevOps",
"A list of devops nicknames. One per line.": "א רשימה פון דיוואָפּס ניקניימז. איינער פּער שורה.",
"devops": "devops",
"Reject spam accounts": "אָפּוואַרפן ספּאַם אַקאַונץ"
"Reject spam accounts": "אָפּוואַרפן ספּאַם אַקאַונץ",
"User Manual": "באנוצער אנווייזער"
}

View File

@ -594,5 +594,6 @@
"Site DevOps": "站点 DevOps",
"A list of devops nicknames. One per line.": "devops 昵称列表。 每行一个。",
"devops": "devops",
"Reject spam accounts": "拒绝垃圾邮件帐户"
"Reject spam accounts": "拒绝垃圾邮件帐户",
"User Manual": "用户手册"
}

View File

@ -346,6 +346,9 @@ def get_left_column_content(base_dir: str, nickname: str, domain_full: str,
html_str += \
'<p class="login-text"><a href="/about">' + \
translate['About this Instance'] + '</a></p>'
html_str += \
'<p class="login-text"><a href="/manual">' + \
translate['User Manual'] + '</a></p>'
html_str += \
'<p class="login-text"><a href="/activitypub">' + \
translate['ActivityPub Specification'] + '</a></p>'

69
webapp_manual.py 100644
View File

@ -0,0 +1,69 @@
__filename__ = "webapp_about.py"
__author__ = "Bob Mottram"
__license__ = "AGPL3+"
__version__ = "1.3.0"
__maintainer__ = "Bob Mottram"
__email__ = "bob@libreserver.org"
__status__ = "Production"
__module_group__ = "Web Interface"
import os
from shutil import copyfile
from utils import get_config_param
from webapp_utils import html_header_with_website_markup
from webapp_utils import html_footer
from markdown import markdown_example_numbers
from markdown import markdown_to_html
def html_manual(base_dir: str, http_prefix: str,
domain_full: str, onion_domain: str, translate: {},
system_language: str) -> str:
"""Show the user manual screen
"""
manual_filename = base_dir + '/manual/manual.md'
admin_nickname = get_config_param(base_dir, 'admin')
if os.path.isfile(base_dir + '/accounts/manual.md'):
manual_filename = base_dir + '/accounts/manual.md'
if os.path.isfile(base_dir + '/accounts/login-background-custom.jpg'):
if not os.path.isfile(base_dir + '/accounts/login-background.jpg'):
copyfile(base_dir + '/accounts/login-background-custom.jpg',
base_dir + '/accounts/login-background.jpg')
manual_text = 'User Manual.'
if os.path.isfile(manual_filename):
with open(manual_filename, 'r',
encoding='utf-8') as fp_manual:
md_text = markdown_example_numbers(fp_manual.read())
manual_text = markdown_to_html(md_text)
manual_form = ''
css_filename = base_dir + '/epicyon-profile.css'
if os.path.isfile(base_dir + '/epicyon.css'):
css_filename = base_dir + '/epicyon.css'
instance_title = \
get_config_param(base_dir, 'instanceTitle')
manual_form = \
html_header_with_website_markup(css_filename, instance_title,
http_prefix, domain_full,
system_language)
manual_form += \
'<div class="container">' + manual_text + '</div>'
if onion_domain:
manual_form += \
'<div class="container"><center>\n' + \
'<p class="administeredby">' + \
'http://' + onion_domain + '</p>\n</center></div>\n'
if admin_nickname:
admin_actor = '/users/' + admin_nickname
manual_form += \
'<div class="container"><center>\n' + \
'<p class="administeredby">' + \
translate['Administered by'] + ' <a href="' + \
admin_actor + '">' + admin_nickname + '</a>. ' + \
translate['Version'] + ' ' + __version__ + \
'</p>\n</center></div>\n'
manual_form += html_footer()
return manual_form