Endless Downloadliste

Gesperrt
wewo
Beiträge: 45
Registriert: So 8. Aug 2004, 19:08
Wohnort: Graz
Kontaktdaten:

Endless Downloadliste

Beitrag von wewo »

Hallo,

Nachdem ich mit der Downloadliste nicht ganz zufrieden war, hab ich mal eine neue programmiert ;)

Features:
-> unbegrenzte Anzahl an Downloads
-> Mehrmandantenfähig
-> Ausgabe mit fileSize und Dateityp Icon
-> Eingabe eines Linktextes



Wichtig:
Ihr braucht die Erweiterung aus diesem Thread:
http://contenido.org/forum/viewtopic.php?t=3590

Ist zwar noch nicht viel getestet, klappt bei mir aber einwandfrei. Contenido 4.4.4

Viel Spaß damit:

Input:

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL - INPUT
*
* Endless Unique Downloadlist
*
* Author:  Wenzel Wondra <wondra@it-studio.com>
* Copyright:  (c)2005 IT Studio Hendrich & Wondra OEG
* Created:     17-02-2005
* Modified:    18-02-2005
************************************************/


$query = "SELECT * FROM ".$cfg["tab"]["upl"]." WHERE idclient='$client' AND filetype IN ('pdf', 'tif', 'zip', 'doc')";

$db->query($query);


while ($db->next_record()){
			$medias[] = array('idupl'=> $db->f('idupl'), 'filename' =>$db->f('filename'));
}
echo '<table><tr><td class="text_medium"><b>Datei</b></td><td class="text_medium"><b>Linktext</b></td>';
$CMS_VALUE = array_unique($CMS_VALUE);

for ($i=0; $i <= count($CMS_VALUE); $i+=2){
echo "<tr><td>";
	echo '<select name="CMS_VAR['.$i.']">';
		echo "<option value='0'>-- kein --</option>\n";
		foreach ($medias as $media){

			($CMS_VALUE[$i] == $media['idupl'] ) ? $sel = " selected='selected' " : $sel = "";
		echo "<option value='". $media['idupl']."' $sel >".$media['filename']."</option>\n";

	}
	echo "</select>";
	echo '</td><td><input type="text" value="'. $CMS_VALUE[($i+1)] .'" name="CMS_VAR['.($i+1).']" />';
	echo "</td></tr>";
}
echo "</table>";
unset($medias);

Output:

Code: Alles auswählen

<?PHP
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Endless Unique Downloadlist
*
* Author:  Wenzel Wondra <wondra@it-studio.com>
* Copyright:  (c)2005 IT Studio Hendrich & Wondra OEG
* Includes three functions from Contenido 4.5.2_cvs (functions.upl.php)
* Created:     17-02-2005
* Modified:    18-02-2005
************************************************/

$db2 = new DB_Contenido;

echo "<h1>Downloads:</h1>\n";
if ($edit)
	echo "Liste wird nur in der Preview und im Frontend dargestellt!!";

for ($i=0; $i < count($CMS_VALUE); $i+=2){
	if ($CMS_VALUE[$i] != 0){
		$sql = "SELECT * FROM " . $cfg['tab']['upl']. " WHERE idupl= $CMS_VALUE[$i]";
		$db2->query($sql);
		$db2->next_record();
			
		$data_local= $cfgClient[$client]["upl"]["path"]. $db2->f('dirname'). $db2->f('filename');
		$data_http= $cfgClient[$client]["upl"]["htmlpath"]. $db2->f('dirname'). $db2->f('filename');
			
		echo "<p class='download'>\n";
		echo "<img src=".uplGetFileIcon($data_local)." alt=". getFileExtension($data_local)." />&nbsp;";
		echo "<a href='$data_http'>".$CMS_VALUE[($i+1)]." (Dateigröße ". human_readable_size(filesize($data_local)).")</a>";
		echo "</p>\n";
					
	}	
}


unset($data_local);
unset($data_http);



/*****************************************
* File      :   $RCSfile: functions.upl.php,v $
* Project   :   Contenido
* Descr     :   Upload functions*
* Author    :   $Author: timo.hummel $*               
* Created   :   28.12.2003
* Modified  :   $Date: 2004/06/01 16:39:27 $
*
* © four for business AG, www.4fb.de
*
* $Id: functions.upl.php,v 1.16.2.2 2004/06/01 16:39:27 timo.hummel Exp $
******************************************/

function getFileExtension($filename)
{
	$dotposition = strrpos($filename, ".");
	
	if ($dotposition !== false)
	{
		return (strtolower(substr($filename, $dotposition + 1)));
	} else {
		return false;
	}
}

function human_readable_size( $number )
{
	$base = 1024;
	$suffixes = array( " B", " KB", " MB", " GB", " TB", " PB", " EB" );

	$usesuf = 0;
	$n = (float) $number; //Appears to be necessary to avoid rounding
	while( $n >= $base )
	{
		$n /= (float) $base;
		$usesuf++;
	}
	
	$places = 2 - floor( log10( $n ) );
	$places = max( $places, 0 );
	$retval = number_format( $n, $places, ".", "" ) . $suffixes[$usesuf];
	return $retval;
}
/**
 * Returns the icon for a file type
 * Edited for Contenido 4.4.4
 * @param $file		Filename to retrieve the extension for
 *
 * @return Icon for the file type
 *
 */
 
 
function uplGetFileIcon ($file)
{
	global $cfg;
	
	switch (getFileExtension($file))
	{
		case "sxi":
		case "sti":
		case "pps":
		case "pot":
		case "kpr":
		case "ppt":	$icon = "ppt.gif";
					break;
		case "doc":
		case "dot":
		case "sxw":
		case "stw":
		case "sdw":
		case "kwd":	$icon = "upl_text.gif";
					break;
		case "xls":
		case "sxc":
		case "stc":
		case "xlw":
		case "xlt":
		case "csv":
		case "ksp":		
		case "sdc":	$icon = "excel.gif";
					break;
		case "txt":
		case "rtf": $icon = "txt.gif";
					break;					
		case "gif": $icon = "gif.gif";
					break;
		case "png": $icon = "png.gif";
					break;
		case "jpeg":
		case "jpg": $icon = "jpg.gif";
					break;
		case "html":
		case "htm": $icon = "html.gif";
					break;
		case "lha":
		case "rar":
		case "arj":
		case "bz2":
		case "bz":
		case "gz":
		case "tar":
		case "tbz2":
		case "tbz":
		case "tgz":
		case "zip": $icon = "zip.gif";
					break;
		case "pdf": $icon = "pdf.gif";
					break;	
		
		
		case "avi":		
		case "mpeg":
		case 'mpg':
		case 'asf':
		case 'wmv':		
				$icon = "avi.gif"; break;
				
		case "mov":
		case "3gp":
		case "mp4":
		case 'mpeg4':		
		 		$icon = "mov.gif"; break;
		 		
		
		case "rm" :
		case "ram" : $icon = "real.gif"; break;
		
					
		default: $icon = "upl_unknown.gif"; 
	}
	
	return $cfg['path']['contenido_fullhtml'] . $cfg["path"]["images"]. $icon;
}
?>

In der function uplGetFileIcon bitte an eure Filetypen anpassen, bzw. die Bilder erstellen.

lg
Wenzel
coarsy
Beiträge: 19
Registriert: Di 21. Dez 2004, 11:18
Wohnort: Frankfurt
Kontaktdaten:

Hiho!

Beitrag von coarsy »

Emergence hat mir angeraten hier beim Original meine Frage zu stellen :-)
Also, ich benutze die Version 4.4.4 und 4.4.5 und würde lediglich in meiner Artikelliste die dazugehörige Downloads anzeigen.

Leider werden bei meiner jetzigen Version alle PDF`s angezeigt und nicht die pro Artikel zugewiesenen. Irgendwo hab ich da noch nen Denkfehler drinne...

Was mach ich denn nur falsch?

Vielen Dank und fette Greetz vom Chris

Siehe:

Code: Alles auswählen

<?

//Frontendpfad ermitteln
$query = "SELECT frontendpath FROM ".$cfg["tab"]["clients"]." WHERE idclient='".$client."'";
$db->query($query);
$db->next_record();
$frontendpath = $db->f("frontendpath");



$startarton = "AND CATART.is_start = '0' AND";

//soll der startartikel mit ausgegeben werden?.
$print_startartikel = "CMS_VALUE[14]";
if($print_startartikel !=""){
$startarton = "AND";

}

//die Überschrift wird ausgegeben wenn sie nicht leer ist.
$print_mainheadline = "CMS_VALUE[2]";

//soll headline ausgegeben werden?
$print_headline = "CMS_VALUE[4]";

//soll subheadline ausgegeben werden?
$print_subheadline = "CMS_VALUE[5]";

//soll text ausgegeben werden?
$print_text = "CMS_VALUE[12]";

//soll ein thumnail ausgegeben werden?
$print_thumbnail = "CMS_VALUE[7]";

//thumbnail breite
$thumbnail_width = "CMS_VALUE[8]";

//wenn thumbnails = 0
$imagetag = "";



// second db class instance
$db2 = new DB_Contenido;

// selected category
$selcat = "CMS_VALUE[0]";

if($selcat!="0" && $selcat!=""){

// select all articles in category widthout start article
$query = "SELECT ARTLANG.idart, ARTLANG.idartlang, ARTLANG.lastmodified FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".
$cfg["tab"]["art_lang"]." AS ARTLANG ".
"WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' "." $startarton " ."ARTLANG.online = '1' ORDER BY ARTLANG.lastmodified DESC";

// execute query
$db->query($query);

unset($articleID);
unset($linkID);

// get id's of sub articles
while ($db->next_record()) {
$articleID[] = $db->f("idartlang");
$linkID[] = $db->f("idart");
} // end while


/****************** start table **************************/
echo '
<table border="0" cellpadding="0" cellspacing="0" width="100%">
';


/**** Überschrift der Artikelliste wird ausgegeben, wenn nicht leer ********/

if($print_mainheadline !=""){
echo '
<tr>
<td height="20"><b class="brown">CMS_VALUE[2]</b></td>
</tr>
';
}

// Loop through articles
if (is_array($articleID)) {
foreach ($articleID as $key => $value) {
// select all CMS variables of the article

if($print_headline!="0" && $print_headline!=""){
$sql = "SELECT * FROM ".$cfg["tab"]["content"]." WHERE idartlang = '$value' AND idtype = '1' AND typeid = '1'";

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

$headline = urldecode($db->f("value"));


for ($j="CMS_VALUE[3]"; $j < "CMS_VALUE[3]"+20; $j++)
{
$headline1 = substr($headline , 0, $j);

$cut = substr($headline, $j);
if ((ord ($cut) == 32)||(ord ($cut) == 44)||(ord ($cut) == 45)) {

$headline= substr($headline , 0, $j);
$headline .= ' ...';
}
}
}




$cfgTab_art_lang = $cfg['tab']['art_lang'];
$cfgTab_content = $cfg['tab']['content'];

$sql = "SELECT A.author AS author, B.lastmodified AS lastmod FROM $cfgTab_art_lang AS A, $cfgTab_content AS B WHERE A.idart='$value' AND B.idartlang=A.idartlang ORDER BY B.lastmodified DESC";
$db->query($sql);$db->next_record();
$modifydate= date("d.m.y",strtotime($db->f("lastmod")));
$modifytime= date("H:i",strtotime($db->f("lastmod")));

if($print_subheadline!="0" && $print_subheadline!=""){
$sql_subheadline = "SELECT * FROM ".$cfg["tab"]["content"]." WHERE idartlang = '$value' AND idtype = '1' AND typeid = '2'";

$db->query($sql_subheadline);
$db->next_record();

$subheadline = urldecode($db->f("value"));


for ($i="CMS_VALUE[6]"; $i < "CMS_VALUE[6]"+20; $i++)
{
$subheadline1 = substr($subheadline , 0, $i);

$cut = substr($subheadline, $i);
if ((ord ($cut) == 32)||(ord ($cut) == 44)||(ord ($cut) == 45)) {

$subheadline= substr($subheadline , 0, $i);
$subheadline .= ' ...';
}
}
}

if($print_text!="0" && $print_text!=""){
$sql_text = "SELECT * FROM ".$cfg["tab"]["content"]." WHERE idartlang = '$value' AND idtype = '2' AND typeid = '1'";

$db->query($sql_text);
$db->next_record();

$text = urldecode($db->f("value"));


for ($i="CMS_VALUE[13]"; $i < "CMS_VALUE[13]"+20; $i++)
{
$text1 = substr($text , 0, $i);

$cut = substr($text, $i);
if ((ord ($cut) == 32)||(ord ($cut) == 44)||(ord ($cut) == 45)) {

$text= substr($text , 0, $i);
$text .= ' ...';
}
}
}


/******************* begin thumbnails **********************************/
if($print_thumbnail !="0" && $print_thumbnail !=""){

// select and resolve image path
$imagesql="select value from ".$cfg["tab"]["content"]." where idartlang='$value' and idtype='4' and typeid='CMS_VALUE[11]'";
$db2->query($imagesql);
$db2->next_record();
$image_id= $db2->f("value");


// get image name and path
$imagesql="select * from ".$cfg["tab"]["upl"]." where idupl='$image_id'";
$db2->query($imagesql);
$db2->next_record();


$webdir='upload/';
$thumbdir='CMS_VALUE[9]';
$filedir=$frontendpath;
$imagelocation=$filedir.$webdir.$db2->f('dirname').$db2->f('filename');
$thumblocation=$filedir.$webdir.$db2->f('filename');
if (!file_exists($thumblocation)){
// create thunbnail
$fileinformation=getimagesize($imagelocation);
$imagewidth = $fileinformation[0];
$imageheight = $fileinformation[1];
$imagetype=$db2->f('filetype');
$imageattributes = $fileinformation[3];
//$newfile= $last_id."-image.".$imagetype;
$target=$thumblocation;

if ( !(copy($imagelocation,$target)))
{
echo "Could not copy file to destintaion., Command returned Error Message. Please check your log files. ".$imagelocation." ".$target;
die;
}

//create thumbnails 80xrelational height; neu $thumbnail_width x proportionale Höhe
// Determine what filetype and set pointer to source image


$original_image=ImageCreateFromJPEG($target);

if (!$original_image){
echo 'Error getting image from '.$target.'.';
}




$palette_image =$filedir.$webdir.'vorlage.jpg';
$thumbsize = getImageSize($palette_image);
$maxdim = $thumbsize[0];
$draw_from = $imagelocation;
$dim = GetImageSize($draw_from);
if($dim[0]>$dim[1])
{
$to_w = $maxdim;
$to_h = round($dim[1]*($maxdim/$dim[0]));
$to_x = 0;
$to_y = round($maxdim-$to_h)/2;
}
else
{
$to_h = $maxdim;
$to_w = round($dim[0]*($maxdim/$dim[1]));
$to_y = 0;
$to_x = round($maxdim-$to_w)/2;
}

if($dim[2]==1) {$from = ImageCreateFromGIF($draw_from);}
elseif($dim[2]==2) {$from = ImageCreateFromJPEG($draw_from);}
elseif($dim[2]==3) {$from = ImageCreateFromPNG($draw_from);}
$thumb = ImageCreateFromJPEG($palette_image);
// $set_bg_colour = ImageColorAllocate($thumb,255,0,0);
// $fill_bg_colour = ImageFill($thumb,0,0,$set_bg_colour);
imagecopyresized($thumb, $from, $to_x, $to_y, 0,
0, $to_w, $to_h, $dim[0], $dim[1]);






//echo $target;
// set image width and height of thunbnail and put pointer for filesytsem
$thumbfile= $db2->f('filename');
$target_thumb=$thumblocation;
$t_width=$thumbnail_width;
// calculating height to maintain ratio
$t_height=($thumbnail_width/$imagewidth)*$imageheight;
// remove digits to get solid number
list ($t_height,$notimportand)=explode('.',$t_height);
// create blank image
$thumb_image=imagecreatetruecolor($t_width,$t_height);
// $thumb_image=imagecreate($t_width,$t_height);
// $thumb_image=ImageCreateFromJPEG($palette_image);
// resize image based on height and width
imagecopyresampled($thumb_image,$original_image,0,0,0,0,$t_width,$t_height,$imagewidth,$imageheight);
// store image on file system
// requires different functionf for either gif or jpeg

imagejpeg($thumb,$target_thumb);

imagedestroy($thumb);
imagedestroy($original_image);
}
$image=$webdir.$db2->f('filename');

//wenn Artikel kein Bild hat

if (!$db2->f('filename')){
$imagetag= "";
}
else $imagetag="<img src=\" $image \" border=0 align=\"left\">";

} // ende wenn keine thumbs gewünscht
/**************** Ende Thumbnails ***********************/

// link
$link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$selcat&idart=$linkID[$key]&m=$m&s=$s&md=$modifydate");



/***********************Anfang Tablezeile für Artikelliste**********************/
echo '
<tr><td height="20"><span class="date">'.$modifydate.'</span> - <span class="black">'.$headline.'</span></td></tr>
<tr><td valign="top">'.$subheadline.'</td></tr>
<tr><td valign="top">'.$text.'</td></tr>
<tr><td valign="top">';
$db3 = new DB_Contenido;

      $sql = "SELECT a.idupl, a.filename, a.dirname FROM con_upl a, con_content c WHERE a.filetype = 'pdf' AND c.idartlang='$value'";
       $db3->query($sql);
    
     while ($db3->next_record()){
         $medias[] = array('idupl'=> $db3->f('idupl'), 'filename' =>$db3->f('filename'), 'dirname' =>$db3->f('dirname'));
       }
    
     $CMS_VALUE = array_unique($CMS_VALUE);
    
     for ($i=0; $i <= count($CMS_VALUE); $i+=2){   
      foreach ($medias as $media){
    
     $data_local= $cfgClient[$client]["upl"]["path"]. $media['dirname']. $media['filename'];
      $data_http= $cfgClient[$client]["upl"]["htmlpath"]. $media['dirname']. $media['filename'];
      
    
     echo "<p class='download'>\n";
      echo "<img src=".uplGetFileIcon($data_local)." alt=". getFileExtension($data_local).">&nbsp;";
      echo "<a href='$data_http'>".$CMS_VALUE[($i+1)]." (Dateigröße ". human_readable_size(filesize($data_local)).")</a>";
      echo "</p>\n";
   
   }
   
}
 

unset($data_local);
unset($data_http);
unset($medias);

echo '</td></tr>
<tr><td height="10">&nbsp;</td></tr>   
<tr><td height="10" class="horiz_border">&nbsp;</td></tr>';


} // end while

unset($headline);
unset($headline1);
unset($subheadline);
unset($subheadline1);
unset($text);
unset($textl);

} // end foreach

} // end if (is_array)

echo '</table>';
/***********************ende Table**********************/


function getFileExtension($filename)
{
   $dotposition = strrpos($filename, ".");
   
   if ($dotposition !== false)
   {
      return (strtolower(substr($filename, $dotposition + 1)));
   } else {
      return false;
   }
}

function human_readable_size( $number )
{
   $base = 1024;
   $suffixes = array( " B", " KB", " MB", " GB", " TB", " PB", " EB" );

   $usesuf = 0;
   $n = (float) $number; //Appears to be necessary to avoid rounding
   while( $n >= $base )
   {
      $n /= (float) $base;
      $usesuf++;
   }
   
   $places = 2 - floor( log10( $n ) );
   $places = max( $places, 0 );
   $retval = number_format( $n, $places, ".", "" ) . $suffixes[$usesuf];
   return $retval;
}
/**
 * Returns the icon for a file type
 * Edited for Contenido 4.4.4
 * @param $file      Filename to retrieve the extension for
 *
 * @return Icon for the file type
 *
 */
 
 
function uplGetFileIcon ($file)
{
   global $cfg;
   
   switch (getFileExtension($file))
   {
      case "sxi":
      case "sti":
      case "pps":
      case "pot":
      case "kpr":
      case "ppt":   $icon = "ppt.gif";
               break;
      case "doc": $icon = "doc.gif";
               break;
      case "dot":
      case "sxw":
      case "stw":

      case "sdw":
      case "kwd":   $icon = "upl_text.gif";
               break;
      case "xls":
      case "sxc":
      case "stc":
      case "xlw":
      case "xlt":
      case "csv":
      case "ksp":     
      case "sdc":   $icon = "excel.gif";
               break;
      case "txt":
      case "rtf": $icon = "txt.gif";
               break;               
      case "gif": $icon = "gif.gif";
               break;
      case "png": $icon = "png.gif";
               break;
      case "jpeg":
      case "jpg": $icon = "jpg.gif";
               break;
      case "html":
      case "htm": $icon = "html.gif";
               break;
      case "lha":
      case "rar":
      case "arj":
      case "bz2":
      case "bz":
      case "gz":
      case "tar":
      case "tbz2":
      case "tbz":
      case "tgz":
      case "zip": $icon = "zip.gif";
               break;
      case "pdf": $icon = "pdf.gif";
               break;   
     
     
      case "avi":     
      case "mpeg":
      case 'mpg':
      case 'asf':
      case 'wmv':     
            $icon = "avi.gif"; break;
           
      case "mov":
      case "3gp":
      case "mp4":
      case 'mpeg4':     
             $icon = "mov.gif"; break;
             
     
      case "rm" :
      case "ram" : $icon = "real.gif"; break;
     
               
      default: $icon = "upl_unknown.gif";
   }
   
   return $cfg['path']['contenido_fullhtml'] . $cfg["path"]["images"]. $icon;
}
?>
wewo
Beiträge: 45
Registriert: So 8. Aug 2004, 19:08
Wohnort: Graz
Kontaktdaten:

Beitrag von wewo »

hi chris,

soweit mir bekannt (bin ja contenido rookie) stehen dir die $CMS_VALUE und $CMS_VARS nur direkt auf "der" Seite zur Verfügung.

Nachdem du ja mein Modul mit der Artikelliste mischt, stehen imho nur die $CMS_VALUES der aufrufenden Seite, sprich Artikelübersicht, zur Verfügung.

Schau dir mal den Artikel
http://www.contenido.org/forum/viewtopi ... h+cmsvalue
an. Ganz unten kommt TemplateConfig vor, diese Klasse liefert dir die Werte, die du suchst.

Bau dein Skript mal um und schau ob du an die Werte kommst.

Statt meinem Modul, einfach folgendes einbauen:

Code: Alles auswählen

$templateData = new templateConfig($idart); // ACHTUNG NICHT $IDARTLANG
$confData = $templateData->getData(X); // X -> Nummer des Modules	

for ($i=0; $i<count($confData); $i++){
      var_dump($confData[$i]);   // gibt nur die Werte aus
}   
Wenn das klappt, sollte es eigentlich kein Problem mehr sein den Rest wieder hinzu zu mergen, oder?

Ciao
Wenzel
Gesperrt