diff --git a/js/auto_mode.js b/js/auto_mode.js new file mode 100644 index 0000000..4c1c278 --- /dev/null +++ b/js/auto_mode.js @@ -0,0 +1,47 @@ +//По окончании загрузки документа вызывается функция +$(document).ready(function() { + var path = window.location.pathname; + var page = path.split("/").pop(); + if(page === 'index.html') { + //При получении команды 'auto_mode' заполняет ответы + chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { + if(request.command==="auto_mode") { + auto_mode(); + } + }); + //Если выбрана функция автоматического показа ответов запускается функция заполнения ответов + chrome.storage.sync.get(['auto_mode'], function(items) { + var choise=items['auto_mode']; + if(choise == undefined) choise = true; + if(choise){ + var timerId = setInterval(auto_mode, 2000); + setTimeout(function() { + clearInterval(timerId); + }, 7000); + } + }); + } +}) +//Заполнить ответы +function auto_mode() { + var test,answers; + + test = document.getElementsByClassName('selectBox'); + answers = document.getElementsByTagName('b'); + if(test&&answers) fill_selectbox(test,answers); +} +//Заполнить задания, где есть selectBox +function fill_selectbox(test,answers) { + var test_arr = Array.prototype.slice.call(test); + var answers_arr = Array.prototype.slice.call(answers); + if(answers_arr)answers_arr.forEach(function(item, i) { + var a = item.innerHTML; + Array.prototype.slice.call(test_arr[i].options).forEach(function(item) { + // alert(item.value); + if(item.value.includes(a)) { + var b = item.value.replace(a, ''); + if( b.search(/[a-zA-Z]/) === -1 ) test_arr[i].value = item.value; + } + }); + }); +} \ No newline at end of file diff --git a/js/background.js b/js/background.js index 4183c14..49bc8f6 100644 --- a/js/background.js +++ b/js/background.js @@ -1,5 +1,5 @@ -chrome.storage.sync.get(['show_answers','simple_mode','true_answers'], function(items) { - var choise=items['show_answers']; +chrome.storage.sync.get(['show_mode','simple_mode','true_mode'], function(items) { + var choise=items['show_mode']; if(choise == undefined) choise = true; if(choise) chrome.browserAction.setBadgeText({text: "on"}); else chrome.browserAction.setBadgeText({text: "off"}); @@ -8,7 +8,7 @@ chrome.storage.sync.get(['show_answers','simple_mode','true_answers'], function( if(choise == undefined) choise = false; if(choise) chrome.browserAction.setBadgeText({text: "on"}); - choise=items['true_answers']; + choise=items['true_mode']; if(choise == undefined) choise = false; if(choise) chrome.browserAction.setBadgeText({text: "on"}); }); diff --git a/js/show_answers.js b/js/show_mode.js similarity index 92% rename from js/show_answers.js rename to js/show_mode.js index b6787d1..2004a84 100644 --- a/js/show_answers.js +++ b/js/show_mode.js @@ -10,8 +10,8 @@ $(document).ready(function() { } }); //Если выбрана функция автоматического показа ответов заппускается функция показа ответов - chrome.storage.sync.get(['show_answers'], function(items) { - var choise=items['show_answers']; + chrome.storage.sync.get(['show_mode'], function(items) { + var choise=items['show_mode']; if(choise == undefined) choise = true; if(choise){ var timerId = setInterval(show, 2000); diff --git a/js/true_answers.js b/js/true_mode.js similarity index 99% rename from js/true_answers.js rename to js/true_mode.js index 585920c..f79880a 100644 --- a/js/true_answers.js +++ b/js/true_mode.js @@ -1,5 +1,5 @@ -chrome.storage.sync.get(['true_answers'], function(items) { - var choise=items['true_answers']; +chrome.storage.sync.get(['true_mode'], function(items) { + var choise=items['true_mode']; if(choise == undefined) choise = false; if(choise) on(); }); diff --git a/manifest.json b/manifest.json index 5505e43..30695ef 100644 --- a/manifest.json +++ b/manifest.json @@ -14,7 +14,7 @@ "default_popup": "popup/popup.html" }, "background": { - "scripts": ["js/background.js", "js/true_answers.js" ] + "scripts": ["js/background.js", "js/true_mode.js" ] }, "content_scripts": [ { @@ -23,7 +23,7 @@ "run_at": "document_end" },{ "matches": [ "*://www.cambridgelms.org/*" ], - "js": [ "js/jquery.js", "js/show_answers.js" ], + "js": [ "js/jquery.js", "js/show_mode.js", "js/auto_mode.js" ], "run_at": "document_idle", "all_frames": true } diff --git a/popup/popup.html b/popup/popup.html index e867d4b..2bea787 100644 --- a/popup/popup.html +++ b/popup/popup.html @@ -10,24 +10,29 @@

LMS Answers

-
- - +
+ +
-
- - +
+ +
- - + + +
+
+ +
+ +
-
diff --git a/popup/popup.js b/popup/popup.js index 49d6135..12e97ae 100644 --- a/popup/popup.js +++ b/popup/popup.js @@ -4,7 +4,12 @@ document.addEventListener('DOMContentLoaded', function() { showButton.addEventListener('click', function() { show(); }, false); - var showChecker = document.getElementById('show_answers'); + var autoChecker = document.getElementById('auto_mode'); + autoChecker.addEventListener('change', function() { + saveOptions(); + auto_mode(); + }, false); + var showChecker = document.getElementById('show_mode'); showChecker.addEventListener('change', function() { saveOptions(); if(showChecker.checked)show(); @@ -14,18 +19,18 @@ document.addEventListener('DOMContentLoaded', function() { saveOptions(); simple_mode(); }, false); - var trueChecker = document.getElementById('true_answers'); + var trueChecker = document.getElementById('true_mode'); trueChecker.addEventListener('change', function() { saveOptions(); - autotrue(); + true_mode(); }, false); }, false); function loadOptions() { - chrome.storage.sync.get(['show_answers','simple_mode','true_answers'], function(items) { - var choise=items['show_answers']; + chrome.storage.sync.get(['show_mode','simple_mode','true_mode','auto_mode'], function(items) { + var choise=items['show_mode']; if(choise == undefined) choise = true; - var select = document.getElementById("show_answers"); + var select = document.getElementById("show_mode"); select.checked = choise; if(select.checked) chrome.browserAction.setBadgeText({text: "on"}); else chrome.browserAction.setBadgeText({text: "off"}); @@ -36,17 +41,23 @@ function loadOptions() { select.checked = choise; if(select.checked) chrome.browserAction.setBadgeText({text: "on"}); - choise=items['true_answers']; + choise=items['true_mode']; if(choise == undefined) choise = false; - var select = document.getElementById("true_answers"); + var select = document.getElementById("true_mode"); + select.checked = choise; + if(select.checked) chrome.browserAction.setBadgeText({text: "on"}); + + choise=items['auto_mode']; + if(choise == undefined) choise = false; + var select = document.getElementById("auto_mode"); select.checked = choise; if(select.checked) chrome.browserAction.setBadgeText({text: "on"}); }); } function saveOptions() { - var select = document.getElementById("show_answers"); - chrome.storage.sync.set({'show_answers': select.checked}); + var select = document.getElementById("show_mode"); + chrome.storage.sync.set({'show_mode': select.checked}); if(select.checked) chrome.browserAction.setBadgeText({text: "on"}); else chrome.browserAction.setBadgeText({text: "off"}); @@ -54,8 +65,12 @@ function saveOptions() { chrome.storage.sync.set({'simple_mode': select.checked}); if(select.checked) chrome.browserAction.setBadgeText({text: "on"}); - select = document.getElementById("true_answers"); - chrome.storage.sync.set({'true_answers': select.checked}); + select = document.getElementById("true_mode"); + chrome.storage.sync.set({'true_mode': select.checked}); + if(select.checked) chrome.browserAction.setBadgeText({text: "on"}); + + select = document.getElementById("auto_mode"); + chrome.storage.sync.set({'auto_mode': select.checked}); if(select.checked) chrome.browserAction.setBadgeText({text: "on"}); } @@ -66,6 +81,13 @@ function show() { }); } +function auto_mode() { + var query = { active: true, currentWindow: true }; + chrome.tabs.query(query, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, {command: "auto_mode"}); + }); +} + function simple_mode() { var select = document.getElementById("simple_mode"); var query = { active: true, currentWindow: true }; @@ -77,9 +99,9 @@ function simple_mode() { }); } -function autotrue() { +function true_mode() { alert("Чтобы обновления вступили в силу обновите страницу"); - var select = document.getElementById("true_answers"); + var select = document.getElementById("true_mode"); if(select.checked===true) chrome.runtime.sendMessage({msg: "auto_on"}) else diff --git a/popup/popup_style.css b/popup/popup_style.css index 336ae5a..b1406ab 100644 --- a/popup/popup_style.css +++ b/popup/popup_style.css @@ -55,16 +55,13 @@ body { transition: 0.2s ease-out; } .style label { + will-change: transform; height: 30px; line-height: 30px; transition: all 0.2s; border-radius: 2rem; } -.style label:before { - content: attr(data-on-text); } -.style label:after { - content: attr(data-off-text); } -.style input[type=checkbox] + label { +.style input[type=checkbox] ~ label { width: 210px; background: #FF5335; } @@ -79,40 +76,43 @@ body { .style input[type=checkbox]:checked ~ .button-add__icon:after { transform: translate(30%) rotate(-45deg); } -.style .button-add__icon { +.button-add__icon { position: absolute; left: 0; top: 0; height: 30px; width: 30px; } -.style .button-add__icon:before, .style .button-add__icon:after { +.button-add__icon:before, .button-add__icon:after { height: 3px; border-radius: 3px; background: #fff; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1); } -.style .button-add__icon:before { +.button-add__icon:before { width: 17px; transform: rotate(90deg); } -.style .button-add__icon:after { +.button-add__icon:after { width: 17px; transform: rotate(0); } .style_1 label:before, .style_1 label:after { + content: attr(data-text); position: absolute; - right: 0.9rem; - transition: all 0.2s .15s ease-out; } + right: 0.9rem; } .style_2 label:before, .style_2 label:after { + content: attr(data-text); position: absolute; - right: 1.3rem; - transition: all 0.2s .15s ease-out; } + right: 1.3rem; } .style_3 label:before, .style_3 label:after { + content: attr(data-text); position: absolute; - right: 1.4rem; - transition: all 0.2s .15s ease-out; } - - + right: 1.4rem; } +.style_4 label:before, .style_4 label:after { + content: attr(data-text); + position: absolute; + right: 1.9rem; } button { + will-change: transform; text-decoration: none; outline: none; display: inline-block;