76 $this->lng = $DIC->language();
77 $this->ctrl = $DIC->ctrl();
78 $this->rbacsystem = $DIC->rbac()->system();
79 $this->db = $DIC->database();
80 $this->tabs = $DIC->tabs();
81 $this->tpl = $DIC[
"tpl"];
82 $this->toolbar = $DIC->toolbar();
83 $this->
user = $DIC->user();
84 $this->editor_gui = $a_survey_editor_gui;
85 $this->ref_id = $a_survey->
getRefId();
86 $this->
object = $a_survey;
99 $cmd =
$ilCtrl->getCmd(
"renderPage");
100 $next_class =
$ilCtrl->getNextClass($this);
102 switch ($next_class) {
106 $has_content =
false;
108 if (
$rbacsystem->checkAccess(
"write", $this->ref_id)) {
110 if ($_REQUEST[
"new_id"]) {
115 if ($_REQUEST[
"il_hform_subcmd"]) {
116 $subcmd = $_REQUEST[
"il_hform_subcmd"];
119 $ilCtrl->setParameter($this->editor_gui,
"pgov", $this->current_page);
122 $id = explode(
"_", $_REQUEST[
"il_hform_node"]);
126 if (substr($_REQUEST[
"il_hform_subcmd"], 0, 5) ==
"multi") {
127 if ($_REQUEST[
"il_hform_multi"]) {
130 foreach (explode(
";", $_REQUEST[
"il_hform_multi"]) as $item) {
131 $id[] = (int) array_pop(explode(
"_", $item));
134 if ($subcmd ==
"multiDelete") {
135 $subcmd =
"deleteQuestion";
139 if ($subcmd ==
"multiDelete") {
141 $ilCtrl->redirect($this,
"renderPage");
148 if (substr($subcmd, 0, 11) ==
"addQuestion") {
149 $type = explode(
"_", $subcmd);
153 $has_content = $this->$subcmd(
$id, $_REQUEST[
"il_hform_node"]);
194 $this->log->debug(
"append question, id: " . $a_new_id .
", duplicate: " . $a_duplicate .
", force: " . $a_force_duplicate);
198 "SELECT survey_question_id FROM svy_svy_qst WHERE survey_fi = %s",
202 $sequence =
$result->numRows();
207 $survey_question_id = $this->
object->duplicateQuestionForSurvey($a_new_id, $a_force_duplicate);
211 $survey_question_id = $a_new_id;
215 if ($this->
object->isQuestionInSurvey($survey_question_id)) {
216 return $survey_question_id;
220 $next_id =
$ilDB->nextId(
'svy_svy_qst');
221 $affectedRows =
$ilDB->manipulateF(
222 "INSERT INTO svy_svy_qst (survey_question_id, survey_fi," .
223 "question_fi, sequence, tstamp) VALUES (%s, %s, %s, %s, %s)",
224 array(
'integer',
'integer',
'integer',
'integer',
'integer'),
225 array($next_id, $this->
object->getSurveyId(), $survey_question_id, $sequence,
time())
228 $this->log->debug(
"insert svy_svy_qst, id: " . $next_id .
", qfi: " . $survey_question_id .
", seq: " . $sequence);
230 return $survey_question_id;
244 include_once
"./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
249 $this->
object->loadQuestionsFromDb();
251 $pos = $_REQUEST[
"pgov_pos"];
254 if (substr($pos, -1) !=
"c") {
256 $current = $this->
object->getSurveyPages();
262 $this->
object->createQuestionblock(
266 array((
int) $pos, $a_new_id)
270 $block_id = $block_id[
"questionblock_id"];
272 $this->
object->addQuestionToBlock($a_new_id, $block_id);
279 $pos = (int) $pos .
"a";
280 $this->current_page++;
284 $first = $this->
object->getSurveyPages();
286 $first = array_shift($first);
287 $pos = $first[
"question_id"] .
"b";
288 $this->current_page = 1;
293 $this->
object->moveQuestions(
296 ((substr($pos, -1) ==
"a") ? 1 : 0)
299 $this->
object->fixSequenceStructure();
311 $question_ids = $this->
object->getQuestionblockQuestionIds($a_block_id);
312 foreach ($question_ids as $qid) {
316 if (
sizeof($new_ids)) {
317 $this->
object->loadQuestionsFromDb();
319 $pos = $_REQUEST[
"pgov_pos"];
322 if (substr($pos, -1) !=
"c") {
324 $current = $this->
object->getSurveyPages();
330 $this->
object->createQuestionblock(
334 array((
int) $pos)+$new_ids
338 $block_id = $block_id[
"questionblock_id"];
340 foreach ($new_ids as $qid) {
341 $this->
object->addQuestionToBlock($qid, $block_id);
348 $this->
object->createQuestionblock(
357 $pos = (int) $pos .
"a";
361 $first = $this->
object->getSurveyPages();
363 $first = array_shift($first);
364 $pos = $first[
"question_id"] .
"b";
369 $this->
object->moveQuestions(
372 ((substr($pos, -1) ==
"a") ? 1 : 0)
391 include_once
"./Modules/SurveyQuestionPool/classes/class.ilObjSurveyQuestionPool.php";
393 foreach ($questiontypes as $item) {
394 if ($item[
"questiontype_id"] ==
$a_type) {
395 $type_trans = $item[
"type_tag"];
402 if ($a_special_position ==
"toolbar") {
403 $id = $this->
object->getSurveyPages();
404 if ($a_pos && $a_pos !=
"fst") {
407 $id =
$id[
"question_id"] .
"c";
413 elseif ($a_special_position ==
"page_end") {
414 $id = $this->
object->getSurveyPages();
415 $id =
$id[$this->current_page-1];
417 $id =
$id[
"question_id"] .
"a";
423 $_GET[
"sel_question_types"] = $type_trans;
424 $_REQUEST[
"pgov_pos"] =
$id;
425 $ilCtrl->setParameter($this->editor_gui,
"pgov_pos",
$id);
427 $ilTabs->clearSubTabs();
428 $this->editor_gui->createQuestionObject();
430 $this->editor_gui->executeCreateQuestionObject();
436 include_once
"./Modules/SurveyQuestionPool/classes/class.SurveyQuestionGUI.php";
438 $q_gui->object->setObjId($this->
object->getId());
439 $q_gui->object->createNewQuestion();
440 $q_gui_class = get_class($q_gui);
443 $ilCtrl->setParameterByClass($q_gui_class,
"pgov", $this->current_page);
444 $ilCtrl->setParameterByClass($q_gui_class,
"pgov_pos",
$id);
445 $ilCtrl->setParameterByClass($q_gui_class,
"ref_id", $this->ref_id);
446 $ilCtrl->setParameterByClass($q_gui_class,
"new_for_survey", $this->ref_id);
447 $ilCtrl->setParameterByClass($q_gui_class,
"q_id", $q_gui->object->getId());
448 $ilCtrl->setParameterByClass($q_gui_class,
"sel_question_types", $q_gui->getQuestionType());
449 $ilCtrl->redirectByClass($q_gui_class,
"editQuestion");
463 $this->suppress_clipboard_msg =
true;
466 "source" => $this->current_page,
467 "nodes" =>
array($a_id),
481 $this->suppress_clipboard_msg =
true;
484 "source" => $this->current_page,
485 "nodes" =>
array($a_id),
498 if (is_array($a_id)) {
500 $this->suppress_clipboard_msg =
true;
503 "source" => $this->current_page,
518 if (is_array($a_id)) {
520 $this->suppress_clipboard_msg =
true;
523 "source" => $this->current_page,
545 $pages = $this->
object->getSurveyPages();
547 $target = $pages[$this->current_page-1];
551 foreach (
$source as $src_qst) {
552 if (in_array($src_qst[
"question_id"], $data[
"nodes"])) {
553 $nodes[] = $src_qst[
"question_id"];
559 if ($_REQUEST[
"il_hform_node"] ==
"page_end") {
561 $a_id = array_pop($a_id);
562 $a_id = $a_id[
"question_id"];
567 if ($data[
"mode"] ==
"cut") {
569 if ($data[
"source"] == $this->current_page) {
571 if (
sizeof($nodes) <=
sizeof(
$source)) {
572 $this->
object->moveQuestions($nodes, $a_id, $pos);
578 $source_block_id =
false;
581 $source_block_id = array_shift($source_block_id);
582 $source_block_id = $source_block_id[
"questionblock_id"];
585 if (
sizeof(
$source) >
sizeof($nodes)) {
586 foreach ($nodes as $qid) {
587 $this->
object->removeQuestionFromBlock($qid, $source_block_id);
592 $this->
object->unfoldQuestionblocks(
array($source_block_id));
597 if (
sizeof(
$source) ==
sizeof($nodes) && $data[
"source"] < $this->current_page) {
598 $this->current_page--;
604 elseif ($data[
"mode"] ==
"copy") {
606 foreach ($this->
object->getSurveyPages() as $page) {
607 foreach ($page as $question) {
608 $titles[] = $question[
"title"];
613 $question_pointer =
array();
614 foreach ($nodes as $qid) {
619 $title = $question->getTitle();
621 foreach ($titles as $existing_title) {
622 #21278 preg_quote with delimiter 623 if (preg_match(
"/" . preg_quote(
$title,
"/") .
" \(([0-9]+)\)$/", $existing_title, $match)) {
624 $max = max($match[1], $max);
628 $title .=
" (" . ($max+1) .
")";
633 $question->setTitle(
$title);
636 $question->saveToDb();
638 $question_pointer[$qid] = $question->getId();
643 $this->
object->cloneTextblocks($question_pointer);
645 $this->
object->loadQuestionsFromDb();
647 $nodes = array_values($question_pointer);
655 $nodes = array_merge(
array($a_id), $nodes);
658 $this->
object->createQuestionblock(
668 $target_block_id = array_shift($target_block_id);
669 $target_block_id = $target_block_id[
"questionblock_id"];
671 foreach ($nodes as $qid) {
672 $this->
object->addQuestionToBlock($qid, $target_block_id);
676 $this->
object->moveQuestions($nodes, $a_id, $pos);
687 $source_id = (int) array_pop(explode(
"_", $_REQUEST[
"il_hform_source"]));
688 if ($_REQUEST[
"il_hform_target"] !=
"droparea_end") {
689 $target_id = (int) array_pop(explode(
"_", $_REQUEST[
"il_hform_target"]));
692 $page = $this->
object->getSurveyPages();
693 $page = $page[$this->current_page-1];
694 $last = array_pop($page);
712 $ilCtrl->setParameter($this->editor_gui,
"pgov", $this->current_page);
715 $page = $this->
object->getSurveyPages();
716 $page = $page[$this->current_page-1];
719 if ($_REQUEST[
"csum"] != md5(print_r($page,
true))) {
720 $ilCtrl->redirect($this,
"renderPage");
723 $page = array_shift($page);
724 $block_id = $page[
"questionblock_id"];
726 $this->editor_gui->removeQuestionsForm(
array($block_id),
array(),
array());
728 $this->editor_gui->removeQuestionsForm(
array(),
array($page[
"question_id"]),
array());
741 if (!is_array($a_id)) {
742 $a_id =
array($a_id);
745 $ilCtrl->setParameter($this->editor_gui,
"pgov", $this->current_page);
746 $this->editor_gui->removeQuestionsForm(
array(), $a_id,
array());
760 if (preg_match(
"/id_(\d+)/",
$key, $matches)) {
761 array_push($ids, $matches[1]);
766 $pages = $this->
object->getSurveyPages();
767 $source = $pages[$this->current_page-1];
770 $block_id = array_shift($block_id);
771 $block_id = $block_id[
"questionblock_id"];
773 if (
sizeof($ids) &&
sizeof(
$source) >
sizeof($ids)) {
775 if (
sizeof(
$source)-
sizeof($ids) == 1) {
776 $this->
object->unfoldQuestionblocks(
array($block_id));
780 foreach ($ids as $qid) {
781 $this->
object->removeQuestionFromBlock($qid, $block_id);
785 $this->
object->removeQuestions($ids,
array());
791 $this->
object->removeQuestions(
array(),
array($block_id));
795 $this->
object->removeQuestions($ids,
array());
799 if ($this->current_page > 1) {
800 $this->current_page--;
804 $this->
object->saveCompletionStatus();
807 $ilCtrl->setParameter($this,
"pgov", $this->current_page);
808 $ilCtrl->redirect($this,
"renderPage");
818 $this->
callEditor(
"editQuestionblockObject",
"bl_id", $a_id);
829 $this->
callEditor(
"addHeadingObject",
"q_id", $a_id);
840 $this->
callEditor(
"editHeadingObject",
"q_id", $a_id);
851 $this->
callEditor(
"removeHeadingObject",
"q_id", $a_id);
859 $ilTabs->clearSubTabs();
860 $_REQUEST[$a_param] = $a_value;
862 call_user_func(
array($this->editor_gui, $a_cmd));
872 $pages = $this->
object->getSurveyPages();
873 $source = $pages[$this->current_page-1];
875 $block_questions =
array();
876 $add = $block_id =
false;
877 foreach (
$source as $idx => $item) {
878 if ($item[
"question_id"] == $a_id) {
879 $block_id = $item[
"questionblock_id"];
883 $block_questions[] = $item[
"question_id"];
889 $this->
object->unfoldQuestionblocks(
array($block_id));
893 foreach ($block_questions as $qid) {
894 $this->
object->removeQuestionFromBlock($qid, $block_id);
899 if (
sizeof($block_questions) > 1) {
901 $this->
object->createQuestionblock(
909 $this->current_page++;
919 $pages = $this->
object->getSurveyPages();
920 $source = $pages[$this->current_page-1];
925 $target_block_id =
$target_id[
"questionblock_id"];
931 $block_id = array_shift($block_id);
932 $block_id = $block_id[
"questionblock_id"];
937 $this->
object->unfoldQuestionblocks(
array($block_id));
940 $this->
object->removeQuestionFromBlock($a_id, $block_id);
950 $this->
object->createQuestionblock(
958 $this->
object->addQuestionToBlock($a_id, $target_block_id);
963 $this->current_page++;
975 $pages = $this->
object->getSurveyPages();
976 $source = $pages[$this->current_page-1];
977 $target = $pages[$this->current_page-2];
981 $target_block_id =
$target_id[
"questionblock_id"];
987 $block_id = array_shift($block_id);
988 $block_id = $block_id[
"questionblock_id"];
993 $this->
object->unfoldQuestionblocks(
array($block_id));
996 $this->
object->removeQuestionFromBlock($a_id, $block_id);
1006 $this->
object->createQuestionblock(
1014 $this->
object->addQuestionToBlock($a_id, $target_block_id);
1017 $this->current_page--;
1030 $data = $this->
object->getSurveyQuestions();
1033 $q_gui =
$data[
"type_tag"] .
"GUI";
1034 $ilCtrl->setParameterByClass($q_gui,
"pgov", $this->current_page);
1035 $ilCtrl->setParameterByClass($q_gui,
"q_id", $a_id);
1037 $ilCtrl->redirectByClass($q_gui,
"editQuestion");
1049 include_once
"Services/Form/classes/class.ilPropertyFormGUI.php";
1051 $form->setFormAction(
$ilCtrl->getFormAction($this,
"addQuestionToolbar"));
1052 $form->setTitle(
$lng->txt(
"survey_add_new_question"));
1055 include_once
"./Modules/SurveyQuestionPool/classes/class.ilObjSurveyQuestionPool.php";
1057 $type_map =
array();
1058 foreach ($questiontypes as $trans => $item) {
1059 $type_map[$item[
"questiontype_id"]] = $trans;
1061 include_once(
"./Services/Form/classes/class.ilSelectInputGUI.php");
1063 $si->setOptions($type_map);
1066 $pages = $this->
object->getSurveyPages();
1068 $pages_drop =
array(
"fst"=>
$lng->txt(
"survey_at_beginning"));
1069 foreach ($pages as $idx => $questions) {
1070 $question = array_shift($questions);
1071 if ($question[
"questionblock_id"]) {
1072 $pages_drop[$idx+1] =
$lng->txt(
"survey_behind_page") .
" " . $question[
"questionblock_title"];
1074 $pages_drop[$idx+1] =
$lng->txt(
"survey_behind_page") .
" " . strip_tags($question[
"title"]);
1079 $form->addItem($pos);
1081 $pos->setValue($this->current_page);
1085 $pos->setValue(
"fst");
1086 $form->addItem($pos);
1089 if ($this->
object->isPoolActive()) {
1090 $this->editor_gui->createQuestionObject(
$form);
1093 $form->addCommandButton(
"addQuestionToolbar",
$lng->txt(
"create"));
1094 $form->addCommandButton(
"renderPage",
$lng->txt(
"cancel"));
1096 return $tpl->setContent(
$form->getHTML());
1107 $pool_active = $this->
object->isPoolActive();
1109 if (!
$_POST[
"usage"] && $pool_active) {
1115 $ilCtrl->setParameter($this->editor_gui,
"pgov", $this->current_page);
1131 include_once
"Services/Form/classes/class.ilPropertyFormGUI.php";
1133 $form->setFormAction(
$ilCtrl->getFormAction($this,
"movePage"));
1134 $form->setTitle(
$lng->txt(
"survey_move_page"));
1137 $old_pos->setValue($this->current_page);
1138 $form->addItem($old_pos);
1140 $pages = $this->
object->getSurveyPages();
1142 $pages_drop =
array();
1143 if ($this->current_page != 1) {
1144 $pages_drop[
"fst"] =
$lng->txt(
"survey_at_beginning");
1146 foreach ($pages as $idx => $questions) {
1147 if (($idx+1) != $this->current_page && ($idx+2) != $this->current_page) {
1148 $question = array_shift($questions);
1149 if ($question[
"questionblock_id"]) {
1150 $pages_drop[$idx+1] =
$lng->txt(
"survey_behind_page") .
" " . $question[
"questionblock_title"];
1152 $pages_drop[$idx+1] =
$lng->txt(
"survey_behind_page") .
" " . strip_tags($question[
"title"]);
1158 $form->addItem($pos);
1161 $form->addCommandButton(
"movePage",
$lng->txt(
"submit"));
1162 $form->addCommandButton(
"renderPage",
$lng->txt(
"cancel"));
1164 return $tpl->setContent(
$form->getHTML());
1177 $target_page = $this->current_page-1;
1178 $source_page = $_REQUEST[
"old_pos"]-1;
1180 $pages = $this->
object->getSurveyPages();
1181 foreach ($pages[$source_page] as $question) {
1182 $questions[] = $question[
"question_id"];
1187 if ($_REQUEST[
"pgov"] !=
"fst") {
1191 $target = $pages[$target_page];
1192 if ($position == 0) {
1197 $this->
object->moveQuestions($questions,
$target[
"question_id"], $position);
1199 if ($target_page < $source_page && $position) {
1200 $this->current_page++;
1204 $ilCtrl->setParameter($this,
"pgov", $this->current_page);
1205 $ilCtrl->redirect($this,
"renderPage");
1220 include_once
"Services/UIComponent/Button/classes/class.ilLinkButton.php";
1222 if (!$this->has_datasets) {
1224 $button->setCaption(
"survey_add_new_question");
1225 $button->setUrl(
$ilCtrl->getLinkTarget($this,
"addQuestionToolbarForm"));
1226 $ilToolbar->addStickyItem($button);
1228 if ($this->
object->isPoolActive()) {
1233 is_array($a_pages[$this->current_page-1])) {
1234 $last_on_page = $a_pages[$this->current_page-1];
1235 $last_on_page = array_pop($last_on_page);
1236 $last_on_page = $last_on_page[
"question_id"];
1239 $ilCtrl->setParameter($this->editor_gui,
"pgov", $this->current_page);
1240 $ilCtrl->setParameter($this->editor_gui,
"pgov_pos", $last_on_page .
"c");
1242 $cmd = (
$ilUser->getPref(
'svy_insert_type') == 1 ||
1243 strlen(
$ilUser->getPref(
'svy_insert_type')) == 0)
1244 ?
'browseForQuestions' 1245 :
'browseForQuestionblocks';
1248 $button->setCaption(
"browse_for_questions");
1249 $button->setUrl(
$ilCtrl->getLinkTarget($this->editor_gui, $cmd));
1250 $ilToolbar->addStickyItem($button);
1252 $ilCtrl->setParameter($this->editor_gui,
"pgov",
"");
1253 $ilCtrl->setParameter($this->editor_gui,
"pgov_pos",
"");
1257 $ilToolbar->addSeparator();
1265 $ilCtrl->setParameter($this,
"pg", $this->current_page-1);
1267 $button->setCaption(
"survey_prev_question");
1268 if ($this->has_previous_page) {
1269 $button->setUrl(
$ilCtrl->getLinkTarget($this,
"renderPage"));
1271 $button->setDisabled(!$this->has_previous_page);
1272 $ilToolbar->addStickyItem($button);
1274 $ilCtrl->setParameter($this,
"pg", $this->current_page+1);
1276 $button->setCaption(
"survey_next_question");
1277 if ($this->has_next_page) {
1278 $button->setUrl(
$ilCtrl->getLinkTarget($this,
"renderPage"));
1280 $button->setDisabled(!$this->has_next_page);
1281 $ilToolbar->addStickyItem($button);
1283 $ilCtrl->setParameter($this,
"pg", $this->current_page);
1285 foreach ($a_pages as $idx => $questions) {
1287 $page = array_shift($page);
1288 if ($page[
"questionblock_id"]) {
1289 $pages_drop[$idx+1] = $page[
"questionblock_title"];
1291 if (
sizeof($questions) > 1) {
1292 foreach ($questions as $question) {
1293 $pages_drop[($idx+1) .
"__" . $question[
"question_id"]] =
"- " . $question[
"title"];
1297 $pages_drop[$idx+1] = strip_tags($page[
"title"]);
1303 if (is_array($pages_drop) && count($pages_drop) > 1) {
1306 $ilToolbar->setFormAction(
$ilCtrl->getFormAction($this));
1308 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
1310 $si->addCustomAttribute(
"onChange=\"forms['ilToolbar'].submit();\"");
1311 $si->setOptions($pages_drop);
1312 $si->setValue($this->current_page);
1313 $ilToolbar->addInputItem(
$si,
true);
1317 $cmd->setValue(
"1");
1318 $ilToolbar->addInputItem($cmd);
1320 if (!$this->has_datasets) {
1321 $ilToolbar->addSeparator();
1323 $ilCtrl->setParameter($this,
"csum", md5(print_r($a_pages[$this->current_page-1],
true)));
1324 $url =
$ilCtrl->getLinkTarget($this,
"deleteBlock");
1325 $ilCtrl->setParameter($this,
"csum",
"");
1328 $button->setCaption(
"survey_delete_page");
1329 $button->setUrl(
$url);
1330 $ilToolbar->addButtonInstance($button);
1332 $ilToolbar->addSeparator();
1335 $button->setCaption(
"survey_move_page");
1336 $button->setUrl(
$ilCtrl->getLinkTarget($this,
"movePageForm"));
1337 $ilToolbar->addButtonInstance($button);
1352 $pages = $this->
object->getSurveyPages();
1353 $this->has_next_page = ($this->current_page <
sizeof($pages));
1354 $this->has_previous_page = ($this->current_page > 1);
1357 if ($this->has_datasets) {
1358 $link =
$ilCtrl->getLinkTargetByClass(
array(
"ilobjsurveygui",
"ilsurveyparticipantsgui"),
"maintenance");
1359 $link =
"<a href=\"" . $link .
"\">" .
$lng->txt(
"survey_has_datasets_warning_page_view_link") .
"</a>";
1363 $ilCtrl->setParameter($this,
"pg", $this->current_page);
1364 $ilCtrl->setParameter($this,
"pgov",
"");
1369 $ttpl =
new ilTemplate(
"tpl.il_svy_svy_page_view.html",
true,
true,
"Modules/Survey");
1370 $ttpl->setVariable(
"FORM_ACTION",
$ilCtrl->getFormAction($this));
1371 $lng->loadLanguageModule(
"form");
1373 $read_only = ($this->has_datasets || !
$rbacsystem->checkAccess(
"write", $this->ref_id));
1375 $commands = $multi_commands =
array();
1379 if (!
$_SESSION[
"survey_page_view"][$this->ref_id][
"clipboard"]) {
1380 $multi_commands[] =
array(
"cmd"=>
"multiDelete",
"text"=>
$lng->txt(
"delete"));
1381 $multi_commands[] =
array(
"cmd"=>
"multiCut",
"text"=>
$lng->txt(
"cut"));
1382 $multi_commands[] =
array(
"cmd"=>
"multiCopy",
"text"=>
$lng->txt(
"copy"));
1383 $multi_commands[] =
array(
"cmd"=>
"selectAll",
"text"=>
$lng->txt(
"select_all"));
1385 if (!$this->suppress_clipboard_msg) {
1388 $multi_commands[] =
array(
"cmd"=>
"clearClipboard",
"text"=>
$lng->txt(
"survey_dnd_clear_clipboard"));
1392 $lng->loadLanguageModule(
"content");
1393 $ttpl->setCurrentBlock(
"help_section");
1394 $ttpl->setVariable(
"TXT_ADD_EL",
$lng->txt(
"cont_add_elements"));
1395 include_once(
"./Services/UIComponent/Glyph/classes/class.ilGlyphGUI.php");
1398 $ttpl->setVariable(
"TXT_DRAG",
$lng->txt(
"cont_drag_and_drop_elements"));
1399 $ttpl->setVariable(
"TXT_SEL",
$lng->txt(
"cont_double_click_to_delete"));
1400 $ttpl->parseCurrentBlock();
1402 $ttpl->setVariable(
"DND_INIT_JS",
"initDragElements();");
1407 include_once
"./Services/AdvancedEditing/classes/class.ilObjAdvancedEditing.php";
1410 include_once
"./Services/RTE/classes/class.ilTinyMCE.php";
1412 $ttpl->setVariable(
"WYSIWYG_BLOCKFORMATS", $tiny->_buildAdvancedBlockformatsFromHTMLTags(
$tags));
1413 $ttpl->setVariable(
"WYSIWYG_VALID_ELEMENTS", $tiny->_getValidElementsFromHTMLTags(
$tags));
1415 $buttons_1 = $tiny->_buildAdvancedButtonsFromHTMLTags(1,
$tags);
1416 $buttons_2 = $tiny->_buildAdvancedButtonsFromHTMLTags(2,
$tags) .
',' .
1417 $tiny->_buildAdvancedTableButtonsFromHTMLTags(
$tags) .
1418 ($tiny->getStyleSelect() ?
',styleselect' :
'');
1419 $buttons_3 = $tiny->_buildAdvancedButtonsFromHTMLTags(3,
$tags);
1426 if (count($multi_commands) > 0) {
1427 foreach ($multi_commands as $cmd) {
1428 $ttpl->setCurrentBlock(
"multi_cmd");
1429 $ttpl->setVariable(
"ORG_CMD_MULTI",
"renderPage");
1430 $ttpl->setVariable(
"MULTI_CMD", $cmd[
"cmd"]);
1431 $ttpl->setVariable(
"MULTI_CMD_TXT", $cmd[
"text"]);
1432 $ttpl->parseCurrentBlock();
1435 $ttpl->setCurrentBlock(
"multi_cmds");
1436 $ttpl->setVariable(
"MCMD_ALT",
$lng->txt(
"commands"));
1438 $ttpl->parseCurrentBlock();
1443 $pages[$this->current_page-1],
1444 $this->has_previous_page,
1445 $this->has_next_page,
1449 $tpl->setContent($ttpl->get());
1452 include_once(
"./Services/YUI/classes/class.ilYuiUtil.php");
1454 $tpl->addJavascript(
"./Modules/Survey/js/SurveyPageView.js");
1455 $tpl->addJavascript(
"./Services/RTE/tiny_mce_3_5_11/tiny_mce_src.js");
1468 public function getPageNodes(
array $a_questions, $a_has_previous_page =
false, $a_has_next_page =
false, $a_readonly =
false)
1473 $ttpl =
new ilTemplate(
"tpl.il_svy_svy_page_view_nodes.html",
true,
true,
"Modules/Survey");
1475 $has_clipboard = (bool)
$_SESSION[
"survey_page_view"][$this->ref_id][
"clipboard"];
1479 $first_question = $a_questions;
1480 $first_question = array_shift($first_question);
1482 if ($first_question[
"questionblock_id"]) {
1485 if (!$a_readonly && !$has_clipboard) {
1486 $menu[] =
array(
"cmd" =>
"editBlock",
"text" =>
$lng->txt(
"edit"));
1489 if ($first_question[
"questionblock_show_blocktitle"]) {
1490 $block_status =
$lng->txt(
"survey_block_visible");
1492 $block_status =
$lng->txt(
"survey_block_hidden");
1498 $first_question[
"questionblock_id"],
1499 $first_question[
"questionblock_title"] .
" (" . $block_status .
")",
1510 include_once
"./Modules/SurveyQuestionPool/classes/class.ilObjSurveyQuestionPool.php";
1512 $questionpools = array_keys($this->
object->getQuestionpoolTitles(
true));
1516 foreach ($a_questions as $idx => $question) {
1522 if (!$has_clipboard) {
1523 foreach ($questiontypes as $trans => $item) {
1524 $menu[] =
array(
"cmd"=>
"addQuestion_" . $item[
"questiontype_id"],
1525 "text"=> sprintf(
$lng->txt(
"svy_page_add_question"), $trans));
1528 if ($this->
object->isPoolActive()) {
1529 $menu[] =
array(
"cmd"=>
"addPoolQuestion",
1530 "text"=>
$lng->txt(
"browse_for_questions"));
1533 $menu[] =
array(
"cmd" =>
"paste",
"text" =>
$lng->txt(
"survey_dnd_paste"));
1537 $this->
renderPageNode($ttpl,
"droparea", $question[
"question_id"], null, $menu,
true);
1540 $question_gui = $this->
object->getQuestionGUI($question[
"type_tag"], $question[
"question_id"]);
1541 $question_form = $question_gui->getWorkingForm(
1543 $this->
object->getShowQuestionTitles(),
1544 $question[
"questionblock_show_questiontext"],
1546 $this->
object->getSurveyId()
1551 if (!$a_readonly && !$has_clipboard) {
1552 $menu[] =
array(
"cmd" =>
"editQuestion",
"text" =>
$lng->txt(
"edit"));
1553 $menu[] =
array(
"cmd" =>
"cutQuestion",
"text" =>
$lng->txt(
"cut"));
1554 $menu[] =
array(
"cmd" =>
"copyQuestion",
"text" =>
$lng->txt(
"copy"));
1556 if (
sizeof($a_questions) > 1 && $idx > 0) {
1557 $menu[] =
array(
"cmd" =>
"splitPage",
"text" =>
$lng->txt(
"survey_dnd_split_page"));
1559 if ($a_has_next_page) {
1560 $menu[] =
array(
"cmd" =>
"moveNext",
"text" =>
$lng->txt(
"survey_dnd_move_next"));
1562 if ($a_has_previous_page) {
1563 $menu[] =
array(
"cmd" =>
"movePrevious",
"text" =>
$lng->txt(
"survey_dnd_move_previous"));
1566 $menu[] =
array(
"cmd" =>
"deleteQuestion",
"text" =>
$lng->txt(
"delete"));
1569 if ($question[
"heading"]) {
1570 $menu[] =
array(
"cmd" =>
"editHeading",
"text" =>
$lng->txt(
"survey_edit_heading"));
1571 $menu[] =
array(
"cmd" =>
"deleteHeading",
"text" =>
$lng->txt(
"survey_delete_heading"));
1573 $menu[] =
array(
"cmd" =>
"addHeading",
"text" =>
$lng->txt(
"add_heading"));
1577 if ($first_question[
"questionblock_show_questiontext"]) {
1578 $question_title_status =
$lng->txt(
"survey_question_text_visible");
1580 $question_title_status =
$lng->txt(
"survey_question_text_hidden");
1586 $question[
"question_id"],
1591 $question_title_status,
1592 $question[
"heading"]
1595 $ilCtrl->setParameter($this,
"eqid",
"");
1604 if (!$has_clipboard) {
1605 foreach ($questiontypes as $trans => $item) {
1606 $menu[] =
array(
"cmd"=>
"addQuestion_" . $item[
"questiontype_id"],
1607 "text"=> sprintf(
$lng->txt(
"svy_page_add_question"), $trans));
1610 if ($this->
object->isPoolActive()) {
1611 $menu[] =
array(
"cmd"=>
"addPoolQuestion",
1612 "text"=>
$lng->txt(
"browse_for_questions"));
1615 $menu[] =
array(
"cmd" =>
"paste",
"text" =>
$lng->txt(
"survey_dnd_paste"));
1621 return $ttpl->get();
1641 $node_id =
$a_type .
"_" . $a_id;
1646 foreach ($a_menu as $mcnt => $menu_item) {
1647 $ilCtrl->setParameter($this,
"il_hform_node", $node_id);
1648 $ilCtrl->setParameter($this,
"il_hform_subcmd", $menu_item[
"cmd"]);
1649 $url =
$ilCtrl->getLinkTarget($this,
"renderPage");
1650 $ilCtrl->setParameter($this,
"il_hform_subcmd",
"");
1651 $ilCtrl->setParameter($this,
"il_hform_node",
"");
1654 $a_tpl->
setVariable(
"TXT_MENU_CMD", $menu_item[
"text"]);
1661 include_once
"Services/UIComponent/Glyph/classes/class.ilGlyphGUI.php";
1665 } elseif ($a_menu) {
1667 foreach ($a_menu as $mcnt => $menu_item) {
1668 $ilCtrl->setParameter($this,
"il_hform_node", $node_id);
1669 $ilCtrl->setParameter($this,
"il_hform_subcmd", $menu_item[
"cmd"]);
1670 $url =
$ilCtrl->getLinkTarget($this,
"renderPage");
1671 $ilCtrl->setParameter($this,
"il_hform_subcmd",
"");
1672 $ilCtrl->setParameter($this,
"il_hform_node",
"");
1675 $a_tpl->
setVariable(
"TXT_ACTION_CMD", $menu_item[
"text"]);
1685 $a_content =
"<div class=\"questionheading\">" . $a_heading .
"</div>" .
1697 $selectable =
false;
1700 $caption =
$lng->txt(
"questionblock");
1704 $caption =
$lng->txt(
"question") .
": " . $a_subtitle;
1710 $caption =
$lng->txt(
"heading");
1718 $caption .=
" (" . $a_status .
")";
1743 return $lng->txt(
"survey_auto_block_title");
1751 if ($node ==
"page_end") {
1752 $pos = $this->
object->getSurveyPages();
1753 $pos = array_pop($pos[$this->current_page-1]);
1754 $pos = $pos[
"question_id"] .
"a";
1759 $ilCtrl->setParameter($this->editor_gui,
"pgov", $this->current_page);
1760 $ilCtrl->setParameter($this->editor_gui,
"pgov_pos", $pos);
1762 $cmd = (
$ilUser->getPref(
'svy_insert_type') == 1 || strlen(
$ilUser->getPref(
'svy_insert_type')) == 0) ?
'browseForQuestions' :
'browseForQuestionblocks';
1763 $ilCtrl->redirect($this->editor_gui, $cmd);
multiCopy($a_id)
Add questions to be copied to clipboard.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.
movePrevious($a_id)
Move question to previous page.
paste($a_id)
Paste from clipboard.
__construct(ilObjSurvey $a_survey, ilSurveyEditorGUI $a_survey_editor_gui)
Constructor.
static _hasDatasets($survey_id)
deleteQuestion($a_id)
Confirm removing question(s) from survey.
static _getUsedHTMLTags($a_module="")
Returns an array of all allowed HTML tags for text editing.
movePageForm()
Move current page.
addQuestion($a_type, $a_use_pool, $a_pos, $a_special_position)
Call add question to survey form.
if(!array_key_exists('StateId', $_REQUEST)) $id
static _isComplete($question_id)
Checks whether the question is complete or not.
static get($a_glyph, $a_text="")
Get glyph html.
getPageNodes(array $a_questions, $a_has_previous_page=false, $a_has_next_page=false, $a_readonly=false)
Get Form HTML.
editHeading($a_id)
Edit question heading.
clearClipboard()
Empty clipboard.
callEditor($a_cmd, $a_param, $a_value)
static _getQuestionGUI($questiontype, $question_id=-1)
Creates a question gui representation.
static removeRedundantSeparators($a_string)
Removes redundant seperators and removes ,, and , at the first or last position of the string...
addHeading($a_id)
Add heading to question.
addPoolQuestion($pos, $node)
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
setVariable($variable, $value='')
Sets a variable value.
addQuestionToolbar()
Add question to survey action (used in toolbar)
if(isset($_POST['submit'])) $form
multiCut($a_id)
Add questions to be cut to clipboard.
deleteHeading($a_id)
Delete question heading.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
touchBlock($block)
overwrites ITX::touchBlock.
special template class to simplify handling of ITX/PEAR
getAutoBlockTitle()
Get name for newly created blocks.
addQuestionToolbarForm()
Add question to survey form (used in toolbar)
static sendQuestion($a_info="", $a_keep=false)
Send Question to Screen.
Create styles array
The data for the language used.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
setCurrentBlock($part="DEFAULT")
Überladene Funktion, die sich hier lokal noch den aktuellen Block merkt.
insertQuestionBlock($a_block_id)
Copy and insert questions from block.
appendNewQuestionToSurvey($a_new_id, $a_duplicate=true, $a_force_duplicate=false)
Add new question to survey (database part)
Create new PHPExcel object
obj_idprivate
copyQuestion($a_id)
Add question to be copied to clipboard.
static initDragDrop()
Init YUI Drag and Drop.
static _getQuestiontypes()
Creates a list of all available question types.
editQuestion($a_id)
Edit question.
getRefId()
get reference id public
renderPageNode(ilTemplate $a_tpl, $a_type, $a_id, $a_content=null, array $a_menu=null, $a_spacer=false, $a_subtitle=false, $a_status=false, $a_heading=false)
Render single of dnd page view.
cutQuestion($a_id)
Add question to be cut to clipboard.
confirmRemoveQuestions()
Remove question(s) from survey.
static getLogger($a_component_id)
Get component logger.
insertNewQuestion($a_new_id)
Add new question to survey.
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
movePage()
Move current page to new position.
renderPage()
render questions per page
deleteBlock()
Confirm removing question block.
editBlock($a_id)
Edit question block.
moveNext($a_id)
Move question to next page.
splitPage($a_id)
Split current page in 2 pages.
parseCurrentBlock($part="DEFAULT")
Überladene Funktion, die auf den aktuelle Block vorher noch ein replace ausführt public...
dnd()
Move questions in page.
renderToolbar($a_pages)
Render toolbar form.
determineCurrentPage()
determine current page