<?
function Spielliste( $Attribute, $SpiellisteId, $Handheld,
$NumSpieler = "", $NumSpiele = "" )
{
if( ! $NumSpieler )
{
$sqlExec = ReceiveBodyRows( $SpiellisteId, 1 );
$Line = mysql_fetch_array( $sqlExec );
$NumSpieler = $Line[NumSpieler];
}
//
startTag("div", "class", "Spielliste");
startTag("div", "class", "Title");
echo "Spielliste";
endTag("div");
#<!-- Spielliste -->
startTag("form", "name", "myform", "action", $_SERVER['PHP_SELF'], "method", "post", "onsubmit", "return CheckList()");
startTag("input", "name", "SpiellisteId", "type", "hidden", "value", $SpiellisteId, "size", 1, "readonly", "readonly" );
startTag("table", "class", "Spielliste");
// colgroup for vertical player separation
startTag( "colgroup" );
for( $i = 0; $i < 10; $i++ ) // Spieleigenschaften
{
starttag( "col" );
}
for( $i = 0; $i < $NumSpieler; $i++ ) // Spielerspalten
{
if( $i % 2 )
{
starttag( "col" , "style", "border-left: 2px gray solid");
starttag( "col" );
starttag( "col" , "style", "border-right: 2px gray solid");
}
else
{
starttag( "col", "class", 'SLSpielerHG', "style", "border-left: 2px gray solid" );
starttag( "col", "class", 'SLSpielerHG' );
starttag( "col", "class", 'SLSpielerHG', "style", "border-right: 2px gray solid" );
}
}
starttag( "col" ); // eingepasst
starttag( "col" ); // �berreizt
endTag( "colgroup" );
SpiellisteHeader( $Attribute, $SpiellisteId, $NumSpieler, $NumSpiele );
SpiellisteBody( $Attribute, $SpiellisteId, false, -1, false,
$NumSpieler, $NumSpiele );
SpiellisteFooter( $Attribute, $SpiellisteId, $Handheld, $NumSpieler, $NumSpiele );
endTag("table");
#<!-- End Table -->
startTag("input", "type", "hidden", "name", "komplett", "value", 1);
endTag("form");
endTag("div");
}
/** Funktion liefert ein MySQL Objekt zur�ck, dass die Daten einer Spielliste
* enth�lt. Parameter sind die SpiellisteId und das Startspiel, sowie das
* letzte Spiel. Fehlt $SpielnummerEnde, dann werden alle bis zum Ende gesucht
**/
function ReceiveBodyRows( $SpiellisteId, $Spielnummer = -1 )
{
global $CONF;
global $SKAT_SESSION;
$cond = "";
if( ! ( $Spielnummer < 0 ) )
{
$cond = " AND t5.Number<=$Spielnummer ";
debug( "Condition: $cond" );
}
$sql = "SELECT t5.Number, t5.Eingepasst, t5.Ueberreizt, t5.Grundwert, t5.Spitzen,
t5.Hand, t5.Schneider, t5.Schneider_angesagt, t5.Schwarz,
t5.Schwarz_angesagt, t5.Offen, t5.Spielwert, t2.Platznummer , t1.NumSpieler, t1.NumSpiele
FROM " .
$CONF['tbl_cat']. " AS t0, " .
$CONF['tbl_scoresheet']. " AS t1, " .
$CONF['tbl_column'] . " AS t2, " .
$CONF['tbl_player'] . " AS t4, " .
$CONF['tbl_game'] . " AS t5
WHERE t1.Id=$SpiellisteId
AND t0.Id=t1.CatId
AND t0.GroupId=". $SKAT_SESSION[groupid] ."
AND t2.SpiellisteId=t1.Id
AND t4.Id=t2.SpielerId $cond
AND t5.SpiellisteId=$SpiellisteId
AND ( t2.SpielerId=t5.AlleinspielerId OR t5.Eingepasst=2 OR t5.Eingepasst=1 )
GROUP BY t5.Number ORDER BY t5.Number ";
return processSQL( $sql );
}
/** Funktion gibt eine Zeile einer Spielliste aus, dabei wird unterschieden ob
* die Felder editierbar sind oder nicht.
*/
function SpiellisteBody( $Attribute, $SpiellisteId, $Handheld = false,
$Spielnummer = -1, $Resultonly = false, $NumSpieler = "", $NumSpiele = "")
{
global $CONF;
debug("SpiellisteBody" );
debug("Attribute: " . $Attribute );
debug("Handheld: " . $Handheld );
debug("Spielnummer: " . $Spielnummer );
debug("SpiellisteId: " . $SpiellisteId );
if( $SpiellisteId )
{
# everything is ok
$sqlExec = ReceiveBodyRows( $SpiellisteId, $Spielnummer );
debug("Number of rows: " . mysql_num_rows( $sqlExec ) );
$Line = mysql_fetch_array( $sqlExec );
$NumSpieler = $Line[NumSpieler];
$NumSpiele = $Line[NumSpiele ];
}
else
{
#errormsg( "No SpiellisteId is given!!" );
#return;
}
# Init Spaltenwerte
for( $j = 0 ; $j < $NumSpieler; $j++ )
{
$punkte[ $j ] = 0;
$verloren[ $j ] = 0;
$gewonnen[ $j ] = 0;
}
# <!-- Body -->
$eingepasst = 0;
$i = 0;
do
{
if( $SpiellisteId )
{
$i = $Line["Number"];
}
debug("i: " . $i );
/** Nummer, �ber Spielwerte, �ber Eingepasst und �berreizt
* weden angezeigt, wenn entweder Handheld und die entsprechende Nummer oder
* kein Handheld **/
if( !$Handheld || ( $Handheld && $Spielnummer == $i ) )
{
/** Neue Zeile, die Werte folgen jetzt
**/
if( $Handheld || ( ( $i+1) % $NumSpieler ) )
{
startTag("tr");
}
else
{
startTag("tr", "class", "Rundenende");
}
if( !$Resultonly )
{
/**
#<!-- Laufende Nummer -->
**/
startTag("td");
echo $i + 1;
endTag("td");
}
}
if( ( $Attribute == "Edit" ) || ( !isEingepasst($Line['Eingepasst'] )) )
{
if( ( !$Handheld || ( $Handheld && $Spielnummer == $i ) ) && !$Resultonly)
{
/**
#<!-- Grundwert -->
**/
startTag("td");
if( $Attribute == "Edit" )
{
startTag("select", "tabindex", $NumSpieler+2*$i+1, "name", "Grundwert$i",
"size", 1, "onChange", "ChangeGrundwert( $i )" );
foreach( array("--", 9, 10, 11, 12, 23, 24, 35, 46, 59 ) as $v )
{
if( $Line['Grundwert'] == $v )
{
startTag( "option", "selected", "selected", "value", $v );
}
else
{
startTag( "option", "value", $v );
}
echo $v;
endTag( "option" );
}
endTag("select");
}
else
{
echo $Line['Grundwert'];
}
endTag("td");
/**
#<!-- Mit/Ohne Spitzen -->
**/
startTag("td");
if( $Attribute == "Edit" )
{
startTag("select", "tabindex", $NumSpieler+2*$i+2, "name", "Spitzen$i",
"size", 1, "onChange", "Update( $i )" );
$sp = array("-", 1, -1, 2, -2, 3, -3, 4, -4, 5, -5, 6, -6, 7, -7, 8, -8, 9, -9, 10, -10, 11, -11 );
foreach( $sp as $k )
{
if( $k == $Line['Spitzen'] )
{
startTag( "option", "selected", "selected", "value", $k );
}
else
{
startTag( "option", "value", $k );
}
echo $k;
endTag( "option" );
}
endTag("select");
endTag("td");
}
else
{
if( ( $Line['Grundwert'] < 23 ) || ( $Line['Grundwert'] == 24 ) )
{
echo $Line['Spitzen'];
}
else
{
echo "";
}
}
if( ( $Attribute == "Edit" ) || !$Line['Ueberreizt'] )
{
/**
#<!-- Gewinnstufen -->
**/
foreach( array("Hand", "Schneider", "Schneider_angesagt", "Schwarz",
"Schwarz_angesagt", "Offen" ) as $gt )
{
startTag("td");
if( $Line[$gt] )
{
$checked = "checked";
}
else
{
$checked = "";
}
if( $Attribute == "Edit" )
{
startTag("input", "type", "checkbox", "name", "$gt$i",
"onChange", "Update( $i )", $checked, $checked );
}
else
{
if( $checked )
{
echo "X";
}
}
endTag("td");
}
}
else
{
startTag("td", "colspan", 6);
echo "ü b e r r e i z t";
endTag("td");
}
/**
#<!-- Spielwert -->
**/
if( ( $Attribute == "Edit" ) && $Line["Ueberreizt"] )
{
$readonly = "";
}
else
{
$readonly = "readonly";
}
startTag("td");
startTag("input", "type", "text", "name", "spielwert$i",
"onChange", "Update( $i )", $readonly, $readonly, "size", 3,
"value", $Line['Spielwert'] );
startTag("input", "type", "hidden", "name", "Wer$i", "value", $Line['Platznummer'] );
endTag("td");
/** Eingepasst und �berreizt Klickfelder
**/
if( ($Handheld && ( $i == $Spielnummer ) ) )
{
$eingepasst = EingepasstUeberreizt( $Attribute, $Line, $eingepasst, $i );
/** Zeilenumbrch nur, wenn Handheld
**/
}
}
/** Zeile vor den Klickk�stchen bzw.
Folgezeile, nach den Klickk�stchen
**/
if( !$Handheld )
{
debug( "Zeile vor den Klickk�stchen" );
/**
#<!-- Spieler -->
**/
for( $j = 0; $j < $NumSpieler; $j++)
{
debug( "Platznummer: " . $Line[Platznummer] );
debug( "Spieler : " . $j );
if( $NumSpieler > 3 && $j == $i % $NumSpieler )
{
$class="disabled";
}
else
{
$class="";
}
if( isAngelegt( $Line[Eingepasst] )
&& isset( $Line[Platznummer])
&& ( $j == $Line[Platznummer] ) ) # Spieler ist Alleinspieler
{
# Berechne seinen Punktestand und zeige ihn an.
# F�r alle anderen Spieler, zeige nichts an und
# setzte nur die js attribute.
$punkte[ $j ] += $Line['Spielwert'];
if( $Line['Spielwert'] > 0 )
{
$gewonnen[ $j ] += 1;
}
else
{
$verloren[ $j ] += 1;
}
$r[0][ $j ] = $punkte[ $j ];
$r[1][ $j ] = $gewonnen[ $j ];
$r[2][ $j ] = $verloren[ $j ];
}
else
{
if( $Resultonly )
{
$init = 0;
}
else
{
$init = "";
}
$r[0][ $j ] = $init;
$r[1][ $j ] = $init;
$r[2][ $j ] = $init;
}
$att = array();
$par = array();
if( ( $Attribute == "Edit" ) && ( ! $class ) )
{
$att["punkte"] = "onClick";
$par["punkte"] = "UpdateCol( $i, $j, 1)";
$att["gewonnen"] = "onClick";
$par["gewonnen"] = "UpdateCol( $i, $j, 1)";
$att["verloren"] = "onClick";
$par["verloren"] = "UpdateCol( $i, $j, 0)";
}
$val = array();
$val["punkte"] = $r[0][ $j ];
$val["gewonnen"] = $r[1][ $j ];
$val["verloren"] = $r[2][ $j ];
foreach( array("punkte", "gewonnen", "verloren" ) as $gt )
{
$colspan = 1;
if( $Handheld && ( $gt == "punkte" ) )
{
if( $NumSpieler == 3 )
{
$colspan = 2;
}
elseif( $NumSpieler == 4 )
{
$colspan = 1;
}
else
{
errormsg( "Error! NumSpieler not defined!!" );
}
}
startTag("td", "class", $class, "colspan", $colspan );
startTag("input", "type", "text", "size", "2",
$att[$gt], $par[$gt], "readonly", "readonly", "value", $val[$gt],
"name", "$gt$i$j" );
endTag("td");
}
}
}
}
else
{
startTag("td", "colspan", 9 + $NumSpieler * 3);
echo "e i n g e p a s s t";
endTag("td");
}
/** Eingepasst und �berreizt Klickfelder
**/
if( !$Handheld )
{
$eingepasst = EingepasstUeberreizt( $Attribute, $Line, $eingepasst, $i );
}
if( !$Handheld || ( $Handheld && $Spielnummer == $i ) )
{
endTag("tr");
}
if( $SpiellisteId )
{
$Line = mysql_fetch_array( $sqlExec );
$continue = $Line;
}
else
{
$i++;
$continue = $i < $NumSpiele;
}
} while( $continue );
/** end while
*/
}
function ReceiveFooterData( $SpiellisteId )
{
global $CONF;
global $SKAT_SESSION;
$sql = "SELECT t2.Gewonnen, t2.Verloren, t2.Spielpunkte, t2.Extrapunkte,
t2.Fremdpunkte, t2.Summe, t1.NumSpiele, t1.NumSpieler
FROM " .
$CONF['tbl_cat']. " AS t0, " .
$CONF['tbl_scoresheet']. " AS t1, " .
$CONF['tbl_column'] . " AS t2, " .
$CONF['tbl_player'] . " AS t4
WHERE t1.Id=$SpiellisteId
AND t0.Id=t1.CatId
AND t0.GroupId=".$SKAT_SESSION[groupid]."
AND t2.SpiellisteId=t1.Id
AND t4.Id=t2.SpielerId
ORDER BY t2.Platznummer ";
return processSQL( $sql );
}
function SpiellisteFooter( $Attribute, $SpiellisteId, $Handheld = false, $NumSpieler = "", $NumSpiele = "" )
{
global $CONF;
global $SKAT_SESSION;
if( $SpiellisteId )
{
$sqlExec = ReceiveFooterData( $SpiellisteId );
if( $sqlExec )
{
while( $l = mysql_fetch_array( $sqlExec ) )
{
$Line[] = $l;
}
}
$NumSpieler = $Line[0][NumSpieler];
$NumSpiele = $Line[0][NumSpiele];
}
$pktExtra = ExtraPoints();
$pktGegner = PunkteGegner( $NumSpieler );
/** TODO
**/
$LeftColSpan = 10;
#<!-- Footer -->
startTag("tr", "class", "SLFooter" );
startTag("td", "colspan", $LeftColSpan );
echo "Summe der Punkte und Spiele";
endTag("td");
$sp = 0;
for( $j = 0; $j < $NumSpieler; $j++)
{
startTag("td");
startTag("input", "name", "sumpunkte$j","size", 3, "type", "text", "readonly", "readonly", "maxlength", "5", "value", $Line[$j]['Spielpunkte'] );
endTag("td");
startTag("td");
startTag("input", "name", "sumgewonnen$j","size", 1, "type", "text", "readonly", "readonly", "value", $Line[$j]['Gewonnen'] );
endTag("td");
startTag("td");
startTag("input", "name", "sumverloren$j","size", 1, "type", "text", "readonly", "readonly", "value", $Line[$j]['Verloren'] );
endTag("td");
$sp += $Line[$j]['Verloren'] +$Line[$j]['Gewonnen'];
}
startTag("td");
if( $Attribute != "Edit" )
{
$val = $NumSpiele - $sp;
}
else
{
$val = "";
}
startTag("input", "name", "sumeingepasst","size", 1, "type", "text", "readonly", "readonly", "value", $val );
endTag("td");
if( $Attribute == "Edit" )
{
startTag("td");
endTag("td");
}
endTag("tr");
startTag("tr", "class", "SLFooter" );
startTag("td", "colspan", $LeftColSpan);
startTag("input", "name", "Extra","type", "hidden", "value", $pktExtra );
echo "(gewonnen - verloren ) x $pktExtra ";
endTag("td");
for( $j = 0; $j < $NumSpieler; $j++)
{
startTag("td");
startTag("input", "name", "extra$j","type", "text", "size", 3 , "readonly", "readonly", "value", $Line[$j]['Extrapunkte'] );
endTag("td");
startTag("td");
if( isset( $Line[$j]['Gewonnen'] ) )
{
$val = $Line[$j]['Gewonnen'] - $Line[$j]['Verloren'];
}
else
{
$val = "";
}
startTag("input", "name", "gew_verl$j","type", "text", "size", 1 , "readonly", "readonly", "value", $val );
endTag("td");
startTag("td");
endTag("td");
}
startTag("td");
endTag("td");
if( $Attribute == "Edit" )
{
startTag("td");
endTag("td");
}
endTag("tr");
startTag("tr", "class", "SLFooter" );
startTag("td", "colspan", $LeftColSpan);
startTag("input", "name", "Gegner","type", "hidden", "value", $pktGegner);
echo "verlorene Spiele der Gegner x $pktGegner";
endTag("td");
for( $j = 0; $j < $NumSpieler; $j++)
{
startTag("td");
startTag("input", "name", "gegner$j","type", "text", "readonly", "readonly", "size", 3, "value", $Line[$j]['Fremdpunkte']);
endTag("td");
startTag("td");
endTag("td");
startTag("td");
endTag("td");
}
startTag("td");
endTag("td");
if( $Attribute == "Edit" )
{
startTag("td");
endTag("td");
}
endTag("tr");
startTag("tr", "class", "SLFooter" );
startTag("td", "colspan", $LeftColSpan );
echo "Endergebnis";
endTag("td");
for( $j = 0; $j < $NumSpieler; $j++)
{
startTag("td");
startTag("input", "name", "ergebnis$j","size", 3, "type", "text", "readonly", "readonly", "value", $Line[$j]['Summe'] );
endTag("td");
startTag("td");
endTag("td");
startTag("td");
endTag("td");
}
startTag("td");
endTag("td");
if( $Attribute == "Edit" )
{
startTag("td");
endTag("td");
}
endTag("tr");
if( $Attribute == "Edit" )
{
#<!-- Last Row -->
startTag("tr", "class", "SLFooter" );
startTag("td", "align", "right", "colspan", $NumSpieler*4+14 );
startTag("input", "type", "submit", "value", "abschicken" );
endTag("td");
endTag("tr");
if( $SpiellisteId )
{
startTag("tr", "class", "SLFooter" );
startTag("td", "align", "left", "colspan", $NumSpieler*4+14,
"class", "TableFootnote" );
echo "unwiederruflich löschen: ";
startTag("input", "name", "Delete", "type", "checkbox", "value", "delete" );
endTag("td");
endTag("tr");
}
}
if( $SKAT_SESSION[admin] && $SpiellisteId && ( $Attribute != "Edit" ) &&
!$Handheld )
{
startTag("tr", "class", "SLFooter" );
startTag("td", "align", "left", "colspan", $NumSpieler*4+14,
"class", "TableFootnote" );
echo createLink( "?SpiellisteId=$SpiellisteId&Mngt=4", "Spielliste bearbeiten" );
echo "<br>";
endTag("td");
endTag("tr");
}
else
{
// startTag("tr", "class", "SLFooter" );
// startTag("td", "align", "left", "colspan", $NumSpieler*4+14,
// "class", "TableFootnote" );
// echo "<a href=\#\" class=\"lbAction\" rel=\"deactivate\">close</a>";
// endTag("td");
// endTag("tr");
}
}
function SpiellisteHeader( $Attribute, $SpiellisteId, $NumSpieler = false,
$NumSpiele = false, $Handheld = false, $SingleGame = false, $PlayerOnly=false )
{
global $CONF;
debug( "NumSpieler: $NumSpieler" );
debug( "NumSpiele : $NumSpiele" );
debug( "Handheld : $Handheld" );
debug( "SingleGame: $SingleGame" );
debug( "PlayerOnly: $PlayerOnly" );
if( $SpiellisteId ) // gespeichertes Spiel wird betrachtet oder ver�ndert
{
debug( "SpiellisteId $SpiellisteId" );
$sqlExec = getScoreSheetInfo( $SpiellisteId );
if( $sqlExec )
{
$Line = mysql_fetch_array( $sqlExec );
$NumSpieler = $Line['NumSpieler'];
$NumSpiele = $Line['NumSpiele'];
debug( "NumSpieler: $NumSpieler" );
debug( "NumSpiele: $NumSpiele" );
}
else
{
errormsg( "SpiellisteHeader fehler in SQL" );
}
}
else // neues Spiel wird angelegt
{
/** NumSpiele(r) ist notwendig um beim allerersten Mal die notwendige
* Anzahl SpielerAuswahlfelder zu generieren
**/
if( !$NumSpiele || !$NumSpieler )
{
errormsg("Error, No Spieler given");
return;
}
}
if( !$SingleGame && !$PlayerOnly )
{
#<!-- Header -->
startTag("tr", "class", "SLHeader" );
if( $Handheld )
{
startTag("td", "style", "text-align:left", "colspan", $NumSpieler );
}
else
{
startTag("td", "style", "text-align:left", "colspan", 10);
}
echo "Kategorie: ";
if( $Attribute != "Edit" )
{
echo $Line['CatName'];
}
else
{
startTag("input", "name", "Mngt","value", 4, "type", "hidden");
startTag("input", "name", "NumSpiele", "value", $NumSpiele, "type", "hidden");
startTag("input", "name", "NumSpieler","value", $NumSpieler, "type", "hidden");
# Would be nice, if there is the id of the last inserted List
option_categories( $Line['CatId'] );
}
endTag("td");
# Different layout for Handheld devices
if( $Handheld )
{
endTag("tr");
startTag("tr", "class", "SLHeader" );
}
if( $Handheld )
{
startTag("td", "colspan", 1);
}
else
{
startTag("td", "colspan", 3);
}
echo "Serie: ";
if( $Attribute != "Edit" )
{
echo $Line['Serie'];
}
else
{
if( ! $Line['Serie'] )
{
$Line['Serie'] = 1;
}
startTag("input", "name", "Serie", "type", "text", "value", $Line['Serie'], "size", 3 );
}
if( $Handheld )
{
startTag("td", "colspan", 1);
}
else
{
startTag("td", "colspan", 3 );
}
echo "Tisch: ";
if( $Attribute != "Edit" )
{
echo $Line['Tisch'];
}
else
{
if( ! $Line['Tisch'] )
{
$Line['Tisch'] = 1;
}
startTag("input", "name", "Tisch", "type", "text", "value", $Line['Tisch'],
"size", 3 );
}
endTag("td");
if( $Handheld )
{
startTag("td", "colspan", $NumSpieler-2 );
}
else
{
startTag("td", "colspan", 2+3*($NumSpieler-2));
}
if( $Attribute != "Edit" )
{
echo "Datum: ";
echo $Line['Datum'];
}
else
{
echo "Datum: ";
if( ! $Line['Datum'] )
{
$Line['Datum'] = date("Y-m-d");
}
startTag("input", "name", "Datum", "type", "text", "value", $Line['Datum'],
"size", 10);
}
endTag("td");
endTag("tr");
}
// zweite Zeile mit den Skat-Attributen
startTag("tr", "class", "SLHeader" );
if(( ! $Handheld || $SingleGame ) && !$PlayerOnly )
{
startTag("td", "rowspan", $SingleGame ? 1: 3);
echo "No.";
endTag("td");
startTag("td","class","Vertical","rowspan",$SingleGame ? 1: 3);
echo "Grdw.";
endTag("td");
startTag("td","class","Vertical", "colspan", 1, "rowspan",$SingleGame ? 1: 3);
echo "Sptz.";
endTag("td");
if( !$SingleGame )
{
startTag("td","colspan", 6, "align","center");
echo "Gewinnstufe";
endTag("td");
startTag("td","rowspan", 2, "colspan", 1);
echo "Spiel Wert";
endTag("td");
}
}
if( !$SingleGame || $PlayerOnly )
{
$i = 0;
do
{
if( !$Handheld )
{
startTag("td","rowspan", 2, "colspan", 3);
}
else
{
if( $PlayerOnly )
{
startTag("td","rowspan", 1, "colspan", $NumSpieler );
}
else
{
startTag("td","rowspan", 1, "colspan", 1 );
}
}
#echo "Name: ";
if( $Attribute != "Edit" )
{
echo $Line['Name'];
}
else
{
option_users( "Name$i", $Line['PlayerId'], $i+1 );
}
endTag("td");
$i++;
} while( ($Line = mysql_fetch_array( $sqlExec )) || ( $i < $NumSpieler ));
}
if( !$Handheld )
{
if( $Attribute == "Edit" )
{
startTag("td","class","Vertical","rowspan","3");
echo "Ü.";
endTag("td");
}
startTag("td","class","Vertical","rowspan","3");
echo "E.";
endTag("td");
}
if( !$SingleGame )
{
endTag("tr");
}
if( ( !$Handheld || $SingleGame ) && !$PlayerOnly )
{
if( !$SingleGame )
{
startTag("tr", "class", "SLHeader" );
}
foreach( array("H.", "Sn.", "Sn<br>a.", "Sw.", "Sw.<br>a.", "O." ) as $gt )
{
startTag("td","class","Vertical","rowspan", $SingleGame ? 1 : 2);
echo $gt;
endTag("td");
}
if( !$Handheld )
{
endTag("tr");
#<!-- Abrechnungszeile -->
startTag("tr", "class", "SLHeader" );
}
startTag("td");
echo "+/-";
endTag("td");
if( !$Handheld )
{
for( $i = 0; $i < $NumSpieler; $i++ )
{
foreach( array("Pkt.", "gew.", "verl.") as $gt )
{
startTag("td");
echo $gt;
endTag("td");
}
}
}
else
{
startTag("td","class","Vertical","rowspan",1);
echo "Ü.";
endTag("td");
startTag("td","class","Vertical","rowspan",1);
echo "E.";
endTag("td");
}
endTag("tr");
}
return $NumSpieler;
}
/** Funktion erfragt die Anzahl Spieler und die Anzahl Spiele, die
gespielt werden sollen.
*/
function NeueSpielliste( $SpiellisteId = "" )
{
#<!-- Chose the number of players and the number of games -->
startTag("form", "name", "myform", "action", $_SERVER['PHP_SELF'], "method", "post");
starttag( "div", "class", "Title" );
echo "Neue Spielliste erstellen";
endtag( "div" );
startTag("table", "border", 0);
startTag("tr");
startTag("td");
echo "Anzahl Spieler: ";
endTag("td");
startTag("td");
startTag("select", "name", "NumSpieler" );
startTag("option");
echo 3;
endTag("option");
startTag("option");
echo 4;
endTag("option");
endTag("select");
endTag("td");
endTag("tr");
startTag("tr");
startTag("td");
echo "Anzahl Spiele:";
endTag("td");
startTag("td");
startTag("input", "size", 3, "name", "NumSpiele", "value", 6 );
endTag("td");
endTag("tr");
startTag("tr");
startTag("td", "colspan", 2);
startTag("input", "name", "Mngt", "value", 4, "type", "hidden");
startTag("input", "name", "SpiellisteId", "value", $SpiellisteId, "type", "hidden");
startTag("input", "value", "Weiter", "type", "submit");
endTag("td");
endTag("tr");
endTag("table");
endTag("form");
}
# Bei der Eingabe einer Spielliste �ber ein Handheld device ist die unterste
# Zeile ein Vorw�rts und zur�ckgehen zu den Spielen.
function HandheldFooter( $Columns = 0 )
{
startTag("tr");
startTag("td", "style", "border-right:none;text-align:left;", "colspan", floor($Columns / 2 ));
startTag("input", "name", "zurueck", "value", "Zurück", "type", "submit");
endTag("td");
startTag("td", "style", "border-left:none;text-align:right;", "colspan", $Columns - floor( $Columns/2));
startTag("input", "name", "vor", "value", "Weiter", "type", "submit");
endTag("td");
endTag("tr");
}
/** Funktion dient der Eingabe eines einzelnen Spieles, wenn es sich um ein
* Handheld device handelt. Darstellung ist wie folgt:
* | Spieler Namen ..... |
* | Pkte/Gewonn/Verloren| -> Punkte bis zu diesem Spiel
* | Spielwert�berschrift|
* | Eingabefelder |
* | Pkte/Gewonn/Verloren| -> Punkte nach diesem Spiel
**/
function EditSingleGame( $SpiellisteId, $Spielnummer, $Attribute = false )
{
debug( "EditSingleGame" );
startTag("form", "name", "myform", "action", $_SERVER['PHP_SELF'], "method", "post", "onsubmit", "return CheckEingabe( $Spielnummer )");
startTag("table", "class", "Spielliste");
SingleGamePlayer( $SpiellisteId );
if( $Spielnummer > 0 )
{
SingleGameScore( $SpiellisteId, $Spielnummer - 1 );
}
/** �berschriften
*/
SpiellisteHeader( $Attribute, $SpiellisteId, false, false, true, true );
/** Eingabezeile
*/
SpiellisteBody( $Attribute, $SpiellisteId, true, $Spielnummer);
$NumSpieler = SingleGameFooter( $SpiellisteId, $Spielnummer );
HandheldFooter( 12 );
endTag("table" );
/**
* Diese Felder sind notwenig damit JavaScript die entsprechenden Felder
* findet uns richtig rechnen kann.
*/
for( $j = 0; $j < $NumSpieler; $j++ )
{
for( $i = 0; $i < $Spielnummer + 1; $i++ )
{
if( $i != $Spielnummer-1 )
{
foreach( array("punkte", "gewonnen", "verloren" ) as $gt )
{
startTag("input", "type", "hidden", "value", "",
"name", "$gt$i$j" );
}
}
if( $i != $Spielnummer && $j == 0 ) /** only one time */
{
startTag("input", "type", "hidden",
"readonly", "readonly", "value", "", "name", "Eingepasst$i" );
}
}
startTag("input", "name", "gew_verl$j","type", "hidden", "readonly",
"readonly", "value", "" );
}
startTag("input", "name", "sumeingepasst","type", "hidden" );
startTag("input", "name", "Mngt","value", 4, "type", "hidden");
startTag("input", "name", "Spielnummer","value", $Spielnummer, "type", "hidden");
startTag("input", "name", "SpiellisteId", "type", "hidden", "value", $SpiellisteId, "size", 1, "readonly", "readonly" );
#<!-- End Table -->
endTag("form");
}
/** Funktion gibt die Namen in einer Tabellenzeile aus, die f�r ein
Single Game ben�tigt werden. Dabei werden die Informationen f�r die Spieler,
die Ids mitgesetzt. */
function SingleGamePlayer( $SpiellisteId )
{
$sqlExec = getScoreSheetInfo( $SpiellisteId );
$Line = mysql_fetch_array( $sqlExec );
$NumSpieler = $Line['NumSpieler'];
$NumSpiele = $Line['NumSpiele'];
debug( "NumSpieler: $NumSpieler" );
debug( "NumSpiele: $NumSpiele" );
#<!-- Zeile mit Spielernamen -->
startTag("tr");
$i = 0;
do
{
if( $i % 2 )
{
$class = "SLSpielerHG";
}
else
{
$class = "";
}
startTag("td","class", "$class", "rowspan", 1, "colspan", $NumSpieler == 3 ? 4 : 3);
echo $Line['Name'];
startTag("input","type","hidden","name","Name$i", "value", $Line['PlayerId']);
endTag( "td" );
$i++;
} while( ($Line = mysql_fetch_array( $sqlExec ) ) );
endTag("tr");
}
/** Funktion gibt den Spielstand, bis einschliesslich einer Spielnummer aus.
* R�ckgabe ist eine Tabellenzeile mit Punkte, gewonnen und verlorenen Spielen
* */
function SingleGameScore( $SpiellisteId, $Spielnummer, $ro = true )
{
$sqlExec = ReceiveBodyRows( $SpiellisteId, $Spielnummer );
$Line = mysql_fetch_array( $sqlExec );
$NumSpieler = $Line[NumSpieler];
/** Init */
for( $i = 0; $i < $NumSpieler; $i++ )
{
foreach( array("punkte", "gewonnen", "verloren" ) as $gt )
{
${$gt}[ $i ] = 0;
}
}
startTag( "tr" );
$i = 0;
do
{
if( ! isEingepasst( $Line['Eingepasst'] ) ) # Spiel ist nicht eingepasst
{
$j = $Line['Platznummer'];
# Berechne seinen Punktestand
$punkte[ $j ] += $Line['Spielwert'];
if( $Line['Spielwert'] > 0 )
{
$gewonnen[ $j ] += 1;
}
else
{
$verloren[ $j ] += 1;
}
}
$i++;
} while( ($Line = mysql_fetch_array( $sqlExec ) ) );
/** Spielstand zum aktuellen Spiel (ohne das aktuelle Spiel)
**/
for( $i = 0; $i < $NumSpieler; $i++ )
{
if( $i % 2 )
{
$class = "SLSpielerHG";
}
else
{
$class = "";
}
foreach( array("punkte", "gewonnen", "verloren" ) as $gt )
{
$colspan = 1;
if( ( $gt == "punkte" ) && ( $NumSpieler == 3 ) )
{
$colspan = 2;
}
startTag("td", "class", "$class", "colspan", $colspan );
startTag("input", "type", "text", "size", "2", "readonly", "readonly", "value", ${$gt}[$i], "name", "$gt$Spielnummer$i" );
endTag("td");
}
}
endTag("tr");
}
/** Funktion gibt separat die beiden Felder �berreizt und Eingepasst aus
da diese bei Handheld und nicht Handheld in der Position unterscheiden
**/
function EingepasstUeberreizt( $Attribute, $Line, $eingepasst, $i )
{
if( $Attribute == "Edit" )
{
startTag("td");
if( $Line["Ueberreizt"] )
{
$checked = "checked";
}
else
{
$checked = "";
}
startTag("input", "type", "checkbox", $checked, $checked,
"onChange", "Update( $i )", "name", "Ueberreizt$i" );
endTag("td");
}
#<!-- eingepasste Spiele -->
if( isEingepasst($Line['Eingepasst'] ) )
{
$eingepasst++;
$val = $eingepasst;
}
else
{
$val = "";
}
if( $Attribute == "Edit" )
{
$att = "onClick";
$par = "Eingepasst( $i )";
}
else
{
$att = "";
$par = "";
}
startTag("td");
startTag("input", "type", "text", "readonly", "readonly", "size", "1",
$att, $par, "name", "Eingepasst$i", "value", $val );
endTag("td");
return $eingepasst;
}
/**
* Funktion gibt die Footerzeile in einer Handheldeingabe zur�ck. Diese Zeile
* stellt das Endergebnis nach Steuern dar und ist ist gleichzeitig, klickbar
* f�r die Zuweisung des Alleinspielers
*
* @return: Funktion gibt die Anzahl Spieler zurück, die von der aufrufenden Funktion
* gebraucht wird.
**/
function SingleGameFooter( $SpiellisteId, $Spielnummer )
{
global $CONF;
$Line = "";
$sqlExec = ReceiveFooterData( $SpiellisteId );
while( $l = mysql_fetch_array( $sqlExec ) )
{
$Line[] = $l;
}
$NumSpieler = $Line[0][NumSpieler];
$NumSpiele = $Line[0][NumSpiele];
$pktExtra = ExtraPoints();
$pktGegner = PunkteGegner( $NumSpieler );
startTag( "tr" );
for( $j = 0; $j < $NumSpieler; $j++)
{
if( $NumSpieler > 3 && $j == $Spielnummer % $NumSpieler )
{
$class = "disabled";
$disabled = true;
}
else
{
$class="";
$disabled = false;
}
if( ( $class == "" ) && ( $j % 2 ) )
{
$class = "SLSpielerHG";
}
/** Diese Zeile enth�lt das Endergebnis. Die Einzelkomponenten werden
* in versteckten Zellen gespeichert
**/
$colspan = 1;
if( $NumSpieler == 3 )
{
$colspan = 2;
}
startTag("td", "class", $class, "colspan", $colspan);
startTag("input", "name", "ergebnis$j","size", 3, "type", "text",
"readonly", "readonly", "value", $Line[$j]['Summe'], "onClick", !$disabled ? "UpdateCol( $Spielnummer, $j, 1)" : "" );
startTag("input", "name", "sumpunkte$j","size", 3, "type", "hidden", "readonly", "readonly", "value", $Line[$j]['Spielpunkte'] );
startTag("input", "name", "gegner$j","type", "hidden", "readonly", "readonly", "value", $Line[$j]['Fremdpunkte']);
startTag("input", "name", "extra$j","type", "hidden", "readonly", "readonly", "value", $Line[$j]['Extrapunkte'] );
endTag("td" );
startTag("td", "class", $class);
startTag("input", "name", "sumgewonnen$j","size", 1, "type", "text",
"readonly", "readonly", "value", $Line[$j]['Gewonnen'], "onClick", !$disabled ? "UpdateCol( $Spielnummer, $j, 1)" : "" );
endTag("td");
startTag("td", "class", $class);
startTag("input", "name", "sumverloren$j","size", 1, "type", "text",
"readonly", "readonly", "value", $Line[$j]['Verloren'], "onClick", !$disabled ? "UpdateCol( $Spielnummer, $j, 0)" : "" );
endTag("td");
$sp += $Line[$j]['Verloren'] +$Line[$j]['Gewonnen'];
}
endTag("tr");
return $NumSpieler;
}
function SelectScoreSheetProperties( $Attribute, $SpiellisteId, $NumSpieler,
$NumSpiele, $Handheld)
{
startTag("form", "name", "myform", "action", $_SERVER['PHP_SELF'], "method",
"post", "onsubmit", "return CheckSpieler()");
startTag("table", "class", "Spielliste");
# startTag( "thead" );
$NumSpieler = SpiellisteHeader( $Attribute, $SpiellisteId, $NumSpieler, $NumSpiele, $Handheld );
# endTag( "thead" );
HandheldFooter( $NumSpieler );
endTag("table");
endTag("form");
}
?>