18 import(
'lib.pkp.classes.db.DBDataXMLParser');
19 import(
'lib.pkp.classes.form.Form');
35 parent::__construct(
'manager/reviewForms/reviewFormElementForm.tpl');
42 $this->
addCheck(
new FormValidator($this,
'elementType',
'required',
'manager.reviewFormElements.form.elementTypeRequired'));
53 return $reviewFormElementDao->getLocaleFieldNames();
59 function fetch($request, $template =
null, $display =
false) {
61 import(
'lib.pkp.classes.reviewForm.ReviewFormElement');
62 $templateMgr->assign(array(
63 'reviewFormId' => $this->reviewFormId,
64 'reviewFormElementId' => $this->reviewFormElementId,
69 return parent::fetch($request, $template, $display);
76 if ($this->reviewFormElementId) {
78 $context = $request->getContext();
80 $reviewFormElement = $reviewFormElementDao->getById($this->reviewFormElementId, $this->reviewFormId);
82 'question' => $reviewFormElement->getQuestion(
null),
83 'description' => $reviewFormElement->getDescription(
null),
84 'required' => $reviewFormElement->getRequired(),
85 'included' => $reviewFormElement->getIncluded(),
87 'elementType' => $reviewFormElement->getElementType(),
88 'possibleResponses' => $reviewFormElement->getPossibleResponses(
null)
101 $this->
readUserVars(array(
'question',
'description',
'required',
'included',
'elementType',
'possibleResponses'));
108 function execute(...$functionArgs) {
112 if ($this->reviewFormElementId) {
113 $context = $request->getContext();
114 $reviewFormElement = $reviewFormElementDao->getById($this->reviewFormElementId);
117 if (!$reviewForm)
fatalError(
'Invalid review form element ID!');
119 $reviewFormElement = $reviewFormElementDao->newDataObject();
120 $reviewFormElement->setReviewFormId($this->reviewFormId);
121 $reviewFormElement->setSequence(REALLY_BIG_NUMBER);
124 $reviewFormElement->setQuestion($this->
getData(
'question'),
null);
125 $reviewFormElement->setDescription($this->
getData(
'description'),
null);
126 $reviewFormElement->setRequired($this->
getData(
'required') ? 1 : 0);
127 $reviewFormElement->setIncluded($this->
getData(
'included') ? 1 : 0);
128 $reviewFormElement->setElementType($this->
getData(
'elementType'));
131 $this->
setData(
'possibleResponsesProcessed', $reviewFormElement->getPossibleResponses(
null));
132 ListbuilderHandler::unpack($request, $this->
getData(
'possibleResponses'), array($this,
'deleteEntry'), array($this,
'insertEntry'), array($this,
'updateEntry'));
133 $reviewFormElement->setPossibleResponses($this->
getData(
'possibleResponsesProcessed'),
null);
135 $reviewFormElement->setPossibleResponses(
null,
null);
137 if ($reviewFormElement->getId()) {
138 $reviewFormElementDao->deleteSetting($reviewFormElement->getId(),
'possibleResponses');
139 $reviewFormElementDao->updateObject($reviewFormElement);
141 $this->reviewFormElementId = $reviewFormElementDao->insertObject($reviewFormElement);
142 $reviewFormElementDao->resequenceReviewFormElements($this->reviewFormId);
144 parent::execute(...$functionArgs);
152 $possibleResponsesProcessed = (array) $this->
getData(
'possibleResponsesProcessed');
153 foreach ($newRowId[
'possibleResponse'] as $key => $value) {
154 $possibleResponsesProcessed[$key][] = $value;
156 $this->
setData(
'possibleResponsesProcessed', $possibleResponsesProcessed);
164 $possibleResponsesProcessed = (array) $this->
getData(
'possibleResponsesProcessed');
165 foreach (array_keys($possibleResponsesProcessed) as $locale) {
168 unset($possibleResponsesProcessed[$locale][$rowId-1]);
170 $this->
setData(
'possibleResponsesProcessed', $possibleResponsesProcessed);
177 function updateEntry($request, $rowId, $newRowId) {
178 $possibleResponsesProcessed = (array) $this->
getData(
'possibleResponsesProcessed');
179 foreach ($newRowId[
'possibleResponse'] as $locale => $value) {
182 $possibleResponsesProcessed[$locale][$rowId-1] = $value;
184 $this->
setData(
'possibleResponsesProcessed', $possibleResponsesProcessed);