diff --git a/homepage/participo/events.php b/homepage/participo/events.php index 5a40f56..7dd99c8 100644 --- a/homepage/participo/events.php +++ b/homepage/participo/events.php @@ -38,10 +38,10 @@ require_once 'events.inc.php'; -

Detailansicht kommender Wettkämpfe

+ diff --git a/homepage/participo/events.sidenav.inc.php b/homepage/participo/events.sidenav.inc.php index ab7c65f..d5a5fa7 100644 --- a/homepage/participo/events.sidenav.inc.php +++ b/homepage/participo/events.sidenav.inc.php @@ -30,20 +30,19 @@
  • - zurückhome + zurückhome
  • - Liste anstehender StartsStartsformat_list_bulleted
  • - Liste anstehender EventsEventsview_list
  • -
  • + \ No newline at end of file diff --git a/homepage/participo/lib/participoLib/dbConnector.php b/homepage/participo/lib/participoLib/dbConnector.php index 63bfe9c..f0ea0f0 100644 --- a/homepage/participo/lib/participoLib/dbConnector.php +++ b/homepage/participo/lib/participoLib/dbConnector.php @@ -38,7 +38,7 @@ class dbConnector if (empty($someOptions['dontFetch'])) { $someOptions['dontFetch'] = false; } - + $ignoreErrors = $someOptions['ignoreErrors'] ?? false; /// @toDo: Bisher wird nur die Rückgabe konvertiert. Eigentlich muss diff --git a/homepage/participo/lib/participoLib/event.php b/homepage/participo/lib/participoLib/event.php index 88417e6..5906ddc 100644 --- a/homepage/participo/lib/participoLib/event.php +++ b/homepage/participo/lib/participoLib/event.php @@ -122,7 +122,7 @@ class Event '
    Einschreibefrist
    ' . '
    ' . $this->deadline->format('Y-m-d') . '
    ' . '
    Altersklassen
    ' . - '
    ' . $this->shiai->getAgeClasses() . '
    ' . + '
    ' . $this->shiai()->getHtmlDescriptiveAgeClasses() . '
    ' . '' . '' . ''; @@ -135,7 +135,7 @@ class Event '' . '' . $this->date->format('Y-m-d') . '' . '' . $shiai->getHtmlName() . '' . - '' . $shiai->getAgeClasses() . '' . + '' . $shiai->getHtmlDescriptiveAgeClasses() . '' . 'zoom_in' . ''; } @@ -148,7 +148,6 @@ class Event . $this->shiai->getHtml() . $this->getHtmlStarterStatistic() . $this->getHtmlStarterList(); - $kids = participo::getKids(); $modal .= '
    '; $modal .= '
    Deadline zum Eintragen: ' . $this->deadline->format('Y-m-d') . '
    '; @@ -157,9 +156,17 @@ class Event (isset($this->deadline) && ($today <= $this->deadline)) || participo::isUserAdmin($userData['id']) ) { + $kids = participo::getKids(); foreach ($kids as $k) { $modal .= $this->getHtmlAddStarterForm($k, ['returnToUrl' => '/participo/events#' . $this->id]); } + + // foreach ($this->shiai()->ageGroups() as $ageClass => $starterList) { + // // $modal .= '

    ' . $ageClass ?? 'keiner Altersklasse zugeordnet' . '

    '; + // foreach ($starterList as $starter) { + // $modal .= $this->getHtmlAddStarterForm($k, ['returnToUrl' => '/participo/events#' . $this->id]); + // } + // } } else { $modal .= '
    Es ist leider zu spät noch jemanden einzutragen!
    '; } @@ -175,6 +182,7 @@ class Event echo($modal); } + /** Get the list of starters as html list */ public function getHtmlStarterList() { $listOfStarter = $this->getStarter(); diff --git a/homepage/participo/lib/participoLib/participo.php b/homepage/participo/lib/participoLib/participo.php index ec7a656..cc2241c 100644 --- a/homepage/participo/lib/participoLib/participo.php +++ b/homepage/participo/lib/participoLib/participo.php @@ -10,7 +10,39 @@ class participo { private static $db = null; private static $message = ['error' => null, 'success' => null, 'notice' => null]; + + /** id of session user + * + * Session user describes the currently logged in user + * + * @var int>0 + */ private static $userId = null; + private static $sessionUser = null; + + /** get session users id + * + * if not set so far it is loaded from the session cookies + * + * @return int id of session user + */ + public static function getSessionUserId() + { + if (!isset(self::$userId)) { + self::$userId = $_SESSION['user']['userId'] ?? null; + } + self::$userId = filterId(self::$userId); + return self::$userId; + } + + /** lazy loading of the session user */ + public static function sessionUser(bool $forceLoading = true) + { + if (is_null($sessionUser) || $forceLoading) { + self::$sessionUser = User::loadFromDb(self::getSessionUserId()); + } + return self::$sessionUser; + } /** Returns the current login status * @@ -23,15 +55,6 @@ class participo return (isset($_SESSION) && array_key_exists('login', $_SESSION) && $_SESSION['login'] == true); } - public static function getSessionUserId() - { - $userId = null; - if (isset($_SESSION) && array_key_exists('user', $_SESSION) && array_key_exists('userId', $_SESSION['user'])) { - $userId = $_SESSION['user']['userId']; - } - return $userId; - } - /** Remove all login data from the session data * * @return void @@ -175,6 +198,11 @@ class participo return self::hasUserAttribute($userId, 'isAdmin'); } + public static function getUserId() + { + } + + /** get current logged in users kids */ public static function getKids($userId = null) { $userId = $userId ?? $_SESSION['user']['userId'] ?? null; @@ -412,10 +440,10 @@ function lastLoginTable($jsonFileName = 'lastLogins.json') ''; foreach ($lastLoginRows as $userName => $lastLogin) { $lastLoginsTable .= - '' . $userName . '' . $lastLogin . ''; + '' . $userName . '' . $lastLogin . ''; } $lastLoginsTable .= - ''. + '' . ''; return $lastLoginsTable; } @@ -568,6 +596,19 @@ function getHtmlSquareDate($date = null) . '
    '; } +/** filter_var for a pos int + * + * check for int; null is default; only values > 0 are excepted + * + * @param [type] $id + * @retval int>0 filtered id + * @retval null sth. went wrong + * */ +function filterPosInt($id) +{ + return filter_var($id, FILTER_VALIDATE_INT, ['options' => ['default' => null, 'min_range' => 1]]); +} + /** filter_var for a (db)id * * check for valid id; null is default; only values > 0 are excepted @@ -578,11 +619,11 @@ function getHtmlSquareDate($date = null) */ function filterId($id) { - return filter_var($id, FILTER_VALIDATE_INT, ['options' => ['default' => null, 'min_range' => 1]]); + return filterPosInt($id); } /** filter a variable as count - * + * * - count means a non negative integer * - helper function to stay DRY * @@ -590,7 +631,7 @@ function filterId($id) * @param integer $min * @return integer the input variable as integer >= 0 */ -function filterCount($variable, int $min = 0){ +function filterCount($variable, int $min = 0) +{ return filter_var($variable, FILTER_VALIDATE_INT, ['options' => ['default' => null, 'min_range' => 1]]); } - diff --git a/homepage/participo/lib/participoLib/shiai.php b/homepage/participo/lib/participoLib/shiai.php index bf685df..84b3e36 100644 --- a/homepage/participo/lib/participoLib/shiai.php +++ b/homepage/participo/lib/participoLib/shiai.php @@ -21,7 +21,7 @@ class Shiai $this->id = (int) $id; $this->date = DateTime::createFromFormat('Y-m-d', $date); $this->name = $name; - $this->ageclasses = $ageclasses; + $this->ageclasses = $ageclasses ? self::akListString2jgArray($ageclasses) : null; $this->place = $place; $this->announcementUrl = $announcementUrl; $this->routeUrl = $routeUrl; @@ -98,12 +98,151 @@ class Shiai $retHtml = '
    ' . '

    ' . $this->getHtmlName() . '

    ' . - '
    '. - '
    Datum:
    ' . $this->getHtmlDate() . '
    ' . - '
    Altersklassen
    ' . $this->getAgeClasses() . '
    ' . + '
    ' . + '
    Datum
    ' . $this->getHtmlDate() . '
    ' . + '
    Altersklassen
    ' . $this->getHtmlDescriptiveAgeClasses() . '
    ' . '
    Ort
    ' . $this->getPlace() . '
    ' . '
    ' . '
    '; return $retHtml; } + + public function getHtmlDescriptiveAgeClasses() + { + $retList = []; + foreach ($this->ageclasses as $ageclass => $years) { + $htmlFragment = $ageclass; + $years = $years[0]; + + if ($years[0] || $years[1]) { + $htmlFragment .= '('; + if ($years[1]) { + $htmlFragment .= strval($years[0]) . '-' . strval($years[1]); + } else { + $htmlFragment .= '<=' . strval($years[0]); + } + $htmlFragment .= ')'; + } + $retList[] = $htmlFragment; + } + return implode(', ', $retList); + } + +/** convert a list of age class formatted strings into a list of intervals of years + * + * @param string $akListString + * @param int $year + * @return list[array(int,int)] list of tupels with lower/upper bound in date year of the age classes + */ +private static function akListString2jgArray(string $akListString, int $year = null) +{ + $year = filterPosInt($year) ?? filterPosInt((new DateTime)->format('Y')); + $ret = []; + foreach (explode(' ', $akListString) as $ak) { + $ret[$ak] = self::akString2jgIntervall($ak, $year); + } + return $ret; +} + +/** convert age class from formatted string to interval of years + * + * @param [string] $akString + * @param [type] $year + * @return array(int,int) [x,y] with x the lower bound and y the upper bound of the age class in years. Both bounds are still included in the interval. + */ +private static function akString2jgIntervall(string $akString, int $year /*= null*/) +{ + // input sanitation + $year = filterPosInt($year) ?? filterPosInt((new DateTime)->format('Y')); + + $ret = [null, null]; + + // Matching against the different age class formats + // - ..Ux + // - Jg.x-y + + // Case Ux + $akUmatchString = '/(.*)U(.*)/'; + + $matches = []; + + preg_match($akUmatchString, $akString, $matches); + // The found match should cover the whole string. Otherwise it isn't applicable. + if ($matches[0] == $akString) { + // The x in Ux should be a positive integer. + $ageLimit = filterPosInt($matches[2]); + if ($ageLimit) { + $ret[0] = $year - $ageLimit + 1; + // lowering the lower bound according to the modifiers + if ($matches[1] == '') { + $ret[1] = $year - $ageLimit + 2; + } elseif ($matches[1] == '-') { + $ret[1] = $year - $ageLimit + 3; + } elseif ($matches[1] == '--') { + $ret[1] = $year - $ageLimit + 4; + } elseif (in_array($matches[1], ['<=', '≤', '≤', '≤', '≤'])) { + $ret[1] = $year; + } + return $ret; + } + } + + // Case Jg.x-y + $akUmatchString = "/Jg\.(.*)\-(.*)/"; + + $matches = []; + + preg_match($akUmatchString, $akString, $matches); + // The found match should cover the whole string. Otherwise it isn't applicable. + + if ($matches[0] == $akString) { + $ret[0] = filterPosInt($matches[1]); + $ret[1] = filterPosInt($matches[2]); + + return $ret; + } + + return $ret; +} + +/** grouping users kids by ageGroups + * + * @return array(ageGroup => list(users in ageGroup)) + */ +public function ageGroups() +{ + $kids = participo::getKids(); + return self::ageClassGrouping($this->ageclasses, $kids); +} + +/** grouping users by given age class + * + * @param array $ageClassList as array string representation of age class => [lower year bound, upper year bound] + * @param array $starterList list of starter (User) + * @return array of string representation of age class => array of user in this class + */ +private static function ageClassGrouping(array $ageClassList, array $starterList) +{ + $grouping = []; + foreach ($ageClassList as $ageClass => $yearBoundaries) { + $grouping[$ageClass] = []; + } + $grouping[null] = []; + + foreach ($starterList as $starter) { + $startersAgeClass = $starter->yearOfBirth() ? self::getAgeClassFromYear($starter->yearOfBirth(), $ageClassList) : null; + array_push($grouping[$startersAgeClass], $starter); + } + return $grouping; +} + +private static function getAgeClassFromYear(int $year, array $ageClassList) +{ + foreach ($ageClassList as $ageClass => $yearBoundaries) { + if (($yearBoundaries[0] <= $year) && ($year <= $yearBoundaries[1])) { + return $ageClass; + } + } + return null; +} } // end class shiai diff --git a/homepage/participo/lib/participoLib/user.php b/homepage/participo/lib/participoLib/user.php index cf8cc9b..e736c40 100644 --- a/homepage/participo/lib/participoLib/user.php +++ b/homepage/participo/lib/participoLib/user.php @@ -10,51 +10,66 @@ class User * @todo Document parameter * @todo Input sanitation */ - public function __construct($id, $loginName, $name, $firstName, $dateOfBirth=null, $eMail=null, $config=null, $pwHash=null) + public function __construct($id, $loginName, $name, $firstName, $dateOfBirth = null, $eMail = null, $config = null, $pwHash = null) { $this->id = filterId($id); $this->loginName = $loginName; $this->name = $name; $this->firstName = $firstName; $this->dateOfBirth = ($dateOfBirth != null) ? DateTime::createFromFormat('Y-m-d', $dateOfBirth) : null; - $this->eMail = ($eMail!=null) ? filter_var($eMail, FILTER_VALIDATE_EMAIL,['options'=>['default'=>null]]):null; + $this->eMail = ($eMail != null) ? filter_var($eMail, FILTER_VALIDATE_EMAIL, ['options' => ['default' => null]]) : null; $this->config = $config; $this->pwHash = $pwHash; } + /** return users year of birth as int + * + * @retval int>=0 on success, + * @retval null failure + */ + public function yearOfBirth() + { + if (isset($this->dateOfBirth)) { + return filterPosInt($this->dateOfBirth->format('Y')); + } + return null; + } + //// // dbInterface //// - public function addToDb(){ + public function addToDb() + { // if the user has an Id set it has to come from the Db. Hence don't add an User that is already added. - if(isset($this->id) || !participo::isUserAdmin()){ + if (isset($this->id) || !participo::isUserAdmin()) { return; } $this->id = self::dbInsert( - $this->loginName - , $this->name - , $this->firstName - , (isset($this->dateOfBirth))?($this->dateOfBirth->format('Y-m-d')):null - , $this->eMail - , $this->config - , $this->pwHash + $this->loginName, + $this->name, + $this->firstName, + (isset($this->dateOfBirth)) ? ($this->dateOfBirth->format('Y-m-d')) : null, + $this->eMail, + $this->config, + $this->pwHash ); return $this->id; } - private static function dbInsert($loginName, $name, $firstName, $dateOfBirth=null, $eMail=null, $config=null, $pwHash=null){ - $query = 'INSERT INTO `'.self::$tableName.'` ' - .'(loginName, name, vorname, gebDatum, eMail, config, pwHash) ' - .' VALUES (:loginName, :name, :vorname, :gebDatum, :eMail, :config, :pwHash);'; + private static function dbInsert($loginName, $name, $firstName, $dateOfBirth = null, $eMail = null, $config = null, $pwHash = null) + { + $query = 'INSERT INTO `' . self::$tableName . '` ' + . '(loginName, name, vorname, gebDatum, eMail, config, pwHash) ' + . ' VALUES (:loginName, :name, :vorname, :gebDatum, :eMail, :config, :pwHash);'; $params = [ - ':loginName'=>['value'=>$loginName, 'data_type' => self::$dbColumns['loginName']], - ':name'=>['value'=>$name, 'data_type' => self::$dbColumns['name']], - ':vorname'=>['value'=>$firstName, 'data_type' => self::$dbColumns['vorname']], - ':gebDatum'=>['value'=>$dateOfBirth, 'data_type' => self::$dbColumns['gebDatum']], - ':eMail'=>['value'=>$eMail, 'data_type' => self::$dbColumns['eMail']], - ':config'=>['value'=>$config, 'data_type' => self::$dbColumns['config']], - ':pwHash'=>['value'=>$pwHash, 'data_type' => self::$dbColumns['pwHash']], + ':loginName' => ['value' => $loginName, 'data_type' => self::$dbColumns['loginName']], + ':name' => ['value' => $name, 'data_type' => self::$dbColumns['name']], + ':vorname' => ['value' => $firstName, 'data_type' => self::$dbColumns['vorname']], + ':gebDatum' => ['value' => $dateOfBirth, 'data_type' => self::$dbColumns['gebDatum']], + ':eMail' => ['value' => $eMail, 'data_type' => self::$dbColumns['eMail']], + ':config' => ['value' => $config, 'data_type' => self::$dbColumns['config']], + ':pwHash' => ['value' => $pwHash, 'data_type' => self::$dbColumns['pwHash']], ]; $response = dbConnector::query($query, $params); return dbConnector::getLastInsertId(); @@ -81,7 +96,6 @@ class User 'pwHash' => PDO::PARAM_STR ]; - //// // html interface //// @@ -89,26 +103,26 @@ class User public static function getHtmlFormAddUser($options = []) { $returnToUrl = $options['returnToUrl'] ?? urlencode(getCurPagesUrl()); - $formClass = isset($options['formClass']) ? 'class="'.$options['formClass'].'"' : ''; + $formClass = isset($options['formClass']) ? 'class="' . $options['formClass'] . '"' : ''; $form = '
    ' . '' - .'
    ' - .'
    ' - .'
    ' - .'
    ' - .'
    ' + . '
    ' + . '
    ' + . '
    ' + . '
    ' + . '
    ' . '' . '
    '; return $form; } - public static function htmlFormAddUser($options = []){ + public static function htmlFormAddUser($options = []) + { echo(self::getHtmlFormAddUser($options)); } - // member variables private $id; private $loginName; @@ -119,6 +133,49 @@ class User private $config; private $pwHash; + // database member data + /** List of ids of the users kids */ + private $kidIds = null; + /** List of users kids */ + private $kids = null; + + public function kidIds(bool $forceLoading = false) + { + if (is_null($this->kidIds) || $forceLoading) { + $this->kidIds = self::getKidIds($id); + } + return self::$kidIds; + } + + public function kids(bool $forceLoading = false) + { + if (is_null($this->kids) || $forceLoading) { + $this->kids = participo::getKids($this->id); + } + return $this->kids; + } + + private static function getKidIds(int $id) + { + $response = dbConnector::query( + 'SELECT * FROM `wkParticipo_Users` WHERE `' . $name . '` = :' . $name, + [$name => ['value' => $value, 'data_type' => self::$dbColumns[$name]]] + ); + + $query = << ['value' => $userId, 'data_type' => PDO::PARAM_INT] + ]; + $response = dbConnector::query($query, $params); + return $response; + } + /** Export the User data into an associative array * * @return array associative array representing the user @@ -192,7 +249,9 @@ class User } return new User( - $member[$columnMappings['id']] ?? null, + $member[ + $columnMappings['id'] + ] ?? null, $member[$columnMappings['loginName']] ?? null, $member[$columnMappings['name']] ?? null, $member[$columnMappings['vorname']] ?? null, @@ -244,7 +303,6 @@ class User if (count($response) != 1) { return null; } - return User::fromDbArray($response[0]); } } diff --git a/homepage/participo/user.php b/homepage/participo/user.php index 78e212f..2d260cf 100644 --- a/homepage/participo/user.php +++ b/homepage/participo/user.php @@ -1,88 +1,92 @@ - - - - - - + }); + - User-Config - + User-Config + - - - + + + - + -
    -
    - -
    -

    Benutzer-Einstellungen

    -

    - +

    Benutzer-Einstellungen

    +

    + Password geändert'); @@ -90,122 +94,53 @@ if ($_SESSION['login']) { echo('

    Fehler während des Setzens des Passwortes.
    '); } } ?> -

    -

    Benutzer-Info

    -

    Informationen zum eigenen Benutzerkonto

    -
    +

    +

    Benutzer-Info

    +

    Informationen zum eigenen Benutzerkonto

    +
    -
    -
    -
    - , - -
    -
    Name
    -
    Vorname
    -
    Email
    -
    -
    -
    -
    - +
    +
    +
    + , + + +
    +
    Name
    +
    +
    +
    Vorname
    +
    +
    +
    Email
    +
    +
    +
    - -
    -
    -
    - Passwort setzen - Im folgenden Formular kann das Passwort geändert werden. Man sollte darauf achten, dass man beim Umgang mit Passwörtern die nötige Vorsicht walten lässt. -
    - - - - -
    - Neues Passwort vergeben -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -

    Berechtigungen

    - -

    Liste der User, für die man meldeberechtigt ist (bzw. Änderungen vornehmen darf). In der Regel ist das das eigene Kind (bei Eltern) oder man selber (bei Volljährigen).

    -
    - -
    -
    -
    - , - -
    -
    Name
    -
    Vorname
    -
    Geb.datum
    -
    -
    - - Passwort -

    Im folgenden Formular kann das Passwort des Kindes gesetzt werden. Damit kann das Kind sich auch in das System einloggen - um z.B. die Wissens-Apps zu benutzen - kann sich aber nicht bei Wettkämpfen anmelden. Das eigene Passwort muss dabei noch einmal zur Kontrolle eingegeben werden. Das neue Passwort muss zweimal blind eingegeben.

    -

    -Derzeit ist kein Passwort gesetzt!

    '); - } else { - echo('

    Es ist derzeit ein Passwort gesetzt!

    '); ?> -

    Es besteht auch die Möglickeit, das Passwort ganz zu entfernen. Man kann sich dann nicht mehr mit diesem Konto einloggen. Das eigene Passwort muss dabei noch einmal zur Kontrolle eingegeben werden.

    +
    +
    +
    + Passwort setzen + Im folgenden Formular kann das Passwort geändert werden. Man sollte darauf achten, dass man beim + Umgang + mit Passwörtern die nötige Vorsicht walten lässt.
    - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    - -

    -
    - - - - + +
    Neues Passwort vergeben
    @@ -213,7 +148,7 @@ if ($_SESSION['login']) {
    - +
    @@ -225,19 +160,120 @@ if ($_SESSION['login']) {
    - -
    - -
    - + +
    +
    +
    + +

    Berechtigungen

    + +

    Liste der User, für die man meldeberechtigt ist (bzw. Änderungen vornehmen darf). In der Regel ist das das + eigene Kind (bei Eltern) oder man selber (bei Volljährigen).

    +
    + +
    +
    +
    + , + + +
    +
    Name
    +
    +
    +
    Vorname
    +
    +
    +
    Geb.datum
    +
    +
    +
    +
    + + Passwort +

    Im folgenden Formular kann das Passwort des Kindes gesetzt werden. Damit kann das Kind sich auch + in das System einloggen - um z.B. die Wissens-Apps zu benutzen - kann sich aber nicht bei + Wettkämpfen anmelden. Das eigene Passwort muss dabei noch einmal zur Kontrolle eingegeben + werden. Das neue Passwort muss zweimal blind eingegeben.

    +

    + Derzeit ist kein Passwort gesetzt!

    '); + } else { + echo('

    Es ist derzeit ein Passwort gesetzt!

    '); ?> +

    Es besteht auch die Möglickeit, das Passwort ganz zu entfernen. Man kann sich dann nicht mehr mit + diesem Konto einloggen. Das eigene Passwort muss dabei noch einmal zur Kontrolle eingegeben + werden.

    +
    + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    + +

    +
    + + + + +
    + Neues Passwort vergeben +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    + -
    - + - - + + + \ No newline at end of file diff --git a/infoZettelOrg/.gitignore b/infoZettelOrg/.gitignore index 01d1dce..d5a9aed 100644 --- a/infoZettelOrg/.gitignore +++ b/infoZettelOrg/.gitignore @@ -1,4 +1,6 @@ uploadTouch/* config.yaml +*.pdf + Makefile.private diff --git a/infoZettelOrg/2023-07-06-Sommerferien.md b/infoZettelOrg/2023-07-06-Sommerferien.md new file mode 100644 index 0000000..131f9ff --- /dev/null +++ b/infoZettelOrg/2023-07-06-Sommerferien.md @@ -0,0 +1,28 @@ +--- +title: cwsvJudo - Newsletter KW 27 +--- + +# Sommerferien und Co. + +## Training am 12.07. und 14.07. + +Die Trainings nächste Woche (12.07. und 14.07.) werden im Freien stattfinden, da das Dojo anderweitig belegt sein wird. + +## Sportabzeichentraining am 09.07. + +Wegen des Sommercamps wird das Sportabzeichentraining diesen Sonntag (09.07.) leider ausfallen. + + +## Sommerferien 2023 (10.07.--18.08.) + +Wie immer kann während der Sommerferien wird weiter trainiert werden: + +- Mittwoch 16:00-17:45 Uhr (alle AK) +- Freitag 16:00-17:30 Uhr (Kinder/Jugend) +- Freitag 17:00-19:15 Uhr (Jugend/EW) + +Das Training wird (abhänging wom Wetter) nach draußen verlegt. Also die Trainingskleidung entsprechend anpassen. + +## Little-Otto-Goshi-Liga + +Gleich in der ersten Schulwoche nach den Ferien - am 27.08.23 - findet die für die U9/U11 die dritte Little-Otto-Goshi-Liga 2023 statt! diff --git a/infoZettelOrg/2023-07-18-Sommerlager-Mediasharing.md b/infoZettelOrg/2023-07-18-Sommerlager-Mediasharing.md new file mode 100644 index 0000000..73555ba --- /dev/null +++ b/infoZettelOrg/2023-07-18-Sommerlager-Mediasharing.md @@ -0,0 +1,12 @@ +--- +title: Sommerlager MediaSharing +--- + +Hier die Bilder, die während des Sommerlagers gemacht wurden: + +- Link: https://magentacloud.de/s/kzmadt3W5eagf7T +- Passwort: 9KaezjK8 + +Das Wurzelverzeichnis enthält eine nachbearbeitete Auswahl für die schnelle Diashow. Unter `original-images` finden sich die Originale. + +MsG marko \ No newline at end of file diff --git a/infoZettelOrg/2023-07-29-Newsletter-Kw30.md b/infoZettelOrg/2023-07-29-Newsletter-Kw30.md new file mode 100644 index 0000000..c2b13e3 --- /dev/null +++ b/infoZettelOrg/2023-07-29-Newsletter-Kw30.md @@ -0,0 +1,30 @@ +--- +title: cwsvJudo - Newsletter KW 30 +--- + +# Newsletter KW 30 + +## T-Shirts + +Nach langer Zeit soll es dieses Jahr mal wieder gemeinsame Vereins-T-Shirts geben. Deshalb die Bitte an alle Judoka, mir bis Ende nächster Woche ihre T-Shirt Größen mitzuteilen. Und zwar sowohl als Körpergröße (z.b 128 (cm)) *und* als S/M/L/X. + +## Wettkämpfe + +Nach den Ferien ist bekanntlich vor den Wettkämpfen! Gleich nach den Sommerferien geht es mit den Wettkämpfen weiter: + +- 2023-08-27 [The Little-Otto-Goshi-Liga 2023][wk185] (<=U9, U11) + - Meldung mit Gewicht! Kann ich im Dojo nehmen. Wer allerdings in den Ferien voraussichtlich nicht noch einmal kommt, meldet es mir bis 11.07. +- 2023-09-02 [3. Auto Gyra Kids Cup][wk195] (U11, U13, ab weiß-gelb) +- 2023-09-24 [8. Internationaler AT-Cup Leipzig U13][wk196] (U13) +- 2023-10-23 [21. Herbstkrümel­randori][wk197] (Jg.2013--2017) + +Achtung: Da es in letzter Zeit mehrfach vorgekommen ist, dass wir aufgrund zu hoher Teilnehmerzahlen nicht zu den Wettkämpfen anreisen konnten/durften, werde ich unseren vereinsinternen Meldetermin auf eine Woche vor dem eigentlichen Meldeschluss legen. Bitte mit beachten und rechtzeitig im Planer einschreiben. + +Die obigen Links sollten direkt zu den Terminen in unserem Wettkampfkalender führen. *Sie sind personalisiert und eine Woche lang gültig. Sei sollten nicht weiter geteilt werden.* + + + +[wk185]: http://cwsvjudo.bplaced.net/participo/events#185 +[wk195]: http://cwsvjudo.bplaced.net/participo/events#195 +[wk196]: http://cwsvjudo.bplaced.net/participo/events#196 +[wk197]: http://cwsvjudo.bplaced.net/participo/events#197 diff --git a/infoZettelOrg/eMailReceiverLists/ljs.json b/infoZettelOrg/eMailReceiverLists/ljs.json new file mode 100644 index 0000000..103ef8d --- /dev/null +++ b/infoZettelOrg/eMailReceiverLists/ljs.json @@ -0,0 +1,30 @@ +[ + { + "id": "1", + "loginName": "marko", + "eMail": [ + "cwsvjudo@arcor.de" + ] + }, + { + "id": "20", + "loginName": "elternBrittnacher", + "eMail": [ + "stephanie.brittnacher@gmail.com" + ] + }, + { + "id": "59", + "loginName": "fuchshund", + "eMail": [ + "thomas@blankfuchs.de" + ] + }, + { + "id": "94", + "loginName": "elternBritvin", + "eMail": [ + "luidmyla60@gmail.com" + ] + } +] \ No newline at end of file diff --git a/infoZettelOrg/eMailReceiverLists/sommerlager.json b/infoZettelOrg/eMailReceiverLists/sommerlager.json new file mode 100644 index 0000000..94407cf --- /dev/null +++ b/infoZettelOrg/eMailReceiverLists/sommerlager.json @@ -0,0 +1,39 @@ +[ + { + "id": "1", + "loginName": "marko", + "eMail": [ + "cwsvjudo@arcor.de", + "marko.bunzel@arcor.de", + "cwsvjudo@gmail.com" + ] + }, + { + "id": "20", + "loginName": "elternBrittnacher", + "eMail": [ + "stephanie.brittnacher@gmail.com" + ] + }, + { + "id": "59", + "loginName": "fuchshund", + "eMail": [ + "thomas@blankfuchs.de" + ] + }, + { + "id": "85", + "loginName": "elternGerlach", + "eMail": [ + "manja.bunzel@gmx.de" + ] + }, + { + "id": "101", + "loginName": "elternKraft", + "eMail": [ + "a-kraft-@gmx.net" + ] + } +] \ No newline at end of file diff --git a/infoZettelOrg/eMailReceiverLists/stiefel.json b/infoZettelOrg/eMailReceiverLists/stiefel.json new file mode 100644 index 0000000..103ef8d --- /dev/null +++ b/infoZettelOrg/eMailReceiverLists/stiefel.json @@ -0,0 +1,30 @@ +[ + { + "id": "1", + "loginName": "marko", + "eMail": [ + "cwsvjudo@arcor.de" + ] + }, + { + "id": "20", + "loginName": "elternBrittnacher", + "eMail": [ + "stephanie.brittnacher@gmail.com" + ] + }, + { + "id": "59", + "loginName": "fuchshund", + "eMail": [ + "thomas@blankfuchs.de" + ] + }, + { + "id": "94", + "loginName": "elternBritvin", + "eMail": [ + "luidmyla60@gmail.com" + ] + } +] \ No newline at end of file diff --git a/infoZettelOrg/eMailReceiverLists/wkParticipo_Users.json b/infoZettelOrg/eMailReceiverLists/wkParticipo_Users.json index 4c73f93..2525435 100644 --- a/infoZettelOrg/eMailReceiverLists/wkParticipo_Users.json +++ b/infoZettelOrg/eMailReceiverLists/wkParticipo_Users.json @@ -29,13 +29,6 @@ "stephanie.brittnacher@gmail.com" ] }, - { - "id": "50", - "loginName": "elternCuric", - "eMail": [ - "churicnate@yahoo.com" - ] - }, { "id": "59", "loginName": "fuchshund", @@ -120,5 +113,19 @@ "eMail": [ "jortmans@gmx.de" ] + }, + { + "id": "113", + "loginName": "ElternEberlein", + "eMail": [ + "jana.eberlein@yahoo.de" + ] + }, + { + "id": "115", + "loginName": "elternKutschmann", + "eMail": [ + "uwe.schwerdtfeger@uni-dortmund.de" + ] } ] \ No newline at end of file diff --git a/infoZettelOrg/wkZettel/2023-05-14-OGL2023-2-MediaSharing.md b/infoZettelOrg/wkZettel/2023-05-14-OGL2023-2-MediaSharing.md new file mode 100644 index 0000000..b6a82b6 --- /dev/null +++ b/infoZettelOrg/wkZettel/2023-05-14-OGL2023-2-MediaSharing.md @@ -0,0 +1,14 @@ +--- +title: OGL MediaSharing +--- + +Hier der Link zu den Bildern/Videos von der zweiten Otto-Goshi-Liga 2023 zum Sammeln und Tauschen: + +- Link: https://magentacloud.de/s/6cjriA8tZNELDZy +- Passwort: 75Z8RZLP + + +Danke noch mal an alle Kameraleute für ihren Einsatz. + + +MsG marko \ No newline at end of file diff --git a/infoZettelOrg/wkZettel/2023-06-17-Stiefelpokal-Mediasharing.md b/infoZettelOrg/wkZettel/2023-06-17-Stiefelpokal-Mediasharing.md new file mode 100644 index 0000000..2d029c0 --- /dev/null +++ b/infoZettelOrg/wkZettel/2023-06-17-Stiefelpokal-Mediasharing.md @@ -0,0 +1,13 @@ +--- +title: Stiefelpokal MediaSharing +--- + +Hier der Link zu den Videos der Kämpfe des Stiefelpokales: + +- Link: https://magentacloud.de/s/BNN5dXyHW3X5xtN +- Passwort: YNyBrz7G + + +Mindestens ein Video fehlt mir leider. Wäre schön, wenn das mit hochgeladen werden könnte. + +MsG marko \ No newline at end of file diff --git a/infoZettelOrg/wkZettel/2023-06-17-Stiefelpokal.md b/infoZettelOrg/wkZettel/2023-06-17-Stiefelpokal.md new file mode 100644 index 0000000..e2cb4b2 --- /dev/null +++ b/infoZettelOrg/wkZettel/2023-06-17-Stiefelpokal.md @@ -0,0 +1,38 @@ +--- +title: Stiefelpokal +--- + +# 12. Stiefelpokal der Stadt Döbeln + +## Wettkampfdaten + +- Altersklassen: U11, U13 +- Datum: Samstag, 17.06.2023 +- Ort: Stadtsporthalle Döbeln/Gymnasium, Straße des Friedens 9, Döbeln 04720 Döbeln +- Kontrollwiegen: + - U11: 9:15 Uhr + - U13: 11:45 Uhr + - Um das Gewicht noch korrigieren zu können, wollen wir eine halbe Stunde vor dem Kontrollwiegen in der Halle sein. +- Wettkampferöffnung: ca. + - U11: 10:00 Uhr + - U13: 12:30 Uhr + +## Treffpunkt + +- Ort: Dojo Str. Usti nad Labem 42 +- Abfahrt: 10:15 Uhr + +## Nicht vergessen + +- *Testnachweis aus der Schule und vom Testzentrum* +- Judopass +- Judogi (d. h. Jacke, Hose und Gürtel) +- *Hallenschuhe* (Auch die Fans!) +- Essen/Trinken +- Warme Socken und Pullover + +Das Betreten der Sportstätten in Straßenschuhen ist (auch den Fans) +nicht gestattet. Bitte Ersatzschuhe (Badelatschen/Hallenschuhe) +mitbringen. Sonst muss in Socken gegangen werden! + +MsG marko diff --git a/infoZettelOrg/wkZettel/2023-07-01-LJS-Mediasharing.md b/infoZettelOrg/wkZettel/2023-07-01-LJS-Mediasharing.md new file mode 100644 index 0000000..8ad5c6d --- /dev/null +++ b/infoZettelOrg/wkZettel/2023-07-01-LJS-Mediasharing.md @@ -0,0 +1,12 @@ +--- +title: Landesjugenspiele MediaSharing +--- + +Hier der Link zu den Videos der Kämpfe der Landesjugendspiele: + +- Link: https://magentacloud.de/s/aiP76sBsgRSgbCS +- Passwort: cTNpnx9w + +Wie immer würde ich mich freuen, wenn auch alle anderen ihre gemachten Videos mit hochladen. + +MsG marko \ No newline at end of file diff --git a/infoZettelOrg/wkZettel/2023-07-01-LJS.md b/infoZettelOrg/wkZettel/2023-07-01-LJS.md new file mode 100644 index 0000000..ef46de5 --- /dev/null +++ b/infoZettelOrg/wkZettel/2023-07-01-LJS.md @@ -0,0 +1,36 @@ +--- +title: Landesjugendspiele +--- + +# Landesjugendspiele + +## Wettkampfdaten + +- Altersklassen: U13 +- Datum: Samstag, 01.07.2023 +- Ort: Turnhalle des Gymnasiums Pieschen, Erfurter Str. 17, 01127 Dresden +- Zeitplan: + - PassKontrolle: 9:00-9:20 Uhr + - Erwärmung: 9:30 Uhr + - Wettkampferöffnung: 10:00 Uhr + +## Treffpunkt + +Ich habe diesmal selber ein Auto zur Verfügung in dem alle Kämpfer und ein Zuschauer mitfahren kann (zur Not geht auf die Rückbank auch noch einer). + +- Ort: Dojo Str. Usti nad Labem 42 +- Abfahrt: 7:30 Uhr + +## Nicht vergessen + +- Judopass +- Judogi (d. h. Jacke, Hose und Gürtel) +- *Hallenschuhe* (Auch die Fans!) +- Essen/Trinken +- Warme Socken und Pullover + +Das Betreten der Sportstätten in Straßenschuhen ist (auch den Fans) +nicht gestattet. Bitte Ersatzschuhe (Badelatschen/Hallenschuhe) +mitbringen. Sonst muss in Socken gegangen werden! + +MsG marko diff --git a/org/Aufnahmeantrag Rückseite.pdf b/org/Aufnahmeantrag Rückseite.pdf deleted file mode 100644 index a0b70d9..0000000 Binary files a/org/Aufnahmeantrag Rückseite.pdf and /dev/null differ diff --git a/org/Aufnahmeantrag Vorderseite neu.pdf b/org/Aufnahmeantrag Vorderseite neu.pdf deleted file mode 100644 index 85c6384..0000000 Binary files a/org/Aufnahmeantrag Vorderseite neu.pdf and /dev/null differ diff --git a/org/CWSV-Aufnahmeantrag.pdf b/org/CWSV-Aufnahmeantrag.pdf deleted file mode 100644 index 086bfd1..0000000 Binary files a/org/CWSV-Aufnahmeantrag.pdf and /dev/null differ diff --git a/org/ÜL-Abrechnungsbogen-2015-2-MarkoBunzel.pdf b/org/ÜL-Abrechnungsbogen-2015-2-MarkoBunzel.pdf deleted file mode 100755 index a4d98e5..0000000 Binary files a/org/ÜL-Abrechnungsbogen-2015-2-MarkoBunzel.pdf and /dev/null differ diff --git a/org/ÜL-Abrechnungsbogen-2016-2-MarkoBunzel.pdf b/org/ÜL-Abrechnungsbogen-2016-2-MarkoBunzel.pdf deleted file mode 100755 index 51dda35..0000000 Binary files a/org/ÜL-Abrechnungsbogen-2016-2-MarkoBunzel.pdf and /dev/null differ diff --git a/org/ÜL-Abrechnungsbogen-2018-1-MarkoBunzel.pdf b/org/ÜL-Abrechnungsbogen-2018-1-MarkoBunzel.pdf deleted file mode 100755 index 6108320..0000000 Binary files a/org/ÜL-Abrechnungsbogen-2018-1-MarkoBunzel.pdf and /dev/null differ diff --git a/org/ÜL-Abrechnungsbogen-2019-2-MarkoBunzel.pdf b/org/ÜL-Abrechnungsbogen-2019-2-MarkoBunzel.pdf deleted file mode 100644 index 70241fe..0000000 Binary files a/org/ÜL-Abrechnungsbogen-2019-2-MarkoBunzel.pdf and /dev/null differ diff --git a/org/ÜL-Abrechnungsbogen-2020-1.ods b/org/ÜL-Abrechnungsbogen-2020-1.ods deleted file mode 100644 index cb49ab1..0000000 Binary files a/org/ÜL-Abrechnungsbogen-2020-1.ods and /dev/null differ diff --git a/org/ÜL-Abrechnungsbogen-2020-2.ods b/org/ÜL-Abrechnungsbogen-2020-2.ods deleted file mode 100644 index 9c7273a..0000000 Binary files a/org/ÜL-Abrechnungsbogen-2020-2.ods and /dev/null differ diff --git a/org/ÜL-Abrechnungsbogen-2021-01.ods b/org/ÜL-Abrechnungsbogen-2021-01.ods deleted file mode 100644 index 8c8729b..0000000 Binary files a/org/ÜL-Abrechnungsbogen-2021-01.ods and /dev/null differ diff --git a/org/ÜL-Abrechnungsbogen-2021-02.ods b/org/ÜL-Abrechnungsbogen-2021-02.ods deleted file mode 100644 index 198552e..0000000 Binary files a/org/ÜL-Abrechnungsbogen-2021-02.ods and /dev/null differ diff --git a/org/ÜL-Abrechnungsbogen-2021-02.pdf b/org/ÜL-Abrechnungsbogen-2021-02.pdf deleted file mode 100644 index 4a80f52..0000000 Binary files a/org/ÜL-Abrechnungsbogen-2021-02.pdf and /dev/null differ diff --git a/org/ÜL-Abrechnungsbogen-2021-1.pdf b/org/ÜL-Abrechnungsbogen-2021-1.pdf deleted file mode 100644 index 568ccc9..0000000 Binary files a/org/ÜL-Abrechnungsbogen-2021-1.pdf and /dev/null differ diff --git a/org/ÜL-Abrechnungsbogen.ods b/org/ÜL-Abrechnungsbogen.ods deleted file mode 100644 index d61d91b..0000000 Binary files a/org/ÜL-Abrechnungsbogen.ods and /dev/null differ diff --git a/org/ÜL-Abrechnungsbogen_2015_01.ods b/org/ÜL-Abrechnungsbogen_2015_01.ods deleted file mode 100755 index 3bc85e1..0000000 Binary files a/org/ÜL-Abrechnungsbogen_2015_01.ods and /dev/null differ diff --git a/sportabzeichen/DSA_Trainingsplaner_beschreibbar.pdf b/sportabzeichen/DSA_Trainingsplaner_beschreibbar.pdf index 2aff4af..abb708c 100644 Binary files a/sportabzeichen/DSA_Trainingsplaner_beschreibbar.pdf and b/sportabzeichen/DSA_Trainingsplaner_beschreibbar.pdf differ diff --git a/submodules/Makefile b/submodules/Makefile index f3254b3..1dff116 100644 --- a/submodules/Makefile +++ b/submodules/Makefile @@ -1,5 +1,6 @@ include passwords + .PHONY: updateSubmodules updateSubmodules: checkoutSubmodulesDefaultBranches git submodule foreach git pull @@ -18,6 +19,6 @@ buildMaterialize: updateSubmodules ./buildMaterialize.sh .PHONY: deployMaterialize -deployMaterialize: buildMaterialize - echo $(ftpPassword) - find materialize/dist/ -type f -exec curl -u cwsvjudo:$(ftpPassword) --ftp-create-dirs -T {} ftp://cwsvjudo.bplaced.net/ressourcen/materializeCss/{} \; \ No newline at end of file +# deployMaterialize: buildMaterialize +deployMaterialize: $(materialiceCssDist) + cd materialize/dist/ && find . -type f -exec curl --verbose -u cwsvjudo:$(ftpPassword) --ftp-create-dirs -T {} ftp://cwsvjudo.bplaced.net/www/ressourcen/materializeCss/{} \; \ No newline at end of file diff --git a/submodules/buildMaterialize.sh b/submodules/buildMaterialize.sh index 282cecb..39e9fb0 100755 --- a/submodules/buildMaterialize.sh +++ b/submodules/buildMaterialize.sh @@ -2,4 +2,5 @@ cd materialize npm install +npm audit fix npm run release \ No newline at end of file diff --git a/submodules/lite-youtube-embed b/submodules/lite-youtube-embed index 32f4a55..be6f03e 160000 --- a/submodules/lite-youtube-embed +++ b/submodules/lite-youtube-embed @@ -1 +1 @@ -Subproject commit 32f4a55192a1fc4d4ed063122986a86be74008b2 +Subproject commit be6f03ef53b33866e38a917a256cefca95262804 diff --git a/submodules/materialize b/submodules/materialize index 0ada13a..bf29da7 160000 --- a/submodules/materialize +++ b/submodules/materialize @@ -1 +1 @@ -Subproject commit 0ada13a85236807de24182765574b2362dddd46d +Subproject commit bf29da7b2a234ec3d3428b7585d5ac7f724541f2 diff --git a/submodules/wkOrg b/submodules/wkOrg index 7e81899..3cfd922 160000 --- a/submodules/wkOrg +++ b/submodules/wkOrg @@ -1 +1 @@ -Subproject commit 7e81899f08485399df98e177a9ce22d5c0414237 +Subproject commit 3cfd922be7818e3401767eda4b120c48ac4c039e