Selaa lähdekoodia

Añado un mejor editor

Celestino Rey 5 kuukautta sitten
vanhempi
sitoutus
12aed0dec6

+ 16 - 0
doc_generator/settings.py

@@ -37,6 +37,8 @@ INSTALLED_APPS = [
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
+    
+    'tinymce',  # For rich text editing
     'textdocs',
 ]
 
@@ -122,3 +124,17 @@ STATIC_URL = 'static/'
 # https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field
 
 DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
+# doc_generator/settings.py (at the end of the file)
+
+TINYMCE_DEFAULT_CONFIG = {
+    "height": "320px",
+    "width": "100%",
+    "menubar": "file edit view insert format tools table help",
+    "plugins": "advlist autolink lists link image charmap print preview anchor searchreplace visualblocks code "
+               "fullscreen insertdatetime media table paste code help wordcount",
+    "toolbar": "undo redo | bold italic underline strikethrough | fontselect fontsizeselect formatselect | alignleft "
+               "aligncenter alignright alignjustify | outdent indent |  numlist bullist | forecolor "
+               "backcolor removeformat | pagebreak | charmap emoticons | fullscreen  preview save print | "
+               "insertfile image media template link anchor codesample | ltr rtl",
+    "custom_undo_redo_levels": 10,
+}

+ 2 - 0
doc_generator/urls.py

@@ -19,5 +19,7 @@ from django.urls import path, include
 
 urlpatterns = [
     path('admin/', admin.site.urls),
+    path('tinymce/', include('tinymce.urls')),  # For TinyMCE editor
+
     path('', include('textdocs.urls')),
 ]

+ 3 - 3
templates/textdocs/document_detail.html

@@ -12,13 +12,13 @@
         </div>
         <div class="card-body">
             <h4 class="card-title">Introduction</h4>
-            <p class="card-text">{{ document.introduction|linebreaks }}</p>
+            <div>{{ document.introduction|safe }}</div> <!-- UPDATED -->
             <hr>
             <h4 class="card-title">Main Body</h4>
-            <p class="card-text">{{ document.main_body|linebreaks }}</p>
+            <div>{{ document.main_body|safe }}</div> <!-- UPDATED -->
             <hr>
             <h4 class="card-title">Conclusion</h4>
-            <p class="card-text">{{ document.conclusion|linebreaks }}</p>
+            <div>{{ document.conclusion|safe }}</div> <!-- UPDATED -->
         </div>
     </div>
 {% endblock %}

+ 3 - 3
templates/textdocs/document_pdf.html

@@ -42,12 +42,12 @@
     <h1>{{ document.title }}</h1>
 
     <h2>Introduction</h2>
-    <p>{{ document.introduction|linebreaks }}</p>
+    <p>{{ document.introduction|safe }}</p>
 
     <h2>Main Body</h2>
-    <p>{{ document.main_body|linebreaks }}</p>
+    <p>{{ document.main_body|safe }}</p>
 
     <h2>Conclusion</h2>
-    <p>{{ document.conclusion|linebreaks }}</p>
+    <p>{{ document.conclusion|safe }}</p>
 </body>
 </html>

+ 6 - 3
textdocs/forms.py

@@ -1,14 +1,17 @@
 # textdocs/forms.py
 from django import forms
 from .models import Document
+from tinymce.widgets import TinyMCE # <-- Import the TinyMCE widget
 
 class DocumentForm(forms.ModelForm):
     class Meta:
         model = Document
         fields = ['title', 'introduction', 'main_body', 'conclusion']
+        
+        # Use the TinyMCE widget for our text fields
         widgets = {
             'title': forms.TextInput(attrs={'class': 'form-control'}),
-            'introduction': forms.Textarea(attrs={'class': 'form-control', 'rows': 5}),
-            'main_body': forms.Textarea(attrs={'class': 'form-control', 'rows': 10}),
-            'conclusion': forms.Textarea(attrs={'class': 'form-control', 'rows': 5}),
+            'introduction': TinyMCE(attrs={'cols': 80, 'rows': 10}),
+            'main_body': TinyMCE(attrs={'cols': 80, 'rows': 20}),
+            'conclusion': TinyMCE(attrs={'cols': 80, 'rows': 10}),
         }