Forum

Moderiert von:
Forum Index
Entwicklerforum
     Entwicklungs Support
     Sidebox + Ajax-Technik
Hilfe anzeigen
Hilfe anzeigen

Seite 1 2 3 vorherige Seite nächste Seite 


Autor Druckerfreundliche DarstellungSidebox + Ajax-Technik
stefan
Beiträge: 2435
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
Geschrieben: 10.12.2006 09:55

ich denke das beste wäre jetzt das mal praktisch in ein modul einzubauen allerdings stellt sich da auch die frage in welches also bei welcher function so wie was ist wenn man kein js an hat? das sollte man berücksichtigen. sinvoll wäre sowas ja z.b. in den admin einstellungen wie sidebox


Zitieren Druckerfreundliche Darstellung nach oben
bdragon
Registriert: 02.12.2001
Beiträge: 570
Wohnort: Kaarst


Sende eine Private Nachricht an bdragon
ICQ
Geschrieben: 10.12.2006 14:48

Wie wäre es mit der Suche?



Zitieren Druckerfreundliche Darstellung nach oben
bdragon
Registriert: 02.12.2001
Beiträge: 570
Wohnort: Kaarst


Sende eine Private Nachricht an bdragon
ICQ
Geschrieben: 13.12.2006 15:07

Zu dem Thema auch ganz aktuell:

Google Web Toolkit

http://code.google.com/webtoolkit/

gruß



B.D.R.A.G.O.N.: Biomechanical Digital Replicant Assembled for Galactic Observation and Nullification

Offiziell infiziert!
OPN Infiziert

Zitieren Druckerfreundliche Darstellung nach oben
Freespacer

Registriert: 03.10.2006
Beiträge: 205
Wohnort: Essen


Sende eine Private Nachricht an Freespacer
Geschrieben: 31.12.2006 00:30

Hallo!

Wollte mich nochmal wegen Ajax melden.

@Stefan:
Das Ajax-Construct-Driver, dass von dir geschrieben wurde, lässt sich das nicht als eigenständige Klasse "class.ajax.php" z.B. in $opnConfig['Ajax'] implementieren?

Und dann jeweils in den Modulen wie folgt:
$opnConfig['Ajax']->Enable_Ajax = true;
// URI zur Ajax-Klasse hinzufügen...
$opnConfig['Ajax']->add_URI = array('content1' => '/module/search/index.php');
// Request zur Ajax-Klasse hinzufügen...
$opnConfig['Ajax']->add_request = array('content1' => 'year=2007');
// Wenn der Request von einem Ajax-Script kommt, dann nachfolgend ausführen...
if($opnConfig['Ajax']->is_Ajax) {
// Inhalt vom Modul zurückgeben.
}


und in der Klasse class.opn_output.php würde ich folgenden Schalter einfügen, was eigentlich auch schon geschehen ist:
if($opnConfig['Ajax']->is_Enabled) {
echo $opnConfig['Ajax']->get_JS();
}


Eine nachträgliche Anpassung des driver_construct_ajax.php, um verschiedene URI der Klasse zu übergeben scheitert leider, weil die Werte nicht öffentlich (z.B. in $opnConfig) zugänglich ist. Daher wäre es mir lieb, wenn die Klasse in $opnConfig geladen wird. Nur weiß ich die Script-Reihenfolge in OPN nicht genau, was zu erst geladen wird und welches zum Schluß.

Und nicht über Umwege wie z.B. im Search-Modul:

$opnConfig['opnOutput']->SetDisplayVar ('function_ajax', array ('get_ajax') );


Gruß

Sebastian


Zitieren Druckerfreundliche Darstellung nach oben
Freespacer

Registriert: 03.10.2006
Beiträge: 205
Wohnort: Essen


Sende eine Private Nachricht an Freespacer
Geschrieben: 05.01.2007 22:25

So, habe den Ajax-Construct-Driver komplett herausgerissen und eine neue Klasse darauf aufgebaut. In der master.php wurde diese Klasse öffentlich in $opnConfig zugänglich gemacht. Die class.opn_output.php wurde diesbezüglich auch umgebaut.

Werde es aber erst nächste Woche im SVN veröffentlichen. Da muss ich noch eine Menge herumfeilen.

Was zum Beispiel funktioniert ist:
- Unter $opnConfig['opnajax'] wurde eine neue Klasse eingefügt class.ajax.php
- Es wird von der Klasse auf Ajax-Elemente zugegriffen.
- Verschiedene Module können auf die Ajax-Elemente zugreifen, ohne das sich die URIs überschneiden.

Noch geplant:
- Das "Search"-Modul wird komplett mit der AJAX-Klasse zusammen funktionieren.
- Die Klasse, die für das Formular zuständig ist, wird für AJAX vorbereitet.
- Fallback-Lösung, falls Ajax bzw. Javascript nicht aktiv ist.

Das driver_construct_ajax.php wird nicht mehr benötigt.

Man kann also gespannt sein.

Gruß

Sebastian


Zitieren Druckerfreundliche Darstellung nach oben
Freespacer

Registriert: 03.10.2006
Beiträge: 205
Wohnort: Essen


Sende eine Private Nachricht an Freespacer
Geschrieben: 07.01.2007 21:09

Mit Experimental Rev. 111 wurde die Ajax-Technik besser ausgefeilt.

Die Klasse class.ajax.php wurde in $opnConfig['opnajax'] integriert, um die Unterstützung von Ajax im ganzen OPN-System zu gewährleisten.

Das Modul "Search" bzw. "Suchen" unterstützt nun auch Ajax.

Was noch fehlt ist eine Überprüfung, ob der Browser Ajax unterstützt. Idee ist, das OPN einmalig einen Ajax-Test-JavaScript lädt und einen Cookie im Browser ablegt, ob JS und Ajax funktionieren. Eine Abfrage, ob Ajax aktiviert ist, wurde bereits im "Search"-Modul integriert. Zum Deaktivieren von Ajax einfach in der Datei index.php folgendes am Anfang einfügen: $opnConfig['opnajax']->DisableAjax(); . Schon läuft es auf dem gewohntem Wege.

Es können x-beliebige Funktionen für verschiedene Formulare und Module eingefügt werden. Die kommen sich nicht in die Quere.

Jetzt muss noch die Klasse class.opn_pagebar.php auch mit Ajax funktionieren, da muss das Zusammenspiel noch funktionieren. Eine Idee habe ich dazu auch schon.

Gruß

Sebastian


Zitieren Druckerfreundliche Darstellung nach oben
stefan
Beiträge: 2435
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
Geschrieben: 08.01.2007 14:48

Mal 2 Anmerkungen

1) Stand Rev. 111 hast du die classe in der master.php geholt.

Das ist nicht ganz so gut. Wenn jemand kein ajax hat / nutz wird dieses trotzdem geladen und braucht Speicher usw...

Du Weisst das OPN auch von der shell z.b. geht und da brauch ich kein ajax

2) Wie ist das mit den Form Daten wie willst du die über geben?

Also ich habe ein Formular mit jedemenge vari. diese müsten automatisch mit ajax auch zurückgegeben werden. Da fehlt ne Routine die die daten holt und mit ins senden setzt.



Erst nachlesen, dann nachdenken, dann nachfragen...
http://www.catb.org/~esr/faqs/smart-questions.html

openPHPnuke Developer

Zitieren Druckerfreundliche Darstellung nach oben
Freespacer

Registriert: 03.10.2006
Beiträge: 205
Wohnort: Essen


Sende eine Private Nachricht an Freespacer
Geschrieben: 08.01.2007 20:34

stefan schrieb am 08.01.2007 um 14:48:27 Uhr folgendes:

Mal 2 Anmerkungen


Nur her mit den Anmerkungen

stefan schrieb am 08.01.2007 um 14:48:27 Uhr folgendes:

1) Stand Rev. 111 hast du die classe in der master.php geholt.

Das ist nicht ganz so gut. Wenn jemand kein ajax hat / nutz wird dieses trotzdem geladen und braucht Speicher usw...


Da müsste man noch einen Schalter einbauen, der abfragt, ob Ajax zugelassen werden soll. (Fallback-Lösung ist schon integriert -> Siehe api/main.php in Search).

Habe ich aus Zeitgründen noch nicht implementiert.

stefan schrieb am 08.01.2007 um 14:48:27 Uhr folgendes:

Du Weisst das OPN auch von der shell z.b. geht und da brauch ich kein ajax


mit der Shell?
Du meinst die Programme links oder lynx?

stefan schrieb am 08.01.2007 um 14:48:27 Uhr folgendes:

2) Wie ist das mit den Form Daten wie willst du die über geben?

Also ich habe ein Formular mit jedemenge vari. diese müsten automatisch mit ajax auch zurückgegeben werden. Da fehlt ne Routine die die daten holt und mit ins senden setzt.


Das funktioniert hier mit JS. Da AJAX ja auch auf JS aufbaut.

Alle verfügbaren Daten im Formular werden in $opnConfig['opnajax']->add_formdata_js oder so ähnlich als JS-Code zur Abfrage der Daten als Request gebaut.

Gruß

Sebastian


Zitieren Druckerfreundliche Darstellung nach oben
stefan
Beiträge: 2435
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
Geschrieben: 08.01.2007 21:21

Freespacer schrieb am 08.01.2007 um 20:34:10 Uhr folgendes:


Da müsste man noch einen Schalter einbauen, der abfragt, ob Ajax zugelassen werden soll.



Ich würde das nicht in der master.php inializieren

Freespacer schrieb am 08.01.2007 um 20:34:10 Uhr folgendes:


mit der Shell?
Du meinst die Programme links oder lynx?



Nö; linux shell - da wo man mit Buchstaben statt Maus spielt

z.b. opn-bin/errorlog.php -delete

oder über die perl schnittstelle opn_engine.pl

wie auch immer opn ist in der lage ein framework auf shell ebene abzubilden und da brauch ich kein ajax im speicher

Freespacer schrieb am 08.01.2007 um 20:34:10 Uhr folgendes:


$opnConfig['opnajax']->add_formdata_js oder so ähnlich als JS-Code zur Abfrage der Daten als Request gebaut.



ja nur ist das nicht ganz so geschickt. weil man im code dann jeden einzeln (oder als array) über geben muss. geschickter wäre wenn er "automatisch" alle elemente holt und über gibt

ne "krücke" wäre denkbar durch die form class aber auch das wäre nur ne krücke


Zitieren Druckerfreundliche Darstellung nach oben
Freespacer

Registriert: 03.10.2006
Beiträge: 205
Wohnort: Essen


Sende eine Private Nachricht an Freespacer
Geschrieben: 13.01.2007 05:57

stefan schrieb am 08.01.2007 um 21:21:56 Uhr folgendes:

Ich würde das nicht in der master.php inializieren


Da du mir ja die Möglichkeit OPN von der Shell zu starten gezeigt hast, so habe ich mir überlegt, ob man die Ajax-Klasse nicht manuell in jeweiligen Modulen nachladen sollte. Und die class.opn_output.php sollte eben prüfen, ob die Ajax-Klasse geladen wurde und entsprechend handeln. Bevor dann die Ajax-Klasse eingebunden wird, wird zuerst geprüft, ob in der Grundeinstellung (Schalter) Ajax eingebunden werden soll oder nicht und ob der Browser dazu in der Lage ist.

stefan schrieb am 08.01.2007 um 21:21:56 Uhr folgendes:

ja nur ist das nicht ganz so geschickt. weil man im code dann jeden einzeln (oder als array) über geben muss. geschickter wäre wenn er "automatisch" alle elemente holt und über gibt

ne "krücke" wäre denkbar durch die form class aber auch das wäre nur ne krücke


Automatisch holen?! Hmmm. Das bedeutet, auch die class.formular.table.php musste wegen der Integration von Ajax daran glauben und dort alle Namen wie auch Input/Textarea/Select-Elemente pro Form pro Modul sich merken. Obwohl dieses Array bereits schon in der Ajax-Klasse gebaut wird, kann man diese in das Formular auslagern, um die Übergabe der Element und deren Namen zu automatisieren. Stimmt schon, sollte man machen.

(Sehe mir gerade die Ajax-Klasse an und da fällt es mir auf, dass man das Array weiter optimieren kann, aber da es ja sowieso nach class.formular.table.php ausgelagert werden soll, werde ich die Optimierung dort vornehmen.)

Dann müsste z.B. wie folgt eingebunden werden:
$this->_forms['modul']['formname']['element']['name'] = $value;

Dann könnte die Ajax-Klasse damit auch "arbeiten", wenn man dieses Array von der Form-Klasse sich holt.

z.B.:
$form = & new opn_FormularClass ('default');
$form->Init ($opnConfig['opn_url'] . '/system/search/index.php', 'post', 'mainsearch');

...

$form->GetFormular ($boxtext);
$opnConfig['opnajax']->add_formdata_js($form->_forms);


Dann muss aber die Klasse class.formular.table.php auch wissen, ob Ajax aktiv ist, dann kann er auch gleich den JS-Aufruf der Ajax-Klasse $opnConfig['opnajax']->ajax_get_function_javascript(true) bzw. $opnConfig['opnajax']->ajax_get_function_javascript() einfügen.

Wird eigentlich auch der Name des Modules wie z.B. "search" irgendwo in $opnConfig gespeichert? Dann kann man den Namen des Modules auch automatisch an die Ajax-Klasse abtreten lassen. (z.b. function search_mainsearch oder function search_mainsearch2) für den Direkt-Aufruf per AJAX in PHP.

Gruß

Sebastian


Zitieren Druckerfreundliche Darstellung nach oben
sortieren nach
Seite 1 2 3 vorherige Seite nächste Seite 

Hilfe anzeigen
Hilfe anzeigen
Vorheriges Thema:  Abhängigkeit der Module
Nächstes Thema:  Developer-Doku

Gehe zu:

Benutzername:
 
Sicherheits-Code
Sicherheits-Code
Neu laden