Autor Freespacer
Datum 13.01.2007 09:26
Beiträge: stefan schrieb am 13.01.2007 um 07:55:19 Uhr folgendes:

jein


*guck_schief*

stefan schrieb am 13.01.2007 um 07:55:19 Uhr folgendes:

also das automatisch würde ich mir noch mehr automatisch wünschen. ein

$this->_forms['modul']['formname']['element']['name'] = $value;

wäre schon zu viel


Zuviel?

stefan schrieb am 13.01.2007 um 07:55:19 Uhr folgendes:

2 wege sind möglich


Hm...

stefan schrieb am 13.01.2007 um 07:55:19 Uhr folgendes:

1 weg komplett in der ajax classe eine function einbauen die alle elemente ausliest und entsprechend setzt.

würde gehen hätte vorteile weil dann nix mehr manuell gemacht werden müsste ausserdem gehts bei laufzeit aber auch nachteile relativ viel js zu nötig


Wie stellst du dir eine Funktion vor, wenn diese noch nicht mal die Elemente in einem Formular kennt?

stefan schrieb am 13.01.2007 um 07:55:19 Uhr folgendes:

2 weg ne billig lösung

die formular class merkt sich halt die entsprechenden daten. im array oder sonst wie. wobei auch dann das erzeugen des js umfangreich wird weil du ja das array so nicht einfach in js einfügen kannst.


öhm, eigentlich geht es mit JS sogar ganz gut. Nur habe ich dato bis heute noch nicht umgesetzt. Obwohl mit einem Array, lässt sich eine JS-Funktion basteln, die aus dem Array die Elemente und dessen Name daraus die Werte im Formular ausliest. Und dementsprechend ein Request zusammenbaut.

Daher könnte ich mir die Lösung auch ganz gut vorstellen, da wenig JS-Code an den Browser gesendet werden.

Hier so ein kleiner Ansatz mit Array und For-in-Schleife:
http://de.selfhtml.org/javascript/objekte/array.htm#assoziative_arrays
http://de.selfhtml.org/javascript/sprache/schleifen.htm#for_in

stefan schrieb am 13.01.2007 um 07:55:19 Uhr folgendes:

>Wird eigentlich auch der Name des Modules

ja aber das nützt dir nichts

es steht zwar das aktive "haupt" modul zurverfügung das heisst aber noch lange nicht das es nicht ausnahemn gibt

beispiel

mach eine centerbox search die nur aktiv sein soll wenn forum sichtbar

dann würde trotzdem das die box sichtbar wäre natürlich als aktives modul forum gesetzt sein. somit hilft dir das nicht.


Sowas ähnliches habe ich mir auch schon gedacht, dass es so nicht einfach ist.

stefan schrieb am 13.01.2007 um 07:55:19 Uhr folgendes:

ob ajax geladen werden soll oder nicht würde ich bei der lösung

$opnConfig['opnOutput']->SetDisplayVar ($var, $wert);

bleiben. damit kann das modul recht flexibel daten setzen die sich auf die jeweilige box beziehen


Äh, und was nutzt mir im Endeffekt dieser Funktionsaufruf, wenn doch die Klasse class.opn_output.php auch prüfen kann, ob die Klasse $opnConfig['opnajax'] (manuell im Modul) initiert worden ist.

Sorry, ich verstehe es nicht so ganz.

Denn die Klasse $opnConfig['opnajax'] muss von der ersten Initierung bis zum Ende des Scripts (Ausgabe zum Browser) existieren. Damit die Ajax-Klasse weiß, welchen JS-Code im Header gebaut werden soll, die letztendlich von class.opn_output.php aufgerufen wird und leider muss es in einem Rutsch geschehen.

Und was mit der Funktion $opnConfig['opnOutput']->SetDisplayVar ($var, $wert); angeht:
Einmal definiert (inkl. Formularelemente), wird diese einfach vom nachfolgenden Modul überschrieben, oder sehe ich das verkehrt?

Hier ein Auschnitt aus class.opn_output.php:

          function SetDisplayVar ($key, $var, $mode = false) {

               global $opnConfig;

...
               if ($key !== false) {
                    $this->_SetDisplayVar[$key] = $var;
               }
...


In meinen Augen ist der Vorschlag leider nicht gerade flexibel. Stell dir mal 3 Sideboxen und 1 Centerbox vor, die zusammen Ajax verwenden. Und nun?


Gruß

Sebastian


Diese Seite drucken
Diese Seite schließen

Dieser Artikel kommt von: OpenPHPNuke - das Open Source CMS

http://www.openphpnuke.info/