@hexonet/semantic-release-whmcs 5.0.69 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HISTORY.md +28 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/LICENSE +14 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/_locales/en/messages.json +160 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/_metadata/generated_indexed_rulesets/_ruleset1 +0 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/background.html +2 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/background.js +681 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/css/common.css +14306 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/hotreload.js +43 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/js/0_defaultClickHandler.js +590 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/js/2_sessionStorageHandler.js +30 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/js/3_localStorageHandler.js +243 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/js/5_clickHandler.js +8523 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/js/6_cookieHandler.js +764 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/js/8_googleHandler.js +105 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/js/embedsHandler.js +107 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/menu/index.html +79 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/menu/script.js +161 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/menu/spinner.svg +12 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/menu/style.css +68 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/options.html +42 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/options.js +63 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/data/rules.js +20684 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/icons/128.png +0 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/icons/16.png +0 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/icons/32.png +0 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/icons/48.png +0 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/manifest.json +47 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/manifest_v2.json +46 -0
- package/extensions/I-Still-Dont-Care-About-Cookies/rules.json +19539 -0
- package/lib/delete-marketplace-version.js +82 -31
- package/lib/publish.js +52 -43
- package/lib/puppet-utils.js +145 -0
- package/lib/puppet.js +68 -41
- package/lib/resolve-config.js +1 -0
- package/lib/set-compatible-versions.js +26 -10
- package/package.json +6 -6
- package/whmcs.js +7 -5
@@ -0,0 +1,105 @@
|
|
1
|
+
/* Google handler */
|
2
|
+
/* Handler is only used for Google */
|
3
|
+
|
4
|
+
function _sl(selector, container) {
|
5
|
+
return (container || document).querySelector(selector);
|
6
|
+
}
|
7
|
+
|
8
|
+
const mainInterval = setInterval(function () {
|
9
|
+
const html = _sl("html");
|
10
|
+
|
11
|
+
if (!html || /idc8_343/.test(html.className)) {
|
12
|
+
return;
|
13
|
+
}
|
14
|
+
|
15
|
+
clearInterval(mainInterval);
|
16
|
+
|
17
|
+
html.className += " idc8_343";
|
18
|
+
|
19
|
+
let counter = 0;
|
20
|
+
const interval = setInterval(function () {
|
21
|
+
let element;
|
22
|
+
|
23
|
+
if (document.location.hostname.split(".")[0] == "consent") {
|
24
|
+
if (document.location.pathname == "/m") {
|
25
|
+
element = _sl(
|
26
|
+
'form[action*="//consent."][action$="/s"] button, form[action*="//consent."][action$="/save"] button'
|
27
|
+
);
|
28
|
+
|
29
|
+
if (element) {
|
30
|
+
element.click();
|
31
|
+
counter = 299;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
// Mobile only, ie google.co.uk (or in FF Nightly, on google.com search results)
|
36
|
+
else if (document.location.pathname == "/ml") {
|
37
|
+
element = _sl(
|
38
|
+
".saveButtonContainerNarrowScreen > form:last-child .button"
|
39
|
+
);
|
40
|
+
|
41
|
+
if (element) {
|
42
|
+
element.click();
|
43
|
+
counter = 299;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
// https://www.google.com/finance/
|
49
|
+
else if (
|
50
|
+
document.location.hostname == "ogs.google.com" &&
|
51
|
+
document.location.pathname == "/widget/callout"
|
52
|
+
) {
|
53
|
+
if (
|
54
|
+
document
|
55
|
+
.evaluate(
|
56
|
+
'//span[contains(text(), "This site uses cookies")]',
|
57
|
+
document,
|
58
|
+
null,
|
59
|
+
XPathResult.ANY_TYPE,
|
60
|
+
null
|
61
|
+
)
|
62
|
+
.iterateNext()
|
63
|
+
) {
|
64
|
+
_sl("button").click();
|
65
|
+
counter = 299;
|
66
|
+
}
|
67
|
+
} else {
|
68
|
+
// The latest cookie popup, desktop and mobile
|
69
|
+
|
70
|
+
const container = _sl('div[aria-modal="true"][style*="block"]');
|
71
|
+
|
72
|
+
if (
|
73
|
+
container &&
|
74
|
+
_sl('a[href*="policies.google.com/technologies/cookies"]', container)
|
75
|
+
) {
|
76
|
+
_sl("button + button", container).click();
|
77
|
+
|
78
|
+
// Autofocus on the search field
|
79
|
+
element = _sl(
|
80
|
+
'form[role="search"][action="/search"]:not([id]) input[aria-autocomplete="both"]'
|
81
|
+
);
|
82
|
+
if (element) element.focus();
|
83
|
+
|
84
|
+
counter = 299;
|
85
|
+
}
|
86
|
+
|
87
|
+
// General privacy reminder
|
88
|
+
element = _sl(
|
89
|
+
'form[action^="/signin/privacyreminder"] > div > span > div:not([role]) > div:not([tabindex]) span + div'
|
90
|
+
);
|
91
|
+
if (element) element.click();
|
92
|
+
|
93
|
+
// #cns=1
|
94
|
+
if (document.location.hash == "#cns=1") {
|
95
|
+
document.location.hash = "#cns=0";
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
counter++;
|
100
|
+
|
101
|
+
if (counter == 300) {
|
102
|
+
clearInterval(interval);
|
103
|
+
}
|
104
|
+
}, 250 + counter * 10);
|
105
|
+
}, 250);
|
@@ -0,0 +1,107 @@
|
|
1
|
+
/* Embeds handler */
|
2
|
+
/* Handler is used to remove the cookie warning for certain embeds */
|
3
|
+
|
4
|
+
(function () {
|
5
|
+
const classname = Math.random()
|
6
|
+
.toString(36)
|
7
|
+
.replace(/[^a-z]+/g, "");
|
8
|
+
|
9
|
+
const l = document.location;
|
10
|
+
let isAudioboom = false;
|
11
|
+
let isDailymotion = false;
|
12
|
+
let isDailybuzz = false;
|
13
|
+
let isPlayerclipslaliga = false;
|
14
|
+
|
15
|
+
switch (l.hostname) {
|
16
|
+
case "embeds.audioboom.com":
|
17
|
+
isAudioboom = true;
|
18
|
+
break;
|
19
|
+
|
20
|
+
case "www.dailymotion.com":
|
21
|
+
isDailymotion = l.pathname.indexOf("/embed") === 0;
|
22
|
+
break;
|
23
|
+
|
24
|
+
case "geo.dailymotion.com":
|
25
|
+
isDailymotion = l.pathname.indexOf("/player") === 0;
|
26
|
+
break;
|
27
|
+
|
28
|
+
case "dailybuzz.nl":
|
29
|
+
isDailybuzz = l.pathname.indexOf("/buzz/embed") === 0;
|
30
|
+
break;
|
31
|
+
|
32
|
+
case "playerclipslaliga.tv":
|
33
|
+
isPlayerclipslaliga = true;
|
34
|
+
break;
|
35
|
+
}
|
36
|
+
|
37
|
+
function searchEmbeds() {
|
38
|
+
setTimeout(function () {
|
39
|
+
// audioboom.com iframe embeds
|
40
|
+
if (isAudioboom) {
|
41
|
+
document
|
42
|
+
.querySelectorAll(
|
43
|
+
'div[id^="cookie-modal"] .modal[style*="block"] .btn.mrs:not(.' +
|
44
|
+
classname +
|
45
|
+
")"
|
46
|
+
)
|
47
|
+
.forEach(function (button) {
|
48
|
+
button.className += " " + classname;
|
49
|
+
button.click();
|
50
|
+
});
|
51
|
+
}
|
52
|
+
|
53
|
+
// dailymotion.com iframe embeds
|
54
|
+
else if (isDailymotion) {
|
55
|
+
document
|
56
|
+
.querySelectorAll(".np_DialogConsent-accept:not(." + classname + ")")
|
57
|
+
.forEach(function (button) {
|
58
|
+
button.className += " " + classname;
|
59
|
+
button.click();
|
60
|
+
});
|
61
|
+
}
|
62
|
+
|
63
|
+
// dailybuzz.nl iframe embeds
|
64
|
+
else if (isDailybuzz) {
|
65
|
+
document
|
66
|
+
.querySelectorAll("#ask-consent #accept:not(." + classname + ")")
|
67
|
+
.forEach(function (button) {
|
68
|
+
button.className += " " + classname;
|
69
|
+
button.click();
|
70
|
+
});
|
71
|
+
}
|
72
|
+
|
73
|
+
// playerclipslaliga.tv iframe embeds
|
74
|
+
else if (isPlayerclipslaliga) {
|
75
|
+
document
|
76
|
+
.querySelectorAll(
|
77
|
+
'#cookies button[onclick*="saveCookiesSelection"]:not(.' +
|
78
|
+
classname +
|
79
|
+
")"
|
80
|
+
)
|
81
|
+
.forEach(function (button) {
|
82
|
+
button.className += " " + classname;
|
83
|
+
button.click();
|
84
|
+
});
|
85
|
+
}
|
86
|
+
|
87
|
+
// Give up
|
88
|
+
else {
|
89
|
+
return;
|
90
|
+
}
|
91
|
+
|
92
|
+
searchEmbeds();
|
93
|
+
}, 1000);
|
94
|
+
}
|
95
|
+
|
96
|
+
const start = setInterval(function () {
|
97
|
+
const html = document.querySelector("html");
|
98
|
+
|
99
|
+
if (!html || new RegExp(classname).test(html.className)) {
|
100
|
+
return;
|
101
|
+
}
|
102
|
+
|
103
|
+
html.className += " " + classname;
|
104
|
+
searchEmbeds();
|
105
|
+
clearInterval(start);
|
106
|
+
}, 500);
|
107
|
+
})();
|
@@ -0,0 +1,79 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8" />
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
6
|
+
<link rel="stylesheet" href="style.css" />
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<div style="width: 220px; padding: 10px 10px 0; text-align: center">
|
10
|
+
<img src="../../icons/32.png" />
|
11
|
+
|
12
|
+
<div id="menu_main" class="menu">
|
13
|
+
<a id="toggle"></a>
|
14
|
+
<a id="refresh">↻</a>
|
15
|
+
<a id="report" data-translate="menuReport"></a>
|
16
|
+
<a id="options" data-translate="optionsTitle"></a>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<div id="menu_report" class="menu menu-hidden">
|
20
|
+
<a id="report_github" data-translate="reportGithub"></a>
|
21
|
+
<a id="report_anon" data-translate="reportAnon"></a>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div id="menu_report_anon" class="menu menu-hidden">
|
25
|
+
<h3>
|
26
|
+
<span data-translate="reportAnonTitle"></span>
|
27
|
+
<span id="hostname">example.com</span>
|
28
|
+
</h3>
|
29
|
+
<select id="report_issue_type">
|
30
|
+
<option value="general" data-translate="generalIssueOption"></option>
|
31
|
+
<option
|
32
|
+
value="scrollbar"
|
33
|
+
data-translate="scrollbarIssueOption"
|
34
|
+
></option>
|
35
|
+
<option value="modal" data-translate="modalIssueOption"></option>
|
36
|
+
</select>
|
37
|
+
<label
|
38
|
+
id="general_issue_description"
|
39
|
+
data-translate="reportAnonNotes"
|
40
|
+
></label>
|
41
|
+
<label
|
42
|
+
id="scrollbar_issue_description"
|
43
|
+
data-translate="scrollbarIssueDescription"
|
44
|
+
></label>
|
45
|
+
<label
|
46
|
+
id="modal_issue_description"
|
47
|
+
data-translate="modalIssueDescription"
|
48
|
+
></label>
|
49
|
+
<textarea id="report-notes"></textarea>
|
50
|
+
<button id="report_anon_send" data-translate="reportAnonSend"></button>
|
51
|
+
<button
|
52
|
+
id="report_anon_cancel"
|
53
|
+
data-translate="reportAnonCancel"
|
54
|
+
></button>
|
55
|
+
</div>
|
56
|
+
</div>
|
57
|
+
|
58
|
+
<div id="menu_error" class="menu menu-hidden">
|
59
|
+
<div style="text-align: center">
|
60
|
+
<h2 data-translate="genericErrorTitle"></h2>
|
61
|
+
<p data-translate="genericErrorTryAgain"></p>
|
62
|
+
<a
|
63
|
+
id="error_back_button"
|
64
|
+
data-translate="genericErrorBack"
|
65
|
+
class="menu-item"
|
66
|
+
></a>
|
67
|
+
</div>
|
68
|
+
</div>
|
69
|
+
|
70
|
+
<div id="menu_loading" class="menu menu-hidden">
|
71
|
+
<div style="text-align: center">
|
72
|
+
<img src="spinner.svg" width="60" fill="#fff" alt="" />
|
73
|
+
<p data-translate="menuLoadingText"></p>
|
74
|
+
</div>
|
75
|
+
</div>
|
76
|
+
|
77
|
+
<script src="script.js"></script>
|
78
|
+
</body>
|
79
|
+
</html>
|
@@ -0,0 +1,161 @@
|
|
1
|
+
const toggle = document.getElementById("toggle");
|
2
|
+
const refresh = document.getElementById("refresh");
|
3
|
+
const report = document.getElementById("report");
|
4
|
+
const options = document.getElementById("options");
|
5
|
+
|
6
|
+
const issueTypeSelect = document.getElementById("report_issue_type");
|
7
|
+
const reportNotesTextarea = document.getElementById("report-notes");
|
8
|
+
|
9
|
+
let currentTab = false;
|
10
|
+
|
11
|
+
toggle.addEventListener("click", function (e) {
|
12
|
+
chrome.runtime.sendMessage(
|
13
|
+
{
|
14
|
+
command: "toggle_extension",
|
15
|
+
tabId: currentTab.id,
|
16
|
+
},
|
17
|
+
() => reloadMenu(true)
|
18
|
+
);
|
19
|
+
});
|
20
|
+
|
21
|
+
refresh.addEventListener("click", function (e) {
|
22
|
+
chrome.runtime.sendMessage(
|
23
|
+
{
|
24
|
+
command: "refresh_page",
|
25
|
+
tabId: currentTab.id,
|
26
|
+
},
|
27
|
+
() => window.close()
|
28
|
+
);
|
29
|
+
});
|
30
|
+
|
31
|
+
options.addEventListener("click", function (e) {
|
32
|
+
chrome.runtime.sendMessage(
|
33
|
+
{
|
34
|
+
command: "open_options_page",
|
35
|
+
},
|
36
|
+
() => window.close()
|
37
|
+
);
|
38
|
+
});
|
39
|
+
|
40
|
+
report.addEventListener("click", () => switchMenu("menu_report"));
|
41
|
+
document
|
42
|
+
.getElementById("error_back_button")
|
43
|
+
.addEventListener("click", () => switchMenu("menu_main"));
|
44
|
+
|
45
|
+
document.getElementById("report_github").addEventListener("click", () =>
|
46
|
+
chrome.runtime.sendMessage(
|
47
|
+
{
|
48
|
+
command: "report_website",
|
49
|
+
tabId: currentTab.id,
|
50
|
+
anon: false,
|
51
|
+
},
|
52
|
+
() => window.close()
|
53
|
+
)
|
54
|
+
);
|
55
|
+
|
56
|
+
document.getElementById("report_anon").addEventListener("click", function (e) {
|
57
|
+
switchMenu("menu_report_anon");
|
58
|
+
document.getElementById("hostname").textContent = currentTab.hostname;
|
59
|
+
});
|
60
|
+
|
61
|
+
issueTypeSelect.addEventListener("change", () => {
|
62
|
+
let issueTypeValue =
|
63
|
+
issueTypeSelect.options[issueTypeSelect.selectedIndex].value;
|
64
|
+
|
65
|
+
document
|
66
|
+
.querySelectorAll("label[id*='issue_description']")
|
67
|
+
.forEach((label) => {
|
68
|
+
label.style.display = "none";
|
69
|
+
});
|
70
|
+
|
71
|
+
reportNotesTextarea.style.display =
|
72
|
+
issueTypeValue == "general" ? "block" : "none";
|
73
|
+
document.getElementById(`${issueTypeValue}_issue_description`).style.display =
|
74
|
+
"block";
|
75
|
+
});
|
76
|
+
|
77
|
+
document.getElementById("report_anon_send").addEventListener("click", () => {
|
78
|
+
let issueTypeValue =
|
79
|
+
issueTypeSelect.options[issueTypeSelect.selectedIndex].value;
|
80
|
+
|
81
|
+
switchMenu("menu_loading");
|
82
|
+
chrome.runtime.sendMessage(
|
83
|
+
{
|
84
|
+
command: "report_website",
|
85
|
+
tabId: currentTab.id,
|
86
|
+
anon: true,
|
87
|
+
issueType: issueTypeValue,
|
88
|
+
notes: issueTypeValue == "general" ? reportNotesTextarea.value : null,
|
89
|
+
},
|
90
|
+
(message) => {
|
91
|
+
if (message.error) {
|
92
|
+
switchMenu("menu_error");
|
93
|
+
} else {
|
94
|
+
window.close();
|
95
|
+
}
|
96
|
+
}
|
97
|
+
);
|
98
|
+
});
|
99
|
+
|
100
|
+
document
|
101
|
+
.getElementById("report_anon_cancel")
|
102
|
+
.addEventListener("click", () => window.close());
|
103
|
+
|
104
|
+
function reloadMenu(enableRefreshButton) {
|
105
|
+
translate();
|
106
|
+
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
|
107
|
+
chrome.runtime.sendMessage(
|
108
|
+
{
|
109
|
+
command: "get_active_tab",
|
110
|
+
tabId: tabs[0].id,
|
111
|
+
},
|
112
|
+
function (message) {
|
113
|
+
message = message || {};
|
114
|
+
currentTab = message.tab ? message.tab : false;
|
115
|
+
|
116
|
+
if (message.tab && message.tab.hostname) {
|
117
|
+
toggle.textContent = chrome.i18n.getMessage(
|
118
|
+
message.tab.whitelisted ? "menuEnable" : "menuDisable",
|
119
|
+
message.tab.hostname
|
120
|
+
);
|
121
|
+
toggle.style.display = "block";
|
122
|
+
|
123
|
+
report.style.display = message.tab.whitelisted ? "none" : "block";
|
124
|
+
} else {
|
125
|
+
toggle.textContent = "";
|
126
|
+
toggle.style.display = "none";
|
127
|
+
report.style.display = "none";
|
128
|
+
}
|
129
|
+
|
130
|
+
if (typeof enableRefreshButton != "undefined") {
|
131
|
+
refresh.style.display = "block";
|
132
|
+
toggle.style.display = "none";
|
133
|
+
report.style.display = "none";
|
134
|
+
}
|
135
|
+
}
|
136
|
+
);
|
137
|
+
});
|
138
|
+
}
|
139
|
+
|
140
|
+
function switchMenu(id) {
|
141
|
+
const menus = document.getElementsByClassName("menu");
|
142
|
+
for (let i = 0; i < menus.length; i++) {
|
143
|
+
if (menus[i].id != id) {
|
144
|
+
menus[i].classList.add("menu-hidden");
|
145
|
+
} else {
|
146
|
+
menus[i].classList.remove("menu-hidden");
|
147
|
+
}
|
148
|
+
}
|
149
|
+
}
|
150
|
+
|
151
|
+
function translate() {
|
152
|
+
for (const element of document.querySelectorAll("[data-translate]")) {
|
153
|
+
element.textContent = chrome.i18n.getMessage(element.dataset.translate);
|
154
|
+
}
|
155
|
+
|
156
|
+
reportNotesTextarea.placeholder = chrome.i18n.getMessage(
|
157
|
+
"reportNotesPlaceholder"
|
158
|
+
);
|
159
|
+
}
|
160
|
+
|
161
|
+
reloadMenu();
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<!-- By Sam Herbert (@sherb), for everyone. More @ http://goo.gl/7AJzbL -->
|
2
|
+
<svg width="38" height="38" viewBox="0 0 38 38"
|
3
|
+
xmlns="http://www.w3.org/2000/svg" stroke="#D97C44">
|
4
|
+
<g fill="none" fill-rule="evenodd">
|
5
|
+
<g transform="translate(1 1)" stroke-width="2">
|
6
|
+
<circle stroke="#ECC492" cx="18" cy="18" r="18"/>
|
7
|
+
<path d="M36 18c0-9.94-8.06-18-18-18">
|
8
|
+
<animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="1s" repeatCount="indefinite"/>
|
9
|
+
</path>
|
10
|
+
</g>
|
11
|
+
</g>
|
12
|
+
</svg>
|
@@ -0,0 +1,68 @@
|
|
1
|
+
body {
|
2
|
+
-moz-user-select: none;
|
3
|
+
user-select: none;
|
4
|
+
font: 14px/18px Arial, Helvetica, sans-serif;
|
5
|
+
background: #e8e8e8;
|
6
|
+
padding: 0;
|
7
|
+
margin: 0;
|
8
|
+
}
|
9
|
+
|
10
|
+
a[id] {
|
11
|
+
display: block;
|
12
|
+
cursor: pointer;
|
13
|
+
text-decoration: none;
|
14
|
+
color: #000;
|
15
|
+
padding: 4px;
|
16
|
+
border-top: 1px dashed #888;
|
17
|
+
}
|
18
|
+
a[id]:hover {
|
19
|
+
background-color: #ccc;
|
20
|
+
}
|
21
|
+
#toggle,
|
22
|
+
#report {
|
23
|
+
display: none;
|
24
|
+
}
|
25
|
+
#refresh {
|
26
|
+
display: none;
|
27
|
+
text-align: center;
|
28
|
+
font-size: 200%;
|
29
|
+
padding: 10px;
|
30
|
+
font-weight: bold;
|
31
|
+
color: #cc4223;
|
32
|
+
}
|
33
|
+
|
34
|
+
.menu {
|
35
|
+
text-align: left;
|
36
|
+
padding: 10px 0;
|
37
|
+
word-wrap: break-word;
|
38
|
+
}
|
39
|
+
|
40
|
+
.menu-hidden {
|
41
|
+
display: none !important;
|
42
|
+
}
|
43
|
+
|
44
|
+
h3 {
|
45
|
+
margin-top: 0px;
|
46
|
+
}
|
47
|
+
|
48
|
+
#report_issue_type,
|
49
|
+
label[id*="issue_description"] {
|
50
|
+
margin-bottom: 5px;
|
51
|
+
}
|
52
|
+
|
53
|
+
label[id*="issue_description"] {
|
54
|
+
color: rgb(43, 43, 43);
|
55
|
+
font-style: italic;
|
56
|
+
display: none;
|
57
|
+
}
|
58
|
+
|
59
|
+
label#general_issue_description {
|
60
|
+
display: block;
|
61
|
+
}
|
62
|
+
|
63
|
+
#report-notes {
|
64
|
+
height: 70px;
|
65
|
+
min-width: 100%;
|
66
|
+
max-width: 100%;
|
67
|
+
margin-bottom: 5px;
|
68
|
+
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8" />
|
5
|
+
|
6
|
+
<style>
|
7
|
+
body {
|
8
|
+
padding: 20px;
|
9
|
+
}
|
10
|
+
label {
|
11
|
+
display: block;
|
12
|
+
width: 800px;
|
13
|
+
padding: 0 0 20px;
|
14
|
+
}
|
15
|
+
textarea {
|
16
|
+
width: 100%;
|
17
|
+
height: 150px;
|
18
|
+
}
|
19
|
+
</style>
|
20
|
+
</head>
|
21
|
+
<body>
|
22
|
+
<h1 id="title"></h1>
|
23
|
+
|
24
|
+
<label>
|
25
|
+
<span id="whitelist_label"></span><br />
|
26
|
+
<textarea id="whitelist"></textarea>
|
27
|
+
</label>
|
28
|
+
|
29
|
+
<label>
|
30
|
+
<input type="checkbox" id="status_indicators" />
|
31
|
+
<span id="status_indicators_label"></span>
|
32
|
+
</label>
|
33
|
+
|
34
|
+
<input type="button" id="save" value="" style="min-width: 100px" />
|
35
|
+
<div
|
36
|
+
id="status_saved"
|
37
|
+
style="display: none; color: green; padding-left: 5px"
|
38
|
+
></div>
|
39
|
+
|
40
|
+
<script src="options.js"></script>
|
41
|
+
</body>
|
42
|
+
</html>
|
@@ -0,0 +1,63 @@
|
|
1
|
+
function saveOptions() {
|
2
|
+
const whitelist = document.getElementById("whitelist").value.split("\n");
|
3
|
+
const settings = {
|
4
|
+
whitelistedDomains: {},
|
5
|
+
statusIndicators: document.getElementById("status_indicators").checked,
|
6
|
+
};
|
7
|
+
|
8
|
+
whitelist.forEach((line) => {
|
9
|
+
line = line
|
10
|
+
.trim()
|
11
|
+
.replace(/^\w*\:?\/+/i, "")
|
12
|
+
.replace(/^w{2,3}\d*\./i, "")
|
13
|
+
.split("/")[0]
|
14
|
+
.split(":")[0];
|
15
|
+
|
16
|
+
if (line.length > 0 && line.length < 100) {
|
17
|
+
settings.whitelistedDomains[line] = true;
|
18
|
+
}
|
19
|
+
});
|
20
|
+
|
21
|
+
chrome.storage.local.set({ settings }, () => {
|
22
|
+
document.getElementById("status_saved").style.display = "inline";
|
23
|
+
|
24
|
+
setTimeout(function () {
|
25
|
+
document.getElementById("status_saved").style.display = "none";
|
26
|
+
}, 2000);
|
27
|
+
|
28
|
+
chrome.runtime.sendMessage("update_settings");
|
29
|
+
});
|
30
|
+
}
|
31
|
+
|
32
|
+
function restoreOptions() {
|
33
|
+
chrome.storage.local.get(
|
34
|
+
{ settings: { whitelistedDomains: {}, statusIndicators: true } },
|
35
|
+
({ settings }) => {
|
36
|
+
document.getElementById("whitelist").value = Object.keys(
|
37
|
+
settings.whitelistedDomains
|
38
|
+
)
|
39
|
+
.sort()
|
40
|
+
.join("\n");
|
41
|
+
document.getElementById("status_indicators").checked =
|
42
|
+
settings.statusIndicators;
|
43
|
+
}
|
44
|
+
);
|
45
|
+
}
|
46
|
+
|
47
|
+
document.title = document.getElementById("title").textContent =
|
48
|
+
chrome.i18n.getMessage("optionsTitle") +
|
49
|
+
" - " +
|
50
|
+
chrome.i18n.getMessage("extensionName");
|
51
|
+
document.getElementById("whitelist_label").textContent =
|
52
|
+
chrome.i18n.getMessage("optionsWhitelist");
|
53
|
+
document.getElementById("status_indicators_label").textContent =
|
54
|
+
chrome.i18n.getMessage("optionStatusIndicators");
|
55
|
+
|
56
|
+
document
|
57
|
+
.getElementById("save")
|
58
|
+
.setAttribute("value", chrome.i18n.getMessage("optionsButton"));
|
59
|
+
document.getElementById("status_saved").textContent =
|
60
|
+
chrome.i18n.getMessage("optionsSaved");
|
61
|
+
|
62
|
+
document.addEventListener("DOMContentLoaded", restoreOptions);
|
63
|
+
document.getElementById("save").addEventListener("click", saveOptions);
|