* @author Joas Schilling * @author Morris Jobke * @author Robin McCorkell * @author Thomas Müller * * @copyright Copyright (c) 2015, ownCloud, Inc. * @license AGPL-3.0 * * This code is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License, version 3, * along with this program. If not, see * */ namespace OC; /** * Manages the ownCloud navigation */ class NavigationManager implements \OCP\INavigationManager { protected $entries = array(); protected $closureEntries = array(); protected $activeEntry; /** * Creates a new navigation entry * * @param array|\Closure $entry Array containing: id, name, order, icon and href key * The use of a closure is preferred, because it will avoid * loading the routing of your app, unless required. * @return void */ public function add($entry) { if ($entry instanceof \Closure) { $this->closureEntries[] = $entry; return; } $entry['active'] = false; if(!isset($entry['icon'])) { $entry['icon'] = ''; } $this->entries[] = $entry; } /** * returns all the added Menu entries * @return array an array of the added entries */ public function getAll() { foreach ($this->closureEntries as $c) { $this->add($c()); } $this->closureEntries = array(); return $this->entries; } /** * removes all the entries */ public function clear() { $this->entries = array(); $this->closureEntries = array(); } /** * Sets the current navigation entry of the currently running app * @param string $id of the app entry to activate (from added $entry) */ public function setActiveEntry($id) { $this->activeEntry = $id; } /** * gets the active Menu entry * @return string id or empty string * * This function returns the id of the active navigation entry (set by * setActiveEntry */ public function getActiveEntry() { return $this->activeEntry; } }