diff --git a/homepage/redesign2018/markdownExperiment/admin/.htaccess b/homepage/redesign2018/markdownExperiment/admin/.htaccess new file mode 100644 index 0000000..52e048a --- /dev/null +++ b/homepage/redesign2018/markdownExperiment/admin/.htaccess @@ -0,0 +1,6 @@ +AuthType Basic +AuthName "cwsvJudoAdmin" +AuthUserFile /users/cwsvjudo/www/admin/.htusers +AuthGroupFile /users/cwsvjudo/www/admin/.htgroups +Require user marko +Require group admin diff --git a/homepage/redesign2018/markdownExperiment/admin/.htgroups b/homepage/redesign2018/markdownExperiment/admin/.htgroups new file mode 100644 index 0000000..3c2dabe --- /dev/null +++ b/homepage/redesign2018/markdownExperiment/admin/.htgroups @@ -0,0 +1 @@ +admin: marko diff --git a/homepage/redesign2018/markdownExperiment/admin/.htusers b/homepage/redesign2018/markdownExperiment/admin/.htusers new file mode 100644 index 0000000..de6c14c --- /dev/null +++ b/homepage/redesign2018/markdownExperiment/admin/.htusers @@ -0,0 +1,2 @@ +# userFile +marko:$2y$05$Bt1hCGXhdO2JcJy9SXt96e.DmXvnutpOxmDw233CGaUOQL6kczXQK diff --git a/homepage/redesign2018/markdownExperiment/admin/config.inc.php b/homepage/redesign2018/markdownExperiment/admin/config.inc.php new file mode 100644 index 0000000..14144a4 --- /dev/null +++ b/homepage/redesign2018/markdownExperiment/admin/config.inc.php @@ -0,0 +1,23 @@ + diff --git a/homepage/redesign2018/markdownExperiment/admin/newsAdmin.php b/homepage/redesign2018/markdownExperiment/admin/newsAdmin.php index 70b7140..e269fbe 100644 --- a/homepage/redesign2018/markdownExperiment/admin/newsAdmin.php +++ b/homepage/redesign2018/markdownExperiment/admin/newsAdmin.php @@ -11,19 +11,6 @@ require_once($basePath."/ressourcen/phpLib/parsedown/Parsedown.php"); -function firstNonEmptyOf($somePossibleEmptyStuff){ - -if (is_array($somePossibleEmptyStuff) || $somePossibleEmptyStuff instanceof Traversable){ - foreach($somePossibleEmptyStuff as $entry){ - if(empty($entry)) - continue; - else - return $entry; - } -} -return null; -} - // benötigt parsedown function submitNewsToDb($aNews, $someOptions = array()){ // Standardargumente setzen diff --git a/homepage/redesign2018/markdownExperiment/admin/newsAmpTest.php b/homepage/redesign2018/markdownExperiment/admin/newsAmpTest.php new file mode 100644 index 0000000..8994fdd --- /dev/null +++ b/homepage/redesign2018/markdownExperiment/admin/newsAmpTest.php @@ -0,0 +1,39 @@ +connect_error){ + // @ToDo: bessere Fehlerbehandlung + die("Datenbankverbindung fehlgeschlagen: " . $mysqlConn->connect_error . "\n"); + //$message['error'] += "Datenbankverbindung fehlgeschlagen: " . $mysqlConn->connect_error . "
"; + } + + $newsId = isset($_GET["newsId"]) ? $_GET["newsId"] : ""; + //$newsDate = empty($_GET['date']) ? date("Y-m-d") : $_GET['date']; + $newsById = array(); + $prevNewsId = ""; + $postNewsId = ""; + + + $news = getNewsById($mysqlConn); + +?> + + + + + + <?php echo($news['betreff']);?> + + + + + + +

cwsvJudo - News

+ + + diff --git a/homepage/redesign2018/markdownExperiment/admin/newsLib.php.inc b/homepage/redesign2018/markdownExperiment/admin/newsLib.php.inc new file mode 100644 index 0000000..22d03b2 --- /dev/null +++ b/homepage/redesign2018/markdownExperiment/admin/newsLib.php.inc @@ -0,0 +1,296 @@ + "ISO-8859-1", "outCharset" => "UTF-8")){ +if(!$aMysqlConn) return NULL; +$ret = array(); +$query = ""; + if( is_positive_integer($aNewsId) ){ + $query = sprintf( + "SELECT * FROM nachrichten WHERE nr='%s';", + $aMysqlConn->real_escape_string($aNewsId) + ); + } + else{ + $query = sprintf( + "SELECT * FROM nachrichten ORDER BY datum DESC, nr DESC LIMIT 0, 1;" + ); + } + + $results = $aMysqlConn->query($query); + if( !empty($results) ) $ret = $results->fetch_assoc(); +// Zeichensatzkonvertierung + array_walk( + $ret, + function (&$value, $key, $optionsArray) { + $value = iconv($optionsArray['dbCharset'], $optionsArray['outCharset'], $value); + }, + $optionsArray + ); +return $ret; +} + +/// Abfrage der Id der vorhergehenden News nach Id +function getPrevNewsId($aMysqlConn, $aNews, $optionsArray = array() ){ + $queryNewsId = sprintf(" + SELECT nr FROM cwsvjudo.nachrichten + WHERE datum <= '%s' AND nr < '%s' + ORDER BY nr DESC + LIMIT 0, 1;", + $aMysqlConn->real_escape_string( $aNews['datum'] ), + $aMysqlConn->real_escape_string( $aNews['nr'] ) + ); + $mysqlResults = $aMysqlConn->query($queryNewsId); + if( !$mysqlResults ) return ""; + + $newsIdResult = $mysqlResults->fetch_assoc(); + if( empty($newsIdResult) ) return ""; +return $newsIdResult['nr']; +} + + +/// Abfrage der Id der nachfolgenden News nach Id +function getNextNewsId($aMysqlConn, $aNews, $optionsArray = array() ){ + $queryNewsId = sprintf(" + SELECT nr FROM cwsvjudo.nachrichten + WHERE datum >= '%s' AND nr > '%s' + ORDER BY nr DESC + LIMIT 0, 1;", + $aMysqlConn->real_escape_string( $aNews['datum'] ), + $aMysqlConn->real_escape_string( $aNews['nr'] ) + ); + $mysqlResults = $aMysqlConn->query($queryNewsId); + if( !$mysqlResults ) return ""; + + $newsIdResult = $mysqlResults->fetch_assoc(); + if( empty($newsIdResult) ) return ""; +return $newsIdResult['nr']; +} + + +/// Zu einer Nachricht strukurierte Daten als json bereit stellen +function news2json($aNews){ +$ret = ""; + +$ret .= "{"; +$ret .= " \"@context\": \"http://schema.org\","; +$ret .= " \"@type\": \"NewsArticle\","; +$ret .= " \"mainEntityOfPage\": {"; +$ret .= " \"@type\": \"WebPage\","; +$ret .= " \"@id\": \"http://cwsvjudo.bplaced.net/pages/amp/news.php?newsId=" . $aNews['nr'] . "\""; +$ret .= " },"; +$ret .= " \"headline\": \"". $aNews['betreff'] ."\","; +$ret .= " \"image\": {"; +$ret .= " \"@type\": \"ImageObject\","; +//$ret .= " \"url\": \"http://cwsvjudo.bplaced.net/ressourcen/graphiken/logos/cwsvJudoLogoWappen-696x-nq8.png\","; +//$ret .= " \"url\": \"". $baseUrl . str_replace( ".png", ".jpg", str_replace( "/thumbs/", "/images/", newsPromoImage( getNewsById($mysqlConn, "118") )['src'][0])); +//$ret .= " \"height\": 563,"; +//$ret .= " \"width\": 696"; +$ret .= " \"url\": \"http://cwsvjudo.bplaced.net" . str_replace( ".png", ".jpg", str_replace( "/thumbs/", "/images/", getHtmlImgTags( $aNews['nachricht'] )[0]['src'])) ."\","; +$ret .= " \"height\": 786,"; +$ret .= " \"width\": 1024"; +$ret .= " },"; +$ret .= " \"datePublished\": \"" . $aNews['datum'] . "\","; +$ret .= " \"dateModified\": \"" . $aNews['datum'] . "\","; +$ret .= " \"author\": {"; +$ret .= " \"@type\": \"Person\","; +$ret .= " \"name\": \"" . $aNews['autor'] . "\""; +$ret .= " },"; +$ret .= " \"publisher\": " . file_get_contents("/users/cwsvjudo/www/ressourcen/structuredData/json/cwsvJudoAsPublisher.json") . ","; +//$ret .= " \"publisher\": {"; +//$ret .= " \"@type\": \"Organization\","; +//$ret .= " \"name\": \"Google\","; +//$ret .= " \"logo\": {"; +//$ret .= " \"@type\": \"ImageObject\","; +//$ret .= " \"url\": \"https://google.com/logo.jpg\","; +//$ret .= " \"width\": 600,"; +//$ret .= " \"height\": 60"; +//$ret .= " }"; +//$ret .= " },"; +//$ret .= " \"description\": \"".$aNews['betreff']."\""; +$ret .= " \"description\": \"".preg_replace( '/[\p{Z}\s]{2,}/s', ' ', strip_tags( $aNews['nachricht'] ) )."\""; +$ret .= "}"; + +return $ret; + +/* +Property list for article structured data + +Properties +mainEntityOfPage +URL; recommended (AMP), ignored (non-AMP) + +The canonical URL of the article page. Specify mainEntityOfPage when the article is the primary topic of the article page. +headline +Text; required (AMP), recommended (non-AMP) + +The headline of the article. Headlines should not exceed 110 characters. +image +ImageObject; required (AMP), recommended (non-AMP) + +The representative image of the article. Only a marked-up image that directly belongs to the article should be specified. + +Images should be at least 696 pixels wide. +Images should be in .jpg, .png, or. gif format. +Image URLs should be crawlable and indexable. +image.url +URL; required (AMP), recommended (non-AMP) + +The URL of the image. +image.height +Number; required (AMP), recommended (non-AMP) + +The height of the image, in pixels. +image.width +Number; required (AMP), recommended (non-AMP) + +The width of the image, in pixels. Images should be at least 696 pixels wide. +publisher +Organization; required (AMP), ignored (non-AMP) + +The publisher of the article. +publisher.name +Text; required (AMP), ignored (non-AMP) + +The name of the publisher. +publisher.logo +ImageObject; required (AMP), ignored (non-AMP) + +The logo of the publisher. See the AMP logo guidelines for details. +publisher.logo.url +URL; required (AMP), ignored (non-AMP) + +The URL of the logo. +publisher.logo.height +Number; required (AMP), ignored (non-AMP) + +The height of the logo, in pixels. +publisher.logo.width +Number; required (AMP), ignored (non-AMP) + +The width of the logo, in pixels. +datePublished +DateTime; required (AMP), ignored (non-AMP) + +The date and time the article was first published, in ISO 8601 format. +dateModified +DateTime; recommended (AMP), ignored (non-AMP) + +The date and time the article was most recently modified, in ISO 8601 format. +author +Person or Organization; required (AMP), ignored (non-AMP) + +The author of the article. +author.name +Text; required (AMP), ignored (non-AMP) + +The name of the author. +description +Text; recommended (AMP), ignored (non-AMP) + +A short description of the article. +*/ +} + + +/// Aus einer Nachricht das Bild extrahieren +/// +/// Früher^(tm) waren die Promobilder für die Nachrichten direkt im +/// htmlCode der Nachricht. Diese Funktion extrahiert aus (einem +/// Fragment) htmlCode das enthaltene -Tag. +/// @ToDo: Der Funktion gemäß umbenennen (allgemeiner) +/// @ToDo: Auf eine beliebige Anzahl von Tags erweitern +function newsPromoImage($aNews){ +$retImage = array(); + preg_match_all("//s", $aNews['nachricht'], $imgMatches); +// echo(" imgMatch: "); print_r($imgMatches); + if(!empty($imgMatches[0])){ + preg_match_all("/src=\"([^\"]*)\"/s", $imgMatches[0][0], $srcMatches); + $retImage['src'] = $srcMatches[1]; +// echo(" found src in ".$imgMatches[0][0].": "); print_r($srcMatches); + preg_match_all("/alt=\"([^\"]*)\"/s", $imgMatches[0][0], $altMatches); + $retImage['alt'] = $altMatches[1]; +// echo(" found alt in ".$imgMatches[0][0].": "); print_r($altMatches); + preg_match_all("/title=\"([^\"]*)\"/s", $imgMatches[0][0], $titleMatches); + $retImage['title'] = $titleMatches[1]; +// echo(" found title in ".$imgMatches[0][0].": "); print_r($titleMatches); + } +return $retImage; +} + +/// Aus einem Fragment htmlCode die Tags extrahieren +/// +/// Früher^(tm) waren die Promobilder für die Nachrichten direkt im +/// htmlCode der Nachricht. Diese Funktion extrahiert aus (einem +/// Fragment) htmlCode die enthaltenen -Tags. +function getHtmlImgTags($someHtmlCode){ +$retImages = array(); + // Alle Tags matchen + preg_match_all("//s", $someHtmlCode, $imgMatches, PREG_SET_ORDER); + foreach($imgMatches as $imgMatch){ + // mehrere src/alt/title-Attribute dürften nicht vorkommen! + // Falls doch: Wir nehmen immer das erste! + $retImage = array(); + preg_match_all("/src=\"([^\"]*)\"/s", $imgMatch[0], $srcMatches); + $retImage['src'] = $srcMatches[1][0]; + preg_match_all("/alt=\"([^\"]*)\"/s", $imgMatch[0], $altMatches); + $retImage['alt'] = $altMatches[1][0]; + preg_match_all("/title=\"([^\"]*)\"/s", $imgMatch[0], $titleMatches); + $retImage['title'] = $titleMatches[1][0]; + + array_push($retImages, $retImage); + } +return $retImages; +} + + +/// Aus einer abgefragten News (als Array) ampCode erzeugen +/// Noch ohne Strukturierte Daten +function getAmpNews($anAmpNews){ +if(empty($anAmpNews)) return ""; +$retAmpCode = ""; + +// $retAmpCode .= "
"; + $retAmpCode .= "
"; +// $retAmpCode .= ""; +// $retAmpCode .= ""; +// $retAmpCode .= ""; +// $retAmpCode .= ""; +// $retAmpCode .= "
"; +// $retAmpCode .= "
"; + $retAmpCode .= "
"; +// $retAmpCode .= ""; + $retAmpCode .= ""; +// $retAmpCode .= "

".mb_convert_encoding($news['betreff'], 'UTF-8', 'ISO-8859-1')."

"; +/// @ToDo: headingsLevel variabel gestalten + $retAmpCode .= "

" . $anAmpNews['betreff'] . "

"; + $retAmpCode .= "
";//Ende ampNewsBoxHeader +// $retAmpCode .= "
".ampify( mb_convert_encoding( addImgSize("
".$news['nachricht']."
"), 'UTF-8', 'ISO-8859-1') )."
"; + $imgs = getHtmlImgTags( $anAmpNews['nachricht'] ); + if(!empty($imgs)){ + list($width, $height) = getimagesize( "/users/cwsvjudo/www/".urldecode($imgs[0]['src'])); + $retAmpCode .= ""; + } +// $retAmpCode .= $anAmpNews['nachricht']; +// print_r( $anAmpNews ); +// $retAmpCode .= strip_tags( $anAmpNews['nachricht'] ); +// $retAmpCode .= preg_replace( '/[\p{Z}\s]{2,}/s', ' ', strip_tags( $anAmpNews['nachricht'] ) ); + $retAmpCode .= preg_replace( '/[\p{Z}\s]{2,}/s', ' ', strip_tags( $anAmpNews['nachricht'], '

' ) ); + $retAmpCode .= "

"; + $retAmpCode .= "
"; + $retAmpCode .= "
"; +return $retAmpCode; +} + + +///--- +/// Hilfsfunktionen +///--- + +?> diff --git a/homepage/redesign2018/markdownExperiment/admin/newsTest.php b/homepage/redesign2018/markdownExperiment/admin/newsTest.php new file mode 100644 index 0000000..15cba74 --- /dev/null +++ b/homepage/redesign2018/markdownExperiment/admin/newsTest.php @@ -0,0 +1,33 @@ +connect_error){ + die("Datenbankverbindung fehlgeschlagen: " . $mysqlConn->connect_error . "\n"); + //$message['error'] += "Datenbankverbindung fehlgeschlagen: " . $mysqlConn->connect_error . "
"; + } +?> + + + + + + newsTest + + + + + + + + + + +close(); + +exit(); +?> diff --git a/homepage/redesign2018/markdownExperiment/admin/redirecter/redirectLog.php b/homepage/redesign2018/markdownExperiment/admin/redirecter/redirectLog.php new file mode 100644 index 0000000..75bfdc1 --- /dev/null +++ b/homepage/redesign2018/markdownExperiment/admin/redirecter/redirectLog.php @@ -0,0 +1,54 @@ +prepare( + "SELECT * FROM cwsvjudo.redirecter ORDER BY id ASC;" + ); + $redirectQuery->execute(); + + $redirectList = $redirectQuery->fetchAll(PDO::FETCH_ASSOC); +} +catch(PDOException $db_error){ + die( "Error!: " . $db_error->getMessage() ); +} +?> + +
+ + +
+ + +"); + echo( "" ); + echo( "" ); + echo( "" ); + echo( "\n" ); +} +?> +
idREQUEST_URIHTTP_USER_AGENT
".$redirectEntry['id']."".$redirectServerArray['REQUEST_URI']."".$redirectServerArray['HTTP_USER_AGENT']."
+
+ + diff --git a/homepage/redesign2018/markdownExperiment/css/cwsvJudo-2018-quiz.css b/homepage/redesign2018/markdownExperiment/css/cwsvJudo-2018-quiz.css new file mode 100644 index 0000000..c253181 --- /dev/null +++ b/homepage/redesign2018/markdownExperiment/css/cwsvJudo-2018-quiz.css @@ -0,0 +1,16 @@ +.zuordnungs-quiz { + display: block; + display: flex; + flex-basis: 100%; + flex-wrap: wrap; + justify-content: space-between; +} + +.zuordnungs-quiz .loesungs-paar { + flex-basis: 0; +} + +.zuordnungs-quiz .daten-pool { + display: flex; + justify-content: space-around; +} diff --git a/homepage/redesign2018/markdownExperiment/md/galerie.md b/homepage/redesign2018/markdownExperiment/md/galerie.md index b41ba28..860f593 100644 --- a/homepage/redesign2018/markdownExperiment/md/galerie.md +++ b/homepage/redesign2018/markdownExperiment/md/galerie.md @@ -7,4 +7,4 @@ keywords: - Bilder - Videos ... - + diff --git a/homepage/redesign2018/markdownExperiment/md/trainingszeiten.md b/homepage/redesign2018/markdownExperiment/md/trainingszeiten.md index 0ed0613..1d9f50e 100644 --- a/homepage/redesign2018/markdownExperiment/md/trainingszeiten.md +++ b/homepage/redesign2018/markdownExperiment/md/trainingszeiten.md @@ -20,6 +20,11 @@ einem „Schnuppertraining“ vorbei. Als Sportkleidung seien reißfeste, lange Sachen möglichst ohne Reißverschluss empfohlen. +Auch wer bereits Mitglied in einem Judoverein ist, aber zum Beispiel +während des Studiums in Chemnitz wohnt, darf gerne mit uns trainieren. +Eine Ummeldung ist dafür nicht nötig. + + ## Trainingszeiten - Mittwoch (Kinder+Jugend) diff --git a/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/gallery.lib.php b/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/gallery.lib.php new file mode 100644 index 0000000..f7470fa --- /dev/null +++ b/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/gallery.lib.php @@ -0,0 +1,41 @@ +prepare( + "SELECT * FROM wkGalerien WHERE id = :galId ;" + ); + $stmt->bindParam(':galId', $aGalleryId); + + $stmt->execute(); + + $retGallery = $stmt->fetchAll(PDO::FETCH_ASSOC); // wir fragen einen primary key ab, deshalb kann es nur einer oder keiner sein! + var_dump($ret); + } + catch(PDOException $e){ + echo( "Error: " . $e->getMessage() ); + } +return $retGallery; + +} diff --git a/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/miscAssis.php b/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/miscAssis.php index 75b3924..638898c 100644 --- a/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/miscAssis.php +++ b/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/miscAssis.php @@ -20,6 +20,20 @@ global $cwsvJudoConfig; return $db_connection; } + +/// Gibt entweder das erste, nichtleere Element zurück, oder null +function firstNonEmptyOf($somePossibleEmptyStuff){ +if (is_array($somePossibleEmptyStuff) || $somePossibleEmptyStuff instanceof Traversable){ + foreach($somePossibleEmptyStuff as $entry){ + if(empty($entry)) + continue; + else + return $entry; + } +} +return null; +} + /// Eine als String gegebene Liste kommagetrennter key=value Paare in /// ein assoziatives Array überführen function getKeyValueArray($aKeyValueStringList){ diff --git a/homepage/redesign2018/markdownExperiment/phpLib/imgGallery/index.php.tmpl b/homepage/redesign2018/markdownExperiment/phpLib/imgGallery/index.php.tmpl index 9764079..1106973 100644 --- a/homepage/redesign2018/markdownExperiment/phpLib/imgGallery/index.php.tmpl +++ b/homepage/redesign2018/markdownExperiment/phpLib/imgGallery/index.php.tmpl @@ -1,10 +1,9 @@ <?php echo $wkName?> - Bilderalbum<?php echo( !empty($showAllMode)?($showAllMode == "true" ? " - alle Bilder" : "") : "");?> - + - - - - - @@ -164,9 +158,15 @@ return $retVal; + + - - - Zur Galerieübersicht
"; - else echo "Zur Galerieübersicht"; - ?> - -
- -
- - -

- Photoalbum [] -

- -

- [ Bilder] -

- - > - -

- Auf die jeweiligen Bilder klicken um eine größere Ansicht zu bekommen. -

-
- - - - - -" ); - echo( "" ); - } -?> - "); - } -?> - -Eingaben absenden" ); - echo( "" ); - } -?> - - - - - - - - -
- - - - Besucher online: {V_VISITORS_CURRENTLY_ONLINE} - Besucher bisher: {V_PAGE_VIEWS_THIS_PAGE} - - -TEMPLATE; -$chCounter_page_title = "Photoalbum ".$wkName; -$chCounter_visible=1; include( $_SERVER['DOCUMENT_ROOT'].'/expCounter/counter.php');?> - - -