diff --git a/.gitignore b/.gitignore
index d53fad5..34cade9 100755
--- a/.gitignore
+++ b/.gitignore
@@ -41,3 +41,9 @@ _build
# vim
*~
*.swp
+
+# vscode
+.vscode
+
+# pyenv
+.python-version
diff --git a/wagtail_modeltranslation/static/wagtail_modeltranslation/js/wagtail_translated_slugs.js b/wagtail_modeltranslation/static/wagtail_modeltranslation/js/wagtail_translated_slugs.js
index 80c8e1a..64a68aa 100644
--- a/wagtail_modeltranslation/static/wagtail_modeltranslation/js/wagtail_translated_slugs.js
+++ b/wagtail_modeltranslation/static/wagtail_modeltranslation/js/wagtail_translated_slugs.js
@@ -1,23 +1,36 @@
$(document).ready(function () {
/* Only non-live pages should auto-populate the slug from the title */
if (!$('body').hasClass('page-is-live')) {
- var slugFollowsTitle = false;
-
- $.each(langs, function (idx, lang_code) {
- lang_code = lang_code.replace("-", "_");
- $('#id_title_' + lang_code).on('focus', function () {
- /* slug should only follow the title field if its value matched the title's value at the time of focus */
- var currentSlug = $('#id_slug_' + lang_code).val();
- var slugifiedTitle = cleanForSlug(this.value, true);
- slugFollowsTitle = (currentSlug == slugifiedTitle);
+ if(!translate_slugs) {
+ lang_code = default_lang.replace("-", "_");
+ title_selector = '#id_title_' + lang_code;
+ slug_selector = '#id_slug';
+ slugAutoPopulateTranslation(title_selector, slug_selector);
+ } else {
+ $.each(langs, function (idx, lang_code) {
+ lang_code = lang_code.replace("-", "_");
+ title_selector = '#id_title_' + lang_code;
+ slug_selector = '#id_slug_' + lang_code;
+ slugAutoPopulateTranslation(title_selector, slug_selector);
});
-
- $('#id_title_' + lang_code).on('keyup keydown keypress blur', function () {
- if (slugFollowsTitle) {
- var slugifiedTitle = cleanForSlug(this.value, true);
- $('#id_slug_' + lang_code).val(slugifiedTitle);
- }
- });
- });
+ }
}
});
+
+function slugAutoPopulateTranslation(title_selector, slug_selector) {
+ var slugFollowsTitle = false;
+
+ $(title_selector).on('focus', function () {
+ /* slug should only follow the title field if its value matched the title's value at the time of focus */
+ var currentSlug = $(slug_selector).val();
+ var slugifiedTitle = cleanForSlug(this.value, true);
+ slugFollowsTitle = (currentSlug == slugifiedTitle);
+ });
+
+ $(title_selector).on('keyup keydown keypress blur', function () {
+ if (slugFollowsTitle) {
+ var slugifiedTitle = cleanForSlug(this.value, true);
+ $(slug_selector).val(slugifiedTitle);
+ }
+ });
+}
diff --git a/wagtail_modeltranslation/wagtail_hooks.py b/wagtail_modeltranslation/wagtail_hooks.py
index 4703d72..b557bc6 100644
--- a/wagtail_modeltranslation/wagtail_hooks.py
+++ b/wagtail_modeltranslation/wagtail_hooks.py
@@ -2,13 +2,16 @@
import json
+from six import iteritems
+
from django.conf import settings
from django.conf.urls import url
-from django.http import HttpResponse
-from django.http import QueryDict
-from django.utils.html import format_html, format_html_join, escape
+from django.http import HttpResponse, QueryDict
+from django.utils.html import escape, format_html, format_html_join
from django.views.decorators.csrf import csrf_exempt
-from six import iteritems
+from wagtail_modeltranslation import settings as wmt_settings
+from modeltranslation import settings as mt_settings
+
try:
from wagtail.core import hooks
from wagtail.core.models import Page
@@ -33,7 +36,17 @@ def translated_slugs():
for lang in settings.LANGUAGES:
lang_codes.append("'%s'" % lang[0])
- js_languages = "" % (", ".join(lang_codes))
+ js_languages = """
+
+ """.format(
+ langs=", ".join(lang_codes),
+ default_lang=mt_settings.DEFAULT_LANGUAGE,
+ translate_slugs='true' if wmt_settings.TRANSLATE_SLUGS else 'false'
+ )
return format_html(js_languages) + js_includes