diff options
author | vincent-peugnet <v.peugnet@free.fr> | 2019-10-21 11:18:16 +0200 |
---|---|---|
committer | vincent-peugnet <v.peugnet@free.fr> | 2019-10-21 11:18:16 +0200 |
commit | 09063d857f315f34a14a73eccb4e8cb376097de9 (patch) | |
tree | c3f863d14b1508a78c53f3bac4e119f4646b788b /assets | |
parent | 0968351067f99e8afc882d4237902642e608e6f5 (diff) | |
parent | f1f8a3d09049370ceba99f40581631e501b0c9a6 (diff) | |
download | wcms-09063d857f315f34a14a73eccb4e8cb376097de9.tar.gz wcms-09063d857f315f34a14a73eccb4e8cb376097de9.zip |
Merge branch 'n-peugnet-ajax-form-submission2' into develop
Diffstat (limited to 'assets')
-rw-r--r-- | assets/js/edit.js | 60 | ||||
-rw-r--r-- | assets/js/worker.js | 37 |
2 files changed, 24 insertions, 73 deletions
diff --git a/assets/js/edit.js b/assets/js/edit.js index b0f8915..92a09b1 100644 --- a/assets/js/edit.js +++ b/assets/js/edit.js @@ -1,25 +1,20 @@ let form; let unsavedChanges = false; const pageurl = basepath + pageid; -const myWorker = new Worker(jspath + 'worker.js'); window.onload = () => { form = document.getElementById('update'); let inputs = form.elements; for (i = 0; i < inputs.length; i++) { - inputs[i].onchange = changeHandler; inputs[i].oninput = changeHandler; } - form.onsubmit = submitHandler; + form.addEventListener("submit", function (event) { + event.preventDefault(); + submitHandler(this); + }); window.onkeydown = keyboardHandler; window.onbeforeunload = confirmExit; - - myWorker.postMessage({ - type: 'init', - pageurl: pageurl, - }); - myWorker.postMessage({ type: 'stillEditing' }); }; /** @@ -29,12 +24,11 @@ window.onload = () => { function keyboardHandler(e) { if (e.composed) { if (e.ctrlKey) { - // console.log(e.key); switch (e.key) { + // ctrl + s case 's': e.preventDefault(); - unsavedChanges = false; - form.submit(); + submitHandler(form); return false; } } @@ -43,18 +37,32 @@ function keyboardHandler(e) { /** * Manage change event - * @param {Event} e + * @param {InputEvent} e */ function changeHandler(e) { + if(e.target.classList.contains("toggle")) { + return; + } unsavedChanges = true; } /** * Manage submit event - * @param {Event} e + * @param {HTMLFormElement} form */ -function submitHandler(e) { - unsavedChanges = false; +function submitHandler(form) { + var xhr = new XMLHttpRequest(); + var fd = new FormData(form); + + xhr.addEventListener("load", function(event) { + unsavedChanges = false; + alert("updated"); + }); + xhr.addEventListener("error", function(event) { + alert('Error while trying to update.'); + }); + xhr.open(form.method, form.action); + xhr.send(fd); } /** @@ -63,26 +71,6 @@ function submitHandler(e) { */ function confirmExit(e) { if (unsavedChanges) { - const url = pageurl + '/removeeditby'; - console.log('send quit editing') - fetch(url, { method: 'POST' }) - .then(handleErrors) - .then((response) => { - console.log(response); - setTimeout(() => { - myWorker.postMessage({ type: 'stillEditing' }); - }, 1500); - }); return 'You have unsaved changes, do you really want to leave this page?'; - } else { - myWorker.postMessage({ type: 'quitEditing' }); - } -} - -async function handleErrors(response) { - if (!response.ok) { - const data = await response.json(); - throw Error(`${response.statusText}. ${data.message}`); } - return response.json(); } diff --git a/assets/js/worker.js b/assets/js/worker.js deleted file mode 100644 index d60fdf1..0000000 --- a/assets/js/worker.js +++ /dev/null @@ -1,37 +0,0 @@ -let pageurl; - -onmessage = function (e) { - switch (e.data.type) { - case 'init': - pageurl = e.data.pageurl; - break; - case 'stillEditing': - stillEditing(); - break; - case 'quitEditing': - quitEditing(); - break; - }; -} - -function stillEditing() { - console.log('send still editing'); - const url = pageurl + '/editby'; - const req = new XMLHttpRequest(); - req.open('POST', url, false); - req.send(null); - - const res = JSON.parse(req.responseText); - console.log(res); -} - -function quitEditing() { - console.log('send quit editing'); - const url = pageurl + '/removeeditby'; - const req = new XMLHttpRequest(); - req.open('POST', url, false); - req.send(null); - - const res = JSON.parse(req.responseText); - console.log(res); -}
\ No newline at end of file |