CKEditor – neukládají se mi změněné texty

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
iguana007
Člen | 970
+
0
-

Zdravím ve spolek,
rozhodl jsem se změnit Wysiwyg editor v CMS na CKEditor. Implementovat se mi jej podařilo víceméně bez problémů – mám kompletně ajaxové rozhraní – proto jsem musel jen pořešit problém s instancemi editoru, což jsem vyřešil pomocí fce:

<script type="text/javascript">
        function loadEditor(id)
        {
            var instance = CKEDITOR.instances[id];
            if(instance)
            {
                CKEDITOR.remove(instance);
            }
            CKEDITOR.replace(id);
        }
</script>

Formulář pro editaci článku dělám pomocí komponenty a vypadá cca takto:

class EditArticleForm extends AppForm{
    public function __construct($parent, $name){
		parent::__construct($parent, $name);
            $this->getElementPrototype()->class = 'ajax';
            $this->addHidden('id');
            $this->addTextArea('main_text', _('Tělo článku:'), 150, 30);
            $this->addSubmit('ulozit', _('Uložit změny v článku'));
            $this->onSubmit[] = array($this, 'EditArticleFormSubmitted');
            return $this;
    }
    public function editArticleFormSubmitted(AppForm $form) {
                    $values = $form->getValues();
                   $this->presenter->articleModel->updateArticleById($values);
                    $this->presenter->flashMessage("Článek ".$values['article_name'] . " byl úspěšně uložen!", "ok");
                    $this->presenter->actionListArticles($values['category_id']);
                    $this->presenter->invalidateControl('bottomPane');
    }
}

Problém je v tom, že když něco změním v tom editoru u položky main_text a odešlu form, tak mi to ve firebugu ukáže, že se POSTem odešle hodnota main_text, která byla při načtení formu. Tj. vůbec to nebere v potaz, že jsem tam něco změnil. Pokud něco změním v text inputu (v ukázce jsem jej neuvedl, osekal jsem ten form, ať je to kratší), tak se změna projeví.

Nenapadá Vás v čem by mohl být problém?

Díky moc za rady.

iguana007
Člen | 970
+
0
-

Tak se podařilo pomocí konzole ve firebugu dostat tu správnou hodnotu z CKEditoru do textarei formuláře … teď otázka, jak to správně ošetřit v tom formuláři, aby se mi to samo doplnilo při submitu?

var data = CKEDITOR.instances['frmeditArticleForm-main_text'].getData();
$('#frmeditArticleForm-main_text').val(data);
iguana007
Člen | 970
+
0
-

SOLVED:
EDIT: upravil jsem kod tak, aby to fungovalo i na vice editoru v jednom formu
Upravil jsem si v layout.phtml kod ošetřující ajax submit na toto:

$("form.ajax").livequery("submit",function (e) {
    if ($('.kceditor')) {
            $('.kceditor').each(function(index) {
                    var CurrId = $(this).attr('id');
                    var dataToFill = CKEDITOR.instances[CurrId].getData();
                    $(this).val(dataToFill);
            });
    }
    $(this).ajaxSubmit(e);
});

A ve formu přidávám textarei s wysiwygem classu ‚ckeditor‘.

Editoval iguana007 (22. 7. 2010 16:59)