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

Commit 2222334

Browse files
committed
BUG: Refs #0309. Use folderId instead of folderName to identify the default public and private folders.
1 parent 0f03b08 commit 2222334

File tree

8 files changed

+56
-36
lines changed

8 files changed

+56
-36
lines changed

core/controllers/BrowseController.php

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -199,14 +199,9 @@ 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-
if($tmp['name'] == 'Public' || $tmp['name'] == 'Private')
203-
{
204-
$tmp['deletable'] = 'false';
205-
}
206-
else
207-
{
208-
$tmp['deletable'] = 'true';
209-
}
202+
// this ajax function is only used by treetable.js and it will handle all the other folders except for the top level folders.
203+
// All the non-top level folders are deletable if users have correct permission
204+
$tmp['deletable'] = 'true';
210205
$tmp['policy'] = $folder->policy;
211206
$tmp['privacy_status'] = $folder->privacy_status;
212207
$jsonContent[$folder->getParentId()]['folders'][] = $tmp;

core/controllers/CommunityController.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,8 @@ function manageAction()
208208
$this->view->userPersonalItems = $this->Folder->getItemsFiltered($this->view->userPersonalmainFolder, $this->userSession->Dao, MIDAS_POLICY_READ);
209209

210210
$this->view->isAdmin = $this->Community->policyCheck($communityDao, $this->userSession->Dao, MIDAS_POLICY_ADMIN);
211+
$this->view->privateFolderId = $communityDao->getPrivatefolderId();
212+
$this->view->publicFolderId = $communityDao->getPublicfolderId();
211213
$this->view->json['community'] = $communityDao->toArray();
212214
$this->view->json['community']['moderatorGroup'] = $moderator_group->toArray();
213215
$this->view->json['community']['memberGroup'] = $group_member->toArray();
@@ -311,6 +313,8 @@ function viewAction()
311313
}
312314
$this->view->isModerator = $this->Community->policyCheck($communityDao, $this->userSession->Dao, MIDAS_POLICY_WRITE);
313315
$this->view->isAdmin = $this->Community->policyCheck($communityDao, $this->userSession->Dao, MIDAS_POLICY_ADMIN);
316+
$this->view->privateFolderId = $communityDao->getPrivatefolderId();
317+
$this->view->publicFolderId = $communityDao->getPublicfolderId();
314318
$this->view->json['community'] = $communityDao->toArray();
315319
$this->view->json['community']['sendInvitation'] = $this->t('Send invitation');
316320

core/controllers/FolderController.php

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -184,16 +184,33 @@ public function deleteAction()
184184
}
185185

186186
$parent = $folder->getParent();
187-
$folderName = $folder->getName();
187+
$folderId = $folder->getFolderId();
188188
// User cannot delete community's root folder, the default 'Public' folder and the default 'Private' folder
189-
if(($this->Folder->getCommunity($parent) != false && ($folderName == 'Public' || $folderName == 'Private')) || $this->Folder->getCommunity($folder) != false)
189+
if($this->Folder->getCommunity($folder) != false)
190190
{
191-
throw new Zend_Exception("Community Folder. You cannot delete it.");
191+
throw new Zend_Exception("Community Root Folder. You cannot delete it.");
192192
}
193+
$communityDao = $this->Folder->getCommunity($parent);
194+
if($communityDao != false)
195+
{
196+
if($communityDao->getPrivatefolderId() == $folderId || $communityDao->getPublicfolderId() == $folderId)
197+
{
198+
throw new Zend_Exception("Community Default Folder. You cannot delete it.");
199+
}
200+
}
201+
193202
// User cannot delete its root folder, the default 'Public' folder and the default 'Private' folder
194-
if(($this->Folder->getUser($parent) != false && ($folderName == 'Public' || $folderName == 'Private')) || $this->Folder->getUser($folder) != false)
203+
if($this->Folder->getUser($folder) != false)
195204
{
196-
throw new Zend_Exception("User Folder. You cannot delete it.");
205+
throw new Zend_Exception("User Root Folder. You cannot delete it.");
206+
}
207+
$userDao = $this->Folder->getUser($parent);
208+
if($userDao != false)
209+
{
210+
if($userDao->getPrivatefolderId() == $folderId || $userDao->getPublicfolderId() == $folderId)
211+
{
212+
throw new Zend_Exception("User Default Folder. You cannot delete it.");
213+
}
197214
}
198215
$this->Folder->delete($folder, true);
199216
$folderInfo = $folder->toArray();

core/controllers/UserController.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,8 @@ public function userpageAction()
665665

666666
$this->view->mainFolder = $userDao->getFolder();
667667
$this->view->folders = $this->Folder->getChildrenFoldersFiltered($this->view->mainFolder, $this->userSession->Dao, MIDAS_POLICY_READ);
668+
$this->view->privateFolderId = $userDao->getPrivatefolderId();
669+
$this->view->publicFolderId = $userDao->getPublicfolderId();
668670
$this->view->items = $this->Folder->getItemsFiltered($this->view->mainFolder, $this->userSession->Dao, MIDAS_POLICY_READ);
669671
$this->view->feeds = $this->Feed->getFeedsByUser($this->userSession->Dao, $userDao);
670672

@@ -727,6 +729,8 @@ public function manageAction()
727729
$this->view->user = $userDao;
728730
$this->view->mainFolder = $userDao->getFolder();
729731
$this->view->folders = $this->Folder->getChildrenFoldersFiltered($this->view->mainFolder, $this->userSession->Dao, MIDAS_POLICY_READ);
732+
$this->view->privateFolderId = $userDao->getPrivatefolderId();
733+
$this->view->publicFolderId = $userDao->getPublicfolderId();
730734
$this->view->items = $this->Folder->getItemsFiltered($this->view->mainFolder, $this->userSession->Dao, MIDAS_POLICY_READ);
731735
$this->view->userCommunities = $communities;
732736
$this->view->userCommunityFolders = $communityFolders;

core/views/community/manage.phtml

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

240240
foreach($this->folders as $folder)
241241
{
242-
$folderName = $folder->getName();
243-
if ($folderName == 'Public' || $folderName == 'Private')
242+
$folderId = $folder->getFolderId();
243+
if ($folderId == $this->privateFolderId || $folderId == $this->publicFolderId)
244244
{
245245
$deletableStatus = 'false';
246246
}
247247
else
248248
{
249249
$deletableStatus = 'true';
250250
}
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>";
253-
echo " <td><img class='folderLoading' element='{$folder->getFolderId()}' alt='' src='{$this->coreWebroot}/public/images/icons/loading.gif'/></td>";
251+
echo "<tr id='node--$node' class='parent' deletable=$deletableStatus privacy='{$folder->getPrivacyStatus()}' policy='".MIDAS_POLICY_ADMIN."' type='folder' element='$folderId' ajax='$folderId'>";
252+
echo " <td class='treeBrowseElement'><span class='notdraggable folder'>{$folder->getName()}</span></td>";
253+
echo " <td><img class='folderLoading' element='$folderId' alt='' src='{$this->coreWebroot}/public/images/icons/loading.gif'/></td>";
254254
echo " <td>{$this->Date->ago($folder->getDateUpdate(),true)}</td>";
255-
echo " <td><input type='checkbox' class='treeCheckbox' type='folder' element='{$folder->getFolderId()}' /></td>";
255+
echo " <td><input type='checkbox' class='treeCheckbox' type='folder' element='$folderId' /></td>";
256256
echo "</tr>";
257257
$node++;
258258
}

core/views/community/view.phtml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -117,20 +117,20 @@ foreach($this->customCSSs as $Uris)
117117
$node=1;
118118
foreach($this->folders as $folder)
119119
{
120-
$folderName = $folder->getName();
121-
if ($folderName == 'Public' || $folderName == 'Private')
120+
$folderId = $folder->getFolderId();
121+
if ($folderId == $this->privateFolderId || $folderId == $this->publicFolderId)
122122
{
123123
$deletableStatus = 'false';
124124
}
125125
else
126126
{
127127
$deletableStatus = 'true';
128128
}
129-
echo "<tr id='node--$node' policy='{$folder->policy}' deletable=$deletableStatus class='parent' privacy='{$folder->getPrivacyStatus()}' type='folder' element='{$folder->getFolderId()}' ajax='{$folder->getFolderId()}'>";
129+
echo "<tr id='node--$node' policy='{$folder->policy}' deletable=$deletableStatus class='parent' privacy='{$folder->getPrivacyStatus()}' type='folder' element='$folderId' ajax='$folderId'>";
130130
echo " <td class='treeBrowseElement'><span class='folder'>{$folder->getName()}</span></td>";
131-
echo " <td><img class='folderLoading' element='{$folder->getFolderId()}' alt='' src='{$this->coreWebroot}/public/images/icons/loading.gif'/></td>";
131+
echo " <td><img class='folderLoading' element='$folderId' alt='' src='{$this->coreWebroot}/public/images/icons/loading.gif'/></td>";
132132
echo " <td>{$this->Date->ago($folder->getDateUpdate(),true)}</td>";
133-
echo " <td><input type='checkbox' class='treeCheckbox' type='folder' element='{$folder->getFolderId()}' /></td>";
133+
echo " <td><input type='checkbox' class='treeCheckbox' type='folder' element='$folderId' /></td>";
134134
echo "</tr>";
135135
$node++;
136136
}

core/views/user/manage.phtml

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

5757
foreach($this->folders as $folder)
5858
{
59-
$folderName = $folder->getName();
60-
if ($folderName == 'Public' || $folderName == 'Private')
59+
$folderId = $folder->getFolderId();
60+
if ($folderId == $this->privateFolderId || $folderId == $this->publicFolderId)
6161
{
6262
$deletableStatus = 'false';
6363
}
6464
else
6565
{
6666
$deletableStatus = 'true';
6767
}
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>";
70-
echo " <td><img class='folderLoading' element='{$folder->getFolderId()}' alt='' src='{$this->coreWebroot}/public/images/icons/loading.gif'/></td>";
68+
echo "<tr id='node--$node' class='parent' deletable=$deletableStatus privacy='{$folder->getPrivacyStatus()}' policy='".MIDAS_POLICY_ADMIN."' type='folder' element='$folderId' ajax='$folderId'>";
69+
echo " <td class='treeBrowseElement'><span class='notdraggable folder'>{$folder->getName()}</span></td>";
70+
echo " <td><img class='folderLoading' element='$folderId' alt='' src='{$this->coreWebroot}/public/images/icons/loading.gif'/></td>";
7171
echo " <td>{$this->Date->ago($folder->getDateUpdate(),true)}</td>";
72-
echo " <td><input type='checkbox' class='treeCheckbox' type='folder' element='{$folder->getFolderId()}' /></td>";
72+
echo " <td><input type='checkbox' class='treeCheckbox' type='folder' element='$folderId' /></td>";
7373
echo "</tr>";
7474
$node++;
7575
}

core/views/user/userpage.phtml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,20 +99,20 @@ $this->headScript()->appendFile($this->coreWebroot.'/public/js/common/common.bro
9999
$node=1;
100100
foreach($this->folders as $folder)
101101
{
102-
$folderName = $folder->getName();
103-
if ($folderName == 'Public' || $folderName == 'Private')
102+
$folderId = $folder->getFolderId();
103+
if ($folderId == $this->privateFolderId || $folderId == $this->publicFolderId)
104104
{
105105
$deletableStatus = 'false';
106106
}
107107
else
108108
{
109109
$deletableStatus = 'true';
110110
}
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>";
113-
echo " <td><img class='folderLoading' element='{$folder->getFolderId()}' alt='' src='{$this->coreWebroot}/public/images/icons/loading.gif'/></td>";
111+
echo "<tr id='node--$node' policy='{$folder->policy}' deletable=$deletableStatus class='parent' privacy='{$folder->getPrivacyStatus()}' type='folder' element='$folderId' ajax='$folderId'>";
112+
echo " <td class='treeBrowseElement'><span class='folder'>{$folder->getName()}</span></td>";
113+
echo " <td><img class='folderLoading' element='$folderId' alt='' src='{$this->coreWebroot}/public/images/icons/loading.gif'/></td>";
114114
echo " <td>{$this->Date->ago($folder->getDateUpdate(),true)}</td>";
115-
echo " <td><input type='checkbox' class='treeCheckbox' type='folder' element='{$folder->getFolderId()}' /></td>";
115+
echo " <td><input type='checkbox' class='treeCheckbox' type='folder' element='$folderId' /></td>";
116116
echo "</tr>";
117117
$node++;
118118
}

0 commit comments

Comments
 (0)