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 @@
+
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 @@
+
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 @@
+
+
+
+
+
+
+