Hallo Community,
ich habe verschiedene Gruppen, nenne wir sie A und B.
User können sich im FE anmelden und werden vom Redakteur manuell der entsprechenden Gruppe zugewiesen.
Im FE eingeloggt, soll der User die Möglichkeit haben, Daten hoch und runter zu laden.
Mit de Extension File-Upload gibt es ja die Möglichkeit, einen User-Spezifischen Ordner anzulegen. Wie aber kann ich einen gruppenspezifischen Ordner verwalten?
plugin.tx_fileupload_pi1.FEuserHomePath.field
verweist ja direkt auf den User-Ordner und nicht auf einen Gruppenordner.
Freilich soll jeder eingeloggte User der entsprechenden Gruppe die Daten auch wieder runter laden können.
Habe ich etwas übersehen? Hat jemand einen anderen Tipp für mich?
viele Grüße,
Chuonrad
Hi Chuonrad
Wieso erstellst Du nicht für jede Gruppe je eine Instanz der Uplaodextension evt. auf unterschiedlichen Seiten?
Dabei verwendest Du einfach zwei Uplaod Dircetory's A & B welche in der Extensionconfig entsprechend angegeben werden (keine User-Spezifische Ordner).
Diese Directory's machst Du nur den entsprechenden Gruppen zugänglich.
Hm,
guter Tip zunächst, auf den Gedanken bin ich gar nicht gekommen. Nicht zuletzt allerdings deswegen, weil ich dem Redakteur nicht "zumuten" kann, für jede neu hinzukommende Gruppe eine neue Seite mit upload und download plugin zu erstellen.
Ich referenziere derzeit alle logins auf EINE Seite, mit den entsprechenden Daten. Die eingeloggten Gruppen sehen dann jeweils nur "ihren" Inhalt.
Aber ebenso muss der Upload auch irgendwie durch diese Seite "geschleust" werden, dass es an der richtigen Stelle ankommt und freilich auch nur für diese Usergruppe sichtbar wird.
da bleibt dir wohl nichts anderes übrig als die Extension anzupassen.#giggle#
Es gibt ja das Feature für User-Spezifischen Ordner. Diese kannst Du entsprechend mit Gruppen Ordnern erweitern. In die Extension müsste dann eine IF-Abfrage rein ob der Ordner für die Gruppe des Uploaders bereits existiert. Falls nicht, kannst Du einen erstellen lassen (am besten mit der Gruppen UID als Bezeichnung).
Habe die Upload Extension schon mehrmals anpassen müssen, da Sie leider nur Grundfunktionen bietet.
eieiei ... auf dem Level bin ich irgendwie noch gar nicht angelangt. 🙁
Nicht, dass ich mich nicht auch bald mit Extension-Entwicklung beschäftigen möchte, aber momentan... kann ich das noch nicht.
Mal sehen, ob ich irgendeinen Ansatz finde.
Tage später ... überlege ich ob ich nicht irgendwie ums Extension-Modifizieren drumrum komme.
Kann mir noch jemand einen Denkansatz geben, wie ich die Aufgabe lösen kann?
Hm ... ich glaube, ich habe die Stelle gefunden, wo ich einen Hebel ansetzen könnte ...
$uploaddir = is_dir($path)?$path:$TYPO3_CONF_VARS['BE']['fileadminDir'];
//if file should be uploaded to the login users homedir
if($this->conf['FEuserHomePath'] && $GLOBALS["TSFE"]->loginUser){
if($this->conf['FEuserHomePath.']['field']){
$feuploaddir=$uploaddir.$GLOBALS["TSFE"]->fe_user->user[$this->conf['FEuserHomePath.']['field']].'/';
} else {
$feuploaddir=$uploaddir.$GLOBALS["TSFE"]->fe_user->user["uid"].'/';
}
if(!is_dir($feuploaddir)){
if(!mkdir($feuploaddir)){
$feuploaddir=$uploaddir;
}
}
$uploaddir = $feuploaddir;
}
Nur, wie ich vom FEUserHomePath auf einen Gruppenordner kommen, will sich mir nicht recht erschließen 🙂
Da sind meine PHP und Typo-Kenntnisse noch zu gering 🙁
$feuploaddir=$uploaddir.$GLOBALS["TSFE"]->fe_user->user["uid"].'/';
...Erstellt ein Directory mit der UID des angemeldetem benutzers. du kannst jetzt einfach die gruppenID des benutzers verwenden. vermutlich sollte das 'usergroup' sein, aber
du kannst dir die felder mit
debug($GLOBALS["TSFE"]->fe_user);
ausgeben lassen und nachschauen.
also ersetzt du die zeile z.b. mit
$feuploaddir=$uploaddir.$GLOBALS["TSFE"]->fe_user->user["usergroup"].'/';
problemtisch könnte es werden, wenn jemandem mehrere (kommagetrennte) benutzergruppen zugeordnet sind. da müsste man noch ein paar kleinigkeiten ändern..
jetzt solltest du einen ordner haben mit der gruppenID des FE-Users der das file hochgeladen hat. somit kannst du jedem benutzer beim download das gruppenzugehörige directory anzeigen lassen.
lg & viel erfolg
Genau das selbe suche ich auch. Werd mich auch mal reinlesen und Euch mitteilen, wenn ich einen Lösungsansatz gefunden habe.
Schön wäre es natürlich, wenn Ihr genauso verfahren würdet.
... Stunden später ...
Das ganze geht auch ganz ohne dass man in der Ext. rumpfuschen muss. 🙂
mittels
plugin.tx_fileupload_pi1.FEuserHomePath=1
plugin.tx_fileupload_pi1.FEuserHomePath.field = usergroup
im Setup wird ein Ordner mit der ID der Usergroup angelegt und ander User der Usergroup können nun in diesen Ordner schreiben.
Leider weiß ich noch nicht, wie ich das TS dazu kriege, an stelle der ID, den Gruppennamen zu verwenden. Das wäre viel komfortabler.
Aber irgendwie habe ich mir ein Bein gestellt: denn, wie kriege ich die Daten jetzt wieder dort raus? Sprich - wie ordne ich im Umkehrschluss die Ordner der Gruppe zu, so dass auch nur die User der entsprechenden Gruppe an "ihre" Daten ran kommen?
Die Ext. "file_list" tut es nicht.
mit "NF_dowanloads" komme ich irgendwie nicht klar.
Aber ich muss sicher auch irgendwo weiter "oben" ansetzen, indem ich die Ordner einer Gruppe zuweise. Nur wie?
lg,
Chuonrad
Hallo ohrlab,
ich würde gern noch einmal Deine hilfe beanspruchen.
1. mit dem o.g. Stück TS kann ich einen Ordner mit der ID-Nummer der entsprechende usergroup erstellen. (Das Feld "usergroup" enthält offenbar halt nur die "nummer") Welches Feld enthält aber nun den Namen der gruppe?
2. Ich weiß überhaupt nicht, wie dich die Daten aus den ordnern wieder raus kriege. Die Vorgehensweise wäre ja in etwa so: Script "schaut nach", welche Gruppe gerade eingeloggt ist - sucht ob es einen so heißenden Ordner gibt - zeigt die darin enthaltenen Dateien als link an.
Ich habe nun schon verschiedene Extensions ausprobiert, komme aber mit der Konfiguration der selben nicht klar, bzw. tun sie das nicht, was ich gern von ihnen getan haben möchte.
hallo chuonrad
ich würde spontan folgender ansatz verfolgen (falls du das problem noch nich gelöst hast):
#plugin.tx_fileupload_pi1.FEuserHomePath.field = usergroup
zu 1.
der usergroup name ist in der fe_groups table gespeichert (db relation).
diese könntest du evt. über ein content object abfragen ala:
#plugin.tx_fileupload_pi1.FEuserHomePath.cObject = CONTENT
.. und die entsprechenden parameter & select where ala "field:usergroup = uid" hinzufügen.
zu 2.
vielleicht bleibst du bei 1. doch besser bei den nummern, da es hier die abfrage erleichtert. an die usergroup des eingelogten fe-users kommst du ja in php über $GLOBALS['TSFE']. somit kannst du die download extension entsprechend anpassen.
lg
Vielen Dank, Du hast mir wieder sehr weiter geholfen.
Vielleicht ist das noch nicht ganz elegant - aber ich habe die Extension "file_list" erweitert.
Und zwar habe ich folgendes hinzugefügt:
$fe_usrpath = $GLOBALS['TSFE']->fe_user->user['usergroup'].'/';
$temp_path = $temp_path.$fe_usrpath."/";
$open = @opendir($temp_path);
Die Funktion "opendir" ist noch dir "originale" da habe die Abfrage nach der Usergruppen-ID vor gesetzt und diese an den temp_path dran gehängt.
Vielleicht geht das noch eleganter, aber es scheint zu funktionieren.
Thema Sicherheit habe ich jetzt noch nicht so durchdacht ...
Mal schauen, wie ich jetzt das alles noch ein wenig "getuned" bekomme.