Quixplorer - anpassen und erweitern

Hallo zusammen,

und wieder ich :ps: :smiley:

Ich habe folgendes vor: ich möchte gerne Quixplorer von http://quixplorer.sourceforge.net/ anpassen und modifizieren bzw. mit einigen Funktionen erweitern. Unter http://www.tinywebgallery.com/en/overview.php ist der Quixexplorer schonmal mit einigen Sonderfunktionen ausgestattet worden, allrdings ist das Script recht umfangreich und entsprechend auf Galerien ausgelegt.
Ich möchte aber gerne diesen Quixplorer als Download-Zugang auf meine Webseite integrieren.

Habe folgende Vorstellung:

  • Dateien umbenennen (geht in Tinywebgalerie)
  • Einige Buttons mit in das Layout aufnehmen
  • packen eines zip-Archives dynamisch (ist auch in Tinywebgallerie integriert)
  • Thumbnails bei Bildern (ist auch in Tinywebgallerie integriert)
  • Auflösung und DateigrĂ¶ĂŸe (ist auch in Tinywebgallerie integriert)
  • Dateien als „Nur Download“ ĂŒber die Benutzerverwaltung einstellen

Erst dachte ich ja ich könnte das mal eben schnell umbauen bzw. den Xplorer aus Tinywebgallerie als Standalone umbauen, doch das ist momentan noch eine Nummer zu hoch fĂŒr mich. Da dachte ich ihr könntet mir vieleicht dabei helfen und unterstĂŒtzen?

WÀre schön wenn sich da jemand melden könnte und sich mit mir zusammen den Kopf zerbrechen könnte. Aleine traue ich mir das noch nicht ganz zu.

Hallo zusammen,

versuche gerade den Quixplorer entsprechend zu erweitern, doch leider blicke ich nicht so richtig durch die Struktur durch. Als erstes wollte ich die “umbenennen-Funktion” einbauen indem ich aus dem TinyWebgalerie Script die fun_rename.php implementiere. Habe diese an die entsprechende Stelle ins Quixplorer-Verzeichnis geschoben und in der index.php mit eingebunden. Trotzdem wird mir die Funktion nicht angezeigt. Wo muß ich das noch angeben bzw. welche Dateien mĂŒĂŸen noch zusĂ€tzlich geĂ€ndert werden?

Kann mir da jemand helfen? Ich blicke da nicht so richtig durch wie wo was hingehört. Bitte um UnterstĂŒtzung.

Hallo zusammen,

bin mit meinen Anpassungen ganz gut voran gekommen. Trotzdem bekomme ich teilweise Fehlermeldungen, wo ich nicht weiss wo ich schauen muß. Möchte ein .zip-File temporĂ€r packen und dann direkt herunterladen. Leider bekomme ich dabei folgende Fehlermeldung:

Fatal error: Call to undefined function mosgetparam() in D:\Programme\xampp\htdocs\quixplorer_2_3_1\quixplorer_2_3_1.include\fun_archive.php on line 53

Hier mal der Code:

[code]//------------------------------------------------------------------------------
function zip_items($dir,$name) {

require_once("./_lib/lib_zip.php");

    $cnt=count($GLOBALS['__POST']["selitems"]);
    $abs_dir=get_abs_dir($dir);

    $download = mosGetParam( $_REQUEST, 'download', "n" );

    $archive_name = get_abs_item($dir,$name);
    if( !strstr( $archive_name, "." )) $archive_name .= ".zip";


    $zipfile=new ZipFile();

    for($i=0;$i<$cnt;++$i) {
            $selitem=stripslashes($GLOBALS['__POST']["selitems"][$i]);
            if(!$zipfile->add($abs_dir,$selitem)) {
                    show_error($selitem.": Failed adding item.");
            }
    }
    if(!$zipfile->save( $archive_name )) {
            show_error($name.": Failed saving zipfile.");
    }
    else {
      if( $download=="y" ) {
            require "./_include/fun_down.php";
            download_item( $dir, basename($archive_name), true );
      }
    }
    return;

}

//------------------------------------------------------------------------------
function tgz_items($dir,$name) {

    require_once("./_lib/Tar.php");
    $cnt=count($GLOBALS['__POST']["selitems"]);
    $abs_dir=get_abs_dir($dir);

    $download = mosGetParam( $_REQUEST, 'download', "n" );

    $type = ($GLOBALS['__POST']["type"] == "tgz") ? "gz" : "bz2";
    $archive_name = get_abs_item($dir,$name);
    if( !strstr( $archive_name, "." )) {
      $archive_name .= ".tar.$type";
    }
    $tgz_file = new Archive_Tar($archive_name, $type);

    for($i=0;$i<$cnt;++$i) {
            $selitem=stripslashes($GLOBALS['__POST']["selitems"][$i]);
            $v_list[] = $abs_dir ."/". $selitem;
    }
    if(!$tgz_file->createModify($v_list, '', realpath($GLOBALS['home_dir']))) {
            show_error($name.": Failed saving Archive File.");
    }
    else {
      if( $download=="y" ) {
            require "./_include/fun_down.php";
            download_item( dirname($archive_name), basename($archive_name), true );
      }
    }
    return;

}
//------------------------------------------------------------------------------
function archive_items($dir) {
if(($GLOBALS[“permissions”]&01)!=01) show_error($GLOBALS[“error_msg”][“accessfunc”]);
if(!$GLOBALS[“zip”]) show_error($GLOBALS[“error_msg”][“miscnofunc”]);

    if(isset($GLOBALS['__POST']["name"])) {
            $name=basename(stripslashes($GLOBALS['__POST']["name"]));
            if($name=="") show_error($GLOBALS["error_msg"]["miscnoname"]);
            switch($GLOBALS['__POST']["type"]) {
                    case "zip":        zip_items($dir,$name);        break;
                    default:        tgz_items($dir,$name);
            }
            header("Location: ".make_link("list",$dir,NULL));
    }


    show_header($GLOBALS["messages"]["actarchive"]);
    echo "<br/><form name=\"archform\" method=\"post\" action=\"".str_replace("index2.php", "index3.php", make_link("arch",$dir,NULL))."\">\n";
    echo "<input type=\"hidden\" name=\"no_html\" value=\"1\" />";
    $cnt=count($GLOBALS['__POST']["selitems"]);
    for($i=0;$i<$cnt;++$i) {
            echo "<input type=\"hidden\" name=\"selitems[]\" value=\"".stripslashes($GLOBALS['__POST']["selitems"][$i])."\">\n";
    }

    echo "<table summary=\"\" width=\"300\"><tr><td>".$GLOBALS["messages"]["nameheader"].":</td><td align=\"left\">";
    echo "<input type=\"text\" name=\"name\" size=\"25\"></td></tr>\n";
    echo "<tr><td>".$GLOBALS["messages"]["typeheader"].":</td><td align=\"left\"><select name=\"type\">\n";
    if(extension_loaded("zlib")) {
      echo "<option value=\"zip\">Zip</option>\n";

    }
    if(extension_loaded("bz2")) echo "<option value=\"bz2\">Bzip2</option>\n";
    echo "</select></td></tr>";
    echo "<tr><td>".$GLOBALS["messages"]["downlink"]."?:</td><td align=\"left\">";
    echo "<input type=\"checkbox\" checked=\"checked\" name=\"download\" value=\"y\" /></td></tr>\n";
    echo "<tr><td></td><td align=\"right\"><input type=\"submit\" value=\"".$GLOBALS["messages"]["btncreate"]."\">\n";
    echo "<input type=\"button\" value=\"".$GLOBALS["messages"]["btncancel"];
    echo "\" onclick=\"javascript:location='".make_link("list",$dir,NULL)."';\">\n</td></tr></form></table><br/>\n";

?><?php
}

function extract_item( $dir, $item ) {

if( !is_archive( $item )) {
show_error($GLOBALS[“error_msg”][“extract_noarchive”]);
}
else {

      $archive_name = realpath(get_abs_item($dir,$item));

      $file_info = pathinfo($archive_name);

      if( empty( $dir ))
            $extract_dir = realpath($GLOBALS['home_dir']);
      else
            $extract_dir = realpath( $GLOBALS['home_dir']."/".$dir );

      $ext = $file_info["extension"];

      switch( $ext ) {
            case "zip":

              require_once( "./_lib/pcl/pclzip.lib.php" );
              require_once( "./_lib/pcl/pclerror.lib.php" );
              $zip = new PclZip($archive_name);
              $res = $zip->extract( PCLZIP_OPT_PATH, $extract_dir );
              if( $res < 1 ) {
                    show_error( $GLOBALS["messages"]["extract_failure"]." (". $zip->error_string.")" );
              }
              else
                    $_REQUEST['mosmsg'] = $GLOBALS["messages"]["extract_success"];

            break;

            case "gz":  // a
            case "bz": // lot
            case "bz2": // of
            case "bzip2": // fallthroughs,
            case "tbz": // don't
            case "tar": // wonder
              require_once("./_lib/Tar.php");
              $archive = new Archive_Tar($archive_name, $type);
              if( $archive->extract( $extract_dir ) )
                    $_REQUEST['mosmsg'] = $GLOBALS["messages"]["extract_success"];
              else
                    show_error($GLOBALS["error_msg"]["extract_failure"]);
            break;

            default:
                    show_error($GLOBALS["error_msg"]["extract_unknowntype"]);

            break;
      }
header("Location: ".make_link("list",$dir,NULL));

}
}
//------------------------------------------------------------------------------
?>[/code]

Kann mir jemand sagen wo ich schauen muß bzw. wo ich da was definieren muß?

Wenn man das Ganze mal ins Deutsche ĂŒberzetzt:
Fatal error: Call to undefined function mosgetparam() in D:\Programme\xampp\htdocs\quixplorer_2_3_1\quixplorer_2_3_1.include\fun_archive.php on line 53 - [
]: Aufrufen einer undefinierten Funktion mosgetparam(), in der Datei [
] in der Zeile 53

Hallo,

ja das dachte ich mir schon das da eine undefinierte Funktion hinter steckt. Mein Prblem ist allerdings, das ich nicht weiß wo ich diese Funktion definieren muß, damit das Script funktioniert.

Versuche einige Funktionen aus der TinyWebGallerie in den Quixplorer zu integrieren, was auch relativ gut funktioniert allerdings habe ich noch nicht rausfinden können, wo ich da was definieren muß bzw. Ă€ndern muß, sodaß ich die Funktion im Quixplorer nutzen kann.

Komme da momentan nicht wirklich weiter
 :neutral_face:

Mehr als das wo dĂŒrfte ja wohl noch das wie interessant sein 
 von der Funktion wird schliesslich erwartet, dass sie an der Stelle was bestimmtes macht, und wenn du nicht weisst, was das ist - dann hilft es nichst, wenn du einfach irgendwo eine Funktion definierst, die den passenden Namen hat.

Hallo,

ja das ist ja das Problem. Da ich nach wie vor AnfĂ€nger beim Thema PHP bin, habe ich Schwierigkeiten zu verstehen wo das definiert sein muß. Wie gesagt in der TinyWebGallerie funktioniert das ja nur das als Standalone in den Quixplorer zu implementieren da tue ich mich noch etwas schwer, da ich noch nicht alle ZusammenhĂ€nge 100% verstehe.
Die TinyWebGallerie baut ja auf dem Quixplorer auf und ich dachte ich könnte das mal eben schnell umbauen
 naja dachte


Habe jetzt aber noch ein anderes Problem. Und zwar möchte ich wĂ€hrend eines Uploads das Formular ausblenden und dafĂŒr eine Grafik anzeigen lassen damit der Besucher sieht aha es passiert was. ZusĂ€tzlich möchte ich noch eine Abfrage einbauen ob er die Datei wirklich uploaden möchte aber weder die Meldung erscheint, noch wird das Formular ausgeblendet und die Grafik eingeblendet. Ich vermute ich habe nur irgendwo was falsch eingegeben. Kann mir jemand sagen was ich falsch gemacht habe???

header.php:

[code]function show_header($title) { // header for html-page
header(„Expires: Mon, 26 Jul 1997 05:00:00 GMT“);
header(„Last-Modified: " . gmdate(„D, d M Y H:i:s“) . " GMT“);
header(„Cache-Control: no-cache, must-revalidate“);
header(„Pragma: no-cache“);
header(„Content-Type: text/html; charset=“.$GLOBALS[„charset“]);

    //echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"";
    //echo "\"http://www.w3.org/TR/REC-html40/loose.dtd\">\n";
    echo "<HTML lang=\"".$GLOBALS["language"]."\" dir=\"".$GLOBALS["text_dir"]."\">\n";
    echo "<HEAD>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=".$GLOBALS["charset"]."\">\n";
    echo "<title>" . $GLOBALS["site_name"] . "</title>\n";
    echo "<LINK href=\"_style/style.css\" rel=\"stylesheet\" type=\"text/css\">\n";
    echo "</HEAD>\n<BODY><center>\n<table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"5\">
    <script type=\"text/javascript\">
     function showbar()

{
document.getElementById(‚submitDiv‘).style.display = ‚none‘;
document.getElementById(‚bar‘).style.display = ‚block‘;
return true;
}

\n";
echo „<td class=„title“>“;
if($GLOBALS[„require_login“] && isset($GLOBALS[’__SESSION’][„s_user“])) echo „[“.$GLOBALS[’__SESSION’][„s_user“]."] - „;
echo $title.“ \n\n";
}[/code]

fun_up.php:

[code]// List
echo "

<div id=„bar“ style=„display: none“>

<legend>Bitte warten...</legend>
<br>
        <center><img src=\"_img\progress.gif\"><br><br></center><br></div><div id=\"submitDiv\">
        <FORM enctype=\"multipart/form-data\" action=\"".make_link("upload",$dir,NULL);
    echo "\" method=\"post\">\n<INPUT type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"";
    echo get_max_file_size()."\"><INPUT type=\"hidden\" name=\"confirm\" value=\"true\"><br><br><TABLE>\n";
    for($i=0;$i<10;$i++) {
            echo "<TR><TD nowrap align=\"center\">";
            echo "<INPUT name=\"userfile[]\" type=\"file\" size=\"40\"></TD></TR>\n";
    }

    echo "</TABLE>\n<BR><TABLE><TR><TD><INPUT type=\"submit\" value=\"".$GLOBALS["messages"]["btnupload"];
    echo "\"></TD>\n<TD><input type=\"button\" value=\"".$GLOBALS["messages"]["btncancel"];
    echo "\" onClick=\"javascript:location='".make_link("list",$dir,NULL)."'; return confirm('Wollen Sie die Datei wirklich uploaden?'); return showbar();\">\n</TD></TR></FORM></TABLE></DIV><BR>\n";

    return;

}[/code]

Ich kann den Fehler nicht wirklich finden. Ich habe sowas Ă€hnliches schonmal gemacht in einem anderen Script aber trotzdem bin ich wohl momentan „blind auf den Augen“.

Mit der vorherigen Sache: Was mĂŒĂŸte ich posten um damit weiterzukommen bzw. welchen Inhalt von welcher Datei? Vielleicht ist ja jemand dabei, der sich die MĂŒhe machen möchte die Scripts herunterzuladen und mal „rein zu schauen“??? :hail:

WĂ€re super wenn mir da nochmal jemand helfen könnte


Das ist ein clientseitiges Problem - also poste in solchen FÀllen bitte auch den Code so, wie ihn der Client erhÀlt. Serverseitiger PHP-Code macht die Sache in solchen FÀllen nur undurchschaubarer.

Gibt es Fehlermeldungen in der JS-Konsole des Browsers?

Ein Online-Beispiel könnte auch weiterhelfen.
(Ein solches sollte aber aus halbwegs vernĂŒnftigem Code bestehen, und nicht grob fehlerhaft sein, was Verschachtelung von Elementen angeht etc. Der gezeigte Code mit den vielen BR, CENTER und Ă€hnlichem Kram ist zwar nicht unbedingt grob fehlerhaft, aber trotzdem unschön - Darstellung sollte ĂŒber CSS geregelt werden.)

Hallo,

ohje ohje
 beim anpassen habe ich alles nur lokal getestet (xampp) und jetzt habe ich beim raufladen auf den Webserver festgestellt, das der Button fĂŒr das Hochladen der Dateien nicht funktioniert. Keine Ahnung woran das jetzt liegen kann. Wusste nicht das es einen Unterschied gibt ob ich das lokal ausfĂŒhre oder auf einem Webserver :astonished:

Lokal funktioniert der Button problemlos nur auf dem Webserver wird der Button deaktiviert obwohl ich als Admin rein gehe mit vollen Berechtigungen. Ob das an dem Upload-Formular liegt???

SonnenfleckenaktivitĂ€t kann’s natĂŒrlich auch immer sein 


Da mein Kaffeesatz von heute morgen leider schon entsorgt ist, kann ich nur wiederholen, dass ein Online-Beispiel (mit detailierter Problembeschreibung) vermutlich am meisten zur KlÀrung beitragen könnte.

Habe gerade das Script mal im Original (ohne Anpassungen) raufgeladen. Da funktioniert der Button fĂŒr den Upload auch nicht. Könnte das an meinem Provider liegen? Bin bei 1&1. Muß der das freigeben oder sowas???

Es kann sein, dass es bestimmte Serverspezifikationen erfordert (mir fĂ€llt der Name fĂŒr das zutreffende nicht ein), die dir 1 und 1 nicht bietet.

ja ja schon gut habe es verstanden
 :smiley:

hier kann man mal Einsicht nehmen:

http://www.test.mocom-voerde.de/test/index.php

Benutzer: admin
Pass: test

ohje
 wie finde ich das jetzt heraus welche Spezifikationen ich dafĂŒr brauche?

Fein - und nu’?

Wo finde ich jetzt die besagte FunktionalitÀt?

Ja bei „Archiv erstellen“ da habe ich diese Fehlermeldung mit der undefinierten Sache und beim „Hochladen“ was aber gerade deaktiviert ist und ich leider nicht weiss warum das so ist. Vielleicht sollte ich mal bei 1&1 anrufen um zu erfragen ob das dort ĂŒberhaupt lĂ€uft oder ob man irgendwas einstellen muß.

Ich sag ja lokal gin der „Hochladen“ Button problemlos. :susp:

Na dann hat das Online-Beispiel jetzt auch nicht gerade viel Aussagekraft 


Da ist an der Stelle nur ein Bild eingebunden, und keinerlei Link drum herum, wie bei den anderen Buttons. Da kann also nicht viel “funktionieren”, weil ein Bild keine “Funktion” hat.

Ob du das nun selbst beim Editieren irgendwelcher Templates verbockt hast, oder ob das Script die Option automatisch deaktiviert hat (weil bspw. Einstellungen zu Speicherpfaden fĂŒr hochgeladene Dateien fehlen, oder keine Schreibrechte vorhanden sind) - das kann man mit unseren Möglichkeiten an Hand dieser Demo jetzt immer noch nicht herausfinden.

Edit:
Folgender Eintrag in der conf.php

// the home directory for the filemanager: (use '/', not '\' or '\\', no trailing '/') $GLOBALS["home_dir"] = "D:/Programme/xampp/htdocs";
mutet zwar etwas seltsam an - aber darĂŒber steht wiederum, dass diese Werte nur benutzt wĂŒrden, wenn $require_login==false ist, was ja aber nicht der Fall ist.

Habe gerade eben mit dem Support von 1&1 gesprochen, die wollen das mal prĂŒfen. Das Original-Script lĂ€uft nĂ€mlich auch nicht. Ja ich weiß da kann man dann noch nicht viel ermitteln wenn das deaktiviert ist.

Rechte mĂŒĂŸten laut readme alle stimmen. Ich warte erst einmal ab was 1&1 dazu sagt. Vielleicht ist das bei denen ja tatsĂ€chlich nicht so ohne weiters möglich. Ich wĂŒrde Vorschlagen das ich mich wieder melde wenn ich da nĂ€heres weiss.

Das ganze mal bei bplaced hochladen?

Ja das werde ich sowieso machen wenn ich gleich Feierabend habe. Wird aber erst gegen Abend sein.

Schönen Guten Abend,

so habe das ganze Script jetzt mal bei bplaced hochgeladen und siehe da der Upload-Button funktioniert. Scheint wohl an 1&1 zu liegen. Naja mal abwarten was die dazu sagen.

So habe nun auch Antwort von 1&1 bekommen. Da mussten in der conf.php und in der fun_list.php Änderungen vorgenommen werden if(get_cfg_var("file_uploads")) mußte geĂ€ndert werden in if(ini_get("file_uploads")) und ein Zusatzeintrag in die conf.php $GLOBALS["file_uploads"] = true; damit es bei denen lĂ€uft. Ist wohl ein Fehler des Programmierers des Original Scriptes sagten die dort. Naja ich kann das nicht einschĂ€tzen, da es ja bei bplaced ohne diese Änderung lief. Hauptsache ein Problem weniger. :smiley:

Nach wie vor offen ist das mit der Uploadgrafik. Ich werde gleich noch mal schauen ob ich da weiter komme, ansonsten nehme ich Hilfe sehr gerne entgegen.