478 Commits

Author SHA1 Message Date
Kevin R
96a0a6e8cb Cleaning 2020-11-08 23:51:10 +01:00
Kevin R
d5fe894414 From scratch 2020-11-08 23:32:31 +01:00
Kevin R
307b487f64 Merge branch 'master' into ts-port 2020-09-25 02:39:54 +02:00
Kevin R
606c51733f Update README.md 2020-09-25 02:39:38 +02:00
Kevin R
d82fca2972 Changes 2020-09-10 01:09:22 +02:00
Kevin R
7ea819d26a Added test ci test results 2020-09-10 00:58:38 +02:00
Kevin R
68f10ac9ac Update .gitlab-ci.yml 2020-09-10 00:44:54 +02:00
Kevin R
1df39c76f4 Update .gitlab-ci.yml 2020-09-10 00:44:16 +02:00
Kevin R
2ac158ca88 Update .gitlab-ci.yml 2020-09-10 00:27:49 +02:00
Kevin R
73d330655a Update .gitlab-ci.yml 2020-09-10 00:26:23 +02:00
Kevin R
fedc0c4230 Update .gitlab-ci.yml 2020-09-10 00:25:00 +02:00
Kevin R
e2b638eafb Changes 2020-09-10 00:23:56 +02:00
Kevin R
0c694d86ad Merge branch 'master' into ts-port 2020-09-09 23:17:20 +02:00
Kevin R
6430bcc124 added infos to rules repo 2020-09-02 00:07:44 +02:00
Kevin R
e8264eefe8 Update data.min.json 2020-09-01 23:33:36 +02:00
Kevin R
79e54f8b5f Update FUNDING.yml 2020-08-22 00:26:59 +02:00
Kevin R
6b8e515d9a Update logEntry.ts 2020-08-21 22:02:58 +02:00
Kevin R
b0c20ac780 Update lockdown.yml 2020-08-21 00:52:27 +00:00
Kevin R
c6e92a7f29 Merge branch 'master' into ts-port 2020-08-21 00:27:01 +02:00
Kevin R
ad64f98a28 Update data.min.json 2020-08-21 00:22:53 +02:00
Kevin R
2ffdf4d77b Merge branch 'master' of https://gitlab.com/KevinRoebert/ClearUrls 2020-08-21 00:19:31 +02:00
Kevin R
951d1c9f7b Added new rule
https://github.com/ClearURLs/Addon/pull/57
2020-08-21 00:19:25 +02:00
Kevin R
3a20e97354 Update lockdown.yml 2020-08-20 22:12:55 +00:00
Kevin R
c138e3387b refactor 2020-08-20 23:42:46 +02:00
Kevin R
4432fb46bf init 2 2020-08-20 04:01:58 +02:00
Kevin R
4d4a418a95 Update utils.ts 2020-08-19 23:54:08 +02:00
Kevin R
843aeed109 init 2020-08-19 23:41:12 +02:00
Kevin R
b7e209bf15 Merge branch 'performance-optimizations-for-rules' into 'master'
Performance optimizations for rules

See merge request KevinRoebert/ClearUrls!75
2020-08-19 03:34:04 +00:00
Kevin R
0469156237 Update README.md 2020-08-18 22:45:28 +00:00
Kevin R
7ac9fe7d4d Update CHANGELOG.md 2020-08-19 00:03:58 +02:00
Kevin R
de876c0ff2 Update data.min.json 2020-08-18 23:46:41 +02:00
Kevin R
3ea3f347ba added ya.ru 2020-08-18 23:42:28 +02:00
Kevin R
329c78ff88 Update data.min.json 2020-08-18 21:01:29 +02:00
Kevin R
a4d15ece2f Merge branch 'cherry-pick-b2efd0ee' into 'performance-optimizations-for-rules'
Optimized rules list

See merge request KevinRoebert/ClearUrls!74
2020-08-18 18:31:09 +00:00
Teodor Atroshenko
c6ed12808b Optimized rules list
(cherry picked from commit b2efd0eea3)
2020-08-18 18:29:01 +00:00
Kevin R
db5bd659f0 Version 1.19.0
#570
#578
#580
#581
#587
#599
2020-07-22 00:30:09 +02:00
Kevin R
6c775b9bba Merge branch 'master' into 'master'
fix typo in urlPattern for argos.co.uk

See merge request KevinRoebert/ClearUrls!68
2020-07-02 01:55:44 +00:00
Kevin R
47dfe256eb Merge branch 'patch-1' into 'master'
removed the localization from the firefox-URL

See merge request KevinRoebert/ClearUrls!69
2020-07-02 01:55:36 +00:00
DJCrashdummy
3bac289758 removed the localization from the firefox-URL 2020-07-01 13:57:12 +00:00
swrup
53035f6bb2 fix typo in urlPattern for argos.co.uk 2020-06-29 21:49:01 +00:00
Kevin R
86fb5c469a Merge branch 'patch-1' into 'master'
added rule for cnbc.com (to fix #573)

Closes #573

See merge request KevinRoebert/ClearUrls!67
2020-06-24 14:12:14 +00:00
DJCrashdummy
f1086f8889 added rule for cnbc.com (to fix #573) 2020-06-24 14:12:14 +00:00
Kevin Röbert
bf27040864 Update .gitlab-ci.yml 2020-06-24 16:00:25 +02:00
Kevin Röbert
ca7df33fa3 Update .gitlab-ci.yml 2020-06-24 15:54:40 +02:00
Kevin Röbert
e017a8838e Update .gitlab-ci.yml
+ Test stage
+ Trigger page and hash only on change
2020-06-24 15:51:14 +02:00
Kevin R
1987634095 Merge branch 'patch-2' into 'master'
Yet another global rule

See merge request KevinRoebert/ClearUrls!66
2020-06-24 13:35:59 +00:00
Anton Yablokov
6e2d082eea Yet another global rule (from https://www.behance.net/gallery/88977751/Deep-Inside-Stockholm?tracking_source=curated_galleries_photography) 2020-06-23 05:46:32 +00:00
Kevin Röbert
fa3a33962b Update data.min.json
#523
2020-06-21 23:08:16 +02:00
Kevin Röbert
abaa5fe2c6 Updated rules and exceptions
#558
#460
#504
#508
#525
#530
#532
#538
#542
#450
#544
#563
2020-06-21 23:02:35 +02:00
Kevin R
992cd351af Merge branch 'patch-1' into 'master'
added `countview` for marketscreener.com...

Closes #448

See merge request KevinRoebert/ClearUrls!64
2020-06-18 20:27:01 +00:00
DJCrashdummy
6992302e23 added countview for marketscreener.com according to https://gitlab.com/KevinRoebert/ClearUrls/-/issues/448#note_363577772 2020-06-18 11:00:15 +00:00
Kevin Röbert
bc2e2510e8 Update FUNDING.yml 2020-06-17 02:18:58 +02:00
Kevin Röbert
1ec5838a98 Create FUNDING.yml 2020-06-17 01:29:59 +02:00
Kevin Röbert
c7b1f85672 Updated Japanese by Shitennouji & Euglena0211 2020-06-07 21:46:34 +02:00
Kevin Röbert
ac2d5da41c Hotfix v. 1.18.1 2020-06-07 21:32:24 +02:00
Kevin R
27af2c8c49 Merge branch 'jquery-removal' into 'master'
Removed jQuery from core scripts

See merge request KevinRoebert/ClearUrls!62
2020-06-05 22:24:04 +00:00
Kevin Röbert
01a911557b Version 1.18.0 2020-06-06 00:23:04 +02:00
Kevin Röbert
54210b71c5 Cleanup 2020-06-06 00:05:50 +02:00
Kevin Röbert
da5fb0b3c0 Removed even more jQuery dependencies 2020-06-06 00:02:03 +02:00
Kevin Röbert
08b62c0d94 Merge branch 'master' into jquery-removal 2020-06-05 21:51:52 +02:00
Kevin R
879fcdae03 Merge branch '475-too-many-protocol-entries-cut-off-the-internet-connection' into 'master'
Resolve "Too many protocol entries cut off the internet connection"

Closes #475

See merge request KevinRoebert/ClearUrls!63
2020-06-05 19:50:56 +00:00
Kevin Röbert
762d83e46c Hard limit for the log of 5000 entries 2020-06-05 21:50:03 +02:00
Kevin Röbert
ae30c0eb53 Removed jQuery from core scripts 2020-06-05 20:13:21 +02:00
Kevin R
0acd24d716 Update data.min.json 2020-05-26 18:28:07 +00:00
Kevin R
22e58ba0e6 Temporarily removed until a whitelist feature is available.
#527
#526
#520
#519
#514
#512
#505
2020-05-26 17:47:41 +00:00
Kevin Röbert
3ade08f344 Merge branch 'master' of https://gitlab.com/KevinRoebert/ClearUrls 2020-05-19 17:37:37 +02:00
Kevin Röbert
ea256a8081 Exception for api.bilibili.com 2020-05-19 17:37:30 +02:00
Kevin
90ab42a510 Merge branch 'add-privacytools-recommendation' into 'master'
Add PrivacyTools recommendation

See merge request KevinRoebert/ClearUrls!60
2020-05-19 15:34:54 +00:00
Kevin Röbert
c60e33d327 Added exception for zoom.us websocket
#513
2020-05-19 17:26:30 +02:00
Luca Trevisani
9f47a35318 Add PrivacyTools recommendation 2020-05-16 17:25:40 +00:00
Kevin Röbert
e931674dfe Added rules & exceptions
#501
#499
#493
#492
#491
#487
#486
#485
#484
#482
#479
#477
#473
2020-05-15 15:54:14 +02:00
Kevin
ed87f72c75 Merge branch 'patch-1' into 'master'
added some fields for marketscreener.com...

Closes #448

See merge request KevinRoebert/ClearUrls!59
2020-05-15 12:03:31 +00:00
DJCrashdummy
ee2e544223 added some fields for marketscreener.com (https://gitlab.com/KevinRoebert/ClearUrls/-/issues/448#note_343173596) 2020-05-15 09:48:40 +00:00
Kevin
9aaf4718f3 Update README.md 2020-04-28 22:50:21 +00:00
Kevin Röbert
bdca5d8659 Merge branch 'master' of https://gitlab.com/KevinRoebert/ClearUrls 2020-04-27 23:57:37 +02:00
Kevin Röbert
caca49b712 Change default logLimit to 100
#475
2020-04-27 23:57:35 +02:00
Röbert
4a1fad9a90 removed overlapping permissions 2020-04-25 15:05:23 +02:00
Kevin Röbert
9fbf5a839a Update rules
#463
#468
#469
#470
2020-04-24 01:19:44 +02:00
Kevin Röbert
8b815c5f50 Revert "Updated rules"
This reverts commit 201f3a9edb.
2020-04-24 01:19:06 +02:00
Kevin Röbert
4370912baa Merge branch 'master' of https://gitlab.com/KevinRoebert/ClearUrls 2020-04-24 01:18:46 +02:00
Kevin Röbert
201f3a9edb Updated rules
#463
#468
#469
#470
2020-04-24 01:17:58 +02:00
Kevin
349c0a79ce Update Bug.md
#478
2020-04-23 22:41:47 +00:00
Kevin Röbert
d74d53c40d Added exception
#471
2020-04-20 22:46:06 +02:00
Kevin Röbert
4030d9325b Update lockdown.yml 2020-04-15 09:05:34 +00:00
Kevin Röbert
fbac0bd1a9 Update lockdown.yml 2020-04-15 09:03:34 +00:00
Kevin Röbert
85ca03fdc0 Merge branch 'KevinRoebert-master-patch-74614' into 'master'
Update .github/lockdown.yml

See merge request KevinRoebert/ClearUrls!58
2020-04-14 23:28:09 +00:00
Kevin Röbert
0fc822a302 Update .github/lockdown.yml 2020-04-14 23:27:57 +00:00
Kevin Röbert
6cc57eae1a Merge branch 'KevinRoebert-master-patch-74450' into 'master'
Update lockdown.yml

See merge request KevinRoebert/ClearUrls!57
2020-04-14 23:26:58 +00:00
Kevin Röbert
694cc4613a Update lockdown.yml 2020-04-14 23:26:16 +00:00
Kevin Röbert
c81dbee1c7 Update data.min.json 2020-04-14 23:12:45 +00:00
Kevin Röbert
3f707bfd3a Version 1.17.0
#457
#462
#445
2020-04-15 00:53:01 +02:00
Kevin Röbert
9d62ddf1b0 Update messages.json (POEditor.com) 2020-04-14 21:26:24 +00:00
Kevin Röbert
1344fd8636 Update messages.json (POEditor.com) 2020-04-14 21:26:23 +00:00
Kevin Röbert
54915cf0de Update messages.json (POEditor.com) 2020-04-14 21:19:19 +00:00
Kevin Röbert
ab325759cd Update messages.json (POEditor.com) 2020-04-14 21:18:17 +00:00
Kevin Röbert
12f63e7f71 Update messages.json (POEditor.com) 2020-04-14 21:16:58 +00:00
Kevin Röbert
7bc3891072 Update messages.json (POEditor.com) 2020-04-14 21:15:14 +00:00
Kevin Röbert
9ff50c965d Update messages.json (POEditor.com) 2020-04-14 21:13:24 +00:00
Kevin Röbert
4014195da8 Update messages.json (POEditor.com) 2020-04-14 21:10:59 +00:00
Kevin Röbert
50aa5e5a73 Update messages.json (POEditor.com) 2020-04-14 21:10:57 +00:00
Kevin Röbert
4a571794dc Update messages.json (POEditor.com) 2020-04-14 21:10:56 +00:00
Kevin Röbert
23d13b0710 Update messages.json (POEditor.com) 2020-04-14 21:10:55 +00:00
Kevin Röbert
d060acae08 Update messages.json (POEditor.com) 2020-04-14 21:10:53 +00:00
Kevin Röbert
28dfe00ff7 Update messages.json (POEditor.com) 2020-04-14 21:10:51 +00:00
Kevin Röbert
5ee667eb92 Update messages.json (POEditor.com) 2020-04-14 21:10:50 +00:00
Kevin Röbert
fda7da7f13 Update messages.json (POEditor.com) 2020-04-14 21:10:48 +00:00
Kevin Röbert
578d4bc48d Update messages.json (POEditor.com) 2020-04-14 21:10:47 +00:00
Kevin Röbert
c7a1c40f9d Update messages.json (POEditor.com) 2020-04-14 21:10:45 +00:00
Kevin Röbert
57e6ed704f Update messages.json (POEditor.com) 2020-04-14 21:10:43 +00:00
Kevin Röbert
9ee55e6536 Update messages.json (POEditor.com) 2020-04-14 21:10:42 +00:00
Kevin Röbert
755db29738 Update messages.json (POEditor.com) 2020-04-14 21:10:40 +00:00
Kevin Röbert
66671aec68 Update messages.json (POEditor.com) 2020-04-14 21:10:38 +00:00
Kevin Röbert
c2f500e060 Update messages.json (POEditor.com) 2020-04-14 21:10:37 +00:00
Kevin Röbert
cfad3d2b23 Update messages.json (POEditor.com) 2020-04-14 21:09:26 +00:00
Kevin Röbert
6d27c8a906 Update messages.json (POEditor.com) 2020-04-14 21:01:06 +00:00
Kevin Röbert
ab19cfd714 Merge branch 'revert-2878af17' into 'master'
Revert "Update messages.json (POEditor.com)"

See merge request KevinRoebert/ClearUrls!56
2020-04-14 20:55:32 +00:00
Kevin Röbert
c64cfbfe86 Revert "Update messages.json (POEditor.com)"
This reverts commit 2878af17b6
2020-04-14 20:55:06 +00:00
Kevin Röbert
b70e0d4912 Update messages.json (POEditor.com) 2020-04-14 20:12:11 +00:00
Kevin Röbert
badc78a954 Added rules and exceptions
#459
#441
#457
#448
#452
2020-04-08 21:20:26 +02:00
Kevin Röbert
c0b7ad9b06 Update README.md 2020-04-02 23:21:38 +00:00
Kevin Röbert
d984b512c0 Update messages.json (POEditor.com) 2020-04-02 22:55:11 +00:00
Kevin Röbert
d4ca4b0362 Update messages.json (POEditor.com) 2020-04-02 22:55:08 +00:00
Kevin Röbert
2878af17b6 Update messages.json (POEditor.com) 2020-04-02 22:55:07 +00:00
Kevin Röbert
86ef50ce91 Update messages.json (POEditor.com) 2020-04-02 22:55:05 +00:00
Kevin Röbert
9afb4fa167 Updated French translation
Special thanks again to Lucifer for the translation into French.
2020-03-23 23:23:06 +01:00
Kevin Röbert
6ee6591019 source fix 2020-03-20 13:20:28 +01:00
Kevin Röbert
eb45b51bcb Updated description 2020-03-20 01:57:46 +01:00
Kevin Röbert
0298792aa1 Version 1.16.0
#362
#440
#429
#428
#431
2020-03-20 01:50:22 +01:00
Kevin Röbert
b1a5b5fcb0 Update README.md 2020-03-19 11:34:27 +00:00
Kevin Röbert
6ae8dd7d22 Add button for MEA 2020-03-19 12:31:00 +01:00
Kevin Röbert
afdf172716 Added rule
#434
#404
2020-03-18 16:12:32 +01:00
Kevin Röbert
31d63fa777 Added rules and exception
#433
#434
#432
#437
#438
2020-03-18 14:52:49 +01:00
Kevin Röbert
59707d7918 Added exception
#427
2020-03-10 20:33:42 +01:00
Kevin Röbert
f0bfe4c8dd Added rules and exception
#409
#411
#414
#418
#419
#420
#421
#424
2020-03-09 22:13:59 +01:00
Kevin Röbert
975ce2fea5 Added new rules 2020-02-27 17:57:32 +01:00
Kevin R
0d5fd4b452 Added new rule
#395
2020-02-27 17:12:09 +01:00
Kevin R
02a26d3231 Added new rules and exceptions
#390 #388 #408
2020-02-27 16:55:31 +01:00
Kevin R
88890b853a Fixed spm rule
Added missing question mark
2020-02-27 16:06:06 +01:00
Kevin R
53fb25f43d Added new rules
#402
#405
2020-02-25 21:13:31 +01:00
Kevin Röbert
3370985ee2 Update data.min.json 2020-02-22 21:49:54 +01:00
Kevin Röbert
95fe7eb17d Added new rules
#398
#393
2020-02-22 21:49:23 +01:00
Kevin Röbert
f7949e89f6 Added catch statements 2020-02-20 14:12:06 +01:00
Kevin Röbert
a44e13645c Updated localized extension description 2020-02-20 13:11:19 +01:00
Kevin Röbert
21cf8ec613 Added localized extension description 2020-02-19 18:55:50 +01:00
Kevin Röbert
a8d50a102c Create PRIVACY.md 2020-02-18 16:43:16 +01:00
Kevin Röbert
e79039d210 MS Store promotion 2020-02-17 17:20:55 +01:00
Kevin Röbert
019c2e64a3 Added rules and exception
#385
#387
2020-02-16 17:10:41 +01:00
Kevin Röbert
aaa46b5e6a Version 1.15.0
+ Updated Italian translation by @gioxx
2020-02-16 16:42:18 +01:00
Kevin Röbert
dd116ece8f Update messages.json (POEditor.com) 2020-02-16 15:38:13 +00:00
Kevin Röbert
b66b22f3e4 Added rules 2020-02-11 16:30:11 +01:00
Kevin Röbert
24bf821b59 Update data.min.json 2020-02-05 20:24:44 +01:00
Kevin Röbert
6012329278 Update test site 2020-02-05 20:24:18 +01:00
Kevin Röbert
be3909f5c0 Create bla.html 2020-02-05 20:09:49 +01:00
Kevin Röbert
f1c6599638 Update test page 2020-02-05 20:02:36 +01:00
Kevin Röbert
9aaf7eeb2e Update test page 2020-02-05 18:54:11 +01:00
Kevin Röbert
4b2b528248 Added rules
#352
2020-02-05 17:07:44 +01:00
Kevin Röbert
d28b81e97b Added rule and fixed (?) Disqus redirection
#342
#373
2020-02-05 16:53:12 +01:00
Kevin Röbert
6c7c5b18ac Added missing assets 2020-02-05 16:03:54 +01:00
Kevin Röbert
3f325201df Use only sources from same origin for GitLab pages 2020-02-05 15:54:20 +01:00
Kevin Röbert
5789640b75 Added exception
Fixed #369
2020-02-02 16:40:05 +01:00
Kevin Röbert
f8b7a1740a Update ClearURLs_in_action.png 2020-02-01 21:23:23 +01:00
Kevin Röbert
2f45e18a89 Updated Readme and changelog 2020-02-01 15:00:32 +01:00
Kevin Röbert
081890759d Version 1.14.0
Changed icon
2020-02-01 14:51:39 +01:00
Kevin Röbert
7d655baab4 Added rules
#352
2020-02-01 12:56:18 +01:00
Kevin Röbert
7972e24f4c New promo stuff 2020-02-01 12:43:05 +01:00
Kevin Röbert
b3ed752f02 Version 1.13.0 2020-02-01 12:19:11 +01:00
Kevin Röbert
93f81983f0 Update CHANGELOG.md 2020-01-29 16:29:10 +01:00
Kevin Röbert
9cce46590a Version 1.12.0 2020-01-29 16:25:34 +01:00
Röbert
a554391183 Removed default translations 2020-01-29 10:00:26 +01:00
Kevin Röbert
e8ca631829 Update messages.json (POEditor.com) 2020-01-29 08:46:55 +00:00
Röbert
0447f9aa25 Revert "Update messages.json (POEditor.com)"
This reverts commit 51f7cf9464.
2020-01-29 09:36:47 +01:00
Kevin Röbert
b605e3aa62 Update messages.json (POEditor.com) 2020-01-29 08:32:07 +00:00
Kevin Röbert
2fb7ddab10 Update messages.json (POEditor.com) 2020-01-29 08:32:02 +00:00
Kevin Röbert
523b52d34a Update messages.json (POEditor.com) 2020-01-29 08:32:00 +00:00
Kevin Röbert
6954ad2eef Update messages.json (POEditor.com) 2020-01-29 08:31:57 +00:00
Kevin Röbert
8d51e54237 Update messages.json (POEditor.com) 2020-01-29 08:31:55 +00:00
Kevin Röbert
f94f1a2064 Update messages.json (POEditor.com) 2020-01-29 08:31:53 +00:00
Kevin Röbert
e6370cc5fa Update messages.json (POEditor.com) 2020-01-29 08:31:51 +00:00
Kevin Röbert
193caa3ae0 Update messages.json (POEditor.com) 2020-01-29 08:31:49 +00:00
Kevin Röbert
e797c232f1 Update messages.json (POEditor.com) 2020-01-29 08:31:47 +00:00
Kevin Röbert
7043119985 Update messages.json (POEditor.com) 2020-01-29 08:31:44 +00:00
Kevin Röbert
27ad8953c6 Update messages.json (POEditor.com) 2020-01-29 08:31:42 +00:00
Kevin Röbert
51f7cf9464 Update messages.json (POEditor.com) 2020-01-29 08:31:40 +00:00
Kevin Röbert
ac9fc780f7 Update messages.json (POEditor.com) 2020-01-29 08:31:38 +00:00
Kevin Röbert
c37cae510f Update messages.json (POEditor.com) 2020-01-29 08:31:36 +00:00
Kevin Röbert
58b692ed39 Update messages.json (POEditor.com) 2020-01-29 08:31:34 +00:00
Kevin Röbert
ab948eab11 Update README.md 2020-01-29 08:17:38 +00:00
Röbert
9b29d5e907 Added rules
#366
2020-01-29 08:43:28 +01:00
Kevin Röbert
755af24b3e Changed rule/Added rules
#305
#360
#358
2020-01-17 10:19:32 +01:00
Kevin Röbert
cb9b2dbdea Merge branch 'master' into 'master'
Re-did Spanish localizacion

See merge request KevinRoebert/ClearUrls!55
2020-01-15 07:56:05 +00:00
Kevin Röbert
04a3f745b2 Added rules and exceptions
#350
#353
#357
2020-01-15 08:49:25 +01:00
Kevin Röbert
5930376eb5 Added exception
Added exception for Window 10 start menu bing search redirection
2020-01-12 20:46:59 +01:00
Kevin Röbert
f06609d3e1 Added exception
#351
2020-01-11 19:43:47 +01:00
Marcos Del Sol Vives
38ea5ed802 Re-did Spanish localizacion 2020-01-11 00:13:41 +01:00
Kevin Röbert
55cb9e8b39 Added rules
#348
2020-01-10 21:11:02 +01:00
Kevin Röbert
73954b2d82 Added exception
#347
2020-01-08 10:42:09 +01:00
Kevin Röbert
861cf554f5 Added exception handling on browser.tabs.get()
#346
2020-01-08 10:38:48 +01:00
Kevin Röbert
c3ddf2a8d4 Merge branch 'master' of https://gitlab.com/KevinRoebert/ClearUrls 2020-01-06 18:09:19 +01:00
Kevin Röbert
cf6fe59fbd Added new screenshots 2020-01-06 18:09:13 +01:00
Kevin Röbert
cbdc108358 Update README.md 2020-01-06 17:00:31 +00:00
Kevin Röbert
e4fdb6bca1 Merge branch 'master' of https://gitlab.com/KevinRoebert/ClearUrls 2020-01-06 17:36:05 +01:00
Kevin Röbert
44a4334843 Added exception
Fix #345
2020-01-06 17:35:49 +01:00
Kevin Röbert
b472913c67 Update README.md 2020-01-06 16:27:53 +00:00
Kevin Röbert
62fbf626ed Updates README 2020-01-06 17:26:58 +01:00
Kevin Röbert
ccdca3b595 Some beautifications 2020-01-06 17:15:58 +01:00
Kevin Röbert
0417469a26 Added yandex link fixer + renewed copyright notice
#305
2020-01-06 17:14:34 +01:00
Kevin Röbert
50542fa6a3 Version 1.11.0
#336
#340
#342
#339
#334
2020-01-06 16:22:37 +01:00
Kevin Röbert
08fe25dc0d Update CHANGELOG.md 2020-01-04 01:29:31 +01:00
Kevin Röbert
ae32bcf21e Merge branch 'upgrade-libs' into 'master'
Upgrade libs

Closes #307, #332, #333, and #338

See merge request KevinRoebert/ClearUrls!54
2020-01-04 00:14:03 +00:00
Kevin Röbert
b2ffb3293f Version 1.10.0
- Updated to Bootstrap 4.3.1
- Updated to jQuery 3.4.1
- Updated to DataTables 1.10.20
- Deleted unnecessary Bootstrap Dialog lib
- Replaced [pick-a-color](https://github.com/lauren/pick-a-color) with [bootstrap-colorpicker 3.2.0](https://github.com/itsjavi/bootstrap-colorpicker)
- Added [popper.js 1.16.0](https://github.com/popperjs/popper.js/tree/v1.16.0)
- Fixed [#333](https://gitlab.com/KevinRoebert/ClearUrls/issues/333)
- Fixed [#332](https://gitlab.com/KevinRoebert/ClearUrls/issues/332)
- Fixed [#307](https://gitlab.com/KevinRoebert/ClearUrls/issues/307)
- Maybe [#315](https://gitlab.com/KevinRoebert/ClearUrls/issues/315) fixed
2020-01-04 00:14:03 +00:00
Kevin Röbert
d41ab7ff9d Correction 2020-01-03 21:02:41 +01:00
Kevin Röbert
969385bc21 Merge branch 'master' into 'master'
Added Swedish translation

See merge request KevinRoebert/ClearUrls!53
2020-01-03 19:55:19 +00:00
Sopor
b8a1b4dadd Added Swedish translation 2020-01-03 19:55:19 +00:00
Kevin Röbert
5cfe99b753 Merge branch 'patch-1' into 'master'
minor corrections

See merge request KevinRoebert/ClearUrls!52
2020-01-02 15:35:50 +00:00
Sopor
392f3bc70a minor corrections 2019-12-28 12:17:03 +00:00
Kevin Röbert
d10e041125 New rules/redirections + fix for subdomains pattern 2019-12-26 14:16:08 +01:00
Kevin Röbert
6eb8636149 Added exception
#329
2019-12-22 20:15:13 +01:00
Kevin Röbert
fcb9f16b7a Added new rule
Fixed #314
2019-12-18 17:12:14 +01:00
Kevin Röbert
22426dfc24 Added exception for td.com
#325
2019-12-18 16:58:06 +01:00
Kevin Röbert
f8fb9bf5ef Version 1.9.5
+ Added Turkish translation by Ulaş Çakmak
+ Updated some strings of French translation by lucifer
+ Fixed problem with default RegExp
2019-12-17 20:35:05 +01:00
Kevin Röbert
c5e00dc5ef Updated french translation
A special thanks to lucifer
2019-12-17 20:28:10 +01:00
Röbert
e5d226e374 Added new rule
#321 - prevent Twitter AMP ping tracking
2019-12-16 14:18:15 +01:00
Kevin Röbert
3395a17c60 quick fix 2019-12-11 23:53:04 +01:00
Kevin Röbert
f7ed9fa1d8 Update data.min.json
#320
#317
#319
#318
2019-12-11 23:46:47 +01:00
Kevin Röbert
66d6672178 Added exception
#313
2019-12-07 19:23:17 +01:00
Kevin Röbert
80c29e7004 Added rules/exceptions
#310
#312
#313
2019-12-07 19:16:25 +01:00
Kevin Röbert
74aad21218 Update messages.json (POEditor.com) 2019-11-28 17:53:16 +00:00
Kevin Röbert
8115655a30 Merge branch 'KevinRoebert-master-patch-06543' into 'master'
Update _locales/tr/messages.json

See merge request KevinRoebert/ClearUrls!51
2019-11-28 17:51:02 +00:00
Kevin Röbert
073b55ad74 Update _locales/tr/messages.json 2019-11-28 17:51:02 +00:00
Kevin Röbert
51fe1bcac3 Added new rules + regex fixes
#303
2019-11-27 23:16:08 +01:00
Kevin Röbert
7c5f4c31d5 missing 2019-11-24 18:06:03 +01:00
Kevin Röbert
84c069331f Version 1.9.4 2019-11-24 18:05:42 +01:00
Kevin Röbert
deb7648d61 Exception amazon
#298
2019-11-21 22:46:19 +01:00
Kevin Röbert
46cd3f21d0 Added exceptions for gitlab instances and amazon support chat
#298
2019-11-21 22:40:53 +01:00
Kevin Röbert
26a5b0648f Added exception for gitlab instances
Works only for gitlab instances with git subdomain
2019-11-19 16:40:58 +01:00
Kevin Röbert
120239aa0d downward compatible 2019-11-15 22:56:26 +01:00
Kevin Röbert
a96684b93a Merge branch 'load-balancing-for-static-contents' into 'master'
Load balancing for static contents

See merge request KevinRoebert/ClearUrls!50
2019-11-15 20:28:04 +00:00
Kevin Röbert
ecd5f82b77 Version 1.9.3.1
+ Changed data and hash URL to GitLab Pages, to prevent hitting the GitLab infrastructure directly [#295](https://gitlab.com/KevinRoebert/ClearUrls/issues/295#note_245456134).
2019-11-15 21:26:57 +01:00
Kevin Röbert
a645b52db0 .
.
2019-11-15 21:45:43 +01:00
Kevin Röbert
b016226750 Make static data accessible via GitLab pages 2019-11-15 21:43:58 +01:00
Kevin Röbert
80ebc5bffa Version 1.9.3
Fixed wrong initial rules URL
2019-11-15 03:06:32 +01:00
Kevin Röbert
468c2ac4ea Revert "Corrected line endings, so SRI hash are equals to the online versions"
This reverts commit 82ce2d4d4f.
2019-11-12 18:30:49 +01:00
Kevin Röbert
82ce2d4d4f Corrected line endings, so SRI hash are equals to the online versions 2019-11-12 18:25:30 +01:00
Kevin Röbert
f752e8aaff Merge branch 'patch-2' into 'master'
b@spiegel.de

See merge request KevinRoebert/ClearUrls!49
2019-11-12 01:52:22 +00:00
rusty-snake
bb4d543fc2 b@spiegel.de 2019-11-11 16:23:02 +01:00
Kevin Röbert
6eaf8726ee Updated promo pic 2019-11-09 13:47:44 +01:00
Kevin Röbert
0668562306 CI
I'm tired.
2019-11-09 01:46:38 +01:00
Kevin Röbert
722df04af0 CI location fix 2019-11-09 01:44:58 +01:00
Kevin Röbert
aa728302a8 CI fix 2 2019-11-09 01:43:24 +01:00
Kevin Röbert
4a77447992 CI fix 2019-11-09 01:41:42 +01:00
Kevin Röbert
61712e77a2 Version 1.9.2
#290
2019-11-09 01:40:17 +01:00
Kevin Röbert
61b911921e Remove doubleclick from complete blocking
As it turned out, doubleclick is needed for a lot of things, including playing videos.

If you want to block advertisements or domains, you can use advertising blockers like UBlock or Pihole.

ClearURL's task is to remove tracking fields and not to block pages.
2019-10-31 16:44:00 +01:00
Kevin Röbert
13c1bd774c Merge branch 'master' of https://gitlab.com/KevinRoebert/ClearUrls 2019-10-31 16:18:07 +01:00
Kevin Röbert
0384a1a6cc Added exception
#289
2019-10-31 16:17:53 +01:00
Kevin Röbert
cd6d7f2d09 Update messages.json (POEditor.com) 2019-10-30 23:57:07 +00:00
Kevin Röbert
b241428752 Added new redirection
- Added new redirection for smartredirect.de
2019-10-30 22:33:55 +01:00
Kevin Röbert
7b457e7e5e Merge branch 'master' of https://gitlab.com/KevinRoebert/ClearUrls 2019-10-30 21:34:58 +01:00
Kevin Röbert
927f2d8d69 Added redirection and exception
- Added new redirection for ebay
- Added exception #288
2019-10-30 21:34:56 +01:00
Kevin Röbert
0c1fc0646e Merge branch 'patch-1' into 'master'
Remove `redirect_source` parameter on mozilla.org

See merge request KevinRoebert/ClearUrls!48
2019-10-27 15:02:57 +00:00
rusty-snake
ef1b7fbd0e Update data.min.json 2019-10-26 15:47:47 +00:00
Kevin Röbert
8342851d4e Update CHANGELOG.md 2019-10-24 20:22:32 +02:00
Kevin Röbert
d52d8d75e2 Update messages.json (POEditor.com) 2019-10-24 18:18:02 +00:00
Kevin Röbert
dee6c21ad2 Dummy it translation file 2019-10-24 20:18:13 +02:00
Kevin Röbert
92d582b8d2 Version 1.9.1
- Fixed badged in quiet mode
2019-10-24 20:13:38 +02:00
Kevin Röbert
902605f8ee Update Bug.md 2019-10-22 23:55:02 +00:00
Kevin Röbert
4d9b86178e Update README.md 2019-10-22 23:21:01 +00:00
Kevin Röbert
d064537c07 Version 1.9.0
- Added #284
- Added #56
- Fixed #241
- Possible fix & workaround for #203
- Fixed bug in "history tracking injection protection". This option was not disabled, when the global filter switch are on off
- Added an option to im-/export the log (requires the `downloads` permission)
- Added an option to im-/export the settings (requires the `downloads` permission)
- Added information page for blocked sites, when they are called in the `main_frame`
- Added "multiple times URL encodes" recognition
- Refactoring
- Changed background script loading sequence to prevent that required functions are not yet loaded.
2019-10-23 01:16:12 +02:00
Kevin Röbert
9df322a49a Update README.md 2019-10-22 16:26:39 +02:00
Kevin Röbert
99b86e7735 Update Bug.md 2019-10-22 13:17:40 +00:00
Kevin Röbert
145e11deac Updated ui screenshot 2019-10-20 19:41:38 +02:00
Kevin Röbert
4b5ad86c50 Added rules & exception
#282
#283
2019-10-20 19:13:04 +02:00
Kevin Röbert
d7b0094052 Added rules and redirection
#281
2019-10-18 13:21:25 +02:00
Kevin Röbert
ba7541c22e Removed amazon rule
#168
#280
2019-10-14 21:29:42 +02:00
Kevin Röbert
d689a7ce35 Added rules
#279
2019-10-13 19:00:38 +02:00
Kevin Röbert
fd561a1490 Added LinkedIn rules
#278
2019-10-09 16:49:09 +02:00
Kevin Röbert
8cffd42108 Added exceptions
#274
2019-10-08 15:26:00 +02:00
Kevin Röbert
94bb289bfa Add exception
#276
2019-10-08 14:42:41 +02:00
Kevin Röbert
a1b8f8eaaf rule improvement
#276
2019-10-08 14:30:38 +02:00
Kevin Röbert
600a4767d9 Added rules
#272
2019-10-04 15:23:54 +02:00
Kevin Röbert
191fcfce23 Version 1.8.5
#264
#262
#267
2019-09-29 17:10:26 +02:00
Kevin Röbert
1367284767 Added exception
#260
2019-09-26 21:15:38 +02:00
Kevin Röbert
89f6e7ea2d Update i253.html 2019-09-26 19:03:50 +00:00
Kevin Röbert
ad3ab8df07 Version 1.8.4
- Force redirects only on main frames
- Added google link fix script, to avoid the sub frame permission for force redirection on google
2019-09-26 20:50:39 +02:00
Kevin Röbert
7ccd78ad39 Added rule
#258
2019-09-25 00:34:53 +02:00
Kevin Röbert
1d061c4353 Deleted iframe border 2019-09-24 19:47:44 +02:00
Kevin Röbert
0b79d469ed Pages fix 2019-09-24 18:35:33 +02:00
Kevin Röbert
abd61783d2 Update .gitlab-ci.yml 2019-09-24 16:24:22 +00:00
Kevin Röbert
2b14d4f321 Merge branch 'master' of https://gitlab.com/KevinRoebert/ClearUrls 2019-09-24 18:24:07 +02:00
Kevin Röbert
8f1bdbfc7a Fix 2019-09-24 18:23:06 +02:00
Kevin Röbert
bfa5cb1f2f Update .gitlab-ci.yml 2019-09-24 16:19:19 +00:00
Kevin Röbert
f6b5627eaf Add test page to gitlab.io 2019-09-24 18:16:54 +02:00
Kevin Röbert
62d53b6f85 Changed rule 2019-09-24 18:02:51 +02:00
Kevin Röbert
c4612b099b Update README.md 2019-09-23 23:24:16 +00:00
Kevin Röbert
d5d6f58482 Version 1.8.3
+ Fixed OR case
2019-09-23 23:36:24 +02:00
Kevin Röbert
b26b6f9aec Version 1.8.2
+ Fixed #253
+ Fixed #254
2019-09-23 16:20:51 +02:00
Kevin Röbert
fe82c9ee1b Added exception for Tinkoff bank
#255
2019-09-23 14:05:07 +02:00
Kevin Röbert
7db112687e Added exception for googleusercontent proxys
#254
2019-09-23 14:03:24 +02:00
Kevin Röbert
5341f27a16 Added exception
#177
2019-09-15 17:07:24 +02:00
Kevin Röbert
589153f210 Removed rule
#246
2019-09-13 12:58:28 +02:00
Kevin Röbert
e159041600 Version 1.8.1
!47
#206
2019-09-12 22:17:13 +02:00
Kevin Röbert
7e78bed8cb Merge branch 'master' into 'master'
Save to storage only on changes

See merge request KevinRoebert/ClearUrls!47
2019-09-12 19:54:23 +00:00
tartpvule
a4a62b0d1e Add console logging in saveOnDisk 2019-09-12 19:52:10 +00:00
Kevin Röbert
c2577c834f Update README.md 2019-09-12 18:59:55 +00:00
Kevin Röbert
e0122600c3 Update README.md 2019-09-12 18:42:09 +00:00
tartpvule
b951cf1172 Missed a storeHashStatus call point 2019-09-12 16:53:33 +00:00
tartpvule
b0f1c85cd8 Save on storage change and deferred save, part 3
Insert calls to saveOnDisk and deferSaveOnDisk
2019-09-12 16:45:56 +00:00
tartpvule
891723b7b9 Save on storage change and deferred save, part 2
Insert calls to deferSaveOnDisk
2019-09-12 16:44:14 +00:00
tartpvule
6cdcfd099f Save on storage change and deferred save, part 1
Implement saveOnDisk (previously dead code), deferSaveOnDisk
Remove setInterval(saveOnExit, 60000)
2019-09-12 16:42:44 +00:00
Kevin Röbert
afc7aa8740 Added exception
#252
2019-09-12 16:45:43 +02:00
Kevin Röbert
e6cc434757 Added exceptions for #251
#251
2019-09-11 20:01:48 +02:00
Kevin Röbert
d7b2878428 Quick fix 2019-09-11 19:55:06 +02:00
Kevin Röbert
fad7010f10 Added exceptions for blizzard
#248
2019-09-11 19:51:02 +02:00
Kevin Röbert
6ed708b94d Update README.md 2019-09-11 16:26:09 +00:00
Kevin Röbert
d2ec7ce49e Version 1.8.0 2019-09-11 18:08:41 +02:00
Kevin Röbert
9029781974 Added rules
#250
#249
#247
#246
2019-09-11 01:52:53 +02:00
Kevin Röbert
5af81a7d49 Added rules 2019-09-08 19:26:06 +02:00
Kevin Röbert
5ae149509e Version 1.7.4
- Added Hungarian translations by @ztoldy2
2019-09-06 13:13:19 +02:00
Kevin Röbert
9543d0f56f Added exception
#240
2019-09-06 13:05:37 +02:00
Kevin Röbert
deaceaed24 Added rules
#245
#244
#241
#240
2019-09-06 13:00:25 +02:00
Kevin Röbert
246a916fb7 Exception for fairphone bug tracker
#239
2019-09-03 22:02:32 +02:00
Kevin Röbert
5622861cf3 Revert "Chrome double tab fix"
This reverts commit cb7ccae737
2019-08-31 09:18:52 +00:00
Kevin Röbert
cb7ccae737 Chrome double tab fix
I hope this works and does not break anything else ^^"
2019-08-31 01:56:40 +02:00
Kevin Röbert
2e9e6ac21f Added rules
#236
#237
2019-08-31 01:13:09 +02:00
Kevin Röbert
c2a092367a Fixed global ref rule
#235
2019-08-29 01:29:51 +02:00
Kevin Röbert
05f1442d96 Added rule for woot.com
#231
2019-08-23 23:20:53 +02:00
Kevin Röbert
4c43cf8149 Updated rules
#230
2019-08-23 21:07:51 +00:00
Kevin Röbert
962d484712 Update rules
#229
#230
2019-08-22 21:57:05 +02:00
Kevin Röbert
9289e6a276 Added rules
#224
2019-08-16 02:02:53 +02:00
Kevin Röbert
8f64e8310c Added rules
#223
2019-08-16 02:02:00 +02:00
Kevin Röbert
35ed991651 Version 1.7.3
+ Updated Brazilian Portuguese translation by Ramon S.
2019-08-07 22:27:02 +02:00
Kevin Röbert
5d08bbbbad Version 1.7.2
+ Update japanese translation by @Shitennouji
2019-08-07 14:39:08 +02:00
Kevin Röbert
bea5543997 Update messages.json (POEditor.com) 2019-08-07 12:31:50 +00:00
Kevin Röbert
9537b181b8 Update messages.json (POEditor.com) 2019-08-06 12:32:17 +00:00
Kevin Röbert
291118d185 Update messages.json (POEditor.com) 2019-08-06 12:25:53 +00:00
Kevin Röbert
b75235f306 Version 1.7.1
#217
#218
#220
#221
2019-08-04 19:48:26 +02:00
Kevin Röbert
f4ad457047 Update CHANGELOG.md 2019-07-30 18:34:28 +00:00
Kevin Röbert
0f1ade94a2 Version 1.7.0
+ Added support for raw rules to cleaning also parts from URL-path
2019-07-30 20:29:41 +02:00
Kevin Röbert
cd988ed24e Translation corrected
Shame on me. Had made mistakes in my native language :(
2019-07-30 19:27:11 +02:00
Kevin Röbert
5da65aed98 Added rule and deleted unnecessary "or"
#209
2019-07-29 17:40:54 +02:00
Kevin Röbert
15daf50c71 Version 1.6.9
#207
#208

+ Fixed error in fields RegExp
2019-07-29 01:26:45 +02:00
Kevin Röbert
dbe7c603f9 Improvements and Bugfix - Version 1.6.8
#206
#205
2019-07-28 20:27:13 +02:00
Kevin Röbert
53de1eae53 Version 1.6.7
#175
#196
#204
2019-07-25 23:55:01 +02:00
Kevin Röbert
a3d3818766 Added new rule for 9gag.com
Fixed #204
2019-07-22 18:30:52 +02:00
Kevin Röbert
6c113d4ebd Update data.min.json
#201
2019-07-11 16:04:09 +00:00
Kevin Röbert
830cc055db Merge branch 'patch-1' into 'master'
remove sourcemap ref from browser-polyfill.js

Closes #175

See merge request KevinRoebert/ClearUrls!45
2019-07-08 15:50:44 +00:00
Yukulélé
ccd40c7df3 remove sourcemap ref from browser-polyfill.js 2019-07-05 12:16:29 +00:00
Kevin Röbert
1a057e8494 Exception #197 2019-06-25 20:05:25 +02:00
Kevin Röbert
2506dc6ebc Fixed typo #196 2019-06-24 14:22:17 +00:00
Kevin Röbert
44b0c043f8 Version 1.6.6
#171
#195
2019-06-14 01:24:46 +02:00
Kevin Röbert
f9289d9216 Version 1.6.5 2019-06-12 20:17:49 +02:00
Kevin Röbert
4d9e066781 Amazon ref fix? 2019-05-29 00:38:19 +02:00
Kevin Röbert
fe8de86c73 Add site3 rule 2019-05-29 00:36:21 +02:00
Kevin Röbert
89963b0d6d Added rules from #188 2019-05-29 00:29:23 +02:00
Kevin Röbert
e3191eecb1 Add redirection from #182 and maybe fix the reddit redirection 2019-05-21 19:24:40 +00:00
Kevin Röbert
5c3b1f4880 Add rules from #186 2019-05-21 18:52:45 +00:00
Kevin Röbert
a78256e52d Version 1.6.4 2019-05-07 16:18:41 +00:00
Kevin Röbert
bb516b81d8 Merge branch 'master' into 'master'
Master

See merge request KevinRoebert/ClearUrls!44
2019-05-07 16:13:38 +00:00
alekksander
a35ef95d66 Delete .gitkeep 2019-05-07 13:40:58 +00:00
alekksander
836cfc74da Delete pl 2019-05-07 13:40:29 +00:00
alekksander
4eddd4e594 Polish 2019-05-07 13:38:10 +00:00
alekksander
4670cacc7d Add new file 2019-05-07 13:37:09 +00:00
alekksander
484b52319c first Polish translation 2019-05-07 13:36:21 +00:00
alekksander
ad404ae6f7 Delete .gitkeep 2019-05-07 13:35:32 +00:00
alekksander
531ade1b05 initial Polish translation 2019-05-07 13:35:12 +00:00
Kevin Röbert
f53ea156c0 Version 1.63
+ Add redirection from #181
+ Correct links in chinese translations
+ Add edit of french translation
2019-05-06 21:07:47 +02:00
Kevin Röbert
3e2e75d38b Merge branch 'master' into 'master'
i18n: revamped French translation

See merge request KevinRoebert/ClearUrls!42
2019-05-06 18:51:53 +00:00
Hg
c9f2deab11 i18n: revamped French translation
Many translations were not accurate, did not respect punctuation, used
inappropriate words, or were complete reintepretations of the original
messages.
2019-05-05 14:41:15 +02:00
Kevin Röbert
8ca852476d Version 1.6.2
Added:
+ Added rules from #172
+ Added rules from #176
+ Added rules from #178

Fixed:
+ #170
+ #162
+ #163
2019-04-26 23:41:44 +02:00
Kevin Röbert
1d6d36eb8c Update CHANGELOG.md 2019-04-14 12:15:58 +00:00
Kevin Röbert
a8a5f7e311 Version 1.6.1 2019-04-14 12:12:58 +00:00
Kevin Röbert
929aa53aa1 Correction 2019-04-14 12:10:21 +00:00
Kevin Röbert
aa2344b4cc Update README.md 2019-04-13 16:41:55 +00:00
Kevin Röbert
7999077671 Update french translation 2019-04-13 16:37:01 +00:00
Kevin Röbert
75275bad7e Update data.min.json 2019-04-13 16:33:14 +00:00
Kevin Röbert
54d72e7865 Merge branch 'master' into 'master'
Update Chinese translations

See merge request KevinRoebert/ClearUrls!41
2019-04-12 10:22:40 +00:00
Yi-Ping Huang
61d285be99 Update Chinese translations 2019-04-12 17:29:10 +08:00
Kevin Röbert
217393ded8 Merge branch 'master' of https://gitlab.com/KevinRoebert/ClearUrls 2019-04-11 16:40:56 +02:00
Kevin Röbert
91d46a7b70 ClearURLs v.1.6
- Added listener to the browser history to prevent tracking with the [history.pushState method](https://developer.mozilla.org/en-US/docs/Web/API/History_API)
- Added webNavigation and tabs permissions, for the new feature
- Added switches in settings to enable and disable the context menu entry and the history listener
- Added tool to clean URLs, that was pasted into a textbox
- Added icon for new tool to clean URLs

- Fixed [#40](https://gitlab.com/KevinRoebert/ClearUrls/issues/40), see also https://curl.kevinroebert.de
- Fixed [#103](https://gitlab.com/KevinRoebert/ClearUrls/issues/103), see also https://curl.kevinroebert.de

- Changed clipboard-helper.js path to be absolute to prevent problems
- Changed rewrite of old GitHub links to the new data.min.json and rules.min.hash
- Config icon is now bigger and above the config label
- Update Traditional Chinese Translation by [@yipinghuang](https://gitlab.com/yipinghuang)

#161 #162 #157 #40 #103 #158
2019-04-11 16:40:48 +02:00
Kevin Röbert
ae139af5ea Merge branch 'master' into 'master'
Update Traditional Chinese Translation

See merge request KevinRoebert/ClearUrls!40
2019-04-11 14:35:42 +00:00
Yi-Ping Huang
a41deb20d8 Update Traditional Chinese Translation 2019-04-11 14:35:42 +00:00
Kevin Röbert
a76ecb17b3 Add changelog up to version 1.3.4.0 2019-04-10 21:27:21 +02:00
Kevin Röbert
dfebef07ac Add CHANGELOG 2019-04-10 18:29:32 +00:00
Kevin Röbert
1b6cc37bdd Change to old clipboard copy technique, to support chrome and older firefox versions 2019-04-10 19:08:07 +02:00
Kevin Röbert
cfd3bf5f43 It seems like, chrome doesn't like icons. 2019-04-10 18:37:55 +02:00
Kevin Röbert
a91b79aa18 Have overlooked this little hyphen :/ 2019-04-10 18:33:21 +02:00
Kevin Röbert
4fc4018859 Chrome ASCII message fix 2019-04-10 18:20:43 +02:00
Kevin Röbert
e87aa9d027 Add function to clean copied links
#157
2019-04-10 18:08:10 +02:00
Kevin Röbert
9b7dd7f9cb Update rules.hash 2019-04-08 18:07:04 +00:00
Kevin Röbert
8b8ac33ed2 New rules
#156 and #157
2019-04-08 19:00:04 +02:00
Kevin Röbert
a67abc6bc6 Revert "New rules"
This reverts commit c53a36999c
2019-04-08 16:58:44 +00:00
Kevin Röbert
c53a36999c New rules
#156 #157
2019-04-08 18:57:22 +02:00
Kevin Röbert
1caeeb29ab Update README.md 2019-04-08 07:59:05 +00:00
Kevin Röbert
0a948968b3 Add png icons to support googles webextension api 2019-04-08 09:52:23 +02:00
Kevin Röbert
304cbe2e6b remove tab permission
The tab permission is not required for all methods on the tabs api
2019-04-03 20:21:31 +02:00
Kevin Röbert
ed61dbdbaf Update README.md 2019-04-03 11:29:09 +00:00
Kevin Röbert
2d1d81810e New rules new hash 2019-04-03 13:27:54 +02:00
Kevin Röbert
c9f3b3610d Add rule from @walterl to data.json 2019-04-03 13:26:36 +02:00
Kevin Röbert
932511fbf8 Merge branch 'redirect-amo-outgoing' into 'master'
Add redirect for addons.mozilla.org outgoing links

See merge request KevinRoebert/ClearUrls!39
2019-04-03 11:22:40 +00:00
Walter Leibbrandt
28af5a8630 Add redirect for addons.mozilla.org outgoing links 2019-04-02 23:07:01 +02:00
Kevin Röbert
36300bf1c9 CI generates the chrome version 2019-04-02 00:16:32 +02:00
Kevin Röbert
4f86852312 Update ci for chrome support 2019-04-01 23:53:49 +02:00
Kevin Röbert
03e0580b20 Chrome support 2019-04-01 23:53:28 +02:00
Kevin Röbert
869cd63e64 Fix #153
Implementing the flat function by my own, also a function that removes empty fields from arrays.
2019-03-27 18:31:37 +01:00
Kevin Röbert
f69ae79adb Update README.md 2019-03-21 17:16:43 +00:00
Kevin Röbert
cd6bb5d6f5 new rules new hash 2019-03-21 17:58:57 +01:00
Kevin Röbert
f02d36c6a7 #119
I hope the redirection works
2019-03-21 17:50:16 +01:00
Kevin Röbert
f46daa7205 New rules new hash 2019-03-19 16:21:03 +01:00
Kevin Röbert
cc358744f2 #151 without id 2019-03-19 16:13:24 +01:00
Kevin Röbert
df4e461102 Merge branch 'master' of https://gitlab.com/KevinRoebert/ClearUrls 2019-03-19 15:56:06 +01:00
Kevin Röbert
9a6adad225 Disqus redirection #151 2019-03-19 15:55:54 +01:00
Kevin Röbert
1e15c8a265 Update README.md 2019-03-18 21:09:58 +00:00
Kevin Röbert
d87d88250d Fix #31
+ Bugfix for Android devices
2019-03-18 17:39:47 +01:00
Kevin Röbert
1175d0ff9d New rules new hash 2019-03-16 13:30:30 +01:00
Kevin Röbert
bfabe4ca98 Add facebook redirection #150 2019-03-16 13:29:23 +01:00
Kevin Röbert
80af6f6fea Better performance + "unlimitedStorage" permission
+ Changed the regex interpretation for better performance.
+ Also asked for "unlimitedStorage" permission to have enough space for user generated rules.
2019-03-14 17:59:16 +01:00
Kevin Röbert
43a510efe7 Merge branch 'master' of https://gitlab.com/KevinRoebert/ClearUrls 2019-03-13 13:21:05 +01:00
Kevin Röbert
2a158f6dd7 Update license 2019-03-13 12:20:35 +00:00
Kevin Röbert
8f70a49bb2 Merge branch 'master' of https://gitlab.com/KevinRoebert/ClearUrls 2019-03-13 13:20:28 +01:00
Kevin Röbert
6b2e79669c Add license header 2019-03-13 13:20:24 +01:00
Kevin Röbert
8231ade8a3 Change of LICENSE to GNU LGPLv3. This change is granted by the old license (QaPL v0.2 sec. [4]) without the permission of the contributors.
The reason for the change are some requests about using code from ClearURLs in other project, e.g. an iOS App and an application to route URLs to configured browsers. The old license is not so friendly to use ClearURLs in other projects. Also I think ClearURLs should be a real free software.

All new versions are licensed under the GNU LGPLv3. For all old versions: As the Original Copyright Holder I hereby grant a dual-licensed, under QaPL v0.2 and GNU LGPLv3, for all version of ClearURLs older or equal to version 1.5a.
2019-03-13 11:58:04 +00:00
Kevin Röbert
239ee17697 Deleted LICENSE.md 2019-03-13 11:32:24 +00:00
Kevin Röbert
805ef75f7f Merge branch 'storage-improvement' into 'master'
Storage improvement

See merge request KevinRoebert/ClearUrls!38
2019-03-12 17:50:32 +00:00
Kevin Röbert
4367f13f03 New version
Please test the new version :D
2019-03-12 18:48:14 +01:00
Kevin Röbert
b9931f0d63 tld
Another try. The brackets were missing.
2019-03-12 18:27:19 +01:00
Kevin Röbert
b87eaa4eea hash fix ^^" 2019-03-12 18:25:22 +01:00
Kevin Röbert
9c638c52f9 Preparations for costume rules
+ Preparations for costume rules
- Feature "Report URLs"
+ Auto hash rules
+ Minimize rules length
+ Add start and end delimiters to rules
2019-03-12 18:13:23 +01:00
Kevin Röbert
3480dd71c5 New rules new hash 2019-02-25 22:31:03 +01:00
Kevin Röbert
110fd19a07 #137 add steam rule 2019-02-25 22:30:01 +01:00
Kevin Röbert
3cc2d6d1a8 New rules new hash 2019-02-25 13:45:17 +01:00
Kevin Röbert
18cc61de0b #135 Google reCAPTCHA 2019-02-25 13:41:59 +01:00
Kevin Röbert
6395335428 New rules new hash 2019-02-23 17:13:37 +01:00
Kevin Röbert
f2034a9b7e Exception for tv2.no #125 2019-02-23 17:12:36 +01:00
Kevin Röbert
15ad222706 New rules new hash 2019-02-20 17:34:52 +01:00
Kevin Röbert
688026c408 Merge branch 'patch-1' into 'master'
Update TechCrunch rules due acquisition by Oath.com

See merge request KevinRoebert/ClearUrls!37
2019-02-20 16:32:09 +00:00
Katrin Leinweber
8884674e36 Update TechCrunch rules due acquisition by Oath.com 2019-02-19 20:46:47 +00:00
Kevin Röbert
81bc71de5e storage improvement
The command pattern has been implemented so that ClearURLs also works in private mode.
See also: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage
2019-02-13 18:02:08 +01:00
Kevin Röbert
03cdcbb38a Update README.md 2019-02-13 00:09:23 +00:00
Kevin Röbert
078b51de98 Update README.md 2019-02-13 00:02:03 +00:00
Kevin Röbert
c39ead0a6d Update .gitlab-ci.yml 2019-02-12 23:56:48 +00:00
Kevin Röbert
a57591cd0b Update .gitlab-ci.yml 2019-02-12 23:52:52 +00:00
Kevin Röbert
8bee5b99f1 Update .gitlab-ci.yml 2019-02-12 23:48:11 +00:00
Kevin Röbert
4321771762 Update .gitlab-ci.yml 2019-02-12 23:46:14 +00:00
Kevin Röbert
32b525363a Update .gitlab-ci.yml 2019-02-12 23:38:39 +00:00
Kevin Röbert
c6f66ec646 Update .gitlab-ci.yml 2019-02-12 23:33:40 +00:00
Kevin Röbert
f139e628ab Test auto build: .gitlab-ci.yml 2019-02-12 23:30:36 +00:00
Kevin Röbert
23e7fa4064 Merge branch 'patch-1' into 'master'
Update Ukrainian messages.json

See merge request KevinRoebert/ClearUrls!36
2019-02-01 16:56:36 +00:00
Artem Polivanchuk
99ba98f909 Update Ukrainian messages.json 2019-02-01 09:26:54 +00:00
Kevin Röbert
126dc02e07 New rules new hash 2018-12-04 10:39:09 +01:00
Kevin Röbert
a8334e60fa #123 Google Drive exception 2018-12-04 10:37:36 +01:00
Kevin Röbert
0b3b1f7498 Update README.md 2018-11-24 00:15:10 +00:00
Kevin Röbert
3fae440364 New screenshot 2018-11-24 01:13:05 +01:00
Kevin Röbert
6b9f9a5ca1 New rules new hash 2018-11-24 00:49:13 +01:00
Kevin Röbert
2266cbb434 Merge branch 'patch-1' into 'master'
Add new Facebook's fbclid

See merge request KevinRoebert/ClearUrls!35
2018-11-23 23:47:17 +00:00
K3A
11abcf9783 add new fbclid https://www.reddit.com/r/analytics/comments/9o52yw/parameter_called_fbclid_appearing_in_referrals/ 2018-11-22 15:12:33 +00:00
Kevin Röbert
d2d4b25f0b New rules new hash 2018-10-20 16:19:29 +02:00
Kevin Röbert
57de51eb53 Bugfix for #115
I hope this fix the bug :D
2018-10-20 16:18:38 +02:00
Kevin Röbert
ca6d0e037d New rules new hash 2018-10-08 17:10:35 +02:00
Kevin Röbert
f3c86db0b9 New rules 2018-10-08 17:09:18 +02:00
Kevin Röbert
c7d0c63f79 Version 1.3.4.0 bins 2018-10-08 16:38:22 +02:00
Kevin Röbert
06b84d7490 Version 1.3.4.0
+ Added suggestion from issue #106
+ Added new french translation. A special thanks to the translator
2018-10-08 16:28:53 +02:00
Kevin Röbert
8c84fa865c New rules new hash 2018-09-28 15:38:32 +02:00
Kevin Röbert
30a8ac5c47 #103 new facebook rules 2018-09-28 15:37:40 +02:00
Kevin Röbert
1754370ee5 Move files to promotion 2018-09-26 17:53:19 +02:00
Kevin Röbert
bf6ef0049a Merge branch 'master' of https://gitlab.com/KevinRoebert/ClearUrls 2018-09-26 17:44:38 +02:00
Kevin Röbert
bba11abc92 Version 1.3.3.18 2018-09-26 17:44:33 +02:00
Kevin Röbert
0dd713cbab Update README.md 2018-09-26 15:42:06 +00:00
Kevin Röbert
e9cd5af088 Update README.md 2018-09-26 15:41:08 +00:00
Kevin Röbert
2bf4a1e806 Update README.md 2018-09-26 15:39:33 +00:00
Kevin Röbert
228015e640 New Addon version and 10k downloads :) 2018-09-26 17:35:50 +02:00
Kevin Röbert
7087935918 New rules new hash 2018-09-25 22:11:20 +02:00
Kevin Röbert
a4312f005c Update for facebook 2018-09-25 22:10:31 +02:00
Kevin Röbert
ed185168d5 Version 1.3.3.17 2018-09-25 14:46:03 +02:00
Kevin Röbert
76addcf18c Fix for #102
Load the icon settings at boot
2018-09-25 14:34:05 +02:00
Kevin R
7351f5b559 I learned from Issue #99 :P 2018-09-18 21:55:08 +00:00
Kevin Röbert
03c8c164fc New rules new hash 2018-09-18 23:39:32 +02:00
Kevin Röbert
71783f568e Fix #92, #98, #99
Fix for the google search toolbar bug and the google language bug.
2018-09-18 23:37:11 +02:00
Kevin Röbert
037ef829b4 New rules new hash 2018-09-16 20:43:01 +02:00
Kevin Röbert
ed95ed92a6 Google Mail exception fix
#93
2018-09-16 20:41:55 +02:00
202 changed files with 19068 additions and 9377 deletions

13
.editorconfig Normal file
View File

@@ -0,0 +1,13 @@
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 100
[*.md]
trim_trailing_whitespace = false

3
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,3 @@
# These are supported funding model platforms
custom: ['https://www.paypal.me/KevinRoebert', 'https://liberapay.com/kroeb', 'https://www.buymeacoffee.com/KevinRoebert']# Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

39
.github/lockdown.yml vendored Normal file
View File

@@ -0,0 +1,39 @@
# Configuration for Repo Lockdown - https://github.com/dessant/repo-lockdown
# Skip issues and pull requests created before a given timestamp. Timestamp must
# follow ISO 8601 (`YYYY-MM-DD`). Set to `false` to disable
#skipCreatedBefore: false
# Issues and pull requests with these labels will be ignored. Set to `[]` to disable
#exemptLabels: []
# Comment to post before closing or locking. Set to `false` to disable
#comment: true
# Label to add before closing or locking. Set to `false` to disable
#label: true
# Close issues and pull requests
#close: true
# Lock issues and pull requests
#lock: true
# Limit to only `issues` or `pulls`
#only: pulls
# Optionally, specify configuration settings just for `issues` or `pulls`
issues:
comment: >
This repository is only a mirror of https://gitlab.com/KevinRoebert/ClearUrls. Issues are read here, but it can take longer until they are addressed. If possible, please use the GitLab repo or this support mail address: support (at) clearurls.xyz.
lock: false
close: false
pulls:
comment: >
This repository is just a mirror of https://gitlab.com/KevinRoebert/ClearUrls. Only there pull requests accepted.
lock: false
close: true
# Repository to extend settings from
# _extends: repo

27
.gitignore vendored Normal file
View File

@@ -0,0 +1,27 @@
# See https://help.github.com/ignore-files/ for more about ignoring files.
# dependencies
/node_modules
# testing
/coverage
# production
/build
# misc
.DS_Store
.env
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# WebStorm
.idea/
node_modules
yarn.lock
distribution
coverage
size-plugin.json
junit.xml

115
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,115 @@
image: debian:latest
before_script:
- export DEBIAN_FRONTEND= noninteractive
- apt-get update -y
- apt-get install -y zip unzip nodejs jsonlint
# This folder is cached between builds
# http://docs.gitlab.com/ce/ci/yaml/README.html#cache
cache:
paths:
- node_modules/
stages:
- install
- test
- build
# - deploy
# test rules:
# stage: test
# script:
# - jsonlint-php data/data.min.json
# only:
# changes:
# - data/data.min.json
#
# hash rules:
# stage: build
# script:
# - sha256sum data/data.min.json | awk '{print $1}' > rules.min.hash
# - node build_tools/minifyDataJSON.js "data/data.min.json" "data.minify.json"
# - sha256sum data.minify.json | awk '{print $1}' > rules.minify.hash
# artifacts:
# paths:
# - rules.min.hash
# - data.minify.json
# - rules.minify.hash
# only:
# refs:
# - merge_requests
# - master
# changes:
# - data/data.min.json
install dependencies:
image: node:latest
stage: install
script:
- npm install
test:lint:
image: node:latest
stage: test
dependencies:
- install dependencies
script:
- npm run lint
test:vulnerabilities:
image: node:latest
stage: test
dependencies:
- install dependencies
script:
- npm audit
test:addon:
image: node:latest
stage: test
dependencies:
- install dependencies
script:
- npm run test:ci
coverage: /All files[^|]*\|[^|]*\s+([\d\.]+)/
artifacts:
when: always
paths:
- coverage
reports:
junit: junit.xml
expire_in: 30 days
bundle addon:
stage: build
script:
- zip ClearURLs -r -FS distribution/*
only:
- master
artifacts:
paths:
- ClearURLs.zip
# pages:
# stage: deploy
# script:
# - mkdir public
# - mkdir public/data
# - mv GitLabPages/* public/
# - cp img/clearurls.svg public/clearurls.svg
# - cp data/data.min.json public/data/data.min.json
# - sha256sum public/data/data.min.json | awk '{print $1}' > public/data/rules.min.hash
# - node build_tools/minifyDataJSON.js "public/data/data.min.json" "public/data/data.minify.json"
# - sha256sum public/data/data.minify.json | awk '{print $1}' > public/data/rules.minify.hash
# artifacts:
# paths:
# - public
# only:
# refs:
# - merge_requests
# - master
# changes:
# - GitLabPages/*
# - img/clearurls.svg
# - data/data.min.json
# - build_tools/minifyDataJSON.js

View File

@@ -36,20 +36,8 @@ You do not have to reinstall Firefox or disable all addons. You can just create
* **Version**: [compulsory. you must provide your version] * **Version**: [compulsory. you must provide your version]
* **Platform**: [either `uname -a` output, or if Windows, version and 32-bit or * **Platform**: [either `uname -a` output, or if Windows, version and 32-bit or
64-bit] 64-bit]
* **Country**: [The country from which you called the page. You can found your country here: https://ipapi.co//country_capital]
### Log ### Log
<!-- Please enable the log functionality of ClearURLs and copy your log into this table. --> <!-- Please enable the log functionality of ClearURLs and attach the exported log to this bug report. -->
<!-- Or if the log is to long, save the html file (press ctrl+s) and attach to this issue the `Log from ClearURLs.html` file --> <!-- Here you can find a step by step tutorial "How to enable logging in ClearURLs": https://www.youtube-nocookie.com/embed/Rm1YkwXQDSM -->
| Before processing | After processing | Rule | Time |
|-------------------|------------------|------|------|
| | | | |
<!-- If you attach the html file, please copy into the ``` area -->
```
```

6
.prettierrc Normal file
View File

@@ -0,0 +1,6 @@
{
"trailingComma": "all",
"tabWidth": 2,
"semi": false,
"singleQuote": true
}

616
CHANGELOG.md Normal file
View File

@@ -0,0 +1,616 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Ongoing
### Changed
- Performance optimizations for rules by [@thexeos](https://gitlab.com/thexeos)
## [1.19.0] - 2020-07-22
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 37
### Changed
- Changed url decoding to prevent endless loop
## [1.18.1] - 2020-06-07
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 37
### Changed
- Hotfix for the endless loop on new log limit ([#545](https://gitlab.com/KevinRoebert/ClearUrls/issues/545), [#541](https://gitlab.com/KevinRoebert/ClearUrls/issues/541), [#539](https://gitlab.com/KevinRoebert/ClearUrls/issues/539))
## [1.18.0] - 2020-06-06
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 37
### Removed
- sha256.jquery.plugin
- Popper.js v1.16.0
- Bootstrap Colorpicker v3.2.0
- Removed `xbl` type from request types, because it throws since 78.0b3 exceptions (no longer supported)
### Added
- Pickr v1.7.0
### Changed
- Replaced sha256.jquery.plugin with native hashing
- Replaced jQuery dependencies with native JavaScript in all core files (jQuery is only required for the log page)
- Hopefully this fixes the performance problems that some users experience when using this addon in conjunction with other addons
- [#256](https://gitlab.com/KevinRoebert/ClearUrls/issues/256)
- [#535](https://gitlab.com/KevinRoebert/ClearUrls/issues/535)
- Restricted the log limit to max. 5000 entries
- Default value is now 100
- Too many log entries have resulted in performance losses for users who have forgotten that they have turned on the log. This step should prevent this.
## [1.17.0] - 2020-04-14
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Changed
- Updated some strings of Spanish translation
- Updated some strings of French translation
- Updated some strings of Italian translation
- Updated some strings of Russian translation
- Updated some strings of Swedish translation
- Updated some strings of Turkish translation
- Updated some strings of Ukrainian translation
- Updated some strings of Chinese Simple translation
### Fixed
- Fixed a typo in the path to the Datatables JavaScript file
- Fixed [#445](https://gitlab.com/KevinRoebert/ClearUrls/issues/445)
- Fixed [#462](https://gitlab.com/KevinRoebert/ClearUrls/issues/462)
### Added
- Added check for setBadgeTextColor function (only supported in Firefox)
### Removed
- Removed browser-polyfill content script import (seems no longer needed)
- Removed old `applications` value
## [1.16.0] - 2020-03-20
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Added
- Added ETag header filtering [#362](https://gitlab.com/KevinRoebert/ClearUrls/issues/362), [#440](https://gitlab.com/KevinRoebert/ClearUrls/issues/440). Hint: Cache must be cleared before first use, to delete the already existing ETags.
### Fixed
- Fixed spontaneous disappearance of the badged
- Fixed wrong counting of blocked elements (too little was ;D)
### Changed
- Updated all translation
- Changed badged font color to #FFFFFF
- Changed watchdog behavior as follows [#428](https://gitlab.com/KevinRoebert/ClearUrls/issues/428), [#431](https://gitlab.com/KevinRoebert/ClearUrls/issues/431), [#429](https://gitlab.com/KevinRoebert/ClearUrls/issues/429):
- Increased watchdog interval to 60 seconds
- Executed watchdog only if ClearURLs is also active
- Watchdog restarts ClearURLs at most 3 times and only if ClearURLs has rules
- Changed behavior of downloading rules [#428](https://gitlab.com/KevinRoebert/ClearUrls/issues/428), [#431](https://gitlab.com/KevinRoebert/ClearUrls/issues/431), [#429](https://gitlab.com/KevinRoebert/ClearUrls/issues/429):
- If download of hash file fails and no local rules are available, then ClearURLs displays `hash_status_code_5` and deactivates itself
- If download of rules file fails and no local rules are available, then ClearURLs displays `hash_status_code_5` and deactivates itself
## [1.15.0] - 2020-02-16
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Changed
- Updated Italian translation by [@gioxx](https://gitlab.com/gioxx)
## [1.14.0] - 2020-02-01
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Changed
- Changed icon
## [1.13.0] - 2020-02-01
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Changed
- Updated some strings of French translation by lucifer
## [1.12.0] - 2020-01-29
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Changed
- Updated Russian translation by elfriob
- Updated Spanish translation by [@socram](https://gitlab.com/socram)
## [1.11.0] - 2020-01-06
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Added
- Added hyperlink auditing blocking [#184](https://gitlab.com/KevinRoebert/ClearUrls/issues/184)
- Added yandex link fix script, to avoid URL tracking [#305](https://gitlab.com/KevinRoebert/ClearUrls/issues/305)
## [1.10.0] - 2020-01-03
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Changed
- Updated to Bootstrap 4.3.1
- Updated to jQuery 3.4.1
- Updated to DataTables 1.10.20
- Deleted unnecessary Bootstrap Dialog lib
- Replaced [pick-a-color](https://github.com/lauren/pick-a-color) with [bootstrap-colorpicker 3.2.0](https://github.com/itsjavi/bootstrap-colorpicker)
- Minor corrections on english translation by [@Sopor](https://gitlab.com/Sopor)
- Replaced glyphicons with [fontawesome 5.12.0](https://github.com/FortAwesome/Font-Awesome/tree/5.12.0)
### Added
- Added [popper.js 1.16.0](https://github.com/popperjs/popper.js/tree/v1.16.0)
- Added Swedish translation by [@Sopor](https://gitlab.com/Sopor)
### Fixed
- Fixed [#338](https://gitlab.com/KevinRoebert/ClearUrls/issues/338)
- Fixed [#333](https://gitlab.com/KevinRoebert/ClearUrls/issues/333)
- Fixed [#332](https://gitlab.com/KevinRoebert/ClearUrls/issues/332)
- Fixed [#307](https://gitlab.com/KevinRoebert/ClearUrls/issues/307)
- Maybe [#315](https://gitlab.com/KevinRoebert/ClearUrls/issues/315) fixed
## [1.9.5] - 2019-12-17
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Added
- Added Turkish translation by Ulaş Çakmak
### Changed
- Updated some strings of French translation by lucifer
### Fixed
- Fixed problem with default RegExp
## [1.9.4] - 2019-11-24
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Fixed
- Fixed toolbar icon on startup [#102](https://gitlab.com/KevinRoebert/ClearUrls/issues/102)
### Added
- Added option to disable/allow domain blocking [#294](https://gitlab.com/KevinRoebert/ClearUrls/issues/294)
### Changed
- Some refactoring
## [1.9.3.1] - 2019-11-15
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Changed
- Changed data and hash URL to GitLab Pages, to prevent hitting the GitLab infrastructure directly [#295](https://gitlab.com/KevinRoebert/ClearUrls/issues/295#note_245456134).
## [1.9.3] - 2019-11-15
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Fixed
- Fixed wrong initial rules URL
## [1.9.2] - 2019-11-09
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Fixed
- Fixed [#290](https://gitlab.com/KevinRoebert/ClearUrls/issues/290)
### Changed
- Updated some strings of Italian translation by [@gioxx](https://gitlab.com/gioxx)
### Added
- Added a minimal version of the data.min.json file where all line breaks and spaces, as well as default values and empty lists are removed.
## [1.9.1] - 2019-10-24
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Fixed
- Fixed badged in quiet mode
### Added
- Added Italian translation by [@gioxx](https://gitlab.com/gioxx)
## [1.9.0] - 2019-10-22
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Fixed
- Fixed bug in "history tracking injection protection". This option was not disabled, when the global filter switch are on off
- Fixed [#241](https://gitlab.com/KevinRoebert/ClearUrls/issues/241)
- Possible fix for [#203](https://gitlab.com/KevinRoebert/ClearUrls/issues/203)
### Changed
- Refactoring
- Changed background script loading sequence to prevent that required functions are not yet loaded.
### Added
- Added an option to im-/export the log (requires the `downloads` permission)
- Added an option to im-/export the settings (requires the `downloads` permission)
- Added information page for blocked sites, when they are called in the `main_frame`
- Added option to allow referral marketing ([#284](https://gitlab.com/KevinRoebert/ClearUrls/issues/284))
- Added "multiple times URL encodes" recognition
- Added an option to limit the log entries ([#56](https://gitlab.com/KevinRoebert/ClearUrls/issues/56))
## [1.8.5] - 2019-09-29
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Fixed
- Fixed [#264](https://gitlab.com/KevinRoebert/ClearUrls/issues/264)
- Fixed [#262](https://gitlab.com/KevinRoebert/ClearUrls/issues/262)
- Fixed [#267](https://gitlab.com/KevinRoebert/ClearUrls/issues/267)
## [1.8.4] - 2019-09-26
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Changed
- Force redirects only on main frames
- Added google link fix script, to avoid the sub frame permission for force redirection on google
## [1.8.3] - 2019-09-23
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Fixed
- Fixed OR case
## [1.8.2] - 2019-09-23
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Changed
- Only redirects, if request is of type main or sub frame to prevent security issues on automatically loaded ressource like images
### Fixed
- Fixed [#253](https://gitlab.com/KevinRoebert/ClearUrls/issues/253)
- Fixed [#254](https://gitlab.com/KevinRoebert/ClearUrls/issues/254)
## [1.8.1] - 2019-09-12
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Changed
- Improvements on check for android systems ([#206](https://gitlab.com/KevinRoebert/ClearUrls/issues/206))
- Improvements on storage. Away with periodic save of in-memory data to storage. Instead save when there are actual changes by [@tartpvule](https://gitlab.com/tartpvule) in ([!47](https://gitlab.com/KevinRoebert/ClearUrls/merge_requests/47))
## [1.8.0] - 2019-09-11
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Added
- Added default option to skip URLs with a host in a local range
### Fixed
- Fixed [#238](https://gitlab.com/KevinRoebert/ClearUrls/issues/238)
- Fixed wrong count on cleaning tool (forgot to count also the total amount of elements at cleaning tool)
### Changed
- Improvements on check for android systems ([#206](https://gitlab.com/KevinRoebert/ClearUrls/issues/206))
## [1.7.4] - 2019-09-06
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Added
- Added Hungarian translations by [@ztoldy2](https://gitlab.com/ztoldy2)
## [1.7.3] - 2019-08-07
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Changed
- Updated Brazilian Portuguese translation by Ramon S.
## [1.7.2] - 2019-08-07
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Changed
- Updated japanese translation by [@Shitennouji](https://gitlab.com/Shitennouji)
## [1.7.1] - 2019-08-04
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Added
- Added new setting to data.min.json to set if redirects should be enforced via a "tabs.update" ([#221](https://gitlab.com/KevinRoebert/ClearUrls/issues/221))
- Added [#220](https://gitlab.com/KevinRoebert/ClearUrls/issues/220)
- Added [#218](https://gitlab.com/KevinRoebert/ClearUrls/issues/218)
### Fixed
- Fixed YouTube ad redirection bug ([#221](https://gitlab.com/KevinRoebert/ClearUrls/issues/221))
- Fixed [#217](https://gitlab.com/KevinRoebert/ClearUrls/issues/217)
## [1.7.0] - 2019-07-30
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Added
- Added support for raw rules to cleaning also parts from URL-path
### Fixed
- Fixed misspelling in german translation
## [1.6.9] - 2019-07-29
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Fixed
- Fixed error in fields RegExp
## [1.6.8] - 2019-07-28
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Changed
- Improvements on check for android systems ([#206](https://gitlab.com/KevinRoebert/ClearUrls/issues/206))
### Fixed
- [#205](https://gitlab.com/KevinRoebert/ClearUrls/issues/205)
## [1.6.7] - 2019-07-25
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Fixed
- [#175](https://gitlab.com/KevinRoebert/ClearUrls/issues/175) by [@yukulele](https://gitlab.com/yukulele)
- [#196](https://gitlab.com/KevinRoebert/ClearUrls/issues/196)
- [#204](https://gitlab.com/KevinRoebert/ClearUrls/issues/204)
## [1.6.6] - 2019-06-14
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Fixed
- [#171](https://gitlab.com/KevinRoebert/ClearUrls/issues/171)
- [#195](https://gitlab.com/KevinRoebert/ClearUrls/issues/195)
## [1.6.5] - 2019-06-12
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Added
- Added support for fragment cleaning
### Fixed
- [#171](https://gitlab.com/KevinRoebert/ClearUrls/issues/171)
- [#191](https://gitlab.com/KevinRoebert/ClearUrls/issues/191)
- [#192](https://gitlab.com/KevinRoebert/ClearUrls/issues/192)
- [#193](https://gitlab.com/KevinRoebert/ClearUrls/issues/193)
- [#194](https://gitlab.com/KevinRoebert/ClearUrls/issues/194)
## [1.6.4] - 2019-05-07
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Added
- Added Polish translation by [@alekksander](https://gitlab.com/alekksander)
## [1.6.3] - 2019-05-06
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Added
- Added redirection from [#181](https://gitlab.com/KevinRoebert/ClearUrls/issues/181)
### Changed
- Update french translation by [@hydrargyrum](https://gitlab.com/hydrargyrum)
- Update chinese translation
## [1.6.2] - 2019-04-26
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Added
- Added rules from [#172](https://gitlab.com/KevinRoebert/ClearUrls/issues/172)
- Added rules from [#176](https://gitlab.com/KevinRoebert/ClearUrls/issues/176)
- Added rules from [#178](https://gitlab.com/KevinRoebert/ClearUrls/issues/178)
### Fixed
- [#170](https://gitlab.com/KevinRoebert/ClearUrls/issues/170)
- [#162](https://gitlab.com/KevinRoebert/ClearUrls/issues/162)
- [#163](https://gitlab.com/KevinRoebert/ClearUrls/issues/163)
## [[1.6.1] - 2019-04-14](https://gitlab.com/KevinRoebert/ClearUrls/commit/a8a5f7e311300ae7f186d4b581e805bdf3f9f5d9)
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 22
### Changed
- Chinese translations by [@yipinghuang](https://gitlab.com/yipinghuang)
- French translations
## [1.6] - 2019-04-11
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 28
### Added
- Added listener to the browser history to prevent tracking with the [history.pushState method](https://developer.mozilla.org/en-US/docs/Web/API/History_API)
- Added webNavigation and tabs permissions, for the new feature
- Added switches in settings to enable and disable the context menu entry and the history listener
- Added tool to clean URLs, that was pasted into a textbox
- Added icon for new tool to clean URLs
### Fixed
- [#40](https://gitlab.com/KevinRoebert/ClearUrls/issues/40), see also https://curl.kevinroebert.de
- [#103](https://gitlab.com/KevinRoebert/ClearUrls/issues/103), see also https://curl.kevinroebert.de
### Changed
- Changed clipboard-helper.js path to be absolute to prevent problems
- Changed rewrite of old GitHub links to the new data.min.json and rules.min.hash
- Config icon is now bigger and above the config label
- Update Traditional Chinese Translation by [@yipinghuang](https://gitlab.com/yipinghuang)
## [[1.5.8] - 2019-04-10](https://gitlab.com/KevinRoebert/ClearUrls/commit/1b6cc37bdd23011d006bf7ef6824463e7c96067a)
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 28
### Added
- Added context menu entry, to clean and copy links into clipboard
## [[1.5.4] - 2019-04-08](https://gitlab.com/KevinRoebert/ClearUrls/commit/0a948968b309f418ec4175dd23fedb0b88c97086)
### Fixed
- Changed icon format from svg into png to support Chrome
## [[1.5.3] - 2019-04-03](https://gitlab.com/KevinRoebert/ClearUrls/commit/304cbe2e6bf3756f4bcb675ec4b8b7403158ea5c)
### Removed
- Removed the *tab permission*, because it is not required for all used methods on the tabs api
## [[1.5.2] - 2019-04-01](https://gitlab.com/KevinRoebert/ClearUrls/commit/03e0580b202fc0a77f442f284dd5470cddbbd5c0)
### Added
- Added new screenshots of the ClearURLs popup
### Changed
- Replaced *webextension-polyfill* v.0.3.1 with the new version v0.4.0
- Updated the Chrome version of ClearURLs to the newest version
- Changed ClearURLs to support both Firefox and Chrome, without generating every time to different source codes
- Changed the GitLab-CI to build the Chrome version automatically from the Firefox version
- Replaced the old screenshots in the README with new ones
### Removed
- Removed the old ClearURLs Chrome version
## [[1.5.1.6a] - 2019-03-27](https://gitlab.com/KevinRoebert/ClearUrls/commit/869cd63e645e2cacaf26017366fa4eaa3fb97411)
### Fixed
- Added own flat function and a function that removes empty fields from arrays to support Waterfox
## [[1.5.1.5a] - 2019-03-18](https://gitlab.com/KevinRoebert/ClearUrls/commit/d87d88250dccd07570c10b37f41054ed44a0ee97)
### Fixed
- Bugfix to support Android devices again
## [[1.5.1a] - 2019-03-14](https://gitlab.com/KevinRoebert/ClearUrls/commit/80af6f6feac086490f841adad5fe769d71be86f8)
### Added
- Added *unlimitedStorage* permissions to prevent storage restrictions (which will come in future versions of firefox) and to have enough space for user generated rules
### Changed
- Changed the regex interpretation for better performance
## [[1.5a] - 2019-03-14](https://gitlab.com/KevinRoebert/ClearUrls/commit/80af6f6feac086490f841adad5fe769d71be86f8)
### Added
- New rules file *data.min.json* that is a minimized version of the old one
- New technique to get data from the local storage
- The command pattern has been implemented so that ClearURLs also works in private mode
- Automatically generating hash for *data.min.json* file with GitLab-CI
- Add start and end delimiters to rules
- Preparations for costume rules
### Changed
- Storage improvements, better performance
- Splitted core file into multiple pieces for better overview
- Minimize rules length
### Fixed
- [#124](https://gitlab.com/KevinRoebert/ClearUrls/issues/124)
### Removed
- Warning in private mode (no longer necessary)
- Removed *Report URL* function
## [[1.3.4.2] - 2019-02-01](https://gitlab.com/KevinRoebert/ClearUrls/commit/23e7fa406436c40c561c1e0108c5e9c8c7e9e0d8)
### Changed
- Updated Ukrainian translation from [@a-polivanchuk](https://gitlab.com/a-polivanchuk)
## [[1.3.4.0] - 2018-10-08](https://gitlab.com/KevinRoebert/ClearUrls/commit/06b84d749084997e3d759ebd916772b446adfe9c)
## Added
- Added more request types, as proposed in [#106](https://gitlab.com/KevinRoebert/ClearUrls/issues/106)
## Updated
- Updated french translation

View File

@@ -1,892 +0,0 @@
/*
* ##################################################################
* # Fetch Rules & Exception from URL #
* ##################################################################
*/
var providers = [];
var prvKeys = [];
var badges = [];
var tabid = 0;
var siteBlockedAlert = 'javascript:void(0)';
var dataHash;
var localDataHash;
var os;
var currentURL;
var storage = [];
getDataFromDisk();
function start(items)
{
initStorage(items);
/**
* Save OS Version
*/
chrome.runtime.getPlatformInfo(function(info) {
os = info.os;
/**
* Initialize the JSON provider object keys.
*
* @param {JSON Object} obj
*/
function getKeys(obj){
for(var key in obj){
prvKeys.push(key);
}
}
/**
* Initialize the providers form the JSON object.
*
*/
function createProviders()
{
data = storage.ClearURLsData;
for(var p = 0; p < prvKeys.length; p++)
{
//Create new provider
providers.push(new Provider(prvKeys[p],data.providers[prvKeys[p]].completeProvider));
//Add URL Pattern
providers[p].setURLPattern(data.providers[prvKeys[p]].urlPattern);
//Add rules to provider
for(var r = 0; r < data.providers[prvKeys[p]].rules.length; r++)
{
providers[p].addRule(data.providers[prvKeys[p]].rules[r]);
}
//Add exceptions to provider
for(var e = 0; e < data.providers[prvKeys[p]].exceptions.length; e++)
{
providers[p].addException(data.providers[prvKeys[p]].exceptions[e]);
}
//Add redirections to provider
for(var re = 0; re < data.providers[prvKeys[p]].redirections.length; re++)
{
providers[p].addRedirection(data.providers[prvKeys[p]].redirections[re]);
}
}
}
/**
* Convert the external data to Objects and
* call the create provider function.
*
* @param {String} retrievedText - pure data form github
*/
function toObject(retrievedText) {
getKeys(storage.ClearURLsData.providers);
createProviders();
}
/**
* Load local saved data, if the browser is offline or
* some other network trouble.
*/
function loadOldDataFromStore()
{
localDataHash = storage.dataHash;
}
/**
* Save the hash status to the local storage.
* The status can have the following values:
* 1 "up to date"
* 2 "updated"
* 3 "update available"
* @param status_code the number for the status
*/
function storeHashStatus(status_code)
{
switch(status_code)
{
case 1: status_code = "hash_status_code_1";
break;
case 2: status_code = "hash_status_code_2";
break;
case 3: status_code = "hash_status_code_3";
break;
default: status_code = "hash_status_code_4";
}
storage.hashStatus = status_code;
}
/**
* Get the hash for the rule file on github.
* Check the hash with the hash form the local file.
* If the hash has changed, then download the new rule file.
* Else do nothing.
*/
function getHash()
{
//Get the target hash from github
fetch(storage.hashURL)
.then(function(response){
var responseTextHash = response.clone().text().then(function(responseTextHash){
if(response.ok)
{
dataHash = responseTextHash;
if($.trim(dataHash) !== $.trim(localDataHash))
{
fetchFromURL();
}
else {
toObject(storage.ClearURLsData);
storeHashStatus(1);
}
}
else {
dataHash = false;
}
});
});
}
/**
* Fetch the Rules & Exception from github.
*/
function fetchFromURL()
{
fetch(storage.ruleURL)
.then(checkResponse);
function checkResponse(response)
{
var responseText = response.clone().text().then(function(responseText){
if(response.ok)
{
var downloadedFileHash = $.sha256(responseText);
if($.trim(downloadedFileHash) === $.trim(dataHash))
{
storage.ClearURLsData = responseText;
storage.dataHash = downloadedFileHash;
storeHashStatus(2);
}
else {
storeHashStatus(3);
}
storage.ClearURLsData = JSON.parse(storage.ClearURLsData);
toObject(storage.ClearURLsData);
}
});
}
}
// ##################################################################
/*
* ##################################################################
* # Supertyp Provider #
* ##################################################################
*/
/**
* Declare constructor
*
* @param {String} _name Provider name
* @param {boolean} completeProvider Set URL Pattern as rule
*/
function Provider(_name,_completeProvider = false){
var name = _name;
var urlPattern;
var rules = [];
var exceptions = [];
var canceling = _completeProvider;
var redirections = [];
if(_completeProvider){
rules.push(".*");
}
/**
* Returns the provider name.
* @return {String}
*/
this.getName = function() {
return name;
};
/**
* Add URL pattern.
*
* @require urlPatterns as RegExp
*/
this.setURLPattern = function(urlPatterns) {
urlPattern = new RegExp(urlPatterns, "i");
};
/**
* Return if the Provider Request is canceled
* @return {Boolean} isCanceled
*/
this.isCaneling = function() {
return canceling;
};
/**
* Check the url is matching the ProviderURL.
*
* @return {boolean} ProviderURL as RegExp
*/
this.matchURL = function(url) {
return !(this.matchException(url)) && urlPattern.test(url);
};
/**
* Add a rule to the rule array.
*
* @param String rule RegExp as string
*/
this.addRule = function(rule) {
rules.push(rule);
};
/**
* Return all rules as an array.
*
* @return Array RegExp strings
*/
this.getRules = function() {
return rules;
};
/**
* Add a exception to the exceptions array.
*
* @param String exception RegExp as string
*/
this.addException = function(exception) {
exceptions.push(exception);
};
/**
* Private helper method to check if the url
* an exception.
*
* @param {String} url RegExp as string
* @return {boolean} if matching? true: false
*/
this.matchException = function(url) {
var result = false;
//Add the site blocked alert to every exception
if(url == siteBlockedAlert) return true;
for (var i = 0; i < exceptions.length; i++) {
if(result) { break; }
exception_regex = new RegExp(exceptions[i], "i");
result = exception_regex.test(url);
}
return result;
};
/**
* Add a redirection to the redirections array.
*
* @param String redirection RegExp as string
*/
this.addRedirection = function(redirection) {
redirections.push(redirection);
};
/**
* Return all redirection.
*
* @return url
*/
this.getRedirection = function(url) {
var re = null;
for(var i = 0; i < redirections.length; i++)
{
result = (url.match(new RegExp(redirections[i], "i")));
if (result && result.length > 0)
{
re = (new RegExp(redirections[i], "i")).exec(url)[1];
break;
}
}
return re;
};
}
// ##################################################################
/**
* Helper function which remove the tracking fields
* for each provider given as parameter.
*
* @param {Provider} provider Provider-Object
* @param {webRequest} request webRequest-Object
* @return {Array} Array with changes and url fields
*/
function removeFieldsFormURL(provider, request)
{
var url = request.url;
var domain = url.replace(new RegExp("\\?.*", "i"), "");
var fields = "";
var rules = provider.getRules();
var changes = false;
var cancel = false;
/*
* Expand the url by provider redirections. So no tracking on
* url redirections form sites to sites.
*/
var re = provider.getRedirection(url);
if(re !== null)
{
url = decodeURIComponent(re);
//Log the action
pushToLog(request.url, re, translate('log_redirect'));
return {
"redirect": true,
"url": url
};
}
/**
* Only test for matches, if there are fields that can be cleaned.
*/
if(existsFields(url))
{
/**
* It must be non-greedy, because by default .* will match
* all ? chars. So the replace function delete everything
* before the last ?. With adding a ? on the quantifier *,
* we fixed this problem.
*/
fields = url.replace(new RegExp(".*?\\?", "i"), "");
for (var i = 0; i < rules.length; i++) {
var beforReplace = fields;
fields = fields.replace(new RegExp(rules[i], "i"), "");
if(beforReplace != fields)
{
//Log the action
pushToLog(domain+"?"+beforReplace, domain+"?"+fields, rules[i]);
if(badges[tabid] == null)
{
badges[tabid] = 0;
}
increaseURLCounter();
if(!checkOSAndroid())
{
if(storage.badgedStatus) {
browser.browserAction.setBadgeText({text: (++badges[tabid]).toString(), tabId: tabid});
}
else
{
browser.browserAction.setBadgeText({text: "", tabId: tabid});
}
}
changes = true;
}
}
url = domain+"?"+fields;
}
else {
if(domain != url)
{
url = domain;
changes = true;
}
}
if(provider.isCaneling()){
pushToLog(request.url, request.url, translate('log_domain_blocked'));
if(badges[tabid] == null)
{
badges[tabid] = 0;
}
increaseURLCounter();
if(!checkOSAndroid())
{
if(storage.badgedStatus) {
browser.browserAction.setBadgeText({text: (++badges[tabid]).toString(), tabId: tabid});
}
else
{
browser.browserAction.setBadgeText({text: "", tabId: tabid});
}
}
cancel = true;
}
return {
"changes": changes,
"url": url,
"cancel": cancel
};
}
/**
* Return the number of parameters query strings.
* @param {String} url URL as String
* @return {int} Number of Parameters
*/
function countFields(url)
{
var matches = (url.match(/[^\/|\?|&]+=[^\/|\?|&]+/gi) || []);
var count = matches.length;
return count;
}
/**
* Returns true if fields exists.
* @param {String} url URL as String
* @return {boolean}
*/
function existsFields(url)
{
var matches = (url.match(/\?.+/i) || []);
var count = matches.length;
return (count > 0);
}
/**
* Function which called from the webRequest to
* remove the tracking fields from the url.
*
* @param {webRequest} request webRequest-Object
* @return {Array} redirectUrl or none
*/
function clearUrl(request)
{
var URLbeforeReplaceCount = countFields(request.url);
//Add Fields form Request to global url counter
increaseGlobalURLCounter(URLbeforeReplaceCount);
if(storage.globalStatus){
var result = {
"changes": false,
"url": "",
"redirect": false,
"cancel": false
};
/*
* Call for every provider the removeFieldsFormURL method.
*/
for (var i = 0; i < providers.length; i++) {
if(providers[i].matchURL(request.url))
{
result = removeFieldsFormURL(providers[i], request);
}
/*
* Expand urls and bypass tracking.
* Cancel the active request.
*/
if(result.redirect)
{
browser.tabs.update(request.tabId, {url: result.url});
return {cancel: true};
}
/*
* Cancel the Request and redirect to the site blocked alert page,
* to inform the user about the full url blocking.
*/
if(result.cancel){
return {
redirectUrl: siteBlockedAlert
};
}
/*
* Ensure that the function go not into
* a loop.
*/
if(result.changes){
return {
redirectUrl: result.url
};
}
}
}
// Default case
return {};
}
/**
* Function to log all activities from ClearUrls.
* Only logging when activated.
* The log is only temporary saved in the cache and will
* permanently saved with the saveLogOnClose function.
*
* @param beforeProcessing the url before the clear process
* @param afterProcessing the url after the clear process
* @param rule the rule that triggered the process
*/
function pushToLog(beforeProcessing, afterProcessing, rule)
{
if(storage.loggingStatus)
{
storage.log.log.push(
{
"before": beforeProcessing,
"after": afterProcessing,
"rule": rule,
"timestamp": Date.now()
}
);
}
}
/**
* Call loadOldDataFromStore, getHash, counter, status and log functions
*/
loadOldDataFromStore();
getHash();
setBadgedStatus();
/**
* Call by each tab is updated.
* And if url has changed.
*/
function handleUpdated(tabId, changeInfo, tabInfo) {
if(changeInfo.url)
{
delete badges[tabId];
}
currentURL = tabInfo.url;
}
/**
* Call by each tab is updated.
*/
browser.tabs.onUpdated.addListener(handleUpdated);
/**
* Call by each tab change to set the actual tab id
*/
function handleActivated(activeInfo) {
tabid = activeInfo.tabId;
browser.tabs.get(tabid).then(function (tab) {
currentURL = tab.url;
});
}
/**
* Call by each tab change.
*/
browser.tabs.onActivated.addListener(handleActivated);
/**
* Check the request.
*/
function promise(requestDetails)
{
if(isDataURL(requestDetails))
{
return {};
}
else {
var ret = clearUrl(requestDetails);
return ret;
}
}
/**
* To prevent long loading on data urls
* we will check here for data urls.
*
* @type {requestDetails}
* @return {boolean}
*/
function isDataURL(requestDetails) {
var s = requestDetails.url;
return s.substring(0,4) == "data";
}
/**
* Call by each Request and checking the url.
*
* @type {Array}
*/
browser.webRequest.onBeforeRequest.addListener(
promise,
{urls: ["<all_urls>"], types: getData("types")},
["blocking"]
);
});
}
/**
* Save every minute the temporary data to the disk.
*/
setInterval(saveOnExit, 60000);
/**
* Get the badged status from the browser storage and put the value
* into a local variable.
*
*/
function setBadgedStatus()
{
if(!checkOSAndroid() && storage.badgedStatus){
browser.browserAction.setBadgeBackgroundColor({
'color': '#'+storage.badged_color
});
}
}
/**
* Change the icon.
*/
function changeIcon()
{
if(storage.globalStatus){
browser.browserAction.setIcon({path: "img/clearurls.svg"});
} else{
browser.browserAction.setIcon({path: "img/clearurls_gray.svg"});
}
}
/**
* Check if it is an android device.
* @return bool
*/
function checkOSAndroid()
{
if(os == "android")
{
return true;
}
else{
return false;
}
}
/**
* Increase by {number} the GlobalURLCounter
* @param {int} number
*/
function increaseGlobalURLCounter(number)
{
if(storage.statisticsStatus)
{
storage.globalurlcounter += number;
}
}
/**
* Increase by one the URLCounter
*/
function increaseURLCounter()
{
if(storage.statisticsStatus)
{
storage.globalCounter++;
}
}
/**
* Writes the storage variable to the disk.
*/
function saveOnExit()
{
var json = {};
Object.entries(storage).forEach(([key, value]) => {
switch (key) {
case "ClearURLsData":
case "log":
json[key] = JSON.stringify(value);
break;
case "types":
json[key] = value.toString();
break;
default:
json[key] = value;
}
});
console.log(translate('core_save_on_disk'));
browser.storage.local.set(json);
}
/**
* Save the value under the key on the disk.
* @param {String} key
* @param {Object} value
*/
function saveOnDisk(key, value)
{
browser.storage.local.set({key: value});
}
/**
* Retrieve everything and save on the RAM.
*/
function getDataFromDisk()
{
browser.storage.local.get().then(start, error);
}
/**
* Get the value under the key.
* @param {String} key
* @return {Object}
*/
function getData(key)
{
return storage[key];
}
/**
* Save the value under the key on the RAM.
* @param {String} key
* @param {Object} value
*/
function setData(key, value)
{
switch (key) {
case "ClearURLsData":
case "log":
storage[key] = JSON.parse(value);
break;
case "hashURL":
case "ruleURL":
storage[key] = replaceOldGithubURLs(value);
break;
case "types":
storage[key] = value.split(',');
break;
default:
storage[key] = value;
}
}
/**
* Translate a string with the i18n API.
*
* @param {string} string Name of the attribute used for localization
*/
function translate(string)
{
return browser.i18n.getMessage(string);
}
/**
* Write error on console.
*/
function error()
{
console.log(translate('core_error'));
}
/**
* Set default values, if the storage is empty.
* @param {Object} items
*/
function initStorage(items)
{
initSettings();
if(!isEmpty(items)) {
Object.entries(items).forEach(([key, value]) => {
setData(key, value);
});
}
}
/**
* Set default values for the settings.
*/
function initSettings()
{
storage.ClearURLsData = [];
storage.dataHash = "";
storage.badgedStatus = true;
storage.globalStatus = true;
storage.globalurlcounter = 0;
storage.globalCounter = 0;
storage.hashStatus = "error";
storage.loggingStatus = false;
storage.log = {"log": []};
storage.statisticsStatus = true;
storage.badged_color = "ffa500";
storage.hashURL = "https://gitlab.com/KevinRoebert/ClearUrls/raw/master/data/rules.hash";
storage.ruleURL = "https://gitlab.com/KevinRoebert/ClearUrls/raw/master/data/data.json";
storage.types = ["main_frame", "sub_frame", "xmlhttprequest"];
storage.reportServer = "https://clearurls.xn--rb-fka.it";
}
/**
* Reloads the extension.
*/
function reload()
{
browser.runtime.reload();
}
/**
* Replace the old GitHub URLs with the
* new GitLab URLs.
*/
function replaceOldGithubURLs(url)
{
switch (url) {
case "https://raw.githubusercontent.com/KevinRoebert/ClearUrls/master/data/rules.hash?flush_cache=true":
return "https://gitlab.com/KevinRoebert/ClearUrls/raw/master/data/rules.hash";
case "https://raw.githubusercontent.com/KevinRoebert/ClearUrls/master/data/data.json?flush_cache=true":
return "https://gitlab.com/KevinRoebert/ClearUrls/raw/master/data/data.json";
default:
return url;
}
}
/**
* Check if an object is empty.
* @param {Object} obj
* @return {Boolean}
*/
function isEmpty(obj)
{
return (Object.getOwnPropertyNames(obj).length === 0);
}
/**
* Returns the current URL.
* @return {String} [description]
*/
function getCurrentURL()
{
return currentURL;
}

View File

@@ -1,20 +0,0 @@
body {
font-size: 13px;
}
.small-version {
font-size: 10px;
}
.navbar-header {
margin-top: 0;
margin-bottom: 8px;
}
.col-sm-1 {
margin-top: -10px;
}
#body-popup {
width: 200px;
}

View File

@@ -1,69 +0,0 @@
{
"manifest_version": 2,
"name": "ClearURLs",
"version": "1.3.3.14",
"author": "Kevin R.",
"description": "Remove tracking elements form URLs.",
"homepage_url": "https://gitlab.com/KevinRoebert/ClearUrls",
"default_locale": "en",
"icons": {
"16": "img/clearurls.png",
"19": "img/clearurls.png",
"20": "img/clearurls.png",
"24": "img/clearurls.png",
"30": "img/clearurls.png",
"32": "img/clearurls.png",
"38": "img/clearurls.png",
"48": "img/clearurls.png",
"64": "img/clearurls.png",
"96": "img/clearurls.png",
"128": "img/clearurls.png"
},
"browser_action": {
"browser_style": true,
"default_icon": {
"16": "img/clearurls.png",
"19": "img/clearurls.png",
"20": "img/clearurls.png",
"24": "img/clearurls.png",
"30": "img/clearurls.png",
"32": "img/clearurls.png",
"38": "img/clearurls.png",
"48": "img/clearurls.png",
"64": "img/clearurls.png",
"96": "img/clearurls.png",
"128": "img/clearurls.png"
},
"default_title": "ClearURLs Add-on",
"default_popup": "html/popup.html"
},
"permissions": [
"*://*/*",
"<all_urls>",
"webRequest",
"webRequestBlocking",
"storage",
"tabs"
],
"background": {
"scripts": [
"browser-polyfill.js",
"external_js/jquery-3.2.1.min.js",
"external_js/sha256.jquery.js",
"clearurls.js"
]
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": [
"browser-polyfill.js"
]
}
],
"options_ui": {
"page": "html/settings.html"
}
}

165
LICENSE Normal file
View File

@@ -0,0 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

View File

@@ -1,118 +0,0 @@
Qabel Public License Version 0.2 (QaPL v0.2) (c) Qabel GmbH, Hannover
=====================================================================
You may copy and distribute verbatim copies of this license agreement. You may also use content from it for your own license agreement. Unless not expressly stated, you may not use the name Qabel Public License ("QaPL") in connection with any license agreement that is not a verbatim copy of This License.
PREAMBLE
--------
Today Software is the undisputed centerpiece of the information society and access to software and information society services became a public commodity. Yet traditional software is made available in object code only, where the software user is not entitled to study or even modify the source code. We believe that this is a salient shortcoming in particular when it comes to software which is designed to help the user protect his privacy in a virtual world. A proprietary software developer who refuses to unveil the source code of its security software, requires users to place a great deal of faith into the computer program and its ability to protect personal data. Not only because trust in conventional software security was all too often disappointed, we have decided to replace "trust" with "transparency" and everybody is welcome to study, modify and improve the source code of this software. Furthermore, and although we believe in the idea of free software, we have decided to make two important exceptions, to wit, QaPL-licensed software should neither be used commercially without our consent, nor for military, intelligence or related purposes. By that we hope to make it a powerful, self sustaining and constantly evolving tool that helps to reinforce data security and the protection of personal data. However, it shall be up to the user to decide whether he finds this software fit for the purpose.
[0] Definitions
---------------
[a] "Application" means any software that may be, directly or indirectly, linked to the Library by using its interface.
[b] "Commercial use" means utilizing the Library or other software licensed under the QaPL or parts thereof to, directly or indirectly, establish a source of income, including but not limited to, embedding the Library or other software licensed under the QaPL or parts thereof into Proprietary Software, executable software, or consulting services utilizing the Library or other software licensed under the QaPL or parts thereof. It is not considered Commercial Use if the Licensee, including a commercial enterprise, uses the Library or other software licensed under the QaPL or parts thereof for academic, study and/or research purposes, or if a software project is solely based on donations.
[c] "Original Copyright Holder" means Kevin Röbert.
[d] "Contributor" means any person or entity that creates or contributes to the creation of modifications to the Library or other software licensed under the QaPL.
[e] "Library" means a collection of software functions, subroutines and/or data prepared so as to be conveniently linked with Applications (which use some of those functions and data) to form executables including associated documentation.
[f] "Licensee" means any individual or legal entity exercising rights under the QaPL.
[g] "Make Publicly Available" refers to the public distribution of the Library or other software licensed under the QaPL in an immaterial form, including but not limited to, making it available for download in data networks and Software as a Service (SaaS).
[h] "Modification" means any change to the Library or other software licensed under the QaPL in a way that would, under the applicable law, require the copyright holder's permission, including but not limited to the extension, deletion, alteration, translation into other programming languages or combination with other software.
[i] "Modification of the Library" means the Library or its derivatives containing the Library as a whole or in parts and Applications or any other software that are linked to the Library.
[j] "Object Code" means any machine-readable form of the Library or other software licensed under the QaPL, excluding the Source Code.
[k] "Proprietary Software" means software that is not licensed under an open source license as defined by the open source definition (Version 1.9).
[l] "Source Code" means the preferred form of the Library or other software licensed under the QaPL for making Modifications to it.
[m] "This License" means the Qabel Public License regardless of its version.
[1] Scope of Application
-------------------------------
The QaPL applies to any software library or other software that contains a notice placed by the copyright holder or another authorised party stating that the Library or other software is governed by the
terms of the QaPL. This license shall also apply to remote network interaction.
[2] License Grant and Conditions
------------------------------------------
[a] As far as This License is not restricted according to sec. [3], Licensee may free of charge and in any medium modify, reproduce, distribute, and Make Publicly Available the Library or other software licensed under the QaPL.
[b] Licensee may distribute, and Make Publicly Available unmodified versions, of the Library or other software licensed under the QaPL provided that the following condition is met: A conspicuous reference to the text of This License
that allows any recipient to easily access the text of This License must be provided.
[c] Licensee may distribute, and Make Publicly Available modified versions, of the Library or other software licensed under the QaPL provided that, in addition to the conditions stated in sec. [2][b], the following conditions are met: The files modified must bear notices which state that the files were changed, the date of change and the author of the Modification. The Library or other software licensed under the QaPL must in its entirety be licensed free of charge to all third parties under the terms of This License.
[d] If you wish to distribute or Make the Library or other software licensed under the QaPL, modified or unmodified, Publicly Available in Object Code form only, you must in addition to the forgoing make the complete Source Code publicly available or ensure that the Original Copyright Holder does so and make a conspicuous reference to the internet address from which the Source Code may be downloaded.
[3] Restrictions
--------------------
[a] No license is granted by the Original Copyright Holder for the Commercial Use of the Library or other software licensed under the QaPL. In particular, no license is granted for linking Applications to the Library which shall be used commercially. If you would like to use the Library or other software licensed under the QaPL for commercial purposes or link to an Application that shall be used commercially, including selling an Application that shall be linked to the Library or other software licensed under the QaPL, please inquire with the Original Copyright Holder.
[b] No license is granted by the Original Copyright Holder for military, intelligence or related purposes, including but not limited to intelligence and military research.
[4] Contributor's License Grant
----------------------------------------
[a] A Contributor, who distributes or makes publicly available a Modification, hereby grants the Original Copyright Holder a perpetual, irrevocable, worldwide, free of charge, royalty-free, non-exclusive, unrestricted license that may be subject to third party property claims, to use, reproduce, modify, display, perform, sublicense, distribute, Make Publicly Available, commercially exploit and exercise all ownership rights in the Contributors contribution. Contributor hereby agrees that he will not assert any moral rights in his contribution against the Original Copyright Holder.
[b] A contributor, who distributes or makes publicly available a Modification, hereby grants to the Original Copyright Holder a perpetual, worldwide, non-exclusive, free-of-charge, royalty-free patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Library or other software licensed under the QaPL. Where such license applies it shall only apply to those patent claims licensable by the Contributor that are necessarily infringed by their contributions alone or by combination of their contributions with the Library or other software licensed under the QaPL with which such contribution was combined.
[c] Contributor represents and warrants that his contribution is his own original creation and to the best of his knowledge he can legally grant the rights in his contribution set out in This License and, where applicable, is authorised by his employer and that the Original Copyright Holder exercising the rights granted under this license does, to the best of the Contributors knowledge, not infringe any third party rights. Contributor further represents that he is not aware of any claims, suits or court actions in relation to his contribution. Contributor agrees that he will immediately notify the Original Copyright Holder if he becomes aware of any third party claims and, if the Contributor after having submitted or otherwise distributed his contribution, becomes aware of a third party claim in relation to his contribution, shall promptly take all reasonable measures to mitigate damages resulting from the infringement of third party claims, including but not limited to informing those who may have received software containing the contribution.
[5] Conclusion of Contract
----------------------------------
[a] This License constitutes the offer to conclude a contract to use the Library or other software licensed under the QaPL in compliance with the conditions of This License. Acceptance may be declared by exercising the right granted under sec. [2] of This License.
[b] All Licensees obtain the rights granted by This License directly from the Original Copyright Holder. Without having to accept This License the Library or other software may still be used in accordance with the applicable statutory provisions.
[6] Termination
--------------------
The rights granted under This License will terminate
automatically if the Licensee fails to comply with its terms.
[7] Warranty and Liability
---------------------------------
[a] The copyright holders are not liable for contradictory third-party rights, unless they were aware of such rights without informing the Licensee.
[b] Liability for damages arising out of the use or inability to use the Library or other software licensed under the QaPL, including but not limited to software failure, data loss, data being rendered inaccurate, a failure of the software to operate with any other program and any other defects in the Library or other software licensed under the QaPL, shall be governed by separate agreements, or, if no such agreement exists, by the applicable statutory provisions.
[8] License Updates
-------------------------
Qabel GmbH or its legal successors may, from time to time, revise and update the QaPL in order to address new developments and concerns. These revisions and updates will reflect the spirit of the current license version and will not impose on any Licensee or copyright holder additional obligations. QaPL license updates shall replace all older license versions in existing agreements. This does not apply to original copyright holders other than Qabel GmbH, who have chosen to submit their program to the QaPL, unless they have designated their program as licensed under "QaPL 0.2 or any later version".
[9] Miscellaneous
----------------------
[a] This License shall be governed by German Law. The application of the UN Convention on the International Sale of Goods (CISG) and the principles of conflict of laws shall be excluded.
[b] If you wish to incorporate parts of the Library or other software licensed under the QaPL into other software whose license terms contradict with the provisions of this license, you may inquire with either the Original Copyright Holder or the copyright holder of the other software on possible exceptions.
[c] If, under the applicable law, any provision of This License is or becomes invalid or unenforceable, it shall not affect the validity or enforceability of the remainder of the terms of This License, and without further action by the parties to This License, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

6
PRIVACY.md Normal file
View File

@@ -0,0 +1,6 @@
ClearURLs protects and respects your privacy.
We do not collect any of your usage data. Furthermore ClearURLs has no home server nor embed any kind of analytic hooks in its code.
The only time ClearURLs connects to a remote server (gitlab.io) is to update the rules file and the associated hash file. You can replace the default update address with your own address at any time in the settings.
The project and the rule file is currently hosted on gitlab.com, which is owned by GitLab Inc. and thus is unrelated to ClearURLs.

109
README.md
View File

@@ -1,48 +1,103 @@
# ClearURLs [![Mozilla Add-on](https://img.shields.io/amo/v/clearurls.svg)](https://addons.mozilla.org/en-US/firefox/addon/clearurls/versions/) <a href="https://www.paypal.me/KevinRoebert" target="_blank"><img src="https://raw.githubusercontent.com/KevinRoebert/DonateButtons/master/Paypal.png" alt="Buy Me A Coffee" height="55"></a>
[![Donate](https://img.shields.io/badge/donate-PayPal-blue.svg)](https://www.paypal.me/KevinRoebert) <a href="https://liberapay.com/kroeb" target="_blank"><img src="https://raw.githubusercontent.com/KevinRoebert/DonateButtons/master/LiberaPay.png" alt="Buy Me A Coffee" height="55"></a>
<a href="https://www.buymeacoffee.com/KevinRoebert" target="_blank"><img src="https://raw.githubusercontent.com/KevinRoebert/DonateButtons/master/BuyMeACoffee.png" alt="Buy Me A Coffee" height="55"></a>
[![Mozilla Add-on](https://img.shields.io/amo/stars/clearurls.svg)](https://addons.mozilla.org/en-US/firefox/addon/clearurls/reviews/) [<img src="https://blog.mozilla.org/addons/files/2020/04/get-the-addon-fx-apr-2020.svg" alt="for Firefox" height="60px">](https://addons.mozilla.org/firefox/addon/clearurls/) [<img src="https://gitlab.com/KevinRoebert/ClearUrls/-/raw/master/promotion/MEA-button.png" alt="for Edge" height="60px">](https://microsoftedge.microsoft.com/addons/detail/mdkdmaickkfdekbjdoojfalpbkgaddei) [<img src="https://developer.chrome.com/webstore/images/ChromeWebStore_BadgeWBorder_v2_206x58.png" alt="for Chrome" height="60px">](https://chrome.google.com/webstore/detail/clearurls/lckanjgmijmafbedllaakclkaicjfmnk)
[![Mozilla Add-on](https://img.shields.io/amo/users/clearurls.svg)](https://addons.mozilla.org/en-US/firefox/addon/clearurls/statistics/?last=30) # <sub><img src="https://gitlab.com/KevinRoebert/ClearUrls/raw/master/img/clearurls.svg" width="64px" height="64px"></sub> ClearURLs [![Gitter](https://badges.gitter.im/ClearURLs/community.svg)](https://gitter.im/ClearURLs/community)
**ClearURLs** is an add-on based on the new WebExtensions technology and is optimized for *Firefox* and now also available for *Chrome* based browsers. **ClearURLs** is an add-on based on the new WebExtensions technology and is optimized for *Firefox* and *Chrome* based browsers.
This add-on will remove the tracking fields from all URLs which are visited by the browser and use a rule file, namely `data.json`. This extension will automatically remove tracking elements from URLs to help protect your privacy when browse through the Internet,
which is regularly updated by us and can be found [here](https://gitlab.com/KevinRoebert/ClearUrls/raw/master/data/data.min.json).
This add-on protects your privacy and block the request from advertising services like *doubleclick.net*.
## Application ## Application
Large (and small) webpages use elements in the URL, e.g.: https://example.com?source=thisIstheSiteIvisitedBefore to track your online activities. In this example, the source field tells the provider which page you visited before. The add-on will remove these tracking fields from the URL. Many websites use tracking elements in the URL (e.g. `https://example.com?utm_source=newsletter1&utm_medium=email&utm_campaign=sale`) to mark your online activity.
All that tracking code is not necessary for a website to be displayed or work correctly and can therefore be removed—that is exactly what ClearURLs does.
## Installation Another common example are Amazon URLs. If you search for a product on Amazon you will see a very long URL, such as:
Mozilla Add-on: [![Mozilla Add-on](https://img.shields.io/amo/d/clearurls.svg)](https://addons.mozilla.org/en-US/firefox/addon/clearurls/) ```
https://www.amazon.com/dp/exampleProduct/ref=sxin_0_pb?__mk_de_DE=ÅMÅŽÕÑ&keywords=tea&pd_rd_i=exampleProduct&pd_rd_r=8d39e4cd-1e4f-43db-b6e7-72e969a84aa5&pd_rd_w=1pcKM&pd_rd_wg=hYrNl&pf_rd_p=50bbfd25-5ef7-41a2-68d6-74d854b30e30&pf_rd_r=0GMWD0YYKA7XFGX55ADP&qid=1517757263&rnid=2914120011
```
[Chrome Add-on](https://gitlab.com/KevinRoebert/ClearUrls/tags?utf8=%E2%9C%93&search=_cv) Indeed most of the above URL is tracking code. Once ClearURLs has cleaned the address, it will look like this:
`https://www.amazon.com/dp/exampleProduct`
## Features
* Removes tracking from URLs automatically in the background
* Blocks some common ad domains (optional)
* Has a built-in tool to clean up multiple URLs at once
* Supports redirection to the destination, without tracking services as middleman
* Adds an entry to the context menu so that links can be copied quickly and cleanly
* Blocks hyperlink auditing, also known as *ping tracking* (see also [this article](https://html.spec.whatwg.org/multipage/links.html#hyperlink-auditing))
* Prevents ETag tracking
* Prevents tracking injection over history API (see also: [The replaceState() method](https://developer.mozilla.org/en-US/docs/Web/API/History_API#The_replaceState()_method))
* Prevents Google from rewriting the search results (to include tracking elements)
* Prevents Yandex from rewriting the search results (to include tracking elements)
## Permissons
Reasoning for needed permissions can be found under [here](https://gitlab.com/KevinRoebert/ClearUrls/issues/159).
## Screenshot
![Interface (version 1.14.0)](https://gitlab.com/KevinRoebert/ClearUrls/raw/master/promotion/screens/Popup_v_1.14.0.png)
## CI/CD Artifacts Download (for Firefox- and Chrome-Dev only)
Here you can download the packed files for the Firefox- and Chrome-Dev:
[<img src="promotion/download-128.png"/>](https://gitlab.com/KevinRoebert/ClearUrls/-/jobs/artifacts/master/raw/ClearURLs.zip?job=bundle%20addon)
## Test
If you want to test whether ClearURLs works correctly on your system, you can go to this test page: [https://test.clearurls.xyz/](https://test.clearurls.xyz/)
## Contribute ## Contribute
If you have any suggestions or complaints, please [create an issue.](https://gitlab.com/KevinRoebert/ClearUrls/issues/new) If you have any suggestions or complaints, please [create an issue.](https://gitlab.com/KevinRoebert/ClearUrls/issues/new)
## Screenshot **Note: If you have any suggestions or complaints regarding the rules, please [create an issue in this repo](https://gitlab.com/anti-tracking/ClearURLs/rules/-/issues/new) or email us rules.support (at) clearurls.xyz (this mail will automatically create a new issue in this repo).**
![Interface (version 1.2.2.x)](https://gitlab.com/KevinRoebert/ClearUrls/raw/48b8b9e994eb2535b11106dcd766097d55b493dd/promotion/screens/Popup_v_1.2.2.8.png)
### Translate ClearURLs
You want to help translating ClearURLs into many languages? Nice
You can choose between two options to contribute. You can create a merge request, or you can use the POEditor to translate ClearURLs.
*Hint: The description field in the translation files are only an information for what the translation is used.
It is not necessary to translate the description field; in the most cases it is empty.*
#### Merge request
If you want to create a merge request, you must open the path [`source/_locales/en/messages.json`](https://github.com/KevinRoebert/ClearUrls/blob/master/source/_locales/en/messages.json) in the ClearURLs repo
and translate the english terms into terms of your language. Once you have translated all the terms, you make a pull request of your translation.
Please push your translation into the folder `_locales/{country code}/messages.json`.
#### POEditor
[<img src="https://poeditor.com/public/images/logo/logo.svg" alt="https://poeditor.com/join/project/vKTpQWWvk2" width="150">](https://poeditor.com/join/project/vKTpQWWvk2)
## Projects that use parts of ClearURLs
* [Uroute](https://github.com/walterl/uroute) used ClearURLs to filter/clean URL before launching browser
* [Scrub](https://gitlab.com/CrunchBangDev/cbd-cogs/-/tree/master/Scrub) used ClearURLs to filter/clean URLs as cog for the Red Discord bot
## Recommended by...
* [ghacks-user.js](https://github.com/ghacksuserjs/ghacks-user.js/wiki/4.1-Extensions)
* [Awesome Humane Tech List](https://github.com/humanetech-community/awesome-humane-tech#tracking)
* [PrivacyTools](https://www.privacytools.io/browsers/#addons)
* ClearURLs is part of Mozilla's recommended extensions program
## Permissions
Reasoning for needed permissions you can find under [this discussion](https://gitlab.com/KevinRoebert/ClearUrls/issues/159).
## Copyright ## Copyright
We use some third-party scripts in our add-on. The authors and licenses are listed below. We use some third-party scripts in our add-on. The authors and licenses are listed below.
- [WebExtension browser API Polyfill](https://github.com/mozilla/webextension-polyfill) | - [WebExtension browser API Polyfill](https://github.com/mozilla/webextension-polyfill) |
Copyright by Mozilla | Copyright by Mozilla |
[MPL-2.0](https://github.com/mozilla/webextension-polyfill/blob/master/LICENSE) [MPL-2.0](https://github.com/mozilla/webextension-polyfill/blob/master/LICENSE)
- [Bootstrap v3.3.7 ](http://getbootstrap.com) | - [Bootstrap v4.3.1](https://github.com/twbs/bootstrap/tree/v4.3.1) |
Copyright 2011-2016 Twitter, Inc. | Copyright 2011-2016 Twitter, Inc. |
[MIT](https://github.com/twbs/bootstrap/blob/master/LICENSE) [MIT](https://github.com/twbs/bootstrap/blob/master/LICENSE)
- [jQuery v3.2.1](https://jquery.com/) | - [jQuery v3.4.1](https://github.com/jquery/jquery/tree/3.4.1) |
Copyright 2017 The jQuery Foundation | Copyright JS Foundation and other contributors |
[MIT](https://jquery.org/license/) [MIT](https://jquery.org/license/)
- [sha256.jquery.plugin](https://github.com/orsozed/sha256.jquery.plugin) | - [DataTables v1.10.20](https://github.com/DataTables/DataTables/tree/master) | Copyright (c) 2008-2015 SpryMedia Limited | [MIT](https://datatables.net/license/)
Copyright 2003, Christoph Bichlmeier | - [Pickr v1.7.0](https://github.com/Simonwep/pickr/tree/1.7.0) | Copyright (c) 2018 - 2020 Simon Reinisch |
[MIT](https://raw.github.com/orsozed/JQuery-Plugins/master/license/MIT-LICENSE.txt) | [MIT](https://github.com/Simonwep/pickr/blob/master/LICENSE)
[GPLv2](https://raw.github.com/orsozed/JQuery-Plugins/master/license/GPL-LICENSE.txt) - [Font Awesome v5.12.0](https://github.com/FortAwesome/Font-Awesome/tree/5.12.0) | Copyright (c) @fontawesome |
- [DataTables](https://datatables.net/) | Copyright 2011-2015 SpryMedia Ltd | [MIT](https://datatables.net/license/) [Font Awesome Free License](https://github.com/FortAwesome/Font-Awesome/blob/master/LICENSE.txt)
- [Pick-a-Color v1.2.3](https://github.com/lauren/pick-a-color) | Copyright (c) 2013 Lauren Sperber and Broadstreet Ads |
[MIT](https://github.com/lauren/pick-a-color/blob/master/LICENSE)
## Licence
[![License: QaPL v0.2](https://img.shields.io/badge/License-QaPL%20v0.2-brightgreen.svg)](https://gitlab.com/KevinRoebert/ClearUrls/blob/master/LICENSE.md)

46
__tests__/rules/rule.ts Normal file
View File

@@ -0,0 +1,46 @@
/*
* ClearURLs
* Copyright (c) 2017-2020 Kevin Röbert
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import Rule from '../../source/rules/rule';
import SimpleRule from '../../source/rules/simpleRule';
describe('RuleTest', () => {
let rule: Rule
it('should create correct RegExp', () => {
rule = new SimpleRule('test')
expect(rule.value.toString()).toBe(new RegExp('([\/?#]|(&|&amp;))+(test=[^&]*)', 'gi').toString())
})
it('should return correct value on toString', () => {
rule = new SimpleRule('test')
expect(rule.toString()).toBe('([\/?#]|(&|&amp;))+(test=[^&]*)')
})
it('should be set active value correctly', () => {
rule = new SimpleRule('test')
expect(rule.isActive).toBe(true)
rule.deactivate()
expect(rule.isActive).toBe(false)
rule.activate()
expect(rule.isActive).toBe(true)
})
})

View File

@@ -0,0 +1,44 @@
import CircularBuffer from '../../source/utils/circularBuffer'
describe('CircularBuffer', () => {
let capacity: number
let buffer: CircularBuffer<string>
beforeEach(() => {
capacity = 10
buffer = new CircularBuffer<string>(capacity)
})
it('should creates a buffer with the specified capacity', () => {
expect(buffer.capacity).toBe(capacity)
})
it('should add item to the buffer', () => {
expect(buffer.size).toBe(0)
buffer.enqueue('foo')
expect(buffer.size).toBe(1)
})
it('should remove oldest item if the buffer is full on adding new items', () => {
buffer = new CircularBuffer<string>(2)
buffer.enqueue('foo1')
buffer.enqueue('foo2')
buffer.enqueue('foo3')
buffer.enqueue('foo4')
expect(buffer.toArray()).toEqual(['foo3', 'foo4'])
})
it('should return the current size via the size() getter', () => {
buffer.enqueue('foo')
expect(buffer.size).toBe(1)
})
it('should return true if buffer is empty', () => {
expect(buffer.isEmpty()).toBe(true)
})
it('should throw exception on illegal argument', () => {
expect(() => new CircularBuffer<any>(0)).toThrow('The capacity must be > 0')
})
})

View File

@@ -1,246 +0,0 @@
{
"hash_status_code_1": {
"message": "Aktuell",
"description": ""
},
"hash_status_code_2": {
"message": "Aktuallisiert",
"description": ""
},
"hash_status_code_3": {
"message": "Aktuallisierung verfügbar",
"description": ""
},
"hash_status_code_4": {
"message": "Fehler",
"description": ""
},
"hash_status_code_5": {
"message": "Da ist etwas schiefgelaufen!",
"description": ""
},
"log_redirect": {
"message": "Diese Url wurde weiter geleitet",
"description": ""
},
"log_domain_blocked": {
"message": "Diese Domain wurde blockiert",
"description": ""
},
"check_os_log": {
"message": "[ClearURLs]: Protokoll-Listener wurde hinzugefügt.",
"description": ""
},
"log_html_page_title": {
"message": "Protokoll von ClearURLs",
"description": ""
},
"log_html_table_head_1": {
"message": "Vor der Verarbeitung",
"description": ""
},
"log_html_table_head_2": {
"message": "Nach der Verarbeitung",
"description": ""
},
"log_html_table_head_3": {
"message": "Regel",
"description": ""
},
"log_html_table_head_4": {
"message": "Zeit",
"description": ""
},
"log_html_reset_button": {
"message": "Zurücksetzen",
"description": ""
},
"log_html_reset_button_title": {
"message": "Setzt das globale Protokoll zurück",
"description": ""
},
"popup_html_configs_head": {
"message": "Einstellungen",
"description": ""
},
"popup_html_configs_switch_filter": {
"message": "Filter",
"description": ""
},
"popup_html_configs_switch_filter_title": {
"message": "Der Filter-Schalter aktiviert die Reinigungsfunktion von ClearURLs, wenn sie die Funktion ausschalten, dann deaktivieren sie das gesamte Addon",
"description": ""
},
"popup_html_configs_switch_log": {
"message": "Protokoll",
"description": ""
},
"popup_html_configs_switch_log_title": {
"message": "Das Protokoll wird nur lokal gespeichert. Wir empfehlen diese Funktion deaktiviert zulassen, wenn Sie sie nicht benötigen",
"description": ""
},
"popup_html_configs_switch_badges": {
"message": "Zähler",
"description": ""
},
"popup_html_configs_switch_badges_title": {
"message": "Zeigt die Anzahl der gereinigten URLs an",
"description": ""
},
"popup_html_statistics_head": {
"message": "Statistik",
"description": ""
},
"popup_html_statistics_elements": {
"message": "Elemente",
"description": ""
},
"popup_html_statistics_blocked": {
"message": "Blockiert",
"description": ""
},
"popup_html_statistics_percentage": {
"message": "Anteil",
"description": ""
},
"popup_html_statistics_reset_button": {
"message": "Zurücksetzen",
"description": ""
},
"popup_html_statistics_reset_button_title": {
"message": "Setzt die globale Statistik zurück",
"description": ""
},
"popup_html_rules_status_head": {
"message": "Regel Status",
"description": ""
},
"popup_html_log_head": {
"message": "Protokoll",
"description": ""
},
"popup_html_log_head_title": {
"message": "Öffnet das Protokoll",
"description": ""
},
"popup_html_report_button": {
"message": "Aktuelle URL melden",
"description": ""
},
"popup_html_report_button_title": {
"message": "Meldet die aktuelle URL aus diesem Tab.",
"description": ""
},
"core_save_on_disk": {
"message": "[ClearURLs]: Auf Festplatte gespeichert.",
"description": ""
},
"core_error": {
"message": "[ClearURLs]: Das Addon konnte nicht gestartet werden.",
"description": ""
},
"configs_switch_statistics": {
"message": "Statistiken",
"description": ""
},
"configs_switch_statistics_title": {
"message": "Aktiviert oder deaktiviert die Statistikfunktion",
"description": ""
},
"settings_html_page_title": {
"message": "Einstellungen von ClearURLs",
"description": ""
},
"badged_color_label": {
"message": "Zählerfarbe",
"description": ""
},
"setting_html_reset_button": {
"message": "Zurücksetzen",
"description": ""
},
"setting_html_reset_button_title": {
"message": "Setzt alle Einstellungen zurück",
"description": ""
},
"setting_rule_url_label": {
"message": "Die Url zu der data.json Datei (Regeln)",
"description": ""
},
"settings_html_save_button": {
"message": "Speichern & Addon neustarten",
"description": ""
},
"settings_html_save_button_title": {
"message": "Speichert die Einstellungen",
"description": ""
},
"setting_hash_url_label": {
"message": "Die Url zu der rules.hash Datei (Hash)",
"description": ""
},
"setting_types_label": {
"message": "<a href='https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/ResourceType' target='_blank'>Request types</a> (Expertenniveau)",
"description": ""
},
"setting_report_server_label": {
"message": "Meldungsserver für URLs",
"description": ""
},
"success_report_url": {
"message": "Die URL wurde erfolgreich gemeldet. Wir werden sie in Kürze prüfen.",
"description": ""
},
"error_report_url": {
"message": "Es schaut so aus, als ob diese URL schon gemeldet wurde.",
"description": ""
}
}

View File

@@ -1,246 +0,0 @@
{
"hash_status_code_1": {
"message": "up to date",
"description": ""
},
"hash_status_code_2": {
"message": "updated",
"description": ""
},
"hash_status_code_3": {
"message": "update available",
"description": ""
},
"hash_status_code_4": {
"message": "error",
"description": ""
},
"hash_status_code_5": {
"message": "Oops something went wrong!",
"description": ""
},
"log_redirect": {
"message": "This url is redirected",
"description": ""
},
"log_domain_blocked": {
"message": "This domain is blocked",
"description": ""
},
"check_os_log": {
"message": "[ClearURLs]: Log listener is added.",
"description": ""
},
"log_html_page_title": {
"message": "Log from ClearURLs",
"description": ""
},
"log_html_table_head_1": {
"message": "Before processing",
"description": ""
},
"log_html_table_head_2": {
"message": "After processing",
"description": ""
},
"log_html_table_head_3": {
"message": "Rule",
"description": ""
},
"log_html_table_head_4": {
"message": "Time",
"description": ""
},
"log_html_reset_button": {
"message": "Reset",
"description": ""
},
"log_html_reset_button_title": {
"message": "Reset the global log",
"description": ""
},
"popup_html_configs_head": {
"message": "Configs",
"description": ""
},
"popup_html_configs_switch_filter": {
"message": "Filter",
"description": ""
},
"popup_html_configs_switch_filter_title": {
"message": "The filters switch activates the cleaning functionality of ClearURLs. If you disable this option, the whole addon is disabled",
"description": ""
},
"popup_html_configs_switch_log": {
"message": "Logging",
"description": ""
},
"popup_html_configs_switch_log_title": {
"message": "The log is saved only locally. We advise against this feature if you do not need it",
"description": ""
},
"popup_html_configs_switch_badges": {
"message": "Badges",
"description": ""
},
"popup_html_configs_switch_badges_title": {
"message": "Show number of cleaned urls",
"description": ""
},
"popup_html_statistics_head": {
"message": "Statistics",
"description": ""
},
"popup_html_statistics_elements": {
"message": "Elements",
"description": ""
},
"popup_html_statistics_blocked": {
"message": "Blocked",
"description": ""
},
"popup_html_statistics_percentage": {
"message": "Percentage",
"description": ""
},
"popup_html_statistics_reset_button": {
"message": "Reset",
"description": ""
},
"popup_html_statistics_reset_button_title": {
"message": "Reset the global statistics",
"description": ""
},
"popup_html_rules_status_head": {
"message": "Rules-Status",
"description": ""
},
"popup_html_log_head": {
"message": "Log",
"description": ""
},
"popup_html_log_head_title": {
"message": "Open the log",
"description": ""
},
"popup_html_report_button": {
"message": "Report current URL",
"description": ""
},
"popup_html_report_button_title": {
"message": "Report the current URL from this tab.",
"description": ""
},
"core_save_on_disk": {
"message": "[ClearURLs]: Save on disk.",
"description": ""
},
"core_error": {
"message": "[ClearURLs]: The addon could not started.",
"description": ""
},
"configs_switch_statistics": {
"message": "Statistics",
"description": ""
},
"configs_switch_statistics_title": {
"message": "Activate or deactivate the statistics function",
"description": ""
},
"settings_html_page_title": {
"message": "Settings from ClearURLs",
"description": ""
},
"badged_color_label": {
"message": "Badged color",
"description": ""
},
"setting_html_reset_button": {
"message": "Reset",
"description": ""
},
"setting_html_reset_button_title": {
"message": "Reset everything",
"description": ""
},
"setting_rule_url_label": {
"message": "The url to the data.json file (rules)",
"description": ""
},
"settings_html_save_button": {
"message": "Save & reload addon",
"description": ""
},
"settings_html_save_button_title": {
"message": "Saves the settings",
"description": ""
},
"setting_hash_url_label": {
"message": "The url to the rules.hash file (hash)",
"description": ""
},
"setting_types_label": {
"message": "<a href='https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/ResourceType' target='_blank'>Request types</a> (expert level)",
"description": ""
},
"setting_report_server_label": {
"message": "Report server for URLs",
"description": ""
},
"success_report_url": {
"message": "The URL was successfully reported. We will check this URL soon.",
"description": ""
},
"error_report_url": {
"message": "It seems like this URL has already been reported.",
"description": ""
}
}

View File

@@ -1,216 +0,0 @@
{
"hash_status_code_1": {
"message": "atualizado",
"description": ""
},
"hash_status_code_2": {
"message": "atualizado",
"description": ""
},
"hash_status_code_3": {
"message": "atualização disponivel",
"description": ""
},
"hash_status_code_4": {
"message": "erro",
"description": ""
},
"hash_status_code_5": {
"message": "Oops, algo deu errado!",
"description": ""
},
"log_redirect": {
"message": "Esta url foi redirecionada",
"description": ""
},
"log_domain_blocked": {
"message": "Este domínio foi bloqueado",
"description": ""
},
"check_os_log": {
"message": "[ClearURLs]: Examinador de registro foi adicionado",
"description": ""
},
"log_html_page_title": {
"message": "Registro do ClearURLs",
"description": ""
},
"log_html_table_head_1": {
"message": "Antes de processar",
"description": ""
},
"log_html_table_head_2": {
"message": "Depois de processar",
"description": ""
},
"log_html_table_head_3": {
"message": "Regra",
"description": ""
},
"log_html_table_head_4": {
"message": "Tempo",
"description": ""
},
"log_html_reset_button": {
"message": "Resetar",
"description": ""
},
"log_html_reset_button_title": {
"message": "Resetar o registro global",
"description": ""
},
"popup_html_configs_head": {
"message": "Configurações",
"description": ""
},
"popup_html_configs_switch_filter": {
"message": "Filtrar",
"description": ""
},
"popup_html_configs_switch_filter_title": {
"message": "O botão filtrar ativa a funcionalidade de limpeza do ClearURLs. Se você desativar essa opção toda a extensão é desativada",
"description": ""
},
"popup_html_configs_switch_log": {
"message": "Registro",
"description": ""
},
"popup_html_configs_switch_log_title": {
"message": "O registro é salvo localmente apenas. Aconselhamos contra este recurso se você não precisa dele",
"description": ""
},
"popup_html_configs_switch_badges": {
"message": "Contador",
"description": ""
},
"popup_html_configs_switch_badges_title": {
"message": "Mostrar número de urls limpas",
"description": ""
},
"popup_html_statistics_head": {
"message": "Estatísticas",
"description": ""
},
"popup_html_statistics_elements": {
"message": "Elementos",
"description": ""
},
"popup_html_statistics_blocked": {
"message": "Bloqueado",
"description": ""
},
"popup_html_statistics_percentage": {
"message": "Porcentagem",
"description": ""
},
"popup_html_statistics_reset_button": {
"message": "Resetar",
"description": ""
},
"popup_html_statistics_reset_button_title": {
"message": "Resetar as estatísticas globais",
"description": ""
},
"popup_html_rules_status_head": {
"message": "Estado das regras",
"description": ""
},
"popup_html_log_head": {
"message": "Registro",
"description": ""
},
"popup_html_log_head_title": {
"message": "Abrir o registro",
"description": ""
},
"core_save_on_disk": {
"message": "[ClearURLs]: Salvar no disco.",
"description": ""
},
"core_error": {
"message": "[ClearURLs]: A extensão não pode ser inicializada.",
"description": ""
},
"configs_switch_statistics": {
"message": "Estatísticas",
"description": ""
},
"configs_switch_statistics_title": {
"message": "Ativar ou desativar função de estatísticas",
"description": ""
},
"settings_html_page_title": {
"message": "Configurações do ClearURLs",
"description": ""
},
"badged_color_label": {
"message": "Cor do contador",
"description": ""
},
"setting_html_reset_button": {
"message": "Resetar",
"description": ""
},
"setting_html_reset_button_title": {
"message": "Resetar tudo",
"description": ""
},
"setting_rule_url_label": {
"message": "Url do arquivo data.json (regras)",
"description": ""
},
"settings_html_save_button": {
"message": "Salvar e recarregar extensão",
"description": ""
},
"settings_html_save_button_title": {
"message": "Salvar configurações",
"description": ""
},
"setting_hash_url_label": {
"message": "Url do arquivo rules.hash (hash)",
"description": ""
}
}

View File

@@ -1,221 +0,0 @@
{
"hash_status_code_1": {
"message": "Mise à jour",
"description": ""
},
"hash_status_code_2": {
"message": "Mis à jour",
"description": ""
},
"hash_status_code_3": {
"message": "Mise à jour disponible",
"description": ""
},
"hash_status_code_4": {
"message": "erreur",
"description": ""
},
"hash_status_code_5": {
"message": "Quelque chose a dysfonctionné, mais quoi ...",
"description": ""
},
"log_redirect": {
"message": "Ce lien Internet a été redirigé",
"description": ""
},
"log_domain_blocked": {
"message": "Ce domaine est bloqué",
"description": ""
},
"check_os_log": {
"message": "[ClearURLs]: Une base de données pour les URL a été ajoutée",
"description": ""
},
"log_html_page_title": {
"message": "Connexion à partir de ClearURLS",
"description": ""
},
"log_html_table_head_1": {
"message": "Avant le processus de traitement",
"description": ""
},
"log_html_table_head_2": {
"message": "Après le processus de traitement. ",
"description": ""
},
"log_html_table_head_3": {
"message": "Règle",
"description": ""
},
"log_html_table_head_4": {
"message": "Temps",
"description": ""
},
"log_html_reset_button": {
"message": "Remise à létat initial",
"description": ""
},
"log_html_reset_button_title": {
"message": "Réinitialiser la base de données",
"description": ""
},
"popup_html_configs_head": {
"message": "Paramétrages",
"description": ""
},
"popup_html_configs_switch_filter": {
"message": "Filtre",
"description": ""
},
"popup_html_configs_switch_filter_title": {
"message": "Le commutateur de l'extension active ou désactive la fonction de nettoyage de ClearURLs",
"description": ""
},
"popup_html_configs_switch_log": {
"message": "Historique",
"description": ""
},
"popup_html_configs_switch_log_title": {
"message": "L'historique est enregistré localement. Si vous navez pas besoin de le consulter, nous déconseillons de lactiver",
"description": ""
},
"popup_html_configs_switch_badges": {
"message": "Compteur",
"description": ""
},
"popup_html_configs_switch_badges_title": {
"message": "Nombre de liens Internet nettoyés",
"description": ""
},
"popup_html_statistics_head": {
"message": "Statistiques",
"description": ""
},
"popup_html_statistics_elements": {
"message": "Liens Internet",
"description": ""
},
"popup_html_statistics_blocked": {
"message": "Nb. de bloqués",
"description": ""
},
"popup_html_statistics_percentage": {
"message": "Pourcentage",
"description": ""
},
"popup_html_statistics_reset_button": {
"message": "Remettre à zéro",
"description": ""
},
"popup_html_statistics_reset_button_title": {
"message": "Remettre à zéro le décompte, les statistiques",
"description": ""
},
"popup_html_rules_status_head": {
"message": "Règles de la base de données",
"description": ""
},
"popup_html_log_head": {
"message": "Compte-rendu",
"description": ""
},
"popup_html_log_head_title": {
"message": "Ouvrir le compte-rendu",
"description": ""
},
"core_save_on_disk": {
"message": "[ClearURLs]: Sauvegarder sur le disque",
"description": ""
},
"core_error": {
"message": "[ClearURLs]: Lextension na pu être démarrée",
"description": ""
},
"configs_switch_statistics": {
"message": "Statistiques",
"description": ""
},
"configs_switch_statistics_title": {
"message": "Activer ou désactiver les statistiques",
"description": ""
},
"settings_html_page_title": {
"message": "Paramétrages de ClearURLs",
"description": ""
},
"badged_color_label": {
"message": "Couleur du compteur",
"description": ""
},
"setting_html_reset_button": {
"message": "Remettre à létat initial",
"description": ""
},
"setting_html_reset_button_title": {
"message": "Réinitialisation de tous les paramètres",
"description": ""
},
"setting_rule_url_label": {
"message": "Lien Internet du fichier Data (basse de données)",
"description": ""
},
"settings_html_save_button": {
"message": "Sauvegarder et redémarrer lextension",
"description": ""
},
"settings_html_save_button_title": {
"message": "Sauvegarder les paramétrages",
"description": ""
},
"setting_hash_url_label": {
"message": "Lien Internet du fichier Hash (signature de contrôle)",
"description": ""
},
"setting_types_label": {
"message": "<a href='https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/ResourceType' target='_blank'>Demande de données (webRequest)</a> (Uniquement si vous maitrisez la programmation)",
"description": ""
}
}

View File

@@ -1,246 +0,0 @@
{
"hash_status_code_1": {
"description": "up to date",
"message": "最新の"
},
"hash_status_code_2": {
"description": "updated",
"message": "更新する"
},
"hash_status_code_3": {
"description": "update available",
"message": "利用可能な更新"
},
"hash_status_code_4": {
"description": "error",
"message": "エラー"
},
"hash_status_code_5": {
"description": "Oops something went wrong!",
"message": "おっと!何かが間違っていた!"
},
"log_redirect": {
"description": "This url is redirected",
"message": "この URL はリダイレクトされます"
},
"log_domain_blocked": {
"description": "This domain is blocked",
"message": "このドメインはブロックされています"
},
"check_os_log": {
"description": "[ClearURLs]: Log listener is added.",
"message": "[ClearURLs]:ログリスナーが追加されました。"
},
"log_html_page_title": {
"description": "Log from ClearURLs",
"message": "ClearURLs からのログ"
},
"log_html_table_head_1": {
"description": "Before processing",
"message": "処理する前に"
},
"log_html_table_head_2": {
"description": "After processing",
"message": "処理後"
},
"log_html_table_head_3": {
"description": "Rule",
"message": "規則"
},
"log_html_table_head_4": {
"description": "Time",
"message": "時間"
},
"log_html_reset_button": {
"description": "Reset",
"message": "リセットする"
},
"log_html_reset_button_title": {
"description": "Reset the global log",
"message": "グローバルログをリセットする"
},
"popup_html_configs_head": {
"description": "Configs",
"message": "設定"
},
"popup_html_configs_switch_filter": {
"description": "Filter",
"message": "フィルター"
},
"popup_html_configs_switch_filter_title": {
"description": "The filters switch activates the cleaning functionality of ClearURLs. If you disable this option, the whole addon is disabled",
"message": "フィルタースイッチは、ClearURL のクリーニング機能を有効にします。 このオプションを無効にすると、アドオン全体が無効になります。"
},
"popup_html_configs_switch_log": {
"description": "Logging",
"message": "追跡記録"
},
"popup_html_configs_switch_log_title": {
"description": "The log is saved only locally. We advise against this feature if you do not need it",
"message": "ログはローカルにのみ保存されます。この機能が必要ない場合は、この機能を無効にすることをおすすめします。"
},
"popup_html_configs_switch_badges": {
"description": "Badges",
"message": "バッジ"
},
"popup_html_configs_switch_badges_title": {
"description": "Show number of cleaned urls",
"message": "消去された URL の数を表示する"
},
"popup_html_statistics_head": {
"description": "Statistics",
"message": "統計"
},
"popup_html_statistics_elements": {
"description": "Elements",
"message": "要素"
},
"popup_html_statistics_blocked": {
"description": "Blocked",
"message": "ブロックされた"
},
"popup_html_statistics_percentage": {
"description": "Percentage",
"message": "パーセンテージ"
},
"popup_html_statistics_reset_button": {
"description": "Reset",
"message": "リセットする"
},
"popup_html_statistics_reset_button_title": {
"description": "Reset the global statistics",
"message": "グローバル統計をリセットする"
},
"popup_html_rules_status_head": {
"description": "Rules-Status",
"message": "ルール・ステータス"
},
"popup_html_log_head": {
"description": "Log",
"message": "記録を取る"
},
"popup_html_log_head_title": {
"description": "Open the log",
"message": "記録を開く"
},
"popup_html_report_button": {
"description": "Report current URL",
"message": "現在の URL を報告する"
},
"popup_html_report_button_title": {
"description": "Report the current URL from this tab.",
"message": "このタブから現在の URL を報告してください。"
},
"core_save_on_disk": {
"description": "[ClearURLs]: Save on disk.",
"message": "[ClearURLs]:ディスクに保存します。"
},
"core_error": {
"description": "[ClearURLs]: The addon could not started.",
"message": "[ClearURLs]:アドオンを開始できませんでした。"
},
"configs_switch_statistics": {
"description": "Statistics",
"message": "統計"
},
"configs_switch_statistics_title": {
"description": "Activate or deactivate the statistics function",
"message": "統計機能を有効または無効にする"
},
"settings_html_page_title": {
"description": "Settings from ClearURLs",
"message": "ClearURL からの設定"
},
"badged_color_label": {
"description": "Badged color",
"message": "バッジの色"
},
"setting_html_reset_button": {
"description": "Reset",
"message": "リセットする"
},
"setting_html_reset_button_title": {
"description": "Reset everything",
"message": "すべてをリセットする"
},
"setting_rule_url_label": {
"description": "The url to the data.json file (rules)",
"message": "data.json ファイルへの URLルール"
},
"settings_html_save_button": {
"description": "Save & reload addon",
"message": "アドオンの保存と再読み込み"
},
"settings_html_save_button_title": {
"description": "Saves the settings",
"message": "設定を保存します。"
},
"setting_hash_url_label": {
"description": "The url to the rules.hash file (hash)",
"message": "rules.hash ファイル(ハッシュ)への URL"
},
"setting_types_label": {
"description": "<a href='https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/ResourceType' target='_blank'>Request types</a> (expert level)",
"message": "<a href='https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/ResourceType' target='_blank'> リクエストタイプ</a> (エキスパートレベル)"
},
"setting_report_server_label": {
"description": "Report server for URLs",
"message": "URL のサーバーを報告する"
},
"success_report_url": {
"description": "The URL was successfully reported. We will check this URL soon.",
"message": "URL は正常に報告されました。 我々はすぐに、この URL をチェックします。"
},
"error_report_url": {
"description": "It seems like this URL has already been reported.",
"message": "この URL は既に報告されているようです。"
}
}

View File

@@ -1,206 +0,0 @@
{
"hash_status_code_1": {
"message": "atualizado",
"description": ""
},
"hash_status_code_2": {
"message": "atualizado",
"description": ""
},
"hash_status_code_3": {
"message": "atualização disponivel",
"description": ""
},
"hash_status_code_4": {
"message": "erro",
"description": ""
},
"hash_status_code_5": {
"message": "Oops, algo deu errado!",
"description": ""
},
"log_redirect": {
"message": "Esta url foi redirecionada",
"description": ""
},
"log_domain_blocked": {
"message": "Este domínio foi bloqueado",
"description": ""
},
"check_os_log": {
"message": "[ClearURLs]: Examinador de registro foi adicionado",
"description": ""
},
"log_html_page_title": {
"message": "Registro do ClearURLs",
"description": ""
},
"log_html_table_head_1": {
"message": "Antes de processar",
"description": ""
},
"log_html_table_head_2": {
"message": "Depois de processar",
"description": ""
},
"log_html_table_head_3": {
"message": "Regra",
"description": ""
},
"log_html_table_head_4": {
"message": "Tempo",
"description": ""
},
"log_html_reset_button": {
"message": "Resetar",
"description": ""
},
"log_html_reset_button_title": {
"message": "Resetar o registro global",
"description": ""
},
"popup_html_configs_head": {
"message": "Configurações",
"description": ""
},
"popup_html_configs_switch_filter": {
"message": "Filtrar",
"description": ""
},
"popup_html_configs_switch_log": {
"message": "Registro",
"description": ""
},
"popup_html_configs_switch_log_title": {
"message": "O registro é salvo localmente apenas. Aconselhamos contra este recurso se você não precisa dele",
"description": ""
},
"popup_html_configs_switch_badges": {
"message": "Contador",
"description": ""
},
"popup_html_statistics_head": {
"message": "Estatísticas",
"description": ""
},
"popup_html_statistics_elements": {
"message": "Elementos",
"description": ""
},
"popup_html_statistics_blocked": {
"message": "Bloqueado",
"description": ""
},
"popup_html_statistics_percentage": {
"message": "Porcentagem",
"description": ""
},
"popup_html_statistics_reset_button": {
"message": "Resetar",
"description": ""
},
"popup_html_statistics_reset_button_title": {
"message": "Resetar as estatísticas globais",
"description": ""
},
"popup_html_rules_status_head": {
"message": "Estado das regras",
"description": ""
},
"popup_html_log_head": {
"message": "Registro",
"description": ""
},
"popup_html_log_head_title": {
"message": "Abrir o registro",
"description": ""
},
"core_save_on_disk": {
"message": "[ClearURLs]: Salvar no disco.",
"description": ""
},
"core_error": {
"message": "[ClearURLs]: A extensão não pode ser inicializada.",
"description": ""
},
"configs_switch_statistics": {
"message": "Estatísticas",
"description": ""
},
"configs_switch_statistics_title": {
"message": "Ativar ou desativar função de estatísticas",
"description": ""
},
"settings_html_page_title": {
"message": "Configurações do ClearURLs",
"description": ""
},
"badged_color_label": {
"message": "Cor do contador",
"description": ""
},
"setting_html_reset_button": {
"message": "Resetar",
"description": ""
},
"setting_html_reset_button_title": {
"message": "Resetar tudo",
"description": ""
},
"setting_rule_url_label": {
"message": "Url do arquivo data.json (regras)",
"description": ""
},
"settings_html_save_button": {
"message": "Salvar e recarregar extensão",
"description": ""
},
"settings_html_save_button_title": {
"message": "Salvar configurações",
"description": ""
},
"setting_hash_url_label": {
"message": "Url do arquivo rules.hash (hash)",
"description": ""
}
}

View File

@@ -1,216 +0,0 @@
{
"hash_status_code_1": {
"message": "не требует обновления",
"description": ""
},
"hash_status_code_2": {
"message": "обновлено",
"description": ""
},
"hash_status_code_3": {
"message": "есть обновление",
"description": ""
},
"hash_status_code_4": {
"message": "ошибка",
"description": ""
},
"hash_status_code_5": {
"message": "Ой, что-то не так!",
"description": ""
},
"log_redirect": {
"message": "Этот URL перенаправляется",
"description": ""
},
"log_domain_blocked": {
"message": "Этот домен заблокирован",
"description": ""
},
"check_os_log": {
"message": "[ClearURLs]: Лог listener добавлен.",
"description": ""
},
"log_html_page_title": {
"message": "Лог ClearURLs",
"description": ""
},
"log_html_table_head_1": {
"message": "До обработки",
"description": ""
},
"log_html_table_head_2": {
"message": "После обработки",
"description": ""
},
"log_html_table_head_3": {
"message": "Правило",
"description": ""
},
"log_html_table_head_4": {
"message": "Время",
"description": ""
},
"log_html_reset_button": {
"message": "Сброс",
"description": ""
},
"log_html_reset_button_title": {
"message": "Сброс глобального лога",
"description": ""
},
"popup_html_configs_head": {
"message": "Настройки",
"description": ""
},
"popup_html_configs_switch_filter": {
"message": "Фильтр",
"description": ""
},
"popup_html_configs_switch_filter_title": {
"message": "Активирует функцию очистки URL. Если выключить - аддон не будет работать",
"description": ""
},
"popup_html_configs_switch_log": {
"message": "Логирование",
"description": ""
},
"popup_html_configs_switch_log_title": {
"message": "Лог сохраняется только локально. Не используйте эту функцию, если она вам не нужна.",
"description": ""
},
"popup_html_configs_switch_badges": {
"message": "Значки",
"description": ""
},
"popup_html_configs_switch_badges_title": {
"message": "Показать количество очищенных URL",
"description": ""
},
"popup_html_statistics_head": {
"message": "Статистика",
"description": ""
},
"popup_html_statistics_elements": {
"message": "Элементы",
"description": ""
},
"popup_html_statistics_blocked": {
"message": "Заблокировано",
"description": ""
},
"popup_html_statistics_percentage": {
"message": "Процент",
"description": ""
},
"popup_html_statistics_reset_button": {
"message": "Сброс",
"description": ""
},
"popup_html_statistics_reset_button_title": {
"message": "Сброс глобальной статистики",
"description": ""
},
"popup_html_rules_status_head": {
"message": "Актуальность правил",
"description": ""
},
"popup_html_log_head": {
"message": "Лог",
"description": ""
},
"popup_html_log_head_title": {
"message": "Открыть лог",
"description": ""
},
"core_save_on_disk": {
"message": "[ClearURLs]: Сохранить на диск.",
"description": ""
},
"core_error": {
"message": "[ClearURLs]: Не удалось запустить аддон.",
"description": ""
},
"configs_switch_statistics": {
"message": "Статистика",
"description": ""
},
"configs_switch_statistics_title": {
"message": "Вкл. или выкл. статистику",
"description": ""
},
"settings_html_page_title": {
"message": "Настройки ClearURLs",
"description": ""
},
"badged_color_label": {
"message": "Цвет значка",
"description": ""
},
"setting_html_reset_button": {
"message": "Сброс",
"description": ""
},
"setting_html_reset_button_title": {
"message": "Сбросить всё",
"description": ""
},
"setting_rule_url_label": {
"message": "Ссылка на файл data.json (правила)",
"description": ""
},
"settings_html_save_button": {
"message": "Сохранить и перезагрузить аддон",
"description": ""
},
"settings_html_save_button_title": {
"message": "Сохранение настроек",
"description": ""
},
"setting_hash_url_label": {
"message": "Ссылка на файл rules.hash (хэш)",
"description": ""
}
}

View File

@@ -1,216 +0,0 @@
{
"hash_status_code_1": {
"message": "не потребує оновлення",
"description": ""
},
"hash_status_code_2": {
"message": "оновлено",
"description": ""
},
"hash_status_code_3": {
"message": "наявне оновлення",
"description": ""
},
"hash_status_code_4": {
"message": "помилка",
"description": ""
},
"hash_status_code_5": {
"message": "Ой, щось не так!",
"description": ""
},
"log_redirect": {
"message": "Цей URL перенаправляється",
"description": ""
},
"log_domain_blocked": {
"message": "Цей домен заблоковано",
"description": ""
},
"check_os_log": {
"message": "[ClearURLs]: Лог listener додано.",
"description": ""
},
"log_html_page_title": {
"message": "Лог ClearURLs",
"description": ""
},
"log_html_table_head_1": {
"message": "Перед обробкою",
"description": ""
},
"log_html_table_head_2": {
"message": "Після обробки",
"description": ""
},
"log_html_table_head_3": {
"message": "Правило",
"description": ""
},
"log_html_table_head_4": {
"message": "Час",
"description": ""
},
"log_html_reset_button": {
"message": "Скидання",
"description": ""
},
"log_html_reset_button_title": {
"message": "Скидання глобального логу",
"description": ""
},
"popup_html_configs_head": {
"message": "Налаштування",
"description": ""
},
"popup_html_configs_switch_filter": {
"message": "Фільтр",
"description": ""
},
"popup_html_configs_switch_filter_title": {
"message": "Активує функцію очищення URL. Якщо вимкнути - аддон не працюватиме",
"description": ""
},
"popup_html_configs_switch_log": {
"message": "Логування",
"description": ""
},
"popup_html_configs_switch_log_title": {
"message": "Лог зберігається лише локально. Не активуйте цю функцію, якщо вона вам не потрібна.",
"description": ""
},
"popup_html_configs_switch_badges": {
"message": "Значки",
"description": ""
},
"popup_html_configs_switch_badges_title": {
"message": "Показати кількість очищених URL",
"description": ""
},
"popup_html_statistics_head": {
"message": "Статистика",
"description": ""
},
"popup_html_statistics_elements": {
"message": "Елементи",
"description": ""
},
"popup_html_statistics_blocked": {
"message": "Заблоковано",
"description": ""
},
"popup_html_statistics_percentage": {
"message": "Відсоток",
"description": ""
},
"popup_html_statistics_reset_button": {
"message": "Скинути",
"description": ""
},
"popup_html_statistics_reset_button_title": {
"message": "Скидання глобальної статистики",
"description": ""
},
"popup_html_rules_status_head": {
"message": "Актуальність правил",
"description": ""
},
"popup_html_log_head": {
"message": "Лог",
"description": ""
},
"popup_html_log_head_title": {
"message": "Відкрити лог",
"description": ""
},
"core_save_on_disk": {
"message": "[ClearURLs]: Зберегти на диск.",
"description": ""
},
"core_error": {
"message": "[ClearURLs]: Не вдалося запустити аддон.",
"description": ""
},
"configs_switch_statistics": {
"message": "Статистика",
"description": ""
},
"configs_switch_statistics_title": {
"message": "Увімк. чи вимк. статистику",
"description": ""
},
"settings_html_page_title": {
"message": "Налаштування ClearURLs",
"description": ""
},
"badged_color_label": {
"message": "Колір значка",
"description": ""
},
"setting_html_reset_button": {
"message": "Скинути",
"description": ""
},
"setting_html_reset_button_title": {
"message": "Скинути все",
"description": ""
},
"setting_rule_url_label": {
"message": "Посилання на файл data.json (правила)",
"description": ""
},
"settings_html_save_button": {
"message": "Зберегти і перезавантажити аддон",
"description": ""
},
"settings_html_save_button_title": {
"message": "Збереження налаштувань",
"description": ""
},
"setting_hash_url_label": {
"message": "Посилання на файл rules.hash (хеш)",
"description": ""
}
}

View File

@@ -1,216 +0,0 @@
{
"hash_status_code_1": {
"message": "已是最新的",
"description": ""
},
"hash_status_code_2": {
"message": "已更新",
"description": ""
},
"hash_status_code_3": {
"message": "有可用的更新",
"description": ""
},
"hash_status_code_4": {
"message": "错误",
"description": ""
},
"hash_status_code_5": {
"message": "糟糕! 有东西不对劲",
"description": ""
},
"log_redirect": {
"message": "此网址已被转址",
"description": ""
},
"log_domain_blocked": {
"message": "此网址已被封锁",
"description": ""
},
"check_os_log": {
"message": "[ClearURLs]: 已新增日志聆听者",
"description": ""
},
"log_html_page_title": {
"message": "ClearURLs日志",
"description": ""
},
"log_html_table_head_1": {
"message": "处理前",
"description": ""
},
"log_html_table_head_2": {
"message": "处理后",
"description": ""
},
"log_html_table_head_3": {
"message": "规则",
"description": ""
},
"log_html_table_head_4": {
"message": "时间",
"description": ""
},
"log_html_reset_button": {
"message": "重设",
"description": ""
},
"log_html_reset_button_title": {
"message": "重设全域日志",
"description": ""
},
"popup_html_configs_head": {
"message": "配置",
"description": ""
},
"popup_html_configs_switch_filter": {
"message": "过滤器",
"description": ""
},
"popup_html_configs_switch_filter_title": {
"message": "此过滤器开关为ClearURLs的主开关, 若此项不勾选, 则本插件失效.",
"description": ""
},
"popup_html_configs_switch_log": {
"message": "日志",
"description": ""
},
"popup_html_configs_switch_log_title": {
"message": "日志会被储存于本地. 若不需要此功能, 建议不要使用.",
"description": ""
},
"popup_html_configs_switch_badges": {
"message": "徽章",
"description": ""
},
"popup_html_configs_switch_badges_title": {
"message": "显示已清理数量",
"description": ""
},
"popup_html_statistics_head": {
"message": "统计",
"description": ""
},
"popup_html_statistics_elements": {
"message": "元件",
"description": ""
},
"popup_html_statistics_blocked": {
"message": "已阻挡",
"description": ""
},
"popup_html_statistics_percentage": {
"message": "比例",
"description": ""
},
"popup_html_statistics_reset_button": {
"message": "重设",
"description": ""
},
"popup_html_statistics_reset_button_title": {
"message": "重设全域统计",
"description": ""
},
"popup_html_rules_status_head": {
"message": "规则状态",
"description": ""
},
"popup_html_log_head": {
"message": "日志",
"description": ""
},
"popup_html_log_head_title": {
"message": "开启日志",
"description": ""
},
"core_save_on_disk": {
"message": "[ClearURLs]: 储存于硬盘",
"description": ""
},
"core_error": {
"message": "[ClearURLs]: 此插件无法启动",
"description": ""
},
"configs_switch_statistics": {
"message": "统计",
"description": ""
},
"configs_switch_statistics_title": {
"message": "开启或关闭统计功能",
"description": ""
},
"settings_html_page_title": {
"message": "ClearURLs设置",
"description": ""
},
"badged_color_label": {
"message": "徽章颜色",
"description": ""
},
"setting_html_reset_button": {
"message": "重设",
"description": ""
},
"setting_html_reset_button_title": {
"message": "重设所有设置",
"description": ""
},
"setting_rule_url_label": {
"message": "data.json的网址 (规则)",
"description": ""
},
"settings_html_save_button": {
"message": "储存并重启插件",
"description": ""
},
"settings_html_save_button_title": {
"message": "储存设置",
"description": ""
},
"setting_hash_url_label": {
"message": "rules.hash的网址 (校验)",
"description": ""
}
}

View File

@@ -1,216 +0,0 @@
{
"hash_status_code_1": {
"message": "已是最新的",
"description": ""
},
"hash_status_code_2": {
"message": "已更新",
"description": ""
},
"hash_status_code_3": {
"message": "有可用的更新",
"description": ""
},
"hash_status_code_4": {
"message": "錯誤",
"description": ""
},
"hash_status_code_5": {
"message": "糟糕! 有東西不對勁",
"description": ""
},
"log_redirect": {
"message": "此網址已被轉址",
"description": ""
},
"log_domain_blocked": {
"message": "此網址已被封鎖",
"description": ""
},
"check_os_log": {
"message": "[ClearURLs]: 已新增記錄聆聽者",
"description": ""
},
"log_html_page_title": {
"message": "ClearURLs記錄檔",
"description": ""
},
"log_html_table_head_1": {
"message": "處理前",
"description": ""
},
"log_html_table_head_2": {
"message": "處理後",
"description": ""
},
"log_html_table_head_3": {
"message": "規則",
"description": ""
},
"log_html_table_head_4": {
"message": "時間",
"description": ""
},
"log_html_reset_button": {
"message": "重設",
"description": ""
},
"log_html_reset_button_title": {
"message": "重設全域記錄檔",
"description": ""
},
"popup_html_configs_head": {
"message": "配置",
"description": ""
},
"popup_html_configs_switch_filter": {
"message": "過濾器",
"description": ""
},
"popup_html_configs_switch_filter_title": {
"message": "此過濾器開關為ClearURLs的主開關, 若此項不打勾, 則本附加元件失效.",
"description": ""
},
"popup_html_configs_switch_log": {
"message": "記錄",
"description": ""
},
"popup_html_configs_switch_log_title": {
"message": "記錄檔會被儲存於本機. 若不需要此功能, 建議不要使用.",
"description": ""
},
"popup_html_configs_switch_badges": {
"message": "徽章",
"description": ""
},
"popup_html_configs_switch_badges_title": {
"message": "顯示已清理數量",
"description": ""
},
"popup_html_statistics_head": {
"message": "統計",
"description": ""
},
"popup_html_statistics_elements": {
"message": "元件",
"description": ""
},
"popup_html_statistics_blocked": {
"message": "已阻擋",
"description": ""
},
"popup_html_statistics_percentage": {
"message": "比例",
"description": ""
},
"popup_html_statistics_reset_button": {
"message": "重設",
"description": ""
},
"popup_html_statistics_reset_button_title": {
"message": "重設全域統計",
"description": ""
},
"popup_html_rules_status_head": {
"message": "規則狀態",
"description": ""
},
"popup_html_log_head": {
"message": "記錄檔",
"description": ""
},
"popup_html_log_head_title": {
"message": "開啟記錄檔",
"description": ""
},
"core_save_on_disk": {
"message": "[ClearURLs]: 儲存於磁碟",
"description": ""
},
"core_error": {
"message": "[ClearURLs]: 此附加元件無法啟動",
"description": ""
},
"configs_switch_statistics": {
"message": "統計",
"description": ""
},
"configs_switch_statistics_title": {
"message": "開啟或關閉統計功能",
"description": ""
},
"settings_html_page_title": {
"message": "ClearURLs設定",
"description": ""
},
"badged_color_label": {
"message": "徽章顏色",
"description": ""
},
"setting_html_reset_button": {
"message": "重設",
"description": ""
},
"setting_html_reset_button_title": {
"message": "重設所有設定",
"description": ""
},
"setting_rule_url_label": {
"message": "data.json的網址 (規則)",
"description": ""
},
"settings_html_save_button": {
"message": "儲存並重啟附加元件",
"description": ""
},
"settings_html_save_button_title": {
"message": "儲存設定",
"description": ""
},
"setting_hash_url_label": {
"message": "rules.hash的網址 (校驗)",
"description": ""
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,892 +0,0 @@
/*
* ##################################################################
* # Fetch Rules & Exception from URL #
* ##################################################################
*/
var providers = [];
var prvKeys = [];
var badges = [];
var tabid = 0;
var siteBlockedAlert = 'javascript:void(0)';
var dataHash;
var localDataHash;
var os;
var currentURL;
var storage = [];
getDataFromDisk();
function start(items)
{
initStorage(items);
/**
* Save OS Version
*/
browser.runtime.getPlatformInfo(function(info) {
os = info.os;
/**
* Initialize the JSON provider object keys.
*
* @param {JSON Object} obj
*/
function getKeys(obj){
for(var key in obj){
prvKeys.push(key);
}
}
/**
* Initialize the providers form the JSON object.
*
*/
function createProviders()
{
data = storage.ClearURLsData;
for(var p = 0; p < prvKeys.length; p++)
{
//Create new provider
providers.push(new Provider(prvKeys[p],data.providers[prvKeys[p]].completeProvider));
//Add URL Pattern
providers[p].setURLPattern(data.providers[prvKeys[p]].urlPattern);
//Add rules to provider
for(var r = 0; r < data.providers[prvKeys[p]].rules.length; r++)
{
providers[p].addRule(data.providers[prvKeys[p]].rules[r]);
}
//Add exceptions to provider
for(var e = 0; e < data.providers[prvKeys[p]].exceptions.length; e++)
{
providers[p].addException(data.providers[prvKeys[p]].exceptions[e]);
}
//Add redirections to provider
for(var re = 0; re < data.providers[prvKeys[p]].redirections.length; re++)
{
providers[p].addRedirection(data.providers[prvKeys[p]].redirections[re]);
}
}
}
/**
* Convert the external data to Objects and
* call the create provider function.
*
* @param {String} retrievedText - pure data form github
*/
function toObject(retrievedText) {
getKeys(storage.ClearURLsData.providers);
createProviders();
}
/**
* Load local saved data, if the browser is offline or
* some other network trouble.
*/
function loadOldDataFromStore()
{
localDataHash = storage.dataHash;
}
/**
* Save the hash status to the local storage.
* The status can have the following values:
* 1 "up to date"
* 2 "updated"
* 3 "update available"
* @param status_code the number for the status
*/
function storeHashStatus(status_code)
{
switch(status_code)
{
case 1: status_code = "hash_status_code_1";
break;
case 2: status_code = "hash_status_code_2";
break;
case 3: status_code = "hash_status_code_3";
break;
default: status_code = "hash_status_code_4";
}
storage.hashStatus = status_code;
}
/**
* Get the hash for the rule file on github.
* Check the hash with the hash form the local file.
* If the hash has changed, then download the new rule file.
* Else do nothing.
*/
function getHash()
{
//Get the target hash from github
fetch(storage.hashURL)
.then(function(response){
var responseTextHash = response.clone().text().then(function(responseTextHash){
if(response.ok)
{
dataHash = responseTextHash;
if($.trim(dataHash) !== $.trim(localDataHash))
{
fetchFromURL();
}
else {
toObject(storage.ClearURLsData);
storeHashStatus(1);
}
}
else {
dataHash = false;
}
});
});
}
/**
* Fetch the Rules & Exception from github.
*/
function fetchFromURL()
{
fetch(storage.ruleURL)
.then(checkResponse);
function checkResponse(response)
{
var responseText = response.clone().text().then(function(responseText){
if(response.ok)
{
var downloadedFileHash = $.sha256(responseText);
if($.trim(downloadedFileHash) === $.trim(dataHash))
{
storage.ClearURLsData = responseText;
storage.dataHash = downloadedFileHash;
storeHashStatus(2);
}
else {
storeHashStatus(3);
}
storage.ClearURLsData = JSON.parse(storage.ClearURLsData);
toObject(storage.ClearURLsData);
}
});
}
}
// ##################################################################
/*
* ##################################################################
* # Supertyp Provider #
* ##################################################################
*/
/**
* Declare constructor
*
* @param {String} _name Provider name
* @param {boolean} completeProvider Set URL Pattern as rule
*/
function Provider(_name,_completeProvider = false){
var name = _name;
var urlPattern;
var rules = [];
var exceptions = [];
var canceling = _completeProvider;
var redirections = [];
if(_completeProvider){
rules.push(".*");
}
/**
* Returns the provider name.
* @return {String}
*/
this.getName = function() {
return name;
};
/**
* Add URL pattern.
*
* @require urlPatterns as RegExp
*/
this.setURLPattern = function(urlPatterns) {
urlPattern = new RegExp(urlPatterns, "i");
};
/**
* Return if the Provider Request is canceled
* @return {Boolean} isCanceled
*/
this.isCaneling = function() {
return canceling;
};
/**
* Check the url is matching the ProviderURL.
*
* @return {boolean} ProviderURL as RegExp
*/
this.matchURL = function(url) {
return !(this.matchException(url)) && urlPattern.test(url);
};
/**
* Add a rule to the rule array.
*
* @param String rule RegExp as string
*/
this.addRule = function(rule) {
rules.push(rule);
};
/**
* Return all rules as an array.
*
* @return Array RegExp strings
*/
this.getRules = function() {
return rules;
};
/**
* Add a exception to the exceptions array.
*
* @param String exception RegExp as string
*/
this.addException = function(exception) {
exceptions.push(exception);
};
/**
* Private helper method to check if the url
* an exception.
*
* @param {String} url RegExp as string
* @return {boolean} if matching? true: false
*/
this.matchException = function(url) {
var result = false;
//Add the site blocked alert to every exception
if(url == siteBlockedAlert) return true;
for (var i = 0; i < exceptions.length; i++) {
if(result) { break; }
exception_regex = new RegExp(exceptions[i], "i");
result = exception_regex.test(url);
}
return result;
};
/**
* Add a redirection to the redirections array.
*
* @param String redirection RegExp as string
*/
this.addRedirection = function(redirection) {
redirections.push(redirection);
};
/**
* Return all redirection.
*
* @return url
*/
this.getRedirection = function(url) {
var re = null;
for(var i = 0; i < redirections.length; i++)
{
result = (url.match(new RegExp(redirections[i], "i")));
if (result && result.length > 0)
{
re = (new RegExp(redirections[i], "i")).exec(url)[1];
break;
}
}
return re;
};
}
// ##################################################################
/**
* Helper function which remove the tracking fields
* for each provider given as parameter.
*
* @param {Provider} provider Provider-Object
* @param {webRequest} request webRequest-Object
* @return {Array} Array with changes and url fields
*/
function removeFieldsFormURL(provider, request)
{
var url = request.url;
var domain = url.replace(new RegExp("\\?.*", "i"), "");
var fields = "";
var rules = provider.getRules();
var changes = false;
var cancel = false;
/*
* Expand the url by provider redirections. So no tracking on
* url redirections form sites to sites.
*/
var re = provider.getRedirection(url);
if(re !== null)
{
url = decodeURIComponent(re);
//Log the action
pushToLog(request.url, re, translate('log_redirect'));
return {
"redirect": true,
"url": url
};
}
/**
* Only test for matches, if there are fields that can be cleaned.
*/
if(existsFields(url))
{
/**
* It must be non-greedy, because by default .* will match
* all ? chars. So the replace function delete everything
* before the last ?. With adding a ? on the quantifier *,
* we fixed this problem.
*/
fields = url.replace(new RegExp(".*?\\?", "i"), "");
for (var i = 0; i < rules.length; i++) {
var beforReplace = fields;
fields = fields.replace(new RegExp(rules[i], "i"), "");
if(beforReplace != fields)
{
//Log the action
pushToLog(domain+"?"+beforReplace, domain+"?"+fields, rules[i]);
if(badges[tabid] == null)
{
badges[tabid] = 0;
}
increaseURLCounter();
if(!checkOSAndroid())
{
if(storage.badgedStatus) {
browser.browserAction.setBadgeText({text: (++badges[tabid]).toString(), tabId: tabid});
}
else
{
browser.browserAction.setBadgeText({text: "", tabId: tabid});
}
}
changes = true;
}
}
url = domain+"?"+fields;
}
else {
if(domain != url)
{
url = domain;
changes = true;
}
}
if(provider.isCaneling()){
pushToLog(request.url, request.url, translate('log_domain_blocked'));
if(badges[tabid] == null)
{
badges[tabid] = 0;
}
increaseURLCounter();
if(!checkOSAndroid())
{
if(storage.badgedStatus) {
browser.browserAction.setBadgeText({text: (++badges[tabid]).toString(), tabId: tabid});
}
else
{
browser.browserAction.setBadgeText({text: "", tabId: tabid});
}
}
cancel = true;
}
return {
"changes": changes,
"url": url,
"cancel": cancel
};
}
/**
* Return the number of parameters query strings.
* @param {String} url URL as String
* @return {int} Number of Parameters
*/
function countFields(url)
{
var matches = (url.match(/[^\/|\?|&]+=[^\/|\?|&]+/gi) || []);
var count = matches.length;
return count;
}
/**
* Returns true if fields exists.
* @param {String} url URL as String
* @return {boolean}
*/
function existsFields(url)
{
var matches = (url.match(/\?.+/i) || []);
var count = matches.length;
return (count > 0);
}
/**
* Function which called from the webRequest to
* remove the tracking fields from the url.
*
* @param {webRequest} request webRequest-Object
* @return {Array} redirectUrl or none
*/
function clearUrl(request)
{
var URLbeforeReplaceCount = countFields(request.url);
//Add Fields form Request to global url counter
increaseGlobalURLCounter(URLbeforeReplaceCount);
if(storage.globalStatus){
var result = {
"changes": false,
"url": "",
"redirect": false,
"cancel": false
};
/*
* Call for every provider the removeFieldsFormURL method.
*/
for (var i = 0; i < providers.length; i++) {
if(providers[i].matchURL(request.url))
{
result = removeFieldsFormURL(providers[i], request);
}
/*
* Expand urls and bypass tracking.
* Cancel the active request.
*/
if(result.redirect)
{
browser.tabs.update(request.tabId, {url: result.url});
return {cancel: true};
}
/*
* Cancel the Request and redirect to the site blocked alert page,
* to inform the user about the full url blocking.
*/
if(result.cancel){
return {
redirectUrl: siteBlockedAlert
};
}
/*
* Ensure that the function go not into
* a loop.
*/
if(result.changes){
return {
redirectUrl: result.url
};
}
}
}
// Default case
return {};
}
/**
* Function to log all activities from ClearUrls.
* Only logging when activated.
* The log is only temporary saved in the cache and will
* permanently saved with the saveLogOnClose function.
*
* @param beforeProcessing the url before the clear process
* @param afterProcessing the url after the clear process
* @param rule the rule that triggered the process
*/
function pushToLog(beforeProcessing, afterProcessing, rule)
{
if(storage.loggingStatus)
{
storage.log.log.push(
{
"before": beforeProcessing,
"after": afterProcessing,
"rule": rule,
"timestamp": Date.now()
}
);
}
}
/**
* Call loadOldDataFromStore, getHash, counter, status and log functions
*/
loadOldDataFromStore();
getHash();
setBadgedStatus();
/**
* Call by each tab is updated.
* And if url has changed.
*/
function handleUpdated(tabId, changeInfo, tabInfo) {
if(changeInfo.url)
{
delete badges[tabId];
}
currentURL = tabInfo.url;
}
/**
* Call by each tab is updated.
*/
browser.tabs.onUpdated.addListener(handleUpdated);
/**
* Call by each tab change to set the actual tab id
*/
function handleActivated(activeInfo) {
tabid = activeInfo.tabId;
browser.tabs.get(tabid).then(function (tab) {
currentURL = tab.url;
});
}
/**
* Call by each tab change.
*/
browser.tabs.onActivated.addListener(handleActivated);
/**
* Check the request.
*/
function promise(requestDetails)
{
if(isDataURL(requestDetails))
{
return {};
}
else {
var ret = clearUrl(requestDetails);
return ret;
}
}
/**
* To prevent long loading on data urls
* we will check here for data urls.
*
* @type {requestDetails}
* @return {boolean}
*/
function isDataURL(requestDetails) {
var s = requestDetails.url;
return s.substring(0,4) == "data";
}
/**
* Call by each Request and checking the url.
*
* @type {Array}
*/
browser.webRequest.onBeforeRequest.addListener(
promise,
{urls: ["<all_urls>"], types: getData("types")},
["blocking"]
);
});
}
/**
* Save every minute the temporary data to the disk.
*/
setInterval(saveOnExit, 60000);
/**
* Get the badged status from the browser storage and put the value
* into a local variable.
*
*/
function setBadgedStatus()
{
if(!checkOSAndroid() && storage.badgedStatus){
browser.browserAction.setBadgeBackgroundColor({
'color': '#'+storage.badged_color
});
}
}
/**
* Change the icon.
*/
function changeIcon()
{
if(storage.globalStatus){
browser.browserAction.setIcon({path: "img/clearurls.svg"});
} else{
browser.browserAction.setIcon({path: "img/clearurls_gray.svg"});
}
}
/**
* Check if it is an android device.
* @return bool
*/
function checkOSAndroid()
{
if(os == "android")
{
return true;
}
else{
return false;
}
}
/**
* Increase by {number} the GlobalURLCounter
* @param {int} number
*/
function increaseGlobalURLCounter(number)
{
if(storage.statisticsStatus)
{
storage.globalurlcounter += number;
}
}
/**
* Increase by one the URLCounter
*/
function increaseURLCounter()
{
if(storage.statisticsStatus)
{
storage.globalCounter++;
}
}
/**
* Writes the storage variable to the disk.
*/
function saveOnExit()
{
var json = {};
Object.entries(storage).forEach(([key, value]) => {
switch (key) {
case "ClearURLsData":
case "log":
json[key] = JSON.stringify(value);
break;
case "types":
json[key] = value.toString();
break;
default:
json[key] = value;
}
});
console.log(translate('core_save_on_disk'));
browser.storage.local.set(json);
}
/**
* Save the value under the key on the disk.
* @param {String} key
* @param {Object} value
*/
function saveOnDisk(key, value)
{
browser.storage.local.set({key: value});
}
/**
* Retrieve everything and save on the RAM.
*/
function getDataFromDisk()
{
browser.storage.local.get().then(start, error);
}
/**
* Get the value under the key.
* @param {String} key
* @return {Object}
*/
function getData(key)
{
return storage[key];
}
/**
* Save the value under the key on the RAM.
* @param {String} key
* @param {Object} value
*/
function setData(key, value)
{
switch (key) {
case "ClearURLsData":
case "log":
storage[key] = JSON.parse(value);
break;
case "hashURL":
case "ruleURL":
storage[key] = replaceOldGithubURLs(value);
break;
case "types":
storage[key] = value.split(',');
break;
default:
storage[key] = value;
}
}
/**
* Translate a string with the i18n API.
*
* @param {string} string Name of the attribute used for localization
*/
function translate(string)
{
return browser.i18n.getMessage(string);
}
/**
* Write error on console.
*/
function error()
{
console.log(translate('core_error'));
}
/**
* Set default values, if the storage is empty.
* @param {Object} items
*/
function initStorage(items)
{
initSettings();
if(!isEmpty(items)) {
Object.entries(items).forEach(([key, value]) => {
setData(key, value);
});
}
}
/**
* Set default values for the settings.
*/
function initSettings()
{
storage.ClearURLsData = [];
storage.dataHash = "";
storage.badgedStatus = true;
storage.globalStatus = true;
storage.globalurlcounter = 0;
storage.globalCounter = 0;
storage.hashStatus = "error";
storage.loggingStatus = false;
storage.log = {"log": []};
storage.statisticsStatus = true;
storage.badged_color = "ffa500";
storage.hashURL = "https://gitlab.com/KevinRoebert/ClearUrls/raw/master/data/rules.hash";
storage.ruleURL = "https://gitlab.com/KevinRoebert/ClearUrls/raw/master/data/data.json";
storage.types = ["main_frame", "sub_frame", "xmlhttprequest"];
storage.reportServer = "https://clearurls.xn--rb-fka.it";
}
/**
* Reloads the extension.
*/
function reload()
{
browser.runtime.reload();
}
/**
* Replace the old GitHub URLs with the
* new GitLab URLs.
*/
function replaceOldGithubURLs(url)
{
switch (url) {
case "https://raw.githubusercontent.com/KevinRoebert/ClearUrls/master/data/rules.hash?flush_cache=true":
return "https://gitlab.com/KevinRoebert/ClearUrls/raw/master/data/rules.hash";
case "https://raw.githubusercontent.com/KevinRoebert/ClearUrls/master/data/data.json?flush_cache=true":
return "https://gitlab.com/KevinRoebert/ClearUrls/raw/master/data/data.json";
default:
return url;
}
}
/**
* Check if an object is empty.
* @param {Object} obj
* @return {Boolean}
*/
function isEmpty(obj)
{
return (Object.getOwnPropertyNames(obj).length === 0);
}
/**
* Returns the current URL.
* @return {String} [description]
*/
function getCurrentURL()
{
return currentURL;
}

View File

@@ -1,110 +0,0 @@
/**
* Get the log and display the data as table.
*/
var log = {};
var core = function (func) {
return browser.runtime.getBackgroundPage().then(func);
};
/**
* Reset the global log
*/
function resetGlobalLog(){
core(function (ref){
obj = {"log": []};
ref.setData('log', JSON.stringify(obj));
});
getLog();
location.reload();
}
/**
* Get the log and display to the user
*/
function getLog()
{
core(function (ref){
log = ref.getData('log');
// Sort the log | issue #70
log.log.sort(function(a,b) {
return b.timestamp - a.timestamp;
});
var length = Object.keys(log.log).length;
var row;
if(length != 0)
{
for(var i=0; i<length;i++)
{
row = "<tr>"
+ "<td>"+log.log[i].before+"</td>"
+ "<td>"+log.log[i].after+"</td>"
+ "<td>"+log.log[i].rule+"</td>"
+ "<td>"+toDate(log.log[i].timestamp)+"</td>";
$('#tbody').append(row);
}
}
$('#logTable').DataTable({
"pageLength": 10,
"language": {
"url": getDataTableTranslation()
}
} ).order([3, 'desc']).draw();
});
}
/**
* Get the translation file for the DataTable
*/
function getDataTableTranslation()
{
var lang = browser.i18n.getUILanguage();
lang = lang.substring(0,2);
var file = browser.extension.getURL('./external_js/dataTables/i18n/'+lang+'.lang');
return file;
}
/**
* Convert timestamp to date
*/
function toDate(time)
{
return new Date(time).toLocaleString();
}
/**
* Load only when document is ready
*/
$(document).ready(function(){
setText();
getLog();
$('#reset_log_btn').on("click", resetGlobalLog);
});
/**
* Translate a string with the i18n API.
*
* @param {string} string Name of the attribute used for localization
*/
function translate(string)
{
return browser.i18n.getMessage(string);
}
/**
* Set the text for the UI.
*/
function setText()
{
document.title = translate('log_html_page_title');
$('#page_title').text(translate('log_html_page_title'));
$('#reset_log_btn').text(translate('log_html_reset_button'));
$('#log_html_reset_button').prop('title', translate('log_html_reset_button_title'));
$('#head_1').text(translate('log_html_table_head_1'));
$('#head_2').text(translate('log_html_table_head_2'));
$('#head_3').text(translate('log_html_table_head_3'));
$('#head_4').text(translate('log_html_table_head_4'));
}

View File

@@ -1,265 +0,0 @@
var element = $("#statistics_value");
var elGlobalPercentage = $("#statistics_value_global_percentage");
var elProgressbar_blocked = $('#progress_blocked');
var elProgressbar_non_blocked = $('#progress_non_blocked');
var elTotal = $('#statistics_total_elements');
var globalPercentage = 0;
var globalCounter;
var globalurlcounter;
var globalStatus;
var badgedStatus;
var hashStatus;
var loggingStatus;
var statisticsStatus;
var currentURL;
var reportServer;
var core = function (func) {
return browser.runtime.getBackgroundPage().then(func);
};
function getData()
{
core(function (ref){
globalCounter = ref.getData('globalCounter');
globalurlcounter = ref.getData('globalurlcounter');
globalStatus = ref.getData('globalStatus');
badgedStatus = ref.getData('badgedStatus');
hashStatus = ref.getData('hashStatus');
loggingStatus = ref.getData('loggingStatus');
statisticsStatus = ref.getData('statisticsStatus');
currentURL = ref.getCurrentURL();
reportServer = ref.getData('reportServer');
});
}
/**
* Initialize the UI.
*
*/
function init()
{
setSwitchButton("globalStatus", "globalStatus");
setSwitchButton("tabcounter", "badgedStatus");
setSwitchButton("logging", "loggingStatus");
setSwitchButton("statistics", "statisticsStatus");
setHashStatus();
changeStatistics();
}
/**
* Get the globalCounter value from the browser storage
* @param {(data){} Return value form browser.storage.local.get
*/
function changeStatistics()
{
globalPercentage = ((globalCounter/globalurlcounter)*100).toFixed(3);
if(isNaN(Number(globalPercentage))) globalPercentage = 0;
element.text(globalCounter.toLocaleString());
elGlobalPercentage.text(globalPercentage+"%");
elProgressbar_blocked.css('width', globalPercentage+'%');
elProgressbar_non_blocked.css('width', (100-globalPercentage)+'%');
elTotal.text(globalurlcounter.toLocaleString());
}
/**
* Set the value for the hashStatus on startUp.
*/
function setHashStatus()
{
var element = $('#hashStatus');
if(hashStatus)
{
element.text(translate(hashStatus));
}
else {
element.text(translate('hash_status_code_5'));
}
}
/**
* Change the value of a switch button.
* @param {string} id HTML id
* @param {string} storageID storage internal id
*/
function changeSwitchButton(id, storageID)
{
var element = $('#'+id);
changeVisibility(id, storageID);
element.on('change', function(){
core(function (ref){
ref.setData(storageID, element.is(':checked'));
if(storageID == "globalStatus") ref.changeIcon();
changeVisibility(id, storageID);
ref.saveOnExit();
});
});
}
/**
* Change the visibility of sections.
*/
function changeVisibility(id, storageID)
{
var element;
switch(storageID)
{
case "loggingStatus":
element = $('#log_section');
break;
case "statisticsStatus":
element = $('#statistic_section');
break;
default:
element = "undefine";
}
if(element != "undefine")
{
if($('#'+id).is(':checked'))
{
element.css('display', '');
element.css('display', '');
}
else {
element.css('display', 'none');
element.css('display', 'none');
}
}
}
/**
* Set the value of a switch button.
* @param {string} id HTML id
* @param {string} varname js internal variable name
*/
function setSwitchButton(id, varname)
{
var element = $('#'+id);
element.prop('checked', this[varname]);
}
/**
* Reset the global statistic
*/
function resetGlobalCounter(){
core(function (ref){
globalurlcounter = 0;
globalCounter = 0;
ref.setData('globalCounter', 0);
ref.setData('globalurlcounter', 0);
ref.saveOnExit();
changeStatistics();
});
}
if(!browser.extension.inIncognitoContext)
{
getData();
}
$(document).ready(function(){
if(!browser.extension.inIncognitoContext)
{
init();
$('#reset_counter_btn').on("click", resetGlobalCounter);
changeSwitchButton("globalStatus", "globalStatus");
changeSwitchButton("tabcounter", "badgedStatus");
changeSwitchButton("logging", "loggingStatus");
changeSwitchButton("statistics", "statisticsStatus");
$('#loggingPage').attr('href', browser.extension.getURL('./html/log.html'));
$('#settings').attr('href', browser.extension.getURL('./html/settings.html'));
$('#reportButton').on("click", reportURL);
setText();
} else {
$('#config_section').remove();
$('#statistic_section').remove();
$('#status_section').remove();
$('#log_section').remove();
$('#incognito').css('display', '');
}
});
/**
* Set the text for the UI.
*/
function setText()
{
injectText('loggingPage','popup_html_log_head');
injectText('reset_counter_btn','popup_html_statistics_reset_button');
injectText('rules_status_head','popup_html_rules_status_head');
injectText('statistics_percentage','popup_html_statistics_percentage');
injectText('statistics_blocked','popup_html_statistics_blocked');
injectText('statistics_elements','popup_html_statistics_elements');
injectText('statistics_head','popup_html_statistics_head');
injectText('configs_switch_badges','popup_html_configs_switch_badges');
injectText('configs_switch_log','popup_html_configs_switch_log');
injectText('configs_switch_filter','popup_html_configs_switch_filter');
injectText('configs_head','popup_html_configs_head');
injectText('configs_switch_statistics','configs_switch_statistics');
injectText('reportButton', 'popup_html_report_button', true);
}
/**
* Helper function to inject the translated text and tooltip.
*
* @param {string} id ID of the HTML element
* @param {string} attribute Name of the attribute used for localization
* @param {boolean} tooltip
*/
function injectText(id, attribute, tooltip)
{
object = $('#'+id);
object.text(translate(attribute));
/*
This function will throw an error if no translation
is found for the tooltip. This is a planned error.
*/
tooltip = translate(attribute+"_title");
if(tooltip != "")
{
object.prop('title', tooltip);
}
}
/**
* Translate a string with the i18n API.
*
* @param {string} string Name of the attribute used for localization
*/
function translate(string)
{
return browser.i18n.getMessage(string);
}
/**
* Send the url to the DB on clearurls.röb.it to checked for tracking fields.
*/
function reportURL()
{
$.ajax({
url: reportServer+'/report_url.php?url='+encodeURI(currentURL),
success: function(result) {
BootstrapDialog.show({
message: translate('success_report_url')
});
},
error: function(result) {
BootstrapDialog.show({
message: translate('error_report_url')
});
}
});
}

View File

@@ -1,105 +0,0 @@
var settings = [];
var core = function (func) {
return browser.runtime.getBackgroundPage().then(func);
};
getData();
/**
* Load only when document is ready
*/
$(document).ready(function(){
setText();
$(".pick-a-color").pickAColor();
$('#reset_settings_btn').on("click", reset);
$('#save_settings_btn').on("click", save);
$("#badged_color input").on("change", function () {
settings.badged_color = $(this).val();
core(function (ref){
ref.setData('badged_color', settings.badged_color);
ref.setBadgedStatus();
ref.saveOnExit();
});
});
});
/**
* Reset everything.
* Set everthing to the default values.
*/
function reset()
{
core(function (ref){
ref.initSettings();
ref.saveOnExit();
ref.reload();
});
}
/**
* Saves the settings.
*/
function save()
{
core(function (ref){
ref.setData('badged_color', $('input[name=badged_color]').val());
ref.setBadgedStatus();
ref.setData('ruleURL', $('input[name=rule_url]').val());
ref.setData('hashURL', $('input[name=hash_url]').val());
ref.setData('types', $('input[name=types]').val());
ref.setData('reportServer', $('input[name=report_server]').val());
ref.saveOnExit();
ref.reload();
});
location.reload();
}
/**
* Translate a string with the i18n API.
*
* @param {string} string Name of the attribute used for localization
*/
function translate(string)
{
return browser.i18n.getMessage(string);
}
/**
* Get the data.
*/
function getData()
{
core(function (ref){
settings.badged_color = ref.getData('badged_color');
settings.rule_url = ref.getData('ruleURL');
settings.hash_url = ref.getData('hashURL');
settings.types = ref.getData('types');
settings.reportServer = ref.getData('reportServer');
});
}
/**
* Set the text for the UI.
*/
function setText()
{
document.title = translate('settings_html_page_title');
$('#page_title').text(translate('settings_html_page_title'));
$('#badged_color_label').text(translate('badged_color_label'));
$('input[name=badged_color]').val(settings.badged_color);
$('#reset_settings_btn').text(translate('setting_html_reset_button'));
$('#reset_settings_btn').prop('title', translate('setting_html_reset_button_title'));
$('#rule_url_label').text(translate('setting_rule_url_label'));
$('input[name=rule_url]').val(settings.rule_url);
$('#hash_url_label').text(translate('setting_hash_url_label'));
$('input[name=hash_url]').val(settings.hash_url);
$('#types_label').html(translate('setting_types_label'));
$('input[name=types]').val(settings.types);
$('#save_settings_btn').text(translate('settings_html_save_button'));
$('#save_settings_btn').prop('title', translate('settings_html_save_button_title'));
$('#report_server_label').html(translate('setting_report_server_label'));
$('input[name=report_server]').val(settings.reportServer);
}

View File

@@ -1,6 +0,0 @@
/**
* This file writes only the version into every page.
* @return version
*/
var version = browser.runtime.getManifest().version;
$('#version').text(version);

View File

@@ -1 +0,0 @@
.bootstrap-dialog .modal-header{border-top-left-radius:4px;border-top-right-radius:4px}.bootstrap-dialog .bootstrap-dialog-title{color:#fff;display:inline-block;font-size:16px}.bootstrap-dialog .bootstrap-dialog-message{font-size:14px}.bootstrap-dialog .bootstrap-dialog-button-icon{margin-right:3px}.bootstrap-dialog .bootstrap-dialog-close-button{font-size:20px;float:right;opacity:.9;filter:alpha(opacity=90)}.bootstrap-dialog .bootstrap-dialog-close-button:hover{cursor:pointer;opacity:1;filter:alpha(opacity=100)}.bootstrap-dialog.type-default .modal-header{background-color:#fff}.bootstrap-dialog.type-default .bootstrap-dialog-title{color:#333}.bootstrap-dialog.type-info .modal-header{background-color:#5bc0de}.bootstrap-dialog.type-primary .modal-header{background-color:#337ab7}.bootstrap-dialog.type-success .modal-header{background-color:#5cb85c}.bootstrap-dialog.type-warning .modal-header{background-color:#f0ad4e}.bootstrap-dialog.type-danger .modal-header{background-color:#d9534f}.bootstrap-dialog.size-large .bootstrap-dialog-title{font-size:24px}.bootstrap-dialog.size-large .bootstrap-dialog-close-button{font-size:30px}.bootstrap-dialog.size-large .bootstrap-dialog-message{font-size:18px}.bootstrap-dialog .icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}

File diff suppressed because one or more lines are too long

View File

@@ -1,16 +0,0 @@
body {
font-size: 13px;
}
.small-version {
font-size: 10px;
}
.navbar-header {
margin-top: 0;
margin-bottom: 8px;
}
.col-sm-1 {
margin-top: -10px;
}

View File

@@ -1 +0,0 @@
table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:8px;right:8px;display:block;font-family:'Glyphicons Halflings';opacity:0.5}table.dataTable thead .sorting:after{opacity:0.2;content:"\e150"}table.dataTable thead .sorting_asc:after{content:"\e155"}table.dataTable thead .sorting_desc:after{content:"\e156"}table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{color:#eee}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody>table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody>table>thead .sorting:after,div.dataTables_scrollBody>table>thead .sorting_asc:after,div.dataTables_scrollBody>table>thead .sorting_desc:after{display:none}div.dataTables_scrollBody>table>tbody>tr:first-child>th,div.dataTables_scrollBody>table>tbody>tr:first-child>td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-condensed>thead>tr>th{padding-right:20px}table.dataTable.table-condensed .sorting:after,table.dataTable.table-condensed .sorting_asc:after,table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0}

View File

@@ -1,86 +0,0 @@
.pick-a-color-markup *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}
.pick-a-color-markup .hex-pound{padding-left:8px;padding-right:8px}@media screen and (max-width:991px){.pick-a-color-markup .hex-pound{padding:3px 5px 0px 5px;min-height:30px}}
.pick-a-color-markup .pick-a-color{padding:5px}@media screen and (max-width:991px){.pick-a-color-markup .pick-a-color{width:100%;font-size:18px;padding:9px;min-width:222px;height:47px}}
.pick-a-color-markup .input-group-btn .color-dropdown{padding:6px 5px}.pick-a-color-markup .input-group-btn .color-dropdown.no-hex{border-bottom-left-radius:4px;border-top-left-radius:4px}
.pick-a-color-markup .input-group-btn .color-dropdown:focus{background-color:#fff}
@media screen and (max-width:991px){.pick-a-color-markup .input-group-btn .color-dropdown{height:47px}}
.pick-a-color-markup .color-preview{border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 0 2px 2px rgba(0,0,0,0.075);box-shadow:inset 0 0 2px 2px rgba(0,0,0,0.075);height:1.429em;width:1.429em;display:inline-block;cursor:pointer;margin-right:5px}.pick-a-color-markup .color-preview.current-color{margin-bottom:-5px}
@media screen and (max-width:991px){.pick-a-color-markup .color-preview{height:1.875em;width:1.875em}}
.pick-a-color-markup .color-menu{text-align:left;padding:5px 0px;width:330px;font-size:14px;left:auto;}.pick-a-color-markup .color-menu.color-menu--inline{left:-285px}@media screen and (max-width:991px){.pick-a-color-markup .color-menu.color-menu--inline{left:-242px}}
@media screen and (max-width:991px){.pick-a-color-markup .color-menu{left:-242px;width:293px}}.pick-a-color-markup .color-menu.small{width:100px}@media screen and (max-width:991px){.pick-a-color-markup .color-menu.small{left:-105px}}
.pick-a-color-markup .color-menu.no-hex{left:0px}
.pick-a-color-markup .color-menu ul{padding:0px;margin:0px}
.pick-a-color-markup .color-menu li{list-style-type:none;padding:5px 0px;margin:0px}
.pick-a-color-markup .color-menu .color-preview{vertical-align:middle;margin:0px}@media screen and (max-width:991px){.pick-a-color-markup .color-menu .color-preview{height:35px;width:35px}}.pick-a-color-markup .color-menu .color-preview.current-color,.pick-a-color-markup .color-menu .color-preview.white{background-color:#fff}
.pick-a-color-markup .color-menu .color-preview.red{background-color:#f00}
.pick-a-color-markup .color-menu .color-preview.orange{background-color:#f60}
.pick-a-color-markup .color-menu .color-preview.yellow{background-color:#ff0}
.pick-a-color-markup .color-menu .color-preview.green{background-color:#008000}
.pick-a-color-markup .color-menu .color-preview.blue{background-color:#00f}
.pick-a-color-markup .color-menu .color-preview.indigo{background-color:#4a0080}
.pick-a-color-markup .color-menu .color-preview.violet{background-color:#ee81ee}
.pick-a-color-markup .color-menu .color-preview.purple{background-color:#80007f}
.pick-a-color-markup .color-menu .color-preview.black{background-color:#000}
.pick-a-color-markup .color-menu .basicColors-content li>a,.pick-a-color-markup .color-menu .savedColors-content li>a{padding:5px 15px 3px 15px;cursor:default;min-height:25px;color:#333}.pick-a-color-markup .color-menu .basicColors-content li>a:hover,.pick-a-color-markup .color-menu .savedColors-content li>a:hover{background-color:#fff}
@media screen and (max-width:991px){.pick-a-color-markup .color-menu .basicColors-content li>a,.pick-a-color-markup .color-menu .savedColors-content li>a{min-height:40px}}
.pick-a-color-markup .color-menu .basicColors-content li:hover a,.pick-a-color-markup .color-menu .savedColors-content li:hover a{color:#333;background-image:none;filter:none;text-decoration:none;font-weight:bold}@media screen and (max-width:991px){.pick-a-color-markup .color-menu .basicColors-content li:hover a,.pick-a-color-markup .color-menu .savedColors-content li:hover a{background-color:#fff;font-weight:normal}}
.pick-a-color-markup .color-menu .btn.color-select{margin:0px 5px;height:20px;padding:0px 5px;margin-top:0px;line-height:1.5px;border-radius:4px}@media screen and (max-width:991px){.pick-a-color-markup .color-menu .btn.color-select{height:35px}}
.pick-a-color-markup .caret{margin-bottom:3px}
.pick-a-color-markup .color-menu-instructions,.pick-a-color-markup .advanced-instructions{text-align:center;padding:0px 6px;margin:0px;font-size:14px;font-weight:normal}@media screen and (min-width:992px){.pick-a-color-markup .color-menu-instructions,.pick-a-color-markup .advanced-instructions{display:none}}
.pick-a-color-markup .color-label{vertical-align:middle;margin:0px;margin-left:10px;cursor:pointer}@media screen and (max-width:991px){.pick-a-color-markup .color-label{margin-left:8px}}
.pick-a-color-markup .color-box{height:20px;width:200px;position:absolute;left:115px;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 0 2px 2px rgba(0,0,0,0.075);box-shadow:inset 0 0 2px 2px rgba(0,0,0,0.075);cursor:pointer}@media screen and (max-width:991px){.pick-a-color-markup .color-box{width:160px;height:35px}}
.pick-a-color-markup .black .highlight-band-stripe{background-color:#fff}
.pick-a-color-markup .spectrum-white{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#fff), to(#808080));background-image:-webkit-linear-gradient(left, color-stop(#fff 0), color-stop(#808080 100%));background-image:-moz-linear-gradient(left, #fff 0, #808080 100%);background-image:linear-gradient(to right, #fff 0, #808080 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ff808080', GradientType=1)}.pick-a-color-markup .spectrum-white .highlight-band{left:0px}
.pick-a-color-markup .spectrum-red{background-image:-webkit-gradient(linear, left top, right top, color-stop(0, #fff), color-stop(.5, #f00), color-stop(1, #000));background-image:-moz-linear-gradient(left center, #fff 0, #f00 50%, #000 100%);background-image:-webkit-linear-gradient(left, #fff 0, #f00 50%, #000 100%);background-image:-o-linear-gradient(left, #fff 0, #f00 50%, #000 100%);background-image:linear-gradient(to right, #fff 0, #f00 50%, #000 100%);background-repeat:repeat-x}
.pick-a-color-markup .spectrum-orange{background-image:-webkit-gradient(linear, left top, right top, color-stop(0, #fff), color-stop(.5, #f60), color-stop(1, #000));background-image:-moz-linear-gradient(left center, #fff 0, #f60 50%, #000 100%);background-image:-webkit-linear-gradient(left, #fff 0, #f60 50%, #000 100%);background-image:-o-linear-gradient(left, #fff 0, #f60 50%, #000 100%);background-image:linear-gradient(to right, #fff 0, #f60 50%, #000 100%);background-repeat:repeat-x}
.pick-a-color-markup .spectrum-yellow{background-image:-webkit-gradient(linear, left top, right top, color-stop(0, #fff), color-stop(.5, #ff0), color-stop(1, #000));background-image:-moz-linear-gradient(left center, #fff 0, #ff0 50%, #000 100%);background-image:-webkit-linear-gradient(left, #fff 0, #ff0 50%, #000 100%);background-image:-o-linear-gradient(left, #fff 0, #ff0 50%, #000 100%);background-image:linear-gradient(to right, #fff 0, #ff0 50%, #000 100%);background-repeat:repeat-x}
.pick-a-color-markup .spectrum-green{background-image:-webkit-gradient(linear, left top, right top, color-stop(0, #80ff80), color-stop(.5, #008000), color-stop(1, #000));background-image:-moz-linear-gradient(left center, #80ff80 0, #008000 50%, #000 100%);background-image:-webkit-linear-gradient(left, #80ff80 0, #008000 50%, #000 100%);background-image:-o-linear-gradient(left, #80ff80 0, #008000 50%, #000 100%);background-image:linear-gradient(to right, #80ff80 0, #008000 50%, #000 100%);background-repeat:repeat-x}
.pick-a-color-markup .spectrum-blue{background-image:-webkit-gradient(linear, left top, right top, color-stop(0, #fff), color-stop(.5, #00f), color-stop(1, #000));background-image:-moz-linear-gradient(left center, #fff 0, #00f 50%, #000 100%);background-image:-webkit-linear-gradient(left, #fff 0, #00f 50%, #000 100%);background-image:-o-linear-gradient(left, #fff 0, #00f 50%, #000 100%);background-image:linear-gradient(to right, #fff 0, #00f 50%, #000 100%);background-repeat:repeat-x}
.pick-a-color-markup .spectrum-purple{background-image:-webkit-gradient(linear, left top, right top, color-stop(0, #ff80ff), color-stop(.5, #80007f), color-stop(1, #000));background-image:-moz-linear-gradient(left center, #ff80ff 0, #80007f 50%, #000 100%);background-image:-webkit-linear-gradient(left, #ff80ff 0, #80007f 50%, #000 100%);background-image:-o-linear-gradient(left, #ff80ff 0, #80007f 50%, #000 100%);background-image:linear-gradient(to right, #ff80ff 0, #80007f 50%, #000 100%);background-repeat:repeat-x}
.pick-a-color-markup .spectrum-black{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#000), to(#808080));background-image:-webkit-linear-gradient(left, color-stop(#000 0), color-stop(#808080 100%));background-image:-moz-linear-gradient(left, #000 0, #808080 100%);background-image:linear-gradient(to right, #000 0, #808080 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff000000', endColorstr='#ff808080', GradientType=1)}.pick-a-color-markup .spectrum-black .highlight-band{left:0px;border:1px solid #808080}
.pick-a-color-markup .ie-spectrum{height:20px;width:100px;display:inline-block;top:-1}.pick-a-color-markup .ie-spectrum.hue{width:50.5px}@media screen and (max-width:991px){.pick-a-color-markup .ie-spectrum.hue{width:45.5px}}
@media screen and (max-width:991px){.pick-a-color-markup .ie-spectrum{width:80px;height:35px}}
.pick-a-color-markup .red-spectrum-0,.pick-a-color-markup .lightness-spectrum-0{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#fff), to(#f00));background-image:-webkit-linear-gradient(left, color-stop(#fff 0), color-stop(#f00 100%));background-image:-moz-linear-gradient(left, #fff 0, #f00 100%);background-image:linear-gradient(to right, #fff 0, #f00 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffff0000', GradientType=1);border-bottom-left-radius:4px;border-top-left-radius:4px}
.pick-a-color-markup .red-spectrum-1,.pick-a-color-markup .lightness-spectrum-1{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#f00), to(#000));background-image:-webkit-linear-gradient(left, color-stop(#f00 0), color-stop(#000 100%));background-image:-moz-linear-gradient(left, #f00 0, #000 100%);background-image:linear-gradient(to right, #f00 0, #000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff0000', endColorstr='#ff000000', GradientType=1);border-bottom-right-radius:4px;border-top-right-radius:4px}
.pick-a-color-markup .lightness-spectrum-0,.pick-a-color-markup .lightness-spectrum-1{width:150px}@media screen and (max-width:991px){.pick-a-color-markup .lightness-spectrum-0,.pick-a-color-markup .lightness-spectrum-1{width:135px}}
.pick-a-color-markup .orange-spectrum-0{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#fff), to(#f60));background-image:-webkit-linear-gradient(left, color-stop(#fff 0), color-stop(#f60 100%));background-image:-moz-linear-gradient(left, #fff 0, #f60 100%);background-image:linear-gradient(to right, #fff 0, #f60 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffff6600', GradientType=1);border-bottom-left-radius:4px;border-top-left-radius:4px}
.pick-a-color-markup .orange-spectrum-1{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#f60), to(#000));background-image:-webkit-linear-gradient(left, color-stop(#f60 0), color-stop(#000 100%));background-image:-moz-linear-gradient(left, #f60 0, #000 100%);background-image:linear-gradient(to right, #f60 0, #000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff6600', endColorstr='#ff000000', GradientType=1);border-bottom-right-radius:4px;border-top-right-radius:4px}
.pick-a-color-markup .yellow-spectrum-0{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#fff), to(#ff0));background-image:-webkit-linear-gradient(left, color-stop(#fff 0), color-stop(#ff0 100%));background-image:-moz-linear-gradient(left, #fff 0, #ff0 100%);background-image:linear-gradient(to right, #fff 0, #ff0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffffff00', GradientType=1);border-bottom-left-radius:4px;border-top-left-radius:4px}
.pick-a-color-markup .yellow-spectrum-1{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#ff0), to(#000));background-image:-webkit-linear-gradient(left, color-stop(#ff0 0), color-stop(#000 100%));background-image:-moz-linear-gradient(left, #ff0 0, #000 100%);background-image:linear-gradient(to right, #ff0 0, #000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff00', endColorstr='#ff000000', GradientType=1);border-bottom-right-radius:4px;border-top-right-radius:4px}
.pick-a-color-markup .green-spectrum-0{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#80ff80), to(#008000));background-image:-webkit-linear-gradient(left, color-stop(#80ff80 0), color-stop(#008000 100%));background-image:-moz-linear-gradient(left, #80ff80 0, #008000 100%);background-image:linear-gradient(to right, #80ff80 0, #008000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff80ff80', endColorstr='#ff008000', GradientType=1);border-bottom-left-radius:4px;border-top-left-radius:4px}
.pick-a-color-markup .green-spectrum-1{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#008000), to(#000));background-image:-webkit-linear-gradient(left, color-stop(#008000 0), color-stop(#000 100%));background-image:-moz-linear-gradient(left, #008000 0, #000 100%);background-image:linear-gradient(to right, #008000 0, #000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff008000', endColorstr='#ff000000', GradientType=1);border-bottom-right-radius:4px;border-top-right-radius:4px}
.pick-a-color-markup .blue-spectrum-0{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#fff), to(#00f));background-image:-webkit-linear-gradient(left, color-stop(#fff 0), color-stop(#00f 100%));background-image:-moz-linear-gradient(left, #fff 0, #00f 100%);background-image:linear-gradient(to right, #fff 0, #00f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ff0000ff', GradientType=1);border-bottom-left-radius:4px;border-top-left-radius:4px}
.pick-a-color-markup .blue-spectrum-1{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#00f), to(#000));background-image:-webkit-linear-gradient(left, color-stop(#00f 0), color-stop(#000 100%));background-image:-moz-linear-gradient(left, #00f 0, #000 100%);background-image:linear-gradient(to right, #00f 0, #000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000ff', endColorstr='#ff000000', GradientType=1);border-bottom-right-radius:4px;border-top-right-radius:4px}
.pick-a-color-markup .purple-spectrum-0{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#ff80ff), to(#80007f));background-image:-webkit-linear-gradient(left, color-stop(#ff80ff 0), color-stop(#80007f 100%));background-image:-moz-linear-gradient(left, #ff80ff 0, #80007f 100%);background-image:linear-gradient(to right, #ff80ff 0, #80007f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff80ff', endColorstr='#ff80007f', GradientType=1);border-bottom-left-radius:4px;border-top-left-radius:4px}
.pick-a-color-markup .purple-spectrum-1{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#80007f), to(#000));background-image:-webkit-linear-gradient(left, color-stop(#80007f 0), color-stop(#000 100%));background-image:-moz-linear-gradient(left, #80007f 0, #000 100%);background-image:linear-gradient(to right, #80007f 0, #000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff80007f', endColorstr='#ff000000', GradientType=1);border-bottom-right-radius:4px;border-top-right-radius:4px}
.pick-a-color-markup .saturation-spectrum-0{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#808080), to(#bf4040));background-image:-webkit-linear-gradient(left, color-stop(#808080 0), color-stop(#bf4040 100%));background-image:-moz-linear-gradient(left, #808080 0, #bf4040 100%);background-image:linear-gradient(to right, #808080 0, #bf4040 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff808080', endColorstr='#ffbf4040', GradientType=1);border-bottom-left-radius:4px;border-top-left-radius:4px;width:150px}@media screen and (max-width:991px){.pick-a-color-markup .saturation-spectrum-0{width:135px}}
.pick-a-color-markup .saturation-spectrum-1{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#bf4040), to(#f00));background-image:-webkit-linear-gradient(left, color-stop(#bf4040 0), color-stop(#f00 100%));background-image:-moz-linear-gradient(left, #bf4040 0, #f00 100%);background-image:linear-gradient(to right, #bf4040 0, #f00 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbf4040', endColorstr='#ffff0000', GradientType=1);border-bottom-right-radius:4px;border-top-right-radius:4px;width:150px}@media screen and (max-width:991px){.pick-a-color-markup .saturation-spectrum-1{width:135px}}
.pick-a-color-markup .hue-spectrum-0{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#f00), to(#ff0));background-image:-webkit-linear-gradient(left, color-stop(#f00 0), color-stop(#ff0 100%));background-image:-moz-linear-gradient(left, #f00 0, #ff0 100%);background-image:linear-gradient(to right, #f00 0, #ff0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff0000', endColorstr='#ffffff00', GradientType=1)}
.pick-a-color-markup .hue-spectrum-1{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#ff0), to(#0f0));background-image:-webkit-linear-gradient(left, color-stop(#ff0 0), color-stop(#0f0 100%));background-image:-moz-linear-gradient(left, #ff0 0, #0f0 100%);background-image:linear-gradient(to right, #ff0 0, #0f0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff00', endColorstr='#ff00ff00', GradientType=1)}
.pick-a-color-markup .hue-spectrum-2{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#0f0), to(#0ff));background-image:-webkit-linear-gradient(left, color-stop(#0f0 0), color-stop(#0ff 100%));background-image:-moz-linear-gradient(left, #0f0 0, #0ff 100%);background-image:linear-gradient(to right, #0f0 0, #0ff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff00', endColorstr='#ff00ffff', GradientType=1);left:-1px;position:relative}
.pick-a-color-markup .hue-spectrum-3{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#0ff), to(#00f));background-image:-webkit-linear-gradient(left, color-stop(#0ff 0), color-stop(#00f 100%));background-image:-moz-linear-gradient(left, #0ff 0, #00f 100%);background-image:linear-gradient(to right, #0ff 0, #00f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ffff', endColorstr='#ff0000ff', GradientType=1);left:-1px;position:relative}
.pick-a-color-markup .hue-spectrum-4{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#00f), to(#f0f));background-image:-webkit-linear-gradient(left, color-stop(#00f 0), color-stop(#f0f 100%));background-image:-moz-linear-gradient(left, #00f 0, #f0f 100%);background-image:linear-gradient(to right, #00f 0, #f0f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000ff', endColorstr='#ffff00ff', GradientType=1);left:-1px;position:relative}
.pick-a-color-markup .hue-spectrum-5{background-image:-webkit-gradient(linear, 0 top, 100% top, from(#f0f), to(#f00));background-image:-webkit-linear-gradient(left, color-stop(#f0f 0), color-stop(#f00 100%));background-image:-moz-linear-gradient(left, #f0f 0, #f00 100%);background-image:linear-gradient(to right, #f0f 0, #f00 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00ff', endColorstr='#ffff0000', GradientType=1);left:-2px;position:relative}
.pick-a-color-markup .highlight-band{border:1px solid #222;border-radius:2px;-webkit-box-shadow:1px 1px 1px #333;box-shadow:1px 1px 1px #333;height:19px;width:11px;display:inline-block;cursor:pointer;cursor:-webkit-grab;cursor:-moz-grab;position:absolute;top:-1px;left:94.5px;text-align:center}@media screen and (max-width:991px){.pick-a-color-markup .highlight-band{width:21px;left:69.5px;height:34px}}
.pick-a-color-markup .highlight-band-stripe{min-height:80%;min-width:1px;background-color:#000;opacity:0.40;margin:2px 1px;display:inline-block;-webkit-box-shadow:1px 0 2px 0 #fff;box-shadow:1px 0 2px 0 #fff}@media screen and (max-width:991px){.pick-a-color-markup .highlight-band-stripe{margin:4px 2px}}
.pick-a-color-markup .color-menu-tabs{padding:5px 3px 3px 10px;font-size:12px;color:#333;border-bottom:1px solid #ccc;margin-bottom:5px}.pick-a-color-markup .color-menu-tabs .tab{padding:4px 5px;margin:5px;border-left:1px solid #fff;border-right:1px solid #fff;cursor:pointer;background-color:#fff}.pick-a-color-markup .color-menu-tabs .tab:hover{padding-bottom:6px;border-top:1px solid #ccc;border-right:1px solid #ccc;border-left:1px solid #ccc;border-top-right-radius:4px;border-top-left-radius:4px}
.pick-a-color-markup .color-menu-tabs a{color:#333;text-decoration:none}
.pick-a-color-markup .color-menu-tabs .tab-active{border-bottom:3px solid #fff;padding-bottom:5px;border-top:1px solid #ccc;border-right:1px solid #ccc;border-left:1px solid #ccc;border-top-right-radius:4px;border-top-left-radius:4px}
.pick-a-color-markup .active-content{display:block}
.pick-a-color-markup .inactive-content{display:none}
.pick-a-color-markup .savedColors-content{padding:5px 15px;white-space:normal}.pick-a-color-markup .savedColors-content li.color-item>a{margin-left:7px;padding-left:8px;border-radius:4px}
.pick-a-color-markup .saved-color-col{position:relative;left:-15px;float:left;width:149px}@media screen and (max-width:991px){.pick-a-color-markup .saved-color-col{width:130px}}
.pick-a-color-markup .advanced-content ul{margin-top:10px}
.pick-a-color-markup .advanced-content li{padding:5px 15px 3px 15px;cursor:default;min-height:25px;height:50px;position:relative}@media screen and (max-width:991px){.pick-a-color-markup .advanced-content li{min-height:70px}}
.pick-a-color-markup .advanced-content .color-preview{height:50px;width:300px;float:left;margin:0px 0px 10px 0px;background-color:#f00;text-align:center}.pick-a-color-markup .advanced-content .color-preview .color-select.btn.advanced{margin-top:15px;display:none}@media screen and (max-width:991px){.pick-a-color-markup .advanced-content .color-preview .color-select.btn.advanced{display:inline;margin-top:7px}}
.pick-a-color-markup .advanced-content .color-preview:hover .color-select.btn.advanced{display:inline}
@media screen and (max-width:991px){.pick-a-color-markup .advanced-content .color-preview{width:270px;margin-left:-10px}}
.pick-a-color-markup .advanced-content .spectrum-hue{background-image:-webkit-gradient(linear, left top, right top, color-stop(0, #f00), color-stop(17%, #ff0), color-stop(34%, #0f0), color-stop(51%, #0ff), color-stop(68%, #00f), color-stop(85%, #f0f), color-stop(100%, #f00));background-image:-moz-linear-gradient(left center, #f00 0, #ff0 17%, #0f0 24%, #0ff 51%, #00f 68%, #f0f 85%, #f00 100%);background-image:-webkit-linear-gradient(left, #f00 0, #ff0 17%, #0f0 24%, #0ff 51%, #00f 68%, #f0f 85%, #f00 100%);background-image:-o-linear-gradient(left, #f00 0, #ff0 17%, #0f0 24%, #0ff 51%, #00f 68%, #f0f 85%, #f00 100%);background-image:linear-gradient(to right, #f00 0, #ff0 17%, #0f0 24%, #0ff 51%, #00f 68%, #f0f 85%, #f00 100%);background-repeat:repeat-x}.pick-a-color-markup .advanced-content .spectrum-hue .highlight-band{left:0px}
.pick-a-color-markup .advanced-content .spectrum-lightness{background-image:-webkit-gradient(linear, left top, right top, color-stop(0, #fff), color-stop(.5, #f00), color-stop(1, #000));background-image:-moz-linear-gradient(left center, #fff 0, #f00 50%, #000 100%);background-image:-webkit-linear-gradient(left, #fff 0, #f00 50%, #000 100%);background-image:-o-linear-gradient(left, #fff 0, #f00 50%, #000 100%);background-image:linear-gradient(to right, #fff 0, #f00 50%, #000 100%);background-repeat:repeat-x}
.pick-a-color-markup .advanced-content .spectrum-saturation{background-image:-webkit-gradient(linear, left top, right top, color-stop(0, #808080), color-stop(.5, #f00), color-stop(1, #f00));background-image:-moz-linear-gradient(left center, #808080 0, #f00 50%, #f00 100%);background-image:-webkit-linear-gradient(left, #808080 0, #f00 50%, #f00 100%);background-image:-o-linear-gradient(left, #808080 0, #f00 50%, #f00 100%);background-image:linear-gradient(to right, #808080 0, #f00 50%, #f00 100%);background-repeat:repeat-x}.pick-a-color-markup .advanced-content .spectrum-saturation .highlight-band{left:287px}@media screen and (max-width:991px){.pick-a-color-markup .advanced-content .spectrum-saturation .highlight-band{left:247px}}
.pick-a-color-markup .advanced-content .spectrum-lightness .highlight-band{left:143.5px}@media screen and (max-width:991px){.pick-a-color-markup .advanced-content .spectrum-lightness .highlight-band{left:123.5px}}
.pick-a-color-markup .advanced-content .lightness-text,.pick-a-color-markup .advanced-content .hue-text,.pick-a-color-markup .advanced-content .saturation-text,.pick-a-color-markup .advanced-content .preview-text{vertical-align:middle;text-align:center;display:block}
.pick-a-color-markup .advanced-content .color-box{left:15px;top:25px;width:300px}@media screen and (max-width:991px){.pick-a-color-markup .advanced-content .color-box{width:270px;left:10px}}
.pick-a-color-markup .advanced-content .preview-item{height:80px}
@-moz-document url-prefix(){@media screen and (max-width:991px){div.pick-a-color-markup .color-menu{left:0px}}}

View File

@@ -1,71 +0,0 @@
/*
* Stylesheet for the switch buttons.
*/
/* Box around the slider */
.switch {
position: relative;
display: inline-block;
width: 50px;
height: 24px;
}
.switch input {
display: none;
}
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #FF7800;
-webkit-transition: .4s;
transition: .4s;
}
.slider:before {
position: absolute;
content: "";
height: 16px;
width: 16px;
left: 4px;
bottom: 4px;
background-color: white;
-webkit-transition: .4s;
transition: .4s;
}
input:checked + .slider {
background-color: #B5E61D;
}
input:focus + .slider {
box-shadow: 0 0 1px #B5E61D;
}
input:checked + .slider:before {
-webkit-transform: translateX(26px);
-ms-transform: translateX(26px);
transform: translateX(26px);
}
/* Rounded sliders */
.slider.round {
border-radius: 34px;
}
.slider.round:before {
border-radius: 50%;
}
.switch label {
position: absolute;
left: 60px;
}
label {
font-weight: normal;
}

View File

@@ -1,378 +0,0 @@
{
"providers": {
"amazon": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(amazon)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"pf_rd_[a-zA-Z]=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"qid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sr=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"srs=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
".*(adsensecustomsearchads\\.com)\\/.*",
"pd_rd_[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"__mk_[a-zA-Z]{1,3}_[a-zA-Z]{1,3}=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"spIA=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ms3_c=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"[a-zA-Z%0-9]*ie=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"refRID=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"colid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"coliid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"[^a-zA-Z%0-9]adId=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"qualifier=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"_encoding=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"smid=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [
".*(amazon\\.).*(\\/gp).*\\/redirector.html\\/.*"
],
"redirections": []
},
"fls-na.amazon": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(fls-na\\.amazon)(\\.[a-zA-Z]{2,}).*",
"completeProvider": true,
"rules": [],
"exceptions": [],
"redirections": []
},
"google": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(google)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"ved=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"bi[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"gfe_[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ei=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"source=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"gs_[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"site=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"&\\.[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"oq=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"esrc=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"uact=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"cd=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"cad=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"gws_[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"atyp=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"vet=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"zx=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"_u=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"je=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"dcr=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ie=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sei=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sa=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"dpr=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"hl=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"btnG=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [
".*(mail\\.google\\.).*(\\/mail\\/u\\/0)\\/.*",
".*(mail\\.google\\.).*(\\/mail\\/u\\/0)\\/.*",
".*(google\\.).*(\\/upload)?(\\/drive)\\/.*",
".*(docs\\.google\\.).*\\/.*",
".*(accounts\\.google\\.).*",
".*(google\\.).*\\/searchbyimage\\?image_url=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
".*(hangouts\\.google\\.).*\\/webchat.*zx=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
".*(client-channel\\.google\\.).*\\/client-channel.*zx=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
".*(google\\.).*\\/complete\\/search\\?client=youtube.*gs_gbg=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
".*(google\\.).*\\/s\\?tbm=map.*gs_[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
".*(news\\.google\\.).*\\?hl=.*"
],
"redirections": [
".*google\\..*\\/.*url\\?.*url=([^&]*)"
]
},
"googlesyndication": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(googlesyndication)(\\.[a-zA-Z]{2,}).*",
"completeProvider": true,
"rules": [],
"exceptions": [],
"redirections": []
},
"doubleclick": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(doubleclick)(\\.[a-zA-Z]{2,}).*",
"completeProvider": true,
"rules": [],
"exceptions": [],
"redirections": [
".*doubleclick\\..*\\/.*tag_for_child_directed_treatment=;%3F(.*)"
]
},
"globalRules": {
"urlPattern": ".*",
"completeProvider": false,
"rules": [
"utm_[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ga_source=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ga_medium=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ga_term=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ga_content=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ga_campaign=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ga_place=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"yclid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"_openstat=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"fb_action_ids=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"fb_action_types=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"fb_source=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"fb_ref=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"action_object_map=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"action_type_map=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"action_ref_map=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"gs_l=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"mkt_tok=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"hmb_campaign=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"hmb_medium=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"hmb_source=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"[\\?|&]ref[\\_]?=[^\\/|\\?|&]*",
"\\?$",
"\\&$"
],
"exceptions": [
".*([\\.]?matrix\\.org)(\\/_matrix)\\/.*",
".*([\\.]?prismic\\.io).*",
".*([\\.]?gitlab\\.com).*",
".*([\\.]?gcsip\\.com).*[\\?|&]ref[\\_]?=[^\\/|\\?|&]*.*",
".*([\\.]?cloudflare\\.com).*"
],
"redirections": []
},
"adtech": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(adtech)(\\.[a-zA-Z]{2,}).*",
"completeProvider": true,
"rules": [],
"exceptions": [],
"redirections": []
},
"contentpass.net": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(contentpass\\.net).*",
"completeProvider": true,
"rules": [],
"exceptions": [],
"redirections": []
},
"bf-ad": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(bf-ad)(\\.[a-zA-Z]{2,}).*",
"completeProvider": true,
"rules": [],
"exceptions": [],
"redirections": []
},
"amazon-adsystem": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(amazon-adsystem)(\\.[a-zA-Z]{2,}).*",
"completeProvider": true,
"rules": [],
"exceptions": [],
"redirections": []
},
"adsensecustomsearchads": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(adsensecustomsearchads)(\\.[a-zA-Z]{2,}).*",
"completeProvider": true,
"rules": [],
"exceptions": [],
"redirections": []
},
"youtube": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(youtube)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"feature=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"gclid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"kw=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"facebook": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(facebook)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"hc_location=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ref=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [
".*(facebook\\.)\\w{2,}.*(\\/plugins\\/).*"
],
"redirections": []
},
"twitter": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(twitter)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"(ref_)?src=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"reddit": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(reddit)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [],
"exceptions": [],
"redirections": [
"out\\.reddit\\.\\w{2,}\\/.*url=([^&]*)"
]
}
,
"netflix": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(netflix)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"trackId=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"tctx=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"jb[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"techcrunch": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?([\\.]?techcrunch\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [
"ncid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sr=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sr_share=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"bing": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(bing)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"cvid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"form=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sk=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sp=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sc=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"qs=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"qp=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"tweakers": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(tweakers\\.net)(.*\\?.*)",
"completeProvider": false,
"rules": [
"nb=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"u=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"twitch": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(twitch)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"tt_medium=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"tt_content=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"vivaldi": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(vivaldi\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [
"pk_campaign=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"pk_kwd=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"indeed": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(indeed\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [
"from=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"alid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"[a-zA-Z]*tk=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"hhdotru": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(hh\\.ru)(.*\\?.*)",
"completeProvider": false,
"rules": [
"vss=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"t=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"swnt=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"grpos=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ptl=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"stl=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"exp=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"plim=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"ebay": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(ebay)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"_trkparms=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"_trksid=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"cnet": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(cnet\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [
"ftag=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"imdb.com": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(imdb\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [
"ref_=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"pf_rd_[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"govdelivery.com": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(govdelivery\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [],
"exceptions": [],
"redirections": [
".*links\\.govdelivery\\.com.*\\/track\\?.*(http:\\/\\/.*)",
".*links\\.govdelivery\\.com.*\\/track\\?.*(https:\\/\\/.*)"
]
},
"walmart.com": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(walmart\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [
"u1=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ath[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"net-parade.it": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(net\\-parade\\.it)(.*\\?.*)",
"completeProvider": false,
"rules": [
"pl=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"prvnizpravy.cz": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(prvnizpravy\\.cz)(.*\\?.*)",
"completeProvider": false,
"rules": [
"xid=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
}
}
}

View File

@@ -1 +0,0 @@
ebf585f37a97c528de8465c017db1280283db472c5e66dcf0181821c57434143

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,8 +0,0 @@
/*!
DataTables Bootstrap 3 integration
©2011-2015 SpryMedia Ltd - datatables.net/license
*/
(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,d){a||(a=window);if(!d||!d.fn.dataTable)d=require("datatables.net")(a,d).$;return b(d,a,a.document)}:b(jQuery,window,document)})(function(b,a,d,m){var f=b.fn.dataTable;b.extend(!0,f.defaults,{dom:"<'row'<'col-sm-6'l><'col-sm-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-5'i><'col-sm-7'p>>",renderer:"bootstrap"});b.extend(f.ext.classes,
{sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm",sProcessing:"dataTables_processing panel panel-default"});f.ext.renderer.pageButton.bootstrap=function(a,h,r,s,j,n){var o=new f.Api(a),t=a.oClasses,k=a.oLanguage.oPaginate,u=a.oLanguage.oAria.paginate||{},e,g,p=0,q=function(d,f){var l,h,i,c,m=function(a){a.preventDefault();!b(a.currentTarget).hasClass("disabled")&&o.page()!=a.data.action&&o.page(a.data.action).draw("page")};
l=0;for(h=f.length;l<h;l++)if(c=f[l],b.isArray(c))q(d,c);else{g=e="";switch(c){case "ellipsis":e="&#x2026;";g="disabled";break;case "first":e=k.sFirst;g=c+(0<j?"":" disabled");break;case "previous":e=k.sPrevious;g=c+(0<j?"":" disabled");break;case "next":e=k.sNext;g=c+(j<n-1?"":" disabled");break;case "last":e=k.sLast;g=c+(j<n-1?"":" disabled");break;default:e=c+1,g=j===c?"active":""}e&&(i=b("<li>",{"class":t.sPageButton+" "+g,id:0===r&&"string"===typeof c?a.sTableId+"_"+c:null}).append(b("<a>",{href:"#",
"aria-controls":a.sTableId,"aria-label":u[c],"data-dt-idx":p,tabindex:a.iTabIndex}).html(e)).appendTo(d),a.oApi._fnBindAction(i,{action:c},m),p++)}},i;try{i=b(h).find(d.activeElement).data("dt-idx")}catch(v){}q(b(h).empty().html('<ul class="pagination"/>').children("ul"),s);i!==m&&b(h).find("[data-dt-idx="+i+"]").focus()};return f});

View File

@@ -1,426 +0,0 @@
/**
* Albanian translation
* @name Albanian
* @anchor Albanian
* @author Besnik Belegu
*/
/**
* Afrikaans translation
* @name Afrikaans
* @anchor Afrikaans
* @author <a href="http://www.ajoft.com">Ajoft Software</a>
*/
/**
* Welsh translation
* @name Welsh
* @anchor Welsh
* @author <a href="https://eveoh.nl/">Marco Krikke</a>
*/
/**
* Vietnamese translation
* @name Vietnamese
* @anchor Vietnamese
* @author Trinh Phuoc Thai
*/
/**
* Uzbek translation
* @name Uzbek
* @anchor Uzbek
* @author <a href="http://davlat.info">Farkhod Dadajanov</a>
*/
/**
* Urdu translation
* @name Urdu
* @anchor Urdu
* @author Zafar Subzwari
*/
/**
* Ukranian translation
* @name Ukranian
* @anchor Ukranian
* @author <i>antyrat</i>
*/
/**
* Turkish translation
* @name Turkish
* @anchor Turkish
* @author Umit Gorkem & Erdal TAŞKESEN
*/
/**
* Thai translation
* @name Thai
* @anchor Thai
* @author Thanva Thonglor , <a href="http://auycro.github.io/about/">Gumpanat Keardkeawfa</a>
*/
/**
* Telugu translation (te, te-IN)
* @name Telugu
* @anchor Telugu
* @author <a href="https://in.linkedin.com/in/srinivas-rathikrindi-0405973a">Srinivas Rathikrindi</a>
**/
/**
* Tamil translation
* @name Tamil
* @anchor Tamil
* @author Sam Arul Raj
*/
/**
* Swedish translation
* @name Swedish
* @anchor Swedish
* @author <a href="http://www.kmmtiming.se/">Kristoffer Karlström</a>
*/
/**
* Swahili translation
* @name Swahili
* @anchor Swahili
* @author <a href="http://zoop.co.tz/schoolpesa/">Roy Owino</a>
*/
/**
* Spanish translation
* @name Spanish
* @anchor Spanish
* @author Giovanni Ariza, Aristobulo Gomez and Roberto Poo
*/
/**
* Slovenian translation
* @name Slovenian
* @anchor Slovenian
* @author Marko Kroflic, Blaž Brenčič and Andrej Florjančič
*/
/**
* Slovak translation
* @name Slovak
* @anchor Slovak
* @author <a href="https://github.com/dlugos">Ivan Dlugoš</a>
* @author (original translation) <a href="http://miskerik.com/">Maroš Miškerik</a>
*/
/**
* Sinhala translation
* @name Sinhala
* @anchor Sinhala
* @author Isuru Sampath Ratnayake
*/
/**
* Serbian translation (Latin alphabet)
* @name Serbian (Latin)
* @anchor Serbian (Latin)
* @author <a href="http://mnovakovic.byteout.com">Marko Novakovic</a>
*/
/**
* Russian translation
* @name Russian
* @anchor Russian
* @author Tjoma
* @autor aspyatkin
*/
/**
* Romanian translation
* @name Romanian
* @anchor Romanian
* @author <a href="http://www.jurubita.ro/">Alexandru Jurubita</a>
*/
/**
* Portuguese Brasil translation
* @name Portuguese Brasil
* @anchor Portuguese Brasil
* @author Julio Cesar Viana Palma
*/
/**
* Portuguese translation
* @name Portuguese
* @anchor Portuguese
* @author Nuno Felicio
*/
/**
* Polish translation
* @name Polish
* @anchor Polish
* @author Tomasz Kowalski
* @author Michał Grzelak
*/
/**
* Persian translation
* @name Persian
* @anchor Persian
* @author <a href="http://www.chavoshi.com/">Ehsan Chavoshi</a>
* @author <a href="http://www.robowiki.ir/">Mohammad Babazadeh</a>
*/
/**
* Pashto translation
* @name Pashto
* @anchor Pashto
* @author <a href="http://mbrig.com/">MBrig | Muhammad Nasir Rahimi</a>
*/
/**
* Norwegian Nynorsk translation
* @name Norwegian-Nynorsk
* @anchor Norwegian-Nynorsk
* @author Andreas-Johann Østerdal Ulvestad
*/
/**
* Norwegian Bokmål translation
* @name Norwegian-Bokmal
* @anchor Norwegian-Bokmal
* @author Petter Ekrann
* @author Vegard Johannessen
*/
/**
* Nepali
* @name Nepali
* @anchor Nepali
* @author Bishwo Adhikari
*/
/**
* Mongolian - Монгол хэлний орчуулга
* @name Mongolian
* @anchor Mongolian
* @author <a href="http://www.Batmandakh.com/">Batmandakh Erdenebileg</a>
*/
/**
* Malay translation
* @name Malay
* @anchor Malay
* @author Mohamad Zharif
*/
/**
* Macedonian translation
* @name Macedonian
* @anchor Macedonian
* @author Bojan Petkovski
*/
/**
* Lithuanian translation
* @name Lithuanian
* @anchor Lithuanian
* @author <a href="http://www.kurdingopinigai.lt">Kęstutis Morkūnas</a>
* @author Algirdas Brazas
*/
/**
* Latvian translation
* @name Latvian
* @anchor Latvian
* @author Oskars Podans, Ruslans Jermakovičs and Edgars
*/
/**
* @name Kyrgyz
* @anchor Kyrgyz
* @author <a href="https://github.com/nursultan92/">Nursultan Turdaliev</a> and _tynar_
*/
/**
* Korean translation
* @name Korean
* @anchor Korean
* @author WonGoo Lee
*/
/**
* Kazakh translation
* @name Kazakh
* @anchor Kazakh
* @author <a href="https://github.com/talgautb">Talgat Uspanov</a>
*/
/**
* Japanese translation
* @name Japanese
* @anchor Japanese
* @author <i>yusuke</i> and <a href="https://github.com/wiraqutra">Seigo ISHINO</a>
*/
/**
* Italian translation
* @name Italian
* @anchor Italian
* @author Nicola Zecchin & Giulio Quaresima
*/
/**
* Irish translation
* @name Irish
* @anchor Irish
* @author <a href="http://letsbefamous.com">Lets Be Famous Journal</a>
*/
/**
* Indonesian translation
* @name Indonesian
* @anchor Indonesian
* @author Landung Wahana
*/
/**
* Indonesian translation
* @name Indonesian
* @anchor Indonesian
* @author Cipto Hadi
*/
/**
* Icelandic translation
* @name Icelandic
* @anchor Icelandic
* @author Finnur Kolbeinsson
*/
/**
* Hungarian translation
* @name Hungarian
* @anchor Hungarian
* @author <a href="http://www.maschek.hu">Adam Maschek</a> and Lajos Cseppentő
*/
/**
* Hindi translation
* @name Hindi
* @anchor Hindi
* @author <a href="http://outshinesolutions.com">Outshine Solutions</a>
*/
/**
* Hebrew translation
* @name Hebrew
* @anchor Hebrew
* @author <a href="http://ww3.co.il/">Neil Osman (WW3)</a>
*/
/**
* Gujarati translation
* @name Gujarati
* @anchor Gujarati
* @author <a href="http://www.apoto.com/">Apoto</a>
*/
/**
* Greek translation
* @name Greek
* @anchor Greek
* @author Abraam Ziogas
* @author Leonidas Arvanitis
*/
/**
* German translation
* @name German
* @anchor German
* @author Joerg Holz
* @author DJmRek - Markus Bergt
* @author OSWorX https://osworx.net
*/
/**
* Georgian translation
* @name Georgian
* @anchor Georgian
* @author Mikheil Nadareishvili, updated by <a href="http://www.brunjadze.xyz/">Mirza Brunjadze</a>
*/
/**
* Galician translation
* @name Galician
* @anchor Galician
* @author <i>Emilio</i>
* @author <i>Xosé Antonio Rubal López</i>
*/
/**
* French translation
* @name French
* @anchor French
* @author
*/
/**
* Finnish translation
* @name Finnish
* @anchor Finnish
* @author Seppo Äyräväinen
* @author Viktors Cvetkovs
* @author <a href="https://ironlions.fi">Niko Granö</a>
*/
/**
* Filipino translation
* @name Filipino
* @anchor Filipino
* @author <a href="http://citi360.com/">Citi360</a>
*/
/**
* Estonian translation
* @name Estonian
* @anchor Estonian
* @author <a href="http://www.arts9.com/">Janek Todoruk</a>
*/
/**
* English - this is the default DataTables ships with
* @name English
* @anchor English
* @author <a href="http://www.sprymedia.co.uk/">Allan Jardine</a>
*/
/**
* Dutch translation
* @name Dutch
* @anchor Dutch
* @author <a href="http://www.blikgooien.nl/">Erwin Kerk</a> and <i>ashwin</i>
*/
/**
* Danish translation
* @name Danish
* @anchor Danish
* @author <a href="http://www.kor.dk/">Werner Knudsen</a>
*/
/**
* Czech translation
* @name Czech
* @anchor Czech
* @author <a href="http://blog.magerio.cz/">Magerio</a>
*/
/**
* Croatian translation
* @name Croatian
* @anchor Croatian
* @author Predrag Mušić and _hrvoj3e_
*/
/**
* Chinese (traditional) translation
* @name Chinese (traditional)
* @anchor Chinese (traditional)
* @author <a href="https://gimmerank.com/">GimmeRank Affiliate</a>
* @author <a href="https://github.com/PeterDaveHello">Peter Dave Hello</a>
*/
/**
* Catalan translation
* @name Catalan
* @anchor Catalan
* @author Sergi
*/
/**
* Amharic translation
* @name Amharic
* @anchor Amharic
* @author veduket
*/
/**
* Arabic translation
* @name Arabic
* @anchor Arabic
* @author Ossama Khayat
*/
/**
* Armenian - translation
* @name Armenian
* @anchor Armenian
* @author <a href="http://www.voznisoft.com/">Levon Levonyan</a>
*/
/**
* Azerbaijan translation
* @name Azerbaijan
* @anchor Azerbaijan
* @author H.Huseyn
*/
/**
* Bangla translation
* @name Bangla
* @anchor Bangla
* @author <a href="http://khaledcse06.wordpress.com">Md. Khaled Ben Islam</a>
*/
/**
* Basque translation
* @name Basque
* @anchor Basque
* @author <a href="https://github.com/xabikip/">Xabi Pico</a>
*/
/**
* Belarusian translation
* @name Belarusian
* @anchor Belarusian
* @author vkachurka
*/
/**
* Bulgarian translation
* @name Bulgarian
* @anchor Bulgarian
* @author Rostislav Stoyanov, Oliwier Thomas
*/

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "Geen data beskikbaar in tabel",
"sInfo": "uitstalling _START_ to _END_ of _TOTAL_ inskrywings",
"sInfoEmpty": "uitstalling 0 to 0 of 0 inskrywings",
"sInfoFiltered": "(gefiltreer uit _MAX_ totaal inskrywings)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "uitstal _MENU_ inskrywings",
"sLoadingRecords": "laai...",
"sProcessing": "verwerking...",
"sSearch": "soektog:",
"sZeroRecords": "Geen treffers gevind",
"oPaginate": {
"sFirst": "eerste",
"sLast": "laaste",
"sNext": "volgende",
"sPrevious": "vorige"
},
"oAria": {
"sSortAscending": ": aktiveer kolom stygende te sorteer",
"sSortDescending": ": aktiveer kolom orde te sorteer"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "ባዶ ሰንጠረዥ",
"sInfo": "ከጠቅላላው _TOTAL_ ዝርዝሮች ውስጥ ከ _START_ እስከ _END_ ያሉት ዝርዝር",
"sInfoEmpty": "ከጠቅላላው 0 ዝርዝሮች ውስጥ ከ 0 እስከ 0 ያሉት ዝርዝር",
"sInfoFiltered": "(ከጠቅላላው _MAX_ የተመረጡ ዝርዝሮች)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "የዝርዝሮች ብዛት _MENU_",
"sLoadingRecords": "በማቅረብ ላይ...",
"sProcessing": "በማቀናበር ላይ...",
"sSearch": "ፈልግ:",
"sZeroRecords": "ከሚፈለገው ጋር የሚሚሳሰል ዝርዝር አልተገኘም",
"oPaginate": {
"sFirst": "መጀመሪያ",
"sLast": "መጨረሻ",
"sNext": "ቀጣዩ",
"sPrevious": "የበፊቱ"
},
"oAria": {
"sSortAscending": ": ከመጀመሪያ ወደ መጨረሻ(ወጪ) አደራደር",
"sSortDescending": ": ከመጨረሻ ወደ መጀመሪያ(ወራጅ) አደራደር"
}
}

View File

@@ -1,17 +0,0 @@
{
"sProcessing": "جارٍ التحميل...",
"sLengthMenu": "أظهر _MENU_ مدخلات",
"sZeroRecords": "لم يعثر على أية سجلات",
"sInfo": "إظهار _START_ إلى _END_ من أصل _TOTAL_ مدخل",
"sInfoEmpty": "يعرض 0 إلى 0 من أصل 0 سجل",
"sInfoFiltered": "(منتقاة من مجموع _MAX_ مُدخل)",
"sInfoPostFix": "",
"sSearch": "ابحث:",
"sUrl": "",
"oPaginate": {
"sFirst": "الأول",
"sPrevious": "السابق",
"sNext": "التالي",
"sLast": "الأخير"
}
}

View File

@@ -1,21 +0,0 @@
{
"sProcessing": "Пачакайце...",
"sLengthMenu": "Паказваць _MENU_ запісаў",
"sZeroRecords": "Запісы адсутнічаюць.",
"sInfo": "Запісы з _START_ па _END_ з _TOTAL_ запісаў",
"sInfoEmpty": "Запісы з 0 па 0 з 0 запісаў",
"sInfoFiltered": "(адфільтравана з _MAX_ запісаў)",
"sInfoPostFix": "",
"sSearch": "Пошук:",
"sUrl": "",
"oPaginate": {
"sFirst": "Першая",
"sPrevious": "Папярэдняя",
"sNext": "Наступная",
"sLast": "Апошняя"
},
"oAria": {
"sSortAscending": ": актываваць для сартавання слупка па ўзрастанні",
"sSortDescending": ": актываваць для сартавання слупка па змяншэнні"
}
}

View File

@@ -1,17 +0,0 @@
{
"sProcessing": "Обработка на резултатите...",
"sLengthMenu": "Показване на _MENU_ резултата",
"sZeroRecords": "Няма намерени резултати",
"sInfo": "Показване на резултати от _START_ до _END_ от общо _TOTAL_",
"sInfoEmpty": "Показване на резултати от 0 до 0 от общо 0",
"sInfoFiltered": "(филтрирани от общо _MAX_ резултата)",
"sInfoPostFix": "",
"sSearch": "Търсене:",
"sUrl": "",
"oPaginate": {
"sFirst": "Първа",
"sPrevious": "Предишна",
"sNext": "Следваща",
"sLast": "Последна"
}
}

View File

@@ -1,17 +0,0 @@
{
"sProcessing": "Processant...",
"sLengthMenu": "Mostra _MENU_ registres",
"sZeroRecords": "No s'han trobat registres.",
"sInfo": "Mostrant de _START_ a _END_ de _TOTAL_ registres",
"sInfoEmpty": "Mostrant de 0 a 0 de 0 registres",
"sInfoFiltered": "(filtrat de _MAX_ total registres)",
"sInfoPostFix": "",
"sSearch": "Filtrar:",
"sUrl": "",
"oPaginate": {
"sFirst": "Primer",
"sPrevious": "Anterior",
"sNext": "Següent",
"sLast": "Últim"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "Tabulka neobsahuje žádná data",
"sInfo": "Zobrazuji _START_ až _END_ z celkem _TOTAL_ záznamů",
"sInfoEmpty": "Zobrazuji 0 až 0 z 0 záznamů",
"sInfoFiltered": "(filtrováno z celkem _MAX_ záznamů)",
"sInfoPostFix": "",
"sInfoThousands": " ",
"sLengthMenu": "Zobraz záznamů _MENU_",
"sLoadingRecords": "Načítám...",
"sProcessing": "Provádím...",
"sSearch": "Hledat:",
"sZeroRecords": "Žádné záznamy nebyly nalezeny",
"oPaginate": {
"sFirst": "První",
"sLast": "Poslední",
"sNext": "Další",
"sPrevious": "Předchozí"
},
"oAria": {
"sSortAscending": ": aktivujte pro řazení sloupce vzestupně",
"sSortDescending": ": aktivujte pro řazení sloupce sestupně"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "Dim data ar gael yn y tabl",
"sInfo": "Dangos _START_ i _END_ o _TOTAL_ cofnod",
"sInfoEmpty": "Dangos 0 i 0 o 0 cofnod",
"sInfoFiltered": "(wedi hidlo o gyfanswm o _MAX_ cofnod)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "Dangos _MENU_ cofnod",
"sLoadingRecords": "Wrthi'n llwytho...",
"sProcessing": "Wrthi'n prosesu...",
"sSearch": "Chwilio:",
"sZeroRecords": "Heb ddod o hyd i gofnodion sy'n cyfateb",
"oPaginate": {
"sFirst": "Cyntaf",
"sLast": "Olaf",
"sNext": "Nesaf",
"sPrevious": "Blaenorol"
},
"oAria": {
"sSortAscending": ": rhoi ar waith i drefnu colofnau o'r lleiaf i'r mwyaf",
"sSortDescending": ": rhoi ar waith i drefnu colofnau o'r mwyaf i'r lleiaf"
}
}

View File

@@ -1,17 +0,0 @@
{
"sProcessing": "Henter...",
"sLengthMenu": "Vis _MENU_ linjer",
"sZeroRecords": "Ingen linjer matcher s&oslash;gningen",
"sInfo": "Viser _START_ til _END_ af _TOTAL_ linjer",
"sInfoEmpty": "Viser 0 til 0 af 0 linjer",
"sInfoFiltered": "(filtreret fra _MAX_ linjer)",
"sInfoPostFix": "",
"sSearch": "S&oslash;g:",
"sUrl": "",
"oPaginate": {
"sFirst": "F&oslash;rste",
"sPrevious": "Forrige",
"sNext": "N&aelig;ste",
"sLast": "Sidste"
}
}

View File

@@ -1,41 +0,0 @@
{
"sEmptyTable": "Keine Daten in der Tabelle vorhanden",
"sInfo": "_START_ bis _END_ von _TOTAL_ Einträgen",
"sInfoEmpty": "Keine Daten vorhanden",
"sInfoFiltered": "(gefiltert von _MAX_ Einträgen)",
"sInfoPostFix": "",
"sInfoThousands": ".",
"sLengthMenu": "_MENU_ Einträge anzeigen",
"sLoadingRecords": "Wird geladen ..",
"sProcessing": "Bitte warten ..",
"sSearch": "Suchen",
"sZeroRecords": "Keine Einträge vorhanden",
"oPaginate": {
"sFirst": "Erste",
"sPrevious": "Zurück",
"sNext": "Nächste",
"sLast": "Letzte"
},
"oAria": {
"sSortAscending": ": aktivieren, um Spalte aufsteigend zu sortieren",
"sSortDescending": ": aktivieren, um Spalte absteigend zu sortieren"
},
"select": {
"rows": {
"_": "%d Zeilen ausgewählt",
"0": "",
"1": "1 Zeile ausgewählt"
}
},
"buttons": {
"print": "Drucken",
"colvis": "Spalten",
"copy": "Kopieren",
"copyTitle": "In Zwischenablage kopieren",
"copyKeys": "Taste <i>ctrl</i> oder <i>\u2318</i> + <i>C</i> um Tabelle<br>in Zwischenspeicher zu kopieren.<br><br>Um abzubrechen die Nachricht anklicken oder Escape drücken.",
"copySuccess": {
"_": "%d Spalten kopiert",
"1": "1 Spalte kopiert"
}
}
}

View File

@@ -1,27 +0,0 @@
{
"sDecimal": ",",
"sEmptyTable": "Δεν υπάρχουν δεδομένα στον πίνακα",
"sInfo": "Εμφανίζονται _START_ έως _END_ από _TOTAL_ εγγραφές",
"sInfoEmpty": "Εμφανίζονται 0 έως 0 από 0 εγγραφές",
"sInfoFiltered": "(φιλτραρισμένες από _MAX_ συνολικά εγγραφές)",
"sInfoPostFix": "",
"sInfoThousands": ".",
"sLengthMenu": "Δείξε _MENU_ εγγραφές",
"sLoadingRecords": "Φόρτωση...",
"sProcessing": "Επεξεργασία...",
"sSearch": "Αναζήτηση:",
"sSearchPlaceholder": "Αναζήτηση",
"sThousands": ".",
"sUrl": "",
"sZeroRecords": "Δεν βρέθηκαν εγγραφές που να ταιριάζουν",
"oPaginate": {
"sFirst": "Πρώτη",
"sPrevious": "Προηγούμενη",
"sNext": "Επόμενη",
"sLast": "Τελευταία"
},
"oAria": {
"sSortAscending": ": ενεργοποιήστε για αύξουσα ταξινόμηση της στήλης",
"sSortDescending": ": ενεργοποιήστε για φθίνουσα ταξινόμηση της στήλης"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "No data available in table",
"sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
"sInfoEmpty": "Showing 0 to 0 of 0 entries",
"sInfoFiltered": "(filtered from _MAX_ total entries)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "Show _MENU_ entries",
"sLoadingRecords": "Loading...",
"sProcessing": "Processing...",
"sSearch": "Search:",
"sZeroRecords": "No matching records found",
"oPaginate": {
"sFirst": "First",
"sLast": "Last",
"sNext": "Next",
"sPrevious": "Previous"
},
"oAria": {
"sSortAscending": ": activate to sort column ascending",
"sSortDescending": ": activate to sort column descending"
}
}

View File

@@ -1,24 +0,0 @@
{
"sProcessing": "Procesando...",
"sLengthMenu": "Mostrar _MENU_ registros",
"sZeroRecords": "No se encontraron resultados",
"sEmptyTable": "Ningún dato disponible en esta tabla",
"sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
"sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros",
"sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
"sInfoPostFix": "",
"sSearch": "Buscar:",
"sUrl": "",
"sInfoThousands": ",",
"sLoadingRecords": "Cargando...",
"oPaginate": {
"sFirst": "Primero",
"sLast": "Último",
"sNext": "Siguiente",
"sPrevious": "Anterior"
},
"oAria": {
"sSortAscending": ": Activar para ordenar la columna de manera ascendente",
"sSortDescending": ": Activar para ordenar la columna de manera descendente"
}
}

View File

@@ -1,16 +0,0 @@
{
"sProcessing": "Palun oodake, koostan kuvamiseks nimekirja!",
"sLengthMenu": "N&auml;ita kirjeid _MENU_ kaupa",
"sZeroRecords": "Otsitavat vastet ei leitud.",
"sInfo": "Kuvatud: _TOTAL_ kirjet (_START_-_END_)",
"sInfoEmpty": "Otsinguvasteid ei leitud",
"sInfoFiltered": " - filteeritud _MAX_ kirje seast.",
"sInfoPostFix": "K&otilde;ik kuvatud kirjed p&otilde;hinevad reaalsetel tulemustel.",
"sSearch": "Otsi k&otilde;ikide tulemuste seast:",
"oPaginate": {
"sFirst": "Algus",
"sPrevious": "Eelmine",
"sNext": "J&auml;rgmine",
"sLast": "Viimane"
}
}

View File

@@ -1,24 +0,0 @@
{
"sProcessing": "Prozesatzen...",
"sLengthMenu": "Erakutsi _MENU_ erregistro",
"sZeroRecords": "Ez da emaitzarik aurkitu",
"sEmptyTable": "Taula hontan ez dago inongo datu erabilgarririk",
"sInfo": "_START_ -etik _END_ -erako erregistroak erakusten, guztira _TOTAL_ erregistro",
"sInfoEmpty": "0tik 0rako erregistroak erakusten, guztira 0 erregistro",
"sInfoFiltered": "(guztira _MAX_ erregistro iragazten)",
"sInfoPostFix": "",
"sSearch": "Aurkitu:",
"sUrl": "",
"sInfoThousands": ",",
"sLoadingRecords": "Abiarazten...",
"oPaginate": {
"sFirst": "Lehena",
"sLast": "Azkena",
"sNext": "Hurrengoa",
"sPrevious": "Aurrekoa"
},
"oAria": {
"sSortAscending": ": Zutabea goranzko eran ordenatzeko aktibatu ",
"sSortDescending": ": Zutabea beheranzko eran ordenatzeko aktibatu"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "هیچ داده ای در جدول وجود ندارد",
"sInfo": "نمایش _START_ تا _END_ از _TOTAL_ رکورد",
"sInfoEmpty": "نمایش 0 تا 0 از 0 رکورد",
"sInfoFiltered": "(فیلتر شده از _MAX_ رکورد)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "نمایش _MENU_ رکورد",
"sLoadingRecords": "در حال بارگزاری...",
"sProcessing": "در حال پردازش...",
"sSearch": "جستجو:",
"sZeroRecords": "رکوردی با این مشخصات پیدا نشد",
"oPaginate": {
"sFirst": "ابتدا",
"sLast": "انتها",
"sNext": "بعدی",
"sPrevious": "قبلی"
},
"oAria": {
"sSortAscending": ": فعال سازی نمایش به صورت صعودی",
"sSortDescending": ": فعال سازی نمایش به صورت نزولی"
}
}

View File

@@ -1,39 +0,0 @@
{
"sEmptyTable": "Ei näytettäviä tuloksia.",
"sInfo": "Näytetään rivit _START_ - _END_ (yhteensä _TOTAL_ )",
"sInfoEmpty": "Näytetään 0 - 0 (yhteensä 0)",
"sInfoFiltered": "(suodatettu _MAX_ tuloksen joukosta)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "Näytä kerralla _MENU_ riviä",
"sLoadingRecords": "Ladataan...",
"sProcessing": "Hetkinen...",
"sSearch": "Etsi:",
"sZeroRecords": "Tietoja ei löytynyt",
"oPaginate": {
"sFirst": "Ensimmäinen",
"sLast": "Viimeinen",
"sNext": "Seuraava",
"sPrevious": "Edellinen"
},
"oAria": {
"sSortAscending": ": lajittele sarake nousevasti",
"sSortDescending": ": lajittele sarake laskevasti"
},
"select": {
"rows": {
"_": "Valittuna %d riviä",
"0": "Klikkaa riviä valitaksesi sen",
"1": "Valittuna vain yksi rivi"
}
},
"buttons": {
"copy": "Kopioi",
"copySuccess": {
"1": "Yksi rivi kopioitu leikepöydälle",
"_": "%d riviä kopioitu leikepöydälle"
},
"copyTitle": "Kopioi leikepöydälle",
"copyKeys": "Paina <i>ctrl</i> tai <i>\u2318</i> + <i>C</i> kopioidaksesi taulukon arvot<br> leikepöydälle. <br><br>Peruuttaaksesi klikkaa tähän tai Esc."
}
}

View File

@@ -1,29 +0,0 @@
{
"sProcessing": "Traitement en cours...",
"sSearch": "Rechercher&nbsp;:",
"sLengthMenu": "Afficher _MENU_ &eacute;l&eacute;ments",
"sInfo": "Affichage de l'&eacute;l&eacute;ment _START_ &agrave; _END_ sur _TOTAL_ &eacute;l&eacute;ments",
"sInfoEmpty": "Affichage de l'&eacute;l&eacute;ment 0 &agrave; 0 sur 0 &eacute;l&eacute;ment",
"sInfoFiltered": "(filtr&eacute; de _MAX_ &eacute;l&eacute;ments au total)",
"sInfoPostFix": "",
"sLoadingRecords": "Chargement en cours...",
"sZeroRecords": "Aucun &eacute;l&eacute;ment &agrave; afficher",
"sEmptyTable": "Aucune donn&eacute;e disponible dans le tableau",
"oPaginate": {
"sFirst": "Premier",
"sPrevious": "Pr&eacute;c&eacute;dent",
"sNext": "Suivant",
"sLast": "Dernier"
},
"oAria": {
"sSortAscending": ": activer pour trier la colonne par ordre croissant",
"sSortDescending": ": activer pour trier la colonne par ordre d&eacute;croissant"
},
"select": {
"rows": {
_: "%d lignes séléctionnées",
0: "Aucune ligne séléctionnée",
1: "1 ligne séléctionnée"
}
}
}

View File

@@ -1,24 +0,0 @@
{
"sProcessing": "Procesando...",
"sLengthMenu": "Mostrar _MENU_ rexistros",
"sZeroRecords": "Non se atoparon resultados",
"sEmptyTable": "Ningún dato dispoñible nesta táboa",
"sInfo": "Mostrando rexistros do _START_ ao _END_ dun total de _TOTAL_ rexistros",
"sInfoEmpty": "Mostrando rexistros do 0 ao 0 dun total de 0 rexistros",
"sInfoFiltered": "(filtrado dun total de _MAX_ rexistros)",
"sInfoPostFix": "",
"sSearch": "Buscar:",
"sUrl": "",
"sInfoThousands": ",",
"sLoadingRecords": "Cargando...",
"oPaginate": {
"sFirst": "Primeiro",
"sLast": "Último",
"sNext": "Seguinte",
"sPrevious": "Anterior"
},
"oAria": {
"sSortAscending": ": Activar para ordenar a columna de maneira ascendente",
"sSortDescending": ": Activar para ordenar a columna de maneira descendente"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "કોષ્ટકમાં કોઈ ડેટા ઉપલબ્ધ નથી",
"sInfo": "કુલ_પ્રવેશો_અંત_પ્રારંભ_દર્શાવે_છે",
"sInfoEmpty": "0 પ્રવેશો 0 0 બતાવી રહ્યું છે",
"sInfoFiltered": "(_MAX_ કુલ પ્રવેશો માંથી ફિલ્ટર)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "બતાવો _MENU_ પ્રવેશો",
"sLoadingRecords": "લોડ કરી રહ્યું છે ...",
"sProcessing": "પ્રક્રિયા ...",
"sSearch": "શોધો:",
"sZeroRecords": "કોઈ મેળ ખાતા રેકોર્ડ મળી",
"oPaginate": {
"sFirst": "પ્રથમ",
"sLast": "અંતિમ",
"sNext": "આગામી",
"sPrevious": "ગત"
},
"oAria": {
"sSortAscending": ": સ્તંભ ચડતા ક્રમમાં ગોઠવવા માટે સક્રિય",
"sSortDescending": ": કૉલમ ઉતરતા ક્રમમાં ગોઠવવા માટે સક્રિય"
}
}

View File

@@ -1,18 +0,0 @@
{
"processing": "מעבד...",
"lengthMenu": "הצג _MENU_ פריטים",
"zeroRecords": "לא נמצאו רשומות מתאימות",
"emptyTable": "לא נמצאו רשומות מתאימות",
"info": "_START_ עד _END_ מתוך _TOTAL_ רשומות" ,
"infoEmpty": "0 עד 0 מתוך 0 רשומות",
"infoFiltered": "(מסונן מסך _MAX_ רשומות)",
"infoPostFix": "",
"search": "חפש:",
"url": "",
"paginate": {
"first": "ראשון",
"previous": "קודם",
"next": "הבא",
"last": "אחרון"
}
}

View File

@@ -1,17 +0,0 @@
{
"sProcessing": "प्रगति पे हैं ...",
"sLengthMenu": " _MENU_ प्रविष्टियां दिखाएं ",
"sZeroRecords": "रिकॉर्ड्स का मेल नहीं मिला",
"sInfo": "_START_ to _END_ of _TOTAL_ प्रविष्टियां दिखा रहे हैं",
"sInfoEmpty": "0 में से 0 से 0 प्रविष्टियां दिखा रहे हैं",
"sInfoFiltered": "(_MAX_ कुल प्रविष्टियों में से छठा हुआ)",
"sInfoPostFix": "",
"sSearch": "खोजें:",
"sUrl": "",
"oPaginate": {
"sFirst": "प्रथम",
"sPrevious": "पिछला",
"sNext": "अगला",
"sLast": "अंतिम"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "Nema podataka u tablici",
"sInfo": "Prikazano _START_ do _END_ od _TOTAL_ rezultata",
"sInfoEmpty": "Prikazano 0 do 0 od 0 rezultata",
"sInfoFiltered": "(filtrirano iz _MAX_ ukupnih rezultata)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "Prikaži _MENU_ rezultata po stranici",
"sLoadingRecords": "Dohvaćam...",
"sProcessing": "Obrađujem...",
"sSearch": "Pretraži:",
"sZeroRecords": "Ništa nije pronađeno",
"oPaginate": {
"sFirst": "Prva",
"sPrevious": "Nazad",
"sNext": "Naprijed",
"sLast": "Zadnja"
},
"oAria": {
"sSortAscending": ": aktiviraj za rastući poredak",
"sSortDescending": ": aktiviraj za padajući poredak"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "Nincs rendelkezésre álló adat",
"sInfo": "Találatok: _START_ - _END_ Összesen: _TOTAL_",
"sInfoEmpty": "Nulla találat",
"sInfoFiltered": "(_MAX_ összes rekord közül szűrve)",
"sInfoPostFix": "",
"sInfoThousands": " ",
"sLengthMenu": "_MENU_ találat oldalanként",
"sLoadingRecords": "Betöltés...",
"sProcessing": "Feldolgozás...",
"sSearch": "Keresés:",
"sZeroRecords": "Nincs a keresésnek megfelelő találat",
"oPaginate": {
"sFirst": "Első",
"sPrevious": "Előző",
"sNext": "Következő",
"sLast": "Utolsó"
},
"oAria": {
"sSortAscending": ": aktiválja a növekvő rendezéshez",
"sSortDescending": ": aktiválja a csökkenő rendezéshez"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "Տվյալները բացակայում են",
"sProcessing": "Կատարվում է...",
"sInfoThousands": ",",
"sLengthMenu": "Ցուցադրել _MENU_ արդյունքներ մեկ էջում",
"sLoadingRecords": "Բեռնվում է ...",
"sZeroRecords": "Հարցմանը համապատասխանող արդյունքներ չկան",
"sInfo": "Ցուցադրված են _START_-ից _END_ արդյունքները ընդհանուր _TOTAL_-ից",
"sInfoEmpty": "Արդյունքներ գտնված չեն",
"sInfoFiltered": "(ֆիլտրվել է ընդհանուր _MAX_ արդյունքներից)",
"sInfoPostFix": "",
"sSearch": "Փնտրել",
"oPaginate": {
"sFirst": "Առաջին էջ",
"sPrevious": "Նախորդ էջ",
"sNext": "Հաջորդ էջ",
"sLast": "Վերջին էջ"
},
"oAria": {
"sSortAscending": ": ակտիվացրեք աճման կարգով դասավորելու համար",
"sSortDescending": ": ակտիվացրեք նվազման կարգով դասավորելու համար"
}
}

View File

@@ -1,18 +0,0 @@
{
"sEmptyTable": "Tidak ada data yang tersedia pada tabel ini",
"sProcessing": "Sedang memproses...",
"sLengthMenu": "Tampilkan _MENU_ entri",
"sZeroRecords": "Tidak ditemukan data yang sesuai",
"sInfo": "Menampilkan _START_ sampai _END_ dari _TOTAL_ entri",
"sInfoEmpty": "Menampilkan 0 sampai 0 dari 0 entri",
"sInfoFiltered": "(disaring dari _MAX_ entri keseluruhan)",
"sInfoPostFix": "",
"sSearch": "Cari:",
"sUrl": "",
"oPaginate": {
"sFirst": "Pertama",
"sPrevious": "Sebelumnya",
"sNext": "Selanjutnya",
"sLast": "Terakhir"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "Engin gögn eru í þessari töflu",
"sInfo": "Sýni _START_ til _END_ af _TOTAL_ færslum",
"sInfoEmpty": "Sýni 0 til 0 af 0 færslum",
"sInfoFiltered": "(síað út frá _MAX_ færslum)",
"sInfoPostFix": "",
"sInfoThousands": ".",
"sLengthMenu": "Sýna _MENU_ færslur",
"sLoadingRecords": "Hleð...",
"sProcessing": "Úrvinnsla...",
"sSearch": "Leita:",
"sZeroRecords": "Engar færslur fundust",
"oPaginate": {
"sFirst": "Fyrsta",
"sLast": "Síðasta",
"sNext": "Næsta",
"sPrevious": "Fyrri"
},
"oAria": {
"sSortAscending": ": virkja til að raða dálki í hækkandi röð",
"sSortDescending": ": virkja til að raða dálki lækkandi í röð"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "Nessun dato presente nella tabella",
"sInfo": "Vista da _START_ a _END_ di _TOTAL_ elementi",
"sInfoEmpty": "Vista da 0 a 0 di 0 elementi",
"sInfoFiltered": "(filtrati da _MAX_ elementi totali)",
"sInfoPostFix": "",
"sInfoThousands": ".",
"sLengthMenu": "Visualizza _MENU_ elementi",
"sLoadingRecords": "Caricamento...",
"sProcessing": "Elaborazione...",
"sSearch": "Cerca:",
"sZeroRecords": "La ricerca non ha portato alcun risultato.",
"oPaginate": {
"sFirst": "Inizio",
"sPrevious": "Precedente",
"sNext": "Successivo",
"sLast": "Fine"
},
"oAria": {
"sSortAscending": ": attiva per ordinare la colonna in ordine crescente",
"sSortDescending": ": attiva per ordinare la colonna in ordine decrescente"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "テーブルにデータがありません",
"sInfo": " _TOTAL_ 件中 _START_ から _END_ まで表示",
"sInfoEmpty": " 0 件中 0 から 0 まで表示",
"sInfoFiltered": "(全 _MAX_ 件より抽出)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "_MENU_ 件表示",
"sLoadingRecords": "読み込み中...",
"sProcessing": "処理中...",
"sSearch": "検索:",
"sZeroRecords": "一致するレコードがありません",
"oPaginate": {
"sFirst": "先頭",
"sLast": "最終",
"sNext": "次",
"sPrevious": "前"
},
"oAria": {
"sSortAscending": ": 列を昇順に並べ替えるにはアクティブにする",
"sSortDescending": ": 列を降順に並べ替えるにはアクティブにする"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "ცხრილში არ არის მონაცემები",
"sInfo": "ნაჩვენებია ჩანაწერები _START_დან _END_მდე, _TOTAL_ ჩანაწერიდან",
"sInfoEmpty": "ნაჩვენებია ჩანაწერები 0დან 0მდე, 0 ჩანაწერიდან",
"sInfoFiltered": "(გაფილტრული შედეგი _MAX_ ჩანაწერიდან)",
"sInfoPostFix": "",
"sInfoThousands": ".",
"sLengthMenu": "აჩვენე _MENU_ ჩანაწერი",
"sLoadingRecords": "იტვირთება...",
"sProcessing": "მუშავდება...",
"sSearch": "ძიება:",
"sZeroRecords": "არაფერი მოიძებნა",
"oPaginate": {
"sFirst": "პირველი",
"sLast": "ბოლო",
"sNext": "შემდეგი",
"sPrevious": "წინა"
},
"oAria": {
"sSortAscending": ": სვეტის დალაგება ზრდის მიხედვით",
"sSortDescending": ": სვეტის დალაგება კლების მიხედვით"
}
}

View File

@@ -1,22 +0,0 @@
{
"processing": "Күте тұрыңыз...",
"search": "Іздеу:",
"lengthMenu": "Жазбалар _MENU_ көрсету",
"info": "_TOTAL_ жазбалары бойынша _START_ бастап _END_ дейінгі жазбалар",
"infoEmpty": "0 жазбалары бойынша 0 бастап 0 дейінгі жазбалар",
"infoFiltered": "(_MAX_ жазбасынан сұрыпталды)",
"infoPostFix": "",
"loadingRecords": "Жазбалар жүктемесі...",
"zeroRecords": "Жазбалар жоқ",
"emptyTable": "Кестеде деректер жоқ",
"paginate": {
"first": "Бірінші",
"previous": "Алдыңғысы",
"next": "Келесі",
"last": "Соңғы"
},
"aria": {
"sortAscending": ": өсімі бойынша бағанды сұрыптау үшін активациялау",
"sortDescending": ": кемуі бойынша бағанды сұрыптау үшін активациялау"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "데이터가 없습니다",
"sInfo": "_START_ - _END_ / _TOTAL_",
"sInfoEmpty": "0 - 0 / 0",
"sInfoFiltered": "(총 _MAX_ 개)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "페이지당 줄수 _MENU_",
"sLoadingRecords": "읽는중...",
"sProcessing": "처리중...",
"sSearch": "검색:",
"sZeroRecords": "검색 결과가 없습니다",
"oPaginate": {
"sFirst": "처음",
"sLast": "마지막",
"sNext": "다음",
"sPrevious": "이전"
},
"oAria": {
"sSortAscending": ": 오름차순 정렬",
"sSortDescending": ": 내림차순 정렬"
}
}

View File

@@ -1,22 +0,0 @@
{
"sEmptyTable": "Lentelėje nėra duomenų",
"sInfo": "Rodomi įrašai nuo _START_ iki _END_ iš _TOTAL_ įrašų",
"sInfoEmpty": "Rodomi įrašai nuo 0 iki 0 iš 0",
"sInfoFiltered": "(atrinkta iš _MAX_ įrašų)",
"sInfoPostFix": "",
"sInfoThousands": " ",
"sLengthMenu": "Rodyti _MENU_ įrašus",
"sLoadingRecords": "Įkeliama...",
"sProcessing": "Apdorojama...",
"sSearch": "Ieškoti:",
"sThousands": " ",
"sUrl": "",
"sZeroRecords": "Įrašų nerasta",
"oPaginate": {
"sFirst": "Pirmas",
"sPrevious": "Ankstesnis",
"sNext": "Tolimesnis",
"sLast": "Paskutinis"
}
}

View File

@@ -1,22 +0,0 @@
{
"processing": "Uzgaidiet ...",
"search": "Meklēt:",
"lengthMenu": "Rādīt _MENU_ ierakstus",
"info": "Parādīti _START_ līdz _END_ no _TOTAL_ ierakstiem",
"infoEmpty": "Nav ierakstu",
"infoFiltered": "(atlasīts no pavisam _MAX_ ierakstiem)",
"infoPostFix": "",
"loadingRecords": "Notiek ielāde ...",
"zeroRecords": "Nav atrasti vaicājumam atbilstoši ieraksti",
"emptyTable": "Tabulā nav datu",
"paginate": {
"first": "Pirmā",
"previous": "Iepriekšējā",
"next": "Nākošā",
"last": "Pēdējā"
},
"aria": {
"sortAscending": ": aktivizēt kolonnu, lai kārtotu augoši",
"sortDescending": ": aktivizēt kolonnu, lai kārtotu dilstoši"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "Хүснэгт хоосон байна",
"sInfo": "Нийт _TOTAL_ бичлэгээс _START_ - _END_ харуулж байна",
"sInfoEmpty": "Тохирох үр дүн алга",
"sInfoFiltered": "(нийт _MAX_ бичлэгээс шүүв)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "Дэлгэцэд _MENU_ бичлэг харуулна",
"sLoadingRecords": "Ачааллаж байна...",
"sProcessing": "Боловсруулж байна...",
"sSearch": "Хайлт:",
"sZeroRecords": "Тохирох бичлэг олдсонгүй",
"oPaginate": {
"sFirst": "Эхнийх",
"sLast": "Сүүлийнх",
"sNext": "Өмнөх",
"sPrevious": "Дараах"
},
"oAria": {
"sSortAscending": ": цагаан толгойн дарааллаар эрэмбэлэх",
"sSortDescending": ": цагаан толгойн эсрэг дарааллаар эрэмбэлэх"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "Tiada data",
"sInfo": "Paparan dari _START_ hingga _END_ dari _TOTAL_ rekod",
"sInfoEmpty": "Paparan 0 hingga 0 dari 0 rekod",
"sInfoFiltered": "(Ditapis dari jumlah _MAX_ rekod)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "Papar _MENU_ rekod",
"sLoadingRecords": "Diproses...",
"sProcessing": "Sedang diproses...",
"sSearch": "Carian:",
"sZeroRecords": "Tiada padanan rekod yang dijumpai.",
"oPaginate": {
"sFirst": "Pertama",
"sPrevious": "Sebelum",
"sNext": "Kemudian",
"sLast": "Akhir"
},
"oAria": {
"sSortAscending": ": diaktifkan kepada susunan lajur menaik",
"sSortDescending": ": diaktifkan kepada susunan lajur menurun"
}
}

View File

@@ -1,25 +0,0 @@
{
"sEmptyTable": "Ingen data tilgjengelig i tabellen",
"sInfo": "Viser _START_ til _END_ av _TOTAL_ linjer",
"sInfoEmpty": "Viser 0 til 0 av 0 linjer",
"sInfoFiltered": "(filtrert fra _MAX_ totalt antall linjer)",
"sInfoPostFix": "",
"sInfoThousands": " ",
"sLoadingRecords": "Laster...",
"sLengthMenu": "Vis _MENU_ linjer",
"sLoadingRecords": "Laster...",
"sProcessing": "Laster...",
"sSearch": "S&oslash;k:",
"sUrl": "",
"sZeroRecords": "Ingen linjer matcher s&oslash;ket",
"oPaginate": {
"sFirst": "F&oslash;rste",
"sPrevious": "Forrige",
"sNext": "Neste",
"sLast": "Siste"
},
"oAria": {
"sSortAscending": ": aktiver for å sortere kolonnen stigende",
"sSortDescending": ": aktiver for å sortere kolonnen synkende"
}
}

View File

@@ -1,24 +0,0 @@
{
"sEmptyTable": "टेबलमा डाटा उपलब्ध भएन",
"sInfo": "_TOTAL_ रेकर्ड मध्य _START_ देखि _END_ रेकर्ड देखाउंदै",
"sInfoEmpty": "0 मध्य 0 देखि 0 रेकर्ड देखाउंदै",
"sInfoFiltered": "(_MAX_ कुल रेकर्डबाट छनौट गरिएको)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": " _MENU_ रेकर्ड देखाउने ",
"sLoadingRecords": "लोड हुँदैछ...",
"sProcessing": "प्रगति हुदैंछ ...",
"sSearch": "खोजी:",
"sUrl": "",
"sZeroRecords": "कुनै मिल्ने रेकर्ड फेला परेन",
"oPaginate": {
"sFirst": "प्रथम",
"sPrevious": "पछिल्लो",
"sNext": "अघिल्लो",
"sLast": "अन्तिम"
},
"oAria": {
"sSortAscending": ": अगाडिबाट अक्षरात्मक रूपमा क्रमबद्ध गराउने",
"sSortDescending": ": पछाडिबाट अक्षरात्मक रूपमा क्रमबद्ध गराउने"
}
}

View File

@@ -1,23 +0,0 @@
{
"sProcessing": "Bezig...",
"sLengthMenu": "_MENU_ resultaten weergeven",
"sZeroRecords": "Geen resultaten gevonden",
"sInfo": "_START_ tot _END_ van _TOTAL_ resultaten",
"sInfoEmpty": "Geen resultaten om weer te geven",
"sInfoFiltered": " (gefilterd uit _MAX_ resultaten)",
"sInfoPostFix": "",
"sSearch": "Zoeken:",
"sEmptyTable": "Geen resultaten aanwezig in de tabel",
"sInfoThousands": ".",
"sLoadingRecords": "Een moment geduld aub - bezig met laden...",
"oPaginate": {
"sFirst": "Eerste",
"sLast": "Laatste",
"sNext": "Volgende",
"sPrevious": "Vorige"
},
"oAria": {
"sSortAscending": ": activeer om kolom oplopend te sorteren",
"sSortDescending": ": activeer om kolom aflopend te sorteren"
}
}

View File

@@ -1,25 +0,0 @@
{
"sEmptyTable": "Inga data tilgjengeleg i tabellen",
"sInfo": "Syner _START_ til _END_ av _TOTAL_ linjer",
"sInfoEmpty": "Syner 0 til 0 av 0 linjer",
"sInfoFiltered": "(filtrert frå _MAX_ totalt antal linjer)",
"sInfoPostFix": "",
"sInfoThousands": " ",
"sLoadingRecords": "Lastar...",
"sLengthMenu": "Syn _MENU_ linjer",
"sLoadingRecords": "Lastar...",
"sProcessing": "Lastar...",
"sSearch": "S&oslash;k:",
"sUrl": "",
"sZeroRecords": "Inga linjer treff p&aring; s&oslash;ket",
"oPaginate": {
"sFirst": "Fyrste",
"sPrevious": "Forrige",
"sNext": "Neste",
"sLast": "Siste"
},
"oAria": {
"sSortAscending": ": aktiver for å sortere kolonna stigande",
"sSortDescending": ": aktiver for å sortere kolonna synkande"
}
}

View File

@@ -1,22 +0,0 @@
{
"processing": "Przetwarzanie...",
"search": "Szukaj:",
"lengthMenu": "Pokaż _MENU_ pozycji",
"info": "Pozycje od _START_ do _END_ z _TOTAL_ łącznie",
"infoEmpty": "Pozycji 0 z 0 dostępnych",
"infoFiltered": "(filtrowanie spośród _MAX_ dostępnych pozycji)",
"infoPostFix": "",
"loadingRecords": "Wczytywanie...",
"zeroRecords": "Nie znaleziono pasujących pozycji",
"emptyTable": "Brak danych",
"paginate": {
"first": "Pierwsza",
"previous": "Poprzednia",
"next": "Następna",
"last": "Ostatnia"
},
"aria": {
"sortAscending": ": aktywuj, by posortować kolumnę rosnąco",
"sortDescending": ": aktywuj, by posortować kolumnę malejąco"
}
}

View File

@@ -1,22 +0,0 @@
{
"sEmptyTable": "Nenhum registro encontrado",
"sProcessing": "A processar...",
"sLengthMenu": "Mostrar _MENU_ registos",
"sZeroRecords": "Não foram encontrados resultados",
"sInfo": "Mostrando de _START_ até _END_ de _TOTAL_ registos",
"sInfoEmpty": "Mostrando de 0 até 0 de 0 registos",
"sInfoFiltered": "(filtrado de _MAX_ registos no total)",
"sInfoPostFix": "",
"sSearch": "Procurar:",
"sUrl": "",
"oPaginate": {
"sFirst": "Primeiro",
"sPrevious": "Anterior",
"sNext": "Seguinte",
"sLast": "Último"
},
"oAria": {
"sSortAscending": ": Ordenar colunas de forma ascendente",
"sSortDescending": ": Ordenar colunas de forma descendente"
}
}

View File

@@ -1,17 +0,0 @@
{
"sProcessing": "Procesează...",
"sLengthMenu": "Afișează _MENU_ înregistrări pe pagină",
"sZeroRecords": "Nu am găsit nimic - ne pare rău",
"sInfo": "Afișate de la _START_ la _END_ din _TOTAL_ înregistrări",
"sInfoEmpty": "Afișate de la 0 la 0 din 0 înregistrări",
"sInfoFiltered": "(filtrate dintr-un total de _MAX_ înregistrări)",
"sInfoPostFix": "",
"sSearch": "Caută:",
"sUrl": "",
"oPaginate": {
"sFirst": "Prima",
"sPrevious": "Precedenta",
"sNext": "Următoarea",
"sLast": "Ultima"
}
}

View File

@@ -1,22 +0,0 @@
{
"processing": "Подождите...",
"search": "Поиск:",
"lengthMenu": "Показать _MENU_ записей",
"info": "Записи с _START_ до _END_ из _TOTAL_ записей",
"infoEmpty": "Записи с 0 до 0 из 0 записей",
"infoFiltered": "(отфильтровано из _MAX_ записей)",
"infoPostFix": "",
"loadingRecords": "Загрузка записей...",
"zeroRecords": "Записи отсутствуют.",
"emptyTable": "В таблице отсутствуют данные",
"paginate": {
"first": "Первая",
"previous": "Предыдущая",
"next": "Следующая",
"last": "Последняя"
},
"aria": {
"sortAscending": ": активировать для сортировки столбца по возрастанию",
"sortDescending": ": активировать для сортировки столбца по убыванию"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "වගුවේ දත්ත කිසිවක් නොමැත",
"sInfo": "_TOTAL_ න් _START_ සිට _END_ දක්වා",
"sInfoEmpty": "0 න් 0 සිට 0 දක්වා",
"sInfoFiltered": "(_MAX_ න් තෝරාගත් )",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "_MENU_ ක් පෙන්වන්න",
"sLoadingRecords": "පූරණය වෙමින් පවතී...",
"sProcessing": "සැකසෙමින් පවතී...",
"sSearch": "සොයන්න :",
"sZeroRecords": "ගැලපෙන වාර්තා නොමැත.",
"oPaginate": {
"sFirst": "පළමු",
"sLast": "අන්තිම",
"sNext": "ඊළග",
"sPrevious": "පසුගිය"
},
"oAria": {
"sSortAscending": ": තීරුව ආරෝහනව තෝරන්න",
"sSortDescending": ": තීරුව අවරෝහනව තෝරන්න"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "Nie sú k dispozícii žiadne dáta",
"sInfo": "Záznamy _START_ až _END_ z celkom _TOTAL_",
"sInfoEmpty": "Záznamy 0 až 0 z celkom 0 ",
"sInfoFiltered": "(vyfiltrované spomedzi _MAX_ záznamov)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "Zobraz _MENU_ záznamov",
"sLoadingRecords": "Načítavam...",
"sProcessing": "Spracúvam...",
"sSearch": "Hľadať:",
"sZeroRecords": "Nenašli sa žiadne vyhovujúce záznamy",
"oPaginate": {
"sFirst": "Prvá",
"sLast": "Posledná",
"sNext": "Nasledujúca",
"sPrevious": "Predchádzajúca"
},
"oAria": {
"sSortAscending": ": aktivujte na zoradenie stĺpca vzostupne",
"sSortDescending": ": aktivujte na zoradenie stĺpca zostupne"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "Nobenih podatkov ni na voljo",
"sInfo": "Prikazujem _START_ do _END_ od _TOTAL_ zapisov",
"sInfoEmpty": "Prikazujem 0 do 0 od 0 zapisov",
"sInfoFiltered": "(filtrirano od _MAX_ vseh zapisov)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "Prikaži _MENU_ zapisov",
"sLoadingRecords": "Nalagam...",
"sProcessing": "Obdelujem...",
"sSearch": "Išči:",
"sZeroRecords": "Nobeden zapis ne ustreza",
"oPaginate": {
"sFirst": "Prvi",
"sLast": "Zadnji",
"sNext": "Nasl.",
"sPrevious": "Pred."
},
"oAria": {
"sSortAscending": ": vključite za naraščujoči sort",
"sSortDescending": ": vključite za padajoči sort"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "Nuk ka asnjë të dhënë në tabele",
"sInfo": "Duke treguar _START_ deri _END_ prej _TOTAL_ reshtave",
"sInfoEmpty": "Duke treguar 0 deri 0 prej 0 reshtave",
"sInfoFiltered": "(të filtruara nga gjithësej _MAX_ reshtave)",
"sInfoPostFix": "",
"sInfoThousands": ",",
"sLengthMenu": "Shiko _MENU_ reshta",
"sLoadingRecords": "Duke punuar...",
"sProcessing": "Duke procesuar...",
"sSearch": "Kërkoni:",
"sZeroRecords": "Asnjë e dhënë nuk u gjet",
"oPaginate": {
"sFirst": "E para",
"sLast": "E Fundit",
"sNext": "Tjetra",
"sPrevious": "E Kaluara"
},
"oAria": {
"sSortAscending": ": aktivizo për të sortuar kolumnin me vlera në ngritje",
"sSortDescending": ": aktivizo për të sortuar kolumnin me vlera në zbritje"
}
}

View File

@@ -1,17 +0,0 @@
{
"sProcessing": "Procesiranje u toku...",
"sLengthMenu": "Prikaži _MENU_ elemenata",
"sZeroRecords": "Nije pronađen nijedan rezultat",
"sInfo": "Prikaz _START_ do _END_ od ukupno _TOTAL_ elemenata",
"sInfoEmpty": "Prikaz 0 do 0 od ukupno 0 elemenata",
"sInfoFiltered": "(filtrirano od ukupno _MAX_ elemenata)",
"sInfoPostFix": "",
"sSearch": "Pretraga:",
"sUrl": "",
"oPaginate": {
"sFirst": "Početna",
"sPrevious": "Prethodna",
"sNext": "Sledeća",
"sLast": "Poslednja"
}
}

View File

@@ -1,23 +0,0 @@
{
"sEmptyTable": "Tabellen innehåller ingen data",
"sInfo": "Visar _START_ till _END_ av totalt _TOTAL_ rader",
"sInfoEmpty": "Visar 0 till 0 av totalt 0 rader",
"sInfoFiltered": "(filtrerade från totalt _MAX_ rader)",
"sInfoPostFix": "",
"sInfoThousands": " ",
"sLengthMenu": "Visa _MENU_ rader",
"sLoadingRecords": "Laddar...",
"sProcessing": "Bearbetar...",
"sSearch": "Sök:",
"sZeroRecords": "Hittade inga matchande resultat",
"oPaginate": {
"sFirst": "Första",
"sLast": "Sista",
"sNext": "Nästa",
"sPrevious": "Föregående"
},
"oAria": {
"sSortAscending": ": aktivera för att sortera kolumnen i stigande ordning",
"sSortDescending": ": aktivera för att sortera kolumnen i fallande ordning"
}
}

Some files were not shown because too many files have changed in this diff Show More