Salvar dados de vários campos de editor in-line do CKEditor como um modelo
Estou configurando um sistema de modelos onde os designers podem enviar projetos HTML5 e permitir que os usuários adicionem seu próprio conteúdo. Estou usando o CKEditor 4.2 e Rails 3 para o aplicativo. Eu gostaria que os usuários pudessem carregar a página de modelo e, em seguida, editar os vários editores inline diretamente, em seguida, salvar via JS e Ajax. Eu tinha tudo funcionando, mas ao adicionar o plugin iFrame, tive alguns problemas de formatação, porque eu estava simplesmente salvando o HTML bruto dos editores em linha para os meus modelos. Veja esta pergunta para mais detalhes:CKEditor e iFrame / YouTube / outros plugins incorporados mostram códigos HTML estranhos
Agora sei que devo usar algo como:
var data = CKEDITOR.instances.editable.getData();
Mas como eu gerenciaria vários editores como esse? Eu disse aos meus designers para simplesmente usar
contenteditable="true"
para qualquer div que eles querem ser editáveis. Portanto, não tenho id's para fazer referência a cada editor e não sei quantos editores cada arquivo de modelo conterá. Gostaria de poder salvar conteúdo não editável e, claro, conteúdo editável no modelo final, que é apenas um Página HTML5.
Aqui está a solução que eu tive para salvar o conteúdo bruto de todo o arquivo de modelo usando um div com id:
$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;
});
Então, para resumir minha pergunta:
Como posso implementar uma função de salvamento que salva o conteúdo de vários editores de CKEditor em uma página de modelo completa?
Muito obrigado por qualquer ajuda e se você puder ajudar com esta questão, então ele vai responder a mesma pergunta também eu acredito:Salvando várias edições em linha com o CKEditor