Skip to content

Commit

Permalink
Обновлен внешний вид кнопок функций в тесте
Browse files Browse the repository at this point in the history
Добавлены новые функции: перезагрузка страницы, скачивание страницы, принудительное сохранение в moodle, изменен способ привязки события к кнопке импорта ответов
  • Loading branch information
tankalxat34 committed Jan 28, 2023
1 parent c0f09df commit 72187ad
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 35 deletions.
2 changes: 1 addition & 1 deletion manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"name": "LMS RANEPA Helper",
"description": "Облегчает работу с СДО РАНХиГС",
"author": "tankalxat34",
"version": "0.1.2",
"version": "0.1.3",
"homepage_url": "https://github.com/tankalxat34/lms-ranepa-helper",


Expand Down
65 changes: 49 additions & 16 deletions nodes/mod/quiz/attempt/mainBlock.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,25 +13,58 @@ <h4>Поиск в Яндекс</h4>

</form>
</div>
<br>
<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="document.helper.downloadFileFromText('name.txt', 'hello world')"><i class="fa fa-download"></i> Экспорт в JSON</a> -->
<a id="helper-btn-export_answers" href="#" class="btn btn-primary" onclick="exportAnswers()"><i class="fa fa-download"></i> Экспорт в JSON</a>
</div>
</div>


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

<button title="Сохраните свои ответы в СДО, чтобы после перезагрузки страницы не потерять их" class="btn btn-secondary" id="helper-btn-m_save_changes-2" onclick="M.mod_quiz.autosave.save_changes(); showAlert('Ответы успешно сохранены в Moodle')"><i class="fa fa-save"></i> Сохранить в Moodle</button>

<a title="Скачать страницу" onclick="this.href='data:text/html;charset=UTF-8,'+encodeURIComponent(document.documentElement.outerHTML); showAlert('Страница успешно скачана в формате HTML')" href="#" class="btn btn-secondary" download="page.html"><i class="fa fa-download"></i> Сохранить страницу</a>

<button title="Перезагрузить страницу" class="btn btn-secondary" id="helper-btn-refresh-2" onclick="M.mod_quiz.autosave.save_changes(); window.location.reload(); showAlert('Ответы сохранены, форма перезагружается... Пожалуйста, подождите...')"><i class="fa fa-refresh"></i> Перезагрузить</button>

<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 id="helper-test_services-3">
<h4>Импорт ответов</h4>
<small style="color: green;">Функционал в разработке, может работать нестабильно</small>
<p>Если у вас есть json-файл ответов, полученный от одногруппника, вы можете загрузить его сюда, чтобы проставить ответы в этом тесте автоматически</p>
<!-- <a id="helper-btn-export_answers" href="#" class="btn btn-primary" onclick="document.helper.downloadFileFromText('name.txt', 'hello world')"><i class="fa fa-download"></i> Экспорт в JSON</a> -->
<!-- <a id="helper-btn-import_answers" href="#" class="btn btn-primary" onclick="document.helper.importAnswers()"><i class="fa fa-arrow-up"></i> Импорт из JSON</a> -->
<input type="file" id="helper-btn-import_answers" class="btn btn-secondary" accept="application/json"></input>
<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>
</div>
</details>
</div>
</div>

Expand Down
36 changes: 18 additions & 18 deletions scripts/mod/quiz/attempt/attempt_front.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,27 @@ function clearResponseForm() {
/*
Очищает всю форму
*/
document.querySelector("#responseform").reset()
document.querySelector(M.mod_quiz.autosave.SELECTORS.QUIZ_FORM).reset()

// document.querySelectorAll("a[class='btn btn-link ml-3 mt-n1 mb-n1']")

for (const entry of new FormData(document.querySelector("#responseform"))) {
// output = entry[0] + "=" + entry[1] + "\r";
for (let clearBtn of document.querySelectorAll("a[class='btn btn-link ml-3 mt-n1 mb-n1']")) {
clearBtn.click()
}

for (const entry of new FormData(document.querySelector(M.mod_quiz.autosave.SELECTORS.QUIZ_FORM))) {

let name = entry[0]
let value = entry[1]


if (name.slice(0, 1) === "q" && "0123456789".includes(name.slice(1, 2)) && !name.includes("sequencecheck")) {
document.querySelector(`input[name='${name}']`).checked = false
// console.log(name, value)
// console.log(document.querySelector(`input[type='checkbox'][name='${name}']`))
try {
document.querySelector(`input[name='${name}']`).checked = false
} catch {
null;
}
}
}
}
Expand All @@ -33,20 +42,14 @@ function exportAnswers() {
let filename = `attempt${M.cfg.sesskey}_${new Date().getTime()}.json`


for (const entry of new FormData(document.querySelector("#responseform"))) {
for (const entry of new FormData(document.querySelector(M.mod_quiz.autosave.SELECTORS.QUIZ_FORM))) {
// output = entry[0] + "=" + entry[1] + "\r";

let id = entry[0]
let value = entry[1]

if (id.slice(0, 1) === "q" && "0123456789".includes(id.slice(1, 2)) && !id.includes("sequencecheck")) {
// let output = {
// name: id,
// selected: value,
// backend_number: id.split("_")[0].split(":")[1],
// querySelector: "0123456789".includes(id.slice(-1)) ? "#" + (id).replace(":", "\\:") : "#" + (id + value).replace(":", "\\:"),
// }
// questionsObject.push(output)

questionsObject[id] = {
backend_number: id.split("_")[0].split(":")[1],
selected: value,
Expand All @@ -62,7 +65,6 @@ function exportAnswers() {

exportData.test_id = _test_id
exportData.questions = questionsObject
// exportData.test_id = id.slice(1, 8)

showAlert("Скачанный файл вы можете отправить своим одногруппникам, у которых установлен LMS RANEPA Helper. С помощью расширения они смогут в этот тест загрузить все ответы из полученного json файла. Скачать расширение можно <a href=\"https://github.com/tankalxat34/lms-ranepa-helper\" target=\"_blank\">здесь</a>. Также можно <a href=\"https://vk.com/share.php?url=https://github.com/tankalxat34/lms-ranepa-helper\" target=\"_blank\">поделиться расширением</a>.")

Expand Down Expand Up @@ -147,10 +149,8 @@ function importAnswers(e) {


// entrypoint
window.onload = () => {
document.getElementById("helper-btn-import_answers").onchange = e => {
importAnswers(e);
}
window.onload = () => {
$('#helper-btn-import_answers').on('change', function(e) { importAnswers(e) })

document.querySelector(".submitbtns").innerHTML += ` <a id="helper-btn-export_answers-2" href="#" class="btn btn-secondary" onclick="exportAnswers()"><i class="fa fa-download"></i> Экспорт в JSON</a>`
}
Expand Down
1 change: 1 addition & 0 deletions scripts/my/my.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ fetch(chrome.runtime.getURL("nodes/my/mainBlock.html"))
<br>
<a href="${json[0].zipball_url}" class="btn btn-primary"><i class="fa fa-download"></i> Скачать v${json[0].name}</a>
</details>`.replaceAll("\r\n", "<br>")
showAlert(`Доступна новая версия расширения LMS RANEPA Helper: ${json[0].name}<br><br>Настоятельно рекомендуется обновить его до актуального состояния, чтобы получить доступ к последним функциям и возможностям!`, "warning")
} else {
extentionNode.innerHTML = `<small style="color: grey;">Установлена актуальная версия</small>`
}
Expand Down

0 comments on commit 72187ad

Please sign in to comment.