diff --git a/src/agenda_culturel/admin.py b/src/agenda_culturel/admin.py index 302f280..bc1335f 100644 --- a/src/agenda_culturel/admin.py +++ b/src/agenda_culturel/admin.py @@ -1,12 +1,14 @@ from django.contrib import admin from django import forms -from .models import Event, EventSubmissionForm, Category +from .models import Event, EventSubmissionForm, Category, StaticContent from django_better_admin_arrayfield.admin.mixins import DynamicArrayMixin from django_better_admin_arrayfield.forms.widgets import DynamicArrayWidget from django_better_admin_arrayfield.models.fields import DynamicArrayField admin.site.register(EventSubmissionForm) admin.site.register(Category) +admin.site.register(StaticContent) + class URLWidget(DynamicArrayWidget): def __init__(self, *args, **kwargs): diff --git a/src/agenda_culturel/migrations/0012_staticcontent.py b/src/agenda_culturel/migrations/0012_staticcontent.py new file mode 100644 index 0000000..247f7ed --- /dev/null +++ b/src/agenda_culturel/migrations/0012_staticcontent.py @@ -0,0 +1,22 @@ +# Generated by Django 4.2.1 on 2023-11-09 21:35 + +import ckeditor.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('agenda_culturel', '0011_alter_event_category'), + ] + + operations = [ + migrations.CreateModel( + name='StaticContent', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(help_text='Category name', max_length=512, unique=True, verbose_name='Name')), + ('text', ckeditor.fields.RichTextField(help_text='Text as shown to the visitors', verbose_name='Content')), + ], + ), + ] diff --git a/src/agenda_culturel/migrations/0013_staticcontent_url_path.py b/src/agenda_culturel/migrations/0013_staticcontent_url_path.py new file mode 100644 index 0000000..db02d84 --- /dev/null +++ b/src/agenda_culturel/migrations/0013_staticcontent_url_path.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.1 on 2023-11-09 22:05 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('agenda_culturel', '0012_staticcontent'), + ] + + operations = [ + migrations.AddField( + model_name='staticcontent', + name='url_path', + field=models.CharField(default='', help_text='URL path where the content is included.', verbose_name='URL path'), + preserve_default=False, + ), + ] diff --git a/src/agenda_culturel/models.py b/src/agenda_culturel/models.py index 5214365..8668ab2 100644 --- a/src/agenda_culturel/models.py +++ b/src/agenda_culturel/models.py @@ -4,11 +4,25 @@ from django.utils.translation import gettext_lazy as _ from django.template.defaultfilters import slugify # new from django.urls import reverse from colorfield.fields import ColorField +from ckeditor.fields import RichTextField + from django.template.defaultfilters import date as _date from datetime import datetime +class StaticContent(models.Model): + + name = models.CharField(verbose_name=_('Name'), help_text=_('Category name'), max_length=512, unique=True) + text = RichTextField(verbose_name=_('Content'), help_text=_('Text as shown to the visitors')) + url_path = models.CharField(verbose_name=_('URL path'), help_text=_('URL path where the content is included.')) + + def __str__(self): + return self.name + + def get_absolute_url(self): + return self.url_path + class Category(models.Model): default_name = "Sans catégorie" diff --git a/src/agenda_culturel/settings/base.py b/src/agenda_culturel/settings/base.py index dcca4d4..17ae87a 100644 --- a/src/agenda_culturel/settings/base.py +++ b/src/agenda_culturel/settings/base.py @@ -42,6 +42,7 @@ INSTALLED_APPS = [ 'django_better_admin_arrayfield', 'django_filters', 'compressor', + 'ckeditor', ] MIDDLEWARE = [ diff --git a/src/agenda_culturel/static/style.scss b/src/agenda_culturel/static/style.scss index a91fa79..72262dc 100644 --- a/src/agenda_culturel/static/style.scss +++ b/src/agenda_culturel/static/style.scss @@ -301,4 +301,19 @@ article#filters { .helptext { font-size: 80%; opacity: 0.7; +} + +.django-ckeditor-widget { + width: 100%; +} + +.cke_editable { + font-size: 13px; + line-height: 1.6; + background-color: #1C1C1C !important; + word-wrap: break-word; +} + +.slide-buttons { + float: right; } \ No newline at end of file diff --git a/src/agenda_culturel/templates/agenda_culturel/event_create_form.html b/src/agenda_culturel/templates/agenda_culturel/event_create_form.html index eea2fb2..dc2a410 100644 --- a/src/agenda_culturel/templates/agenda_culturel/event_create_form.html +++ b/src/agenda_culturel/templates/agenda_culturel/event_create_form.html @@ -14,6 +14,11 @@