/** * Save changes to a review form element. * @param $args array * @param $request PKPRequest * @return JSONMessage JSON object */ function updateReviewFormElement($args, $request) { $reviewFormElementId = (int) $request->getUserVar('reviewFormElementId'); $context = $request->getContext(); $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO'); $reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO'); $reviewForm = $reviewFormDao->getById($this->reviewFormId, Application::getContextAssocType(), $context->getId()); if (!$reviewFormDao->unusedReviewFormExists($this->reviewFormId, Application::getContextAssocType(), $context->getId()) || $reviewFormElementId && !$reviewFormElementDao->reviewFormElementExists($reviewFormElementId, $this->reviewFormId)) { fatalError('Invalid review form information!'); } import('lib.pkp.controllers.grid.settings.reviewForms.form.ReviewFormElementForm'); $reviewFormElementForm = new ReviewFormElementForm($this->reviewFormId, $reviewFormElementId); $reviewFormElementForm->readInputData(); if ($reviewFormElementForm->validate()) { $reviewFormElementId = $reviewFormElementForm->execute($request); // Create the notification. $notificationMgr = new NotificationManager(); $user = $request->getUser(); $notificationMgr->createTrivialNotification($user->getId()); return DAO::getDataChangedEvent($reviewFormElementId); } return new JSONMessage(false); }
/** * Save changes to a review form element. */ function updateReviewFormElement() { $this->validate(); $reviewFormId = Request::getUserVar('reviewFormId') === null ? null : (int) Request::getUserVar('reviewFormId'); $reviewFormElementId = Request::getUserVar('reviewFormElementId') === null ? null : (int) Request::getUserVar('reviewFormElementId'); $journal =& Request::getJournal(); $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO'); $reviewFormElementDao =& DAORegistry::getDAO('ReviewFormElementDAO'); $reviewForm =& $reviewFormDao->getReviewForm($reviewFormId, ASSOC_TYPE_JOURNAL, $journal->getId()); $this->setupTemplate(true, $reviewForm); if (!$reviewFormDao->unusedReviewFormExists($reviewFormId, ASSOC_TYPE_JOURNAL, $journal->getId()) || $reviewFormElementId != null && !$reviewFormElementDao->reviewFormElementExists($reviewFormElementId, $reviewFormId)) { Request::redirect(null, null, 'reviewFormElements', array($reviewFormId)); } import('classes.manager.form.ReviewFormElementForm'); $reviewFormElementForm = new ReviewFormElementForm($reviewFormId, $reviewFormElementId); $reviewFormElementForm->readInputData(); $formLocale = $reviewFormElementForm->getFormLocale(); // Reorder response items $response = $reviewFormElementForm->getData('possibleResponses'); if (isset($response[$formLocale]) && is_array($response[$formLocale])) { usort($response[$formLocale], create_function('$a,$b', 'return $a[\'order\'] == $b[\'order\'] ? 0 : ($a[\'order\'] < $b[\'order\'] ? -1 : 1);')); } $reviewFormElementForm->setData('possibleResponses', $response); if (Request::getUserVar('addResponse')) { // Add a response item $editData = true; $response = $reviewFormElementForm->getData('possibleResponses'); if (!isset($response[$formLocale]) || !is_array($response[$formLocale])) { $response[$formLocale] = array(); $lastOrder = 0; } else { $lastOrder = $response[$formLocale][count($response[$formLocale]) - 1]['order']; } array_push($response[$formLocale], array('order' => $lastOrder + 1)); $reviewFormElementForm->setData('possibleResponses', $response); } else { if (($delResponse = Request::getUserVar('delResponse')) && count($delResponse) == 1) { // Delete a response item $editData = true; list($delResponse) = array_keys($delResponse); $delResponse = (int) $delResponse; $response = $reviewFormElementForm->getData('possibleResponses'); if (!isset($response[$formLocale])) { $response[$formLocale] = array(); } array_splice($response[$formLocale], $delResponse, 1); $reviewFormElementForm->setData('possibleResponses', $response); } } if (!isset($editData) && $reviewFormElementForm->validate()) { $reviewFormElementForm->execute(); Request::redirect(null, null, 'reviewFormElements', array($reviewFormId)); } else { $journal =& Request::getJournal(); $templateMgr =& TemplateManager::getManager(); if ($reviewFormElementId == null) { $templateMgr->assign('pageTitle', 'manager.reviewFormElements.create'); } else { $templateMgr->assign('pageTitle', 'manager.reviewFormElements.edit'); } $reviewFormElementForm->display(); } }
/** * Save changes to a review form element. * @param $args ($reviewFormId, $reviewFormElementId) * @param $request PKPRequest * @return string Serialized JSON object */ function updateReviewFormElement($args, &$request) { $reviewFormId = Request::getUserVar('reviewFormId') === null ? null : (int) Request::getUserVar('reviewFormId'); $reviewFormElementId = Request::getUserVar('reviewFormElementId') === null ? null : (int) Request::getUserVar('reviewFormElementId'); $press =& Request::getPress(); $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO'); $reviewForm =& $reviewFormDao->getReviewForm($reviewFormId, ASSOC_TYPE_PRESS, $press->getId()); $reviewFormElementDao =& DAORegistry::getDAO('ReviewFormElementDAO'); if (!$reviewFormDao->unusedReviewFormExists($reviewFormId, ASSOC_TYPE_PRESS, $press->getId()) || $reviewFormElementId != null && !$reviewFormElementDao->reviewFormElementExists($reviewFormElementId, $reviewFormId)) { Request::redirect(null, null, 'reviewFormElements', array($reviewFormId)); } import('controllers.grid.settings.reviewForm.form.ReviewFormElementForm'); $reviewFormElementForm = new ReviewFormElementForm($reviewFormId, $reviewFormElementId); $reviewFormElementForm->readInputData(); $formLocale = $reviewFormElementForm->getFormLocale(); // Reorder response items $response = $reviewFormElementForm->getData('possibleResponses'); if (isset($response[$formLocale]) && is_array($response[$formLocale])) { usort($response[$formLocale], create_function('$a,$b', 'return $a[\'order\'] == $b[\'order\'] ? 0 : ($a[\'order\'] < $b[\'order\'] ? -1 : 1);')); } $reviewFormElementForm->setData('possibleResponses', $response); if (Request::getUserVar('addResponse')) { // Add a response item $editData = true; $response = $reviewFormElementForm->getData('possibleResponses'); if (!isset($response[$formLocale]) || !is_array($response[$formLocale])) { $response[$formLocale] = array(); $lastOrder = 0; } else { $lastOrder = $response[$formLocale][count($response[$formLocale]) - 1]['order']; } array_push($response[$formLocale], array('order' => $lastOrder + 1)); $reviewFormElementForm->setData('possibleResponses', $response); } else { if (($delResponse = Request::getUserVar('delResponse')) && count($delResponse) == 1) { // Delete a response item $editData = true; list($delResponse) = array_keys($delResponse); $delResponse = (int) $delResponse; $response = $reviewFormElementForm->getData('possibleResponses'); if (!isset($response[$formLocale])) { $response[$formLocale] = array(); } array_splice($response[$formLocale], $delResponse, 1); $reviewFormElementForm->setData('possibleResponses', $response); } } if (!isset($editData) && $reviewFormElementForm->validate()) { $reviewFormElementForm->execute(); $row =& $this->getRowInstance(); $row->setGridId($this->getId()); $row->setId($reviewFormElementForm->reviewFormElementId); $row->setData($reviewFormElementForm->reviewFormElement); $row->initialize($request); $json = new JSON('true', $this->_renderRowInternally($request, $row)); } else { $json = new JSON('false'); $press =& Request::getPress(); $templateMgr =& TemplateManager::getManager(); if ($reviewFormElementId == null) { $templateMgr->assign('pageTitle', 'manager.reviewFormElements.create'); } else { $templateMgr->assign('pageTitle', 'manager.reviewFormElements.edit'); } $reviewFormElementForm->display(); } return $json->getString(); }