Index: lams_admin/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_admin/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_admin/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_admin/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_admin/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_admin/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_central/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_central/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_central/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_central/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_central/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_central/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_gradebook/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_gradebook/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_gradebook/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_gradebook/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_gradebook/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_gradebook/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_learning/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_learning/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_learning/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_learning/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_learning/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_learning/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_monitoring/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_monitoring/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_monitoring/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_monitoring/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_monitoring/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_monitoring/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_assessment/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_assessment/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_assessment/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_assessment/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_assessment/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_assessment/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_assessment/web/pages/learning/learning.jsp =================================================================== diff -u -r13b9f60ae467a5926804ac7229154f390a81b793 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_assessment/web/pages/learning/learning.jsp (.../learning.jsp) (revision 13b9f60ae467a5926804ac7229154f390a81b793) +++ lams_tool_assessment/web/pages/learning/learning.jsp (.../learning.jsp) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -284,13 +284,14 @@ //autosave feature - var autosaveInterval = ${isLeadershipEnabled and isUserLeader ? 10000 : 30000}; // 30 or 10 seconds interval + var autosaveInterval = ${isLeadershipEnabled and isUserLeader ? 10000 : 30000}, // 30 or 10 seconds interval + autosaveWindowId = new Date().getTime(); // all we need for this ID is to be unique function learnerAutosave(isCommand){ // isCommand means that the autosave was triggered by force complete or another command websocket message // in this case do not check multiple tabs open, just autosave if (!isCommand) { - let shouldAutosave = preventLearnerAutosaveFromMultipleTabs(autosaveInterval); + let shouldAutosave = preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval); if (!shouldAutosave) { return; } Index: lams_tool_chat/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_chat/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_chat/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_chat/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_chat/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_chat/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_daco/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_daco/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_daco/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_daco/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_daco/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_daco/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_doku/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_doku/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_doku/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_doku/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_doku/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_doku/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_forum/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_forum/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_forum/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_forum/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_forum/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_forum/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_gmap/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_gmap/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_gmap/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_gmap/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_gmap/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_gmap/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_images/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_images/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_images/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_images/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_images/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_images/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_imscc/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_imscc/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_imscc/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_imscc/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_imscc/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_imscc/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_lamc/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_lamc/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_lamc/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_lamc/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_lamc/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_lamc/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_lamc/web/learning/AnswersContent.jsp =================================================================== diff -u -r39898a6bc099395132ff585dae1a8848058b86bb -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_lamc/web/learning/AnswersContent.jsp (.../AnswersContent.jsp) (revision 39898a6bc099395132ff585dae1a8848058b86bb) +++ lams_tool_lamc/web/learning/AnswersContent.jsp (.../AnswersContent.jsp) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -36,14 +36,15 @@ //autoSaveAnswers if hasEditRight if (${hasEditRight}) { - var interval = "30000"; // = 30 seconds + var interval = "30000", // = 30 seconds + autosaveWindowId = new Date().getTime(); // all we need for this ID is to be unique; window.setInterval(learnerAutosave, interval); function learnerAutosave(isCommand){ // isCommand means that the autosave was triggered by force complete or another command websocket message // in this case do not check multiple tabs open, just autosave if (!isCommand) { - let shouldAutosave = preventLearnerAutosaveFromMultipleTabs(interval); + let shouldAutosave = preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, interval); if (!shouldAutosave) { return; } @@ -184,5 +185,4 @@ - - + \ No newline at end of file Index: lams_tool_laqa/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_laqa/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_laqa/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_laqa/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_laqa/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_laqa/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_laqa/web/learning/AnswersContent.jsp =================================================================== diff -u -rfe19797ec82718905555353176ed719bec11043e -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_laqa/web/learning/AnswersContent.jsp (.../AnswersContent.jsp) (revision fe19797ec82718905555353176ed719bec11043e) +++ lams_tool_laqa/web/learning/AnswersContent.jsp (.../AnswersContent.jsp) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -118,14 +118,15 @@ //autoSaveAnswers if hasEditRight if (${hasEditRight}) { - var interval = "30000"; // = 30 seconds + var interval = "30000", // = 30 seconds + autosaveWindowId = new Date().getTime(); // all we need for this ID is to be unique; window.setInterval(learnerAutosave, interval); function learnerAutosave(isCommand){ // isCommand means that the autosave was triggered by force complete or another command websocket message // in this case do not check multiple tabs open, just autosave if (!isCommand) { - let shouldAutosave = preventLearnerAutosaveFromMultipleTabs(interval); + let shouldAutosave = preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, interval); if (!shouldAutosave) { return; } Index: lams_tool_larsrc/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_larsrc/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_larsrc/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_larsrc/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_larsrc/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_larsrc/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_leader/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_leader/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_leader/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_leader/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_leader/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_leader/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_mindmap/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_mindmap/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_mindmap/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_mindmap/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_mindmap/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_mindmap/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_nb/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_nb/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_nb/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_nb/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_nb/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_nb/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_notebook/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_notebook/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_notebook/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_notebook/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_notebook/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_notebook/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_pixlr/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_pixlr/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_pixlr/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_pixlr/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_pixlr/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_pixlr/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_preview/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_preview/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_preview/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_preview/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_preview/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_preview/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_sbmt/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_sbmt/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_sbmt/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_sbmt/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_sbmt/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_sbmt/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_scratchie/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_scratchie/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_scratchie/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_scratchie/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_scratchie/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_scratchie/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_scratchie/web/pages/learning/learning.jsp =================================================================== diff -u -r4a366cab6c7fbf3a8211f8bb99295eed75e08453 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_scratchie/web/pages/learning/learning.jsp (.../learning.jsp) (revision 4a366cab6c7fbf3a8211f8bb99295eed75e08453) +++ lams_tool_scratchie/web/pages/learning/learning.jsp (.../learning.jsp) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -435,14 +435,15 @@ //autosave feature - var autosaveInterval = "60000"; // 60 seconds interval + var autosaveInterval = "60000", // 60 seconds interval + autosaveWindowId = new Date().getTime(); // all we need for this ID is to be unique window.setInterval(learnerAutosave, autosaveInterval); function learnerAutosave(isCommand){ // isCommand means that the autosave was triggered by force complete or another command websocket message // in this case do not check multiple tabs open, just autosave if (!isCommand) { - let shouldAutosave = preventLearnerAutosaveFromMultipleTabs(autosaveInterval); + let shouldAutosave = preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval); if (!shouldAutosave) { return; } Index: lams_tool_scribe/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_scribe/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_scribe/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_scribe/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_scribe/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_scribe/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_spreadsheet/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_spreadsheet/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_spreadsheet/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_spreadsheet/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_spreadsheet/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_spreadsheet/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_survey/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_survey/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_survey/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_survey/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_survey/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_survey/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_task/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_task/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_task/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_task/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_task/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_task/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_vote/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_vote/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_vote/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_vote/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_vote/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_vote/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_whiteboard/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_whiteboard/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_whiteboard/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_whiteboard/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_whiteboard/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_whiteboard/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_wiki/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_wiki/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_wiki/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_wiki/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_wiki/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_wiki/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_zoom/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_zoom/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_zoom/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_tool_zoom/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_tool_zoom/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_tool_zoom/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_www/web/WEB-INF/tags/Page.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_www/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_www/web/WEB-INF/tags/Page.tag (.../Page.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -163,16 +163,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; } Index: lams_www/web/WEB-INF/tags/Page5.tag =================================================================== diff -u -r876e644c066e81c2721ffa085fd12f386e2f3bb6 -r1eb2143815418c6dc14f115acc6cc1ce7c1fed32 --- lams_www/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 876e644c066e81c2721ffa085fd12f386e2f3bb6) +++ lams_www/web/WEB-INF/tags/Page5.tag (.../Page5.tag) (revision 1eb2143815418c6dc14f115acc6cc1ce7c1fed32) @@ -165,16 +165,19 @@ $('#sidebar').show(); } - function preventLearnerAutosaveFromMultipleTabs(autosaveInterval) { + function preventLearnerAutosaveFromMultipleTabs(autosaveWindowId, autosaveInterval) { let currentTime = new Date().getTime(), - lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'); + lamsAutosaveTimestamp = +localStorage.getItem('lamsAutosaveTimestamp'), + lamsAutosaveWindowId = +localStorage.getItem('lamsAutosaveWindowId'); // check if autosave does not happen too often - if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime) { + if (autosaveInterval > 0 && lamsAutosaveTimestamp && lamsAutosaveTimestamp + autosaveInterval/2 > currentTime + && lamsAutosaveWindowId && lamsAutosaveWindowId != autosaveWindowId) { // this label is required only in tool which implement autosave alert(''); return false; } localStorage.setItem('lamsAutosaveTimestamp', currentTime); + localStorage.setItem('lamsAutosaveWindowId', autosaveWindowId); return true; }