--- /dev/null
+# chloro - personal space
+# Copyright (C) 2019 Frederic Peters
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+
+import ckeditor.fields
+
+
+class RichTextField(ckeditor.fields.RichTextField):
+ def formfield(self, **kwargs):
+ defaults = {
+ 'form_class': RichTextFormField,
+ 'config_name': self.config_name,
+ 'extra_plugins': self.extra_plugins,
+ 'external_plugin_resources': self.external_plugin_resources,
+ }
+ defaults.update(kwargs)
+ return super(RichTextField, self).formfield(**defaults)
+
+
+class RichTextFormField(ckeditor.fields.RichTextFormField):
+ def clean(self, value):
+ value = super(RichTextFormField, self).clean(value)
+ if settings.LANGUAGE_CODE.startswith('fr-'):
+ # apply some basic typographic rules
+ value = value.replace('« ', '«\u202f')
+ value = value.replace('« ', '«\u202f')
+ value = value.replace(' »', '\u202f»')
+ value = value.replace(' »', '\u202f»')
+ value = value.replace(' :', '\u00a0:')
+ value = value.replace(' ;', '\u202f;')
+ value = value.replace(' !', '\u202f!')
+ value = value.replace(' ?', '\u202f?')
+ return value