fileshare modul ordner erstellen verbieten

am 20.03.2007 - 14:03 Uhr in
Hi,
Ich möchte auf meiner Seite einen regen Datenaustausch haben. Ich will das user Daten in bestimmte Ordner Strukturen uploaden und auch wieder downloaden können. Dazu habe ich das fileshare Module verwendet, da es grafisch sehr ansprechend überischtlich und einfach zu bedienen ist.
Das problem ist nur das die user nicht nur daten über das fileshare interface uploaden können, nein sie können auch Ordner erstellen, was ich ihnen aber verbieten möchte. In der Access Controll finde ich aber keien eigenen eintrag. Deswegen weiß ich nicht mehr weiter.
Kann man das Modul vielleicht dementsprechend modifizieren. wenn ja wie?
Oder ist vielleicht ein anderes Modul sinnvoller?
Fragen über fragen
Danke schon mal im vorraus für eure Hilfe
MfG
Don Durito
- Anmelden oder Registrieren um Kommentare zu schreiben
Habs nicht getestet, sollte
am 20.03.2007 - 15:53 Uhr
Habs nicht getestet, sollte aber mit folgenden Anpassungen am fileshare.module klappen:
Füge zum hook_perm einen punkt «create directories» hinzu:
<?php
/**
* Implementation of hook_perm().
*
* Since we are limiting the ability to create new nodes to certain users,
* we need to define what those permissions are here. We also define a permission
* to allow users to edit the nodes they created.
*/
function fileshare_perm() {
return array('create fileshares'
,'set file paths'
,'modify files'
,'download files'
,'manage own fileshares'
, 'create directories'
);
}
?>
Nun findest du in der Access Controll einen Eintrag «create directories»
Beim Upload-Formular prüfen wir nun an der entsprechenden Stelle, ob der Benutzer das Recht hat, neue Ordner zu erstellen und geben diese Formularelemente nur dann aus.
<?php
/**
* File upload form on view node
*/
function _uploadform($node) {
$form['#attributes'] = array(
'enctype' => 'multipart/form-data',
'class' => 'node-form',
'style' => 'display:none'
);
$form['file'] = array(
'#type' => 'fieldset',
'#title' => t('Upload and New Folder Options'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#description' => t('The "target" folder will receive file uploads, or may be deleted.')
);
$form['file']['targetdir'] = array(
'#type' => 'select',
'#title' => t('Select a target folder'),
'#options' => array(),
'#description' => t('Choose from the list of opened folders. This menu will update to reflect the folders shown above.'),
'#DANGEROUS_SKIP_CHECK' => TRUE,
);
$form['file']['filename'] = array(
'#type' => 'file',
'#title' => t('Upload a file to target directory'),
'#size' => 30,
'#description' => t('Click "Browse..." to select a file to upload into the target folder.
<em>%upload_max maximum file size.</em>',
array('%upload_max' => ini_get('upload_max_filesize'))),
);
$form['file']['submit'] = array('#type' => 'submit', '#value' => t('Upload'));
// Zeige Formularelemente zum Erstellen neuer Ordner nur wenn der Benutzer die entsprechenden Rechte hat
if (user_access('create directories')) {
$form['file']['dirname'] = array(
'#type' => 'textfield',
'#title' => t('New folder name'),
'#description' => t('Enter the folder name you wish to create. New folders will appear in the selected target.'),
);
$form['file']['create'] = array('#type' => 'submit', '#value' => t('New folder'));
}
$form['file']['root'] = array('#type' => 'hidden', '#value' => $node->_basepath.$node->_filepath);
$form['file']['nid'] = array('#type' => 'hidden', '#value' => $node->nid);
return $form;
}
?>
Gruss Elias
Danke
am 20.03.2007 - 16:24 Uhr
Hat super funktioniert, und war klasse erklärt.