guardar artículos para poder recuperarlos después
This commit is contained in:
parent
68ed757c79
commit
2608372889
2 changed files with 33 additions and 3 deletions
|
@ -1,5 +1,28 @@
|
||||||
const origin = location.origin
|
const origin = location.origin
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Guarda una copia local de los cambios para poder recuperarlos
|
||||||
|
* después.
|
||||||
|
*
|
||||||
|
* Usamos la URL completa sin anchors.
|
||||||
|
*/
|
||||||
|
const storageKey = (editorEl) => window.location.href.split('#')[0] + '#' + editorEl.id
|
||||||
|
|
||||||
|
const storeContent = (editorEl, contentEl) => {
|
||||||
|
if (contentEl.innerText.trim().length === 0) return
|
||||||
|
|
||||||
|
window.localStorage.setItem(storageKey(editorEl), contentEl.innerHTML)
|
||||||
|
}
|
||||||
|
|
||||||
|
const restoreContent = (editorEl, contentEl) => {
|
||||||
|
const content = window.localStorage.getItem(storageKey(editorEl))
|
||||||
|
|
||||||
|
if (!content) return
|
||||||
|
if (content.trim().length === 0) return
|
||||||
|
|
||||||
|
contentEl.innerHTML = content
|
||||||
|
}
|
||||||
|
|
||||||
function uploadFile (file) {
|
function uploadFile (file) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const upload = new ActiveStorage.DirectUpload(
|
const upload = new ActiveStorage.DirectUpload(
|
||||||
|
@ -431,8 +454,10 @@ function setupEditor (editorEl) {
|
||||||
const htmlEl = editorEl.querySelector("textarea")
|
const htmlEl = editorEl.querySelector("textarea")
|
||||||
const observer = new MutationObserver((mutationList, observer) => {
|
const observer = new MutationObserver((mutationList, observer) => {
|
||||||
cleanContent(contentEl)
|
cleanContent(contentEl)
|
||||||
htmlEl.value = contentEl.innerHTML
|
|
||||||
fixContent(contentEl)
|
fixContent(contentEl)
|
||||||
|
storeContent(editorEl, contentEl)
|
||||||
|
|
||||||
|
htmlEl.value = contentEl.innerHTML
|
||||||
})
|
})
|
||||||
observer.observe(contentEl, {
|
observer.observe(contentEl, {
|
||||||
childList: true,
|
childList: true,
|
||||||
|
@ -485,8 +510,13 @@ function setupEditor (editorEl) {
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanContent(contentEl)
|
cleanContent(contentEl)
|
||||||
htmlEl.value = contentEl.innerHTML
|
|
||||||
fixContent(contentEl)
|
fixContent(contentEl)
|
||||||
|
|
||||||
|
// Recuperar el contenido si hay algo guardado
|
||||||
|
// TODO: Preguntar si se lo quiere recuperar.
|
||||||
|
restoreContent(editorEl, contentEl)
|
||||||
|
|
||||||
|
htmlEl.value = contentEl.innerHTML
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: por ahora confiamos, quizás queremos filtrar estilos?
|
// TODO: por ahora confiamos, quizás queremos filtrar estilos?
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
= render 'posts/attribute_feedback',
|
= render 'posts/attribute_feedback',
|
||||||
post: post, attribute: attribute, metadata: metadata
|
post: post, attribute: attribute, metadata: metadata
|
||||||
|
|
||||||
.editor
|
.editor{ id: attribute }
|
||||||
.alert.alert-info
|
.alert.alert-info
|
||||||
:markdown
|
:markdown
|
||||||
#{t('editor.alert')}
|
#{t('editor.alert')}
|
||||||
|
|
Loading…
Reference in a new issue