Przeglądaj źródła

Trumbowyg → TinyMCE

Laurent Hazart 1 miesiąc temu
rodzic
commit
e3d336709f
6 zmienionych plików z 95 dodań i 8 usunięć
  1. 55 0
      MIGRATION_TINYMCE.md
  2. 3 3
      blog/models.py
  3. 4 2
      core/models.py
  4. 31 1
      duhaz_blog/settings.py
  5. 1 1
      duhaz_blog/urls.py
  6. 1 1
      requirements.txt

+ 55 - 0
MIGRATION_TINYMCE.md

@@ -0,0 +1,55 @@
+# 🔄 Migration Trumbowyg → TinyMCE
+
+## ✅ Changements Effectués
+
+### 1. Requirements
+- ❌ `django-trumbowyg>=1.2` (incompatible Django 5.1)
+- ✅ `django-tinymce>=4.0` (compatible Django 5.1)
+
+### 2. Settings (duhaz_blog/settings.py)
+- Remplacé `'trumbowyg'` par `'tinymce'` dans INSTALLED_APPS
+- Ajouté configuration TINYMCE_DEFAULT_CONFIG
+
+### 3. URLs (duhaz_blog/urls.py)
+- Remplacé `path('trumbowyg/', ...)` par `path('tinymce/', ...)`
+
+### 4. Models
+- **blog/models.py** : `TrumbowygWidget()` → `TinyMCE()`
+- **core/models.py** : `TrumbowygWidget()` → `TinyMCE()`
+
+## 🚀 Installation
+
+```bash
+# Supprimer l'ancien venv si existant
+rm -rf venv
+
+# Réinstaller avec Django 5.1 + TinyMCE
+bash install.sh
+```
+
+## 📝 Utilisation
+
+L'éditeur TinyMCE apparaîtra automatiquement dans l'admin Django pour les champs :
+- Blog : `b_contenu` et `b_right`
+- Page : `p_contenu` et `p_right`
+
+## ⚠️ Différences avec Trumbowyg
+
+| Aspect | Trumbowyg | TinyMCE |
+|--------|-----------|---------|
+| Taille | Léger (~20KB) | Plus lourd (~500KB) |
+| Fonctionnalités | Basiques | Avancées |
+| Plugins | Limités | Nombreux |
+| Support | Limité | Excellent |
+| Django 5.1 | ❌ Non | ✅ Oui |
+
+## 🎨 Personnalisation
+
+Modifiez `TINYMCE_DEFAULT_CONFIG` dans `settings.py` pour :
+- Changer la hauteur de l'éditeur
+- Ajouter/retirer des plugins
+- Personnaliser la barre d'outils
+
+## ✅ Prêt !
+
+Votre blog utilise maintenant TinyMCE, compatible Django 5.1 LTS.

+ 3 - 3
blog/models.py

@@ -3,7 +3,7 @@ from django import forms
 
 from django.template.defaultfilters import slugify
 
-from trumbowyg.widgets import TrumbowygWidget
+from tinymce.widgets import TinyMCE  # Remplace TrumbowygWidget
 
 class Cat_Blog(models.Model) :
 	cb_titre = models.CharField("Titre", max_length = 128, unique = True)
@@ -54,6 +54,6 @@ class Blog_Admin_Form(forms.ModelForm):
 		model = Blog
 		exclude = ['b_titre_slugify','b_reading']
 		widgets = {
-			'b_contenu': TrumbowygWidget(),
-			'b_right': TrumbowygWidget(),
+			'b_contenu': TinyMCE(),  # Remplace TrumbowygWidget
+			'b_right': TinyMCE(),
 			}

+ 4 - 2
core/models.py

@@ -3,7 +3,7 @@ from django import forms
 
 from django.template.defaultfilters import slugify
 
-from trumbowyg.widgets import TrumbowygWidget
+from tinymce.widgets import TinyMCE  # Remplace TrumbowygWidget
 
 menu_pos = (
 	(u'no', u'No'),
@@ -172,7 +172,9 @@ class Page_Admin_Form(forms.ModelForm):
 		model = Page
 		exclude = ['p_titre_slugify']
 		widgets = {
-			'p_contenu': TrumbowygWidget(),
+			'p_contenu': TinyMCE(),  # Remplace TrumbowygWidget
+			'p_right': TinyMCE(),
+			}
 			'p_right': TrumbowygWidget(),
 			}
 

+ 31 - 1
duhaz_blog/settings.py

@@ -41,7 +41,7 @@ INSTALLED_APPS = [
 	'django.contrib.sessions',
 	'django.contrib.messages',
 	'django.contrib.staticfiles',
-	'trumbowyg',
+	'tinymce',  # Remplace trumbowyg
 	'import_export',
 	'crispy_forms',
 	'core',
@@ -150,3 +150,33 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
 # SECURE_BROWSER_XSS_FILTER = True
 # SECURE_CONTENT_TYPE_NOSNIFF = True
 # X_FRAME_OPTIONS = 'DENY'
+
+# TinyMCE Configuration
+TINYMCE_DEFAULT_CONFIG = {
+    'height': 500,
+    'width': '100%',
+    'cleanup_on_startup': True,
+    'custom_undo_redo_levels': 20,
+    'selector': 'textarea',
+    'theme': 'silver',
+    'plugins': '''
+            textcolor save link image media preview codesample contextmenu
+            table code lists fullscreen insertdatetime nonbreaking
+            contextmenu directionality searchreplace wordcount visualblocks
+            visualchars code fullscreen autolink lists charmap print hr
+            anchor pagebreak
+            ''',
+    'toolbar1': '''
+            fullscreen preview bold italic underline | fontselect,
+            fontsizeselect | forecolor backcolor | alignleft alignright |
+            aligncenter alignjustify | indent outdent | bullist numlist table |
+            | link image media | codesample |
+            ''',
+    'toolbar2': '''
+            visualblocks visualchars |
+            charmap hr pagebreak nonbreaking anchor | code |
+            ''',
+    'contextmenu': 'formats | link image',
+    'menubar': True,
+    'statusbar': True,
+}

+ 1 - 1
duhaz_blog/urls.py

@@ -8,7 +8,7 @@ from django.views.generic.base import RedirectView
 from core import views as core
 
 urlpatterns = [
-	path('trumbowyg/', include('trumbowyg.urls')),
+	path('tinymce/', include('tinymce.urls')),  # Remplace trumbowyg
 	path('admin/', admin.site.urls),
 
 	path('favicon.ico', RedirectView.as_view(url = '/static/favicon.ico')),

+ 1 - 1
requirements.txt

@@ -12,7 +12,7 @@ django-crispy-forms>=2.1
 crispy-bootstrap4>=2.0
 
 # Rich text editor
-django-trumbowyg>=1.2
+django-tinymce>=4.0  # Compatible Django 5.1
 
 # Import/Export
 django-import-export>=3.3