mirror of https://github.com/gorhill/uBlock.git
This commit is contained in:
parent
1e2b584662
commit
cae7484be1
|
@ -45,10 +45,10 @@
|
||||||
--><a class="fa mustread" href="" target="_blank"></a>​<!--
|
--><a class="fa mustread" href="" target="_blank"></a>​<!--
|
||||||
--><span class="fa status unsecure" title="http"></span>​<!--
|
--><span class="fa status unsecure" title="http"></span>​<!--
|
||||||
--><span class="counts dim"></span>​<!--
|
--><span class="counts dim"></span>​<!--
|
||||||
--><span class="fa status obsolete" title="3pExternalListObsolete"></span>​<!--
|
--><span class="fa status obsolete" data-i18n-title="3pExternalListObsolete"></span>​<!--
|
||||||
--><span class="fa status cache"></span>​<!--
|
--><span class="fa status cache"></span>​<!--
|
||||||
--><span class="fa status updating" title="3pUpdating"></span>​<!--
|
--><span class="fa status updating" data-i18n-title="3pUpdating"></span>​<!--
|
||||||
--><span class="fa status failed" title="3pNetworkError"></span>
|
--><span class="fa status failed" data-i18n-title="3pNetworkError"></span>
|
||||||
</li>
|
</li>
|
||||||
<li class="listEntry toImport"><input type="checkbox" id="importLists"><label for="importLists" data-i18n="3pImport"></label><!--
|
<li class="listEntry toImport"><input type="checkbox" id="importLists"><label for="importLists" data-i18n="3pImport"></label><!--
|
||||||
--><a class="fa info towiki" href="https://github.com/gorhill/uBlock/wiki/Filter-lists-from-around-the-web" target="_blank"></a><!--
|
--><a class="fa info towiki" href="https://github.com/gorhill/uBlock/wiki/Filter-lists-from-around-the-web" target="_blank"></a><!--
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="cloudTools">
|
<div class="cloudTools">
|
||||||
<button id="cloudPush" type="button" class="custom" title="cloudPush"><span class="fa"></span></button>
|
<button id="cloudPush" type="button" class="custom" data-i18n-title="cloudPush"><span class="fa"></span></button>
|
||||||
<span id="cloudInfo" data-i18n="cloudNoData"></span>
|
<span id="cloudInfo" data-i18n="cloudNoData"></span>
|
||||||
<button id="cloudPull" type="button" class="custom" title="cloudPull" disabled><span class="fa"></span></button>
|
<button id="cloudPull" type="button" class="custom" data-i18n-title="cloudPull" disabled><span class="fa"></span></button>
|
||||||
<button id="cloudPullAndMerge" type="button" class="custom" title="cloudPullAndMerge" disabled><span class="fa"><span></span></span></button>
|
<button id="cloudPullAndMerge" type="button" class="custom" data-i18n-title="cloudPullAndMerge" disabled><span class="fa"><span></span></span></button>
|
||||||
</div>
|
</div>
|
||||||
<p id="cloudError"></p>
|
<p id="cloudError"></p>
|
||||||
<span id="cloudCog" class="fa"></span>
|
<span id="cloudCog" class="fa"></span>
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="dashboard-nav">
|
<div id="dashboard-nav">
|
||||||
<div id="dashboard-nav-widgets">
|
<div id="dashboard-nav-widgets">
|
||||||
<span class="hverbose" title="extName"><img src="img/ublock.svg"></span><!--
|
<span class="hverbose" data-i18n-title="extName"><img src="img/ublock.svg"></span><!--
|
||||||
--><a class="tabButton" href="#settings.html" data-i18n="settingsPageName"></a><!--
|
--><a class="tabButton" href="#settings.html" data-i18n="settingsPageName"></a><!--
|
||||||
--><a class="tabButton" href="#3p-filters.html" data-i18n="3pPageName"></a><!--
|
--><a class="tabButton" href="#3p-filters.html" data-i18n="3pPageName"></a><!--
|
||||||
--><a class="tabButton" href="#1p-filters.html" data-i18n="1pPageName"></a><!--
|
--><a class="tabButton" href="#1p-filters.html" data-i18n="1pPageName"></a><!--
|
||||||
|
|
|
@ -70,7 +70,7 @@ var renderFilterLists = function(soft) {
|
||||||
listEntryTemplate = uDom('#templates .listEntry'),
|
listEntryTemplate = uDom('#templates .listEntry'),
|
||||||
listStatsTemplate = vAPI.i18n('3pListsOfBlockedHostsPerListStats'),
|
listStatsTemplate = vAPI.i18n('3pListsOfBlockedHostsPerListStats'),
|
||||||
renderElapsedTimeToString = vAPI.i18n.renderElapsedTimeToString,
|
renderElapsedTimeToString = vAPI.i18n.renderElapsedTimeToString,
|
||||||
groupNames = new Map();
|
groupNames = new Map([ [ 'user', '' ] ]);
|
||||||
|
|
||||||
// Assemble a pretty list name if possible
|
// Assemble a pretty list name if possible
|
||||||
var listNameFromListKey = function(listKey) {
|
var listNameFromListKey = function(listKey) {
|
||||||
|
@ -172,18 +172,12 @@ var renderFilterLists = function(soft) {
|
||||||
};
|
};
|
||||||
|
|
||||||
var liFromListGroup = function(groupKey, listKeys) {
|
var liFromListGroup = function(groupKey, listKeys) {
|
||||||
var liGroup = document.querySelector('#lists > .groupEntry[data-groupkey="' + groupKey + '"]');
|
let liGroup = document.querySelector('#lists > .groupEntry[data-groupkey="' + groupKey + '"]');
|
||||||
if ( liGroup === null ) {
|
if ( liGroup === null ) {
|
||||||
liGroup = listGroupTemplate.clone().nodeAt(0);
|
liGroup = listGroupTemplate.clone().nodeAt(0);
|
||||||
var groupName = groupNames.get(groupKey);
|
let groupName = groupNames.get(groupKey);
|
||||||
if ( groupName === undefined ) {
|
if ( groupName === undefined ) {
|
||||||
groupName = vAPI.i18n('3pGroup' + groupKey.charAt(0).toUpperCase() + groupKey.slice(1));
|
groupName = vAPI.i18n('3pGroup' + groupKey.charAt(0).toUpperCase() + groupKey.slice(1));
|
||||||
// Category "Social" is being renamed "Annoyances": ensure
|
|
||||||
// smooth transition.
|
|
||||||
// TODO: remove when majority of users are post-1.14.8 uBO.
|
|
||||||
if ( groupName === '' && groupKey === 'social' ) {
|
|
||||||
groupName = vAPI.i18n('3pGroupAnnoyances');
|
|
||||||
}
|
|
||||||
groupNames.set(groupKey, groupName);
|
groupNames.set(groupKey, groupName);
|
||||||
}
|
}
|
||||||
if ( groupName !== '' ) {
|
if ( groupName !== '' ) {
|
||||||
|
@ -193,15 +187,15 @@ var renderFilterLists = function(soft) {
|
||||||
if ( liGroup.querySelector('.geName:empty') === null ) {
|
if ( liGroup.querySelector('.geName:empty') === null ) {
|
||||||
liGroup.querySelector('.geCount').textContent = listEntryCountFromGroup(listKeys);
|
liGroup.querySelector('.geCount').textContent = listEntryCountFromGroup(listKeys);
|
||||||
}
|
}
|
||||||
var hideUnused = mustHideUnusedLists(groupKey);
|
let hideUnused = mustHideUnusedLists(groupKey);
|
||||||
liGroup.classList.toggle('hideUnused', hideUnused);
|
liGroup.classList.toggle('hideUnused', hideUnused);
|
||||||
var ulGroup = liGroup.querySelector('.listEntries');
|
let ulGroup = liGroup.querySelector('.listEntries');
|
||||||
if ( !listKeys ) { return liGroup; }
|
if ( !listKeys ) { return liGroup; }
|
||||||
listKeys.sort(function(a, b) {
|
listKeys.sort(function(a, b) {
|
||||||
return (listDetails.available[a].title || '').localeCompare(listDetails.available[b].title || '');
|
return (listDetails.available[a].title || '').localeCompare(listDetails.available[b].title || '');
|
||||||
});
|
});
|
||||||
for ( var i = 0; i < listKeys.length; i++ ) {
|
for ( let i = 0; i < listKeys.length; i++ ) {
|
||||||
var liEntry = liFromListEntry(
|
let liEntry = liFromListEntry(
|
||||||
listKeys[i],
|
listKeys[i],
|
||||||
ulGroup.children[i],
|
ulGroup.children[i],
|
||||||
hideUnused
|
hideUnused
|
||||||
|
@ -214,18 +208,19 @@ var renderFilterLists = function(soft) {
|
||||||
};
|
};
|
||||||
|
|
||||||
var groupsFromLists = function(lists) {
|
var groupsFromLists = function(lists) {
|
||||||
var groups = {};
|
let groups = new Map();
|
||||||
var listKeys = Object.keys(lists);
|
let listKeys = Object.keys(lists);
|
||||||
var i = listKeys.length;
|
for ( let listKey of listKeys ) {
|
||||||
var listKey, list, groupKey;
|
let list = lists[listKey];
|
||||||
while ( i-- ) {
|
let groupKey = list.group || 'nogroup';
|
||||||
listKey = listKeys[i];
|
if ( groupKey === 'social' ) {
|
||||||
list = lists[listKey];
|
groupKey = 'annoyances';
|
||||||
groupKey = list.group || 'nogroup';
|
|
||||||
if ( groups[groupKey] === undefined ) {
|
|
||||||
groups[groupKey] = [];
|
|
||||||
}
|
}
|
||||||
groups[groupKey].push(listKey);
|
let memberKeys = groups.get(groupKey);
|
||||||
|
if ( memberKeys === undefined ) {
|
||||||
|
groups.set(groupKey, (memberKeys = []));
|
||||||
|
}
|
||||||
|
memberKeys.push(listKey);
|
||||||
}
|
}
|
||||||
return groups;
|
return groups;
|
||||||
};
|
};
|
||||||
|
@ -248,22 +243,21 @@ var renderFilterLists = function(soft) {
|
||||||
// Visually split the filter lists in purpose-based groups
|
// Visually split the filter lists in purpose-based groups
|
||||||
var ulLists = document.querySelector('#lists'),
|
var ulLists = document.querySelector('#lists'),
|
||||||
groups = groupsFromLists(details.available),
|
groups = groupsFromLists(details.available),
|
||||||
liGroup, i, groupKey,
|
|
||||||
groupKeys = [
|
groupKeys = [
|
||||||
'user',
|
'user',
|
||||||
'default',
|
'default',
|
||||||
'ads',
|
'ads',
|
||||||
'privacy',
|
'privacy',
|
||||||
'malware',
|
'malware',
|
||||||
'social',
|
'annoyances',
|
||||||
'multipurpose',
|
'multipurpose',
|
||||||
'regions',
|
'regions',
|
||||||
'custom'
|
'custom'
|
||||||
];
|
];
|
||||||
document.body.classList.toggle('hideUnused', mustHideUnusedLists('*'));
|
document.body.classList.toggle('hideUnused', mustHideUnusedLists('*'));
|
||||||
for ( i = 0; i < groupKeys.length; i++ ) {
|
for ( let i = 0; i < groupKeys.length; i++ ) {
|
||||||
groupKey = groupKeys[i];
|
let groupKey = groupKeys[i];
|
||||||
liGroup = liFromListGroup(groupKey, groups[groupKey]);
|
let liGroup = liFromListGroup(groupKey, groups.get(groupKey));
|
||||||
liGroup.setAttribute('data-groupkey', groupKey);
|
liGroup.setAttribute('data-groupkey', groupKey);
|
||||||
liGroup.classList.toggle(
|
liGroup.classList.toggle(
|
||||||
'collapsed',
|
'collapsed',
|
||||||
|
@ -272,13 +266,12 @@ var renderFilterLists = function(soft) {
|
||||||
if ( liGroup.parentElement === null ) {
|
if ( liGroup.parentElement === null ) {
|
||||||
ulLists.appendChild(liGroup);
|
ulLists.appendChild(liGroup);
|
||||||
}
|
}
|
||||||
delete groups[groupKey];
|
groups.delete(groupKey);
|
||||||
}
|
}
|
||||||
// For all groups not covered above (if any left)
|
// For all groups not covered above (if any left)
|
||||||
groupKeys = Object.keys(groups);
|
groupKeys = Object.keys(groups);
|
||||||
for ( i = 0; i < groupKeys.length; i++ ) {
|
for ( let groupKey of groupKeys.keys() ) {
|
||||||
groupKey = groupKeys[i];
|
ulLists.appendChild(liFromListGroup(groupKey, groupKey));
|
||||||
ulLists.appendChild(liFromListGroup(groupKey, groups[groupKey]));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uDom('#lists .listEntries .listEntry.discard').remove();
|
uDom('#lists .listEntries .listEntry.discard').remove();
|
||||||
|
|
|
@ -189,11 +189,11 @@ vAPI.i18n.render = function(context) {
|
||||||
safeTextToDOM(text, elem);
|
safeTextToDOM(text, elem);
|
||||||
}
|
}
|
||||||
|
|
||||||
elems = root.querySelectorAll('[title]');
|
elems = root.querySelectorAll('[data-i18n-title]');
|
||||||
n = elems.length;
|
n = elems.length;
|
||||||
for ( i = 0; i < n; i++ ) {
|
for ( i = 0; i < n; i++ ) {
|
||||||
elem = elems[i];
|
elem = elems[i];
|
||||||
text = vAPI.i18n(elem.getAttribute('title'));
|
text = vAPI.i18n(elem.getAttribute('data-i18n-title'));
|
||||||
if ( !text ) { continue; }
|
if ( !text ) { continue; }
|
||||||
elem.setAttribute('title', text);
|
elem.setAttribute('title', text);
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
<span id="clean" class="button fa disabled"></span>
|
<span id="clean" class="button fa disabled"></span>
|
||||||
<span id="clear" class="button fa disabled"></span>
|
<span id="clear" class="button fa disabled"></span>
|
||||||
<span id="filterButton" class="button fa"></span><input id="filterInput" type="text" placeholder="logFilterPrompt">
|
<span id="filterButton" class="button fa"></span><input id="filterInput" type="text" placeholder="logFilterPrompt">
|
||||||
<input id="maxEntries" type="text" size="5" title="logMaxEntriesTip">
|
<input id="maxEntries" type="text" size="5" data-i18n-title="logMaxEntriesTip">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="vscrollable">
|
<div class="vscrollable">
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
<li><input id="tooltips-disabled" type="checkbox" data-setting-name="tooltipsDisabled" data-setting-type="bool"><label data-i18n="settingsTooltipsPrompt" for="tooltips-disabled"></label>
|
<li><input id="tooltips-disabled" type="checkbox" data-setting-name="tooltipsDisabled" data-setting-type="bool"><label data-i18n="settingsTooltipsPrompt" for="tooltips-disabled"></label>
|
||||||
<li><input id="color-blind-friendly" type="checkbox" data-setting-name="colorBlindFriendly" data-setting-type="bool"><label data-i18n="settingsColorBlindPrompt" for="color-blind-friendly"></label>
|
<li><input id="color-blind-friendly" type="checkbox" data-setting-name="colorBlindFriendly" data-setting-type="bool"><label data-i18n="settingsColorBlindPrompt" for="color-blind-friendly"></label>
|
||||||
<li><input id="cloud-storage-enabled" type="checkbox" data-setting-name="cloudStorageEnabled" data-setting-type="bool"><label data-i18n="settingsCloudStorageEnabledPrompt" for="cloud-storage-enabled"></label> <a class="fa info" href="https://github.com/gorhill/uBlock/wiki/Cloud-storage" target="_blank"></a>
|
<li><input id="cloud-storage-enabled" type="checkbox" data-setting-name="cloudStorageEnabled" data-setting-type="bool"><label data-i18n="settingsCloudStorageEnabledPrompt" for="cloud-storage-enabled"></label> <a class="fa info" href="https://github.com/gorhill/uBlock/wiki/Cloud-storage" target="_blank"></a>
|
||||||
<li><input id="advanced-user-enabled" type="checkbox" data-setting-name="advancedUserEnabled" data-setting-type="bool"><label data-i18n="settingsAdvancedUserPrompt" for="advanced-user-enabled"></label> <a class="fa info" href="advanced-settings.html" title="settingsAdvancedUserSettings"></a>
|
<li><input id="advanced-user-enabled" type="checkbox" data-setting-name="advancedUserEnabled" data-setting-type="bool"><label data-i18n="settingsAdvancedUserPrompt" for="advanced-user-enabled"></label> <a class="fa info" href="advanced-settings.html" data-i18n-title="settingsAdvancedUserSettings"></a>
|
||||||
<li class="subgroup"><span data-i18n="3pGroupPrivacy"></span><ul>
|
<li class="subgroup"><span data-i18n="3pGroupPrivacy"></span><ul>
|
||||||
<li><input id="prefetching-disabled" type="checkbox" data-setting-name="prefetchingDisabled" data-setting-type="bool"><label data-i18n="settingsPrefetchingDisabledPrompt" for="prefetching-disabled"></label> <a class="fa info" href="https://wikipedia.org/wiki/Link_prefetching#Issues_and_criticisms" target="_blank"></a>
|
<li><input id="prefetching-disabled" type="checkbox" data-setting-name="prefetchingDisabled" data-setting-type="bool"><label data-i18n="settingsPrefetchingDisabledPrompt" for="prefetching-disabled"></label> <a class="fa info" href="https://wikipedia.org/wiki/Link_prefetching#Issues_and_criticisms" target="_blank"></a>
|
||||||
<li><input id="hyperlink-auditing-disabled" type="checkbox" data-setting-name="hyperlinkAuditingDisabled" data-setting-type="bool"><label data-i18n="settingsHyperlinkAuditingDisabledPrompt" for="hyperlink-auditing-disabled"></label> <a class="fa info important" href="https://github.com/gorhill/uBlock/wiki/Dashboard:-Settings#disable-hyperlink-auditing" target="_blank"></a>
|
<li><input id="hyperlink-auditing-disabled" type="checkbox" data-setting-name="hyperlinkAuditingDisabled" data-setting-type="bool"><label data-i18n="settingsHyperlinkAuditingDisabledPrompt" for="hyperlink-auditing-disabled"></label> <a class="fa info important" href="https://github.com/gorhill/uBlock/wiki/Dashboard:-Settings#disable-hyperlink-auditing" target="_blank"></a>
|
||||||
|
|
Loading…
Reference in New Issue