Skip to content

Commit

Permalink
Общие правки опций, добавлена возможность менять action в form
Browse files Browse the repository at this point in the history
  • Loading branch information
tankalxat34 committed Feb 21, 2023
1 parent 00a6129 commit 93ee5fd
Show file tree
Hide file tree
Showing 5 changed files with 122 additions and 89 deletions.
31 changes: 19 additions & 12 deletions default/options/options.html
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,15 @@ <h4>Сервисы и возможности</h4>

<!-- <div class="dropdown-divider"></div> -->

<h5>Общее</h5>

<div class="custom-control custom-switch" id="helper-settings-div-disable_yametrika" title="Включив эту настройку ваши действия в СДО больше не будут отправляться разработчикам СДО. Обычно Яндекс Метрика нужна для сбора данных о действиях пользователей на сайте">
<input type="checkbox" class="custom-control-input" id="helper-settings-disable_yametrika" >
<label class="custom-control-label" for="helper-settings-disable_yametrika">Отключить Яндекс Метрику</label>
</div>

<div class="separator"></div>

<h5>Главная страница</h5>

<div class="custom-control custom-switch" id="helper-settings-div-show_clck">
Expand All @@ -92,26 +101,24 @@ <h5>Главная страница</h5>
<input type="checkbox" class="custom-control-input" id="helper-settings-show_courses_filters" >
<label class="custom-control-label" for="helper-settings-show_courses_filters">Отображать фильтры по курсам</label>
</div>


<div class="separator"></div>

<div class="custom-control custom-switch" id="helper-settings-div-disable_yametrika" title="Включив эту настройку ваши действия в СДО больше не будут отправляться разработчикам СДО. Обычно Яндекс Метрика нужна для сбора данных о действиях пользователей на сайте">
<input type="checkbox" class="custom-control-input" id="helper-settings-disable_yametrika" >
<label class="custom-control-label" for="helper-settings-disable_yametrika">Отключить Яндекс Метрику</label>
</div>

<div class="separator"></div>


<h4>Провинутые настройки</h4>

<h5>Страница с попыткой</h5>

<div class="custom-control custom-switch" id="helper-settings-div-changeable_form_action" title="Включить возможность изменения ссылки для отправки теста. Функция полезна в том случае, если вы хотите изучить тело запроса формы с тестом. Для таких целей подходит webhook.site">
<input type="checkbox" class="custom-control-input" id="helper-settings-changeable_form_action" >
<label class="custom-control-label" for="helper-settings-changeable_form_action">Включить возможность изменения URL для POST запроса в тестах</label>
</div>

<div class="custom-control custom-switch" id="helper-settings-div-show_hidden_inputs" title="Всегда отображать открытые поля ввода в тестах">
<div class="custom-control custom-switch" id="helper-settings-div-show_hidden_inputs" title="Всегда отображать скрытые поля ввода в тестах. Обычно в таких полях содержится информация, необходимая для отправки формы. Не рекомендуется редактировать эти поля!">
<input type="checkbox" class="custom-control-input" id="helper-settings-show_hidden_inputs">
<label class="custom-control-label" for="helper-settings-show_hidden_inputs">Отображать скрытые input теги в тестах</label>
</div>

<h4>Провинутые настройки</h4>
<p>Настройки для данной секции в разработке</p>
</div>

<!-- <button id="helper-settings-btn_save" class="btn btn-primary m-3" style="max-width: 30%;">Сохранить</button> -->
Expand Down
59 changes: 20 additions & 39 deletions nodes/mod/quiz/attempt/mainBlock.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,9 @@ <h4>Поиск в Яндекс</h4>

</form>
</div>
</div>
</div>

<h5 class="mt-3">Работа с формой</h5>

<div class="card" style="margin-top: 20px;">
<div class="card-body">
<button title="Экспортируйте свои ответы в JSON файл и отправьте его одногруппникам, чтобы помочь в прохождении этого теста" id="helper-btn-export_answers-2" class="btn btn-secondary" onclick="exportAnswers()"><i class="fa fa-arrow-down"></i> Экспорт ответов</button>

<label title="Импортируйте ответы, загрузив JSON файл сюда" for="helper-btn-import_answers" style="margin-top: 8px;" class="btn btn-secondary"><i class="fa fa-arrow-up"></i> Импорт ответов</label>
Expand All @@ -31,44 +28,28 @@ <h4>Поиск в Яндекс</h4>

<button title="Удалить все ответы" class="btn btn-secondary" id="helper-btn-clear_form-2" onclick="clearResponseForm(); showAlert('Форма была очищена')"><i class="fa fa-remove"></i> Очистить форму</button>

<details>
<summary>Описание функционала</summary>
<p><i>Если некоторые из представленных сервисов не работают - нажмите <a href="#" onclick="M.mod_quiz.autosave.save_changes(); window.location.reload()"><b>сюда</b></a>.</i></p>
<div class="d-sm-flex align-items-center">
<div id="helper-test_services-2">
<h4>Экспорт ответов</h4>
<small style="color: green;">Функционал в разработке, может работать нестабильно</small>
<p>Экспортируйте свои вопросы и ответы в машиночитаемый файл и отправьте его сокурсникам, чтобы помочь им пройти этот же тест</p>
<a id="helper-btn-export_answers" href="#" class="btn btn-primary" onclick="exportAnswers()"><i class="fa fa-download"></i> Экспорт в JSON</a>
</div>
<br>
<div id="helper-test_services-3">
<h4>Импорт ответов</h4>
<small style="color: green;">Функционал в разработке, может работать нестабильно</small>
<p>Если у вас есть json-файл ответов, полученный от одногруппника, вы можете загрузить его сюда, чтобы проставить ответы в этом тесте автоматически</p>
<label for="helper-btn-import_answers" class="btn btn-secondary"><i class="fa fa-arrow-up"></i> Импорт ответов</label>

<input type="file" id="helper-btn-import_answers" style="display: none;" class="btn btn-secondary" accept="application/json" onload="main_attempt_front()"></input>
</div>
</div>
<br>
<div class="d-sm-flex align-items-center">
<div id="helper-test_services-4">
<h4>Принудительное сохранение</h4>
<p>Нажмите на эту кнопку если хотите, чтобы ваши ответы были мгновенно сохранены в СДО. Функция полезна, когда вам необходимо прерваться и позднее продолжить выполнение бесконечного по времени теста.</p>
<button class="btn btn-primary" id="helper-btn-m_save_changes" onclick="M.mod_quiz.autosave.save_changes(); showAlert('Ответы успешно сохранены в Moodle')"><i class="fa fa-save"></i> Сохранить в Moodle</button>
</div>
<div id="helper-test_services-4">
<h4>Очистить форму</h4>
<p>Нажмите сюда, если вы действительно хотите удалить все ответы, которые вы дали в этом тесте.</p>
<button class="btn btn-secondary" id="helper-btn-m_save_changes" onclick="clearResponseForm(); showAlert('Форма была очищена')"><i class="fa fa-remove"></i> Очистить форму</button>
</div>
</div>
</details>
<div id="helper-settings-changeable_form_action" class="mt-3" hidden>
<h5>Ссылка для отправки формы</h5>
<p>Вставьте сюда ссылку, по которой будет отправлено содержимое этой формы. Настройка применяется автоматически</p>
<input type="url" class="form-control" id="helper-settings-changeable_form_action-input" placeholder="">
</div>

<input type="file" id="helper-btn-import_answers" style="display: none;" class="btn btn-secondary" accept="application/json" onload="main_attempt_front()"></input>
</div>
</div>

<!--



<!-- +
<div id="helper-settings-changeable_form_action" class="block card mb-5">
<div class="card-body" id="yui_3_17_2_1_1677001253807_1111">
<h5 id="yui_3_17_2_1_1677001253807_1110">Ссылка для отправки формы</h5>
<input type="url" class="form-control" id="yui_3_17_2_1_1677001253807_1084" data-initial-value="">
</div>
</div>
for (const entry of new FormData(document.querySelector("#responseform"))) {
output = entry[0] + "=" + entry[1] + "\r";
console.log(output)
Expand Down
27 changes: 0 additions & 27 deletions scripts/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,39 +83,12 @@ function addButtonToServices() {
navbar.append(btnServices)
}

function showAlert(text, type_of_alert = "info", classList = "alert alert-%type_of_alert% alert-block fade in alert-dismissible") {

html = `${text}
<button type="button" class="close" data-dismiss="alert">
<span aria-hidden="true">×</span>
<span class="sr-only">Отклонить это уведомление</span>
</button>`

div = document.createElement("div")
div.classList = classList.replace("%type_of_alert%", type_of_alert)
div.role = "alert"
div.innerHTML = html

document.querySelector("#user-notifications").appendChild(div)
}


function copyToClipboard(element) {
navigator.clipboard.writeText($(element).val())
}


function downloadFileFromText(filename, content) {
var a = document.createElement('a');
var blob = new Blob([content], { type: "text/plain;charset=UTF-8" });
a.href = window.URL.createObjectURL(blob);
a.download = filename;
a.style.display = 'none';
document.body.appendChild(a);
a.click();
delete a;
}

/**
* Добавляет новые кнопки в dropdown menu
*/
Expand Down
28 changes: 28 additions & 0 deletions scripts/common_front.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,31 @@ function regex_findall(regex, str) {
}
return result;
}

function showAlert(text, type_of_alert = "info", classList = "alert alert-%type_of_alert% alert-block fade in alert-dismissible") {

html = `${text}
<button type="button" class="close" data-dismiss="alert">
<span aria-hidden="true">×</span>
<span class="sr-only">Отклонить это уведомление</span>
</button>`

div = document.createElement("div")
div.classList = classList.replace("%type_of_alert%", type_of_alert)
div.role = "alert"
div.innerHTML = html

document.querySelector("#user-notifications").appendChild(div)
}


function downloadFileFromText(filename, content) {
var a = document.createElement('a');
var blob = new Blob([content], { type: "text/plain;charset=UTF-8" });
a.href = window.URL.createObjectURL(blob);
a.download = filename;
a.style.display = 'none';
document.body.appendChild(a);
a.click();
delete a;
}
66 changes: 55 additions & 11 deletions scripts/mod/quiz/attempt/attempt.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,13 +100,24 @@ function fillButtons(qtext = ".qtext") {



function addMainBlock() {
/*
Добавляет блок для управления тестом
- поделиться ответами
- заполнить ответами
-
*/
/**
* Добавляет блок для управления тестом
// */
// function addMainBlock() {
// let mainBlock = document.createElement("div")
// mainBlock.classList = "col-12 pt-3 pb-3"

// return fetch(chrome.runtime.getURL("nodes/mod/quiz/attempt/mainBlock.html"))
// .then(res => res.text())
// .then(html => {
// mainBlock.innerHTML = html;
// document.getElementById("page-header").append(mainBlock)
// })
// }


function main() {
fillButtons();

let mainBlock = document.createElement("div")
mainBlock.classList = "col-12 pt-3 pb-3"
Expand All @@ -115,12 +126,45 @@ function addMainBlock() {
.then(res => res.text())
.then(html => {
mainBlock.innerHTML = html;
document.getElementById("page-header").append(mainBlock)
document.getElementById("page-header").append(mainBlock);
})
.then(() => {
// get option names from Chrome Storage
chrome.storage.sync.get(["_option_names_array"], (options) => {

var _opt_names = options["_option_names_array"];

// load all options from Chrome Storage
chrome.storage.sync.get(_opt_names, (options) => {

if (options["helper-settings-show_hidden_inputs"]) {
let hidden_inputs = document.querySelectorAll("input[type='hidden']")
for (let inp of hidden_inputs) {
inp.type = "text";
}
};

if (options["helper-settings-changeable_form_action"]) {

const default_formaction = document.querySelector("#responseform").action;

let form_action_input = document.querySelector("#helper-settings-changeable_form_action-input");

document.querySelector("#helper-settings-changeable_form_action").hidden = false;
form_action_input.placeholder = document.querySelector("#responseform").action;

form_action_input.addEventListener("keyup", () => {
document.querySelector("#responseform").action = form_action_input.value;

if (form_action_input.value === "") document.querySelector("#responseform").action = default_formaction;
})
}
})
})
}

})


fillButtons();
addMainBlock();
}

main();

0 comments on commit 93ee5fd

Please sign in to comment.