333 lines
7.6 KiB
PHP
333 lines
7.6 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file classes/navigationMenu/NavigationMenuItem.php
|
|
*
|
|
* Copyright (c) 2014-2021 Simon Fraser University
|
|
* Copyright (c) 2000-2021 John Willinsky
|
|
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
|
*
|
|
* @class NavigationMenuItem
|
|
*
|
|
* @ingroup navigationMenu
|
|
*
|
|
* @see NavigationMenuItemDAO
|
|
*
|
|
* @brief Basic class describing a NavigationMenuItem.
|
|
*/
|
|
|
|
namespace PKP\navigationMenu;
|
|
|
|
class NavigationMenuItem extends \PKP\core\DataObject
|
|
{
|
|
// Types for all default navigationMenuItems
|
|
public const NMI_TYPE_ABOUT = 'NMI_TYPE_ABOUT';
|
|
public const NMI_TYPE_SUBMISSIONS = 'NMI_TYPE_SUBMISSIONS';
|
|
public const NMI_TYPE_EDITORIAL_TEAM = 'NMI_TYPE_EDITORIAL_TEAM';
|
|
public const NMI_TYPE_CONTACT = 'NMI_TYPE_CONTACT';
|
|
public const NMI_TYPE_ANNOUNCEMENTS = 'NMI_TYPE_ANNOUNCEMENTS';
|
|
public const NMI_TYPE_CUSTOM = 'NMI_TYPE_CUSTOM';
|
|
public const NMI_TYPE_REMOTE_URL = 'NMI_TYPE_REMOTE_URL';
|
|
|
|
public const NMI_TYPE_USER_LOGOUT = 'NMI_TYPE_USER_LOGOUT';
|
|
public const NMI_TYPE_USER_LOGOUT_AS = 'NMI_TYPE_USER_LOGOUT_AS';
|
|
public const NMI_TYPE_USER_PROFILE = 'NMI_TYPE_USER_PROFILE';
|
|
public const NMI_TYPE_ADMINISTRATION = 'NMI_TYPE_ADMINISTRATION';
|
|
public const NMI_TYPE_USER_DASHBOARD = 'NMI_TYPE_USER_DASHBOARD';
|
|
public const NMI_TYPE_USER_REGISTER = 'NMI_TYPE_USER_REGISTER';
|
|
public const NMI_TYPE_USER_LOGIN = 'NMI_TYPE_USER_LOGIN';
|
|
public const NMI_TYPE_SEARCH = 'NMI_TYPE_SEARCH';
|
|
public const NMI_TYPE_PRIVACY = 'NMI_TYPE_PRIVACY';
|
|
|
|
/** @var array $navigationMenuItems The navigationMenuItems underneath this navigationMenuItem */
|
|
public $navigationMenuItems = [];
|
|
|
|
public $_isDisplayed = true;
|
|
public $_isChildVisible = false;
|
|
|
|
//
|
|
// Get/set methods
|
|
//
|
|
|
|
/**
|
|
* Set path for this navigation menu item.
|
|
*
|
|
* @param string $path
|
|
*/
|
|
public function setPath($path)
|
|
{
|
|
$this->setData('path', $path);
|
|
}
|
|
|
|
/**
|
|
* Get path for this navigation menu item.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getPath()
|
|
{
|
|
return $this->getData('path');
|
|
}
|
|
|
|
/**
|
|
* Set url for this navigation menu item.
|
|
*
|
|
* @param string $url
|
|
*/
|
|
public function setUrl($url)
|
|
{
|
|
$this->setData('url', $url);
|
|
}
|
|
|
|
/**
|
|
* Get url for this navigation menu item.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getUrl()
|
|
{
|
|
return $this->getData('url');
|
|
}
|
|
|
|
/**
|
|
* Set type for this navigation menu item.
|
|
*
|
|
* @param string $type
|
|
*/
|
|
public function setType($type)
|
|
{
|
|
$this->setData('type', $type);
|
|
}
|
|
|
|
/**
|
|
* Get type for this navigation menu item.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getType()
|
|
{
|
|
return $this->getData('type');
|
|
}
|
|
|
|
/**
|
|
* Get contextId for this navigation menu item.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getContextId()
|
|
{
|
|
return $this->getData('contextId');
|
|
}
|
|
|
|
/**
|
|
* Set context_id for this navigation menu item.
|
|
*
|
|
* @param int $contextId
|
|
*/
|
|
public function setContextId($contextId)
|
|
{
|
|
$this->setData('contextId', $contextId);
|
|
}
|
|
|
|
/**
|
|
* Get the title of the navigation Menu.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getLocalizedTitle()
|
|
{
|
|
return $this->getLocalizedData('title');
|
|
}
|
|
|
|
/**
|
|
* Get the title of the navigation menu item.
|
|
*
|
|
* @param string $locale
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function getTitle($locale)
|
|
{
|
|
return $this->getData('title', $locale);
|
|
}
|
|
|
|
/**
|
|
* Set the title of the navigation menu item.
|
|
*
|
|
* @param string $title
|
|
* @param string $locale
|
|
*/
|
|
public function setTitle($title, $locale)
|
|
{
|
|
$this->setData('title', $title, $locale);
|
|
}
|
|
|
|
/**
|
|
* Get the content of the navigation Menu.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getLocalizedContent()
|
|
{
|
|
return $this->getLocalizedData('content');
|
|
}
|
|
|
|
/**
|
|
* Get the content of the navigation menu item.
|
|
*
|
|
* @param string $locale
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getContent($locale)
|
|
{
|
|
return $this->getData('content', $locale);
|
|
}
|
|
|
|
/**
|
|
* Set the content of the navigation menu item.
|
|
*
|
|
* @param string $content
|
|
* @param string $locale
|
|
*/
|
|
public function setContent($content, $locale)
|
|
{
|
|
$this->setData('content', $content, $locale);
|
|
}
|
|
|
|
/**
|
|
* Get seq for this navigation menu item.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getSequence()
|
|
{
|
|
return $this->getData('seq');
|
|
}
|
|
|
|
/**
|
|
* Set seq for this navigation menu item.
|
|
*
|
|
* @param int $seq
|
|
*/
|
|
public function setSequence($seq)
|
|
{
|
|
$this->setData('seq', $seq);
|
|
}
|
|
|
|
/**
|
|
* Get $isDisplayed for this navigation menu item.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function getIsDisplayed()
|
|
{
|
|
return $this->_isDisplayed;
|
|
}
|
|
|
|
/**
|
|
* Set $isDisplayed for this navigation menu item.
|
|
*
|
|
* @param bool $isDisplayed
|
|
*/
|
|
public function setIsDisplayed($isDisplayed)
|
|
{
|
|
$this->_isDisplayed = $isDisplayed;
|
|
}
|
|
|
|
/**
|
|
* Get $isChildVisible for this navigation menu item.
|
|
*
|
|
* @return bool true if at least one NMI child is visible. It is defined at the Service functionality level
|
|
*/
|
|
public function getIsChildVisible()
|
|
{
|
|
return $this->_isChildVisible;
|
|
}
|
|
|
|
/**
|
|
* Set $isChildVisible for this navigation menu item.
|
|
*
|
|
* @param bool $isChildVisible true if at least one NMI child is visible. It is defined at the Service functionality level
|
|
*/
|
|
public function setIsChildVisible($isChildVisible)
|
|
{
|
|
$this->_isChildVisible = $isChildVisible;
|
|
}
|
|
|
|
/**
|
|
* Get the titleLocaleKey of the navigation Menu.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getTitleLocaleKey()
|
|
{
|
|
return $this->getData('titleLocaleKey');
|
|
}
|
|
|
|
/**
|
|
* Set titleLocaleKey for this navigation menu item.
|
|
*
|
|
* @param string $titleLocaleKey
|
|
*/
|
|
public function setTitleLocaleKey($titleLocaleKey)
|
|
{
|
|
return $this->setData('titleLocaleKey', $titleLocaleKey);
|
|
}
|
|
|
|
/**
|
|
* Get the remoteUrl of the navigation Menu.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getLocalizedRemoteUrl()
|
|
{
|
|
return $this->getLocalizedData('remoteUrl');
|
|
}
|
|
|
|
/**
|
|
* Get the remoteUrl of the navigation menu item.
|
|
*
|
|
* @param string $locale
|
|
*/
|
|
public function getRemoteUrl($locale)
|
|
{
|
|
return $this->getData('remoteUrl', $locale);
|
|
}
|
|
|
|
/**
|
|
* Set the remoteUrl of the navigation menu item.
|
|
*
|
|
* @param string $url
|
|
* @param string $locale
|
|
*/
|
|
public function setRemoteUrl($url, $locale)
|
|
{
|
|
$this->setData('remoteUrl', $url, $locale);
|
|
}
|
|
}
|
|
|
|
if (!PKP_STRICT_MODE) {
|
|
class_alias('\PKP\navigationMenu\NavigationMenuItem', '\NavigationMenuItem');
|
|
foreach ([
|
|
'NMI_TYPE_ABOUT',
|
|
'NMI_TYPE_SUBMISSIONS',
|
|
'NMI_TYPE_EDITORIAL_TEAM',
|
|
'NMI_TYPE_CONTACT',
|
|
'NMI_TYPE_ANNOUNCEMENTS',
|
|
'NMI_TYPE_CUSTOM',
|
|
'NMI_TYPE_REMOTE_URL',
|
|
'NMI_TYPE_USER_LOGOUT',
|
|
'NMI_TYPE_USER_LOGOUT_AS',
|
|
'NMI_TYPE_USER_PROFILE',
|
|
'NMI_TYPE_ADMINISTRATION',
|
|
'NMI_TYPE_USER_DASHBOARD',
|
|
'NMI_TYPE_USER_REGISTER',
|
|
'NMI_TYPE_USER_LOGIN',
|
|
'NMI_TYPE_SEARCH',
|
|
'NMI_TYPE_PRIVACY',
|
|
] as $constantName) {
|
|
define($constantName, constant('\NavigationMenuItem::' . $constantName));
|
|
}
|
|
}
|