Zprovoznění CKEditoru s Nette.ajax

d@rkWolf
Člen | 163
+
0
-

Zdravím, dokázal by mi někdo poradit, jak rozchodit odesílání formuláře, v kterém je textarea(nad kterou je CKEditor), aby se mi odeslal její obsah, přes Nette.ajax? Marně se snažím to rozchodit.

Formulář

<?php
$form = new Form();
$form->getElementPrototype()->class = 'smart-form';
$form->addTextArea('description', 'Popis')
                ->setAttribute('class', 'custom-scroll ckeditor');
...pár dalších polí...
$form->addSubmit('submit', 'Uložit')
                ->setAttribute('class', 'btn btn-primary')
                ->setAttribute('id', 'frm-foodForm-submit');
?>

Pro variantu přidávání je upraven v actionAdd(), k běžnému submitu je přidán ajaxový submit, který se nevrátí do přehledu, ale zresetuje pole pro rychlé přidání další položky – a tu mám právě ten problém s uložením textarea. Podobně pak v editaci, kde se ajaxově uloží a zůstane na místě.

<?php
$form = $this['foodForm'];
$form->addSubmit('submit_addnew', 'Uložit & vytvářet nový')
                ->setAttribute('class', 'btn btn-warning ajax');
?>

Incializuju to takto:

<script>
$(document).ready(function() {
    $.nette.ext({
        success: function(payload, status, settings) {
            jsInit();
        }
    });
    jsInit();
});

function jsInit() {
    $('.ckeditor').each(function () {
        CKEDITOR.replace(this.id, {
            customConfig: '',
            ......
            další konfigurace CKEDITORu
            .....
        });
    });
}
</script>

Inicializace funguje jak normálně, tak po obnovení snippetu, v kterém je obalený ten formulář, jenže obsah textarea se odešle pouze, pokud ho odešlu ne-ajaxovým tlačítkem. Pokud to odešlu ajaxovým tlačítkem, položku textarea mám prázdnou. Navíc tu mám ještě variantu, kdy těch textareí mám na stránce víc. Předpokládám, že by bylo potřeba ještě něco k provádění do nette.ext, ale nedaří se mi na to přijít, i když jsem zkusil spustit nad instancí ckeditoru CKEDITOR.instances[id].updateElement() co by mělo updatnout tu textareu, stejně se mi do zpracování formuláře pošle ta textarea prázdná.