Version 1.1.3

Убрал мерцание текста в меню расширения

Добавил заготовку для автоматического заполнения тестов(На стадии тестирования, работает только часть заданий)
This commit is contained in:
FutureX 2018-04-22 16:05:30 +03:00
parent e9f4ad855c
commit bb63305744
8 changed files with 123 additions and 49 deletions

47
js/auto_mode.js Normal file
View File

@ -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;
}
});
});
}

View File

@ -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"});
});

View File

@ -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);

View File

@ -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();
});

View File

@ -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
}

View File

@ -10,24 +10,29 @@
<div class="shadow title_text">
<h1>LMS Answers</h1>
</div>
<div class="button-add style style_1">
<input id="show_answers" type="checkbox">
<label for="show_answers" data-on-text="Автоматический режим" data-off-text="Автоматический режим"></label>
<div class="button-add style style_4">
<input id="show_mode" type="checkbox">
<label for="show_mode" data-text="Показывать ответы"></label>
<div class="button-add__icon"></div>
</div>
<div class="button-add style style_2">
<input id="simple_mode" type="checkbox">
<label for="simple_mode" data-on-text="Упрощенная страница" data-off-text="Упрощенная страница"></label>
<div class="button-add style style_1">
<input id="auto_mode" type="checkbox">
<label for="auto_mode" data-text="Автоматический режим"></label>
<div class="button-add__icon"></div>
</div>
<div class="button-add style style_3">
<input id="true_answers" type="checkbox">
<label for="true_answers" data-on-text="Максимальные баллы" data-off-text="Максимальные баллы"></label>
<input id="true_mode" type="checkbox">
<label for="true_mode" data-text="Максимальные баллы"></label>
<div class="button-add__icon"></div>
</div>
<div class="button-add style style_2">
<input id="simple_mode" type="checkbox">
<label for="simple_mode" data-text="Упрощенная страница"></label>
<div class="button-add__icon"></div>
</div>
<div class="">
<button id="showBtn">Показать ответы</button>
</div>

View File

@ -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

View File

@ -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;