diff --git a/aircox_web/admin.py b/aircox_web/admin.py
index 2d1c68b..bc47fcd 100644
--- a/aircox_web/admin.py
+++ b/aircox_web/admin.py
@@ -13,9 +13,12 @@ from aircox.admin.playlist import TracksInline
from aircox.admin.mixins import UnrelatedInlineMixin
-@admin.register(models.SiteSettings)
-class SettingsAdmin(admin.ModelAdmin):
- pass
+@admin.register(models.Site)
+class SiteAdmin(ContentEditor):
+ inlines = [
+ plugins.richtext.RichTextInline.create(models.SiteRichText),
+ plugins.image.ImageInline.create(models.SiteImage),
+ ]
class PageDiffusionPlaylist(UnrelatedInlineMixin, TracksInline):
@@ -55,8 +58,8 @@ class PageAdmin(ContentEditor, TreeAdmin):
)
inlines = [
- plugins.richtext.RichTextInline.create(models.RichText),
- plugins.image.ImageInline.create(models.Image),
+ plugins.richtext.RichTextInline.create(models.PageRichText),
+ plugins.image.ImageInline.create(models.PageImage),
]
def get_inline_instances(self, request, obj=None):
diff --git a/aircox_web/assets/index.js b/aircox_web/assets/index.js
index 54a2de9..089d9c1 100644
--- a/aircox_web/assets/index.js
+++ b/aircox_web/assets/index.js
@@ -1 +1,2 @@
import './js';
+
diff --git a/aircox_web/models.py b/aircox_web/models.py
index 9f5f947..376f969 100644
--- a/aircox_web/models.py
+++ b/aircox_web/models.py
@@ -10,11 +10,10 @@ from model_utils.models import TimeStampedModel, StatusModel
from model_utils import Choices
from filer.fields.image import FilerImageField
-
from aircox import models as aircox
-class SiteSettings(models.Model):
+class Site(models.Model):
station = models.ForeignKey(
aircox.Station, on_delete=models.SET_NULL, null=True,
)
@@ -45,16 +44,29 @@ class SiteSettings(models.Model):
blank=True, null=True,
)
+ regions = [
+ Region(key='topnav', title=_('Navigation'), inherited=True),
+ Region(key='sidenav', title=_('Side Navigation'), inherited=True),
+ ]
+
+
+SitePlugin = create_plugin_base(Site)
+
+class SiteRichText(plugins.richtext.RichText, SitePlugin):
+ pass
+
+
+class SiteImage(plugins.image.Image, SitePlugin):
+ caption = models.CharField(_("caption"), max_length=200, blank=True)
+
class Page(AbstractPage, TimeStampedModel, StatusModel):
STATUS = Choices('draft', 'published')
regions = [
Region(key="main", title=_("Content")),
- Region(key="sidebar", title=_("Sidebar")),
]
-
# metadata
by = models.ForeignKey(
auth.User, models.SET_NULL, blank=True, null=True,
@@ -96,22 +108,20 @@ class Page(AbstractPage, TimeStampedModel, StatusModel):
aircox.Diffusion, models.CASCADE,
blank=True, null=True,
)
+ program = models.OneToOneField(
+ aircox.Program, models.CASCADE,
+ blank=True, null=True,
+ )
+
PagePlugin = create_plugin_base(Page)
-
-class RichText(plugins.richtext.RichText, PagePlugin):
+class PageRichText(plugins.richtext.RichText, PagePlugin):
pass
-class Image(plugins.image.Image, PagePlugin):
+class PageImage(plugins.image.Image, PagePlugin):
caption = models.CharField(_("caption"), max_length=200, blank=True)
-class ProgramPage(Page):
- program = models.OneToOneField(
- aircox.Program, models.CASCADE,
- )
-
-
diff --git a/aircox_web/renderer.py b/aircox_web/renderer.py
index 19fcaba..235a9c2 100644
--- a/aircox_web/renderer.py
+++ b/aircox_web/renderer.py
@@ -1,16 +1,31 @@
from django.utils.html import format_html, mark_safe
from feincms3.renderer import TemplatePluginRenderer
-from .models import Page, RichText, Image
+from .models import *
-renderer = TemplatePluginRenderer()
-renderer.register_string_renderer(
- RichText,
+site_renderer = TemplatePluginRenderer()
+site_renderer.register_string_renderer(
+ SiteRichText,
lambda plugin: mark_safe(plugin.text),
)
-renderer.register_string_renderer(
- Image,
+site_renderer.register_string_renderer(
+ SiteImage,
+ lambda plugin: format_html(
+ '