mod/edit/assets/script/editor.js.coffee
decko.editors.init["textarea"] = -> $(this).autosize()
$.extend decko,
contentLoaded: (el, slotter)->
decko.initializeEditors(el)
notice = slotter.attr('notify-success')
el.notify notice, "success" if notice?
el.triggerSlotReady(slotter)
initializeEditors: (range, map) ->
map = decko.editors.init unless map?
$.each map, (selector, fn) ->
$.each range.find(selector), ->
fn.call $(this)
jQuery.fn.extend
contentField: ->
@closest('.card-editor').find '.d0-card-content'
setContentFieldsFromMap: (map) ->
map = decko.editors.content unless map?
this_form = $(this)
$.each map, (selector, fn) ->
this_form.setContentFields(selector, fn)
setContentFields: (selector, fn) ->
$.each @find(selector), ->
$(this).setContentField(fn)
setContentField: (fn) ->
field = @contentField()
init_val = field.val() # tinymce-jquery overrides val();
# that's why we're not using it.
new_val = fn.call this
field.val new_val
field.change() if init_val != new_val
$(window).ready ->
# decko.initializeEditors $('body > :not(.modal)')
setTimeout (-> decko.initializeEditors $('body > :not(.modal)')), 10
# dislike the timeout, but without this forms with multiple TinyMCE editors
# were failing to load properly
# I couldn't reproduce that problem described above -pk
$('body').on 'submit', '.card-form', ->
$(this).setContentFieldsFromMap()
$(this).find('.d0-card-content').attr('no-autosave','true')
true
setInterval (-> $('.card-form').setContentFieldsFromMap()), 20000