commit 53f7d533b1199af356c43dd1cf40864a9ee58537
parent 2381e7264a05504b2fcae27a48b33630ce4904cf
Author: dankert <devnull@localhost>
Date: Thu, 1 Jun 2006 21:11:46 +0200
Abfragen von Rechten.
Diffstat:
1 file changed, 66 insertions(+), 31 deletions(-)
diff --git a/actionClasses/FolderAction.class.php b/actionClasses/FolderAction.class.php
@@ -20,7 +20,10 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// ---------------------------------------------------------------------------
// $Log$
-// Revision 1.35 2006-06-01 18:15:30 dankert
+// Revision 1.36 2006-06-01 19:11:46 dankert
+// Abfragen von Rechten.
+//
+// Revision 1.35 2006/06/01 18:15:30 dankert
// Implementiert: "kopieren, verschieben, l?schen"
//
// Revision 1.34 2006/02/05 11:30:12 dankert
@@ -328,37 +331,60 @@ class FolderAction extends ObjectAction
}
- // Verschieben/Kopieren/Loeschen/Verknuepfen von mehreren Dateien in diesem Ordner
+ /**
+ * Verschieben/Kopieren/Loeschen/Verknuepfen von mehreren Dateien in diesem Ordner.
+ *
+ * Es werden alle ausgewählten Dateien nochmal angezeigt.
+ * Abhängig von der ausgewählten Aktion wird eine weitere Auswahl benötigt.
+ */
function edit()
{
- $type = $this->getRequestVar('type');
-// $this->setTemplateVar('targetobjectid',intval($this->getRequestVar('targetobjectid')));
-//
-// if ( $targetObjectId == 0 )
-// exit('fatal: no target');
-
- if ( in_array($type,array('move','copy','link')))
+ $type = $this->getRequestVar('type'); // Typ der Aktion, z.B "copy" oder "move"
+
+ switch( $type )
{
- // Liste von möglichen Zielordnern anzeigen
-
- $otherfolder = array();
- foreach( $this->folder->getAllFolders() as $id )
- {
- $f = new Folder( $id );
- if ( $f->hasRight( ACL_WRITE ) )
- $otherfolder[$id] = FILE_SEP.implode( FILE_SEP,$f->parentObjectNames(false,true) );
- }
- asort( $otherfolder );
+ case 'move':
+ case 'copy':
+ case 'link':
+ // Liste von möglichen Zielordnern anzeigen
- $this->setTemplateVar('folder',$otherfolder);
- }
-
- if ( $type == 'archive' )
- $this->setTemplateVar('ask_filename','');
-
- if ( $type == 'delete' )
- $this->setTemplateVar('ask_commit','');
+ $otherfolder = array();
+ foreach( $this->folder->getAllFolders() as $id )
+ {
+ $f = new Folder( $id );
+
+ // Beim Verknüpfen muss im Zielordner die Berechtigung zum Erstellen
+ // von Verknüpfungen vorhanden sein.
+ //
+ // Beim Verschieben und Kopieren muss im Zielordner die Berechtigung
+ // zum Erstellen von Ordner, Dateien oder Seiten vorhanden sein.
+ if ( ( $type=='link' && $f->hasRight( ACL_CREATE_LINK ) ) ||
+ ( ( $type=='move' || $type == 'copy' ) &&
+ ( $f->hasRight(ACL_CREATE_FOLDER) || $f->hasRight(ACL_CREATE_FILE) || $f->hasRight(ACL_CREATE_PAGE) ) ) )
+ // Zielordner hinzufügen
+ $otherfolder[$id] = FILE_SEP.implode( FILE_SEP,$f->parentObjectNames(false,true) );
+ }
+
+ // Zielordner-Liste alphabetisch sortieren
+ asort( $otherfolder );
+
+ $this->setTemplateVar('folder',$otherfolder);
+
+ break;
+
+ case 'archive':
+ $this->setTemplateVar('ask_filename','');
+ break;
+ case 'delete':
+ $this->setTemplateVar('ask_commit','');
+ break;
+
+ default:
+ exit("trouble");
+
+ } // switch
+
$ids = $this->folder->getObjectIds();
$objectList = array();
@@ -371,7 +397,13 @@ class FolderAction extends ObjectAction
$o = new Object( $id );
$o->load();
- $objectList[ $id ] = $o->getProperties();
+ // Für die gewünschte Aktion müssen pro Objekt die entsprechenden Rechte
+ // vorhanden sein.
+ if ( $type == 'copy' && $o->hasRight( ACL_READ ) ||
+ $type == 'move' && $o->hasRight( ACL_DELETE ) ||
+ $type == 'link' && $o->hasRight( ACL_READ ) ||
+ $type == 'delete' && $o->hasRight( ACL_DELETE ) )
+ $objectList[ $id ] = $o->getProperties();
}
$this->setTemplateVar('type' ,$type );
@@ -382,11 +414,14 @@ class FolderAction extends ObjectAction
}
- // Verschieben/Kopieren/Loeschen/Verknuepfen von mehreren Dateien in diesem Ordner
+
+ /**
+ * Verschieben/Kopieren/Loeschen/Verknuepfen von mehreren Dateien in diesem Ordner
+ */
function multiple()
{
- $type = $this->getRequestVar('type');
- $ids = explode(',',$this->getRequestVar('ids'));
+ $type = $this->getRequestVar('type');
+ $ids = explode(',',$this->getRequestVar('ids'));
$targetObjectId = $this->getRequestVar('targetobjectid');
foreach( $ids as $id )