diff --git a/functional_tests/features/wiki_engine.feature b/functional_tests/features/wiki_engine.feature index d79e380cd..a3a29a580 100644 --- a/functional_tests/features/wiki_engine.feature +++ b/functional_tests/features/wiki_engine.feature @@ -53,3 +53,16 @@ Scenario: Disable private mode Given the mediawiki application is enabled When I disable mediawiki private mode Then the mediawiki site should allow anonymous reads and writes + +Scenario: Enabling private mode disables public registrations + Given the mediawiki application is enabled + When I enable mediawiki public registrations + And I enable mediawiki private mode + Then the mediawiki site should not allow creating accounts + +# Requires JS +Scenario: Enabling public registrations disables private mode + Given the mediawiki application is enabled + When I enable mediawiki private mode + And I enable mediawiki public registrations + Then the mediawiki site should allow creating accounts diff --git a/plinth/modules/mediawiki/templates/mediawiki.html b/plinth/modules/mediawiki/templates/mediawiki.html new file mode 100644 index 000000000..e8481261b --- /dev/null +++ b/plinth/modules/mediawiki/templates/mediawiki.html @@ -0,0 +1,41 @@ +{% extends "service.html" %} +{% comment %} +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +{% endcomment %} + +{% load i18n %} + +{% block page_js %} + +{% endblock %} diff --git a/plinth/modules/mediawiki/views.py b/plinth/modules/mediawiki/views.py index dcf2c21f8..bb431e9ec 100644 --- a/plinth/modules/mediawiki/views.py +++ b/plinth/modules/mediawiki/views.py @@ -23,10 +23,11 @@ import logging from django.contrib import messages from django.utils.translation import ugettext as _ -from plinth import actions, views, frontpage +from plinth import actions, views from plinth.modules import mediawiki -from . import is_public_registration_enabled, is_private_mode_enabled, is_enabled, add_shortcut +from . import (add_shortcut, is_enabled, is_private_mode_enabled, + is_public_registration_enabled) from .forms import MediaWikiForm logger = logging.getLogger(__name__) @@ -41,6 +42,7 @@ class MediaWikiServiceView(views.ServiceView): form_class = MediaWikiForm manual_page = mediawiki.manual_page show_status_block = False + template_name = 'mediawiki.html' def get_initial(self): """Return the values to fill in the form.""" @@ -82,10 +84,15 @@ class MediaWikiServiceView(views.ServiceView): if not pub_reg_same: # note action public-registration restarts, if running now if new_config['enable_public_registrations']: - actions.superuser_run('mediawiki', - ['public-registrations', 'enable']) - messages.success(self.request, - _('Public registrations enabled')) + if not new_config['enable_private_mode']: + actions.superuser_run('mediawiki', + ['public-registrations', 'enable']) + messages.success(self.request, + _('Public registrations enabled')) + else: + messages.warning( + self.request, 'Public registrations ' + + 'cannot be enabled when private mode is enabled') else: actions.superuser_run('mediawiki', ['public-registrations', 'disable']) @@ -94,19 +101,15 @@ class MediaWikiServiceView(views.ServiceView): if not private_mode_same: if new_config['enable_private_mode']: - actions.superuser_run('mediawiki', - ['private-mode', 'enable']) + actions.superuser_run('mediawiki', ['private-mode', 'enable']) if new_config['enable_public_registrations']: # If public registrations are enabled, then disable it actions.superuser_run('mediawiki', ['public-registrations', 'disable']) - messages.success(self.request, - _('Private mode enabled')) + messages.success(self.request, _('Private mode enabled')) else: - actions.superuser_run('mediawiki', - ['private-mode', 'disable']) - messages.success(self.request, - _('Private mode disabled')) + actions.superuser_run('mediawiki', ['private-mode', 'disable']) + messages.success(self.request, _('Private mode disabled')) if is_enabled(): add_shortcut() return super().form_valid(form)