Tabelle mit REXNAME

Wie verwendet man Module oder Aktion und passt diese an.

Tabelle mit REXNAME

Beitragvon gunfish » 3. Sep 2010, 17:18

Hi Leute,

ich habe ein Modul geschrieben, das dem User eine Tabelle in einer bestimmten Form vorgibt. Dabei kann er einzelne Zeilen auch zu Überschriften abändern. Aufgrund meiner sehr rudimentären Programmierkenntnisse ist das Ganze zwar noch unelegant gelöst, aber funktionsfähig. Es hat nur den Nachteil, dass Redaxo nicht mitmacht, wenn ich das Modul mehr als einmal im selben Artikel verwende. Hat jemand einen Idee woran das liegen kann?

Hier der Code:

Moduleingabe:

Code: Alles auswählen
<?php

$RV1 = 'REX_VALUE[1]';

if ($RV1 == '' && isset($REX['ACTION']['VALUE'][1]))
  $RV1 = $REX['ACTION']['VALUE'][1];

$RV2 = 'REX_VALUE[2]';

if ($RV2 == '' && isset($REX['ACTION']['VALUE'][2]))
  $RV2 = $REX['ACTION']['VALUE'][2];

$RV3 = 'REX_VALUE[3]';

if ($RV3 == '' && isset($REX['ACTION']['VALUE'][3]))
  $RV3 = $REX['ACTION']['VALUE'][3]; 

$RV4 = 'REX_VALUE[4]';

if ($RV4 == '' && isset($REX['ACTION']['VALUE'][4]))
  $RV4 = $REX['ACTION']['VALUE'][4];

$RV5 = 'REX_VALUE[5]';

if ($RV5 == '' && isset($REX['ACTION']['VALUE'][5]))
  $RV5 = $REX['ACTION']['VALUE'][5];

$RV6 = 'REX_VALUE[6]';

if ($RV6 == '' && isset($REX['ACTION']['VALUE'][6]))
  $RV6 = $REX['ACTION']['VALUE'][6];

$RV7 = 'REX_VALUE[7]';

if ($RV7 == '' && isset($REX['ACTION']['VALUE'][7]))
  $RV7 = $REX['ACTION']['VALUE'][7];

$RV8 = 'REX_VALUE[8]';

if ($RV8 == '' && isset($REX['ACTION']['VALUE'][8]))
  $RV8 = $REX['ACTION']['VALUE'][8];

$rexname1 = split("~~",$RV1); $GLOBALS['rexname1'] = $rexname1;
$rexname2 = split("~~",$RV2); $GLOBALS['rexname2'] = $rexname2;
$rexname3 = split("~~",$RV3); $GLOBALS['rexname3'] = $rexname3;
$rexname4 = split("~~",$RV4); $GLOBALS['rexname4'] = $rexname4;
$rexname5 = split("~~",$RV5); $GLOBALS['rexname5'] = $rexname5;
$rexname6 = split("~~",$RV6); $GLOBALS['rexname6'] = $rexname6;
$rexname7 = split("~~",$RV7); $GLOBALS['rexname7'] = $rexname7;
$rexname8 = split("~~",$RV8); $GLOBALS['rexname8'] = $rexname8;

echo "<script type=\"text/javascript\">\n";
echo "<!--\n";
echo "var rexname6 = new Array();\n";

foreach ($rexname6 as $key => $wert)
{
      echo "rexname6['$key'] = '$wert';\n";
}

echo "//-->\n";
echo "</script>\n";

for ($index = 0; $index < 99; $index++) {
if($rexname8[$index] == '') {
print '
<div class="zeile" id="'.$index.'"><div style="float:left;"><table class="zeile">
<tr>
<td><strong>Platz:</strong></td>
<td><strong>Vorname:</strong></td>
<td><strong>Name:</strong></td>
<td><strong>Vereinsname:</strong></td>
<td style="padding-right:5px;"><strong>Ringe:</strong></td>
<td style="padding-right:5px;"><strong>10er gesamt:</strong></td>
<td><strong>10er innen:</strong></td>
</tr>
<tr>
<td style="padding-right:5px;"><input type="text" class="platz" size="2" name="rexname1['. $index .']" value="'. $rexname1[$index] .'" /></td>
<td style="padding-right:5px;"><input type="text" class="vorname" size="15" name="rexname2['. $index .']" value="'. $rexname2[$index] .'" /></td>
<td style="padding-right:5px;"><input type="text" class="name" size="15" name="rexname3['. $index .']" value="'. $rexname3[$index] .'" /></td>
<td style="padding-right:5px;"><input type="text" class="vereinsname" size="30" name="rexname4['. $index .']" value="'. $rexname4[$index] .'" /></td>
<td style="padding-right:5px;"><input type="text" class="ringe" size="3" name="rexname5['. $index .']" value="'. $rexname5[$index] .'" /></td>
<td style="padding-right:5px;"><input type="text" class="10gesamt" size="3" name="rexname6['. $index .']" value="'. $rexname6[$index] .'" /></td>
<td style="padding-right:5px;"><input type="text" class="10innen" size="3" name="rexname7['. $index .']" value="'. $rexname7[$index] .'" /></td>
</tr>
</table></div><div style="float:left;padding-left:10px;padding-top:16px;"  href="#" onclick="makeHeader('.$index.')";><img src="./media/file_view.gif" /></div></div>';
} else {
      print '<div class="zeile" id="'.$index.'"><div style="float:left;"><strong>&Uuml;berschrift: </strong><br /><input class="header" type="text" size="123" name="rexname8['. $index .']" value="'. $rexname8[$index] .'" /></div><div style="float:left;padding-left:24px;padding-top:16px;" href="#" onclick="makeRow('.$index.')";><img src="./media/file_view.gif" /></div></div>';
}

}

?>

<script language="javascript">

   function makeHeader(index)
   {
      document.getElementById(index).innerHTML =
'<div class="zeile" id="'+index+'"><div style="float:left;"><strong>&Uuml;berschrift: </strong><br /><input class="header" type="text" size="123" name="rexname8['+index+']" value="" /></div><div style="float:left;padding-left:24px;padding-top:16px;" href="#" onclick="makeRow('+index+')";><img src="./media/file_view.gif" /></div></div>';
   }

   function makeRow(index)
   {
      document.getElementById(index).innerHTML =
'<div class="zeile" id="'+index+'"><div style="float:left;"><table class="zeile"><tr><td><strong>Platz:</strong></td><td><strong>Vorname</strong></td><td><strong>Name:</strong></td><td><strong>Vereinsname:</strong></td><td style="padding-right:5px;"><strong>Ringe:</strong></td><td style="padding-right:5px;"><strong>10er gesamt:</strong></td><td><strong>10er innen:</strong></td></tr><tr><td style="padding-right:5px;"><input type="text" class="platz" size="2" name="rexname1['+index+']" value="" /></td><td style="padding-right:5px;"><input type="text" class="vorname" size="15" name="rexname2['+index+']" value="" /></td><td style="padding-right:5px;"><input type="text" class="name" size="15" name="rexname3['+index+']" value="" /></td><td style="padding-right:5px;"><input type="text" class="vereinsname" size="30" name="rexname4['+index+']" value="" /></td><td style="padding-right:5px;"><input type="text" class="ringe" size="3" name="rexname5['+index+']" value="" /></td><td style="padding-right:5px;"><input type="text" class="10gesamt" size="3" name="rexname6['+index+']" value="" /></td><td style="padding-right:5px;"><input type="text" class="10innen" size="3" name="rexname7['+index+']" value="" /></td></tr></table></div><div style="float:left;padding-left:10px;padding-top:16px;"  href="#" onclick="makeHeader('+index+')";><img src="./media/file_view.gif" /></div></div>';
   }

</script>


Modulausgabe:

Code: Alles auswählen
<?php

function array_trim($arr) {
$empty = "1";
for ($i = count($arr); $i > 0; $i--) {
  if ($arr[$i] != "") {
   $arr2[$i] = $arr[$i];
   $empty = "0";
  }
  if ($arr[$i] == "" && $empty == "0") {
   $arr2[$i] = $arr[$i];
  }
} return $arr2;
}

$rexname1 = split("~~","REX_VALUE[1]"); $GLOBALS['rexname1'] = $rexname1;$rexname1 = array_trim($rexname1);
$rexname2 = split("~~","REX_VALUE[2]"); $GLOBALS['rexname2'] = $rexname2;
$rexname3 = split("~~","REX_VALUE[3]"); $GLOBALS['rexname3'] = $rexname3;
$rexname4 = split("~~","REX_VALUE[4]"); $GLOBALS['rexname4'] = $rexname4;
$rexname5 = split("~~","REX_VALUE[5]"); $GLOBALS['rexname5'] = $rexname5;
$rexname6 = split("~~","REX_VALUE[6]"); $GLOBALS['rexname6'] = $rexname6;
$rexname7 = split("~~","REX_VALUE[7]"); $GLOBALS['rexname7'] = $rexname7;
$rexname8 = split("~~","REX_VALUE[8]"); $GLOBALS['rexname8'] = $rexname8;

$amount = count($rexname1) + 1;

for ($index = 0; $index < $amount; $index++) {
if($rexname8[$index] == "") {
print '<table id="zeile">
<tr>
<td width="100px">'.$rexname1[$index].'</td>
<td width="100px">'.$rexname2[$index].'</td>
<td width="250px">'.$rexname3[$index].'</td>
<td width="250px">'.$rexname4[$index].'</td>
<td width="250px">'.$rexname5[$index].'</td>
<td width="250px">'.$rexname6[$index].'</td>
<td width="250px">'.$rexname7[$index].'</td>
</tr>
</table>';
} else {
print '<h2>'.$rexname8[$index].'</h2>';
}
}

?>


Aktion (Presave[ADD/EDIT] / Postsave[ADD/EDIT]):

Code: Alles auswählen
<?php

$rexname1 = rex_request("rexname1","array");
$newname1 = "";
for ( $c = 0; $c < 99; $c++ ) { if (isset($rexname1[$c])) { $newname1 .= $rexname1[$c] . '~~';
} else {
$newname1 .= '~~'; } } if ( isset($REX_ACTION['VALUE'][1]) and $REX_ACTION['VALUE'][1] != '') { $rexname1 = split('~~', $REX_ACTION['VALUE'][1]);
} else {
$REX_ACTION['VALUE'][1] = $newname1; }

$rexname2 = rex_request("rexname2","array");
$newname2 = "";
for ( $c = 0; $c < 99; $c++ ) { if (isset($rexname2[$c])) { $newname2 .= $rexname2[$c] . '~~';
} else {
$newname2 .= '~~'; } } if ( isset($REX_ACTION['VALUE'][2]) and $REX_ACTION['VALUE'][2] != '') { $rexname2 = split('~~', $REX_ACTION['VALUE'][2]);
} else {
$REX_ACTION['VALUE'][2] = $newname2; }

$rexname3 = rex_request("rexname3","array");
$newname3 = "";
for ( $c = 0; $c < 99; $c++ ) { if (isset($rexname3[$c])) { $newname3 .= $rexname3[$c] . '~~';
} else {
$newname3 .= '~~'; } } if ( isset($REX_ACTION['VALUE'][3]) and $REX_ACTION['VALUE'][3] != '') { $rexname3 = split('~~', $REX_ACTION['VALUE'][3]);
} else {
$REX_ACTION['VALUE'][3] = $newname3; }

$rexname4 = rex_request("rexname4","array");
$newname4 = "";
for ( $c = 0; $c < 99; $c++ ) { if (isset($rexname4[$c])) { $newname4 .= $rexname4[$c] . '~~';
} else {
$newname4 .= '~~'; } } if ( isset($REX_ACTION['VALUE'][4]) and $REX_ACTION['VALUE'][4] != '') { $rexname4 = split('~~', $REX_ACTION['VALUE'][4]);
} else {
$REX_ACTION['VALUE'][4] = $newname4; }

$rexname5 = rex_request("rexname5","array");
$newname5 = "";
for ( $c = 0; $c < 99; $c++ ) { if (isset($rexname5[$c])) { $newname5 .= $rexname5[$c] . '~~';
} else {
$newname5 .= '~~'; } } if ( isset($REX_ACTION['VALUE'][5]) and $REX_ACTION['VALUE'][5] != '') { $rexname5 = split('~~', $REX_ACTION['VALUE'][5]);
} else {
$REX_ACTION['VALUE'][5] = $newname5; }

$rexname6 = rex_request("rexname6","array");
$newname6 = "";
for ( $c = 0; $c < 99; $c++ ) { if (isset($rexname6[$c])) { $newname6 .= $rexname6[$c] . '~~';
} else {
$newname6 .= '~~'; } } if ( isset($REX_ACTION['VALUE'][6]) and $REX_ACTION['VALUE'][6] != '') { $rexname6 = split('~~', $REX_ACTION['VALUE'][6]);
} else {
$REX_ACTION['VALUE'][6] = $newname6; }

$rexname7 = rex_request("rexname7","array");
$newname7 = "";
for ( $c = 0; $c < 99; $c++ ) { if (isset($rexname7[$c])) { $newname7 .= $rexname7[$c] . '~~';
} else {
$newname7 .= '~~'; } } if ( isset($REX_ACTION['VALUE'][7]) and $REX_ACTION['VALUE'][7] != '') { $rexname7 = split('~~', $REX_ACTION['VALUE'][7]);
} else {
$REX_ACTION['VALUE'][7] = $newname7; }

$rexname8 = rex_request("rexname8","array");
$newname8 = "";
for ( $c = 0; $c < 99; $c++ ) { if (isset($rexname8[$c])) { $newname8 .= $rexname8[$c] . '~~';
} else {
$newname8 .= '~~'; } } if ( isset($REX_ACTION['VALUE'][8]) and $REX_ACTION['VALUE'][8] != '') { $rexname8 = split('~~', $REX_ACTION['VALUE'][8]);
} else {
$REX_ACTION['VALUE'][8] = $newname8; }

?>
gunfish
 
Beiträge: 17
Registriert: 19. Dez 2008, 14:47

Problem gelöst

Beitragvon gunfish » 21. Sep 2010, 08:25

Falls jemand ein ähnliches Problem hat:

Man sollte in einem Modul keine Funktionen verwenden. Bindet man das Modul öfter als einmal auf einer Seite wird die Funktion doppelt erstellt, was logischerweise zu Konflikten führt.
gunfish
 
Beiträge: 17
Registriert: 19. Dez 2008, 14:47

Beitragvon Xong » 21. Sep 2010, 08:32

Hi gunfish!

Zwei Bemerkungen.
gunfish hat geschrieben:Es hat nur den Nachteil, dass Redaxo nicht mitmacht, wenn ich das Modul mehr als einmal im selben Artikel verwende. Hat jemand einen Idee woran das liegen kann?
Redaxo baut aus allem, was zum Artikel gehört, den PHP-Code zusammen und verarbeitet ihn dann. Das ist an sich kein Nachteil, sondern kann sogar von Vorteil sein. Der Modulersteller muss halt nur darauf achten, dass nach dem Zusammenbau der Module auch gültiger Code entsteht.


gunfish hat geschrieben:Man sollte in einem Modul keine Funktionen verwenden. Bindet man das Modul öfter als einmal auf einer Seite wird die Funktion doppelt erstellt, was logischerweise zu Konflikten führt.
Dafür gibt es die Funktion function_exists().
LG,
Xong

Bild Määääääääääääääääääääääääh!
Benutzeravatar
Xong
 
Beiträge: 1555
Registriert: 5. Jun 2008, 07:30
Wohnort: Hohndorf in Sachsen

Beitragvon gunfish » 21. Sep 2010, 14:50

Danke für den Tipp! Den ersten Post bitte nicht falsch verstehen. Mir war schon klar, dass der Fehler in meinem Code liegt, habs nur vllt. etwas falsch ausgedrückt ;)

Gruß,
Jörg
gunfish
 
Beiträge: 17
Registriert: 19. Dez 2008, 14:47


Zurück zu Module/Aktionen [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste