refactor(messages): continuing
This commit is contained in:
commit
dbbc9c4a69
@ -8,6 +8,7 @@ default:
|
||||
image:
|
||||
name: fpco/stack-build:lts-16.31
|
||||
cache: &global_cache
|
||||
key: default
|
||||
paths:
|
||||
- .npm
|
||||
- node_modules
|
||||
@ -249,7 +250,11 @@ yesod:test:yesod:dev:
|
||||
|
||||
yesod:test:hlint:
|
||||
stage: lint
|
||||
cache: {}
|
||||
cache: &hlint_cache
|
||||
key: hlint
|
||||
paths:
|
||||
- .stack
|
||||
- .stack-work
|
||||
|
||||
needs:
|
||||
- job: npm install # transitive
|
||||
@ -283,7 +288,7 @@ yesod:test:hlint:
|
||||
|
||||
yesod:test:hlint:dev:
|
||||
stage: lint
|
||||
cache: {}
|
||||
cache: *hlint_cache
|
||||
|
||||
needs:
|
||||
- job: npm install # transitive
|
||||
|
||||
176
.hlint.yaml
176
.hlint.yaml
@ -18,3 +18,179 @@
|
||||
- -XQuasiQuotes
|
||||
- -XTemplateHaskell
|
||||
- -j
|
||||
|
||||
- fixity: "infix 4 `isInfixOf`"
|
||||
- fixity: "infix 4 `hasInfix`"
|
||||
- fixity: "infixl 6 `strConcat`"
|
||||
- fixity: "infix 4 `ciEq`"
|
||||
- fixity: "infix 4 `maybeEq`"
|
||||
- fixity: "infixl 8 ->."
|
||||
- fixity: "infixl 8 #>>."
|
||||
- fixity: "infixl 6 `diffDays`"
|
||||
- fixity: "infixr 3 `predDNFAnd`"
|
||||
- fixity: "infixr 2 `predDNFOr`"
|
||||
- fixity: "infixl 6 |-"
|
||||
- fixity: "infixr 5 <|"
|
||||
- fixity: "infixr 5 `cons`"
|
||||
- fixity: "infixl 5 |>"
|
||||
- fixity: "infixl 5 `snoc`"
|
||||
- fixity: "infixl 8 ^.."
|
||||
- fixity: "infixl 8 ^?"
|
||||
- fixity: "infixl 8 ^?!"
|
||||
- fixity: "infixl 8 ^@.."
|
||||
- fixity: "infixl 8 ^@?"
|
||||
- fixity: "infixl 8 ^@?!"
|
||||
- fixity: "infixl 8 ^."
|
||||
- fixity: "infixl 8 ^@."
|
||||
- fixity: "infixr 9 <.>"
|
||||
- fixity: "infixr 9 <."
|
||||
- fixity: "infixr 9 .>"
|
||||
- fixity: "infixl 8 ^#"
|
||||
- fixity: "infixr 4 %%@~"
|
||||
- fixity: "infixr 4 <%@~"
|
||||
- fixity: "infixr 4 <<%@~"
|
||||
- fixity: "infixr 4 %%~"
|
||||
- fixity: "infixr 4 <+~"
|
||||
- fixity: "infixr 4 <*~"
|
||||
- fixity: "infixr 4 <-~"
|
||||
- fixity: "infixr 4 <//~"
|
||||
- fixity: "infixr 4 <^~"
|
||||
- fixity: "infixr 4 <^^~"
|
||||
- fixity: "infixr 4 <**~"
|
||||
- fixity: "infixr 4 <&&~"
|
||||
- fixity: "infixr 4 <||~"
|
||||
- fixity: "infixr 4 <<>~"
|
||||
- fixity: "infixr 4 <%~"
|
||||
- fixity: "infixr 4 <<%~"
|
||||
- fixity: "infixr 4 <<.~"
|
||||
- fixity: "infixr 4 <<?~"
|
||||
- fixity: "infixr 4 <#~"
|
||||
- fixity: "infixr 4 #~"
|
||||
- fixity: "infixr 4 #%~"
|
||||
- fixity: "infixr 4 <#%~"
|
||||
- fixity: "infixr 4 #%%~"
|
||||
- fixity: "infixr 4 <<+~"
|
||||
- fixity: "infixr 4 <<-~"
|
||||
- fixity: "infixr 4 <<*~"
|
||||
- fixity: "infixr 4 <<//~"
|
||||
- fixity: "infixr 4 <<^~"
|
||||
- fixity: "infixr 4 <<^^~"
|
||||
- fixity: "infixr 4 <<**~"
|
||||
- fixity: "infixr 4 <<||~"
|
||||
- fixity: "infixr 4 <<&&~"
|
||||
- fixity: "infixr 4 <<<>~"
|
||||
- fixity: "infix 4 %%@="
|
||||
- fixity: "infix 4 <%@="
|
||||
- fixity: "infix 4 <<%@="
|
||||
- fixity: "infix 4 %%="
|
||||
- fixity: "infix 4 <+="
|
||||
- fixity: "infix 4 <*="
|
||||
- fixity: "infix 4 <-="
|
||||
- fixity: "infix 4 <//="
|
||||
- fixity: "infix 4 <^="
|
||||
- fixity: "infix 4 <^^="
|
||||
- fixity: "infix 4 <**="
|
||||
- fixity: "infix 4 <&&="
|
||||
- fixity: "infix 4 <||="
|
||||
- fixity: "infix 4 <<>="
|
||||
- fixity: "infix 4 <%="
|
||||
- fixity: "infix 4 <<%="
|
||||
- fixity: "infix 4 <<.="
|
||||
- fixity: "infix 4 <<?="
|
||||
- fixity: "infix 4 <#="
|
||||
- fixity: "infix 4 #="
|
||||
- fixity: "infix 4 #%="
|
||||
- fixity: "infix 4 <#%="
|
||||
- fixity: "infix 4 #%%="
|
||||
- fixity: "infix 4 <<+="
|
||||
- fixity: "infix 4 <<-="
|
||||
- fixity: "infix 4 <<*="
|
||||
- fixity: "infix 4 <<//="
|
||||
- fixity: "infix 4 <<^="
|
||||
- fixity: "infix 4 <<^^="
|
||||
- fixity: "infix 4 <<**="
|
||||
- fixity: "infix 4 <<||="
|
||||
- fixity: "infix 4 <<&&="
|
||||
- fixity: "infix 4 <<<>="
|
||||
- fixity: "infixr 2 <<~"
|
||||
- fixity: "infixl 1 ??"
|
||||
- fixity: "infixl 1 &~"
|
||||
- fixity: "infixr 9 ..."
|
||||
- fixity: "infixr 8 #"
|
||||
- fixity: "infixr 4 %@~"
|
||||
- fixity: "infixr 4 .@~"
|
||||
- fixity: "infixr 4 .~"
|
||||
- fixity: "infixr 4 +~"
|
||||
- fixity: "infixr 4 *~"
|
||||
- fixity: "infixr 4 -~"
|
||||
- fixity: "infixr 4 //~"
|
||||
- fixity: "infixr 4 ^~"
|
||||
- fixity: "infixr 4 ^^~"
|
||||
- fixity: "infixr 4 **~"
|
||||
- fixity: "infixr 4 &&~"
|
||||
- fixity: "infixr 4 <>~"
|
||||
- fixity: "infixr 4 ||~"
|
||||
- fixity: "infixr 4 %~"
|
||||
- fixity: "infixr 4 <.~"
|
||||
- fixity: "infixr 4 ?~"
|
||||
- fixity: "infixr 4 <?~"
|
||||
- fixity: "infix 4 %@="
|
||||
- fixity: "infix 4 .@="
|
||||
- fixity: "infix 4 .="
|
||||
- fixity: "infix 4 +="
|
||||
- fixity: "infix 4 *="
|
||||
- fixity: "infix 4 -="
|
||||
- fixity: "infix 4 //="
|
||||
- fixity: "infix 4 ^="
|
||||
- fixity: "infix 4 ^^="
|
||||
- fixity: "infix 4 **="
|
||||
- fixity: "infix 4 &&="
|
||||
- fixity: "infix 4 <>="
|
||||
- fixity: "infix 4 ||="
|
||||
- fixity: "infix 4 %="
|
||||
- fixity: "infix 4 <.="
|
||||
- fixity: "infix 4 ?="
|
||||
- fixity: "infix 4 <?="
|
||||
- fixity: "infixr 2 <~"
|
||||
- fixity: "infixl 5 `failing`"
|
||||
- fixity: "infixr 2 `zoom`"
|
||||
- fixity: "infixr 2 `magnify`"
|
||||
- fixity: "infixl 1 &"
|
||||
- fixity: "infixl 1 <&>"
|
||||
- fixity: "infixr 4 .|.~"
|
||||
- fixity: "infixr 4 .&.~"
|
||||
- fixity: "infixr 4 <.|.~"
|
||||
- fixity: "infixr 4 <.&.~"
|
||||
- fixity: "infixr 4 <<.|.~"
|
||||
- fixity: "infixr 4 <<.&.~"
|
||||
- fixity: "infix 4 .|.="
|
||||
- fixity: "infix 4 .&.="
|
||||
- fixity: "infix 4 <.|.="
|
||||
- fixity: "infix 4 <.&.="
|
||||
- fixity: "infix 4 <<.|.="
|
||||
- fixity: "infix 4 <<.&.="
|
||||
- fixity: "infixr 4 </>~"
|
||||
- fixity: "infixr 4 <</>~"
|
||||
- fixity: "infixr 4 <<</>~"
|
||||
- fixity: "infixr 4 <.>~"
|
||||
- fixity: "infixr 4 <<.>~"
|
||||
- fixity: "infixr 4 <<<.>~"
|
||||
- fixity: "infix 4 </>="
|
||||
- fixity: "infix 4 <</>="
|
||||
- fixity: "infix 4 <<</>="
|
||||
- fixity: "infix 4 <.>="
|
||||
- fixity: "infix 4 <<.>="
|
||||
- fixity: "infix 4 <<<.>="
|
||||
|
||||
- suggest: { lhs: maybeT (return ()), rhs: maybeT_ }
|
||||
- suggest: { lhs: fromMaybe (return ()), rhs: maybeVoid }
|
||||
- suggest: { lhs: maybe (return ()) void, rhs: maybeVoid }
|
||||
|
||||
- warn: { lhs: length xs >= n, rhs: minLength n xs, note: IncreasesLaziness }
|
||||
- warn: { lhs: n <= length xs, rhs: minLength n xs, note: IncreasesLaziness }
|
||||
- warn: { lhs: length xs > n, rhs: minLength (n + 1) xs, note: IncreasesLaziness }
|
||||
- warn: { lhs: n < length xs, rhs: minLength (n + 1) xs, note: IncreasesLaziness }
|
||||
- warn: { lhs: length xs <= n, rhs: maxLength n xs, note: IncreasesLaziness }
|
||||
- warn: { lhs: n >= length xs, rhs: maxLength n xs, note: IncreasesLaziness }
|
||||
- warn: { lhs: length xs < n, rhs: maxLength (n - 1) xs, note: IncreasesLaziness }
|
||||
- warn: { lhs: n > length xs, rhs: maxLength (n - 1) xs, note: IncreasesLaziness }
|
||||
|
||||
182
CHANGELOG.md
182
CHANGELOG.md
@ -2,6 +2,188 @@
|
||||
|
||||
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
||||
|
||||
## [25.8.1](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.8.0...v25.8.1) (2021-04-09)
|
||||
|
||||
## [25.8.0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.7.0...v25.8.0) (2021-04-08)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* additional general purpose caching tier (memcachedLocal) ([939ab37](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/939ab37588bb71b14b8a9f3ab58d7440f598faf9))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* typo ([f155a4b](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/f155a4bf08d169309c05e3efbb47a246f3010816))
|
||||
|
||||
## [25.7.0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.6.1...v25.7.0) (2021-03-30)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **course-users-table:** json export ([6f291b2](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/6f291b2e6893554193732b059758794fe2b7fa51))
|
||||
|
||||
## [25.6.1](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.6.0...v25.6.1) (2021-03-30)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **admin-tokens:** avoid option none ([af3ec98](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/af3ec98de512f72220d363b9dd0c06532ae1a960))
|
||||
* add missing do ([55319c8](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/55319c8c5060a0d8763abb56c27d30e852c51f52))
|
||||
* buttons know about ALL actions from other buttons ([11664dc](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/11664dcd82c13eef1c395e2e590c4fb0c587aa65))
|
||||
* check space of occurrences after ignoring ([fabf56c](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/fabf56c1640c94f806d43aaca264100cbc39b840))
|
||||
* correct rebase-sourced error ([02589e4](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/02589e4d00de233d847d6be71e44f9fc451fbfe9))
|
||||
* correctly apply suggestion ([67d6fd7](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/67d6fd7d438a31b50e6f4e6e921873ee11b32e9c))
|
||||
* correctly handle original minimizeRooms-flag ([d5bd504](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/d5bd5042ad920b26df847845cc437c3f0616575c))
|
||||
* correctly report NoUsers for ExamRoomRandom ([16cbc78](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/16cbc78878615a8d123de5d8fda11136685a824c))
|
||||
* oops ([f6cbf99](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/f6cbf99245ffdd19a2d6c9acc7c0b9a7f8df45ca))
|
||||
* sort occurrences in the right order ([732df50](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/732df5053033c3533f52850cc6220dd06a7e3500))
|
||||
* use extraUsers instead of extraCapacity for unrestricted pseudo-capacity ([2be9d76](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/2be9d76af2b3e9fd52284c639a4c3f6dc1c51779))
|
||||
|
||||
## [25.6.0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.5.3...v25.6.0) (2021-03-29)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **frontend:** password visibilty toggle ([f0e4547](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/f0e45477fa85a1d82750597cdaf122e41e9c7764))
|
||||
|
||||
## [25.5.3](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.5.2...v25.5.3) (2021-03-24)
|
||||
|
||||
## [25.5.2](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.5.1...v25.5.2) (2021-03-24)
|
||||
|
||||
## [25.5.1](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.5.0...v25.5.1) (2021-03-23)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* remove cached-db-runner ([ff82700](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/ff8270042f74d8019e121aebf8636472e1e4d79e))
|
||||
|
||||
## [25.5.0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.4.0...v25.5.0) (2021-03-23)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **course-participants:** csv export first name/surname separately ([1036926](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/1036926470792bf3409ba3a224886d48b7e1d314))
|
||||
|
||||
## [25.4.0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.3.0...v25.4.0) (2021-03-19)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **submissions:** also warn correctors about multiple submissions ([8795edd](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/8795edd1fa452d012704146481c8318d206634a5))
|
||||
* **submissions:** warn about multiple submissions for same user ([c19a00d](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/c19a00dcefb2dcae017026edb6e1c7cb6ce16841))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **auth:** wrong caching for external-exam-staff ([9d1f1c6](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/9d1f1c691085ec65ad0f19cc51602a59ee133fc4))
|
||||
* **submissions:** improve submission process ([7219131](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/72191315b6daed78cd0f31b02627e1d27db620f3)), closes [#675](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/issues/675)
|
||||
|
||||
## [25.3.0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.2.0...v25.3.0) (2021-03-18)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **exams:** exam finish button ([78d0f25](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/78d0f2522db759c2ee465e040939c92b2f9a1891))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **submissions:** take care when to display corrections ([a6390ec](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/a6390eccbd164ee5e821d3ecb0fab794a417425a))
|
||||
|
||||
## [25.2.0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.1.2...v25.2.0) (2021-03-18)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **csv-export:** .xlsx ([5c51394](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/5c513946c15ed215f6958be1c7a435f03314f115))
|
||||
* **submissions:** improve behaviour of sheet-type-exam-part ([91a5166](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/91a51664c32bd17e4c2d1cd496bf05338146291d)), closes [#676](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/issues/676)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **csv-export:** mime confusion ([8bdaae0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/8bdaae0881fe98c4c5f69f1332ac2ffb0ca83081))
|
||||
|
||||
## [25.1.2](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.1.1...v25.1.2) (2021-03-17)
|
||||
|
||||
## [25.1.1](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.1.0...v25.1.1) (2021-03-16)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* weight random token impersonation towards active users ([a314f64](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/a314f64a70d9e7e427383c8d656d9bdceed5f9f3))
|
||||
|
||||
## [25.1.0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.0.5...v25.1.0) (2021-03-16)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* admins can efficiently generate many tokens for random users ([600bbe5](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/600bbe5d7e9051e4a4eac540b01ff358666ebc9c))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* typo ([f931c67](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/f931c67a9ecf37bd9a6c9814ee61de7cb054dcc5))
|
||||
* **test:** isNullResultJustified reported false positives ([292f5cf](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/292f5cf91b56953189ee72e42b822d66761ff3bb))
|
||||
* check if number of relevant user is >0 to prevent crash ([317b95b](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/317b95be317ea038ad9fa398fc0c0c456b53495d))
|
||||
* correctly calculate maximum user name length ([cd07a56](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/cd07a56a9fd3ee99b74e5304581574671e3689a0))
|
||||
* handle rare cases where a mappingDescription with start>end would be produced ([c99d96e](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/c99d96ecb8a43400eb10dfe192bf751cb00a9d25))
|
||||
* make sure to report NoUsers, regardless of rule ([9c928b0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/9c928b0375c1aab0c46768101849ce8daeae9b81))
|
||||
* **test:** fixed compiler errors (oops) ([bc42f30](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/bc42f3072fd37ee6f37c70a0b3999d9ac793b240))
|
||||
* ensure termination for non-{'A'..'Z']-names ([873d5a0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/873d5a02adae8f33db349bd9de3c7bd49331d27f))
|
||||
* examAutoOccurence no longer user >100% of a room ([eaf245b](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/eaf245beaaa1f739d6b857712f1e4ea5b53e7c82))
|
||||
* increase size of test instances again (oops) ([4e76fe7](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/4e76fe7e504515845d468fc3251a38c90aaaaf66))
|
||||
* make sure it compiles again + add 2-letter name ([d60f935](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/d60f93561f5ee84d460645a945db35ac6b55e97d))
|
||||
* make sure line-break algorithm respects available lines ([e487cef](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/e487ceff5858671eb0bcbd813e9de0d3b4c74f75))
|
||||
* make sure unfortunate combination doesn't only produce 0-9 ranges for matrikelnummer ([8e4cb09](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/8e4cb0917db1098f5b19be0dfad4c6fafb900c49))
|
||||
* mappingDescription doesn't overlap for the first n rooms/with small names/matrikelnummer ([fc35fd2](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/fc35fd26c1eb699d6eb8aa1b9febb48641c26d05))
|
||||
* shown ranges "include" special mappings ([7e1b75c](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/7e1b75c2e167c75ebc3a05f881ad7fb07c29af55))
|
||||
* spelling plugin had a suggestion; actually Hello World commit :p ([7b0fd61](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/7b0fd61f7f8bf1e995209bec7b44231b5ba011a6))
|
||||
* user with a pre-assigned room count towards the capacity limit ([4fc0535](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/4fc05351fa8048752f2ec3260dcaac64f962c9a3))
|
||||
|
||||
## [25.0.5](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.0.4...v25.0.5) (2021-03-13)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **authorisation:** inverted logic for empty ([65814c0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/65814c005e2637bb5f6347bf1f35133654538e7a))
|
||||
|
||||
## [25.0.4](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.0.3...v25.0.4) (2021-03-12)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* tests ([4803026](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/4803026a2c091128a7370c12f0c06de9bd7b9180))
|
||||
|
||||
## [25.0.3](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.0.2...v25.0.3) (2021-03-12)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* invalidate nav caches ([e88b6d6](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/e88b6d6bab3ea4577af3cd9465e66aa7e48177a2))
|
||||
|
||||
## [25.0.2](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.0.1...v25.0.2) (2021-03-12)
|
||||
|
||||
## [25.0.1](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v25.0.0...v25.0.1) (2021-03-11)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **auth-caching:** submission-group ([896bd41](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/896bd41e3b415283cce16cb84a8219b8d4c1702c))
|
||||
|
||||
## [25.0.0](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v24.9.2...v25.0.0) (2021-03-08)
|
||||
|
||||
|
||||
### ⚠ BREAKING CHANGES
|
||||
|
||||
* **auth:** additional authorisation caching
|
||||
|
||||
### Features
|
||||
|
||||
* **auth:** user independent authorisation caching ([63f0d3c](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/63f0d3c37ad4a02a5cbdf76398d4a9c74a0a0b59))
|
||||
* **messages:** implement custom parser for message files ([bb877eb](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/bb877eb81396211a801496061ea603b39753829b))
|
||||
* **messages:** mkMessageAddition ([ea33d84](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/ea33d844cc4acb2503fc4780c7895299eb9d5ef5))
|
||||
|
||||
## [24.9.2](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v24.9.1...v24.9.2) (2021-03-01)
|
||||
|
||||
## [24.9.1](https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/v24.9.0...v24.9.1) (2021-03-01)
|
||||
|
||||
@ -157,6 +157,10 @@ memcached:
|
||||
limit: "_env:MEMCACHED_LIMIT:1024"
|
||||
timeout: "_env:MEMCACHED_TIMEOUT:20"
|
||||
expiration: "_env:MEMCACHED_EXPIRATION:300"
|
||||
memcache-auth: true
|
||||
memcached-local:
|
||||
maximum-ghost: 512
|
||||
maximum-weight: 104857600 # 100MiB
|
||||
|
||||
upload-cache:
|
||||
host: "_env:UPLOAD_S3_HOST:"
|
||||
@ -269,8 +273,6 @@ fallback-personalised-sheet-files-keys-expire: 2419200
|
||||
|
||||
download-token-expire: 604801
|
||||
|
||||
memcache-auth: true
|
||||
|
||||
file-source-arc:
|
||||
maximum-ghost: 512
|
||||
maximum-weight: 1073741824 # 1GiB
|
||||
|
||||
@ -403,6 +403,9 @@ input[type="button"].btn-info:not(.btn-link):hover,
|
||||
font-weight: 600
|
||||
color: var(--color-fontsec)
|
||||
|
||||
.table__td--tooltip
|
||||
width: 2em
|
||||
|
||||
.table__td
|
||||
font-size: 16px
|
||||
color: var(--color-font)
|
||||
@ -588,13 +591,35 @@ section
|
||||
padding-bottom: 30px
|
||||
border-bottom: 1px solid #d3d3d3
|
||||
|
||||
+ section
|
||||
& + section, & + .two-column-sections
|
||||
margin-top: 20px
|
||||
|
||||
&:last-child
|
||||
border-bottom: none
|
||||
padding-bottom: 0px
|
||||
|
||||
.two-column-sections
|
||||
padding-bottom: 30px
|
||||
border-bottom: 1px solid #d3d3d3
|
||||
|
||||
& + section, & + .two-column-sections
|
||||
margin-top: 20px
|
||||
|
||||
&:last-child
|
||||
border-bottom: none
|
||||
padding-bottom: 0px
|
||||
|
||||
@media (min-width: 768px)
|
||||
display: flex
|
||||
justify-content: space-between
|
||||
|
||||
& > section
|
||||
padding: 0
|
||||
border: none
|
||||
|
||||
margin: 0 auto
|
||||
width: calc(50% - 7px)
|
||||
|
||||
.headline-one
|
||||
margin-bottom: 10px
|
||||
|
||||
@ -946,7 +971,7 @@ th, td
|
||||
right: 5px
|
||||
top: 5px
|
||||
|
||||
.occurrence--not-registered, .no-bonus, .allocation-course--excluded, .allocation-course--inactive
|
||||
.occurrence--not-registered, .no-bonus, .allocation-course--excluded, .allocation-course--inactive, .occurrence--ignored
|
||||
text-decoration: line-through
|
||||
|
||||
.result
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { Checkbox } from './checkbox';
|
||||
import { FileInput } from './file-input';
|
||||
import { FileMaxSize } from './file-max-size';
|
||||
import { Password } from './password';
|
||||
|
||||
import './inputs.sass';
|
||||
import './radio-group.sass';
|
||||
@ -9,4 +10,5 @@ export const InputUtils = [
|
||||
Checkbox,
|
||||
FileInput,
|
||||
FileMaxSize,
|
||||
Password,
|
||||
];
|
||||
|
||||
@ -273,3 +273,30 @@ option
|
||||
|
||||
.form--vertical__cell
|
||||
vertical-align: top
|
||||
|
||||
// PASSWORD INPUT
|
||||
|
||||
.password-input__wrapper
|
||||
display: grid
|
||||
grid-template-areas: 'input toggle'
|
||||
width: 100%
|
||||
max-width: 600px
|
||||
grid-template-rows: auto
|
||||
grid-template-columns: 1fr auto
|
||||
|
||||
.password-input__input
|
||||
grid-area: input
|
||||
|
||||
.password-input__toggle
|
||||
grid-area: toggle
|
||||
|
||||
display: flex
|
||||
justify-content: center
|
||||
align-content: center
|
||||
flex-direction: column
|
||||
padding: 7px
|
||||
|
||||
cursor: pointer
|
||||
color: var(--color-fontsec)
|
||||
&:hover
|
||||
color: var(--color-font)
|
||||
|
||||
77
frontend/src/utils/inputs/password.js
Normal file
77
frontend/src/utils/inputs/password.js
Normal file
@ -0,0 +1,77 @@
|
||||
import { Utility } from '../../core/utility';
|
||||
|
||||
const PASSWORD_INITIALIZED_CLASS = 'password-input--initialized';
|
||||
|
||||
@Utility({
|
||||
selector: 'input[type="password"]:not([uw-no-password])',
|
||||
})
|
||||
export class Password {
|
||||
_element;
|
||||
_iconEl;
|
||||
_toggleContainerEl;
|
||||
|
||||
constructor(element) {
|
||||
if (!element)
|
||||
throw new Error('Password utility cannot be setup without an element!');
|
||||
|
||||
if (element.classList.contains(PASSWORD_INITIALIZED_CLASS))
|
||||
return false;
|
||||
|
||||
this._element = element;
|
||||
|
||||
this._element.classList.add('password-input__input');
|
||||
|
||||
const siblingEl = this._element.nextSibling;
|
||||
const parentEl = this._element.parentElement;
|
||||
|
||||
const wrapperEl = document.createElement('div');
|
||||
wrapperEl.classList.add('password-input__wrapper');
|
||||
wrapperEl.appendChild(this._element);
|
||||
|
||||
this._toggleContainerEl = document.createElement('div');
|
||||
this._toggleContainerEl.classList.add('password-input__toggle');
|
||||
wrapperEl.appendChild(this._toggleContainerEl);
|
||||
|
||||
this._iconEl = document.createElement('i');
|
||||
this._iconEl.classList.add('fas', 'fa-fw');
|
||||
this._toggleContainerEl.appendChild(this._iconEl);
|
||||
|
||||
parentEl.insertBefore(wrapperEl, siblingEl);
|
||||
|
||||
this._element.classList.add(PASSWORD_INITIALIZED_CLASS);
|
||||
}
|
||||
|
||||
start() {
|
||||
this.updateVisibleIcon(this.isVisible());
|
||||
|
||||
this._toggleContainerEl.addEventListener('mouseover', () => {
|
||||
this.updateVisibleIcon(!this.isVisible());
|
||||
});
|
||||
this._toggleContainerEl.addEventListener('mouseout', () => {
|
||||
this.updateVisibleIcon(this.isVisible());
|
||||
});
|
||||
this._toggleContainerEl.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
this.setVisible(!this.isVisible());
|
||||
});
|
||||
}
|
||||
|
||||
isVisible() {
|
||||
return this._element.type !== 'password';
|
||||
}
|
||||
|
||||
setVisible(visible) {
|
||||
this._element.type = visible ? 'text' : 'password';
|
||||
this.updateVisibleIcon(visible);
|
||||
}
|
||||
|
||||
updateVisibleIcon(visible) {
|
||||
function visibleClass(visible) {
|
||||
return 'fa-' + (visible ? 'eye' : 'eye-slash');
|
||||
}
|
||||
|
||||
this._iconEl.classList.remove(visibleClass(!visible));
|
||||
this._iconEl.classList.add(visibleClass(!!visible));
|
||||
}
|
||||
}
|
||||
@ -6,19 +6,13 @@ AcceptApplicationsSecondaryRandom: Zufällig
|
||||
AcceptApplicationsSecondaryTime: Nach Zeitpunkt der Bewerbung
|
||||
|
||||
#headings
|
||||
HeadingLegal: Rechtliche Informationen
|
||||
SubmissionNew: Abgabe anlegen
|
||||
ParticipantsList: Kursteilnehmerlisten
|
||||
ParticipantsIntersect: Überschneidung von Kursteilnehmer:innen
|
||||
HeadingProfileData: Persönliche Daten
|
||||
HeadingSchoolList: Institute
|
||||
CorrectorsChange: Korrektoren ändern
|
||||
MaterialList: Material
|
||||
HeadingDataProt: Datenschutzerklärung
|
||||
HeadingTermsUse: Nutzungsbedingungen
|
||||
HeadingCopyright: Urheberrecht
|
||||
HeadingImprint: Impressum
|
||||
CourseNew: Neuen Kurs anlegen
|
||||
HeadingTermsHeading: Semesterübersicht
|
||||
HeadingTermEditHeading: Semester editieren/anlegen
|
||||
|
||||
EmailInvitationWarning: Diese Adresse konnte keinem Uni2work-Benutzer zugeordnet werden. Es wird eine Einladung per E-Mail versandt.
|
||||
|
||||
@ -37,42 +31,18 @@ GenericAvg: Avg
|
||||
GenericMax: Max
|
||||
GenericAll: Insgesamt
|
||||
|
||||
AchievedOf achieved@Points possible@Points: #{achieved} von #{possible}
|
||||
|
||||
SummerTerm year@Integer: Sommersemester #{year}
|
||||
WinterTerm year@Integer: Wintersemester #{year}/#{succ year}
|
||||
SummerTermShort year@Integer: SoSe #{year}
|
||||
WinterTermShort year@Integer: WiSe #{year}/#{mod (succ year) 100}
|
||||
Page num@Int64: #{num}
|
||||
|
||||
TermsHeading: Semesterübersicht
|
||||
TermCurrent: Aktuelles Semester
|
||||
TermEditHeading: Semester editieren/anlegen
|
||||
TermEditTid tid@TermId: Semester #{tid} editieren
|
||||
TermEdited tid@TermId: Semester #{tid} erfolgreich editiert.
|
||||
TermNewTitle: Semester editieren/anlegen.
|
||||
InvalidInput: Eingaben bitte korrigieren.
|
||||
Term: Semester
|
||||
TermPlaceholder: W/S + vierstellige Jahreszahl
|
||||
|
||||
TermStartDay: Erster Tag
|
||||
TermStartDayTooltip: Üblicherweise immer 1. April oder 1. Oktober
|
||||
TermEndDay: Letzter Tag
|
||||
TermEndDayTooltip: Üblicherweise immer 30. September oder 31. März
|
||||
TermHolidays: Feiertage
|
||||
TermHolidayPlaceholder: Feiertag
|
||||
TermHolidayMissing: Feiertag wird benötigt
|
||||
TermLectureStart: Beginn Vorlesungen
|
||||
TermLectureEnd: Ende Vorlesungen
|
||||
TermLectureEndTooltip: Meistens dauer das Sommersemester 14 Wochen und das Wintersemester 15 Wochen.
|
||||
TermActive: Aktiv
|
||||
|
||||
|
||||
SchoolListHeading: Übersicht über verwaltete Institute
|
||||
SchoolHeading school@SchoolName: Übersicht #{school}
|
||||
|
||||
LectureStart: Beginn Vorlesungen
|
||||
|
||||
CourseNoCapacity: In diesem Kurs sind keine Plätze mehr frei.
|
||||
TutorialNoCapacity: In dieser Übung sind keine Plätze mehr frei.
|
||||
ExamOccurrenceNoCapacity: Zu diesem Termin/Raum sind keine Plätze mehr frei.
|
||||
@ -104,20 +74,16 @@ SheetArchiveFileTypeDirectoryHint: hinweis
|
||||
SheetArchiveFileTypeDirectorySolution: loesung
|
||||
SheetArchiveFileTypeDirectoryMarking: korrektur
|
||||
|
||||
Deadline: Abgabe
|
||||
Done: Eingereicht
|
||||
|
||||
SubmissionsCourse tid@TermId ssh@SchoolId csh@CourseShorthand: Alle Abgaben Kurs #{tid}-#{ssh}-#{csh}
|
||||
SubmissionsSheet sheetName@SheetName: Abgaben für #{sheetName}
|
||||
SubmissionEditHead tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName: #{tid}-#{ssh}-#{csh} #{sheetName}: Abgabe editieren/anlegen
|
||||
CorrectionHead tid@TermId ssh@SchoolId csh@CourseShorthand sheetName@SheetName cid@CryptoFileNameSubmission: #{tid}-#{ssh}-#{csh} #{sheetName}: Korrektur
|
||||
CosubmittorTip: Einladungen per E-Mail erhalten genau jene Adressen, für die nicht gesichert werden kann, dass sie mit der dahinter stehenden Person schon einmal für diesen Kurs abgegeben haben. Wenn eine angegebene Adresse einer Person zugeordnet werden kann, mit der Sie in diesem Kurs schon einmal zusammen abgegeben haben, wird der Name der Person angezeigt und die Abgabe erfolgt sofort auch im Namen jener Person.
|
||||
|
||||
SubmissionGroupName: Gruppenname
|
||||
|
||||
CorrectionsTitle: Zugewiesene Korrekturen
|
||||
CorrectorsHead sheetName@SheetName: Korrektoren für #{sheetName}
|
||||
|
||||
<<<<<<< Updated upstream
|
||||
MaterialName: Name
|
||||
MaterialType: Art
|
||||
MaterialTypePlaceholder: Folien, Code, Beispiel, ...
|
||||
@ -193,6 +159,7 @@ UnauthorizedParticipantSelf: Sie sind kein Teilnehmer dieser Veranstaltung.
|
||||
UnauthorizedApplicant: Angegebener Benutzer hat sich nicht für diese Veranstaltung beworben.
|
||||
UnauthorizedApplicantSelf: Sie sind kein Bewerber für diese Veranstaltung.
|
||||
UnauthorizedCourseTime: Dieser Kurs ist momentan nicht freigegeben.
|
||||
UnauthorizedCorrectionExamTime: Sichtbarkeitseinstellungen der relevanten Prüfung verhindern momentan die Freigabe.
|
||||
UnauthorizedCourseRegistrationTime: Dieses Kurs erlaubt momentan keine Anmeldungen.
|
||||
UnauthorizedAllocationRegisterTime: Diese Zentralanmeldung erlaubt momentan keine Bewerbungen.
|
||||
UnauthorizedSheetTime: Dieses Übungsblatt ist momentan nicht freigegeben.
|
||||
@ -213,43 +180,18 @@ MaterialFree: Kursmaterialien ohne Anmeldung zugänglich
|
||||
UnauthorizedWrite: Sie haben hierfür keine Schreibberechtigung
|
||||
UnauthorizedSystemMessageTime: Diese Systemnachricht ist noch nicht oder nicht mehr einsehbar.
|
||||
UnauthorizedSystemMessageAuth: Diese Systemnachricht ist nur für angemeldete Benutzer einsehbar.
|
||||
=======
|
||||
>>>>>>> Stashed changes
|
||||
UnsupportedAuthPredicate authTagT@Text shownRoute@Text: „#{authTagT}“ wurde auf eine Route angewandt, die dies nicht unterstützt: „#{shownRoute}“
|
||||
UnauthorizedDisabledTag authTag@AuthTag: Authorisierungsprädikat "#{toPathPiece authTag}" ist für Ihre Sitzung nicht aktiv
|
||||
UnknownAuthPredicate tag@String: Authorisierungsprädikat "#{tag}" ist dem System nicht bekannt
|
||||
UnauthorizedRedirect: Die angeforderte Seite existiert nicht oder Sie haben keine Berechtigung, die angeforderte Seite zu sehen.
|
||||
UnauthorizedSelf: Aktueller Nutzer ist nicht angegebener Benutzer.
|
||||
UnauthorizedTutorialTutor: Sie sind nicht Tutor für dieses Tutorium.
|
||||
UnauthorizedTutorialTutorControl: Tutoren dürfen dieses Tutorium nicht editieren.
|
||||
UnauthorizedCourseTutor: Sie sind nicht Tutor für diesen Kurs.
|
||||
UnauthorizedTutor: Sie sind nicht Tutor.
|
||||
UnauthorizedTutorialRegisterGroup: Sie sind bereits in einem Tutorium mit derselben Registrierungs-Gruppe.
|
||||
UnauthorizedLDAP: Angegebener Nutzer meldet sich nicht mit Campus-Kennung an.
|
||||
UnauthorizedPWHash: Angegebener Nutzer meldet sich nicht mit Uni2work-Kennung an.
|
||||
UnauthorizedExternalExamListNotEmpty: Liste von externen Prüfungen ist nicht leer
|
||||
UnauthorizedExternalExamLecturer: Sie sind nicht als Prüfer für diese externe Prüfung eingetragen
|
||||
UnauthorizedSubmissionSubmissionGroup: Sie sind nicht Mitglied in einer der registrierten Abgabegruppen, die an dieser Abgabe beteiligt sind
|
||||
UnauthorizedSheetSubmissionGroup: Sie sind nicht Mitglied in einer registrierten Abgabegruppe
|
||||
|
||||
UnauthorizedPasswordResetToken: Dieses Authorisierungs-Token kann nicht mehr zum Passwort ändern benutzt werden
|
||||
|
||||
UnauthorizedAllocatedCourseRegister: Direkte Anmeldungen zum Kurs sind aufgrund einer Zentralanmeldung aktuell nicht gestattet
|
||||
UnauthorizedAllocatedCourseDeregister: Abmeldungen vom Kurs sind aufgrund einer Zentralanmeldung aktuell nicht gestattet
|
||||
UnauthorizedAllocatedCourseDelete: Kurse, die an einer Zentralanmeldung teilnehmen, dürfen nicht gelöscht werden
|
||||
UnauthorizedWorkflowInitiate: Sie dürfen keinen neuen laufenden Workflow initiieren
|
||||
UnauthorizedWorkflowWrite: Sie dürfen aktuell keinen Zustandsübergang im Workflow auslösen
|
||||
UnauthorizedWorkflowRead: Der Workflow enthält aktuell keine Zustände oder Daten die Sie einsehen dürfen
|
||||
UnauthorizedWorkflowInstancesNotEmpty: Es gibt Workflow Instanzen für die Sie einen neuen laufenden Workflow initiieren dürfen
|
||||
UnauthorizedWorkflowWorkflowsNotEmpty: Es gibt laufende Workflows, die Sie einsehen dürfen
|
||||
UnauthorizedWorkflowFiles: Sie dürfen die angegebenen Workflow-Dateien nicht im angegebenen historischen Zustand herunterladen
|
||||
UnauthorizedNotAuthenticatedInDifferentApproot: Sie konnten im Kontext einer separierten Domain (z.B. zum sicheren Download von Dateien) nicht authentifiziert werden. Vermutlich haben Sie kein oder ein abgelaufenes Token verwendet. Sie können versuchen auf die gewünschte Resource mit einem neu generierten Download-Link zuzugreifen.
|
||||
UnauthorizedCsrfDisabled: Ihre Anfrage hätte wmgl. Änderungen am Server-Zustand ausgelöst. Da die sog. CSRF-Protection für Ihre Anfrage deaktiviert ist, musste sie daher abgelehnt werden.
|
||||
UnauthorizedStudent: Sie sind kein Student
|
||||
|
||||
WorkflowRoleUserMismatch: Sie sind nicht einer der vom Workflow geforderten Benutzer
|
||||
WorkflowRoleAlreadyInitiated: Dieser Workflow wurde bereits initiiert
|
||||
WorkflowRoleNoSuchWorkflowWorkflow: Der angegebene Workflow konnte nicht gefunden werden
|
||||
WorkflowRoleNoPayload: Dieser Workflow enthält keine Daten
|
||||
|
||||
UnauthorizedCsrfDisabled: Ihre Anfrage hätte wmgl. Änderungen am Server-Zustand ausgelöst. Da die sog. CSRF-Protection für Ihre Anfrage deaktiviert ist, musste sie daher abgelehnt werden.
|
||||
UnauthorizedDisabledTag authTag@AuthTag: Authorisierungsprädikat "#{toPathPiece authTag}" ist für Ihre Sitzung nicht aktiv
|
||||
|
||||
EMail: E-Mail
|
||||
EMailUnknown email@UserEmail: E-Mail #{email} gehört zu keinem bekannten Benutzer.
|
||||
|
||||
@ -262,40 +204,22 @@ CorByProportionExcludingTutorial proportion@Rational: #{rationalToFixed3 proport
|
||||
DeleteRow: Entfernen
|
||||
|
||||
Users: Benutzer
|
||||
NewsHeading: Aktuelles
|
||||
LoginHeading: Authentifizierung
|
||||
LoginTitle: Authentifizierung
|
||||
ProfileHeading: Benutzereinstellungen
|
||||
|
||||
|
||||
InfoHeading: Informationen
|
||||
VersionHeading: Versionsgeschichte
|
||||
LegalHeading: Rechtliche Informationen
|
||||
SystemMessageHeading: Uni2work Statusmeldung
|
||||
SystemMessageListHeading: Uni2work Statusmeldungen
|
||||
NotificationSettingsHeading displayName@Text: Benachrichtigungs-Einstellungen für #{displayName}
|
||||
|
||||
TokensResetSuccess: Authorisierungs-Tokens invalidiert
|
||||
|
||||
NewsOpenAllocations: Offene Zentralanmeldungen
|
||||
NewsUpcomingSheets: Anstehende Übungsblätter
|
||||
NewsUpcomingExams: Bevorstehende Prüfungen
|
||||
|
||||
NewsHideHiddenSystemMessages: Versteckte Nachrichten nicht mehr anzeigen
|
||||
NewsShowHiddenSystemMessages: Versteckte Nachrichten anzeigen
|
||||
|
||||
NumCourses num@Int64: #{num} #{pluralDE num "Kurs" "Kurse"}
|
||||
CloseAlert: Schliessen
|
||||
|
||||
Name: Name
|
||||
LdapSynced: LDAP-Synchronisiert
|
||||
LdapSyncedBefore: Letzte LDAP-Synchronisation vor
|
||||
|
||||
Plugin: Plugin
|
||||
|
||||
Settings: Individuelle Benutzereinstellungen
|
||||
SettingsUpdate: Einstellungen erfolgreich gespeichert
|
||||
NotificationSettingsUpdate: Benachrichtigungs-Einstellungen erfolgreich gespeichert
|
||||
Never: Nie
|
||||
|
||||
PreviouslyUploadedInfo: Bereits hochgeladene Dateien
|
||||
@ -336,13 +260,8 @@ AssignSubmissionsAssignableSheets: Korrekturen verteilen für:
|
||||
AchievedBonusPoints: Erreichte Bonuspunkte
|
||||
AchievedNormalPoints: Erreichte Punkte
|
||||
PassedResult: Ergebnis
|
||||
Passed: Bestanden
|
||||
NotPassed: Nicht bestanden
|
||||
RatingPointsDone: Abgabe zählt als korrigiert, gdw. Punktezahl gesetzt ist
|
||||
|
||||
VisibleFrom: Veröffentlicht
|
||||
AccessibleSince: Verfügbar seit
|
||||
|
||||
RatingNegative: Bewertungspunkte dürfen nicht negativ sein
|
||||
RatingExceedsMax: Bewertung übersteigt die erlaubte Maximalpunktzahl
|
||||
RatingNotExpected: Keine Bewertungen erlaubt
|
||||
@ -355,39 +274,18 @@ SubmissionSinkExceptionRatingWithoutUpdate: Bewertung gefunden, es ist hier aber
|
||||
SubmissionSinkExceptionForeignRating smid@CryptoFileNameSubmission: Fremde Bewertung für Abgabe #{toPathPiece smid} enthalten. Bewertungen müssen sich immer auf die gleiche Abgabe beziehen!
|
||||
SubmissionSinkExceptionInvalidFileTitleExtension file@FilePath: Dateiname „#{file}“ (wmgl. innerhalb eines ZIP-Archivs) hat keine der für dieses Übungsblatt zulässigen Dateiendungen.
|
||||
|
||||
NoUpcomingSheetDeadlines: Keine anstehenden Übungsblätter
|
||||
NoUpcomingExams difftime@Text: In den nächsten #{difftime} gibt es keine Prüfungen oder ablaufende Prüfungsanmeldungen in Ihren Kursen
|
||||
|
||||
AdminHeading: Administration
|
||||
AdminUserHeading: Benutzeradministration
|
||||
AdminUserRightsHeading: Benutzerrechte
|
||||
AdminUserAuthHeading: Benutzer-Authentifizierung
|
||||
AdminUserHeadingFor: Benutzerprofil für
|
||||
AdminFor: Administrator
|
||||
UserListTitle: Komprehensive Benutzerliste
|
||||
AccessRightsSaved: Berechtigungen erfolgreich verändert
|
||||
AccessRightsNotChanged: Berechtigungen wurden nicht verändert
|
||||
UserSystemFunctions: Systemweite Rollen
|
||||
UserSystemFunctionsSaved: Systemweite Rollen gespeichert
|
||||
UserSystemFunctionsNotChanged: Es wurden keine systemweiten Rollen angepasst
|
||||
UserAssimilateUser: Benutzer
|
||||
AssimilateUserNotFound: E-Mail Adresse konnte keinem Benutzer zugeordnet werden
|
||||
AssimilateUserHaveError: Beim Assimilieren ist ein Fehler aufgetreten
|
||||
AssimilateUserHaveWarnings: Beim Assimilieren wurden Warnungen ausgegeben
|
||||
AssimilateUserSuccess: Benutzer erfolgreich assimiliert
|
||||
|
||||
Date: Datum
|
||||
|
||||
FormFieldRequiredTip: Gekennzeichnete Pflichtfelder sind immer auszufüllen
|
||||
FormAllocationNotifications: Benachrichtigungen für neue Zentralanmeldungskurse
|
||||
FormAllocationNotificationsTip: Wollen Sie eine Benachrichtigung per E-Mail erhalten wenn ein neuer Kurs zur Zentralanmeldung eingetragen wird? „Ja“ und „Nein“ überschreiben die entsprechende systemweite Einstellung unter "Benachrichtigungen"
|
||||
|
||||
AllocNotifyNewCourseDefault: Systemweite Einstellung
|
||||
AllocNotifyNewCourseForceOff: Nein
|
||||
AllocNotifyNewCourseForceOn: Ja
|
||||
|
||||
LastEdits: Letzte Änderungen
|
||||
LastEditByUser: Ihre letzte Bearbeitung
|
||||
NoEditByUser: Nicht von Ihnen bearbeitet
|
||||
|
||||
LDAPLoginTitle: Campus-Login
|
||||
@ -413,10 +311,6 @@ CorrectorMissing: Abwesend
|
||||
CorrectorExcused: Entschuldigt
|
||||
CorrectorStateTip: Abwesende Korrektoren bekommen bei späteren Übungsblättern mehr Korrekturen zum Ausgleich zugewiesen. Entschuldigte Korrektoren müssen nicht nacharbeiten.
|
||||
|
||||
DayIsAHoliday tid@TermId name@Text date@Text: "#{name}" (#{date}) ist ein Feiertag
|
||||
DayIsOutOfLecture tid@TermId name@Text date@Text: "#{name}" (#{date}) ist außerhalb der Vorlesungszeit des #{tid}
|
||||
DayIsOutOfTerm tid@TermId name@Text date@Text: "#{name}" (#{date}) liegt nicht im Semester #{tid}
|
||||
|
||||
AutoUnzip: ZIPs automatisch entpacken
|
||||
AutoUnzipInfo: Entpackt hochgeladene ZIP-Dateien (*.zip) automatisch und fügt den Inhalt dem Stamm-Verzeichnis hinzu.
|
||||
|
||||
@ -447,91 +341,9 @@ GermanGermany: Deutsch (Deutschland)
|
||||
English: Englisch
|
||||
EnglishEurope: Englisch (Europa)
|
||||
|
||||
MailSubjectSubmissionRated csh@CourseShorthand: Ihre #{csh}-Abgabe wurde korrigiert
|
||||
MailSubmissionRatedIntro courseName@Text termDesc@Text: Ihre Abgabe im Kurs #{courseName} (#{termDesc}) wurde korrigiert.
|
||||
|
||||
MailSubjectSubmissionEdited csh@CourseShorthand shn@SheetName: Ihre Abgabe für #{shn} im Kurs #{csh} wurde verändert
|
||||
MailSubmissionEditedIntro coursen@CourseName shn@SheetName termDesc@Text displayName@Text: #{displayName} hat Ihre Abgabe für #{shn} im Kurs #{coursen} (#{termDesc}) verändert.
|
||||
|
||||
MailSubjectSubmissionUserCreated csh@CourseShorthand shn@SheetName: Sie wurden als Mitabgebender zu einer Abgabe für #{shn} im Kurs #{csh} hinzugefügt
|
||||
MailSubjectSubmissionUserCreatedOther displayName@Text csh@CourseShorthand shn@SheetName: Es wurde ein Mitabgebender zu einer Abgabe für #{shn} im Kurs #{csh} hinzugefügt
|
||||
|
||||
MailSubmissionUserCreatedIntro coursen@CourseName shn@SheetName termDesc@Text: Sie wurden als Mitabgebender zu einer Abgabe für #{shn} im Kurs #{coursen} (#{termDesc}) hinzugefügt.
|
||||
MailSubmissionUserCreatedOtherIntro displayName@UserDisplayName coursen@CourseName shn@SheetName termDesc@Text: #{displayName} wurde als Mitabgebender zu einer Abgabe für #{shn} im Kurs #{coursen} (#{termDesc}) hinzugefügt.
|
||||
|
||||
MailSubjectSubmissionUserDeleted csh@CourseShorthand shn@SheetName: Sie wurden als Mitabgebender von Ihrer Abgabe für #{shn} im Kurs #{csh} entfernt
|
||||
MailSubjectSubmissionUserDeletedOther displayName@Text csh@CourseShorthand shn@SheetName: Es wurde ein Mitabgebender von einer Abgabe für #{shn} im Kurs #{csh} entfernt
|
||||
|
||||
MailSubmissionUserDeletedIntro coursen@CourseName shn@SheetName termDesc@Text: Sie wurden als Mitabgebender von Ihrer Abgabe für #{shn} im Kurs #{coursen} (#{termDesc}) entfernt.
|
||||
MailSubmissionUserDeletedOtherIntro displayName@UserDisplayName coursen@CourseName shn@SheetName termDesc@Text: #{displayName} wurde als Mitabgebender von einer Abgabe für #{shn} im Kurs #{coursen} (#{termDesc}) entfernt.
|
||||
|
||||
MailSubjectSheetActive csh@CourseShorthand sheetName@SheetName: #{sheetName} in #{csh} wurde herausgegeben
|
||||
MailSheetActiveIntro courseName@Text termDesc@Text sheetName@SheetName: Sie können nun #{sheetName} im Kurs #{courseName} (#{termDesc}) herunterladen.
|
||||
|
||||
MailSubjectSheetHint csh@CourseShorthand sheetName@SheetName: Hinweise für #{sheetName} in #{csh} wurden herausgegeben
|
||||
MailSheetHintIntro courseName@Text termDesc@Text sheetName@SheetName: Sie können nun die Hinweise für #{sheetName} im Kurs #{courseName} (#{termDesc}) herunterladen.
|
||||
|
||||
MailSubjectSheetSolution csh@CourseShorthand sheetName@SheetName: Lösungen für #{sheetName} in #{csh} wurden herausgegeben
|
||||
MailSheetSolutionIntro courseName@Text termDesc@Text sheetName@SheetName: Sie können nun die Lösungen für #{sheetName} im Kurs #{courseName} (#{termDesc}) herunterladen.
|
||||
|
||||
MailSubjectCourseRegistered csh@CourseShorthand: Sie wurden zu #{csh} angemeldet
|
||||
MailSubjectCourseRegisteredOther displayName@Text csh@CourseShorthand: #{displayName} wurde zu #{csh} angemeldet
|
||||
MailCourseRegisteredIntro courseName@Text termDesc@Text: Sie wurden im Kurs #{courseName} (#{termDesc}) angemeldet.
|
||||
MailCourseRegisteredIntroOther displayName@Text courseName@Text termDesc@Text: #{displayName} wurde im Kurs #{courseName} (#{termDesc}) angemeldet.
|
||||
|
||||
MailSubjectExamResult csh@CourseShorthand examn@ExamName: Ergebnisse für #{examn} in #{csh} wurden herausgegeben
|
||||
MailExamResultIntro courseName@Text termDesc@Text examn@ExamName: Sie können nun Ihr Ergebnis für #{examn} im Kurs #{courseName} (#{termDesc}) einsehen.
|
||||
|
||||
MailSubjectExamOfficeExamResults coursen@CourseName examn@ExamName: Ergebnisse für #{examn} in #{coursen} sind fertiggestellt
|
||||
MailExamOfficeExamResultsIntro courseName@Text termDesc@Text examn@ExamName: Ein Kursverwalter hat die Prüfungsleistungen für #{examn} im Kurs #{courseName} (#{termDesc}) freigegeben.
|
||||
|
||||
MailSubjectExamOfficeExamResultsChanged coursen@CourseName examn@ExamName: Ergebnisse für #{examn} in #{coursen} wurden verändert
|
||||
MailExamOfficeExamResultsChangedIntro courseName@Text termDesc@Text examn@ExamName: Ein Kursverwalter hat Prüfungsleistungen für #{examn} im Kurs #{courseName} (#{termDesc}) verändert.
|
||||
|
||||
MailSubjectExamOfficeExternalExamResults coursen@CourseName examn@ExamName: Ergebnisse für #{examn} in #{coursen}
|
||||
MailExamOfficeExternalExamResultsIntro coursen@CourseName termDesc@Text examn@ExamName: Ein Kursverwalter hat Prüfungsleistungen für #{examn} im Kurs #{coursen} (#{termDesc}) erstellt oder angepasst.
|
||||
|
||||
MailSubjectExamRegistrationActive csh@CourseShorthand examn@ExamName: Anmeldung für #{examn} in #{csh} ist möglich
|
||||
MailExamRegistrationActiveIntro courseName@Text termDesc@Text examn@ExamName: Sie können sich nun für #{examn} im Kurs #{courseName} (#{termDesc}) anmelden.
|
||||
|
||||
MailSubjectExamRegistrationSoonInactive csh@CourseShorthand examn@ExamName: Anmeldung für #{examn} in #{csh} ist nur noch kurze Zeit möglich
|
||||
MailExamRegistrationSoonInactiveIntro courseName@Text termDesc@Text examn@ExamName: Sie können sich bald nicht mehr für #{examn} im Kurs #{courseName} (#{termDesc}) anmelden.
|
||||
|
||||
MailSubjectExamDeregistrationSoonInactive csh@CourseShorthand examn@ExamName: Abmeldung für #{examn} in #{csh} ist nur noch kurze Zeit möglich
|
||||
MailExamDeregistrationSoonInactiveIntro courseName@Text termDesc@Text examn@ExamName: Sie können sich bald nicht mehr von #{examn} im Kurs #{courseName} (#{termDesc}) abmelden.
|
||||
|
||||
MailSubjectSubmissionsUnassigned csh@CourseShorthand sheetName@SheetName: Abgaben zu #{sheetName} in #{csh} konnten nicht verteilt werden
|
||||
MailSubmissionsUnassignedIntro n@Int courseName@Text termDesc@Text sheetName@SheetName: #{n} Abgaben zu #{sheetName} im Kurs #{courseName} (#{termDesc}) konnten nicht automatisiert verteilt werden.
|
||||
|
||||
MailSubjectSheetSoonInactive csh@CourseShorthand sheetName@SheetName: #{sheetName} in #{csh} kann nur noch kurze Zeit abgegeben werden
|
||||
MailSheetSoonInactiveIntro courseName@Text termDesc@Text sheetName@SheetName: Abgabefrist für #{sheetName} im Kurs #{courseName} (#{termDesc}) endet in Kürze.
|
||||
MailSubjectSheetInactive csh@CourseShorthand sheetName@SheetName: Abgabezeitraum für #{sheetName} in #{csh} abgelaufen
|
||||
MailSheetInactiveIntro courseName@Text termDesc@Text sheetName@SheetName n@Int num@Int64: Die Abgabefrist für #{sheetName} im Kurs #{courseName} (#{termDesc}) ist beendet. Es gab #{noneOneMoreDE n "Keine Abgaben" "Nur eine Abgabe von " (toMessage n <> " Abgaben von ")}#{noneOneMoreDE num "" "einem Teilnehmer" (toMessage num <> " Teilnehmern")}.
|
||||
MailSheetInactiveIntroNoUserSubmission courseName@Text termDesc@Text sheetName@SheetName n@Int num@Int64: Die Abgabefrist für #{sheetName} im Kurs #{courseName} (#{termDesc}) ist beendet.#{noneOneMoreDE n "" "Es gab bereits eine Abgabe von " (("Es gab bereits " <> toMessage n) <> " Abgaben von ")}#{noneOneMoreDE num "" "einem Teilnehmer" (toMessage num <> " Teilnehmern")}.
|
||||
MailSheetInactivePseudonymsCount n@Int: Die Anzahl von Abgaben betrifft nur jene, die bereits direkt in Uni2work abgegeben haben. Es #{pluralDE n (("wurde " <> tshow n) <> " Pseudonym") (("wurden " <> tshow n) <> " Pseudonyme")} generiert.
|
||||
MailSheetInactiveParticipantsCount n@Int: Es #{pluralDE n "ist aktuell" "sind aktuell"} #{n} Teilnehmer zum Kurs angemeldet.
|
||||
|
||||
MailSubjectCorrectionsAssigned csh@CourseShorthand sheetName@SheetName: Ihnen wurden Korrekturen zu #{sheetName} in #{csh} zugeteilt
|
||||
MailCorrectionsAssignedIntro courseName@Text termDesc@Text sheetName@SheetName n@Int: #{n} #{pluralDE n "Abgabe wurde" "Abgaben wurden"} Ihnen zur Korrektur für #{sheetName} im Kurs #{courseName} (#{termDesc}) zugeteilt.
|
||||
|
||||
MailSubjectUserRightsUpdate name@Text: Berechtigungen für #{name} aktualisiert
|
||||
MailUserRightsIntro name@Text email@UserEmail: #{name} <#{email}> hat folgende Uni2work Berechtigungen:
|
||||
MailNoLecturerRights: Sie haben derzeit keine Dozenten-Rechte.
|
||||
MailLecturerRights n@Int: Als Dozent dürfen Sie Veranstaltungen innerhalb #{pluralDE n "Ihres Instituts" "Ihrer Institute"} anlegen.
|
||||
|
||||
MailSubjectUserSystemFunctionsUpdate name@Text: Berechtigungen für #{name} aktualisiert
|
||||
MailUserSystemFunctionsIntro name@Text email@UserEmail: #{name} <#{email}> hat folgende Uni2work nicht-institutsbezogene Berechtigungen:
|
||||
MailUserSystemFunctionsNoFunctions: Keine
|
||||
|
||||
MailSubjectUserAuthModeUpdate: Ihr Uni2work-Login
|
||||
UserAuthModePWHashChangedToLDAP: Sie können sich nun mit Ihrer Campus-Kennung in Uni2work einloggen
|
||||
UserAuthModeLDAPChangedToPWHash: Sie können sich nun mit einer Uni2work-internen Kennung in Uni2work einloggen
|
||||
NewPasswordLinkTip: Das Passwort Ihrer Uni2work-internen Kennung können Sie auf der folgenden Seite setzen:
|
||||
NewPasswordLink: Neues Passwort setzen
|
||||
AuthPWHashTip: Sie müssen nun das mit "Uni2work-Login" beschriftete Login-Formular verwenden. Stellen Sie bitte sicher, dass Sie ein Passwort gesetzt haben, bevor Sie versuchen sich anzumelden.
|
||||
PasswordResetEmailIncoming: Einen Link um ihr Passwort zu setzen bzw. zu ändern bekommen Sie, aus Sicherheitsgründen, in einer separaten E-Mail.
|
||||
|
||||
MailEditNotifications: Benachrichtigungen ein-/ausschalten
|
||||
MailSubjectSupport: Supportanfrage
|
||||
MailSubjectSupportCustom customSubject@Text: [Support] #{customSubject}
|
||||
|
||||
@ -569,60 +381,8 @@ PseudonymAutocorrections: Korrekturvorschläge:
|
||||
|
||||
CorrGrade: Korrekturen eintragen
|
||||
|
||||
UserAccountDeleted name@Text: Konto für #{name} wurde gelöscht!
|
||||
UserSubmissionsDeleted n@Int: #{tshow n} Abgaben wurden unwiderruflich gelöscht.
|
||||
UserGroupSubmissionsKept n@Int: #{tshow n} Gruppenabgaben verbleiben in der Datenbank, aber die Zuordnung zum Benutzer wurde gelöscht. Gruppenabgaben können dadurch zu Einzelabgaben werden, die dann mit dem letzten Benutzer gelöscht werden.
|
||||
UserSubmissionGroupsDeleted count@Int64: #{tshow count} benannte Abgabengruppen wurden gelöscht, da sie ohne den Nutzer leer wären.
|
||||
UserAccountDeleteWarning: Achtung, dies löscht den kompletten Benutzer unwiderruflich und mit allen assoziierten Daten aus der Datenbank. Prüfungsdaten müssen jedoch langfristig gespeichert bleiben!
|
||||
|
||||
HelpTitle : Hilfe
|
||||
HelpSendLastError: Letzte Fehlermeldung anhängen
|
||||
HelpError: Letzte Fehlermeldung
|
||||
HelpErrorYamlFilename mailId@MailObjectId: fehlermeldung-#{toPathPiece mailId}.yaml
|
||||
HelpErrorOrRequestRequired: Bitte geben Sie entweder eine Supportanfrage bzw. einen Verbesserungsvorschlag an oder hängen Sie die letzte Fehlermeldung an
|
||||
|
||||
InfoLecturerTitle: Hinweise für Veranstalter
|
||||
|
||||
SystemMessageNewsOnly: Nur auf "Aktuelles"
|
||||
SystemMessageRecordChanged: Signifikante Änderung
|
||||
SystemMessageRecordChangedTip: Soll der "zuletzt geändert"-Zeitstempel gesetzt werden? Nachrichten werden auf "Aktuelles" danach sortiert und bei signifikanten Änderungen erneut als Benachrichtigung unten rechts angezeigt.
|
||||
SystemMessageUnhide: "Verstecken" ignorieren
|
||||
SystemMessageUnhideTip: Soll die Nachricht für Benutzer, die sie aktiv versteckt haben, erneut angezeigt werden?
|
||||
SystemMessageCreated: Erstellt
|
||||
SystemMessageLastChanged: Zuletzt geändert
|
||||
SystemMessageLastChangedAt time@Text: Zuletzt geändert: #{time}
|
||||
SystemMessageLastUnhide: Zuletzt un-versteckt
|
||||
SystemMessageFrom: Sichtbar ab
|
||||
SystemMessageTo: Sichtbar bis
|
||||
SystemMessageAuthenticatedOnly: Nur angemeldet
|
||||
SystemMessageSeverity: Schwere
|
||||
SystemMessagePriority: Priorität
|
||||
SystemMessagePriorityNegative: Priorität darf nicht negativ sein
|
||||
SystemMessageId: Id
|
||||
SystemMessageSummaryContent: Zusammenfassung / Inhalt
|
||||
SystemMessageSummary: Zusammenfassung
|
||||
SystemMessageContent: Inhalt
|
||||
SystemMessageLanguage: Sprache
|
||||
|
||||
SystemMessageDelete: Löschen
|
||||
SystemMessageActivate: Sichtbar schalten
|
||||
SystemMessageDeactivate: Unsichtbar schalten
|
||||
SystemMessageTimestamp: Zeitpunkt
|
||||
|
||||
SystemMessagesDeleted: System-Nachrichten gelöscht:
|
||||
SystemMessagesActivated: Aktivierungszeitpunkt folgender System-Nachrichten gesetzt:
|
||||
SystemMessagesDeactivated: Deaktivierungszeitpunkt folgender System-Nachrichten gesetzt:
|
||||
SystemMessageEmptySelection: Keine System-Nachrichten ausgewählt
|
||||
SystemMessageAdded sysMsgId@CryptoUUIDSystemMessage: System-Nachricht hinzugefügt: #{toPathPiece sysMsgId}
|
||||
SystemMessageEdit: Statusmeldung anpassen
|
||||
SystemMessageEditTranslations: Übersetzungen anpassen
|
||||
SystemMessageAddTranslation: Übersetzung hinzufügen
|
||||
|
||||
SystemMessageEditSuccess: Statusmeldung angepasst.
|
||||
SystemMessageAddTranslationSuccess: Übersetzung hinzugefügt.
|
||||
SystemMessageEditTranslationSuccess: Übersetzung angepasst.
|
||||
SystemMessageDeleteTranslationSuccess: Übersetzung entfernt.
|
||||
|
||||
MessageError: Fehler
|
||||
MessageWarning: Warnung
|
||||
MessageInfo: Information
|
||||
@ -649,8 +409,6 @@ EncodedSecretBoxCouldNotOpenSecretBox: Konnte libsodium-secretbox nicht öffnen
|
||||
EncodedSecretBoxCouldNotDecodePlaintext aesonErr@String: Konnte Klartext nicht JSON-dekodieren: #{aesonErr}
|
||||
ErrMsgHeading: Fehlermeldung entschlüsseln
|
||||
|
||||
TitleMetrics: Metriken
|
||||
|
||||
DBTIRowsMissing n@Int: #{pluralDE n "Eine Zeile ist" "Einige Zeilen sind"} aus der Datenbank verschwunden, seit das Formular für Sie generiert wurde
|
||||
|
||||
NavigationFavourites: Favoriten
|
||||
@ -659,6 +417,7 @@ CommBody: Nachricht
|
||||
CommDuplicateRecipients n@Int: #{n} #{pluralDE n "doppelter" "doppelte"} Empfänger ignoriert
|
||||
CommUndisclosedRecipients: Verborgene Empfänger
|
||||
CommAllRecipients: alle-empfaenger
|
||||
CommAllRecipientsSheet: Empfänger
|
||||
|
||||
MultiSelectFieldTip: Mehrfach-Auswahl ist möglich (Umschalt bzw. Strg)
|
||||
MultiEmailFieldTip: Es sind mehrere, Komma-separierte, E-Mail-Adressen möglich
|
||||
@ -675,29 +434,14 @@ WeekDay: Wochentag
|
||||
|
||||
MassInputTip: Es können mehrere Werte angegeben werden. Werte müssen mit + zur Liste hinzugefügt werden und können mit - wieder entfernt werden. Alle Änderungen müssen noch durch Drücken des Formular-Knopfes bestätigt werden.
|
||||
|
||||
HealthReport: Instanz-Zustand
|
||||
InstanceIdentification: Instanz-Identifikation
|
||||
|
||||
InstanceId: Instanz-Nummer
|
||||
ClusterId: Cluster-Nummer
|
||||
|
||||
HealthMatchingClusterConfig: Cluster-geteilte Konfiguration ist aktuell
|
||||
HealthHTTPReachable: Cluster kann an der erwarteten URL über HTTP erreicht werden
|
||||
HealthLDAPAdmins: Anteil der Administratoren, die im LDAP-Verzeichnis gefunden werden können
|
||||
HealthSMTPConnect: SMTP-Server kann erreicht werden
|
||||
HealthWidgetMemcached: Memcached-Server liefert Widgets korrekt aus
|
||||
HealthActiveJobExecutors: Anteil der job-workers, die neue Befehle annehmen
|
||||
|
||||
|
||||
CourseParticipants n@Int: Derzeit #{n} angemeldete Kursteilnehmer
|
||||
CourseParticipant: Teilnehmer:in
|
||||
CourseParticipantsRegisteredWithoutField n@Int: #{n} Teilnehmer #{pluralDE n "wurde ohne assoziiertes Studienfach" "wurden ohne assoziierte Studienfächer"} angemeldet, da #{pluralDE n "kein eindeutiges Hauptfach bestimmt werden konnte" "keine eindeutigen Hauptfächer bestimmt werden konnten"}
|
||||
ExamRegistrationRegisteredWithoutField n@Int: #{n} Teilnehmer #{pluralDE n "wurde" "wurden"} sowohl zur Prüfung, als auch #{pluralDE n "ohne assoziiertes Studienfach" "ohne assoziierte Studienfächer"} zum Kurs angemeldet, da #{pluralDE n "kein eindeutiges Hauptfach bestimmt werden konnte" "keine eindeutigen Hauptfächer bestimmt werden konnten"}
|
||||
ExamRegistrationParticipantsRegistered n@Int: #{n} Teilnehmer #{pluralDE n "wurde" "wurden"} zur Prüfung angemeldet
|
||||
|
||||
NewsExamOccurrenceRoomIsUnset: —
|
||||
NewsExamOccurrenceRoomIsHidden: Raum wird nur Teilnehmern angezeigt
|
||||
|
||||
ExamOpenBook: Open Book
|
||||
ExamClosedBook: Closed Book
|
||||
|
||||
@ -718,8 +462,6 @@ ExamRequiredEquipmentMicrophoneInternet: Mikrophon
|
||||
ExamPassed: Bestanden
|
||||
ExamNotPassed: Nicht bestanden
|
||||
|
||||
NewsExamRegistered: Zur Prüfung angemeldet
|
||||
NewsExamNotRegistered: Nicht zur Prüfung angemeldet
|
||||
ExamRegistrationTime: Angemeldet seit
|
||||
|
||||
VersionHistory: Versionsgeschichte
|
||||
@ -749,15 +491,16 @@ CsvDeleteMissing: Fehlende Einträge entfernen
|
||||
TableProportion c@Text of'@Text prop@Rational: #{c}/#{of'} (#{rationalToFixed2 (100 * prop)}%)
|
||||
TableProportionNoRatio c@Text of'@Text: #{c}/#{of'}
|
||||
|
||||
<<<<<<< Updated upstream
|
||||
ParticipantsCsvName tid@TermId ssh@SchoolId: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-kursteilnehmer
|
||||
ParticipantsCsvSheetName tid@TermId ssh@SchoolId: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)} Kursteilnehmer
|
||||
|
||||
=======
|
||||
>>>>>>> Stashed changes
|
||||
CsvColumnUserField: Studienfach, mit dem der Teilnehmer seine Kursanmeldung assoziiert hat
|
||||
CsvColumnUserDegree: Abschluss, den der Teilnehmer im assoziierten Studienfach anstrebt
|
||||
CsvColumnUserSemester: Fachsemester des Teilnehmers im assoziierten Studienfach
|
||||
|
||||
Action: Aktion
|
||||
ActionNoUsersSelected: Keine Benutzer ausgewählt
|
||||
|
||||
ExamUserCsvCourseRegister: Benutzer zum Kurs und zur Prüfung anmelden
|
||||
ExamUserCsvRegister: Kursteilnehmer zur Prüfung anmelden
|
||||
ExamUserCsvAssignOccurrence: Teilnehmern einen anderen Termin/Raum zuweisen
|
||||
@ -783,62 +526,11 @@ ExternalExamUserCsvDeregister: Hinterlegte Prüfungsleistung löschen
|
||||
TableHeadingCsvImport: CSV-Import
|
||||
TableHeadingCsvExport: CSV-Export
|
||||
|
||||
AuthLDAPLookupFailed: Nutzer konnte aufgrund eines LDAP-Fehlers nicht nachgeschlagen werden
|
||||
AuthLDAPInvalidLookup: Bestehender Nutzer konnte nicht eindeutig einem LDAP-Eintrag zugeordnet werden
|
||||
AuthLDAPAlreadyConfigured: Nutzer meldet sich bereits per Campus-Kennung in Uni2work an
|
||||
AuthLDAPConfigured: Nutzer meldet sich nun per Campus-Kennung in Uni2work an
|
||||
|
||||
AuthPWHashAlreadyConfigured: Nutzer meldet sich bereits per Uni2work-Kennung an
|
||||
AuthPWHashConfigured: Nutzer meldet sich nun per Uni2work-Kennung an
|
||||
|
||||
PasswordResetQueued: Link zum Passwort-Zurücksetzen versandt
|
||||
ResetPassword: Uni2work-Passwort ändern bzw. setzen
|
||||
|
||||
AuthLDAP: Campus
|
||||
AuthPWHash pwHash@Text: Uni2work
|
||||
CurrentPassword: Aktuelles Passwort
|
||||
NewPassword: Neues Passwort
|
||||
NewPasswordRepeat: Wiederholung
|
||||
CurrentPasswordInvalid: Aktuelles Passwort ist inkorrekt
|
||||
PasswordRepeatInvalid: Wiederholung stimmt nicht mit neuem Passwort überein
|
||||
UserPasswordHeadingFor: Passwort ändern für
|
||||
PasswordChangedSuccess: Passwort erfolgreich geändert
|
||||
|
||||
FunctionaryInviteFunction: Funktion
|
||||
FunctionaryInviteSchool: Institut
|
||||
FunctionaryInviteField: Einzuladende E-Mail-Adressen
|
||||
FunctionaryInviteHeading: Institut-Funktionäre hinzufügen
|
||||
|
||||
FunctionariesInvited n@Int: #{n} #{pluralDE n "Funktionär" "Funktionäre"} per E-Mail eingeladen
|
||||
FunctionariesAdded n@Int: #{n} #{pluralDE n "Funktionär" "Funktionäre"} eingetragen
|
||||
|
||||
MailSubjectSchoolFunctionInvitation school@SchoolName renderedFunction@Text: #{renderedFunction}-Einladung für „#{school}“
|
||||
MailSchoolFunctionInviteHeading school@SchoolName renderedFunction@Text: #{renderedFunction}-Einladung für „#{school}“
|
||||
SchoolFunctionInviteExplanation renderedFunction@Text: Sie wurden eingeladen, als #{renderedFunction} für ein Institut zu wirken. Sie erhalten, nachdem Sie die Einladung annehmen, erweiterte Rechte innerhalb des Instituts.
|
||||
SchoolFunctionInvitationAccepted school@SchoolName renderedFunction@Text: #{renderedFunction}-Einladung zum Dozent für „#{school}“ angenommen
|
||||
|
||||
AllocationApplication: Bewerbung
|
||||
AllocationProcess: Platzvergabe
|
||||
|
||||
SchoolShort: Kürzel
|
||||
SchoolName: Name
|
||||
SchoolLdapOrganisations: Assoziierte LDAP-Fragmente
|
||||
SchoolLdapOrganisationsTip: Beim Login via LDAP werden dem Nutzer alle Institute zugeordnet deren assoziierte LDAP-Fragmente im Eintrag des Nutzer gefunden werden
|
||||
SchoolLdapOrganisationMissing: LDAP-Fragment wird benötigt
|
||||
SchoolExamMinimumRegisterBeforeStart: Minimale Tage zwischen Anmeldebeginn und Termin für Prüfungen
|
||||
SchoolExamMinimumRegisterBeforeStartTip: Wenn angegeben werden Dozenten gezwungen Anmeldezeitraum und Prüfungstermin stets zusammen einzustellen.
|
||||
SchoolExamMinimumRegisterDuration: Minimale Anmeldedauer für Prüfungen
|
||||
SchoolExamMinimumRegisterDurationTip: Wenn angegeben werden Dozenten daran gehindert Anmeldefristen von weniger als der minimalen Dauer für ihre Prüfungen einzustellen.
|
||||
SchoolExamRequireModeForRegistration: Prüfungsmodus erforderlich für Anmeldung
|
||||
SchoolExamRequireModeForRegistrationTip: Sollen Dozenten gezwungen werden Prüfungsmodus und Anmeldefrist stets zusammen einzustellen?
|
||||
SchoolExamDiscouragedModes: Prüfungsmodi mit Warnung
|
||||
|
||||
SchoolUpdated ssh@SchoolId: #{ssh} erfolgreich angepasst
|
||||
SchoolTitle ssh@SchoolId: Institut „#{ssh}“
|
||||
TitleSchoolNew: Neues Institut anlegen
|
||||
SchoolCreated ssh@SchoolId: #{ssh} erfolgreich angelegt
|
||||
SchoolExists ssh@SchoolId: Institut „#{ssh}“ existiert bereits
|
||||
|
||||
SchoolAdmin: Admin
|
||||
SchoolLecturer: Dozent
|
||||
SchoolEvaluation: Kursumfragenverwaltung
|
||||
@ -847,55 +539,8 @@ SchoolAllocation: Zentralanmeldungs-Administration
|
||||
|
||||
UserLdapSync: LDAP-Synchronisieren
|
||||
AllUsersLdapSync: Alle LDAP-Synchronisieren
|
||||
SynchroniseLdapUserQueued n@Int: LDAP-Synchronisation von #{n} #{pluralDE n "Benutzer" "Benutzern"} angestoßen
|
||||
SynchroniseLdapAllUsersQueued: LDAP-Synchronisation von allen Benutzern angestoßen
|
||||
UserHijack: Sitzung übernehmen
|
||||
|
||||
MailAllocationSchoolAndName allocationSchool@SchoolId allocation@AllocationName: #{allocationSchool}: „#{allocation}“
|
||||
|
||||
MailSubjectAllocationStaffRegister allocationSchool@SchoolId allocation@AllocationName: Sie können nun Kurse für die Zentralameldung #{allocationSchool}: „#{allocation}“ registrieren
|
||||
MailSubjectAllocationStaffRegisterMultiple n@Int: Sie können nun Kurse für #{n} Zentralameldungen registrieren
|
||||
MailAllocationStaffRegisterIntroMultiple n@Int: Sie können nun Kurse für die folgenden #{n} Zentralameldungen registrieren:
|
||||
MailAllocationStaffRegisterNewCourse: Sie können auf der unten aufgeführten Seite neue Kurse in Uni2work anlegen. Hierbei haben Sie die Möglichkeit anzugeben, dass der Kurs an einer Zentralanmeldung teilnimmt.
|
||||
MailAllocationStaffRegisterDeadline n@Int deadline@Text: Bitte beachten Sie, dass alle Kurse, die an #{pluralDE n "dieser Zentralanmeldung" "diesen Zentralanmeldungen"} teilnehmen, bis #{deadline} eingetragen sein müssen.
|
||||
MailAllocationStaffRegisterDeadlineMultiple: Bitte beachten Sie, dass alle Kurse, die an einer dieser Zentralanmeldungen teilnehmen, bis Ende der jeweiligen Regstrierungsphase (siehe unten) eingetragen sein müssen.
|
||||
MailAllocationStaffRegisterDeadlineSingle deadline@Text: Registrierungsphase endet #{deadline}
|
||||
MailAllocationStaffRegisterDeadlineSingleNothing: Aktuell kein Ende der Registrierungsphase festgelegt
|
||||
|
||||
MailSubjectAllocationRegister allocationSchool@SchoolId allocation@AllocationName: Es kann sich nun für Kurse der Zentralameldung #{allocationSchool}: „#{allocation}“ beworben werden
|
||||
MailSubjectAllocationRegisterMultiple n@Int: Es kann sich nun für Kurse für #{n} Zentralanmeldungen beworben werden
|
||||
MailAllocationRegisterIntroMultiple n@Int: Es kann sich nun für Kurse für die folgenden #{n} Zentralanmeldungen beworben werden:
|
||||
MailAllocationRegister n@Int: Es kann sich nun, auf #{pluralDE n "der unten aufgeführten Seite" "den unten aufgeführten Seiten"}, für alle Kurse der #{pluralDE n "Zentralanmeldung" "Zentralanmeldungen"} jeweils einzeln beworben werden.
|
||||
MailAllocationRegisterDeadline deadline@Text: Bitte beachten Sie, dass alle Bewerbungen bis #{deadline} eingegangen sein müssen.
|
||||
MailAllocationRegisterDeadlineMultiple: Bitte beachten Sie, dass alle Bewerbungen bis Ende der jeweiligen Bewerbungsphase (siehe unten) eingegangen sein müssen.
|
||||
MailAllocationRegisterDeadlineSingle deadline@Text: Bewerbungsphase endet #{deadline}
|
||||
MailAllocationRegisterDeadlineSingleNothing: Aktuell kein Ende der Bewerbungsphase festgelegt
|
||||
|
||||
|
||||
MailSubjectAllocationAllocation allocationSchool@SchoolId allocation@AllocationName: Sie können nun Bewerbungen für ihre Kurse in der Zentralanmeldung #{allocationSchool}: „#{allocation}“ bewerten
|
||||
MailSubjectAllocationAllocationMultiple n@Int: Sie können nun Bewerbungen für ihre Kurse in #{n} Zentralanmeldungen bewerten
|
||||
MailAllocationAllocationIntroMultiple n@Int: Sie können nun Bewerbungen für ihre Kurse in #{n} Zentralanmeldungen bewerten:
|
||||
MailAllocationAllocation n@Int: Sie können nun auf den unten aufgeführten Seiten Bewerbungen, die im Rahmen der #{pluralDE n "Zentralanmeldung" "Zentralanmeldungen"} an ihre Kurse gestellt wurden, bewerten. Die Bewertungen werden bei der Vergabe der Plätze berücksichtigt.
|
||||
MailAllocationApplicationsMayChange deadline@Text: Bitte beachten Sie, dass Studierende noch bis #{deadline} Bewerbungen stellen, verändern und zurückziehen können. Bewerbungen, die sich nach ihrer Bewertung noch verändern, müssen neu bewertet werden.
|
||||
MailAllocationApplicationsRegisterDeadline deadline@Text: Bewerbungsphase endet #{deadline}
|
||||
MailAllocationApplicationsRegisterDeadlineNothing: Aktuell kein Ende der Bewerbungsphase festgelegt
|
||||
MailAllocationApplicationsMayChangeMultiple: Bitte beachten Sie, dass Studierende noch bis Ende der Bewerbungsphase (siehe unten) der jeweiligen Zentralanmeldung Bewerbungen stellen, verändern und zurückziehen können. Bewerbungen, die sich nach ihrer Bewertung noch verändern, müssen neu bewertet werden.
|
||||
MailAllocationAllocationDeadline deadline@Text: Bitte beachten Sie, dass alle Bewertungen bis #{deadline} erfolgt sein müssen.
|
||||
MailAllocationApplicationsAllocationDeadline deadline@Text: Bewertungsphase endet #{deadline}
|
||||
MailAllocationApplicationsAllocationDeadlineNothing: Aktuell keine Ende der Bewertungsphase festgelegt
|
||||
MailAllocationAllocationDeadlineMultiple: Bitte beachten Sie, dass alle Bewertungen bis Ende der Bewertungsphase (siehe unten) erfolgt sein müssen.
|
||||
|
||||
MailSubjectAllocationUnratedApplications allocationSchool@SchoolId allocation@AllocationName: Es stehen noch Bewertungen zu Bewerbungen für ihre Kurse in der Zentralanmeldung #{allocationSchool}: „#{allocation}“ aus
|
||||
MailSubjectAllocationUnratedApplicationsMultiple n@Int: Es stehen noch Bewertungen zu Bewerbungen für ihre Kurse in #{n} Zentralanmeldungen aus
|
||||
MailAllocationUnratedApplicationsIntroMultiple n@Int: Es stehen noch Bewertungen zu Bewerbungen für ihre Kurse in #{n} Zentralanmeldungen aus:
|
||||
MailAllocationUnratedApplications n@Int: Für die unten aufgeführten Kurse liegen Bewerbungen vor, die im Rahmen der #{pluralDE n "Zentralanmeldung" "Zentralanmeldungen"} an den jeweiligen Kurs gestellt wurden, die entweder noch nicht bewertet wurden oder die nach der Bewertung noch verändert wurden und deswegen neu bewertet werden müssen.
|
||||
MailAllocationUnratedApplicationsCount i@Natural: #{i} #{pluralDE i "Bewerbung" "Bewerbungen"}
|
||||
|
||||
MailSubjectAllocationNewCourse allocation@AllocationName: Es wurde ein zusätzlicher Kurs zur Zentralanmeldung „#{allocation}” eingetragen
|
||||
MailAllocationNewCourseTip: Es wurde der folgende Kurs zur Zentralanmeldung eingetragen:
|
||||
MailAllocationNewCourseEditApplicationsHere: Sie können Ihre Bewerbung(en) hier anpassen:
|
||||
MailAllocationNewCourseApplyHere: Sie können sich hier bewerben:
|
||||
|
||||
UserMatriculationNotFound matriculation@Text: Es existiert kein Uni2work-Benutzer mit Matrikelnummer „#{matriculation}“
|
||||
UserMatriculationAmbiguous matriculation@Text: Matrikelnummer „#{matriculation}“ ist nicht eindeutig
|
||||
|
||||
@ -906,13 +551,11 @@ LdapIdentificationOrEmail: Campus-Kennung / E-Mail-Adresse
|
||||
AuthKindLDAP: Campus-Kennung
|
||||
AuthKindPWHash: Uni2work-Kennung
|
||||
|
||||
UserDisplayEmailChanged: Öffentliche E-Mail-Adresse erfolgreich gesetzt
|
||||
TitleChangeUserDisplayEmail: Öffentliche E-Mail-Adresse setzen
|
||||
|
||||
MailSubjectChangeUserDisplayEmail: Diese E-Mail-Adresse in Uni2work veröffentlichen
|
||||
MailIntroChangeUserDisplayEmail displayEmail@UserEmail: Der oben genannte Benutzer möchte „#{displayEmail}“ als öffentliche Adresse, assoziiert mit sich selbst, angeben. Wenn Sie diese Aktion nicht selbst ausgelöst haben, ignorieren Sie diese Mitteilung bitte!
|
||||
MailTitleChangeUserDisplayEmail displayName@Text: #{displayName} möchte diese E-Mail-Adresse in Uni2work veröffentlichen
|
||||
|
||||
<<<<<<< Updated upstream
|
||||
LecturerInfoTooltipNew: Neues Feature
|
||||
LecturerInfoTooltipProblem: Feature mit bekannten Problemen
|
||||
LecturerInfoTooltipPlanned: Geplantes Feature
|
||||
@ -931,12 +574,15 @@ AllocationResultsTip: Die folgenden Informationen entsprechen dem aktuellen Stan
|
||||
AllocationResultsStudentTip: Unten aufgeführt sind alle Plätze, die Sie im Rahmen der genannten Zentralanmeldung erhalten haben und von denen Sie seit dem weder abgemeldet wurden, noch sich selbst abgemeldet haben. Plätze, über die Sie ggf. bereits informiert wurden, können also erneut aufgeführt sein.
|
||||
AllocationResultStudentRegistrationTip: Sie sind zu oben genanntem Kurs in Uni2work angemeldet.
|
||||
AllocationResultsStudentRegistrationTip: Sie sind zu den oben genannten Kursen in Uni2work angemeldet.
|
||||
AllocationResultsStudentConsultFaq n@Int: Falls Sie Fragen oder Anmerkungen haben, beachten Sie bitte auch die Informationen auf #{pluralDE n "der" "den"} folgenden #{pluralDE n "Seite" "Seiten"}:
|
||||
|
||||
FavouriteVisited: Kürzlich besucht
|
||||
FavouriteParticipant: Ihre Kurse
|
||||
FavouriteManual: Favoriten
|
||||
FavouriteCurrent: Aktueller Kurs
|
||||
|
||||
=======
|
||||
>>>>>>> Stashed changes
|
||||
FavouritesUnavailableTip: Das Schnellzugriffsmenü für diesen Kurs ist aktuell nicht verfügbar.
|
||||
|
||||
|
||||
@ -955,30 +601,6 @@ ShortSexFemale: w
|
||||
ShortSexNotApplicable: k.A.
|
||||
|
||||
MenuLanguage: Sprache
|
||||
LanguageChanged: Sprache erfolgreich geändert
|
||||
|
||||
RFC1766: RFC1766-Sprachcode
|
||||
|
||||
TermShort: Kürzel
|
||||
TermCourseCount: Kurse
|
||||
TermStart: Semesteranfang
|
||||
TermEnd: Semesterende
|
||||
TermStartMustMatchName: Jahreszahl im Namenskürzel stimmt nicht mit Semesterbeginn überein.
|
||||
TermEndMustBeAfterStart: Semester darf nicht enden, bevor es beginnt.
|
||||
TermLectureEndMustBeAfterStart: Vorlesungszeit muss vor ihrem Ende anfgangen.
|
||||
TermStartMustBeBeforeLectureStart: Semester muss vor der Vorlesungszeit beginnen.
|
||||
TermEndMustBeAfterLectureEnd: Vorlesungszeit muss vor dem Semester enden.
|
||||
AdminPageEmpty: Diese Seite soll eine Übersichtsseite für Administratoren werden. Aktuell finden sich hier nur Links zu wichtigen Administrator-Funktionalitäten.
|
||||
HaveCorrectorAccess sheetName@SheetName: Sie haben Korrektor-Zugang zu #{original sheetName}.
|
||||
FavouritesPlaceholder: Anzahl Favoriten
|
||||
FavouritesNotNatural: Anzahl der Favoriten muss eine natürliche Zahl sein!
|
||||
FavouritesSemestersPlaceholder: Anzahl Semester
|
||||
FavouritesSemestersNotNatural: Anzahl der Favoriten-Semester muss eine natürliche Zahl sein!
|
||||
|
||||
ProfileTitle: Benutzereinstellungen
|
||||
|
||||
GlossaryTitle: Begriffsverzeichnis
|
||||
|
||||
|
||||
Applicant: Bewerber
|
||||
Administrator: Administrator
|
||||
@ -993,27 +615,12 @@ CommTutorial: Tutorium-Mitteilung
|
||||
Clone: Klonen
|
||||
Deficit: Defizit
|
||||
|
||||
MetricNoSamples: Keine Messwerte
|
||||
MetricName: Name
|
||||
MetricValue: Wert
|
||||
|
||||
TitleExamAutoOccurrence tid@TermId ssh@SchoolId csh@CourseShorthand examn@ExamName: #{tid} - #{ssh} - #{csh} #{examn}: Automatische Raum-/Terminverteilung
|
||||
|
||||
ExamGradingPass: Bestanden/Nicht Bestanden
|
||||
ExamGradingGrades: Numerische Noten
|
||||
ExamGradingMixed: Gemischt
|
||||
|
||||
InfoLecturerCourses: Veranstaltungen
|
||||
InfoLecturerExercises: Übungsbetrieb
|
||||
InfoLecturerTutorials: Tutorien
|
||||
InfoLecturerExams: Prüfungen
|
||||
InfoLecturerAllocations: Zentralanmeldungen
|
||||
|
||||
ParticipantsIntersectCourseOption tid@TermId ssh@SchoolId coursen@CourseName: #{tid} - #{ssh} - #{coursen}
|
||||
ParticipantsIntersectCourses: Kurse
|
||||
|
||||
FaqTitle: Häufig gestellte Fragen
|
||||
|
||||
CourseParticipantStateIsActiveFilter: Ansicht
|
||||
CourseParticipantActive: Teilnehmer
|
||||
CourseParticipantInactive: Abgemeldet
|
||||
@ -1057,7 +664,6 @@ InvalidCredentialsADAccountLockedOut: Benutzereintrag wurde durch Eindringlingse
|
||||
ExamCloseModeSeparate: Separat
|
||||
ExamCloseModeOnFinished: Mit Veröffentlichung
|
||||
ExamCloseModeOnFinishedHidden: Mit Veröffentlichung (versteckt)
|
||||
ExamCloseMode: Prüfungs-Abschluss
|
||||
|
||||
UrlFieldCouldNotParseAbsolute: Konnte nicht als absolute URL interpretiert werden
|
||||
|
||||
|
||||
@ -6,19 +6,13 @@ AcceptApplicationsSecondaryRandom: Randomly
|
||||
AcceptApplicationsSecondaryTime: By time of application
|
||||
|
||||
#headings
|
||||
HeadingLegal: Legal
|
||||
SubmissionNew: Create submission
|
||||
ParticipantsList: Lists of course participants
|
||||
ParticipantsIntersect: Common course participants
|
||||
HeadingProfileData: Personal information
|
||||
HeadingSchoolList: Departments
|
||||
CorrectorsChange: Adjust correctors
|
||||
MaterialList: Material
|
||||
HeadingDataProt: Data protection
|
||||
HeadingTermsUse: Terms of use
|
||||
HeadingCopyright: Copyright
|
||||
HeadingImprint: Imprint
|
||||
CourseNew: Create new course
|
||||
HeadingTermsHeading: Semesters
|
||||
HeadingTermEditHeading: Edit semester
|
||||
|
||||
#general warnings
|
||||
EmailInvitationWarning: This address could not be matched to any Uni2work user. An invitation will be sent via email.
|
||||
@ -45,36 +39,12 @@ SummerTermShort year: Summer #{year}
|
||||
WinterTermShort year: Winter #{year}/#{mod (succ year) 100}
|
||||
Page num: #{num}
|
||||
|
||||
TermsHeading: Semesters
|
||||
TermCurrent: Current semester
|
||||
TermEditHeading: Edit semester
|
||||
TermEditTid tid: Edit semester #{tid}
|
||||
TermEdited tid: Successfully edited semester #{tid}
|
||||
TermNewTitle: Edit/create semester
|
||||
InvalidInput: Invalid input
|
||||
Term: Semester
|
||||
TermPlaceholder: (W|S)<four digit year>
|
||||
|
||||
TermStartDay: Starting day
|
||||
TermStartDayTooltip: Usually 1st of April or 1st of October
|
||||
TermEndDay: Last day
|
||||
TermEndDayTooltip: Usually 30th of September or 31st of March
|
||||
TermHolidays: Legal holidays
|
||||
TermHolidayPlaceholder: Legal holiday
|
||||
TermHolidayMissing: Holiday is required
|
||||
TermLectureStart: Lectures start
|
||||
TermLectureEnd: Lectures end
|
||||
TermLectureEndTooltip: Summer semesters are usually 14 weeks; winter semesters 15
|
||||
TermActive: Active
|
||||
|
||||
AchievedOf achieved possible: #{achieved} of #{possible}
|
||||
|
||||
|
||||
SchoolListHeading: Department
|
||||
SchoolHeading school: #{school}
|
||||
|
||||
LectureStart: Lectures start
|
||||
|
||||
CourseNoCapacity: Course has reached maximum capacity
|
||||
TutorialNoCapacity: Tutorial has reached maximum capacity
|
||||
ExamOccurrenceNoCapacity: Occurrence/Room has reached maximum capacity
|
||||
@ -107,20 +77,16 @@ SheetArchiveFileTypeDirectoryHint: hint
|
||||
SheetArchiveFileTypeDirectorySolution: solution
|
||||
SheetArchiveFileTypeDirectoryMarking: marking
|
||||
|
||||
Deadline: Deadline
|
||||
Done: Submitted
|
||||
|
||||
SubmissionsCourse tid ssh csh: All submissions for Course #{tid}-#{ssh}-#{csh}
|
||||
SubmissionsSheet sheetName: Submissions for #{sheetName}
|
||||
SubmissionEditHead tid ssh csh sheetName: #{tid}-#{ssh}-#{csh} #{sheetName}: Edit/Create submission
|
||||
CorrectionHead tid ssh csh sheetName cid: #{tid}-#{ssh}-#{csh} #{sheetName}: Marking
|
||||
CosubmittorTip: Invitations are sent via email to exactly those addresses for which it cannot be determined, that you have already submitted for this course with the associated person, at least once. If one of the specified addresses can be matched to a person with whom you have submitted at least once for this course already, the name of that person will be shown and the submission will immediately be made in their name as well.
|
||||
|
||||
SubmissionGroupName: Group name
|
||||
|
||||
CorrectionsTitle: Assigned corrections
|
||||
CorrectorsHead sheetName: Correctors for #{sheetName}
|
||||
|
||||
<<<<<<< Updated upstream
|
||||
MaterialName: Name
|
||||
MaterialType: Type
|
||||
MaterialTypePlaceholder: Slides, Code, Example, ...
|
||||
@ -195,6 +161,7 @@ UnauthorizedParticipantSelf: You are no participant of this course.
|
||||
UnauthorizedApplicant: The specified user is no applicant for this course.
|
||||
UnauthorizedApplicantSelf: You are no applicant for this course.
|
||||
UnauthorizedCourseTime: This course is not currently available.
|
||||
UnauthorizedCorrectionExamTime: Visibility restrictions of the relevant exam are restricting access.
|
||||
UnauthorizedCourseRegistrationTime: This course does not currently allow enrollment.
|
||||
UnauthorizedAllocationRegisterTime: This central allocation does not currently allow applications.
|
||||
UnauthorizedSheetTime: This sheet is not currently available.
|
||||
@ -215,43 +182,18 @@ MaterialFree: Course material is publicly available.
|
||||
UnauthorizedWrite: You do not have the write permission necessary to perform this action
|
||||
UnauthorizedSystemMessageTime: This system-message is not currently available.
|
||||
UnauthorizedSystemMessageAuth: This system-message is only available to logged in users.
|
||||
=======
|
||||
>>>>>>> Stashed changes
|
||||
UnsupportedAuthPredicate authTagT shownRoute: “#{authTagT}” was applied to a route which does not support it: “#{shownRoute}”
|
||||
UnauthorizedDisabledTag authTag: Auth predicate “#{toPathPiece authTag}” is disabled for your session
|
||||
UnknownAuthPredicate tag: Auth predicate “#{tag}” is unknown
|
||||
UnauthorizedRedirect: The requested view does not exist or you haven't the required permissions to access it.
|
||||
UnauthorizedSelf: You are not the specified user.
|
||||
UnauthorizedTutorialTutor: You are no tutor for this tutorial.
|
||||
UnauthorizedTutorialTutorControl: Tutors may not edit this tutorial.
|
||||
UnauthorizedCourseTutor: You are no tutor for this course.
|
||||
UnauthorizedTutor: You are no tutor.
|
||||
UnauthorizedTutorialRegisterGroup: You are already registered for a tutorial with the same registration group.
|
||||
UnauthorizedLDAP: Specified user does not log in with their campus account.
|
||||
UnauthorizedPWHash: Specified user does not log in with an Uni2work-account.
|
||||
UnauthorizedExternalExamListNotEmpty: List of external exams is not empty
|
||||
UnauthorizedExternalExamLecturer: You are not an associated person for this external exam
|
||||
UnauthorizedSubmissionSubmissionGroup: You are not member in any of the submission groups for this submission
|
||||
UnauthorizedSheetSubmissionGroup: You are not member in any submission group
|
||||
|
||||
UnauthorizedPasswordResetToken: This authorisation-token may no longer be used to change passwords
|
||||
|
||||
UnauthorizedAllocatedCourseRegister: Direct enrollment to this course is currently not allowed due to participation in a central allocation
|
||||
UnauthorizedAllocatedCourseDeregister: Deregistration from this course is currently not allowed due to participation in a central allocation
|
||||
UnauthorizedAllocatedCourseDelete: Courses that participate in a central allocation may not be deleted
|
||||
UnauthorizedWorkflowInitiate: You currently may not initiate a new running workflow
|
||||
UnauthorizedWorkflowWrite: You are currently not allowed to initiate any state transition within the workflow
|
||||
UnauthorizedWorkflowRead: The workflow currently contains no states or data you are permitted to view
|
||||
UnauthorizedWorkflowInstancesNotEmpty: There are workflow instances for which you are allowed to initiate a new running workflow
|
||||
UnauthorizedWorkflowWorkflowsNotEmpty: There are running workflows, which you may view
|
||||
UnauthorizedWorkflowFiles: You are not allowed to download the given workflow files in the given historical state
|
||||
UnauthorizedNotAuthenticatedInDifferentApproot: You could not be authenticated in the context of a separate domain (e.g. for secure downloading of files). You probably used no or an expired token. You can try to access the resource with a newly generated download link.
|
||||
UnauthorizedCsrfDisabled: Your request might have triggered a state change on the server. Since CSRF-protection was disabled for your request, it had to be rejected.
|
||||
UnauthorizedStudent: You are not a student.
|
||||
|
||||
WorkflowRoleUserMismatch: You aren't any of the users authorized by the workflow
|
||||
WorkflowRoleAlreadyInitiated: This workflow was already initiated
|
||||
WorkflowRoleNoSuchWorkflowWorkflow: The given workflow could not be found
|
||||
WorkflowRoleNoPayload: This workflow does not contain any data
|
||||
|
||||
UnauthorizedCsrfDisabled: Your request might have triggered a state change on the server. Since CSRF-protection was disabled for your request, it had to be rejected.
|
||||
UnauthorizedDisabledTag authTag: Auth predicate “#{toPathPiece authTag}” is disabled for your session
|
||||
|
||||
EMail: Email
|
||||
EMailUnknown email: Email #{email} does not belong to any known user.
|
||||
|
||||
@ -264,40 +206,22 @@ CorByProportionExcludingTutorial proportion: #{rationalToFixed3 proportion} part
|
||||
DeleteRow: Delete
|
||||
|
||||
Users: Users
|
||||
NewsHeading: News
|
||||
LoginHeading: Authentication
|
||||
LoginTitle: Authentication
|
||||
ProfileHeading: Settings
|
||||
|
||||
|
||||
InfoHeading: Information
|
||||
VersionHeading: Version history
|
||||
LegalHeading: Legal
|
||||
SystemMessageHeading: Uni2work system message
|
||||
SystemMessageListHeading: Uni2work system message
|
||||
NotificationSettingsHeading displayName: Notification settings for #{displayName}
|
||||
|
||||
TokensResetSuccess: Successfully invalidated all authorisation tokens
|
||||
|
||||
NewsOpenAllocations: Active central allocations
|
||||
NewsUpcomingSheets: Upcoming exercise sheets
|
||||
NewsUpcomingExams: Upcoming exams
|
||||
|
||||
NewsHideHiddenSystemMessages: Don't show hidden news items
|
||||
NewsShowHiddenSystemMessages: Show hidden news items
|
||||
|
||||
NumCourses num: #{num} #{pluralEN num "course" "courses"}
|
||||
CloseAlert: Close
|
||||
|
||||
Name: Name
|
||||
LdapSynced: LDAP-synchronised
|
||||
LdapSyncedBefore: Last LDAP-synchronisation before
|
||||
|
||||
Plugin: Plugin
|
||||
|
||||
Settings: Settings
|
||||
SettingsUpdate: Successfully updated settings
|
||||
NotificationSettingsUpdate: Successfully updated notification settings
|
||||
Never: Never
|
||||
|
||||
PreviouslyUploadedInfo: Previously uploaded files
|
||||
@ -338,13 +262,8 @@ AssignSubmissionsAssignableSheets: Distribute corrections for:
|
||||
AchievedBonusPoints: Bonus points achieved
|
||||
AchievedNormalPoints: Points achieved
|
||||
PassedResult: Result
|
||||
Passed: Passed
|
||||
NotPassed: Failed
|
||||
RatingPointsDone: Correction counts as marked iff “Points” is set
|
||||
|
||||
VisibleFrom: Published
|
||||
AccessibleSince: Accessible since
|
||||
|
||||
RatingNegative: Marking points may not be negative
|
||||
RatingExceedsMax: Marking points exceed maximum
|
||||
RatingNotExpected: No marking points expected for this sheet
|
||||
@ -357,39 +276,18 @@ SubmissionSinkExceptionRatingWithoutUpdate: Marking file found without permissio
|
||||
SubmissionSinkExceptionForeignRating smid: Foreign marking file for submission #{toPathPiece smid} found.
|
||||
SubmissionSinkExceptionInvalidFileTitleExtension file: Filename “#{show file}” (may be packed within a zip-archive) does not have any of the file extensions allowed for this sheet.
|
||||
|
||||
NoUpcomingSheetDeadlines: No upcoming sheets
|
||||
NoUpcomingExams difftime: No exams for your courses occur or allow registration in the next #{difftime}
|
||||
|
||||
AdminHeading: Administration
|
||||
AdminUserHeading: User administration
|
||||
AdminUserRightsHeading: User permissions
|
||||
AdminUserAuthHeading: User authentication
|
||||
AdminUserHeadingFor: Profile of
|
||||
AdminFor: Administrator
|
||||
UserListTitle: Comprehensive list of users
|
||||
AccessRightsSaved: Successfully updated permissions
|
||||
AccessRightsNotChanged: Permissions left unchanged
|
||||
UserSystemFunctions: System wide roles
|
||||
UserSystemFunctionsSaved: Successfully saved system wide roles
|
||||
UserSystemFunctionsNotChanged: No system wide roles were changed
|
||||
UserAssimilateUser: User
|
||||
AssimilateUserNotFound: Email could not be resolved to an user
|
||||
AssimilateUserHaveError: An error occurred during assimilation
|
||||
AssimilateUserHaveWarnings: Warnings were ermitted during assimilation
|
||||
AssimilateUserSuccess: Successfully assimilated user
|
||||
|
||||
Date: Date
|
||||
|
||||
FormFieldRequiredTip: Required fields
|
||||
FormAllocationNotifications: Notifications for new central allocation courses
|
||||
FormAllocationNotificationsTip: Do you want to receive a notification if a new course is added to the central allocation? “Yes” and “No” override the system wide setting under “Notifications”
|
||||
|
||||
AllocNotifyNewCourseDefault: System wide setting
|
||||
AllocNotifyNewCourseForceOff: No
|
||||
AllocNotifyNewCourseForceOn: Yes
|
||||
|
||||
LastEdits: Latest edits
|
||||
LastEditByUser: Your last edit
|
||||
NoEditByUser: Not edited by you
|
||||
|
||||
LDAPLoginTitle: Campus login
|
||||
@ -415,10 +313,6 @@ CorrectorMissing: Missing
|
||||
CorrectorExcused: Excused
|
||||
CorrectorStateTip: Missing correctors are assigned additional corrections during later sheets. Excused correctors are not assigned any additional deficit.
|
||||
|
||||
DayIsAHoliday tid name date: “#{name}” (#{date}) is a legal holiday
|
||||
DayIsOutOfLecture tid name date: “#{name}” (#{date}) is not within lecture period of #{tid}
|
||||
DayIsOutOfTerm tid name date: “#{name}” (#{date}) is not within #{tid}
|
||||
|
||||
AutoUnzip: Automatically unpack ZIPs
|
||||
AutoUnzipInfo: Automatically unpacks ZIP-files (*.zip) and adds their content to the root directory.
|
||||
|
||||
@ -449,94 +343,9 @@ GermanGermany: German (Germany)
|
||||
English: English
|
||||
EnglishEurope: English (Europe)
|
||||
|
||||
MailSubjectSubmissionRated csh: Your #{csh}-submission was marked
|
||||
MailSubmissionRatedIntro courseName termDesc: Your submission for #{courseName} (#{termDesc}) was marked.
|
||||
|
||||
MailSubjectSubmissionEdited csh shn: Your submisson for #{shn} in #{csh} was edited
|
||||
MailSubmissionEditedIntro coursen shn termDesc displayName: #{displayName} edited your submission for #{shn} in #{coursen} (#{termDesc}).
|
||||
|
||||
|
||||
MailSubjectSubmissionUserCreated csh shn: You were added to a submission for #{shn} in #{csh}
|
||||
MailSubjectSubmissionUserCreatedOther displayName csh shn: An user was added to a submission for #{shn} in #{csh}
|
||||
|
||||
|
||||
MailSubmissionUserCreatedIntro coursen shn termDesc: You were added to a submission for #{shn} in #{coursen} (#{termDesc}).
|
||||
MailSubmissionUserCreatedOtherIntro displayName coursen shn termDesc: #{displayName} was added as to a submission for #{shn} in #{coursen} (#{termDesc}).
|
||||
|
||||
|
||||
MailSubjectSubmissionUserDeleted csh shn: You were removed from your submission for #{shn} in #{csh}
|
||||
MailSubjectSubmissionUserDeletedOther displayName csh shn: An user was removed from your submission for #{shn} in #{csh}
|
||||
|
||||
MailSubmissionUserDeletedIntro coursen shn termDesc: You were removed from your submission for #{shn} in #{coursen} (#{termDesc}).
|
||||
MailSubmissionUserDeletedOtherIntro displayName coursen shn termDesc: #{displayName} was removed from your submission for #{shn} in #{coursen} (#{termDesc}).
|
||||
|
||||
MailSubjectSheetActive csh sheetName: #{sheetName} in #{csh} was released
|
||||
MailSheetActiveIntro courseName termDesc sheetName: You may now download #{sheetName} for #{courseName} (#{termDesc}).
|
||||
|
||||
MailSubjectSheetHint csh sheetName: Hints for #{sheetName} in #{csh} have been released
|
||||
MailSheetHintIntro courseName termDesc sheetName: You may now download the hints for #{sheetName} in #{courseName} (#{termDesc}).
|
||||
|
||||
MailSubjectSheetSolution csh sheetName: Solutions for #{sheetName} in #{csh} have been released
|
||||
MailSheetSolutionIntro courseName termDesc sheetName: You may now download the solutions for #{sheetName} in #{courseName} (#{termDesc}).
|
||||
|
||||
MailSubjectCourseRegistered csh: You were enrolled for #{csh}
|
||||
MailSubjectCourseRegisteredOther displayName csh: #{displayName} was enrolled for #{csh}
|
||||
MailCourseRegisteredIntro courseName termDesc: You were enrolled for the course “#{courseName}” (#{termDesc})
|
||||
MailCourseRegisteredIntroOther displayName courseName termDesc: #{displayName} was enrolled for the course “#{courseName}” (#{termDesc}).
|
||||
|
||||
MailSubjectExamResult csh examn: Results for #{examn} in #{csh} are now available
|
||||
MailExamResultIntro courseName termDesc examn: You may now view your result for #{examn} of the course #{courseName} (#{termDesc}).
|
||||
|
||||
MailSubjectExamOfficeExamResults coursen examn: Results for #{examn} of #{coursen} are now available
|
||||
MailExamOfficeExamResultsIntro courseName termDesc examn: A course administrator has made the results for #{examn} of the course #{courseName} (#{termDesc}) available.
|
||||
|
||||
MailSubjectExamOfficeExamResultsChanged coursen examn: Results for #{examn} of #{coursen} were changed
|
||||
MailExamOfficeExamResultsChangedIntro courseName termDesc examn: A course administrator has changed exam results for #{examn} of the course #{courseName} (#{termDesc}).
|
||||
|
||||
MailSubjectExamOfficeExternalExamResults coursen@CourseName examn@ExamName: Results for #{examn} in #{coursen}
|
||||
MailExamOfficeExternalExamResultsIntro coursen@CourseName termDesc@Text examn@ExamName: A course administrator has changed or initially made available the results for #{examn} of the course {coursen} (#{termDesc}).
|
||||
|
||||
MailSubjectExamRegistrationActive csh examn: Registration is now allowed for #{examn} of #{csh}
|
||||
MailExamRegistrationActiveIntro courseName termDesc examn: You may now register for #{examn} of the course #{courseName} (#{termDesc}).
|
||||
|
||||
MailSubjectExamRegistrationSoonInactive csh examn: The registration period for #{examn} of #{csh} ends shortly
|
||||
MailExamRegistrationSoonInactiveIntro courseName termDesc examn: Soon you will no longer be allowed to register for #{examn} of #{courseName} (#{termDesc}).
|
||||
|
||||
MailSubjectExamDeregistrationSoonInactive csh examn: Deregistration for #{examn} in #{csh} ends shortly
|
||||
MailExamDeregistrationSoonInactiveIntro courseName termDesc examn: Soon you will no longer be allowed to deregister from #{examn} of #{courseName} (#{termDesc}).
|
||||
|
||||
MailSubjectSubmissionsUnassigned csh sheetName: Corrections for #{sheetName} of #{csh} could not be distributed
|
||||
MailSubmissionsUnassignedIntro n courseName termDesc sheetName: #{n} corrections for #{sheetName} of the course #{courseName} (#{termDesc}) could not be automatically distributed.
|
||||
|
||||
MailSubjectSheetSoonInactive csh sheetName: The submission period for #{sheetName} of #{csh} ends shortly
|
||||
MailSheetSoonInactiveIntro courseName termDesc sheetName: Soon you will no longer be allowed to submit for #{sheetName} of the course #{courseName} (#{termDesc}).
|
||||
MailSubjectSheetInactive csh sheetName: The submission period for #{sheetName} of #{csh} has ended
|
||||
MailSheetInactiveIntro courseName termDesc sheetName n num: The submission period for #{sheetName} of the course #{courseName} (#{termDesc}) has ended. #{noneOneMoreEN num "" "One participant" (toMessage num <> " participants")}#{noneOneMoreEN n "" "" (" made " <> toMessage num)}#{noneOneMoreEN n "There were no submissions" " made one submission" " submissions"}.
|
||||
MailSheetInactiveIntroNoUserSubmission courseName termDesc sheetName n num: The submission period for #{sheetName} of the course #{courseName} (#{termDesc}) has ended. #{noneOneMoreEN num "" "One participant already" (toMessage num <> " participants already")}#{noneOneMoreEN n "" "" (" made " <> toMessage num)}#{noneOneMoreEN n "" " made one submission" " submissions"}.
|
||||
MailSheetInactivePseudonymsCount n: The number of submissions above accounts only for the submissions already made directly in Uni2work. #{n} #{pluralEN n "pseudonym was" "pseudonyms were"} generated.
|
||||
MailSheetInactiveParticipantsCount n: There #{pluralEN n "is" "are"} currently #{n} #{pluralEN n "participant" "participants"} registered for the course.
|
||||
|
||||
MailSubjectCorrectionsAssigned csh sheetName: You were assigned corrections for #{sheetName} of #{csh}
|
||||
MailCorrectionsAssignedIntro courseName termDesc sheetName n: You were assigned #{n} #{pluralEN n "correction" "corrections"} for #{sheetName} of #{courseName} (#{termDesc}).
|
||||
|
||||
MailSubjectUserRightsUpdate name: Permissions for #{name} changed
|
||||
MailUserRightsIntro name email: #{name} <#{email}> now has the following permissions:
|
||||
MailNoLecturerRights: You don't currently have lecturer permissions for any department.
|
||||
MailLecturerRights n: As a lecturer you may create new courses within your #{pluralEN n "department" "departments"}.
|
||||
|
||||
MailSubjectUserSystemFunctionsUpdate name: Permissions for #{name} changed
|
||||
MailUserSystemFunctionsIntro name email: #{name} <#{email}> now has the following, not school restricted, permissions:
|
||||
MailUserSystemFunctionsNoFunctions: None
|
||||
|
||||
MailSubjectUserAuthModeUpdate: Your Uni2work login
|
||||
UserAuthModePWHashChangedToLDAP: You can now log in to Uni2work using your Campus-account
|
||||
UserAuthModeLDAPChangedToPWHash: You can now log in to Uni2work using your Uni2work-internal account
|
||||
NewPasswordLinkTip: You can set the password for your Uni2work-internal account on the following page:
|
||||
NewPasswordLink: Set password
|
||||
AuthPWHashTip: You now need to use the login form labeled "Uni2work login". Please ensure that you have already set a password when you try to log in.
|
||||
PasswordResetEmailIncoming: For security reasons you will receive a link to the page on which you can set and later change your password in a separate email.
|
||||
|
||||
MailEditNotifications: Enable/Disable notifications
|
||||
MailSubjectSupport: Support request
|
||||
MailSubjectSupportCustom customSubject: [Support] #{customSubject}
|
||||
|
||||
@ -574,60 +383,8 @@ PseudonymAutocorrections: Suggestions:
|
||||
|
||||
CorrGrade: Mark submissions
|
||||
|
||||
UserAccountDeleted name: User account for #{name} was deleted!
|
||||
UserSubmissionsDeleted n: #{tshow n} #{pluralEN n "submission was" "submissions were"} permanently deleted.
|
||||
UserGroupSubmissionsKept n: #{tshow n} #{pluralEN n "group submission was" "group submissions were"} kept. They are no longer associated with the deleted user. Group submissions can thus become as if made by a single user. Such submissions are deleted together with their last user.
|
||||
UserSubmissionGroupsDeleted count: #{tshow count} #{pluralEN count "submission group was" "submission groups were"} deleted since #{pluralEN count "it" "they"} would have become empty.
|
||||
UserAccountDeleteWarning: Caution, this permanently deletes users and all of their associated data. Exam results must be stored long term!
|
||||
|
||||
HelpTitle: Support
|
||||
HelpSendLastError: Attach last error message
|
||||
HelpError: Last error message
|
||||
HelpErrorYamlFilename mailId: error-#{toPathPiece mailId}.yaml
|
||||
HelpErrorOrRequestRequired: Please attach either the last error message or submit a support request or a suggestion
|
||||
|
||||
InfoLecturerTitle: Information for lecturers
|
||||
|
||||
SystemMessageNewsOnly: Only on "News"
|
||||
SystemMessageRecordChanged: Signifcant change
|
||||
SystemMessageRecordChangedTip: Should the "last changed"-timestamp be adjusted? News are sorted by "last changed" on "News". After a significant change news items are displayed once again as a popup in the bottom right.
|
||||
SystemMessageUnhide: Ignore previously hidden
|
||||
SystemMessageUnhideTip: Should the news item be display again for users that have actively hidden it?
|
||||
SystemMessageCreated: Created
|
||||
SystemMessageLastChanged: Last changed
|
||||
SystemMessageLastChangedAt time: Last changed: #{time}
|
||||
SystemMessageLastUnhide: Last unhidden
|
||||
SystemMessageFrom: Visible from
|
||||
SystemMessageTo: Visible to
|
||||
SystemMessageAuthenticatedOnly: Only logged in users
|
||||
SystemMessageSeverity: Severity
|
||||
SystemMessagePriority: Priority
|
||||
SystemMessagePriorityNegative: Priority may not be negative
|
||||
SystemMessageId: Id
|
||||
SystemMessageSummaryContent: Summary / Content
|
||||
SystemMessageSummary: Summary
|
||||
SystemMessageContent: Content
|
||||
SystemMessageLanguage: Language
|
||||
|
||||
SystemMessageDelete: Delete
|
||||
SystemMessageActivate: Set to be visible
|
||||
SystemMessageDeactivate: Set to be invisible
|
||||
SystemMessageTimestamp: Timestamp
|
||||
|
||||
SystemMessagesDeleted: System messages deleted:
|
||||
SystemMessagesActivated: System messages set to become visible at:
|
||||
SystemMessagesDeactivated: System messages set to become invisable at:
|
||||
SystemMessageEmptySelection: No system messages selected
|
||||
SystemMessageAdded sysMsgId: System message added: #{toPathPiece sysMsgId}
|
||||
SystemMessageEdit: Edit system message
|
||||
SystemMessageEditTranslations: Edit translations
|
||||
SystemMessageAddTranslation: Add translation
|
||||
|
||||
SystemMessageEditSuccess: Successfully edited system message.
|
||||
SystemMessageAddTranslationSuccess: Successfully added translation.
|
||||
SystemMessageEditTranslationSuccess: Successfully edited translation.
|
||||
SystemMessageDeleteTranslationSuccess: Successfully deleted translation.
|
||||
|
||||
MessageError: Error
|
||||
MessageWarning: Warning
|
||||
MessageInfo: Information
|
||||
@ -654,8 +411,6 @@ EncodedSecretBoxCouldNotOpenSecretBox: Could not open libsodium-secretbox (Encry
|
||||
EncodedSecretBoxCouldNotDecodePlaintext aesonErr: Could not decode json cleartext: #{aesonErr}
|
||||
ErrMsgHeading: Decrypt error message
|
||||
|
||||
TitleMetrics: Metrics
|
||||
|
||||
DBTIRowsMissing n: #{pluralDE n "A line" "A number of lines"} vanished from the database since the form you submitted was generated for you
|
||||
|
||||
NavigationFavourites: Favourites
|
||||
@ -664,6 +419,7 @@ CommBody: Message
|
||||
CommDuplicateRecipients n: #{n} duplicate #{pluralEN n "recipient" "recipients"} ignored
|
||||
CommUndisclosedRecipients: Undisclosed recipients
|
||||
CommAllRecipients: all-recipients
|
||||
CommAllRecipientsSheet: Recipients
|
||||
|
||||
MultiSelectFieldTip: Multiple selections are possible (Shift or Ctrl)
|
||||
MultiEmailFieldTip: Multiple emails addresses may be specified (comma-separated)
|
||||
@ -680,28 +436,14 @@ WeekDay: Day of the week
|
||||
|
||||
MassInputTip: You may specify multiple values. Values must be added to the list by clicking + and can be removed again by clicking -. All changes must be confirmed by clicking the form submit button.
|
||||
|
||||
HealthReport: Health report
|
||||
InstanceIdentification: Instance identification
|
||||
|
||||
InstanceId: Instance id
|
||||
ClusterId: Cluster id
|
||||
|
||||
HealthMatchingClusterConfig: Cluster config matches
|
||||
HealthHTTPReachable: Cluster can be reached under the expected URL via HTTP
|
||||
HealthLDAPAdmins: Proportion of administrators that were found in the LDAP directory
|
||||
HealthSMTPConnect: SMTP server is reachable
|
||||
HealthWidgetMemcached: Memcached server is serving widgets correctly
|
||||
HealthActiveJobExecutors: Proportion of job workers accepting new jobs
|
||||
|
||||
CourseParticipants n: Currently #{n} course #{pluralEN n "participant" "participants"}
|
||||
CourseParticipant: Participant
|
||||
CourseParticipantsRegisteredWithoutField n: #{n} #{pluralEN n "participant was" "participants were"} registered without #{pluralEN n "an associated field of study" "associated fields of study"}, because #{pluralEN n "it" "they"} could not be determined uniquely.
|
||||
ExamRegistrationRegisteredWithoutField n: Registered #{n} #{pluralEN n "participant" "participants"} for the exam as well as for the course. The #{pluralEN n "participant was" "participants were"} enrolled without #{pluralEN n "an associated field of study" "associated fields of study"} since #{pluralEN n "it" "they"} could not be determined uniquely.
|
||||
ExamRegistrationParticipantsRegistered n: #{n} #{pluralEN n "participant was" "participants were"} registered for the exam
|
||||
|
||||
NewsExamOccurrenceRoomIsUnset: —
|
||||
NewsExamOccurrenceRoomIsHidden: Room is only displayed to participants registered for this occurrence/room
|
||||
|
||||
ExamOpenBook: Open book
|
||||
ExamClosedBook: Closed book
|
||||
|
||||
@ -722,8 +464,6 @@ ExamRequiredEquipmentMicrophoneInternet: Microphone
|
||||
ExamPassed: Passed
|
||||
ExamNotPassed: Failed
|
||||
|
||||
NewsExamRegistered: Registered for the exam
|
||||
NewsExamNotRegistered: Not registered for the exam
|
||||
ExamRegistrationTime: Registered since
|
||||
|
||||
VersionHistory: Version history
|
||||
@ -753,15 +493,16 @@ CsvDeleteMissing: Delete missing entries
|
||||
TableProportion c of' prop: #{c}/#{of'} (#{rationalToFixed2 (100 * prop)}%)
|
||||
TableProportionNoRatio c of': #{c}/#{of'}
|
||||
|
||||
<<<<<<< Updated upstream
|
||||
ParticipantsCsvName tid ssh: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-participants
|
||||
ParticipantsCsvSheetName tid ssh: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)} Participants
|
||||
|
||||
=======
|
||||
>>>>>>> Stashed changes
|
||||
CsvColumnUserField: Field of study the participant specified when enrolling for the course
|
||||
CsvColumnUserDegree: Degree the participant pursues in their associated field of study
|
||||
CsvColumnUserSemester: Semester the participant is in wrt. to their associated field of study
|
||||
|
||||
Action: Action
|
||||
ActionNoUsersSelected: No users selected
|
||||
|
||||
ExamUserCsvCourseRegister: Register users for the exam and enroll them in the course
|
||||
ExamUserCsvRegister: Register users for the exam
|
||||
ExamUserCsvAssignOccurrence: Assign occurrences/rooms to participants
|
||||
@ -787,62 +528,11 @@ ExternalExamUserCsvDeregister: Delete stored exam achievement
|
||||
TableHeadingCsvImport: CSV import
|
||||
TableHeadingCsvExport: CSV export
|
||||
|
||||
AuthLDAPLookupFailed: User could not be looked up due to a LDAP error
|
||||
AuthLDAPInvalidLookup: Existing user could not be uniquely matched with a LDAP entry
|
||||
AuthLDAPAlreadyConfigured: User already logs in using their campus account
|
||||
AuthLDAPConfigured: User now logs in using their campus account
|
||||
|
||||
AuthPWHashAlreadyConfigured: User already logs in using their Uni2work account
|
||||
AuthPWHashConfigured: User now logs in using their Uni2work account
|
||||
|
||||
PasswordResetQueued: Sent link to reset password
|
||||
ResetPassword: Reselt Uni2work password
|
||||
|
||||
AuthLDAP: Campus
|
||||
AuthPWHash pwHash: Uni2work
|
||||
CurrentPassword: Current password
|
||||
NewPassword: New password
|
||||
NewPasswordRepeat: New password (again)
|
||||
CurrentPasswordInvalid: Current password is incorrect
|
||||
PasswordRepeatInvalid: New passwords do not match
|
||||
UserPasswordHeadingFor: Change password for
|
||||
PasswordChangedSuccess: Successfully changed password
|
||||
|
||||
FunctionaryInviteFunction: Function
|
||||
FunctionaryInviteSchool: Department
|
||||
FunctionaryInviteField: Email addresses to invite
|
||||
FunctionaryInviteHeading: Add department functionaries
|
||||
|
||||
FunctionariesInvited n: Invited #{n} #{pluralEN n "functionary" "functionaries"} via email
|
||||
FunctionariesAdded n: Added #{n} #{pluralEN n "functionary" "functionaries"}
|
||||
|
||||
MailSubjectSchoolFunctionInvitation school renderedFunction: Invitation to be #{renderedFunction} for “#{school}”
|
||||
MailSchoolFunctionInviteHeading school renderedFunction: Invitation to be #{renderedFunction} for “#{school}”
|
||||
SchoolFunctionInviteExplanation renderedFunction: You were invited to act as #{renderedFunction} for a department. By accepting the invitation you are granted elevated rights within the department.
|
||||
SchoolFunctionInvitationAccepted school renderedFunction: Successfully accepted invitation to be #{renderedFunction} for “#{school}”
|
||||
|
||||
AllocationApplication: Application
|
||||
AllocationProcess: Allocation process
|
||||
|
||||
SchoolShort: Shorthand
|
||||
SchoolName: Name
|
||||
SchoolLdapOrganisations: Associated LDAP fragments
|
||||
SchoolLdapOrganisationsTip: When logging in users are associated with any departments whose associated LDAP fragments are found in the users LDAP entry
|
||||
SchoolLdapOrganisationMissing: LDAP-fragment is required
|
||||
SchoolExamMinimumRegisterBeforeStart: Minimum number of days between start of registration period and start of exams
|
||||
SchoolExamMinimumRegisterBeforeStartTip: If specified course administrators will be forced to specify the start of the registration period and the start of the exam at the same time.
|
||||
SchoolExamMinimumRegisterDuration: Minimum duration of registration period for exams
|
||||
SchoolExamMinimumRegisterDurationTip: If specified course administrators will be prevented from setting a registration period of less than the specified number of days.
|
||||
SchoolExamRequireModeForRegistration: Exam design required for registration
|
||||
SchoolExamRequireModeForRegistrationTip: Should course administrators be forced to fully specify their exam design when setting a registration period?
|
||||
SchoolExamDiscouragedModes: Exam designs to warn against
|
||||
|
||||
SchoolUpdated ssh: Successfully edited #{ssh}
|
||||
SchoolTitle ssh: Department „#{ssh}“
|
||||
TitleSchoolNew: Neues Institut anlegen
|
||||
SchoolCreated ssh: Successfully created #{ssh}
|
||||
SchoolExists ssh: A department named „#{ssh}“ already exists
|
||||
|
||||
SchoolAdmin: Admin
|
||||
SchoolLecturer: Lecturer
|
||||
SchoolEvaluation: Course evaluation
|
||||
@ -851,55 +541,8 @@ SchoolAllocation: Administration of central allocations
|
||||
|
||||
UserLdapSync: Synchronise with LDAP
|
||||
AllUsersLdapSync: Synchronise all with LDAP
|
||||
SynchroniseLdapUserQueued n: Triggered LDAP synchronisation of #{n} #{pluralEN n "user" "users"}.
|
||||
SynchroniseLdapAllUsersQueued: Triggered LDAP synchronisation of all users
|
||||
UserHijack: Hijack session
|
||||
|
||||
MailAllocationSchoolAndName allocationSchool allocation: #{allocationSchool}: “#{allocation}”
|
||||
|
||||
MailSubjectAllocationStaffRegister allocationSchool allocation: You can now register courses for the central allocation #{allocationSchool}: “#{allocation}”
|
||||
MailSubjectAllocationStaffRegisterMultiple n: You can now register courses for #{n} central allocations
|
||||
MailAllocationStaffRegisterIntroMultiple n: You can now register courses for the following #{n} central allocations:
|
||||
MailAllocationStaffRegisterNewCourse: You can create new courses in Uni2work on the site listed below. While doing so you can specify that the course should participate in a central allocation.
|
||||
MailAllocationStaffRegisterDeadline n deadline: Please consider that all courses, that are to participate in #{pluralEN n "this central allocation" "these central allocations"}, must be registered before #{deadline}.
|
||||
MailAllocationStaffRegisterDeadlineMultiple: Please consider that alle courses, that are to participate in these central allocations, must be registered before the ends of their respective course registration periods (see below).
|
||||
MailAllocationStaffRegisterDeadlineSingle deadline: Course Registration period ends on #{deadline}
|
||||
MailAllocationStaffRegisterDeadlineSingleNothing: Currently no end of course registration period configured
|
||||
|
||||
MailSubjectAllocationRegister allocationSchool allocation: Applications can now be made for courses of the central allocation #{allocationSchool}: “#{allocation}”
|
||||
MailSubjectAllocationRegisterMultiple n: Applications can now be made for courses of #{n} central allocations
|
||||
MailAllocationRegisterIntroMultiple n: Applications can now be made for courses of the following #{n} central allocations:
|
||||
MailAllocationRegister n: Applications can now be made for each of the courses participating in the central #{pluralEN n "allocation" "allocations"} on the #{pluralEN n "page" "pages"} listed below.
|
||||
MailAllocationRegisterDeadline deadline: Please consider that all applications have to be made before #{deadline}.
|
||||
MailAllocationRegisterDeadlineMultiple: Please consider that all applications for courses participating in central allocations have to be made before the ends of their respective application periods (see below).
|
||||
MailAllocationRegisterDeadlineSingle deadline: Application periods ends on #{deadline}
|
||||
MailAllocationRegisterDeadlineSingleNothing: Currently no end of application period configured
|
||||
|
||||
|
||||
MailSubjectAllocationAllocation allocationSchool allocation: You can now rate applications for your courses that participate in the central allocation #{allocationSchool}: “#{allocation}”
|
||||
MailSubjectAllocationAllocationMultiple n: You can now rate applications for your courses that participate in #{n} central allocations
|
||||
MailAllocationAllocationIntroMultiple n: You can now rate applications for your courses that participate in #{n} central allocations:
|
||||
MailAllocationAllocation n: You can now rate applications made in the context of the central #{pluralEN n "allocation" "allocations"} for your courses on the pages listed below. Ratings made will have an effect on the allocation.
|
||||
MailAllocationApplicationsMayChange deadline: Please consider that applicants may change or delete their applications until #{deadline}. If an application was rated before it was changed it needs to be rated again.
|
||||
MailAllocationApplicationsRegisterDeadline deadline: Application period ends on #{deadline}
|
||||
MailAllocationApplicationsRegisterDeadlineNothing: Currently no end of application period configured
|
||||
MailAllocationApplicationsMayChangeMultiple: Please consider that applicants may change or delete their applications until the end of the respective central allocation's application period. If an application was rated before it was changed it needs to be rated again.
|
||||
MailAllocationAllocationDeadline deadline: Please consider that all ratings have to be made before #{deadline}.
|
||||
MailAllocationApplicationsAllocationDeadline deadline: Rating period ends on #{deadline}
|
||||
MailAllocationApplicationsAllocationDeadlineNothing: Currently no end of rating period configured
|
||||
MailAllocationAllocationDeadlineMultiple: Please consider that all ratings have to be made before the end of the respective rating period (see below).
|
||||
|
||||
MailSubjectAllocationUnratedApplications allocationSchool allocation: There are unrated applications for you courses participating in the central allocation #{allocationSchool}: “#{allocation}”
|
||||
MailSubjectAllocationUnratedApplicationsMultiple n: There are unrated applications for your courses participating in #{n} central allocations
|
||||
MailAllocationUnratedApplicationsIntroMultiple n: There are unrated applications for your courses participating in #{n} central allocations:
|
||||
MailAllocationUnratedApplications n: For there courses listed below, there exist applications made in the context of #{pluralEN n "the central allocation" "one of the central allocations"} which have either not yet been rated or which have changed since they were rated.
|
||||
MailAllocationUnratedApplicationsCount i: #{i} #{pluralDE i "application" "applications"}
|
||||
|
||||
MailSubjectAllocationNewCourse allocation: A new course was added to the central allocation “#{allocation}”
|
||||
MailAllocationNewCourseTip: The following course was added to the central allocation:
|
||||
MailAllocationNewCourseEditApplicationsHere: You can modify your application here:
|
||||
MailAllocationNewCourseApplyHere: You can apply here:
|
||||
|
||||
UserMatriculationNotFound matriculation: There is no uni2work-user with matriculation “#{matriculation}”
|
||||
UserMatriculationAmbiguous matriculation: Matriculation “#{matriculation}” isn't unique
|
||||
|
||||
@ -910,13 +553,11 @@ LdapIdentificationOrEmail: Campus account/email address
|
||||
AuthKindLDAP: Campus account
|
||||
AuthKindPWHash: Uni2work account
|
||||
|
||||
UserDisplayEmailChanged: Successfully set display email
|
||||
TitleChangeUserDisplayEmail: Set display email
|
||||
|
||||
MailSubjectChangeUserDisplayEmail: Publishing this email address in Uni2work
|
||||
MailIntroChangeUserDisplayEmail displayEmail: The user mentioned above wants to publish “#{displayEmail}” as their own email address. If you have not caused this email to be sent, please ignore it!
|
||||
MailTitleChangeUserDisplayEmail displayName: #{displayName} wants to publish this email address as their own in Uni2work
|
||||
|
||||
<<<<<<< Updated upstream
|
||||
LecturerInfoTooltipNew: New feature
|
||||
LecturerInfoTooltipProblem: Feature with known issues
|
||||
LecturerInfoTooltipPlanned: Planned feature
|
||||
@ -935,16 +576,17 @@ AllocationResultsTip: The following information reflect the current state of the
|
||||
AllocationResultsStudentTip: Listed below are placements in courses which you have received due to the mentioned central allocation and for which you have not left the respective course or have been deregistered. Thus placements you have been informed of already may be listed again.
|
||||
AllocationResultStudentRegistrationTip: You were enrolled in the course mentioned above in Uni2work.
|
||||
AllocationResultsStudentRegistrationTip: You were enrolled in the courses mentioned above in Uni2work.
|
||||
AllocationResultsStudentConsultFaq n@Int: If you have questions or remarks, please also take into account the information on the following #{pluralEN n "page" "pages"}:
|
||||
|
||||
FavouriteVisited: Visited
|
||||
FavouriteParticipant: Your courses
|
||||
FavouriteManual: Favourites
|
||||
FavouriteCurrent: Current course
|
||||
|
||||
=======
|
||||
>>>>>>> Stashed changes
|
||||
FavouritesUnavailableTip: Quick Actions for this course are currently not available.
|
||||
|
||||
|
||||
|
||||
UserSimplifiedFeaturesOfStudyCsv: Simplified features of study
|
||||
UserSimplifiedFeaturesOfStudyCsvTip: Should field of study, degree, and semester be exported in separate columns for ease of processing? If so only the field of study associated by the user with their course registration will be exported.
|
||||
|
||||
@ -959,30 +601,6 @@ ShortSexFemale: f
|
||||
ShortSexNotApplicable: N/A
|
||||
|
||||
MenuLanguage: Language
|
||||
LanguageChanged: Language changed successfully
|
||||
|
||||
RFC1766: RFC1766 language code
|
||||
|
||||
TermShort: Shorthand
|
||||
TermCourseCount: Courses
|
||||
TermStart: Semester start
|
||||
TermEnd: Semester end
|
||||
TermStartMustMatchName: Shorthand number does not match semester start.
|
||||
TermEndMustBeAfterStart: Semester end may not be before semester start.
|
||||
TermLectureEndMustBeAfterStart: Lecture start may not be after lecture end.
|
||||
TermStartMustBeBeforeLectureStart: Semester start must be before lecture start.
|
||||
TermEndMustBeAfterLectureEnd: Lecture end must be before semester end.
|
||||
AdminPageEmpty: This page shall provide an overview for administrators in the future. For now there are only links to important administrator-functions.
|
||||
HaveCorrectorAccess sheetName: You have corrector access to #{original sheetName}.
|
||||
FavouritesPlaceholder: Number of favourites
|
||||
FavouritesNotNatural: Number of favourites must be a natural number!
|
||||
FavouritesSemestersPlaceholder: Number of semesters
|
||||
FavouritesSemestersNotNatural: Maximum number of semesters in favourites bar must be a natural number!
|
||||
|
||||
ProfileTitle: Settings
|
||||
|
||||
GlossaryTitle: Glossary
|
||||
|
||||
|
||||
Applicant: Applicant
|
||||
Administrator: Administrator
|
||||
@ -997,27 +615,12 @@ CommTutorial: Tutorial message
|
||||
Clone: Cloning
|
||||
Deficit: Deficit
|
||||
|
||||
MetricNoSamples: No samples
|
||||
MetricName: Name
|
||||
MetricValue: Value
|
||||
|
||||
TitleExamAutoOccurrence tid ssh csh examn: #{tid} - #{ssh} - #{csh} #{examn}: Automatic occurrence/room distribution
|
||||
|
||||
ExamGradingPass: Passed/Failed
|
||||
ExamGradingGrades: Numeric grades
|
||||
ExamGradingMixed: Mixed
|
||||
|
||||
InfoLecturerCourses: Courses
|
||||
InfoLecturerExercises: Course Exercises
|
||||
InfoLecturerTutorials: Tutorials
|
||||
InfoLecturerExams: Exams
|
||||
InfoLecturerAllocations: Central allocations
|
||||
|
||||
ParticipantsIntersectCourseOption tid@TermId ssh@SchoolId coursen@CourseName: #{tid} - #{ssh} - #{coursen}
|
||||
ParticipantsIntersectCourses: Courses
|
||||
|
||||
FaqTitle: Frequently asked questions
|
||||
|
||||
CourseParticipantStateIsActiveFilter: View
|
||||
CourseParticipantActive: Participant
|
||||
CourseParticipantInactive: Deregistered
|
||||
@ -1061,7 +664,6 @@ InvalidCredentialsADAccountLockedOut: Account disabled by intruder detection
|
||||
ExamCloseModeSeparate: Seperately
|
||||
ExamCloseModeOnFinished: With publication of achievements
|
||||
ExamCloseModeOnFinishedHidden: With publication of achievements (hidden)
|
||||
ExamCloseMode: Exam closure
|
||||
|
||||
UrlFieldCouldNotParseAbsolute: Could not parse as an absolute URL
|
||||
|
||||
|
||||
@ -73,3 +73,6 @@ StudyFeatureNameInference: Studiengangschlüssel-Inferenz
|
||||
StudyFeatureParentInference: Unterstudiengang-Inferenz
|
||||
StudyFeatureInferenceNoNameConflicts: Keine Konflikte beobachtet
|
||||
StudyFeatureInferenceNameConflictsHeading: Studiengangseinträge mit beobachteten Konflikten
|
||||
|
||||
AdminHeading: Administration
|
||||
AdminPageEmpty: Diese Seite soll eine Übersichtsseite für Administratoren werden. Aktuell finden sich hier nur Links zu wichtigen Administrator-Funktionalitäten.
|
||||
|
||||
@ -73,3 +73,6 @@ StudyFeatureNameInference: Infer field of study mapping
|
||||
StudyFeatureParentInference: Infer field of study parent relation
|
||||
StudyFeatureInferenceNoNameConflicts: No observed conflicts
|
||||
StudyFeatureInferenceNameConflictsHeading: Fields of study with observed conflicts
|
||||
|
||||
AdminHeading: Administration
|
||||
AdminPageEmpty: This page shall provide an overview for administrators in the future. For now there are only links to important administrator-functions.
|
||||
|
||||
@ -0,0 +1,89 @@
|
||||
UnauthorizedNotAuthenticatedInDifferentApproot: Sie konnten im Kontext einer separierten Domain (z.B. zum sicheren Download von Dateien) nicht authentifiziert werden. Vermutlich haben Sie kein oder ein abgelaufenes Token verwendet. Sie können versuchen auf die gewünschte Resource mit einem neu generierten Download-Link zuzugreifen.
|
||||
Unauthorized: Sie haben hierfür keine explizite Berechtigung.
|
||||
UnauthorizedAnd l@Text r@Text: (#{l} UND #{r})
|
||||
UnauthorizedOr l@Text r@Text: (#{l} ODER #{r})
|
||||
UnauthorizedNot r@Text: #{r}
|
||||
UnauthorizedI18nMismatch: Es wurden unterschiedliche Authorisierungs-Ergebnisse für verschiedene Sprachen berechnet
|
||||
UnauthorizedNoToken: Ihrer Anfrage war kein Authorisierungs-Token beigefügt.
|
||||
UnauthorizedTokenExpired: Ihr Authorisierungs-Token ist abgelaufen.
|
||||
UnauthorizedTokenNotStarted: Ihr Authorisierungs-Token ist noch nicht gültig.
|
||||
UnauthorizedTokenInvalid: Ihr Authorisierungs-Token konnte nicht verarbeitet werden.
|
||||
UnauthorizedTokenInvalidRoute: Ihr Authorisierungs-Token ist auf dieser Unterseite nicht gültig.
|
||||
UnauthorizedTokenInvalidNoAuthority: Ihr Authorisierungs-Token nennt keine Nutzer:innen, auf deren Rechten es basiert.
|
||||
UnauthorizedTokenInvalidAuthority: Ihr Authorisierungs-Token basiert auf den Rechten eines Nutzers/einer Nutzerin, der nicht mehr existiert.
|
||||
UnauthorizedTokenInvalidAuthorityGroup: Ihr Authorisierungs-Token basiert auf den Rechten einer Gruppe von Nutzer:innen, die nicht mehr existiert.
|
||||
UnauthorizedTokenInvalidAuthorityValue: Ihr Authorisierungs-Token basiert auf Rechten, deren Spezifikation nicht interpretiert werden konnte.
|
||||
UnauthorizedTokenInvalidImpersonation: Ihr Authorisierungs-Token enthält die Anweisung sich als ein Nutzer:in auszugeben, dies ist jedoch nicht allen Benutzer:innen, auf deren Rechten ihr Authorisierungs-Token basiert, erlaubt.
|
||||
UnauthorizedToken404: Authorisierungs-Tokens können nicht auf Fehlerseiten ausgewertet werden.
|
||||
UnauthorizedSiteAdmin: Sie sind nicht System-weiter Administrator:in.
|
||||
UnauthorizedSchoolAdmin: Sie sind nicht als Administrator:in für dieses Institut eingetragen.
|
||||
UnauthorizedAdminEscalation: Sie sind nicht Administrator:in für alle Institute, für die dieser Nutzer/diese Nutzerin Administrator:in oder Veranstalter:in ist.
|
||||
UnauthorizedExamOffice: Sie sind nicht mit Prüfungsverwaltung beauftragt.
|
||||
UnauthorizedExamExamOffice: Es existieren keine Prüfungsergebnisse für Nutzer:innen, für die Sie mit der Prüfungsverwaltung beauftragt sind.
|
||||
UnauthorizedSchoolExamOffice: Sie sind nicht mit Prüfungsverwaltung für dieses Institut beauftragt.
|
||||
UnauthorizedSystemExamOffice: Sie sind nicht mit systemweiter Prüfungsverwaltung beauftragt.
|
||||
UnauthorizedExternalExamExamOffice: Es existieren keine Prüfungsergebnisse für Nutzer:innen, für die Sie mit der Prüfungsverwaltung beauftragt sind.
|
||||
UnauthorizedEvaluation: Sie sind nicht mit der Kursumfragenverwaltung beauftragt.
|
||||
UnauthorizedAllocationAdmin: Sie sind nicht mit der Administration von Zentralanmeldungen beauftragt.
|
||||
UnauthorizedSchoolLecturer: Sie sind nicht als Veranstalter:in für dieses Institut eingetragen.
|
||||
UnauthorizedLecturer: Sie sind nicht als Veranstalter:in für diese Veranstaltung eingetragen.
|
||||
UnauthorizedAllocationLecturer: Sie sind nicht als Veranstalter:in für eine Veranstaltung dieser Zentralanmeldung eingetragen.
|
||||
UnauthorizedCorrector: Sie sind nicht als Korrektor:in für diese Veranstaltung eingetragen.
|
||||
UnauthorizedSheetCorrector: Sie sind nicht als Korrektor:in für dieses Übungsblatt eingetragen.
|
||||
UnauthorizedExamCorrector: Sie sind nicht als Korrektor:in für diese Prüfung eingetragen.
|
||||
UnauthorizedCorrectorAny: Sie sind nicht als Korrektor:in für eine Veranstaltung eingetragen.
|
||||
UnauthorizedRegistered: Sie sind nicht als Teilnehmer:in für diese Veranstaltung registriert.
|
||||
UnauthorizedRegisteredExam: Sie sind nicht als Teilnehmer:in für diese Prüfung registriert.
|
||||
UnauthorizedRegisteredAnyExam: Sie sind nicht als Teilnehmer:in für eine Prüfung registriert.
|
||||
UnauthorizedAllocationRegistered: Sie sind nicht als Teilnehmer:in für diese Zentralanmeldung registriert.
|
||||
UnauthorizedExamResult: Sie haben keine Ergebnisse in dieser Prüfung.
|
||||
UnauthorizedExamOccurrenceRegistration: Anmeldung zur Prüfung erfolgt nicht inkl. Raum/Termin.
|
||||
UnauthorizedExternalExamResult: Sie haben keine Ergebnisse in dieser Prüfung.
|
||||
UnauthorizedParticipant: Angegebener Benutzer/Angegebene Benutzerin ist nicht als Teilnehmer:in dieser Veranstaltung registriert.
|
||||
UnauthorizedParticipantSelf: Sie sind nicht Teilnehmer:in dieser Veranstaltung.
|
||||
UnauthorizedApplicant: Angegebener Benutzer/Angegebene Benutzerin hat sich nicht für diese Veranstaltung beworben.
|
||||
UnauthorizedApplicantSelf: Sie sind nicht Bewerber:in für diese Veranstaltung.
|
||||
UnauthorizedCourseTime: Dieser Kurs ist momentan nicht freigegeben.
|
||||
UnauthorizedCourseRegistrationTime: Dieser Kurs erlaubt momentan keine Anmeldungen.
|
||||
UnauthorizedAllocationRegisterTime: Diese Zentralanmeldung erlaubt momentan keine Bewerbungen.
|
||||
UnauthorizedSheetTime: Dieses Übungsblatt ist momentan nicht freigegeben.
|
||||
UnauthorizedApplicationTime: Diese Bewerbung ist momentan nicht freigegeben.
|
||||
UnauthorizedMaterialTime: Dieses Material ist momentan nicht freigegeben.
|
||||
UnauthorizedTutorialTime: Dieses Tutorium erlaubt momentan keine Anmeldungen.
|
||||
UnauthorizedCourseNewsTime: Diese Nachricht ist momentan nicht freigegeben.
|
||||
UnauthorizedExamTime: Diese Prüfung ist momentan nicht freigegeben.
|
||||
UnauthorizedSubmissionOwner: Sie sind an dieser Abgabe nicht beteiligt.
|
||||
UnauthorizedSubmissionPersonalisedSheetFiles: Ihnen wurden keine personalisierten Übungsblatt-Dateien zugeteilt und die Abgabe ist ohne diese nicht gestattet.
|
||||
UnauthorizedSubmissionRated: Diese Abgabe ist noch nicht korrigiert.
|
||||
UnauthorizedSubmissionCorrector: Sie sind nicht Korrektor:in für diese Abgabe.
|
||||
UnauthorizedUserSubmission: Nutzer:innen dürfen für dieses Übungsblatt keine Abgaben erstellen.
|
||||
UnauthorizedCorrectorSubmission: Korrektor:innen dürfen für dieses Übungsblatt keine Abgaben erstellen.
|
||||
DeprecatedRoute: Diese Ansicht ist obsolet und könnte in Zukunft entfallen.
|
||||
UnfreeMaterials: Die Materialien für diese Veranstaltung sind nicht allgemein freigegeben.
|
||||
UnauthorizedWrite: Sie haben hierfür keine Schreibberechtigung
|
||||
UnauthorizedSystemMessageTime: Diese Systemnachricht ist noch nicht oder nicht mehr einsehbar.
|
||||
UnauthorizedSystemMessageAuth: Diese Systemnachricht ist nur für angemeldete Benutzer:innen einsehbar.
|
||||
UnknownAuthPredicate tag@String: Authorisierungsprädikat "#{tag}" ist dem System nicht bekannt
|
||||
UnauthorizedSelf: Aktueller Nutzer/Aktuelle Nutzerin ist nicht angegebener Benutzer/angegebene Benutzerin.
|
||||
UnauthorizedTutorialTutor: Sie sind nicht Tutor:in für dieses Tutorium.
|
||||
UnauthorizedTutorialTutorControl: Tutor:innen dürfen dieses Tutorium nicht editieren.
|
||||
UnauthorizedCourseTutor: Sie sind nicht Tutor:in für diesen Kurs.
|
||||
UnauthorizedTutor: Sie sind nicht Tutor:in.
|
||||
UnauthorizedTutorialRegisterGroup: Sie sind bereits in einem Tutorium mit derselben Registrierungs-Gruppe.
|
||||
UnauthorizedLDAP: Angegebener Nutzer/Angegebene Nutzerin meldet sich nicht mit Campus-Kennung an.
|
||||
UnauthorizedPWHash: Angegebener Nutzer/Angegebene Nutzerin meldet sich nicht mit Uni2work-Kennung an.
|
||||
UnauthorizedExternalExamListNotEmpty: Liste von externen Prüfungen ist nicht leer
|
||||
UnauthorizedExternalExamLecturer: Sie sind nicht als Prüfer:in für diese externe Prüfung eingetragen
|
||||
UnauthorizedSubmissionSubmissionGroup: Sie sind nicht Mitglied in einer der registrierten Abgabegruppen, die an dieser Abgabe beteiligt sind
|
||||
UnauthorizedSheetSubmissionGroup: Sie sind nicht Mitglied in einer registrierten Abgabegruppe
|
||||
|
||||
UnauthorizedAllocatedCourseRegister: Direkte Anmeldungen zum Kurs sind aufgrund einer Zentralanmeldung aktuell nicht gestattet
|
||||
UnauthorizedAllocatedCourseDeregister: Abmeldungen vom Kurs sind aufgrund einer Zentralanmeldung aktuell nicht gestattet
|
||||
UnauthorizedAllocatedCourseDelete: Kurse, die an einer Zentralanmeldung teilnehmen, dürfen nicht gelöscht werden
|
||||
UnauthorizedWorkflowInitiate: Sie dürfen keinen neuen laufenden Workflow initiieren
|
||||
UnauthorizedWorkflowWrite: Sie dürfen aktuell keinen Zustandsübergang im Workflow auslösen
|
||||
UnauthorizedWorkflowRead: Der Workflow enthält aktuell keine Zustände oder Daten die Sie einsehen dürfen
|
||||
UnauthorizedWorkflowInstancesNotEmpty: Es gibt Workflow Instanzen für die Sie einen neuen laufenden Workflow initiieren dürfen
|
||||
UnauthorizedWorkflowWorkflowsNotEmpty: Es gibt laufende Workflows, die Sie einsehen dürfen
|
||||
UnauthorizedWorkflowFiles: Sie dürfen die angegebenen Workflow-Dateien nicht im angegebenen historischen Zustand herunterladen
|
||||
UnauthorizedStudent: Sie sind nicht Student:in
|
||||
@ -0,0 +1,89 @@
|
||||
UnauthorizedNotAuthenticatedInDifferentApproot: You could not be authenticated in the context of a separate domain (e.g. for secure downloading of files). You probably used no or an expired token. You can try to access the resource with a newly generated download link.
|
||||
Unauthorized: You do not have explicit authorisation.
|
||||
UnauthorizedAnd l r: (#{l} AND #{r})
|
||||
UnauthorizedOr l r: (#{l} OR #{r})
|
||||
UnauthorizedNot r: (NOT #{r})
|
||||
UnauthorizedI18nMismatch: Different authentication results were calculated for different languages
|
||||
UnauthorizedNoToken: No authorisation-token was provided with your request.
|
||||
UnauthorizedTokenExpired: Your authorisation-token is expired.
|
||||
UnauthorizedTokenNotStarted: Your authorisation-token is not yet valid.
|
||||
UnauthorizedTokenInvalid: Your authorisation-token could not be processed.
|
||||
UnauthorizedTokenInvalidRoute: Your authorisation-token is not valid for this page.
|
||||
UnauthorizedTokenInvalidNoAuthority: Your authorisation-token does not list any users on whose rights it is based.
|
||||
UnauthorizedTokenInvalidAuthority: Your authorisation-token is based in an user's rights who does not exist anymore.
|
||||
UnauthorizedTokenInvalidAuthorityGroup: Your authorisation-token is based in an user groups rights which does not exist anymore.
|
||||
UnauthorizedTokenInvalidAuthorityValue: The specification of the rights in which your authorisation-token is based, could not be interpreted.
|
||||
UnauthorizedTokenInvalidImpersonation: Your authorisation-token contains an instruction to impersonate an user. Not all users on whose rights your token is based however are permitted to do so.
|
||||
UnauthorizedToken404: Authorisation-tokens cannot be processed on error pages.
|
||||
UnauthorizedSiteAdmin: You are no system-wide administrator.
|
||||
UnauthorizedSchoolAdmin: You are no administrator for this department.
|
||||
UnauthorizedAdminEscalation: You aren't an administrator for all departments for which this user is an administrator.
|
||||
UnauthorizedExamOffice: You are not part of an exam office.
|
||||
UnauthorizedEvaluation: You are not charged with course evaluation.
|
||||
UnauthorizedAllocationAdmin: You are not charged with the administration of central allocations.
|
||||
UnauthorizedExamExamOffice: You are not part of the appropriate exam office for any of the participants of this exam.
|
||||
UnauthorizedSchoolExamOffice: You are not part of an exam office for this school.
|
||||
UnauthorizedSystemExamOffice: You are not charged with system wide exam administration
|
||||
UnauthorizedExternalExamExamOffice: You are not part of the appropriate exam office for any of the participants of this exam.
|
||||
UnauthorizedSchoolLecturer: You are no lecturer for this department.
|
||||
UnauthorizedLecturer: You are no administrator for this course.
|
||||
UnauthorizedAllocationLecturer: You are no administrator for any of the courses of this central allocation.
|
||||
UnauthorizedCorrector: You are no sheet corrector for this course.
|
||||
UnauthorizedSheetCorrector: You are no corrector for this sheet.
|
||||
UnauthorizedExamCorrector: You are no corrector for this exam.
|
||||
UnauthorizedCorrectorAny: You are no corrector for any course.
|
||||
UnauthorizedRegistered: You are no participant in this course.
|
||||
UnauthorizedRegisteredExam: You are not registered for this exam.
|
||||
UnauthorizedRegisteredAnyExam: You are not registered for an exam.
|
||||
UnauthorizedAllocationRegistered: You are no participant in this central allocation.
|
||||
UnauthorizedExamResult: You have no results in this exam.
|
||||
UnauthorizedExamOccurrenceRegistration: Registration for exam is not done including occurrence/room.
|
||||
UnauthorizedExternalExamResult: You have no results in this exam.
|
||||
UnauthorizedParticipant: The specified user is no participant of this course.
|
||||
UnauthorizedParticipantSelf: You are no participant of this course.
|
||||
UnauthorizedApplicant: The specified user is no applicant for this course.
|
||||
UnauthorizedApplicantSelf: You are no applicant for this course.
|
||||
UnauthorizedCourseTime: This course is not currently available.
|
||||
UnauthorizedCourseRegistrationTime: This course does not currently allow enrollment.
|
||||
UnauthorizedAllocationRegisterTime: This central allocation does not currently allow applications.
|
||||
UnauthorizedSheetTime: This sheet is not currently available.
|
||||
UnauthorizedApplicationTime: This allocation is not currently available.
|
||||
UnauthorizedMaterialTime: This course material is not currently available.
|
||||
UnauthorizedTutorialTime: This tutorial does not currently allow registration.
|
||||
UnauthorizedCourseNewsTime: This news item is not currently available.
|
||||
UnauthorizedExamTime: This exam is not currently available.
|
||||
UnauthorizedSubmissionOwner: You are no submittor for this submission.
|
||||
UnauthorizedSubmissionPersonalisedSheetFiles: You were not assigned any personalised exercise sheet files and submission is not permitted without them.
|
||||
UnauthorizedSubmissionRated: This submission is not yet marked.
|
||||
UnauthorizedSubmissionCorrector: You are no corrector for this submission.
|
||||
UnauthorizedUserSubmission: Users may not directly submit for this exercise sheet.
|
||||
UnauthorizedCorrectorSubmission: Correctors may not create submissions for this exercise sheet.
|
||||
DeprecatedRoute: This view is deprecated and will be removed.
|
||||
UnfreeMaterials: Course material are not publicly accessable.
|
||||
UnauthorizedWrite: You do not have the write permission necessary to perform this action
|
||||
UnauthorizedSystemMessageTime: This system-message is not currently available.
|
||||
UnauthorizedSystemMessageAuth: This system-message is only available to logged in users.
|
||||
UnknownAuthPredicate tag: Auth predicate “#{tag}” is unknown
|
||||
UnauthorizedSelf: You are not the specified user.
|
||||
UnauthorizedTutorialTutor: You are no tutor for this tutorial.
|
||||
UnauthorizedTutorialTutorControl: Tutors may not edit this tutorial.
|
||||
UnauthorizedCourseTutor: You are no tutor for this course.
|
||||
UnauthorizedTutor: You are no tutor.
|
||||
UnauthorizedTutorialRegisterGroup: You are already registered for a tutorial with the same registration group.
|
||||
UnauthorizedLDAP: Specified user does not log in with their campus account.
|
||||
UnauthorizedPWHash: Specified user does not log in with an Uni2work-account.
|
||||
UnauthorizedExternalExamListNotEmpty: List of external exams is not empty
|
||||
UnauthorizedExternalExamLecturer: You are not an associated person for this external exam
|
||||
UnauthorizedSubmissionSubmissionGroup: You are not member in any of the submission groups for this submission
|
||||
UnauthorizedSheetSubmissionGroup: You are not member in any submission group
|
||||
|
||||
UnauthorizedAllocatedCourseRegister: Direct enrollment to this course is currently not allowed due to participation in a central allocation
|
||||
UnauthorizedAllocatedCourseDeregister: Deregistration from this course is currently not allowed due to participation in a central allocation
|
||||
UnauthorizedAllocatedCourseDelete: Courses that participate in a central allocation may not be deleted
|
||||
UnauthorizedWorkflowInitiate: You currently may not initiate a new running workflow
|
||||
UnauthorizedWorkflowWrite: You are currently not allowed to initiate any state transition within the workflow
|
||||
UnauthorizedWorkflowRead: The workflow currently contains no states or data you are permitted to view
|
||||
UnauthorizedWorkflowInstancesNotEmpty: There are workflow instances for which you are allowed to initiate a new running workflow
|
||||
UnauthorizedWorkflowWorkflowsNotEmpty: There are running workflows, which you may view
|
||||
UnauthorizedWorkflowFiles: You are not allowed to download the given workflow files in the given historical state
|
||||
UnauthorizedStudent: You are not a student.
|
||||
@ -43,8 +43,8 @@ ExamTimeTip: Nur zur Information der Studierenden, die tatsächliche Zeitangabe
|
||||
ExamVisibleFrom: Sichtbar ab
|
||||
ExamVisibleFromTip: Ohne Datum nie sichtbar und keine Anmeldung möglich
|
||||
ExamRegisterFrom: Anmeldung ab
|
||||
ExamRegisterFromTip: Zeitpunkt ab dem sich Kursteilnehmer:innen selbständig zur Prüfung anmelden können; ohne Datum ist keine Anmeldung möglich
|
||||
ExamRegisterTo: Anmeldung bis
|
||||
ExamRegisterFromTip: Zeitpunkt ab dem sich Kursteilnehmer:innen selbständig zur Prüfung anmelden können; ohne Datum ist keine Anmeldung möglich
|
||||
ExamDeregisterUntil: Abmeldung bis
|
||||
ExamPublishOccurrenceAssignments: Termin- bzw. Raumzuteilung den Teilnehmer:innen mitteilen um
|
||||
ExamPublishOccurrenceAssignmentsTip: Ab diesem Zeitpunkt können Teilnehmer:innen einsehen zu welcher Teilprüfung bzw. welchen Raum sie angemeldet sind
|
||||
@ -43,8 +43,8 @@ ExamTimeTip: Only for informational purposes. The actual times are set for each
|
||||
ExamVisibleFrom: Visible from
|
||||
ExamVisibleFromTip: If left empty the exam is never visible and course participants may not register.
|
||||
ExamRegisterFrom: Register from
|
||||
ExamRegisterFromTip: Start of the period in which course participants may register themselves for the exam. If left empty participants are never allowed to register.
|
||||
ExamRegisterTo: Register to
|
||||
ExamRegisterFromTip: Start of the period in which course participants may register themselves for the exam. If left empty participants are never allowed to register.
|
||||
ExamDeregisterUntil: Deregister until
|
||||
ExamPublishOccurrenceAssignments: Publish occurrence/room-assignments
|
||||
ExamPublishOccurrenceAssignmentsTip: At this time participants can find out to which occurrence/room they are assigned
|
||||
@ -0,0 +1,32 @@
|
||||
MaterialList: Material
|
||||
MaterialName: Name
|
||||
MaterialType: Art
|
||||
MaterialTypePlaceholder: Folien, Code, Beispiel, ...
|
||||
MaterialTypeSlides: Folien
|
||||
MaterialTypeCode: Code
|
||||
MaterialTypeExample: Beispiel
|
||||
MaterialDescription: Beschreibung
|
||||
MaterialVisibleFrom: Sichtbar für Teilnehmer:innen ab
|
||||
MaterialVisibleFromTip: Ohne Datum nie sichtbar für Teilnehmer:innen; leer lassen ist nur sinnvoll für unfertige Materialien oder zur ausschließlichen Verteilung an Korrektor:innen
|
||||
MaterialVisibleFromEditWarning: Das Datum der Veröffentlichung liegt in der Vergangenheit und sollte nicht mehr verändert werden, da dies die Benutzer:innen verwirren könnte.
|
||||
MaterialInvisible: Dieses Material ist für Teilnehmer:innen momentan unsichtbar!
|
||||
MaterialFiles: Dateien
|
||||
MaterialHeading materialName@MaterialName: #{materialName}
|
||||
MaterialListHeading: Materialien
|
||||
MaterialNewHeading: Neues Material veröffentlichen
|
||||
MaterialNewTitle: Neues Material
|
||||
MaterialEditHeading materialName@MaterialName: Material "#{materialName}" editieren
|
||||
MaterialEditTitle materialName@MaterialName: Material "#{materialName}" editieren
|
||||
MaterialSaveOk tid@TermId ssh@SchoolId csh@CourseShorthand materialName@MaterialName: Material "#{materialName}" erfolgreich gespeichert in Kurs #{tid}-#{ssh}-#{csh}
|
||||
MaterialNameDup tid@TermId ssh@SchoolId csh@CourseShorthand materialName@MaterialName: Es gibt bereits Material mit Namen "#{materialName}" in diesem Kurs #{tid}-#{ssh}-#{csh}
|
||||
MaterialDeleteCaption: Wollen Sie das unten aufgeführte Material wirklich löschen?
|
||||
MaterialDelHasFiles count@Int64: inklusive #{count} #{pluralDE count "Datei" "Dateien"}
|
||||
MaterialIsVisible: Achtung, dieses Material wurde bereits veröffentlicht.
|
||||
MaterialDeleted materialName@MaterialName: Material "#{materialName}" gelöscht
|
||||
MaterialArchiveName tid@TermId ssh@SchoolId csh@CourseShorthand materialName@MaterialName: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase materialName}
|
||||
MaterialVideo materialName@MaterialName: #{materialName} - Video
|
||||
MaterialVideoUnsupported: Ihr Browser scheint keine eingebetten Videos zu unterstützen
|
||||
MaterialVideoDownload: Herunterladen
|
||||
MaterialFree: Kursmaterialien ohne Anmeldung zugänglich
|
||||
AccessibleSince: Verfügbar seit
|
||||
VisibleFrom: Veröffentlicht
|
||||
@ -0,0 +1,32 @@
|
||||
MaterialList: Material
|
||||
MaterialName: Name
|
||||
MaterialType: Type
|
||||
MaterialTypePlaceholder: Slides, Code, Example, ...
|
||||
MaterialTypeSlides: Slides
|
||||
MaterialTypeCode: Code
|
||||
MaterialTypeExample: Example
|
||||
MaterialDescription: Description
|
||||
MaterialVisibleFrom: Visible to participants from
|
||||
MaterialVisibleFromTip: Never visible to participants if left empty; leaving the date empty is only sensible for unfinished course material or when course material should be provided only to sheet correctors
|
||||
MaterialVisibleFromEditWarning: This course material has already been published and should not be edited. Doing so might confuse the participants.
|
||||
MaterialInvisible: This course material is currently invisible to participants!
|
||||
MaterialFiles: Files
|
||||
MaterialHeading materialName: #{materialName}
|
||||
MaterialListHeading: Course materials
|
||||
MaterialNewHeading: Publish new course material
|
||||
MaterialNewTitle: New course material
|
||||
MaterialEditHeading materialName: Edit course material “#{materialName}”
|
||||
MaterialEditTitle materialName: Edit course material “#{materialName}”
|
||||
MaterialSaveOk tid ssh csh materialName: Successfully saved “#{materialName}” for course #{tid}-#{ssh}-#{csh}
|
||||
MaterialNameDup tid ssh csh materialName: Course material with the name “#{materialName}” already exists for course #{tid}-#{ssh}-#{csh}
|
||||
MaterialDeleteCaption: Do you really want to delete the course material mentioned below?
|
||||
MaterialDelHasFiles count: including #{count} #{pluralEN count "file" "files"}
|
||||
MaterialIsVisible: Caution, this course material has already been published.
|
||||
MaterialDeleted materialName: Successfully deleted course material “#{materialName}”
|
||||
MaterialArchiveName tid ssh csh materialName: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-#{foldedCase csh}-#{foldedCase materialName}
|
||||
MaterialVideo materialName: #{materialName} - Video
|
||||
MaterialVideoUnsupported: Your browser does not seem to support embedded video
|
||||
MaterialVideoDownload: Download
|
||||
MaterialFree: Course material is publicly available.
|
||||
AccessibleSince: Accessible since
|
||||
VisibleFrom: Published
|
||||
@ -0,0 +1,5 @@
|
||||
ParticipantsList: Kursteilnehmerlisten
|
||||
ParticipantsIntersect: Überschneidung von Kursteilnehmer:innen
|
||||
ParticipantsCsvName tid@TermId ssh@SchoolId: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-kursteilnehmer:innen
|
||||
ParticipantsIntersectCourseOption tid@TermId ssh@SchoolId coursen@CourseName: #{tid} - #{ssh} - #{coursen}
|
||||
ParticipantsIntersectCourses: Kurse
|
||||
@ -0,0 +1,5 @@
|
||||
ParticipantsList: Lists of course participants
|
||||
ParticipantsIntersect: Common course participants
|
||||
ParticipantsCsvName tid ssh: #{foldCase (termToText (unTermKey tid))}-#{foldedCase (unSchoolKey ssh)}-participants
|
||||
ParticipantsIntersectCourseOption tid@TermId ssh@SchoolId coursen@CourseName: #{tid} - #{ssh} - #{coursen}
|
||||
ParticipantsIntersectCourses: Courses
|
||||
@ -128,3 +128,5 @@ SheetTypeInfoInformational: Blätter ohne Anrechnung werden nirgends angerechnet
|
||||
SheetTypeInfoExamPartPoints: Bei diesem Übungsblatt erreichte Punkte werden direkt auf die Punktezahl eines Prüfungsteils angerechnet. Wenn die Anzahl von über Übungsblättern erreichbaren Punkten nicht der Maximalpunktzahl des Prüfungsteils entspricht, werden die Übungsblattpunkte anhand der angegebenen Gewichtung skaliert.
|
||||
GroupSizeNotNatural: „Gruppengröße“ muss eine natürliche Zahl sein
|
||||
SheetGroupMaxGroupsize: Maximale Gruppengröße
|
||||
|
||||
HaveCorrectorAccess sheetName@SheetName: Sie haben Korrektor:in-Zugang zu #{original sheetName}.
|
||||
@ -128,3 +128,5 @@ SheetTypeInfoExamPartPoints: Points achieved in this exercise sheet will be dire
|
||||
SheetTypeInfoInformational: Sheets marked "informational" do not counted anywhere. They are marked only as feedback for participants.
|
||||
GroupSizeNotNatural: “Maximum group size” needs to be a natural number
|
||||
SheetGroupMaxGroupsize: Maximum group size
|
||||
|
||||
HaveCorrectorAccess sheetName: You have corrector access to #{original sheetName}.
|
||||
@ -0,0 +1,9 @@
|
||||
HealthReport: Instanz-Zustand
|
||||
HealthMatchingClusterConfig: Cluster-geteilte Konfiguration ist aktuell
|
||||
HealthHTTPReachable: Cluster kann an der erwarteten URL über HTTP erreicht werden
|
||||
HealthLDAPAdmins: Anteil der Administrator:innen, die im LDAP-Verzeichnis gefunden werden können
|
||||
HealthSMTPConnect: SMTP-Server kann erreicht werden
|
||||
HealthWidgetMemcached: Memcached-Server liefert Widgets korrekt aus
|
||||
HealthActiveJobExecutors: Anteil der job-workers, die neue Befehle annehmen
|
||||
InstanceIdentification: Instanz-Identifikation
|
||||
InstanceId: Instanz-Nummer
|
||||
9
messages/uniworx/uniworx_new/categories/health/en-eu.msg
Normal file
9
messages/uniworx/uniworx_new/categories/health/en-eu.msg
Normal file
@ -0,0 +1,9 @@
|
||||
HealthReport: Health report
|
||||
HealthMatchingClusterConfig: Cluster config matches
|
||||
HealthHTTPReachable: Cluster can be reached under the expected URL via HTTP
|
||||
HealthLDAPAdmins: Proportion of administrators that were found in the LDAP directory
|
||||
HealthSMTPConnect: SMTP server is reachable
|
||||
HealthWidgetMemcached: Memcached server is serving widgets correctly
|
||||
HealthActiveJobExecutors: Proportion of job workers accepting new jobs
|
||||
InstanceIdentification: Instance identification
|
||||
InstanceId: Instance id
|
||||
@ -10,3 +10,9 @@ HelpSubject: Betreff
|
||||
HelpRequest: Supportanfrage/Verbesserungsvorschlag
|
||||
HelpSent: Ihre Supportanfrage wurde weitergeleitet.
|
||||
AdditionalFaqs: Weitere häufig gestellte Fragen
|
||||
HelpName: Name
|
||||
HelpTitle : Hilfe
|
||||
HelpSendLastError: Letzte Fehlermeldung anhängen
|
||||
HelpError: Letzte Fehlermeldung
|
||||
HelpErrorYamlFilename mailId@MailObjectId: fehlermeldung-#{toPathPiece mailId}.yaml
|
||||
HelpErrorOrRequestRequired: Bitte geben Sie entweder eine Supportanfrage bzw. einen Verbesserungsvorschlag an oder hängen Sie die letzte Fehlermeldung an
|
||||
|
||||
@ -10,3 +10,9 @@ HelpSubject: Subject
|
||||
HelpRequest: Support request / Suggestion
|
||||
HelpSent: Your support request has been sent.
|
||||
AdditionalFaqs: More frequently asked questions
|
||||
HelpName: Name
|
||||
HelpTitle: Support
|
||||
HelpSendLastError: Attach last error message
|
||||
HelpError: Last error message
|
||||
HelpErrorYamlFilename mailId: error-#{toPathPiece mailId}.yaml
|
||||
HelpErrorOrRequestRequired: Please attach either the last error message or submit a support request or a suggestion
|
||||
|
||||
@ -0,0 +1,14 @@
|
||||
HeadingLegal: Rechtliche Informationen
|
||||
InfoHeading: Informationen
|
||||
InfoLecturerTitle: Hinweise für Veranstalter:innen
|
||||
InfoLecturerCourses: Veranstaltungen
|
||||
InfoLecturerExercises: Übungsbetrieb
|
||||
InfoLecturerTutorials: Tutorien
|
||||
InfoLecturerExams: Prüfungen
|
||||
InfoLecturerAllocations: Zentralanmeldungen
|
||||
LecturerInfoTooltipNew: Neues Feature
|
||||
LecturerInfoTooltipProblem: Feature mit bekannten Problemen
|
||||
LecturerInfoTooltipPlanned: Geplantes Feature
|
||||
LecturerInfoTooltipNewU2W: Unterschied zu UniWorX
|
||||
GlossaryTitle: Begriffsverzeichnis
|
||||
FaqTitle: Häufig gestellte Fragen
|
||||
14
messages/uniworx/uniworx_new/categories/info/en-eu.msg
Normal file
14
messages/uniworx/uniworx_new/categories/info/en-eu.msg
Normal file
@ -0,0 +1,14 @@
|
||||
HeadingLegal: Legal
|
||||
InfoHeading: Information
|
||||
InfoLecturerTitle: Information for lecturers
|
||||
InfoLecturerCourses: Courses
|
||||
InfoLecturerExercises: Course Exercises
|
||||
InfoLecturerTutorials: Tutorials
|
||||
InfoLecturerExams: Exams
|
||||
InfoLecturerAllocations: Central allocations
|
||||
LecturerInfoTooltipNew: New feature
|
||||
LecturerInfoTooltipProblem: Feature with known issues
|
||||
LecturerInfoTooltipPlanned: Planned feature
|
||||
LecturerInfoTooltipNewU2W: Unlike UniWorX
|
||||
GlossaryTitle: Glossary
|
||||
FaqTitle: Frequently asked questions
|
||||
@ -0,0 +1,4 @@
|
||||
TitleMetrics: Metriken
|
||||
MetricNoSamples: Keine Messwerte
|
||||
MetricName: Name
|
||||
MetricValue: Wert
|
||||
@ -0,0 +1,4 @@
|
||||
TitleMetrics: Metrics
|
||||
MetricNoSamples: No samples
|
||||
MetricName: Name
|
||||
MetricValue: Value
|
||||
@ -0,0 +1,16 @@
|
||||
NewsHeading: Aktuelles
|
||||
SystemMessageLastChangedAt time@Text: Zuletzt geändert: #{time}
|
||||
NewsOpenAllocations: Offene Zentralanmeldungen
|
||||
NewsUpcomingSheets: Anstehende Übungsblätter
|
||||
NewsUpcomingExams: Bevorstehende Prüfungen
|
||||
NewsHideHiddenSystemMessages: Versteckte Nachrichten nicht mehr anzeigen
|
||||
NewsShowHiddenSystemMessages: Versteckte Nachrichten anzeigen
|
||||
NewsExamOccurrenceRoomIsUnset: —
|
||||
NewsExamOccurrenceRoomIsHidden: Raum wird nur Teilnehmer:innen angezeigt
|
||||
NewsExamRegistered: Zur Prüfung angemeldet
|
||||
NewsExamNotRegistered: Nicht zur Prüfung angemeldet
|
||||
Deadline: Abgabe
|
||||
Done: Eingereicht
|
||||
SubmissionNew: Abgabe anlegen
|
||||
NoUpcomingSheetDeadlines: Keine anstehenden Übungsblätter
|
||||
NoUpcomingExams difftime@Text: In den nächsten #{difftime} gibt es keine Prüfungen oder ablaufende Prüfungsanmeldungen in Ihren Kursen
|
||||
16
messages/uniworx/uniworx_new/categories/news/en-eu.msg
Normal file
16
messages/uniworx/uniworx_new/categories/news/en-eu.msg
Normal file
@ -0,0 +1,16 @@
|
||||
NewsHeading: News
|
||||
SystemMessageLastChangedAt time: Last changed: #{time}
|
||||
NewsOpenAllocations: Active central allocations
|
||||
NewsUpcomingSheets: Upcoming exercise sheets
|
||||
NewsUpcomingExams: Upcoming exams
|
||||
NewsHideHiddenSystemMessages: Don't show hidden news items
|
||||
NewsShowHiddenSystemMessages: Show hidden news items
|
||||
NewsExamOccurrenceRoomIsUnset: —
|
||||
NewsExamOccurrenceRoomIsHidden: Room is only displayed to participants registered for this occurrence/room
|
||||
NewsExamRegistered: Registered for the exam
|
||||
NewsExamNotRegistered: Not registered for the exam
|
||||
Deadline: Deadline
|
||||
Done: Submitted
|
||||
SubmissionNew: Create submission
|
||||
NoUpcomingSheetDeadlines: No upcoming sheets
|
||||
NoUpcomingExams difftime: No exams for your courses occur or allow registration in the next #{difftime}
|
||||
@ -0,0 +1,19 @@
|
||||
HeadingSchoolList: Institute
|
||||
SchoolShort: Kürzel
|
||||
SchoolName: Name
|
||||
SchoolLdapOrganisations: Assoziierte LDAP-Fragmente
|
||||
SchoolLdapOrganisationsTip: Beim Login via LDAP werden dem Nutzer/der Nutzerin alle Institute zugeordnet deren assoziierte LDAP-Fragmente im Eintrag des Nutzer/der Nutzerin gefunden werden
|
||||
SchoolLdapOrganisationMissing: LDAP-Fragment wird benötigt
|
||||
SchoolExamMinimumRegisterBeforeStart: Minimale Tage zwischen Anmeldebeginn und Termin für Prüfungen
|
||||
SchoolExamMinimumRegisterBeforeStartTip: Wenn angegeben werden Dozierende gezwungen Anmeldezeitraum und Prüfungstermin stets zusammen einzustellen.
|
||||
SchoolExamMinimumRegisterDuration: Minimale Anmeldedauer für Prüfungen
|
||||
SchoolExamMinimumRegisterDurationTip: Wenn angegeben werden Dozierende daran gehindert Anmeldefristen von weniger als der minimalen Dauer für ihre Prüfungen einzustellen.
|
||||
SchoolExamRequireModeForRegistration: Prüfungsmodus erforderlich für Anmeldung
|
||||
SchoolExamRequireModeForRegistrationTip: Sollen Dozierende gezwungen werden Prüfungsmodus und Anmeldefrist stets zusammen einzustellen?
|
||||
SchoolExamDiscouragedModes: Prüfungsmodi mit Warnung
|
||||
ExamCloseMode: Prüfungs-Abschluss
|
||||
SchoolUpdated ssh@SchoolId: #{ssh} erfolgreich angepasst
|
||||
SchoolTitle ssh@SchoolId: Institut „#{ssh}“
|
||||
TitleSchoolNew: Neues Institut anlegen
|
||||
SchoolCreated ssh@SchoolId: #{ssh} erfolgreich angelegt
|
||||
SchoolExists ssh@SchoolId: Institut „#{ssh}“ existiert bereits
|
||||
19
messages/uniworx/uniworx_new/categories/school/en-eu.msg
Normal file
19
messages/uniworx/uniworx_new/categories/school/en-eu.msg
Normal file
@ -0,0 +1,19 @@
|
||||
HeadingSchoolList: Departments
|
||||
SchoolShort: Shorthand
|
||||
SchoolName: Name
|
||||
SchoolLdapOrganisations: Associated LDAP fragments
|
||||
SchoolLdapOrganisationsTip: When logging in users are associated with any departments whose associated LDAP fragments are found in the users LDAP entry
|
||||
SchoolLdapOrganisationMissing: LDAP-fragment is required
|
||||
SchoolExamMinimumRegisterBeforeStart: Minimum number of days between start of registration period and start of exams
|
||||
SchoolExamMinimumRegisterBeforeStartTip: If specified course administrators will be forced to specify the start of the registration period and the start of the exam at the same time.
|
||||
SchoolExamMinimumRegisterDuration: Minimum duration of registration period for exams
|
||||
SchoolExamMinimumRegisterDurationTip: If specified course administrators will be prevented from setting a registration period of less than the specified number of days.
|
||||
SchoolExamRequireModeForRegistration: Exam design required for registration
|
||||
SchoolExamRequireModeForRegistrationTip: Should course administrators be forced to fully specify their exam design when setting a registration period?
|
||||
SchoolExamDiscouragedModes: Exam designs to warn against
|
||||
ExamCloseMode: Exam closure
|
||||
SchoolUpdated ssh: Successfully edited #{ssh}
|
||||
SchoolTitle ssh: Department „#{ssh}“
|
||||
TitleSchoolNew: Neues Institut anlegen
|
||||
SchoolCreated ssh: Successfully created #{ssh}
|
||||
SchoolExists ssh: A department named „#{ssh}“ already exists
|
||||
@ -0,0 +1,143 @@
|
||||
#allocation.hs + templates in scope
|
||||
MailSubjectAllocationStaffRegister allocationSchool@SchoolId allocation@AllocationName: Sie können nun Kurse für die Zentralameldung #{allocationSchool}: „#{allocation}“ registrieren
|
||||
MailSubjectAllocationStaffRegisterMultiple n@Int: Sie können nun Kurse für #{n} Zentralameldungen registrieren
|
||||
MailSubjectAllocationRegister allocationSchool@SchoolId allocation@AllocationName: Es kann sich nun für Kurse der Zentralameldung #{allocationSchool}: „#{allocation}“ beworben werden
|
||||
MailSubjectAllocationRegisterMultiple n@Int: Es kann sich nun für Kurse für #{n} Zentralanmeldungen beworben werden
|
||||
MailSubjectAllocationAllocation allocationSchool@SchoolId allocation@AllocationName: Sie können nun Bewerbungen für ihre Kurse in der Zentralanmeldung #{allocationSchool}: „#{allocation}“ bewerten
|
||||
MailSubjectAllocationAllocationMultiple n@Int: Sie können nun Bewerbungen für ihre Kurse in #{n} Zentralanmeldungen bewerten
|
||||
MailSubjectAllocationUnratedApplications allocationSchool@SchoolId allocation@AllocationName: Es stehen noch Bewertungen zu Bewerbungen für ihre Kurse in der Zentralanmeldung #{allocationSchool}: „#{allocation}“ aus
|
||||
MailSubjectAllocationUnratedApplicationsMultiple n@Int: Es stehen noch Bewertungen zu Bewerbungen für ihre Kurse in #{n} Zentralanmeldungen aus
|
||||
MailSubjectAllocationNewCourse allocation@AllocationName: Es wurde ein zusätzlicher Kurs zur Zentralanmeldung „#{allocation}” eingetragen
|
||||
MailSubjectAllocationResults allocation@AllocationName: Plätze für Zentralanmeldung „#{allocation}“ wurden verteilt
|
||||
AllocationResultLecturer csh@CourseShorthand count@Int64 count2@Int64: #{count} Teilnehmer:innen (von insgesamt #{count2}) für #{csh}
|
||||
AllocationResultLecturerAll csh@CourseShorthand count@Int64: #{count} Teilnehmer:innen für #{csh}
|
||||
AllocationResultLecturerNone csh@CourseShorthand: Keine Teilnehmer:innen für #{csh}
|
||||
MailAllocationStaffRegisterIntroMultiple n@Int: Sie können nun Kurse für die folgenden #{n} Zentralameldungen registrieren:
|
||||
MailAllocationStaffRegisterNewCourse: Sie können auf der unten aufgeführten Seite neue Kurse in Uni2work anlegen. Hierbei haben Sie die Möglichkeit anzugeben, dass der Kurs an einer Zentralanmeldung teilnimmt.
|
||||
MailAllocationStaffRegisterDeadline n@Int deadline@Text: Bitte beachten Sie, dass alle Kurse, die an #{pluralDE n "dieser Zentralanmeldung" "diesen Zentralanmeldungen"} teilnehmen, bis #{deadline} eingetragen sein müssen.
|
||||
MailAllocationStaffRegisterDeadlineMultiple: Bitte beachten Sie, dass alle Kurse, die an einer dieser Zentralanmeldungen teilnehmen, bis Ende der jeweiligen Regstrierungsphase (siehe unten) eingetragen sein müssen.
|
||||
MailAllocationStaffRegisterDeadlineSingle deadline@Text: Registrierungsphase endet #{deadline}
|
||||
MailAllocationStaffRegisterDeadlineSingleNothing: Aktuell kein Ende der Registrierungsphase festgelegt
|
||||
MailAllocationSchoolAndName allocationSchool@SchoolId allocation@AllocationName: #{allocationSchool}: „#{allocation}“
|
||||
CourseNew: Neuen Kurs anlegen
|
||||
MailAllocationRegisterIntroMultiple n@Int: Es kann sich nun für Kurse für die folgenden #{n} Zentralanmeldungen beworben werden:
|
||||
MailAllocationRegister n@Int: Es kann sich nun, auf #{pluralDE n "der unten aufgeführten Seite" "den unten aufgeführten Seiten"}, für alle Kurse der #{pluralDE n "Zentralanmeldung" "Zentralanmeldungen"} jeweils einzeln beworben werden.
|
||||
MailAllocationRegisterDeadline deadline@Text: Bitte beachten Sie, dass alle Bewerbungen bis #{deadline} eingegangen sein müssen.
|
||||
MailAllocationRegisterDeadlineMultiple: Bitte beachten Sie, dass alle Bewerbungen bis Ende der jeweiligen Bewerbungsphase (siehe unten) eingegangen sein müssen.
|
||||
MailAllocationRegisterDeadlineSingle deadline@Text: Bewerbungsphase endet #{deadline}
|
||||
MailAllocationRegisterDeadlineSingleNothing: Aktuell kein Ende der Bewerbungsphase festgelegt
|
||||
MailAllocationAllocationIntroMultiple n@Int: Sie können nun Bewerbungen für ihre Kurse in #{n} Zentralanmeldungen bewerten:
|
||||
MailAllocationAllocation n@Int: Sie können nun auf den unten aufgeführten Seiten Bewerbungen, die im Rahmen der #{pluralDE n "Zentralanmeldung" "Zentralanmeldungen"} an ihre Kurse gestellt wurden, bewerten. Die Bewertungen werden bei der Vergabe der Plätze berücksichtigt.
|
||||
MailAllocationApplicationsMayChange deadline@Text: Bitte beachten Sie, dass Studierende noch bis #{deadline} Bewerbungen stellen, verändern und zurückziehen können. Bewerbungen, die sich nach ihrer Bewertung noch verändern, müssen neu bewertet werden.
|
||||
MailAllocationApplicationsRegisterDeadline deadline@Text: Bewerbungsphase endet #{deadline}
|
||||
MailAllocationApplicationsRegisterDeadlineNothing: Aktuell kein Ende der Bewerbungsphase festgelegt
|
||||
MailAllocationApplicationsMayChangeMultiple: Bitte beachten Sie, dass Studierende noch bis Ende der Bewerbungsphase (siehe unten) der jeweiligen Zentralanmeldung Bewerbungen stellen, verändern und zurückziehen können. Bewerbungen, die sich nach ihrer Bewertung noch verändern, müssen neu bewertet werden.
|
||||
MailAllocationAllocationDeadline deadline@Text: Bitte beachten Sie, dass alle Bewertungen bis #{deadline} erfolgt sein müssen.
|
||||
MailAllocationApplicationsAllocationDeadline deadline@Text: Bewertungsphase endet #{deadline}
|
||||
MailAllocationApplicationsAllocationDeadlineNothing: Aktuell keine Ende der Bewertungsphase festgelegt
|
||||
MailAllocationAllocationDeadlineMultiple: Bitte beachten Sie, dass alle Bewertungen bis Ende der Bewertungsphase (siehe unten) erfolgt sein müssen.
|
||||
MailAllocationUnratedApplicationsIntroMultiple n@Int: Es stehen noch Bewertungen zu Bewerbungen für ihre Kurse in #{n} Zentralanmeldungen aus:
|
||||
MailAllocationUnratedApplications n@Int: Für die unten aufgeführten Kurse liegen Bewerbungen vor, die im Rahmen der #{pluralDE n "Zentralanmeldung" "Zentralanmeldungen"} an den jeweiligen Kurs gestellt wurden, die entweder noch nicht bewertet wurden oder die nach der Bewertung noch verändert wurden und deswegen neu bewertet werden müssen.
|
||||
MailAllocationUnratedApplicationsCount i@Natural: #{i} #{pluralDE i "Bewerbung" "Bewerbungen"}
|
||||
AllocationResultsLecturer: Im Rahmen der oben genannten Zentralanmeldung wurden Plätze zugewiesen, wie folgt:
|
||||
AllocationResultsLecturerSubstituteCoursesWarning: Bitte konfigurieren Sie so bald wie möglich einen Zeitrahmen in dem Sie bereit sind etwaige Nachrücker in den folgenden Kursen zu akzeptieren:
|
||||
AllocationResultsStudent: Sie haben Plätze erhalten in:
|
||||
AllocationNoResultsStudent: Sie haben leider keine Plätze erhalten.
|
||||
AllocationResultStudent csh@CourseShorthand: Sie haben einen Platz in #{csh} erhalten.
|
||||
AllocationResultsTip: Die folgenden Informationen entsprechen dem aktuellen Stand der Zentralanmeldung und können sich, z.B. durch die Verteilung von Plätzen an Nachrücker, noch ändern. Über zukünftige Änderungen, die Sie betreffen, werden Sie gesondert informiert.
|
||||
AllocationResultsStudentTip: Unten aufgeführt sind alle Plätze, die Sie im Rahmen der genannten Zentralanmeldung erhalten haben und von denen Sie seit dem weder abgemeldet wurden, noch sich selbst abgemeldet haben. Plätze, über die Sie ggf. bereits informiert wurden, können also erneut aufgeführt sein.
|
||||
AllocationResultStudentRegistrationTip: Sie sind zu oben genanntem Kurs in Uni2work angemeldet.
|
||||
AllocationResultsStudentRegistrationTip: Sie sind zu den oben genannten Kursen in Uni2work angemeldet.
|
||||
MailAllocationNewCourseTip: Es wurde der folgende Kurs zur Zentralanmeldung eingetragen:
|
||||
MailAllocationNewCourseEditApplicationsHere: Sie können Ihre Bewerbung(en) hier anpassen:
|
||||
MailAllocationNewCourseApplyHere: Sie können sich hier bewerben:
|
||||
|
||||
#correctionsAssigned.hs + templates
|
||||
MailSubjectCorrectionsAssigned csh@CourseShorthand sheetName@SheetName: Ihnen wurden Korrekturen zu #{sheetName} in #{csh} zugeteilt
|
||||
MailCorrectionsAssignedIntro courseName@Text termDesc@Text sheetName@SheetName n@Int: #{n} #{pluralDE n "Abgabe wurde" "Abgaben wurden"} Ihnen zur Korrektur für #{sheetName} im Kurs #{courseName} (#{termDesc}) zugeteilt.
|
||||
MailCorrectionsTitle: Zugewiesene Korrekturen
|
||||
|
||||
#correctionsNotDistributed.hs + templates
|
||||
MailSubjectSubmissionsUnassigned csh@CourseShorthand sheetName@SheetName: Abgaben zu #{sheetName} in #{csh} konnten nicht verteilt werden
|
||||
MailSubmissionsUnassignedIntro n@Int courseName@Text termDesc@Text sheetName@SheetName: #{n} Abgaben zu #{sheetName} im Kurs #{courseName} (#{termDesc}) konnten nicht automatisiert verteilt werden.
|
||||
|
||||
#courseRegistered.hs + templates
|
||||
MailSubjectCourseRegistered csh@CourseShorthand: Sie wurden zu #{csh} angemeldet
|
||||
MailSubjectCourseRegisteredOther displayName@Text csh@CourseShorthand: #{displayName} wurde zu #{csh} angemeldet
|
||||
MailCourseRegisteredIntro courseName@Text termDesc@Text: Sie wurden im Kurs #{courseName} (#{termDesc}) angemeldet.
|
||||
MailCourseRegisteredIntroOther displayName@Text courseName@Text termDesc@Text: #{displayName} wurde im Kurs #{courseName} (#{termDesc}) angemeldet.
|
||||
|
||||
#ExamActive.hs + templates
|
||||
MailSubjectExamRegistrationActive csh@CourseShorthand examn@ExamName: Anmeldung für #{examn} in #{csh} ist möglich
|
||||
MailExamRegistrationActiveIntro courseName@Text termDesc@Text examn@ExamName: Sie können sich nun für #{examn} im Kurs #{courseName} (#{termDesc}) anmelden.
|
||||
MailSubjectExamRegistrationSoonInactive csh@CourseShorthand examn@ExamName: Anmeldung für #{examn} in #{csh} ist nur noch kurze Zeit möglich
|
||||
MailExamRegistrationSoonInactiveIntro courseName@Text termDesc@Text examn@ExamName: Sie können sich bald nicht mehr für #{examn} im Kurs #{courseName} (#{termDesc}) anmelden.
|
||||
MailSubjectExamDeregistrationSoonInactive csh@CourseShorthand examn@ExamName: Abmeldung für #{examn} in #{csh} ist nur noch kurze Zeit möglich
|
||||
MailExamDeregistrationSoonInactiveIntro courseName@Text termDesc@Text examn@ExamName: Sie können sich bald nicht mehr von #{examn} im Kurs #{courseName} (#{termDesc}) abmelden.
|
||||
|
||||
#examOffice.hs + templates
|
||||
MailSubjectExamOfficeExamResults coursen@CourseName examn@ExamName: Ergebnisse für #{examn} in #{coursen} sind fertiggestellt
|
||||
MailExamOfficeExamResultsIntro courseName@Text termDesc@Text examn@ExamName: Ein Kursverwalter/Eine Kursverwalterin hat die Prüfungsleistungen für #{examn} im Kurs #{courseName} (#{termDesc}) freigegeben.
|
||||
MailSubjectExamOfficeExamResultsChanged coursen@CourseName examn@ExamName: Ergebnisse für #{examn} in #{coursen} wurden verändert
|
||||
MailExamOfficeExamResultsChangedIntro courseName@Text termDesc@Text examn@ExamName: Ein Kursverwalter/Eine Kursverwalterin hat Prüfungsleistungen für #{examn} im Kurs #{courseName} (#{termDesc}) verändert.
|
||||
MailSubjectExamOfficeExternalExamResults coursen@CourseName examn@ExamName: Ergebnisse für #{examn} in #{coursen}
|
||||
MailExamOfficeExternalExamResultsIntro coursen@CourseName termDesc@Text examn@ExamName: Ein Kursverwalter/Eine Kursverwalterin hat Prüfungsleistungen für #{examn} im Kurs #{coursen} (#{termDesc}) erstellt oder angepasst.
|
||||
|
||||
#examResult.hs + templates
|
||||
MailSubjectExamResult csh@CourseShorthand examn@ExamName: Ergebnisse für #{examn} in #{csh} wurden herausgegeben
|
||||
MailExamResultIntro courseName@Text termDesc@Text examn@ExamName: Sie können nun Ihr Ergebnis für #{examn} im Kurs #{courseName} (#{termDesc}) einsehen.
|
||||
|
||||
#sheetActive.hs + templates
|
||||
MailSubjectSheetActive csh@CourseShorthand sheetName@SheetName: #{sheetName} in #{csh} wurde herausgegeben
|
||||
MailSheetActiveIntro courseName@Text termDesc@Text sheetName@SheetName: Sie können nun #{sheetName} im Kurs #{courseName} (#{termDesc}) herunterladen.
|
||||
MailSubjectSheetHint csh@CourseShorthand sheetName@SheetName: Hinweise für #{sheetName} in #{csh} wurden herausgegeben
|
||||
MailSheetHintIntro courseName@Text termDesc@Text sheetName@SheetName: Sie können nun die Hinweise für #{sheetName} im Kurs #{courseName} (#{termDesc}) herunterladen.
|
||||
MailSubjectSheetSolution csh@CourseShorthand sheetName@SheetName: Lösungen für #{sheetName} in #{csh} wurden herausgegeben
|
||||
MailSheetSolutionIntro courseName@Text termDesc@Text sheetName@SheetName: Sie können nun die Lösungen für #{sheetName} im Kurs #{courseName} (#{termDesc}) herunterladen.
|
||||
|
||||
#sheetInactive.hs + templates
|
||||
MailSubjectSheetSoonInactive csh@CourseShorthand sheetName@SheetName: #{sheetName} in #{csh} kann nur noch kurze Zeit abgegeben werden
|
||||
MailSheetSoonInactiveIntro courseName@Text termDesc@Text sheetName@SheetName: Abgabefrist für #{sheetName} im Kurs #{courseName} (#{termDesc}) endet in Kürze.
|
||||
MailSubjectSheetInactive csh@CourseShorthand sheetName@SheetName: Abgabezeitraum für #{sheetName} in #{csh} abgelaufen
|
||||
MailSheetInactiveIntro courseName@Text termDesc@Text sheetName@SheetName n@Int num@Int64: Die Abgabefrist für #{sheetName} im Kurs #{courseName} (#{termDesc}) ist beendet. Es gab #{noneOneMoreDE n "Keine Abgaben" "Nur eine Abgabe von " (toMessage n <> " Abgaben von ")}#{noneOneMoreDE num "" "einem Teilnehmer/einer Teilnehmerin" (toMessage num <> " Teilnehmer:innen")}.
|
||||
MailSheetInactiveIntroNoUserSubmission courseName@Text termDesc@Text sheetName@SheetName n@Int num@Int64: Die Abgabefrist für #{sheetName} im Kurs #{courseName} (#{termDesc}) ist beendet.#{noneOneMoreDE n "" "Es gab bereits eine Abgabe von " (("Es gab bereits " <> toMessage n) <> " Abgaben von ")}#{noneOneMoreDE num "" "einem Teilnehmer/einer Teilnehmerin" (toMessage num <> " Teilnehmer:innen")}.
|
||||
MailSheetInactivePseudonymsCount n@Int: Die Anzahl von Abgaben betrifft nur jene, die bereits direkt in Uni2work abgegeben haben. Es #{pluralDE n (("wurde " <> tshow n) <> " Pseudonym") (("wurden " <> tshow n) <> " Pseudonyme")} generiert.
|
||||
MailSheetInactiveParticipantsCount n@Int: Es #{pluralDE n "ist aktuell" "sind aktuell"} #{n} Teilnehmer zum Kurs angemeldet.
|
||||
|
||||
#submissionEdited.hs +templates
|
||||
MailSubjectSubmissionEdited csh@CourseShorthand shn@SheetName: Ihre Abgabe für #{shn} im Kurs #{csh} wurde verändert
|
||||
MailSubmissionEditedIntro coursen@CourseName shn@SheetName termDesc@Text displayName@Text: #{displayName} hat Ihre Abgabe für #{shn} im Kurs #{coursen} (#{termDesc}) verändert.
|
||||
MailSubjectSubmissionUserCreated csh@CourseShorthand shn@SheetName: Sie wurden als Mitabgebende:r zu einer Abgabe für #{shn} im Kurs #{csh} hinzugefügt
|
||||
MailSubjectSubmissionUserCreatedOther displayName@Text csh@CourseShorthand shn@SheetName: Es wurde ein Mitabgebender/eine Mitabgebende zu einer Abgabe für #{shn} im Kurs #{csh} hinzugefügt
|
||||
MailSubmissionUserCreatedIntro coursen@CourseName shn@SheetName termDesc@Text: Sie wurden als Mitabgebende:r zu einer Abgabe für #{shn} im Kurs #{coursen} (#{termDesc}) hinzugefügt.
|
||||
MailSubmissionUserCreatedOtherIntro displayName@UserDisplayName coursen@CourseName shn@SheetName termDesc@Text: #{displayName} wurde als Mitabgebender zu einer Abgabe für #{shn} im Kurs #{coursen} (#{termDesc}) hinzugefügt.
|
||||
MailSubjectSubmissionUserDeleted csh@CourseShorthand shn@SheetName: Sie wurden als Mitabgebende:r von Ihrer Abgabe für #{shn} im Kurs #{csh} entfernt
|
||||
MailSubjectSubmissionUserDeletedOther displayName@Text csh@CourseShorthand shn@SheetName: Es wurde ein Mitabgebender/eine Mitabgebende von einer Abgabe für #{shn} im Kurs #{csh} entfernt
|
||||
MailSubmissionUserDeletedIntro coursen@CourseName shn@SheetName termDesc@Text: Sie wurden als Mitabgebende:r von Ihrer Abgabe für #{shn} im Kurs #{coursen} (#{termDesc}) entfernt.
|
||||
MailSubmissionUserDeletedOtherIntro displayName@UserDisplayName coursen@CourseName shn@SheetName termDesc@Text: #{displayName} wurde als Mitabgebende:r von einer Abgabe für #{shn} im Kurs #{coursen} (#{termDesc}) entfernt.
|
||||
|
||||
#submissionRated.hs + templates
|
||||
MailSubjectSubmissionRated csh@CourseShorthand: Ihre #{csh}-Abgabe wurde korrigiert
|
||||
MailSubmissionRatedIntro courseName@Text termDesc@Text: Ihre Abgabe im Kurs #{courseName} (#{termDesc}) wurde korrigiert.
|
||||
AchievedOf achieved@Points possible@Points: #{achieved} von #{possible}
|
||||
Passed: Bestanden
|
||||
NotPassed: Nicht bestanden
|
||||
|
||||
#userAuthModeUpdate.hs + templates
|
||||
MailSubjectUserAuthModeUpdate: Ihr Uni2work-Login
|
||||
UserAuthModePWHashChangedToLDAP: Sie können sich nun mit Ihrer Campus-Kennung in Uni2work einloggen
|
||||
UserAuthModeLDAPChangedToPWHash: Sie können sich nun mit einer Uni2work-internen Kennung in Uni2work einloggen
|
||||
AuthPWHashTip: Sie müssen nun das mit "Uni2work-Login" beschriftete Login-Formular verwenden. Stellen Sie bitte sicher, dass Sie ein Passwort gesetzt haben, bevor Sie versuchen sich anzumelden.
|
||||
PasswordResetEmailIncoming: Einen Link um ihr Passwort zu setzen bzw. zu ändern bekommen Sie, aus Sicherheitsgründen, in einer separaten E-Mail.
|
||||
|
||||
#userRightsUpdate.hs + templates
|
||||
MailSubjectUserRightsUpdate name@Text: Berechtigungen für #{name} aktualisiert
|
||||
MailSubjectUserSystemFunctionsUpdate name@Text: Berechtigungen für #{name} aktualisiert
|
||||
MailUserRightsIntro name@Text email@UserEmail: #{name} <#{email}> hat folgende Uni2work Berechtigungen:
|
||||
MailNoLecturerRights: Sie haben derzeit keine Dozent:innen-Rechte.
|
||||
MailLecturerRights n@Int: Als Dozent:in dürfen Sie Veranstaltungen innerhalb #{pluralDE n "Ihres Instituts" "Ihrer Institute"} anlegen.
|
||||
MailUserSystemFunctionsIntro name@Text email@UserEmail: #{name} <#{email}> hat folgende Uni2work nicht-institutsbezogene Berechtigungen:
|
||||
MailUserSystemFunctionsNoFunctions: Keine
|
||||
|
||||
#utils.hs + templates
|
||||
MailEditNotifications: Benachrichtigungen ein-/ausschalten
|
||||
@ -0,0 +1,143 @@
|
||||
#allocation.hs + templates in scope
|
||||
MailSubjectAllocationStaffRegister allocationSchool allocation: You can now register courses for the central allocation #{allocationSchool}: “#{allocation}”
|
||||
MailSubjectAllocationStaffRegisterMultiple n: You can now register courses for #{n} central allocations
|
||||
MailSubjectAllocationRegister allocationSchool allocation: Applications can now be made for courses of the central allocation #{allocationSchool}: “#{allocation}”
|
||||
MailSubjectAllocationRegisterMultiple n: Applications can now be made for courses of #{n} central allocations
|
||||
MailSubjectAllocationAllocation allocationSchool allocation: You can now rate applications for your courses that participate in the central allocation #{allocationSchool}: “#{allocation}”
|
||||
MailSubjectAllocationAllocationMultiple n: You can now rate applications for your courses that participate in #{n} central allocations
|
||||
MailSubjectAllocationUnratedApplications allocationSchool allocation: There are unrated applications for you courses participating in the central allocation #{allocationSchool}: “#{allocation}”
|
||||
MailSubjectAllocationUnratedApplicationsMultiple n: There are unrated applications for your courses participating in #{n} central allocations
|
||||
MailSubjectAllocationNewCourse allocation: A new course was added to the central allocation “#{allocation}”
|
||||
AllocationResultLecturer csh count count2: #{count} #{pluralEN count "participant" "participants"} (of #{count2}) for #{csh}
|
||||
AllocationResultLecturerAll csh count: #{count} #{pluralEN count "participant" "participants"} for #{csh}
|
||||
AllocationResultLecturerNone csh: No participants for #{csh}
|
||||
MailAllocationStaffRegisterIntroMultiple n: You can now register courses for the following #{n} central allocations:
|
||||
MailAllocationStaffRegisterNewCourse: You can create new courses in Uni2work on the site listed below. While doing so you can specify that the course should participate in a central allocation.
|
||||
MailAllocationStaffRegisterDeadline n deadline: Please consider that all courses, that are to participate in #{pluralEN n "this central allocation" "these central allocations"}, must be registered before #{deadline}.
|
||||
MailAllocationStaffRegisterDeadlineMultiple: Please consider that alle courses, that are to participate in these central allocations, must be registered before the ends of their respective course registration periods (see below).
|
||||
MailAllocationStaffRegisterDeadlineSingle deadline: Course Registration period ends on #{deadline}
|
||||
MailAllocationStaffRegisterDeadlineSingleNothing: Currently no end of course registration period configured
|
||||
MailAllocationSchoolAndName allocationSchool allocation: #{allocationSchool}: “#{allocation}”
|
||||
CourseNew: Create new course
|
||||
MailAllocationRegisterIntroMultiple n: Applications can now be made for courses of the following #{n} central allocations:
|
||||
MailAllocationRegister n: Applications can now be made for each of the courses participating in the central #{pluralEN n "allocation" "allocations"} on the #{pluralEN n "page" "pages"} listed below.
|
||||
MailAllocationRegisterDeadline deadline: Please consider that all applications have to be made before #{deadline}.
|
||||
MailAllocationRegisterDeadlineMultiple: Please consider that all applications for courses participating in central allocations have to be made before the ends of their respective application periods (see below).
|
||||
MailAllocationRegisterDeadlineSingle deadline: Application periods ends on #{deadline}
|
||||
MailAllocationRegisterDeadlineSingleNothing: Currently no end of application period configured
|
||||
MailAllocationAllocationIntroMultiple n: You can now rate applications for your courses that participate in #{n} central allocations:
|
||||
MailAllocationAllocation n: You can now rate applications made in the context of the central #{pluralEN n "allocation" "allocations"} for your courses on the pages listed below. Ratings made will have an effect on the allocation.
|
||||
MailAllocationApplicationsMayChange deadline: Please consider that applicants may change or delete their applications until #{deadline}. If an application was rated before it was changed it needs to be rated again.
|
||||
MailAllocationApplicationsRegisterDeadline deadline: Application period ends on #{deadline}
|
||||
MailAllocationApplicationsRegisterDeadlineNothing: Currently no end of application period configured
|
||||
MailAllocationApplicationsMayChangeMultiple: Please consider that applicants may change or delete their applications until the end of the respective central allocation's application period. If an application was rated before it was changed it needs to be rated again.
|
||||
MailAllocationAllocationDeadline deadline: Please consider that all ratings have to be made before #{deadline}.
|
||||
MailAllocationApplicationsAllocationDeadline deadline: Rating period ends on #{deadline}
|
||||
MailAllocationApplicationsAllocationDeadlineNothing: Currently no end of rating period configured
|
||||
MailAllocationAllocationDeadlineMultiple: Please consider that all ratings have to be made before the end of the respective rating period (see below).
|
||||
MailAllocationUnratedApplicationsIntroMultiple n: There are unrated applications for your courses participating in #{n} central allocations:
|
||||
MailAllocationUnratedApplications n: For there courses listed below, there exist applications made in the context of #{pluralEN n "the central allocation" "one of the central allocations"} which have either not yet been rated or which have changed since they were rated.
|
||||
MailAllocationUnratedApplicationsCount i: #{i} #{pluralDE i "application" "applications"}
|
||||
MailSubjectAllocationResults allocation: Placements have been made for the central allocation “#{allocation}”
|
||||
AllocationResultsLecturer: In the course of the central allocations placements have been made as follows:
|
||||
AllocationResultsLecturerSubstituteCoursesWarning: Please configure a deadline up to which you are able to accept substitute registrations for the following courses as soon as possible:
|
||||
AllocationResultsStudent: You have been placed in:
|
||||
AllocationNoResultsStudent: Unfortunately you were not placed in any courses.
|
||||
AllocationResultStudent csh: You were placed in #{csh}.
|
||||
AllocationResultsTip: The following information reflect the current state of the allocation and are subject to change (e.g. when handling succession). You will be informed separately if any future changes concern you.
|
||||
AllocationResultsStudentTip: Listed below are placements in courses which you have received due to the mentioned central allocation and for which you have not left the respective course or have been deregistered. Thus placements you have been informed of already may be listed again.
|
||||
AllocationResultStudentRegistrationTip: You were enrolled in the course mentioned above in Uni2work.
|
||||
AllocationResultsStudentRegistrationTip: You were enrolled in the courses mentioned above in Uni2work.
|
||||
MailAllocationNewCourseTip: The following course was added to the central allocation:
|
||||
MailAllocationNewCourseEditApplicationsHere: You can modify your application here:
|
||||
MailAllocationNewCourseApplyHere: You can apply here:
|
||||
|
||||
#correctionsAssigned.hs + templates
|
||||
MailSubjectCorrectionsAssigned csh sheetName: You were assigned corrections for #{sheetName} of #{csh}
|
||||
MailCorrectionsAssignedIntro courseName termDesc sheetName n: You were assigned #{n} #{pluralEN n "correction" "corrections"} for #{sheetName} of #{courseName} (#{termDesc}).
|
||||
MailCorrectionsTitle: Assigned corrections
|
||||
|
||||
#correctionsNotDistributed.hs + templates
|
||||
MailSubjectSubmissionsUnassigned csh sheetName: Corrections for #{sheetName} of #{csh} could not be distributed
|
||||
MailSubmissionsUnassignedIntro n courseName termDesc sheetName: #{n} corrections for #{sheetName} of the course #{courseName} (#{termDesc}) could not be automatically distributed.
|
||||
|
||||
#courseRegistered.hs + templates
|
||||
MailSubjectCourseRegistered csh: You were enrolled for #{csh}
|
||||
MailSubjectCourseRegisteredOther displayName csh: #{displayName} was enrolled for #{csh}
|
||||
MailCourseRegisteredIntro courseName termDesc: You were enrolled for the course “#{courseName}” (#{termDesc})
|
||||
MailCourseRegisteredIntroOther displayName courseName termDesc: #{displayName} was enrolled for the course “#{courseName}” (#{termDesc}).
|
||||
|
||||
#examActive.hs + templates
|
||||
MailSubjectExamRegistrationActive csh examn: Registration is now allowed for #{examn} of #{csh}
|
||||
MailExamRegistrationActiveIntro courseName termDesc examn: You may now register for #{examn} of the course #{courseName} (#{termDesc}).
|
||||
MailSubjectExamRegistrationSoonInactive csh examn: The registration period for #{examn} of #{csh} ends shortly
|
||||
MailExamRegistrationSoonInactiveIntro courseName termDesc examn: Soon you will no longer be allowed to register for #{examn} of #{courseName} (#{termDesc}).
|
||||
MailSubjectExamDeregistrationSoonInactive csh examn: Deregistration for #{examn} in #{csh} ends shortly
|
||||
MailExamDeregistrationSoonInactiveIntro courseName termDesc examn: Soon you will no longer be allowed to deregister from #{examn} of #{courseName} (#{termDesc}).
|
||||
|
||||
#examOffice.hs + templates
|
||||
MailSubjectExamOfficeExamResults coursen examn: Results for #{examn} of #{coursen} are now available
|
||||
MailExamOfficeExamResultsIntro courseName termDesc examn: A course administrator has made the results for #{examn} of the course #{courseName} (#{termDesc}) available.
|
||||
MailSubjectExamOfficeExamResultsChanged coursen examn: Results for #{examn} of #{coursen} were changed
|
||||
MailExamOfficeExamResultsChangedIntro courseName termDesc examn: A course administrator has changed exam results for #{examn} of the course #{courseName} (#{termDesc}).
|
||||
MailSubjectExamOfficeExternalExamResults coursen@CourseName examn@ExamName: Results for #{examn} in #{coursen}
|
||||
MailExamOfficeExternalExamResultsIntro coursen@CourseName termDesc@Text examn@ExamName: A course administrator has changed or initially made available the results for #{examn} of the course {coursen} (#{termDesc}).
|
||||
|
||||
#examOffice.hs + templates
|
||||
MailSubjectExamResult csh examn: Results for #{examn} in #{csh} are now available
|
||||
MailExamResultIntro courseName termDesc examn: You may now view your result for #{examn} of the course #{courseName} (#{termDesc}).
|
||||
|
||||
#sheetActive.hs + templates
|
||||
MailSubjectSheetActive csh sheetName: #{sheetName} in #{csh} was released
|
||||
MailSheetActiveIntro courseName termDesc sheetName: You may now download #{sheetName} for #{courseName} (#{termDesc}).
|
||||
MailSubjectSheetHint csh sheetName: Hints for #{sheetName} in #{csh} have been released
|
||||
MailSheetHintIntro courseName termDesc sheetName: You may now download the hints for #{sheetName} in #{courseName} (#{termDesc}).
|
||||
MailSubjectSheetSolution csh sheetName: Solutions for #{sheetName} in #{csh} have been released
|
||||
MailSheetSolutionIntro courseName termDesc sheetName: You may now download the solutions for #{sheetName} in #{courseName} (#{termDesc}).
|
||||
|
||||
#sheetInactive.hs + templates
|
||||
MailSubjectSheetSoonInactive csh sheetName: The submission period for #{sheetName} of #{csh} ends shortly
|
||||
MailSheetSoonInactiveIntro courseName termDesc sheetName: Soon you will no longer be allowed to submit for #{sheetName} of the course #{courseName} (#{termDesc}).
|
||||
MailSubjectSheetInactive csh sheetName: The submission period for #{sheetName} of #{csh} has ended
|
||||
MailSheetInactiveIntro courseName termDesc sheetName n num: The submission period for #{sheetName} of the course #{courseName} (#{termDesc}) has ended. #{noneOneMoreEN num "" "One participant" (toMessage num <> " participants")}#{noneOneMoreEN n "" "" (" made " <> toMessage num)}#{noneOneMoreEN n "There were no submissions" " made one submission" " submissions"}.
|
||||
MailSheetInactiveIntroNoUserSubmission courseName termDesc sheetName n num: The submission period for #{sheetName} of the course #{courseName} (#{termDesc}) has ended. #{noneOneMoreEN num "" "One participant already" (toMessage num <> " participants already")}#{noneOneMoreEN n "" "" (" made " <> toMessage num)}#{noneOneMoreEN n "" " made one submission" " submissions"}.
|
||||
MailSheetInactivePseudonymsCount n: The number of submissions above accounts only for the submissions already made directly in Uni2work. #{n} #{pluralEN n "pseudonym was" "pseudonyms were"} generated.
|
||||
MailSheetInactiveParticipantsCount n: There #{pluralEN n "is" "are"} currently #{n} #{pluralEN n "participant" "participants"} registered for the course.
|
||||
|
||||
#submissionEdited.hs +templates
|
||||
MailSubjectSubmissionEdited csh shn: Your submisson for #{shn} in #{csh} was edited
|
||||
MailSubmissionEditedIntro coursen shn termDesc displayName: #{displayName} edited your submission for #{shn} in #{coursen} (#{termDesc}).
|
||||
MailSubjectSubmissionUserCreated csh shn: You were added to a submission for #{shn} in #{csh}
|
||||
MailSubjectSubmissionUserCreatedOther displayName csh shn: An user was added to a submission for #{shn} in #{csh}
|
||||
MailSubmissionUserCreatedIntro coursen shn termDesc: You were added to a submission for #{shn} in #{coursen} (#{termDesc}).
|
||||
MailSubmissionUserCreatedOtherIntro displayName coursen shn termDesc: #{displayName} was added as to a submission for #{shn} in #{coursen} (#{termDesc}).
|
||||
MailSubjectSubmissionUserDeleted csh shn: You were removed from your submission for #{shn} in #{csh}
|
||||
MailSubjectSubmissionUserDeletedOther displayName csh shn: An user was removed from your submission for #{shn} in #{csh}
|
||||
MailSubmissionUserDeletedIntro coursen shn termDesc: You were removed from your submission for #{shn} in #{coursen} (#{termDesc}).
|
||||
MailSubmissionUserDeletedOtherIntro displayName coursen shn termDesc: #{displayName} was removed from your submission for #{shn} in #{coursen} (#{termDesc}).
|
||||
|
||||
#submissionRated.hs + templates
|
||||
MailSubjectSubmissionRated csh: Your #{csh}-submission was marked
|
||||
MailSubmissionRatedIntro courseName termDesc: Your submission for #{courseName} (#{termDesc}) was marked.
|
||||
AchievedOf achieved possible: #{achieved} of #{possible}
|
||||
Passed: Passed
|
||||
NotPassed: Failed
|
||||
|
||||
#userAuthModeUpdate.hs + templates
|
||||
MailSubjectUserAuthModeUpdate: Your Uni2work login
|
||||
UserAuthModePWHashChangedToLDAP: You can now log in to Uni2work using your Campus-account
|
||||
UserAuthModeLDAPChangedToPWHash: You can now log in to Uni2work using your Uni2work-internal account
|
||||
AuthPWHashTip: You now need to use the login form labeled "Uni2work login". Please ensure that you have already set a password when you try to log in.
|
||||
PasswordResetEmailIncoming: For security reasons you will receive a link to the page on which you can set and later change your password in a separate email.
|
||||
|
||||
#userRightsUpdate.hs + templates
|
||||
MailSubjectUserRightsUpdate name: Permissions for #{name} changed
|
||||
MailSubjectUserSystemFunctionsUpdate name: Permissions for #{name} changed
|
||||
MailUserRightsIntro name email: #{name} <#{email}> now has the following permissions:
|
||||
MailNoLecturerRights: You don't currently have lecturer permissions for any department.
|
||||
MailLecturerRights n: As a lecturer you may create new courses within your #{pluralEN n "department" "departments"}.
|
||||
MailUserSystemFunctionsIntro name email: #{name} <#{email}> now has the following, not school restricted, permissions:
|
||||
MailUserSystemFunctionsNoFunctions: None
|
||||
|
||||
#utils.hs + templates
|
||||
MailEditNotifications: Enable/Disable notifications
|
||||
@ -84,4 +84,27 @@ BtnResetTokens: Authorisierungs-Tokens invalidieren
|
||||
TokensLastReset: Tokens zuletzt invalidiert
|
||||
ProfileNever: Nie
|
||||
ProfileLastLdapSynchronisation: Letzte LDAP-Synchronisation
|
||||
ProfileLdapPrimaryKey: LDAP-Primärschlüssel
|
||||
ProfileLdapPrimaryKey: LDAP-Primärschlüssel
|
||||
|
||||
NotificationSettingsUpdate: Benachrichtigungs-Einstellungen erfolgreich gespeichert
|
||||
NotificationSettingsHeading displayName@Text: Benachrichtigungs-Einstellungen für #{displayName}
|
||||
UserDisplayEmailChanged: Öffentliche E-Mail-Adresse erfolgreich gesetzt
|
||||
FavouriteVisited: Kürzlich besucht
|
||||
FavouriteParticipant: Ihre Kurse
|
||||
FavouriteManual: Favoriten
|
||||
FavouriteCurrent: Aktueller Kurs
|
||||
FavouritesPlaceholder: Anzahl Favoriten
|
||||
FavouritesNotNatural: Anzahl der Favoriten muss eine natürliche Zahl sein!
|
||||
FavouritesSemestersPlaceholder: Anzahl Semester
|
||||
FavouritesSemestersNotNatural: Anzahl der Favoriten-Semester muss eine natürliche Zahl sein!
|
||||
FormAllocationNotifications: Benachrichtigungen für neue Zentralanmeldungskurse
|
||||
FormAllocationNotificationsTip: Wollen Sie eine Benachrichtigung per E-Mail erhalten wenn ein neuer Kurs zur Zentralanmeldung eingetragen wird? „Ja“ und „Nein“ überschreiben die entsprechende systemweite Einstellung unter "Benachrichtigungen"
|
||||
SettingsUpdate: Einstellungen erfolgreich gespeichert
|
||||
TokensResetSuccess: Authorisierungs-Tokens invalidiert
|
||||
ProfileTitle: Benutzereinstellungen
|
||||
HeadingProfileData: Persönliche Daten
|
||||
ProfileRegistered: Angemeldet
|
||||
LastEditByUser: Ihre letzte Bearbeitung
|
||||
SubmissionGroupName: Gruppenname
|
||||
TitleChangeUserDisplayEmail: Öffentliche E-Mail-Adresse setzen
|
||||
LanguageChanged: Sprache erfolgreich geändert
|
||||
|
||||
@ -84,4 +84,27 @@ BtnResetTokens: Invalidate tokens
|
||||
TokensLastReset: Tokens last reset
|
||||
ProfileNever: Never
|
||||
ProfileLastLdapSynchronisation: Last LDAP synchronisation
|
||||
ProfileLdapPrimaryKey: LDAP primary key
|
||||
ProfileLdapPrimaryKey: LDAP primary key
|
||||
|
||||
NotificationSettingsUpdate: Successfully updated notification settings
|
||||
NotificationSettingsHeading displayName: Notification settings for #{displayName}
|
||||
UserDisplayEmailChanged: Successfully set display email
|
||||
FavouriteVisited: Visited
|
||||
FavouriteParticipant: Your courses
|
||||
FavouriteManual: Favourites
|
||||
FavouriteCurrent: Current course
|
||||
FavouritesPlaceholder: Number of favourites
|
||||
FavouritesNotNatural: Number of favourites must be a natural number!
|
||||
FavouritesSemestersPlaceholder: Number of semesters
|
||||
FavouritesSemestersNotNatural: Maximum number of semesters in favourites bar must be a natural number!
|
||||
FormAllocationNotifications: Notifications for new central allocation courses
|
||||
FormAllocationNotificationsTip: Do you want to receive a notification if a new course is added to the central allocation? “Yes” and “No” override the system wide setting under “Notifications”
|
||||
SettingsUpdate: Successfully updated settings
|
||||
TokensResetSuccess: Successfully invalidated all authorisation tokens
|
||||
ProfileTitle: Settings
|
||||
HeadingProfileData: Personal information
|
||||
ProfileRegistered: Registered
|
||||
LastEditByUser: Your last edit
|
||||
SubmissionGroupName: Group name
|
||||
TitleChangeUserDisplayEmail: Set display email
|
||||
LanguageChanged: Language changed successfully
|
||||
|
||||
@ -0,0 +1,40 @@
|
||||
SystemMessageNewsOnly: Nur auf "Aktuelles"
|
||||
SystemMessageRecordChanged: Signifikante Änderung
|
||||
SystemMessageRecordChangedTip: Soll der "zuletzt geändert"-Zeitstempel gesetzt werden? Nachrichten werden auf "Aktuelles" danach sortiert und bei signifikanten Änderungen erneut als Benachrichtigung unten rechts angezeigt.
|
||||
SystemMessageUnhide: "Verstecken" ignorieren
|
||||
SystemMessageUnhideTip: Soll die Nachricht für Benutzer:innen, die sie aktiv versteckt haben, erneut angezeigt werden?
|
||||
SystemMessageCreated: Erstellt
|
||||
SystemMessageLastChanged: Zuletzt geändert
|
||||
SystemMessageLastUnhide: Zuletzt un-versteckt
|
||||
SystemMessageFrom: Sichtbar ab
|
||||
SystemMessageTo: Sichtbar bis
|
||||
SystemMessageAuthenticatedOnly: Nur angemeldet
|
||||
SystemMessageSeverity: Schwere
|
||||
SystemMessagePriority: Priorität
|
||||
SystemMessagePriorityNegative: Priorität darf nicht negativ sein
|
||||
SystemMessageId: Id
|
||||
SystemMessageSummaryContent: Zusammenfassung / Inhalt
|
||||
SystemMessageSummary: Zusammenfassung
|
||||
SystemMessageContent: Inhalt
|
||||
SystemMessageLanguage: Sprache
|
||||
|
||||
SystemMessageDelete: Löschen
|
||||
SystemMessageActivate: Sichtbar schalten
|
||||
SystemMessageDeactivate: Unsichtbar schalten
|
||||
SystemMessageTimestamp: Zeitpunkt
|
||||
|
||||
SystemMessagesDeleted: System-Nachrichten gelöscht:
|
||||
SystemMessagesActivated: Aktivierungszeitpunkt folgender System-Nachrichten gesetzt:
|
||||
SystemMessagesDeactivated: Deaktivierungszeitpunkt folgender System-Nachrichten gesetzt:
|
||||
SystemMessageEmptySelection: Keine System-Nachrichten ausgewählt
|
||||
SystemMessageAdded sysMsgId@CryptoUUIDSystemMessage: System-Nachricht hinzugefügt: #{toPathPiece sysMsgId}
|
||||
SystemMessageEdit: Statusmeldung anpassen
|
||||
SystemMessageEditTranslations: Übersetzungen anpassen
|
||||
SystemMessageAddTranslation: Übersetzung hinzufügen
|
||||
|
||||
SystemMessageEditSuccess: Statusmeldung angepasst.
|
||||
SystemMessageAddTranslationSuccess: Übersetzung hinzugefügt.
|
||||
SystemMessageEditTranslationSuccess: Übersetzung angepasst.
|
||||
SystemMessageDeleteTranslationSuccess: Übersetzung entfernt.
|
||||
|
||||
RFC1766: RFC1766-Sprachcode
|
||||
@ -0,0 +1,40 @@
|
||||
SystemMessageNewsOnly: Only on "News"
|
||||
SystemMessageRecordChanged: Signifcant change
|
||||
SystemMessageRecordChangedTip: Should the "last changed"-timestamp be adjusted? News are sorted by "last changed" on "News". After a significant change news items are displayed once again as a popup in the bottom right.
|
||||
SystemMessageUnhide: Ignore previously hidden
|
||||
SystemMessageUnhideTip: Should the news item be display again for users that have actively hidden it?
|
||||
SystemMessageCreated: Created
|
||||
SystemMessageLastChanged: Last changed
|
||||
SystemMessageLastUnhide: Last unhidden
|
||||
SystemMessageFrom: Visible from
|
||||
SystemMessageTo: Visible to
|
||||
SystemMessageAuthenticatedOnly: Only logged in users
|
||||
SystemMessageSeverity: Severity
|
||||
SystemMessagePriority: Priority
|
||||
SystemMessagePriorityNegative: Priority may not be negative
|
||||
SystemMessageId: Id
|
||||
SystemMessageSummaryContent: Summary / Content
|
||||
SystemMessageSummary: Summary
|
||||
SystemMessageContent: Content
|
||||
SystemMessageLanguage: Language
|
||||
|
||||
SystemMessageDelete: Delete
|
||||
SystemMessageActivate: Set to be visible
|
||||
SystemMessageDeactivate: Set to be invisible
|
||||
SystemMessageTimestamp: Timestamp
|
||||
|
||||
SystemMessagesDeleted: System messages deleted:
|
||||
SystemMessagesActivated: System messages set to become visible at:
|
||||
SystemMessagesDeactivated: System messages set to become invisable at:
|
||||
SystemMessageEmptySelection: No system messages selected
|
||||
SystemMessageAdded sysMsgId: System message added: #{toPathPiece sysMsgId}
|
||||
SystemMessageEdit: Edit system message
|
||||
SystemMessageEditTranslations: Edit translations
|
||||
SystemMessageAddTranslation: Add translation
|
||||
|
||||
SystemMessageEditSuccess: Successfully edited system message.
|
||||
SystemMessageAddTranslationSuccess: Successfully added translation.
|
||||
SystemMessageEditTranslationSuccess: Successfully edited translation.
|
||||
SystemMessageDeleteTranslationSuccess: Successfully deleted translation.
|
||||
|
||||
RFC1766: RFC1766 language code
|
||||
@ -0,0 +1,29 @@
|
||||
TermStartMustMatchName: Jahreszahl im Namenskürzel stimmt nicht mit Semesterbeginn überein.
|
||||
TermEndMustBeAfterStart: Semester darf nicht enden, bevor es beginnt.
|
||||
TermLectureEndMustBeAfterStart: Vorlesungszeit muss vor ihrem Ende anfgangen.
|
||||
TermStartMustBeBeforeLectureStart: Semester muss vor der Vorlesungszeit beginnen.
|
||||
TermEndMustBeAfterLectureEnd: Vorlesungszeit muss vor dem Semester enden.
|
||||
TermShort: Kürzel
|
||||
TermCourseCount: Kurse
|
||||
TermStart: Semesteranfang
|
||||
TermEnd: Semesterende
|
||||
LectureStart: Beginn Vorlesungen
|
||||
TermEdited tid@TermId: Semester #{tid} erfolgreich editiert.
|
||||
TermNewTitle: Semester editieren/anlegen.
|
||||
InvalidInput: Eingaben bitte korrigieren.
|
||||
Term: Semester
|
||||
TermPlaceholder: W/S + vierstellige Jahreszahl
|
||||
TermStartDay: Erster Tag
|
||||
TermStartDayTooltip: Üblicherweise immer 1. April oder 1. Oktober
|
||||
TermEndDay: Letzter Tag
|
||||
TermEndDayTooltip: Üblicherweise immer 30. September oder 31. März
|
||||
TermHolidays: Feiertage
|
||||
TermHolidayPlaceholder: Feiertag
|
||||
TermHolidayMissing: Feiertag wird benötigt
|
||||
TermLectureStart: Beginn Vorlesungen
|
||||
TermLectureEnd: Ende Vorlesungen
|
||||
TermLectureEndTooltip: Meistens dauer das Sommersemester 14 Wochen und das Wintersemester 15 Wochen.
|
||||
TermActive: Aktiv
|
||||
NumCourses num@Int64: #{num} #{pluralDE num "Kurs" "Kurse"}
|
||||
TermsHeading: Semesterübersicht
|
||||
TermEditHeading: Semester editieren/anlegen
|
||||
29
messages/uniworx/uniworx_new/categories/term/en-eu.msg
Normal file
29
messages/uniworx/uniworx_new/categories/term/en-eu.msg
Normal file
@ -0,0 +1,29 @@
|
||||
TermStartMustMatchName: Shorthand number does not match semester start.
|
||||
TermEndMustBeAfterStart: Semester end may not be before semester start.
|
||||
TermLectureEndMustBeAfterStart: Lecture start may not be after lecture end.
|
||||
TermStartMustBeBeforeLectureStart: Semester start must be before lecture start.
|
||||
TermEndMustBeAfterLectureEnd: Lecture end must be before semester end.
|
||||
TermShort: Shorthand
|
||||
TermCourseCount: Courses
|
||||
TermStart: Semester start
|
||||
TermEnd: Semester end
|
||||
LectureStart: Lectures start
|
||||
TermEdited tid: Successfully edited semester #{tid}
|
||||
TermNewTitle: Edit/create semester
|
||||
InvalidInput: Invalid input
|
||||
Term: Semester
|
||||
TermPlaceholder: (W|S)<four digit year>
|
||||
TermStartDay: Starting day
|
||||
TermStartDayTooltip: Usually 1st of April or 1st of October
|
||||
TermEndDay: Last day
|
||||
TermEndDayTooltip: Usually 30th of September or 31st of March
|
||||
TermHolidays: Legal holidays
|
||||
TermHolidayPlaceholder: Legal holiday
|
||||
TermHolidayMissing: Holiday is required
|
||||
TermLectureStart: Lectures start
|
||||
TermLectureEnd: Lectures end
|
||||
TermLectureEndTooltip: Summer semesters are usually 14 weeks; winter semesters 15
|
||||
TermActive: Active
|
||||
NumCourses num: #{num} #{pluralEN num "course" "courses"}
|
||||
TermsHeading: Semesters
|
||||
TermEditHeading: Edit semester
|
||||
@ -12,3 +12,56 @@ AdminUserAssimilate: Benutzer assimilieren
|
||||
UserAdded: Benutzer erfolgreich angelegt
|
||||
UserCollision: Benutzer konnte wegen Eindeutigkeit nicht angelegt werden
|
||||
HeadingUserAdd: Benutzer:in anlegen
|
||||
|
||||
LdapSynced: LDAP-Synchronisiert
|
||||
LdapSyncedBefore: Letzte LDAP-Synchronisation vor
|
||||
UserSystemFunctions: Systemweite Rollen
|
||||
UserSystemFunctionsSaved: Systemweite Rollen gespeichert
|
||||
UserSystemFunctionsNotChanged: Es wurden keine systemweiten Rollen angepasst
|
||||
AuthPWHash pwHash@Text: Uni2work
|
||||
AuthPWHashAlreadyConfigured: Nutzer:in meldet sich bereits per Uni2work-Kennung an
|
||||
AuthPWHashConfigured: Nutzer:in meldet sich nun per Uni2work-Kennung an
|
||||
UsersCourseSchool: Institut
|
||||
ActionNoUsersSelected: Keine Benutzer:innen ausgewählt
|
||||
SynchroniseLdapUserQueued n@Int: LDAP-Synchronisation von #{n} #{pluralDE n "Benutzer:in" "Benutzer:innen"} angestoßen
|
||||
SynchroniseLdapAllUsersQueued: LDAP-Synchronisation von allen Benutzer:innen angestoßen
|
||||
UserListTitle: Komprehensive Benutzerliste
|
||||
AccessRightsSaved: Berechtigungen erfolgreich verändert
|
||||
AccessRightsNotChanged: Berechtigungen wurden nicht verändert
|
||||
AuthLDAPLookupFailed: Nutzer:in konnte aufgrund eines LDAP-Fehlers nicht nachgeschlagen werden
|
||||
AuthLDAPInvalidLookup: Bestehender Nutzer/Bestehende Nutzerin konnte nicht eindeutig einem LDAP-Eintrag zugeordnet werden
|
||||
AuthLDAPAlreadyConfigured: Nutzer:in meldet sich bereits per Campus-Kennung in Uni2work an
|
||||
AuthLDAPConfigured: Nutzer:in meldet sich nun per Campus-Kennung in Uni2work an
|
||||
AuthLDAP: Campus
|
||||
PasswordResetQueued: Link zum Passwort-Zurücksetzen versandt
|
||||
UserAssimilateUser: Benutzer:in
|
||||
AssimilateUserNotFound: E-Mail Adresse konnte keinem Benutzer/keiner Benutzerin zugeordnet werden
|
||||
AssimilateUserHaveError: Beim Assimilieren ist ein Fehler aufgetreten
|
||||
AssimilateUserHaveWarnings: Beim Assimilieren wurden Warnungen ausgegeben
|
||||
AssimilateUserSuccess: Benutzer:in erfolgreich assimiliert
|
||||
AdminUserHeadingFor: Benutzerprofil für
|
||||
UnauthorizedPasswordResetToken: Dieses Authorisierungs-Token kann nicht mehr zum Passwort ändern benutzt werden
|
||||
CurrentPassword: Aktuelles Passwort
|
||||
CurrentPasswordInvalid: Aktuelles Passwort ist inkorrekt
|
||||
NewPassword: Neues Passwort
|
||||
NewPasswordRepeat: Wiederholung
|
||||
PasswordRepeatInvalid: Wiederholung stimmt nicht mit neuem Passwort überein
|
||||
UserPasswordHeadingFor: Passwort ändern für
|
||||
PasswordChangedSuccess: Passwort erfolgreich geändert
|
||||
MailSubjectSchoolFunctionInvitation school@SchoolName renderedFunction@Text: #{renderedFunction}-Einladung für „#{school}“
|
||||
MailSchoolFunctionInviteHeading school@SchoolName renderedFunction@Text: #{renderedFunction}-Einladung für „#{school}“
|
||||
SchoolFunctionInviteExplanation renderedFunction@Text: Sie wurden eingeladen, als #{renderedFunction} für ein Institut zu wirken. Sie erhalten, nachdem Sie die Einladung annehmen, erweiterte Rechte innerhalb des Instituts.
|
||||
SchoolFunctionInvitationAccepted school@SchoolName renderedFunction@Text: #{renderedFunction}-Einladung als Dozent:in für „#{school}“ angenommen
|
||||
FunctionaryInviteFunction: Funktion
|
||||
FunctionaryInviteSchool: Institut
|
||||
FunctionaryInviteField: Einzuladende E-Mail-Adressen
|
||||
FunctionaryInviteHeading: Institut-Funktionäre hinzufügen
|
||||
FunctionariesInvited n@Int: #{n} #{pluralDE n "Funktionär:in" "Funktionäre"} per E-Mail eingeladen
|
||||
FunctionariesAdded n@Int: #{n} #{pluralDE n "Funktionär:in" "Funktionäre"} eingetragen
|
||||
AdminUserRightsHeading: Benutzerrechte
|
||||
AdminUserAuthHeading: Benutzer-Authentifizierung
|
||||
UserAccountDeleted name@Text: Konto für #{name} wurde gelöscht!
|
||||
UserSubmissionsDeleted n@Int: #{tshow n} Abgaben wurden unwiderruflich gelöscht.
|
||||
UserGroupSubmissionsKept n@Int: #{tshow n} Gruppenabgaben verbleiben in der Datenbank, aber die Zuordnung zum Benutzer/zur Benutzerin wurde gelöscht. Gruppenabgaben können dadurch zu Einzelabgaben werden, die dann mit dem letzten Benutzer/der letzten Benutzerin gelöscht werden.
|
||||
UserSubmissionGroupsDeleted count@Int64: #{tshow count} benannte Abgabengruppen wurden gelöscht, da sie ohne den Nutzer/die Nutzerin leer wären.
|
||||
AuthMode: Authentifizierungsmodus
|
||||
@ -12,3 +12,56 @@ AdminUserAssimilate: Assimilate user
|
||||
UserAdded: Successfully added user
|
||||
UserCollision: Could not create user due to uniqueness constraint
|
||||
HeadingUserAdd: Add user
|
||||
|
||||
LdapSynced: LDAP-synchronised
|
||||
LdapSyncedBefore: Last LDAP-synchronisation before
|
||||
UserSystemFunctions: System wide roles
|
||||
UserSystemFunctionsSaved: Successfully saved system wide roles
|
||||
UserSystemFunctionsNotChanged: No system wide roles were changed
|
||||
AuthPWHash pwHash: Uni2work
|
||||
AuthPWHashAlreadyConfigured: User already logs in using their Uni2work account
|
||||
AuthPWHashConfigured: User now logs in using their Uni2work account
|
||||
UsersCourseSchool: Department
|
||||
ActionNoUsersSelected: No users selected
|
||||
SynchroniseLdapUserQueued n: Triggered LDAP synchronisation of #{n} #{pluralEN n "user" "users"}.
|
||||
SynchroniseLdapAllUsersQueued: Triggered LDAP synchronisation of all users
|
||||
UserListTitle: Comprehensive list of users
|
||||
AccessRightsSaved: Successfully updated permissions
|
||||
AccessRightsNotChanged: Permissions left unchanged
|
||||
AuthLDAPLookupFailed: User could not be looked up due to a LDAP error
|
||||
AuthLDAPInvalidLookup: Existing user could not be uniquely matched with a LDAP entry
|
||||
AuthLDAPAlreadyConfigured: User already logs in using their campus account
|
||||
AuthLDAPConfigured: User now logs in using their campus account
|
||||
AuthLDAP: Campus
|
||||
PasswordResetQueued: Sent link to reset password
|
||||
UserAssimilateUser: User
|
||||
AssimilateUserNotFound: Email could not be resolved to an user
|
||||
AssimilateUserHaveError: An error occurred during assimilation
|
||||
AssimilateUserHaveWarnings: Warnings were ermitted during assimilation
|
||||
AssimilateUserSuccess: Successfully assimilated user
|
||||
AdminUserHeadingFor: Profile of
|
||||
UnauthorizedPasswordResetToken: This authorisation-token may no longer be used to change passwords
|
||||
CurrentPassword: Current password
|
||||
CurrentPasswordInvalid: Current password is incorrect
|
||||
NewPassword: New password
|
||||
NewPasswordRepeat: New password (again)
|
||||
PasswordRepeatInvalid: New passwords do not match
|
||||
UserPasswordHeadingFor: Change password for
|
||||
PasswordChangedSuccess: Successfully changed password
|
||||
MailSubjectSchoolFunctionInvitation school renderedFunction: Invitation to be #{renderedFunction} for “#{school}”
|
||||
MailSchoolFunctionInviteHeading school renderedFunction: Invitation to be #{renderedFunction} for “#{school}”
|
||||
SchoolFunctionInviteExplanation renderedFunction: You were invited to act as #{renderedFunction} for a department. By accepting the invitation you are granted elevated rights within the department.
|
||||
SchoolFunctionInvitationAccepted school renderedFunction: Successfully accepted invitation to be #{renderedFunction} for “#{school}”
|
||||
FunctionaryInviteFunction: Function
|
||||
FunctionaryInviteSchool: Department
|
||||
FunctionaryInviteField: Email addresses to invite
|
||||
FunctionaryInviteHeading: Add department functionaries
|
||||
FunctionariesInvited n: Invited #{n} #{pluralEN n "functionary" "functionaries"} via email
|
||||
FunctionariesAdded n: Added #{n} #{pluralEN n "functionary" "functionaries"}
|
||||
AdminUserRightsHeading: User permissions
|
||||
AdminUserAuthHeading: User authentication
|
||||
UserAccountDeleted name: User account for #{name} was deleted!
|
||||
UserSubmissionsDeleted n: #{tshow n} #{pluralEN n "submission was" "submissions were"} permanently deleted.
|
||||
UserGroupSubmissionsKept n: #{tshow n} #{pluralEN n "group submission was" "group submissions were"} kept. They are no longer associated with the deleted user. Group submissions can thus become as if made by a single user. Such submissions are deleted together with their last user.
|
||||
UserSubmissionGroupsDeleted count: #{tshow count} #{pluralEN count "submission group was" "submission groups were"} deleted since #{pluralEN count "it" "they"} would have become empty.
|
||||
AuthMode: Authenticationmode
|
||||
|
||||
@ -53,4 +53,7 @@ TableNoFilter: Keine Einschränkung
|
||||
TableUserMatriculation: Matrikelnummer
|
||||
TableColumnStudyFeatures: Studiendaten
|
||||
TableSchoolShort: Kürzel
|
||||
TableSchoolName: Name
|
||||
TableSchoolName: Name
|
||||
TableExamRegisterFrom: Anmeldung ab
|
||||
TableExamRegisterTo: Anmeldung bis
|
||||
TableAction: Aktion
|
||||
@ -53,4 +53,7 @@ TableNoFilter: No restriction
|
||||
TableUserMatriculation: Matriculation
|
||||
TableColumnStudyFeatures: Features of study
|
||||
TableSchoolShort: Shorthand
|
||||
TableSchoolName: Name
|
||||
TableSchoolName: Name
|
||||
TableExamRegisterFrom: Register from
|
||||
TableExamRegisterTo: Register to
|
||||
TableAction: Action
|
||||
@ -1,19 +1,19 @@
|
||||
#communication.hs
|
||||
RecipientCustom: Weitere Empfänger
|
||||
RGCourseParticipants: Kursteilnehmer
|
||||
RGCourseLecturers: Kursverwalter
|
||||
RGCourseCorrectors: Korrektoren
|
||||
RGCourseTutors: Tutoren
|
||||
RGCourseUnacceptedApplicants: Nicht akzeptierte Bewerber
|
||||
RecipientCustom: Weitere Empfänger:innen
|
||||
RGCourseParticipants: Kursteilnehmer:innen
|
||||
RGCourseLecturers: Kursverwalter:innen
|
||||
RGCourseCorrectors: Korrektor:innen
|
||||
RGCourseTutors: Tutor:innen
|
||||
RGCourseUnacceptedApplicants: Nicht akzeptierte Bewerber:innen
|
||||
RecipientToggleAll: Alle/Keine
|
||||
CommCourseTestSubject customSubject@Text: [TEST] #{customSubject}
|
||||
UtilCommCourseSubject: Kursmitteilung
|
||||
CommRecipients: Empfänger
|
||||
CommRecipients: Empfänger:innen
|
||||
CommRecipientsTip: Sie selbst erhalten immer eine Kopie der Nachricht
|
||||
CommRecipientsList: Die an Sie selbst verschickte Kopie der Nachricht wird, zu Archivierungszwecken, eine vollständige Liste aller Empfänger enthalten. Die Empfängerliste wird im CSV-Format an die E-Mail angehängt. Andere Empfänger erhalten die Liste nicht. Bitte entfernen Sie dementsprechend den Anhang bevor Sie die E-Mail weiterleiten oder anderweitig mit Dritten teilen.
|
||||
CommRecipientsList: Die an Sie selbst verschickte Kopie der Nachricht wird, zu Archivierungszwecken, eine vollständige Liste aller Empfänger:innen enthalten. Die Empfängerliste wird im CSV-Format an die E-Mail angehängt. Andere Empfänger:innen erhalten die Liste nicht. Bitte entfernen Sie dementsprechend den Anhang bevor Sie die E-Mail weiterleiten oder anderweitig mit Dritten teilen.
|
||||
UtilEMail: E-Mail
|
||||
UtilMultiEmailFieldTip: Es sind mehrere, Komma-separierte, E-Mail-Adressen möglich
|
||||
RGTutorialParticipants tutn@TutorialName: Tutorium-Teilnehmer (#{tutn})
|
||||
RGTutorialParticipants tutn@TutorialName: Tutorium-Teilnehmer:innen (#{tutn})
|
||||
RGExamRegistered examn@ExamName: Angemeldet zur Prüfung „#{examn}“
|
||||
RGSheetSubmittor shn@SheetName: Abgebende für das Übungsblatt „#{shn}“
|
||||
CommSubject: Betreff
|
||||
@ -65,8 +65,8 @@ InvalidDateTimeFormat: Ungültiges Datums- und Zeitformat, JJJJ-MM-TTTHH:MM[:SS]
|
||||
AmbiguousUTCTime: Der angegebene Zeitpunkt lässt sich nicht eindeutig zu UTC konvertieren
|
||||
IllDefinedUTCTime: Der angegebene Zeitpunkt lässt sich nicht zu UTC konvertieren
|
||||
InvalidLangFormat: Ungültiger Sprach-Code (RFC1766)
|
||||
MultiUserFieldExplanationAnyUser: Dieses Eingabefeld sucht in den Adressen aller Uni2work-Benutzer.
|
||||
MultiUserFieldInvitationExplanation: An Adressen, die so keinem Uni2work-Benutzer zugeordnet werden können, wird eine Einladung per E-Mail versandt.
|
||||
MultiUserFieldExplanationAnyUser: Dieses Eingabefeld sucht in den Adressen aller Uni2work-Benutzer:innen.
|
||||
MultiUserFieldInvitationExplanation: An Adressen, die so keinem Uni2work-Benutzer/keiner Uni2work-Benutzerin zugeordnet werden können, wird eine Einladung per E-Mail versandt.
|
||||
MultiUserFieldInvitationExplanationAlways: Es wird an alle Adressen, die Sie hier angeben, eine Einladung per E-Mail versandt.
|
||||
AmbiguousEmail: E-Mail-Adresse nicht eindeutig
|
||||
UtilExamResultGrade: Note
|
||||
@ -103,3 +103,9 @@ CorrectionAchievedPass: Bestanden
|
||||
SheetGradingCount': Anzahl
|
||||
SheetGradingPoints': Punkte
|
||||
SheetGradingPassing': Bestehen
|
||||
|
||||
#utils.hs
|
||||
DayIsAHoliday tid@TermId name@Text date@Text: "#{name}" (#{date}) ist ein Feiertag
|
||||
DayIsOutOfLecture tid@TermId name@Text date@Text: "#{name}" (#{date}) ist außerhalb der Vorlesungszeit des #{tid}
|
||||
DayIsOutOfTerm tid@TermId name@Text date@Text: "#{name}" (#{date}) liegt nicht im Semester #{tid}
|
||||
UnauthorizedRedirect: Die angeforderte Seite existiert nicht oder Sie haben keine Berechtigung, die angeforderte Seite zu sehen.
|
||||
|
||||
@ -103,3 +103,9 @@ CorrectionAchievedPass: Passed
|
||||
SheetGradingCount': Number
|
||||
SheetGradingPoints': Points
|
||||
SheetGradingPassing': Passing
|
||||
|
||||
#utils.hs
|
||||
DayIsAHoliday tid name date: “#{name}” (#{date}) is a legal holiday
|
||||
DayIsOutOfLecture tid name date: “#{name}” (#{date}) is not within lecture period of #{tid}
|
||||
DayIsOutOfTerm tid name date: “#{name}” (#{date}) is not within #{tid}
|
||||
UnauthorizedRedirect: The requested view does not exist or you haven't the required permissions to access it.
|
||||
|
||||
@ -31,6 +31,7 @@ AllocationMatching
|
||||
fingerprint AllocationFingerprint
|
||||
time UTCTime
|
||||
log FileContentReference
|
||||
deriving Generic
|
||||
|
||||
AllocationCourse
|
||||
allocation AllocationId
|
||||
@ -38,6 +39,7 @@ AllocationCourse
|
||||
minCapacity Int -- if the course would get assigned fewer than this many applicants, restart the assignment process without the course
|
||||
acceptSubstitutes UTCTime Maybe
|
||||
UniqueAllocationCourse course
|
||||
deriving Generic
|
||||
|
||||
AllocationUser
|
||||
allocation AllocationId
|
||||
@ -45,17 +47,18 @@ AllocationUser
|
||||
totalCourses Word64 -- number of total allocated courses for this user must be <= than this number
|
||||
priority AllocationPriority Maybe
|
||||
UniqueAllocationUser allocation user
|
||||
deriving Eq Ord Show
|
||||
deriving Eq Ord Show Generic
|
||||
|
||||
AllocationDeregister -- self-inflicted user-deregistrations from an allocated course
|
||||
user UserId
|
||||
course CourseId Maybe
|
||||
time UTCTime
|
||||
reason Text Maybe -- if this deregistration was done by proxy (e.g. the lecturer pressed the button)
|
||||
deriving Eq Ord Show
|
||||
deriving Eq Ord Show Generic
|
||||
|
||||
AllocationNotificationSetting
|
||||
user UserId
|
||||
allocation AllocationId
|
||||
isOptOut Bool
|
||||
UniqueAllocationNotificationSetting user allocation
|
||||
UniqueAllocationNotificationSetting user allocation
|
||||
deriving Generic
|
||||
@ -5,4 +5,4 @@ TransactionLog
|
||||
initiator UserId Maybe -- User associated with performing this action
|
||||
remote IP Maybe -- Remote party that triggered this action via HTTP
|
||||
info Value -- JSON-encoded `Transaction`
|
||||
deriving Eq Read Show Generic Typeable
|
||||
deriving Eq Read Show Generic
|
||||
@ -2,3 +2,4 @@ ChangelogItemFirstSeen
|
||||
item ChangelogItem
|
||||
firstSeen Day
|
||||
Primary item
|
||||
deriving Generic
|
||||
|
||||
@ -3,4 +3,5 @@
|
||||
ClusterConfig
|
||||
setting ClusterSettingsKey -- I.e. Symmetric key for encrypting database-ids for use in URLs, Symmetric key for encrypting user-sessions so they can be saved directly as a browser-cookie, Symmetric key for encrypting error messages which might contain secret information, ...
|
||||
value Value -- JSON-encoded value
|
||||
Primary setting
|
||||
Primary setting
|
||||
deriving Generic
|
||||
@ -3,6 +3,7 @@ DegreeCourse json -- for which degree programmes this course is appropriate fo
|
||||
degree StudyDegreeId
|
||||
terms StudyTermsId
|
||||
UniqueDegreeCourse course degree terms
|
||||
deriving Generic
|
||||
Course -- Information about a single course; contained info is always visible to all users
|
||||
name (CI Text)
|
||||
description StoredMarkup Maybe -- user-defined large Html, ought to contain module description
|
||||
@ -36,6 +37,7 @@ CourseEvent
|
||||
time Occurrences
|
||||
note StoredMarkup Maybe
|
||||
lastChanged UTCTime default=now()
|
||||
deriving Generic
|
||||
|
||||
CourseAppInstructionFile
|
||||
course CourseId
|
||||
@ -43,16 +45,19 @@ CourseAppInstructionFile
|
||||
content FileContentReference Maybe
|
||||
modified UTCTime
|
||||
UniqueCourseAppInstructionFile course title
|
||||
deriving Generic
|
||||
|
||||
CourseEdit -- who edited when a row in table "Course", kept indefinitely (might be replaced by generic Audit Table; like all ...-Edit tables)
|
||||
user UserId
|
||||
time UTCTime
|
||||
course CourseId
|
||||
deriving Generic
|
||||
Lecturer -- course ownership
|
||||
user UserId
|
||||
course CourseId
|
||||
type LecturerType default='"lecturer"'::jsonb
|
||||
UniqueLecturer user course -- note: multiple lecturers per course are allowed, but no duplicated rows in this table
|
||||
deriving Generic
|
||||
CourseParticipant -- course enrolement
|
||||
course CourseId
|
||||
user UserId
|
||||
@ -61,7 +66,7 @@ CourseParticipant -- course enrolement
|
||||
allocated AllocationId Maybe -- participant was centrally allocated
|
||||
state CourseParticipantState
|
||||
UniqueParticipant user course
|
||||
deriving Eq Ord Show
|
||||
deriving Eq Ord Show Generic
|
||||
-- Replace the last two by the following, once an audit log is available
|
||||
-- CourseUserNote -- lecturers of a specific course may share a text note on each enrolled student
|
||||
-- course CourseId
|
||||
@ -75,13 +80,16 @@ CourseUserNote -- lecturers of a specific course may share a tex
|
||||
user UserId
|
||||
note StoredMarkup -- arbitrary user-defined text; visible only to lecturer of this course
|
||||
UniqueCourseUserNote user course
|
||||
deriving Generic
|
||||
CourseUserNoteEdit -- who edited a participants course note when
|
||||
user UserId
|
||||
time UTCTime
|
||||
note CourseUserNoteId -- PROBLEM: deleted notes have no modification date any more
|
||||
deriving Generic
|
||||
|
||||
CourseUserExamOfficeOptOut
|
||||
course CourseId
|
||||
user UserId
|
||||
school SchoolId
|
||||
UniqueCourseUserExamOfficeOptOut course user school
|
||||
deriving Generic
|
||||
|
||||
@ -10,6 +10,7 @@ CourseApplication
|
||||
allocationPriority Word64 Maybe
|
||||
time UTCTime default=now()
|
||||
ratingTime UTCTime Maybe
|
||||
deriving Generic
|
||||
|
||||
CourseApplicationFile
|
||||
application CourseApplicationId
|
||||
@ -17,3 +18,4 @@ CourseApplicationFile
|
||||
content FileContentReference Maybe
|
||||
modified UTCTime
|
||||
UniqueCourseApplicationFile application title
|
||||
deriving Generic
|
||||
|
||||
@ -4,7 +4,9 @@ CourseFavourite -- which user accessed which course when, only display
|
||||
reason FavouriteReason
|
||||
lastVisit UTCTime
|
||||
UniqueCourseFavourite user course
|
||||
deriving Generic
|
||||
CourseNoFavourite
|
||||
user UserId
|
||||
course CourseId
|
||||
UniqueCourseNoFavourite user course
|
||||
UniqueCourseNoFavourite user course
|
||||
deriving Generic
|
||||
@ -12,4 +12,5 @@ MaterialFile -- a file that is part of a material distribution
|
||||
title FilePath
|
||||
content FileContentReference Maybe
|
||||
modified UTCTime
|
||||
UniqueMaterialFile material title
|
||||
UniqueMaterialFile material title
|
||||
deriving Generic
|
||||
@ -6,9 +6,11 @@ CourseNews
|
||||
content StoredMarkup
|
||||
summary StoredMarkup Maybe
|
||||
lastEdit UTCTime
|
||||
deriving Generic
|
||||
CourseNewsFile
|
||||
news CourseNewsId
|
||||
title FilePath
|
||||
content FileContentReference Maybe
|
||||
modified UTCTime
|
||||
UniqueCourseNewsFile news title
|
||||
UniqueCourseNewsFile news title
|
||||
deriving Generic
|
||||
@ -3,17 +3,21 @@ ExamOfficeField
|
||||
field StudyTermsId
|
||||
forced Bool
|
||||
UniqueExamOfficeField office field
|
||||
deriving Generic
|
||||
ExamOfficeUser
|
||||
office UserId
|
||||
user UserId
|
||||
UniqueExamOfficeUser office user
|
||||
deriving Generic
|
||||
ExamOfficeResultSynced
|
||||
school SchoolId Maybe
|
||||
office UserId
|
||||
result ExamResultId
|
||||
time UTCTime
|
||||
deriving Generic
|
||||
ExamOfficeExternalResultSynced
|
||||
school SchoolId Maybe
|
||||
office UserId
|
||||
result ExternalExamResultId
|
||||
time UTCTime
|
||||
time UTCTime
|
||||
deriving Generic
|
||||
@ -21,6 +21,7 @@ Exam
|
||||
staff Text Maybe
|
||||
partsFrom UTCTime Maybe
|
||||
UniqueExam course name
|
||||
deriving Generic
|
||||
ExamPart
|
||||
exam ExamId
|
||||
number ExamPartNumber
|
||||
@ -29,54 +30,58 @@ ExamPart
|
||||
weight Rational
|
||||
UniqueExamPartNumber exam number
|
||||
UniqueExamPartName exam name !force
|
||||
deriving Read Show Eq Ord Generic Typeable
|
||||
deriving Read Show Eq Ord Generic
|
||||
ExamOccurrence
|
||||
exam ExamId
|
||||
name ExamOccurrenceName
|
||||
room RoomReference Maybe
|
||||
roomHidden Bool default=false
|
||||
capacity Word64
|
||||
capacity Word64 Maybe
|
||||
start UTCTime
|
||||
end UTCTime Maybe
|
||||
description StoredMarkup Maybe
|
||||
UniqueExamOccurrence exam name
|
||||
deriving Generic
|
||||
ExamRegistration
|
||||
exam ExamId
|
||||
user UserId
|
||||
occurrence ExamOccurrenceId Maybe
|
||||
time UTCTime default=now()
|
||||
UniqueExamRegistration exam user
|
||||
deriving Eq Ord Show
|
||||
deriving Eq Ord Show Generic
|
||||
ExamPartResult
|
||||
examPart ExamPartId
|
||||
user UserId
|
||||
result ExamResultPoints
|
||||
lastChanged UTCTime default=now()
|
||||
UniqueExamPartResult examPart user
|
||||
deriving Eq Ord Show
|
||||
deriving Eq Ord Show Generic
|
||||
ExamBonus
|
||||
exam ExamId
|
||||
user UserId
|
||||
bonus Points
|
||||
lastChanged UTCTime default=now()
|
||||
UniqueExamBonus exam user
|
||||
deriving Eq Ord Show
|
||||
deriving Eq Ord Show Generic
|
||||
ExamResult
|
||||
exam ExamId
|
||||
user UserId
|
||||
result ExamResultPassedGrade
|
||||
lastChanged UTCTime default=now()
|
||||
UniqueExamResult exam user
|
||||
deriving Eq Ord Show
|
||||
deriving Eq Ord Show Generic
|
||||
ExamCorrector
|
||||
exam ExamId
|
||||
user UserId
|
||||
UniqueExamCorrector exam user
|
||||
deriving Generic
|
||||
ExamPartCorrector
|
||||
part ExamPartId
|
||||
corrector ExamCorrectorId
|
||||
UniqueExamPartCorrector part corrector
|
||||
deriving Generic
|
||||
ExamOfficeSchool
|
||||
school SchoolId
|
||||
exam ExamId
|
||||
UniqueExamOfficeSchool exam school
|
||||
UniqueExamOfficeSchool exam school
|
||||
deriving Generic
|
||||
|
||||
@ -6,6 +6,7 @@ ExternalExam
|
||||
defaultTime UTCTime Maybe
|
||||
gradingMode ExamGradingMode
|
||||
UniqueExternalExam term school courseName examName
|
||||
deriving Generic
|
||||
ExternalExamResult
|
||||
user UserId
|
||||
exam ExternalExamId
|
||||
@ -13,12 +14,14 @@ ExternalExamResult
|
||||
time UTCTime
|
||||
lastChanged UTCTime
|
||||
UniqueExternalExamResult exam user
|
||||
deriving Eq Ord Show
|
||||
deriving Eq Ord Show Generic
|
||||
ExternalExamStaff
|
||||
user UserId
|
||||
exam ExternalExamId
|
||||
UniqueExternalExamStaff exam user
|
||||
deriving Generic
|
||||
ExternalExamOfficeSchool
|
||||
school SchoolId
|
||||
exam ExternalExamId
|
||||
UniqueExternalExamOfficeSchool exam school
|
||||
UniqueExternalExamOfficeSchool exam school
|
||||
deriving Generic
|
||||
@ -3,28 +3,34 @@ FileContentEntry
|
||||
ix Word64
|
||||
chunkHash FileContentChunkId
|
||||
UniqueFileContentEntry hash ix
|
||||
deriving Generic
|
||||
|
||||
FileContentChunk
|
||||
hash FileContentChunkReference
|
||||
content ByteString
|
||||
contentBased Bool default=false -- For Migration
|
||||
Primary hash
|
||||
deriving Generic
|
||||
|
||||
FileContentChunkUnreferenced
|
||||
hash FileContentChunkId
|
||||
since UTCTime
|
||||
UniqueFileContentChunkUnreferenced hash
|
||||
deriving Generic
|
||||
|
||||
SessionFile
|
||||
content FileContentReference Maybe
|
||||
touched UTCTime
|
||||
deriving Generic
|
||||
|
||||
FileLock
|
||||
content FileContentReference
|
||||
instance InstanceId
|
||||
time UTCTime
|
||||
deriving Generic
|
||||
|
||||
FileChunkLock
|
||||
hash FileContentChunkReference
|
||||
instance InstanceId
|
||||
time UTCTime
|
||||
time UTCTime
|
||||
deriving Generic
|
||||
@ -3,4 +3,5 @@ Invitation
|
||||
for Value
|
||||
data Value
|
||||
expiresAt UTCTime Maybe
|
||||
UniqueInvitation email for
|
||||
UniqueInvitation email for
|
||||
deriving Generic
|
||||
@ -6,7 +6,7 @@ QueuedJob
|
||||
lockInstance InstanceId Maybe -- instance that has started to execute this job
|
||||
lockTime UTCTime Maybe -- time when execution had begun
|
||||
writeLastExec Bool default=false -- record successful execution to CronLastExec
|
||||
deriving Eq Read Show Generic Typeable
|
||||
deriving Eq Read Show Generic
|
||||
|
||||
-- Jobs are deleted from @QueuedJob@ after they are executed successfully and recorded in @CronLastExec@
|
||||
-- There is a Cron-system that, at set intervals, queries the database for work to be done in the background (i.e. if a lecturer has set a sheet's submissions to be automatically distributed and the submission deadline passed since the last check, then queue a new job to actually do the distribution)
|
||||
@ -16,9 +16,11 @@ CronLastExec
|
||||
time UTCTime -- When was the job executed
|
||||
instance InstanceId -- Which uni2work-instance did the work
|
||||
UniqueCronLastExec job
|
||||
deriving Generic
|
||||
|
||||
TokenBucket
|
||||
ident TokenBucketIdent
|
||||
lastValue Int64
|
||||
lastAccess UTCTime
|
||||
Primary ident
|
||||
Primary ident
|
||||
deriving Generic
|
||||
@ -6,8 +6,10 @@ SentMail
|
||||
recipient UserId Maybe
|
||||
headers MailHeaders
|
||||
contentRef SentMailContentId
|
||||
deriving Generic
|
||||
|
||||
SentMailContent
|
||||
hash MailContentReference
|
||||
content MailContent
|
||||
Primary hash
|
||||
Primary hash
|
||||
deriving Generic
|
||||
@ -16,7 +16,9 @@ SchoolLdap
|
||||
school SchoolId Maybe
|
||||
orgUnit (CI Text)
|
||||
UniqueOrgUnit orgUnit
|
||||
deriving Generic
|
||||
SchoolTerms
|
||||
school SchoolId
|
||||
terms StudyTermsId
|
||||
UniqueSchoolTerms school terms
|
||||
UniqueSchoolTerms school terms
|
||||
deriving Generic
|
||||
@ -21,6 +21,7 @@ SheetEdit -- who edited when a row in table "Course", kept i
|
||||
user UserId
|
||||
time UTCTime
|
||||
sheet SheetId
|
||||
deriving Generic
|
||||
|
||||
-- For anonoymous external submissions (i.e. paper submission tracked in uni2work)
|
||||
-- Map pseudonyms to users injectively in the context of a single sheet; for the next sheet all-new pseudonyms need to be created
|
||||
@ -31,13 +32,14 @@ SheetPseudonym
|
||||
user UserId
|
||||
UniqueSheetPseudonym sheet pseudonym
|
||||
UniqueSheetPseudonymUser sheet user
|
||||
deriving Generic
|
||||
SheetCorrector -- grant corrector role to user for a sheet
|
||||
user UserId
|
||||
sheet SheetId
|
||||
load Load -- portion of work that will be assigned to this corrector
|
||||
state CorrectorState default='CorrectorNormal' -- whether a corrector is assigned his load this time (e.g. in case of sickness)
|
||||
UniqueSheetCorrector user sheet
|
||||
deriving Show Eq Ord
|
||||
deriving Show Eq Ord Generic
|
||||
SheetFile -- a file that is part of an exercise sheet
|
||||
sheet SheetId
|
||||
type SheetFileType -- excercise, marking, hint or solution
|
||||
@ -45,6 +47,7 @@ SheetFile -- a file that is part of an exercise sheet
|
||||
content FileContentReference Maybe
|
||||
modified UTCTime
|
||||
UniqueSheetFile sheet type title
|
||||
deriving Generic
|
||||
PersonalisedSheetFile
|
||||
sheet SheetId
|
||||
user UserId
|
||||
@ -53,11 +56,12 @@ PersonalisedSheetFile
|
||||
content FileContentReference Maybe
|
||||
modified UTCTime
|
||||
UniquePersonalisedSheetFile sheet user type title
|
||||
deriving Eq Ord Read Show Generic Typeable
|
||||
deriving Eq Ord Read Show Typeable Generic
|
||||
|
||||
FallbackPersonalisedSheetFilesKey
|
||||
course CourseId
|
||||
index Word24
|
||||
secret ByteString
|
||||
generated UTCTime
|
||||
UniqueFallbackPersonalisedSheetFilesKey course index
|
||||
UniqueFallbackPersonalisedSheetFilesKey course index
|
||||
deriving Generic
|
||||
@ -10,13 +10,14 @@ StudyFeatures -- multiple entries possible for students pursuing several degree
|
||||
valid Bool default=true
|
||||
relevanceCached UUID Maybe
|
||||
UniqueStudyFeatures user degree field type semester
|
||||
deriving Eq Show
|
||||
deriving Eq Show Generic
|
||||
-- UniqueUserSubject ubuser degree field -- There exists a counterexample
|
||||
|
||||
RelevantStudyFeatures
|
||||
term TermId
|
||||
studyFeatures StudyFeaturesId
|
||||
UniqueRelevantStudyFeatures term studyFeatures
|
||||
deriving Generic
|
||||
|
||||
StudyDegree -- Studienabschluss
|
||||
key Int -- LMU-internal key
|
||||
@ -24,7 +25,7 @@ StudyDegree -- Studienabschluss
|
||||
name Text Maybe -- description given by LDAP
|
||||
Primary key -- column key is used as actual DB row key
|
||||
-- newtype Key StudyDegree = StudyDegreeKey' { unStudyDegreeKey :: Int }
|
||||
deriving Eq Show
|
||||
deriving Eq Show Generic
|
||||
StudyTerms -- Studiengang
|
||||
key Int -- standardised key
|
||||
shorthand Text Maybe -- admin determined shorthand
|
||||
@ -33,11 +34,12 @@ StudyTerms -- Studiengang
|
||||
defaultType StudyFieldType Maybe
|
||||
Primary key -- column key is used as actual DB row key
|
||||
-- newtype Key StudyTerms = StudyTermsKey' { unStudyTermsKey :: Int }
|
||||
deriving Eq Ord Show
|
||||
deriving Eq Ord Show Generic
|
||||
StudySubTerms
|
||||
child StudyTermsId
|
||||
parent StudyTermsId
|
||||
UniqueStudySubTerms child parent
|
||||
deriving Generic
|
||||
StudyTermNameCandidate -- No one at LMU is willing and able to tell us the meaning of the keys for StudyDegrees and StudyTerms.
|
||||
-- Each LDAP login provides an unordered set of keys and an unordered set of plain text description with an unknown 1-1 correspondence.
|
||||
-- This table helps us to infer which key belongs to which plain text by recording possible combinations at login.
|
||||
@ -45,14 +47,14 @@ StudyTermNameCandidate -- No one at LMU is willing and able to tell us the me
|
||||
incidence TermCandidateIncidence -- random id, generated once per login to associate matching pairs
|
||||
key Int -- a possible key for the studyTermName or studySubTermName
|
||||
name Text -- studyTermName as plain text from LDAP
|
||||
deriving Show Eq Ord
|
||||
deriving Show Eq Ord Generic
|
||||
StudySubTermParentCandidate
|
||||
incidence TermCandidateIncidence
|
||||
key Int
|
||||
parent Int
|
||||
deriving Show Eq Ord
|
||||
deriving Show Eq Ord Generic
|
||||
StudyTermStandaloneCandidate
|
||||
incidence TermCandidateIncidence
|
||||
key Int
|
||||
deriving Show Eq Ord
|
||||
deriving Show Eq Ord Generic
|
||||
|
||||
|
||||
@ -10,6 +10,7 @@ SubmissionEdit -- user uploads new version of their submissio
|
||||
user UserId Maybe -- track id, important for group submissions
|
||||
time UTCTime
|
||||
submission SubmissionId
|
||||
deriving Generic
|
||||
SubmissionFile json -- files that are part of a submission
|
||||
submission SubmissionId
|
||||
title FilePath
|
||||
@ -18,17 +19,19 @@ SubmissionFile json -- files that are part of a submission
|
||||
isUpdate Bool -- is this the file updated by a corrector (original will always be retained)
|
||||
isDeletion Bool -- only set if isUpdate is also set, but file was deleted by corrector
|
||||
UniqueSubmissionFile submission title isUpdate
|
||||
deriving Eq Ord Read Show
|
||||
deriving Eq Ord Read Show Generic
|
||||
SubmissionUser -- which submission belongs to whom
|
||||
user UserId
|
||||
submission SubmissionId
|
||||
UniqueSubmissionUser user submission -- multiple users may share same submission, in case of (ad-hoc) submission groups
|
||||
deriving Generic
|
||||
SubmissionGroup -- pre-defined submission groups; some courses only allow pre-defined submission groups
|
||||
course CourseId
|
||||
name SubmissionGroupName
|
||||
UniqueSubmissionGroup course name
|
||||
deriving Generic
|
||||
SubmissionGroupUser -- Registered submission groups, just for checking upon submission, but independent of actual SubmissionUser
|
||||
submissionGroup SubmissionGroupId
|
||||
user UserId
|
||||
UniqueSubmissionGroupUser submissionGroup user
|
||||
deriving Eq Ord Show
|
||||
deriving Eq Ord Show Generic
|
||||
@ -13,6 +13,7 @@ SystemMessage
|
||||
defaultLanguage Lang -- Language of @content@ and @summary@
|
||||
content StoredMarkup -- Detailed message shown when clicking on the @summary@-popup or when no @summary@ is specified
|
||||
summary StoredMarkup Maybe
|
||||
deriving Generic
|
||||
|
||||
SystemMessageTranslation -- Translation of a @SystemMessage@ into another language; which language to choose is determined by user-sent HTTP-headers
|
||||
message SystemMessageId
|
||||
@ -20,9 +21,11 @@ SystemMessageTranslation -- Translation of a @SystemMessage@ into another langua
|
||||
content StoredMarkup
|
||||
summary StoredMarkup Maybe
|
||||
UniqueSystemMessageTranslation message language
|
||||
deriving Generic
|
||||
|
||||
SystemMessageHidden
|
||||
message SystemMessageId
|
||||
user UserId
|
||||
time UTCTime
|
||||
UniqueSystemMessageHidden user message
|
||||
UniqueSystemMessageHidden user message
|
||||
deriving Generic
|
||||
@ -18,8 +18,10 @@ Tutor
|
||||
tutorial TutorialId
|
||||
user UserId
|
||||
UniqueTutor tutorial user
|
||||
deriving Generic
|
||||
TutorialParticipant
|
||||
tutorial TutorialId
|
||||
user UserId
|
||||
UniqueTutorialParticipant tutorial user
|
||||
deriving Eq Ord Show
|
||||
deriving Eq Ord Show
|
||||
deriving Generic
|
||||
@ -44,21 +44,25 @@ UserFunction -- Administratively assigned functions (lecturer, admin, evaluation
|
||||
school SchoolId
|
||||
function SchoolFunction
|
||||
UniqueUserFunction user school function
|
||||
deriving Generic
|
||||
UserSystemFunction
|
||||
user UserId
|
||||
function SystemFunction
|
||||
manual Bool
|
||||
isOptOut Bool
|
||||
UniqueUserSystemFunction user function
|
||||
deriving Generic
|
||||
UserExamOffice
|
||||
user UserId
|
||||
field StudyTermsId
|
||||
UniqueUserExamOffice user field
|
||||
deriving Generic
|
||||
UserSchool -- Managed by users themselves, encodes "schools of interest"
|
||||
user UserId
|
||||
school SchoolId
|
||||
isOptOut Bool -- true if this a marker, that the user manually deleted this entry; it should not be recreated automatically
|
||||
UniqueUserSchool user school
|
||||
deriving Generic
|
||||
|
||||
UserGroupMember
|
||||
group UserGroupName
|
||||
@ -67,4 +71,6 @@ UserGroupMember
|
||||
|
||||
UniquePrimaryUserGroupMember group primary !force
|
||||
UniqueUserGroupMember group user
|
||||
|
||||
deriving Generic
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@ SharedWorkflowGraph
|
||||
hash WorkflowGraphReference
|
||||
graph (WorkflowGraph FileReference SqlBackendKey) -- UserId
|
||||
Primary hash
|
||||
deriving Generic
|
||||
|
||||
WorkflowDefinition
|
||||
graph SharedWorkflowGraphId
|
||||
@ -9,6 +10,7 @@ WorkflowDefinition
|
||||
name WorkflowDefinitionName
|
||||
instanceCategory WorkflowInstanceCategory Maybe
|
||||
UniqueWorkflowDefinition name scope
|
||||
deriving Generic
|
||||
|
||||
WorkflowDefinitionDescription
|
||||
definition WorkflowDefinitionId
|
||||
@ -16,6 +18,7 @@ WorkflowDefinitionDescription
|
||||
title Text
|
||||
description StoredMarkup Maybe
|
||||
UniqueWorkflowDefinitionDescription definition language
|
||||
deriving Generic
|
||||
|
||||
WorkflowDefinitionInstanceDescription
|
||||
definition WorkflowDefinitionId
|
||||
@ -23,6 +26,7 @@ WorkflowDefinitionInstanceDescription
|
||||
title Text
|
||||
description StoredMarkup Maybe
|
||||
UniqueWorkflowDefinitionInstanceDescription definition language
|
||||
deriving Generic
|
||||
|
||||
WorkflowInstance
|
||||
definition WorkflowDefinitionId Maybe
|
||||
@ -31,6 +35,7 @@ WorkflowInstance
|
||||
name WorkflowInstanceName
|
||||
category WorkflowInstanceCategory Maybe
|
||||
UniqueWorkflowInstance name scope
|
||||
deriving Generic
|
||||
|
||||
WorkflowInstanceDescription
|
||||
instance WorkflowInstanceId
|
||||
@ -38,9 +43,11 @@ WorkflowInstanceDescription
|
||||
title Text
|
||||
description StoredMarkup Maybe
|
||||
UniqueWorkflowInstanceDescription instance language
|
||||
deriving Generic
|
||||
|
||||
WorkflowWorkflow
|
||||
instance WorkflowInstanceId Maybe
|
||||
scope (WorkflowScope TermIdentifier SchoolShorthand SqlBackendKey) -- TermId, SchoolId, CourseId
|
||||
graph SharedWorkflowGraphId
|
||||
state (WorkflowState FileReference SqlBackendKey) -- UserId
|
||||
deriving Generic
|
||||
|
||||
2
package-lock.json
generated
2
package-lock.json
generated
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "uni2work",
|
||||
"version": "24.9.2",
|
||||
"version": "25.8.1",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "uni2work",
|
||||
"version": "24.9.2",
|
||||
"version": "25.8.1",
|
||||
"description": "",
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
name: uniworx
|
||||
version: 24.9.2
|
||||
version: 25.8.1
|
||||
dependencies:
|
||||
- base
|
||||
- yesod
|
||||
@ -162,6 +162,8 @@ dependencies:
|
||||
- nonce
|
||||
- IntervalMap
|
||||
- haskell-src-meta
|
||||
- either
|
||||
- xlsx
|
||||
other-extensions:
|
||||
- GeneralizedNewtypeDeriving
|
||||
- IncoherentInstances
|
||||
|
||||
2
routes
2
routes
@ -207,7 +207,7 @@
|
||||
/ SubShowR GET POST !ownerANDtimeANDuser-submissionsANDsubmission-groupANDexam-registeredANDpersonalised-sheet-files !ownerANDread !correctorANDread
|
||||
/delete SubDelR GET POST !ownerANDtimeANDuser-submissionsANDexam-registeredANDpersonalised-sheet-files
|
||||
/assign SubAssignR GET POST !lecturerANDtime
|
||||
/correction CorrectionR GET POST !corrector !ownerANDreadANDrated
|
||||
/correction CorrectionR GET POST !corrector !ownerANDreadANDratedANDexam-time
|
||||
/invite SInviteR GET POST !ownerANDtimeANDuser-submissionsANDsubmission-groupANDexam-registeredANDpersonalised-sheet-files
|
||||
!/#SubmissionFileType SubArchiveR GET !owner !corrector
|
||||
!/#SubmissionFileType/*FilePath SubDownloadR GET !owner !corrector
|
||||
|
||||
@ -112,6 +112,9 @@ import qualified Data.IntervalMap.Strict as IntervalMap
|
||||
|
||||
import qualified Utils.Pool as Custom
|
||||
|
||||
import Utils.Postgresql
|
||||
import Handler.Utils.Memcached (manageMemcachedLocalInvalidations)
|
||||
|
||||
-- Import all relevant handler modules here.
|
||||
-- (HPack takes care to add new modules to our cabal file nowadays.)
|
||||
import Handler.News
|
||||
@ -208,7 +211,7 @@ makeFoundation appSettings''@AppSettings{..} = do
|
||||
-- from there, and then create the real foundation.
|
||||
let
|
||||
mkFoundation :: _ -> (forall m. MonadIO m => Custom.Pool' m DBConnLabel DBConnUseState SqlBackend) -> _
|
||||
mkFoundation appSettings' appConnPool appSmtpPool appLdapPool appCryptoIDKey appSessionStore appSecretBoxKey appWidgetMemcached appJSONWebKeySet appClusterID appMemcached appUploadCache appVerpSecret appAuthKey = UniWorX {..}
|
||||
mkFoundation appSettings' appConnPool appSmtpPool appLdapPool appCryptoIDKey appSessionStore appSecretBoxKey appWidgetMemcached appJSONWebKeySet appClusterID appMemcached appMemcachedLocal appUploadCache appVerpSecret appAuthKey = UniWorX {..}
|
||||
-- The UniWorX {..} syntax is an example of record wild cards. For more
|
||||
-- information, see:
|
||||
-- https://ocharles.org.uk/blog/posts/2014-12-04-record-wildcards.html
|
||||
@ -224,6 +227,7 @@ makeFoundation appSettings''@AppSettings{..} = do
|
||||
(error "JSONWebKeySet forced in tempFoundation")
|
||||
(error "ClusterID forced in tempFoundation")
|
||||
(error "memcached forced in tempFoundation")
|
||||
(error "memcachedLocal forced in tempFoundation")
|
||||
(error "MinioConn forced in tempFoundation")
|
||||
(error "VerpSecret forced in tempFoundation")
|
||||
(error "AuthKey forced in tempFoundation")
|
||||
@ -295,11 +299,17 @@ makeFoundation appSettings''@AppSettings{..} = do
|
||||
appMemcached <- for appMemcachedConf $ \memcachedConf -> do
|
||||
$logDebugS "setup" "Memcached"
|
||||
memcachedKey <- clusterSetting (Proxy :: Proxy 'ClusterMemcachedKey) `customRunSqlPool` sqlPool
|
||||
memcached <- createMemcached memcachedConf
|
||||
memcachedConn <- createMemcached memcachedConf
|
||||
when appClearCache $ do
|
||||
$logWarnS "setup" "Clearing memcached"
|
||||
liftIO $ Memcached.flushAll memcached
|
||||
return (memcachedKey, memcached)
|
||||
liftIO $ Memcached.flushAll memcachedConn
|
||||
return AppMemcached{..}
|
||||
appMemcachedLocal <- for appMemcachedLocalConf $ \ARCConf{..} -> do
|
||||
memcachedLocalARC <- initARCHandle arccMaximumGhost arccMaximumWeight
|
||||
void . Prometheus.register $ arcMetrics ARCMemcachedLocal memcachedLocalARC
|
||||
memcachedLocalInvalidationQueue <- newTVarIO mempty
|
||||
memcachedLocalHandleInvalidations <- allocateLinkedAsync . managePostgresqlChannel appDatabaseConf ChannelMemcachedLocalInvalidation $ manageMemcachedLocalInvalidations memcachedLocalARC memcachedLocalInvalidationQueue
|
||||
return AppMemcachedLocal{..}
|
||||
|
||||
appSessionStore <- mkSessionStore appSettings'' sqlPool `customRunSqlPool` sqlPool
|
||||
|
||||
@ -307,14 +317,14 @@ makeFoundation appSettings''@AppSettings{..} = do
|
||||
conn <- Minio.connect minioConf
|
||||
let isBucketExists Minio.BucketAlreadyOwnedByYou = True
|
||||
isBucketExists _ = False
|
||||
either throwM return <=< Minio.runMinioWith conn $ do
|
||||
throwLeft <=< Minio.runMinioWith conn $ do
|
||||
handleIf isBucketExists (const $ return ()) $ Minio.makeBucket appUploadCacheBucket Nothing
|
||||
handleIf isBucketExists (const $ return ()) $ Minio.makeBucket appUploadTmpBucket Nothing
|
||||
return conn
|
||||
|
||||
$logDebugS "Runtime configuration" $ tshow appSettings'
|
||||
|
||||
let foundation = mkFoundation appSettings' sqlPool smtpPool ldapPool appCryptoIDKey appSessionStore appSecretBoxKey appWidgetMemcached appJSONWebKeySet appClusterID appMemcached appUploadCache appVerpSecret appAuthKey
|
||||
let foundation = mkFoundation appSettings' sqlPool smtpPool ldapPool appCryptoIDKey appSessionStore appSecretBoxKey appWidgetMemcached appJSONWebKeySet appClusterID appMemcached appMemcachedLocal appUploadCache appVerpSecret appAuthKey
|
||||
|
||||
-- Return the foundation
|
||||
$logDebugS "setup" "Done"
|
||||
@ -671,7 +681,7 @@ shutdownApp app = do
|
||||
for_ (appSmtpPool app) destroyAllResources
|
||||
for_ (appLdapPool app) . mapFailover $ views _2 destroyAllResources
|
||||
for_ (appWidgetMemcached app) Memcached.close
|
||||
for_ (appMemcached app) $ views _2 Memcached.close
|
||||
for_ (appMemcached app) $ views _memcachedConn Memcached.close
|
||||
release . fst $ appLogger app
|
||||
|
||||
liftIO $ threadDelay 1e6
|
||||
|
||||
@ -129,14 +129,14 @@ campusUserWith withLdap' pool mode Creds{..} = either (throwM . CampusUserLdapEr
|
||||
_otherwise -> throwE CampusUserAmbiguous
|
||||
|
||||
campusUserReTest :: (MonadUnliftIO m, MonadMask m, MonadLogger m) => Failover (LdapConf, LdapPool) -> (Nano -> Bool) -> FailoverMode -> Creds site -> m (Ldap.AttrList [])
|
||||
campusUserReTest pool doTest mode creds = either throwM return =<< campusUserWith (\l -> flip (withLdapFailoverReTest l) doTest) pool mode creds
|
||||
campusUserReTest pool doTest mode creds = throwLeft =<< campusUserWith (\l -> flip (withLdapFailoverReTest l) doTest) pool mode creds
|
||||
|
||||
campusUserReTest' :: (MonadMask m, MonadLogger m, MonadUnliftIO m) => Failover (LdapConf, LdapPool) -> (Nano -> Bool) -> FailoverMode -> User -> m (Maybe (Ldap.AttrList []))
|
||||
campusUserReTest' pool doTest mode User{userIdent}
|
||||
= runMaybeT . catchIfMaybeT (is _CampusUserNoResult) $ campusUserReTest pool doTest mode (Creds apLdap (CI.original userIdent) [])
|
||||
|
||||
campusUser :: (MonadUnliftIO m, MonadMask m, MonadLogger m) => Failover (LdapConf, LdapPool) -> FailoverMode -> Creds site -> m (Ldap.AttrList [])
|
||||
campusUser pool mode creds = either throwM return =<< campusUserWith withLdapFailover pool mode creds
|
||||
campusUser pool mode creds = throwLeft =<< campusUserWith withLdapFailover pool mode creds
|
||||
|
||||
campusUser' :: (MonadMask m, MonadUnliftIO m, MonadLogger m) => Failover (LdapConf, LdapPool) -> FailoverMode -> User -> m (Maybe (Ldap.AttrList []))
|
||||
campusUser' pool mode User{userIdent}
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
|
||||
module CryptoID
|
||||
( module CryptoID
|
||||
, module CryptoID.Cached
|
||||
, module Data.CryptoID.Poly.ImplicitNamespace
|
||||
, module Data.UUID.Cryptographic.ImplicitNamespace
|
||||
, module System.FilePath.Cryptographic.ImplicitNamespace
|
||||
@ -18,6 +19,7 @@ import qualified Data.CryptoID as E
|
||||
import Data.CryptoID.Poly.ImplicitNamespace hiding (decrypt, encrypt)
|
||||
import Data.UUID.Cryptographic.ImplicitNamespace hiding (decrypt, encrypt)
|
||||
import System.FilePath.Cryptographic.ImplicitNamespace hiding (decrypt, encrypt)
|
||||
import CryptoID.Cached
|
||||
|
||||
import qualified Data.Text as Text
|
||||
|
||||
@ -28,28 +30,6 @@ import Data.Aeson.Encoding (text)
|
||||
|
||||
import Text.Blaze (ToMarkup(..))
|
||||
|
||||
import qualified Data.CryptoID.Class.ImplicitNamespace as I
|
||||
|
||||
|
||||
encrypt :: forall plaintext ciphertext m.
|
||||
( I.HasCryptoID ciphertext plaintext m
|
||||
, KnownSymbol (CryptoIDNamespace ciphertext plaintext)
|
||||
, MonadHandler m
|
||||
, Typeable ciphertext
|
||||
, PathPiece plaintext
|
||||
)
|
||||
=> plaintext -> m (I.CryptoID ciphertext plaintext)
|
||||
encrypt plain = $cachedHereBinary (toPathPiece plain) $ I.encrypt plain
|
||||
|
||||
decrypt :: forall plaintext ciphertext m.
|
||||
( I.HasCryptoID ciphertext plaintext m
|
||||
, MonadHandler m
|
||||
, Typeable plaintext
|
||||
, PathPiece ciphertext
|
||||
)
|
||||
=> I.CryptoID ciphertext plaintext -> m plaintext
|
||||
decrypt cipher = $cachedHereBinary (toPathPiece $ ciphertext cipher) $ I.decrypt cipher
|
||||
|
||||
|
||||
instance {-# OVERLAPPING #-} MonadThrow m => MonadCrypto (ReaderT CryptoIDKey m) where
|
||||
type MonadCryptoKey (ReaderT CryptoIDKey m) = CryptoIDKey
|
||||
|
||||
51
src/CryptoID/Cached.hs
Normal file
51
src/CryptoID/Cached.hs
Normal file
@ -0,0 +1,51 @@
|
||||
module CryptoID.Cached
|
||||
( encrypt, decrypt
|
||||
) where
|
||||
|
||||
import Import.NoModel
|
||||
|
||||
import qualified Data.Binary as Binary
|
||||
|
||||
import qualified Data.CryptoID.Class.ImplicitNamespace as I
|
||||
|
||||
|
||||
newtype CryptoIDDecryption ciphertext plaintext = CryptoIDDecryption plaintext
|
||||
deriving (Typeable)
|
||||
newtype CryptoIDEncryption ciphertext plaintext = CryptoIDEncryption ciphertext
|
||||
deriving (Typeable)
|
||||
|
||||
encrypt :: forall plaintext ciphertext m.
|
||||
( I.HasCryptoID ciphertext plaintext (HandlerFor (HandlerSite m))
|
||||
, Typeable plaintext, Typeable ciphertext
|
||||
, Binary plaintext, Binary ciphertext
|
||||
, MonadHandler m
|
||||
)
|
||||
=> plaintext -> m (I.CryptoID ciphertext plaintext)
|
||||
encrypt plain = liftHandler $ do
|
||||
(cachedEnc :: Maybe (CryptoIDEncryption ciphertext plaintext)) <- cacheByGet cacheKey
|
||||
case cachedEnc of
|
||||
Nothing -> do
|
||||
cID@(I.CryptoID crypt) <- I.encrypt plain
|
||||
cacheBySet cacheKey (CryptoIDEncryption crypt :: CryptoIDEncryption ciphertext plaintext)
|
||||
cacheBySet (toStrict $ Binary.encode crypt) (CryptoIDDecryption plain :: CryptoIDDecryption ciphertext plaintext)
|
||||
return cID
|
||||
Just (CryptoIDEncryption crypt) -> return $ I.CryptoID crypt
|
||||
where cacheKey = toStrict $ Binary.encode plain
|
||||
|
||||
decrypt :: forall plaintext ciphertext m.
|
||||
( I.HasCryptoID ciphertext plaintext (HandlerFor (HandlerSite m))
|
||||
, Typeable plaintext, Typeable ciphertext
|
||||
, Binary plaintext, Binary ciphertext
|
||||
, MonadHandler m
|
||||
)
|
||||
=> I.CryptoID ciphertext plaintext -> m plaintext
|
||||
decrypt cID@(I.CryptoID crypt) = liftHandler $ do
|
||||
(cachedDec :: Maybe (CryptoIDDecryption ciphertext plaintext)) <- cacheByGet cacheKey
|
||||
case cachedDec of
|
||||
Nothing -> do
|
||||
plain <- I.decrypt cID
|
||||
cacheBySet (toStrict $ Binary.encode plain) (CryptoIDEncryption crypt :: CryptoIDEncryption ciphertext plaintext)
|
||||
cacheBySet cacheKey (CryptoIDDecryption plain :: CryptoIDDecryption ciphertext plaintext)
|
||||
return plain
|
||||
Just (CryptoIDDecryption plain) -> return plain
|
||||
where cacheKey = toStrict $ Binary.encode crypt
|
||||
@ -32,3 +32,10 @@ instance Read DynEncoding where
|
||||
|
||||
instance Ord DynEncoding where
|
||||
compare = comparing show
|
||||
|
||||
instance Hashable DynEncoding where
|
||||
hashWithSalt s = hashWithSalt s . show
|
||||
|
||||
|
||||
instance NFData DynEncoding where
|
||||
rnf enc = rnf $ show enc
|
||||
|
||||
@ -20,7 +20,7 @@ module Database.Esqueleto.Utils
|
||||
, selectExists, selectNotExists
|
||||
, SqlHashable
|
||||
, sha256
|
||||
, maybe, maybe2, maybeEq, unsafeCoalesce
|
||||
, maybe, maybe2, maybeEq, guardMaybe, unsafeCoalesce
|
||||
, bool
|
||||
, max, min
|
||||
, abs
|
||||
@ -30,7 +30,7 @@ module Database.Esqueleto.Utils
|
||||
, unKey
|
||||
, selectCountRows
|
||||
, selectMaybe
|
||||
, day, diffDays
|
||||
, day, diffDays, diffTimes
|
||||
, exprLift
|
||||
, module Database.Esqueleto.Utils.TH
|
||||
) where
|
||||
@ -53,6 +53,8 @@ import Crypto.Hash (Digest, SHA256)
|
||||
|
||||
import Data.Coerce (Coercible)
|
||||
|
||||
import Data.Time.Clock (NominalDiffTime)
|
||||
|
||||
{-# ANN any ("HLint: ignore Use any" :: String) #-}
|
||||
{-# ANN all ("HLint: ignore Use all" :: String) #-}
|
||||
|
||||
@ -127,19 +129,20 @@ substring (E.ERaw p1 f1) (E.ERaw p2 f2) (E.ERaw p3 f3)
|
||||
, strVals <> fromiVals <> foriVals
|
||||
)
|
||||
substring a b c = substring (construct a) (construct b) (construct c)
|
||||
where construct :: E.SqlExpr (E.Value a) -> E.SqlExpr (E.Value a)
|
||||
construct (E.ERaw p f) = E.ERaw E.Parens $ \info ->
|
||||
let (b1, vals) = f info
|
||||
build ("?", [E.PersistList vals']) =
|
||||
(E.uncommas $ replicate (length vals') "?", vals')
|
||||
build expr = expr
|
||||
in build (E.parensM p b1, vals)
|
||||
construct (E.ECompositeKey f) =
|
||||
E.ERaw E.Parens $ \info -> (E.uncommas $ f info, mempty)
|
||||
construct (E.EAliasedValue i _) =
|
||||
E.ERaw E.Never $ E.aliasedValueIdentToRawSql i
|
||||
construct (E.EValueReference i i') =
|
||||
E.ERaw E.Never $ E.valueReferenceToRawSql i i'
|
||||
|
||||
construct :: E.SqlExpr (E.Value a) -> E.SqlExpr (E.Value a)
|
||||
construct (E.ERaw p f) = E.ERaw E.Parens $ \info ->
|
||||
let (b1, vals) = f info
|
||||
build ("?", [E.PersistList vals']) =
|
||||
(E.uncommas $ replicate (length vals') "?", vals')
|
||||
build expr = expr
|
||||
in build (E.parensM p b1, vals)
|
||||
construct (E.ECompositeKey f) =
|
||||
E.ERaw E.Parens $ \info -> (E.uncommas $ f info, mempty)
|
||||
construct (E.EAliasedValue i _) =
|
||||
E.ERaw E.Never $ E.aliasedValueIdentToRawSql i
|
||||
construct (E.EValueReference i i') =
|
||||
E.ERaw E.Never $ E.valueReferenceToRawSql i i'
|
||||
|
||||
and, or :: Foldable f => f (E.SqlExpr (E.Value Bool)) -> E.SqlExpr (E.Value Bool)
|
||||
and = F.foldr (E.&&.) true
|
||||
@ -338,6 +341,13 @@ maybeEq a b = E.case_
|
||||
]
|
||||
(E.else_ $ a E.==. b)
|
||||
|
||||
guardMaybe :: PersistField a
|
||||
=> E.SqlExpr (E.Value (Maybe a))
|
||||
-> E.SqlQuery (E.SqlExpr (E.Value a))
|
||||
guardMaybe mVal = do
|
||||
E.where_ $ isJust mVal
|
||||
return $ E.veryUnsafeCoerceSqlExprValue mVal
|
||||
|
||||
bool :: PersistField a
|
||||
=> E.SqlExpr (E.Value a)
|
||||
-> E.SqlExpr (E.Value a)
|
||||
@ -419,11 +429,22 @@ selectMaybe = fmap listToMaybe . E.select . (<* E.limit 1)
|
||||
day :: E.SqlExpr (E.Value UTCTime) -> E.SqlExpr (E.Value Day)
|
||||
day = E.unsafeSqlCastAs "date"
|
||||
|
||||
infixl 6 `diffDays`
|
||||
infixl 6 `diffDays`, `diffTimes`
|
||||
|
||||
diffDays :: E.SqlExpr (E.Value Day) -> E.SqlExpr (E.Value Day) -> E.SqlExpr (E.Value Int)
|
||||
-- ^ PostgreSQL is weird.
|
||||
diffDays a b = E.veryUnsafeCoerceSqlExprValue $ a E.-. b
|
||||
|
||||
diffTimes :: E.SqlExpr (E.Value UTCTime) -> E.SqlExpr (E.Value UTCTime) -> E.SqlExpr (E.Value NominalDiffTime)
|
||||
diffTimes a b = unsafeExtract "EPOCH" $ a E.-. b
|
||||
|
||||
unsafeExtract :: String -> E.SqlExpr (E.Value a) -> E.SqlExpr (E.Value b)
|
||||
unsafeExtract extr (E.ERaw vP vF) = E.ERaw E.Never $ \info ->
|
||||
let (vTLB, vVals) = vF info
|
||||
in ( "EXTRACT" <> E.parens (fromString extr <> " FROM " <> E.parensM vP vTLB)
|
||||
, vVals
|
||||
)
|
||||
unsafeExtract extr v = unsafeExtract extr $ construct v
|
||||
|
||||
|
||||
class ExprLift e a | e -> a where
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user