From 6e4d33ac62396336045cc403e8fcba1ad548fb70 Mon Sep 17 00:00:00 2001 From: SaJH Date: Sat, 3 May 2025 19:01:13 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20Section=20body=20=EB=B6=80=EB=B6=84=20n?= =?UTF-8?q?ojs=20preview=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: SaJH --- app/cms/admin.py | 158 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 app/cms/admin.py diff --git a/app/cms/admin.py b/app/cms/admin.py new file mode 100644 index 0000000..9f8f039 --- /dev/null +++ b/app/cms/admin.py @@ -0,0 +1,158 @@ +from cms.models import Page, Section, Sitemap +from django import forms +from django.contrib import admin +from django.utils.html import format_html + +_CODE_PREVIEW_TEMPLATE = """ + + +
+
+ + + + + +
+ {ta} +
+
+ +
+
+""" + + +class CodeEditorWidget(forms.Textarea): + class Media: + css = { + "all": ( + "https://unpkg.com/codemirror@5.65.5/lib/codemirror.css", + "https://unpkg.com/codemirror@5.65.5/theme/dracula.css", + ) + } + js = ( + "https://unpkg.com/codemirror@5.65.5/lib/codemirror.js", + "https://unpkg.com/codemirror@5.65.5/mode/javascript/javascript.js", + "https://unpkg.com/@babel/standalone/babel.min.js", + "/static/admin/js/editor.js", + ) + + def render(self, name, value, attrs=None, renderer=None): + ta = super().render(name, value, attrs, renderer) + return format_html(_CODE_PREVIEW_TEMPLATE, name=name, ta=ta) + + +class SectionAdminForm(forms.ModelForm): + class Meta: + model = Section + fields = "__all__" + widgets = {"body": CodeEditorWidget()} + + +@admin.register(Section) +class SectionAdmin(admin.ModelAdmin): + form = SectionAdminForm + + +admin.site.register(Page) +admin.site.register(Sitemap)