Aufräumarbeiten im Zweig redesign2018

Auf Branch redesign2018
 zum Commit vorgemerkte Änderungen:
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/.htaccess
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/config.inc.php
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/css/cwsvJudoAmp.css
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/cwsvJudo.ampTemplate.inc.php
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/expCounter/counter.php
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/galerien.php
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/googlef3ad27a876479282.html
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/index.php
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/kontakt.php
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/news.php
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/newsDev.php
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/pages/desktop/verein.galerien.php
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/phpLib/ampify.php
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/phpLib/cwsvJudoAmpLib.php
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/robots.txt
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/sitemap.xml
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/trainingszeiten.php
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/urllist.txt
	neue Datei:     backup/ampPages-backup-2018-06-11-06-49/verein.training.php
	neue Datei:     backup/config.inc.php
	neue Datei:     graphiken/icons/cwsv.ico
	neue Datei:     impressumsVorlagen/impressum-recht-de.html
	neue Datei:     impressumsVorlagen/impressum-recht.de
	neue Datei:     impressumsVorlagen/muster_impressum_vorlage_von_www_jurarat_de.txt
	neue Datei:     impressumsVorlagen/sqr-law.de
	gelöscht:       phpLib/imgGallery.square7/indexDev.php.tmpl.orig
	neue Datei:     sitemap.xml
	geändert:       src/Makefiles/Makefile.vp9
	neue Datei:     src/tools/config.inc.php
	neue Datei:     src/tools/index.php
	neue Datei:     src/tools/indexHier.php
	neue Datei:     src/tools/indexInArbeit.php
	neue Datei:     src/tools/mkGalGen/Makefile.mkGalGen
	neue Datei:     src/tools/mkGalGen/ReadMe.md
	neue Datei:     src/tools/mkGalGen/createImageList.py
	neue Datei:     src/tools/mkGalGen/jpgListCreator.py
	neue Datei:     src/tools/mkGalGen/jpgListLoader.py
	neue Datei:     src/tools/mkGalGen/jpgSelector.py
	neue Datei:     src/tools/mkGalGen/jsonAlbumTest-Template.sh
	neue Datei:     src/tools/mkGalGen/jsonJpgList2IndexPhp.py
	neue Datei:     src/tools/mkGalGen/jsonJpgList2Makefile.py
	neue Datei:     src/tools/mkGalGen/jsonJpgList2ViewPhp.py
	neue Datei:     src/tools/mkGalGen/sortierer.py
	neue Datei:     src/tools/mkGalGen/testingArea/Makefile
This commit is contained in:
marko
2018-11-21 08:09:21 +01:00
parent 3b0b967a6c
commit 0948251fac
44 changed files with 2206 additions and 359 deletions

View File

@@ -0,0 +1,14 @@
RewriteEngine on
RewriteRule ^photoalben/(.*) http://cwsvjudo\.bplaced\.net/photoalben/$1
RewriteRule ^ressourcen/(.*)$ http://cwsvjudo\.bplaced\.net/ressourcen/$1
RewriteRule ^/ressourcen/(.*)$ http://cwsvjudo\.bplaced\.net/ressourcen/$1
RewriteCond %{HTTP_HOST} cwsvjudo.bplaced.net
RewriteRule ^news$ news\.php [L]
RewriteCond %{HTTP_HOST} cwsvjudo.bplaced.net
RewriteRule ^news/([0-9]+)$ news\.php?newsId=$1
RewriteCond %{HTTP_HOST} amp.cwsvjudo.bplaced.net
RewriteRule ^news$ news\.php [L]
RewriteCond %{HTTP_HOST} amp.cwsvjudo.bplaced.net
RewriteRule ^news/([0-9]+)$ news\.php?newsId=$1 [L]

View File

@@ -0,0 +1,20 @@
<?php
/// Die Basisdomain, unter der die Hauptseite zu erreichen ist
$baseDomain = "cwsvjudo.bplaced.net";
/// Subdomain, unter dem dieses Verzeichnis zu finden ist (falls der Fall gegeben ist)
$subDomain = "amp";
/// Basis(/Root)-Verzeichnis auf dem Server (für Dateizugriffe, insbesondere phpIncludes)
$basePath = "/users/cwsvjudo/www";
/// Url zum Zugriff auf "shared Data" unter der Hauptadresse
$baseUrl = "http://".$baseDomain;
/// Die kanonische Url dieses Verzeichnisses (unter welcher
/// Domainadresse die Seiten dieses Verzeichnisses bevorzugt zu
/// erreichen seien sollen, also entweder eine SubdomainUrl, oder die
/// baseUrl mit dem Verzeichnis angehängt)
/// Achtung: Gedacht für eine einheitliche Bezeichnung bei internem
/// Verlinken. Der canonicalLink im Header ist bei ampSeiten nicht die
/// eigene Adresse, sondern die (kanonische) Adresse der "normalen"
/// Version der Seite.
$canonicalBaseUrl = "http://".$subDomain.".".$baseDomain;
?>

View File

@@ -0,0 +1,233 @@
/*
@font-face {
font-family: Orbitron-Medium;
src: url(/ressourcen/fonts/Orbitron-Medium.otf);
}
*/
html{
background: #FFAE00;
box-sizing: border-box;
}
*, ::before, ::after {
box-sizing: inherit;
}
body{
font-size: 4.5vmin;
font-family: arial, helvetica, sans-serif;
background: #FFAE00;
}
.newsTable{
border: solid 1px #000000;
width:100%;
padding: 1%;
}
.newsTableHeader{
background: #FF8100;
}
.newsTableFooter{
clear: both;
background: #FF8100;
}
.bigPicture{
width: 100%;
height: auto;
}
.centeredText{
text-align: center;
}
.orbitronFont{
font-family: "Orbitron-Medium", Impact, Charcoal, sans-serif;
padding-top: .16em;
}
.Inhaltsverzeichnis{
padding: 1%;
width: 100%;
background-color:
#FF8100;
font-variant:
small-caps;
font-size:
larger;
font-weight:
bolder;
}
.Inhaltsverzeichnis a{
color: inherit;
}
.Inhaltsverzeichnis div a:hover{
text-decoration:
none;
color:
#993300;
}
.navButton{
border-color: white;
border-style: outset;
border-radius: 1em;
text-align: center;
text-decoration: none;
cursor: pointer;
display: inline-block;
padding-left: .5em;
padding-right: .5em;
}
.messageBox{
width: 100%;
border:solid 1px #000000;
background-color:#FF8100;
font-size:smaller;
}
.fullWidth{
width:100%;
}
.noMargin{
margin: 0;
}
.rightFloat{
float:right;
}
.leftFloat{
float:left;
}
.clearBoth{
clear: both;
}
/*---
* Formatierung der News in Amp
*/
.ampNewsBox{
clear: both;
border: solid 1px #000000;
width:100%;
padding: 1%;
}
.ampNewsBoxHeader{
background: #FF8100;
}
.ampNewsBoxFooter{
clear: both;
background: #FF8100;
}
/*---
* Formatierung der subNav in Amp
*/
.ampSubNav{
display: flex;
justify-content: space-between;
}
/*---
* touchable Links
*/
.touchLink{
display: inline-block;
padding: 0.25em 0 0.25em 0;
margin: 0.25em 0 0.25em 0;
background-color: #FF8100;
border-radius: .5em;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}
/*---
* Eine kleine NachrichtenBox
*/
.messageBox{
width: 100%;
border:solid 1px #000000;
background-color:#FF8100;
font-size:smaller;
}
/*
* Unterauswahl-Navigationsleiste
*/
/* der SubNavContainer*/
.subNav{
display: flex;
/* flex-direction: column;*/
align-items: stretch;
justify-content: space-between;
}
.subNav a{
color: inherit;
}
.subNavElement{
/*width: 100%;*/
background: #FF8100;
padding-top:.125em;
padding-left:.125em;
padding-right:.125em;
border-style: outset;
border-radius: 1em;
font-size: 1.125em;
text-decoration: none;
flex-basis: 20%;
border-style: outset;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
}
.subNavElementIcon{
text-align: center;
max-width: 2.5em;
height: auto;
padding: .125em;
}
.subNavElementCaption{
display: none;
}
.activeNav {
border-color: #A80101;
border-style: inset;
}
.pngAddress{
width: 20em;
height: auto;
vertical-align: middle;
}
/*
* Tabelle mit den GalerieLinks
*/
.galTable{
width: 100%;
}
.galTable tr, th, td {
width: auto;
vertical-align: middle;
}
.galTable tr:nth-child(odd){
background-color: #FF8100;
}
.galTable tr td img{
display: inline;
vertical-align: middle;
}
.galTable tr td a img{
display: inline;
vertical-align: middle;
}

View File

@@ -0,0 +1,107 @@
<?php
/// Einbinden der Konfiguration, insbesondere Basisvariablen
/// relative Pfadangabe, jedes Verzeichnis soll seine eigene haben
require_once("./config.inc.php");
/// Daten für den Datenbankzugriff
require_once( $basePath."/bonus/db.inc");
/// Bibliothek mit verschienden Hilfsfunktionen
require_once( $basePath."/ressourcen/phpLib/miscAssis.php");
/// Bibliothek für die Arbeit mit der Newsdatenbank
// require_once( $basePath."/ressourcen/phpLib/newsLib.php");
?>
<!doctype html>
<html amp lang="de">
<head>
<meta charset="utf-8">
<script async src="https://cdn.ampproject.org/v0.js"></script>
<meta name="viewport" content="width=device-width,minimum-scale=1">
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
<style amp-custom>
<?php require_once("./css/cwsvJudoAmp.css");?>
<?php echo( "@font-face {font-family: Orbitron-Medium;src: url(".$baseUrl."/ressourcen/fonts/Orbitron-Medium.otf);}\n" );?>
</style>
<!-- favIcon und Co nach der Empfehlung von https://github.com/audreyr/favicon-cheat-sheet -->
<?php require_once($basePath."/pages/shared/faviconAmp.inc.html");?>
<link rel="canonical" href="<?php echo ( empty($siteData['canonicalLink']) ? getCurPagesUrl() : $siteData['canonicalLink'] );?>" />
<?php echo( empty($siteData['jsonDataHeader'])?"":$siteData['jsonDataHeader'] );?>
<title><?php echo( !empty($siteData['title']) ? $siteData['title'] : "Judo im Chemnitzer WSV" );?></title>
</head>
<body>
<div class="messageBox">
Dies ist die "mobile" Version für Smartphones etc.<br/>
<a href="<?php echo( empty($siteData['canonicalLink']) ? $baseUrl : $siteData['canonicalLink'] );?>">Hier gibt es die Desktop-Variante</a>
</div>
<?php echo(empty($messages['error']) ? "" : "<div class=\"\">".$messages['error']."</div>");?>
<header>
<h1 class="noMargin centeredText orbitronFont">
<?php echo( empty($siteData['headline']) ? "Judo im CWSV" : $siteData['headline']); ?>
</h1>
</header>
<hr />
<main>
<?php echo( empty($siteData['subNav']) ? "" : $siteData['subNav'] );?>
<?php
if(!empty($siteData['content'])) foreach($siteData['content'] as $section){
foreach($section as $article){
echo $article;
}
}
?>
</main>
<hr />
<div class="orbitronFont" id="Inhaltsverzeichnis">
<div class="Inhaltsverzeichnis">
<a
title="Bekanntmachungen der Sektion Judo des Chemnitzer Freizeit- und Wohngebietssportvereines"
href="<?php echo($canonicalBaseUrl."/");?>news.php"
>
<div class="navButton fullWidth">Bekanntmachungen</div>
</a>
<a
title="Trainingszeiten und -stätten der Sektion Judo des Chemnitzer Freizeit- und Wohngebietssportvereines"
href="<?php echo($canonicalBaseUrl."/");?>trainingszeiten.php"
>
<div class="navButton fullWidth">Trainingszeiten</div>
</a>
<!-- Restlichen Buttons sind noch nicht eingeplegt-->
<a
title="Termine, Ausschreibungen und Wegbeschreibungen der Wettkämpfe der Sektion Judo des Chemnitzer Freizeit- und Wohngebietssportvereines"
href="http://cwsvjudo.bplaced.net/pages/mobile/verein.wettkampfkalender.php"
>
<div class="navButton fullWidth">Wettkampfkalender</div>
</a>
<a
title="Wettkampfplaner der Sektion Judo des Chemnitzer Freizeit- und Wohngebietssportvereines"
href="http://cwsvjudo.bplaced.net/pages/desktop/wkParticipo"
>
<div class="navButton fullWidth">Wettkampfplaner</div>
</a>
<a
title="Alben mit Bildern und Videos der Wettkämpfe der Sektion Judo des Chemnitzer Freizeit- und Wohngebietssportvereines"
href="http://cwsvjudo.bplaced.net/pages/mobile/verein.wettkampfgalerien.php"
>
<div class="navButton fullWidth">Wettkampfgalerien</div>
</a>
<a
title="eMail-Adressen, Telephonnummern und Adressen um mit dem Chemnitzer Freizeit- und Wohngebietssportverein Verbindung aufzunehmen"
href="<?php echo($canonicalBaseUrl."/");?>kontakt.php"
>
<div class="navButton fullWidth">Kontaktdaten</div>
</a>
</div>
</div>
<?php include($basePath."/pages/shared/sponsorList.amp.inc");?>
</body>
</html>

View File

@@ -0,0 +1,3 @@
<?php
require_once( "/users/cwsvjudo/www/expCounter/counter.php" );
?>

View File

@@ -0,0 +1,202 @@
<?php
/// Einbinden der Konfiguration, insbesondere Basisvariablen
/// relative Pfadangabe, jedes Verzeichnis soll seine eigene haben
require_once("./config.inc.php");
/// Daten für den Datenbankzugriff
require_once( $basePath."/bonus/db.inc");
/// Bibliothek für die Arbeit mit der Newsdatenbank
//require_once( $basePath."/ressourcen/phpLib/newsLib.php");
/// Bibliothek mit verschienden Hilfsfunktionen
require_once( $basePath."/ressourcen/phpLib/miscAssis.php");
//require_once(__DIR__.'/phpLib/ampify.php');
require_once("./phpLib/cwsvJudoAmpLib.php");
$siteData['canonicalLink'] = $baseUrl."/pages/desktop/verein.galerien.php";
$siteData['headline'] = "Galerien";
$messages['error'] = "";
// Datenbankverbindung bereitstellen
$mysqlConn = @new mysqli($db_server, $db_user, $db_password, $db_name);
if($mysqlConn->connect_error){
$messages['error'] += "Datenbankverbindung fehlgeschlagen: " . $mysqlConn->connect_error . "<br />";
}
else{
// mögliche Werte für das Jahr herausfinden
$galJahresListe = array();
$queryJahresListe = "
SELECT DISTINCT DATE_FORMAT( datum, '%Y')
AS jahr
FROM cwsvjudo.wkGalerien
WHERE 1
ORDER BY DATE_FORMAT( datum, '%Y' ) DESC;
";
$mysqlResults = $mysqlConn->query($queryJahresListe);
if( !$mysqlResults ){
$messages['error'] += "Fehler bei Datenbankabfrage '".$queryJahresListe."'<br />";
}
else{
while( $mysqlResult = $mysqlResults->fetch_assoc() ){
array_push( $galJahresListe, $mysqlResult['jahr']);
}
}
// standardmäßig frage die letzten 12 Galerien ab
$queryGals = "
SELECT id,datum,name,url,typ,teaserBildUrl
FROM cwsvjudo.wkGalerien
WHERE 1
ORDER BY datum DESC LIMIT 12
";
// Falls ein Konkretes Jahr angegebe wurde, fragen wir dies ab
if($galJahr != ""){
$minDate = $galJahr."-01-01";
$maxDate = $galJahr."-12-31";
$queryGals = sprintf("
SELECT id,datum,name,url,typ,teaserBildUrl
FROM cwsvjudo.wkGalerien
WHERE datum >= '%s' AND datum <= '%s' ORDER BY datum ASC;",
$mysqlConn->real_escape_string($minDate),
$mysqlConn->real_escape_string($maxDate)
);
}
$galListe = array();
$mysqlResults = $mysqlConn->query($queryGals);
if( !$mysqlResults ){
$messages['error'] += "Fehler bei Datenbankabfrage '".$queryGals."'<br />";
}
else{
while( $mysqlResult = $mysqlResults->fetch_assoc() ){
array_push( $galListe, $mysqlResult);
}
}
}
//$siteData['jsonDataHeader'] = "<script type=\"application/ld+json\">" . news2json( $news ) . "</script>";
// Modellierung:
// - der Content ist eine Menge von Sections
// - eine Section ist eine Folge von Articles
$siteData['content'] = array();
// $newsSection = array();
$siteData['title'] = "Galerien mit Bildern der Judoka des Chemnitzer WSV";
$siteData['ampSubNav'] = array(
array(
'caption' => "Trainings&shy;zeiten",
'icon' => $baseUrl."/ressourcen/graphiken/icons/clockIconFriendly.svg",
'title' => "Trainingszeiten und -orte der Judoka des Chemnitzer WSV",
'href' => $canonicalBaseUrl."/trainingszeiten.php"
),
array(
'caption' => "Termine",
'icon' => $baseUrl."/ressourcen/graphiken/icons/calendarIcon.svg",
'title' => "Kalender mit Terminen für Wettkämpfe",
'href' => $baseUrl."/pages/desktop/verein.wettkampfkalender.php"
),
array(
'isActive' => 'true',
'caption' => "Galerien",
'icon' => $baseUrl."/ressourcen/graphiken/icons/gallery.svg",
'title' => "Bilder und Videos von unseren Wettkämpfen und sonstigen Veranstaltungen",
'href' => $canonicalBaseUrl."/galerien.php"
),
array(
'caption' => "JudoWiki",
'icon' => $baseUrl."/ressourcen/graphiken/icons/wikipediaW.svg",
'title' => "Ein kleines Nachschlagewerk über Judo",
'href' => $baseUrl."/JudoWiki"
),
array(
'caption' => "Kontakt",
'icon' => $baseUrl."/ressourcen/graphiken/icons/contact4Ways.svg",
'title' => "Möglichkeiten mit dem Chemnitzer Freizeit- und Wohngebietssportverein in Kontakt zu treten",
'href' => $canonicalBaseUrl."/kontakt.php"
),
);
$siteData['subNav'] = "<nav class=\"subNav\">". getAmpSubNav($siteData['ampSubNav']) ."</nav>";
$siteData['content'] = array();
// $jahresSelector = "";
// $jahresSelector .=
// "<nav>Jahresauswahl:<form class=\"yearSelector\" action=\"".$canonicalBaseUrl."/galerien.php"."\">".
// "<select name=\"jahr\" onchange=\"javascript: this.form.submit();\" >".
// "<optgroup label=\"Jahresauswahl\">".
// "<option value=\"".( $galJahr!="" ? "" : " selected" )."\">Neueste</option>";
// foreach($galJahresListe as $jahr){
// $jahresSelector .=
// "<option value=\"".$jahr."\"".( $galJahr==$jahr ? " selected" : "" ).">".$jahr."</option>";
// }
// $jahresSelector .=
// "</optgroup>".
// "</select>".
// "<noscript><button type=\"submit\">Submit</button></noscript>".
// "</form></nav>";
// array_push(
// $siteData['content'],
// array(
// $jahresSelector
// )
// );
$galTable = "";
$galTable .=
"<table class=\"galTable\">".
"<thead><tr><th>Datum</th><th>Link zur Galerie</th></tr></thead>".
"<tbody>";
// Jede Galerie ausgeben
foreach($galListe as $gal){
$galTable .=
"<tr>".
"<td class=\"noWrap\">".
"<time datetime=\"".mb_convert_encoding($gal['datum'], 'UTF-8', 'ISO-8859-1')."\">".str_replace("-", "&#8209;", mb_convert_encoding($gal['datum'], 'UTF-8', 'ISO-8859-1') )."</time>".
"</td>".
"<td class=\"floatClearBoth\">".
"<a href=\"http://".$baseDomain."?galId=".$gal['id']."\">";
if( $gal['teaserBildUrl'] != "" ){
$galTable .=
"<div>".
"<amp-img".
" layout=\"fixed\"".
" title=\"".mb_convert_encoding($gal['name'], 'UTF-8', 'ISO-8859-1')." - Bilder der Judoka des Chemnitzer WSV\"".
" alt=\"Teaserbild ".mb_convert_encoding($gal['name'], 'UTF-8', 'ISO-8859-1')."\"".
" src=\"http://".$baseDomain."/".mb_convert_encoding($gal['teaserBildUrl'], 'UTF-8', 'ISO-8859-1')."\"".
" ".(@getimagesize($basePath."/".$gal['teaserBildUrl'])[3]?getimagesize($basePath."/".$gal['teaserBildUrl'])[3]:"width=\"200\" height=\"133\"").
">".
"</amp-img>".
"</div>";
}
$galTable .=
"<div>".mb_convert_encoding($gal['name'], 'UTF-8', 'ISO-8859-1')." (".mb_convert_encoding($gal['typ'], 'UTF-8', 'ISO-8859-1').")</div>".
"</a>".
"</td>".
"</tr>";
}
$galTable .=
"</tbody>".
"</table>";
array_push(
$siteData['content'],
array(
$galTable
)
);
require_once('./cwsvJudo.ampTemplate.inc.php');
$chCounter_page_title = "Galerien (ampVersion)";
$chCounter_visible=0;
$chCounter_mode='noscript';
include($basePath."/expCounter/counter.php");
// require_once( "/users/cwsvjudo/www/expCounter/counter.php" );
?>

View File

@@ -0,0 +1 @@
google-site-verification: googlef3ad27a876479282.html

View File

@@ -0,0 +1,127 @@
<?php
/// Einbinden der Konfiguration, insbesondere Basisvariablen
/// relative Pfadangabe, jedes Verzeichnis soll seine eigene haben
require_once("./config.inc.php");
/// Daten für den Datenbankzugriff
require_once( $basePath."/bonus/db.inc");
/// Bibliothek für die Arbeit mit der Newsdatenbank
require_once( $basePath."/ressourcen/phpLib/newsLib.php");
/// Bibliothek mit verschienden Hilfsfunktionen
require_once( $basePath."/ressourcen/phpLib/miscAssis.php");
require_once(__DIR__.'/phpLib/ampify.php');
require_once("./phpLib/cwsvJudoAmpLib.php");
//$newsId = isset($_GET["newsId"]) ? $_GET["newsId"] : "";
//$newsById = array();
//$prevNewsId = "";
//$postNewsId = "";
// @ToDo: Bad Hack entfernen! $_GET sollte nicht gesetzt werden. Lieber eine Hilfsvariable einführen, die der Reihe nach mit alternativen aufgefüllt werden kann (wenn $_GET nicht gesetzt, dann $_POST usw.)
if( empty($_GET['galId']) && !empty($_GET['galld']) ) $_GET['galId'] = $_GET['galld'];
// die( "galID: ".$_GET['galId']." galld: ".$_GET['galld']."\n" );
if(isset($_GET['galId'])){
$redirectLink = $baseDomain."/pages/desktop/verein.galerien.php";
try{
$db_connection = new PDO('mysql:host='.$db_server.';dbname='.$db_name, $db_user, $db_password);
if(is_positive_integer($_GET['galId'])){
// mögliche Werte für das jahr herausfinden
$query="SELECT url FROM wkGalerien WHERE id = \"".$_GET['galId']."\" ORDER BY Datum ASC LIMIT 1;";
$ergebnis = $db_connection->query($query);
$galleryLink = $ergebnis->fetchAll();
header("Location: http://".$baseDomain.$galleryLink[0]['url']);
//die("Location(".$_GET['galId']."): ".$galleryLink[0]['url']);
}
$db_connection = NULL;
}
catch(PDOException $db_error){
print "Error!: " . $db_error->getMessage() . "<br/>";
die();
}
}
$siteData['canonicalLink'] = $baseUrl;
$siteData['headline'] = "Judo im CWSV";
$messages['error'] = "";
// Datenbankverbindung bereitstellen
$mysqlConn = @new mysqli($db_server, $db_user, $db_password, $db_name);
if($mysqlConn->connect_error){
$messages['error'] += "Datenbankverbindung fehlgeschlagen: " . $mysqlConn->connect_error . "<br />";
}
else{
$newsList = getNewsListById($mysqlConn, $newsId, ["limit" => 6]);
// print_r($newsList);
$prevNewsId = getPrevNewsId($mysqlConn, $newsList[0]);
$nextNewsId = getNextNewsId($mysqlConn, end(array_values($newsList)));
}
$siteData['jsonDataHeader'] = "<script type=\"application/ld+json\">" . news2json( $newsList[0] ) . "</script>";
// Modellierung:
// - der Content ist eine Menge von Sections
// - eine Section ist eine Folge von Articles
$siteData['content'] = array();
$newsSection = array();
$siteData['title'] = "Judo im Chemnitzer WSV - Kinder- und Erwachsenentraining";
$siteData['ampSubNav'] = array(
array(
'caption' => "Trainings&shy;zeiten",
'icon' => $baseUrl."/ressourcen/graphiken/icons/clockIconFriendly.svg",
'title' => "Trainingszeiten und -orte der Judoka des Chemnitzer WSV",
'href' => $canonicalBaseUrl."/trainingszeiten.php"
),
array(
'caption' => "Termine",
'icon' => $baseUrl."/ressourcen/graphiken/icons/calendarIcon.svg",
'title' => "Kalender mit Terminen für Wettkämpfe",
'href' => $baseUrl."/pages/desktop/verein.wettkampfkalender.php"
),
array(
'caption' => "Gallerien",
'icon' => $baseUrl."/ressourcen/graphiken/icons/gallery.svg",
'title' => "Bilder und Videos von unseren Wettkämpfen und sonstigen Veranstaltungen",
'href' => $baseUrl."/pages/desktop/verein.galerien.php"
),
array(
'caption' => "JudoWiki",
'icon' => $baseUrl."/ressourcen/graphiken/icons/wikipediaW.svg",
'title' => "Ein kleines Nachschlagewerk über Judo",
'href' => $baseUrl."/JudoWiki"
),
array(
'caption' => "Kontakt",
'icon' => $baseUrl."/ressourcen/graphiken/icons/contact4Ways.svg",
'title' => "Möglichkeiten mit dem Chemnitzer Freizeit- und Wohngebietssportverein in Kontakt zu treten",
'href' => $canonicalBaseUrl."/kontakt.php"
),
);
$siteData['subNav'] = "<nav class=\"subNav\">". getAmpSubNav($siteData['ampSubNav']) ."</nav>";
foreach( $newsList as $news)
array_push( $newsSection, "<article>".getAmpNews($news)."</article><hr />" );
array_push($siteData['content'], $newsSection);
array_push( $siteData['content'], array (empty($prevNewsId) ? "" : "<a class=\"touchLink\" title=\"weitere News\" href=\"news.php?newsId=".$prevNewsId."\">weitere Neuigkeiten</span></a>") );
require_once('./cwsvJudo.ampTemplate.inc.php');
$chCounter_page_title = "Startseite (ampVersion)";
$chCounter_visible=0;
$chCounter_mode='noscript';
include($basePath."/expCounter/counter.php");
// require_once( "/users/cwsvjudo/www/expCounter/counter.php" );
?>

View File

@@ -0,0 +1,150 @@
<?php
/// Einbinden der Konfiguration, insbesondere Basisvariablen
/// relative Pfadangabe, jedes Verzeichnis soll seine eigene haben
require_once("./config.inc.php");
/// Daten für den Datenbankzugriff
require_once( $basePath."/bonus/db.inc");
/// Bibliothek für die Arbeit mit der Newsdatenbank
require_once( $basePath."/ressourcen/phpLib/newsLib.php");
/// Bibliothek mit verschienden Hilfsfunktionen
require_once( $basePath."/ressourcen/phpLib/miscAssis.php");
require_once(__DIR__.'/phpLib/ampify.php');
require_once("./phpLib/cwsvJudoAmpLib.php");
$siteData['canonicalLink'] = $baseUrl."/pages/desktop/kontakt.php";
$siteData['headline'] = "Kontaktdaten";
$messages['error'] = "";
$cwsvJsonLd = file_get_contents( $basePath."/ressourcen/structuredData/json/cwsv.json" );
// Datenbankverbindung bereitstellen
/* $mysqlConn = @new mysqli($db_server, $db_user, $db_password, $db_name);
if($mysqlConn->connect_error){
$messages['error'] += "Datenbankverbindung fehlgeschlagen: " . $mysqlConn->connect_error . "<br />";
}
else{
$news = getNewsById($mysqlConn, $newsId);
$prevNewsId = getPrevNewsId($mysqlConn, $news);
$nextNewsId = getNextNewsId($mysqlConn, $news);
}
*/
// Modellierung:
// - der Content ist eine Menge von Sections
// - eine Section ist eine Folge von Articles
$siteData['content'] = array();
$newsSection = array();
$siteData['title'] = "Kontaktmöglichkeiten mit dem Chemnitzer WSV und seiner Abteilung Judo";
$siteData['ampSubNav'] = array(
array(
'caption' => "Trainings&shy;zeiten",
'icon' => $baseUrl."/ressourcen/graphiken/icons/clockIconFriendly.svg",
'title' => "Trainingszeiten und -orte der Judoka des Chemnitzer WSV",
'href' => $canonicalBaseUrl."/trainingszeiten.php"
),
array(
'caption' => "Termine",
'icon' => $baseUrl."/ressourcen/graphiken/icons/calendarIcon.svg",
'title' => "Kalender mit Terminen für Wettkämpfe",
'href' => $baseUrl."/pages/desktop/verein.wettkampfkalender.php"
),
array(
'caption' => "Galerien",
'icon' => $baseUrl."/ressourcen/graphiken/icons/gallery.svg",
'title' => "Bilder und Videos von unseren Wettkämpfen und sonstigen Veranstaltungen",
// 'href' => $baseUrl."/pages/desktop/verein.galerien.php"
'href' => $canonicalBaseUrl."/galerien.php"
),
array(
'caption' => "JudoWiki",
'icon' => $baseUrl."/ressourcen/graphiken/icons/wikipediaW.svg",
'title' => "Ein kleines Nachschlagewerk über Judo",
'href' => $baseUrl."/JudoWiki"
),
array(
'caption' => "Kontakt",
'icon' => $baseUrl."/ressourcen/graphiken/icons/contact4Ways.svg",
'title' => "Möglichkeiten mit dem Chemnitzer Freizeit- und Wohngebietssportverein in Kontakt zu treten",
'href' => $canonicalBaseUrl."/kontakt.php",
'isActive' => 'true',
),
);
$siteData['subNav'] = "<nav class=\"subNav\">". getAmpSubNav($siteData['ampSubNav']) ."</nav>";
$siteData['main'] = "";
$siteData['main'] .=
"<h2>E-Mail</h2>".
"<script type=\"application/ld+json\">".$cwsvJsonLd."</script>".
"<ul>".
"<li>".
"<a href=\"mailto:cwsv.sb@web.de\">eMail an den Chemnitzer Freizeit- und Wohngebietssportverein e.&thinsp;V.(cwsv.sb@web.de)</a>".
"</li>".
"<li>".
"Link zum <a href=\"http://www.cwsv-sport.de/Kontakt.htm\">".
"Kontaktformular".
"</a>".
"auf der Homepage des Chemnitzer Freizeit- und Wohngebietssportvereines".
"</li>".
"<li>".
"<amp-img layout=\"responsive\" class=\"pngAddress\" alt=\"eMail\" width=\"420\" height=\"60\" src=\"/ressourcen/graphiken/misc/abc123.png\">".
"</li>".
"</ul>";
$siteData['main'] .=
"<h2>Adressen</h2>".
"<ul>".
"<li>CWSV - Verwaltung".
"<a href=\"http://www.openstreetmap.org/?mlat=50.807643&amp;mlon=12.882060#map=17/50.807643/12.882060\" title=\"Karte der Verwaltung des Chemnitzer WSV\">".
"<div itemscope itemtype=\"https://schema.org/SportsActivityLocation\">".
"<meta itemprop=\"name\" content=\"Verwaltung des Chemnitzer WSV\" />".
"<meta itemprop=\"image\" content=\"http://img.webme.com/pic/c/cwsv-sport/dsc_1425.jpg\" />".
"<meta itemprop=\"address\" content=\"Strasse Usti nad Labem 42, 09119 Chemnitz\" />".
"<meta itemprop=\"telephone\" content=\"+49 371 2823370\" />".
"<meta itemprop=\"openingHours\" content=\"[ 'Mo 8:00-16:30', 'Di 10:00-17:00', 'Mi 8:00-17:00', 'Do 10:00-17:00']\" />".
"<meta itemprop=\"sameAs\" content=\"https://www.facebook.com/CWSV-eV-149983928431116/\" />".
"<ul>".
"<li>Strasse Usti nad Labem 42</li>".
"<li>09119 Chemnitz</li>".
"<li>Mo 8:00-16:30, Di 10:00-17:00, Mi 8:00-17:00, Do 10:00-17:00</li>".
"</ul>".
"</div>".
"</a>".
"</li>".
"</ul>";
$siteData['main'] .=
"<h2>Telephon</h2>".
"".
"<ul>".
"<li>CWSV - Verwaltung<script type=\"application/ld+json\">".$cwsvJsonLd."</script>".
"<ul>".
"<li>Tel.: <a title=\"Telefonnummer der Verwaltung des Chemnitzer WSV\" href=\"tel:+493712823370\">0371 / 28 23 370</a></li>".
"<li>Fax.: 0371/ 22 91 79</li>".
"<li>Mo 8:00-16:30, Di 10:00-17:00, Mi 8:00-17:00, Do 10:00-17:00</li>".
"</ul>".
"</li>".
"</ul>";
array_push( $newsSection, $siteData['main'] );
array_push($siteData['content'], $newsSection);
/* array_push(
$siteData['content'],
array ( "<a class=\"touchLink fullWidth centeredText\" title=\"weitere News\" href=\"news.php".( empty($prevNewsId) ? "" : "?newsId=".$prevNewsId."\">weitere Neuigkeiten</a>") )
);
*/
require_once('./cwsvJudo.ampTemplate.inc.php');
$chCounter_page_title = "Kontaktseite (ampVersion)";
$chCounter_visible=0;
$chCounter_mode='noscript';
include($basePath."/expCounter/counter.php");
// require_once( "/users/cwsvjudo/www/expCounter/counter.php" );
?>

View File

@@ -0,0 +1,60 @@
<?php
require_once( "./config.inc.php");
require_once( "/users/cwsvjudo/www/bonus/db.inc");
require_once( $basePath."/ressourcen/phpLib/newsLib.php");
require_once( $basePath."/ressourcen/phpLib/miscAssis.php");
require_once(__DIR__.'/phpLib/ampify.php');
$newsId = isset($_GET["newsId"]) ? $_GET["newsId"] : "";
//$newsById = array();
$prevNewsId = "";
$postNewsId = "";
$canonicalLinkBase = $baseUrl."/pages/desktop/news.php";
$siteData['canonicalLink'] = $canonicalLinkBase.(is_positive_integer($newsId)?"?newsId=".$newsId:"");
$siteData['headline'] = "Be&shy;kannt&shy;ma&shy;chung&shy;en der Abteilung Judo des CWSV";
$message['error'] = "";
$mysqlConn = @new mysqli($db_server, $db_user, $db_password, $db_name);
if($mysqlConn->connect_error){
$messages['error'] += "Datenbankverbindung fehlgeschlagen: " . $mysqlConn->connect_error . "<br />";
}
else{
$news = getNewsById($mysqlConn, $newsId);
$prevNewsId = getPrevNewsId($mysqlConn, $news);
$nextNewsId = getNextNewsId($mysqlConn, $news);
}
// Modellierung:
// - der Content ist eine Menge von Sections
// - eine Section ist eine Folge von Articles
$siteData['content'] = array();
$newsSection = array();
$siteData['title'] = empty($news['betreff'])?"Neuigkeiten der Abteilung Judo des Chemnnitzer WSV":($news['betreff']." - Judo im CWSV");
$siteData['jsonDataHeader'] = "<script type=\"application/ld+json\">" . news2json( $news ) . "</script>";
// echo( "News: "); print_r($news);
$siteData['subNav'] = "";
$siteData['subNav'] .= "<nav class=\"ampSubNav\">";
$siteData['subNav'] .= "<div>";
$siteData['subNav'] .= empty($prevNewsId) ? "" : "<a class=\"touchLink\" title=\"vorherige News\" href=\"news.php?newsId=".$prevNewsId."\">eine News vorher</span></a>";
$siteData['subNav'] .= "</div>";
$siteData['subNav'] .= "<div>";
$siteData['subNav'] .= empty($nextNewsId) ? "" : "<a class=\"touchLink\" title=\"nächste News\" href=\"news.php?newsId=".$nextNewsId."\">eine News später</span></a>";
$siteData['subNav'] .= "</div>";
$siteData['subNav'] .= "</nav>";
array_push( $newsSection, "<article>".getAmpNews($news)."</article>" );
array_push($siteData['content'], $newsSection);
require_once('./cwsvJudo.ampTemplate.inc.php');
// $chCounter_page_title = "News".( $newsId != "" ? " Id ".$newsId : "" )." (ampVersion)";
// $chCounter_visible=0;
//include($_SERVER['DOCUMENT_ROOT']."/expCounter/counter.php");
// require_once( "/users/cwsvjudo/www/expCounter/counter.php" );
?>

View File

@@ -0,0 +1,65 @@
<?php
require_once( "./config.inc.php");
require_once( "/users/cwsvjudo/www/bonus/db.inc");
require_once( $basePath."/ressourcen/phpLib/newsLibDev.php");
require_once( $basePath."/ressourcen/phpLib/miscAssis.php");
require_once(__DIR__.'/phpLib/ampify.php');
$newsId = is_positive_integer($_GET["newsId"]) ? $_GET["newsId"] : "";
$prevNewsId = "";
$postNewsId = "";
$canonicalLinkBase = $baseUrl."/pages/desktop/news.php";
$siteData['canonicalLink'] = $canonicalLinkBase.(is_positive_integer($newsId)?"?newsId=".$newsId:"");
$siteData['headline'] = "Be&shy;kannt&shy;ma&shy;chung&shy;en der Abteilung Judo des CWSV";
$message['error'] = "";
try{
$mysqlConn = new PDO('mysql:host='.$db_server.';dbname='.$db_name, $db_user, $db_password);
}
catch (PDOException $e){
$messages['error'] += "Datenbankverbindung fehlgeschlagen: " . $e->getMessage() . "<br />";
$mysqlConn = NULL;
}
// echo("newsId: ".$newsId); die();
$news = getNewsById($mysqlConn, $newsId);
// echo("News: "); print_r($news); die();
$prevNewsId = getPrevNewsId($mysqlConn, $newsId);
$nextNewsId = getNextNewsId($mysqlConn, $newsId);
// Modellierung:
// - der Content ist eine Menge von Sections
// - eine Section ist eine Folge von Articles
$siteData['content'] = array();
$newsSection = array();
$siteData['title'] = empty($news['betreff'])?"Neuigkeiten der Abteilung Judo des Chemnnitzer WSV":($news['betreff']." - Judo im CWSV");
$siteData['jsonDataHeader'] = "<script type=\"application/ld+json\">" . news2json( $news ) . "</script>";
// echo( "News: "); print_r($news);
$siteData['subNav'] = "";
$siteData['subNav'] .= "<nav class=\"ampSubNav\">";
$siteData['subNav'] .= "<div>";
$siteData['subNav'] .= empty($prevNewsId) ? "" : "<a class=\"touchLink\" title=\"vorherige News\" href=\"news.php?newsId=".$prevNewsId."\">eine News vorher</span></a>";
$siteData['subNav'] .= "</div>";
$siteData['subNav'] .= "<div>";
$siteData['subNav'] .= empty($nextNewsId) ? "" : "<a class=\"touchLink\" title=\"nächste News\" href=\"news.php?newsId=".$nextNewsId."\">eine News später</span></a>";
$siteData['subNav'] .= "</div>";
$siteData['subNav'] .= "</nav>";
// echo(getAmpNews($news)); die();
foreach( $news as $newsEntry)
array_push( $newsSection, "<article>".getAmpNews($newsEntry)."</article>" );
array_push($siteData['content'], $newsSection);
require_once('./cwsvJudo.ampTemplateDev.inc.php');
$chCounter_page_title = "News".( $newsId != "" ? " Id ".$newsId : "" )." (ampVersion)";
$chCounter_visible=0;
// include($_SERVER['DOCUMENT_ROOT']."/expCounter/counter.php");
require_once( "/users/cwsvjudo/www/expCounter/counter.php" );
?>

View File

@@ -0,0 +1,4 @@
<?php
header("Location: http://cwsvjudo.bplaced.net/pages/mobile/verein.wettkampfgalerien.php");
exit();
?>

View File

@@ -0,0 +1,31 @@
<?php
function addImgSize($html=''){
$dom = new DOMDocument();
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
foreach ($dom->getElementsByTagName('img') as $img) {
// list($width, $height) = getimagesize( $_SERVER['DOCUMENT_ROOT'].urldecode($img->getAttribute('src')));
list($width, $height) = getimagesize( "/users/cwsvjudo/www/".urldecode($img->getAttribute('src')));
$img->setAttribute('width', $width);
$img->setAttribute('height', $height);
}
return $dom->saveXML();
}
# Licensed under a CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
# http://creativecommons.org/publicdomain/zero/1.0/
function ampify($html='') {
// $html = addImgSize($html);
# Replace img, audio, and video elements with amp custom elements
$html = str_ireplace(
['<img','<video','/video>','<audio','/audio>'],
['<amp-img layout="responsive" ','<amp-video','/amp-video>','<amp-audio','/amp-audio>'],
$html
);
# Add closing tags to amp-img custom element
$html = preg_replace('/<amp-img(.*?)>/', '<amp-img$1></amp-img>',$html);
# Whitelist of HTML tags allowed by AMP
$html = strip_tags($html,'<h1><h2><h3><h4><h5><h6><a><p><ul><ol><li><blockquote><q><cite><ins><del><strong><em><code><pre><svg><table><thead><tbody><tfoot><th><tr><td><dl><dt><dd><article><section><header><footer><aside><figure><time><abbr><div><span><hr><small><br><amp-img><amp-audio><amp-video><amp-ad><amp-anim><amp-carousel><amp-fit-rext><amp-image-lightbox><amp-instagram><amp-lightbox><amp-twitter><amp-youtube>');
return $html;
}
?>

View File

@@ -0,0 +1,23 @@
<?php
/// Den htmlCode für die Unterauswahl-Navigationsleiste bereitstellen
function getAmpSubNav($someNavElements, $someOptions = array()){
$retHtml = "";
foreach($someNavElements as $navElement){
$retHtml .= "<a class=\"subNavElement";
if( !empty($navElement['isActive']) ){
if($navElement['isActive'] == "true"){
$retHtml .= " activeNav\" title=\"Zurück zur Hauptseite\" href=\"/\" >";
}
}
else{
$retHtml .= "\" title=\"".( !empty($navElement['title'])?$navElement['title']:"" )."\"";
$retHtml .= " href=\"".( !empty($navElement['href'])?$navElement['href']:"" )."\"";
$retHtml .= ">";
}
$retHtml .= !empty($navElement['icon']) ? "<amp-img layout=\"fixed\" width=\"50\" height=\"50\" class=\"subNavElementIcon\" src=\"".$navElement['icon']."\" alt=\"".(!empty($navElement['caption'])?$navElement['caption']:"Icon")."\" ".(!empty($navElement['title'])?"title=\"".$navElement['title']."\"":"").">" : "";
$retHtml .= "<span class=\"subNavElementCaption\">".(!empty($navElement['caption']) ? $navElement['caption'] : "")."</span>";
$retHtml .= "</a>";
}
return $retHtml;
}
?>

View File

@@ -0,0 +1,16 @@
User-agent:*
Disallow: /geheim/
Disallow: /expCounter/
Disallow: /expCounter/administration
Disallow: /JudoWiki/*/main/allrecentchanges$
Disallow: /JudoWiki/*/pmwiki*
Disallow: /JudoWiki/*/search*
Disallow: /JudoWiki/*recentchanges*
Disallow: /JudoWiki/*action=*
Sitemap: http://cwsvjudo.bplaced.net/sitemap.xml

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"
>
<!-- Desktop Section-->
<url>
<loc>http://cwsvjudo.bplaced.net/</loc>
</url>
<url>
<loc>http://cwsvjudo.bplaced.net/JudoWiki</loc>
</url>
<url>
<loc>http://cwsvjudo.bplaced.net/galerien</loc>
</url>
<url>
<loc>http://cwsvjudo.bplaced.net/wkKalender</loc>
</url>
<url>
<loc>http://cwsvjudo.bplaced.net/trainingszeiten</loc>
</url>
<url>
<loc>http://cwsvjudo.bplaced.net/kontakt</loc>
</url>
<!-- Mobile/Amp Section-->
<url>
<loc>http://amp.cwsvjudo.bplaced.net/</loc>
</url>
<url>
<loc>http://amp.cwsvjudo.bplaced.net/trainingszeiten.php</loc>
</url>
<url>
<loc>http://amp.cwsvjudo.bplaced.net/kontakt.php</loc>
</url>
</urlset>

View File

@@ -0,0 +1,102 @@
<?php
/// Einbinden der Konfiguration, insbesondere Basisvariablen
/// relative Pfadangabe, jedes Verzeichnis soll seine eigene haben
require_once("./config.inc.php");
/// Daten für den Datenbankzugriff
require_once( $basePath."/bonus/db.inc");
/// Bibliothek für die Arbeit mit der Newsdatenbank
require_once( $basePath."/ressourcen/phpLib/newsLib.php");
/// Bibliothek mit verschienden Hilfsfunktionen
require_once( $basePath."/ressourcen/phpLib/miscAssis.php");
require_once(__DIR__.'/phpLib/ampify.php');
require_once("./phpLib/cwsvJudoAmpLib.php");
$chCounter_page_title = "Trainingszeiten (ampVersion)";
$chCounter_visible=0;
include($_SERVER['DOCUMENT_ROOT']."/expCounter/counter.php");
$siteData['canonicalLink'] = $baseUrl."/pages/desktop/verein.training.php";
$siteData['headline'] = "Trainingszeiten";
$siteData['title'] = "Trainingszeiten der Judoka des Chemnnitzer WSV";
$siteData['ampSubNav'] = array(
array(
'caption' => "Trainings&shy;zeiten",
'icon' => $baseUrl."/ressourcen/graphiken/icons/clockIconFriendly.svg",
'title' => "Trainingszeiten und -orte der Judoka des Chemnitzer WSV",
'href' => $canonicalBaseUrl."/trainingszeiten.php",
'isActive' => 'true',
),
array(
'caption' => "Termine",
'icon' => $baseUrl."/ressourcen/graphiken/icons/calendarIcon.svg",
'title' => "Kalender mit Terminen für Wettkämpfe",
'href' => $baseUrl."/pages/desktop/verein.wettkampfkalender.php"
),
array(
'caption' => "Galerien",
'icon' => $baseUrl."/ressourcen/graphiken/icons/gallery.svg",
'title' => "Bilder und Videos von unseren Wettkämpfen und sonstigen Veranstaltungen",
// 'href' => $baseUrl."/pages/desktop/verein.galerien.php"
'href' => $canonicalBaseUrl."/galerien.php"
),
array(
'caption' => "JudoWiki",
'icon' => $baseUrl."/ressourcen/graphiken/icons/wikipediaW.svg",
'title' => "Ein kleines Nachschlagewerk über Judo",
'href' => $baseUrl."/JudoWiki"
),
array(
'caption' => "Kontakt",
'icon' => $baseUrl."/ressourcen/graphiken/icons/contact4Ways.svg",
'title' => "Möglichkeiten mit dem Chemnitzer Freizeit- und Wohngebietssportverein in Kontakt zu treten",
'href' => $canonicalBaseUrl."/kontakt.php"
),
);
$siteData['subNav'] = "<nav class=\"subNav\">". getAmpSubNav($siteData['ampSubNav']) ."</nav>";
// Modellierung:
// - der Content ist eine Menge von Sections
// - eine Section ist eine Folge von Articles
$siteData['content'] = array();
$trainingSection = array();
$trainingArticle = "";
$trainingLocationLink = "";
$trainingLocationLink = "<a href=\"http://www.openstreetmap.org/?mlat=50.807643&amp;mlon=12.882060#map=17/50.807643/12.882060\" title=\"Karte des Dojo des CWSV\"><span itemscope itemtype=\"https://schema.org/SportsActivityLocation\"><meta itemprop=\"name\" content=\"Dojo des Chemnitzer WSV\" /><meta itemprop=\"image\" content=\"http://img.webme.com/pic/c/cwsv-sport/dsc_1410.jpg\"/><span itemprop=\"address\">Dojo Sportplatz Str. Usti nad Labem 42, 09120 Chemnitz</span></span></a>";
$trainingArticle .= "<section>";
$trainingArticle .= "<h2>Trainingseinheiten</h2>";
$trainingArticle .= "<article>";
$trainingArticle .= "<h3>Mittwoch (alle AK)</h3>";
$trainingArticle .= "<ul>";
$trainingArticle .= "<li>16:00-17:45</li>";
$trainingArticle .= "<li>".$trainingLocationLink."</li>";
$trainingArticle .= "</ul>";
$trainingArticle .= "<h3>Freitag (Kinder)</h3>";
$trainingArticle .= "<ul>";
$trainingArticle .= "<li>16:00-17:45</li>";
$trainingArticle .= "<li>".$trainingLocationLink."</li>";
$trainingArticle .= "</ul>";
$trainingArticle .= "<h3>Freitag (Jugend/EW)</h3>";
$trainingArticle .= "<ul>";
$trainingArticle .= "<li>17:15-19:00</li>";
$trainingArticle .= "<li>".$trainingLocationLink."</li>";
$trainingArticle .= "</ul>";
$trainingArticle .= "</article>";
$trainingArticle .= "<article>";
$trainingArticle .= "<h2>Karten</h2>";
$trainingArticle .= "<ul><li>".$trainingLocationLink."</li></ul>";
$trainingArticle .= "</article>";
$trainingArticle .= "</section>";
array_push($trainingSection, $trainingArticle);
array_push($siteData['content'], $trainingSection);
require_once('cwsvJudo.ampTemplate.inc.php');
?>

View File

@@ -0,0 +1,9 @@
http://cwsvjudo.bplaced.net/
http://cwsvjudo.bplaced.net/JudoWiki
http://cwsvjudo.bplaced.net/galerien
http://cwsvjudo.bplaced.net/wkKalender
http://cwsvjudo.bplaced.net/trainingszeiten
http://cwsvjudo.bplaced.net/kontakt
http://amp.cwsvjudo.bplaced.net/
http://amp.cwsvjudo.bplaced.net/trainingszeiten.php
http://amp.cwsvjudo.bplaced.net/kontakt.php

View File

@@ -0,0 +1,16 @@
<?php
/// Umleitung eingeführt am 2017-09-14
/// Einbinden der Konfiguration, insbesondere Basisvariablen
/// relative Pfadangabe, jedes Verzeichnis soll seine eigene haben
require_once("./config.inc.php");
// Redirect zur neuen Seite
include($basePath."/ressourcen/phpLib/redirect.php");
redirect($canonicalBaseUrl."/trainingszeiten.php", 301);
// Damit es einen Anhaltspunkt gibt, ob die alte Seite noch besucht wird, stoßen wir den Counter an
// $chCounter_page_title = "Startseite (alt)";
// $chCounter_visible=0;
// include($_SERVER['DOCUMENT_ROOT']."/expCounter/counter.php");
exit();
?>

View File

@@ -0,0 +1,20 @@
<?php
/// Die Basisdomain, unter der die Hauptseite zu erreichen ist
$baseDomain = "cwsvjudo.bplaced.net";
/// Subdomain, unter dem dieses Verzeichnis zu finden ist (falls der Fall gegeben ist)
$subDomain = "amp";
/// Basis(/Root)-Verzeichnis auf dem Server (für Dateizugriffe, insbesondere phpIncludes)
$basePath = "/users/cwsvjudo/www";
/// Url zum Zugriff auf "shared Data" unter der Hauptadresse
$baseUrl = "http://".$baseDomain;
/// Die kanonische Url dieses Verzeichnisses (unter welcher
/// Domainadresse die Seiten dieses Verzeichnisses bevorzugt zu
/// erreichen seien sollen, also entweder eine SubdomainUrl, oder die
/// baseUrl mit dem Verzeichnis angehängt)
/// Achtung: Gedacht für eine einheitliche Bezeichnung bei internem
/// Verlinken. Der canonicalLink im Header ist bei ampSeiten nicht die
/// eigene Adresse, sondern die (kanonische) Adresse der "normalen"
/// Version der Seite.
$canonicalBaseUrl = "http://".$subDomain.".".$baseDomain;
?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,23 @@
<h2>Impressum</h2>
<p>Chemnitzer Freizeit- und Wohngebietssportverein<br />
Straße Usti nad Labem 42<br />Abteilung Judo<br />09120 Chemnitz</p>
<p>Telefon: +49 (0) 371 28 23 370<br />
Telefax: +49 (0) 371 22 91 79<br />
E-Mail: <a href="mailto:cwsv.sb@web.de">cwsv.sb@web.de</a><br />
</p>
<p><strong>Vertreten durch:</strong><br />Frau Birgit Hiebner<br />
Herr Lothar Franke</p><p><strong>Registereintrag:</strong><br />Eingetragen im Vereinsregister.<br />Registergericht: Stadt Chemnitz<br />Registernummer: 1556</p><p><strong>Verantwortlich für den Inhalt</strong> (gem. § 55 Abs. 2 RStV):<br />Marko Bunzel</p>
<br /><br /><h2>Disclaimer rechtliche Hinweise</h2>
§ 1 Warnhinweis zu Inhalten<br />
Die kostenlosen und frei zugänglichen Inhalte dieser Webseite wurden mit größtmöglicher Sorgfalt erstellt. Der Anbieter dieser Webseite übernimmt jedoch keine Gewähr für die Richtigkeit und Aktualität der bereitgestellten kostenlosen und frei zugänglichen journalistischen Ratgeber und Nachrichten. Namentlich gekennzeichnete Beiträge geben die Meinung des jeweiligen Autors und nicht immer die Meinung des Anbieters wieder. Allein durch den Aufruf der kostenlosen und frei zugänglichen Inhalte kommt keinerlei Vertragsverhältnis zwischen dem Nutzer und dem Anbieter zustande, insoweit fehlt es am Rechtsbindungswillen des Anbieters.<br />
<br />
§ 2 Externe Links<br />
Diese Website enthält Verknüpfungen zu Websites Dritter ("externe Links"). Diese Websites unterliegen der Haftung der jeweiligen Betreiber. Der Anbieter hat bei der erstmaligen Verknüpfung der externen Links die fremden Inhalte daraufhin überprüft, ob etwaige Rechtsverstöße bestehen. Zu dem Zeitpunkt waren keine Rechtsverstöße ersichtlich. Der Anbieter hat keinerlei Einfluss auf die aktuelle und zukünftige Gestaltung und auf die Inhalte der verknüpften Seiten. Das Setzen von externen Links bedeutet nicht, dass sich der Anbieter die hinter dem Verweis oder Link liegenden Inhalte zu Eigen macht. Eine ständige Kontrolle der externen Links ist für den Anbieter ohne konkrete Hinweise auf Rechtsverstöße nicht zumutbar. Bei Kenntnis von Rechtsverstößen werden jedoch derartige externe Links unverzüglich gelöscht.<br />
<br />
§ 3 Urheber- und Leistungsschutzrechte<br />
Die auf dieser Website veröffentlichten Inhalte unterliegen dem deutschen Urheber- und Leistungsschutzrecht. Jede vom deutschen Urheber- und Leistungsschutzrecht nicht zugelassene Verwertung bedarf der vorherigen schriftlichen Zustimmung des Anbieters oder jeweiligen Rechteinhabers. Dies gilt insbesondere für Vervielfältigung, Bearbeitung, Übersetzung, Einspeicherung, Verarbeitung bzw. Wiedergabe von Inhalten in Datenbanken oder anderen elektronischen Medien und Systemen. Inhalte und Rechte Dritter sind dabei als solche gekennzeichnet. Die unerlaubte Vervielfältigung oder Weitergabe einzelner Inhalte oder kompletter Seiten ist nicht gestattet und strafbar. Lediglich die Herstellung von Kopien und Downloads für den persönlichen, privaten und nicht kommerziellen Gebrauch ist erlaubt.<br />
<br />
Die Darstellung dieser Website in fremden Frames ist nur mit schriftlicher Erlaubnis zulässig.<br />
<br />
§ 4 Besondere Nutzungsbedingungen<br />
Soweit besondere Bedingungen für einzelne Nutzungen dieser Website von den vorgenannten Paragraphen abweichen, wird an entsprechender Stelle ausdrücklich darauf hingewiesen. In diesem Falle gelten im jeweiligen Einzelfall die besonderen Nutzungsbedingungen.Quelle: <a href="http://www.impressum-recht.de/impressum-generator/">Impressum-Generator von Impressum-Recht.de</a>

View File

@@ -0,0 +1,23 @@
<h2>Impressum</h2>
<p>Chemnitzer Freizeit- und Wohngebietssportverein<br />
Straße Usti nad Labem 42<br />Abteilung Judo<br />09120 Chemnitz</p>
<p>Telefon: +49 (0) 371 28 23 370<br />
Telefax: +49 (0) 371 22 91 79<br />
E-Mail: <a href="mailto:cwsv.sb@web.de">cwsv.sb@web.de</a><br />
</p>
<p><strong>Vertreten durch:</strong><br />Frau Birgit Hiebner<br />
Herr Lothar Franke</p><p><strong>Registereintrag:</strong><br />Eingetragen im Vereinsregister.<br />Registergericht: Stadt Chemnitz<br />Registernummer: 1556</p><p><strong>Verantwortlich für den Inhalt</strong> (gem. § 55 Abs. 2 RStV):<br />Marko Bunzel</p>
<br /><br /><h2>Disclaimer rechtliche Hinweise</h2>
§ 1 Warnhinweis zu Inhalten<br />
Die kostenlosen und frei zugänglichen Inhalte dieser Webseite wurden mit größtmöglicher Sorgfalt erstellt. Der Anbieter dieser Webseite übernimmt jedoch keine Gewähr für die Richtigkeit und Aktualität der bereitgestellten kostenlosen und frei zugänglichen journalistischen Ratgeber und Nachrichten. Namentlich gekennzeichnete Beiträge geben die Meinung des jeweiligen Autors und nicht immer die Meinung des Anbieters wieder. Allein durch den Aufruf der kostenlosen und frei zugänglichen Inhalte kommt keinerlei Vertragsverhältnis zwischen dem Nutzer und dem Anbieter zustande, insoweit fehlt es am Rechtsbindungswillen des Anbieters.<br />
<br />
§ 2 Externe Links<br />
Diese Website enthält Verknüpfungen zu Websites Dritter ("externe Links"). Diese Websites unterliegen der Haftung der jeweiligen Betreiber. Der Anbieter hat bei der erstmaligen Verknüpfung der externen Links die fremden Inhalte daraufhin überprüft, ob etwaige Rechtsverstöße bestehen. Zu dem Zeitpunkt waren keine Rechtsverstöße ersichtlich. Der Anbieter hat keinerlei Einfluss auf die aktuelle und zukünftige Gestaltung und auf die Inhalte der verknüpften Seiten. Das Setzen von externen Links bedeutet nicht, dass sich der Anbieter die hinter dem Verweis oder Link liegenden Inhalte zu Eigen macht. Eine ständige Kontrolle der externen Links ist für den Anbieter ohne konkrete Hinweise auf Rechtsverstöße nicht zumutbar. Bei Kenntnis von Rechtsverstößen werden jedoch derartige externe Links unverzüglich gelöscht.<br />
<br />
§ 3 Urheber- und Leistungsschutzrechte<br />
Die auf dieser Website veröffentlichten Inhalte unterliegen dem deutschen Urheber- und Leistungsschutzrecht. Jede vom deutschen Urheber- und Leistungsschutzrecht nicht zugelassene Verwertung bedarf der vorherigen schriftlichen Zustimmung des Anbieters oder jeweiligen Rechteinhabers. Dies gilt insbesondere für Vervielfältigung, Bearbeitung, Übersetzung, Einspeicherung, Verarbeitung bzw. Wiedergabe von Inhalten in Datenbanken oder anderen elektronischen Medien und Systemen. Inhalte und Rechte Dritter sind dabei als solche gekennzeichnet. Die unerlaubte Vervielfältigung oder Weitergabe einzelner Inhalte oder kompletter Seiten ist nicht gestattet und strafbar. Lediglich die Herstellung von Kopien und Downloads für den persönlichen, privaten und nicht kommerziellen Gebrauch ist erlaubt.<br />
<br />
Die Darstellung dieser Website in fremden Frames ist nur mit schriftlicher Erlaubnis zulässig.<br />
<br />
§ 4 Besondere Nutzungsbedingungen<br />
Soweit besondere Bedingungen für einzelne Nutzungen dieser Website von den vorgenannten Paragraphen abweichen, wird an entsprechender Stelle ausdrücklich darauf hingewiesen. In diesem Falle gelten im jeweiligen Einzelfall die besonderen Nutzungsbedingungen.Quelle: <a href="http://www.impressum-recht.de/impressum-generator/">Impressum-Generator von Impressum-Recht.de</a>

View File

@@ -0,0 +1,6 @@
<p><strong>Impressum</strong></p>
<p>Anbieter:<br />Max Mustermann<br />Musterstraße 1<br />80999 München</p>
<p>Kontakt:<br />Telefon: 089/1234567-8<br />Telefax: 089/1234567-9<br />E-Mail: mail@mustermann.de<br />Website: www.mustermann.de</p>
<p> </p>
<p>Bei redaktionellen Inhalten:</p>
<p>Verantwortlich nach § 55 Abs.2 RStV<br />Moritz Schreiberling<br />Musterstraße 2<br />80999 München</p>

View File

@@ -1,324 +0,0 @@
<?php
// Daten der Datenbank laden
require_once($_SERVER['DOCUMENT_ROOT']."/bonus/db.inc");
/// Abfrage der ausgewählten Bilder einer Galerie
function getPickedImages($aMysqlConn, $aGalId){
$retPickedImages = array();
/// Erstmal bisher ausgewählte Bilder abfragen ...
$queryPickedImages = sprintf(
"SELECT * FROM cwsvjudo.galImgPicker WHERE galId = '%s';",
$aMysqlConn->real_escape_string($aGalId)
);
// die($queryPickedImages);
$resultsPickedImages = $aMysqlConn->query($queryPickedImages);
/// @todo Wie kann ich hier sinnvoll einen Fehler zurückliefern? Nullpointer?
if( !$resultsPickedImages ){
$retMessage['error'] .= "Fehler ('".$aMysqlConn->error."') bei Datenbankabfrage '".$queryPickedImages."'<br />";
die( "Fehler ('".$aMysqlConn->error."') bei Datenbankabfrage '".$queryPickedImages."'<br />");
}
else{
while( $pickedImagesResult = $resultsPickedImages->fetch_assoc() ){
$retPickedImages = array_merge($retPickedImages, explode(',', $pickedImagesResult['pickedImages']) );
}
}
//print_r($retPickedImages); die();
return array_unique( $retPickedImages );
}/// Ende getPickedImages
/// Hilfsfunktion zum anpassen der htmlDescription
function descrName($aName){
$retVal = "Bilder der Judoka des Chemnitzer WSV beim Wettkampf ".$aName;
if( strpos($aName, "Sommerabschlussgrillen") >= 0 ) $retVal = "Bilder der Judoka des Chemnitzer WSV beim ".$aName;
if( strpos($aName, "Jahrendefeier") >= 0 ) $retVal = "Bilder der Judoka des Chemnitzer WSV bei der ".$aName;
return $retVal;
}/// Ende descrName
$loginStatus = "false";
$chooseMode = "false";
$showAllMode = "false";
$messages = array();
$galleryId = "0";
$pickedImages = array();
/// Übergebene galleryId abfragen
if( !empty($_GET['galId'] ) ) $galleryId = $_GET['galId'];
/// @todo Woher erhalte ich die galleryID, wenn sie nicht übergeben wird?
/// Nachschauen, ob alle Bilder gezeigt werden sollen
if( $_GET['showAll'] == "true" )
$showAllMode = "true";
// Testen, ob wir im Bilderauswahlmodus sind...
if($_GET['chooseMode'] == "true"){
$chooseMode = "true";
// Falls ja, dann teste, ob man angemeldet ist
/// @todo brauche ich das, wenn ich nur testen will, ob bereits angemeldet ist? -> anscheinend ja!
session_start();
session_regenerate_id();
// Falls der serverseitige Logincookie nicht gesetzt ist
if( empty($_SESSION['login']) ){
$loginStatus = "false";
$messages['info'] .= "Info: Der Bilderauswahlmodus ist nur möglich, wenn man angemeldet ist!<br />";
}
else{
$loginStatus = "true";
/// @todo Testen, ob eine intZahl vorliegt
/// @todo Testen, ob wir in der richtigen Galerie sind
$messages['info'] .= "Info: Der Bilderauswahlmodus für Galerie ".$galleryId." ist aktiv!<br />";
}
}
$mysqlConn = @new mysqli($db_server, $db_user, $db_password, $db_name);
if($mysqlConn->connect_error){
$message['error'] .= "Fehler: Datenbankverbindung fehlgeschlagen: " . $mysqlConn->connect_error . "<br />";
}
else{
$pickedImages = getPickedImages( $mysqlConn, $galleryId );
$mysqlConn->close();
}
/// Überschreiben der imgList mit den ausgewählten Bildern
$allImgList = $imgList; // Sicherungskopie
if( count($pickedImages) > 24 )
$pickedImages = array_rand( $pickedImages, 24);
else{
$restImages = array_diff( $allImgList, $pickedImages );
// echo("restImages: "); print_r($restImages);
foreach( array_rand( $restImages, 24-count($pickedImages) ) as $k ) {
$pickedImages[] = $restImages[$k];
}
// echo("pickedImages: "); print_r($pickedImages);
}
$imgList = $pickedImages;
// echo("imgList: "); print_r($imgList);
/// @todo ein Sortieren nach dem ursprünglichen Index fehlt
usort($imgList, function($a, $b) use($allImgList){return array_search($a, $allImgList) > array_search($b, $allImgList);} );
$imgList = array_values( $imgList );// Zum reNummerieren
// echo("imgList: "); print_r($imgList);
<<<<<<< HEAD
if( $showAllMode == "true") $imgList = $allImgList;
=======
>>>>>>> d971010d9cd5d2b4b6e4aea87836759422091f96
$imgInfos = array();
foreach( $imgList as $imgName ){
array_push( $imgInfos, getimagesize("thumbs/".str_replace(".jpg", ".png", $imgName)));
}
?>
<!DOCTYPE HTML>
<html lang="de">
<head>
<title><?php echo $wkName?> - Bilderalbum</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="<?php echo descrName($wkName);?>">
<meta name="keywords" content="Album, Fotos">
<!-- BluimpGallery Zeug -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/ressourcen/blueimpGallery/css/blueimp-gallery.css">
<link rel="stylesheet" href="/ressourcen/blueimpGallery/css/blueimp-gallery-indicator.css">
<link rel="stylesheet" href="/ressourcen/blueimpGallery/css/blueimp-gallery-video.css">
<!-- favIcon und Co nach der empfehlung von https://github.com/audreyr/favicon-cheat-sheet -->
<link rel="shortcut icon" type="image/x-icon" sizes="16x16 32x32 48x48 64x64" href="/ressourcen/graphiken/logos/favicon/favicon.ico">
<link rel="apple-touch-icon" sizes="152x152" href="/ressourcen/graphiken/logos/apple-touch-icon/apple-touch-icon-152.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/ressourcen/graphiken/logos/apple-touch-icon/apple-touch-icon-180.png" />
<link rel="manifest" href="/manifest.json">
<link rel="canonical" href="http://cwsvjudo.bplaced.net<?php echo $_SERVER['REQUEST_URI']?>" />
<script type="text/javascript" src="/ressourcen/jsLib/jquery-3.1.1.min.js"></script>
<script type="text/javascript" src="/ressourcen/jsLib/jquery.lazyload.min.js"></script>
<style>
.lazy{ display: none;}
.smallFont{font-size: small;}
.centerText{text-align: center;}
.navButton{
box-sizing: border-box;
border-color: white;
border-style: outset;
border-radius: 1em;
text-align: center;
text-decoration: none;
cursor: pointer;
display: inline-block;
padding-left: .5em;
padding-right: .5em;
padding: 0;
margin: 0;
}
</style>
</head>
<body style="color: #000000; background-color: #FFAE00" >
<?php
include( $_SERVER['DOCUMENT_ROOT'].'/ressourcen/phpLib/is_mobile.php');
if(is_mobile()) echo "<a title=\"Galerien der Judoka des Chemnitzer WSV\" href=\"/pages/mobile/verein.wettkampfgalerien.php\">Zur Galerieübersicht</a>";
else echo "<a title=\"Galerien der Judoka des Chemnitzer WSV\" href=\"/pages/desktop/verein.galerien.php\">Zur Galerieübersicht</a>";
?>
<?php
/// Eine kleine Messagebox
if( !empty($messages) ){
?>
<div style="border: 1px solid black">
<?php
if( !empty( $messages['info'] ) ) echo( $messages['info'] );
?>
</div>
<?php
}
// echo("pickedImages: "); print_r($pickedImages);
/// Ende MessageBox
?>
<h1 class="centerText" >
Photoalbum [<b><?php echo $wkName?></b>]
</h1>
<?php
if( $showAllMode == "true" ){
?>
<p class="centerText smallFont">
[<?php echo count($imgList)?> Bilder]
</p>
<?php
}
else{
?>
<a href=<?php echo( "\"?galId=".(empty($galleryId)?"0":$galleryId)."&showAll=true\"");?>><div class="navButton" style="width: 100%;">Alle Bilder einblenden </div></a>
<?php
}
?>
<p class="centerText smallFont">
Auf die jeweiligen Bilder klicken um eine größere Ansicht zu bekommen.
</p>
<hr/>
<!-- The container for the list of example images -->
<div id="links" class="links centerText">
<?php
if( $chooseMode == "true" ){
echo( "<form action=\"http://cwsvjudo.bplaced.net/ressourcen/phpLib/imgGallery/imgPicker.php\" method=\"post\">" );
echo( "<input type=\"hidden\" name=\"galId\" value=\"".$galleryId."\">" );
}
$imgSize = count( $imgList );
for( $imgIndex = 0; $imgIndex < $imgSize; ++$imgIndex){
/// Das Bild soll nur angezeigt werden, falls es ausgewählt ist, oder alle gezeigt werden sollen
// if( $chooseMode == "true" || $showAllMode == "true" || in_array($imgList[$imgIndex], $pickedImages) ){
if( $chooseMode == "true" ){
echo( "<label><input type=\"checkbox\" name=\"pickedImages[]\" value=\"".$imgList[$imgIndex]."\">" );
}
echo "\t\t\t\t<span>".
"<img class=\"lazy\" ".
"id=\"Image".( $imgIndex )."\" ".
"data-original=\"./thumbs/".str_replace(".jpg", ".png", $imgList[$imgIndex])."\" ".
$imgInfos[$imgIndex][3]." ".
"alt=\"[".( $imgIndex )."/".( $imgSize )."]\" ".
"title=\"".( $wkName )." Bild ".( $imgIndex +1 )." von ".( $imgSize )."\" ".
"onclick=\"startGalleryShow(" . $imgIndex . ");\"".
"/>".
"</span>\n";
if( $chooseMode == "true" ){
echo( "</label>" );
}
// }
}
if( $chooseMode == "true" ){
echo( "<button type=\"submit\">Eingaben absenden</button>" );
echo( "</form>" );
}
?>
<noscript>
<?php
$imgSize = count( $imgList );
for( $imgIndex = 0; $imgIndex < $imgSize; ++$imgIndex){
echo
"\t\t\t\t<span>".
"<a href=\"view.php?index=".( $imgIndex )."\" >".
"<img id=\"Image".( $imgIndex + 1)."\" ".
// "src=\"./thumbs/".str_replace(".jpg", ".png", $imgList[$imgIndex])."\" ".
"src=\"./thumbs/r_".str_replace(".jpg", ".png", $imgList[$imgIndex])."\" ".
"alt=\"[".( $imgIndex )."/".( $imgSize )."]\" ".
"title=\"".( $wkName )." Bild ".( $imgIndex + 1 )." von ".( $imgSize )."\" ".
"/>".
"</a>".
"</span>\n";
}
?>
</noscript>
</div>
<script type="text/javascript" charset="utf-8">
$(function() {
$("img.lazy").show().lazyload();
// $("img.lazy").lazyload();
});
</script>
<!-- BluimpGalerry Lightbox Version -->
<!-- The Gallery as lightbox dialog, should be a child element of the document body -->
<div id="blueimp-gallery" class="blueimp-gallery blueimp-gallery-controls">
<div class="slides"></div>
<h2 class="title"><?php echo $wkName?></h2>
<a class="prev"></a>
<a class="next"></a>
<a class="close">×</a>
<a class="play-pause"></a>
<ol class="indicator"></ol>
</div>
<script type="text/javascript" src="/ressourcen/blueimpGallery/js/blueimp-gallery.min.js"></script>
<script type="text/javascript" src="/ressourcen/blueimpGallery/js/jquery.blueimp-gallery.min.js"></script>
<script>
function startGalleryShow(startIndex = 0){
var imgList = [
<?php
$imgSize = count( $imgList );
for( $imgIndex = 0; $imgIndex < $imgSize; ++$imgIndex){
echo "\"".( $imgList[ $imgIndex ] )."\", ";
}
?>];
var gallery = blueimp.Gallery(
imgList,
{
onslide: function (index, slide) {
var counterUrl = "/expCounter/counter.php";
var pageUrl = encodeURIComponent( window.location.href ) + "?index=" + index.toString();
var pageTitle = document.title + " [" + index.toString() + "]";
var callUrl = counterUrl + "?jscode_version=1.2&chCounter_mode=js&status=active&visible=0&page_title=" + pageTitle + "&page_url=" + pageUrl;
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", callUrl, true); // true for asynchronous
xmlHttp.send(null);
},
startSlideshow: true,
stretchImages: true,
index: startIndex,
}
);
};
window.onload = function () {
startGalleryShow();
};
// startGalleryShow();
</script>
<hr/>
<!--Beginn der Einbindung des Counters-->
<?php
$chCounter_template = <<<TEMPLATE
<table>
<tr>
<td>Besucher online: {V_VISITORS_CURRENTLY_ONLINE}</td>
<td>Besucher bisher: {V_PAGE_VIEWS_THIS_PAGE}</td>
</tr>
</table>
TEMPLATE;
$chCounter_page_title = "Photoalbum ".$wkName;
$chCounter_visible=1; include( $_SERVER['DOCUMENT_ROOT'].'/expCounter/counter.php');?>
<!--Ende der Einbindung des Counters-->
</body>
</html>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"
>
<!-- Responsive Section-->
<url>
<loc>http://cwsvjudo.bplaced.net/</loc>
</url>
<url>
<loc>http://cwsvjudo.bplaced.net/galerien</loc>
</url>
<url>
<loc>http://cwsvjudo.bplaced.net/wkKalender</loc>
</url>
<url>
<loc>http://cwsvjudo.bplaced.net/trainingszeiten</loc>
</url>
<url>
<loc>http://cwsvjudo.bplaced.net/kontakt</loc>
</url>
<url>
<loc>http://cwsvjudo.bplaced.net/JudoWiki</loc>
</url>
</urlset>

View File

@@ -83,11 +83,11 @@ videos/webm/%.webm: videos/aufnahmen/mögel/%.MP4
-an \
-f webm \
$@
curl \
--upload-file $@ \
--user cwsvjudo:Dee4oquu \
ftp://cwsvjudo.square7.net/videoalben/videoalben.2018/$(VID_GAL_DIR)/$(patsubst videos/%,%,$@) \
--ftp-create-dirs
# curl \
# --upload-file $@ \
# --user cwsvjudo:Dee4oquu \
# ftp://cwsvjudo.square7.net/videoalben/videoalben.2018/$(VID_GAL_DIR)/$(patsubst videos/%,%,$@) \
# --ftp-create-dirs
curl \
--upload-file $@ \
--user cwsvjudo:***REMOVED*** \
@@ -118,11 +118,11 @@ videos/webm/%.webm: videos/aufnahmen/moegel/%.MP4
-an \
-f webm \
$@
curl \
--upload-file $@ \
--user cwsvjudo:Dee4oquu \
ftp://cwsvjudo.square7.net/videoalben/videoalben.2018/$(VID_GAL_DIR)/$(patsubst videos/%,%,$@) \
--ftp-create-dirs
# curl \
# --upload-file $@ \
# --user cwsvjudo:Dee4oquu \
# ftp://cwsvjudo.square7.net/videoalben/videoalben.2018/$(VID_GAL_DIR)/$(patsubst videos/%,%,$@) \
# --ftp-create-dirs
curl \
--upload-file $@ \
--user cwsvjudo:***REMOVED*** \
@@ -163,11 +163,11 @@ videos/webm/%.webm: videos/aufnahmen/helko/%.mp4
-an \
-f webm \
$@
curl \
--upload-file $@ \
--user cwsvjudo:Dee4oquu \
ftp://cwsvjudo.square7.net/videoalben/videoalben.2018/$(VID_GAL_DIR)/$(patsubst videos/%,%,$@) \
--ftp-create-dirs
# curl \
# --upload-file $@ \
# --user cwsvjudo:Dee4oquu \
# ftp://cwsvjudo.square7.net/videoalben/videoalben.2018/$(VID_GAL_DIR)/$(patsubst videos/%,%,$@) \
# --ftp-create-dirs
curl \
--upload-file $@ \
--user cwsvjudo:***REMOVED*** \
@@ -198,11 +198,11 @@ videos/webm/%.webm: videos/aufnahmen/papaRomy/%.mp4
-an \
-f webm \
$@
curl \
--upload-file $@ \
--user cwsvjudo:Dee4oquu \
"ftp://cwsvjudo.square7.net/videoalben/videoalben.2018/$(VID_GAL_DIR)/$(patsubst videos/%,%,$@)" \
--ftp-create-dirs
# curl \
# --upload-file $@ \
# --user cwsvjudo:Dee4oquu \
# "ftp://cwsvjudo.square7.net/videoalben/videoalben.2018/$(VID_GAL_DIR)/$(patsubst videos/%,%,$@)" \
# --ftp-create-dirs
curl \
--upload-file $@ \
--user cwsvjudo:***REMOVED*** \
@@ -233,11 +233,11 @@ videos/webm/%.webm: videos/aufnahmen/papaRomy/%.webm
-an \
-f webm \
$@
curl \
--upload-file $@ \
--user cwsvjudo:Dee4oquu \
"ftp://cwsvjudo.square7.net/videoalben/videoalben.2018/$(VID_GAL_DIR)/$(patsubst videos/%,%,$@)" \
--ftp-create-dirs
# curl \
# --upload-file $@ \
# --user cwsvjudo:Dee4oquu \
# "ftp://cwsvjudo.square7.net/videoalben/videoalben.2018/$(VID_GAL_DIR)/$(patsubst videos/%,%,$@)" \
# --ftp-create-dirs
curl \
--upload-file $@ \
--user cwsvjudo:***REMOVED*** \
@@ -268,11 +268,11 @@ videos/webm/%.webm: videos/aufnahmen/elly/%.mp4
-an \
-f webm \
"$@"
curl \
--upload-file "$@" \
--user cwsvjudo:Dee4oquu \
"ftp://cwsvjudo.square7.net/videoalben/videoalben.2018/$(VID_GAL_DIR)/$(patsubst videos/%,%,$@)" \
--ftp-create-dirs
# curl \
# --upload-file "$@" \
# --user cwsvjudo:Dee4oquu \
# "ftp://cwsvjudo.square7.net/videoalben/videoalben.2018/$(VID_GAL_DIR)/$(patsubst videos/%,%,$@)" \
# --ftp-create-dirs
curl \
--upload-file "$@" \
--user cwsvjudo:***REMOVED*** \
@@ -282,11 +282,11 @@ videos/webm/%.webm: videos/aufnahmen/elly/%.mp4
videos/thumbnails/%.jpg: videos/webm/%.webm
mkdir -p videos/thumbnails
-ffmpeg -i "$^" -vf "select=gt(scene\,0.4)" -frames:v 5 -vsync vfr -vf fps=fps=1/600 "$@"
curl \
--upload-file "$@" \
--user cwsvjudo:Dee4oquu \
"ftp://cwsvjudo.square7.net/videoalben/videoalben.2018/$(VID_GAL_DIR)/$(patsubst videos/%,%,$@)" \
--ftp-create-dirs
# curl \
# --upload-file "$@" \
# --user cwsvjudo:Dee4oquu \
# "ftp://cwsvjudo.square7.net/videoalben/videoalben.2018/$(VID_GAL_DIR)/$(patsubst videos/%,%,$@)" \
# --ftp-create-dirs
curl \
--upload-file "$@" \
--user cwsvjudo:***REMOVED*** \

View File

@@ -0,0 +1,4 @@
<?php
$wkName = "Little-Otto-Goshi-Liga 2018-3";
$wkDatum = "2018-08-18";
?>

View File

@@ -0,0 +1,7 @@
<?php
include_once("config.inc.php");
$wkName = empty($wkName) ? "<fehlender Wettkampfname>" : $wkName;
include_once( $_SERVER['DOCUMENT_ROOT']."/ressourcen/phpLib/videoGallery/videoGallery.tmpl.php" );
?>

View File

@@ -0,0 +1,7 @@
<?php
include_once("config.inc.php");
$wkName = empty($wkName) ? "<fehlender Wettkampfname>" : $wkName;
include_once( $_SERVER['DOCUMENT_ROOT']."/ressourcen/phpLib/videoGallery/videoGallery.tmpl.php" );
?>

View File

@@ -0,0 +1,13 @@
<?php
include_once("config.inc.php");
?>
<!DOCTYPE html>
<html>
<head>
<title>In Arbeit</title>
</head>
<body>
<p>Die Videos des Wettkampfes <?php echo($wkName);?> sind momentan noch in Vorbereitung. Einfach später noch mal probieren.</p>
<img src="/ressourcen/graphiken/misc/staffeleiM%e4nnlein.jpg" />
</body>
</html>

View File

@@ -0,0 +1,16 @@
# mkGalGen
Erstellen einer htmlGalerie
Ausgangspunkt:
- Verzeichnisse mit Bildern
- Konfigurationsdatei für das Album mit
- Liste mit Bildern mit
- dem Dateinamen
- selectMarker (evtl sollen nicht alle Bilder verwendet werden)
- Bearbeitungsflags wie
- Drehung des Bildes
- Name des Albums/der Galerie

View File

@@ -0,0 +1,49 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
# sortierer.py
import sys, os, exifread, datetime
picDirs = [];
if len(sys.argv) <= 1:
picDirs = ["."];
else:
for arg in sys.argv[1:]:
picDirs += [arg];
#picDirs = {
# "/home/marko/keeper/judo/bilder/bilder.2016/2016-10-23_OttoGoshiLiga+HallCategoryIII2016/mögel",
# "/home/marko/keeper/judo/bilder/bilder.2016/2016-10-23_OttoGoshiLiga+HallCategoryIII2016/olympus/denoised",
# "/home/marko/keeper/judo/bilder/bilder.2016/2016-12-21_Jahrendefeier/olymp/denoised",
#}
print("Reading Filenames")
picFilesData = []
for picDir in picDirs:
for (dirPath, dirnames, fileNames) in os.walk(picDir):
for fileName in fileNames:
fullFilename = os.path.join(dirPath, fileName)
fileHandle = open(fullFilename, 'rb')
exifTag = exifread.process_file(fileHandle, stop_tag='EXIF DateTimeOriginal', details=False)
picFileDate = {}
picFileDate['filename'] = fullFilename
picFileDate['exifDate'] = str( exifTag['EXIF DateTimeOriginal'] )
picFileDate['selected'] = True
fileHandle.close()
picFilesData.append( picFileDate )
break
picFilesDataSorted = sorted(picFilesData, key=lambda pic: pic['exifDate'])
outputString = picFilesDataSorted[0]['filename']
for pic in picFilesDataSorted[1:]:
outputString += ", " + pic['filename']
# print pic['filename']
# print pic['exifDate']
# print pic['selected']
print outputString

View File

@@ -0,0 +1,70 @@
#! /usr/bin/python
# -*- coding: utf-8 -*-
###
# Modulimporte
###
import sys, os, exifread, datetime
#sys.path.append('/mingw64/lib/python3.6/site-packages/')
# für Kommandozeilenargumente
import argparse
# für glob :)
# @ToDo herausfinden, was glob macht
import glob
#import Tkinter
import tkinter
#from PIL import Image, ImageTk
#import image, imageTk
import json
###
# Funktionsdefinitionen
###
def getJpgListFromDirectory( jpgDirName ):
jpgListe = list()
# @todo Werden hier Unterverzeichnisse mit durchsucht? Das 'walk' klingt so!
for (dirPath, dirNames, fileNames) in os.walk(jpgDirName):
#print( dirPath )
#print( dirNames )
#print( fileNames )
for fileName in fileNames:
fullFilename = os.path.join(dirPath, fileName)
fileHandle = open(fullFilename, 'rb')
exifTag = exifread.process_file(fileHandle, stop_tag='EXIF DateTimeOriginal', details=False)
picFileDate = {}
picFileDate['filename'] = fullFilename
#print(str(exifTag))
picFileDate['exifDate'] = str( exifTag.get('EXIF DateTimeOriginal', None ) )
picFileDate['selected'] = True
picFileDate['toRotate'] = 0
fileHandle.close()
#print( picFileDate )
jpgListe.append( picFileDate )
break
return jpgListe
###
# Main
###
# Argumente parsen
parser = argparse.ArgumentParser(description='Eine jpgList erstellen')
parser.add_argument('jpgFolder', metavar='jpgFolder', nargs='?', default='.', help='ein Verzeichnis mit jpgDateien')
parser.add_argument('--jsonOutFile', default="data.json")
argv = parser.parse_args()
#print( argv.jpgFolder )
#print( getJpgListFromDirectory(argv.jpgFolder) )
with open(argv.jsonOutFile, 'w') as fp:
json.dump(getJpgListFromDirectory(argv.jpgFolder), fp, indent=4)

View File

@@ -0,0 +1,47 @@
#! /usr/bin/python
# -*- coding: utf-8 -*-
###
# Modulimporte
###
import sys, os, exifread, datetime
#sys.path.append('/mingw64/lib/python3.6/site-packages/')
# für Kommandozeilenargumente
import argparse
# für glob :)
# @ToDo herausfinden, was glob macht
import glob
#import Tkinter
#import tkinter
#from PIL import Image, ImageTk
#import image, imageTk
import json
###
# Funktionsdefinitionen
###
###
# Main
###
# Argumente parsen
parser = argparse.ArgumentParser(description='Eine jpgList erstellen')
parser.add_argument('jsonFileName', metavar='jsonFileName', nargs='?', default='.', help='json-Datei')
#parser.add_argument('--jsonOutFile', default="data.json")
argv = parser.parse_args()
jpgList = []
with open(argv.jsonFileName) as json_data:
jpgList = json.load(json_data)
for entry in jpgList:
print(entry['filename'])

View File

@@ -0,0 +1,197 @@
#! /usr/bin/python
# -*- coding: utf-8 -*-
import sys
#sys.path.append('/mingw64/lib/python3.6/site-packages/')
import os, exifread, datetime
# für Kommandozeilenargumente
import argparse
# für glob :)
# @ToDo herausfinden, was glob macht
import glob
# json IO
import json
#import Tkinter
import tkinter
from PIL import Image, ImageTk
#import image, imageTk
# fits the resolution inRes to the resolution fitRes
def fitRes( inRes, fitRes =[500, 500] ):
outRes = [500,500]
# die größere Ausdehnung mus der neuen 500 entsprechen, die andere im gleichen Maßstab skaliert werden
if inRes[0] > inRes[1]:
outRes[1] = int( 500 * inRes[1] / inRes[0] )
else:
outRes[0] = int( 500 * inRes[0] / inRes[1] )
return outRes
# Eine Klasse zum anzeigenden Durchblättern von jpgDateien
class jpgAlbum:
# Dem Konstruktor wird eine Liste mit jpgs übergeben
def __init__(self, masterWidget):
# Membervariablen
# die leere Liste mit den Bildinformationen
self.jpgListe = []
# der Index des aktuell angezeigten Bildes in der Liste
self.aktIndex = -1
# Flag, ob das Bild ausgewählt ist, also mit in die Galerie kommen soll
self.aktSelectState = True
# der Anzeigebereich des aktuell anzuzeigenden Bildes
# self.photoWidget = Tkinter.Label(masterWidget)
self.photoWidget = tkinter.Label(masterWidget)
self.photoWidget.pack()
# Vorwärts/Rückwärts Button
# nextButton = Tkinter.Button(masterWidget, text="Next", command=self.next)
nextButton = tkinter.Button(masterWidget, text="Next", command=self.next)
# nextButton.pack(side=Tkinter.RIGHT)
nextButton.pack(side=tkinter.RIGHT)
# previousButton = Tkinter.Button(masterWidget, text="Previous", command=self.previous)
previousButton = tkinter.Button(masterWidget, text="Previous", command=self.previous)
# previousButton.pack(side=Tkinter.LEFT)
previousButton.pack(side=tkinter.LEFT)
# self.selectedCheckbox = Tkinter.Checkbutton(masterWidget, text="selected", variable=self.aktSelectState, onvalue=True, offvalue=False, command=self.aktSelectToggle)
self.selectedCheckbox = tkinter.Checkbutton(masterWidget, text="selected", variable=self.aktSelectState, onvalue=True, offvalue=False, command=self.aktSelectToggle)
# self.selectedCheckbox.pack(side=Tkinter.BOTTOM)
self.selectedCheckbox.pack(side=tkinter.BOTTOM)
masterWidget.bind("<Right>", self.next)
masterWidget.bind("<Left>", self.previous)
masterWidget.bind("<Down>", self.rotateAktJpgClockwise)
masterWidget.bind("<space>", self.aktSelectToggle)
masterWidget.bind("<Escape>", self.close)
masterWidget.bind("q", self.close)
# ein Verzeichnis nach jpgs durchgehen und der klasseneigenen ImgList hinzufügen
def addDirectory(self, picDirName):
for (dirPath, dirNames, fileNames) in os.walk(picDirName):
for fileName in fileNames:
fullFilename = os.path.join(dirPath, fileName)
fileHandle = open(fullFilename, 'rb')
exifTag = exifread.process_file(fileHandle, stop_tag='EXIF DateTimeOriginal', details=False)
picFileDate = {}
picFileDate['filename'] = fullFilename
#print(str(exifTag))
picFileDate['exifDate'] = str( exifTag.get('EXIF DateTimeOriginal', None ) )
#picFileDate['selected'] = True
picFileDate['selected'] = False
picFileDate['toRotate'] = 0
fileHandle.close()
self.jpgListe.append( picFileDate )
# break
self.aktIndex = 0
self.changeJpg(self.jpgListe[self.aktIndex]['filename'])
def sortJpgListeByExifDate(self):
self.jpgListe = sorted(self.jpgListe, key=lambda pic: (pic['exifDate'], pic['filename']))
self.aktIndex = 0
self.changeJpg(self.jpgListe[self.aktIndex]['filename'])
def rotateAktJpgClockwise(self, event):
if self.aktIndex >= 0:
self.jpgListe[self.aktIndex]['toRotate'] = ( self.jpgListe[self.aktIndex]['toRotate'] - 90 ) % 360
self.changeJpg(self.jpgListe[self.aktIndex]['filename'])
def aktSelectToggle(self, event=None):
if self.jpgListe[self.aktIndex]['selected']:
self.jpgListe[self.aktIndex]['selected'] = False
self.selectedCheckbox.deselect()
else:
self.jpgListe[self.aktIndex]['selected'] = True
self.selectedCheckbox.select()
self.aktSelectState = self.jpgListe[self.aktIndex]['selected']
#print(str(self.jpgListe))
print("selected: " + str( sum(1 for entry in self.jpgListe if entry['selected'] ) ) )
def jsonSaveJpgList(self):
with open(args.jpgFolder + "/jpegAlbum.json", 'w') as fp:
json.dump( self.jpgListe, fp, indent=4)
# aktIndex++
def next(self, event=None):
self.aktIndex = (self.aktIndex + 1) % len(self.jpgListe)
self.aktSelectState = self.jpgListe[self.aktIndex]['selected']
self.changeJpg(self.jpgListe[self.aktIndex]['filename'])
# aktIndex--
def previous(self, event=None):
self.aktIndex = (self.aktIndex - 1) % len(self.jpgListe)
self.aktSelectState = self.jpgListe[self.aktIndex]['selected']
self.changeJpg(self.jpgListe[self.aktIndex]['filename'])
# ein Bildwechsel
def changeJpg(self, newJpgName):
#print("aktBild: [{}]{}".format(self.aktIndex, self.jpgListe[self.aktIndex]))
openSuccess = False
while not openSuccess:
try:
self.aktJpg = Image.open(newJpgName)
openSuccess = True
except IOError:
openSuccess = False
print(self.jpgListe[self.aktIndex]['filename'] + " is no image!")
self.jpgListe.pop(self.aktIndex)
# self.next()
#print("Returning!")
return
#print("Handling " + self.jpgListe[self.aktIndex]['filename'] )
self.aktRes = self.aktJpg.size
#self.aktJpgScaled = self.aktJpg.resize([500, 500*self.aktRes[1]/self.aktRes[0]]).rotate(self.jpgListe[self.aktIndex]['toRotate'])
self.aktJpgScaled = self.aktJpg.resize( fitRes( self.aktRes )).rotate(self.jpgListe[self.aktIndex]['toRotate'])
self.photo = ImageTk.PhotoImage(self.aktJpgScaled)
self.photoWidget.configure(image = self.photo)
self.photoWidget.image = self.photo
self.aktSelectState = self.jpgListe[self.aktIndex]['selected']
if self.aktSelectState:
self.selectedCheckbox.select()
else:
self.selectedCheckbox.deselect()
# print("aktBild: [{}]{}".format(self.aktIndex, self.jpgListe[self.aktIndex]))
def close(self, event):
# hier noch das speichern einfügen
self.jsonSaveJpgList()
sys.exit()
parser = argparse.ArgumentParser(description='ein jpg anzeigen')
parser.add_argument('jpgFolder', metavar='jpgFolder', nargs='?', default='.', help='ein Verzeichnis mit jpgDateien')
args = parser.parse_args()
#master = Tkinter.Tk()
master = tkinter.Tk()
master.geometry('%dx%d+%d+%d' % (800, 600, 0, 0))
app = jpgAlbum(master)
app.addDirectory(args.jpgFolder)
app.sortJpgListeByExifDate()
master.mainloop()
#master.destroy()

View File

@@ -0,0 +1,30 @@
#! /bin/bash -v
# Beispiel-/Testaufruf zum Erzeugen eines Albums aus eine jsonAlbum.json heraus
mkGalGenPath="/home/marko/keeper/judo/cwsvJudo/src/mkGalGen"
imgDirBase="/home/marko/keeper/judo/media/photos/photos.2018/2018-04-22_LittleOttoGoshiLiga-2018-1_U9U12_HalleS"
galDirName="2018-04-22_LittleOttoGoshiLiga-2018-1_U9U12_HalleS"
galName="Little-Otto-Goshi-Liga 2018-1"
galDirBase="/home/marko/keeper/judo/cwsvJudo/photoalben/photoalben.2018"
logoFileName="/home/marko/keeper/judo/graphiken/logos/cwsvJudoLogoWappen.100x.png"
mkdir -p ${galDirBase}
# Des Erzeugen der json
python3 ${mkGalGenPath}/jpgSelector.py ${imgDirBase}
# das Erzeugen des Makefiles
python3 ${mkGalGenPath}/jsonJpgList2Makefile.py ${imgDirBase}/jpegAlbum.json --imgDirBase=${imgDirBase} --galName="${galName}" --galDirBase="${galDirBase}" --galDirName="${galDirName}" --logoFileName="${logoFileName}" > Makefile.${galDirName}
#das aufrufen des makefiles
make --file=Makefile.${galDirName}
# upload des ganzen
lftp -e "mirror -R ${galDirBase}/${galDirName} photoalben/photoalben.2018/${galDirName}" -u cwsvjudo,***REMOVED*** ftp://cwsvjudo.bplaced.net
# und nochmal das ganze mit Komprimierung
python3 ${mkGalGenPath}/jsonJpgList2Makefile.py ${imgDirBase}/jpegAlbum.json --imgDirBase=${imgDirBase} --galName="${galName}" --galDirBase="${galDirBase}" --galDirName="${galDirName}" --logoFileName="${logoFileName}" --compressHard="true" > Makefile.${galDirName}
#das aufrufen des makefiles
make --file=Makefile.${galDirName}
# upload des ganzen
lftp -e "mirror -R ${galDirBase}/${galDirName} photoalben/photoalben.2018/${galDirName}" -u cwsvjudo,***REMOVED*** ftp://cwsvjudo.bplaced.net

View File

@@ -0,0 +1,69 @@
#! /usr/bin/python
# -*- coding: utf-8 -*-
### Aus einer in einer jsonDatei gegebenen jpgListe (albumKompatibel)
### eine index.php erzeugen
###
# Modulimporte
###
#import sys, os, exifread, datetime
import sys, os, datetime
#sys.path.append('/mingw64/lib/python3.6/site-packages/')
# für Kommandozeilenargumente
import argparse
# für glob :)
# @ToDo herausfinden, was glob macht
import glob
#import Tkinter
#import tkinter
#from PIL import Image, ImageTk
#import image, imageTk
import json
###
# Funktionsdefinitionen
###
###
# Main
###
# Argumente parsen
parser = argparse.ArgumentParser(description='Ein Makefile erstellen')
parser.add_argument('jsonFileName', metavar='jsonFileName', nargs='?', default='.', help='json-Datei')
parser.add_argument('--galName')
#parser.add_argument('--galName', default="dummyGalName")
#parser.add_argument('--galDirName', default="dummyGalDirName")
#parser.add_argument('--galDirBase', default="dummyGalDirBase", help="Basisverzeichnis, in dem das Verzeichnis mit dem Album angelegt werden soll")
#parser.add_argument('--galOptImgWiderSide', default="1024")
#parser.add_argument('--galOptThbWiderSide', default="200")
argv = parser.parse_args()
jpgList = []
with open(argv.jsonFileName) as json_data:
#print(json_data)
jpgList = json.load(json_data)
indexPhp = ""
indexPhp += "<?php\n"
indexPhp += "\t$wkName = \"" + argv.galName + "\";\n"
indexPhp += "\t$imgList = array( "
for index, entry in enumerate(jpgList):
if entry['selected']:
indexPhp += "\"images/" + argv.galName + "-" + str(index).zfill(3) + ".jpg\", "
indexPhp += " );\n"
indexPhp += "\tinclude( $_SERVER['DOCUMENT_ROOT'].\"/ressourcen/phpLib/imgGallery/index.php.tmpl\" );\n"
indexPhp += "?>"
print(indexPhp)

View File

@@ -0,0 +1,158 @@
#! /usr/bin/python
# -*- coding: utf-8 -*-
### Aus einer in einer jsonDatei gegebenen jpgListe (albumKompatibel)
### ein Makefile erzeugen
### Example usage:
### /d/privat/cwsvJudo/src/mkGalGen/jsonJpgList2Makefile.py jpegAlbum.json --galName="Zwergenturnier 2006" --galDirBase=" /d/privat/cwsvJudo/src/mkGalGen/testingArea/photoalben/photoalben.2006/" --galDirName="2006-09-30_Zwergenturnier2006" > Makefile
###
# Modulimporte
###
#import sys, os, exifread, datetime
import sys, os, datetime
#sys.path.append('/mingw64/lib/python3.6/site-packages/')
# für Kommandozeilenargumente
import argparse
# für glob :)
# @ToDo herausfinden, was glob macht
import glob
#import Tkinter
#import tkinter
#from PIL import Image, ImageTk
#import image, imageTk
import json
###
# Funktionsdefinitionen
###
# Für ftpDateinamen
def slugified(value):
"""
Normalizes string, converts to lowercase, removes non-alpha characters,
and converts spaces to hyphens.
"""
import unicodedata
returnValue = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore')
returnValue = unicode(re.sub('[^\w\s-]', '', returnValue).strip().lower())
returnValue = unicode(re.sub('[-\s]+', '-', returnValue))
return returnValue
###
# Main
###
# Argumente parsen
parser = argparse.ArgumentParser(description='Ein Makefile erstellen')
parser.add_argument('jsonFileName', metavar='jsonFileName', nargs='?', default='.', help='json-Datei')
parser.add_argument('--galName') #, default="dummyGalName")
parser.add_argument('--galDirName')#, default="dummyGalDirName")
parser.add_argument('--galDirBase')#, default="dummyGalDirBase", help="Basisverzeichnis, in dem das Verzeichnis mit dem Album angelegt werden soll")
parser.add_argument('--imgDirBase')#, default="dummyGalDirBase", help="Basisverzeichnis, in dem das Verzeichnis mit dem Album angelegt werden soll")
# Eventuell als Target mit einbauen, um es in einer korrekten Auflösung mit zu erzeugen
parser.add_argument('--logoFileName')
parser.add_argument('--galOptImgWiderSide', default="1024")
parser.add_argument('--galOptThbWiderSide', default="200")
parser.add_argument('--compressHard')
argv = parser.parse_args()
jpgList = []
with open(argv.jsonFileName) as json_data:
#print(json_data)
jpgList = json.load(json_data)
makefileTargets = list()
allTarget = ""
allTarget += ".PHONY: all\nall: "
for index, entry in enumerate(jpgList):
# Die Bilder und Thumbnails
if entry['selected']:
allTarget += argv.galDirBase + "/" + argv.galDirName + "/images/" + argv.galName.replace(" ", "\\ ") + "-" + str(index).zfill(3) + ".jpg "
allTarget += argv.galDirBase + "/" + argv.galDirName + "/thumbs/" + argv.galName.replace(" ", "\\ ") + "-" + str(index).zfill(3) + ".png "
# Die phpDateien
allTarget += argv.galDirBase + "/" + argv.galDirName + "/index.php "
allTarget += argv.galDirBase + "/" + argv.galDirName + "/view.php "
allTarget += "\n"
makefileTargets.append(allTarget)
# Imagetargets
for index, entry in enumerate(jpgList):
if entry['selected']:
makefileTarget = ""
# @todo zfill(3) variabel gestalten
# @todo filename / vs. \
# @todo eol == '\n' vs eol == '\r\n' (vs eol == '\r')
# makefileTarget += argv.galDirBase + "/" + argv.galDirName + "/images/" + argv.galName.replace(" ", "\\ ") + "-" + str(index).zfill(3) + ".jpg: " + argv.imgDirBase + "/" + entry['filename'] + "\n"
# @todo Steht im jsonFile bei den Dateinamen der Bilder das imgDirBase mit? (Vereinbarungssache, intuitiv würde ich sagen, Dateinamen im jsonFile sollten relativ zur Lage des jsonFiles selber sein)
#makefileTarget += argv.galDirBase + "/" + argv.galDirName + "/images/" + argv.galName.replace(" ", "\\ ") + "-" + str(index).zfill(3) + ".jpg: " + argv.imgDirBase + "/" + entry['filename'] + "\n"
makefileTarget += argv.galDirBase + "/" + argv.galDirName + "/images/" + argv.galName.replace(" ", "\\ ") + "-" + str(index).zfill(3) + ".jpg: " + entry['filename'] + "\n"
makefileTarget += "\tmkdir -p " + argv.galDirBase + "/" + argv.galDirName + "/images/\n"
# makefileTarget += "\tconvert $^ -resize \"" + argv.galOptImgWiderSide + ">\" \"$@\"\n"
# imageMagick rotates clockwise, imagetk counterclockwise
# makefileTarget += "\tcomposite -rotate -" + str(entry["toRotate"]) + " -dissolve 25% -gravity northwest " + argv.logoFileName + " $^ -resize \"" + argv.galOptImgWiderSide + ">\" \"$@.png\"\n"
# makefileTarget += "\tcomposite -dissolve 25% -gravity northwest " + argv.logoFileName + " $^ -resize \"" + argv.galOptImgWiderSide + ">\" \"$@.png\"\n"
# makefileTarget += "\t/home/marko/proggis/guetzli/bin/Release/guetzli --quality 95 \"$@.png\" \"$@\"\n"
if argv.compressHard == "true":
makefileTarget += "\tconvert \\( $^ -normalize -rotate -" + str(entry["toRotate"]) + " -resize \"" + argv.galOptImgWiderSide + ">\" \\) " + argv.logoFileName + " -composite \"$@.png\"\n"
makefileTarget += "\t/home/marko/proggis/guetzli/bin/Release/guetzli --quality 90 \"$@.png\" \"$@\"\n"
makefileTarget += "\trm \"$@.png\"\n"
else:
makefileTarget += "\tconvert \\( $^ -normalize -rotate -" + str(entry["toRotate"]) + " -resize \"" + argv.galOptImgWiderSide + ">\" \\) " + argv.logoFileName + " -composite \"$@\"\n"
makefileTargets.append(makefileTarget)
# Thumbnailtargets
for index, entry in enumerate(jpgList):
if entry['selected']:
makefileTarget = ""
# @todo zfill(3) variabel gestalten
# @todo filename / vs. \
# @todo eol == '\n' vs eol == '\r\n' (vs eol == '\r')
#makefileTarget += argv.galDirBase + "/" + argv.galDirName + "/thumbs/" + argv.galName.replace(" ", "\\ ") + "-" + str(index).zfill(3) + ".png: " + argv.imgDirBase + "/" + entry['filename'] + "\n"
makefileTarget += argv.galDirBase + "/" + argv.galDirName + "/thumbs/" + argv.galName.replace(" ", "\\ ") + "-" + str(index).zfill(3) + ".png: " + entry['filename'] + "\n"
makefileTarget += "\tmkdir -p " + argv.galDirBase + "/" + argv.galDirName + "/thumbs/\n"
# makefileTarget += "\tconvert $^ -resize \"" + argv.galOptThbWiderSide + ">\" \"$@\"\n"
makefileTarget += "\tconvert $^ -rotate -" + str(entry["toRotate"]) + " -resize \"" + argv.galOptThbWiderSide + ">\" -alpha set -virtual-pixel transparent -channel A -blur 0x8 -level 50%,100% +channel \"$@\"\n"
#makefileTarget += "\tpngnq -Q f -s 1 -f -e .png \"$@\"\n"
if argv.compressHard == "true":
makefileTarget += "\tpngquant --speed 1 --force --ext .png \"$@\"\n"
makefileTarget += "\t/home/marko/proggis/zopfli/zopflipng --iterations=500 --filters=01234mepb --lossy_8bit --lossy_transparent -y \"$@\" \"$@\"\n"
makefileTargets.append(makefileTarget)
# phpDateienTargets
indexPhpTarget = ""
indexPhpTarget += argv.galDirBase + "/" + argv.galDirName + "/index.php: " + argv.jsonFileName + "\n"
indexPhpTarget += "\tmkdir -p " + argv.galDirBase + "/" + argv.galDirName + "\n"
indexPhpTarget += "\t/home/marko/keeper/judo/cwsvJudo/src/mkGalGen/jsonJpgList2IndexPhp.py " + argv.jsonFileName + " --galName=\"" + argv.galName + "\" > $@\n"
viewPhpTarget = ""
viewPhpTarget += argv.galDirBase + "/" + argv.galDirName + "/view.php: " + argv.jsonFileName + "\n"
viewPhpTarget += "\tmkdir -p " + argv.galDirBase + "/" + argv.galDirName + "\n"
viewPhpTarget += "\t/home/marko/keeper/judo/cwsvJudo/src/mkGalGen/jsonJpgList2ViewPhp.py " + argv.jsonFileName + " --galName=\""+ argv.galName + "\" > $@\n"
makefileTargets.append(indexPhpTarget)
makefileTargets.append(viewPhpTarget)
for entry in makefileTargets:
print(entry)

View File

@@ -0,0 +1,69 @@
#! /usr/bin/python
# -*- coding: utf-8 -*-
### Aus einer in einer jsonDatei gegebenen jpgListe (albumKompatibel)
### eine index.php erzeugen
###
# Modulimporte
###
#import sys, os, exifread, datetime
import sys, os, datetime
#sys.path.append('/mingw64/lib/python3.6/site-packages/')
# für Kommandozeilenargumente
import argparse
# für glob :)
# @ToDo herausfinden, was glob macht
import glob
#import Tkinter
#import tkinter
#from PIL import Image, ImageTk
#import image, imageTk
import json
###
# Funktionsdefinitionen
###
###
# Main
###
# Argumente parsen
parser = argparse.ArgumentParser(description='Ein Makefile erstellen')
parser.add_argument('jsonFileName', metavar='jsonFileName', nargs='?', default='.', help='json-Datei')
parser.add_argument('--galName')
#parser.add_argument('--galName', default="dummyGalName")
#parser.add_argument('--galDirName', default="dummyGalDirName")
#parser.add_argument('--galDirBase', default="dummyGalDirBase", help="Basisverzeichnis, in dem das Verzeichnis mit dem Album angelegt werden soll")
#parser.add_argument('--galOptImgWiderSide', default="1024")
#parser.add_argument('--galOptThbWiderSide', default="200")
argv = parser.parse_args()
jpgList = []
with open(argv.jsonFileName) as json_data:
#print(json_data)
jpgList = json.load(json_data)
indexPhp = ""
indexPhp += "<?php\n"
indexPhp += "\t$wkName = \"" + argv.galName + "\";\n"
indexPhp += "\t$imgList = array( "
for index, entry in enumerate(jpgList):
if entry['selected']:
indexPhp += "\"images/" + argv.galName + "-" + str(index).zfill(3) + ".jpg\", "
indexPhp += " );\n"
indexPhp += "\tinclude( $_SERVER['DOCUMENT_ROOT'].\"/ressourcen/phpLib/imgGallery/view.php.tmpl\" );\n"
indexPhp += "?>"
print(indexPhp)

View File

@@ -0,0 +1,36 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
# sortierer.py
import os, exifread, datetime
import numpy as np
from sklearn.cluster import MeanShift, estimate_bandwidth
from sklearn.datasets.samples_generator import make_blobs
picDirs = {
"/home/marko/keeper/judo/bilder/bilder.2016/2016-10-23_OttoGoshiLiga+HallCategoryIII2016/mögel",
"/home/marko/keeper/judo/bilder/bilder.2016/2016-10-23_OttoGoshiLiga+HallCategoryIII2016/olympus/denoised",
}
print("Reading Files")
picFiles = []
for picDir in picDirs:
for (dirPath, dirnames, fileNames) in os.walk(picDir):
for fileName in fileNames:
picFiles.append( os.path.join(dirPath, fileName) )
break
print("Reading Tags")
X = []
for picFile in picFiles:
fHandle = open(picFile, 'rb')
fTag = exifread.process_file(fHandle, stop_tag='EXIF DateTimeOriginal', details=False)
timeTag = datetime.datetime.strptime(str( fTag['EXIF DateTimeOriginal'] ), "%Y:%m:%d %H:%M:%S")
X.append( timeTag.hour * 3600 + timeTag.minute * 60 + timeTag.second )
fHandle.close()
xArray = np.asarray(X)
print xArray
print("Doing MeanShift")
mkMS = MeanShift( bin_seeding=True )
mkMS.fit(np.asarray(X))

View File

@@ -0,0 +1,78 @@
# Makefile zum Erzeugen der Bilder der Gallerie
# Einziger Input soll eigentlich sein:
# - Liste der Bilder, die angezeigt werden soll
# - Zielverzeichnis der Gallerie
#
# Problem:
# - die Bildquellen können verschiedene Verzeichnisse haben
# - meine Targets bisher benutzen als Abhängigkeit das
# Quellverzeichnis
# - geht nicht, wenn verschiedene Verzeichnisse benutzt werden
# - geht es vieleicht doch? wie reagiert die
# Abhängigkeitserkennung von make, ist %.jpg nur der Dateiname
# oder der gesamte Pfad? Wenn der ganze Pfad, dann bliebe noch
# das Problem mit den gleichen Dateinamen (Dateien aus
# verschiedenen Ordnern werden in den selben Order kopiert)
# - das heisst auch, dass in der Gallerie zwei Dateien mit dem
# gleichen Namen landen könnten
# - eine Umbenennung wäre nötig
# - mit einem allgemeinen Makefile wird es also nicht gehen...
# - es könnte ein Makefile erzeugt werden, jedes Bild und Thumbnail
# ein eigenes (konkretes) Target
# InputDaten
# - als Inputdaten sollen herhalten:
# - eine Liste der Bilder für die Gallerie
# - vielleicht auch eine Datei mit den Daten der Gallerie?
# -> Nein! Um den Makeprozess effektiv zu gestalten sollten es die
# Quellbilder als Abhängigkeiten sein. Das Makefile oder
# zumindest die Dateiliste sollte generiert werden
# - das Zielverzeichnis für die Gallerie
IMAGE_SOURCE_DIR = /d/privat/cwsvJudo/src/mkGalGen/2006-09-30_zwergenturnier/800x600
IMAGE_SOURCE_FILES = $(wildcard $(IMAGE_SOURCE_DIR)/*.jpg)
GALLERY_TARGET_DIR = /d/privat/cwsvJudo/src/mkGalGen/testingArea/2006-09-30_zwergenturnier
# Ende Inputdaten
GALLERY_IMAGE_TARGET_FILES = $(addprefix $(GALLERY_TARGET_DIR)/images/, $(notdir $(IMAGE_SOURCE_FILES)))
GALLERY_THUMBNAILS_TARGET_FILES = $(addprefix $(GALLERY_TARGET_DIR)/thumbnails/, $(addsuffix .png, $(basename $(notdir $(IMAGE_SOURCE_FILES)))))
GUETZLI = /d/projekte/tests/guetzli.git/bin/Release/guetzli.exe
IMAGES_WIDTH_WIDER_SIDE = 800
THUMBNAILS_WIDTH_WIDER_SIDE = 160
THUMBNAIL_OPTIONS_BLUREDGES = -alpha set -virtual-pixel transparent -channel A -blur 0x25 -level 50%,100% +channel
THUMBNAIL_OPTIONS_TORNEDGES = \( +clone -alpha extract -virtual-pixel black -spread 50 -blur 0x3 -threshold 50% -spread 1 -blur 0x.7 \) -alpha off -compose Copy_Opacity -composite
.PHONY: all clean thumbClean imageClean
all: $(GALLERY_IMAGE_TARGET_FILES) $(GALLERY_THUMBNAILS_TARGET_FILES)
clean: thumbClean imageClean
thumbClean:
$(RM) $(GALLERY_THUMBNAILS_TARGET_FILES)
imageClean:
$(RM) $(GALLERY_IMAGE_TARGET_FILES)
include Makefile.imgTargets.inc
# Target für die AlbumBilder
$(GALLERY_TARGET_DIR)/images/%.jpg:$(IMAGE_SOURCE_DIR)/%.jpg
mkdir -p $(GALLERY_TARGET_DIR)/images
convert $^ -resize "$(IMAGES_WIDTH_WIDER_SIDE)>" $@
$(GUETZLI) --quality 95 $@ $@
$(GALLERY_TARGET_DIR)/thumbnails/%.png:$(IMAGE_SOURCE_DIR)/%.jpg
mkdir -p $(GALLERY_TARGET_DIR)/thumbnails
convert $^ $(THUMBNAIL_OPTIONS_TORNEDGES) -resize "$(THUMBNAILS_WIDTH_WIDER_SIDE)>" $@
pngnq -Q f -s 1 -f -e .png $@
.PHONY:
echoTest:
echo $(IMAGE_SOURCE_DIR)
echo $(GALLERY_TARGET_DIR)
echo $(IMAGE_SOURCE_FILES)
echo $(GALLERY_IMAGE_TARGET_FILES)
echo $(GALLERY_THUMBNAILS_TARGET_FILES)
echo $(GAL_TARGET_DIR)