Spezielleres Downloadmodul

ReneWho
Beiträge: 101
Registriert: Do 5. Feb 2004, 13:10
Kontaktdaten:

Spezielleres Downloadmodul

Beitrag von ReneWho » Do 28. Apr 2005, 11:03

Hallöle,

ich habe hier im Forum nach einem Modul gesucht, mit dem
es möglich sein soll, alle dateien eines verzeichnisses aufzulisten,
und diese zum download anzubieten. Dazu soll auch die Möglichkeit
vorhanden sein, eine Beschreibung zum entsprechenden File einzugeben.
Ich habe etwas gefunden, was dem sehr nahe kommt:

Input

Code: Alles auswählen

/** 
 * Download aus Upload-Verzeichnis 
 * 
 * INPUT 
 * 
 * @autor juergen@sotonic.de 
 */ 

?> 
<table cellspacing="0" cellpadding="0" cellpadding="4"> 

    <tr> 
        <td style="font-size:11px">Upload-Zweig:</td> 
        <td> 
            <select name="CMS_VAR[0]"> 
            <option value="0"></option> 
            <?php 

                $sql = "SELECT DISTINCT dirname from ".$cfg["tab"]["upl"]; 

                $db->query($sql); 

                while ( $db->next_record() ) { 

$upload_dir=substr_replace($db->f("dirname"),'',(strlen($db->f("dirname"))-1)); 

                    if ( "CMS_VALUE[0]" == $upload_dir) { 
                        echo '<option selected="selected" value="'.$upload_dir.'">'.$db->f("dirname").'</option>'; 

                    } else { 
                        echo '<option value="'.$upload_dir.'">'.$db->f("dirname").'</option>'; 

                    } 
                } 

            ?> 
            </select> 
        </td> 
    </tr> 
    <tr> 
        <td style="font-size:11px">File-Typ:</td> 
        <td> 
            <select name="CMS_VAR[1]"> 
            <option value="0"></option> 
            <?php 

                $sql = "SELECT DISTINCT filetype from ".$cfg["tab"]["upl"]; //." WHERE dirname='CMS_VALUE[0]/'"; 

                $db->query($sql); 

                while ( $db->next_record() ) { 

$upload_file=$db->f("filetype"); 

                    if ( "CMS_VALUE[1]" == $upload_file) { 
                        echo '<option selected="selected" value="'.$upload_file.'">'.$db->f("filetype").'</option>'; 

                    } else { 
                        echo '<option value="'.$upload_file.'">'.$db->f("filetype").'</option>'; 

                    } 
                } 

            ?> 
            </select> 
        </td> 
    </tr> 

</table> 

<?php

Output

Code: Alles auswählen

<?php 
//Datenbankanfrage wird definiert (was, wo und wie sortiert) 
$sql = "SELECT * FROM ".$cfg["tab"]["upl"]." WHERE filetype = 'CMS_VALUE[1]' AND dirname ='CMS_VALUE[0]/' order by created desc"; 

//Verbindung zur Datenbank wird hergestellt 
$db->query($sql); 

//Zeigt die Datensätze in der Tabelle an 
echo 'Insgesamt stehen ' . $db ->num_rows() . ' Dokumente zur Verfügung:<br><br>'; 

//Link zur Datei im Upload-Verzeichnis 
$href = $cfgClient[$client]["htmlpath"]["frontend"] . $cfgClient[$client]["upload"]; 
$i = 1; 

//Die Datensätze werden in einer Aufzählungsliste widergegeben, die sich über die CSS-Klasse 'ul.download' gestaltem lässt 
echo "<ul class=\"download\">"; 
while ($db->next_record()) 
{ 
$dateityp = 'strtoupper($db->f("filetype")'; 
echo "<li><a title=\"Download: ".$db->f("description")."\" href=\"".$href.$db->f("dirname").$db->f("filename")."\">".$db->f("description")."</a><span class=\"fileattrib\"> <img src=\"".$dateityp.".gif\">, ".round($db->f("size")/1024,1)." KBytes]</span></li>"; 
$i++; 
} 

echo "</ul>"; 
?>


Problem hierbei ist nur, dass die Aufgelisteten Files nicht klickbar sind,
der Dateiname nicht mit angezeigt wird, und ich keinen Kommentar
hinzufügen kann. Leider bin ich auch nicht in der Lage, mir das Ding
so anzupassen, wie ich es benötige.

Könnte mir jemand helfen dat ding in den Griff zu bekommen?
Vielen lieben Dank.

Gruß René

ReneWho
Beiträge: 101
Registriert: Do 5. Feb 2004, 13:10
Kontaktdaten:

Beitrag von ReneWho » Do 28. Apr 2005, 12:15

Naja, wenn ich mir den
code genau durchlese *g* dann klappt das mit
der description ja doch schon :-) habe einen teil
der konfiguration vergessen. was ich jedoch garnicht hinkriege ist:
er soll mir wirklich ALLE dateien im entsprechenden verzeichniss
anzeigen. jetzt ist es so, dass man konfigurieren muss, welchen
filetype er anzeigen soll. *verzweifel*

hüüülllfäääääääääähhhh

lg. René

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Do 28. Apr 2005, 13:16

Na, Du lässt im Output einfach

Code: Alles auswählen

filetype = 'CMS_VALUE[1]' AND 
bei der Abfrage weg.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

ReneWho
Beiträge: 101
Registriert: Do 5. Feb 2004, 13:10
Kontaktdaten:

Beitrag von ReneWho » Do 28. Apr 2005, 13:41

Angeber *gggg*
Nach der abfrage hab ich noch nichtmal gesucht :-)

1000 Dank. Ich glaube du hast meinem Tag heute einen
Sinn gegeben :-))

lieben Gruß René

ReneWho
Beiträge: 101
Registriert: Do 5. Feb 2004, 13:10
Kontaktdaten:

Beitrag von ReneWho » Do 28. Apr 2005, 14:35

Jetzt hätte ich aber doch noch eine frage:

im code steht, dass er beim entsprechenden dateityp (wenn man
ihn selektiert, was jetzt ja nicht mehr so sein soll) das dateitypen
ICON anzeigt beim PDF Doc z.B. das image PDF.gif.

lässt sich das so implementieren, dass er automatisch bei jedem
filetype das richtige ICON anzeigt?

René

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Do 28. Apr 2005, 14:53

Das müsste eigentlich von Hause aus schon gehen, jedoch dürfte der Pfad nicht stimmen.

Statt:

Code: Alles auswählen

$dateityp = 'strtoupper($db->f("filetype")'; 
echo "<li><a title=\"Download: ".$db->f("description")."\" href=\"".$href.$db->f("dirname").$db->f("filename")."\">".$db->f("description")."</a><span class=\"fileattrib\"> <img src=\"".$dateityp.".gif\">, ".round($db->f("size")/1024,1)." KBytes]</span></li>"; 
$i++;
folgenden Code einsetzen:

Code: Alles auswählen

$dateityp = $db->f("filetype"); 
echo "<li><a title=\"Download: ".$db->f("description")."\" href=\"".$href.$db->f("dirname").$db->f("filename")."\">".$db->f("description")."</a><span class=\"fileattrib\"> <img src=\"".$cfg['path']['contenido_fullhtml'].$cfg['path']['images']."filetypes/".$dateityp.".gif\">, ".round($db->f("size")/1024,1)." KBytes]</span></li>"; 
$i++;
Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

ReneWho
Beiträge: 101
Registriert: Do 5. Feb 2004, 13:10
Kontaktdaten:

Beitrag von ReneWho » Do 28. Apr 2005, 16:48

Super! Vielen, vielen dank.
Wenn ich mal was für dich tun kann (z.B. ne nette Flash GUI oder
eine 3D Animation), dann schick mir ne PN.

lieben Gruß René

ReneWho
Beiträge: 101
Registriert: Do 5. Feb 2004, 13:10
Kontaktdaten:

Beitrag von ReneWho » Fr 29. Apr 2005, 09:56

Hallöchen,

damit das modul auch allgemein einsetzbar ist, hier nochmal der code:


==============================================
Nachträgliche Änderungen:

30.04.2005 - Habe die overlib in das Modul integriert. Wenn man einer
Datei in der Dateiverwaltung eine Beschreibung hinzufügt,
so wird diese in einem dynlayer beim Mousover angezeigt.

Beschreibung:

Die overlib kann man sich unter http://www.bosrup.com/web/overlib/
herunterladen. Folgender Code muss in den <head> bereich des
layouts eingefügt werden

Code: Alles auswählen

<script type="text/javascript" src="/scripts/overlib.js"><!-- overLIB (c) Erik Bosrup --></script>
Direkt unter den <body> tag muss folgender Code hinein:

Code: Alles auswählen

<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
Die Pfade zur overlib müsst ihr euch entsprechend anpassen.
Empfehlenswert wäre ein Verzeichnis namens "scripts" im
Hauptverzeichnis des Servers. Alles andere geht natürlich auch.

==============================================

Input

Code: Alles auswählen

/** 
 * Download aus Upload-Verzeichnis 
 * 
 * INPUT 
 * 
 * @autor juergen@sotonic.de 
 */ 

?> 
<table cellspacing="0" cellpadding="0" cellpadding="4"> 

    <tr> 
        <td style="font-size:11px">Upload-Zweig:</td> 
        <td> 
            <select name="CMS_VAR[0]"> 
            <option value="0"></option> 
            <?php 

                $sql = "SELECT DISTINCT dirname from ".$cfg["tab"]["upl"]; 

                $db->query($sql); 

                while ( $db->next_record() ) { 

$upload_dir=substr_replace($db->f("dirname"),'',(strlen($db->f("dirname"))-1)); 

                    if ( "CMS_VALUE[0]" == $upload_dir) { 
                        echo '<option selected="selected" value="'.$upload_dir.'">'.$db->f("dirname").'</option>'; 

                    } else { 
                        echo '<option value="'.$upload_dir.'">'.$db->f("dirname").'</option>'; 

                    } 
                } 

            ?> 
            </select> 
        </td> 
    </tr> 
    <tr> 
        <td style="font-size:11px">File-Typ:</td> 
        <td> 
            <select name="CMS_VAR[1]"> 
            <option value="0"></option> 
            <?php 

                $sql = "SELECT DISTINCT filetype from ".$cfg["tab"]["upl"]; //." WHERE dirname='CMS_VALUE[0]/'"; 

                $db->query($sql); 
                while ( $db->next_record() ) { 

                $upload_file=$db->f("filetype"); 

                    if ( "CMS_VALUE[1]" == $upload_file) { 
                        echo '<option selected="selected" value="'.$upload_file.'">'.$db->f("filetype").'</option>'; 

                    } else { 
                        echo '<option value="'.$upload_file.'">'.$db->f("filetype").'</option>'; 

                    } 
                } 


            ?> 
            </select> 
        </td> 
    </tr> 

</table> 

<?php
Output

Code: Alles auswählen

<?php 
//Datenbankanfrage wird definiert (was, wo und wie sortiert) 
$sql = "SELECT * FROM ".$cfg["tab"]["upl"]." WHERE dirname ='CMS_VALUE[0]/' order by created desc"; 

//Verbindung zur Datenbank wird hergestellt 
$db->query($sql); 

//Zeigt die Datensätze in der Tabelle an 
echo '<span class="filecount">Insgesamt stehen ' . $db ->num_rows() . ' Dokumente zur Verfügung:</span><br><br>'; 

//Link zur Datei im Upload-Verzeichnis 
$href = $cfgClient[$client]["htmlpath"]["frontend"] . $cfgClient[$client]["upload"]; 
$i = 1; 

//Die Datensätze werden in einer Aufzählungsliste widergegeben, die sich über die CSS-Klasse 'ul.download' gestaltem lässt 
echo "<table width=\"*\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"; 
while ($db->next_record()) 
{ 
$dateityp = $db->f("filetype"); 
echo "
  <tr>
    <td width=\"15\"></td>
    <td><a target=\"_blank\" href=\"".$href.$db->f("dirname").$db->f("filename")."\" onmouseover=\"return overlib('".$db->f("description")."',TEXTFONT,'Arial');\" onmouseout=\"return nd();\">".$db->f("filename")."</a></td>
    <td width=\"21\"></td>
    <td><img src=\"".$cfg['path']['contenido_fullhtml'].$cfg['path']['images']."filetypes/".$dateityp.".gif\"></td>
    <td width=\"21\"></td>
    <td><span class=\"fileattrib\"> [".round($db->f("size")/1024,1)." KBytes]</span></td>
  </tr>
"; 
$i++;
} 
echo "</table>"; 
?>


Und das beste zu schluß :-) damit man die ganzen icons nicht selbst
bauen muss, habe ich das weitgehenst erledigt.
Hier könnt ihr euch ein gut gefülltes icon set downloaden

http://www.brainware-studios.com/downlo ... etypes.zip

Darin enthalten sind: avi, bmp, doc, gif, jpg, mov, mp4, mpeg, mpg, pdf, ppt, png, tif, xls und zip.

Viel spaß mit,

gruß René

ReneWho
Beiträge: 101
Registriert: Do 5. Feb 2004, 13:10
Kontaktdaten:

Beitrag von ReneWho » Sa 30. Apr 2005, 14:42

Ah, und die kommando refferenz zur overlib für alle die es eilig haben:

http://www.bosrup.com/web/overlib/?Command_Reference

grüßle René

neu@cidnet.de
Beiträge: 356
Registriert: Do 15. Jan 2004, 21:32
Wohnort: Mönchengladbach
Kontaktdaten:

Beitrag von neu@cidnet.de » Di 3. Mai 2005, 11:12

gibts davon irgendwie ein beispiel, wie das nachher so aussieht?
hats jemand schon verwendet?

ReneWho
Beiträge: 101
Registriert: Do 5. Feb 2004, 13:10
Kontaktdaten:

Beitrag von ReneWho » Di 3. Mai 2005, 19:24

Joup das kann man:

http://kundenbereich.relations.de/cms/front_content.php

Username: demo
Password: demo

gruß René

Lula
Beiträge: 28
Registriert: Sa 5. Jun 2004, 20:58
Kontaktdaten:

Beitrag von Lula » Do 11. Aug 2005, 01:45

Das Modul ist wirklich klasse!
So jetzt kommt das ABER:

Ich habe 2 Mandanten angelegt, beide mit dem Download Modul.
Jetzt zeigt mir das Modul bei Mandant 1 auch die PDF von Mandant 2 an - und umgekehrt!!

Das soll natürlich nicht sein! Was kann ich machen, damit die beiden getrennt behandelt werden.

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Do 11. Aug 2005, 04:50

Ich komme gerade an keine Contenido-Datenbank. Wirf doch mal einen Blick in die <Prefix>_upl-Tabelle. Wenn darin eine Spalte idclient vorkommt, ergänze in allen Abfragen (sowohl Input, als auch Output) ein

Code: Alles auswählen

AND idclient = '".$client."' 
Ggf. vor einem Order By.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Lula
Beiträge: 28
Registriert: Sa 5. Jun 2004, 20:58
Kontaktdaten:

Beitrag von Lula » Do 11. Aug 2005, 10:09

hallo HerrB
danke für die schnelle antwort.

in der Datenbank gibt es in der _upl-Tablle ein idclient.

Ich habe im output folgendes geändert:

Code: Alles auswählen

//Datenbankanfrage wird definiert (was, wo und wie sortiert)
$sql = "SELECT * FROM ".$cfg["tab"]["upl"]." WHERE dirname ='CMS_VALUE[0] AND idclient = '".$client."' /' order by created desc";
Allerdings geht es leider immer noch nicht :-(

Folgende Fehlermeldung:
[11-Aug-2005 11:07:25] next_record called with no query pending.


Wo muss das idclient denn im Input rein?

Sorry für die doofen Fragen....

Lula
Beiträge: 28
Registriert: Sa 5. Jun 2004, 20:58
Kontaktdaten:

Beitrag von Lula » Do 11. Aug 2005, 10:29

ohh ich dumme Nuss!

jetzt gehts:

Code: Alles auswählen

//Datenbankanfrage wird definiert (was, wo und wie sortiert)
$sql = "SELECT * FROM ".$cfg["tab"]["upl"]." WHERE dirname ='CMS_VALUE[0]/' AND idclient = '".$client."' order by created desc";
Danke nochmal

Gesperrt