Autor Freespacer
Datum 08.12.2006 08:32
Beiträge: stefan schrieb am 08.12.2006 um 07:35:18 Uhr folgendes:

ok ich bin ein etwas anderen weg gegangen. die class dient mir dazu das ich php funktionen per ajax aufrufe. somit kann ich den 2ten teil (das verändern von daten) einfach realisieren nur ist da die struktur in opn noch nicht für ausgelegt.


Äh, kannst du mir die Klasse mal zeigen, irgendwie werde ich aus deiner Antwort nicht wirklich schlau.

Hier ist zur Zeit mein kleines Ajax-Script:

function ajax_init() {
     var xmlHttp = false;
     var msxmlhttp = new Array(
               'Msxml2.XMLHTTP',
               'Msxml2.XMLHTTP.3.0',
               'Msxml2.XMLHTTP.4.0',
               'Msxml2.XMLHTTP.5.0');
     for (var i = 0; i < msxmlhttp.length; i++) {
          try {
               xmlHttp = new ActiveXObject(msxmlhttp<em>);
          } catch (e) {
               xmlHttp = null;
          }
     }
     if(!xmlHttp && typeof XMLHttpRequest != 'undefined') {
      xmlHttp = new XMLHttpRequest();
     }
     if(!xmlHttp) { alert('XMLHttpRequest not supported!'); }
     return xmlHttp;
}     

function ajax_content_change(moduleid,xmldata) {
     document.getElementById(moduleid).innerHTML = xmldata;
}

function ajax_get_data(moduleid,requestpath,methode,getpostdata) {
     var xmlHttp = new ajax_init();
     var xmldata;
     if (xmlHttp) {
          if(methode == 'GET') { requestpath = requestpath + "?" + getpostdata; }
          xmlHttp.open(methode, requestpath, true);
          xmlHttp.onreadystatechange = function () {
               switch (xmlHttp.readyState) {
                    case 0 : // UNINITIALIZED
                    case 1 : // LOADING
                    case 2 : // LOADED
                    case 3 : // INTERACTIVE
                         break;
                    case 4 : // COMPLETED
                         xmldata = xmlHttp.responseText;
                         ajax_content_change(moduleid,xmldata);
                         break;
                    default : ; // ERROR STATUS
               }
          };
          if(methode == 'POST') {
               xmlHttp.setRequestHeader(
                    "Content-Type",
                    "application/x-www-form-urlencoded");
               xmlHttp.send(getpostdata);
          } else if(methode == 'GET') {
               xmlHttp.send(null);
          }               
     }
}


Dieses Script ist zwar klein und wird vom Browser in der Regel nur 1x geladen. Ein PHP-Script ohne Ajax müsste für jede Änderung komplett angestossen werden.

Das o.g. Script ist nur die Struktur, laßt sich aber noch viel weiter ausbauen und verfeinern. Mit diesem Script kannst du kleine wie auch große Sachen verändern. Da brauchst du für das Aktualisieren und/oder das Austauschen des Contents/Settings auch keine großartige PHP-Klasse. Gesendet wird ja grundsätzlich mit POST. Das o.g. Script läßt auch GET-Methode zu.

Im Modul brauchst du nur folgenden Code einfügen:

<a href="#" onclick="ajax_get_data('calendar','".$opnConfig['opn_url']."/modules/calendar/plugin/sidebox/calendar/main.php."','POST','date=2007-01-01&time=12:00:00')>Gehe zu Januar 2007</a>


Beim Draufklicken wird das Request an OPN abgesetzt. Leider ist OPN noch nicht in der Lage die Daten zu verarbeiten und ein neues Content zurück zu schicken, um das vorhandene Content zu ersetzen bzw. zu aktualisieren.

Hört sich eigentlich sehr simple an.

Was schlägst du für die Änderungen an OPN vor?

Gruß

Sebastian


Diese Seite drucken
Diese Seite schließen

Dieser Artikel kommt von: OpenPHPNuke - das Open Source CMS

http://www.openphpnuke.info/