NavigationController: Allow the owner to edit/remove a shared item

refs #5600
This commit is contained in:
Johannes Meyer 2015-09-07 16:27:27 +02:00
parent 3dc26e2dbe
commit 9dbbc51721
1 changed files with 18 additions and 3 deletions

View File

@ -121,8 +121,14 @@ class NavigationController extends Controller
$user = $this->Auth()->getUser();
$config = $user->loadNavigationConfig();
if (! $config->hasSection($itemName) && $user->can('config/application/navigation')) {
$config = Config::app('navigation');
if (! $config->hasSection($itemName)) {
$shareConfig = Config::app('navigation');
if ($shareConfig->hasSection($itemName)
&& ($shareConfig->get($itemName, 'owner') === $user->getUsername()
|| $user->can('config/application/navigation'))
) {
$config = $shareConfig;
}
}
$form = new NavigationConfigForm();
@ -169,9 +175,18 @@ class NavigationController extends Controller
public function removeAction()
{
$itemName = $this->params->getRequired('name');
$user = $this->Auth()->getUser();
$config = $user->loadNavigationConfig();
if (! $config->hasSection($itemName)) {
$shareConfig = Config::app('navigation');
if ($shareConfig->hasSection($itemName) && $shareConfig->get($itemName, 'owner') === $user->getUsername()) {
$config = $shareConfig;
}
}
$navigationConfigForm = new NavigationConfigForm();
$navigationConfigForm->setIniConfig($this->Auth()->getUser()->loadNavigationConfig());
$navigationConfigForm->setIniConfig($config);
$form = new ConfirmRemovalForm();
$form->setRedirectUrl('navigation');
$form->setTitle(sprintf($this->translate('Remove Navigation Item %s'), $itemName));