Merge branch 'master' into infoZettel
This commit is contained in:
@@ -34,6 +34,10 @@ processPostData($dbConnection, $_POST);
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<!-- unpkg : use the latest version of Video.js -->
|
||||
<link href="https://unpkg.com/video.js/dist/video-js.min.css" rel="stylesheet">
|
||||
<script src="https://unpkg.com/video.js/dist/video.min.js"></script>
|
||||
|
||||
<!-- Compiled and minified CSS -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@materializecss/materialize@1.1.0-alpha/dist/css/materialize.min.css">
|
||||
<!-- Compiled and minified JavaScript -->
|
||||
@@ -72,34 +76,30 @@ processPostData($dbConnection, $_POST);
|
||||
}
|
||||
?>
|
||||
|
||||
<?php
|
||||
<?php
|
||||
if( hasUserAttribute($dbConnection, $_SESSION['user']['userId'], "inTraining" ) ){
|
||||
echo( "<h2>Eigene Achievements</h2>" );
|
||||
// echo( htmlUsersUploadBox($dbConnection, $_SESSION['user']['userId']) );
|
||||
echo(htmlAchievementListForUser(
|
||||
$dbConnection,
|
||||
$achievementGroups,
|
||||
$_SESSION['user']['userId'],
|
||||
getUsersAchievements($dbConnection, $_SESSION['user']['userId'])
|
||||
));
|
||||
echo( "<div style=\"display:flex; flex-wrap:wrap; align-items:stretch;\" class=\"row\">");
|
||||
foreach($achievementGroups as $g){
|
||||
echo($g->asHtmlCard($_SESSION['user']['userId']));
|
||||
}
|
||||
echo("</div>" );
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
<?php
|
||||
$usersKids = getUsersKids($dbConnection, $_SESSION['user']['userId']);
|
||||
foreach($usersKids as $k){
|
||||
if( hasUserAttribute($dbConnection, $k['kidId'], "inTraining" ) and ($k['kidId']!=$_SESSION['user']['userId']) ){
|
||||
echo( "<h2>".$k['vorname']." ".$k['name']."</h2>" );
|
||||
// echo( htmlUsersUploadBox($dbConnection, $k['kidId']) );
|
||||
echo(htmlAchievementListForUser(
|
||||
$dbConnection,
|
||||
$achievementGroups,
|
||||
$k['id'],
|
||||
getUsersAchievements($dbConnection, $k['id'])
|
||||
));
|
||||
<?php // show the achievements of each kid
|
||||
$usersKids = getUsersKids($dbConnection, $_SESSION['user']['userId']);
|
||||
foreach($usersKids as $k){
|
||||
if( hasUserAttribute($dbConnection, $k['kidId'], "inTraining" ) ){
|
||||
echo( "<h2>".$k['vorname']." ".$k['name']."</h2>" );
|
||||
echo( "<div style=\"display:flex; flex-wrap:wrap; align-items:stretch;\" class=\"row\">");
|
||||
foreach($achievementGroups as $g){
|
||||
echo($g->asHtmlCard($k['kidId'], ['noForm'=>false]));
|
||||
}
|
||||
}
|
||||
?>
|
||||
echo("</div>" );
|
||||
}
|
||||
?>
|
||||
|
||||
<?php
|
||||
if(isUserAdmin($dbConnection, $_SESSION['user']['userId'])){
|
||||
|
||||
@@ -131,13 +131,13 @@ return $groups;
|
||||
}
|
||||
|
||||
function htmlUsersUploadBox($db, $userId){
|
||||
$html = "";
|
||||
$userData = getUserData($db, $userId);
|
||||
$html .= "<div><dl>";
|
||||
$html .= "<dt>Upload Link</dt><dd><a href=\"".$userData['machsUploadUrl']."\">".$userData['machsUploadUrl']."</a></dd>";
|
||||
$html .= "<dt>Upload Passwort</dt><dd>".$userData['machsUploadPw']."</dd>";
|
||||
$html .= "</dl></div>";
|
||||
return $html;
|
||||
$html = "";
|
||||
$userData = getUserData($db, $userId);
|
||||
$html .= "<div><dl>";
|
||||
$html .= "<dt>Upload Link</dt><dd><a href=\"".$userData['machsUploadUrl']."\">".$userData['machsUploadUrl']."</a></dd>";
|
||||
$html .= "<dt>Upload Passwort</dt><dd>".$userData['machsUploadPw']."</dd>";
|
||||
$html .= "</dl></div>";
|
||||
return $html;
|
||||
}
|
||||
|
||||
function htmlAchievementListForUser($db, $achievementGroups, $userId, $usersAchievmentIds, $noForm=false){
|
||||
|
||||
@@ -197,7 +197,20 @@ SQL;
|
||||
|
||||
// image + title
|
||||
if($this->imageUrl != null){
|
||||
$retHtml .= "<div class=\"card-image\"><img src=\"".$this->imageUrl."\">";
|
||||
$retHtml .= "<div class=\"card-image\">";
|
||||
$ext = pathinfo($this->imageUrl, PATHINFO_EXTENSION);
|
||||
$ret."<div>".$this->imageUrl."</div>";
|
||||
$ret."<div>".$ext."</div>";
|
||||
switch($ext){
|
||||
case "webm":
|
||||
$retHtml .= "<video controls preload=\"none\"><source src=\"".$this->imageUrl."\" type=\"video/webm\">Video tag is not supported in this browser.</video>";
|
||||
// $retHtml .= videoJsFrame(array('url'=>$this->imageUrl));
|
||||
// $retHtml .= "<div>Hier sollte ein Video sein!</div>";
|
||||
break;
|
||||
default:
|
||||
$retHtml .= "<img src=\"".$this->imageUrl."\">";
|
||||
break;
|
||||
};
|
||||
$retHtml .= "<span class=\"card-title\">".$this->name."</span>";
|
||||
$retHtml .= "</div>";
|
||||
}
|
||||
@@ -248,8 +261,12 @@ SQL;
|
||||
$retHtml .= "<input name=\"redirectLocation\" value=\"./#achievementList-".$uId."\" type=\"hidden\" />";
|
||||
$retHtml .= "<input name=\"userId\" value=\"".$uId."\" type=\"hidden\" />";
|
||||
$retHtml .= "<input name=\"achievementId\" value=\"".$usersNextAchievement['id']."\" type=\"hidden\" />";
|
||||
//! warning for admins, that the user already had an achievement today
|
||||
if( !canUserGetAchievementToday( $this->getDbConnection(), $uId) and isUserAdmin($this->getDbConnection(), $_SESSION['user']['userId']) ){
|
||||
$retHtml .= "<div class=\"pink\" >Heute wurde bereits eine Achievement erreicht!</div>";
|
||||
}
|
||||
//! Only one achievements shall be given daily! Admins can overrule this!
|
||||
if( canUserGetAchievementToday( $this->getDbConnection(), $uId) or isUserAdmin($this->getDbConnection(), $_SESSION['user']['userId']) ){
|
||||
// $retHtml .= "<button style=\"width:100%\" class=\"btn\" name=\"submit\" type=\"submit\" >Achievement ".$usersNextAchievement['name']." geben</button>";
|
||||
$retHtml .= "<button style=\"width:100%\" class=\"btn\" name=\"submit\" type=\"submit\" >Achievement geben</button>";
|
||||
}
|
||||
else{
|
||||
@@ -419,4 +436,24 @@ function collectKeysValues($array, $key){
|
||||
$values[]=$a[$key];
|
||||
return $values;
|
||||
}
|
||||
|
||||
//! create the <video>Tag for videoJs
|
||||
function videoJsFrame($item){
|
||||
return "<video "
|
||||
."id=\"".str_replace("/", "-", $item['url'])."\" "
|
||||
."class=\"video-js\" "
|
||||
."controls "
|
||||
."preload=\"none\" "
|
||||
// ."poster=\"//vjs.zencdn.net/v/oceans.png\""
|
||||
."data-setup='{}' "
|
||||
.">"
|
||||
."<source src=\"".$item['url']."\" type=\"video/webm\">"//</source>"
|
||||
."<p class=\"vjs-no-js\">"
|
||||
."To view this video please enable JavaScript, and consider upgrading to a web browser that "
|
||||
."<a href=\"https://videojs.com/html5-video-support/\" target=\"_blank\">"
|
||||
."supports HTML5 video"
|
||||
."</a>"
|
||||
."</p>"
|
||||
."</video>";
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -41,12 +41,12 @@ class record{
|
||||
"ON `wkParticipo_Users`.`id` = `achievements<=>user`.`userId` ".
|
||||
(
|
||||
($from!=null&&$to!=null)?
|
||||
("BETWEEN CONVERT(\"".$from."\", datetime) AND CONVERT(\"".$to."\", datetime) "):
|
||||
(" WHERE `achievements<=>user`.`timestamp` BETWEEN CONVERT(\"".$from."\", datetime) AND CONVERT(\"".$to."\", datetime) "):
|
||||
("")
|
||||
).
|
||||
"GROUP BY `wkParticipo_Users`.`id` ".
|
||||
"ORDER BY `COUNT(*)` DESC;";
|
||||
return dbQuery(self::$db, $query);
|
||||
return dbQuery(self::$db, $query);
|
||||
}
|
||||
|
||||
public static function getAllRecords(){
|
||||
|
||||
242
homepage/participo/attendence.php
Normal file
242
homepage/participo/attendence.php
Normal file
@@ -0,0 +1,242 @@
|
||||
<?php
|
||||
setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
|
||||
require_once("config/participo.php");
|
||||
|
||||
require_once("./local/dbConf.php");
|
||||
require_once("./local/cwsvJudo.php");
|
||||
|
||||
require_once("./lib/db.php");
|
||||
require_once("./lib/api.php");
|
||||
require_once("./lib/participoLib/participo.php");
|
||||
|
||||
require_once("./auth.php");
|
||||
|
||||
require_once($config['basePath']."/config/cwsvJudo.config.php");
|
||||
require_once($config['basePath']."/config/phpcount.config.php");
|
||||
|
||||
$dbConnection = getPdoDbConnection(
|
||||
$cwsvJudoConfig["db"]["host"],
|
||||
$cwsvJudoConfig["db"]["name"],
|
||||
$cwsvJudoConfig["db"]["user"],
|
||||
$cwsvJudoConfig["db"]["password"]
|
||||
);
|
||||
$userData = getUserData($dbConnection, $_SESSION['user']['userId']);
|
||||
|
||||
function getCommingWkEvents($dbConn, $someOptions=array() ){
|
||||
// wir befinden uns in der Übergangsphase:
|
||||
// - als Standard wird das derzeitige Verhalten definiert (ISO-8859-1
|
||||
// und die Konvertierung erfolgt ausserhalb)
|
||||
// - wenn einmal alle mbConvertEncoding weg sind, kann der Standard auf
|
||||
// das gewünschte Verhalten umgestellt werden
|
||||
$dbCharset = $someOptions['dbCharset'] ?? "ISO-8859-1";
|
||||
// dbCharset = $someOptions['outCharset'] ?? "UTF-8";// das spätere, gewünschte Verhalten
|
||||
$outCharset = $someOptions['outCharset'] ?? "ISO-8859-1";
|
||||
|
||||
$query =
|
||||
"SELECT ".
|
||||
"wkParticipo_Events.id, ".
|
||||
"wkParticipo_Events.date, ".
|
||||
"wkParticipo_Events.wkId, ".
|
||||
"wkParticipo_Events.meldefrist, ".
|
||||
"wkParticipo_Events.bemerkungen, ".
|
||||
"wkParticipo_Events.kvOptions, ".
|
||||
"wettkampfkalender.Datum, ".
|
||||
"wettkampfkalender.Veranstaltung, ".
|
||||
"wettkampfkalender.Altersklassen, ".
|
||||
"wettkampfkalender.Ort, ".
|
||||
"wettkampfkalender.Ausschreibung, ".
|
||||
"wettkampfkalender.Routenplaner ".
|
||||
"FROM wkParticipo_Events ".
|
||||
"LEFT JOIN wettkampfkalender ".
|
||||
"ON wettkampfkalender.lfdeNr = wkParticipo_Events.wkId ".
|
||||
"WHERE wkParticipo_Events.date >= CURDATE() ".
|
||||
"ORDER BY wkParticipo_Events.date;";
|
||||
$ret = dbQuery($dbConn, $query);
|
||||
// $results = $anMysqlConn->query($query);
|
||||
|
||||
// // Bei einem Fehler bei der Abfrage soll NULL zurückgeliefert werden
|
||||
// if( !$results ){
|
||||
// echo("No Results: ".$anMysqlConn->error);
|
||||
// return NULL;
|
||||
// }
|
||||
// // Bei einem leeren Ergebnis (NULL oder leeres Array) soll ein leeres Array zurückgeliefert werden
|
||||
// if( empty($results) ) return array();
|
||||
|
||||
// while( $result = $results->fetch_assoc() ){
|
||||
// array_walk(
|
||||
// $result,
|
||||
// function (&$value, $key, $someOptions) {
|
||||
// $value = iconv($someOptions['dbCharset'], $someOptions['outCharset'], $value);
|
||||
// },
|
||||
// $someOptions
|
||||
// );
|
||||
// array_push( $ret, $result);
|
||||
// }
|
||||
return $ret;
|
||||
}
|
||||
|
||||
// array(12) {
|
||||
// ["id"]=> string(3) "139"
|
||||
// ["date"]=> string(10) "2021-12-29"
|
||||
// ["wkId"]=> string(0) ""
|
||||
// ["meldefrist"]=> string(10) "2021-12-28"
|
||||
// ["bemerkungen"]=> string(374) "{ "Datum": "2021-12-29", "Veranstaltung": "Jahresabschlusstraining", "Altersklassen": "alle", "bemerkungen": "
|
||||
|
||||
// Zum Abschluss des Jahres noch einmal eine kleine Einheit hauptsächlich zum Spielen
|
||||
// Zeit: 16:00--19:00 Uhr
|
||||
|
||||
// ", "Ort": "unser Dojo, Str. Usti nad Labem 42, 09120 Chemnitz", "Routenplaner": "https://osm.org/go/0MIYhLf3Q-" }"
|
||||
// ["kvOptions"]=> string(0) ""
|
||||
// ["Datum"]=> string(0) ""
|
||||
// ["Veranstaltung"]=> string(0) ""
|
||||
// ["Altersklassen"]=> string(0) ""
|
||||
// ["Ort"]=> string(0) ""
|
||||
// ["Ausschreibung"]=> string(0) ""
|
||||
// ["Routenplaner"]=> string(0) ""
|
||||
// }
|
||||
function getHtmlEventTable($eventList){
|
||||
$ret = "</a><table>";
|
||||
foreach($eventList as $event){
|
||||
$e = json_decode($event['bemerkungen'], true);
|
||||
$e = (($e==null)?$event:$e);
|
||||
$e['id']=$event['id'];
|
||||
$ret .= "<tr><td>".$e['Datum']."</td><td><a href=\"/pages/desktop/wkParticipo/showWkEvent.php?eventId=".$e['id']."\" >".$e['Veranstaltung']."</a></td></tr>";
|
||||
}
|
||||
$ret .= "</table><a>";
|
||||
return $ret;
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<?php readfile("./shared/imports.php");?>
|
||||
|
||||
<!-- inits for the materializeCss -->
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var elems = document.querySelectorAll('.sidenav');
|
||||
var instances = M.Sidenav.init(elems, {
|
||||
// specify options here
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<title>participo</title>
|
||||
<meta name="description" content="Online-Apps der Judoka des Chemnitzer WSV">
|
||||
|
||||
<link rel="icon" href="<?echo($config['ressourceUrl']);?>/graphiken/icons/cwsv.ico" />
|
||||
<link rel="apple-touch-icon" href="<?echo($config['baseUrl']);?>/apple-touch-icon.png">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<header>
|
||||
<nav class="indigo darken-4">cwsvJudo Apps<a class="right top-nav sidenav-trigger waves-effect waves-light hide-on-large-only" href="#" data-target="nav-mobile">
|
||||
<i class="material-icons">menu</i>
|
||||
</a></nav>
|
||||
<ul class="sidenav sidenav-fixed sidenav-close" id="nav-mobile">
|
||||
<li class="logo">
|
||||
<a style="height:auto;" class="brand-logo" id="logo-container" href="/participo/">
|
||||
<img alt="cwsvJudoApps" style="max-width:100%;height:12vh;" class="responsive-img" src="http://cwsvjudo.bplaced.net/ressourcen/graphiken/logos/cwsvJudoLogoWappen.x256.png" />
|
||||
</a>
|
||||
</li>
|
||||
<?php require_once("sidenav/loginStatus.php");?><!-- brings its own li -->
|
||||
<li class="bold">
|
||||
<a class="waves-effect waves-teal right-align" href="#AppList">Apps</a>
|
||||
</li>
|
||||
<li class="bold">
|
||||
<a class="waves-effect waves-teal right-align" href="#Configs">UserInfos</a>
|
||||
</li>
|
||||
<?php if( isUserAdmin($dbConnection, $userData['id']) ){?>
|
||||
<li class="bold">
|
||||
<a class="waves-effect waves-teal right-align" href="#Admin">adminStuff</a>
|
||||
</li>
|
||||
<?php }?>
|
||||
</ul>
|
||||
</header>
|
||||
|
||||
<?php
|
||||
if($_SESSION['login']){
|
||||
?>
|
||||
<main>
|
||||
<!-- List of Mitmach-Apps -->
|
||||
<div class="row" id="AppList">
|
||||
<?php
|
||||
//var_dump(getCommingWkEvents($dbConnection));
|
||||
echo(
|
||||
AppCard::fromArray([
|
||||
'link' => "kyu",
|
||||
'title' => "Kyu",
|
||||
'description'=> "Die Prüfungsprogamme der einzelnen Gürtelstufen in Bild, Ton und Text",
|
||||
'imgUrl' => "images/obi.svg",
|
||||
'actions' => [
|
||||
AppCardAction::fromArray(['caption'=>"Kyu-Programme", 'link'=>"kyu"]),
|
||||
],
|
||||
])->htmlCode().
|
||||
AppCard::fromArray([
|
||||
'link' => "/machs",
|
||||
'title' => "<em>M</em>ein <em>Ach</em>ievement <em>S</em>ystem",
|
||||
'description'=> "Ein kleines Achievementsystem für die tägliche Herausforderung",
|
||||
'imgUrl' => "images/mountain-climber.svg",
|
||||
'actions' => [
|
||||
AppCardAction::fromArray(['caption'=>"MAchS", 'link'=>"/machs"]),
|
||||
],
|
||||
])->htmlCode().
|
||||
AppCard::fromArray([
|
||||
'link' => "/pages/desktop/wkParticipo",
|
||||
'title' => "Event-Planer",
|
||||
'description'=> "Organisieren der Teilnahmen (und nicht-Teilnahmen) an Wettkämpfen, Sondertrainingseinheiten, Feiern etc.</p>".getHtmlEventTable(getCommingWkEvents($dbConnection))."<p>",
|
||||
'imgUrl' => "/ressourcen/graphiken/icons/terminKalender.svg",
|
||||
'actions' => [
|
||||
AppCardAction::fromArray(['caption'=>"Planer", 'link'=>"/pages/desktop/wkParticipo"]),
|
||||
],
|
||||
])->htmlCode().
|
||||
AppCard::fromArray([
|
||||
'link' => "infoZettel",
|
||||
'title' => "Infozettel",
|
||||
'description'=> "Online-Variante der Infozettel und Newsletter",
|
||||
'imgUrl' => "images/info.svg",
|
||||
'actions' => [
|
||||
AppCardAction::fromArray(['caption'=>"Info", 'link'=>"infoZettel"]),
|
||||
],
|
||||
])->htmlCode()
|
||||
);
|
||||
?>
|
||||
</div><!-- End of MitmachApps -->
|
||||
|
||||
<div class="divider"></div>
|
||||
|
||||
<!-- List of ConfigStuff -->
|
||||
<div class="row" id="Configs">
|
||||
<?php
|
||||
echo(
|
||||
AppCard::fromArray([
|
||||
'link' => "user",
|
||||
'title' => "User-Config",
|
||||
'description' => "Einstellungen zum aktuellen Benutzer dessen Kindern",
|
||||
'imgUrl' => "images/account.svg",
|
||||
'actions' => [
|
||||
AppCardAction::fromArray(['caption'=>"Config", 'link'=>"user"]),
|
||||
],
|
||||
])->htmlCode()
|
||||
);
|
||||
// AdminStuff, thats only visible for Admins
|
||||
if( isUserAdmin($dbConnection, $userData['id']) ){
|
||||
echo(
|
||||
AppCard::fromArray([
|
||||
'title' =>"lastLogins",
|
||||
'description' => "</p>".lastLoginTable()."</p>"
|
||||
])->htmlCode()
|
||||
);
|
||||
}
|
||||
?>
|
||||
</div><!-- End of ConfigStuff -->
|
||||
</main>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
@@ -4,6 +4,12 @@
|
||||
.parsedownCard h2{
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
.parsedownCard h3{
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
.parsedownCard ul li {
|
||||
list-style-type: disc;
|
||||
}
|
||||
}
|
||||
.parsedownCard img{
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
@@ -9,3 +9,8 @@ header, main, footer {
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.card video{
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
@@ -1,21 +1,145 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg viewBox="0 0 744.09447 1052.362179" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<linearGradient id="b">
|
||||
<stop stop-color="#1f55d1" offset="0"/>
|
||||
<stop stop-color="#c9daff" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="a" xlink:href="#b"/>
|
||||
<radialGradient id="c" cx=".65278" cy=".67832" r="1.8433" fx=".67361" fy=".66434" xlink:href="#b"/>
|
||||
</defs>
|
||||
<path transform="translate(1.039 -1.7757)" d="m523.75 510.49a190.62 190.62 0 1 0 -381.25 0 190.62 190.62 0 1 0 381.25 0z" fill="url(#c)" fill-rule="evenodd" stroke="url(#a)" stroke-width="8"/>
|
||||
<path transform="translate(32.914 40.099)" d="m445 468.61a143.75 143.75 0 1 0 -287.5 0 143.75 143.75 0 1 0 287.5 0z" fill="#fff" fill-rule="evenodd" stroke="url(#a)" stroke-width="8"/>
|
||||
<path transform="scale(42.739 26.7)" d="m7.3966 17.236h1.0781v6.5625h-1.0781v-6.5625zm0-2.5547h1.0781v1.3594h-1.0781v-1.3594z" fill="#919191"/>
|
||||
<text transform="scale(42.739 26.7)" x="6.15463" y="23.61115" font-family="Bitstream Vera Sans" font-size="12">
|
||||
<tspan>i</tspan>
|
||||
</text>
|
||||
<path transform="scale(31.938 26.851)" d="m32.2376,17.8471c-.57544,1e-005-1.03034.22559-1.36468.67676s-.50153,1.06934-.50153,1.85449 .1662,1.40332.4986,1.85449 .78827.67676 1.36761.67676c.57153,0 1.02447-.22656 1.35883-.67969s.50152-1.07031.50153-1.85156-.16718-1.39355-.50153-1.84863-.7873-.68261-1.35883-.68262zm-.00293-.91406c.9375,1e-005 1.67382.30469 2.20898.91406s.80273,1.45313.80273,2.53125c-1e-005,1.07422-.26758,1.91699-.80273,2.52832s-1.27149.91699-2.20898.91699-1.67871-.30566-2.21191-.91699-.79981-1.4541-.7998-2.52832c0-1.07812.2666-1.92187.7998-2.53125s1.27051-.91406 2.21191-.91406zm-3.43359-2.39063v.89063h-1.02795c-.38794,1e-005-.65735.07838-.80823.23511s-.22632.43897-.22632.84668v.58227h1.78125v.84375h-1.78125v5.71875h-1.07813v-5.71875h-1.03125v-.84375h1.03125v-.4585c0-.72997.16974-1.26183.50922-1.59558s.87787-.5006 1.61517-.50061h1.01624zm-5.46094,5.14783v3.96936h-1.07813v-3.9342c0-.62011-.12171-1.08429-.36511-1.39252s-.60865-.46234-1.0957-.46234c-.58496,0-1.04633.18537-1.38409.55609s-.50666.87616-.50665,1.5163v3.71667h-1.07813v-6.5625h1.07813v1.00781c.25879-.39257.56372-.68603.91479-.88037s.75598-.2915 1.21472-.2915c.75683,1e-005 1.3294.23316 1.71771.69946s.58245,1.15223.58246,2.05774z" fill="#919191"/>
|
||||
<text transform="scale(31.938 26.851)" x="16.58452" y="23.48566" font-family="Bitstream Vera Sans" font-size="12">
|
||||
<tspan>nfo</tspan>
|
||||
</text>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
viewBox="0 0 986.16085 389.24982"
|
||||
version="1.1"
|
||||
id="svg27"
|
||||
sodipodi:docname="info.svg"
|
||||
width="260.92172mm"
|
||||
height="102.98901mm"
|
||||
inkscape:version="1.0.2 (e86c870879, 2021-01-15)">
|
||||
<metadata
|
||||
id="metadata31">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="708"
|
||||
id="namedview29"
|
||||
showgrid="false"
|
||||
units="mm"
|
||||
inkscape:document-units="mm"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:zoom="0.51028059"
|
||||
inkscape:cx="232.50824"
|
||||
inkscape:cy="212.09171"
|
||||
inkscape:window-x="-1"
|
||||
inkscape:window-y="-1"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg27" />
|
||||
<defs
|
||||
id="defs9">
|
||||
<linearGradient
|
||||
id="b">
|
||||
<stop
|
||||
stop-color="#1f55d1"
|
||||
offset="0"
|
||||
id="stop2" />
|
||||
<stop
|
||||
stop-color="#c9daff"
|
||||
offset="1"
|
||||
id="stop4" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="a"
|
||||
xlink:href="#b"
|
||||
x1="153.49997"
|
||||
y1="320.86013"
|
||||
x2="448.99991"
|
||||
y2="320.86013"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-106.625,-273.99038)" />
|
||||
<radialGradient
|
||||
id="c"
|
||||
cx="392.59453"
|
||||
cy="579.90115"
|
||||
r="717.50437"
|
||||
fx="400.7026"
|
||||
fy="574.45945"
|
||||
xlink:href="#b"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-138.5,-315.86508)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#b"
|
||||
id="linearGradient33"
|
||||
x1="138.49997"
|
||||
y1="315.86515"
|
||||
x2="527.74989"
|
||||
y2="315.86515"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-138.5,-315.86508)" />
|
||||
</defs>
|
||||
<path
|
||||
d="m 385.25,194.62492 a 190.625,190.625 0 1 0 -381.25,0 190.625,190.625 0 1 0 381.25,0 z"
|
||||
fill="url(#c)"
|
||||
fill-rule="evenodd"
|
||||
stroke="url(#a)"
|
||||
stroke-width="8"
|
||||
id="path11"
|
||||
style="fill:url(#c);stroke:url(#linearGradient33)" />
|
||||
<path
|
||||
d="m 338.375,194.61962 a 143.75,143.75 0 1 0 -287.5,0 143.75,143.75 0 1 0 287.5,0 z"
|
||||
fill="#ffffff"
|
||||
fill-rule="evenodd"
|
||||
stroke="url(#a)"
|
||||
stroke-width="8"
|
||||
id="path13"
|
||||
style="stroke:url(#a)" />
|
||||
<path
|
||||
d="m 176.58429,146.11182 h 46.07691 v 175.21875 h -46.07691 z m 0,-68.210492 h 46.07691 v 36.295982 h -46.07691 z"
|
||||
fill="#919191"
|
||||
id="path15"
|
||||
style="stroke-width:33.7806" />
|
||||
<text
|
||||
transform="scale(1.2651923,0.79039367)"
|
||||
x="97.616577"
|
||||
y="400.21619"
|
||||
font-family="'Bitstream Vera Sans'"
|
||||
font-size="405.368px"
|
||||
id="text19"
|
||||
style="stroke-width:33.7806"><tspan
|
||||
id="tspan17"
|
||||
style="stroke-width:33.7806">i</tspan></text>
|
||||
<path
|
||||
d="m 890.06547,165.1231 c -18.3784,2.7e-4 -32.907,6.05732 -43.58515,18.17168 -10.67815,12.11437 -16.01787,28.71285 -16.01787,49.79491 0,21.08207 5.3081,37.68055 15.92429,49.79491 10.61619,12.11437 25.17577,18.17169 43.67873,18.17169 18.25352,0 32.71952,-6.08337 43.39831,-18.25036 10.67879,-12.16699 16.01755,-28.73889 16.01787,-49.71624 3.2e-4,-20.97734 -5.3394,-37.41821 -16.01787,-49.63756 -10.67847,-12.21935 -25.14479,-18.32876 -43.39831,-18.32903 z m -0.0926,-24.54343 c 29.94187,2.7e-4 53.45846,8.18124 70.5504,24.54343 17.09194,16.36219 25.63759,39.01799 25.63759,67.96659 -3.2e-4,28.84388 -8.54597,51.4731 -25.63759,67.88792 -17.09162,16.41483 -40.60885,24.6221 -70.5504,24.6221 -29.94156,0 -53.61464,-8.20727 -70.64398,-24.6221 -17.02934,-16.41482 -25.54433,-39.04404 -25.54402,-67.88792 0,-28.9486 8.51468,-51.60413 25.54402,-67.96659 17.02934,-16.36246 40.57755,-24.54343 70.64398,-24.54343 z M 780.31087,76.388869 V 100.30317 H 747.4802 c -12.39002,2.7e-4 -20.99444,2.10459 -25.81325,6.31294 -4.8188,4.20836 -7.2282,11.78679 -7.2282,22.73421 v 15.63453 h 56.88956 v 22.65553 H 714.43777 V 321.19454 H 680.00445 V 167.64038 h -32.93606 v -22.65553 h 32.93606 v -12.31118 c 0,-19.60043 5.42116,-33.881401 16.26347,-42.842922 10.84231,-8.961521 28.03741,-13.441611 51.5853,-13.441879 z M 605.89935,214.61325 V 321.19454 H 571.46603 V 215.55733 c 0,-16.65057 -3.88717,-29.11427 -11.66088,-37.39055 -7.77371,-8.27629 -19.43906,-12.41429 -34.99447,-12.41429 -18.68245,0 -33.41768,4.97737 -44.20506,14.93157 -10.78738,9.9542 -16.18171,23.52577 -16.18139,40.71417 v 99.79631 H 429.99091 V 144.98485 h 34.43332 v 27.06071 c 8.26523,-10.5409 18.00409,-18.4206 29.21656,-23.63882 11.21248,-5.21822 24.14449,-7.82707 38.79573,-7.82707 24.17164,2.7e-4 42.45838,6.26058 54.86022,18.78121 12.40185,12.52062 18.60229,30.93852 18.60261,55.25237 z"
|
||||
fill="#919191"
|
||||
id="path21"
|
||||
style="stroke-width:29.2842" />
|
||||
<text
|
||||
transform="scale(1.0906204,0.91690929)"
|
||||
x="357.72061"
|
||||
y="345.20764"
|
||||
font-family="'Bitstream Vera Sans'"
|
||||
font-size="351.411px"
|
||||
id="text25"
|
||||
style="stroke-width:29.2842"><tspan
|
||||
id="tspan23"
|
||||
style="stroke-width:29.2842">nfo</tspan></text>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 5.8 KiB |
@@ -21,6 +21,90 @@ setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
|
||||
$cwsvJudoConfig["db"]["password"]
|
||||
);
|
||||
$userData = getUserData($dbConnection, $_SESSION['user']['userId']);
|
||||
|
||||
function getCommingWkEvents($dbConn, $someOptions=array() ){
|
||||
// wir befinden uns in der Übergangsphase:
|
||||
// - als Standard wird das derzeitige Verhalten definiert (ISO-8859-1
|
||||
// und die Konvertierung erfolgt ausserhalb)
|
||||
// - wenn einmal alle mbConvertEncoding weg sind, kann der Standard auf
|
||||
// das gewünschte Verhalten umgestellt werden
|
||||
$dbCharset = $someOptions['dbCharset'] ?? "ISO-8859-1";
|
||||
// dbCharset = $someOptions['outCharset'] ?? "UTF-8";// das spätere, gewünschte Verhalten
|
||||
$outCharset = $someOptions['outCharset'] ?? "ISO-8859-1";
|
||||
|
||||
$query =
|
||||
"SELECT ".
|
||||
"wkParticipo_Events.id, ".
|
||||
"wkParticipo_Events.date, ".
|
||||
"wkParticipo_Events.wkId, ".
|
||||
"wkParticipo_Events.meldefrist, ".
|
||||
"wkParticipo_Events.bemerkungen, ".
|
||||
"wkParticipo_Events.kvOptions, ".
|
||||
"wettkampfkalender.Datum, ".
|
||||
"wettkampfkalender.Veranstaltung, ".
|
||||
"wettkampfkalender.Altersklassen, ".
|
||||
"wettkampfkalender.Ort, ".
|
||||
"wettkampfkalender.Ausschreibung, ".
|
||||
"wettkampfkalender.Routenplaner ".
|
||||
"FROM wkParticipo_Events ".
|
||||
"LEFT JOIN wettkampfkalender ".
|
||||
"ON wettkampfkalender.lfdeNr = wkParticipo_Events.wkId ".
|
||||
"WHERE wkParticipo_Events.date >= CURDATE() ".
|
||||
"ORDER BY wkParticipo_Events.date;";
|
||||
$ret = dbQuery($dbConn, $query);
|
||||
// $results = $anMysqlConn->query($query);
|
||||
|
||||
// // Bei einem Fehler bei der Abfrage soll NULL zurückgeliefert werden
|
||||
// if( !$results ){
|
||||
// echo("No Results: ".$anMysqlConn->error);
|
||||
// return NULL;
|
||||
// }
|
||||
// // Bei einem leeren Ergebnis (NULL oder leeres Array) soll ein leeres Array zurückgeliefert werden
|
||||
// if( empty($results) ) return array();
|
||||
|
||||
// while( $result = $results->fetch_assoc() ){
|
||||
// array_walk(
|
||||
// $result,
|
||||
// function (&$value, $key, $someOptions) {
|
||||
// $value = iconv($someOptions['dbCharset'], $someOptions['outCharset'], $value);
|
||||
// },
|
||||
// $someOptions
|
||||
// );
|
||||
// array_push( $ret, $result);
|
||||
// }
|
||||
return $ret;
|
||||
}
|
||||
|
||||
// array(12) {
|
||||
// ["id"]=> string(3) "139"
|
||||
// ["date"]=> string(10) "2021-12-29"
|
||||
// ["wkId"]=> string(0) ""
|
||||
// ["meldefrist"]=> string(10) "2021-12-28"
|
||||
// ["bemerkungen"]=> string(374) "{ "Datum": "2021-12-29", "Veranstaltung": "Jahresabschlusstraining", "Altersklassen": "alle", "bemerkungen": "
|
||||
|
||||
// Zum Abschluss des Jahres noch einmal eine kleine Einheit hauptsächlich zum Spielen
|
||||
// Zeit: 16:00--19:00 Uhr
|
||||
|
||||
// ", "Ort": "unser Dojo, Str. Usti nad Labem 42, 09120 Chemnitz", "Routenplaner": "https://osm.org/go/0MIYhLf3Q-" }"
|
||||
// ["kvOptions"]=> string(0) ""
|
||||
// ["Datum"]=> string(0) ""
|
||||
// ["Veranstaltung"]=> string(0) ""
|
||||
// ["Altersklassen"]=> string(0) ""
|
||||
// ["Ort"]=> string(0) ""
|
||||
// ["Ausschreibung"]=> string(0) ""
|
||||
// ["Routenplaner"]=> string(0) ""
|
||||
// }
|
||||
function getHtmlEventTable($eventList){
|
||||
$ret = "</a><table>";
|
||||
foreach($eventList as $event){
|
||||
$e = json_decode($event['bemerkungen'], true);
|
||||
$e = (($e==null)?$event:$e);
|
||||
$e['id']=$event['id'];
|
||||
$ret .= "<tr><td>".$e['Datum']."</td><td><a href=\"/pages/desktop/wkParticipo/showWkEvent.php?eventId=".$e['id']."\" >".$e['Veranstaltung']."</a></td></tr>";
|
||||
}
|
||||
$ret .= "</table><a>";
|
||||
return $ret;
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
@@ -28,16 +112,7 @@ setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<!-- MaterializeCss Ressources -->
|
||||
<!-- - Compiled and minified CSS -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@materializecss/materialize@1.1.0-alpha/dist/css/materialize.min.css">
|
||||
<!-- - Compiled and minified JavaScript -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/@materializecss/materialize@1.1.0-alpha/dist/js/materialize.min.js"></script>
|
||||
<!-- - Import Google Icon Font-->
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
|
||||
|
||||
<!-- participo specific style adjustments -->
|
||||
<link rel="stylesheet" href="css/participo.css">
|
||||
<?php readfile("./shared/imports.php");?>
|
||||
|
||||
<!-- inits for the materializeCss -->
|
||||
<script>
|
||||
@@ -49,6 +124,8 @@ setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>h1{ font-size: 2.00rem;}h2{ font-size: 1.50rem;}h3{ font-size: 1.25rem;}h3{ font-size: 1.20rem;}h3{ font-size: 1.15rem;}h6{ font-size: 1.10rem;}</style>
|
||||
|
||||
<title>participo</title>
|
||||
<meta name="description" content="Online-Apps der Judoka des Chemnitzer WSV">
|
||||
|
||||
@@ -57,23 +134,31 @@ setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<header>
|
||||
<nav class="indigo darken-4">cwsvJudo Apps<a class="right top-nav sidenav-trigger waves-effect waves-light hide-on-large-only" href="#" data-target="nav-mobile">
|
||||
<i class="material-icons">menu</i>
|
||||
</a></nav>
|
||||
<nav class="indigo darken-4">
|
||||
<h1 style="display:inline;">cwsvJudo Apps</h1>
|
||||
<a class="right top-nav sidenav-trigger waves-effect waves-light hide-on-large-only" href="#" data-target="nav-mobile">
|
||||
<i class="material-icons">menu</i>
|
||||
</a>
|
||||
</nav>
|
||||
<ul class="sidenav sidenav-fixed sidenav-close" id="nav-mobile">
|
||||
<li class="logo">
|
||||
<a style="height:auto;" class="brand-logo" id="logo-container" href="/participo/">
|
||||
<img style="max-width:100%;height:12vh;" class="responsive-img" src="http://cwsvjudo.bplaced.net/ressourcen/graphiken/logos/cwsvJudoLogoWappen.x256.png" />
|
||||
<img alt="cwsvJudoApps" style="max-width:100%;height:12vh;" class="responsive-img" src="http://cwsvjudo.bplaced.net/ressourcen/graphiken/logos/cwsvJudoLogoWappen.x256.png" />
|
||||
</a>
|
||||
</li>
|
||||
<li><?php require_once("sidenav/loginStatus.php");?></li>
|
||||
<?php require_once("sidenav/loginStatus.php");?><!-- brings its own li -->
|
||||
<li class="bold">
|
||||
<a class="waves-effect waves-teal right-align" href="#AppList">Apps</a>
|
||||
<a class="waves-effect waves-teal right-align" href="#mitmachApps">Mitmachen<i class="material-icons">accessibility</i></a>
|
||||
</li>
|
||||
<li class="bold">
|
||||
<a class="waves-effect waves-teal right-align" href="#Configs">UserInfos</a>
|
||||
<a class="waves-effect waves-teal right-align" href="#infoApps">Informationen<i class="material-icons">info</i></a>
|
||||
</li>
|
||||
<li class="bold">
|
||||
<a class="waves-effect waves-teal right-align" href="#lexiApps">Nachschlagen<i class="material-icons">book</i></a>
|
||||
</li>
|
||||
<li class="bold">
|
||||
<a class="waves-effect waves-teal right-align" href="#configApps">Einstellen<i class="material-icons">manage_accounts</i></a>
|
||||
</li>
|
||||
<?php if( isUserAdmin($dbConnection, $userData['id']) ){?>
|
||||
<li class="bold">
|
||||
@@ -88,9 +173,53 @@ if($_SESSION['login']){
|
||||
?>
|
||||
<main>
|
||||
<!-- List of Mitmach-Apps -->
|
||||
<div class="row" id="AppList">
|
||||
<h2>Zum Mitmachen</h2>
|
||||
<div class="row" id="mitmachApps">
|
||||
<?php
|
||||
echo(
|
||||
AppCard::fromArray([
|
||||
'link' => "/machs",
|
||||
'title' => "<em>M</em>ein <em>Ach</em>ievement <em>S</em>ystem",
|
||||
'description'=> "Ein kleines Achievementsystem für die tägliche Herausforderung",
|
||||
'imgUrl' => "images/mountain-climber.svg",
|
||||
'actions' => [
|
||||
AppCardAction::fromArray(['caption'=>"MAchS", 'link'=>"/machs"]),
|
||||
],
|
||||
])->htmlCode().
|
||||
AppCard::fromArray([
|
||||
'link' => "/pages/desktop/wkParticipo",
|
||||
'title' => "Event-Planer",
|
||||
'description'=> "Organisieren der Teilnahmen (und nicht-Teilnahmen) an Wettkämpfen, Sondertrainingseinheiten, Feiern etc.</p>".getHtmlEventTable(getCommingWkEvents($dbConnection))."<p>",
|
||||
'imgUrl' => "/ressourcen/graphiken/icons/terminKalender.svg",
|
||||
'actions' => [
|
||||
AppCardAction::fromArray(['caption'=>"Planer", 'link'=>"/pages/desktop/wkParticipo"]),
|
||||
],
|
||||
])->htmlCode()
|
||||
)
|
||||
?>
|
||||
</div> <!-- mitmachApps -->
|
||||
|
||||
<h2>Zur Information</h2>
|
||||
<div class="row" id="infoApps">
|
||||
<?php
|
||||
echo(
|
||||
AppCard::fromArray([
|
||||
'link' => "infoZettel",
|
||||
'title' => "Infozettel",
|
||||
'description'=> "Online-Variante der Infozettel und Newsletter",
|
||||
'imgUrl' => "images/info.svg",
|
||||
'actions' => [
|
||||
AppCardAction::fromArray(['caption'=>"Info", 'link'=>"infoZettel"]),
|
||||
],
|
||||
])->htmlCode()
|
||||
);
|
||||
// @todo attendanceApp
|
||||
?>
|
||||
</div> <!-- infoApps -->
|
||||
|
||||
<h2>Zum Nachschlagen</h2>
|
||||
<div class="row" id="lexiApps">
|
||||
<?php
|
||||
echo(
|
||||
AppCard::fromArray([
|
||||
'link' => "kyu",
|
||||
@@ -102,40 +231,22 @@ echo(
|
||||
],
|
||||
])->htmlCode().
|
||||
AppCard::fromArray([
|
||||
'link' => "/machs",
|
||||
'title' => "<strong>M</strong>ein <strong>Ach</strong>ievement <strong>S</strong>ystem",
|
||||
'description'=> "Ein kleines Achievementsystem für die tägliche Herausforderung",
|
||||
'imgUrl' => "images/mountain-climber.svg",
|
||||
'link' => "/JudoWiki",
|
||||
'title' => "JudoWiki",
|
||||
'description'=> "Ein Wiki zum Thema Judo",
|
||||
'imgUrl' => "http://cwsvjudo.bplaced.net/ressourcen/graphiken/icons/wikipediaW.svg",
|
||||
'actions' => [
|
||||
AppCardAction::fromArray(['caption'=>"MAchS", 'link'=>"/machs"]),
|
||||
],
|
||||
])->htmlCode().
|
||||
AppCard::fromArray([
|
||||
'link' => "/pages/desktop/wkParticipo",
|
||||
'title' => "Event-Planer",
|
||||
'description'=> "Organisieren der Teilnahmen (und nicht-Teilnahmen) an Wettkämpfen, Sondertrainingseinheiten, Feiern etc.",
|
||||
'imgUrl' => "/ressourcen/graphiken/icons/terminKalender.svg",
|
||||
'actions' => [
|
||||
AppCardAction::fromArray(['caption'=>"Planer", 'link'=>"/pages/desktop/wkParticipo"]),
|
||||
],
|
||||
])->htmlCode().
|
||||
AppCard::fromArray([
|
||||
'link' => "infoZettel",
|
||||
'title' => "Infozettel",
|
||||
'description'=> "Online-Variante der Infozettel und Newsletter",
|
||||
'imgUrl' => "images/info.svg",
|
||||
'actions' => [
|
||||
AppCardAction::fromArray(['caption'=>"Info", 'link'=>"infoZettel"]),
|
||||
AppCardAction::fromArray(['caption'=>"JudoWiki", 'link'=>"/JudoWiki"]),
|
||||
],
|
||||
])->htmlCode()
|
||||
);
|
||||
// @todo horstWolf
|
||||
?>
|
||||
</div><!-- End of MitmachApps -->
|
||||
|
||||
<div class="divider"></div>
|
||||
</div><!-- lexiApps -->
|
||||
|
||||
<!-- List of ConfigStuff -->
|
||||
<div class="row" id="Configs">
|
||||
<h2>Zum Einstellen</h2>
|
||||
<div class="row" id="configApps">
|
||||
<?php
|
||||
echo(
|
||||
AppCard::fromArray([
|
||||
@@ -148,17 +259,22 @@ echo(
|
||||
],
|
||||
])->htmlCode()
|
||||
);
|
||||
?>
|
||||
</div> <!-- configApps -->
|
||||
<?php
|
||||
// AdminStuff, thats only visible for Admins
|
||||
if( isUserAdmin($dbConnection, $userData['id']) ){
|
||||
echo(
|
||||
"<h2>AdminStuff</h2>".
|
||||
"<div id=\"admiStuff\" class=\"row\">".
|
||||
AppCard::fromArray([
|
||||
'title' =>"lastLogins",
|
||||
'description' => lastLoginTable()
|
||||
])->htmlCode()
|
||||
'description' => "</p>".lastLoginTable()."</p>"
|
||||
])->htmlCode().
|
||||
"</div>"
|
||||
);
|
||||
}
|
||||
?>
|
||||
</div><!-- End of ConfigStuff -->
|
||||
</main>
|
||||
<?php
|
||||
}
|
||||
|
||||
@@ -34,16 +34,6 @@ $years = array_unique($years);
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<?php readfile("./shared/imports.php");?>
|
||||
<!-- MaterializeCss Ressources -->
|
||||
<!-- - Compiled and minified CSS -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@materializecss/materialize@1.1.0-alpha/dist/css/materialize.min.css">
|
||||
<!-- - Compiled and minified JavaScript -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/@materializecss/materialize@1.1.0-alpha/dist/js/materialize.min.js"></script>
|
||||
<!-- - Import Google Icon Font-->
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
|
||||
|
||||
<!-- participo specific style adjustments -->
|
||||
<link rel="stylesheet" href="css/participo.css">
|
||||
<!-- adjustments to parsedowncards (smaller headings) -->
|
||||
<link rel="stylesheet" href="css/parsedownCard.css">
|
||||
|
||||
|
||||
@@ -138,12 +138,8 @@ function ytLightEmbed($item){
|
||||
<meta charset="UTF-8">
|
||||
<title>Gürtelprüfungsordnung</title>
|
||||
|
||||
<!-- Compiled and minified CSS -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@materializecss/materialize@1.1.0-alpha/dist/css/materialize.min.css">
|
||||
<!-- Compiled and minified JavaScript -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/@materializecss/materialize@1.1.0-alpha/dist/js/materialize.min.js"></script>
|
||||
<!--Import Google Icon Font-->
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||
<?php readfile("./shared/imports.php");?>
|
||||
|
||||
<!-- unpkg : use the latest version of Video.js -->
|
||||
<link href="https://unpkg.com/video.js/dist/video-js.min.css" rel="stylesheet">
|
||||
<script src="https://unpkg.com/video.js/dist/video.min.js"></script>
|
||||
|
||||
@@ -78,11 +78,11 @@ class AppCard{
|
||||
return
|
||||
"<div style=\"padding:1%;\" class=\"col s12 m6 ".$extraClass."\">".
|
||||
"<div style=\"margin:1%;\" class=\"card blue-grey darken-1\">".
|
||||
(($this->link!=null)?("<a href=\"".$this->appLink."\">"):(""))."<div class=\"card-content white-text\">".
|
||||
(($this->link!=null)?("<a href=\"".$this->link."\">"):(""))."<div class=\"card-content white-text\">".
|
||||
"<span class=\"card-title\">".$this->title."</span>".
|
||||
(($this->imgUrl!=null)?("<img style=\"display:block;margin-left:auto;margin-right:auto;max-height:10vh;\" class=\"responsive-img\" src=\"".$this->imgUrl."\" />"):("")).
|
||||
(($this->imgUrl!=null)?("<img alt=\"".$this->title."\" style=\"display:block;margin-left:auto;margin-right:auto;max-height:10vh;\" class=\"responsive-img\" src=\"".$this->imgUrl."\" />"):("")).
|
||||
"<p>".$this->description."</p>".
|
||||
"</div>".(($this->link!=null)?("<a>"):("")).
|
||||
"</div>".(($this->link!=null)?("</a>"):("")).
|
||||
"<div class=\"card-action\">".$actionListCode."</div>".
|
||||
"</div>".
|
||||
"</div>";
|
||||
|
||||
64
homepage/participo/lib/planerLib/planer.php
Normal file
64
homepage/participo/lib/planerLib/planer.php
Normal file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
class eventPlaner{
|
||||
static private $db = null;
|
||||
function setDbConnection($db){
|
||||
$this->$db = $db;
|
||||
}
|
||||
}
|
||||
|
||||
class shiai{
|
||||
private $id = null; //< unique id
|
||||
private $date = null; //< date of the shiai
|
||||
private $name = null; //< name of the shiai as string
|
||||
private $ageclasses = null; //< age classes as space separated Uxy in a string
|
||||
private $place = null; //< place of the shiai as string
|
||||
private $announcementUrl = null; //< url to the announcement
|
||||
private $routeUrl = null; //< url to a routing planner
|
||||
private $galleryUrl = null; //< url of the gallery to a gallery of the shiai
|
||||
private $promoImgUrl = null; //< promotional image for the shiai (as url)
|
||||
|
||||
function __construct($id, $date, $name, $ageclasses, $place, $announcementUrl, $routeUrl, $galleryUrl, $promoImgUrl){
|
||||
//! @todo input validation and sanitation
|
||||
$this->$id = (int) $id;
|
||||
$this->$date = DateTime::createFromFormat("Y-m-d", $date);
|
||||
$this->$name = $name;
|
||||
$this->ageclasses = $ageclasses;
|
||||
$this->place = $place;
|
||||
$this->announcementUrl = $announcementUrl;
|
||||
$this->routeUrl = $routeUrl;
|
||||
$this->galleryUrl = $galleryUrl;
|
||||
$this->promoImgUrl = $promoImgUrl;
|
||||
}
|
||||
static public function fromArray($member){
|
||||
$id = $member['lfdeNr'] ?? null;
|
||||
$date = $member['Datum'] ?? null;
|
||||
$name = $member['Veranstaltung'] ?? "<fehlender Name>";
|
||||
$ageclasses = $member['Altersklassen'] ?? null;
|
||||
$place = $member['Ort'] ?? "<fehlender Ort>";
|
||||
$announcementUrl = $member['Ausschreibung'] ?? null;
|
||||
$routeUrl = $member['Routenplaner'] ?? null;
|
||||
$galleryUrl = $member['galleryLink'] ?? null;
|
||||
$promoImgUrl = $member['promoPic'] ?? null;
|
||||
}
|
||||
}
|
||||
class event{
|
||||
private $id = null; //< unique id of the event in the db
|
||||
private $date = null; //< date for the event (@todo ranges?)
|
||||
private $shiaiId = null; //< unique id of the shiai in the db (if appropriate)
|
||||
private $deadline = null; //< until when one can register for the event
|
||||
private $remarks = null; //< remarks to the event (special rules) or a json object for missing data (e.g. non-shiai events)
|
||||
|
||||
private $shiai = null;
|
||||
|
||||
function __construct($id, $date, $shiaiId, $deadline, $remarks){
|
||||
//! @todo InputValidation
|
||||
$this->$id = (int) $id;
|
||||
$this->$date = DateTime::createFromFormat("Y-m-d", $date);
|
||||
$this->shiaiId = (($shiaiId!=null)?((int)$shiaiId):(null));
|
||||
$this->deadline = DateTime::createFromFormat("Y-m-d");
|
||||
$this->remarks = $remarks;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -102,7 +102,7 @@ else{
|
||||
<!-- Materialize: Compiled and minified JavaScript -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
|
||||
|
||||
<title>Login des Achievementsystemes der Judoka des Chemnitzer WSV</title>
|
||||
<title>cwsvJudo Online Apps</title>
|
||||
<meta name="description" content="Loginseite der Online-Apps der Judoka des CWSV">
|
||||
</head>
|
||||
<body class="container">
|
||||
|
||||
13
homepage/participo/machs.php
Normal file
13
homepage/participo/machs.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
// workaround file: this should be the new location of the achievement system! Since i used incorrect links in a newsLetter for now it redirects to the login page.
|
||||
session_start();
|
||||
// Falls der serverseitige Logincookie nicht gesetzt ist,
|
||||
// leite zur loginSeite weiter
|
||||
if (empty($_SESSION['login'])) {
|
||||
header('Location: login', TRUE, 301);
|
||||
exit;
|
||||
} else {
|
||||
header('Location: /participo/', TRUE, 301);
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
@@ -1,8 +1,10 @@
|
||||
<!-- Compiled and minified CSS -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@materializecss/materialize@1.1.0-alpha/dist/css/materialize.min.css">
|
||||
<!-- MaterializeCss -->
|
||||
<!-- - Compiled and minified CSS -->
|
||||
<link rel="stylesheet" href="/ressourcen/materializeCss/css/materialize.min.css">
|
||||
<!-- Compiled and minified JavaScript -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/@materializecss/materialize@1.1.0-alpha/dist/js/materialize.min.js"></script>
|
||||
<script src="/ressourcen/materializeCss/js/materialize.min.js"></script>
|
||||
<!--Import Google Icon Font-->
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
|
||||
|
||||
<!-- participo specific style adjustments -->
|
||||
<link rel="stylesheet" href="css/participo.css">
|
||||
|
||||
@@ -32,9 +32,7 @@ setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<?php
|
||||
readfile("./shared/imports.php");
|
||||
?>
|
||||
<?php readfile("./shared/imports.php");?>
|
||||
<!-- inits for the materializeCss -->
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
} </style>
|
||||
<div class="navBar">
|
||||
<a class="touchLink" href=".">
|
||||
<div>zurück zum Wettkampfplaner</div>
|
||||
<div>zur&ck zum Wettkampfplaner</div>
|
||||
</a>
|
||||
</div>
|
||||
<?php
|
||||
|
||||
3724
staerkemeldung/2022/Stärkemeldung-Judo-CWSV.pdf
Normal file
3724
staerkemeldung/2022/Stärkemeldung-Judo-CWSV.pdf
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user