diff --git a/feiern/redeEiserner.md b/feiern/redeEiserner.md
new file mode 100644
index 0000000..4f39070
--- /dev/null
+++ b/feiern/redeEiserner.md
@@ -0,0 +1,13 @@
+
+*Eisernen in die Hand nehmen.* Darum möchte ich Euch allen den Rat und
+die Mahnung geben: Seid eisern *Eisernen auf den Tisch knallen* in
+Euren Bestrebungen. Seid formbar, wo Ihr Euch verbessern könnt. Ertragt
+die Scharten *auf Scharte zeigen* die Euch geschlagen werden. Schleift
+sie weg, um mit Euren Leistungen zu glänzen *auf polierte Stelle
+zeigen*. Und passt auf, dass Ihr mit dem Rohstoff, der Euch gegeben
+wurde etwas schafft, das es wert ist darauf stolz zu sein.
+
+Und der beste Anfang, den man dafür machen kann ist eine häufige
+Teilnahme am Training. Deshalb geht der Wanderpokal jedes Halbjahr an
+denjenigen, der am meisten dafür getan hat und die meiste Anwesenheit
+im Training aufweisen kann.
diff --git a/findBiggies.sh b/findBiggies.sh
new file mode 100644
index 0000000..9b7214a
--- /dev/null
+++ b/findBiggies.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+#set -x
+
+# Shows you the largest objects in your repo's pack file.
+# Written for osx.
+#
+# @see https://stubbisms.wordpress.com/2009/07/10/git-script-to-show-largest-pack-objects-and-trim-your-waist-line/
+# @author Antony Stubbs
+
+# set the internal field spereator to line break, so that we can iterate easily over the verify-pack output
+IFS=$'\n';
+
+# list all objects including their size, sort by size, take top 10
+objects=`git verify-pack -v .git/objects/pack/pack-*.idx | grep -v chain | sort -k3nr | head`
+
+echo "All sizes are in kB's. The pack column is the size of the object, compressed, inside the pack file."
+
+output="size,pack,SHA,location"
+allObjects=`git rev-list --all --objects`
+for y in $objects
+do
+ # extract the size in bytes
+ size=$((`echo $y | cut -f 5 -d ' '`/1024))
+ # extract the compressed size in bytes
+ compressedSize=$((`echo $y | cut -f 6 -d ' '`/1024))
+ # extract the SHA
+ sha=`echo $y | cut -f 1 -d ' '`
+ # find the objects location in the repository tree
+ other=`echo "${allObjects}" | grep $sha`
+ #lineBreak=`echo -e "\n"`
+ output="${output}\n${size},${compressedSize},${other}"
+done
+
+echo -e $output | column -t -s ', '
diff --git a/homepage/redesign2018/css/cwsvJudo-2018.css b/homepage/redesign2018/css/cwsvJudo-2018.css
index f5c8b8d..6c1c1dd 100644
--- a/homepage/redesign2018/css/cwsvJudo-2018.css
+++ b/homepage/redesign2018/css/cwsvJudo-2018.css
@@ -114,6 +114,10 @@ body{
width:100%;
}
+.valignMiddle{
+ vertical-align:middle;
+}
+
/* Bilder in voller Breite */
.bigPicture{
width: 100%;
diff --git a/homepage/redesign2018/markdownExperiment/Makefile b/homepage/redesign2018/markdownExperiment/Makefile
index 5c514de..00be903 100644
--- a/homepage/redesign2018/markdownExperiment/Makefile
+++ b/homepage/redesign2018/markdownExperiment/Makefile
@@ -45,7 +45,7 @@ ampTest: $(ampFiles)
build/css/cwsvJudo.css: $(cssFiles)
mkdir -p $(dir $@)
-# cat $(cssFiles) > $@
+# cat $^ > $@
# cat $(cssFiles) | cleancss -o $@
# cat $^ | ./node_modules/.bin/csso -o $@
cat $^ | csso -o $@
diff --git a/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/miscAssis.php b/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/miscAssis.php
index 9de7524..ec8f622 100644
--- a/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/miscAssis.php
+++ b/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/miscAssis.php
@@ -4,6 +4,20 @@ function is_positive_integer($str){
return (is_numeric($str) && $str > 0 && $str == round($str));
}
+function getPdoDbConnection($hostname, $dbName, $user, $password){
+ try{
+ $dbConnection = new PDO(
+ 'mysql:host='.$hostname.';dbname='.$dbName,
+ $user,
+ $password
+ );
+ }
+ catch(PDOException $dbError){
+ echo( "Error whilst getting a dbConnection!: " . $dbError->getMessage() );
+ }
+return $dbConnection;
+}
+
function getCwsvJudoDbConn(){
global $cwsvJudoConfig;
// Datenbankverbindung bereit stellen
diff --git a/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/wkKalender.php b/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/wkKalender.php
index 9566746..7437f24 100644
--- a/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/wkKalender.php
+++ b/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/wkKalender.php
@@ -11,7 +11,11 @@ function echoWkTitle(){
}
/// Einen Wettkampfnamen per ID abfragen
function getWkName( $wkId, $alternative="Judo-Wettkampf" ){
- if( !is_positive_integer($wkId) ) return $alternative;
+
+if( !is_positive_integer($wkId) ) return $alternative;
+
+if( empty($optionsArray['dbCharset']) ) $optionsArray['dbCharset'] = "ISO-8859-1";
+if( empty($optionsArray['outCharset']) ) $optionsArray['outCharset'] = "UTF-8";
// Datenbankverbindung bereit stellen
global $cwsvJudoConfig;
@@ -35,7 +39,7 @@ function getWkName( $wkId, $alternative="Judo-Wettkampf" ){
$pdoStatementForQuerryingWkById->execute();
$ret = $pdoStatementForQuerryingWkById->fetchAll(PDO::FETCH_ASSOC);
- return $ret[0]['Veranstaltung'];
+ return iconv($optionsArray['dbCharset'], $optionsArray['outCharset'], $ret[0]['Veranstaltung']);
}
catch(PDOException $db_error){
// $siteData['errors'][] = "Error!: " . $db_error->getMessage();
@@ -191,9 +195,11 @@ $htmlWkTableString = "";
str_replace("randori", "randori", $wk['Veranstaltung']);
$wk['Veranstaltung'] =
str_replace("spiele", "spiele", $wk['Veranstaltung']);
+ $wk['Veranstaltung'] =
+ str_replace("mannschaft", "mannschaft", $wk['Veranstaltung']);
$htmlWkTableString .=
- "
" );
echo "
a{
padding: .5em .5em;
diff --git a/homepage/redesign2018/markdownExperiment/src/css/cwsvJudo-2018-wkKalender.css b/homepage/redesign2018/markdownExperiment/src/css/cwsvJudo-2018-wkKalender.css
index 46d879c..c75e16c 100644
--- a/homepage/redesign2018/markdownExperiment/src/css/cwsvJudo-2018-wkKalender.css
+++ b/homepage/redesign2018/markdownExperiment/src/css/cwsvJudo-2018-wkKalender.css
@@ -794,3 +794,44 @@
}
}
*/
+
+/*
+ * Mit Text overlay-tes Bild
+*/
+
+.textoverlayedImage{
+ position: relative;
+ display: table;
+}
+.textoverlayedImage > img {
+ width: 100%;
+ height: auto;
+}
+.textoverlayedImage > div {
+ z-index: 99;
+ width: 70%;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%,-50%);
+}
+.textoverlayedImage > div > p{
+ text-align: center;
+ color: white;
+ font-weight: lighter;
+ line-height: 2;
+ padding: 0 10%;
+}
+
+/*
+ * Die Galerie der Galerien in der wkInfoBox
+*/
+.wkBoxMediaGallery{
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: space-around;
+ align-items: center;
+}
+.wkBoxMediaGallery > *{
+ flex-basis:50%;
+}
diff --git a/homepage/redesign2018/markdownExperiment/src/css/cwsvJudo-2018.css b/homepage/redesign2018/markdownExperiment/src/css/cwsvJudo-2018.css
index f997542..ebf4d44 100644
--- a/homepage/redesign2018/markdownExperiment/src/css/cwsvJudo-2018.css
+++ b/homepage/redesign2018/markdownExperiment/src/css/cwsvJudo-2018.css
@@ -38,13 +38,17 @@ html{
/*
* Body
*/
+
body{
background: #FFAE00;
font-family: arial, helvetica, sans-serif;
}
-/* Container für eine einzelne News */
+/*
+ * Container für eine einzelne News
+ */
+
.newsBox{
border: solid 1px #000000;
padding: 1vmin;
@@ -113,6 +117,9 @@ body{
.fullWidth{
width:100%;
}
+.valignMiddle{
+ vertical-align:middle;
+}
/* Bilder in voller Breite */
.bigPicture{
diff --git a/homepage/redesign2018/markdownExperiment/src/galleryHelper/getVideoDuration.py b/homepage/redesign2018/markdownExperiment/src/galleryHelper/getVideoDuration.py
new file mode 100644
index 0000000..1551fb6
--- /dev/null
+++ b/homepage/redesign2018/markdownExperiment/src/galleryHelper/getVideoDuration.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python3
+
+import sys
+import subprocess
+
+#ffprobe =
+
+def getLength(filename):
+ result = subprocess.Popen(
+ ["C:\\proggis\\media\\editoren\\ffmpeg-4.0.2-win64-static\\bin\\ffprobe.exe", filename],
+ stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
+# print( result.stdout.readlines() )
+# for x in result.stdout.readlines():
+# print(x)
+ return [x for x in result.stdout.readlines() if b"Duration" in x]
+
+#print( str( getLength(sys.argv[1]) ) )
+getLength(sys.argv[1])
diff --git a/homepage/redesign2018/markdownExperiment/src/galleryHelper/getVideoDurationJson.py b/homepage/redesign2018/markdownExperiment/src/galleryHelper/getVideoDurationJson.py
new file mode 100644
index 0000000..62f417d
--- /dev/null
+++ b/homepage/redesign2018/markdownExperiment/src/galleryHelper/getVideoDurationJson.py
@@ -0,0 +1,68 @@
+#!/usr/bin/env python3
+
+#
+# Command line use of 'ffprobe':
+#
+# ffprobe -loglevel quiet -print_format json \
+# -show_format -show_streams \
+# video-file-name.mp4
+#
+# man ffprobe # for more information about ffprobe
+#
+
+import subprocess as sp
+import json
+import sys
+
+
+def probe(vid_file_path):
+ ''' Give a json from ffprobe command line
+
+ @vid_file_path : The absolute (full) path of the video file, string.
+ '''
+ if type(vid_file_path) != str:
+ raise Exception('Gvie ffprobe a full file path of the video')
+ return
+
+ command = ["ffprobe",
+ "-loglevel", "quiet",
+ "-print_format", "json",
+ "-show_format",
+ "-show_streams",
+ vid_file_path
+ ]
+
+ pipe = sp.Popen(command, stdout=sp.PIPE, stderr=sp.STDOUT)
+ out, err = pipe.communicate()
+ return json.loads(out)
+
+
+def duration(vid_file_path):
+ ''' Video's duration in seconds, return a float number
+ '''
+ _json = probe(vid_file_path)
+
+ if 'format' in _json:
+ if 'duration' in _json['format']:
+ return float(_json['format']['duration'])
+
+ if 'streams' in _json:
+ # commonly stream 0 is the video
+ for s in _json['streams']:
+ if 'duration' in s:
+ return float(s['duration'])
+
+ # if everything didn't happen,
+ # we got here because no single 'return' in the above happen.
+ raise Exception('I found no duration')
+ #return None
+
+
+if __name__ == "__main__":
+# video_file_path = "/tmp/tt1.mp4"
+ video_file_path = sys.argv[1]
+
+ durationInSec = duration(video_file_path)
+ rateInKbPerSec = (10 * 1024 * 1024 * 8)/( durationInSec * 1000 )
+ #print( duration(video_file_path) ) # 10.008
+ print( int(min(500, rateInKbPerSec)) )
diff --git a/homepage/redesign2018/markdownExperiment/src/galleryTemplates/indexHier.php b/homepage/redesign2018/markdownExperiment/src/galleryTemplates/indexHier.php
new file mode 100644
index 0000000..b9813ff
--- /dev/null
+++ b/homepage/redesign2018/markdownExperiment/src/galleryTemplates/indexHier.php
@@ -0,0 +1,7 @@
+" : $wkName;
+
+ include_once( $_SERVER['DOCUMENT_ROOT']."/ressourcen/phpLib/videoGallery/videoGallery.tmpl.php" );
+?>
diff --git a/homepage/redesign2018/markdownExperiment/src/galleryTemplates/indexInArbeit.php b/homepage/redesign2018/markdownExperiment/src/galleryTemplates/indexInArbeit.php
new file mode 100644
index 0000000..ca8c976
--- /dev/null
+++ b/homepage/redesign2018/markdownExperiment/src/galleryTemplates/indexInArbeit.php
@@ -0,0 +1,20 @@
+
+
+
+
+
In Arbeit
+
+
+
+
+
Die Videos des Wettkampfes sind momentan noch in Vorbereitung. Einfach später noch mal probieren.
+
+
Wer ganz ungeduldig ist, kann ja schon mal kiebitzen .
+
+
diff --git a/homepage/redesign2018/markdownExperiment/wkParticipo/admin/listUsers.php b/homepage/redesign2018/markdownExperiment/wkParticipo/admin/listUsers.php
index 5c616e5..6e6e40a 100644
--- a/homepage/redesign2018/markdownExperiment/wkParticipo/admin/listUsers.php
+++ b/homepage/redesign2018/markdownExperiment/wkParticipo/admin/listUsers.php
@@ -1,8 +1,18 @@
diff --git a/homepage/redesign2018/markdownExperiment/wkParticipo/admin/showEvent.php b/homepage/redesign2018/markdownExperiment/wkParticipo/admin/showEvent.php
index 150a3c2..37c2f19 100644
--- a/homepage/redesign2018/markdownExperiment/wkParticipo/admin/showEvent.php
+++ b/homepage/redesign2018/markdownExperiment/wkParticipo/admin/showEvent.php
@@ -169,10 +169,24 @@
");
+ echo("
Name Vorname Masse Platz starterId fahrtId ");
+
+ foreach( $starterData as $starter ){
+ if($starter['type'] != $typeKey) continue;
+ echo("
");
+ $userData = getUserData($mysqli, $starter['userId']);
+ echo("".mb_convert_encoding($userData['name'], 'UTF-8', 'ISO-8859-1')." ");
+ echo("".mb_convert_encoding($userData['vorname'], 'UTF-8', 'ISO-8859-1')." ");
+ echo("".$starter['masse']." ");
+ echo("".$starter['platz']." ");
+ echo("".$starter['id']." ");
+ echo("".$starter['fahrtId']." ");
+ echo(" ");
+ }
+ echo("");
}
-?>
-
-
+
+
@@ -189,7 +195,6 @@ setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
Anstehende Wettkämpfe
- Nicht wundern, dass hier eventuell etwas doppelt steht! Ich experimentiere gerade.
"UTF-8") );
@@ -210,7 +215,7 @@ setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
$wkEvent,
getStarterForEvent($mysqlConn, $wkEvent['id']),
getFahrtenForEvent($mysqlConn, $wkEvent['id'])
- )
+ )
);
?>
@@ -225,6 +230,24 @@ setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
Es gibt zwei verschiedene Fristen. Zum einen die Frist vom Veranstalter, bis wann ihm alle Starter gemeldet sein müssen und zum anderen eine Frist bis wann man einen Starter für einen geplanten Wettkampf bei uns im Planer einschreiben kann. Logischerweise muss vor der Meldung bekannt sein, wer gemeldet werden kann. Deshalb ist die Einschreibefrist des Wettkampfplaners vor der Meldefrist des Veranstalters. Üblicherweise wird mit Meldeschluss die Meldung an den Veranstalter geschickt. Aber nicht immer, z. B. wenn die Teilnehmerzahl beschränkt ist. Sollte mal die Einschreibefrist verstrichen sein und man möchte trotzdem noch jemanden einschreiben, kann dies in den meisten Fällen noch erfolgen indem man mit dem Übungsleiter Rücksprache hält bevor dieser die Meldung an den Veranstalter abschickt.
+
+
Altersklassen
+
+
+ Im Judo werden die Kämpfer gemäß ihrem Alter, der Masse und (meistens auch) nach ihrem Geschlecht in Gruppen eingeteilt um miteinander zu kämpfen. Weder die Einteilung in Alters- noch die in Gewichtsklassen ist dabei einheitlich. Da die Wettkämpfe immer jeweils nur für bestimmte Altersklassen und manchmal auch nur für entweder männlich oder weiblich veranstaltet werden, sollte immer auf der Ausschreibung nachgesehen werden, wie der Veranstalter die Altersklassen definiert.
+
+
+ Bezeichnet werden die Altersklassen im Judo meistens mit Ux, wobei x eine Zahl ist. Ux steht für unter x Jahre. Man ist unter x Jahre, wenn man im laufenden Kalenderjahr nicht mehr x Jahre alt wird. Eine Altersklasse geht normalerweise über zwei (teilweise auch drei) Jahrgänge. Zur U11 z.B. würden normalerweise all diejenigen gehören, die im laufenden Jahr 10 oder 9 (bei drei Jahrgängen auch 8) Jahre alt werden. Es gibt aber auch Wettkämpfe in denen die Altersklassen mehr Jahrgänge umfassen.
+
+
Im Zweifelsfall kann man mich auch jederzeit fragen.
+
+ Für offizielle, vom Verband ausgerichtete Wettkämpfe gibt es festgelegte Alters- und Gewichtsklassen:
+
+
+
diff --git a/homepage/redesign2018/markdownExperiment/wkParticipo/lib/wkParticipo-userAttribute.php b/homepage/redesign2018/markdownExperiment/wkParticipo/lib/wkParticipo-userAttribute.php
new file mode 100644
index 0000000..a9da008
--- /dev/null
+++ b/homepage/redesign2018/markdownExperiment/wkParticipo/lib/wkParticipo-userAttribute.php
@@ -0,0 +1,180 @@
+ "ISO-8859-1", "outCharset" => "UTF-8" ) ){
+//echo("Doing ".$aQueryString);
+var_dump($aBindArray);
+if( empty($someOptions['dbCharset']) ) $someOptions['dbCharset'] = "ISO-8859-1";
+if( empty($someOptions['outCharset']) ) $someOptions['outCharset'] = "UTF-8";
+/// @toDo: Bisher wird nur die Rückgabe konvertiert. Eigentlich muss
+/// doch auch die Eingabe konvertiert werden. Aber das jetzt
+/// umzustellen wird schwer! Die User m Wettkampfplaner sind ja z.B.
+/// als UTF8 in latin1(?) gespeichert.
+ try{
+ $pdoStatement = $aDbConnection->prepare( $aQueryString );
+ foreach( $aBindArray as $bindName => $bind ){
+ $pdoStatement->bindValue(
+ $bindName,
+ $bind['value'],
+ (isset($bind['data_type'])?$bind['data_type']:PDO::PARAM_STR)
+ );
+ }
+ $pdoStatement->execute();
+ $ret = $pdoStatement->fetchAll(PDO::FETCH_ASSOC);
+ }
+ catch(PDOException $db_error){
+ print "Error!: " . $db_error->getMessage() . "
";
+ return null;
+ }
+ //var_dump($ret);
+// Zeichensatzkonvertierung
+ if( is_array($ret) ){
+ foreach($ret as &$entry){
+ array_walk(
+ $entry,
+ function (&$value, $key, $someOptions) {
+ $value = iconv($someOptions['dbCharset'], $someOptions['outCharset'], $value);
+ },
+ $someOptions
+ );
+ }
+ }
+return $ret;
+}
+
+function array2htmlTableString($anArray){
+$ret = "";
+ if( !is_array($anArray) )
+ return "";
+ $ret .= "
";
+ foreach($anArray as $row){
+ if( !is_array($anArray) )
+ continue;
+ $ret .= "";
+ foreach( $row as $entry )
+ $ret .= "".$entry." ";
+ $ret .= " ";
+ }
+ $ret .= "
";
+return $ret;
+}
+
+function giveUserAnUserAttribute($aDbConnection, $anUserId, $anAttributeId){
+echo("Entering giveUserAnUserAttribute!");
+ try{
+ dbQuery(
+ $aDbConnection,
+ "INSERT INTO `wkParticipo_user<=>userAttributes` (userId, attributeId) VALUES (:userId, :attributeId);",
+ array(
+ ':userId' => array('value'=>$anUserId, 'data_type'=>PDO::PARAM_INT),
+ ':attributeId'=>array('value'=>$anAttributeId, 'data_type'=>PDO::PARAM_INT)
+ )
+ );
+ }
+ catch(PDOException $db_error){
+ print "Error!: " . $db_error->getMessage() . "
";
+ }
+return;
+}
+
+#exit();
+
+var_dump($_GET);
+
+$actions = ["giveUserAnUserAttribute"];
+
+
+$dbConn = getCwsvJudoDbConn();
+$dbConn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
+
+if(isset($_GET['action'])){
+ switch($_GET['action']){
+ case "giveUserAnUserAttribute":
+ //echo("Doing giveUserAnUserAttribute!");
+ try{
+ giveUserAnUserAttribute($dbConn, intval($_GET['userIdToGetAttribute']), intval($_GET['attributeIdToGet']));
+ }
+ catch(Exception $e){
+ print("UPS: ".$e->getMessage());
+ }
+ break;
+ default:
+ echo("Ungültige Aktion erwünscht!");
+ break;
+ }
+}
+
+$users =
+ dbQuery(
+ $dbConn,
+ "SELECT * FROM cwsvjudo.wkParticipo_Users;"
+ );
+
+$userAttributes =
+ dbQuery(
+ $dbConn,
+ "SELECT * FROM cwsvjudo.wkParticipo_userAttributes;"
+ );
+
+
+?>
+
+
+
+
+
+
Attribute
+
+ userAttributes` WHERE wkParticipo_Users.id = `wkParticipo_user<=>userAttributes`.userId AND `wkParticipo_user<=>userAttributes`.attributeId=:attributeId;",
+ array(":attributeId"=>array('value'=>$userAttribute['id'], 'data_type'=>PDO::PARAM_INT))
+ );
+ echo( "
".$userAttribute['name']." ".array2htmlTableString($attributedUsers) );
+ }
+ ?>
+
+
User
+
+
+
diff --git a/homepage/redesign2018/markdownExperiment/wkParticipo/lib/wkParticipoLib.inc.php b/homepage/redesign2018/markdownExperiment/wkParticipo/lib/wkParticipoLib.inc.php
index ab5c18d..1388387 100644
--- a/homepage/redesign2018/markdownExperiment/wkParticipo/lib/wkParticipoLib.inc.php
+++ b/homepage/redesign2018/markdownExperiment/wkParticipo/lib/wkParticipoLib.inc.php
@@ -1201,6 +1201,7 @@ return $url;
function htmlWkEvent($aWkEvent, $starters, $fahrten){
//var_dump($aWkEvent, $starters, $fahrten);
+
$retHtml = "";
if( empty($aWkEvent['Datum']) )
@@ -1209,6 +1210,10 @@ $retHtml = "";
foreach($fahrten as $fahrt)
$anzPlätze += $fahrt['plaetze'];
+ $anzahlKaempfer = array_count_values(array_column($starters, 'type'))['1'];
+ $anzahlZuschauer = array_count_values(array_column($starters, 'type'))['2'];
+
+
$heuteDateTime = DateTimeImmutable::createFromFormat("Y-m-d", date("Y-m-d"));
$einschreibeDateTime = DateTimeImmutable::createFromFormat("Y-m-d", $aWkEvent['meldefrist']);
@@ -1235,10 +1240,17 @@ $retHtml = "";
"
"
)."".
(!empty($_SESSION['login'])?
- "