Seite 1 von 1

Download Modul Vers. X

Verfasst: Do 7. Feb 2008, 14:51
von mko
Liebe Forum-User!

Anbei ein weiteres Downloadmodul mit folgenden Eigenschaften:

- Alphabetische Sortierung
- Anzeige Ordner
- Anzeige Symbolic Links
- Anzeige Dateien und Ordner auch mit Sonderzeichen
- Anzeige Filetyp und Größe
- 2 spaltiges Layout

Alle Elemente werden aus dem Dateisystem gelesen und in einem Array sortiert.

Input:

Code: Alles auswählen

?><?php

$cms_dirname = "CMS_VALUE[1]";

#Choose folder
echo '
<table cellpadding="0" cellspacing="0" border="0">
   <tr><td class="text_medium" style="padding:5px">
   Pfad, relativ zu DOCUMENT_ROOT '.$_SERVER[DOCUMENT_ROOT].'
   <input type="text" name="CMS_VAR[1]" value="CMS_VALUE[1]" style="width:200px">
   &nbsp;<input type="image" src="images/submit.gif">
   </td></tr>
</table>';
?><?php
Output:

Code: Alles auswählen

<?php


$dirname = "CMS_VALUE[1]";

$verzeichnisse = array();
$dateien = array();
$links= array();


$fileicon  = array(
                 ''    => 'upload/images/file.gif',
                 '*'    => 'upload/images/file.gif',
                 'bz2'  => 'upload/images/rarfile.gif',
                 'c'    => 'upload/images/cfile.gif',
                 'cpp'  => 'upload/images/cppfile.gif',
                 'doc'  => 'upload/images/docfile.gif',
                 'exe'  => 'upload/images/exefile.gif',
                 'h'    => 'upload/images/hfile.gif',
                 'htm'  => 'upload/images/htmfile.gif',
                 'html' => 'upload/images/htmfile.gif',
                 'gif'  => 'upload/images/imgfile.gif',
                 'gz'   => 'upload/images/zipfile.gif',
                 'jpg'  => 'upload/images/imgfile.gif',
                 'js'   => 'upload/images/jsfile.gif',
                 'm'    => 'upload/images/mfile.gif',
                 'mp3'  => 'upload/images/mpgfile.gif',
                 'mpg'  => 'upload/images/mpgfile.gif',
                 'pdf'  => 'upload/images/pdffile.gif',
                 'png'  => 'upload/images/imgfile.gif',
                 'ppt'  => 'upload/images/pptfile.gif',
                 'rar'  => 'upload/images/rarfile.gif',
                 'swf'  => 'upload/images/swffile.gif',
                 'txt'  => 'upload/images/txtfile.gif',
                 'xls'  => 'upload/images/xlsfile.gif',
                 'zip'  => 'upload/images/zipfile.gif',
                 'dir'  => 'upload/images/folder.gif',
                 'lnk'  => 'upload/images/lnkfile.gif'
                 );


$liste = '';

if ($_REQUEST['d'])
{
	$subdir = str_replace("..","",base64_decode(rawurldecode($_REQUEST['d'])));
	$dirname.= $subdir;     
}



if (is_dir($dirname)) 
//if ($dirname) 
{
	//Herkunft
	$subdir_path = '>> <a href="'.$_SERVER['PHP_SELF'] . '?idart=' . $_REQUEST['idart'] . '&idcat=' . $_REQUEST['idcat'] . '">Home </a>';
	if ($subdir)
	{
	$ptmp = explode("/", $subdir);
	$sp = array();
	foreach($ptmp as $item)
	{
		if ($item)
		{
			$sp[] = $item;
			$subdir_path.= ' - <a href="' . $_SERVER['PHP_SELF'] . '?idart=' . $_REQUEST['idart'] . '&idcat=' . $_REQUEST['idcat'] . '&d=' . rawurlencode(base64_encode('/' . implode('/', $sp))) . '">' . $item . '</a>';
		}
	}
	}
}	
	echo '
	<span style="margin: 10px 0px;">'.$subdir_path.'</span><br><br>
	<table width=100%>
	';


$lese_dir = opendir($dirname);
while($datei = readdir($lese_dir)) {
  if($datei != '..' && $datei != '.' && is_dir($dirname.'/'.$datei)) array_push($verzeichnisse, $datei);
}
closedir($lese_dir);

$lese_dir = opendir($dirname);
while($datei = readdir($lese_dir)) {
  if(is_file($dirname.'/'.$datei)) array_push($dateien, $datei);
  if(is_link($dirname.'/'.$datei)) array_push($links, $datei);
}
closedir($lese_dir);

natcasesort($verzeichnisse);
$verzeichnisse = array_values($verzeichnisse);
natcasesort($dateien);
$dateien = array_values($dateien);
natcasesort($links);
$links= array_values($links);

for($i=0; $i<sizeof($verzeichnisse); $i++) {
  $uri = $_SERVER['PHP_SELF'] . '?idart=' . $_REQUEST['idart'] . '&idcat=' . $_REQUEST['idcat'] . '&d=' . rawurlencode(base64_encode($subdir.'/'.$verzeichnisse[$i]));
  if ($i%2==0) {
  $liste .= '<tr><td><img src='.$fileicon[dir].' alt=icon></td><td width=48%><a href='.$uri.'>'.$verzeichnisse[$i].'</a></td>';} else {
  $liste .= '<td><img src='.$fileicon[dir].' alt=icon></td><td width=48%><a href='.$uri.'>'.$verzeichnisse[$i].'</a></td></tr>';}
  if ((($i+1)%2==1) AND (($i+1)==sizeof($verzeichnisse))) {
   $liste .= '<td>&nbsp;</td><td width=48%>&nbsp;</td></tr>';
  }
}


for($i=0; $i<sizeof($links); $i++) {
  if ($i%2==0){
  $liste .= '<tr><td><img src='.$fileicon[lnk].' alt=link></td><td width=48%><a href='.readlink($dirname.'/'.$links[$i]).' target=_blank>'.$links[$i].'</a></td>';}else {
  $liste .= '<td><img src='.$fileicon[lnk].' alt=link></td><td width=48%><a href='.readlink($dirname.'/'.$links[$i]).' target=_blank>'.$links[$i].'</a></td></tr>';}
  if ((($i+1)%2==1) AND (($i+1)==sizeof($links))) {
   $liste .= '<td>&nbsp;</td><td width=48%>&nbsp;</td></tr>';
  }
}


for($i=0; $i<sizeof($dateien); $i++) {
  $info = pathinfo($dirname.'/'.$dateien[$i]);
  $endung = $info['extension'];
  $groesse = filesize($dirname.'/'.$dateien[$i]);
  if($groesse < 1024) {
    $einheit = 'Byte';
  } else if($groesse >= 1024 && $groesse < 1048576) {
    $groesse = round($groesse / 1024);
    $einheit = 'KB';
  } else {
    $groesse = round($groesse / 1024 / 1024);
    $einheit = 'MB';
   }
  $groesse = number_format($groesse, 0, ',', '.');
  $affe = $dirname.'/'.$dateien[$i];
  $encoded = implode("/", array_map("rawurlencode", explode("/", $affe)));
  if ($i%2==0){
  $liste .= '<tr><td><img src='.$fileicon[$endung].'> </td><td width=48%><a href='.$encoded.' target=_new>'.htmlentities($dateien[$i]).'</a> ('.$groesse.' '.$einheit.')</td>';} else {
  $liste .= '<td><img src='.$fileicon[$endung].'> </td><td width=48%><a href='.$encoded.' target=_new>'.htmlentities($dateien[$i]).'</a> ('.$groesse.' '.$einheit.')</td></tr>';}
  if ((($i+1)%2==1) AND (($i+1)==sizeof($dateien))) {
   $liste .= '<td>&nbsp;</td><td width=48%>&nbsp;</td></tr>';
  } 
}


//echo '<table>';
echo $liste;
echo '</table>';

php?>
Die Icongifs sind die bereits bekannten aus den anderen Downloadmodulen...

Verfasst: Fr 15. Feb 2008, 13:03
von emergence
gibts einen link zum ansehen ?

Verfasst: Do 6. Mär 2008, 19:13
von slecram
moin,
sag mir doch mal bitte wie ich die Icons richtig verlinke...

die icons liegen ins /cms/images/fileicons/
bekomme die einfach net verlinkt...

gruß

Verfasst: Fr 7. Mär 2008, 16:14
von mko
Der Link sollte images/fileicons/pdf.gif statt upload/images/pdf.gif sein.

Verfasst: Fr 7. Mär 2008, 16:37
von slecram
geht net...

Code: Alles auswählen

$fileicon  = array(
                 '.*'    => 'images/fileicons/file.gif',
                 '.avi'  => 'images/fileicons/mediafile.gif',
                 '.bz2'  => 'images/fileicons/rarfile.gif',
                 '.doc'  => 'images/fileicons/docfile.gif',
                 '.exe'  => 'images/fileicons/exefile.gif',
                 '.htm'  => 'images/fileicons/htmfile.gif',
                 '.html' => 'images/fileicons/htmfile.gif',
                 '.gif'  => 'images/fileicons/imgfile.gif',
                 '.jpg'  => 'images/fileicons/imgfile.gif',
                 '.mp3'  => 'images/fileicons/mediafile.gif',
                 '.mpg'  => 'images/fileicons/mediafile.gif',
                 '.pdf'  => 'images/fileicons/pdffile.gif',
                 '.png'  => 'images/fileicons/imgfile.gif',
                 '.ppt'  => 'images/fileicons/pptfile.gif',
                 '.pps'  => 'images/fileicons/pptfile.gif',
                 '.rar'  => 'images/fileicons/rarfile.gif',
                 '.txt'  => 'images/fileicons/txtfile.gif',
                 '.xls'  => 'images/fileicons/xlsfile.gif',
                 '.zip'  => 'images/fileicons/zipfile.gif',
                 );

Verfasst: Fr 7. Mär 2008, 21:40
von wosch
Ich habe mich dull&dämlich gesucht ... *grrrrrrrrr*
Ein Hinweis von @mko wäre hilfreich gewesen.

Der Pfad zu den Download-Dateien muß bei dem Modul von der Basis contenido aus angegeben werden, also so:
../cms/upload/subdir1/subdir_x/

Nur dann werden die Dateien im Unterverzeichnis subdir_x angezeigt.

Verfasst: Fr 7. Mär 2008, 22:58
von slecram
der pfad zu den downloaddateien lief ohne probs:

upload/downloads/

jedoch der pfad zu den icon dateien bereitet mir schrierigkeiten...
die icons werden einfach net angezeigt..

Verfasst: Mo 10. Mär 2008, 08:15
von mko
Sorry - war im Urlaub. Daher nun ein paar Antworten zu den offenen Fragen:

#Das Downloadverzeichnis:

z.B.: cms/upload/formulare

In der Konfiguration muss dann der Pfad nach cms (=Mandantenverzeichnis) angegeben werden. In diesem Fall eben upload/formulare => Alle Ordner und Dateien unter formulare werden angezeigt.

#Die Icons:

z.B.: cms/images/

Der Ordner für die Icons (images) liegt ebenfalls im Mandantenverzeichnis (cms).

Auf Dateirechte achten, wenn die Icons per FTP abgeloadet werden.

#Beispiel zum Anschauen:

Gibt es leider noch nicht, da wir dieses Modul im Intranet verwenden.

Verfasst: Mo 10. Mär 2008, 15:59
von slecram
ein . vor der dateiendung kann ganz schön große auswirkungen haben... :D

manchmal sieht man den wald vor lauter bäumen net :P

thx ;)

Re: Download Modul Vers. X

Verfasst: Do 31. Dez 2009, 12:59
von marphin
Hallo,

kann mir jemand dabei helfen, die Ausgabe einspaltig zu bekommen? Ich hatte es schon soweit einspaltig, dann wurde aber nur jede zweite Datei angezeigt!

Vielen Dank und allen einen Guten Rutsch und ein gesundes und glückliches Jahr 2010
Martin