Mod: Userspezifisches Uploadverzeichnis

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Mod: Userspezifisches Uploadverzeichnis

Beitrag von Oldperl » Mo 22. Mai 2006, 10:06

Bisher hat Contenido noch nicht die Möglichkeit im Uploadbereich für Benutzer nur bestimmte Verzeichnisse freizugeben.

Bis dieses von den Entwickler noch eingebaut wird hier ein kleiner Mod, der es zumindest erlaubt, einen User auf einen bestimmten Verzeichnisbaum zu begrenzen.

Dabei muß in den Core eingegriffen werden, das heißt die Änderung ist nach einem update erneut einzubauen.

In der Datei include.upl_dirs_overview.php im includes-Verzeichnis ab Zeile 132 folgendes ersetzen

Code: Alles auswählen

$rootTreeItem = new TreeItem;
$rootTreeItem->custom["level"] = 0;
uplRecursiveDirectoryList($cfgClient[$client]["upl"]["path"], $rootTreeItem, 2);
durch dieses

Code: Alles auswählen

/*
*   modification by oldperl 22.05.2006
*   gives a user a specified upload directory with user-variable
*   set a user-property like 'upload' 'userpath' '[directory in upload]'
*
*   updatet 02.02.2007
*	now the userpath in user-property is the root-path in filemanager
*
*	please dont't forget to edit include.upl_files_overview for correct showing the first time
*	and include.upl_left_top.php, so the right path is set for new directorys
*
*	see contenido forum (http://contenido.org/forum/viewtopic.php?p=95617)
*/

$user_upload_path = getEffectiveSetting("upload","userpath");  // mod by emergence

if (is_string($user_upload_path) AND !empty($user_upload_path)) {
   trim($user_upload_path);
   $file = $user_upload_path;
   if (substr($user_upload_path, -1) != "/") {
       $user_upload_path .= "/";
    }
   $pathstring = $user_upload_path;
   if (substr($cfgClient[$client]["upl"]["path"], -1) != "/" AND substr($user_upload_path, 0, 1) == "/") {
       $user_upload_path = substr($user_upload_path, 1);
    }
}

$rootTreeItem = new TreeItem;
$rootTreeItem->custom["level"] = 0;
uplRecursiveDirectoryList($cfgClient[$client]["upl"]["path"].$user_upload_path, $rootTreeItem, 2);

// end modification by oldperl
Nun noch in den Dateien include.upl_files_overview.php (nach Zeile 21) und include.upl_left_top.php (Zeile 14) folgenden Code einfügen.

Code: Alles auswählen

/*
*   modification by oldperl 02.02.2007
*   gives a user a specified upload directory with user-variable
*   set a user-property like 'upload' 'userpath' '[directory in upload]'
*
*	see contenido forum (http://contenido.org/forum/viewtopic.php?p=95617)
*/

$user_upload_path = getEffectiveSetting("upload","userpath");  // mod by emergence

if (is_string($user_upload_path) AND !empty($user_upload_path)) {
   trim($user_upload_path);
   if (substr($user_upload_path, -1) != "/") {
       $user_upload_path .= "/";
    }
   if (!isset($path) OR empty($path)) $path = $user_upload_path;
}

// end modification by oldperl
gibt man nun dem Benutzer eine benutzerdefinierte Variable
Area/Type: upload
Eigenschaft: userpath
Wert: [Unterverzeichnis in upload] (z.B. 'Bilder')

so wird dieses Verzeichnis mit seinen Unterverzeichnissen zum Hauptverzeichnis im Dateimanager.
Dabei wird die angegebene Pfadangabe auf den / am Anfang und Ende geprüft und gegebenenfalls korrigiert.
Ebenfalls wird die Dateiübersicht beim 1. Aufruf nur Dateien aus diesem Userverzeichnis anzeigen und Ordner werden auch nur in diesem Verzeichnis erstellt.

Somit ist es möglich jedem User ein eigenes Uploadverzeichnis in Uploads zuzuordnen.

Über Rückmeldungen und gefundene Fehler würde ich mich freuen 8)


EDIT 02.02.2007:
  • bugfix für mod, Userverzeichnis ist nun Stammverzeichnis im Dateimanager
  • mod ebenfalls für Neuanlage eines Ordners (include.upl_left_top.php)
  • mod für Dateiübersicht beim 1. Aufruf des Dateimanagers (include.upl_files_overview.php)
  • Vorschlag von emergence eingebaut (siehe thread)
Mit Gruß aus Franken

Ortwin
Zuletzt geändert von Oldperl am Fr 2. Feb 2007, 13:34, insgesamt 2-mal geändert.
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

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

Beitrag von emergence » Mi 24. Mai 2006, 11:24

ich würd anstelle von

Code: Alles auswählen

$currentuser->getUserProperty("upload","userpath")
folgendes

Code: Alles auswählen

getEffectiveSetting("upload","userpath")
verwenden...

funktioniert dann auch für gruppen...
*** make your own tools (wishlist :: thx)

micha667
Beiträge: 143
Registriert: Di 4. Mai 2004, 11:54
Kontaktdaten:

Beitrag von micha667 » Do 1. Feb 2007, 16:58

gilt diese mod-möglichkeit auch noch für die 4.6.15 (mod_rewrite)? finde den entsprechenden zu ersetzenden code nicht in der datei...

könnte die lösung gut gebrauchen. offiziell ist ja noch keine derartige möglichkeit ins system eingebaut. oder hab ich´s übersehen?

danke

gruß
micha

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Do 1. Feb 2007, 17:16

micha667 hat geschrieben:finde den entsprechenden zu ersetzenden code nicht in der datei...
Dürfte auch schwierig werden. Der Code gehört nämlich in die Datei "include.upl_dirs_overview.php". Ich habe das oben auch geändert.

micha667
Beiträge: 143
Registriert: Di 4. Mai 2004, 11:54
Kontaktdaten:

Beitrag von micha667 » Do 1. Feb 2007, 17:42

danke...

wenn ich die änderungen vorgenommen habe und dem user z.b.:

upload userpath layout

verpasst habe, zeigt er mit nach login (als dieser user) nur den ordner 'Upload', nicht aber den ordner layout an.
hab ich was übersehen bzw. falsch gemacht?

gruß
micha

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Beitrag von Oldperl » Fr 2. Feb 2007, 11:38

@micha667

hab den mod im 1. Post geändert, versuch diesen mal einzubauen ob dann alles funktioniert. Bitte auch die 2 anderen Dateien noch ändern.

@Dodger77

danke für die Änderung :D


Sollte nach Einbau des mod irgendetwas nicht funktionieren, wäre ich über ne kleine Info hier im thread dankbar 8)

Gruß aus dem trüben Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

JumBuck
Beiträge: 8
Registriert: Do 15. Mär 2007, 14:10
Kontaktdaten:

Zugriff auf dbfs regulieren?

Beitrag von JumBuck » Do 15. Mär 2007, 14:15

@Oldperl -erstmal vielen Dank, dein Posting hat mir sehr geholfen !

Ist damit auch eine Einschränkung auf das neue dbfs möglich ?

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Do 15. Mär 2007, 14:19

DBFS bietet die Begrenzung auf (beliebige) angemeldete Benutzer von Hause aus (in den Dateieigenschaften den entsprechenden Haken setzen).

Jedoch unbedingt diesen Beitrag beachten, sonst ist die Arbeit umsonst (Dateieigenschaften bei DBFS gehen verloren):
http://www.contenido.org/forum/viewtopi ... 5227#95227

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

JumBuck
Beiträge: 8
Registriert: Do 15. Mär 2007, 14:10
Kontaktdaten:

Beitrag von JumBuck » Do 15. Mär 2007, 14:30

Danke für die superschnelle Anwort. Leider reicht mir die Einschränkung auf nicht eingeloggte User für einzel Dateien nicht, ich würde gerne ganze Ordner einer beliegigen Gruppe zuordnen.

Ich habe z.Zt. vier Gruppen, jede soll Zugriff auf einen Ordner der für alle verfügbar ist haben und ausserdem noch einen mit exklusivem Zugriff nur für diese Gruppe.

Das ganze soll als Dokumentenaustausch für ein Forschungsprojekt dienen welches in versch. Gruppen eingeteilt ist.

sherman
Beiträge: 40
Registriert: Mi 29. Nov 2006, 00:44
Kontaktdaten:

Dateien hochladen klappt nicht

Beitrag von sherman » Di 26. Feb 2008, 00:46

Oldperl hat geschrieben:Sollte nach Einbau des mod irgendetwas nicht funktionieren, wäre ich über ne kleine Info hier im thread dankbar

Ortwin
Hallo Oldperl,

ich kann zwar als Benutzer meinen mir zugewiesenen Ordner im DBFS sehen, aber weder die dort abgelegten Datein kann ich sehen noch kann ich etwas hochladen.
Wenn ich auf "Datei hochladen" klicke sagt mir Contenido "Verzeichnis nicht beschreibbar".

Bild

Meine include.upl_dirs_overview.php

Code: Alles auswählen

<?php


/*****************************************
* File      :   $RCSfile: include.upl_dirs_overview.php,v $
* Project   :   Contenido
* Descr     :   Directory overview
*
* Author    :   Timo A. Hummel
*               
* Created   :   28.12.2003
* Modified  :   $Date: 2006/10/06 00:08:17 $
*
* © four for business AG, www.4fb.de
*
* $Id: include.upl_dirs_overview.php,v 1.20 2006/10/06 00:08:17 bjoern.behrens Exp $
******************************************/

cInclude("classes", "class.ui.php");
cInclude("classes", "class.htmlelements.php");
cInclude("classes", "class.properties.php");
/*
*   modification by oldperl 02.02.2007
*   gives a user a specified upload directory with user-variable
*   set a user-property like 'upload' 'userpath' '[directory in upload]'
*
*   see contenido forum (http://contenido.org/forum/viewtopic.php?p=95617)
*/

$user_upload_path = getEffectiveSetting("upload","userpath");  // mod by emergence

if (is_string($user_upload_path) AND !empty($user_upload_path)) {
   trim($user_upload_path);
   if (substr($user_upload_path, -1) != "/") {
       $user_upload_path .= "/";
    }
   if (!isset($path) OR empty($path)) $path = $user_upload_path;
}

// end modification by oldperl

cInclude("classes", "class.upload.php");
cInclude("classes", "widgets/class.widgets.treeview.php");
cInclude("includes", "functions.con.php");
cInclude("includes", "functions.str.php");

function getExpandCollapseButton($item)
{
	global $sess, $PHP_SELF, $frame, $area, $appendparameters;
	$selflink = "main.php";

	if (count($item->subitems) > 0)
	{
		if ($item->collapsed == true)
		{
			$expandlink = $sess->url($selflink."?area=$area&frame=$frame&appendparameters=$appendparameters&expand=".$item->id);
			return ('<a href="'.$expandlink.'" alt="Kategorie öffnen" title="Kategorie öffnen"><img src="'.$item->collapsed_icon.'" border="0" align="middle"></a>');
		} else
		{
			$collapselink = $sess->url($selflink."?area=$area&appendparameters=$appendparameters&frame=$frame&collapse=".$item->id);
			return ('<a href="'.$collapselink.'" alt="Kategorie schließen" title="Kategorie schließen"><img src="'.$item->expanded_icon.'" border="0" align="middle"></a>');
		}
	} else
	{
		if ($item->custom["lastitem"])
		{
			return '<img src="images/grid_linedownrightend.gif" align="middle" width="18" height="18">';
		} else
		{
			return '<img src="images/grid_linedownright.gif" align="middle" width="18" height="18">';
		}
	}
}

$appendparameters 		= $_REQUEST["appendparameters"];

if (!isset ($action))
	$action = "";

if ($tmp_area == "") {
	$tmp_area = $area; // $tmp_area used at two places for unknown reasons...
}

$uplexpandedList 		= unserialize($currentuser->getUserProperty("system", "upl_expandstate"));
$upldbfsexpandedList 	= unserialize($currentuser->getUserProperty("system", "upl_dbfs_expandstate"));

if (!is_array($uplexpandedList))
{
	$uplexpandedList = array ();
}

if (!is_array($upldbfsexpandedList))
{
	$upldbfsexpandedList = array ();
}

if ($action == "upl_renamedir")
{
	if ($perm->have_perm_area_action("upl", "upl_renamedir"))
	{
		uplRenameDirectory($oldname, $newname, $parent);
		$path = $cfgClient[$client]['upl']['path'].$parent.$newname."/";
		if (in_array($cfgClient[$client]['upl']['path'].$parent.$oldname."/", $uplexpandedList))
		{
			$uplexpandedList[] = $cfgClient[$client]['upl']['path'].$parent.$newname."/";
		}
	}
}

$dbfs = new DBFSCollection;

if ($action == "upl_delete")
{
	if (is_dbfs($path))
	{
		$dbfs->remove($path."/.");
	} else
	{
		/* Check for files */
		if (uplHasFiles($path))
		{
			$failedFiles = array ();

			$directory = opendir($cfgClient[$client]["upl"]["path"].$path);
			while (false !== ($dir_entry = readdir($directory)))
			{
				if ($dir_entry != "." && $dir_entry != "..")
				{
					$res = @ unlink($cfgClient[$client]["upl"]["path"].$path.$dir_entry);

					if ($res == false)
					{
						$failedFiles[] = $dir_entry;
					}
				}
			}
		}

		if (count($failedFiles) > 0)
		{
			$notification->displayNotification("warning", i18n("Failed to delete the following files:")."<br><br>".implode("<br>", $failedFiles));
		} else
		{
			$res = @ rmdir($cfgClient[$client]['upl']['path'].$path);
			if ($res == false)
			{
				$notification->displayNotification("warning", sprintf(i18n("Failed to remove directory %s"), $path));
			}
		}
	}
}

$tpl->reset();

$file = 'Upload';
$pathstring = '';

/*
*   modification by oldperl 22.05.2006
*   gives a user a specified upload directory with user-variable
*   set a user-property like 'upload' 'userpath' '[directory in upload]'
*
*   updatet 02.02.2007
*   now the userpath in user-property is the root-path in filemanager
*
*   please dont't forget to edit include.upl_files_overview for correct showing the first time
*   and include.upl_left_top.php, so the right path is set for new directorys
*
*   see contenido forum (http://contenido.org/forum/viewtopic.php?p=95617)
*/

$user_upload_path = getEffectiveSetting("upload","userpath");  // mod by emergence

if (is_string($user_upload_path) AND !empty($user_upload_path)) {
   trim($user_upload_path);
   $file = $user_upload_path;
   if (substr($user_upload_path, -1) != "/") {
       $user_upload_path .= "/";
    }
   $pathstring = $user_upload_path;
   if (substr($cfgClient[$client]["upl"]["path"], -1) != "/" AND substr($user_upload_path, 0, 1) == "/") {
       $user_upload_path = substr($user_upload_path, 1);
    }
}

$rootTreeItem = new TreeItem;
$rootTreeItem->custom["level"] = 0;
uplRecursiveDirectoryList($cfgClient[$client]["upl"]["path"].$user_upload_path, $rootTreeItem, 2);

// end modification by oldperl

/* Mark all items in the expandedList as expanded */
foreach ($uplexpandedList as $key => $value)
{
	$rootTreeItem->markExpanded($value);
}

/* Collapse and expand the tree */
if (is_string($collapse))
{
	$rootTreeItem->markCollapsed($collapse);
}

if (is_string($expand))
{
	$rootTreeItem->markExpanded($expand);
}

$uplexpandedList = Array ();
$rootTreeItem->getExpandedList($uplexpandedList);

$currentuser->setUserProperty("system", "upl_expandstate", serialize($uplexpandedList));

$objects = Array ();
$rootTreeItem->traverse($objects);

unset ($objects[0]);

$bgcolor = (is_int($tpl->dyn_cnt / 2)) ? $cfg["color"]["table_light"] : $cfg["color"]["table_dark"];

if ($appendparameters == "filebrowser")
{
	$mtree = new cWidgetTreeView("b58f0ae3-8d4e-4bb3-a754-5f0628863364");

	$cattree = conFetchCategoryTree();

	$marray = array ();

	foreach ($cattree as $key => $catitem)
	{
		$no_start = true;
		$no_online = true;
		$no_start = !strHasStartArticle($catitem["idcat"], $lang);
		
		$no_online = !$catitem["visible"];
		
		if ($catitem["visible"] == 1)
		{
			if ($catitem["public"] == 0)
			{
				if ($no_start || $no_online)
				{
					# Error found
					$tmp_img = "folder_on_error_locked.gif";

				} else
				{
					# No error found
					$tmp_img = "folder_on_locked.gif";

				}
			} else
			{
				# Category is public
				if ($no_start || $no_online)
				{
					# Error found
					$tmp_img = "folder_on_error.gif";

				} else
				{
					# No error found
					$tmp_img = "folder_on.gif";

				}
			}
		} else
		{
			# Category is offline

			if ($catitem['public'] == 0)
			{
				# Category is locked
				if ($no_start || $no_online)
				{
					# Error found
					$tmp_img = "folder_off_error_locked.gif";

				} else
				{
					# No error found
					$tmp_img = "folder_off_locked.gif";

				}

			} else
			{
				# Category is public
				if ($no_start || $no_online)
				{
					# Error found
					$tmp_img = "folder_off_error.gif";

				} else
				{
					# No error found
					$tmp_img = "folder_off.gif";

				}
			}
		}
		
		$icon = "images/icons/category/".$tmp_img;

		$idcat = $catitem["idcat"];
		
		$name = '<a href="'.$sess->url("main.php?area=$area&frame=5&idcat=$idcat&appendparameters=$appendparameters").'" target="right_bottom">'.$catitem["name"].'</a>';		
		$marray[] = array ("id" => $catitem["idcat"], "name" => $name, "level" => $catitem["level"], "attributes" => array ("icon" => $icon));
	}

	$mtree->setTreeName(i18n("Categories"));
	$mtree->setIcon("images/grid_folder.gif");
	$mtree->importTable($marray);

	$baselink = new cHTMLLink;
	$baselink->setCLink($area, $frame, "");
	$baselink->setCustom("appendparameters", $appendparameters);

	$mtree->setBaseLink($baselink);
	$mtree->setBackgroundMode(TREEVIEW_BACKGROUND_SHADED);
	$mtree->setMouseoverMode(TREEVIEW_MOUSEOVER_NONE);

	$mtree->setCollapsed($collapsed);

	$mtree->processParameters();

	$collapsed = array ();
	$mtree->getCollapsedList($collapsed);

	$tpl->set('s', 'CATBROWSER', $mtree->render());

	$tpl->set('s', 'APPENDPARAMETERS', 'url += \'&appendparameters='.$appendparameters.'\'');
} else
{
	$tpl->set('s', 'CATBROWSER', '');
	$tpl->set('s', 'APPENDPARAMETERS', 'url += \'&appendparameters='.$appendparameters.'\'');

	$search = new cHTMLTextbox("searchfor", $searchfor, 30);
	
	$tpl->set('d', 'PATH', '');
	$tpl->set('d', 'BGCOLOR', $bgcolor);
	$tpl->set('d', 'INDENT', 3);
	$tpl->set('d', 'DIRNAME', i18n("Search for"));
	$tpl->set('d', 'EDITBUTTON', '');
	$tpl->set('d', 'DELETEBUTTON', '');
	$tpl->set('d', 'COLLAPSE', '');
	$tpl->next();	
	
	$form = new UI_Form("search");
	$form->add("search", '<table border="0" cellspacing="0" cellpadding="0"><tr><td>'.$search->render().'</td><td><input type="image" src="images/submit.gif"></td></tr></table>');
	$form->setVar("area", $area);
	$form->setVar("frame", $frame);
	$form->setVar("appendparameters", $appendparameters);
	
	$tpl->set('d', 'PATH', '');
	$tpl->set('d', 'BGCOLOR', $bgcolor);
	$tpl->set('d', 'INDENT', 3);
	$tpl->set('d', 'DIRNAME', $form->render());
	$tpl->set('d', 'EDITBUTTON', '');
	$tpl->set('d', 'DELETEBUTTON', '');
	$tpl->set('d', 'COLLAPSE', '');
	$tpl->next();
}

$tpl->set('s', 'DIRNAME_0', '');
$tpl->set('s', 'EDITBUTTON_0', '');
$tpl->set('s', 'DELETEBUTTON_0', '');


chdir($cfg['path']['contenido']);



$tpl->set('d', 'PATH', '');
$tpl->set('d', 'BGCOLOR', $bgcolor);
$tpl->set('d', 'INDENT', 3);
$tpl->set('d', 'DIRNAME', '&nbsp;');
$tpl->set('d', 'EDITBUTTON', '');
$tpl->set('d', 'DELETEBUTTON', '');
$tpl->set('d', 'COLLAPSE', '');
$tpl->next();

$tpl->set('s', 'SID', $sess->id);
$tpl->set('s', 'RENAME', i18n("Enter the new directory name:"));

/* Do searching */
if ($searchfor != "")
{
	$items = uplSearch($searchfor);

	if (is_array($items))
	{

		$tmp_mstr = '<a href="javascript:conMultiLink(\'%s\', \'%s\', \'%s\', \'%s\')">%s</a>';
		$mstr = sprintf($tmp_mstr, 'right_bottom', $sess->url("main.php?area=upl_search_results&frame=4&searchfor=$searchfor&appendparameters=$appendparameters"), 'right_top', $sess->url("main.php?area=$area&frame=3&appendparameters=$appendparameters"), '<img align="middle" src="images/but_lens.gif" style="padding-right: 3px;">'.i18n("Search results"));

		$tpl->set('d', 'PATH', $pathstring);
		$tpl->set('d', 'BGCOLOR', $bgcolor);
		$tpl->set('d', 'INDENT', 3);
		$tpl->set('d', 'DIRNAME', $mstr);
		$tpl->set('d', 'EDITBUTTON', '');
		$tpl->set('d', 'DELETEBUTTON', '');
		$tpl->set('d', 'COLLAPSE', '');
		$tpl->next();
		$tpl->set('d', 'PATH', '');
		$tpl->set('d', 'BGCOLOR', $bgcolor);
		$tpl->set('d', 'INDENT', 3);
		$tpl->set('d', 'DIRNAME', '&nbsp;');
		$tpl->set('d', 'EDITBUTTON', '');
		$tpl->set('d', 'DELETEBUTTON', '');
		$tpl->set('d', 'COLLAPSE', '');
		$tpl->next();
	}

}

# create javascript multilink
$tmp_mstr = '<a href="javascript:conMultiLink(\'%s\', \'%s\',\'%s\', \'%s\')">%s</a>';
$mstr = sprintf($tmp_mstr, 'right_top', $sess->url("main.php?area=$area&frame=3&path=$pathstring&appendparameters=$appendparameters"), 'right_bottom', $sess->url("main.php?area=$area&frame=4&path=$pathstring&appendparameters=$appendparameters"), '<img src="images/ordner_oben.gif" align="middle" alt="" border="0"><img align="middle" src="images/spacer.gif" width="5" border="0">'.$file);

$tpl->set('d', 'PATH', $pathstring);
$tpl->set('d', 'BGCOLOR', $bgcolor);
$tpl->set('d', 'INDENT', 3);
$tpl->set('d', 'DIRNAME', $mstr);
$tpl->set('d', 'EDITBUTTON', '');
$tpl->set('d', 'DELETEBUTTON', '<img src="images/delete_inact.gif">');
$tpl->set('d', 'COLLAPSE', '');
$tpl->next();

if (is_array($objects))
{
	foreach ($objects as $a_file)
	{

		$file = $a_file->name;
		$depth = $a_file->custom["level"] - 1;
		$pathstring = str_replace($cfgClient[$client]['upl']['path'], "", $a_file->id);
		$a_file->collapsed_icon = "images/grid_expand.gif";
		$a_file->expanded_icon = "images/grid_collapse.gif";

		$dlevels[$depth] = $a_file->custom["lastitem"];

		$imgcollapse = getExpandCollapseButton($a_file);
		$fileurl = rawurlencode($path.$file.'/');
		$pathurl = rawurlencode($path);

		# Indent for every level
		$cnt = $depth;
		$indent = 18;

		for ($i = 0; $i < $cnt; $i ++)
		{
			# 16 px for every level
			$indent += 18;
		}

		# create javascript multilink
		$tmp_mstr = '<a href="javascript:conMultiLink(\'%s\', \'%s\', \'%s\', \'%s\')">%s</a>';
		$mstr = sprintf($tmp_mstr, 'right_bottom', $sess->url("main.php?area=$area&frame=4&path=$pathstring&appendparameters=$appendparameters"), 'right_top', $sess->url("main.php?area=$area&frame=3&path=$pathstring&appendparameters=$appendparameters"), '<img src="images/grid_folder.gif" align="middle" border="0" alt=""><img src="images/spacer.gif" align="middle" width="5" border="0">'.$file);

		$editbutton = "";

		$hasFiles = uplHasFiles($pathstring);
		$hasSubdirs = uplHasSubdirs($pathstring);

		if ((!$hasSubdirs) && (!$hasFiles) && $perm->have_perm_area_action($tmp_area, "upl_rmdir"))
		{ #&& !in_array($path.$file."/", $upl_protected)) {
			$deletebutton = '<a title="'.i18n("Delete directory").'" href="javascript://" onclick="event.cancelBubble=true;box.confirm(\''.i18n("Delete directory").'\', \''.i18n("Do you really want to delete the following directory:").'<b>'.$file.'</b>\', \'deleteDirectory(\\\''.$pathstring.'\\\')\')"><img src="'.$cfg['path']['images'].'delete.gif" border="0" title="'.i18n("Delete directory").'" alt="'.i18n("Delete directory").'"></a>';
		} else
		{
			if ($hasFiles)
			{
				$message = i18n("Directory contains files");
			} else
			{
				$message = i18n("Permission denied");
			}

			$deletebutton = "<img src="".$cfg["path"]["images"]."delete_inact.gif" border="0" alt="".$message."" title="".$message."">";
		}

		$bgcolor = (is_int($tpl->dyn_cnt / 2)) ? $cfg["color"]["table_light"] : $cfg["color"]["table_dark"];

		$tpl->set('d', 'PATH', $pathstring);
		$tpl->set('d', 'BGCOLOR', $bgcolor);
		$tpl->set('d', 'INDENT', 2);

		$gline = "";

		for ($i = 1; $i < $depth; $i ++)
		{
			if ($dlevels[$i] == false && $i != 0)
			{
				$gline .= '<img src="images/grid_linedown.gif" align="middle">';
			} else
			{
				$gline .= '<img src="images/spacer.gif" width="18" height="18" align="middle">';
			}
		}

		$parent = str_replace($cfgClient[$client]['upl']['path'], "", $a_file->custom["parent"]);
		$editbutton = '<a href="javascript:renameDir(\''.$file.'\',\''.$parent.'\');"><img src="images/but_rename.gif" border="0"></a>';

		$tpl->set('d', 'DIRNAME', $mstr);
		$tpl->set('d', 'EDITBUTTON', '');
		$tpl->set('d', 'DELETEBUTTON', $deletebutton);

		$tpl->set('d', 'COLLAPSE', $gline.$imgcollapse);
		$tpl->next();

	}
}

$tpl->set('d', 'DELETEBUTTON', '&nbsp;');
$tpl->set('d', 'DIRNAME', '');
$tpl->set('d', 'EDITBUTTON', '');
$tpl->set('d', 'COLLAPSE', "");
$tpl->next();
/* Database-based filesystem (DBFS) */
$file = i18n("Database Filesystem");
$pathstring = 'dbfs:';

$rootTreeItem = new TreeItem;
$rootTreeItem->custom["level"] = 0;
uplRecursiveDBDirectoryList("", $rootTreeItem, 2);

/* Mark all items in the expandedList as expanded */
foreach ($upldbfsexpandedList as $key => $value)
{

	$rootTreeItem->markExpanded($value);
}

/* Collapse and expand the tree */
if (is_string($collapse))
{
	$rootTreeItem->markCollapsed($collapse);
}

if (is_string($expand))
{
	$rootTreeItem->markExpanded($expand);
}

$upldbfsexpandedList = Array ();
$rootTreeItem->getExpandedList($upldbfsexpandedList);

$currentuser->setUserProperty("system", "upl_dbfs_expandstate", serialize($upldbfsexpandedList));

$objects = Array ();
$rootTreeItem->traverse($objects);

unset ($objects[0]);

$bgcolor = (is_int($tpl->dyn_cnt / 2)) ? $cfg["color"]["table_light"] : $cfg["color"]["table_dark"];

# create javascript multilink
$tmp_mstr = '<a href="javascript:conMultiLink(\'%s\', \'%s\',\'%s\', \'%s\')">%s</a>';
$mstr = sprintf($tmp_mstr, 'right_top', $sess->url("main.php?area=$area&frame=3&path=$pathstring&appendparameters=$appendparameters"), 'right_bottom', $sess->url("main.php?area=$area&frame=4&path=$pathstring&appendparameters=$appendparameters"), '<img src="images/ordner_oben.gif" align="middle" alt="" border="0"><img align="middle" src="images/spacer.gif" width="5" border="0">'.$file);

$tpl->set('d', 'PATH', $pathstring);
$tpl->set('d', 'BGCOLOR', $bgcolor);
$tpl->set('d', 'INDENT', 3);
$tpl->set('d', 'DIRNAME', $mstr);
$tpl->set('d', 'EDITBUTTON', '');
$tpl->set('d', 'DELETEBUTTON', '<img src="images/delete_inact.gif">');
$tpl->set('d', 'COLLAPSE', '');
$tpl->next();

$dbfsc = new DBFSCollection;

$dlevels = array ();

if (is_array($objects))
{
	foreach ($objects as $a_file)
	{

		$file = $a_file->name;
		$depth = $a_file->custom["level"] - 1;
		//$pathstring = str_replace("dbfs:/","",$a_file->id."/");
		$pathstring = $a_file->id;
		$a_file->collapsed_icon = "images/grid_expand.gif";
		$a_file->expanded_icon = "images/grid_collapse.gif";

		$dlevels[$depth] = $a_file->custom["lastitem"];

		$collapse = getExpandCollapseButton($a_file);
		$fileurl = rawurlencode($path.$file.'/');
		$pathurl = rawurlencode($path);

		# Indent for every level
		$cnt = $depth;
		$indent = 18;

		for ($i = 0; $i < $cnt; $i ++)
		{
			# 18 px for every level
			$indent += 18;
		}

		# create javascript multilink
		$tmp_mstr = '<a href="javascript:conMultiLink(\'%s\', \'%s\', \'%s\', \'%s\')">%s</a>';
		$mstr = sprintf($tmp_mstr, 'right_bottom', $sess->url("main.php?area=$area&frame=4&path=$pathstring&appendparameters=$appendparameters"), 'right_top', $sess->url("main.php?area=$area&frame=3&path=$pathstring&appendparameters=$appendparameters"), '<img src="images/grid_folder.gif" align="middle" border="0" alt=""><img src="images/spacer.gif" align="middle" width="5" border="0">'.$file);

		$editbutton = "";

		$hasFiles = $dbfsc->hasFiles($pathstring);

		if (!$hasFiles && $perm->have_perm_area_action($tmp_area, "upl_rmdir"))
		{ #&& !in_array($path.$file."/", $upl_protected)) {
			$deletebutton = '<a title="'.i18n("Delete directory").'" href="javascript://" onclick="event.cancelBubble=true;box.confirm(\''.i18n("Delete directory").'\', \''.i18n("Do you really want to delete the following directory:").'<b>'.$file.'</b>\', \'deleteDirectory(\\\''.$pathstring.'\\\')\')"><img src="'.$cfg['path']['images'].'delete.gif" border="0" title="'.i18n("Delete directory").'" alt="'.i18n("Delete directory").'"></a>';
		} else
		{
			if ($hasFiles)
			{
				$message = i18n("Directory contains files");
			} else
			{
				$message = i18n("Permission denied");
			}

			$deletebutton = "<img src="".$cfg["path"]["images"]."delete_inact.gif" border="0" alt="".$message."" title="".$message."">";
		}

		$bgcolor = (is_int($tpl->dyn_cnt / 2)) ? $cfg["color"]["table_light"] : $cfg["color"]["table_dark"];

		$tpl->set('d', 'PATH', $pathstring);
		$tpl->set('d', 'BGCOLOR', $bgcolor);
		$tpl->set('d', 'INDENT', 2);

		$gline = "";

		for ($i = 1; $i < $depth; $i ++)
		{
			if ($dlevels[$i] == false && $i != 0)
			{
				$gline .= '<img src="images/grid_linedown.gif" align="middle">';
			} else
			{
				$gline .= '<img src="images/spacer.gif" width="18" height="18" align="middle">';
			}
		}

		$parent = str_replace($cfgClient[$client]['upl']['path'], "", $a_file->custom["parent"]);
		$editbutton = '<a href="javascript:renameDir(\''.$file.'\',\''.$parent.'\');"><img src="images/but_rename.gif" border="0"></a>';

		$tpl->set('d', 'DIRNAME', $mstr);
		$tpl->set('d', 'EDITBUTTON', '');
		$tpl->set('d', 'DELETEBUTTON', $deletebutton);

		$tpl->set('d', 'COLLAPSE', $gline.$collapse);
		$tpl->next();

	}
}

chdir($cfg["path"]["contenido"]);
$tpl->generate($cfg['path']['templates'].$cfg['templates']['upl_dirs_overview']);

?>


Und meine include.upl_left_top.php

Code: Alles auswählen

<?php

/******************************************
* File      :   include.upl_left_top.php
* Project   :   Contenido 
* Descr     :
*
* Author    :   Olaf Niemann
* Created   :   01.04.2003
* Modified  :   01.04.2003
*
* © four for business AG
******************************************/

/*
*   modification by oldperl 02.02.2007
*   gives a user a specified upload directory with user-variable
*   set a user-property like 'upload' 'userpath' '[directory in upload]'
*
*   see contenido forum (http://contenido.org/forum/viewtopic.php?p=95617)
*/

$user_upload_path = getEffectiveSetting("upload","userpath");  // mod by emergence

if (is_string($user_upload_path) AND !empty($user_upload_path)) {
   trim($user_upload_path);
   if (substr($user_upload_path, -1) != "/") {
       $user_upload_path .= "/";
    }
   if (!isset($path) OR empty($path)) $path = $user_upload_path;
}

// end modification by oldperl

$tpl->set('s', 'FORMACTION', '');

if ($perm->have_perm_area_action("upl","upl_mkdir") ) {
    $tpl->set('s', 'CAPTION', i18n("New directory in"));
    $inputfield = '<input type="hidden" name="path" value="'.$path.'">
                   <input class="text_small" type="text" name="foldername" value="" onChange="document.forms[0].submit();">';
    $tpl->set('s', 'TARGET', 'onSubmit="parent.frames[1].location.href=\''.$sess->url("main.php?area=upl&action=upl_mkdir&frame=2&appendparameters=$appendparameters").'&path=\'+document.forms[0].path.value+\'&foldername=\'+document.forms[0].foldername.value;"');
    $tpl->set('s', 'SUBMIT', '<input type="image" src="'.$cfg["path"]["htmlpath"].'images/submit.gif">');
} else {
    $tpl->set('s', 'CAPTION', '');
    $inputfield = '';
    $tpl->set('s', 'TARGET', '');
    $tpl->set('s', 'SUBMIT', '');
}


$tpl->set('s', 'ACTION', $inputfield);

$tpl->generate($cfg['path']['templates'] . $cfg['templates']['upl_left_top']);


?>
Was mach ich falsch?

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Beitrag von Oldperl » Di 26. Feb 2008, 13:46

Du schaust im falschen Bereich?!

Das von dir angegebene Bild :arrow:
Bild
hat nichts mit dem Dateiupload zu tun. Das sieht doch denn stark nach der Userverwaltung aus. ;-)

Edit: Sorry, grad gesehen, das war ja so gewollt :roll:

Ok, dann andere Frage, nutzt du das Datenbanksystem oder den upload-Ordner?
Kann es sein, das es am Server liegt, safe_mode, Benutzer und Gruppen?
Dafür gibts schon ein paar threads im Forum.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Mod: Userspezifisches Uploadverzeichnis

Beitrag von derSteffen » Fr 5. Jun 2009, 13:15

Diese Erweiterung ist wirklich Gold wert.

Was müßte man denn machen, wenn man jetzt mehrer Ordner nur einer Gruppe zuweisen möchte. Am besten wäre es ja, einfach im Feld "Wert" ein Komma zu setzen und dann einfach den oder die andern Ordner aufzuzählen. Leider klappt das nicht.

Es klappt auch leider nicht wenn ich versuche den "Area/Type" in opload2 zu ändenr oder die "Eigenschaft" in userpath2.

Vielen Dank

MfG Steffen

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Mod: Userspezifisches Uploadverzeichnis

Beitrag von Oldperl » Fr 5. Jun 2009, 20:37

Hallo Steffen,

andersrum an die Sache ran gehen. Lege alle Ordner die du für die Gruppe freigeben willst in den gleichen Hauptordner und gib diesen dann als rootOrdner für die Gruppe an. Der Mod kann keine verzeichnisbezogene Rechte vergeben, sondern nur ein Startverzeichnis für die Anzeige festlegen.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Mod: Userspezifisches Uploadverzeichnis

Beitrag von derSteffen » Sa 6. Jun 2009, 09:06

Hallo Oldperl - verdammt, dass habe ich mir schon gedacht. Dummerweise habe ich es jetzt andersrum gemacht. D.h. Ich habe einen Odrner Bildergalerien und hier befindet sich Gruppe1, Grupp2, Grupp3, dann habe ich einen Ordner Kopfbilder, auch hier findet man die Ordner Gruppe1, Grupp2, Grupp3.

D.h. Es gibt keine Chance verschiedene Ordner zu zuweisen, außerer einen Hauptordner wo sich dann alle anderen drin befinden?

Somit hat man ja auch keine Chance, dass die Gruppen eventuell auch einen Ordner gemeinsam nutzen können, oder?

Vielen Dank

MfG Steffen

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Mod: Userspezifisches Uploadverzeichnis

Beitrag von Oldperl » Sa 6. Jun 2009, 12:08

Hallo Steffen,
derSteffen hat geschrieben:D.h. Es gibt keine Chance verschiedene Ordner zu zuweisen, außerer einen Hauptordner wo sich dann alle anderen drin befinden?
Nein das geht mit diesem Mod nicht, da er ja an sich kein wirkliches Rechtesystem für die Verzeichnisse aufbaut, sondern nur die Anzeige in der Übersicht begrenzt.
derSteffen hat geschrieben:Somit hat man ja auch keine Chance, dass die Gruppen eventuell auch einen Ordner gemeinsam nutzen können, oder?
Nein, dazu müßte man die Dateiverwaltung überarbeiten und mit einem vernünftigen Rechtesystem auf Gruppenbasis versehen. Da ich dafür aber bisher nicht wirklich eine Nachfrage gesehen habe und offensichtlich vielen diese einfache Variante vollkommen ausreicht, habe ich in diese Richtung nichts entwickelt. Das ist sicherlich auch eine Kostenfrage, irgendwovon muß man ja auch leben. ;-)

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Gesperrt