diff --git a/AUTHORS.md b/AUTHORS.md index 9d4fea95a9b0c19100af57b4d85c299a5f4d640b..40aa9cae61066a46e1b53d916859acfc7560cfae 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -6,4 +6,4 @@ - Daniela Jaramillo <jaramillo@cl.uni-heidelberg.de> - Leander Karp <karp@cl.uni-heidelberg.de> -- Elias Hanke <hanke@cl.uni-heidelberg.de> +- Elias Hanke <hanke@cl.uni-heidelberg.de> diff --git a/JS-README.md b/JS-README.md index 743caf1ce330d1737551a476418236d2ec5feabf..6d02a35f364eba004b667a6c5cca70b3cd139529 100644 --- a/JS-README.md +++ b/JS-README.md @@ -10,41 +10,37 @@ This is mostly Mithril.js. This is where the frontend components are located. The components are divided into two categories: `pages` and `pieces`. **Mithril.js** uses `pages` to render the main content of the website, while `pieces` are used to render smaller components that are used in multiple places. `pieces` then are embedded into `pages`. This could help you around -+ [Mithril.js documentation](https://mithril.js.org/) -+ [Convert plain HTML to Mithril](https://arthurclemens.github.io/mithril-template-converter/index.html) - +- [Mithril.js documentation](https://mithril.js.org/) +- [Convert plain HTML to Mithril](https://arthurclemens.github.io/mithril-template-converter/index.html) ### `/portal/static/js/components/pages` - - Generally, everything having its own tab in the Navbar is a `page`. They are the first components that are rendered when the website is loaded. -+ `Base.mjs` -+ `Fachschaftssitzung.mjs` -+ `FsServices.mjs` -+ `Login.mjs` -+ `Me.mjs` -+ `Start.mjs` -+ `UniServices.mjs` -+ `Unlock.mjs` +- `Base.mjs` +- `Fachschaftssitzung.mjs` +- `FsServices.mjs` +- `Login.mjs` +- `Me.mjs` +- `Start.mjs` +- `UniServices.mjs` +- `Unlock.mjs` ### `/portal/static/js/components/pieces` These are the smaller components that are embedded in multiple places. - -+ `AccountRequired.mjs` -+ `Agenda.mjs` -+ `BoxedButton.mjs` -+ `ButtonAndTextLink.mjs` -+ `Nav.mjs` -+ `NavPageLink.mjs` -+ `PasswordinVault.mjs` -+ `ServiceLink.mjs` -+ `Toast.mjs` -+ `UnlockRequired` +- `AccountRequired.mjs` +- `Agenda.mjs` +- `BoxedButton.mjs` +- `ButtonAndTextLink.mjs` +- `Nav.mjs` +- `NavPageLink.mjs` +- `PasswordinVault.mjs` +- `ServiceLink.mjs` +- `Toast.mjs` +- `UnlockRequired` ## `/portal/static/js/model` @@ -70,4 +66,3 @@ Also, there's some yapping about the Same Origin Policy, might be interesting, b ## `/portal/static/js/portal.mjs` This is the main file that initializes the Mithril.js app and sets up the routing. - diff --git a/README.md b/README.md index 9dd644dc1d3b309f83482f8d2d0d43fa2302c1fb..6717fb317f49e2e8316f240c8f180409ae16833f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ # Portal: this service can fit so many services in it! - Aren't you tired of having to remember shortlinks or URLs for all the services offered by the Fachschaft? Does it embarrass you to always ask about the agenda of a Fachschaftssitzung, because you never worked with a Taiga implementation? How was the shortlink to Sturacloud again? Are you overwhelmed by 19 (and counting, **fast**) different services offered by the Fachschaft, the Institute and the University? **Well, that is a thing of the past!** That's why we created Portal, a service-aggregating meta-service for over-zealous students like us, the FS Coli. @@ -15,16 +14,15 @@ If you are a rather visual learner, we got you covered:  - ## What can you do with Portal? Most importantly, you can access all the services that the Fachschaft offers in one place. Also, Portal offers -+ a neat LDAP integration -+ a Taiga (fsco.li/todo) integration -+ even a f*cking GitLab integration (we are so proud of this one) -+ an user-friendly interface -+ a responsive design (mostly) +- a neat LDAP integration +- a Taiga (fsco.li/todo) integration +- even a f\*cking GitLab integration (we are so proud of this one) +- an user-friendly interface +- a responsive design (mostly) # If you are a contributor... @@ -82,15 +80,18 @@ db.session.add(l) db.session.commit() exit() ``` + The app should run without problems now. Also, if you are using an Apple device, please deactivate the "AirPlay Receiver" as it might cause problems with the LDAP connection. --- + #### Important: Alembic must always be up to date in order to update the database schema. Please run `alembic upgrade head` after pulling changes from the repository. + --- ## How to move around in this repo @@ -120,7 +121,6 @@ Here you can find the CSS files for the frontend. The main CSS file is `main.css Here you can find the documentation for the API in its respective versions. API specifications (`openapi-spec.yaml`) are written in OpenAPI 3.0.0 and are located in the `/api/{version}` folder. - #### `/portal/static/img`: Frag nicht, was für Bilder. Einfach Bilder. I won't translate this. What did you expect? @@ -131,14 +131,13 @@ Lol, that should actually . It contains all the JavaScript files that are responsible for the frontend interactions. - ### `/portal/templates` These are the HTML files that Flask renders. They are written in Jinja2, which is a template engine for Python. ### `.py`-files -+ `__init__.py`: Fortunately, explaining this was not a Prog2 exam question -+ `db_config.py`: [TODO] Have fun, Jakob. Database configuration (arcane magic). -+ `main.py`: The Flask server is in here -+ `problem_details.py`: RFC 7807-compliant problem details responses for the API. +- `__init__.py`: Fortunately, explaining this was not a Prog2 exam question +- `db_config.py`: [TODO] Have fun, Jakob. Database configuration (arcane magic). +- `main.py`: The Flask server is in here +- `problem_details.py`: RFC 7807-compliant problem details responses for the API. diff --git a/portal/static/css/main.css b/portal/static/css/main.css index 4022a1352fd34a446d90491c14131cbd7e6b6489..8f4a54cdf933a45ac207767182c8c233aa9b0c77 100644 --- a/portal/static/css/main.css +++ b/portal/static/css/main.css @@ -4,6 +4,11 @@ :root { --shadow-width: 2px; + --box-bg: radial-gradient( + circle, + rgba(255, 255, 255, 1) 0%, + rgba(255, 255, 255, 0.85) 100% + ); } .blue { @@ -21,6 +26,21 @@ --primary-light: #2aac6d; } +:root { + --box-bg: radial-gradient( + circle, + rgb(43, 43, 43) 0%, + rgba(43, 43, 43, 0.85) 100% + ); +} + +.blue { + --primary: white; +} + +@media (prefers-color-scheme: dark) { +} + /* ---------------------- Scaffolding ---------------------- */ body { @@ -90,11 +110,7 @@ a { .box { border-radius: 1em; box-shadow: var(--shadow-width) var(--shadow-width) 5px rgba(0, 0, 0, 0.5); - background: radial-gradient( - circle, - rgba(255, 255, 255, 1) 0%, - rgba(255, 255, 255, 0.85) 100% - ); + background: var(--box-bg); } .button { diff --git a/portal/static/js/components/pieces/AccountRequired.mjs b/portal/static/js/components/pieces/AccountRequired.mjs index 35fd2eaa6587454eb6f7150a6967580d6718b6d3..9f0a566917d73e30ef2d3b827fac0dfc8dbc989f 100644 --- a/portal/static/js/components/pieces/AccountRequired.mjs +++ b/portal/static/js/components/pieces/AccountRequired.mjs @@ -4,7 +4,7 @@ export const AccountRequired = { "CL-Account": "fa-regular fa-user", "Eigener Account": "fa-solid fa-user-plus", "Geteilter Account": "fa-solid fa-user-group", - "Uni-ID": "fa-solid fa-id-card" + "Uni-ID": "fa-solid fa-id-card", } return m("span.detail", [