Seltsam: Konfigurationseinstellungen werden verworfen

Edanis
Beiträge: 61
Registriert: So 13. Jun 2004, 15:08
Wohnort: Witten
Kontaktdaten:

Beitrag von Edanis » Do 17. Jun 2004, 20:41

Leider kann dem wenig beitragen, außer dass das Problem auftritt wenn auf der Template beliebige Module mit lauten Checkboxen oder Radiobuttons als Eingabeelemente liegen. Ein Textfeld irgendwo oder Auswahlbox und das Problem ist entschärft.

Ich dachte zunächst, eine Konfiguration würde verweigert wenn alle Eingabeelemente keine Werte lidefern (das tun Checkboxen die abgewählt sind, Editfelder haben ein Value), was den Anschein erklärt, die Boxen wären untereinander verbunden. Dann habe ich ein wertloses Editfeld hinzugefügt:

Code: Alles auswählen

Input
echo '<input type="checkbox" value="1"  name="CMS_VAR[1]"'.(("CMS_VALUE[1]" == "1") ? " checked" : "").'>
      <input type="text" name="CMS_VAR[2]" size= "4" maxlength="5">';
das Problem war trotzdem weg.

Das einzige, was mir nur noch einfällt anzustellen, ist die Daten manuell in die Datenbank reinzuschreiben und auszulesen. wozu ich aber keine ahnung habe.

Kann mir jemend verraten, wie und wo die variablen abgespeichert werden, wenn ich eine Template konfiguriere?

MfG,
Edanis

Edanis
Beiträge: 61
Registriert: So 13. Jun 2004, 15:08
Wohnort: Witten
Kontaktdaten:

Beitrag von Edanis » Mo 21. Jun 2004, 01:17

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>&nbsp;</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>&nbsp;<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>&nbsp;</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>';
}

?>

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » Mo 21. Jun 2004, 10:56

Das ist eine super Analyse, und es fordert bestimmt die Spezialisten heraus (ich bin da keiner) :(

Ich bin gespannt, ob es eines Tages dafür ein Bugfix gibt.
Weiterhin viel Spaß und guten Erfolg mit Contenido
Florian

Edanis
Beiträge: 61
Registriert: So 13. Jun 2004, 15:08
Wohnort: Witten
Kontaktdaten:

Beitrag von Edanis » Di 22. Jun 2004, 01:41

Danke sehr für das Lob :)
Bin auch gespannt, das Bug gehört zu harmloseren Dingern und scheint auf eine seltene Konstellation zu treffen, kann sein dass auf Bugfix lange zu warten wird.

Die obige Posting ist witzig, da grüsst das Modul plötzlich in meinem Namen und die Posting hat keine Grusszeile, geplannt war aber andersrum. Lasse ich ausnahmsweise trotzdem so.

MfG, Edanis

Gesperrt