NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @namespace https://openuserjs.org/users/viethung0823
// @name PTIT Tools
// @version 0.2
// @description Log answers from question blocks
// @author You
// @match https://lms.pttc1.edu.vn/mod/quiz/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=edu.vn
// @grant GM_setClipboard
// @license MIT
// ==/UserScript==
// =lOpenUserJS==
// @author viethung0823
// ==/0penUserJS==
if (window.location.href.includes("mod/quiz/review.php?attempt")) {
// Get all question blocks
const questionBlocks = document.querySelectorAll(".que");
let logContent = "";
// Loop over each question block
Array.from(questionBlocks).forEach((questionBlock) => {
// Get the question
const question = questionBlock.querySelector(".qtext p")?.innerText;
const slugId = question.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "");
// Get the correct answer
const correctAnswer = questionBlock.querySelector(".rightanswer p")?.innerText;
// Add the question ID, question and correct answer to the log content
logContent += `"${slugId}", "${question}", "${correctAnswer}"\n`;
});
// Use GM_setClipboard to set the clipboard content
GM_setClipboard(logContent);
alert("Content copied to clipboard");
}
else if (window.location.href.includes("mod/quiz/attempt.php?attempt")) {
// log questions
const questionBlocks = document.querySelectorAll(".que");
let logContent = "";
// Loop over each question block
Array.from(questionBlocks).forEach((questionBlock, index) => {
const questionElement = questionBlock.querySelector(".qtext p");
const question = questionBlock.querySelector(".qtext p")?.innerText;
const slugId = question.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "");
if (questionElement) {
// Create a new anchor element
const link = document.createElement("a");
// Set the link's properties
link.textContent = "Check Answer";
// TODO: update the link to https://ptit-pool-data.vercel.app/question/${encodeURIComponent(slugId)}
link.href = `https://ptit-pool-data.vercel.app/api/question/${encodeURIComponent(slugId)}`;
link.style.marginLeft = "10px"; // Add some left margin for spacing
// Append the link to the question element
questionElement.appendChild(link);
}
const answerElements = questionBlock.querySelectorAll(".answer .d-flex");
const answers = Array.from(answerElements).map((answerElement) => {
const answerNumber = answerElement.querySelector(".answernumber").innerText;
const answerText = answerElement.querySelector(".flex-fill p").innerText;
return `${answerNumber} ${answerText}`;
});
// Add the question ID, question and correct answer to the log content
logContent += `Question ${index + 1}: ${question}\n\n${answers.join("\n")}\n\n`;
});
// Use GM_setClipboard to set the clipboard content
GM_setClipboard(logContent);
alert("Content copied to clipboard");
}
// Copy the log content to the clipboard
// let textarea = document.createElement("textarea");
// textarea.value = logContent;
// document.body.appendChild(textarea);
// textarea.select();
// document.execCommand("copy");
// document.body.removeChild(textarea);