addRoleAssignment( [Role::ROLE_ID_MANAGER, Role::ROLE_ID_SITE_ADMIN], ['tools', 'importexport', 'permissions'] ); } /** * Route to other Tools operations * * @param array $args * @param PKPRequest $request */ public function tools($args, $request) { $path = array_shift($args); switch ($path) { case '': case 'index': $this->index($args, $request); break; case 'permissions': $this->permissions($args, $request); break; case 'resetPermissions': $this->resetPermissions($args, $request); break; default: assert(false); } } /** * Display tools index page. * * @param PKPRequest $request * @param array $args */ public function index($args, $request) { $templateMgr = TemplateManager::getManager($request); $this->setupTemplate($request); $templateMgr->assign('pageTitle', __('navigation.tools')); $templateMgr->display('management/tools/index.tpl'); } /** * Import or export data. * * @param array $args * @param PKPRequest $request */ public function importexport($args, $request) { $this->setupTemplate($request); PluginRegistry::loadCategory(IMPORTEXPORT_PLUGIN_CATEGORY); $templateMgr = TemplateManager::getManager($request); if (array_shift($args) === 'plugin') { $pluginName = array_shift($args); /** @var ImportExportPlugin */ $plugin = PluginRegistry::getPlugin(IMPORTEXPORT_PLUGIN_CATEGORY, $pluginName); if ($plugin) { return $plugin->display($args, $request); } } $templateMgr->assign('plugins', PluginRegistry::getPlugins(IMPORTEXPORT_PLUGIN_CATEGORY)); return $templateMgr->fetchJson('management/tools/importexport.tpl'); } // // Protected methods. // /** * Display the permissions area. * * @param array $args * @param PKPRequest $request */ public function permissions($args, $request) { $this->setupTemplate($request); $templateMgr = TemplateManager::getManager($request); return $templateMgr->fetchJson('management/tools/permissions.tpl'); } /** * Reset article/monograph permissions * * @param array $args * @param PKPRequest $request */ public function resetPermissions($args, $request) { if (!$request->checkCSRF()) { return new JSONMessage(false); } $context = $request->getContext(); if (!$context) { return; } Repo::submission()->resetPermissions($context->getId()); $user = $request->getUser(); $notificationManager = new NotificationManager(); $notificationManager->createTrivialNotification($user->getId(), PKPNotification::NOTIFICATION_TYPE_SUCCESS, ['contents' => __('manager.setup.resetPermissions.success')]); // This is an ugly hack to force the PageHandler to return JSON, so this // method can communicate properly with the AjaxFormHandler. Returning a // JSONMessage, or JSONMessage::toString(), doesn't seem to do it. echo json_encode(true); exit; } }