diff --git a/classes/install/Upgrade.inc.php b/classes/install/Upgrade.inc.php index 8a3ee6b15b5..73a4137a257 100644 --- a/classes/install/Upgrade.inc.php +++ b/classes/install/Upgrade.inc.php @@ -2371,6 +2371,7 @@ function enabledSitePlugins() { $result = $pluginSettings->update('DELETE FROM plugin_settings WHERE plugin_name = ? AND setting_name = \'enabled\' AND context_id <> 0', array($pluginName)); } } + return true; } @@ -2430,7 +2431,22 @@ function moveCSSFiles() { return true; } + /** + * For 3.1.0 upgrade. DefaultMenus Defaults + */ + function installDefaultNavigationMenus() { + $journalDao = DAORegistry::getDAO('JournalDAO'); + $navigationMenuDao = DAORegistry::getDAO('NavigationMenuDAO'); + $journals = $journalDao->getAll(); + while ($journal = $journals->next()) { + $navigationMenuDao->installSettings($journal->getId(), 'registry/navigationMenus.xml'); + } + + $navigationMenuDao->installSettings(CONTEXT_ID_NONE, 'registry/navigationMenus.xml'); + + return true; + } } ?> diff --git a/classes/journal/JournalDAO.inc.php b/classes/journal/JournalDAO.inc.php index 005597b63c8..8a687fb94ea 100644 --- a/classes/journal/JournalDAO.inc.php +++ b/classes/journal/JournalDAO.inc.php @@ -106,6 +106,16 @@ function deleteById($journalId) { $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); $reviewFormDao->deleteByAssoc(ASSOC_TYPE_JOURNAL, $journalId); + // NavigationMenus + // TODO: when the NavigationMenu feature gets ported to OMP we could add the code to ContextDAO + $navigationMenuDao = DAORegistry::getDAO('NavigationMenuDAO'); + $navigationMenuDao->deleteByContextId($journalId); + + // NavigationMenuItems + // TODO: when the NavigationMenu feature gets ported to OMP we could add the code to ContextDAO + $navigationMenuItemDao = DAORegistry::getDAO('NavigationMenuItemDAO'); + $navigationMenuItemDao->deleteByContextId($journalId); + parent::deleteById($journalId); } diff --git a/classes/services/OJSServiceProvider.inc.php b/classes/services/OJSServiceProvider.inc.php index 91d3d331388..63d2d3d44f0 100644 --- a/classes/services/OJSServiceProvider.inc.php +++ b/classes/services/OJSServiceProvider.inc.php @@ -40,5 +40,10 @@ public function register(Container $pimple) { $pimple['section'] = function() { return new SectionService(); }; + + // NavigationMenus service + $pimple['navigationMenu'] = function() { + return new \PKP\Services\NavigationMenuService(); + }; } } diff --git a/controllers/grid/admin/journal/form/JournalSiteSettingsForm.inc.php b/controllers/grid/admin/journal/form/JournalSiteSettingsForm.inc.php index 7bc97f3e070..ded142f4697 100644 --- a/controllers/grid/admin/journal/form/JournalSiteSettingsForm.inc.php +++ b/controllers/grid/admin/journal/form/JournalSiteSettingsForm.inc.php @@ -122,6 +122,10 @@ function execute() { $sectionDao->insertObject($section); $journal->updateSetting('supportedLocales', $site->getSupportedLocales()); + + // load default navigationMenus. + $this->_loadDefaultNavigationMenus($journalId); + } $journal->updateSetting('name', $this->getData('name'), 'string', true); $journal->updateSetting('description', $this->getData('description'), 'string', true); diff --git a/controllers/tab/settings/WebsiteSettingsTabHandler.inc.php b/controllers/tab/settings/WebsiteSettingsTabHandler.inc.php index f7f05cf525d..3342b780185 100644 --- a/controllers/tab/settings/WebsiteSettingsTabHandler.inc.php +++ b/controllers/tab/settings/WebsiteSettingsTabHandler.inc.php @@ -39,6 +39,7 @@ function __construct() { 'languages' => 'controllers/tab/settings/languages/languages.tpl', 'plugins' => 'controllers/tab/settings/plugins/plugins.tpl', 'announcements' => 'lib.pkp.controllers.tab.settings.announcements.form.AnnouncementSettingsForm', + 'navigationMenus' => 'lib.pkp.controllers.tab.settings.navigationMenus.form.NavigationMenuSettingsForm' )); } diff --git a/dbscripts/xml/install.xml b/dbscripts/xml/install.xml index acd71faf858..c4f880fbf64 100644 --- a/dbscripts/xml/install.xml +++ b/dbscripts/xml/install.xml @@ -34,6 +34,7 @@ + @@ -45,4 +46,5 @@ + diff --git a/dbscripts/xml/upgrade.xml b/dbscripts/xml/upgrade.xml index f095cce8abe..2ca314a6bb9 100644 --- a/dbscripts/xml/upgrade.xml +++ b/dbscripts/xml/upgrade.xml @@ -66,6 +66,7 @@ + @@ -172,6 +173,7 @@ + diff --git a/plugins/themes/default/DefaultThemePlugin.inc.php b/plugins/themes/default/DefaultThemePlugin.inc.php index 52b06cd8b4f..48f0e893f97 100644 --- a/plugins/themes/default/DefaultThemePlugin.inc.php +++ b/plugins/themes/default/DefaultThemePlugin.inc.php @@ -169,8 +169,37 @@ public function init() { // Load custom JavaScript for this theme $this->addScript('default', 'js/main.js'); + + // Register navigationMenuItem Types + HookRegistry::register('NavigationMenus::displayType', array($this, 'registerNavigationMenuItemTypesDisplay')); + } + + function registerNavigationMenuItemTypesDisplay($hookName, $args) { + $type = $args[1]; + $display =& $args[0]; + $display = false; + return $display; } + function getNavigationMenuItemTypes() { + $request = Application::getRequest(); + $router = $request->getRouter(); + $context = $request->getContext(); + $dispatcher = $router->getDispatcher(); + + if ($dispatcher) { + return array( // none and custom should be elsewhere - more centrally + "" => 'none', + $dispatcher->url($request, ROUTE_PAGE, $context->getPath(), 'issue', 'archive') => 'archiveIssue', + $dispatcher->url($request, ROUTE_PAGE, $context->getPath(), 'issue', 'current') => 'currentIssue', + 'custom' => "custom", + ); + } else { + return array(); + } + } + + /** * Get the name of the settings file to be installed on new journal * creation. diff --git a/registry/minifiedScripts.txt b/registry/minifiedScripts.txt index 065442ea319..c37680b3342 100644 --- a/registry/minifiedScripts.txt +++ b/registry/minifiedScripts.txt @@ -101,6 +101,8 @@ lib/pkp/js/controllers/wizard/fileUpload/FileUploadWizardHandler.js lib/pkp/js/controllers/wizard/fileUpload/form/FileUploadFormHandler.js lib/pkp/js/controllers/wizard/fileUpload/form/RevisionConfirmationHandler.js lib/pkp/js/controllers/grid/filter/form/FilterFormHandler.js +lib/pkp/js/controllers/grid/navigationMenus/form/NavigationMenuFormHandler.js +lib/pkp/js/controllers/grid/navigationMenus/form/NavigationMenuItemsFormHandler.js lib/pkp/js/controllers/grid/representations/form/RepresentationFormHandler.js lib/pkp/js/controllers/grid/settings/user/form/UserDetailsFormHandler.js lib/pkp/js/controllers/grid/settings/roles/form/UserGroupFormHandler.js diff --git a/registry/navigationMenus.xml b/registry/navigationMenus.xml new file mode 100644 index 00000000000..1b981ab19a5 --- /dev/null +++ b/registry/navigationMenus.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/admin/settings.tpl b/templates/admin/settings.tpl index 76ed2df7cde..94398aa2bd4 100644 --- a/templates/admin/settings.tpl +++ b/templates/admin/settings.tpl @@ -24,6 +24,7 @@
  • {translate key="admin.siteSetup"}
  • {translate key="common.languages"}
  • {translate key="common.plugins"}
  • +
  • {translate key="manager.navigationMenus"}
  • diff --git a/templates/management/settings/website.tpl b/templates/management/settings/website.tpl index 07ba0f3ad69..b82d9127c5c 100644 --- a/templates/management/settings/website.tpl +++ b/templates/management/settings/website.tpl @@ -27,6 +27,7 @@
  • {translate key="common.languages"}
  • {translate key="common.plugins"}
  • {translate key="manager.announcements"} +
  • {translate key="manager.navigationMenus"} {call_hook name="Templates::Management::Settings::website"}