Merge branch 'master' into 184-replace-displayable-by-rendermessage

This commit is contained in:
Sarah Vaupel 2019-07-03 09:34:40 +02:00
commit 6aaa2d2093
15 changed files with 4647 additions and 5100 deletions

53
CHANGELOG.md Normal file
View File

@ -0,0 +1,53 @@
# Changelog
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.
## 1.0.0 (2019-07-03)
### Bug Fixes
* **sheet corrector assigment:** minor bugfix ([749cd2f](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/749cd2f))
* async table js util now knows current random css prefix ([cc90faf](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/cc90faf))
* **correction assignment:** correcting lecturer's names are shown now ([16c556b](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/16c556b))
* **corrector assignment:** sheet tabel mixed up columns sorted ([d07f53e](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/d07f53e))
* **datepicker:** hide number input spinners in datepicker ([2073130](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/2073130))
* **exam grading keys:** Fix spacing ([24aacef](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/24aacef))
* **exams:** Fix registration ([1684da0](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/1684da0))
* **fe:** style notifications acceptably for now ([fc80f08](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/fc80f08))
* **fe-async-table:** Emulate no-js behaviour when handling pagesize ([28dcc8d](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/28dcc8d))
* **fe-check-all:** use arrow fn to keep scope in event listeners ([09e681e](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/09e681e))
* **fe-deflist:** avoid horizontal scroll on pages with deflist ([16d422d](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/16d422d))
* **Help Widget, Corrector Assignment:** Modal Form closes in place; assign alerts ([89d5364](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/89d5364)), closes [#195](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/issues/195)
* **info-lecturer:** Touch ups ([e1e26ab](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/e1e26ab))
* **many occurrences throughout the project:** Fix typo: occurence -> occurrence everywhere ([96387cb](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/96387cb))
* filter submission by not having corrector ([3bded50](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/3bded50))
* minor heat correction for correction overview ([5546849](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/5546849))
* **ratings:** disallow ratings for graded sheets without point value ([463b2b7](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/463b2b7))
* **standard-version:** properly reset staging area before release ([5aa906e](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/5aa906e))
### Features
* **corrector-assignment:** show load/submission percentages ([228cd50](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/228cd50))
* make pagesize changes load async ([6486120](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/6486120))
* **development:** add commitlint to ensure proper commit msgs ([dd528c1](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/dd528c1))
* **development:** add standard-version for automatic changelog generation ([c495ef5](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/c495ef5))
* **exams:** CRU (no D) for exams ([67a50c9](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/67a50c9))
* **exams:** exam registration ([99184ff](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/99184ff))
* **exams:** Form validation ([6fb1399](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/6fb1399))
* **fe-heatmap:** add css class heated for heatmap elements ([b09b876](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/b09b876)), closes [#405](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/issues/405)
* **forms:** Introduce more convenient form validation ([f8d0b02](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/f8d0b02))
* **standard-version:** allow adding additional changes to release ([7ed6fe4](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/7ed6fe4))
* **standard-version:** complete release workflow ([605e62f](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/605e62f))
### Tests
* Does ist build with everything except for `makeClassy ''Entity`? Probably the functional dependency is to blame?! ([bb552c4](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/bb552c4))
* removing makeCLassyFor maybe build works then? ([2550f74](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/2550f74))
### BREAKING CHANGES
* **standard-version:** Start of new versioning schema

View File

@ -1,121 +0,0 @@
* Version 26.06.2019
Rudimentäre Unterstützung für Klausurbetrieb
* Version 07.06.2019
Abgaben können bestimmte Dateinamen und Endungen erzwingen
Übungsblätter bieten nun Zip-Archive für alle veröffentlichte Dateien, bzw. Dateigruppen an
* Version 20.05.2019
Komplett überarbeitete Funktionalität zur automatischen Verteilung von Korrekturen
* Version 13.05.2019
Kursverwalter können Teilnehmer hinzufügen
* Version 10.05.2019
Besseres Interface zum Einstellen von Abgebenden
Download von allen Dateien pro Kursmaterial/Übungsblatt
* Version 04.05.2019
Kursmaterial
* Version 29.04.2019
Tutorien
Anzeige von Korrektoren auf den Kursseiten
* Version 20.04.2019
Versand von Benachrichtigungen an Kursteilnehmer
Eintragen von Korrektoren und Kursverwaltern auch ohne bestehenden Account
* Version 27.03.2019
Kurse Veranstalter können nun mehrere Dozenten und Assistenten selbst eintragen
Erfassung Studiengangsdaten
* Version 20.03.2019
Kursanmeldung benötigen assoziertes Hauptfach (für Studierende mit mehreren Hauptfächern)
* Version 30.01.2019
Designänderungen
* Version 16.01.2019
Links für Bequemlichkeiten hinzugefügt (z.B. aktuelles Übungsblatt)
Liste zugewiesener Abgaben lassen sich nun filtern
Bugfix: Wenn zwischen Anzeige und Empfang eines Tabellen-Formulars Zeilen verschwinden wird nun eine sinnvolle Fehlermeldung angezeigt
* Version 30.11.2018
Bugfix: Übungsblätter im "bestehen nach Punkten"-Modus werden wieder korrekt gespeichert
* Version 29.11.2018
Bugfix: Formulare innerhalb von Tabellen funktionieren nun auch nach Javascript-Seitenwechsel oder Ändern der Sortierung
* Version 09.11.2018
Bugfix: Zahlreiche Knöpfe/Formulare funktionieren wieder bei eingeschaltetem Javascript
Verschiedene Verbesserungen für Korrektoren
* Version 19.10.2018
Benutzer können sich in der Testphase komplett selbst löschen
Hilfe Widget
Benachrichtigungen per eMail für einige Ereignisse
* Version 18.09.2018
Tooltips funktionieren auch ohne JavaScript
Kurskürzel müssen nur innerhalb eines Instituts eindeutig sein
User Data zeigt nun alle momentan gespeicherten Datensätze an
Unterstützung von Tabellenzusammenfassungen, z.B. Punktsummen
Intelligente Verteilung von Abgaben auf Korrektoren (z.B. bei Krankheit)
Übungsblätter können Abgabe von Dateien verbieten und angeben ob ZIP-Archive entpackt werden sollen
* Version 06.08.2018
Einführung einer Option, ob Dateien automatisch heruntergeladen werden sollen
* Version 01.08.2018
Verbesserter Campus-Login
(Ersatz einer C-Bibliothek mit undokumentierter Abhängigkeit durch selbst entwickelten Haskell-Code erlaubt nun auch Umlaute.)
* Version 31.07.2018
Viele Verbesserung zur Anzeige von Korrekturen
Kursliste über alle Semester hinweg (Top-Level-Navigation "Kurse"), wird in Zukunft Filter/Suchfunktion erhalten
* Version 10.07.2018
Bugfixes, wählbares Format für Datum
* Version 03.07.2018
Willkommen bei Uni2work aka "You-need-to-work!"

1
commitlint.config.js Normal file
View File

@ -0,0 +1 @@
module.exports = {extends: ['@commitlint/config-conventional']}

View File

@ -1162,3 +1162,6 @@ ExamFinishedMustBeAfterStart: "Bewertung abgeschlossen ab" muss nach Start liege
ExamClosedMustBeAfterFinished: "Noten stehen fest ab" muss nach "Bewertung abgeschlossen ab" liegen
ExamClosedMustBeAfterStart: "Noten stehen fest ab" muss nach Start liegen
ExamClosedMustBeAfterEnd: "Noten stehen fest ab" muss nach Ende liegen
VersionHistory: Versionsgeschichte
KnownBugs: Bekannte Bugs

9271
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -17,11 +17,13 @@
"frontend:test": "karma start --conf karma.conf.js",
"frontend:test:watch": "karma start --conf karma.conf.js --single-run false",
"frontend:build": "webpack",
"frontend:build:watch": "webpack --watch"
"frontend:build:watch": "webpack --watch",
"release": "standard-version -a"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
"pre-commit": "lint-staged",
"commit-msg": "commitlint --edit $HUSKY_GIT_PARAMS"
}
},
"lint-staged": {
@ -30,6 +32,15 @@
"git add"
]
},
"standard-version": {
"scripts": {
"postbump": "./sync-versions.hs && git add -- package.yaml"
},
"commitUrlFormat": "https://gitlab.cip.ifi.lmu.de/jost/UniWorX/commit/{{hash}}",
"compareUrlFormat": "https://gitlab.cip.ifi.lmu.de/jost/UniWorX/compare/{{previousTag}}...{{currentTag}}",
"issueUrlFormat": "https://gitlab.cip.ifi.lmu.de/jost/UniWorX/issues/{{id}}",
"userUrlFormat": "https://gitlab.cip.ifi.lmu.de/{{user}}"
},
"browserslist": [
"defaults"
],
@ -39,7 +50,9 @@
"@babel/plugin-proposal-class-properties": "^7.4.4",
"@babel/plugin-proposal-decorators": "^7.4.4",
"@babel/preset-env": "^7.4.5",
"autoprefixer": "^9.5.1",
"@commitlint/cli": "^8.0.0",
"@commitlint/config-conventional": "^8.0.0",
"autoprefixer": "^9.6.0",
"babel-core": "^6.26.3",
"babel-eslint": "^10.0.1",
"babel-loader": "^8.0.6",
@ -49,7 +62,7 @@
"css-loader": "^2.1.1",
"eslint": "^5.16.0",
"extract-text-webpack-plugin": "^4.0.0-beta.0",
"husky": "^2.3.0",
"husky": "^2.4.1",
"jasmine-core": "^3.4.0",
"karma": "^4.1.0",
"karma-chrome-launcher": "^2.2.0",
@ -58,20 +71,20 @@
"karma-jasmine-html-reporter": "^1.4.2",
"karma-mocha-reporter": "^2.2.5",
"karma-webpack": "^3.0.5",
"lint-staged": "^8.1.7",
"lint-staged": "^8.2.1",
"lodash.debounce": "^4.0.8",
"node-sass": "^4.12.0",
"npm-run-all": "^4.1.5",
"null-loader": "^2.0.0",
"postcss-loader": "^3.0.0",
"sass-loader": "^7.1.0",
"standard-version": "^6.0.1",
"style-loader": "^0.23.1",
"uglifyjs-webpack-plugin": "^2.1.3",
"webpack": "^4.32.2",
"webpack-cli": "^3.3.2"
"webpack": "^4.34.0",
"webpack-cli": "^3.3.4"
},
"dependencies": {
"flatpickr": "^4.5.7",
"npm": "^6.9.0"
"flatpickr": "^4.5.7"
}
}

View File

@ -1,5 +1,5 @@
name: uniworx
version: "0.0.0"
version: 1.0.0
dependencies:
# Due to a bug in GHC 8.0.1, we block its usage

View File

@ -1,6 +1,7 @@
{ nixpkgs ? import <nixpkgs> }:
let
inherit (nixpkgs {}) pkgs;
haskellPackages = import ./stackage.nix { inherit nixpkgs; };
drv = haskellPackages.callPackage ./uniworx.nix {};

View File

@ -1218,8 +1218,8 @@ assignHandler tid ssh csh cid assignSids = do
getCorrector (Just uid)
| Just (User{..},loadMap) <- Map.lookup uid correctorMap
= (nameEmailWidget userEmail userDisplayName userSurname, loadMap)
-- | Just (User{..} ) <- Map.lookup uid lecturerNames
-- = (nameEmailWidget userEmail userDisplayName userSurname, mempty) -- lecturers may also correct in rare cases
-- | Just (User{..} ) <- Map.lookup uid lecturerNames
-- = (nameEmailWidget userEmail userDisplayName userSurname, mempty) -- lecturers may also correct in rare cases
getCorrector _ = ([whamlet|_{MsgNoCorrectorAssigned}|], mempty)
-- avoid nestes hamlet $maybe with duplicated $nothing
getCorrSheetStatus :: Maybe UserId -> SheetName -> Maybe CorrectionInfo

View File

@ -30,16 +30,17 @@ getDataProtR = -- do
-- | Allgemeine Informationen
getInfoR :: Handler Html
getInfoR = do
let infoHeading = [whamlet|Re-Implementierung von <a href="https://uniworx.ifi.lmu.de/">UniWorX</a>|]
siteLayout infoHeading $ do
let features = $(widgetFile "featureList")
getInfoR = -- do
siteLayoutMsg MsgInfoHeading $ do
setTitleI MsgInfoHeading
let features = $(i18nWidgetFile "featureList")
changeLog = $(i18nWidgetFile "changelog")
knownBugs = $(i18nWidgetFile "knownBugs")
gitInfo :: Text
gitInfo = $gitDescribe <> " (" <> $gitCommitDate <> ")"
changeLog <- withUrlRenderer $(textFile "ChangeLog.md")
$(widgetFile "versionHistory")
getInfoLecturerR :: Handler Html
getInfoLecturerR =
siteLayoutMsg' MsgInfoLecturerTitle $ do

81
sync-versions.hs Executable file
View File

@ -0,0 +1,81 @@
#!/usr/bin/env stack
-- stack runghc --package libyaml
{-# LANGUAGE OverloadedStrings
, LambdaCase
, PackageImports
, NamedFieldPuns
, RecordWildCards
#-}
import "libyaml" Text.Libyaml
import Control.Monad.Trans.Resource
import Data.Conduit
import qualified Data.Conduit.List as C
import qualified Data.Aeson as JSON
import qualified Data.ByteString as BS
import qualified Data.ByteString.Char8 as CBS
import qualified Data.ByteString.Lazy as LBS
import qualified Data.HashMap.Lazy as HashMap
import Data.Text (Text)
import qualified Data.Text as Text
import qualified Data.Text.IO as Text
import qualified Data.Text.Encoding as Text
import Text.Printf
import System.IO (stderr)
main :: IO ()
main = do
Just packageJSON <- JSON.decode <$> LBS.readFile "package.json"
let
newVersion :: Text
Just (JSON.String newVersion) = HashMap.lookup ("version" :: Text) packageJSON
updatePackageYaml newVersion
updatePackageYaml :: Text -> IO ()
updatePackageYaml newVersion = do
(oldVersion, start, end) <- runResourceT . runConduit . (.|) (decodeFileMarked "package.yaml") $ do
awaitUntil $ \case
MarkedEvent{ yamlEvent = EventMappingStart _ _ _ } -> True
_ -> False
awaitUntil $ \case
MarkedEvent{ yamlEvent = EventScalar s _ _ _ }
| s == "version" -> True
_ -> False
_ <- await -- Throw away "version: "
Just MarkedEvent{ yamlEvent = EventScalar oldVersion' _ _ _, .. } <- await
let oldVersion = Text.decodeUtf8 oldVersion'
return (oldVersion, yamlStartMark, yamlEndMark)
encNewVersion <- runResourceT . runConduit . (.| encode) $ C.sourceList
[ EventStreamStart
, EventDocumentStart
, EventScalar (Text.encodeUtf8 newVersion) NoTag Any Nothing
, EventDocumentEnd
, EventStreamEnd
]
hPrintf stderr "package.yaml: %s -> %s\n" oldVersion newVersion
packageYaml <- BS.readFile "package.yaml"
BS.writeFile "package.yaml" . mconcat $
[ BS.take (fromIntegral $ yamlIndex start) packageYaml
, Text.encodeUtf8 . Text.strip $ Text.decodeUtf8 encNewVersion
, BS.drop (fromIntegral $ yamlIndex end) packageYaml
]
where
awaitUntil :: Monad m => (i -> Bool) -> ConduitM i o m ()
awaitUntil pred = do
nextIn <- await
case nextIn of
Nothing -> error "Ran out of input in awaitUntil"
Just inp
| pred inp -> leftover inp
Just _ -> awaitUntil pred

View File

@ -0,0 +1,124 @@
$newline never
<dl .deflist>
<dt .deflist__dt>26.06.2019
<dd .deflist__dd>
<ul>
<li>Rudimentäre Unterstützung für Klausurbetrieb
<dt .deflist__dt>07.06.2019
<dd .deflist__dd>
<ul>
<li>Abgaben können bestimmte Dateinamen und Endungen erzwingen
<li>Übungsblätter bieten nun Zip-Archive für alle veröffentlichte Dateien, bzw. Dateigruppen an
<dt .deflist__dt>20.05.2019
<dd .deflist__dd>
<ul>
<li>Komplett überarbeitete Funktionalität zur automatischen Verteilung von Korrekturen
<dt .deflist__dt>13.05.2019
<dd .deflist__dd>
<ul>
<li>Kursverwalter können Teilnehmer hinzufügen
<dt .deflist__dt>10.05.2019
<dd .deflist__dd>
<ul>
<li>Besseres Interface zum Einstellen von Abgebenden
<li>Download von allen Dateien pro Kursmaterial/Übungsblatt
<dt .deflist__dt>04.05.2019
<dd .deflist__dd>
<ul>
<li>Kursmaterial
<dt .deflist__dt>29.04.2019
<dd .deflist__dd>
<ul>
<li>Tutorien
<li>Anzeige von Korrektoren auf den Kursseiten
<dt .deflist__dt>20.04.2019
<dd .deflist__dd>
<ul>
<li>Versand von Benachrichtigungen an Kursteilnehmer
<li>Eintragen von Korrektoren und Kursverwaltern auch ohne bestehenden Account
<dt .deflist__dt>27.03.2019
<dd .deflist__dd>
<ul>
<li>Kurse Veranstalter können nun mehrere Dozenten und Assistenten selbst eintragen
<li>Erfassung Studiengangsdaten
<dt .deflist__dt>20.03.2019
<dd .deflist__dd>
<ul>
<li>Kursanmeldung benötigen assoziertes Hauptfach (für Studierende mit mehreren Hauptfächern)
<dt .deflist__dt>30.01.2019
<dd .deflist__dd>
<ul>
<li>Designänderungen
<dt .deflist__dt>16.01.2019
<dd .deflist__dd>
<ul>
<li>Links für Bequemlichkeiten hinzugefügt (z.B. aktuelles Übungsblatt)
<li>Liste zugewiesener Abgaben lassen sich nun filtern
<li><i>Bugfix</i>: Wenn zwischen Anzeige und Empfang eines Tabellen-Formulars Zeilen verschwinden wird nun eine sinnvolle Fehlermeldung angezeigt
<dt .deflist__dt>30.11.2018
<dd .deflist__dd>
<ul>
<li><i>Bugfix</i>: Übungsblätter im "bestehen nach Punkten"-Modus werden wieder korrekt gespeichert
<dt .deflist__dt>29.11.2018
<dd .deflist__dd>
<ul>
<li><i>Bugfix</i>: Formulare innerhalb von Tabellen funktionieren nun auch nach Javascript-Seitenwechsel oder Ändern der Sortierung
<dt .deflist__dt>09.11.2018
<dd .deflist__dd>
<ul>
<li><i>Bugfix</i>: Zahlreiche Knöpfe/Formulare funktionieren wieder bei eingeschaltetem Javascript
<li>Verschiedene Verbesserungen für Korrektoren
<dt .deflist__dt>19.10.2018
<dd .deflist__dd>
<ul>
<li>Benutzer können sich in der Testphase komplett selbst löschen
<li>Hilfe Widget
<li>Benachrichtigungen per eMail für einige Ereignisse
<dt .deflist__dt>18.09.2018
<dd .deflist__dd>
<ul>
<li>Tooltips funktionieren auch ohne JavaScript
<li>Kurskürzel müssen nur innerhalb eines Instituts eindeutig sein
<li>User Data zeigt nun alle momentan gespeicherten Datensätze an
<li>Unterstützung von Tabellenzusammenfassungen, z.B. Punktsummen
<li>Intelligente Verteilung von Abgaben auf Korrektoren (z.B. bei Krankheit)
<li>Übungsblätter können Abgabe von Dateien verbieten und angeben ob ZIP-Archive entpackt werden sollen
<dt .deflist__dt>06.08.2018
<dd .deflist__dd>
<ul>
<li>Einführung einer Option, ob Dateien automatisch heruntergeladen werden sollen
<dt .deflist__dt>01.08.2018
<dd .deflist__dd>
<ul>
<li>Verbesserter Campus-Login <br />
(Ersatz einer C-Bibliothek mit undokumentierter Abhängigkeit durch selbst entwickelten Haskell-Code erlaubt nun auch Umlaute)
<dt .deflist__dt>31.07.2018
<dd .deflist__dd>
<ul>
<li>Viele Verbesserung zur Anzeige von Korrekturen
<li>Kursliste über alle Semester hinweg (Top-Level-Navigation "Kurse"), wird in Zukunft Filter/Suchfunktion erhalten
<dt .deflist__dt>10.07.2018
<dd .deflist__dd>
<ul>
<li>Bugfixes
<li>Wählbares Format für Datum

View File

@ -6,7 +6,6 @@
<h4>
aus UniWorX bekannt:
<ul>
<li> Klausuren
<li> Zentralanmeldungen
<li>
<h4>

View File

@ -0,0 +1,6 @@
$newline never
<p>
Stand: Mai 2019
<ul>
<li>
Format von Bewertungsdateien ist noch provisorisch

View File

@ -1,23 +1,18 @@
<div .container>
$newline never
<section>
^{features}
<section>
^{features}
<section>
<h2>
_{MsgKnownBugs}
^{knownBugs}
<section>
<h2>
Bekannte Bugs
<h3>
Stand: Mai 2019
<ul>
<li>
Format von Bewertungsdateien ist noch provisorisch
<section>
<h2>
_{MsgVersionHistory}
<p #changelog>
^{changeLog}
<section>
<h2>
Versionsgeschichte
<p #changelog>
#{changeLog}
<section>
<p #gitrev>
#{gitInfo}
<section>
<p #gitrev>
#{gitInfo}