mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-06-06 03:34:40 +00:00
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: Bug report
|
name: Report A bug.
|
||||||
about: Create a report to help us improve
|
about: Create a report of a present bug.
|
||||||
title: "[BUG]"
|
title: "[BUG]"
|
||||||
labels: bug
|
labels: bug
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|||||||
@@ -1,27 +1,20 @@
|
|||||||
---
|
---
|
||||||
name: Bug report
|
name: Feature request
|
||||||
about: Create a report to help us improve
|
about: Suggest an idea for this project
|
||||||
title: "[BUG]"
|
title: "[FR] "
|
||||||
labels: bug
|
labels: enhancement
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Describe the bug**
|
**Is your feature request related to a problem? Please describe.**
|
||||||
A clear and concise description of what the bug is.
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
**To Reproduce**
|
**Describe the solution you'd like**
|
||||||
Please indicate how did you make this happen.
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
**Expected behaviuor**
|
**Describe alternatives you've considered**
|
||||||
Please add a clear and concise description of what you expected to happen.
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
**Screenshots**
|
|
||||||
If applicable, add screenshots to help explain your problem.
|
|
||||||
|
|
||||||
**Desktop (please complete the following information):**
|
|
||||||
- OS: [e.g. iOS]
|
|
||||||
- If using Windows, the build number. Find this by using ```winver``` and copying down the build id.
|
|
||||||
|
|
||||||
**Additional context**
|
**Additional context**
|
||||||
Add any other context about the problem here.
|
Add any other context or screenshots about the feature request here.
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
name: Vulnerability
|
||||||
|
about: Report a vulnerability in this extension.
|
||||||
|
title: "[VUL] "
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**What is the vulnerability?**
|
||||||
|
Describe the vulnerability in concise language.
|
||||||
|
|
||||||
|
**Where is the vulnerability found?**
|
||||||
|
Describe where the vulnerability is found.
|
||||||
|
|
||||||
|
**What does this affect?**
|
||||||
|
Explain what it affects. E.G: It opens up my school email to the world. etc.
|
||||||
@@ -48,11 +48,13 @@
|
|||||||
- Brave Supported
|
- Brave Supported
|
||||||
- Opera Supported
|
- Opera Supported
|
||||||
- Vivaldi Supported
|
- Vivaldi Supported
|
||||||
|
- Chromium-based browsers are supported
|
||||||
- Firefox (Experimental - available [here](https://addons.mozilla.org/en-US/firefox/addon/betterseqta-plus/)
|
- Firefox (Experimental - available [here](https://addons.mozilla.org/en-US/firefox/addon/betterseqta-plus/)
|
||||||
|
- Safari (Experimental - only available via compilation)
|
||||||
|
|
||||||
## Creating Custom Themes
|
## Creating Custom Themes
|
||||||
|
|
||||||
If you are looking to create custom themes, I would recommend you start at the official documentation [here](https://betterseqta.gitbook.io/betterseqta-docs). You can see some premade examples along with a compilation script that can be used to allow for CSS frameworks and libraries such as SCSS to be used [here](https://github.com/SethBurkart123/BetterSEQTA-theme-generator).
|
If you are looking to create custom themes, I would recommend you start at the official documentation [here](https://betterseqta.gitbook.io/betterseqta-docs). You can see some premade examples along with a compilation script that can be used to allow for CSS frameworks and libraries such as SCSS to be used [here](https://github.com/BetterSEQTA/BetterSEQTA-Theme-Generator).
|
||||||
|
|
||||||
Don't worry- if you get stuck feel free to ask around in the discord. We're open and happy to help out! Happy creating :)
|
Don't worry- if you get stuck feel free to ask around in the discord. We're open and happy to help out! Happy creating :)
|
||||||
|
|
||||||
@@ -104,7 +106,7 @@ npm run build
|
|||||||
3. Package it up (optional)
|
3. Package it up (optional)
|
||||||
|
|
||||||
```
|
```
|
||||||
npm run package # This requires 7-Zip to be installed in order to work
|
npm run zip # This requires 7-Zip to be installed in order to work
|
||||||
```
|
```
|
||||||
|
|
||||||
## Folder Structure
|
## Folder Structure
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
"name": "betterseqtaplus",
|
"name": "betterseqtaplus",
|
||||||
"version": "3.3.1",
|
"version": "3.3.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "Enhance SEQTA Learn's usability and aesthetics! A fork of BetterSEQTA to continue development, and incorporate a plethora of new features!",
|
"description": "Enhance SEQTA Learn's usability and aesthetics! A fork of BetterSEQTA to continue development, while incorporating a plethora of new and improved features!",
|
||||||
"browserslist": "> 0.5%, last 2 versions, not dead",
|
"browserslist": "> 0.5%, last 2 versions, not dead",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "MODE=chrome vite dev",
|
"dev": "MODE=chrome vite dev",
|
||||||
|
|||||||
+13
-12
@@ -53,7 +53,8 @@ async function init() {
|
|||||||
|
|
||||||
if (hasSEQTAText && hasSEQTATitle && !IsSEQTAPage) {
|
if (hasSEQTAText && hasSEQTATitle && !IsSEQTAPage) {
|
||||||
IsSEQTAPage = true
|
IsSEQTAPage = true
|
||||||
console.log('[BetterSEQTA+] Verified SEQTA Page')
|
console.info('[BetterSEQTA+] Verified SEQTA Page')
|
||||||
|
|
||||||
const documentLoadStyle = document.createElement('style')
|
const documentLoadStyle = document.createElement('style')
|
||||||
documentLoadStyle.textContent = documentLoadCSS
|
documentLoadStyle.textContent = documentLoadCSS
|
||||||
document.head.appendChild(documentLoadStyle)
|
document.head.appendChild(documentLoadStyle)
|
||||||
@@ -77,7 +78,7 @@ async function init() {
|
|||||||
document.head.appendChild(injectedStyle)
|
document.head.appendChild(injectedStyle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
console.info('[BetterSEQTA+] Successfully initalised BetterSEQTA+, starting to load assets.')
|
||||||
main()
|
main()
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.error(error)
|
console.error(error)
|
||||||
@@ -104,7 +105,7 @@ async function HideMenuItems(): Promise<void> {
|
|||||||
for (const [menuItem, { toggle }] of Object.entries(settingsState.menuitems)) {
|
for (const [menuItem, { toggle }] of Object.entries(settingsState.menuitems)) {
|
||||||
if (!toggle) {
|
if (!toggle) {
|
||||||
stylesheetInnerText += SetDisplayNone(menuItem)
|
stylesheetInnerText += SetDisplayNone(menuItem)
|
||||||
console.log(`[BetterSEQTA+] Hiding ${menuItem} menu item`)
|
console.info(`[BetterSEQTA+] Hiding ${menuItem} menu item`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,7 +113,7 @@ async function HideMenuItems(): Promise<void> {
|
|||||||
menuItemStyle.innerText = stylesheetInnerText
|
menuItemStyle.innerText = stylesheetInnerText
|
||||||
document.head.appendChild(menuItemStyle)
|
document.head.appendChild(menuItemStyle)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("An error occurred:", error)
|
console.error("[BetterSEQTA+] An error occurred:", error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -604,7 +605,7 @@ async function handleSublink(sublink: string | undefined): Promise<void> {
|
|||||||
break;
|
break;
|
||||||
case 'home':
|
case 'home':
|
||||||
window.location.replace(`${location.origin}/#?page=/home`);
|
window.location.replace(`${location.origin}/#?page=/home`);
|
||||||
console.log('[BetterSEQTA+] Started Init')
|
console.info('[BetterSEQTA+] Started Init')
|
||||||
if (settingsState.onoff) loadHomePage()
|
if (settingsState.onoff) loadHomePage()
|
||||||
finishLoad();
|
finishLoad();
|
||||||
break;
|
break;
|
||||||
@@ -648,7 +649,7 @@ async function handleTimetable(): Promise<void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function handleNewsPage(): Promise<void> {
|
async function handleNewsPage(): Promise<void> {
|
||||||
console.log('[BetterSEQTA+] Started Init');
|
console.info('[BetterSEQTA+] Started Init');
|
||||||
if (settingsState.onoff) {
|
if (settingsState.onoff) {
|
||||||
SendNewsPage();
|
SendNewsPage();
|
||||||
if (settingsState.notificationcollector) {
|
if (settingsState.notificationcollector) {
|
||||||
@@ -867,7 +868,7 @@ function main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (settingsState.onoff) {
|
if (settingsState.onoff) {
|
||||||
console.log('[BetterSEQTA+] Enabled')
|
console.info('[BetterSEQTA+] Enabled')
|
||||||
if (settingsState.DarkMode) document.documentElement.classList.add('dark')
|
if (settingsState.DarkMode) document.documentElement.classList.add('dark')
|
||||||
|
|
||||||
document.querySelector('.legacy-root')?.classList.add('hidden')
|
document.querySelector('.legacy-root')?.classList.add('hidden')
|
||||||
@@ -887,7 +888,7 @@ function main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function InjectCustomIcons() {
|
function InjectCustomIcons() {
|
||||||
console.log('[BetterSEQTA+] Injecting Icons')
|
console.info('[BetterSEQTA+] Injecting Icons')
|
||||||
|
|
||||||
const style = document.createElement('style')
|
const style = document.createElement('style')
|
||||||
style.setAttribute('type', 'text/css')
|
style.setAttribute('type', 'text/css')
|
||||||
@@ -902,7 +903,7 @@ function InjectCustomIcons() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function AppendElementsToDisabledPage() {
|
export function AppendElementsToDisabledPage() {
|
||||||
console.log("[BetterSEQTA+] Appending elements to disabled page")
|
console.info("[BetterSEQTA+] Appending elements to disabled page")
|
||||||
AddBetterSEQTAElements()
|
AddBetterSEQTAElements()
|
||||||
|
|
||||||
let settingsStyle = document.createElement('style')
|
let settingsStyle = document.createElement('style')
|
||||||
@@ -2027,7 +2028,7 @@ async function AddCustomShortcutsToPage() {
|
|||||||
|
|
||||||
export async function loadHomePage() {
|
export async function loadHomePage() {
|
||||||
// Sends the html data for the home page
|
// Sends the html data for the home page
|
||||||
console.log('[BetterSEQTA+] Started Loading Home Page')
|
console.info('[BetterSEQTA+] Started Loading Home Page')
|
||||||
|
|
||||||
document.title = 'Home ― SEQTA Learn'
|
document.title = 'Home ― SEQTA Learn'
|
||||||
const element = document.querySelector('[data-key=home]')
|
const element = document.querySelector('[data-key=home]')
|
||||||
@@ -2373,7 +2374,7 @@ export function enableNotificationCollector() {
|
|||||||
'notifications__bubble___1EkSQ'
|
'notifications__bubble___1EkSQ'
|
||||||
)[0]
|
)[0]
|
||||||
if (typeof alertdiv == 'undefined') {
|
if (typeof alertdiv == 'undefined') {
|
||||||
console.log('[BetterSEQTA+] No notifications currently')
|
console.info('[BetterSEQTA+] No notifications currently')
|
||||||
} else {
|
} else {
|
||||||
alertdiv.textContent = Notifications.payload.notifications.length
|
alertdiv.textContent = Notifications.payload.notifications.length
|
||||||
}
|
}
|
||||||
@@ -2423,7 +2424,7 @@ function createNewShortcut(link: any, icon: any, viewBox: any, title: any) {
|
|||||||
export function SendNewsPage() {
|
export function SendNewsPage() {
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
// Sends the html data for the home page
|
// Sends the html data for the home page
|
||||||
console.log('[BetterSEQTA+] Started Loading News Page')
|
console.info('[BetterSEQTA+] Started Loading News Page')
|
||||||
document.title = 'News ― SEQTA Learn'
|
document.title = 'News ― SEQTA Learn'
|
||||||
var element = document.querySelector('[data-key=news]')
|
var element = document.querySelector('[data-key=news]')
|
||||||
|
|
||||||
|
|||||||
@@ -2615,157 +2615,6 @@ li.MessageList__unread___3imtO {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.upcoming-items {
|
|
||||||
background: var(--background-primary);
|
|
||||||
width: 100%;
|
|
||||||
max-height: 55em;
|
|
||||||
overflow-y: auto;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
color: var(--text-primary);
|
|
||||||
transition: 200ms;
|
|
||||||
border-radius: 16px;
|
|
||||||
}
|
|
||||||
.dark .upcoming-items {
|
|
||||||
box-shadow: inset 0px 40px 80px -40px rgba(0,0,0,0.6);
|
|
||||||
}
|
|
||||||
.upcoming-assessment-title {
|
|
||||||
color: var(--text-primary);
|
|
||||||
transition: 200ms;
|
|
||||||
font-size: 10px;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
.upcoming-assessment {
|
|
||||||
border: 3px solid var(--item-colour);
|
|
||||||
margin: 5px 50px;
|
|
||||||
height: 6em;
|
|
||||||
padding: 0px;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
.upcoming-assessment {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
.upcoming-date-container {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
.upcoming-date-title h5 {
|
|
||||||
margin: 0;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
.upcoming-details {
|
|
||||||
width: 60%;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: center;
|
|
||||||
padding: 0px 12px;
|
|
||||||
}
|
|
||||||
.upcoming-details h5 {
|
|
||||||
text-transform: uppercase;
|
|
||||||
color: #aaaaaa;
|
|
||||||
padding: 0px 4px;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
.upcoming-details p {
|
|
||||||
font-size: 15px;
|
|
||||||
padding: 4px;
|
|
||||||
}
|
|
||||||
.upcoming-special-day {
|
|
||||||
font-size: 20px;
|
|
||||||
}
|
|
||||||
.upcoming-blank {
|
|
||||||
display: flex;
|
|
||||||
border-bottom: 2px solid #bebebe;
|
|
||||||
margin: 5px 50px;
|
|
||||||
height: 2em;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
.upcoming-blank p {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
.upcoming-title {
|
|
||||||
display: flex;
|
|
||||||
align-content: space-between;
|
|
||||||
}
|
|
||||||
.upcoming-filters {
|
|
||||||
display: flex;
|
|
||||||
height: 26px;
|
|
||||||
width: 65%;
|
|
||||||
align-self: center;
|
|
||||||
align-items: center;
|
|
||||||
color: var(--text-color);
|
|
||||||
padding: 5px;
|
|
||||||
overflow-x: scroll;
|
|
||||||
overflow-y: hidden;
|
|
||||||
}
|
|
||||||
.upcoming-checkbox-container {
|
|
||||||
position: relative;
|
|
||||||
padding: none !important;
|
|
||||||
padding-left: 25px !important;
|
|
||||||
padding-right: 10px !important;
|
|
||||||
cursor: pointer;
|
|
||||||
font-size: 12px;
|
|
||||||
-webkit-user-select: none;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-ms-user-select: none;
|
|
||||||
user-select: none;
|
|
||||||
height: 20px;
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
/* Hide the browser's default checkbox */
|
|
||||||
.upcoming-checkbox-container input {
|
|
||||||
position: absolute;
|
|
||||||
opacity: 0;
|
|
||||||
cursor: pointer;
|
|
||||||
height: 0;
|
|
||||||
width: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
/* Create a custom checkbox */
|
|
||||||
.upcoming-checkmark {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
height: 15px;
|
|
||||||
width: 15px;
|
|
||||||
border: 3px solid var(--item-colour);
|
|
||||||
border-radius: 5px;
|
|
||||||
color: var(--text-color);
|
|
||||||
}
|
|
||||||
/* On mouse-over, add a grey background color */
|
|
||||||
.upcoming-checkbox-container:hover input ~ .upcoming-checkmark {
|
|
||||||
filter: brightness(0.8);
|
|
||||||
}
|
|
||||||
/* When the checkbox is checked, add a blue background */
|
|
||||||
.upcoming-checkbox-container input:checked ~ .upcoming-checkmark {
|
|
||||||
background: var(--item-colour);
|
|
||||||
}
|
|
||||||
/* Create the checkmark/indicator (hidden when not checked) */
|
|
||||||
.upcoming-checkmark:after {
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
/* Show the checkmark when checked */
|
|
||||||
.upcoming-checkbox-container input:checked ~ .upcoming-checkmark:after {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
/* Style the checkmark/indicator */
|
|
||||||
.upcoming-checkbox-container .upcoming-checkmark:after {
|
|
||||||
left: 3.5px;
|
|
||||||
top: 0px;
|
|
||||||
width: 5px;
|
|
||||||
height: 10px;
|
|
||||||
border: solid white;
|
|
||||||
border-width: 0 3px 3px 0;
|
|
||||||
-webkit-transform: rotate(45deg);
|
|
||||||
-ms-transform: rotate(45deg);
|
|
||||||
transform: rotate(45deg);
|
|
||||||
}
|
|
||||||
.upcoming-hiddenassessment {
|
|
||||||
color: #797979;
|
|
||||||
}
|
|
||||||
.titlebar {
|
.titlebar {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
transition: 200ms;
|
transition: 200ms;
|
||||||
|
|||||||
Reference in New Issue
Block a user