mediawiki: Add option to change the site name

[sunil: Update the form description for styling]
[sunil: Show the default site name when nothing is set]
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
This commit is contained in:
nbenedek 2022-06-15 12:31:50 +02:00 committed by Sunil Mohan Adapa
parent aa5b1cea12
commit 3ec086411b
No known key found for this signature in database
GPG Key ID: 43EA1CFF0AA7C5F2
6 changed files with 44 additions and 3 deletions

View File

@ -52,6 +52,10 @@ def parse_arguments():
'set-server-url', help='Set the value of $wgServer for this server')
server_url.add_argument('server_url', help='value of $wgServer')
site_name = subparsers.add_parser(
'set-site-name', help='Set the value of $wgSitename for this Wiki')
site_name.add_argument('site_name', help='value of $wgSitename')
subparsers.required = True
return parser.parse_args()
@ -253,6 +257,11 @@ def subcommand_set_server_url(arguments):
_update_setting('$wgServer', f'$wgServer = "{arguments.server_url}";\n')
def subcommand_set_site_name(arguments):
"""Set the value of $wgSitename for this MediaWiki server."""
_update_setting('$wgSitename', f'$wgSitename = "{arguments.site_name}";\n')
def main():
"""Parse arguments and perform all duties."""
arguments = parse_arguments()

View File

@ -166,3 +166,13 @@ def set_server_url(domain):
actions.superuser_run('mediawiki',
['set-server-url', f'{protocol}://{domain}'])
def get_site_name():
"""Return the value of MediaWiki's site name."""
return _get_config_value('$wgSitename') or 'Wiki'
def set_site_name(site_name):
"""Set the value of $wgSitename."""
actions.superuser_run('mediawiki', ['set-site-name', site_name])

View File

@ -45,6 +45,9 @@ $wgDefaultSkin = "timeless";
# Domain Name
$wgServer = "https://freedombox.local";
# Site Name
$wgSitename = "Wiki";
# Enable default extensions
wfLoadExtension( 'Cite' );
wfLoadExtension( 'Interwiki' );

View File

@ -6,6 +6,7 @@ FreedomBox app for configuring MediaWiki.
import pathlib
from django import forms
from django.core import validators
from django.utils.translation import gettext_lazy as _
@ -35,6 +36,11 @@ class MediaWikiForm(forms.Form): # pylint: disable=W0232
'such as in footer, feeds and emails. Examples: '
'"myfreedombox.example.org" or "example.onion".'))
site_name = forms.CharField(
label=_('Site Name'), required=False,
help_text=_('Name of the site as displayed throughout the wiki.'),
validators=[validators.RegexValidator('[$"]', inverse_match=True)])
enable_public_registrations = forms.BooleanField(
label=_('Enable public registrations'), required=False,
help_text=_('If enabled, anyone on the internet will be able to '

View File

@ -66,3 +66,11 @@ def test_server_url():
new_domain = 'mydomain.freedombox.rocks'
mediawiki.set_server_url(new_domain)
assert mediawiki.get_server_url() == new_domain
def test_site_name():
"""Test getting and setting $wgSitename."""
assert mediawiki.get_site_name() == 'Wiki'
new_site_name = 'My MediaWiki'
mediawiki.set_site_name(new_site_name)
assert mediawiki.get_site_name() == new_site_name

View File

@ -12,8 +12,8 @@ from plinth import actions, views
from plinth.errors import ActionError
from plinth.modules import mediawiki
from . import (get_default_skin, get_server_url, is_private_mode_enabled,
is_public_registration_enabled)
from . import (get_default_skin, get_server_url, get_site_name,
is_private_mode_enabled, is_public_registration_enabled)
from .forms import MediaWikiForm
logger = logging.getLogger(__name__)
@ -32,7 +32,8 @@ class MediaWikiAppView(views.AppView):
'enable_public_registrations': is_public_registration_enabled(),
'enable_private_mode': is_private_mode_enabled(),
'default_skin': get_default_skin(),
'domain': get_server_url()
'domain': get_server_url(),
'site_name': get_site_name()
})
return initial
@ -97,4 +98,8 @@ class MediaWikiAppView(views.AppView):
mediawiki.set_server_url(new_config['domain'])
messages.success(self.request, _('Domain name updated'))
if is_changed('site_name'):
mediawiki.set_site_name(new_config['site_name'])
messages.success(self.request, _('Site name updated'))
return super().form_valid(form)