Manager: "Apply all updates" button
This commit is contained in:
parent
8e6e1f97b2
commit
3dd8eb1fc6
|
@ -60,6 +60,10 @@
|
||||||
"message": "URLs starting with",
|
"message": "URLs starting with",
|
||||||
"description": "Option to make the style apply to the entered string as a URL prefix"
|
"description": "Option to make the style apply to the entered string as a URL prefix"
|
||||||
},
|
},
|
||||||
|
"applyAllUpdates": {
|
||||||
|
"message": "Apply all updates",
|
||||||
|
"description": "Label for the button to apply all detected updates"
|
||||||
|
},
|
||||||
"checkAllUpdates": {
|
"checkAllUpdates": {
|
||||||
"message": "Check all styles for updates",
|
"message": "Check all styles for updates",
|
||||||
"description": "Label for the button to check all styles for updates"
|
"description": "Label for the button to check all styles for updates"
|
||||||
|
@ -288,6 +292,10 @@
|
||||||
"message": "Style is up to date.",
|
"message": "Style is up to date.",
|
||||||
"description": "Text that displays when an update check completed and no update is available"
|
"description": "Text that displays when an update check completed and no update is available"
|
||||||
},
|
},
|
||||||
|
"updateAllCheckSucceededNoUpdate": {
|
||||||
|
"message": "All styles are up to date.",
|
||||||
|
"description": "Text that displays when an update all check completed and no updates are available"
|
||||||
|
},
|
||||||
"updateCompleted": {
|
"updateCompleted": {
|
||||||
"message": "Update completed.",
|
"message": "Update completed.",
|
||||||
"description": "Text that displays when an update completed"
|
"description": "Text that displays when an update completed"
|
||||||
|
|
|
@ -140,6 +140,10 @@
|
||||||
<div><input id="manage.onlyEdited" type="checkbox"><label id="manage.onlyEdited-label" for="manage.onlyEdited"></label></div>
|
<div><input id="manage.onlyEdited" type="checkbox"><label id="manage.onlyEdited-label" for="manage.onlyEdited"></label></div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<p><button id="check-all-updates"></button></p>
|
<p><button id="check-all-updates"></button></p>
|
||||||
|
<p>
|
||||||
|
<button id="apply-all-updates" class="hidden"></button>
|
||||||
|
<span id="update-all-no-updates" class="hidden"></span>
|
||||||
|
</p>
|
||||||
<p><a href="edit.html"><button id="add-style-label"></button></a></p>
|
<p><a href="edit.html"><button id="add-style-label"></button></a></p>
|
||||||
<div id="options">
|
<div id="options">
|
||||||
<h2 id="options-heading"></h2>
|
<h2 id="options-heading"></h2>
|
||||||
|
|
61
manage.js
61
manage.js
|
@ -188,11 +188,52 @@ function doCheckUpdate(event) {
|
||||||
checkUpdate(getStyleElement(event));
|
checkUpdate(getStyleElement(event));
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkUpdateAll() {
|
function applyUpdateAll() {
|
||||||
Array.prototype.forEach.call(document.querySelectorAll("[style-update-url]"), checkUpdate);
|
var btnApply = document.getElementById("apply-all-updates");
|
||||||
|
btnApply.disabled = true;
|
||||||
|
setTimeout(function() {
|
||||||
|
btnApply.style.display = "none";
|
||||||
|
btnApply.disabled = false;
|
||||||
|
}, 1000);
|
||||||
|
|
||||||
|
Array.prototype.forEach.call(document.querySelectorAll(".can-update .update"), function(button) {
|
||||||
|
button.click();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkUpdate(element) {
|
function checkUpdateAll() {
|
||||||
|
var btnCheck = document.getElementById("check-all-updates");
|
||||||
|
var btnApply = document.getElementById("apply-all-updates");
|
||||||
|
var noUpdates = document.getElementById("update-all-no-updates");
|
||||||
|
|
||||||
|
btnCheck.disabled = true;
|
||||||
|
btnApply.classList.add("hidden");
|
||||||
|
noUpdates.classList.add("hidden");
|
||||||
|
|
||||||
|
var elements = document.querySelectorAll("[style-update-url]");
|
||||||
|
var toCheckCount = elements.length;
|
||||||
|
var updatableCount = 0;
|
||||||
|
Array.prototype.forEach.call(elements, function(element) {
|
||||||
|
checkUpdate(element, function(success) {
|
||||||
|
if (success) {
|
||||||
|
++updatableCount;
|
||||||
|
}
|
||||||
|
if (--toCheckCount == 0) {
|
||||||
|
btnCheck.disabled = false;
|
||||||
|
if (updatableCount) {
|
||||||
|
btnApply.classList.remove("hidden");
|
||||||
|
} else {
|
||||||
|
noUpdates.classList.remove("hidden");
|
||||||
|
setTimeout(function() {
|
||||||
|
noUpdates.classList.add("hidden");
|
||||||
|
}, 10000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkUpdate(element, callback) {
|
||||||
element.querySelector(".update-note").innerHTML = t('checkingForUpdate');
|
element.querySelector(".update-note").innerHTML = t('checkingForUpdate');
|
||||||
element.className = element.className.replace("checking-update", "").replace("no-update", "").replace("can-update", "") + " checking-update";
|
element.className = element.className.replace("checking-update", "").replace("no-update", "").replace("can-update", "") + " checking-update";
|
||||||
var id = element.getAttribute("style-id");
|
var id = element.getAttribute("style-id");
|
||||||
|
@ -203,10 +244,15 @@ function checkUpdate(element) {
|
||||||
function handleSuccess(forceUpdate, serverJson) {
|
function handleSuccess(forceUpdate, serverJson) {
|
||||||
chrome.extension.sendMessage({method: "getStyles", id: id}, function(styles) {
|
chrome.extension.sendMessage({method: "getStyles", id: id}, function(styles) {
|
||||||
var style = styles[0];
|
var style = styles[0];
|
||||||
|
var needsUpdate = false;
|
||||||
if (!forceUpdate && codeIsEqual(style.sections, serverJson.sections)) {
|
if (!forceUpdate && codeIsEqual(style.sections, serverJson.sections)) {
|
||||||
handleNeedsUpdate("no", id, serverJson);
|
handleNeedsUpdate("no", id, serverJson);
|
||||||
} else {
|
} else {
|
||||||
handleNeedsUpdate("yes", id, serverJson);
|
handleNeedsUpdate("yes", id, serverJson);
|
||||||
|
needsUpdate = true;
|
||||||
|
}
|
||||||
|
if (callback) {
|
||||||
|
callback(needsUpdate);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -217,6 +263,9 @@ function checkUpdate(element) {
|
||||||
} else {
|
} else {
|
||||||
handleNeedsUpdate(t('updateCheckFailBadResponseCode', [status]), id, null);
|
handleNeedsUpdate(t('updateCheckFailBadResponseCode', [status]), id, null);
|
||||||
}
|
}
|
||||||
|
if (callback) {
|
||||||
|
callback(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!md5Url || !originalMd5) {
|
if (!md5Url || !originalMd5) {
|
||||||
|
@ -228,6 +277,9 @@ function checkUpdate(element) {
|
||||||
checkUpdateFullCode(url, true, handleSuccess, handleFailure);
|
checkUpdateFullCode(url, true, handleSuccess, handleFailure);
|
||||||
} else {
|
} else {
|
||||||
handleNeedsUpdate("no", id, null);
|
handleNeedsUpdate("no", id, null);
|
||||||
|
if (callback) {
|
||||||
|
callback(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, handleFailure);
|
}, handleFailure);
|
||||||
}
|
}
|
||||||
|
@ -367,6 +419,8 @@ document.title = t("manageTitle");
|
||||||
tE("manage-heading", "manageHeading");
|
tE("manage-heading", "manageHeading");
|
||||||
tE("manage-text", "manageText", null, false);
|
tE("manage-text", "manageText", null, false);
|
||||||
tE("check-all-updates", "checkAllUpdates");
|
tE("check-all-updates", "checkAllUpdates");
|
||||||
|
tE("apply-all-updates", "applyAllUpdates");
|
||||||
|
tE("update-all-no-updates", "updateAllCheckSucceededNoUpdate");
|
||||||
tE("add-style-label", "addStyleLabel");
|
tE("add-style-label", "addStyleLabel");
|
||||||
tE("options-heading", "optionsHeading");
|
tE("options-heading", "optionsHeading");
|
||||||
tE("show-badge-label", "prefShowBadge");
|
tE("show-badge-label", "prefShowBadge");
|
||||||
|
@ -376,6 +430,7 @@ tE("filters", "manageFilters");
|
||||||
tE("stylesFirst-label", "popupStylesFirst");
|
tE("stylesFirst-label", "popupStylesFirst");
|
||||||
|
|
||||||
document.getElementById("check-all-updates").addEventListener("click", checkUpdateAll, false);
|
document.getElementById("check-all-updates").addEventListener("click", checkUpdateAll, false);
|
||||||
|
document.getElementById("apply-all-updates").addEventListener("click", applyUpdateAll, false);
|
||||||
|
|
||||||
function onFilterChange (className, event) {
|
function onFilterChange (className, event) {
|
||||||
var container = document.getElementById("installed"),
|
var container = document.getElementById("installed"),
|
||||||
|
|
Loading…
Reference in New Issue
Block a user