'Nächster Topictreff' und 'rundgang' eingebunden
This commit is contained in:
parent
5f7b977f1c
commit
ea5e59b45d
80
func.go
80
func.go
|
@ -32,6 +32,7 @@ func handler() {
|
|||
httpHandleFunc("style/main.css", "./web/styles/main.css", "text/css")
|
||||
httpHandleFunc("style/kontakt.css", "./web/styles/kontakt.css", "text/css")
|
||||
httpHandleFunc("style/home.css", "./web/styles/home.css", "text/css")
|
||||
httpHandleFunc("style/events.css", "./web/styles/events.css", "text/css")
|
||||
|
||||
//Images
|
||||
httpHandleFunc("image/logo_ctdo.svg", "./web/images/logo_ctdo.svg", "image/svg+xml")
|
||||
|
@ -104,6 +105,14 @@ func getRoomState() status {
|
|||
return *roomState
|
||||
}
|
||||
|
||||
func htmlNewBanner(text string, link string) string {
|
||||
output := ""
|
||||
|
||||
output += htmlElement("div", htmlLinkElement(text, link, true, ""), "class=\"newBanner\"")
|
||||
|
||||
return output
|
||||
}
|
||||
|
||||
func htmlReplacer(input string, activePage string) string {
|
||||
output := strings.ReplaceAll(input, "!NAV", htmlNav(getPages(), activePage))
|
||||
|
||||
|
@ -115,5 +124,76 @@ func htmlReplacer(input string, activePage string) string {
|
|||
|
||||
output = strings.ReplaceAll(output, "!FOOTERNAV", htmlNav(getFooterPages(), activePage))
|
||||
|
||||
if getNextTopic().days == 0 {
|
||||
output = strings.ReplaceAll(output, "!TOPICTREFF", htmlElement("h3", "Nächster Topictreff findet Heute statt!", ""))
|
||||
} else if getNextTopic().days == 1 {
|
||||
output = strings.ReplaceAll(output, "!TOPICTREFF", htmlElement("h3", "Nächster Topictreff findet Morgen statt!", "class=\"topic\"")+htmlElement("p", "Am "+getNextTopic().date, "class=\"topic\""))
|
||||
} else if getNextTopic().days < 10 {
|
||||
output = strings.ReplaceAll(output, "!TOPICTREFF", htmlElement("h3", "Nächster Topictreff findet in "+strconv.FormatInt(int64(getNextTopic().days), 10)+" Tagen statt!", "class=\"topic\"")+htmlElement("p", "Am "+getNextTopic().date, "class=\"topic\""))
|
||||
} else {
|
||||
output = strings.ReplaceAll(output, "!TOPICTREFF", htmlElement("h3", "Nächster Topictreff findet in "+string(getNextTopic().days)+" Tagen statt!", "class=\"topic\"")+htmlElement("p", "Am "+getNextTopic().date, "class=\"topic\""))
|
||||
}
|
||||
|
||||
output = strings.ReplaceAll(output, "!NEWBANNER", htmlNewBanner("Rundgang", "https://www.chaostreff-dortmund.de/rundgang/"))
|
||||
|
||||
return output
|
||||
}
|
||||
|
||||
func ifFloatRange(variable float64, min float64, max float64, includeMin bool, includeMax bool) bool {
|
||||
a, b := false, false
|
||||
|
||||
if includeMin {
|
||||
a = variable >= min
|
||||
} else {
|
||||
a = variable > min
|
||||
}
|
||||
|
||||
if includeMax {
|
||||
b = variable <= max
|
||||
} else {
|
||||
b = variable < max
|
||||
}
|
||||
|
||||
return a && b
|
||||
}
|
||||
|
||||
func stringSplit(input string, sep string) []string {
|
||||
output := *new([]string)
|
||||
for _, element := range strings.Split(input, sep) {
|
||||
if element != "" {
|
||||
output = append(output, element)
|
||||
}
|
||||
}
|
||||
return output
|
||||
}
|
||||
|
||||
// jeden ersten donnerstag und dritten dienstag
|
||||
func getNextTopic() topic {
|
||||
date := time.Now()
|
||||
|
||||
var output topic
|
||||
|
||||
for i := 0; i < 31; i++ {
|
||||
newDate := stringSplit(date.AddDate(0, 0, 1*i).Format(time.UnixDate), " ")
|
||||
|
||||
if newDate[0] == "Thu" || newDate[0] == "Tue" {
|
||||
dayA, errA := strconv.Atoi(newDate[2])
|
||||
if errA != nil {
|
||||
panic(errA)
|
||||
}
|
||||
|
||||
dayB, errB := strconv.Atoi(newDate[2])
|
||||
if errB != nil {
|
||||
panic(errB)
|
||||
}
|
||||
|
||||
if ifFloatRange(float64(dayA)/7, 0, 1, false, true) || (ifFloatRange(float64(dayB)/7, 2, 3, false, true) && newDate[0] == "Tue") {
|
||||
output.date = date.AddDate(0, 0, 1*i).Format("02.01.2006")
|
||||
output.days = i
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return output
|
||||
}
|
||||
|
|
|
@ -16,3 +16,8 @@ type event struct {
|
|||
media []string
|
||||
date string
|
||||
}
|
||||
|
||||
type topic struct {
|
||||
date string
|
||||
days int
|
||||
}
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
package main
|
||||
|
||||
func testFuncOutput(functionOutput any, rightOutput any) bool {
|
||||
return functionOutput == rightOutput
|
||||
}
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="stylesheet" href="/style/main.css">
|
||||
</head>
|
||||
<body>
|
||||
!NEWBANNER
|
||||
<header>
|
||||
<img src="/image/logo_ctdo.svg" alt="ctdo logo">
|
||||
!NAV
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="stylesheet" href="/style/main.css">
|
||||
</head>
|
||||
<body>
|
||||
!NEWBANNER
|
||||
<header>
|
||||
<img src="/image/logo_ctdo.svg" alt="ctdo logo">
|
||||
!NAV
|
||||
|
|
|
@ -6,10 +6,12 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>ctdo - events</title>
|
||||
<link rel="stylesheet" href="/style/main.css">
|
||||
<link rel="stylesheet" href="/style/events.css">
|
||||
</head>
|
||||
<body>
|
||||
!NEWBANNER
|
||||
<header>
|
||||
<img src="/image/logo_ctdo.svg" alt="ctdo logo">
|
||||
<img src="/image/logo_ctdo.svg" alt="ctdo logo" style="width:100%;">
|
||||
!NAV
|
||||
</header>
|
||||
<main>
|
||||
|
|
|
@ -9,12 +9,21 @@
|
|||
<link rel="stylesheet" href="/style/home.css">
|
||||
</head>
|
||||
<body>
|
||||
!NEWBANNER
|
||||
<header>
|
||||
<img src="/image/logo_ctdo.svg" alt="ctdo logo">
|
||||
!NAV
|
||||
</header>
|
||||
<main>
|
||||
<div class="rundgang">
|
||||
<a href="https://www.chaostreff-dortmund.de/rundgang/" target="_blank" class="imgLink">
|
||||
<div>
|
||||
<img src="/image/header.jpg" alt="Raum 2 mit gemütlichen Sofas">
|
||||
<h2>Rundgang</h2>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
!RAUMSTATUS
|
||||
|
||||
<h2>Hi</h2>
|
||||
|
@ -30,7 +39,8 @@
|
|||
</p>
|
||||
|
||||
<h2>Die nächsten Events</h2>
|
||||
<p>Es sind gerade keine besonderen Veranstaltungen geplant.</p>
|
||||
!TOPICTREFF
|
||||
!NEXTEVENTS
|
||||
</main>
|
||||
<footer>
|
||||
!FOOTERNAV
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="stylesheet" href="/style/main.css">
|
||||
</head>
|
||||
<body>
|
||||
!NEWBANNER
|
||||
<header>
|
||||
<img src="/image/logo_ctdo.svg" alt="ctdo logo">
|
||||
!NAV
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<link rel="stylesheet" href="/style/kontakt.css">
|
||||
</head>
|
||||
<body>
|
||||
!NEWBANNER
|
||||
<header>
|
||||
<img src="/image/logo_ctdo.svg" alt="ctdo logo">
|
||||
!NAV
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="stylesheet" href="/style/main.css">
|
||||
</head>
|
||||
<body>
|
||||
!NEWBANNER
|
||||
<header>
|
||||
<img src="/image/logo_ctdo.svg" alt="ctdo logo">
|
||||
!NAV
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="stylesheet" href="/style/main.css">
|
||||
</head>
|
||||
<body>
|
||||
!NEWBANNER
|
||||
<header>
|
||||
<img src="/image/logo_ctdo.svg" alt="ctdo logo">
|
||||
!NAV
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="stylesheet" href="/style/main.css">
|
||||
</head>
|
||||
<body>
|
||||
!NEWBANNER
|
||||
<header>
|
||||
<img src="/image/logo_ctdo.svg" alt="ctdo logo">
|
||||
!NAV
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="stylesheet" href="/style/main.css">
|
||||
</head>
|
||||
<body>
|
||||
!NEWBANNER
|
||||
<header>
|
||||
<img src="/image/logo_ctdo.svg" alt="ctdo logo">
|
||||
!NAV
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="stylesheet" href="/style/main.css">
|
||||
</head>
|
||||
<body>
|
||||
!NEWBANNER
|
||||
<header>
|
||||
<img src="/image/logo_ctdo.svg" alt="ctdo logo">
|
||||
!NAV
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="stylesheet" href="/style/main.css">
|
||||
</head>
|
||||
<body>
|
||||
!NEWBANNER
|
||||
<header>
|
||||
<img src="/image/logo_ctdo.svg" alt="ctdo logo">
|
||||
!NAV
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<link rel="stylesheet" href="/style/main.css">
|
||||
</head>
|
||||
<body>
|
||||
!NEWBANNER
|
||||
<header>
|
||||
<img src="/image/logo_ctdo.svg" alt="ctdo logo">
|
||||
!NAV
|
||||
|
|
|
@ -2,3 +2,7 @@ main img {
|
|||
max-width: 950px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
main div.rundgang {
|
||||
height: 140px;
|
||||
}
|
|
@ -27,6 +27,39 @@ a:visited {
|
|||
color: #bb66ff !important;
|
||||
}
|
||||
|
||||
a.imgLink div {
|
||||
position: relative;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
|
||||
a.imgLink:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a.imgLink div {
|
||||
position: relative;
|
||||
text-align: center;
|
||||
color: white !important;
|
||||
font-size: 0;
|
||||
transform: scale(1);
|
||||
transition: transform .5s;
|
||||
text-shadow: 2px 2px black;
|
||||
}
|
||||
|
||||
a.imgLink div:hover {
|
||||
font-size: 200%;
|
||||
transform: scale(.9);
|
||||
transition: font-size .5s, transform .5s;
|
||||
}
|
||||
|
||||
a.imgLink div h2 {
|
||||
position: absolute;
|
||||
top: 35%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
header {
|
||||
background-color: var(--logo-background-color);
|
||||
}
|
||||
|
@ -107,6 +140,39 @@ iframe.osm {
|
|||
display: block;
|
||||
}
|
||||
|
||||
div.newBanner {
|
||||
display: block;
|
||||
position: fixed;
|
||||
top: 30px;
|
||||
left: -40px;
|
||||
background-color: #DD0000;
|
||||
text-align: center;
|
||||
transform: rotateZ(-45deg);
|
||||
transition: transform .5s;
|
||||
}
|
||||
|
||||
div.newBanner:hover {
|
||||
transform: rotateZ(-45deg) scale(1.4);
|
||||
transition: transform .5s;
|
||||
}
|
||||
|
||||
div.newBanner a {
|
||||
color: white !important;
|
||||
padding: 100px 50px 100px 50px;
|
||||
}
|
||||
|
||||
div.newBanner a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
h3.topic {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
p.topic {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 885px) {
|
||||
nav ul li {
|
||||
display: block;
|
||||
|
|
Loading…
Reference in New Issue