12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <?php
- /**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Bart Visscher <bartv@thisnet.nl>
- * @author Joas Schilling <coding@schilljs.com>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Robin McCorkell <robin@mccorkell.me.uk>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
- *
- * @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 <http://www.gnu.org/licenses/>
- *
- */
- 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;
- }
- }
|