Autor |
Sidebox + Ajax-Technik |
stefan Beiträge:
2435
Wohnort: Münster

|
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
|
 |
bdragon Registriert: 02.12.2001
Beiträge:
570
Wohnort: Kaarst

|
Geschrieben: 10.12.2006 14:48
Wie wäre es mit der Suche?
|
 |
bdragon Registriert: 02.12.2001
Beiträge:
570
Wohnort: Kaarst

|
Geschrieben: 13.12.2006 15:07
B.D.R.A.G.O.N.: Biomechanical Digital Replicant Assembled for Galactic Observation and Nullification
Offiziell infiziert!

|
 |
Freespacer
 Registriert: 03.10.2006
Beiträge:
205
Wohnort: Essen

|
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
|
 |
Freespacer
 Registriert: 03.10.2006
Beiträge:
205
Wohnort: Essen

|
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
|
 |
Freespacer
 Registriert: 03.10.2006
Beiträge:
205
Wohnort: Essen

|
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
|
 |
stefan Beiträge:
2435
Wohnort: Münster

|
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
|
 |
Freespacer
 Registriert: 03.10.2006
Beiträge:
205
Wohnort: Essen

|
Geschrieben: 08.01.2007 20:34
Mal 2 Anmerkungen
 Nur her mit den 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...
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.
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?
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
|
 |
stefan Beiträge:
2435
Wohnort: Münster

|
Geschrieben: 08.01.2007 21:21
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
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
$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
|
 |
Freespacer
 Registriert: 03.10.2006
Beiträge:
205
Wohnort: Essen

|
Geschrieben: 13.01.2007 05:57
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.
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
|
 |
|
sortieren nach
|
Seite 1 2 3 vorherige Seite nächste Seite |