mirror of https://github.com/gorhill/uBlock.git
this fixes #30, waiting for translations before release
This commit is contained in:
parent
77895a6a57
commit
4bb07f1a5b
|
@ -17,10 +17,17 @@ ul {
|
|||
list-style-type: none;
|
||||
}
|
||||
ul > li {
|
||||
margin: 0.5em 0 3px 0;
|
||||
padding: 0;
|
||||
font-size: 15px;
|
||||
list-style-type: none;
|
||||
}
|
||||
ul > li > ul > li {
|
||||
font-size: 14px;
|
||||
margin: 0 0 0 1em;
|
||||
}
|
||||
.dim {
|
||||
color: #444;
|
||||
color: #888;
|
||||
}
|
||||
.userUbiquitousHosts {
|
||||
font-size: smaller;
|
||||
|
@ -33,17 +40,15 @@ ul > li {
|
|||
|
||||
<body>
|
||||
|
||||
<p id="listsOfBlockedHostsPrompt"></p>
|
||||
<ul id="blacklistTemplate" style="display:none">
|
||||
<li class="blacklistDetails"><input type="checkbox"> <a href="" type="text/plain"></a>:
|
||||
<span class="dim"></span>
|
||||
</ul>
|
||||
<ul id="blacklists" style="margin:0.5em 0 0 0;padding-left:1em;list-style-type:none">
|
||||
<ul id="options" style="margin:0.5em 0 0 0;padding-left:1em;list-style-type:none">
|
||||
<li><button id="blacklistsApply" disabled="true" data-i18n="3pApplyChanges"></button>
|
||||
<li style="margin-top:0.75em"><input type="checkbox" id="parseAllABPHideFilters"><label data-i18n="3pParseAllABPHideFiltersPrompt1"></label>
|
||||
<span class="dim" id="3pParseAllABPHideFiltersPrompt2"></span>
|
||||
<button class="whatisthis"></button>
|
||||
<div class="whatisthis-expandable para" data-i18n="3pParseAllABPHideFiltersInfo"></div>
|
||||
<li style="margin-top:0.75em"><button id="blacklistsApply" disabled="true" data-i18n="3pApplyChanges"></button>
|
||||
<li style="margin-top:0.75em"><p id="listsOfBlockedHostsPrompt"></p>
|
||||
</ul>
|
||||
<ul id="lists" style="margin:0.5em 0 0 0;padding-left:1em;list-style-type:none">
|
||||
</ul>
|
||||
|
||||
<script src="js/udom.js"></script>
|
||||
|
|
|
@ -72,8 +72,8 @@
|
|||
"description":"English: Show the number of blocked requests on the icon"
|
||||
},
|
||||
"3pListsOfBlockedHostsPrompt":{
|
||||
"message":"{{ubiquitousBlacklistCount}} network filters from:",
|
||||
"description":"English: {{ubiquitousBlacklistCount}} network filters from:"
|
||||
"message":"{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:",
|
||||
"description":"English: {{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:"
|
||||
},
|
||||
"3pListsOfBlockedHostsPerListStats":{
|
||||
"message":"{{used}} used out of {{total}}",
|
||||
|
@ -99,6 +99,30 @@
|
|||
"message":"Apply changes",
|
||||
"description":"English: Apply changes"
|
||||
},
|
||||
"3pGroupAds":{
|
||||
"message":"Ads",
|
||||
"description":"English: Ads"
|
||||
},
|
||||
"3pGroupPrivacy":{
|
||||
"message":"Privacy",
|
||||
"description":"English: Privacy"
|
||||
},
|
||||
"3pGroupMalware":{
|
||||
"message":"Malware",
|
||||
"description":"English: Malware"
|
||||
},
|
||||
"3pGroupSocial":{
|
||||
"message":"Social",
|
||||
"description":"English: Social"
|
||||
},
|
||||
"3pGroupMultipurpose":{
|
||||
"message":"Multipurpose",
|
||||
"description":"English: Multipurpose"
|
||||
},
|
||||
"3pGroupRegions":{
|
||||
"message":"Regions, languages",
|
||||
"description":"English: Regions, languages"
|
||||
},
|
||||
"1pFormatHint":{
|
||||
"message":"One filter per line. A filter can be a plain hostname, or an Adblock Plus-compatible filter. Lines prefixed with ‘!’ will be ignored.",
|
||||
"description":"English: One filter per line. A filter can be a plain hostname, or an Adblock Plus-compatible filter. Lines prefixed with ‘!’ will be ignored."
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,160 +1,206 @@
|
|||
{
|
||||
"easylist-downloads.adblockplus.org/easylist.txt": {
|
||||
"title": "EasyList",
|
||||
"group": "ads"
|
||||
},
|
||||
"easylist-downloads.adblockplus.org/easyprivacy.txt": {
|
||||
"title": "EasyPrivacy",
|
||||
"group": "privacy"
|
||||
},
|
||||
"mirror1.malwaredomains.com/files/immortal_domains.txt": {
|
||||
"title": "Long-lived malware domains"
|
||||
"title": "Malware domains (long-lived)",
|
||||
"group": "malware"
|
||||
},
|
||||
"mirror1.malwaredomains.com/files/justdomains": {
|
||||
"title": "Malware domains"
|
||||
"title": "Malware domains",
|
||||
"group": "malware"
|
||||
},
|
||||
"pgl.yoyo.org/as/serverlist": {
|
||||
"title": "Peter Lowe’s Ad server list"
|
||||
"title": "Peter Lowe’s Ad server list",
|
||||
"group": "ads"
|
||||
},
|
||||
"www.malwaredomainlist.com/hostslist/hosts.txt": {
|
||||
"title": "Malware Domain List"
|
||||
"title": "Malware Domain List",
|
||||
"group": "malware"
|
||||
},
|
||||
"hosts-file.net/ad-servers": {
|
||||
"off": true,
|
||||
"title": "hpHosts’s Ad and tracking servers"
|
||||
},
|
||||
"someonewhocares.org/hosts/hosts": {
|
||||
"off": true,
|
||||
"title": "Dan Pollock’s hosts file"
|
||||
},
|
||||
"winhelp2002.mvps.org/hosts.txt": {
|
||||
"off": true,
|
||||
"title": "MVPS HOSTS"
|
||||
},
|
||||
"spam404bl.com/spam404scamlist.txt": {
|
||||
"off": true,
|
||||
"title": "Spam404"
|
||||
},
|
||||
"easylist-downloads.adblockplus.org/easylist.txt": {
|
||||
"title": "EasyList"
|
||||
"title": "hpHosts’s Ad and tracking servers",
|
||||
"group": "multipurpose"
|
||||
},
|
||||
"easylist-downloads.adblockplus.org/easylist_noelemhide.txt": {
|
||||
"off": true,
|
||||
"title": "EasyList without element hiding rules"
|
||||
},
|
||||
"easylist-downloads.adblockplus.org/easyprivacy.txt": {
|
||||
"title": "EasyPrivacy"
|
||||
},
|
||||
"easylist-downloads.adblockplus.org/fanboy-annoyance.txt": {
|
||||
"off": true,
|
||||
"title": "Fanboy’s Annoyance List"
|
||||
"title": "EasyList without element hiding rules",
|
||||
"group": "ads"
|
||||
},
|
||||
"www.fanboy.co.nz/enhancedstats.txt": {
|
||||
"off": true,
|
||||
"title": "Fanboy’s Enhanced Tracking List"
|
||||
"title": "Fanboy’s Enhanced Tracking List",
|
||||
"group": "privacy"
|
||||
},
|
||||
"easylist-downloads.adblockplus.org/fanboy-annoyance.txt": {
|
||||
"off": true,
|
||||
"title": "Fanboy’s Annoyance List",
|
||||
"group": "social"
|
||||
},
|
||||
"easylist-downloads.adblockplus.org/fanboy-social.txt": {
|
||||
"off": true,
|
||||
"title": "Fanboy’s Social Blocking List",
|
||||
"group": "social"
|
||||
},
|
||||
"www.fanboy.co.nz/fanboy-antifacebook.txt": {
|
||||
"off": true,
|
||||
"title": "Fanboy’s Anti-Facebook (see warning inside list)"
|
||||
"title": "Fanboy’s Anti-Facebook (see warning inside list)",
|
||||
"group": "social"
|
||||
},
|
||||
"raw.githubusercontent.com/reek/anti-adblock-killer/master/anti-adblock-killer-filters.txt": {
|
||||
"off": true,
|
||||
"title": "Anti-Adblock Killer | Filters for Adblockers"
|
||||
"title": "Anti-Adblock Killer | Filters for Adblockers",
|
||||
"group": "ads"
|
||||
},
|
||||
"someonewhocares.org/hosts/hosts": {
|
||||
"off": true,
|
||||
"title": "Dan Pollock’s hosts file",
|
||||
"group": "multipurpose"
|
||||
},
|
||||
"winhelp2002.mvps.org/hosts.txt": {
|
||||
"off": true,
|
||||
"title": "MVPS HOSTS",
|
||||
"group": "multipurpose"
|
||||
},
|
||||
"spam404bl.com/spam404scamlist.txt": {
|
||||
"off": true,
|
||||
"title": "Spam404",
|
||||
"group": "malware"
|
||||
},
|
||||
"easylist-downloads.adblockplus.org/easylistgermany.txt": {
|
||||
"off": true,
|
||||
"title": "EasyList Germany"
|
||||
"title": "DEU: EasyList Germany",
|
||||
"group": "regions"
|
||||
},
|
||||
"easylist-downloads.adblockplus.org/easylistitaly.txt": {
|
||||
"off": true,
|
||||
"title": "EasyList Italy"
|
||||
"title": "ITA: EasyList Italy",
|
||||
"group": "regions"
|
||||
},
|
||||
"easylist-downloads.adblockplus.org/easylistdutch.txt": {
|
||||
"off": true,
|
||||
"title": "EasyList Dutch"
|
||||
"title": "NLD: EasyList Dutch",
|
||||
"group": "regions"
|
||||
},
|
||||
"easylist-downloads.adblockplus.org/liste_fr.txt": {
|
||||
"off": true,
|
||||
"title": "EasyList Liste FR"
|
||||
"title": "FRA: EasyList Liste FR",
|
||||
"group": "regions"
|
||||
},
|
||||
"easylist-downloads.adblockplus.org/advblock.txt": {
|
||||
"off": true,
|
||||
"title": "RU AdList (Дополнительная региональная подписка)"
|
||||
"title": "RUS: RU AdList (Дополнительная региональная подписка)",
|
||||
"group": "regions"
|
||||
},
|
||||
"easylist-downloads.adblockplus.org/bitblock.txt": {
|
||||
"off": true,
|
||||
"title": "RU BitBlock List (Дополнительная подписка фильтров)"
|
||||
"title": "RUS: BitBlock List (Дополнительная подписка фильтров)",
|
||||
"group": "regions"
|
||||
},
|
||||
"easylist-downloads.adblockplus.org/easylistchina.txt": {
|
||||
"off": true,
|
||||
"title": "EasyList China (中文)"
|
||||
"title": "CHN: EasyList China (中文)",
|
||||
"group": "regions"
|
||||
},
|
||||
"cjxlist1.googlecode.com/svn/cjxlist.txt": {
|
||||
"off": true,
|
||||
"title": "cjxlist (main focus on Chinese sites)"
|
||||
"title": "CHN: China: cjxlist (main focus on Chinese sites)",
|
||||
"group": "regions"
|
||||
},
|
||||
"adblock-chinalist.googlecode.com/svn/trunk/adblock.txt": {
|
||||
"off": true,
|
||||
"title": "EasyList China (obsolete: to be removed)"
|
||||
"title": "CHN: EasyList China (obsolete: to be removed)",
|
||||
"group": "regions"
|
||||
},
|
||||
"adblock-plus-japanese-filter.googlecode.com/hg/abp_jp.txt": {
|
||||
"off": true,
|
||||
"title": "ABP Japanese filters (の日本用フィルタ)"
|
||||
"title": "JPN: ABP Japanese filters (の日本用フィルタ)",
|
||||
"group": "regions"
|
||||
},
|
||||
"margevicius.lt/AdBlockPlusLithuania.txt": {
|
||||
"off": true,
|
||||
"title": "Adblock Plus Lithuania"
|
||||
"title": "LTU: Adblock Plus Lithuania",
|
||||
"group": "regions"
|
||||
},
|
||||
"stanev.org/abp/adblock_bg.txt": {
|
||||
"off": true,
|
||||
"title": "Bulgarian Adblock list"
|
||||
"title": "BGR: Bulgarian Adblock list",
|
||||
"group": "regions"
|
||||
},
|
||||
"indonesianadblockrules.googlecode.com/hg/subscriptions/abpindo.txt": {
|
||||
"off": true,
|
||||
"title": "ABPindo"
|
||||
"title": "IDN: ABPindo",
|
||||
"group": "regions"
|
||||
},
|
||||
"liste-ar-adblock.googlecode.com/hg/Liste_AR.txt": {
|
||||
"off": true,
|
||||
"title": "Liste AR"
|
||||
"title": "ara: Liste AR",
|
||||
"group": "regions"
|
||||
},
|
||||
"raw.githubusercontent.com/tomasko126/easylistczechandslovak/master/filters.txt": {
|
||||
"off": true,
|
||||
"title": "EasyList Czech and Slovak"
|
||||
"title": "CZE, SVK: EasyList Czech and Slovak",
|
||||
"group": "regions"
|
||||
},
|
||||
"raw.githubusercontent.com/adblockpolska/Adblock_PL_List/master/adblock_polska.txt": {
|
||||
"off": true,
|
||||
"title": "Adblock Polska"
|
||||
"title": "POL: Adblock Polska",
|
||||
"group": "regions"
|
||||
},
|
||||
"raw.githubusercontent.com/AdBlockPlusIsrael/EasyListHebrew/master/EasyListHebrew.txt": {
|
||||
"off": true,
|
||||
"title": "EasyList Hebrew"
|
||||
"title": "ISR: EasyList Hebrew",
|
||||
"group": "regions"
|
||||
},
|
||||
"download.wiltteri.net/wiltteri.txt": {
|
||||
"off": true,
|
||||
"title": "Wiltteri"
|
||||
"title": "FIN: Wiltteri",
|
||||
"group": "regions"
|
||||
},
|
||||
"home.fredfiber.no/langsholt/adblock.txt": {
|
||||
"off": true,
|
||||
"title": "Norsk adblockliste (norsk)"
|
||||
"title": "NOR: Norsk adblockliste",
|
||||
"group": "regions"
|
||||
},
|
||||
"www.fanboy.co.nz/fanboy-swedish.txt": {
|
||||
"off": true,
|
||||
"title": "Fanboy's Swedish"
|
||||
"title": "SWE: Fanboy's Swedish",
|
||||
"group": "regions"
|
||||
},
|
||||
"adblock.gardar.net/is.abp.txt": {
|
||||
"off": true,
|
||||
"title": "Icelandic ABP List (islenska)"
|
||||
"title": "ISL: Icelandic ABP List",
|
||||
"group": "regions"
|
||||
},
|
||||
"adblock.schack.dk/block.txt": {
|
||||
"off": true,
|
||||
"title": "Schacks Adblock Plus liste (dansk)"
|
||||
"title": "DNK: Schacks Adblock Plus liste",
|
||||
"group": "regions"
|
||||
},
|
||||
"www.void.gr/kargig/void-gr-filters.txt": {
|
||||
"off": true,
|
||||
"title": "Greek AdBlock Filter"
|
||||
"title": "GRC: Greek AdBlock Filter",
|
||||
"group": "regions"
|
||||
},
|
||||
"abp.mozilla-hispano.org/nauscopio/filtros.txt": {
|
||||
"off": true,
|
||||
"title": "Filtros Nauscopicos"
|
||||
"title": "ESP: Filtros Nauscopicos",
|
||||
"group": "regions"
|
||||
},
|
||||
"www.hufilter.hu/hufilter.txt": {
|
||||
"off": true,
|
||||
"title": "hufilter (magyar)"
|
||||
"title": "HUN: hufilter (magyar)",
|
||||
"group": "regions"
|
||||
},
|
||||
"dl.dropboxusercontent.com/u/1289327/abpxfiles/filtri.txt": {
|
||||
"off": true,
|
||||
"title": "ABP X Files"
|
||||
"title": "ITA: ABP X Files",
|
||||
"group": "regions"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ THIRDPARTY_REMOTEURLS=(
|
|||
'https://easylist-downloads.adblockplus.org/easylist_noelemhide.txt'
|
||||
'https://easylist-downloads.adblockplus.org/easyprivacy.txt'
|
||||
'https://easylist-downloads.adblockplus.org/fanboy-annoyance.txt'
|
||||
'https://easylist-downloads.adblockplus.org/fanboy-social.txt'
|
||||
'https://www.fanboy.co.nz/enhancedstats.txt'
|
||||
'https://www.fanboy.co.nz/fanboy-antifacebook.txt'
|
||||
'https://raw.githubusercontent.com/reek/anti-adblock-killer/master/anti-adblock-killer-filters.txt'
|
||||
|
@ -65,6 +66,7 @@ THIRDPARTY_LOCALURLS=(
|
|||
'thirdparties/easylist-downloads.adblockplus.org/easylist_noelemhide.txt'
|
||||
'thirdparties/easylist-downloads.adblockplus.org/easyprivacy.txt'
|
||||
'thirdparties/easylist-downloads.adblockplus.org/fanboy-annoyance.txt'
|
||||
'thirdparties/easylist-downloads.adblockplus.org/fanboy-social.txt'
|
||||
'thirdparties/www.fanboy.co.nz/enhancedstats.txt'
|
||||
'thirdparties/www.fanboy.co.nz/fanboy-antifacebook.txt'
|
||||
'thirdparties/raw.githubusercontent.com/reek/anti-adblock-killer/master/anti-adblock-killer-filters.txt'
|
||||
|
|
131
js/3p-filters.js
131
js/3p-filters.js
|
@ -57,16 +57,7 @@ var getµb = function() {
|
|||
/******************************************************************************/
|
||||
|
||||
var renderNumber = function(value) {
|
||||
// TODO: localization
|
||||
if ( +value > 1000 ) {
|
||||
value = value.toString();
|
||||
var i = value.length - 3;
|
||||
while ( i > 0 ) {
|
||||
value = value.slice(0, i) + ',' + value.slice(i);
|
||||
i -= 3;
|
||||
}
|
||||
}
|
||||
return value;
|
||||
return value.toLocaleString();
|
||||
};
|
||||
|
||||
/******************************************************************************/
|
||||
|
@ -75,17 +66,18 @@ var renderNumber = function(value) {
|
|||
|
||||
var renderBlacklists = function() {
|
||||
// empty list first
|
||||
uDom('#blacklists .blacklistDetails').remove();
|
||||
uDom('#lists .listDetails').remove();
|
||||
|
||||
var µb = getµb();
|
||||
|
||||
uDom('#listsOfBlockedHostsPrompt').text(
|
||||
chrome.i18n.getMessage('3pListsOfBlockedHostsPrompt')
|
||||
.replace('{{ubiquitousBlacklistCount}}', renderNumber(µb.abpFilters.getFilterCount()))
|
||||
.replace('{{netFilterCount}}', renderNumber(µb.abpFilters.getFilterCount()))
|
||||
.replace('{{cosmeticFilterCount}}', renderNumber(µb.abpHideFilters.getFilterCount()))
|
||||
);
|
||||
|
||||
// Assemble a pretty blacklist name if possible
|
||||
var prettifyListName = function(blacklistTitle, blacklistHref) {
|
||||
var htmlFromListName = function(blacklistTitle, blacklistHref) {
|
||||
if ( blacklistHref === µb.userFiltersPath ) {
|
||||
return userListName;
|
||||
}
|
||||
|
@ -116,29 +108,88 @@ var renderBlacklists = function() {
|
|||
};
|
||||
|
||||
var listStatsTemplate = chrome.i18n.getMessage('3pListsOfBlockedHostsPerListStats');
|
||||
var blacklists = µb.remoteBlacklists;
|
||||
var ul = uDom('#blacklists');
|
||||
var keys = Object.keys(blacklists);
|
||||
var i = keys.length;
|
||||
var blacklist, blacklistHref;
|
||||
var liTemplate = uDom('#blacklistTemplate .blacklistDetails').first();
|
||||
var li, text;
|
||||
while ( i-- ) {
|
||||
blacklistHref = keys[i];
|
||||
blacklist = blacklists[blacklistHref];
|
||||
li = liTemplate.clone();
|
||||
li.find('input').prop('checked', !blacklist.off);
|
||||
li.find('a')
|
||||
.attr('href', encodeURI(blacklistHref))
|
||||
.html(prettifyListName(blacklist.title, blacklistHref));
|
||||
text = listStatsTemplate
|
||||
.replace('{{used}}', !blacklist.off && !isNaN(+blacklist.entryUsedCount) ? renderNumber(blacklist.entryUsedCount) : '0')
|
||||
.replace('{{total}}', !isNaN(+blacklist.entryCount) ? renderNumber(blacklist.entryCount) : '?')
|
||||
;
|
||||
li.find('span').text(text);
|
||||
ul.prepend(li);
|
||||
|
||||
var htmlFromBranch = function(groupKey, listKeys, lists) {
|
||||
listKeys.sort(function(a, b) {
|
||||
return lists[a].title.localeCompare(lists[b].title);
|
||||
});
|
||||
var html = [
|
||||
'<li>',
|
||||
chrome.i18n.getMessage('3pGroup' + groupKey.charAt(0).toUpperCase() + groupKey.slice(1)),
|
||||
'<ul>'
|
||||
];
|
||||
var listEntryTemplate = [
|
||||
'<li class="listDetails">',
|
||||
'<input type="checkbox" {{checked}}>',
|
||||
' ',
|
||||
'<a href="{{URL}}" type="text/plain">',
|
||||
'{{name}}',
|
||||
'</a>',
|
||||
': ',
|
||||
'<span class="dim">',
|
||||
listStatsTemplate,
|
||||
'</span>'
|
||||
].join('');
|
||||
var listKey, list, listEntry;
|
||||
for ( var i = 0; i < listKeys.length; i++ ) {
|
||||
listKey = listKeys[i];
|
||||
list = lists[listKey];
|
||||
listEntry = listEntryTemplate
|
||||
.replace('{{checked}}', list.off ? '' : 'checked')
|
||||
.replace('{{URL}}', encodeURI(listKey))
|
||||
.replace('{{name}}', htmlFromListName(list.title, listKey))
|
||||
.replace('{{used}}', !list.off && !isNaN(+list.entryUsedCount) ? renderNumber(list.entryUsedCount) : '0')
|
||||
.replace('{{total}}', !isNaN(+list.entryCount) ? renderNumber(list.entryCount) : '?')
|
||||
html.push(listEntry);
|
||||
}
|
||||
uDom('#parseAllABPHideFilters').attr('checked', µb.userSettings.parseAllABPHideFilters === true);
|
||||
html.push('</ul>');
|
||||
return html.join('');
|
||||
};
|
||||
|
||||
var groupsFromLists = function(lists) {
|
||||
var groups = {};
|
||||
var listKeys = Object.keys(lists);
|
||||
var i = listKeys.length;
|
||||
var listKey, list, groupKey;
|
||||
while ( i-- ) {
|
||||
listKey = listKeys[i];
|
||||
list = lists[listKey];
|
||||
groupKey = list.group || 'nogroup';
|
||||
if ( groups[groupKey] === undefined ) {
|
||||
groups[groupKey] = [];
|
||||
}
|
||||
groups[groupKey].push(listKey);
|
||||
}
|
||||
return groups;
|
||||
};
|
||||
|
||||
var html = [];
|
||||
var groups = groupsFromLists(µb.remoteBlacklists);
|
||||
var groupKey;
|
||||
var groupKeys = [
|
||||
'default',
|
||||
'ads',
|
||||
'privacy',
|
||||
'malware',
|
||||
'social',
|
||||
'multipurpose',
|
||||
'regions'
|
||||
];
|
||||
for ( var i = 0; i < groupKeys.length; i++ ) {
|
||||
groupKey = groupKeys[i];
|
||||
html.push(htmlFromBranch(groupKey, groups[groupKey], µb.remoteBlacklists));
|
||||
delete groups[groupKey];
|
||||
}
|
||||
// For all groups not covered above (if any left)
|
||||
groupKeys = Object.keys(groups);
|
||||
for ( var i = 0; i < groupKeys.length; i++ ) {
|
||||
groupKey = groupKeys[i];
|
||||
html.push(htmlFromBranch(groupKey, groups[groupKey], µb.remoteBlacklists));
|
||||
delete groups[groupKey];
|
||||
}
|
||||
|
||||
uDom('#lists').html(html.join(''));
|
||||
uDom('#parseAllABPHideFilters').prop('checked', µb.userSettings.parseAllABPHideFilters === true);
|
||||
uDom('#ubiquitousParseAllABPHideFiltersPrompt2').text(
|
||||
chrome.i18n.getMessage("listsParseAllABPHideFiltersPrompt2")
|
||||
.replace('{{abpHideFilterCount}}', renderNumber(µb.abpHideFilters.getFilterCount()))
|
||||
|
@ -154,7 +205,7 @@ var renderBlacklists = function() {
|
|||
|
||||
var getSelectedBlacklistsHash = function() {
|
||||
var hash = '';
|
||||
var inputs = uDom('#blacklists .blacklistDetails > input');
|
||||
var inputs = uDom('#lists .listDetails > input');
|
||||
var i = inputs.length();
|
||||
while ( i-- ) {
|
||||
hash += inputs.subset(i).prop('checked').toString();
|
||||
|
@ -195,7 +246,7 @@ var blacklistsApplyHandler = function() {
|
|||
}
|
||||
// Reload blacklists
|
||||
var switches = [];
|
||||
var lis = uDom('#blacklists .blacklistDetails');
|
||||
var lis = uDom('#lists .listDetails');
|
||||
var i = lis.length();
|
||||
var path;
|
||||
while ( i-- ) {
|
||||
|
@ -209,7 +260,7 @@ var blacklistsApplyHandler = function() {
|
|||
what: 'reloadAllFilters',
|
||||
switches: switches
|
||||
});
|
||||
uDom('#blacklistsApply').attr('disabled', true );
|
||||
uDom('#blacklistsApply').prop('disabled', true );
|
||||
};
|
||||
|
||||
/******************************************************************************/
|
||||
|
@ -227,8 +278,8 @@ var abpHideFiltersCheckboxChanged = function() {
|
|||
|
||||
uDom.onLoad(function() {
|
||||
// Handle user interaction
|
||||
uDom('#blacklists').on('change', '.blacklistDetails', selectedBlacklistsChanged);
|
||||
uDom('#blacklists').on('click', '.blacklistDetails > a:first-child', onListLinkClicked);
|
||||
uDom('#lists').on('change', '.listDetails', selectedBlacklistsChanged);
|
||||
uDom('#lists').on('click', '.listDetails > a:first-child', onListLinkClicked);
|
||||
uDom('#blacklistsApply').on('click', blacklistsApplyHandler);
|
||||
uDom('#parseAllABPHideFilters').on('change', abpHideFiltersCheckboxChanged);
|
||||
|
||||
|
|
|
@ -263,18 +263,7 @@ FilterParser.prototype.extractPlain = function() {
|
|||
|
||||
var FilterContainer = function() {
|
||||
this.filterParser = new FilterParser();
|
||||
this.acceptedCount = 0;
|
||||
this.processedCount = 0;
|
||||
this.genericFilters = {};
|
||||
this.hostnameFilters = {};
|
||||
this.entityFilters = {};
|
||||
this.hideUnfiltered = [];
|
||||
this.hideLowGenerics = {};
|
||||
this.hideHighGenerics = [];
|
||||
this.donthideUnfiltered = [];
|
||||
this.donthideLowGenerics = {};
|
||||
this.donthideHighGenerics = [];
|
||||
this.rejected = [];
|
||||
this.reset();
|
||||
};
|
||||
|
||||
/******************************************************************************/
|
||||
|
@ -295,11 +284,14 @@ FilterContainer.prototype.reset = function() {
|
|||
this.donthideLowGenerics = {};
|
||||
this.donthideHighGenerics = [];
|
||||
this.rejected = [];
|
||||
this.duplicates = {};
|
||||
this.duplicateCount = 0;
|
||||
};
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
FilterContainer.prototype.add = function(s) {
|
||||
s = s.trim();
|
||||
var parsed = this.filterParser.parse(s);
|
||||
if ( parsed.invalid ) {
|
||||
return false;
|
||||
|
@ -307,6 +299,12 @@ FilterContainer.prototype.add = function(s) {
|
|||
|
||||
this.processedCount += 1;
|
||||
|
||||
if ( this.duplicates[s] ) {
|
||||
this.duplicateCount++;
|
||||
return false;
|
||||
}
|
||||
this.duplicates[s] = true;
|
||||
|
||||
//if ( s === 'mail.google.com##.nH.adC > .nH > .nH > .u5 > .azN' ) {
|
||||
// debugger;
|
||||
//}
|
||||
|
@ -399,6 +397,9 @@ FilterContainer.prototype.freeze = function() {
|
|||
|
||||
this.filterParser.reset();
|
||||
|
||||
console.debug('Number of duplicate cosmetic filters skipped:', this.duplicateCount);
|
||||
this.duplicates = {};
|
||||
|
||||
//console.log('µBlock> adp-hide-filters.js: %d filters accepted', this.acceptedCount);
|
||||
//console.log('µBlock> adp-hide-filters.js: %d filters processed', this.processedCount);
|
||||
//console.log('µBlock> adp-hide-filters.js: coverage is %s%', (this.acceptedCount * 100 / this.processedCount).toFixed(1));
|
||||
|
|
|
@ -50,11 +50,14 @@ return {
|
|||
// list of remote blacklist locations
|
||||
remoteBlacklists: {
|
||||
// User
|
||||
'assets/user/filters.txt': {},
|
||||
'assets/user/filters.txt': {
|
||||
group: 'default'
|
||||
},
|
||||
|
||||
// uBlock
|
||||
'assets/ublock/filters.txt': {
|
||||
title: "µBlock filters"
|
||||
title: 'µBlock filters',
|
||||
group: 'default'
|
||||
},
|
||||
|
||||
// 3rd-party lists fetched dynamically
|
||||
|
|
Loading…
Reference in New Issue