Zapisz dane z wielu pól edytora inline CKEditor jak szablon
Tworzę system szablonów, w którym projektanci mogą przesyłać projekty HTML5 i umożliwiać użytkownikom dodawanie własnych treści. Używam CKEditor 4.2 i Rails 3 dla aplikacji. Chciałbym, aby użytkownicy mogli załadować stronę szablonu, a następnie bezpośrednio edytować różne edytory inline, a następnie zapisywać za pośrednictwem JS i Ajax. Miałem wszystko, ale dodając wtyczkę iFrame wpadłem na pewne problemy z formatowaniem, ponieważ po prostu zapisywałem surowy HTML z edytorów wbudowanych do moich szablonów. Więcej informacji można znaleźć w tym pytaniu:CKEditor i iFrame / YouTube / Inne osadzone wtyczki Pokaż dziwny kod HTML
Teraz wiem, że powinienem użyć czegoś takiego:
var data = CKEDITOR.instances.editable.getData();
Jak jednak zarządzać wieloma edytorami w ten sposób? Powiedziałem moim projektantom, żeby po prostu używali
contenteditable="true"
dla każdego div chcą być edytowalne. Dlatego nie mam identyfikatorów dla każdego edytora i nie wiem, ile edytorów będzie zawierał każdy plik szablonu. Chciałbym móc zapisać zarówno nieedytowalną zawartość, jak i oczywiście edytowalną treść w ostatecznym szablonie, który jest tylko Strona HTML5.
Oto rozwiązanie, które musiałem zapisać surową zawartość całego pliku szablonu za pomocą div o identyfikatorze:
$saveButton.click(function(e) {
// Extract contents of magboy container
var contents = $("#page-cnt").html();
// Send contents to server
$.ajax({
url: '/pages/'+PageId+'/editor_save',
type: 'POST',
data: {
containerContents: contents
},
success: function(response){
alert("contents saved");
}
});
// prevent original click behaviour
e.preventDefault();
return false;
});
Podsumowując moje pytanie:
Jak mogę zaimplementować funkcję zapisywania, która zapisuje zawartość kilku edytorów CKEditor w pełnej stronie szablonu?
Dziękuję bardzo za wszelką pomoc i jeśli możesz pomóc w tym pytaniu, odpowie również na to samo pytanie:Zapisywanie wielu edycji inline za pomocą CKEditor