TemplateKonfiguration: Änderungen nicht gespeichert...

Gesperrt
Muesli
Beiträge: 17
Registriert: Do 22. Jul 2004, 12:35
Kontaktdaten:

TemplateKonfiguration: Änderungen nicht gespeichert...

Beitrag von Muesli »

Hallo,

ich habe ein Template mit nur einem Modul.
Dieses Modul hat für die Einstellungen nur Checkboxen.

Wenn ich nun alle checkboxen unchecked mache, also, dass alle Optionen deaktiviert sind, so werden die Änderungen nicht gespeichert.
Sobald aber mindestens eine Option aktiviert ist, werden die Einstellungen gespeichert..

In der Datei include.tplcfg_edit.php steht folgendes:

Code: Alles auswählen

$sql = "SELECT number FROM ".$cfg["tab"]["container"]." WHERE idtpl = '".$idtpl."'";
$db->query($sql);
while ($db->next_record()) {

                $i = $db->f("number");
                $CiCMS_VAR = "C".$i."CMS_VAR";
                if (isset($HTTP_POST_VARS[$CiCMS_VAR])) {
                    $tmp = $HTTP_POST_VARS[$CiCMS_VAR];
                } else {
                    unset($tmp);
                }
                
                if (isset($tmp)) {

                        foreach ($tmp as $key=>$value) {
                                $value = urlencode($value);
                                if (!isset($varstring[$i])) $varstring[$i]="";
                                $varstring[$i] = $varstring[$i].$key."=".$value."&";
                        }
                        
                }
        }

// update/insert in container_conf
if (isset($varstring) && is_array($varstring)) {
// Werte speichern...
........

Das Problem dürfte auftreten, da die POST-Variable $HTTP_POST_VARS[$CiCMS_VAR] bei den Modulen, welche deaktiviert waren unset sind, und somit kein Eintrag in die Variable $varstring eingetragen wird.
Dadurch bleibt diese Variable leer, wenn alle Module keine Optionen aktiviert haben und die Werte werden in der Datenbank nicht neu erzeugt.

Ich weiss jetzt auf anhieb gerade nicht, wie ich das umgehen, korrigieren kann, und ich möchte ja auch meine DB nicht schrotten.
Also wenn mir da jemand weiterhelfen kann...

Grüße,
Muesli
SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader »

in dem du einfach im input teil ein hidden input mit einbaust

Code: Alles auswählen

echo "<input type=\"hidden\" name=\"blub\" value=\"blub\">";
Was ich nich ganz verstehe, was du mit dem Modulcode willst.


Möchtest du damit die manuelle Configuration im Modulcode für die CMS_VAR/CMS_VALUE IDs umgehen ?


btw. dein prob ist meiner meinung nach kein bug con contenido, sondern nen prob/bug von deinem modul.

aja, mein vorschlag is nur ne dirtylösung .... hab da so ne idde wie es schöner geht, aber kommst du sicher noch selber drauf ( tip-> drauf reagieren wenn keine Parameter übergeben sind und codegesteuert deine variabel(n) auf deaktiviert setzen )

Gruß

Stefan
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x
Muesli
Beiträge: 17
Registriert: Do 22. Jul 2004, 12:35
Kontaktdaten:

Beitrag von Muesli »

Danke für dein Reply.

Ich weiss nicht wie du darauf kommst, aber die manuelle Konfiguration möchte ich nicht umgehen.
Dies oben ist der Code, so wie er in der Include-Datei für den Bereich der Templatekonfiguration, wie sie mit dem Contenido mitgeliefert wird, steht.
Daher dürfte das Problem also nicht nur bei mir auftauchen und dürfte somit auch als Bug gesehen werden.

Mit dem Absenden des Konfigurationsformulars werden die entsprechenden Werte der Module als _POST-Variablen mitgeliefert.

Wenn ein Template nur Module mit Checkboxen hat und diese alle deaktiviert sind, so wird der übergebene _POST-Krempel nicht als "isset" erkannt. Aus diesem Grund denkt das System, dass er keine Änderungen gibt, die gespeichert werden müssen.

Da ich wenig Zeit für solchen Kram habe, werd ich es erst einmal mit der schmutzigen Lösung umgehen.

Dank dir und in diesem Sinne geb ich nun weiter...

Grüße,
Muesli
SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader »

mh, stimmt ... mann sollte vernüftig lesen ..


also mit dem hiddenimput im inputcode deines moduls solltest du das umgehen.

werd mir heut abend mal des problems genau annehmen, testen und ggf. nen fix rausbringen, wobei mir das so nie aufgefallen ist da meine Module bis jetzt immer irgendetwas gespeichert haben. ( und wenn es nur default werte waren ).


Gruß

Stefan
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x
SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader »

mhhh ..


durhc die arbeit an meinem neuen modul, hab ich mal folgende zwei funktionen geschrieben:

Code: Alles auswählen

		function get_cms_var ( $id )
		{
			$sRes = "CMS_VAR[$vid]";
			eval("\$sRes = \"$sRes\";");
			return $sRes;
		}
		
		function get_cms_value ( $vid)
		{
			$sRes = "CMS_VALUE[$vid]";
			eval("\$sRes = \"$sRes\";");
			return $sRes;
		}
Dies verwende ich im INPUT Teil eines Modules ...

die var funzt einwandfrei, nur die value bringt nix :/

wenn ich die var funktion use um den inpute code zu generien, werden im HTML Source die richtigen namen für die formularfelder generiert "C1CMS[XXXX]", und wenn ich die mit [CMS_VALUE[XXXX]" in eine Variabel schreibe geht das, nur mit der funktion value gehts nicht :/

werd mir morgen mal den core anschaun, heut kein nerf mehr zu, aber vlt. hat ja einer ne idee woran es leigen könne *völligentnerftist*

Gruß

Stefan
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x
SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader »

axo, da fällt mir ein ...

wie hast du die checkbox im input teil definiert ?

versuch es mal so auf die art

Code: Alles auswählen

$test_val = "CMS_VALUE[1000]";
echo "<input class=\"text_medium\" type=\"checkbox\" name=\"CMS_VAR[1000]"\" value=\"0\"";
if ( $test_val == 1 )
{
	echo " checked=checked";
}

echo ">";
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x
Gesperrt