Esempio n. 1
0
 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);
 }