mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Fixed IE8 BOSS report compatibility.
Local storage polyfills won't work with the file:// URL. :( I could probably implement a system based on a URL hash fragment that passes defaults from the wxWidgets UI, but that is one-way only and probably isn't worth the effort.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
+8
-11
@@ -9,7 +9,7 @@ function isStorageSupported() {
|
||||
function saveCheckboxState(evt) {
|
||||
if (evt.currentTarget.checked) {
|
||||
try {
|
||||
localStorage.setItem(evt.currentTarget.id, evt.currentTarget.checked);
|
||||
localStorage.setItem(evt.currentTarget.id, true);
|
||||
} catch (e) {
|
||||
if (e == QUOTA_EXCEEDED_ERR) {
|
||||
alert('Web storage quota for this document has been exceeded. Please empty your browser\'s cache. Note that this will delete all locally stored data.');
|
||||
@@ -24,8 +24,7 @@ function loadSettings() {
|
||||
while (i > -1) {
|
||||
var elem = document.getElementById(localStorage.key(i));
|
||||
if (elem != null && 'defaultChecked' in elem) {
|
||||
elem.checked = true;
|
||||
elem.dispatchEvent(new MouseEvent('click'));
|
||||
elem.dispatchEvent(new MouseEvent('click'));
|
||||
}
|
||||
i--;
|
||||
}
|
||||
@@ -102,7 +101,7 @@ function showSection(evt) {
|
||||
function toggleMessages(evt) {
|
||||
var listItems = document.getElementById('plugins').getElementsByTagName('li');
|
||||
var i = listItems.length - 1;
|
||||
var hiddenNo = parseInt(document.getElementById('hiddenMessageNo').textContent);
|
||||
var hiddenNo = parseInt(document.getElementById('hiddenMessageNo').innerHTML);
|
||||
while (i > -1) {
|
||||
var spans = listItems[i].getElementsByTagName('span');
|
||||
if (spans.length == 0 || spans[0].className.indexOf('mod') == -1) {
|
||||
@@ -113,7 +112,7 @@ function toggleMessages(evt) {
|
||||
filterMatch = true;
|
||||
} else if (evt.target.id == 'hideBashTags' && listItems[i].className.indexOf('tag') != -1) {
|
||||
filterMatch = true;
|
||||
} else if (evt.target.id == 'hideDoNotCleanMessages' && listItems[i].textContent.indexOf('Do not clean.') != -1) {
|
||||
} else if (evt.target.id == 'hideDoNotCleanMessages' && listItems[i].innerHTML.indexOf('Do not clean.') != -1) {
|
||||
filterMatch = true;
|
||||
}
|
||||
if (filterMatch) {
|
||||
@@ -132,15 +131,13 @@ function toggleMessages(evt) {
|
||||
}
|
||||
i--;
|
||||
}
|
||||
document.getElementById('hiddenMessageNo').textContent = hiddenNo;
|
||||
var event = document.createEvent('Event');
|
||||
event.initEvent('click', true, true);
|
||||
document.getElementById('hideMessagelessPlugins').dispatchEvent(event);
|
||||
document.getElementById('hiddenMessageNo').innerHTML = hiddenNo;
|
||||
togglePlugins(evt);
|
||||
}
|
||||
function togglePlugins(evt) {
|
||||
var plugins = document.getElementById('plugins').getElementsByTagName('ul')[0].childNodes;
|
||||
var i = plugins.length - 1;
|
||||
var hiddenNo = parseInt(document.getElementById('hiddenPluginNo').textContent);
|
||||
var hiddenNo = parseInt(document.getElementById('hiddenPluginNo').innerHTML);
|
||||
while (i > -1) {
|
||||
if (plugins[i].nodeType == Node.ELEMENT_NODE) {
|
||||
var isMessageless = true;
|
||||
@@ -165,7 +162,7 @@ function togglePlugins(evt) {
|
||||
}
|
||||
i--;
|
||||
}
|
||||
document.getElementById('hiddenPluginNo').textContent = hiddenNo;
|
||||
document.getElementById('hiddenPluginNo').innerHTML = hiddenNo;
|
||||
}
|
||||
function setupEventHandlers() {
|
||||
var i, elemArr;
|
||||
|
||||
@@ -1,121 +0,0 @@
|
||||
// Storage polyfill by Remy Sharp
|
||||
// https://gist.github.com/350433
|
||||
// Needed for IE7-
|
||||
|
||||
// Dependencies:
|
||||
// JSON (use json2.js if necessary)
|
||||
|
||||
// Tweaks by Joshua Bell (inexorabletash@gmail.com)
|
||||
// * URI-encode item keys
|
||||
// * Use String() for stringifying
|
||||
// * added length
|
||||
|
||||
if (!window.localStorage || !window.sessionStorage) (function() {
|
||||
|
||||
var Storage = function(type) {
|
||||
function createCookie(name, value, days) {
|
||||
var date, expires;
|
||||
|
||||
if (days) {
|
||||
date = new Date();
|
||||
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
|
||||
expires = "; expires=" + date.toGMTString();
|
||||
} else {
|
||||
expires = "";
|
||||
}
|
||||
document.cookie = name + "=" + value + expires + "; path=/";
|
||||
}
|
||||
|
||||
function readCookie(name) {
|
||||
var nameEQ = name + "=",
|
||||
ca = document.cookie.split(';'),
|
||||
i, c;
|
||||
|
||||
for (i = 0; i < ca.length; i++) {
|
||||
c = ca[i];
|
||||
while (c.charAt(0) == ' ') {
|
||||
c = c.substring(1, c.length);
|
||||
}
|
||||
|
||||
if (c.indexOf(nameEQ) == 0) {
|
||||
return c.substring(nameEQ.length, c.length);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function setData(data) {
|
||||
data = JSON.stringify(data);
|
||||
if (type == 'session') {
|
||||
window.name = data;
|
||||
} else {
|
||||
createCookie('localStorage', data, 365);
|
||||
}
|
||||
}
|
||||
|
||||
function clearData() {
|
||||
if (type == 'session') {
|
||||
window.name = '';
|
||||
} else {
|
||||
createCookie('localStorage', '', 365);
|
||||
}
|
||||
}
|
||||
|
||||
function getData() {
|
||||
var data = type == 'session' ? window.name : readCookie('localStorage');
|
||||
return data ? JSON.parse(data) : {};
|
||||
}
|
||||
|
||||
|
||||
// initialise if there's already data
|
||||
var data = getData();
|
||||
|
||||
function numKeys() {
|
||||
var n = 0;
|
||||
for (var k in data) {
|
||||
if (data.hasOwnProperty(k)) {
|
||||
n += 1;
|
||||
}
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
return {
|
||||
clear: function() {
|
||||
data = {};
|
||||
clearData();
|
||||
this.length = numKeys();
|
||||
},
|
||||
getItem: function(key) {
|
||||
key = encodeURIComponent(key);
|
||||
return data[key] === undefined ? null : data[key];
|
||||
},
|
||||
key: function(i) {
|
||||
// not perfect, but works
|
||||
var ctr = 0;
|
||||
for (var k in data) {
|
||||
if (ctr == i) return decodeURIComponent(k);
|
||||
else ctr++;
|
||||
}
|
||||
return null;
|
||||
},
|
||||
removeItem: function(key) {
|
||||
key = encodeURIComponent(key);
|
||||
delete data[key];
|
||||
setData(data);
|
||||
this.length = numKeys();
|
||||
},
|
||||
setItem: function(key, value) {
|
||||
key = encodeURIComponent(key);
|
||||
data[key] = String(value);
|
||||
setData(data);
|
||||
this.length = numKeys();
|
||||
},
|
||||
length: 0
|
||||
};
|
||||
};
|
||||
|
||||
if (!window.localStorage) window.localStorage = new Storage('local');
|
||||
if (!window.sessionStorage) window.sessionStorage = new Storage('session');
|
||||
|
||||
})();
|
||||
@@ -132,14 +132,6 @@ namespace boss {
|
||||
node.set_name("script");
|
||||
node.append_attribute("src").set_value("../resources/polyfill.js");
|
||||
node.text().set(" ");
|
||||
|
||||
node = head.append_child();
|
||||
node.set_name("script");
|
||||
node.append_attribute("src").set_value("../resources/storage.js");
|
||||
node.text().set(" ");
|
||||
|
||||
node = head.append_child(pugi::node_comment);
|
||||
node.set_value("[if IE 8]><script src='../resources/DOM-shim-ie8.js'></script><![endif]");
|
||||
}
|
||||
|
||||
inline void AppendNav(pugi::xml_node& body) {
|
||||
|
||||
Reference in New Issue
Block a user