Added invalid url detection
This commit is contained in:
parent
b433161d72
commit
6ea60a0723
|
@ -4,8 +4,8 @@ Easy Session Manager allows you to manage your Firefox session by backing up or
|
||||||
# Download
|
# Download
|
||||||
https://addons.mozilla.org/en-US/firefox/addon/easy-session-manager/
|
https://addons.mozilla.org/en-US/firefox/addon/easy-session-manager/
|
||||||
|
|
||||||
# Version: 0.2.3.2
|
# Version: 0.2.3.3
|
||||||
* Fixed Selective Open not working properly when multiple windows are in session.
|
* Fixed tab open logic to exclude urls not valid for api opening (due to security).
|
||||||
|
|
||||||
|
|
||||||
# Images
|
# Images
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
{
|
{
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"name": "Easy Session Manager",
|
"name": "Easy Session Manager",
|
||||||
"version": "0.2.3.2",
|
"version": "0.2.3.3",
|
||||||
"description": "Easy Session Manager allows you to manage your Firefox session by backing up or loading your saved sessions.",
|
"description": "Easy Session Manager allows you to manage your Firefox session by backing up or loading your saved sessions.",
|
||||||
|
|
||||||
"browser_specific_settings": {
|
"browser_specific_settings": {
|
||||||
"gecko": {
|
"gecko": {
|
||||||
"id": "sessionManager@itdominator.com",
|
"id": "sessionManager@itdominator.com",
|
||||||
"strict_min_version": "57.0"
|
"strict_min_version": "79.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,6 @@ document.addEventListener("click", (e) => {
|
||||||
const target = e.target;
|
const target = e.target;
|
||||||
const action = target.getAttribute("name");
|
const action = target.getAttribute("name");
|
||||||
|
|
||||||
|
|
||||||
// Set selection first before doing any actions...
|
// Set selection first before doing any actions...
|
||||||
if (target.tagName == "LI" && target.className.includes("sessionLI")) {
|
if (target.tagName == "LI" && target.className.includes("sessionLI")) {
|
||||||
if (selectedItem) {
|
if (selectedItem) {
|
||||||
|
@ -56,6 +55,8 @@ document.addEventListener("click", (e) => {
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!action) return;
|
||||||
|
|
||||||
if (/(closeSave|closeEdit|closeDownload|closeDelete|closeConfirm|closeLoad)/.test(action)) {
|
if (/(closeSave|closeEdit|closeDownload|closeDelete|closeConfirm|closeLoad)/.test(action)) {
|
||||||
if (action.includes("closeSave")) {
|
if (action.includes("closeSave")) {
|
||||||
hideModal("saveModal");
|
hideModal("saveModal");
|
||||||
|
@ -70,8 +71,7 @@ document.addEventListener("click", (e) => {
|
||||||
} else if (action.includes("closeLoad")) {
|
} else if (action.includes("closeLoad")) {
|
||||||
hideModal("loadModal");
|
hideModal("loadModal");
|
||||||
}
|
}
|
||||||
}
|
} else if (action.includes("deselectAll")) {
|
||||||
else if (action.includes("deselectAll")) {
|
|
||||||
let container = document.getElementById("editSelectionContainer");
|
let container = document.getElementById("editSelectionContainer");
|
||||||
deselectAll(container);
|
deselectAll(container);
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,28 +40,33 @@ const loadContainer = (sessionData, keys, keysLength, divID) => {
|
||||||
|
|
||||||
/* Selection Process */
|
/* Selection Process */
|
||||||
const generateSelectionWindow = (json = "", keys = null, keysLength = 0) => {
|
const generateSelectionWindow = (json = "", keys = null, keysLength = 0) => {
|
||||||
let container = document.createElement("DIV");
|
let invalidURLsMessage = document.createElement("P")
|
||||||
let ulTemplate = document.querySelector('#ulTemplate');
|
let container = document.createElement("DIV");
|
||||||
let liTemplate = document.querySelector('#liTemplate');
|
let ulTemplate = document.querySelector('#ulTemplate');
|
||||||
|
let liTemplate = document.querySelector('#liTemplate');
|
||||||
|
|
||||||
|
invalidURLsMessage.innerText = "The Session has invalid URLs (highlighted for convenience). They might break loading of a session...";
|
||||||
|
invalidURLsMessage.classList.add("warning");
|
||||||
|
|
||||||
for (let i = 0; i < keysLength; i++) {
|
for (let i = 0; i < keysLength; i++) {
|
||||||
let ulClone = document.importNode(ulTemplate.content, true);
|
let ulClone = document.importNode(ulTemplate.content, true);
|
||||||
let ulTag = ulClone.querySelector('.collection');
|
let ulTag = ulClone.querySelector('.collection');
|
||||||
let h2Tag = ulClone.querySelector('.ulHeader');
|
let h2Tag = ulClone.querySelector('.ulHeader');
|
||||||
let h2Txt = document.createTextNode("Window: " + (i + 1));
|
let h2Txt = document.createTextNode("Window: " + (i + 1));
|
||||||
|
|
||||||
let selAll = ulClone.querySelector('.selAll');
|
let selAll = ulClone.querySelector('.selAll');
|
||||||
let titleAll = ulClone.querySelector('.titleAll');
|
let titleAll = ulClone.querySelector('.titleAll');
|
||||||
let ulLblTag = ulClone.querySelector('.selAllLbl');
|
let ulLblTag = ulClone.querySelector('.selAllLbl');
|
||||||
let ulLblTag2 = ulClone.querySelector('.titleAllLbl');
|
let ulLblTag2 = ulClone.querySelector('.titleAllLbl');
|
||||||
let store = json[keys[i]];
|
let store = json[keys[i]];
|
||||||
let j = 0;
|
let j = 0;
|
||||||
|
let hasInvalidURLs = false;
|
||||||
|
|
||||||
container.id = "editSelectionContainer";
|
container.id = "editSelectionContainer";
|
||||||
selAll.id = "selectAllWin" + i;
|
selAll.id = "selectAllWin" + i;
|
||||||
titleAll.id = "selectAllTitle" + i;
|
titleAll.id = "selectAllTitle" + i;
|
||||||
ulLblTag.htmlFor = "selectAllWin" + i;
|
ulLblTag.htmlFor = "selectAllWin" + i;
|
||||||
ulLblTag2.htmlFor = "selectAllTitle" + i;
|
ulLblTag2.htmlFor = "selectAllTitle" + i;
|
||||||
|
|
||||||
selAll.addEventListener("click", function (eve) {
|
selAll.addEventListener("click", function (eve) {
|
||||||
toggleSelect(eve.target, "Win" + i);
|
toggleSelect(eve.target, "Win" + i);
|
||||||
|
@ -72,12 +77,12 @@ const generateSelectionWindow = (json = "", keys = null, keysLength = 0) => {
|
||||||
toggleTitles(eve.target, "Win" + i);
|
toggleTitles(eve.target, "Win" + i);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
h2Tag.prepend(h2Txt);
|
h2Tag.prepend(h2Txt);
|
||||||
store.forEach(tab => {
|
store.forEach(tab => {
|
||||||
let liClone = document.importNode(liTemplate.content, true);
|
let liClone = document.importNode(liTemplate.content, true);
|
||||||
|
let liTag = liClone.querySelector("li");
|
||||||
let inptTag = liClone.querySelector("input");
|
let inptTag = liClone.querySelector("input");
|
||||||
|
|
||||||
// link lbl
|
// link lbl
|
||||||
let lblTag = liClone.querySelector(".linkLbl");
|
let lblTag = liClone.querySelector(".linkLbl");
|
||||||
let labelTxt = document.createTextNode(tab.link);
|
let labelTxt = document.createTextNode(tab.link);
|
||||||
|
@ -94,6 +99,13 @@ const generateSelectionWindow = (json = "", keys = null, keysLength = 0) => {
|
||||||
|
|
||||||
inptTag.setAttribute("name", "Win" + i); // Used for toggle select all
|
inptTag.setAttribute("name", "Win" + i); // Used for toggle select all
|
||||||
|
|
||||||
|
if (/(file:\/\/|ws:\/\/|wss:\/\/|moz-extension:\/\/|about:)/.test(tab.link)) {
|
||||||
|
liTag.classList.add("error-bg");
|
||||||
|
lblTag.classList.add("error");
|
||||||
|
lblTag2.classList.add("error");
|
||||||
|
hasInvalidURLs = true;
|
||||||
|
}
|
||||||
|
|
||||||
lblTag.appendChild(labelTxt);
|
lblTag.appendChild(labelTxt);
|
||||||
lblTag2.appendChild(labelTxt2);
|
lblTag2.appendChild(labelTxt2);
|
||||||
|
|
||||||
|
@ -102,6 +114,10 @@ const generateSelectionWindow = (json = "", keys = null, keysLength = 0) => {
|
||||||
j++;
|
j++;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (hasInvalidURLs) {
|
||||||
|
container.appendChild(invalidURLsMessage);
|
||||||
|
}
|
||||||
|
|
||||||
container.appendChild(ulClone);
|
container.appendChild(ulClone);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ ul, li {
|
||||||
li {
|
li {
|
||||||
user-select: none; /* Non-prefixed version, currently
|
user-select: none; /* Non-prefixed version, currently
|
||||||
supported by Chrome, Opera and Firefox */
|
supported by Chrome, Opera and Firefox */
|
||||||
|
margin-bottom: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -93,8 +94,8 @@ li {
|
||||||
}
|
}
|
||||||
|
|
||||||
.scroller {
|
.scroller {
|
||||||
scrollbar-color: #00000084 #ffffff64;
|
scrollbar-color: #00000084 #ffffff64;
|
||||||
scrollbar-width: thin;
|
scrollbar-width: thin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -117,3 +118,14 @@ li {
|
||||||
background-color: rgba(41, 95, 115, 0.65);
|
background-color: rgba(41, 95, 115, 0.65);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.error-bg { background-color: rgba(44, 44, 44, 0.64); }
|
||||||
|
.warning-bg { background-color: rgba(44, 44, 44, 0.64); }
|
||||||
|
.success-bg { background-color: rgba(44, 44, 44, 0.64); }
|
||||||
|
|
||||||
|
|
||||||
|
.error { color: rgb(170, 18, 18); }
|
||||||
|
.warning { color: rgb(255, 168, 0); }
|
||||||
|
.success { color: rgb(136, 204, 39); }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue