Skip to content
This repository was archived by the owner on Sep 10, 2021. It is now read-only.

Commit 41f6776

Browse files
committed
BUG: Refs #0309. Changes on allowed actions on users' (and communities') top level folders
1) Don't allow 'Public' and 'Private' folders to be deleted. But if they can be renamed and then deleted. 2) Put 'Create a top level folder' link on the user/userpage and community/view views. 3) Top level folders in the user/userpage and community/view views have same links as subfolders.
1 parent fc91689 commit 41f6776

File tree

6 files changed

+54
-16
lines changed

6 files changed

+54
-16
lines changed

core/controllers/BrowseController.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,14 @@ public function getfolderscontentAction()
199199
$tmp['folder_id'] = $folder->getFolderId();
200200
$tmp['name'] = $folder->getName();
201201
$tmp['date_update'] = $this->Component->Date->ago($folder->getDateUpdate(), true);
202-
$tmp['deletable'] = 'true';
202+
if ($tmp['name'] == 'Public' || $tmp['name'] == 'Private')
203+
{
204+
$tmp['deletable'] = 'false';
205+
}
206+
else
207+
{
208+
$tmp['deletable'] = 'true';
209+
}
203210
$tmp['policy'] = $folder->policy;
204211
$tmp['privacy_status'] = $folder->privacy_status;
205212
$jsonContent[$folder->getParentId()]['folders'][] = $tmp;

core/controllers/FolderController.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,13 +183,15 @@ public function deleteAction()
183183
throw new Zend_Exception("Permissions error.");
184184
}
185185

186+
$parent = $folder->getParent();
187+
$folderName = $folder->getName();
186188
// User cannot delete community's root folder, the default 'Public' folder and the default 'Private' folder
187-
if($this->Folder->getCommunity($folder) != false)
189+
if(($this->Folder->getCommunity($parent) != false && ($folderName == 'Public' || $folderName == 'Private')) || $this->Folder->getCommunity($folder) != false)
188190
{
189191
throw new Zend_Exception("Community Folder. You cannot delete it.");
190192
}
191193
// User cannot delete its root folder, the default 'Public' folder and the default 'Private' folder
192-
if($this->Folder->getUser($folder) != false)
194+
if(($this->Folder->getUser($parent) != false && ($folderName == 'Public' || $folderName == 'Private')) || $this->Folder->getUser($folder) != false)
193195
{
194196
throw new Zend_Exception("User Folder. You cannot delete it.");
195197
}

core/views/community/manage.phtml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,17 @@ $this->headScript()->appendFile($this->coreWebroot.'/public/js/common/common.bro
239239

240240
foreach($this->folders as $folder)
241241
{
242-
echo "<tr id='node--$node' class='parent' deletable='true' privacy='{$folder->getPrivacyStatus()}' policy='".MIDAS_POLICY_ADMIN."' type='folder' element='{$folder->getFolderId()}' ajax='{$folder->getFolderId()}'>";
243-
echo " <td class='treeBrowseElement'><span class='notdraggable folder'>{$folder->getName()}</span></td>";
242+
$folderName = $folder->getName();
243+
if ($folderName == 'Public' || $folderName == 'Private')
244+
{
245+
$deletableStatus = 'false';
246+
}
247+
else
248+
{
249+
$deletableStatus = 'true';
250+
}
251+
echo "<tr id='node--$node' class='parent' deletable=$deletableStatus privacy='{$folder->getPrivacyStatus()}' policy='".MIDAS_POLICY_ADMIN."' type='folder' element='{$folder->getFolderId()}' ajax='{$folder->getFolderId()}'>";
252+
echo " <td class='treeBrowseElement'><span class='notdraggable folder'>$folderName</span></td>";
244253
echo " <td><img class='folderLoading' element='{$folder->getFolderId()}' alt='' src='{$this->coreWebroot}/public/images/icons/loading.gif'/></td>";
245254
echo " <td>{$this->Date->ago($folder->getDateUpdate(),true)}</td>";
246255
echo " <td><input type='checkbox' class='treeCheckbox' type='folder' element='{$folder->getFolderId()}' /></td>";

core/views/community/view.phtml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,16 @@ foreach($this->customCSSs as $Uris)
117117
$node=1;
118118
foreach($this->folders as $folder)
119119
{
120-
$policy=MIDAS_POLICY_READ;
121-
if($this->isModerator||$this->isAdmin)
120+
$folderName = $folder->getName();
121+
if ($folderName == 'Public' || $folderName == 'Private')
122122
{
123-
$policy=MIDAS_POLICY_WRITE;
123+
$deletableStatus = 'false';
124124
}
125-
echo "<tr id='node--$node' policy='$policy' class='parent' privacy='{$folder->getPrivacyStatus()}' type='folder' element='{$folder->getFolderId()}' ajax='{$folder->getFolderId()}'>";
125+
else
126+
{
127+
$deletableStatus = 'true';
128+
}
129+
echo "<tr id='node--$node' policy='{$folder->policy}' deletable=$deletableStatus class='parent' privacy='{$folder->getPrivacyStatus()}' type='folder' element='{$folder->getFolderId()}' ajax='{$folder->getFolderId()}'>";
126130
echo " <td class='treeBrowseElement'><span class='folder'>{$folder->getName()}</span></td>";
127131
echo " <td><img class='folderLoading' element='{$folder->getFolderId()}' alt='' src='{$this->coreWebroot}/public/images/icons/loading.gif'/></td>";
128132
echo " <td>{$this->Date->ago($folder->getDateUpdate(),true)}</td>";
@@ -180,6 +184,8 @@ foreach($this->customCSSs as $Uris)
180184
echo "
181185
<li><a id='sendInvitationLink'><img alt='' src='{$this->coreWebroot}/public/images/icons/email.png'/> {$this->t('Send invitation')}</a></li>
182186
";
187+
echo "<li><a onclick='createNewFolder(".$this->mainFolder->getKey().");'><img alt='' src='{$this->coreWebroot}/public/images/FileTree/directory.png'/> {$this->t('Create a top level Folder')}</a></li>
188+
";
183189
}
184190
if($this->isMember&&!$this->isAdmin)
185191
{

core/views/user/manage.phtml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,17 @@ $this->headScript()->appendFile($this->coreWebroot.'/public/js/common/common.bro
5656

5757
foreach($this->folders as $folder)
5858
{
59-
echo "<tr id='node--$node' class='parent' deletable='true' privacy='{$folder->getPrivacyStatus()}' policy='".MIDAS_POLICY_ADMIN."' type='folder' element='{$folder->getFolderId()}' ajax='{$folder->getFolderId()}'>";
60-
echo " <td class='treeBrowseElement'><span class='notdraggable folder'>{$folder->getName()}</span></td>";
59+
$folderName = $folder->getName();
60+
if ($folderName == 'Public' || $folderName == 'Private')
61+
{
62+
$deletableStatus = 'false';
63+
}
64+
else
65+
{
66+
$deletableStatus = 'true';
67+
}
68+
echo "<tr id='node--$node' class='parent' deletable=$deletableStatus privacy='{$folder->getPrivacyStatus()}' policy='".MIDAS_POLICY_ADMIN."' type='folder' element='{$folder->getFolderId()}' ajax='{$folder->getFolderId()}'>";
69+
echo " <td class='treeBrowseElement'><span class='notdraggable folder'>$folderName</span></td>";
6170
echo " <td><img class='folderLoading' element='{$folder->getFolderId()}' alt='' src='{$this->coreWebroot}/public/images/icons/loading.gif'/></td>";
6271
echo " <td>{$this->Date->ago($folder->getDateUpdate(),true)}</td>";
6372
echo " <td><input type='checkbox' class='treeCheckbox' type='folder' element='{$folder->getFolderId()}' /></td>";

core/views/user/userpage.phtml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,17 @@ $this->headScript()->appendFile($this->coreWebroot.'/public/js/common/common.bro
9999
$node=1;
100100
foreach($this->folders as $folder)
101101
{
102-
$policy=MIDAS_POLICY_READ;
103-
if($this->isModerator||$this->isAdmin)
102+
$folderName = $folder->getName();
103+
if ($folderName == 'Public' || $folderName == 'Private')
104104
{
105-
$policy=MIDAS_POLICY_WRITE;
105+
$deletableStatus = 'false';
106106
}
107-
echo "<tr id='node--$node' policy='$policy' class='parent' privacy='{$folder->getPrivacyStatus()}' type='folder' element='{$folder->getFolderId()}' ajax='{$folder->getFolderId()}'>";
108-
echo " <td class='treeBrowseElement'><span class='folder'>{$folder->getName()}</span></td>";
107+
else
108+
{
109+
$deletableStatus = 'true';
110+
}
111+
echo "<tr id='node--$node' policy='{$folder->policy}' deletable=$deletableStatus class='parent' privacy='{$folder->getPrivacyStatus()}' type='folder' element='{$folder->getFolderId()}' ajax='{$folder->getFolderId()}'>";
112+
echo " <td class='treeBrowseElement'><span class='folder'>$folderName</span></td>";
109113
echo " <td><img class='folderLoading' element='{$folder->getFolderId()}' alt='' src='{$this->coreWebroot}/public/images/icons/loading.gif'/></td>";
110114
echo " <td>{$this->Date->ago($folder->getDateUpdate(),true)}</td>";
111115
echo " <td><input type='checkbox' class='treeCheckbox' type='folder' element='{$folder->getFolderId()}' /></td>";
@@ -160,6 +164,7 @@ $this->headScript()->appendFile($this->coreWebroot.'/public/js/common/common.bro
160164
<ul>
161165
<li class="myAccountLink" userid="'.$this->user->getKey().'"><a><img alt="" src="'.$this->coreWebroot.'/public/images/icons/user.png"/> '.$this->t('Manage Profile').'</a></li>
162166
<li><a href="'.$this->webroot.'/user/manage/?userId='.$this->user->getKey().'"><img alt="" src="'.$this->coreWebroot.'/public/images/icons/data.png"/> '.$this->t('Manage Files').'</a></li>
167+
<li><a onclick="createNewFolder('.$this->mainFolder->getKey().');"><img alt="" src="'.$this->coreWebroot.'/public/images/FileTree/directory.png"/> '.$this->t('Create a top level Folder').'</a></li>
163168
</ul>
164169
</div>';
165170
}

0 commit comments

Comments
 (0)