diff --git a/gulpfile.js/config.js b/gulpfile.js/config.js
index e9c7c2ff42..5c471423ba 100644
--- a/gulpfile.js/config.js
+++ b/gulpfile.js/config.js
@@ -55,6 +55,7 @@ var apps = [
'wagtailstyleguide/scss/styleguide.scss'
],
}),
+ new App('wagtail/contrib/settings'),
];
module.exports = {
diff --git a/wagtail/contrib/settings/.gitignore b/wagtail/contrib/settings/.gitignore
new file mode 100644
index 0000000000..980c85122d
--- /dev/null
+++ b/wagtail/contrib/settings/.gitignore
@@ -0,0 +1 @@
+static/
diff --git a/wagtail/contrib/settings/forms.py b/wagtail/contrib/settings/forms.py
new file mode 100644
index 0000000000..d6cb2e29ba
--- /dev/null
+++ b/wagtail/contrib/settings/forms.py
@@ -0,0 +1,27 @@
+from __future__ import absolute_import, unicode_literals
+
+from django import forms
+from django.core.urlresolvers import reverse
+
+from wagtail.wagtailcore.models import Site
+
+
+class SiteSwitchForm(forms.Form):
+ site = forms.ChoiceField(choices=[])
+
+ class Media:
+ js = [
+ 'settings/js/site-switcher.js',
+ ]
+
+ def __init__(self, current_site, model, **kwargs):
+ initial_data = {'site': self.get_change_url(current_site, model)}
+ super(SiteSwitchForm, self).__init__(initial=initial_data, **kwargs)
+ sites = [(self.get_change_url(site, model), site)
+ for site in Site.objects.all()]
+ self.fields['site'].choices = sites
+
+ @classmethod
+ def get_change_url(cls, site, model):
+ return reverse('wagtailsettings_edit', args=[
+ site.pk, model._meta.app_label, model._meta.model_name])
diff --git a/wagtail/contrib/settings/static_src/settings/js/site-switcher.js b/wagtail/contrib/settings/static_src/settings/js/site-switcher.js
new file mode 100644
index 0000000000..61d302c584
--- /dev/null
+++ b/wagtail/contrib/settings/static_src/settings/js/site-switcher.js
@@ -0,0 +1,12 @@
+$(function() {
+ var $switcher = $('form#settings-site-switch select');
+ if (!$switcher.length) return;
+
+ var initial = $switcher.val();
+ $switcher.on('change', function() {
+ var url = $switcher.val();
+ if (url != initial) {
+ window.location = url;
+ }
+ });
+});
diff --git a/wagtail/contrib/settings/templates/wagtailsettings/edit.html b/wagtail/contrib/settings/templates/wagtailsettings/edit.html
index 5ce65b3cf7..574b16efa0 100644
--- a/wagtail/contrib/settings/templates/wagtailsettings/edit.html
+++ b/wagtail/contrib/settings/templates/wagtailsettings/edit.html
@@ -3,10 +3,30 @@
{% block titletag %}{% blocktrans %}Editing {{ setting_type_name}} - {{ instance }}{% endblocktrans %}{% endblock %}
{% block bodyclass %}menu-settings{% endblock %}
{% block content %}
- {% trans "Editing" as editing_str %}
- {% include "wagtailadmin/shared/header.html" with title=editing_str subtitle=setting_type_name|capfirst icon="cogs" %}
+
+ {% trans "Editing" %}
+ {{ setting_type_name|capfirst }}
+
+