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);
+
+?>
+
+
+
+
+
+
+
+
+
+
+
+
+ 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 .= "";
+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() );
+}
+?>
+
+
-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');?>
-
-
-