style(frontend): adjusted styling to svg icons

This commit is contained in:
David Mosbach 2024-05-23 01:24:44 +00:00
parent e14df308d8
commit 11df9c578f
20 changed files with 324 additions and 59 deletions

View File

@ -3,14 +3,19 @@
// SPDX-License-Identifier: AGPL-3.0-or-later // SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design // SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design
@use "~@fortawesome/fontawesome-pro/scss/fontawesome" with ( $fa-font-path: "~@fortawesome/fontawesome-pro/webfonts" ) //@use "~@fortawesome/fontawesome-pro/scss/fontawesome" with ( $fa-font-path: "~@fortawesome/fontawesome-pro/webfonts" )
@forward "~@fortawesome/fontawesome-pro/scss/fontawesome" //@forward "~@fortawesome/fontawesome-pro/scss/fontawesome"
@use "~@fortawesome/fontawesome-pro/scss/solid" //@use "~@fortawesome/fontawesome-pro/scss/solid"
@use "icons.scss" @use "icons.scss"
$icons: '~/Assets/icons/fradrive'
@function ico-content($ico)
@return url('#{$icons}/#{$ico}.svg')
@font-face @font-face
font-family: "FRADrive Sans" font-family: "FRADrive Sans"
src: url('./../../static/wp-5.73/FRADriveSans-Regular.woff2') format('woff2'), url('./../../static/wp-5.73/FRADriveSans-Regular.woff') format('woff') src: url('./../../static/wp-5.73/FRADriveSans-Regular.woff2') format('woff2'), url('./../../static/wp-5.73/FRADriveSans-Regular.woff') format('woff')

View File

@ -4,6 +4,7 @@
// SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design // SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design
@use "common" as * @use "common" as *
@use "icons"
\:root \:root
// THEME INDEPENDENT COLORS // THEME INDEPENDENT COLORS
@ -450,9 +451,9 @@ input[type="button"].btn-info:not(.btn-link):hover,
color: inherit color: inherit
&::before &::before
@extend .fas @extend .ico-link
content: fa-content($fa-var-link) content:""
margin-right: 0.25em margin-right: 0.25em
&.table__th-link::before &.table__th-link::before
@ -655,7 +656,6 @@ section
margin: 0 auto 0.5rem margin: 0 auto 0.5rem
&::before &::before
@extend .fas
position: absolute position: absolute
display: flex display: flex
@ -675,6 +675,13 @@ section
&.notification--broad &.notification--broad
max-width: none max-width: none
.fas
position: absolute
left: 20px
top: 0
height: 100%
width: 60px
&:first-child &:first-child
margin-top: 0 margin-top: 0
&:last-child &:last-child
@ -1271,6 +1278,9 @@ ul.breadcrumbs__list
margin: 0 5px margin: 0 5px
margin-top: 1px margin-top: 1px
span
@extend .white-ico
a.breadcrumbs__home a.breadcrumbs__home
opacity: 0.5 opacity: 0.5
margin-right: 7px margin-right: 7px
@ -1281,6 +1291,10 @@ a.breadcrumbs__home
&:hover &:hover
opacity: 1 opacity: 1
i
@extend .white-ico
.breadcrumbs__last-item .breadcrumbs__last-item
font-weight: 600 font-weight: 600
opacity: 1 opacity: 1

View File

@ -4,9 +4,101 @@
// SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design // SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design
$icons: ok, $ico-width: 30px;
$icons: new,
ok,
not-ok, not-ok,
placeholder; warning,
problem,
visible,
invisible,
course-favourite-manual,
course-favourite-automatic,
course-favourite-off,
enrol-true,
enrol-false,
planned,
announce,
exam,
exam-register-true,
exam-register-false,
exam-auto-occurrence-nudge-up,
exam-auto-occurrence-nudge-down,
exam-auto-occurrence-ignore,
exam-auto-occurrence-reconsider,
comment-true,
comment-false,
link,
file-donwload,
file-upload,
file-zip,
file-csv,
sft-question,
sft-hint,
sft-solution,
sft-marking,
email,
register-template,
no-correctors,
remove-user,
tooltip-default,
notification-success,
notification-info,
notification-warning,
notification-error,
notification-nonactive,
favourite,
language,
nav-container-close,
page-action-children-close,
menu-news,
menu-help,
menu-profile,
menu-login,
menu-logout,
breadcrumbs-home,
menu-extra,
menu-course-list,
menu-corrections,
menu-exams,
menu-admin,
menu-lms,
menu-qualification,
page-action-primary-expand,
page-action-secondary,
breadcrumb-separator,
file-upload-session,
standalone-field-error,
file-user,
notification,
notification-sent,
no-notification,
personal-identification,
menu-workflows,
video,
submission-user-duplicate,
submission-no-users,
reset,
blocked,
certificate,
print-center,
letter,
at,
supervisor,
supervisor-foreign,
waiting-for-user,
expired,
locked,
unlocked,
trash,
reset-tries,
company,
edit,
user-edit,
placeholder,
loading;
@each $name in $icons { @each $name in $icons {
.ico-#{$name} { .ico-#{$name} {
@ -19,10 +111,17 @@ $icons: ok,
font-size: inherit; font-size: inherit;
display: inline-block; display: inline-block;
vertical-align: middle; vertical-align: middle;
filter: invert(22%) sepia(84%) saturate(7448%) hue-rotate(357deg) brightness(102%) contrast(116%);
} }
} }
.white-ico {
filter: invert(100%) sepia(20%) saturate(901%) hue-rotate(47deg) brightness(106%) contrast(101%);
}
.fw-ico {
width: $ico-width;
}
.small-ico { .small-ico {
font-size: 1em; font-size: 1em;
} }
@ -35,3 +134,31 @@ $icons: ok,
font-size: 2em; font-size: 2em;
} }
.ico-spin {
animation-name: ico-spin;
animation-delay: 0s;
animation-duration: 3s;
animation-direction: normal;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
@media (prefers-reduced-motion: reduce) {
.ico-spin {
animation-delay: -1ms;
animation-duration: 1ms;
animation-iteration-count: 1;
transition-delay: 0s;
transition-duration: 0s;
}
}
@keyframes ico-spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}

View File

@ -171,7 +171,7 @@ export class Alerts {
} }
}; };
_createAlertElement(type, content, icon = 'info-circle') { _createAlertElement(type, content, icon = 'notification-info') {
const alertElement = document.createElement('div'); const alertElement = document.createElement('div');
alertElement.classList.add(ALERT_CLASS, 'alert-' + type); alertElement.classList.add(ALERT_CLASS, 'alert-' + type);
@ -179,7 +179,7 @@ export class Alerts {
alertCloser.classList.add(ALERT_CLOSER_CLASS); alertCloser.classList.add(ALERT_CLOSER_CLASS);
const alertIcon = document.createElement('div'); const alertIcon = document.createElement('div');
alertIcon.classList.add(ALERT_ICON_CLASS, 'fas', 'fa-' + icon); alertIcon.classList.add(ALERT_ICON_CLASS, 'ico-' + icon);
const alertContent = document.createElement('div'); const alertContent = document.createElement('div');
alertContent.classList.add(ALERT_CONTENT_CLASS); alertContent.classList.add(ALERT_CONTENT_CLASS);

View File

@ -1,9 +1,10 @@
// SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de> // SPDX-FileCopyrightText: 2022-2024 Gregor Kleen <gregor.kleen@ifi.lmu.de>,David Mosbach <david.mosbach@uniworx.de>
// //
// SPDX-License-Identifier: AGPL-3.0-or-later // SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design // SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design
@use "../../common" as * @use "../../common" as *
@use '../../icons'
.alerts .alerts
position: fixed position: fixed
@ -24,9 +25,9 @@
cursor: pointer cursor: pointer
&::before &::before
@extend .fas @extend .ico-nav-container-close
content: fa-content($fa-var-chevron-up) content: ""
position: absolute position: absolute
left: 50% left: 50%
top: 0 top: 0
@ -111,7 +112,7 @@
.alert__icon .alert__icon
text-align: right text-align: right
position: absolute position: absolute
left: 0px left: 8px
bottom: 0 bottom: 0
width: 50px width: 50px
height: 100% height: 100%
@ -152,9 +153,9 @@
color: white color: white
&::before &::before
@extend .fas @extend .ico-not-ok
content: fa-content($fa-var-times) content: ""
position: absolute position: absolute
top: 50% top: 50%
left: 50% left: 50%

View File

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <sarah.vaupel@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de> // SPDX-FileCopyrightText: 2022-2024 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <sarah.vaupel@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de>,David Mosbach <david.mosbach@uniworx.de>
// //
// SPDX-License-Identifier: AGPL-3.0-or-later // SPDX-License-Identifier: AGPL-3.0-or-later
@ -461,7 +461,7 @@ export class ExamCorrect {
for (let [k, v] of Object.entries(newEntry.results)) { for (let [k, v] of Object.entries(newEntry.results)) {
const resultCell = row.cells.item(this._cIndices.get(k)); const resultCell = row.cells.item(this._cIndices.get(k));
if (v === null) { if (v === null) {
resultCell.innerHTML = '<i class="fas fa-fw fa-trash"></i>'; resultCell.innerHTML = '<i class="fas fw-ico ico-trash"></i>';
resultCell.classList.remove('exam-correct--result-unconfirmed'); resultCell.classList.remove('exam-correct--result-unconfirmed');
} else if (v && v.result !== undefined && v.result !== null) { } else if (v && v.result !== undefined && v.result !== null) {
resultCell.innerHTML = v.result; resultCell.innerHTML = v.result;
@ -499,7 +499,7 @@ export class ExamCorrect {
else else
html = examResult.status; html = examResult.status;
} else if (examResult === null) { } else if (examResult === null) {
html = '<i class="fas fa-fw fa-trash"></i>'; html = '<i class="fas fw-ico ico-trash"></i>';
} }
return html; return html;
@ -598,7 +598,7 @@ export class ExamCorrect {
const partCell = document.createElement('TD'); const partCell = document.createElement('TD');
if (partResult === null) { if (partResult === null) {
partCell.innerHTML = '<i class="fas fa-fw fa-trash"></i>'; partCell.innerHTML = '<i class="fas fw-ico ico-trash"></i>';
} else { } else {
partCell.innerHTML = partResult; partCell.innerHTML = partResult;
} }
@ -683,10 +683,10 @@ function userToHTML(user) {
} }
function setStatus(elem, status) { function setStatus(elem, status) {
const successClasses = ['fas', 'fa-fw', 'fa-check', 'exam-correct--success']; const successClasses = ['fas', 'fw-ico', 'ico-ok', 'exam-correct--success'];
const ambiguousClasses = ['fas', 'fa-fw', 'fa-question', 'exam-correct--ambiguous']; const ambiguousClasses = ['fas', 'fw-ico', 'ico-menu-help', 'exam-correct--ambiguous'];
const errorClasses = ['fas', 'fa-fw', 'fa-times', 'exam-correct--error']; const errorClasses = ['fas', 'fw-ico', 'ico-not-ok', 'exam-correct--error'];
const loadingClasses = ['fas', 'fa-fw', 'fa-spinner-third', 'fa-spin']; const loadingClasses = ['fas', 'fw-ico', 'ico-loading', 'ico-spin'];
elem.classList.remove(...successClasses, ...ambiguousClasses, ...errorClasses, ...loadingClasses); elem.classList.remove(...successClasses, ...ambiguousClasses, ...errorClasses, ...loadingClasses);

View File

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <sarah.vaupel@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de> // SPDX-FileCopyrightText: 2022-2024 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <sarah.vaupel@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de>,David Mosbach <david.mosbach@uniworx.de>
// //
// SPDX-License-Identifier: AGPL-3.0-or-later // SPDX-License-Identifier: AGPL-3.0-or-later
@ -104,8 +104,8 @@ export class HideColumns {
const hider = document.createElement('span'); const hider = document.createElement('span');
const hiderIcon = document.createElement('i'); const hiderIcon = document.createElement('span');
hiderIcon.classList.add('fas', 'fa-fw'); hiderIcon.classList.add('fas');
hider.appendChild(hiderIcon); hider.appendChild(hiderIcon);
const hiderContent = document.createElement('span'); const hiderContent = document.createElement('span');
@ -240,8 +240,8 @@ export class HideColumns {
updateHiderIcon(hider, hidden) { updateHiderIcon(hider, hidden) {
Array.from(hider.getElementsByClassName('fas')).forEach(hiderIcon => { Array.from(hider.getElementsByClassName('fas')).forEach(hiderIcon => {
hiderIcon.classList.remove(hidden ? 'fa-eye' : 'fa-eye-slash'); hiderIcon.classList.remove(hidden ? 'ico-visible' : 'ico-invisible');
hiderIcon.classList.add(hidden ? 'fa-eye-slash' : 'fa-eye'); hiderIcon.classList.add(hidden ? 'ico-invisible' : 'ico-visible');
}); });
} }

View File

@ -1,8 +1,10 @@
// SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de> // SPDX-FileCopyrightText: 2022-2024 Gregor Kleen <gregor.kleen@ifi.lmu.de>,David Mosbach <david.mosbach@uniworx.de>
// //
// SPDX-License-Identifier: AGPL-3.0-or-later // SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design // SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design
@use "../../icons.scss"
.table-hider .table-hider
background-color: #fff background-color: #fff
color: var(--color-link) color: var(--color-link)
@ -66,5 +68,9 @@
&:empty &:empty
margin: 0 margin: 0
.fas
@extend .white-ico
.hide-columns--hidden-cell .hide-columns--hidden-cell
display: none display: none

View File

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <sarah.vaupel@ifi.lmu.de> // SPDX-FileCopyrightText: 2022-2024 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <sarah.vaupel@ifi.lmu.de>,David Mosbach <david.mosbach@uniworx.de>
// //
// SPDX-License-Identifier: AGPL-3.0-or-later // SPDX-License-Identifier: AGPL-3.0-or-later
@ -42,7 +42,7 @@ export class Password {
this._wrapperEl.appendChild(this._toggleContainerEl); this._wrapperEl.appendChild(this._toggleContainerEl);
this._iconEl = document.createElement('i'); this._iconEl = document.createElement('i');
this._iconEl.classList.add('fas', 'fa-fw'); this._iconEl.classList.add('fas');
this._toggleContainerEl.appendChild(this._iconEl); this._toggleContainerEl.appendChild(this._iconEl);
parentEl.insertBefore(this._wrapperEl, siblingEl); parentEl.insertBefore(this._wrapperEl, siblingEl);
@ -91,7 +91,7 @@ export class Password {
updateVisibleIcon(visible) { updateVisibleIcon(visible) {
function visibleClass(visible) { function visibleClass(visible) {
return 'fa-' + (visible ? 'eye' : 'eye-slash'); return `ico-${visible ? '' : 'in'}visible`;
} }
this._iconEl.classList.remove(visibleClass(!visible)); this._iconEl.classList.remove(visibleClass(!visible));

View File

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de> // SPDX-FileCopyrightText: 2022-2024 Gregor Kleen <gregor.kleen@ifi.lmu.de>,David Mosbach <david.mosbach@uniworx.de>
// //
// SPDX-License-Identifier: AGPL-3.0-or-later // SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design // SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design
@ -98,9 +98,10 @@ div.modal__trigger
z-index: 20 z-index: 20
&::before &::before
@extend .fas @extend .ico-not-ok
@extend .white-ico
content: fa-content($fa-var-times) content: ""
color: white color: white
.modal__content .modal__content

View File

@ -1,8 +1,10 @@
// SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de> // SPDX-FileCopyrightText: 2022-2024 Gregor Kleen <gregor.kleen@ifi.lmu.de>,David Mosbach <david.mosbach@uniworx.de>
// //
// SPDX-License-Identifier: AGPL-3.0-or-later // SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design // SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design
@use '../../icons.scss'
.navbar-container .navbar-container
position: relative position: relative
@ -170,6 +172,9 @@
transition: opacity 0.2s ease transition: opacity 0.2s ease
margin-bottom: 7px margin-bottom: 7px
span
@extend .white-ico
.navbar__link-label .navbar__link-label
transition: opacity .2s ease transition: opacity .2s ease
padding: 2px 4px padding: 2px 4px
@ -253,6 +258,11 @@
.navbar__link-wrapper .navbar__link-wrapper
color: var(--color-dark) color: var(--color-dark)
.navbar__link-icon
.white-ico
filter: none
.navbar__list-item--active .navbar__link-wrapper .navbar__list-item--active .navbar__link-wrapper
color: var(--color-dark) color: var(--color-dark)
@ -263,6 +273,7 @@
.navbar__link-icon .navbar__link-icon
opacity: 1 opacity: 1
// sticky state // sticky state
.navbar--sticky .navbar--sticky
height: var(--header-height-collapsed) height: var(--header-height-collapsed)

View File

@ -1,9 +1,10 @@
// SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de> // SPDX-FileCopyrightText: 2022-2024 Gregor Kleen <gregor.kleen@ifi.lmu.de>,David Mosbach <david.mosbach@uniworx.de>
// //
// SPDX-License-Identifier: AGPL-3.0-or-later // SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design // SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design
@use "../../common" as * @use "../../common" as *
@use "../../icons.scss"
.tooltip .tooltip
position: relative position: relative
@ -63,6 +64,9 @@
.table__th & .table__th &
color: white color: white
.fas
@extend .white-ico
.tooltip.tooltip__inline .tooltip.tooltip__inline
.tooltip__handle .tooltip__handle
height: 1.0rem height: 1.0rem
@ -123,10 +127,10 @@
padding: 4px 17px 4px 4px padding: 4px 17px 4px 4px
&::after &::after
@extend .fas @extend .ico-notification-nonactive
@extend .fa-fw @extend .fw-ico
content: '\f129' content: ''
position: absolute position: absolute
right: 2px right: 2px
top: 6px top: 6px

View File

@ -213,10 +213,7 @@ iconText = \case
IconResetTries -> "trash-undo" -} IconResetTries -> "trash-undo" -}
iconText :: Icon -> Text iconText :: Icon -> Text
iconText = \case iconText = camelToPathPiece' 1 . tshow
IconOK -> "ok"
IconNotOK -> "not-ok"
_ -> "placeholder"
nullaryPathPiece ''Icon $ camelToPathPiece' 1 nullaryPathPiece ''Icon $ camelToPathPiece' 1
deriveLift ''Icon deriveLift ''Icon
@ -236,7 +233,7 @@ icon ic = [shamlet|
icon :: Icon -> Markup icon :: Icon -> Markup
icon ic = [shamlet| icon ic = [shamlet|
$newline never $newline never
<span .ico-#{iconText ic} .medium-ico> <span .ico-#{iconText ic}>
|] |]
@ -249,7 +246,10 @@ iconFixed ic = [shamlet|
-} -}
iconFixed :: Icon -> Markup iconFixed :: Icon -> Markup
iconFixed = icon -- TODO iconFixed ic = [shamlet|
$newline never
<span .ico-#{iconText ic} .fw-ico>
|]
-- Stack two icons from font-awesome without additional space -- Stack two icons from font-awesome without additional space

View File

@ -1,6 +1,6 @@
$newline never $newline never
$# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de>,Winnie Ros <winnie.ros@campus.lmu.de> $# SPDX-FileCopyrightText: 2022-2024 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de>,Winnie Ros <winnie.ros@campus.lmu.de>,David Mosbach <david.mosbach@unwiworx.de>
$# $#
$# SPDX-License-Identifier: AGPL-3.0-or-later $# SPDX-License-Identifier: AGPL-3.0-or-later
@ -37,7 +37,7 @@ $# SPDX-License-Identifier: AGPL-3.0-or-later
<td .table__td .uw-exam-correct--part-cell> <td .table__td .uw-exam-correct--part-cell>
^{ptsInput examPartNumber} ^{ptsInput examPartNumber}
<input #exam-correct__#{examPartNumber}--delete type="checkbox" style="display:none" uw-no-checkbox .uw-exam-correct--delete-exam-part> <input #exam-correct__#{examPartNumber}--delete type="checkbox" style="display:none" uw-no-checkbox .uw-exam-correct--delete-exam-part>
<label for=exam-correct__#{examPartNumber}--delete .fas .fa-fw .fa-trash> <label for=exam-correct__#{examPartNumber}--delete .fas .ico-trash .fw-ico>
$if mayEditResults $if mayEditResults
<td .table__td #uw-exam-correct__result> <td .table__td #uw-exam-correct__result>
<select> <select>

View File

@ -1,6 +1,6 @@
$newline never $newline never
$# SPDX-FileCopyrightText: 2022 Felix Hamann <felix.hamann@campus.lmu.de>,Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>,Winnie Ros <winnie.ros@campus.lmu.de> $# SPDX-FileCopyrightText: 2022-2024 Felix Hamann <felix.hamann@campus.lmu.de>,Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>,Winnie Ros <winnie.ros@campus.lmu.de>,David Mosbach <david.mosbach@uniworx.de>
$# $#
$# SPDX-License-Identifier: AGPL-3.0-or-later $# SPDX-License-Identifier: AGPL-3.0-or-later
@ -20,7 +20,7 @@ $# SPDX-License-Identifier: AGPL-3.0-or-later
$if isRegistered $if isRegistered
<div .course-teaser__registration> <div .course-teaser__registration>
<span>_{MsgRegistered} <span>_{MsgRegistered}
<i .fas .fa-check> <span .ico-ok>
$if not $ null courseLecturers $if not $ null courseLecturers
<div .course-teaser__lecturer-label> <div .course-teaser__lecturer-label>
_{MsgLecturersForN (length courseLecturers)} _{MsgLecturersForN (length courseLecturers)}

View File

@ -8,7 +8,7 @@ $# SPDX-License-Identifier: AGPL-3.0-or-later
<div .alerts__toggler> <div .alerts__toggler>
$forall Message{..} <- mmsgs $forall Message{..} <- mmsgs
<div .alert .alert-#{toPathPiece messageStatus}> <div .alert .alert-#{toPathPiece messageStatus}>
<div .alert__closer> <div .alert__closer .white-ico .medium-ico>
<div .alert__icon .fas .ico-#{maybe "info-circle" iconText messageIcon}> <div .alert__icon .ico-#{maybe "notification-info" iconText messageIcon} .white-ico .fw-ico>
<div .alert__content> <div .alert__content>
#{messageContent} #{messageContent}

View File

@ -4,6 +4,7 @@ $# SPDX-FileCopyrightText: 2022-2024 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Davi
$# $#
$# SPDX-License-Identifier: AGPL-3.0-or-later $# SPDX-License-Identifier: AGPL-3.0-or-later
<div .notification .notification-#{toPathPiece messageStatus} .ico-#{iconText messageIcon} :is _NotificationBroad nType:.notification--broad> <div .notification .notification-#{toPathPiece messageStatus} :is _NotificationBroad nType:.notification--broad>
<div .fas .ico-#{iconText messageIcon}>
<div .notification__content> <div .notification__content>
#{messageContent} #{messageContent}

View File

@ -1,12 +1,12 @@
$newline never $newline never
$# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de> $# SPDX-FileCopyrightText: 2022-2024 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de>,David Mosbach <david.mosbach@uniworx.de>
$# $#
$# SPDX-License-Identifier: AGPL-3.0-or-later $# SPDX-License-Identifier: AGPL-3.0-or-later
<span .tooltip :isInlineTooltip:.tooltip__inline> <span .tooltip :isInlineTooltip:.tooltip__inline>
<span .tooltip__handle .#{urgency}> <span .tooltip__handle .#{urgency}>
<i .fas .fa-^{ic}> <span .fas .ico-^{ic}>
<span .tooltip__content> <span .tooltip__content>
^{tooltip} ^{tooltip}

95
utils/rename-fa.json Normal file
View File

@ -0,0 +1,95 @@
{
"seedling": "new",
"check": "ok",
"xmark": "not-ok",
"exclamation": "warning",
"bolt": "problem",
"eye": "visible",
"eye-slash": "invisible",
"star": "course-favourite-manual",
"star-half-stroke": "course-favourite-automatic",
"slash": "course-favourite-off",
"user-plus": "enrol-true",
"user-slash": "enrol-false",
"gear": "planned",
"bullhorn": "announce",
"square-poll-horizontal": "exam",
"calendar-check": "exam-register-true",
"calendar-xmark": "exam-register-false",
"user-plus": "exam-auto-occurrence-nudge-up",
"user-minus": "exam-auto-occurrence-nudge-down",
"user-slash": "exam-auto-occurrence-ignore",
"users": "exam-auto-occurrence-reconsider",
"comment": "comment-true",
"comment-slash": "comment-false",
"link": "link",
"file-arrow-down": "file-donwload",
"file-arrow-up": "file-upload",
"file-zipper": "file-zip",
"file-csv": "file-csv",
"circle-question": "sft-question",
"life-ring": "sft-hint",
"circle-exclamation": "sft-solution",
"file-csv": "file-csv",
"circle-check": "sft-marking",
"envelope": "email",
"file-lines": "register-template",
"user-slash": "no-correctors",
"user-slash": "remove-user",
"circle-question": "tooltip-default",
"circle-check": "notification-success",
"circle-info": "notification-info",
"circle-exclamation": "notification-warning",
"triangle-exclamation": "notification-error",
"info": "notification-nonactive",
"star": "favourite",
"flag": "language",
"chevron-up": "nav-container-close",
"chevron-up": "page-action-children-close",
"bullhorn": "menu-news",
"question": "menu-help",
"gears": "menu-profile",
"right-to-bracket": "menu-login",
"right-from-bracket": "menu-logout",
"house": "breadcrumbs-home",
"ellipsis": "menu-extra",
"chalkboard-user": "menu-course-list",
"check": "menu-corrections",
"square-poll-horizontal": "menu-exams",
"screwdriver": "menu-admin",
"list-check": "menu-lms",
"graduation-cap": "menu-qualification",
"bars": "page-action-primary-expand",
"ellipsis": "page-action-secondary",
"angle-right": "breadcrumb-separator",
"file-arrow-up": "file-upload-session",
"exclamation": "standalone-field-error",
"address-card": "file-user",
"envelope": "notification",
"envelope-open": "notification-sent",
"bell-slash": "no-notification",
"id-card": "personal-identification",
"diagram-project": "menu-workflows",
"video": "video",
"copy": "submission-user-duplicate",
"user-slash": "submission-no-users",
"arrow-rotate-left": "reset",
"ban": "blocked",
"certificate": "certificate",
"envelopes-bulk": "print-center",
"envelopes-bulk": "letter",
"at": "at",
"person": "supervisor",
"person-rays": "supervisor-foreign",
"user-gear": "waiting-for-user",
"hourglass-end": "expired",
"lock": "locked",
"unlock": "unlocked",
"trash": "trash",
"trash-can-arrow-up": "reset-tries",
"building": "company",
"pen-to-square": "edit",
"user-pen": "user-edit",
"spinner": "loading"
}

View File

@ -31,8 +31,8 @@ my $core = $1;
while($core=~s#^\s*,?\s*"([^"/]+)"\s*:\s*"([^"/]+)"##) { while($core=~s#^\s*,?\s*"([^"/]+)"\s*:\s*"([^"/]+)"##) {
my ($from, $to) = ($1, $2); my ($from, $to) = ($1, $2);
my $pfrom = "$fromdir/$from"; my $pfrom = "$fromdir/$from.svg";
my $pto = "$todir/$to"; my $pto = "$todir/$to.svg";
if(-e $pfrom) { if(-e $pfrom) {
print "Renaming '$pfrom' to '$pto'\n"; print "Renaming '$pfrom' to '$pto'\n";
system("cp", $pfrom, $pto); system("cp", $pfrom, $pto);