Merge branch 'ui_optis_0606'

This commit is contained in:
Felix Hamann 2018-06-07 11:48:30 +02:00
commit 38b879eab8
13 changed files with 116 additions and 90 deletions

View File

@ -49,3 +49,5 @@ SubmissionAlreadyExistsFor user@Text: #{user} hat bereits eine Abgabe zu diesem
EMailUnknown email@Text: E-Mail #{email} gehört zu keinem bekannten Benutzer. EMailUnknown email@Text: E-Mail #{email} gehört zu keinem bekannten Benutzer.
NotAParticipant user@Text tid@TermIdentifier csh@Text: #{user} ist nicht im Kurs #{termToText tid}-#{csh} angemeldet. NotAParticipant user@Text tid@TermIdentifier csh@Text: #{user} ist nicht im Kurs #{termToText tid}-#{csh} angemeldet.
HomeHeading: Startseite
TermsHeading: Semesterübersicht

View File

@ -1,7 +1,7 @@
{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TemplateHaskell, QuasiQuotes #-}
{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE ViewPatterns #-} {-# LANGUAGE ViewPatterns #-}
@ -434,11 +434,14 @@ instance Yesod UniWorX where
-- value passed to hamletToRepHtml cannot be a widget, this allows -- value passed to hamletToRepHtml cannot be a widget, this allows
-- you to use normal widget features in default-layout. -- you to use normal widget features in default-layout.
let let
navbar :: Widget navbar :: Widget
navbar = $(widgetFile "widgets/navbar") navbar = $(widgetFile "widgets/navbar")
asidenav :: Widget asidenav :: Widget
asidenav = $(widgetFile "widgets/asidenav") asidenav = $(widgetFile "widgets/asidenav")
contentHeadline :: Maybe Widget
contentHeadline = pageHeading =<< mcurrentRoute
breadcrumbs :: Widget breadcrumbs :: Widget
breadcrumbs = $(widgetFile "widgets/breadcrumbs") breadcrumbs = $(widgetFile "widgets/breadcrumbs")
pageactionprime :: Widget pageactionprime :: Widget
@ -465,7 +468,7 @@ instance Yesod UniWorX where
$(widgetFile "standalone/showHide") $(widgetFile "standalone/showHide")
$(widgetFile "standalone/inputs") $(widgetFile "standalone/inputs")
withUrlRenderer $(hamletFile "templates/default-layout-wrapper.hamlet") withUrlRenderer $(hamletFile "templates/default-layout-wrapper.hamlet")
-- The page to be redirected to when authentication is required. -- The page to be redirected to when authentication is required.
authRoute _ = Just $ AuthR LoginR authRoute _ = Just $ AuthR LoginR
@ -595,6 +598,14 @@ pageActions (TermCourseListR _) =
pageActions _ = [] pageActions _ = []
pageHeading :: Route UniWorX -> Maybe Widget
pageHeading HomeR
= Just [whamlet|_{MsgHomeHeading}|]
pageHeading TermShowR
= Just [whamlet|_{MsgTermsHeading}|]
pageHeading _
= Nothing
defaultLinks :: [MenuTypes] defaultLinks :: [MenuTypes]
defaultLinks = -- Define the menu items of the header. defaultLinks = -- Define the menu items of the header.
[ NavbarRight $ MenuItem [ NavbarRight $ MenuItem
@ -622,21 +633,15 @@ defaultLinks = -- Define the menu items of the header.
, menuItemAccessCallback' = isJust <$> maybeAuthPair , menuItemAccessCallback' = isJust <$> maybeAuthPair
} }
, NavbarAside $ MenuItem , NavbarAside $ MenuItem
{ menuItemLabel = "Aktuelle Veranstaltungen" { menuItemLabel = "Veranstaltungen"
, menuItemIcon = Just "book" , menuItemIcon = Just "book"
, menuItemRoute = CourseListR -- should be CourseListActiveR or similar in the future , menuItemRoute = CourseListR -- should be CourseListActiveR or similar in the future
, menuItemAccessCallback' = return True , menuItemAccessCallback' = return True
} }
, NavbarAside $ MenuItem , NavbarAside $ MenuItem
{ menuItemLabel = "Alte Veranstaltungen" { menuItemLabel = "Semester"
, menuItemIcon = Just "book" , menuItemIcon = Nothing
, menuItemRoute = CourseListR -- should be CourseListInactiveR or similar in the future , menuItemRoute = CourseListR -- should be TermListR ,,,
, menuItemAccessCallback' = return True
}
, NavbarAside $ MenuItem
{ menuItemLabel = "Veranstaltungen"
, menuItemIcon = Just "book"
, menuItemRoute = CourseListR
, menuItemAccessCallback' = return True , menuItemAccessCallback' = return True
} }
, NavbarAside $ MenuItem , NavbarAside $ MenuItem

View File

@ -32,3 +32,6 @@
.glyphicon--logout::before { .glyphicon--logout::before {
content: '\e163'; content: '\e163';
} }
.glyphicon--none::before {
content: '';
}

View File

@ -1,8 +1,6 @@
.tab-group { .tab-group {
/* box-shadow: 0 0 0 18px white, 0 0 0 20px #b3b7c1; */
border-top: 2px solid #dcdcdc; border-top: 2px solid #dcdcdc;
padding-top: 30px; padding-top: 30px;
margin-top: 40px;
} }
.tab-group-openers { .tab-group-openers {

View File

@ -31,8 +31,13 @@
\ bis #{formatTimeGerWD regTo} \ bis #{formatTimeGerWD regTo}
$# if allowed to register $# if allowed to register
<div .course__registration> <div .course__registration.container>
<a href="#">Anmelden <button class="btn btn-primary">
<a href="#">Anmelden
$# if already registered
<div .course__registration.container>
<button class="btn btn-info">
<a href="#">Abmelden
$# <form method=post action=@{CourseR tid csh CShow} enctype=#{regEnctype}> $# <form method=post action=@{CourseR tid csh CShow} enctype=#{regEnctype}>
$# ^{regWidget} $# ^{regWidget}
@ -63,11 +68,7 @@
<td>Do 18.04.18 <td>Do 18.04.18
<td>NotGraded <td>NotGraded
<tr .no-hover.no-stripe> <tr .no-hover.no-stripe>
<td>&nbsp; <td colspan="4">
<td>&nbsp;
<td>&nbsp;
<td>&nbsp;
<td>
<a href="/course/S2018/ffp/ex/new" #modal-toggler__new-sheet>Neues Übungsblatt anlegen <a href="/course/S2018/ffp/ex/new" #modal-toggler__new-sheet>Neues Übungsblatt anlegen
<div .tab data-tab-name="Übungsgruppen"> <div .tab data-tab-name="Übungsgruppen">
<h3 .tab-title>Übungsgruppen <h3 .tab-title>Übungsgruppen
@ -82,16 +83,14 @@
<th>Anmeldung bis <th>Anmeldung bis
<tbody> <tbody>
<tr> <tr>
<td> <td>Gruppe 1
<a href="#">Gruppe 1
<td>Montag 10:00 - 12:00 <td>Montag 10:00 - 12:00
<td>N/A <td>N/A
<td>2/10 <td>2/10
<td>Tutor1 Tutoren <td>Tutor1 Tutoren
<td>Do 21.02.2019, 19:00 <td>Do 21.02.2019, 19:00
<tr> <tr>
<td> <td>Gruppe 2
<a href="#">Gruppe 2
<td>Montag 12:00 - 14:00 <td>Montag 12:00 - 14:00
<td>N/A <td>N/A
<td>0/10 <td>0/10

View File

@ -0,0 +1,3 @@
.course__registration {
margin-top: 20px;
}

View File

@ -13,6 +13,10 @@
$with status2 <- bool status "info" (status == "") $with status2 <- bool status "info" (status == "")
<div class="alert alert-#{status2}">#{msg} <div class="alert alert-#{status2}">#{msg}
$maybe headline <- contentHeadline
<h1>
^{headline}
<!-- prime page actions --> <!-- prime page actions -->
^{pageactionprime} ^{pageactionprime}

View File

@ -126,12 +126,11 @@ table {
th, td { th, td {
text-align: left; text-align: left;
padding: 0 13px 0 7px; padding: 7px;
vertical-align: baseline; vertical-align: baseline;
} }
th:first-child, th:first-child,
td:first-child { td:first-child {
padding-left: 0;
border-left: 0; border-left: 0;
} }
th { th {
@ -189,21 +188,15 @@ button,
transition: all .1s; transition: all .1s;
font-size: 16px; font-size: 16px;
cursor: pointer; cursor: pointer;
border-radius: 4px;
display: inline-block; display: inline-block;
}
input.btn-primary,
button.btn-primary,
a.btn.btn-primary,
.btn.btn-primary {
background-color: var(--primarybase);
}
input.btn-info, a {
button.btn-info, color: white;
a.btn.btn-info, }
.btn.btn-info {
background-color: var(--infobase) a:hover {
color: white;
}
} }
input[type="submit"][disabled], input[type="submit"][disabled],
@ -226,6 +219,20 @@ a.btn:not([disabled]):hover,
color: white; color: white;
} }
input.btn-primary,
button.btn-primary,
a.btn.btn-primary,
.btn.btn-primary {
background-color: var(--primarybase);
}
input.btn-info,
button.btn-info,
a.btn.btn-info,
.btn.btn-info {
background-color: var(--infobase)
}
input[type="submit"].btn-info:hover, input[type="submit"].btn-info:hover,
input[type="button"].btn-info:hover, input[type="button"].btn-info:hover,
button.btn-info:hover, button.btn-info:hover,
@ -237,4 +244,3 @@ a.btn.btn-info:hover,
.alert-debug { .alert-debug {
background-color: rgb(240, 30, 240); background-color: rgb(240, 30, 240);
} }

View File

@ -43,21 +43,3 @@
^{modal ".toggler2" (Just "Test Inhalt für Modal")} ^{modal ".toggler2" (Just "Test Inhalt für Modal")}
<div .btn.toggler2>Klick mich für Content-Test <div .btn.toggler2>Klick mich für Content-Test
<noscript>(Für Modals bitte JS aktivieren)</noscript> <noscript>(Für Modals bitte JS aktivieren)</noscript>
<li><br>
Multi-File-Input für bereits hochgeladene Dateien:
<form>
<div .form-group>
<label .form-group__label>Datei(en)
$# file 1
<div .file-checkbox__container>
<label .file-checkbox__label.reactive-label.btn for="f2-1">Datenschutz.txt
<div .checkbox>
<input .file-checkbox id="f2-1" name="f2" value="Datenschutz.txt" type="checkbox">
<label for="f2-1">
$# file 2
<div .file-checkbox__container>
<label .file-checkbox__label.reactive-label.btn for="f2-2">fill-db.hs
<div .checkbox>
<input .file-checkbox id="f2-2" name="f2" value="fill-db.hs" type="checkbox">
<label for="f2-2">

View File

@ -13,7 +13,7 @@ form {
grid-gap: 5px; grid-gap: 5px;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
margin: 10px 0; margin: 17px 0;
padding-left: 10px; padding-left: 10px;
border-left: 2px solid transparent; border-left: 2px solid transparent;
} }
@ -44,20 +44,37 @@ input[type="password"],
input[type="url"], input[type="url"],
input[type="number"], input[type="number"],
input[type="email"] { input[type="email"] {
background-color: rgba(0, 0, 0, 0.05); /* from bulma.css */
padding: 7px 3px 7px; background-color: #fff;
outline: 0; border-color: #dbdbdb;
border: 0; color: #363636;
border-bottom: 2px solid var(--darkbase); box-shadow: inset 0 2px 3px 1px rgba(50,50,50,.1);
box-shadow: 0 2px 13px rgba(0, 0, 0, 0.05);
color: var(--fontbase);
transition: all .1s;
font-size: 16px;
min-width: 400px; min-width: 400px;
-webkit-appearance: none;
align-items: center;
border: 1px solid transparent;
border-radius: 4px;
display: inline-flex;
font-size: 1rem;
height: 2.25em;
justify-content: flex-start;
line-height: 1.5;
padding-bottom: calc(.375em - 1px);
padding-left: calc(.625em - 1px);
padding-right: calc(.625em - 1px);
padding-top: calc(.375em - 1px);
position: relative;
vertical-align: top;
} }
.form-group--required { .form-group--required {
label::before {
content: '*';
position: absolute;
left: -14px;
}
input, textarea { input, textarea {
border-bottom-color: var(--lighterbase); border-bottom-color: var(--lighterbase);
} }
@ -82,32 +99,42 @@ input[type="password"]:focus,
input[type="url"]:focus, input[type="url"]:focus,
input[type="number"]:focus, input[type="number"]:focus,
input[type="email"]:focus { input[type="email"]:focus {
border-bottom-color: var(--lightbase); /* border-bottom-color: var(--lightbase);
background-color: transparent; background-color: transparent;
box-shadow: 0 0 13px var(--lighterbase); box-shadow: 0 0 13px var(--lighterbase); */
border-color: #3273dc;
box-shadow: 0 0 0 0.125em rgba(50,115,220,.25);
outline: 0;
} }
/* BUTTON STYLE SEE default-layout.lucius */ /* BUTTON STYLE SEE default-layout.lucius */
/* TEXTAREAS */ /* TEXTAREAS */
textarea { textarea {
outline: 0; -webkit-appearance: none;
border: 0; border: 1px solid transparent;
padding: 7px 4px; border-radius: 2px;
min-width: 400px; display: inline-flex;
min-height: 100px; font-size: 1rem;
font-family: var(--fontfamilybase); height: 170px;
font-size: 16px; width: 400px;
color: var(--fontbase); line-height: 1.5;
background-color: rgba(0, 0, 0, 0.05); padding-bottom: calc(.375em - 1px);
box-shadow: 0 2px 13px rgba(0, 0, 0, 0.05); padding-left: calc(.625em - 1px);
border-bottom: 2px solid var(--darkbase); padding-right: calc(.625em - 1px);
padding-top: calc(.375em - 1px);
position: relative;
vertical-align: top;
background-color: #fff;
border-color: #dbdbdb;
color: #363636;
box-shadow: inset 0 1px 2px rgba(10,10,10,.1);
} }
textarea:focus { textarea:focus {
background-color: transparent; border-color: #3273dc;
border-bottom-color: var(--lightbase); box-shadow: 0 0 0 0.125em rgba(50,115,220,.25);
box-shadow: 0 0 13px var(--lighterbase); outline: 0;
} }
/* CUSTOM LEGACY CHECKBOX AND RADIO BOXES */ /* CUSTOM LEGACY CHECKBOX AND RADIO BOXES */

View File

@ -1,4 +1,2 @@
<div .container> <div .container>
<h1>Semesterübersicht
^{table} ^{table}

View File

@ -8,8 +8,7 @@ $newline never
$of NavbarAside (MenuItem label mIcon route _) $of NavbarAside (MenuItem label mIcon route _)
<li .asidenav__list-item :Just route == mcurrentRoute:.asidenav__list-item--active> <li .asidenav__list-item :Just route == mcurrentRoute:.asidenav__list-item--active>
<a .asidenav__link-wrapper href=@{route}> <a .asidenav__link-wrapper href=@{route}>
$if isJust mIcon <div .glyphicon.glyphicon--#{fromMaybe "none" mIcon}>
<div .glyphicon.glyphicon--#{fromMaybe "" mIcon}>
<div .asidenav__link-label>#{label} <div .asidenav__link-label>#{label}
$of _ $of _

View File

@ -1,10 +1,10 @@
.page-nav-prime { .page-nav-prime {
background-color: var(--lightgreybase); background-color: var(--lightgreybase);
padding: 13px; padding: 13px;
margin-top: 30px;
} }
.page-nav-prime .pagenav__list { .page-nav-prime .pagenav__list {
margin: 7px 0 0;
display: block; display: block;
} }
.page-nav-prime .pagenav__list-item { .page-nav-prime .pagenav__list-item {