Seite 1 von 1

Dateiverwaltung: Erweiterung der Upload-Funktion

Verfasst: Sa 23. Jun 2007, 22:05
von Schwarzesocke
Hallo zusammen,

habe mal die Upload-Erweiterung zur Angabe von Medienname, Beschreibung, Schlüsselwörtern und der internen Notiz direkt beim Upload ergänzt. In der "include.upl_files_overview.php" war noch die Anweisung für die Speicherung der Beschreibung deaktiviert und die if-Abfrage nicht geschlossen, daher poste ich den Teil gleich nochmal mit. Dann habe ich das Uploadformular entsprechend angepasst. In Hinsicht auf's Contenido-Layout vielleicht nicht 100%ig stimmig, aber es erfüllt seinen Zweck. Hier gibbet nen Screenshot zu sehen. Mit einem Klick auf das "Artikeleigenschaften"-Symbol des jeweiligen Uploadfeldes, können die entsprechenden Eingabefelder ein- bzw. ausgeblendet werden. Nun zum Eingemachten....

1. "contenido/includes/include.upl_files_overview.php" zum bearbeiten öffnen

2. Eventuell cIncludes ergänzen (nicht nötig bei Contenido 4.6.15):

Code: Alles auswählen

cInclude("classes", "class.ui.php");
cInclude("classes", "class.htmlelements.php");
cInclude("includes", "api/functions.frontend.list.php");
cInclude("classes", "class.properties.php");
cInclude("classes", "class.todo.php");
3. "if ($action == "upl_modify_file")" Suchen und davor folgenden Code einfügen:

Code: Alles auswählen

/**
 * @author wogr
 * 2006-12-05
 * A modified version of the upload method, which lets the user set the "Keywords" and "Internal notes" right in the uploading-dialog.
 *
 * Other files of interest: include.upl_files_upload.php.
 */
if ($action == "upl_withinfo") {
   $position = 0;
   if (count($_FILES) == 1) {
      foreach ($_FILES['file']['name'] as $key => $value) {
         if (file_exists($_FILES['file']['tmp_name'][$key])) {
            $tmp_name = $_FILES['file']['tmp_name'][$key];
            $_cecIterator = $_cecRegistry->getIterator("Contenido.Upload.UploadPreprocess");
            if ($_cecIterator->count() > 0) {
               /* Copy file to a temporary location */
               move_uploaded_file($tmp_name, $cfg["path"]["contenido"] . $cfg["path"]["temp"] . $_FILES['file']['name'][$key]);
               $tmp_name = $cfg["path"]["contenido"] . $cfg["path"]["temp"] . $_FILES['file']['name'][$key];
               while ($chainEntry = $_cecIterator->next()) {
                  $modified = $chainEntry->execute($tmp_name, $cfgClient[$client]['upl']['path'] . $path . uplCreateFriendlyName($_FILES['file']['name'][$key]));
                  if ($modified !== false) {
                     $tmp_name = $modified;
                  }
               }
            }
            if (is_dbfs($qpath)) {
               $dbfs->writeFromFile($tmp_name, $qpath . uplCreateFriendlyName($_FILES['file']['name'][$key]));
               unlink($tmp_name);
            } else {
               if (is_uploaded_file($tmp_name)) {
                  move_uploaded_file($tmp_name, $cfgClient[$client]['upl']['path'] . $path . uplCreateFriendlyName($_FILES['file']['name'][$key]));
               } else {
                  rename($tmp_name, $cfgClient[$client]['upl']['path'] . $path . uplCreateFriendlyName($_FILES['file']['name'][$key]));
               }
            }
         }

        $filename = uplCreateFriendlyName($_FILES['file']['name'][$key]);
         
		$uploads->select("idclient = '$client' AND dirname = '$qpath' AND filename='$filename'");
		if ($upload = $uploads->next()){
		   $upload->set("description", "beschreibung");
		   $upload->store();
		  }

         $properties = new PropertyCollection;
         $properties->setValue("upload", $qpath . $filename, "file", "medianame", stripslashes($medianame[$position]));
         $properties->setValue("upload", $qpath . $filename, "file", "keywords", stripslashes($keywords[$position]));
         $properties->setValue("upload", $qpath . $filename, "file", "medianotes", stripslashes($medianotes[$position]));
         $position = $position +1;
      } // end for each   
   }
}
/* wogr end */
4. "contenido/includes/include.upl_files_upload.php" öffnen und den kompletten Quellcode durch folgenden ersetzt:

Code: Alles auswählen

<?php
/*****************************************
* File      :   $RCSfile: include.upl_files_upload.php,v $
* Project   :   Contenido
* Descr     :   Directory overview
*
* Author    :   Timo A. Hummel
*               
* Created   :   30.12.2003
* Modified  :   $Date: 2006/06/12 17:29:07 $
*
* © four for business AG, www.4fb.de
*
* $Id: include.upl_files_upload.php,v 1.7 2006/06/12 17:29:07 bjoern.behrens Exp $
******************************************/

cInclude("classes", "class.ui.php");
cInclude("classes", "class.htmlelements.php");
cInclude("classes", "class.properties.php");
cInclude("includes", "functions.upl.php");

$page = new UI_Page;

if (is_writable($cfgClient[$client]["upl"]["path"].$path) || is_dbfs($path))
{
    $form = new UI_Table_Form("properties");
    $form->setVar("frame", $frame);
    $form->setVar("area", "upl");
    $form->setVar("path", $path);
    $form->setVar("file", $file);
#    $form->setVar("action", "upl_upload");
	$form->setVar("action", "upl_withinfo");	
    $form->setVar("appendparameters", $_REQUEST["appendparameters"]);
	$form->addHeader(i18n("Upload"));	
    $num_upload_files = getEffectiveSetting('backend','num_upload_files',10);
    $uplelement = new cHTMLUpload("file[]",40);	
			
	/*****************************************
	* BEGIN: Edit by florian@administra.de :   2007/06/23 20:43
	******************************************/

	$kwedit = new cHTMLTextarea("keywords[]", "");
	$kwedit->setHeight (2);
	$mnedit = new cHTMLTextbox("medianame[]", "",53);
	$moedit = new cHTMLTextarea("medianotes[]", "");
	$moedit->setHeight (2);
	$dsedit = new cHTMLTextarea("description[]", "");
	$dsedit->setHeight (2);
	$viewoptimg = '<img style="margin-left: 2px; margin-right: 2px;" alt="'.i18n("Display properties").'" title="'.i18n("Display properties").'" src="images/but_art_conf2.gif">';
	$viewoptimgdiv = new cHTMLDIV($viewoptimg);
	$viewoptimgdiv->setStyle("float:right; padding-top:2px");

	for ($i=1; $i<=$num_upload_files; $i++) {
		$viewoptimgdiv->setEvent("click", "(document.getElementById('viewopt$i').style.display=='none')?document.getElementById('viewopt$i').style.display='inline':document.getElementById('viewopt$i').style.display='none';");
		$viewoptdiv = new cHTMLDIV();
		$viewoptdiv->setId('viewopt'.$i);
		$viewoptdiv->setClass("text_medium");
		$viewoptdiv->setStyle("display:none");
		$viewoptdiv->setContent('<br /><br />'.i18n("Media name").'<br />'.$mnedit->render().'<br /><br />'.
									i18n("Description").'<br />'.$dsedit->render().'<br /><br />'.
									i18n("Keywords").'<br />'.$kwedit->render().'<br /><br />'.
									i18n("Internal notes").'<br />'.$moedit->render().'<br /><br />');
		$form->add(i18n("File").' '.$i, $viewoptimgdiv->render().$uplelement->render().$viewoptdiv->render());
	}
	
	/*****************************************
	* END: Edit by florian@administra.de :   2007/06/23 20:43
	******************************************/
    
    $page->setContent($form->render());
} else {
	$page->setContent($notification->returnNotification("error", i18n("Directory not writable")));
}	
$page->render();
?>
Datt war's, nun sollte ett soweit funzen.

Beste Grüße,
Schwarzesocke

Verfasst: So 24. Jun 2007, 17:40
von Schwarzesocke
Aktuellere Version mit mehr Features:
http://contenido.org/forum/viewtopic.php?t=17470