Modul: Download Liste 4.6.

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » Sa 20. Jan 2007, 12:47

äh du hast versucht einen ordner über das datenbanksystem aufzurufen. das geht natürlich nicht - das modul funktioniert nur mit physischen ordnern die also wirklich auf dem webspace im upload folder existieren. ordner und dateien die in der datenbank gespeichert sind funktionieren nicht mit dem modul

Christiane
Beiträge: 29
Registriert: Do 2. Nov 2006, 14:44
Kontaktdaten:

Beitrag von Christiane » So 21. Jan 2007, 13:27

stese hat geschrieben:das modul funktioniert nur mit physischen ordnern die also wirklich auf dem webspace im upload folder existieren
Hallo stese, ja, das habe ich nun ja mittlerweile herausgefunden. Trotzdem vielen Dank für den Hinweis! Das es mit dieser Variante nicht gleich funktioniert hat, liegt an meinem Provider. Dort bekommt ein über das Contenido-Backend angelegter Ordner einen falschen Besitzer zugeordnet.Nachdem ich das gerafft hatte, läuft auch alles wunderschön! Klasse Modul!

Christiane
Beiträge: 29
Registriert: Do 2. Nov 2006, 14:44
Kontaktdaten:

Beitrag von Christiane » So 21. Jan 2007, 14:30

Noch zwei Fragen zu dem Download-Modul:
1.) Wie kann ich auf die Eigenschaften der Dateityp-Bilder Einfluss nehmen?
Die Bilder erhalten per default eine id (m1) sowie das Attribut border="0". Beide würde ich gerne entfernen. Begründung: Wenn ich mehrere Einträge in der Download-Liste habe, wird auch die ID mehrfach gesetzt. Dann ist diese nicht mehr eindeutig, so dass Validatoren eine Warnung ausspucken (Anker xyz "bereits definiert"). Und die Rahmen-Eigenschaft regele ich lieber über CSS.
Weiterhin würde ich für diese Bilder gern eein leeres alt-Attribut setzen (alt="").
2.) Wie kann ich den Container der Dateibeschreibung ändern?
Für jede Beschreibung wird ein div angelegt. Ich würde statt dessen einen Absatz (p-Element) bevorzugen. Kann ich das irgendwo umschreiben?
In diesem Container wird im Übrigen auch eine ID vergeben, die sich bei Mehrfacheinträgen wiederholt. Das würde ich auch gern vermeiden.

Über Anregungen/Hilfestellungen wäre ich sehr dankbar.

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » So 21. Jan 2007, 14:40

das filetype icon wird im modul download list output in folgender zeile gesetzt:

Code: Alles auswählen

// icon for file
   $obj_icon->setSrc( uplGetFileIcon($dllist_item->get("filename")) );
   $obj_icon->setID("dlIco".$image_id); 
die ID ist immer einmalig, es sei denn, du nimmst die liste mehrmals auf die seite. eine border wird eigentlich bei mir nicht gesetzt.

der source wird über die cHTMLApi von contenido erzeugt.
setze dich bitte zur anwendung und manipulation mit der cHTMLapi auseinander (datei contenido/classes/class.htmlelements.php)

Christiane
Beiträge: 29
Registriert: Do 2. Nov 2006, 14:44
Kontaktdaten:

Beitrag von Christiane » So 21. Jan 2007, 15:18

stese hat geschrieben:die ID ist immer einmalig
Hm. Meines Erachtens erhält das Dateityp-Bild immer die ID m1 und die Beschreibung die ID m2. Auch in ein und derselben Tabelle. Das ist, was mich stört. Aber vielleicht finde ich dazu ja was cHTMLApi. Werde mich damit mal auseinandersetzen.
stese hat geschrieben:eine border wird eigentlich bei mir nicht gesetzt.
Dann muss ich mal schauen, wo "border="0" in den Bildern herkommt.

Christiane
Beiträge: 29
Registriert: Do 2. Nov 2006, 14:44
Kontaktdaten:

Beitrag von Christiane » So 21. Jan 2007, 17:15

stese hat geschrieben:das filetype icon wird im modul download list output in folgender zeile gesetzt:

Code: Alles auswählen

// icon for file
   $obj_icon->setSrc( uplGetFileIcon($dllist_item->get("filename")) );
   $obj_icon->setID("dlIco".$image_id); 
Aha! Die Zeilen 147

Code: Alles auswählen

$image_id = 0;
und 149

Code: Alles auswählen

$image_id++;
fehlen in der XML-Datei, die zum Download auf deiner Website angeboten werden! Nachdem ich die eingetragen habe, werden die IDs hochgezählt. Genau so wollte ich das - Problem 1 teilweise behoben (das alt-Attribut fehlt mir weiterhin)!

Nun noch mal zu Problem 2. Über

Code: Alles auswählen

$obj_description = new cHTMLDIV();
wird um die Beschreibung ein Container gesetzt. Ich bräuchte ein schnödes

Code: Alles auswählen

<p>...hier soll die Beschreibung stehen...</p>
Wie von Dir angeregt, habe ich mal in die cHTMLApi geschaut. Aber das ist mir dann doch etwas zu hoch. Ich habe die Klasse kopiert, in der Kopie div durch p ausgetauscht und in deinem Modul die Variable entsprechend auf die Kopie angepasst. Trotzdem erhält das p-Element dann eine ID und eine Klasse. Schnief! Ich weiß nicht weiter!

Christiane
Beiträge: 29
Registriert: Do 2. Nov 2006, 14:44
Kontaktdaten:

Beitrag von Christiane » So 21. Jan 2007, 17:41

Christiane hat geschrieben:Trotzdem erhält das p-Element dann eine ID und eine Klasse.
Jippie! Ich hab's gefunden!

"removeAttribute" war das entscheidende Stichwort (siehe http://contenido.org/forum/viewtopic.php?t=11862)

Dieser Problem-lösende Beitrag stammte auch von Dir, stese! Danke für Deine Ausdauer mit uns Anfängern!

Nachtrag:
Aufgabe war:
Bei der Beschreibung des Downloads sollten ID und Klasse entfernt werden.
Lösung:

Code: Alles auswählen

      $obj_description->removeAttribute("id");
      $obj_description->removeAttribute("class");
Aufgabe war:
Bei dem Icon des Downloads sollte die ID entfernt und ein leeres alt-Attribut hinzugefügt werden.
Lösung:

Code: Alles auswählen

   $obj_icon->removeAttribute("id");
   $obj_icon->updateAttributes(array ("alt" => ""));

smkiel
Beiträge: 68
Registriert: Di 15. Okt 2002, 16:42
Kontaktdaten:

Dateiliste - kein-Download von Dateien

Beitrag von smkiel » Mi 7. Feb 2007, 16:48

Hallo,
ich habe das Modul wie folgt eingebunden:

1. per FTP die HTML-Templates in den Template-Ordner meines Clienten und die Module eingefügt.
Ich habe in den Modulen alle Änderungen des Threads durchgeführt.

2. Leer-Layout , nur mit dem Text von Layer.txt, ohne Leerzechen vorher etc.!
3. Template mit dem Dateifile-Modul und diesem Leer-Layout erstellt
4. Von diesem Template ein Artikel erstellt und die idart notiert

5. Modul-dateilist in eines meiner Templates eingebunden
6. neuen Artikel mit diesen letzten Template erzeugt
7. Artikel konfiguriert, im letzten Input der Konfiguration die oben notierte idart eingetragen.

Jetzt wird mir die Dateiliste wie gewünscht angezeigt, aber der eigentlich Download schlägt fehl.
Es wird das weiße Fenster vom Leerartikel mit der eingetragenen idart aufgerufen, aber das
besagte Fenster von Windows für den Download (offnen/speichen unter) erscheint nicht.
Da hilft auch 777 für die Dateien nicht.

Im Browser kann ich die Dateien mit dem direkten Pfad aufrufen.

Ich habe gesucht, nichts gefunden und möchte ich das Modul nicht gern begraben.

Vielen Dank im Voraus
Wiebke


contenido 4.6.4
PHP 5.2.0
Mysql 4.1.15
Hosteurope

Christiane
Beiträge: 29
Registriert: Do 2. Nov 2006, 14:44
Kontaktdaten:

Beitrag von Christiane » Sa 10. Feb 2007, 18:00

stese hat geschrieben:eine border wird eigentlich bei mir nicht gesetzt.
der source wird über die cHTMLApi von contenido erzeugt.
setze dich bitte zur anwendung und manipulation mit der cHTMLapi auseinander (datei contenido/classes/class.htmlelements.php)
Ein paar Tage sind vergangen, aber mittlerweile habe ich verstanden, worauf du da hinaus wolltest. Habe jetzt in der Datei class.htmlelements.php in der Funktion toHTML() eine Zeile auskommentiert und dann ist auch dieses Attribut border="0" in den Icons weg! Genau das war's.

Code: Alles auswählen

/*    $this->updateAttributes(array 
("border" => $this->_border)); */

mauskugel
Beiträge: 40
Registriert: Mo 3. Nov 2003, 21:22
Kontaktdaten:

Sortierfunktion

Beitrag von mauskugel » Fr 16. Mär 2007, 13:12

Hi
Ich nutze schon seit geraumer Zeit dieses Modul und finde es echt toll.
Nur leider ist in der neuen Version keine Sortiermöglichkeit mehr vorhanden. Woran liegts?

Gruß

Volker

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » Fr 16. Mär 2007, 13:48

äh neue version? in dem modul gab es noch nie eine sortiermöglichkeit - und wenn dann wurde die nicht durch mich und das standardmodul erzeugt.

mauskugel
Beiträge: 40
Registriert: Mo 3. Nov 2003, 21:22
Kontaktdaten:

Beitrag von mauskugel » Fr 16. Mär 2007, 14:17

Hab ich das etwa eingebaut? schon lange her...
Dann hab ich hier ne Version mit Sortierfunktion:
Modul "Download List" INPUT:

Code: Alles auswählen

?> 
<?php 
/*********************************************** 
* CONTENIDO MODUL - INPUT 
* 
* Modulname  :    Download List 
* Author(s)  :    Stefan Seifarth <info@polycoder.de> 
* Copyright  :    www.polycoder.de / www.htcm.de 
* Created    :    2006-01-07 
* Modified   :    2006-11-06 
************************************************/ 

cInclude ("classes", "class.upload.php"); 


// get all directories from database 
$dllist_collection = new UploadCollection (); 
$dllist_collection->select("idclient='".$client."'","dirname","dirname ASC"); 

$arr_found_dirs = array(); 
$arr_dirs = array(); 
while ( $dllist_item = $dllist_collection->next() ) { 
   $arr_found_dirs[] = $dllist_item->get("dirname"); 
} 

$i = 0; 
foreach ($arr_found_dirs as $str_dir) { 
   $arr_current_dir =  explode("/",$str_dir ); 
   array_pop($arr_current_dir); 
    
   $depth = count($arr_current_dir); 
    
   if ( $depth == 0 ) { 
      $arr_dirs[$i]["name"] = str_replace("/", "", $cfgClient[$client]["upload"]); 
   } else { 
      $arr_dirs[$i]["name"] = $arr_current_dir[$depth-1]; 
   } 
   $arr_dirs[$i]["depth"] = $depth; 
   $arr_dirs[$i]["path"] = $str_dir; 
   $arr_dirs[$i]["indent"] = ""; 
    
   for ($z = 1; $z <= $depth; $z ++) { 
      # 3 blanks for every level 
      $arr_dirs[$i]["indent"] .= "&nbsp;&nbsp;&nbsp;"; 
   } 
    
   $i++; 
} 


// print out directory selectbox 
$str_predefined = trim("CMS_VALUE[110]"); 

print mi18n("Verzeichnis für Downloads auswählen") . ":\n<br>"; 
print '<select name="CMS_VAR[110]">' . "\n"; 
// output of all found directories 
foreach ( $arr_dirs  as $arr_dir ) { 
   $str_selected = ""; 
   if ( $str_predefined == $arr_dir["path"] ) $str_selected = ' selected="selected"'; 
    
   print '<option value="' . $arr_dir["path"] . '"' . $str_selected . '>' . $arr_dir["indent"] . $arr_dir["name"] . '</option>' . "\n"; 
} 
print '</select>' . "\n"; 

print '<br><br>' . "\n"; 

// print out fileextensions 
print mi18n("sichtbare Dateiendungen<br>(leergelassen = alle Dateien, mehrere Dateitypen durch Komma abtrennen )") . ":\n<br>"; 
print '<input type="text" name="CMS_VAR[111]" value="CMS_VALUE[111]">' . "<br><br>\n"; 

// print out fileextensions 
print mi18n("Dateifilter<br>(leergelassen = alle Dateien, Filter wie unter Windows nutzen: ?datei*.*, mehrere Filter durch ; abtrennen)") . ":\n<br>"; 
print '<input type="text" name="CMS_VAR[113]" value="CMS_VALUE[113]">' . "<br><br>\n"; 


// print out download article 
print mi18n("Artikel idart für Downloadzähler<br>(leergelassen = Download ohne Zähler)") . ":\n<br>"; 
print '<input type="text" name="CMS_VAR[112]" value="CMS_VALUE[112]">' . "<br><br>\n"; 

// print out download order 
print mi18n("Liste sortieren") .  ":\n<br>"; 
if (CMS_VALUE[114] == 0){
print '<input type="radio" name="CMS_VAR[114]" value="0" checked> Aufsteigend' . "\n<br>"; 
print '<input type="radio" name="CMS_VAR[114]" value="1"> Absteigend' . "\n"; 
}else{
print '<input type="radio" name="CMS_VAR[114]" value="0"> Aufsteigend' . "\n<br>"; 
print '<input type="radio" name="CMS_VAR[114]" value="1" checked> Absteigend' . "\n"; 
}
?> 
<?php
Modul "Download List" OUTPUT:

Code: Alles auswählen

<?php 
/*********************************************** 
* CONTENIDO MODUL - OUTPUT 
* 
* Modulname  :    Download List 
* Author(s)  :    Stefan Seifarth <info@polycoder.de> 
* Copyright  :    www.polycoder.de / www.htcm.de 
* Created    :    2006-01-07 
* Modified   :    2006-11-07 
************************************************/ 
cInclude ("classes", "class.upload.php"); 
cInclude ("classes", "class.properties.php"); 
cInclude ("classes", "class.htmlelements.php"); 
cInclude ("includes", "functions.upl.php"); 


// template defined vars 
$dllist_path = "CMS_VALUE[110]"; 
$dllist_extensions = trim("CMS_VALUE[111]"); 
$dllist_idart = trim("CMS_VALUE[112]"); 
$dllist_filenamefilter = trim("CMS_VALUE[113]"); 

// add filetype condition 
$str_where_filetype = ""; 
if ( strlen ($dllist_extensions) > 0) { 
   $arr_extensions = explode (",",$dllist_extensions); 
    
   $arr_where = array(); 
   foreach ($arr_extensions as $str_extension) { 
      $arr_where[] = "filetype ='" . trim($str_extension) . "'"; 
   } 
    
   $str_where_filetype = ' ( ' . implode( " OR ", $arr_where ) . ' ) AND '; 
} 

// add filename filter condition 
$str_where_filenamefilter = ""; 
if ( strlen ($dllist_filenamefilter) > 0) { 
    
   $arr_filenamefilter = explode(";", $dllist_filenamefilter); 
   $arr_where = array(); 
    
   foreach ($arr_filenamefilter as $str_filenamefilter) { 
      $str_filenamefilter = trim($str_filenamefilter); 
      // replace special chars for wildcards 
      $str_filenamefilter = str_replace("%","\%", $str_filenamefilter); 
      $str_filenamefilter = str_replace("_","\_", $str_filenamefilter); 
      $str_filenamefilter = str_replace("*","%", $str_filenamefilter); 
      $str_filenamefilter = str_replace("?","_", $str_filenamefilter); 
      $arr_where[] = ' filename LIKE "' . mysql_escape_string($str_filenamefilter) . '"'; 
   } 
   $str_where_filenamefilter = ' ( ' . implode( " OR ", $arr_where ) . ' ) AND '; 
} 

// get list of all files
$dllist_collection = new UploadCollection (); 
if (CMS_VALUE[114] == 0){
$dllist_collection->select($str_where_filenamefilter . $str_where_filetype . " dirname = '" . $dllist_path . "'","","filename ASC"); 
}else{
$dllist_collection->select($str_where_filenamefilter . $str_where_filetype . " dirname = '" . $dllist_path . "'","","filename DESC"); 
}
 
// initialize needed objects 
$obj_file_properties = new PropertyCollection(); 
$obj_icon = new cHTMLImage(); 
$obj_description = new cHTMLDIV(); 

// reset template 
$tpl = new Template(); 
$tpl->reset(); 

// add head description 
$tpl->set("s","HEAD_NAME", mi18n("Dateiname") ); 
$tpl->set("s","HEAD_FILETYPE", mi18n("Dateityp") ); 
$tpl->set("s","HEAD_FILESIZE", mi18n("Größe") ); 
$tpl->set("s","HEAD_COUNTER", mi18n("Downloads") ); 

// run file list 
$image_id = 0; 
while ($dllist_item = $dllist_collection->next() ) { 
   $image_id++; 
    
   // icon for file 
   $obj_icon->setSrc( uplGetFileIcon($dllist_item->get("filename")) ); 
   $obj_icon->setID("dlIco".$image_id); 
    
   // file description 
   $str_file_description = ""; 
   if (strlen($dllist_item->get("description"))> 0) { 
      $obj_description->setContent($dllist_item->get("description")); 
      $obj_description->setClass("fileDescription"); 
      $str_file_description = $obj_description->toHTML(); 
   } 
    
   // filename 
   $str_file_name = $dllist_item->get("filename"); 
   $str_file_name_property = $obj_file_properties->getValue("upload", $dllist_item->get("dirname").$dllist_item->get("filename"), "file", "medianame"); 
   if (strlen($str_file_name_property) > 0) { 
      $str_file_name = $str_file_name_property; 
   } 
    
   // filecounter 
   $str_file_counter = "0"; 
   $str_file_counter_property = $obj_file_properties->getValue("upload", $dllist_item->get("dirname").$dllist_item->get("filename"), "file", "counter"); 
   if ( strlen ($str_file_counter_property) > 0 ) { 
      $str_file_counter = $str_file_counter_property; 
   } 
    
   // file url 
   $str_file_url = $cfgClient[$client]["upl"]["htmlpath"] . $dllist_item->get("dirname") . $dllist_item->get("filename"); 
   if ( isset($dllist_idart) && !empty($dllist_idart) && (int)$dllist_idart > 0 ) { 
      $str_file_url = $sess->url("front_content.php?idart=" . $dllist_idart . "&changelang=" . $lang .  "&client=" . $client . "&sse_idupl=" . $dllist_item->get("idupl") ); 
   } 
    
   // fill template 
   $tpl->set("d", "FILE_ICON", $obj_icon->toHTML() . '&nbsp;'); 
   $tpl->set("d", "FILE_NAME", $str_file_name ); 
   $tpl->set("d", "FILE_TYPE", $dllist_item->get("filetype") ); 
   $tpl->set("d", "FILE_SIZE", human_readable_size($dllist_item->get("size")) ); 
   $tpl->set("d", "FILE_COUNTER", $str_file_counter ); 
   $tpl->set("d", "FILE_DESCRIPTION", $str_file_description ); 
   $tpl->set("d", "FILE_URL", $str_file_url ); 
    
   $tpl->next(); 
} 

// set template 
$str_template_name = "download_list.html"; 
if ( isset($dllist_idart) && !empty($dllist_idart) && (int)$dllist_idart > 0 ) { 
   $str_template_name = "download_list_counter.html"; 
} 

// print template 
print $tpl->generate($cfgClient[$client]["tpl"]["path"] . $str_template_name, 1, 0); 

?>
Gruß

Volker

mauskugel
Beiträge: 40
Registriert: Mo 3. Nov 2003, 21:22
Kontaktdaten:

Beitrag von mauskugel » Fr 16. Mär 2007, 16:27

Zu guter Letzt hab ich auch noch ein Problemchen.
Ich habe ein 3MB großes PDF im Downloadverzeichnis das lässt sich im Backend prima laden. Im Frontent kommt ein Fehler:
[16-Mar-2007 16:18:40] PHP Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 5826987 bytes) in /var/apache/www.golfclub-mudau.de/htdocs/cms/front_content.php on line 947
Was kann das sein?

Grüße

Volker

stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese » Fr 16. Mär 2007, 18:34

speicherlimit des servers errreicht - im frontend wird einiges mehr in den speicher geladen als im backend (statistik z.b.) und das kann schon ausreichend sein, wenn der download im backend nur ganz knapp am speicherlimit vorbeischlitterte

die lösung mit dem durchschleifen ist nur bei kleinen dateien gut - alle anderen sollten über einen header befehl runtergeladen werden - sprich man geht direkt von der seite weg und öffnet die datei, als ob sie direkt über die url aufgerufen würde.

djavet
Beiträge: 264
Registriert: Do 22. Jan 2004, 11:31
Kontaktdaten:

Beitrag von djavet » Di 10. Apr 2007, 21:19

Super module!

Wie kann ich die Dartum einfügen ins Tabelle?

Vielen Danke im Voraus.
Gruss, Dom

Gesperrt