function modTestModule 4.3.2.1b

emergence
Beiträge: 10644
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

function modTestModule 4.3.2.1b

Beitrag von emergence » Di 23. Sep 2003, 18:10

na toll, habe mir die funktion mal etwas genauer angesehen und bin auf 2 fehler gestossen.

1. vielleicht ist ja jemanden aufgefallen, wenn ein fehler in einem script ist, das die lampe zwar rot ist aber keine fehlermeldung erscheint. (war interessant auszutesten warum)

2. bei verschachtelten funktionen erscheint ebenso eine rote lampe obwohl der code an sich funktioniert. zB:
<?php echo "<img src=\"CMS_IMG[CMS_VALUE[1]]\" border=\"0\">"; ?>

ad.1 betrifft den code in contenido/includes/functions.mod.php ca bei zeile 150 ist folgendes zu finden. der code funktioniert nicht weil in config.php die fehlerausgabe unterdrückt wird:

Code: Alles auswählen

    /* Turn off output buffering, eval the code */
    ob_start();
    $output = eval($code);
damits geht durch folgendes ersetzen

Code: Alles auswählen

    /* Turn off output buffering, eval the code */
    ob_start();
    ini_set("display_errors",true);
    $output = eval($code);
    ini_set("display_errors",false);
ad 2.

ich hab mich einfach mit folgendem beholfen (in der selben funktion zu finden etwa zeile 120) :

Code: Alles auswählen

    $code = str_replace('[CMS_VALUE[','[', $code);
    $code = str_replace('[CMS_VAR[','[', $code);
    $code = str_replace(']]',']', $code);
    $code = str_replace('$$CMS_','$CMS_', $code);
    $code = str_replace('CMS_VALUE','$CMS_VALUE', $code);
    $code = str_replace('CMS_VAR','$CMS_VAR', $code);
und siehe da alles lief problemlos...

emergence
Beiträge: 10644
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

verschachtelte funktionen

Beitrag von emergence » Do 2. Okt 2003, 08:20

ergänzung zu verschachtelten funktionen:

mit dieser geänderten version funktioniert nun auch
<?php echo "<img src=\"CMS_IMG[1CMS_VALUE[1]]\" border=\"0\">"; ?>
der wert 1 kann durch ziffern von 0-9 ersetzt werden, wem das zu wenig ist kann den wert ja noch raufdrehen.

Code: Alles auswählen

    $code = str_replace('[CMS_VALUE[','[', $code);
    for ($i = 0; $i < 10; $i++) {
       $code = str_replace('['.$i.'CMS_VALUE[','['.$i, $code);
    }
    $code = str_replace(']]',']', $code);
    $code = str_replace('$$CMS_','$CMS_', $code);
    $code = str_replace('CMS_VALUE','$CMS_VALUE', $code);
    $code = str_replace('CMS_VAR','$CMS_VAR', $code);

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mo 10. Nov 2003, 10:54

Ich bin mir gar nicht mal so sicher, ob wir geschachtelte CMS_VAR-Aufrufe überhaupt unterstützen (scheint wohl zu gehen, aber dennoch: I don't know).

Die fixes unter 1. habe ich dennoch aufgenommen.

emergence
Beiträge: 10644
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 10. Nov 2003, 12:03

verschachtelte aufrufe wie beim modul fliesstext funktionieren innerhalb von contenido ...
nur wird in modTestModul dies nicht berücksichtigt -> bei
ad 2 sorgt nur dafür das keine fehlermeldung kommt und das modul korrekt getestet wird...

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mo 10. Nov 2003, 12:11

Das meinte ich ja: Es "scheint" zu funktionieren, aber ob das wirklich so gewollt ist, muß ich erst noch in Erfahrung bringen.

emergence
Beiträge: 10644
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 11. Nov 2003, 09:52

noch ne anmerkung zu ad 2

warum die zeile überhaupt vorkommt
$code = str_replace('$$CMS_','$CMS_', $code);

ähm das hängt mit dem query und den gelieferten werten zusammen...
hier der code:

Code: Alles auswählen

    $sql = "SELECT type FROM ".$cfg["tab"]["type"];
    $db->query($sql);

    while ($db->next_record())
    {
    	$code = str_replace($db->f("type"),'$'.$db->f("type"), $code);
    }
jetzt passierts aber das CMS_LINK zuerst ersetzt wird durch $CMS_LINK
jedoch ersetzt es dabei ebenfalls CMS_LINKDESC und CMS_LINKTARGET
durch $CMS_LINKDESC und $CMS_LINKTARGET
wenn jetzt CMS_LINKDESC ersetzt wird bekommen wir $$CMS_LINKDESC
bei IMG passiert das selbe...

hast du vielleicht ne elegantere lösung für das problem ?

wie wärs eine ersetzung von CMS_LINK[ durch $CMS_LINK[ vorzunehmen ?

eine ersetzung der betroffenen zeile durch

Code: Alles auswählen

$code = str_replace($db->f("type").'[','$'.$db->f("type").'[', $code);
müsste es ja tun oder was meinst timo ?

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Di 11. Nov 2003, 09:59

Hallo emergence,

ich habe gerade eben mit einem Kollegen gesprochen.

Daß CMS-Variablen geschachtelt werden ist definitiv ein Bug und soll auch so nicht verwendet werden.

Grüße,
Timo

emergence
Beiträge: 10644
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 11. Nov 2003, 10:07

witzig ich hab fast alle meine module dynamisch mittels dieses bugs aufgebaut -> fand das eigentlich ein wirklich geiles feature...

mit ner kleinen bitte wenn ihr das ändert sagt bitte bescheid was geändert wurde, ich hab nämlich keine lust auf diesen bug zu verzichten...

es hat aber den vorteil das ich zB nur mehr ein modul TEXT(HTML) für alle container verwenden kann...

wenn ich dich richtig verstanden habe dürfte eine konstruktion wie diese

<?php echo "CMS_HTMLHEAD[CMS_VALUE[1]]"; ?>

nicht gehen...

bist du dir da sicher ?

thx

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Di 11. Nov 2003, 10:12

Im Moment ändern wir da erstmal nichts, aber ich würde auch daher die Änderungen von dir nicht aufnehmen :)

Ich mache es immer so, daß ich die CMS-Variablen in PHP-Variablen abbilde und damit arbeite.

emergence
Beiträge: 10644
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 11. Nov 2003, 10:18

okay, aber die
anmerkung bei

http://contenido.de/forum/viewtopic.php?p=9870#9867

bleibt trotzdem

emergence
Beiträge: 10644
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 11. Nov 2003, 10:22

timo hat geschrieben:...und soll auch so nicht verwendet werden.
noch ne blöde anmerkung dazu...
wenn das jeder machen würde, würden wir ja genau solche programme schreiben wie microsoft sie liefert oder nicht ?
wenn ich an die zeit vom c64 zurückdenke was geht und was nicht... dann hätte es überhaupt keine genialen demos oder programme gegeben

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Di 11. Nov 2003, 10:41

klar, aber es ist nicht vorgesehen und wird daher nicht unterstützt. Wenn du es dennoch verwendest -> glück auf :)

Unser Ziel ist ein sauberes System, und die Schachtelung ist meiner Meinung nach nicht sauber.

Die Anmerkung muß ich mal durchlesen und verstehen -> bin ich grad nicht fähig zu (zu früh am morgen :))

emergence
Beiträge: 10644
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 11. Nov 2003, 10:53

okay weils du bist ne vereinfachte version ;-) (manchmal schreib ich einfach zu kompliziert)

sagen wir mal zu hast folgenden code
<?php echo "CMS_LINK[1] CMS_LINKDESCR[1] CMS_LINKTARGET[1] ?>

und die bestehende routine fährt drüber
bekommst man folgendes ergebniss
<?php echo "$CMS_LINK[1] $$CMS_LINKDESCR[1] $$CMS_LINKTARGET[1] ?>

und vermeiden kann man dies mit verwendung dieser zeile:
$code = str_replace($db->f("type").'[','$'.$db->f("type").'[', $code);

alles klar ?

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Di 11. Nov 2003, 10:55

ah ok :)

das bau ich gleich ein. Soll ich dir heute abend nen Snapshot hinlegen? Ich hab dir das Doc als HTML gebastelt.

emergence
Beiträge: 10644
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 11. Nov 2003, 11:00

noch was zu den verschachtelten funktionen... sagen wir mal...

ich würde diese konstruktion verwenden (welche momentan definitiv nicht geht)

<?php

$value = CMS_VALUE[1];
echo "CMS_IMG[".$value."]";

?>

wäre das okay es so zu implementieren ?
Zuletzt geändert von emergence am Di 11. Nov 2003, 11:03, insgesamt 1-mal geändert.

Gesperrt