.. so fülle ich mich gerade: wie jemand, der mit schnitzwerkzeug holz hacken soll - ich versuche z.Z. (im Auftrag eines Kunden) Gallery 1.4.1-RC4 (http://gallery.sf.net) soweit zu modifizieren, dass eine Downloadfunktion (komprimieren + runterladen von ausgewählten Datein bzw. ganzen Alben) nicht nur serverseitig funktioniert, sondern auch, dass mögliche Fehler vernünftig auf der Clientseite abgefangen werden.
dummerweise ist Gallery SO "super" objektorientiert verfasst, dass mir nichts anderes übrig bleibt, als einzelne dateien "quick and dirty" zu verändern - durch diese problematik kann ich z.b. bei der ausgabe der thumbnails keine PHP-basierten zähler verwenden, sondern muss auf javascript vertrauen, d.h. es werden folgende input-tags per javascript erzeugt:
document.write("<input type=hidden name=fileState" + filecount + " value=0>");
document.write("<input type=checkbox name=file[] value=<? echo str_replace(".sized","",str_replace(".thumb","",$worm_infested_cunt)); ?> onChange=toggleState(" + filecount + ")> für download markieren<br>");
das ganze wird dann mit folgender Funktion durchgecheckt und wenn alles korrekt ist, an das download-script übergeben:
function checkSelFiles() {
// first get value of fileCount, later use it for DAU handling
if(fileCounter < 1)
alert("Keine Dateien markiert!");
else if(fileCounter == 1) {
alert("Um eine EINZELNE Datei herunterzuladen, klicken Sie bitte auf den 'direkt herunterladen'-Link unter dem jeweiligen Bild!");
resetForm();
} else if(fileCounter > filecount) {
alert("Dateizähler fehlerhaft (größer als Gesamtzahl der Dateien) - Formular auf Ursprungszustand zurückgesetzt!\nBitte markieren Sie nun nochmals die von Ihnen gewünschten, herunter zu ladenden Dateien.");
fileCounter = 0;
} else {
if(filecount > 100)
addComment = "Hinweis: es kann bei einer sehr großen Anzahl an Dateien (> 200 Dateien) vorkommen, dass das System etwas länger braucht (länger als 2-3 Sekunde), um die Datenmengen zu bewältigen.";
else
addComment = "Die gewünschten Dateien werden nun komprimiert ...";
alert(fileCounter+" Dateien ausgewählt.\n" + addComment);
xWin = window.open("downloader.php?cmd=blank","dlFenestra","width=500,height=300,scrollbars=yes");
document.selectedFilesDownloader.submit();
}
}
das hat bis dato alles wunderbar funktioniert, allerdings NUR im MS Internet Exploder - da der Kunde selber aber sowieso nur diesen einsetzt (soll eine private bilerdatenbank werden), war das bis dato kein problem.
... nun hat ein arbeitskollege allerdings sich gewundert, warum denn das ganze weder in Opera noch im Netscape liefe - also hab ich mich nochmals hingehockt, und es mal mittels einer getElementById-geschichte versucht - was jetzt aber aus dem ruder läuft:
die variable filecount scheint auf einmal nicht mehr gesetzt zu sein, OBWOHL sich an deren verarbeitung NICHTS geändert hat (filecount wird GENAU wie vorher behandelt). Weder in MSIE, Opera noch Mozilla läufts ... vielleicht weiß ja einer von euch hier Rat?
danke im voraus,
cu, w0lf.