diff --git a/aleksis/core/migrations/0037_add_static_content_widget.py b/aleksis/core/migrations/0037_add_static_content_widget.py new file mode 100644 index 0000000000000000000000000000000000000000..bb4e810a614c1357243bdda4c5ac42b7f844058a --- /dev/null +++ b/aleksis/core/migrations/0037_add_static_content_widget.py @@ -0,0 +1,27 @@ +# Generated by Django 3.2.12 on 2022-02-23 18:03 + +import ckeditor.fields +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0036_additionalfields_helptext_required'), + ] + + operations = [ + migrations.CreateModel( + name='StaticContentWidget', + fields=[ + ('dashboardwidget_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.dashboardwidget')), + ('content', ckeditor.fields.RichTextField(verbose_name='Content')), + ], + options={ + 'verbose_name': 'Static content widget', + 'verbose_name_plural': 'Static content widgets', + }, + bases=('core.dashboardwidget',), + ), + ] diff --git a/aleksis/core/models.py b/aleksis/core/models.py index 07fdaca69b7551e26078365a8f4e583dd5d02120..03ea0320f11220dc2c392188d1bf3b7807dfeffd 100644 --- a/aleksis/core/models.py +++ b/aleksis/core/models.py @@ -29,6 +29,7 @@ import customidenticon import jsonstore from cachalot.api import cachalot_disabled from cache_memoize import cache_memoize +from ckeditor.fields import RichTextField from django_celery_results.models import TaskResult from django_cte import CTEQuerySet, With from dynamic_preferences.models import PerInstancePreferenceModel @@ -988,6 +989,19 @@ class ExternalLinkWidget(DashboardWidget): verbose_name_plural = _("External link widgets") +class StaticContentWidget(DashboardWidget): + template = "core/dashboard_widget/static_content_widget.html" + + content = RichTextField(verbose_name=_("Content")) + + def get_context(self, request): + return {"title": self.title, "content": self.content} + + class Meta: + verbose_name = _("Static content widget") + verbose_name_plural = _("Static content widgets") + + class DashboardWidgetOrder(ExtensibleModel): widget = models.ForeignKey( DashboardWidget, on_delete=models.CASCADE, verbose_name=_("Dashboard widget") diff --git a/aleksis/core/templates/core/dashboard_widget/static_content_widget.html b/aleksis/core/templates/core/dashboard_widget/static_content_widget.html new file mode 100644 index 0000000000000000000000000000000000000000..96e5549d5890e4cc95dbe6b4a843f1b1612c5d7f --- /dev/null +++ b/aleksis/core/templates/core/dashboard_widget/static_content_widget.html @@ -0,0 +1,10 @@ +{% load html_helpers %} + +<div class="card" style="padding: 2em"> + <div class="card-title"> + {{ title }} + </div> + <div class="card-text"> + {{ content|add_class_to_el:"ul, browser-default"|safe }} + </div> +</div>