From 29a41f5ad8f21d0fd971e6a27c55f55cd2506867 Mon Sep 17 00:00:00 2001
From: Peder Bergebakken Sundt <pbsds@hotmail.com>
Date: Fri, 10 Aug 2018 00:19:16 +0200
Subject: [PATCH] Fix admin event editor

The date field was a lot of work, but it's a lot easier to use now.
---
 www/admin/aktiviteter/edit.php   | 84 ++++++++++++++++++++------------
 www/admin/aktiviteter/update.php | 31 ++++++++++--
 www/css/style.css                |  4 ++
 3 files changed, 85 insertions(+), 34 deletions(-)

diff --git a/www/admin/aktiviteter/edit.php b/www/admin/aktiviteter/edit.php
index 69435f9..4825cb9 100644
--- a/www/admin/aktiviteter/edit.php
+++ b/www/admin/aktiviteter/edit.php
@@ -14,6 +14,7 @@ $as = new SimpleSAML_Auth_Simple('default-sp');
 $as->requireAuth();
 $attrs = $as->getAttributes();
 $uname = $attrs['uid'][0];
+$name = $attrs['cn'][0];
 
 if(!$userManager->hasGroup($uname, 'aktiviteter')){
 	echo 'Her har du ikke lov\'t\'å\'værra!!!';
@@ -36,24 +37,31 @@ if(isset($_GET['id'])){
 }
 
 $today = new DateTimeImmutable;
-$defaultStart = $today->format("Y-m-d H:00:00");
-$inOneHour = $today->add(new DateInterval('PT1H'));
-$defaultEnd = $inOneHour->format("Y-m-d H:00:00");
+$today = $today->setTime(18, 15);
+$defaultStart = $today->format("Y-m-d H:15:00");
+$inTwoHours = $today->add(new DateInterval('PT1H45M'));
+$defaultEnd = $inTwoHours->format("Y-m-d H:00:00");
 
-$event = new \pvv\side\SimpleEvent(
-	0,
-	'Kul Hendelse',
-	$today,
-	$inOneHour,
-	'PVV',
-	'Norge et sted',
-	'her skjer det noe altså'
-);
+$event;
 if($new == 0){
 	$event = $customActivity->getEventByID($eventID);
 }
-?>
+else {
+	$event = new \pvv\side\SimpleEvent(
+	   0,
+	   '',
+	   $today,
+	   $inTwoHours,
+	   '',
+	   '',
+	   ''
+   );
+}
 
+
+?>
+<!DOCTYPE html>
+<html lang="no" locale="no">
 <head>
 	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 	<link rel="stylesheet" href="../../css/normalize.css">
@@ -75,34 +83,50 @@ if($new == 0){
 
 		<h2><?= ($new == 1 ? "Ny hendelse" : "Rediger hendelse"); ?></h2>
 
-		<form action="update.php", method="post" class="gridsplit5050">
+		<form action="update.php", method="post" class="gridsplit fullwidth_inputs">
 			<div class="gridl">
 				<p class="subtitle">Tittel</p>
-				<?= '<input type="text" name="title" value="' . $event->getName(). '" class="boxinput">' ?><br>
+				<input type="text" name="title" value="<?= $event->getName() ?>" class="boxinput" required placeholder="En kul hendelse"><br>
+				
+				<div class="gridsplit5050">
+					<div class="gridl">
+						<p class="subtitle">Arrangør</p>
+						<input type="text" name="organiser" value="<?= $event->getOrganiser() ?>" class="boxinput" required placeholder="<?= $name ?>"><br>
+					</div>
+					<div class="gridr noborder">
+						<p class="subtitle">Sted</p>
+						<input type="text" name="location" value="<?= $event->getLocation() ?>" class="boxinput" required placeholder="Terminalrommet"><br>
+					</div>
+				</div>
 
 				<p class="subtitle">Beskrivelse</p>
-				<textarea name="desc" cols="40" rows="5" class="boxinput"><?= implode($event->getDescription(), "\n"); ?></textarea>
+				<textarea name="desc" rows="8" class="boxinput" placeholder="Beskrivese" required><?= implode($event->getDescription(), "\n"); ?></textarea>
+				
+				
 			</div>
 
-			<div class="gridr noborder">
-				<p class="subtitle">Starttid (YYYY-MM-DD HH:MM:SS)</p>
-				<?= '<input name="start" type="text"  class="boxinput" value="' . $event->getStart()->format('Y-m-d H:00:00') . '"><br>' ?>
-
-				<p class="subtitle">Sluttid (YYYY-MM-DD HH:MM:SS)</p>
-				<?= '<input name="end" type="text"  class="boxinput" value="' . $event->getStop()->format('Y-m-d H:00:00') . '"><br>' ?>
-
-				<p class="subtitle">Arrangør</p>
-				<?= '<input type="text" name="organiser" value="' . $event->getOrganiser(). '" class="boxinput">' ?><br>
-
-				<p class="subtitle">Sted</p>
-				<?= '<input type="text" name="location" value="' . $event->getLocation(). '" class="boxinput">' ?><br>
+			<div class="gridr" style="line-height: 1.3em;">
+				<h4>Starttid</h4><br>
+				<i>Måned:</i><br>
+				<input name="start_mon" type="month" class="boxinput" required value="<?= $event->getStart()->format('Y-m') ?>"><br>
+				<i>Dag:</i><br>
+				<input name="start_day" type="number" min="1" max="31" required class="boxinput" value="<?= $event->getStart()->format('d') ?>"><br>
+				<i>Klokkeslett:</i><br>
+				<input name="start_time" type="time" class="boxinput" required value="<?= $event->getStart()->format('H:i:s') ?>"><br>
+				<br>
+				<h4>Varighet</h4><br>
+				<?php $diff = $event->getStart()->diff($event->getStop()); ?>
+				<i>Timer:</i><br>
+				<input name="lasts_hours" type="number" min="0" class="boxinput" required value="<?= $diff->h ?>"><br>
+				<i>Minutter:</i><br>
+				<input name="lasts_minutes" type="number" min="0" max="59" class="boxinput" required value="<?= $diff->i ?>"><br>
+				
 			</div>
 
-			<?= '<input type="hidden" name="id" value="' . $event->getID() . '" />' ?>
+			<input type="hidden" name="id" value="<?= $event->getID() ?>" />
 
 			<div class="allgrids" style="margin-top: 2em;">
 				<hr class="ruler">
-
 				<input type="submit" class="btn" value="Lagre"></a>
 			</div>
 		</form>
diff --git a/www/admin/aktiviteter/update.php b/www/admin/aktiviteter/update.php
index 642f39d..8f5b161 100644
--- a/www/admin/aktiviteter/update.php
+++ b/www/admin/aktiviteter/update.php
@@ -18,7 +18,15 @@ if(!$userManager->hasGroup($uname, 'aktiviteter')){
 	exit();
 }
 
-if(!isset($_POST['title']) or !isset($_POST['desc']) or !isset($_POST['start']) or !isset($_POST['end']) or !isset($_POST['organiser']) or !isset($_POST['location'])){
+if((!isset($_POST['title']))
+or (!isset($_POST['desc']))
+or (!isset($_POST['organiser']))
+or (!isset($_POST['location']))
+or (!isset($_POST['start_mon']))
+or (!isset($_POST['start_day']))
+or (!isset($_POST['start_time']))
+or (!isset($_POST['lasts_hours']))
+or (!isset($_POST['lasts_minutes']))) {
 	header('Location: ' . $_SERVER['HTTP_REFERER']);
 	exit();
 }
@@ -30,13 +38,28 @@ if(isset($_POST['id'])){
 
 $title = $_POST['title'];
 $desc = $_POST['desc'];
-$start = $_POST['start'];
-$stop = $_POST['end'];
+//$start = $_POST['start'];
+//$stop = $_POST['end'];
 $organiser = $_POST['organiser'];
 $location = $_POST['location'];
 
+$date_part_start_mon     = $_POST['start_mon'];
+$date_part_start_day     = $_POST['start_day'];
+$date_part_start_time    = $_POST['start_time'];
+$date_part_lasts_hours   = $_POST['lasts_hours'];
+$date_part_lasts_minutes = $_POST['lasts_minutes'];
+
+$start = ($date_part_start_mon . "-" . $date_part_start_day . " " . $date_part_start_time);
+if (sizeof(explode(":", $date_part_start_time))==2) {
+	$start .= ":00";
+}
+print($start);
+
 $start_date = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $start);
-$stop_date  = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $stop);
+$stop_date = $start_date->add(new DateInterval('PT' . $date_part_lasts_hours . 'H' . $date_part_lasts_minutes . 'M'));
+$stop = $stop_date->format('Y-m-d H:i:s');
+print($stop);
+
 if ($start_date >= $stop_date) {
 	echo 'Invalid dates. End date must come after the start date!';
 	exit();
diff --git a/www/css/style.css b/www/css/style.css
index 7dcff4d..56c0f0a 100644
--- a/www/css/style.css
+++ b/www/css/style.css
@@ -260,6 +260,10 @@ article {
 	margin-top: 0;
 }
 
+.noborder {
+	border: none;
+}
+
 .btn {
 	padding: .5em;
 	border-radius: 4px;