CodeMirror widget, CSS/HTML fields

pull/318/head
Piero Toffanin 2017-11-06 17:43:47 -05:00
rodzic b255fa8d6e
commit 913dccb8cf
8 zmienionych plików z 52 dodań i 4 usunięć

Wyświetl plik

@ -3,6 +3,8 @@ from guardian.admin import GuardedModelAdmin
from app.models import Preset
from .models import Project, Task, ImageUpload, Setting, Theme
from django import forms
from codemirror2.widgets import CodeMirrorEditor
admin.site.register(Project, GuardedModelAdmin)
@ -19,10 +21,40 @@ admin.site.register(Preset, admin.ModelAdmin)
class SettingAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
# if there's already an entry, do not allow adding
count = Setting.objects.all().count()
return count == 0
admin.site.register(Setting, SettingAdmin)
admin.site.register(Theme, admin.ModelAdmin)
class ThemeModelForm(forms.ModelForm):
css = forms.CharField(help_text="Enter custom CSS",
required=False,
widget=CodeMirrorEditor(options={'mode': 'css', 'lineNumbers': True}))
html_before_header = forms.CharField(help_text="HTML that will be displayed above site header",
required=False,
widget=CodeMirrorEditor(options={'mode': 'xml', 'lineNumbers': True}))
html_after_header = forms.CharField(help_text="HTML that will be displayed after site header",
required=False,
widget=CodeMirrorEditor(options={'mode': 'xml', 'lineNumbers': True}))
html_after_body = forms.CharField(help_text="HTML that will be displayed after the </body> tag",
required=False,
widget=CodeMirrorEditor(options={'mode': 'xml', 'lineNumbers': True}))
html_footer = forms.CharField(help_text="HTML that will be displayed in the footer",
required=False,
widget=CodeMirrorEditor(options={'mode': 'xml', 'lineNumbers': True}))
class Meta:
model = Theme
fields = '__all__'
class ThemeAdmin(admin.ModelAdmin):
#list_display = ('id', 'description_en', 'description_ua', 'description_ru')
form = ThemeModelForm
admin.site.register(Theme, ThemeAdmin)

Wyświetl plik

@ -71,8 +71,8 @@ def boot():
Preset.objects.get_or_create(name='Default', system=True, options=[{'name': 'dsm', 'value': True}])
# Add settings
Setting.objects.all().delete()
Theme.objects.all().delete()
# Setting.objects.all().delete()
# Theme.objects.all().delete()
default_theme, created = Theme.objects.get_or_create(name='Default')
if created:

Wyświetl plik

@ -1,8 +1,10 @@
import logging
from codemirror2.widgets import CodeMirrorEditor
from django.db import models
from colorfield.fields import ColorField
logger = logging.getLogger('app.logger')
class Theme(models.Model):
@ -26,6 +28,12 @@ class Theme(models.Model):
failed = ColorField(default='#ffcbcb', help_text="The background color of failed notifications.")
success = ColorField(default='#cbffcd', help_text="The background color of success notifications.")
css = models.TextField(default='', blank=True)
html_before_header = models.TextField(default='', blank=True)
html_after_header = models.TextField(default='', blank=True)
html_after_body = models.TextField(default='', blank=True)
html_footer = models.TextField(default='', blank=True)
def __str__(self):
return self.name

Wyświetl plik

@ -19,6 +19,8 @@
/* HEADER */
/* SIDEBAR */
/* POPUP */ }
.admin-area .CodeMirror-scroll, .admin-area .CodeMirror {
height: 150px !important; }
.admin-area #changelist-filter {
display: none; }
.admin-area a:link, .admin-area a:visited {

File diff suppressed because one or more lines are too long

Wyświetl plik

@ -3,6 +3,10 @@
*/
.admin-area{
.CodeMirror-scroll, .CodeMirror{
height: 150px !important;
}
#changelist-filter{
display: none;
}

Wyświetl plik

@ -4,6 +4,7 @@ APScheduler==3.2.0
coreapi==2.0.9
Django==1.11.1
django-appconf==1.0.2
django-codemirror2==0.2
django-colorfield==0.1.14
django-cors-headers==2.0.2
django-debug-toolbar==1.6

Wyświetl plik

@ -71,6 +71,7 @@ INSTALLED_APPS = [
'corsheaders',
'colorfield',
'imagekit',
'codemirror2',
# 'debug_toolbar',
'app',
'nodeodm',