class BackendForm(ConcurrentProtectedModelForm):
selectize_multiple_fields = None
json_fields = None
+ markdown_fields = []
vat_fields = {}
verbose_field_names = {}
exclude_date_validators = []
'asktshirt', 'askfood', 'asknick', 'asktwitter', 'askshareemail', 'askphotoconsent',
'skill_levels', 'additionalintro', 'callforpapersintro', 'sendwelcomemail', 'welcomemail',
'invoice_autocancel_hours', 'attendees_before_waitlist']
+ markdown_fields = ['promotext', ]
selectize_multiple_fields = {
'testers': GeneralAccountLookup(),
'talkvoters': GeneralAccountLookup(),
class BackendConferenceSeriesForm(BackendForm):
helplink = "series"
list_fields = ['name', 'sortkey', ]
+ markdown_fields = ['intro', ]
class Meta:
model = ConferenceSeries
fields = ['name', 'sortkey', 'intro', ]
selectize_multiple_fields = {
'speaker': SpeakerLookup(),
}
+ markdown_fields = ['abstract', ]
allow_copy_previous = True
copy_transform_form = BackendTransformConferenceDateTimeForm
auto_cascade_delete_to = ['conferencesession_speaker', 'conferencesessionvote']
class BackendSponsorshipLevelBenefitForm(BackendForm):
helplink='sponsors#benefit'
json_fields = ['class_parameters', ]
+ markdown_fields = ['benefitdescription', 'claimprompt', ]
class Meta:
model = SponsorshipBenefit
fields = ['benefitname', 'benefitdescription', 'sortkey', 'benefit_class',
<script type="text/javascript" src="/media/ace/ace.js"></script>
<link rel="stylesheet" href="/media/css/selectize.css" />
<link rel="stylesheet" href="/media/css/selectize.default.css" />
+{%if form.markdown_fields%}
+<script type="text/javascript" src="/media/showdown/showdown.js"></script>
+{%endif%}
+
+<style>
+div.admin_markdownpreview {
+ border: 1px solid lightgrey;
+ padding: 3px;
+ margin-top: 5px;
+ overflow:scroll;
+ height: 250px;
+}
+</style>
<script language="javascript">
+{%if form.markdown_fields%}
+mdconverter = new Showdown.converter();
+function backend_showdown_preview(id) {
+ var e = $('#' + id);
+
+ var w = $('<div class="admin_markdownpreview"><legend>Markdown preview</legend><div class="admin_markdownpreview_contents"></div></div>').insertAfter(e);
+ var p = w.find('div.admin_markdownpreview_contents');
+ console.log(p);
+
+ function update() {
+ p.html(mdconverter.makeHtml(e.val()));
+ }
+
+ update();
+ e.keyup(function() {
+ update();
+ });
+}
+{%endif%}
+
$(function() {
{%for f,lookup in form.selectize_multiple_fields.items%}
$('#id_{{f}}').selectize({
});
{%endfor%}
+{%for f in form.markdown_fields%}
+ backend_showdown_preview('id_{{f}}');
+{%endfor%}
+
{%for f in form.json_fields%}
$('#id_{{f}}').addClass('jsoneditor');
{%endfor%}