Compare commits

..

No commits in common. "master" and "1.22.0" have entirely different histories.

10 changed files with 3907 additions and 3599 deletions

View File

@ -1,3 +0,0 @@
node_modules
web-ext-artifacts
vendor

View File

@ -1,20 +0,0 @@
{
"env": {
"browser": true,
"es6": true,
"commonjs": true
},
"extends": [
"standard"
],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parserOptions": {
"ecmaVersion": 2018
},
"rules": {
"no-undef": 2
}
}

View File

@ -1,63 +1,59 @@
console.log('SOMtodayn\'t background script loaded') console.log('SOMtodayn\'t background script loaded')
// Read array from local storage // Read array from local storage
function getSlogans () { function getSlogans() {
let slogans var slogans;
let tonight if (localStorage.getItem('SOMtodayntSlogans') != null) {
slogans = JSON.parse(localStorage.getItem('SOMtodayntSlogans'));
if (localStorage.getItem('SOMtodayntSlogans') != null) { tonight = JSON.parse(localStorage.getItem('SOMtonight'));
slogans = JSON.parse(localStorage.getItem('SOMtodayntSlogans')) } else {
tonight = JSON.parse(localStorage.getItem('SOMtonight')) var slogans = [ "Welkom bij SOMtodayn't" ];
} else { var tonight = true;
slogans = ["Welkom bij SOMtodayn't"] localStorage.setItem('SOMtodayntSlogans', JSON.stringify(slogans));
tonight = true localStorage.setItem('SOMtonight', JSON.stringify(tonight));
localStorage.setItem('SOMtodayntSlogans', JSON.stringify(slogans)) }
localStorage.setItem('SOMtonight', JSON.stringify(tonight)) return [
} tonight,
slogans
return [ ];
tonight,
slogans
]
} }
// Update array in local storage // Update array in local storage
function setSlogans (array) { function setSlogans(array) {
localStorage.setItem('SOMtodayntSlogans', JSON.stringify(array)) localStorage.setItem('SOMtodayntSlogans', JSON.stringify(array));
return true return true;
} }
function setTonight (value) { function setTonight(value) {
localStorage.setItem('SOMtonight', JSON.stringify(value)) localStorage.setItem('SOMtonight', JSON.stringify(value));
return;
} }
// Handle requests // Handle requests
function handleMessage (request, sender, sendResponse) { function handleMessage(request, sender, sendResponse) {
let response var response;
// DEBUG // console.log(sender); // DEBUG // console.log(sender);
// DEBUG // console.log("Request: " + request.type) // DEBUG // console.log("Request: " + request.type)
switch (request.type) { switch (request.type) {
case 'get': case 'get':
response = getSlogans() response = getSlogans();
break break;
case 'setSlogans': case 'setSlogans':
response = setSlogans(request.value) response = setSlogans(request.value);
break break;
case 'setTonight': case 'setTonight':
response = setTonight(request.value) response = setTonight(request.value);
break break;
} }
// Send response to either the content script or popup // Send response to either the content script or popup
if (sender.tab) { if (sender.tab) {
browser.tabs.sendMessage(sender.tab.id, response) browser.tabs.sendMessage(sender.tab.id, response);
} else { } else {
sendResponse({ sendResponse({response: response});
response: response }
}) // DEBUG // console.log("Response: " + response)
}
// DEBUG // console.log("Response: " + response)
} }
browser.runtime.onMessage.addListener(handleMessage) browser.runtime.onMessage.addListener(handleMessage);

View File

@ -2,9 +2,6 @@
body { body {
background-color: #121212; background-color: #121212;
} }
a {
color: #01a299;
}
/* Login screen */ /* Login screen */
/* Background */ /* Background */
@ -203,32 +200,6 @@ div#detail-panel-wrapper {
.m-element:hover { .m-element:hover {
background-color: #2C2C2C; background-color: #2C2C2C;
} }
.m-wrapper.active {
margin: 0;
background:#333333;
}
.section .block {
background: #2c2c2c;
border: unset;
}
.blue.ribbon p, .blue.ribbon .icon-check, .blue.ribbon .icon-check-empty{
color: #e1e1e1 !important;
}
.huiswerkbijlage .simple-view, .section a.right {
background: #333333;
color: #e1e1e1;
border-radius: 3px;
border: unset;
}
.huiswerkbijlage .simple-view .bijlage-label, .section a.right {
color: #a5a5a5;
}
.huiswerkbijlage .simple-view:hover .bijlage-label, .section a.right:hover {
color: #e1e1e1;
background: unset;
border: unset;
}
/* Ions */ /* Ions */
.icon-geen-van-beide, .icon-huiswerk, .icon-leermiddelen, .icon-maatregel, .icon-studiewijzer, .icon-toets { .icon-geen-van-beide, .icon-huiswerk, .icon-leermiddelen, .icon-maatregel, .icon-studiewijzer, .icon-toets {
background-color: #01A299; background-color: #01A299;

View File

@ -1,63 +1,62 @@
console.log('Somtoday\'nt content script active') console.log('Somtoday\'nt content script active');
function changeSlogan (message) { function changeSlogan(message)
if (message === 'reload') { {
location.reload() if (message == 'reload') {
} else { location.reload();
const tonight = message[0]
const slogans = message[1]
// Set theme
console.log(tonight)
if (tonight) {
const cssUrl = browser.runtime.getURL('content/css/index.css')
const cssTag = `<link rel='stylesheet' href='${cssUrl}'>`
document.head.innerHTML += cssTag
}
// Select random slogan
console.log(`Loaded ${slogans.length} slogans`)
let sloganText
if (slogans.length >= 1) {
const random = Math.floor(Math.random() * slogans.length)
sloganText = slogans[random].toLowerCase()
console.log(`Slogan changed to: ${sloganText}`)
} else { } else {
sloganText = "welkom bij somtodayn't" tonight = message[0];
console.log('No slogans found') slogans = message[1];
// Set theme
console.log(tonight);
if (tonight) {
var cssUrl = browser.runtime.getURL("content/css/index.css");
var cssTag = `<link rel='stylesheet' href='${cssUrl}'>`;
document.head.innerHTML += cssTag;
}
// Select random slogan
console.log(`Loaded ${slogans.length} slogans`);
if (slogans.length >= 1) {
var random = Math.floor(Math.random() * slogans.length);
var sloganText = slogans[random].toLowerCase();
console.log(`Slogan changed to: ${sloganText}`);
} else {
var sloganText = "welkom bij somtodayn't";
console.log('No slogans found')
}
// Split the slogan into array
var sloganArray = sloganText.split(" ");
var slogan = {
white: '',
blue: ''
};
// Set the last word in the array to be blue
if (sloganArray.length > 1) {
slogan.blue = sloganArray.pop();
for (let index = 0; index < sloganArray.length; index++) {
slogan.white = slogan.white + sloganArray[index] + " ";
}
} else {
slogan.white = sloganArray;
}
// Edit HTML
document.getElementById('slogan').innerHTML =
`<span class="white block">${slogan.white}</span>
<span>${slogan.blue}</span>`
;
// Add a little credit
document.querySelectorAll('footer > span')[0].innerHTML = "Somtodayn't is een add-on door McArn.";
} }
// Split the slogan into array
const sloganArray = sloganText.split(' ')
const slogan = {
white: '',
blue: ''
}
// Set the last word in the array to be blue
if (sloganArray.length > 1) {
slogan.blue = sloganArray.pop()
for (let index = 0; index < sloganArray.length; index++) {
slogan.white = slogan.white + sloganArray[index] + ' '
}
} else {
slogan.white = sloganArray
}
// Edit HTML
document.getElementById('slogan').innerHTML =
`<span class="white block">${slogan.white}</span><span>${slogan.blue}</span>`
// Add a little credit
document.querySelectorAll('footer > span')[0].innerHTML = "Somtodayn't is een add-on door McArn."
}
} }
// Send request to background script // Send request to background script
browser.runtime.sendMessage({ browser.runtime.sendMessage({ type: "get"});
type: 'get'
})
// Receive response from background script // Receive response from background script
browser.runtime.onMessage.addListener(changeSlogan) browser.runtime.onMessage.addListener(changeSlogan);

View File

@ -2,8 +2,8 @@
"manifest_version": 2, "manifest_version": 2,
"name": "SOMtodayn't", "name": "SOMtodayn't",
"version": "1.22.0", "version": "1.20",
"author": "Arne van Iterson", "author": "McArn",
"description": "Changes the slogan on the login page of the school management system SOMtoday.", "description": "Changes the slogan on the login page of the school management system SOMtoday.",

5788
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,26 +0,0 @@
{
"name": "somtodaynt",
"version": "1.22.0",
"description": "Simple browser plugin for changing the slogan of SOMtoday",
"main": "./content/js/index.js",
"dependencies": {
"web-ext": "^5.4.1",
"webextension-polyfill": "^0.7.0"
},
"devDependencies": {
"eslint": "^7.15.0",
"eslint-config-standard": "^16.0.2",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.2.1"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://gitea.arnweb.nl/arne/somtodaynt.git"
},
"author": "Arne van Iterson",
"license": "ISC"
}

View File

@ -1,103 +1,106 @@
console.log("SOMtodayn't popup loaded.") console.log("SOMtodayn't popup loaded.");
let request var request;
var response;
// Get slogans from background script // Get slogans from background script
request = browser.runtime.sendMessage({ request = browser.runtime.sendMessage({
type: 'get' type: "get"
}) });
request.then(function (message) { request.then(function(message) {
const darkmode = message.response[0] var darkmode = message.response[0];
const sloganArray = message.response[1] var sloganArray = message.response[1];
// Add a slogan to the array // Add a slogan to the array
function addSlogan (value) { function addSlogan(value) {
sloganArray.push(value) sloganArray.push(value);
updateSlogans(sloganArray) updateSlogans(sloganArray);
} }
// Remove a slogan from the array // Remove a slogan from the array
function removeSlogan (id) { function removeSlogan(id) {
const array = [] var array = [];
if (sloganArray.length > 1) { if (sloganArray.length > 1) {
for (let index = 0; index < sloganArray.length; index++) { for (let index = 0; index < sloganArray.length; index++) {
const element = sloganArray[index] const element = sloganArray[index];
if (index !== id) { if (index != id) {
array.push(element) array.push(element);
}
}
updateSlogans(array);
} else {
window.alert("U kunt de laatste slogan niet verwijderen.");
}
}
// Send updated array to background script
function updateSlogans(array) {
request = browser.runtime.sendMessage({
type: "setSlogans",
value: array
});
request.then(function() {
location.reload();
}, handleError);
}
// Add event listener to checkbox
var checkbox = document.getElementById('tonight');
if (darkmode) {
checkbox.checked = true;
}
checkbox.addEventListener('click', function(event) {
// Update value in local storage
request = browser.runtime.sendMessage({
type: "setTonight",
value: checkbox.checked
});
// Reload all SOMtoday tabs
var reload = browser.tabs.query({});
reload.then(logTabs, onError);
});
// Find id of somtoday.nl tab
function logTabs(tabs) {
for (let tab of tabs) {
// Match only tabs with url somtoday.nl
if (tab.url.includes('somtoday.nl')) {
browser.tabs.sendMessage(tab.id, 'reload');
} }
} }
updateSlogans(array)
} else {
window.alert('U kunt de laatste slogan niet verwijderen.')
} }
}
// Send updated array to background script // Handle query errors
function updateSlogans (array) { function onError(error) {
request = browser.runtime.sendMessage({ console.log(`Error: ${error}`);
type: 'setSlogans',
value: array
})
request.then(function () {
location.reload()
}, handleError)
}
// Add event listener to checkbox
const checkbox = document.getElementById('tonight')
if (darkmode) {
checkbox.checked = true
}
checkbox.addEventListener('click', function (event) {
// Update value in local storage
request = browser.runtime.sendMessage({
type: 'setTonight',
value: checkbox.checked
})
// Reload all SOMtoday tabs
const reload = browser.tabs.query({})
reload.then(logTabs, onError)
})
// Find id of somtoday.nl tab
function logTabs (tabs) {
for (const tab of tabs) {
// Match only tabs with url somtoday.nl
if (tab.url.includes('somtoday.nl')) {
browser.tabs.sendMessage(tab.id, 'reload')
}
} }
}
// Handle query errors // Add existing slogans to list items in the popup
function onError (error) { var sloganList = '';
console.log(`Error: ${error}`) for (let index = 0; index < sloganArray.length; index++) {
} const element = sloganArray[index];
sloganList = sloganList + `<ul>${element}</ul>`;
}
document.getElementById('sloganList').innerHTML = sloganList;
// Add existing slogans to list items in the popup // Get value for new slogan
let sloganList = '' document.getElementById('sloganForm').addEventListener('submit', function(event) {
for (let index = 0; index < sloganArray.length; index++) { event.preventDefault();
const element = sloganArray[index] addSlogan(event.target.children[0].value);
sloganList = sloganList + `<ul>${element}</ul>` event.target.children[0].value = '';
} });
document.getElementById('sloganList').innerHTML = sloganList
// Get value for new slogan // Add event listener to every list item for deleting slogans
document.getElementById('sloganForm').addEventListener('submit', function (event) { var listElements = document.querySelectorAll("div#sloganList > ul");
event.preventDefault() for (let index = 0; index < listElements.length; index++) {
addSlogan(event.target.children[0].value) const element = listElements[index];
event.target.children[0].value = '' element.addEventListener("click", function() {
}) removeSlogan(index);
});
}
// Add event listener to every list item for deleting slogans }, handleError);
const listElements = document.querySelectorAll('div#sloganList > ul')
for (let index = 0; index < listElements.length; index++) {
const element = listElements[index]
element.addEventListener('click', function () {
removeSlogan(index)
})
}
}, handleError)
function handleError (error) { function handleError(error) {
console.error(`SOMtodayn't Error: ${error}`) console.error(`SOMtodayn't Error: ${error}`);
} }

File diff suppressed because it is too large Load Diff