Download Modul Vers. X

Gesperrt
mko
Beiträge: 123
Registriert: Di 1. Feb 2005, 10:26
Wohnort: Österreich
Kontaktdaten:

Download Modul Vers. X

Beitrag von mko » Do 7. Feb 2008, 14:51

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...

emergence
Beiträge: 10606
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 15. Feb 2008, 13:03

gibts einen link zum ansehen ?
*** make your own tools (wishlist :: thx)

slecram
Beiträge: 54
Registriert: Do 1. Nov 2007, 16:05
Kontaktdaten:

Beitrag von slecram » Do 6. Mär 2008, 19:13

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ß

mko
Beiträge: 123
Registriert: Di 1. Feb 2005, 10:26
Wohnort: Österreich
Kontaktdaten:

Beitrag von mko » Fr 7. Mär 2008, 16:14

Der Link sollte images/fileicons/pdf.gif statt upload/images/pdf.gif sein.

slecram
Beiträge: 54
Registriert: Do 1. Nov 2007, 16:05
Kontaktdaten:

Beitrag von slecram » Fr 7. Mär 2008, 16:37

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',
                 );

wosch

Beitrag von wosch » Fr 7. Mär 2008, 21:40

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.

slecram
Beiträge: 54
Registriert: Do 1. Nov 2007, 16:05
Kontaktdaten:

Beitrag von slecram » Fr 7. Mär 2008, 22:58

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..

mko
Beiträge: 123
Registriert: Di 1. Feb 2005, 10:26
Wohnort: Österreich
Kontaktdaten:

Beitrag von mko » Mo 10. Mär 2008, 08:15

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.

slecram
Beiträge: 54
Registriert: Do 1. Nov 2007, 16:05
Kontaktdaten:

Beitrag von slecram » Mo 10. Mär 2008, 15:59

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 ;)

marphin
Beiträge: 196
Registriert: Mo 24. Nov 2003, 13:01

Re: Download Modul Vers. X

Beitrag von marphin » Do 31. Dez 2009, 12:59

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

Gesperrt