diff --git a/plinth/modules/mediawiki/__init__.py b/plinth/modules/mediawiki/__init__.py
index 5dd860795..f2215ab09 100644
--- a/plinth/modules/mediawiki/__init__.py
+++ b/plinth/modules/mediawiki/__init__.py
@@ -157,7 +157,11 @@ def get_server_url():
return urlparse(server_url).netloc
-def set_server_url(server_url):
+def set_server_url(domain):
"""Set the value of $wgServer."""
+ protocol = 'https'
+ if domain.endswith('.onion'):
+ protocol = 'http'
+
actions.superuser_run('mediawiki',
- ['set-server-url', f'https://{server_url}'])
+ ['set-server-url', f'{protocol}://{domain}'])
diff --git a/plinth/modules/mediawiki/forms.py b/plinth/modules/mediawiki/forms.py
index eac74de63..b672865a8 100644
--- a/plinth/modules/mediawiki/forms.py
+++ b/plinth/modules/mediawiki/forms.py
@@ -6,8 +6,6 @@ FreedomBox app for configuring MediaWiki.
import pathlib
from django import forms
-from django.forms import Widget
-from django.utils.safestring import mark_safe
from django.utils.translation import gettext_lazy as _
@@ -21,31 +19,6 @@ def get_skins():
if skin.is_dir()]
-class PrependWidget(Widget):
- """Widget to create input-groups with prepended text."""
-
- def __init__(self, base_widget, data, *args, **kwargs):
- """Initialize widget and get base instance"""
- super(PrependWidget, self).__init__(*args, **kwargs)
- self.base_widget = base_widget(*args, **kwargs)
- self.data = data
-
- def render(self, name, value, attrs=None, renderer=None):
- """Render base widget and add bootstrap spans."""
- attrs['class'] = 'form-control'
- field = self.base_widget.render(name, value, attrs, renderer)
- widget_html = '''
-
-
-
- %(data)s
-
-
- %(field)s
-
'''
- return mark_safe((widget_html) % {'field': field, 'data': self.data})
-
-
class MediaWikiForm(forms.Form): # pylint: disable=W0232
"""MediaWiki configuration form."""
password = forms.CharField(
@@ -56,11 +29,11 @@ class MediaWikiForm(forms.Form): # pylint: disable=W0232
'Leave this field blank to keep the current password.'),
required=False, widget=forms.PasswordInput, min_length=10)
- server_url = forms.CharField(
- label=_('Server URL'), required=False, help_text=_(
+ domain = forms.CharField(
+ label=_('Domain'), required=False, help_text=_(
'Used by MediaWiki to generate URLs that point to the wiki '
- 'such as in footer, feeds and emails.'),
- widget=PrependWidget(base_widget=forms.TextInput, data='https://'))
+ 'such as in footer, feeds and emails. Examples: '
+ '"myfreedombox.example.org" or "example.onion".'))
enable_public_registrations = forms.BooleanField(
label=_('Enable public registrations'), required=False,
diff --git a/plinth/modules/mediawiki/tests/test_functional.py b/plinth/modules/mediawiki/tests/test_functional.py
index 4382176eb..768521950 100644
--- a/plinth/modules/mediawiki/tests/test_functional.py
+++ b/plinth/modules/mediawiki/tests/test_functional.py
@@ -6,8 +6,9 @@ Functional, browser based tests for mediawiki app.
import pathlib
from urllib.parse import urlparse
-import requests
import pytest
+import requests
+
from plinth.tests import functional
from plinth.tests.functional import config
@@ -24,7 +25,7 @@ class TestMediawikiApp(functional.BaseAppTests):
"""Setup the app."""
functional.login(session_browser)
functional.install(session_browser, 'mediawiki')
- _set_server_url(session_browser)
+ _set_domain(session_browser)
def test_public_registrations(self, session_browser):
"""Test enabling public registrations."""
@@ -241,9 +242,9 @@ def __has_main_page(browser):
return 'This page has been deleted.' not in content.text
-def _set_server_url(browser):
- """Set the value of server url to the value in the given env_var."""
+def _set_domain(browser):
+ """Set the value of domain to the value in the given env_var."""
functional.nav_to_module(browser, 'mediawiki')
- server_url = urlparse(config['DEFAULT']['url']).netloc
- browser.find_by_id('id_server_url').fill(server_url)
+ domain = urlparse(config['DEFAULT']['url']).netloc
+ browser.find_by_id('id_domain').fill(domain)
functional.submit(browser, form_class='form-configuration')
diff --git a/plinth/modules/mediawiki/tests/test_settings.py b/plinth/modules/mediawiki/tests/test_settings.py
index e5db63689..3ffc87b18 100644
--- a/plinth/modules/mediawiki/tests/test_settings.py
+++ b/plinth/modules/mediawiki/tests/test_settings.py
@@ -63,6 +63,6 @@ def test_default_skin():
def test_server_url():
"""Test getting and setting $wgServer."""
assert mediawiki.get_server_url() == 'freedombox.local'
- new_server_url = 'mydomain.freedombox.rocks'
- mediawiki.set_server_url(new_server_url)
- assert mediawiki.get_server_url() == new_server_url
+ new_domain = 'mydomain.freedombox.rocks'
+ mediawiki.set_server_url(new_domain)
+ assert mediawiki.get_server_url() == new_domain
diff --git a/plinth/modules/mediawiki/views.py b/plinth/modules/mediawiki/views.py
index 44401433b..e6f2203b6 100644
--- a/plinth/modules/mediawiki/views.py
+++ b/plinth/modules/mediawiki/views.py
@@ -32,7 +32,7 @@ class MediaWikiAppView(views.AppView):
'enable_public_registrations': is_public_registration_enabled(),
'enable_private_mode': is_private_mode_enabled(),
'default_skin': get_default_skin(),
- 'server_url': get_server_url()
+ 'domain': get_server_url()
})
return initial
@@ -93,8 +93,8 @@ class MediaWikiAppView(views.AppView):
mediawiki.set_default_skin(new_config['default_skin'])
messages.success(self.request, _('Default skin changed'))
- if is_changed('server_url'):
- mediawiki.set_server_url(new_config['server_url'])
- messages.success(self.request, _('Server URL updated'))
+ if is_changed('domain'):
+ mediawiki.set_server_url(new_config['domain'])
+ messages.success(self.request, _('Domain name updated'))
return super().form_valid(form)