public function accountTypes($params = array()) { $serviceLang = BOL_LanguageService::getInstance(); $language = OW::getLanguage(); $currentLanguageId = OW::getLanguage()->getCurrentId(); // -- Get all section, questions and question values -- $questions = $this->questionService->findAllQuestionsBySectionForAccountType('all'); $section = null; $questionBySectionList = array(); $sectionDeleteUrlList = array(); $parentList = array(); $questionNameList = array(); $questionList = array(); $deleteEditButtonsContent = array(); $previewQuestionValuesContent = array(); $accountTypesCheckboxContent = array(); $sectionsNameList = array_keys($questions); $sectionDtoList = BOL_QuestionService::getInstance()->findSectionBySectionNameList($sectionsNameList); foreach ($questions as $section => $list) { $sectionDeleteUrlList[$section] = OW::getRouter()->urlFor('ADMIN_CTRL_Questions', 'deleteSection', array("sectionName" => $section)); $questionBySectionList[$section] = array(); foreach ($list as $question) { $questionList[$question['name']] = $question; //$question['questionEditUrl'] = OW::getRouter()->urlFor('ADMIN_CTRL_Questions', 'edit', array("questionId" => $question['id'])); //$question['questionDeleteUrl'] = OW::getRouter()->urlFor('ADMIN_CTRL_Questions', 'deleteQuestion', array("questionId" => $question['id'])); if (!empty($question['parent'])) { $parent = $this->questionService->findQuestionByName($question['parent']); if (!empty($parent)) { $question['parentUrl'] = 'javascript://'; $question['parentLabel'] = $this->questionService->getQuestionLang($parent->name); $question['parentId'] = $parent->id; $parentList[$question['parent']][] = array('name' => $question['name'], 'editUrl' => 'javascript://'); } else { $question['parent'] = ''; } } $questionBySectionList[$section][] = $question; $questionNameList[] = $question['name']; $event = new OW_Event('admin.questions.get_edit_delete_question_buttons_content', array('question' => $question), null); OW::getEventManager()->trigger($event); $data = $event->getData(); $deleteEditButtonsContent[$question['name']] = $data; $event = new OW_Event('admin.questions.get_preview_question_values_content', array('question' => $question), null); OW::getEventManager()->trigger($event); $data = $event->getData(); $previewQuestionValuesContent[$question['name']] = $data; $event = new OW_Event('admin.questions.get_account_types_checkbox_content', array('question' => $question), null); OW::getEventManager()->trigger($event); $data = $event->getData(); $accountTypesCheckboxContent[$question['name']] = $data; } } $questionDtoList = BOL_QuestionService::getInstance()->findQuestionByNameList($questionNameList); foreach ($questionList as $sort => $question) { if (empty($question['name'])) { continue; } $text = $language->text('admin', 'questions_delete_question_confirmation'); if (array_key_exists($question['name'], $parentList)) { $questionStringList = array(); foreach ($parentList[$question['name']] as $child) { $questionStringList[] = BOL_QuestionService::getInstance()->getQuestionLang($child['name']); } $text = $language->text('admin', 'questions_delete_question_parent_confirmation', array('questions' => implode(', ', $questionStringList))); } $text = json_encode($text); OW::getDocument()->addOnloadScript("OW.registerLanguageKey('admin', 'questions_delete_question_confirmation_" . (int) $question['id'] . "', {$text});"); // ------------------------------------------------------------ $disableActionList = $this->questionService->getQuestionDisableActionList($questionDtoList[$question['name']]); $questionList[$sort] = array_merge($questionList[$sort], $disableActionList); // ------------------------------------------------------------ } $questionValues = $this->questionService->findQuestionsValuesByQuestionNameList($questionNameList); $accountTypeDtoList = $this->questionService->findAllAccountTypes(); $accountTypeList = array(); $valueLabels = array(); foreach ($questionValues as $name => $value) { if (empty($valueLabels[$name])) { $valueLabels[$name] = array(); } /* @var $value BOL_QuestionValue */ foreach ($value['values'] as $item) { $valueLabels[$item->questionName][$item->value] = BOL_QuestionService::getInstance()->getQuestionValueLang($item->questionName, $item->value); } } foreach ($accountTypeDtoList as $dto) { $accountTypeList[$dto->name] = $dto->name; } $accountTypesToQuestionsDtoList = $this->getAccountTypesToQuestionsList(); $this->assign('questionList', $questionList); $this->assign('td_width', (int) (375 / (count($accountTypeDtoList) + 1))); $this->assign('div_width', (int) (375 / (count($accountTypeDtoList) + 1)) - 18); $this->assign('accountTypeDtoList', $accountTypeDtoList); $this->assign('accountTypesCount', count($accountTypeDtoList) + 1); $this->assign('tableColumnCount', count($accountTypeDtoList) + 5); $this->assign('accountTypesToQuestionsDtoList', $accountTypesToQuestionsDtoList); $this->assign('questionsBySections', $questionBySectionList); $this->assign('questionValues', $questionValues); $this->assign('valueLabels', $valueLabels); $this->assign('sectionDeleteUrlList', $sectionDeleteUrlList); $this->assign('propertiesUrl', OW::getRouter()->urlForRoute('questions_properties')); $this->assign('deleteEditButtons', $deleteEditButtonsContent); $this->assign('previewValues', $previewQuestionValuesContent); $this->assign('accountTypesCheckboxContent', $accountTypesCheckboxContent); $this->assign('sectionList', $sectionDtoList); $language->addKeyForJs('admin', 'questions_delete_section_confirmation'); $script = ' window.indexQuest = new indexQuestions( ' . json_encode(array('questions' => $questionList, 'ajaxResponderUrl' => $this->ajaxResponderUrl, 'accountTypes' => array_keys($accountTypeList))) . ' )'; OW::getDocument()->addOnloadScript($script); $jsDir = OW::getPluginManager()->getPlugin("admin")->getStaticJsUrl(); OW::getDocument()->addScript($jsDir . "questions.js"); $baseJsDir = OW::getPluginManager()->getPlugin("base")->getStaticJsUrl(); OW::getDocument()->addScript($baseJsDir . "jquery-ui.min.js"); OW::getLanguage()->addKeyForJs('admin', 'questions_profile_question_sections_title'); OW::getLanguage()->addKeyForJs('admin', 'questions_edit_profile_question_title'); OW::getLanguage()->addKeyForJs('admin', 'questions_add_profile_question_title'); OW::getLanguage()->addKeyForJs('admin', 'questions_add_account_type_title'); OW::getLanguage()->addKeyForJs('admin', 'questions_edit_account_type_title'); OW::getLanguage()->addKeyForJs('admin', 'questions_account_type_was_added'); OW::getLanguage()->addKeyForJs('admin', 'questions_account_type_was_updated'); OW::getLanguage()->addKeyForJs('admin', 'questions_account_type_added_error'); OW::getLanguage()->addKeyForJs('admin', 'questions_delete_account_type_confirmation'); OW::getLanguage()->addKeyForJs('admin', 'questions_values_should_not_be_empty'); $contextAction = new BASE_CMP_ContextAction(); $contextParentAction = new BASE_ContextAction(); $contextParentAction->setKey('account_type_menu'); $contextParentAction->setClass('ow_newsfeed_context'); $contextAction->addAction($contextParentAction); $editAction = new BASE_ContextAction(); $editAction->setKey('edit'); $editAction->setLabel(OW::getLanguage()->text('admin', 'btn_label_edit')); $editAction->setParentKey($contextParentAction->getKey()); $editAction->setClass('question_edit_account_type_button'); $editAction->setUrl('javascript://'); $editAction->setOrder(1); $contextAction->addAction($editAction); $deleteAction = new BASE_ContextAction(); $deleteAction->setKey('delete'); $deleteAction->setLabel(OW::getLanguage()->text('admin', 'btn_label_delete')); $deleteAction->setParentKey($contextParentAction->getKey()); $deleteAction->setClass('question_delete_account_type_button'); $deleteAction->setUrl('javascript://'); $deleteAction->setOrder(2); $contextAction->addAction($deleteAction); $this->addComponent('accountTypeMenu', $contextAction); }