diff options
Diffstat (limited to 'assets')
-rw-r--r-- | assets/css/styles.css | 4 | ||||
-rw-r--r-- | assets/js/lang/bundle.js | 12 | ||||
-rw-r--r-- | assets/js/lib/themes.js | 37 | ||||
-rw-r--r-- | assets/js/settings.js | 17 | ||||
-rw-r--r-- | assets/js/setup-storage.js | 4 | ||||
-rw-r--r-- | assets/pages-src/about.bvr | 1 | ||||
-rw-r--r-- | assets/pages-src/absences.bvr | 1 | ||||
-rw-r--r-- | assets/pages-src/changelog.bvr | 1 | ||||
-rw-r--r-- | assets/pages-src/chats.bvr | 8 | ||||
-rw-r--r-- | assets/pages-src/grades.bvr | 1 | ||||
-rw-r--r-- | assets/pages-src/gradings.bvr | 1 | ||||
-rw-r--r-- | assets/pages-src/jitsi.bvr | 7 | ||||
-rw-r--r-- | assets/pages-src/meals.bvr | 1 | ||||
-rw-r--r-- | assets/pages-src/messaging.bvr | 1 | ||||
-rw-r--r-- | assets/pages-src/privacypolicy.bvr | 1 | ||||
-rw-r--r-- | assets/pages-src/settings.bvr | 63 | ||||
-rw-r--r-- | assets/pages-src/teachers.bvr | 1 | ||||
-rw-r--r-- | assets/pages-src/timetable.bvr | 1 | ||||
-rw-r--r-- | assets/pages-src/tos.bvr | 1 | ||||
-rw-r--r-- | assets/root/login.html | 1 |
20 files changed, 111 insertions, 53 deletions
diff --git a/assets/css/styles.css b/assets/css/styles.css index cd800f3..5144bda 100644 --- a/assets/css/styles.css +++ b/assets/css/styles.css @@ -87,7 +87,7 @@ a.collection-item { .datepicker-table td.is-selected.is-today { background-color: var(--color-primary); - color: white; + color: var(--background-color); } .datepicker-cancel { @@ -159,7 +159,7 @@ a.collection-item { left: 0; bottom: 0; width: 100%; - background-color: white; + background-color: var(--background-color); text-align: center; z-index: 60; } diff --git a/assets/js/lang/bundle.js b/assets/js/lang/bundle.js index b025486..8d0d6b9 100644 --- a/assets/js/lang/bundle.js +++ b/assets/js/lang/bundle.js @@ -285,6 +285,11 @@ var langstrings = { language: "language", selectLanguage: "select desired language", languageSet: "language set, open another page for the changes to take effect", + theme: "theme", + themeLight: "Light theme", + themeDark: "Dark theme", + selectTheme: "Select a theme", + themeSet: "theme set, open another page for the changes to take effect", // gsec gsecErrNet: "GimSIS connection error", gsecErrLogin: "GimSIS login error (bad password?), try logging out", @@ -466,8 +471,13 @@ var langstrings = { privacyAcceptWithUse: "your continued use of our website will be regarded as acceptance of our practices around privacy and personal information. If you have any questions about how we handle user data and personal information, feel free to contact us.", privacyEffectiveAsOf: "this policy is effective as of", language: "jezik", - selectLanguage: "izberi željen jezik", + selectLanguage: "izberite željen jezik", languageSet: "jezik nastavljen, odprite neko drugo stran da se pokažejo spremembe", + theme: "izgled", + themeLight: "svetel izgled", + themeDark: "temen izgled", + themeSet: "izgled nastavljen, odprite neko drugo stran da se spremembe uveljavijo", + selectTheme: "izberite željen izgled", // gsec gsecErrNet: "napaka povezave na GimSIS", gsecErrLogin: "prijava v GimSIS ni uspela (napačno geslo?), poskusite se odjaviti", diff --git a/assets/js/lib/themes.js b/assets/js/lib/themes.js new file mode 100644 index 0000000..d8a7ca1 --- /dev/null +++ b/assets/js/lib/themes.js @@ -0,0 +1,37 @@ +const THEME_COLOR_SCHEMES = { + light: { + "color-primary": "rgba(0, 128, 83, 1)", + "color-secondary": "rgba(0, 77, 50, 1)", + "color-accent": "rgba(0, 156, 101, 1)", + "color-primary-light": "rgba(230, 250, 231, 1)", + "color-invalid": "rgba(192, 0, 0, 1)", + "background-color": "rgba(255, 255, 255, 1)", + "background-accent": "rgba(0, 156, 101, 0.2)" + }, + dark: { + "color-primary": "rgba(0, 128, 83, 1)", + "color-secondary": "rgba(0, 94, 61, 1)", + "color-accent": "rgba(20, 117, 83, 1)", + "color-primary-light": "rgba(230, 250, 231, 1)", + "color-invalid": "rgba(192, 0, 0, 1)", + "background-color": "rgba(31, 31, 31, 1)", + "background-accent": "rgba(0, 92, 44, 0.2)" + } +} + +function applyTheme(themeName) { + for (const [property, value] of Object.entries(THEME_COLOR_SCHEMES[themeName])) { + document.documentElement.style.setProperty(`--${property}`, value); + } +} + +document.addEventListener("DOMContentLoaded", () => { + localforage.getItem("theme").then((selectedTheme) => { + if (selectedTheme == null) { + let isOsDarkTheme = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches; + applyTheme(isOsDarkTheme ? "dark" : "light"); + } else { + applyTheme(selectedTheme); + } + }); +});
\ No newline at end of file diff --git a/assets/js/settings.js b/assets/js/settings.js index 0410aeb..411a38e 100644 --- a/assets/js/settings.js +++ b/assets/js/settings.js @@ -7,6 +7,13 @@ async function setLanguage(langCode) { }); } +async function setTheme(targetTheme) { + localforage.setItem("targetTheme", targetTheme).then((value) => { + console.log("Theme set: " + value); + UIAlert(D("themeSet"), "setTheme(): themeSet"); + }); +} + document.addEventListener("DOMContentLoaded", async () => { $("#select-language").on("change", () => { @@ -14,11 +21,21 @@ document.addEventListener("DOMContentLoaded", async () => { setLanguage(languageToSet); }); + $("#select-theme").on("change", () => { + let themeToSet = $(this).find(":selected").data("theme"); + setTheme(themeToSet); + }); + localforage.getItem("chosenLang").then((value) => { let selectedLanguage = value ?? "sl"; $(`#option-${selectedLanguage}`).attr("selected", true); }).catch(() => {}); + localforage.getItem("theme").then((value) => { + let selectedTheme = value ?? "sl"; + $(`#option-${selectedTheme}`).attr("selected", true); + }).catch(() => {}); + // Setup side menu const menus = document.querySelectorAll(".side-menu"); M.Sidenav.init(menus, { edge: "right", draggable: true }); diff --git a/assets/js/setup-storage.js b/assets/js/setup-storage.js index a37fc8f..ad45ec7 100644 --- a/assets/js/setup-storage.js +++ b/assets/js/setup-storage.js @@ -17,13 +17,15 @@ async function setupStorage(force = false) { localforage.setItem("absences", {}), localforage.setItem("messages", { "0": [], "1": [], "2": []}), // see messages.js:129, commit 8eb9ca9caca30fbbe023243657535ab4088be377 localforage.setItem("directory", {}), //\\ well I could remember my own code but I didn't. - localforage.setItem("meals", {}) + localforage.setItem("meals", {}), + localforage.setItem("chosenLang", "en") ]; if (logged_in && force == false) { // torej, če je že bila prijava narejena, ne posodobi backwards-compatible vrednosti (username, password,...) await Promise.all(promises_update); console.log("[setupStorage] user logged in: only updated"); } else { + let promises_first_install = [ localforage.setItem("logged_in", false), localforage.setItem("username", ""), diff --git a/assets/pages-src/about.bvr b/assets/pages-src/about.bvr index 8e658a5..56fa810 100644 --- a/assets/pages-src/about.bvr +++ b/assets/pages-src/about.bvr @@ -22,6 +22,7 @@ <link rel="manifest" href="/manifest.json"> <script src="/js/app.js"></script> + <script src="/js/lib/themes.js"></script> <script src="/js/lang/bundle.js"></script> <link rel="shortcut icon" type="image/png" href="/favicon.png" /> diff --git a/assets/pages-src/absences.bvr b/assets/pages-src/absences.bvr index 60ee008..0561a3b 100644 --- a/assets/pages-src/absences.bvr +++ b/assets/pages-src/absences.bvr @@ -21,6 +21,7 @@ <link rel="manifest" href="/manifest.json"> <script src="/js/app.js"></script> + <script src="/js/lib/themes.js"></script> <script src="/js/gsec.js"></script> <!-- gimsisextclient --> <script src="/js/lang/bundle.js"></script> <link rel="shortcut icon" type="image/png" href="/favicon.png" /> diff --git a/assets/pages-src/changelog.bvr b/assets/pages-src/changelog.bvr index 4be0f75..63504cc 100644 --- a/assets/pages-src/changelog.bvr +++ b/assets/pages-src/changelog.bvr @@ -22,6 +22,7 @@ <link rel="manifest" href="/manifest.json"> <script src="/js/app.js"></script> + <script src="/js/lib/themes.js"></script> <script src="/js/lang/bundle.js"></script> <link rel="shortcut icon" type="image/png" href="/favicon.png" /> diff --git a/assets/pages-src/chats.bvr b/assets/pages-src/chats.bvr index 9e3e619..d454c14 100644 --- a/assets/pages-src/chats.bvr +++ b/assets/pages-src/chats.bvr @@ -7,22 +7,30 @@ <meta http-equiv="X-UA-Compatible" content="ie=edge"> <meta name="google" content="notranslate"> <title>Chats « BežiApp</title> + <!-- Materialize --> <link type="text/css" href="/css/materialize.min.css" rel="stylesheet"> <link href="/css/materialicons.css" rel="stylesheet"> <script type="text/javascript" src="/js/lib/materialize.min.js"></script> + <script src="/js/lib/jquery.min.js"></script> <script type="text/javascript" src="/js/lib/localforage.min.js"></script> + <link type="text/css" href="/css/styles.css" rel="stylesheet"> <link type="text/css" href="/css/bubbles.css" rel="stylesheet"> + <script type="text/javascript" src="/js/lib/he.js" ></script> <script type="text/javascript" src="/js/gsec.js" ></script> <script type="text/javascript" src="/js/chats.js"></script> + <link rel="manifest" href="/manifest.json"> + <script src="/js/app.js"></script> + <script src="/js/lib/themes.js"></script> <script src="/js/lang/bundle.js"></script> <script src="/js/lib/xss.js"></script> <script src="/js/lib/sjcl.js"></script> + <link rel="shortcut icon" type="image/png" href="/favicon.png" /> <!-- iOS support --> <link rel="apple-touch-icon" href="/img/icons/icon_96.png"> diff --git a/assets/pages-src/grades.bvr b/assets/pages-src/grades.bvr index 7615e65..0c28f15 100644 --- a/assets/pages-src/grades.bvr +++ b/assets/pages-src/grades.bvr @@ -22,6 +22,7 @@ <link rel="manifest" href="/manifest.json"> <script src="/js/app.js"></script> + <script src="/js/lib/themes.js"></script> <script src="/js/lang/bundle.js"></script> <link rel="shortcut icon" type="image/png" href="/favicon.png" /> diff --git a/assets/pages-src/gradings.bvr b/assets/pages-src/gradings.bvr index 3239e68..0f693e2 100644 --- a/assets/pages-src/gradings.bvr +++ b/assets/pages-src/gradings.bvr @@ -29,6 +29,7 @@ <link rel="manifest" href="/manifest.json"> <script src="/js/app.js"></script> + <script src="/js/lib/themes.js"></script> <script src="/js/lang/bundle.js"></script> <link rel="shortcut icon" type="image/png" href="/favicon.png" /> diff --git a/assets/pages-src/jitsi.bvr b/assets/pages-src/jitsi.bvr index a67e4ef..bf0a656 100644 --- a/assets/pages-src/jitsi.bvr +++ b/assets/pages-src/jitsi.bvr @@ -7,19 +7,26 @@ <meta http-equiv="X-UA-Compatible" content="ie=edge"> <meta name="google" content="notranslate"> <title>GimB Meet « BežiApp</title> + <!-- Materialize --> <link type="text/css" href="/css/materialize.min.css" rel="stylesheet"> <link href="/css/materialicons.css" rel="stylesheet"> <link href="/css/fontawesome.min.css" rel="stylesheet"> <script type="text/javascript" src="/js/lib/materialize.min.js"></script> + <script src="/js/lib/jquery.min.js"></script> <script type="text/javascript" src="/js/lib/localforage.min.js"></script> + <link type="text/css" href="/css/styles.css" rel="stylesheet"> <link rel="manifest" href="/manifest.json"> + <script src="/js/app.js"></script> + <script src="/js/lib/themes.js"></script> <script src="/js/lang/bundle.js"></script> <script src="/js/jitsi.js"></script> + <link rel="shortcut icon" type="image/png" href="/favicon.png" /> + <!-- iOS support --> <link rel="apple-touch-icon" href="/img/icons/icon_96.png"> <link rel="apple-touch-icon" href="/img/icons/icon_512.png"> diff --git a/assets/pages-src/meals.bvr b/assets/pages-src/meals.bvr index 38f8371..47ef8a5 100644 --- a/assets/pages-src/meals.bvr +++ b/assets/pages-src/meals.bvr @@ -22,6 +22,7 @@ <link rel="manifest" href="/manifest.json"> <script src="/js/app.js"></script> + <script src="/js/lib/themes.js"></script> <script src="/js/lang/bundle.js"></script> <link rel="shortcut icon" type="image/png" href="/favicon.png" /> diff --git a/assets/pages-src/messaging.bvr b/assets/pages-src/messaging.bvr index f6e561b..d302ae6 100644 --- a/assets/pages-src/messaging.bvr +++ b/assets/pages-src/messaging.bvr @@ -21,6 +21,7 @@ <link rel="manifest" href="/manifest.json"> <script src="/js/app.js"></script> + <script src="/js/lib/themes.js"></script> <script src="/js/lang/bundle.js"></script> <script src="/js/lib/xss.js"></script> <script src="/js/lib/sjcl.js"></script> diff --git a/assets/pages-src/privacypolicy.bvr b/assets/pages-src/privacypolicy.bvr index fc52475..4e13e67 100644 --- a/assets/pages-src/privacypolicy.bvr +++ b/assets/pages-src/privacypolicy.bvr @@ -22,6 +22,7 @@ <link rel="manifest" href="/manifest.json"> <script src="/js/app.js"></script> + <script src="/js/lib/themes.js"></script> <script src="/js/lang/bundle.js"></script> <link rel="shortcut icon" type="image/png" href="/favicon.png" /> diff --git a/assets/pages-src/settings.bvr b/assets/pages-src/settings.bvr index 135ca91..8d5193c 100644 --- a/assets/pages-src/settings.bvr +++ b/assets/pages-src/settings.bvr @@ -22,6 +22,7 @@ <link rel="manifest" href="/manifest.json"> <script src="/js/app.js"></script> + <script src="/js/lib/themes.js"></script> <script src="/js/lang/bundle.js"></script> <link rel="shortcut icon" type="image/png" href="/favicon.png" /> @@ -56,61 +57,25 @@ <div class="row"> <h5><x-su>language</x-su></h5> <div class="input-field col s12"> + <i class="material-icons prefix">translate</i> <select class="icons" id="select-language"> <option value="" id="option-sl" data-language="sl" data-icon="/img/flags/sl.svg" selected>Slovenščina</option> <option value="" id="option-en" data-language="en" data-icon="/img/flags/en.svg">English</option> </select> <label><x-su>selectLanguage</x-su></label> </div> - <!-- <div class="col s12"> - <div class="collection"> - <a data-language="sl" class="collection-item settings-language-selector" href="#"> - <div> - Slovenščina - <div class="secondary-content"> - <img class="flag-icon" src="/img/flags/sl.svg" /> - </div> - </div> - </a> - <a data-language="en" class="collection-item settings-language-selector" href="#"> - <div> - English - <div class="secondary-content"> - <img class="flag-icon" src="/img/flags/en.svg" /> - </div> - </div> - </a> - <!-- - <li class="collection-item waves-effect"> - <span class="title about-text">Srpskohrvatski</span> - </li> - <li class="collection-item waves-effect"> - <span class="title about-text">Македонски</span> - </li> - <li class="collection-item waves-effect"> - <span class="title about-text">Français</span> - </li> - <li class="collection-item waves-effect"> - <span class="title about-text">Deutsch</span> - </li> - <li class="collection-item waves-effect"> - <span class="title about-text">Español</span> - </li> - <li class="collection-item waves-effect"> - <span class="title about-text">Русский</span> - </li> - <li class="collection-item waves-effect"> - <span class="title about-text">汉语</span> - </li> - <li class="collection-item waves-effect"> - <span class="title about-text">日本語</span> - </li> - <li class="collection-item waves-effect"> - <span class="title about-text">Lingua latīna</span> - </li> - --> - </div> - </div> --> + </div> + + <div class="row"> + <h5><x-su>theme</x-su></h5> + <div class="input-field col s12"> + <i class="material-icons prefix">palette</i> + <select class="icons" id="select-theme"> + <option value="" id="option-light" data-theme="light" selected><x-su>themeLight</x-su></option> + <option value="" id="option-dark" data-theme="dark"><x-su>themeDark</x-su></option> + </select> + <label><x-su>selectTheme</x-su></label> + </div> </div> </div> </body> diff --git a/assets/pages-src/teachers.bvr b/assets/pages-src/teachers.bvr index 37ff3e2..e3993b3 100644 --- a/assets/pages-src/teachers.bvr +++ b/assets/pages-src/teachers.bvr @@ -22,6 +22,7 @@ <link rel="manifest" href="/manifest.json"> <script src="/js/app.js"></script> + <script src="/js/lib/themes.js"></script> <script src="/js/lang/bundle.js"></script> <link rel="shortcut icon" type="image/png" href="/favicon.png" /> diff --git a/assets/pages-src/timetable.bvr b/assets/pages-src/timetable.bvr index 0d8363c..b8c6b06 100644 --- a/assets/pages-src/timetable.bvr +++ b/assets/pages-src/timetable.bvr @@ -31,6 +31,7 @@ <link rel="manifest" href="/manifest.json"> <script src="/js/app.js"></script> + <script src="/js/lib/themes.js"></script> <script src="/js/lang/bundle.js"></script> <link rel="shortcut icon" type="image/png" href="/favicon.png" /> diff --git a/assets/pages-src/tos.bvr b/assets/pages-src/tos.bvr index b96eccc..5deea14 100644 --- a/assets/pages-src/tos.bvr +++ b/assets/pages-src/tos.bvr @@ -22,6 +22,7 @@ <link rel="manifest" href="/manifest.json"> <script src="/js/app.js"></script> + <script src="/js/lib/themes.js"></script> <script src="/js/lang/bundle.js"></script> <link rel="shortcut icon" type="image/png" href="/favicon.png" /> diff --git a/assets/root/login.html b/assets/root/login.html index bbacb7d..542b157 100644 --- a/assets/root/login.html +++ b/assets/root/login.html @@ -21,6 +21,7 @@ <link rel="manifest" href="/manifest.json"> <script src="/js/app.js"></script> + <script src="/js/lib/themes.js"></script> <script src="/js/lang/bundle.js"></script> <link rel="shortcut icon" type="image/png" href="/favicon.png" /> |