/**
  * 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);
 }
Пример #2
0
 /**
  * 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();
 }