Beispiel #1
0
 public function onBeforeRender()
 {
     if (!empty($this->attachment)) {
         if ($this->expandedView) {
             $this->attachment['onclick'] = null;
         } else {
             $this->attachment['onclick'] = 'QUESTIONS_AnswerListCollection.' . $this->uniqId . '.openQuestion(); return false;';
             if ($this->attachment['type'] != 'link') {
                 $this->attachment['href'] = $this->questionUrl;
             }
         }
         $attachCmp = new EQUESTIONS_CMP_Attachment($this->attachment, $this->expandedView);
         $this->addComponent('attachment', $attachCmp);
     }
     if (!$this->doNotLoadStatic) {
         EQUESTIONS_Plugin::getInstance()->addStatic();
     }
     if ($this->editable === null) {
         $this->editable = $this->service->isCurrentUserCanInteract($this->question) && $this->service->isCurrentUserCanAnswer($this->question);
     }
     $tmp = $this->service->findOptionListAndAnswerCountList($this->question->id, $this->startStamp, $this->userContext, $this->limit);
     $optionsDtoList = $tmp['optionList'];
     $countList = $tmp['countList'];
     $userContext = null;
     if (is_array($this->userContext)) {
         $userContext = $this->userContext;
         $userContext[] = $this->userId;
         $userContext = array_unique($userContext);
     }
     $totalAnswerCount = $this->totalAnswerCount == null ? $this->service->findTotalAnswersCount($this->question->id) : $this->totalAnswerCount;
     $answerCount = $this->poll ? $totalAnswerCount : $this->service->findMaxAnswersCount($this->question->id);
     $optionList = new EQUESTIONS_CMP_OptionList($optionsDtoList, $this->uniqId, $this->userId);
     $optionList->setAnswerCount($answerCount);
     $optionList->setEditable($this->editable);
     $optionList->setIsPoll($this->poll);
     $optionList->setUsersContext($userContext);
     $optionList->setEditMode($this->editMode);
     $options = $optionList->initOption($countList);
     $shareData = array('userId' => $this->userId, 'ownerId' => $this->question->userId, 'editable' => $this->editable, 'editMode' => $this->editMode, 'questionId' => $this->question->id, 'totalAnswers' => $answerCount, 'poll' => $this->poll, 'uniqId' => $this->uniqId, 'userContext' => $userContext, 'displayedCount' => count($options), 'optionTotal' => $this->optionTotal, 'startStamp' => $this->startStamp, 'ignoreOptions' => array(), 'expandedView' => $this->expandedView, 'inPopupMode' => $this->inPopupMode, 'ownerMode' => $this->userId == $this->question->userId);
     $shareData['offset'] = $shareData['displayedCount'];
     $shareData['st']['displayedCount'] = $shareData['displayedCount'];
     $shareData['st']['optionTotal'] = $shareData['optionTotal'];
     $jsAccessor = 'questionAnswers';
     $js = UTIL_JsGenerator::newInstance();
     $js->equateVarables($jsAccessor, array('QUESTIONS_AnswerListCollection', $this->uniqId));
     $js->callFunction(array($jsAccessor, 'init'), array($this->uniqId, $options, $shareData, !$this->editable));
     $js->callFunction(array($jsAccessor, 'setResponder'), array(OW::getRouter()->urlFor('EQUESTIONS_CTRL_Questions', 'rsp')));
     $this->assign('viewMore', $this->viewMore);
     $this->assign('editMode', $this->editMode);
     if ($this->viewMore) {
         $js->callFunction(array($jsAccessor, 'initViewMore'), array());
         $this->assign('viewMoreUrl', $this->questionUrl);
     }
     $addNewAvaliable = $this->editable && !$this->poll;
     $this->assign('addNew', $addNewAvaliable);
     $this->assign('hideAddNew', !$this->isAddNewAvaliable());
     if ($addNewAvaliable) {
         $js->callFunction(array($jsAccessor, 'initAddNew'), array());
     }
     OW::getDocument()->addOnloadScript($js);
     $this->assign('uniqId', $this->uniqId);
     $this->addComponent('list', $optionList);
     OW::getLanguage()->addKeyForJs('equestions', 'option_not_empty_delete_warning');
     OW::getLanguage()->addKeyForJs('equestions', 'question_fb_title');
     OW::getLanguage()->addKeyForJs('equestions', 'users_fb_title');
 }