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