Zprovoznění CKEditoru s Nette.ajax
- d@rkWolf
- Člen | 167
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á.