Was das Hauptprobem ist, sind die fehlenden Angaben der action="" in den Formularen im VMS. Aber auch das lässt sich beseitigen
Hab mal eine sehr einfache Form davon auf:
http://jpwfour.kilu.de/
eingebaut, einloggen, dann auf den AJAX Link auf der Startseite.
ajax.php im Hauptverzeichnis:
PHP-Code:
<?php
if (isset ($_GET['content']) && !empty ($_GET['content'])) {
if (strpos ($_GET['content'], '../') !== FALSE) die ('Zugriffsverletzung !');
if ($_GET['content']{0} != '/') $_GET['content'] = '/'.$_GET['content'];
}
require ('lib/functions.lib.php');
db_connect();
require ('lib/session.lib.php');
require ('lib/layout.lib.php');
require ( 'lib/extras.lib.php' );
if (!isset($_GET['content']) || empty ($_GET['content'])) $_GET['content'] = '/intern/startseite';
if (!file_exists('content'.$_GET['content'].'.php')) $_GET['content'] = '/error/keine_seite';
require ( './content'.$_GET['content'].'.php' );
db_close();
exit;
?>
In der header.php natürlich jQuery rein, dann noch ganz unten
HTML-Code:
<div id="ajaxc">
In diesem div wird dann "ausgetauscht".
In die footer.php ganz oben:
HTML-Code:
</div> <!-- #ajaxc, header.php -->
Damit nicht alle Links ausgetauscht werden, man aber andereseits auch nicht jeden Link einzeln editieren muss, hab ich in der layput.lib.php die Menus auch in ein <div> gepackt, dazu:
PHP-Code:
function menuehead($titel){
echo'
usw was bisher drinwar
<div class="ajaxm">
';
}
function menuefoot(){
echo'
</div>
usw was bisher drinwar
';
}
Also neu ist <div class="ajaxm"> bzw. </div>
So, bisher sollte sich noch nix geändert haben Das kommt dann durch den Code in der footer.php, ganz unten nach </body> und vor </html>:
HTML-Code:
<script>
$(".ajaxm a[class!=noaj]").css("border", "2px dotted blue");
$(".ajaxm a[class!=noaj]").click(function (event) {
turl = $(this).attr("href");
treffer = turl.match(/content=[\/a-z0-9]+/i);
$("#ajaxc").slideUp('fast', function() {
$('#ajaxc').load('ajax.php',""+treffer, function() {
$("#ajaxc").slideDown();
$("#ajaxc form").each( function(index, elem) {
if($(elem).attr("action") == ""){
$(elem).attr("action", "index.php?"+treffer);
}
});
});
});
event.preventDefault();
});
</script>
Die 1. Zeile dient nur zum Test die gefundenen Links hervorzuheben.
Dann die URL (also href="") von dem geklickten Link, den alten Inhalt einfahren, die URL dann über die ajax.php abrufen, wenn fertig gealden, wird der Inhalt automatisch ersetzt, dann wieder ausfahren.
Danach wird noch in jedem <form> geschaut, wenn action="" leer ist, dann die URL reinsetzen.
Das beinhaltet jetzt natürlich noch keine gute Fehlererkennung etc. aber es funzt schon mal, die genaue Animation ist ja dann noch beliebig austauschbar.
http://docs.jquery.com/Main_Page Dokumentation
Traffic sparen kann man, in dem man die Javascript Datei direkt einbindet von:
HTML-Code:
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
Muss der Besucher halt dann freigegeben haben.
--
Manche Links sollen davon aber dennoch nicht betroffen sein, bspw. der Logout, da reicht es, dem <a> Tag
HTML-Code:
<a class="noaj" ....
zu verpassen.
Über die Selektoren von jQuery sind einem da ja keine Grenzen gesetzt