diff --git a/homepage/redesign2018/markdownExperiment/admin/ak2jg.php b/homepage/redesign2018/markdownExperiment/admin/ak2jg.php new file mode 100644 index 0000000..0cced4a --- /dev/null +++ b/homepage/redesign2018/markdownExperiment/admin/ak2jg.php @@ -0,0 +1,58 @@ +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + $akQuery = + $cwsvJudoDbConnection->prepare( + "SELECT lfdeNr, Datum, Veranstaltung, Altersklassen FROM cwsvjudo.`wettkampfkalender` WHERE DATUM > CURRENT_DATE() ORDER BY Datum ASC, lfdeNr ASC LIMIT 24;" + ); + + $akQuery->execute(); + $wkList = $akQuery->fetchAll(PDO::FETCH_ASSOC); + + // Zeichensatzkonvertierung + $someOptions = array(); + if( empty($someOptions['dbCharset']) ) + $someOptions['dbCharset'] = "ISO-8859-1"; + if( empty($someOptions['outCharset']) ) + $someOptions['outCharset'] = "UTF-8"; + + foreach($wkList as &$entry){ + array_walk( + $entry, + function (&$value, $key, $someOptions) { + $value = iconv($someOptions['dbCharset'], $someOptions['outCharset'], $value); + }, + $someOptions + ); + } + +?> + + + + + + + +"); + } +?> +
".$wk['lfdeNr']."".$wk['Datum']."".$wk['Veranstaltung']."".$wk['Altersklassen']."".json_encode($jg)."
+ + diff --git a/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/wkKalender.php b/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/wkKalender.php index 7437f24..4a9e3be 100644 --- a/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/wkKalender.php +++ b/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/wkKalender.php @@ -10,6 +10,7 @@ function echoWkTitle(){ ); } /// Einen Wettkampfnamen per ID abfragen + function getWkName( $wkId, $alternative="Judo-Wettkampf" ){ if( !is_positive_integer($wkId) ) return $alternative; @@ -215,8 +216,8 @@ $htmlWkTableString = ""; "". "".$wk['Ort']."". "". - "". - $wk['Altersklassen']. + "". + $wk['Altersklassen']."".json_encode(akListString2jgArray($wk['Altersklassen']))."". "". "". "iCal". @@ -251,6 +252,83 @@ function nicerAkList($akArray){ return $ret; } +/// Als String gegebene Altersklassen als Jahrgangsintervalle +/// ausdrücken +function akListString2jgArray($akListString, $year = NULL ){ +$ret = array(); + +if($year==NULL) + $year=date("Y"); +else{ + if( !((int)$year == $year && (int)$year >= 0) ) + $year=date("Y"); +} + +$year = (int)$year; + +foreach(explode(" ", $akListString) as $ak) + array_push( + $ret, + akString2jgIntervall($ak, $year) + ); + +return $ret; +} + + +/// Aus einer als String gegebenen Altersklasse ein Jahrgangsintervall +/// machen +function akString2jgIntervall($akString, $year){ +$ret= array(NULL, NULL); + +// Speziell für die Ux-Altersklassen +// Es fehlt noch das <=U +$akUmatchString = "/(.*)U(.*)/"; + +$matches = array(); + +preg_match($akUmatchString, $akString, $matches); +// Wenn wir nicht den gesamten akString Matchen ist etwas schief +// gelaufen +if($matches[0]==$akString){ +// Das ausgelesene Alter der Ux sollte eine positive Integer sein, +// sonst ist was schiefgelaufen + $ageLimit = (int)$matches[2]; + if( ($ageLimit == $matches[2] && $ageLimit > 0) ){ + $ret[0] = $year-$ageLimit+1; + + if($matches[1] == "") + $ret[1] = $year-$ageLimit+2; + else{ + if($matches[1] == "-") + $ret[1] = $year-$ageLimit+3; + else{ + if($matches[1] == "--") + $ret[1] = $year-$ageLimit+4; + } + } + } + return $ret; +} + +// Speziell Altersklassen der Form Jg.x-y +$akUmatchString = "/Jg\.(.*)\-(.*)/"; + +$matches = array(); + +preg_match($akUmatchString, $akString, $matches); +// Wenn wir nicht den gesamten akString Matchen ist etwas schief +// gelaufen +if($matches[0]==$akString){ + $ret[0]=(int)$matches[1]; + $ret[1]=(int)$matches[2]; + + return $ret; +} + +return $ret; +} + /// Wettkampfdaten als json-formatierte strukturierte Event-Daten function wkArray2jsonSdEvent($wk){ @@ -264,6 +342,10 @@ return // "\"url\": \"http://cwsvjudo.bplaced.net/pages/desktop/verein.wettkampfkalender.php?wkId=".$wk['lfdeNr']."\",". "\"url\": \"http://cwsvjudo.bplaced.net/wkKalender/".$wk['lfdeNr']."/".toAscii( html_entity_decode( $wk['Veranstaltung'] ))."\",". "\"description\": \"Judo-Wettkampf der Altersklasse(n) ".nicerAkList( $wk['Altersklassen'] )."\",". + "\"performer\": {". + "\"@type\": \"PerformingGroup\"\,". + "\"name\": \"Judoka der Altersklasse(n) ".nicerAkList( $wk['Altersklassen'] )."\"". + "}". "\"location\": {". "\"@type\": \"Place\",". "\"name\": \"".$wk['Ort']."\",". diff --git a/homepage/redesign2018/markdownExperiment/src/Makefiles/Makefile.ftpUpload b/homepage/redesign2018/markdownExperiment/src/Makefiles/Makefile.ftpUpload index 21cb1cd..1beed8a 100644 --- a/homepage/redesign2018/markdownExperiment/src/Makefiles/Makefile.ftpUpload +++ b/homepage/redesign2018/markdownExperiment/src/Makefiles/Makefile.ftpUpload @@ -32,7 +32,11 @@ ftpUpload: lftp -e 'set ftp:ssl-allow no; set net:limit-rate $(lftpNetLimitRate); mkdir -f $(ftpPathBase)/$(ftpFilePath)/$(VID_GAL_DIR); mkdir -f $(ftpPathBase)/$(ftpFilePath)/$(VID_GAL_DIR)/thumbnails; mkdir -f $(ftpPathBase)/$(ftpFilePath)/$(VID_GAL_DIR)/webm; put $(vidGalIndexPhp) -o $(ftpPathBase)/$(ftpFilePath)/$(VID_GAL_DIR)/index.php; put videos/config.inc.php -o $(ftpPathBase)/$(ftpFilePath)/$(VID_GAL_DIR)/config.inc.php; mirror $(dryRun) $(timeHandling) -R videos/thumbnails $(ftpPathBase)/$(ftpFilePath)/$(VID_GAL_DIR)/thumbnails; mirror $(dryRun) $(timeHandling) -R videos/webm $(ftpPathBase)/$(ftpFilePath)/$(VID_GAL_DIR)/webm; quit; ' \ -u $(ftpUser),$(ftpPassword) ftp://$(ftpServer) - for file in videos/webm/*; do \ - filename=$${file##*/}; \ - $(vidGalInsertScript) --shiaiYamlFile=./shiaiData.yaml --vidUrl="http://cwsvjudo-media-2018.unaux.com/$(ftpFilePath)/$(VID_GAL_DIR)/webm/$${filename}" --checkSum=$${filename%.*};\ - done;\ +# for file in videos/webm/*; do \ +# filename=$${file##*/}; \ +# $(vidGalInsertScript) \ +# --shiaiYamlFile=./shiaiData.yaml \ +# --vidUrl="http://cwsvjudo-media-2018.unaux.com/$(ftpFilePath)/$(VID_GAL_DIR)/webm/$${filename}" \ +# --posterUrl="http://cwsvjudo-media-2018.unaux.com/$(ftpFilePath)/$(VID_GAL_DIR)/thumbnails/$${filename%.*}.jpg" \ +# --checkSum=$${filename%.*};\ +# done;\ diff --git a/homepage/redesign2018/markdownExperiment/src/css/cwsvJudo-2018-wkKalender.css b/homepage/redesign2018/markdownExperiment/src/css/cwsvJudo-2018-wkKalender.css index c75e16c..9b4c6c0 100644 --- a/homepage/redesign2018/markdownExperiment/src/css/cwsvJudo-2018-wkKalender.css +++ b/homepage/redesign2018/markdownExperiment/src/css/cwsvJudo-2018-wkKalender.css @@ -835,3 +835,39 @@ .wkBoxMediaGallery > *{ flex-basis:50%; } + + +/* + * Tooltipps + */ + +/* Tooltip container */ +.tooltip { + position: relative; + display: inline-block; + border-bottom: 1px dotted black; /* If you want dots under the hoverable text */ +} + +/* Tooltip text */ +.tooltip .tooltiptext { + visibility: hidden; + width: 120px; + background-color: black; + color: #fff; + text-align: center; + padding: 5px 0; + border-radius: 6px; + + /* Position the tooltip text - see examples below! */ + position: absolute; + z-index: 1; +} + + +} + +/* Show the tooltip text when you mouse over the tooltip container */ +.tooltip:hover .tooltiptext { + visibility: visible; +} + diff --git a/homepage/redesign2018/markdownExperiment/src/galleryHelper/vidGal.php b/homepage/redesign2018/markdownExperiment/src/galleryHelper/vidGal.php index 5342530..6970cf0 100644 --- a/homepage/redesign2018/markdownExperiment/src/galleryHelper/vidGal.php +++ b/homepage/redesign2018/markdownExperiment/src/galleryHelper/vidGal.php @@ -18,29 +18,33 @@ if($_GET['action'] == "INSERT"){ $wkId = $_GET['wkId']; $checkSum = urldecode( $_GET['checkSum'] ); $vidUrl = urldecode( $_GET['vidUrl'] ); + $posterUrl = urldecode( $_GET['posterUrl'] ); - echo("CheckSum is ".$checkSum); - echo("vidUrl is ".$vidUrl); + echo("CheckSum is ".$checkSum."\n"); + echo("vidUrl is ".$vidUrl."\n"); + echo("posterUrl is ".$posterUrl."\n"); $vidQuery = $cwsvJudoDbConnection->prepare( - "INSERT IGNORE INTO cwsvjudo.`shiai.videos` ( wkId, checkSum, url ) VALUES ( :wkId, HEX(:checkSum), :vidUrl);" + "INSERT IGNORE INTO cwsvjudo.`shiai.videos` ( wkId, checkSum, url, posterUrl ) VALUES ( :wkId, UNHEX(:checkSum), :vidUrl, :posterUrl );" ); $vidQuery->bindParam(':wkId', intval($wkId), PDO::PARAM_INT); $vidQuery->bindParam(':checkSum', $checkSum ); $vidQuery->bindParam(':vidUrl', $vidUrl ); - + $vidQuery->bindParam(':posterUrl', $posterUrl ); + echo("INSERT IGNORE INTO cwsvjudo.`shiai.videos` ( wkId, checkSum, url, posterUrl ) VALUES ( ".$wkId.", UNHEX('".$checkSum."' ), '".$vidUrl."', '".$posterUrl."' );\n"); $vidQuery->execute(); $vidQuery = $cwsvJudoDbConnection->prepare( - "UPDATE cwsvjudo.`shiai.videos` SET wkId=:wkId, url=:vidUrl WHERE checkSum=HEX( :checkSum );" + "UPDATE cwsvjudo.`shiai.videos` SET wkId=:wkId, url=:vidUrl, posterUrl=:posterUrl WHERE checkSum=UNHEX( :checkSum );" // "UPDATE cwsvjudo.`shiai.videos` url=:vidUrl WHERE checkSum=HEX(:checkSum);" ); $vidQuery->bindParam(':wkId', intval($wkId), PDO::PARAM_INT); $vidQuery->bindParam(':checkSum', $checkSum ); $vidQuery->bindParam(':vidUrl', $vidUrl ); - + $vidQuery->bindParam(':posterUrl', $posterUrl ); + echo( "UPDATE cwsvjudo.`shiai.videos` SET wkId=".$wkId.", url='".$vidUrl."', posterUrl='".$posterUrl."' WHERE checkSum=UNHEX( '".$checkSum."' );\n"); $vidQuery->execute(); } @@ -64,8 +68,8 @@ if($_GET['action'] == "INSERT"){ diff --git a/homepage/redesign2018/markdownExperiment/src/galleryHelper/vidGalInsert.py b/homepage/redesign2018/markdownExperiment/src/galleryHelper/vidGalInsert.py index 7027920..d2bc080 100755 --- a/homepage/redesign2018/markdownExperiment/src/galleryHelper/vidGalInsert.py +++ b/homepage/redesign2018/markdownExperiment/src/galleryHelper/vidGalInsert.py @@ -13,6 +13,7 @@ argParser = argparse.ArgumentParser() #argParser.add_argument("wkId", type=int) argParser.add_argument("--checkSum") argParser.add_argument("--vidUrl") +argParser.add_argument("--posterUrl") argParser.add_argument("--shiaiYamlFile") argv = argParser.parse_args() @@ -26,7 +27,8 @@ payLoad = { 'action' : "INSERT", 'wkId' : shiaiData['wkId'], 'checkSum': urllib.parse.quote(argv.checkSum), - 'vidUrl' : urllib.parse.quote(argv.vidUrl) + 'vidUrl' : urllib.parse.quote(argv.vidUrl), + 'posterUrl' : urllib.parse.quote(argv.posterUrl) } r = requests.get('http://cwsvjudo.bplaced.net/admin/vidGal.php', params=payLoad, auth=('marko', '***REMOVED***')) diff --git a/homepage/redesign2018/markdownExperiment/wkParticipo/addFahrt.php b/homepage/redesign2018/markdownExperiment/wkParticipo/addFahrt.php index d731494..a7dfa59 100644 --- a/homepage/redesign2018/markdownExperiment/wkParticipo/addFahrt.php +++ b/homepage/redesign2018/markdownExperiment/wkParticipo/addFahrt.php @@ -33,7 +33,7 @@ "Neue Fahrt für eventId " . $_POST['f']['eventId'] . " mit " . $_POST['f']['anzPlaetze'] . " hinzugefügt"; $userData = getUserData($mysqli, $_SESSION['user']['userId']); - $eventData = getEventData($mysqli, $_POST['f']['eventId']); + $eventData = getWkEventData($mysqli, $_POST['f']['eventId']); $wkData = getWkData($mysqli, $eventData['wkId']); $notificationMail['to'] = $userData['eMail']; @@ -74,7 +74,7 @@ $message['error'] = 'Datenbankverbindung fehlgeschlagen: ' . $mysqli->connect_error; } - $eventData = getEventData($mysqli, $_POST['f']['eventId']); + $eventData = getWkEventData($mysqli, $_POST['f']['eventId']); $wkData = getWkData($mysqli, $eventData['wkId']); ?>
diff --git a/homepage/redesign2018/markdownExperiment/wkParticipo/addStarter.php b/homepage/redesign2018/markdownExperiment/wkParticipo/addStarter.php index 7201661..6f8682b 100644 --- a/homepage/redesign2018/markdownExperiment/wkParticipo/addStarter.php +++ b/homepage/redesign2018/markdownExperiment/wkParticipo/addStarter.php @@ -20,7 +20,7 @@ $message['error'] .= "Datenbankverbindung fehlgeschlagen: ".$mysqlConn->connect_error."
$wkEventData['meldefrist']){ $message['error'] .= "Die Meldefrist ist bereits abgelaufen!
"; @@ -56,6 +56,7 @@ } } else{ + // @todo hier müsste das Auslösen der Meldung $userData = getUserData($mysqlConn, $_SESSION['user']['userId']); $starterData = getUserData($mysqlConn, $_POST['f']['userId']); // $wkData = getWkData($mysqlConn, $eventData['wkId']); diff --git a/homepage/redesign2018/markdownExperiment/wkParticipo/addStarterDev.php b/homepage/redesign2018/markdownExperiment/wkParticipo/addStarterDev.php index 4eba386..347420a 100644 --- a/homepage/redesign2018/markdownExperiment/wkParticipo/addStarterDev.php +++ b/homepage/redesign2018/markdownExperiment/wkParticipo/addStarterDev.php @@ -19,7 +19,7 @@ $message['error'] .= "Datenbankverbindung fehlgeschlagen: ".$mysqlConn->connect_error."
$wkEventData['meldefrist']){ $message['error'] .= "Die Meldefrist ist bereits abgelaufen!
"; diff --git a/homepage/redesign2018/markdownExperiment/wkParticipo/admin/showEvent.php b/homepage/redesign2018/markdownExperiment/wkParticipo/admin/showEvent.php index 0f9ef97..97e68c5 100644 --- a/homepage/redesign2018/markdownExperiment/wkParticipo/admin/showEvent.php +++ b/homepage/redesign2018/markdownExperiment/wkParticipo/admin/showEvent.php @@ -16,19 +16,20 @@ } else{ if( (string)(int)$_POST['f']['eventId'] == $_POST['f']['eventId'] ){ - $mysqli = @new mysqli($db_server, $db_user, $db_password, $db_name); - if ($mysqli->connect_error) { - $message['error'] = 'Datenbankverbindung fehlgeschlagen: ' . $mysqli->connect_error; + + $mysqlConn = @new mysqli($db_server, $db_user, $db_password, $db_name); + if ($mysqlConn->connect_error) { + $sqlMessage['error'] .= 'Datenbankverbindung fehlgeschlagen: ' . $mysqlConn->connect_error; } else{ // Abfrage der Eventdaten - $eventData = getWkEventData($mysqli, $_POST['f']['eventId']); + $eventData = getWkEventData($mysqlConn, $_POST['f']['eventId'], array('outCharset'=>"UTF-8")); if( empty($eventData) ) $message['error'] = 'Fehler: keine Eventdaten zurückgeliefert!'; else{ - // Abfrage der Starterdaten des Events - $starterData = getStarterForEvent($mysqli, $eventData['id']); - // Abfrage der Fahrtdaten des Events - $fahrten = getFahrtenForEvent($mysqli, $eventData['id']); + // Abfrage der Starterdaten des Events + $starterData = getStarterForEvent($mysqlConn, $eventData['id']); + // Abfrage der Fahrtdaten des Events + $fahrten = getFahrtenForEvent($mysqlConn, $eventData['id']); } } } diff --git a/homepage/redesign2018/markdownExperiment/wkParticipo/auth.php b/homepage/redesign2018/markdownExperiment/wkParticipo/auth.php index d6b7056..93206fa 100644 --- a/homepage/redesign2018/markdownExperiment/wkParticipo/auth.php +++ b/homepage/redesign2018/markdownExperiment/wkParticipo/auth.php @@ -1,5 +1,7 @@ 86400, // 86400s sind 24h + ]); session_regenerate_id(); // Falls der serverseitige Logincookie nicht gesetzt ist, leite zur if (empty($_SESSION['login'])) { @@ -12,6 +14,5 @@ "Sie sind als ".htmlspecialchars($_SESSION['user']['username'])." angemeldet.
". "Sitzung beenden". "
"; - //
".var_export($_SESSION, true)."
"; } ?> diff --git a/homepage/redesign2018/markdownExperiment/wkParticipo/authLogin.php b/homepage/redesign2018/markdownExperiment/wkParticipo/authLogin.php index c1bdb81..76073ae 100644 --- a/homepage/redesign2018/markdownExperiment/wkParticipo/authLogin.php +++ b/homepage/redesign2018/markdownExperiment/wkParticipo/authLogin.php @@ -1,5 +1,7 @@ 86400, // 86400s sind 24h + ]); session_regenerate_id(); // Falls der serverseitige Logincookie nicht gesetzt ist, leite zur if (empty($_SESSION['login'])){ diff --git a/homepage/redesign2018/markdownExperiment/wkParticipo/index.php b/homepage/redesign2018/markdownExperiment/wkParticipo/index.php index 9364e58..98a761d 100644 --- a/homepage/redesign2018/markdownExperiment/wkParticipo/index.php +++ b/homepage/redesign2018/markdownExperiment/wkParticipo/index.php @@ -205,6 +205,7 @@ setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge'); "UTF-8")); diff --git a/homepage/redesign2018/markdownExperiment/wkParticipo/showWkEvent.php b/homepage/redesign2018/markdownExperiment/wkParticipo/showWkEvent.php index 752fe58..e70fd60 100644 --- a/homepage/redesign2018/markdownExperiment/wkParticipo/showWkEvent.php +++ b/homepage/redesign2018/markdownExperiment/wkParticipo/showWkEvent.php @@ -1,9 +1,17 @@ connect_error; } else{ - $eventData = getEventData($mysqli, $_GET['eventId']); + $eventData = getWkEventData($mysqli, $_GET['eventId']); if( empty($eventData) ) $message['error'] .= 'Fehler: keine Eventdaten zurückgeliefert!'; + else{ + if(!empty($eventData['bemerkungen'])){ + $tmpJson = json_decode( $eventData['bemerkungen'], true); + if($tmpJson){ + $eventData['Datum'] = $tmpJson['Datum']; + $eventData['Veranstaltung'] = $tmpJson['Veranstaltung']; + $eventData['Altersklassen'] = $tmpJson['Altersklassen']; + $eventData['Routenplaner'] = $tmpJson['Routenplaner']; + $eventData['Ausschreibung'] = $tmpJson['Ausschreibung']; + $eventData['bemerkungen'] = $tmpJson['bemerkungen']; + } + } + PHPCount::AddHit( + "Wettkampfplaner ". + ($_SESSION['user']['username']?("(".htmlspecialchars($_SESSION['user']['username']).") "):""). + "- ".$eventData['Veranstaltung'] + ); + } } } else $message['error'] .= "Fehler: eventId ist kein Int (".$_GET['eventId'].")"; @@ -34,7 +60,7 @@ - Wettkampfplanung - Wettkampfdetails<?php echo (empty($eventData) ? "" : " ".mb_convert_encoding($eventData['Veranstaltung'], 'UTF-8', 'ISO-8859-1'));?> + Wettkampfplanung - Wettkampfdetails<?php echo( empty($eventData) ? "" : " ".$eventData['Veranstaltung'] );?> @@ -55,15 +81,15 @@ } else{ ?> -

+

Wettkampfdaten

@@ -85,7 +111,7 @@
  • - +
    Termin in den Google Calendar übernehmen
  • @@ -179,7 +205,7 @@ echo ""; if (!empty($_SESSION['login'])){ - echo( "

    Frist für das Einschreiben verpasst? Für ein nachträgliches Eintragen mit dem Admin verständigen (Email an cwsvjudo@arcor.de).

    " ); + echo( "

    Frist für das Einschreiben verpasst? Für ein nachträgliches Eintragen mit dem Admin verständigen (Email an cwsvjudo@arcor.de).

    " ); } } else{ @@ -232,13 +258,6 @@ } } if($mysqli) $mysqli->close(); -?> - -