Fortsetzung der Geschihte
Ich habe das Testmodul
Code: Alles auswählen
$Checked = (("CMS_VALUE[3]" == "1") ? "checked" : "");
echo '<input type="checkbox" value="1" name="CMS_VAR[3]"'.$Checked.'>';
Auf dem Webserver installiert, wo die Seite stehen wird an der ich mitarbeite. Dort läuft MYSQL 4.0.18. also keine alpha wie bei mir lokal, trotzdem dieselbe geschichte.
Da es aber eine Netzwerkkarte zwichen dem Server und Browser liegt, kann ich mir Packete anscheien die verschickt werden.
Also,
1. Das Testmodul enthält nur eine Checkbox, die bereits ausgewählt ist. Das Packet A enthält die Anfrage wo ich die CB ausgewählt lasse und die Konfiguration bestätige. Das Packet B wo ich die CB abwähle und bestätige. In beiden Fällen bleibt die Checkbox ausgewählt, der Server schickt das Wörtchen 'checked' an den Browser.
A enthält gegenüber dem Packet B das Paar "C1CMS_VAR%5B3%5D=1" in der Post-Anfrage, oder übersetzt
"C1CMS_VAR[3]=1" (Container 1, CMS_VAR[3]). bedeutet. B enthält dieses Teil nicht. Der Browser funktioniert also anscheinend.
2. Nun füge ich das wertlose Editfeld zum Modul hinzu:
Code: Alles auswählen
$Checked = (("CMS_VALUE[3]" == "1") ? "checked" : "");
echo '<input type="checkbox" value="1" name="CMS_VAR[3]"'.$Checked.'>
<input type="text" name="CMS_VAR[0]" size= "4" maxlength="5">';
Das Packet A (CB ausgewählt lassen) enthält nun Paare "C1CMS_VAR%5B3%5D=1&C1CMS_VAR%5B0%5D="
oder "C1CMS_VAR[3]=1&C1CMS_VAR[0]=" Das PAcket B enthält aber nur das Paar "C1CMS_VAR%5B0%5D=" oder "C1CMS_VAR[0]=" in der Post-Anfrage.
Also, eine Checkbox die nicht ausgewählt ist, taucht gar nicht in der Anfrage auf, ein Editfeld, auch wenn sein Value undefiniert ist, schon (evtl mit mit leeren Value).
Wenn ich eine Konfiguration bestätige, wird die Post-Anfrage verschickt wo pro Checkbox das Paar "Name=Wert" übergeben wird jedoch nur dann wenn die Checkbox ausgewählt ist. Bei Editfeldern wrd der Variablenname auch dann übergeben, wenn das Wert leer ist (dann aber als "Name=").
Gibt es nur laute Checkboxen und Radios auf der Template und keine davon ist ausgewählt, wird keiner der Namen übergeben. Das mag Contenido anscheinend nicht und verwirft die Konfiguration. Ist ein Editfeld vorhanden wird nur sein Namewertpaar übergeben, die Chekboxennamen zwar nicht aber Contenido wählt sie trotzdem ab.
Wie auch immer, solange ich dem Phänomen nicht witer auf den Grund gehen kann, bleibt mir nur die chirurgische Lösung, ob sie mir gefällt oder nicht. Aus dem Grunde poste ich volständigkeitshalber das entgültige Modul mit dem versteckten Feld
Code: Alles auswählen
Name Authorinfo
Beschreibung
Gibt den Verfassernamen und Datum an so wie das Korrekturdatum und
den Namen des entsprechenden Authors.
Gruss, Edanis
Eingabe:
/***********************************************
*
* CONTENIDO-MODUL INPUT
*
* Angabe des Artikelautors, Erstellungsdatum, Modifikationsdatum und
* des Modifikationsautors.
* Basiert auf dem Modul von Martin Horwath, ver 1.0 (01.10.2003)
*
* Variablen: 1: ist 1 falls Autoren mit Realnamen anzusprechen sind.
* 2: ist 1 falls Datum mit der Zeit azuzeigen ist.
*
* Version 0.0.3
* Datum: 16.06.2004
*/
$TextCSS = ' style="font-family: Verdana,Arial,Helvetica; font-size: 11px;"';
echo '<table cellspacing="0" cellpadding="0" border="0">
<tr><td> </td>
<td><input type="checkbox" value="1"
name="CMS_VAR[1]"'.
(("CMS_VALUE[1]" == "1") ? " checked" : "").'></td>
<td'.$TextCSS.'>Autoren mit dem Realnamen ansprechen.</td>
<td> <input type="hidden" name="CMS_VAR[0]"
value="CMS_VALUE[0]"></td>
</tr>
<tr><td></td>
<td><input type="checkbox" value="1"
name="CMS_VAR[2]"'.
(("CMS_VALUE[2]" == "1") ? " checked" : "").'></td>
<td'.$TextCSS.'>Zeitangabe in die Datumangabe aufnehmen.</td>
<td> </td>
</tr>
</table>';
Ausgabe
<?php
/***********************************************
*
* CONTENIDO-MODUL OUTPUT
*
* Angabe des Artikelautors, Erstellungsdatum, Mpdifikationsdatum und
* des Modifikationsautors.
* Basiert auf dem Modul von Martin Horwath, ver 1.0 (01.10.2003)
*
* Version 0.0.3
* Datum: 16.06.2004
*/
//=========== Anpassung, Vorbelegung =======================
//Autoren mit dem Realnamen (vs. Loginname) angeben.
$ShowRealName = ("CMS_VALUE[1]" == "1");
//Zeit in der Datumangabe mit angeben.
$ShowTime = ("CMS_VALUE[2]" == "1");
//=========== Datensammlung ================================
$query = "SELECT A.author AS author,
A.created AS created,
A.modifiedby AS modifiedby,
B.lastmodified AS lastmodified,
C.realname AS realname,
D.realname AS modrealname
FROM
".$cfg["tab"]["art_lang"]." AS A,
".$cfg["tab"]["content"]." AS B,
".$cfg["tab"]["phplib_auth_user_md5"]." AS C,
".$cfg["tab"]["phplib_auth_user_md5"]." AS D
WHERE
A.idart = '$idart' AND
B.idartlang = A.idartlang AND
C.username = A.author AND
D.username = A.modifiedby
ORDER BY
B.lastmodified DESC";
$db->query($query);
$db->next_record();
$Author = $db->f("author"); // loginname
$Realname = $db->f("realname"); // realname
$LastModified = strtotime($db->f("lastmodified"));
$Created = strtotime($db->f("created"));
$ModifiedBy = $db->f("modifiedby"); // loginname
$ModRealname = $db->f("modrealname");// realname
if ($ShowRealName) {
$AuthorName = $Realname;
$ModName = $ModRealname;
} else {
$AuthorName = $Author;
$ModName = $ModifiedBy;
}
if ($ShowTime) {
$CreatedTime = date("d.m.Y H:i",$Created);
$ModifiedTime = date("d.m.Y H:i",$LastModified);
} else {
$CreatedTime = date("d.m.Y",$Created);
$ModifiedTime = date("d.m.Y",$LastModified);
}
//=========== Ausgabe ======================================
echo '<div class="authorinfo">
<!-- Verfasserinformation -->
<div class="authorinfoline">
Verfasst von <span class="authorinfoname">'.$AuthorName.'</span>
am <span class="authorinfotime">'.$CreatedTime.'</span>.
</div>';
if ($Created != $LastModified) {
echo '<div class="authorinfoline">';
if ($Author == $ModifiedBy){
echo 'Zuletzt bearbeitet am <span class="authorinfotime">'.$ModifiedTime.'</span>.';
} else {
echo 'Bearbeitet von <span class="authorinfoname">'.$ModName.'</span>
am <span class="authorinfotime">'.$ModifiedTime.'</span>.';
}
echo ' </div>
<!-- Verfasserinformation ende -->
</div>';
}
?>