ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
ilSurveyPageGUI Class Reference

Survey per page view. More...

+ Collaboration diagram for ilSurveyPageGUI:

Public Member Functions

 __construct (ilObjSurvey $a_survey, ilSurveyEditorGUI $a_survey_editor_gui)
 Constructor. More...
 
 executeCommand ()
 Routing. More...
 
 determineCurrentPage ()
 determine current page More...
 
 insertNewQuestion ($a_new_id)
 Add new question to survey. More...
 
 insertQuestionBlock ($a_block_id)
 Copy and insert questions from block. More...
 
 getPageNodes (array $a_questions, $a_has_previous_page=false, $a_has_next_page=false, $a_readonly=false)
 Get Form HTML. More...
 
 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. More...
 
 getAutoBlockTitle ()
 Get name for newly created blocks. More...
 
 addPoolQuestion ($pos, $node)
 

Protected Member Functions

 appendNewQuestionToSurvey ($a_new_id, $a_duplicate=true, $a_force_duplicate=false)
 Add new question to survey (database part) More...
 
 addQuestion ($a_type, $a_use_pool, $a_pos, $a_special_position)
 Call add question to survey form. More...
 
 cutQuestion ($a_id)
 Add question to be cut to clipboard. More...
 
 copyQuestion ($a_id)
 Add question to be copied to clipboard. More...
 
 multiCut ($a_id)
 Add questions to be cut to clipboard. More...
 
 multiCopy ($a_id)
 Add questions to be copied to clipboard. More...
 
 clearClipboard ()
 Empty clipboard. More...
 
 paste ($a_id)
 Paste from clipboard. More...
 
 dnd ()
 Move questions in page. More...
 
 deleteBlock ()
 Confirm removing question block. More...
 
 deleteQuestion ($a_id)
 Confirm removing question(s) from survey. More...
 
 confirmRemoveQuestions ()
 Remove question(s) from survey. More...
 
 editBlock ($a_id)
 Edit question block. More...
 
 addHeading ($a_id)
 Add heading to question. More...
 
 editHeading ($a_id)
 Edit question heading. More...
 
 deleteHeading ($a_id)
 Delete question heading. More...
 
 callEditor ($a_cmd, $a_param, $a_value)
 
 splitPage ($a_id)
 Split current page in 2 pages. More...
 
 moveNext ($a_id)
 Move question to next page. More...
 
 movePrevious ($a_id)
 Move question to previous page. More...
 
 editQuestion ($a_id)
 Edit question. More...
 
 addQuestionToolbarForm ()
 Add question to survey form (used in toolbar) More...
 
 addQuestionToolbar ()
 Add question to survey action (used in toolbar) More...
 
 movePageForm ()
 Move current page. More...
 
 movePage ()
 Move current page to new position. More...
 
 renderToolbar ($a_pages)
 Render toolbar form. More...
 
 renderPage ()
 render questions per page More...
 

Protected Attributes

 $ref_id
 
 $lng
 
 $object
 
 $editor_gui
 
 $current_page
 
 $has_previous_page
 
 $has_next_page
 
 $has_datasets
 
 $use_pool
 
 $log
 

Detailed Description

Survey per page view.

Author
Jörg Lützenkirchen <luetz.nosp@m.enki.nosp@m.rchen.nosp@m.@lei.nosp@m.fos.c.nosp@m.om
Version
Id
class.ilObjSurveyGUI.php 26720 2010-11-25 17:06:26Z jluetzen

ilSurveyPageGUI:

Definition at line 14 of file class.ilSurveyPageGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ilSurveyPageGUI::__construct ( ilObjSurvey  $a_survey,
ilSurveyEditorGUI  $a_survey_editor_gui 
)

Constructor.

Parameters
ilObjSurvey$a_survey
ilSurveyEditorGUI$a_survey_editor_gui

Definition at line 37 of file class.ilSurveyPageGUI.php.

References ilLoggerFactory\getLogger(), and ilObject\getRefId().

38  {
39  $this->editor_gui = $a_survey_editor_gui;
40  $this->ref_id = $a_survey->getRefId();
41  $this->object = $a_survey;
42  $this->log = ilLoggerFactory::getLogger("svy");
43  }
getRefId()
get reference id public
static getLogger($a_component_id)
Get component logger.
+ Here is the call graph for this function:

Member Function Documentation

◆ addHeading()

ilSurveyPageGUI::addHeading (   $a_id)
protected

Add heading to question.

Parameters
int$a_id

Definition at line 856 of file class.ilSurveyPageGUI.php.

References callEditor().

857  {
858  $this->callEditor("addHeadingObject", "q_id", $a_id);
859  return true;
860  }
callEditor($a_cmd, $a_param, $a_value)
+ Here is the call graph for this function:

◆ addPoolQuestion()

ilSurveyPageGUI::addPoolQuestion (   $pos,
  $node 
)

Definition at line 1831 of file class.ilSurveyPageGUI.php.

References $cmd, $ilCtrl, and $ilUser.

1832  {
1833  global $ilCtrl, $ilUser;
1834 
1835  if($node == "page_end")
1836  {
1837  $pos = $this->object->getSurveyPages();
1838  $pos = array_pop($pos[$this->current_page-1]);
1839  $pos = $pos["question_id"]."a";
1840  }
1841  else
1842  {
1843  $pos = $pos."b";
1844  }
1845 
1846  $ilCtrl->setParameter($this->editor_gui, "pgov", $this->current_page);
1847  $ilCtrl->setParameter($this->editor_gui, "pgov_pos", $pos);
1848 
1849  $cmd = ($ilUser->getPref('svy_insert_type') == 1 || strlen($ilUser->getPref('svy_insert_type')) == 0) ? 'browseForQuestions' : 'browseForQuestionblocks';
1850  $ilCtrl->redirect($this->editor_gui, $cmd);
1851  }
$cmd
Definition: sahs_server.php:35
global $ilCtrl
Definition: ilias.php:18
$ilUser
Definition: imgupload.php:18

◆ addQuestion()

ilSurveyPageGUI::addQuestion (   $a_type,
  $a_use_pool,
  $a_pos,
  $a_special_position 
)
protected

Call add question to survey form.

Parameters
int$a_typequestion type
bool$a_use_pooladd question to pool
int$a_postarget position
string$a_special_positionspecial positions (toolbar | page_end)

Definition at line 359 of file class.ilSurveyPageGUI.php.

References $_GET, $_POST, $a_type, $ilCtrl, SurveyQuestionGUI\_getQuestionGUI(), ilObjSurveyQuestionPool\_getQuestiontypes(), and object.

Referenced by addQuestionToolbar(), and executeCommand().

360  {
361  global $ilCtrl, $ilTabs;
362 
363  // get translated type
364  include_once "./Modules/SurveyQuestionPool/classes/class.ilObjSurveyQuestionPool.php";
366  foreach($questiontypes as $item)
367  {
368  if($item["questiontype_id"] == $a_type)
369  {
370  $type_trans = $item["type_tag"];
371  }
372  }
373 
374  $id = $a_pos;
375 
376  // new page behind current (from toolbar)
377  if($a_special_position == "toolbar")
378  {
379  $id = $this->object->getSurveyPages();
380  if($a_pos && $a_pos != "fst")
381  {
382  $id = $id[$a_pos-1];
383  $id = array_pop($id);
384  $id = $id["question_id"]."c";
385  }
386  else
387  {
388  $id = "0c";
389  }
390  }
391  // append current page
392  else if($a_special_position == "page_end")
393  {
394  $id = $this->object->getSurveyPages();
395  $id = $id[$this->current_page-1];
396  $id = array_pop($id);
397  $id = $id["question_id"]."a";
398  }
399  else
400  {
401  $id .= "b";
402  }
403 
404  if($a_use_pool)
405  {
406  $_GET["sel_question_types"] = $type_trans;
407  $_REQUEST["pgov_pos"] = $id;
408  $ilCtrl->setParameter($this->editor_gui, "pgov_pos", $id);
409  if(!$_POST["usage"])
410  {
411  $ilTabs->clearSubTabs(); // #17193
412  $this->editor_gui->createQuestionObject();
413  }
414  else
415  {
416  $this->editor_gui->executeCreateQuestionObject();
417  }
418  return true;
419  }
420  else
421  {
422  // create question and redirect to question form
423 
424  include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestionGUI.php";
425  $q_gui = SurveyQuestionGUI::_getQuestionGUI($type_trans);
426  $q_gui->object->setObjId($this->object->getId());
427  $q_gui->object->createNewQuestion();
428  $q_gui_class = get_class($q_gui);
429 
430  // #12531
431  $ilCtrl->setParameterByClass($q_gui_class, "pgov", $this->current_page);
432  $ilCtrl->setParameterByClass($q_gui_class, "pgov_pos",$id);
433  $ilCtrl->setParameterByClass($q_gui_class, "ref_id", $this->ref_id);
434  $ilCtrl->setParameterByClass($q_gui_class, "new_for_survey", $this->ref_id);
435  $ilCtrl->setParameterByClass($q_gui_class, "q_id", $q_gui->object->getId());
436  $ilCtrl->setParameterByClass($q_gui_class, "sel_question_types", $q_gui->getQuestionType());
437  $ilCtrl->redirectByClass($q_gui_class, "editQuestion");
438  }
439  }
$_GET["client_id"]
static _getQuestionGUI($questiontype, $question_id=-1)
Creates a question gui representation.
global $ilCtrl
Definition: ilias.php:18
$a_type
Definition: workflow.php:93
Create new PHPExcel object
obj_idprivate
static _getQuestiontypes()
Creates a list of all available question types.
$_POST["username"]
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ addQuestionToolbar()

ilSurveyPageGUI::addQuestionToolbar ( )
protected

Add question to survey action (used in toolbar)

Definition at line 1150 of file class.ilSurveyPageGUI.php.

References $_POST, $ilCtrl, $lng, addQuestion(), addQuestionToolbarForm(), renderPage(), and ilUtil\sendFailure().

1151  {
1152  global $ilCtrl, $lng;
1153 
1154  $pool_active = $this->object->isPoolActive();
1155 
1156  if(!$_POST["usage"] && $pool_active)
1157  {
1158  ilUtil::sendFailure($lng->txt("select_one"), true);
1159  return $this->addQuestionToolbarForm();
1160  }
1161 
1162  // make sure that it is set for current and next requests
1163  $ilCtrl->setParameter($this->editor_gui, "pgov", $this->current_page);
1164 
1165  if(!$this->addQuestion($_POST["qtype"], $pool_active, $_POST["pgov"], "toolbar"))
1166  {
1167  $this->renderPage();
1168  }
1169  }
addQuestion($a_type, $a_use_pool, $a_pos, $a_special_position)
Call add question to survey form.
global $ilCtrl
Definition: ilias.php:18
addQuestionToolbarForm()
Add question to survey form (used in toolbar)
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
renderPage()
render questions per page
$_POST["username"]
+ Here is the call graph for this function:

◆ addQuestionToolbarForm()

ilSurveyPageGUI::addQuestionToolbarForm ( )
protected

Add question to survey form (used in toolbar)

Definition at line 1084 of file class.ilSurveyPageGUI.php.

References $ilCtrl, $lng, $si, $tpl, ilObjSurveyQuestionPool\_getQuestiontypes(), array, object, and ilSelectInputGUI\setOptions().

Referenced by addQuestionToolbar().

1085  {
1086  global $lng, $ilCtrl, $tpl;
1087 
1088  include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
1089  $form = new ilPropertyFormGUI();
1090  $form->setFormAction($ilCtrl->getFormAction($this, "addQuestionToolbar"));
1091  $form->setTitle($lng->txt("survey_add_new_question"));
1092 
1093  // question types
1094  include_once "./Modules/SurveyQuestionPool/classes/class.ilObjSurveyQuestionPool.php";
1095  $questiontypes = ilObjSurveyQuestionPool::_getQuestiontypes();
1096  $type_map = array();
1097  foreach($questiontypes as $trans => $item)
1098  {
1099  $type_map[$item["questiontype_id"]] = $trans;
1100  }
1101  include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
1102  $si = new ilSelectInputGUI($lng->txt("question_type"), "qtype");
1103  $si->setOptions($type_map);
1104  $form->addItem($si);
1105 
1106  $pages = $this->object->getSurveyPages();
1107  if($pages)
1108  {
1109  $pages_drop = array("fst"=>$lng->txt("survey_at_beginning"));
1110  foreach($pages as $idx => $questions)
1111  {
1112  $question = array_shift($questions);
1113  if($question["questionblock_id"])
1114  {
1115  $pages_drop[$idx+1] = $lng->txt("survey_behind_page")." ".$question["questionblock_title"];
1116  }
1117  else
1118  {
1119  $pages_drop[$idx+1] = $lng->txt("survey_behind_page")." ".strip_tags($question["title"]);
1120  }
1121  }
1122  $pos = new ilSelectInputGUI($lng->txt("position"), "pgov");
1123  $pos->setOptions($pages_drop);
1124  $form->addItem($pos);
1125 
1126  $pos->setValue($this->current_page);
1127  }
1128  else
1129  {
1130  // #9089: 1st page
1131  $pos = new ilHiddenInputGUI("pgov");
1132  $pos->setValue("fst");
1133  $form->addItem($pos);
1134  }
1135 
1136  if($this->object->isPoolActive())
1137  {
1138  $this->editor_gui->createQuestionObject($form);
1139  }
1140 
1141  $form->addCommandButton("addQuestionToolbar", $lng->txt("create"));
1142  $form->addCommandButton("renderPage", $lng->txt("cancel"));
1143 
1144  return $tpl->setContent($form->getHTML());
1145  }
This class represents a selection list property in a property form.
This class represents a property form user interface.
global $tpl
Definition: ilias.php:8
global $ilCtrl
Definition: ilias.php:18
This class represents a hidden form property in a property form.
setOptions($a_options)
Set Options.
Create styles array
The data for the language used.
Create new PHPExcel object
obj_idprivate
static _getQuestiontypes()
Creates a list of all available question types.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ appendNewQuestionToSurvey()

ilSurveyPageGUI::appendNewQuestionToSurvey (   $a_new_id,
  $a_duplicate = true,
  $a_force_duplicate = false 
)
protected

Add new question to survey (database part)

Parameters
int$a_new_id
bool$a_duplicate
Todo:
: move out of GUI class, see also ilObjSurvey->insertQuestion

Definition at line 163 of file class.ilSurveyPageGUI.php.

References $ilDB, $result, array, object, and time.

Referenced by insertNewQuestion(), insertQuestionBlock(), and paste().

164  {
165  global $ilDB;
166 
167  $this->log->debug("append question, id: ".$a_new_id.", duplicate: ".$a_duplicate.", force: ".$a_force_duplicate);
168 
169  // get maximum sequence index in test
170  $result = $ilDB->queryF("SELECT survey_question_id FROM svy_svy_qst WHERE survey_fi = %s",
171  array('integer'),
172  array($this->object->getSurveyId())
173  );
174  $sequence = $result->numRows();
175 
176  // create duplicate if pool question (or forced for question blocks copy)
177  if($a_duplicate)
178  {
179  // this does nothing if this is not a pool question and $a_force_duplicate is false
180  $survey_question_id = $this->object->duplicateQuestionForSurvey($a_new_id, $a_force_duplicate);
181  }
182  // used by copy & paste
183  else
184  {
185  $survey_question_id = $a_new_id;
186  }
187 
188  // check if question is not already in the survey, see #22018
189  if ($this->object->isQuestionInSurvey($survey_question_id))
190  {
191  return $survey_question_id;
192  }
193 
194  // append to survey
195  $next_id = $ilDB->nextId('svy_svy_qst');
196  $affectedRows = $ilDB->manipulateF("INSERT INTO svy_svy_qst (survey_question_id, survey_fi,".
197  "question_fi, sequence, tstamp) VALUES (%s, %s, %s, %s, %s)",
198  array('integer', 'integer', 'integer', 'integer', 'integer'),
199  array($next_id, $this->object->getSurveyId(), $survey_question_id, $sequence, time())
200  );
201 
202  $this->log->debug("insert svy_svy_qst, id: ".$next_id.", qfi: ".$survey_question_id.", seq: ".$sequence);
203 
204  return $survey_question_id;
205  }
$result
Create styles array
The data for the language used.
Create new PHPExcel object
obj_idprivate
global $ilDB
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
+ Here is the caller graph for this function:

◆ callEditor()

ilSurveyPageGUI::callEditor (   $a_cmd,
  $a_param,
  $a_value 
)
protected

Definition at line 884 of file class.ilSurveyPageGUI.php.

References array.

Referenced by addHeading(), deleteHeading(), editBlock(), and editHeading().

885  {
886  global $ilTabs;
887 
888  $ilTabs->clearSubTabs();
889  $_REQUEST[$a_param] = $a_value;
890 
891  call_user_func(array($this->editor_gui, $a_cmd));
892  }
Create styles array
The data for the language used.
+ Here is the caller graph for this function:

◆ clearClipboard()

ilSurveyPageGUI::clearClipboard ( )
protected

Empty clipboard.

Definition at line 522 of file class.ilSurveyPageGUI.php.

References $_SESSION, and $ref_id.

Referenced by paste().

523  {
524  $_SESSION["survey_page_view"][$this->ref_id]["clipboard"] = null;
525  }
$_SESSION["AccountId"]
+ Here is the caller graph for this function:

◆ confirmRemoveQuestions()

ilSurveyPageGUI::confirmRemoveQuestions ( )
protected

Remove question(s) from survey.

Definition at line 772 of file class.ilSurveyPageGUI.php.

References $_POST, $ilCtrl, and array.

773  {
774  global $ilCtrl;
775 
776  // gather ids
777  $ids = array();
778  foreach ($_POST as $key => $value)
779  {
780  if (preg_match("/id_(\d+)/", $key, $matches))
781  {
782  array_push($ids, $matches[1]);
783  }
784  }
785 
786 
787  $pages = $this->object->getSurveyPages();
788  $source = $pages[$this->current_page-1];
789 
790  $block_id = $source;
791  $block_id = array_shift($block_id);
792  $block_id = $block_id["questionblock_id"];
793 
794  if(sizeof($ids) && sizeof($source) > sizeof($ids))
795  {
796  // block is obsolete
797  if(sizeof($source)-sizeof($ids) == 1)
798  {
799  $this->object->unfoldQuestionblocks(array($block_id));
800  }
801  // block will remain, remove question(s) from block
802  else
803  {
804  foreach($ids as $qid)
805  {
806  $this->object->removeQuestionFromBlock($qid, $block_id);
807  }
808  }
809 
810  $this->object->removeQuestions($ids, array());
811  }
812  // all items on page
813  else
814  {
815  // remove complete block
816  if($block_id)
817  {
818  $this->object->removeQuestions(array(), array($block_id));
819  }
820  // remove single question
821  else
822  {
823  $this->object->removeQuestions($ids, array());
824  }
825 
826  // render previous page
827  if($this->current_page > 1)
828  {
829  $this->current_page--;
830  }
831  }
832 
833  $this->object->saveCompletionStatus();
834 
835  // #10567
836  $ilCtrl->setParameter($this, "pgov", $this->current_page);
837  $ilCtrl->redirect($this, "renderPage");
838  }
global $ilCtrl
Definition: ilias.php:18
Create styles array
The data for the language used.
$_POST["username"]

◆ copyQuestion()

ilSurveyPageGUI::copyQuestion (   $a_id)
protected

Add question to be copied to clipboard.

Parameters
int$a_idquestion id

Definition at line 464 of file class.ilSurveyPageGUI.php.

References $_SESSION, $lng, $ref_id, array, and ilUtil\sendSuccess().

465  {
466  global $lng;
467 
468  ilUtil::sendSuccess($lng->txt("survey_questions_to_clipboard_copy"));
469  $this->suppress_clipboard_msg = true;
470 
471  $_SESSION["survey_page_view"][$this->ref_id]["clipboard"] = array(
472  "source" => $this->current_page,
473  "nodes" => array($a_id),
474  "mode" => "copy");
475  }
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
$_SESSION["AccountId"]
Create styles array
The data for the language used.
+ Here is the call graph for this function:

◆ cutQuestion()

ilSurveyPageGUI::cutQuestion (   $a_id)
protected

Add question to be cut to clipboard.

Parameters
int$a_idquestion id

Definition at line 446 of file class.ilSurveyPageGUI.php.

References $_SESSION, $lng, $ref_id, array, and ilUtil\sendSuccess().

447  {
448  global $lng;
449 
450  ilUtil::sendSuccess($lng->txt("survey_questions_to_clipboard_cut"));
451  $this->suppress_clipboard_msg = true;
452 
453  $_SESSION["survey_page_view"][$this->ref_id]["clipboard"] = array(
454  "source" => $this->current_page,
455  "nodes" => array($a_id),
456  "mode" => "cut");
457  }
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
$_SESSION["AccountId"]
Create styles array
The data for the language used.
+ Here is the call graph for this function:

◆ deleteBlock()

ilSurveyPageGUI::deleteBlock ( )
protected

Confirm removing question block.

Parameters
int$a_id

Definition at line 722 of file class.ilSurveyPageGUI.php.

References $ilCtrl, $lng, array, and ilUtil\sendQuestion().

723  {
724  global $lng, $ilCtrl;
725 
726  $ilCtrl->setParameter($this->editor_gui, "pgov", $this->current_page);
727  ilUtil::sendQuestion($lng->txt("remove_questions"));
728 
729  $page = $this->object->getSurveyPages();
730  $page = $page[$this->current_page-1];
731 
732  // #10567
733  if($_REQUEST["csum"] != md5(print_r($page, true)))
734  {
735  $ilCtrl->redirect($this, "renderPage");
736  }
737 
738  $page = array_shift($page);
739  $block_id = $page["questionblock_id"];
740  if($block_id)
741  {
742  $this->editor_gui->removeQuestionsForm(array($block_id), array(), array());
743  }
744  else
745  {
746  $this->editor_gui->removeQuestionsForm(array(), array($page["question_id"]), array());
747  }
748  }
global $ilCtrl
Definition: ilias.php:18
static sendQuestion($a_info="", $a_keep=false)
Send Question to Screen.
Create styles array
The data for the language used.
+ Here is the call graph for this function:

◆ deleteHeading()

ilSurveyPageGUI::deleteHeading (   $a_id)
protected

Delete question heading.

Parameters
int$a_id

Definition at line 878 of file class.ilSurveyPageGUI.php.

References callEditor().

879  {
880  $this->callEditor("removeHeadingObject", "q_id", $a_id);
881  return true;
882  }
callEditor($a_cmd, $a_param, $a_value)
+ Here is the call graph for this function:

◆ deleteQuestion()

ilSurveyPageGUI::deleteQuestion (   $a_id)
protected

Confirm removing question(s) from survey.

Parameters
int | array$a_id

Definition at line 755 of file class.ilSurveyPageGUI.php.

References $ilCtrl, and array.

756  {
757  global $ilCtrl;
758 
759  if(!is_array($a_id))
760  {
761  $a_id = array($a_id);
762  }
763 
764  $ilCtrl->setParameter($this->editor_gui, "pgov", $this->current_page);
765  $this->editor_gui->removeQuestionsForm(array(), $a_id, array());
766  return true;
767  }
global $ilCtrl
Definition: ilias.php:18
Create styles array
The data for the language used.

◆ determineCurrentPage()

ilSurveyPageGUI::determineCurrentPage ( )

determine current page

Definition at line 138 of file class.ilSurveyPageGUI.php.

References $current_page.

Referenced by executeCommand().

139  {
140  $current_page = (int)$_REQUEST["jump"];
141  if(!$current_page)
142  {
143  $current_page = (int)$_REQUEST["pgov"];
144  }
145  if(!$current_page)
146  {
147  $current_page = (int)$_REQUEST["pg"];
148  }
149  if(!$current_page)
150  {
151  $current_page = 1;
152  }
153  $this->current_page = $current_page;
154  }
+ Here is the caller graph for this function:

◆ dnd()

ilSurveyPageGUI::dnd ( )
protected

Move questions in page.

Definition at line 696 of file class.ilSurveyPageGUI.php.

References $target_id, and array.

697  {
698  $source_id = (int)array_pop(explode("_", $_REQUEST["il_hform_source"]));
699  if($_REQUEST["il_hform_target"] != "droparea_end")
700  {
701  $target_id = (int)array_pop(explode("_", $_REQUEST["il_hform_target"]));
702  $pos = 0;
703  }
704  else
705  {
706  $page = $this->object->getSurveyPages();
707  $page = $page[$this->current_page-1];
708  $last = array_pop($page);
709  $target_id = (int)$last["question_id"];
710  $pos = 1;
711  }
712  if($source_id != $target_id)
713  {
714  $this->object->moveQuestions(array($source_id), $target_id, $pos);
715  }
716  }
$target_id
Definition: goto.php:51
Create styles array
The data for the language used.

◆ editBlock()

ilSurveyPageGUI::editBlock (   $a_id)
protected

Edit question block.

Parameters
int$a_id

Definition at line 845 of file class.ilSurveyPageGUI.php.

References callEditor().

846  {
847  $this->callEditor("editQuestionblockObject", "bl_id", $a_id);
848  return true;
849  }
callEditor($a_cmd, $a_param, $a_value)
+ Here is the call graph for this function:

◆ editHeading()

ilSurveyPageGUI::editHeading (   $a_id)
protected

Edit question heading.

Parameters
int$a_id

Definition at line 867 of file class.ilSurveyPageGUI.php.

References callEditor().

868  {
869  $this->callEditor("editHeadingObject", "q_id", $a_id);
870  return true;
871  }
callEditor($a_cmd, $a_param, $a_value)
+ Here is the call graph for this function:

◆ editQuestion()

ilSurveyPageGUI::editQuestion (   $a_id)
protected

Edit question.

Parameters
int$a_id

Definition at line 1067 of file class.ilSurveyPageGUI.php.

References $data, and $ilCtrl.

1068  {
1069  global $ilCtrl;
1070 
1071  $data = $this->object->getSurveyQuestions();
1072  $data = $data[$a_id];
1073 
1074  $q_gui = $data["type_tag"]."GUI";
1075  $ilCtrl->setParameterByClass($q_gui, "pgov", $this->current_page);
1076  $ilCtrl->setParameterByClass($q_gui, "q_id", $a_id);
1077 
1078  $ilCtrl->redirectByClass($q_gui, "editQuestion");
1079  }
global $ilCtrl
Definition: ilias.php:18

◆ executeCommand()

ilSurveyPageGUI::executeCommand ( )

Routing.

Definition at line 48 of file class.ilSurveyPageGUI.php.

References $cmd, $current_page, $ilCtrl, $lng, addQuestion(), array, determineCurrentPage(), insertNewQuestion(), object, and ilUtil\sendFailure().

49  {
50  global $lng, $ilCtrl, $rbacsystem;
51 
52  $cmd = $ilCtrl->getCmd("renderPage");
53  $next_class = $ilCtrl->getNextClass($this);
54 
55  switch($next_class)
56  {
57  default:
58  $this->determineCurrentPage();
59 
60  $has_content = false;
61 
62  if($rbacsystem->checkAccess("write", $this->ref_id))
63  {
64  // add page?
65  if($_REQUEST["new_id"])
66  {
67  $this->insertNewQuestion($_REQUEST["new_id"]);
68  }
69 
70  // subcommands
71  if($_REQUEST["il_hform_subcmd"])
72  {
73  $subcmd = $_REQUEST["il_hform_subcmd"];
74 
75  // make sure that it is set for current and next requests
76  $ilCtrl->setParameter($this->editor_gui, "pgov", $this->current_page);
77  $_REQUEST["pgov"] = $this->current_page;
78 
79  $id = explode("_", $_REQUEST["il_hform_node"]);
80  $id = (int)$id[1];
81 
82  // multi operation
83  if(substr($_REQUEST["il_hform_subcmd"], 0, 5) == "multi")
84  {
85  if($_REQUEST["il_hform_multi"])
86  {
87  // removing types as we only allow questions anyway
88  $id = array();
89  foreach(explode(";", $_REQUEST["il_hform_multi"]) as $item)
90  {
91  $id[] = (int)array_pop(explode("_", $item));
92  }
93 
94  if($subcmd == "multiDelete")
95  {
96  $subcmd = "deleteQuestion";
97  }
98  }
99  else
100  {
101  // #9525
102  if($subcmd == "multiDelete")
103  {
104  ilUtil::sendFailure($lng->txt("no_checkbox"), true);
105  $ilCtrl->redirect($this, "renderPage");
106  }
107  else
108  {
109  ilUtil::sendFailure($lng->txt("no_checkbox"));
110  }
111  }
112  }
113 
114  if(substr($subcmd, 0, 11) == "addQuestion")
115  {
116  $type = explode("_", $subcmd);
117  $type = (int)$type[1];
118  $has_content = $this->addQuestion($type, $this->object->isPoolActive(), $id, $_REQUEST["il_hform_node"]);
119  }
120  else
121  {
122  $has_content = $this->$subcmd($id, $_REQUEST["il_hform_node"]);
123  }
124  }
125  }
126 
127  if(!$has_content)
128  {
129  $this->$cmd();
130  }
131  break;
132  }
133  }
$cmd
Definition: sahs_server.php:35
addQuestion($a_type, $a_use_pool, $a_pos, $a_special_position)
Call add question to survey form.
global $ilCtrl
Definition: ilias.php:18
Create styles array
The data for the language used.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
Create new PHPExcel object
obj_idprivate
insertNewQuestion($a_new_id)
Add new question to survey.
determineCurrentPage()
determine current page
+ Here is the call graph for this function:

◆ getAutoBlockTitle()

ilSurveyPageGUI::getAutoBlockTitle ( )

Get name for newly created blocks.

Returns
string

Definition at line 1824 of file class.ilSurveyPageGUI.php.

References $lng.

Referenced by insertNewQuestion(), insertQuestionBlock(), moveNext(), movePrevious(), paste(), and splitPage().

1825  {
1826  global $lng;
1827 
1828  return $lng->txt("survey_auto_block_title");
1829  }
+ Here is the caller graph for this function:

◆ getPageNodes()

ilSurveyPageGUI::getPageNodes ( array  $a_questions,
  $a_has_previous_page = false,
  $a_has_next_page = false,
  $a_readonly = false 
)

Get Form HTML.

Parameters
array$questions
bool$a_has_previous_page
bool$a_has_next_page
bool$a_readonly
Returns
string

Definition at line 1535 of file class.ilSurveyPageGUI.php.

References $_SESSION, $counter, $ilCtrl, $lng, ilObjSurveyQuestionPool\_getQuestiontypes(), array, object, and renderPageNode().

Referenced by renderPage().

1536  {
1537  global $ilCtrl, $lng;
1538 
1539  $ttpl = new ilTemplate("tpl.il_svy_svy_page_view_nodes.html", true, true, "Modules/Survey");
1540 
1541  $has_clipboard = (bool)$_SESSION["survey_page_view"][$this->ref_id]["clipboard"];
1542 
1543  // question block ?
1544 
1545  $first_question = $a_questions;
1546  $first_question = array_shift($first_question);
1547 
1548  if($first_question["questionblock_id"])
1549  {
1550  $menu = array();
1551 
1552  if(!$a_readonly && !$has_clipboard)
1553  {
1554  $menu[] = array("cmd" => "editBlock", "text" => $lng->txt("edit"));
1555  }
1556 
1557  if($first_question["questionblock_show_blocktitle"])
1558  {
1559  $block_status = $lng->txt("survey_block_visible");
1560  }
1561  else
1562  {
1563  $block_status = $lng->txt("survey_block_hidden");
1564  }
1565 
1566  $this->renderPageNode($ttpl, "block", $first_question["questionblock_id"],
1567  $first_question["questionblock_title"]." (".$block_status.")", $menu, false, false, $block_status);
1568  }
1569 
1570 
1571  // questions/headings
1572 
1573  include_once "./Modules/SurveyQuestionPool/classes/class.ilObjSurveyQuestionPool.php";
1574  $questiontypes = ilObjSurveyQuestionPool::_getQuestiontypes();
1575  $questionpools = array_keys($this->object->getQuestionpoolTitles(true));
1576 
1577  $counter = $question_count;
1578  $block_done = null;
1579  foreach($a_questions as $idx => $question)
1580  {
1581  // drop area
1582 
1583  $menu = array();
1584 
1585  if(!$a_readonly)
1586  {
1587  if(!$has_clipboard)
1588  {
1589  foreach($questiontypes as $trans => $item)
1590  {
1591  $menu[] = array("cmd"=> "addQuestion_".$item["questiontype_id"],
1592  "text"=> sprintf($lng->txt("svy_page_add_question"), $trans));
1593  }
1594 
1595  if($this->object->isPoolActive())
1596  {
1597  $menu[] = array("cmd"=> "addPoolQuestion",
1598  "text"=> $lng->txt("browse_for_questions"));
1599  }
1600  }
1601  else
1602  {
1603  $menu[] = array("cmd" => "paste", "text" => $lng->txt("survey_dnd_paste"));
1604  }
1605  }
1606 
1607  $this->renderPageNode($ttpl, "droparea", $question["question_id"], null, $menu, true);
1608 
1609  // question
1610  $question_gui = $this->object->getQuestionGUI($question["type_tag"], $question["question_id"]);
1611  $question_form = $question_gui->getWorkingForm(array(), $this->object->getShowQuestionTitles(),
1612  $question["questionblock_show_questiontext"], null, $this->object->getSurveyId());
1613 
1614  $menu = array();
1615 
1616  if(!$a_readonly && !$has_clipboard)
1617  {
1618  $menu[] = array("cmd" => "editQuestion", "text" => $lng->txt("edit"));
1619  $menu[] = array("cmd" => "cutQuestion", "text" => $lng->txt("cut"));
1620  $menu[] = array("cmd" => "copyQuestion", "text" => $lng->txt("copy"));
1621 
1622  if(sizeof($a_questions) > 1 && $idx > 0)
1623  {
1624  $menu[] = array("cmd" => "splitPage", "text" => $lng->txt("survey_dnd_split_page"));
1625  }
1626  if($a_has_next_page)
1627  {
1628  $menu[] = array("cmd" => "moveNext", "text" => $lng->txt("survey_dnd_move_next"));
1629  }
1630  if($a_has_previous_page)
1631  {
1632  $menu[] = array("cmd" => "movePrevious", "text" => $lng->txt("survey_dnd_move_previous"));
1633  }
1634 
1635  $menu[] = array("cmd" => "deleteQuestion", "text" => $lng->txt("delete"));
1636 
1637  // heading
1638  if($question["heading"])
1639  {
1640  $menu[] = array("cmd" => "editHeading", "text" => $lng->txt("survey_edit_heading"));
1641  $menu[] = array("cmd" => "deleteHeading", "text" => $lng->txt("survey_delete_heading"));
1642  }
1643  else
1644  {
1645  $menu[] = array("cmd" => "addHeading", "text" => $lng->txt("add_heading"));
1646  }
1647  }
1648 
1649  if($first_question["questionblock_show_questiontext"])
1650  {
1651  $question_title_status = $lng->txt("survey_question_text_visible");
1652  }
1653  else
1654  {
1655  $question_title_status = $lng->txt("survey_question_text_hidden");
1656  }
1657 
1658  $this->renderPageNode($ttpl, "question", $question["question_id"], $question_form, $menu,
1659  false, $question["title"], $question_title_status, $question["heading"]);
1660 
1661  $ilCtrl->setParameter($this, "eqid", "");
1662  }
1663 
1664 
1665  // last position (no question id)
1666 
1667  $menu = array();
1668 
1669  if(!$a_readonly)
1670  {
1671  if(!$has_clipboard)
1672  {
1673  foreach($questiontypes as $trans => $item)
1674  {
1675  $menu[] = array("cmd"=> "addQuestion_".$item["questiontype_id"],
1676  "text"=> sprintf($lng->txt("svy_page_add_question"), $trans));
1677  }
1678 
1679  if($this->object->isPoolActive())
1680  {
1681  $menu[] = array("cmd"=> "addPoolQuestion",
1682  "text"=> $lng->txt("browse_for_questions"));
1683  }
1684  }
1685  else
1686  {
1687  $menu[] = array("cmd" => "paste", "text" => $lng->txt("survey_dnd_paste"));
1688  }
1689  }
1690 
1691  $this->renderPageNode($ttpl, "page", "end", null, $menu, true);
1692 
1693  return $ttpl->get();
1694  }
$_SESSION["AccountId"]
global $ilCtrl
Definition: ilias.php:18
$counter
special template class to simplify handling of ITX/PEAR
Create styles array
The data for the language used.
Create new PHPExcel object
obj_idprivate
static _getQuestiontypes()
Creates a list of all available question types.
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.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ insertNewQuestion()

ilSurveyPageGUI::insertNewQuestion (   $a_new_id)

Add new question to survey.

Parameters
int$a_new_id

Definition at line 212 of file class.ilSurveyPageGUI.php.

References $ilDB, $lng, SurveyQuestion\_isComplete(), appendNewQuestionToSurvey(), array, getAutoBlockTitle(), and ilUtil\sendFailure().

Referenced by executeCommand().

213  {
214  global $rbacsystem, $ilDB, $lng;
215 
216  include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
217  if (!SurveyQuestion::_isComplete($a_new_id))
218  {
219  ilUtil::sendFailure($lng->txt("survey_error_insert_incomplete_question"));
220  }
221  else
222  {
223  $a_new_id = $this->appendNewQuestionToSurvey($a_new_id);
224  $this->object->loadQuestionsFromDb();
225 
226  $pos = $_REQUEST["pgov_pos"];
227 
228  // a[fter]/b[efore] on same page
229  if(substr($pos, -1) != "c")
230  {
231  // block handling
232  $current = $this->object->getSurveyPages();
233  $current = $current[$this->current_page-1];
234  if(sizeof($current) == 1)
235  {
236  // as questions are moved to first block question
237  // always use existing as first
238  // the new question is moved later on (see below)
239  $this->object->createQuestionblock($this->getAutoBlockTitle(), true, false,
240  array((int)$pos, $a_new_id));
241  }
242  else
243  {
244  $block_id = array_pop($current);
245  $block_id = $block_id["questionblock_id"];
246 
247  $this->object->addQuestionToBlock($a_new_id, $block_id);
248  }
249  }
250  // c: as new page (from toolbar/pool)
251  else
252  {
253  // after given question
254  if((int)$pos)
255  {
256  $pos = (int)$pos."a";
257  $this->current_page++;
258  }
259  // at the beginning
260  else
261  {
262  $first = $this->object->getSurveyPages();
263  $first = $first[0];
264  $first = array_shift($first);
265  $pos = $first["question_id"]."b";
266  $this->current_page = 1;
267  }
268  }
269 
270  // move to target position
271  $this->object->moveQuestions(array($a_new_id), (int)$pos,
272  ((substr($pos, -1) == "a") ? 1 : 0));
273 
274  $this->object->fixSequenceStructure();
275  }
276  }
static _isComplete($question_id)
Checks whether the question is complete or not.
getAutoBlockTitle()
Get name for newly created blocks.
Create styles array
The data for the language used.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
appendNewQuestionToSurvey($a_new_id, $a_duplicate=true, $a_force_duplicate=false)
Add new question to survey (database part)
global $ilDB
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ insertQuestionBlock()

ilSurveyPageGUI::insertQuestionBlock (   $a_block_id)

Copy and insert questions from block.

Parameters
int$a_block_id

Definition at line 283 of file class.ilSurveyPageGUI.php.

References appendNewQuestionToSurvey(), array, and getAutoBlockTitle().

284  {
285  $new_ids = array();
286  $question_ids = $this->object->getQuestionblockQuestionIds($a_block_id);
287  foreach($question_ids as $qid)
288  {
289  $new_ids[] = $this->appendNewQuestionToSurvey($qid, true, true);
290  }
291 
292  if(sizeof($new_ids))
293  {
294  $this->object->loadQuestionsFromDb();
295 
296  $pos = $_REQUEST["pgov_pos"];
297 
298  // a[fter]/b[efore] on same page
299  if(substr($pos, -1) != "c")
300  {
301  // block handling
302  $current = $this->object->getSurveyPages();
303  $current = $current[$this->current_page-1];
304  if(sizeof($current) == 1)
305  {
306  // as questions are moved to first block question
307  // always use existing as first
308  // the new question is moved later on (see below)
309  $this->object->createQuestionblock($this->getAutoBlockTitle(), true, false,
310  array((int)$pos)+$new_ids);
311  }
312  else
313  {
314  $block_id = array_pop($current);
315  $block_id = $block_id["questionblock_id"];
316 
317  foreach($new_ids as $qid)
318  {
319  $this->object->addQuestionToBlock($qid, $block_id);
320  }
321  }
322  }
323  // c: as new page (from toolbar/pool)
324  else
325  {
326  // re-create block
327  $this->object->createQuestionblock($this->getAutoBlockTitle(), true, false,
328  $new_ids);
329 
330  // after given question
331  if((int)$pos)
332  {
333  $pos = (int)$pos."a";
334  }
335  // at the beginning
336  else
337  {
338  $first = $this->object->getSurveyPages();
339  $first = $first[0];
340  $first = array_shift($first);
341  $pos = $first["question_id"]."b";
342  }
343  }
344 
345  // move to target position
346  $this->object->moveQuestions($new_ids, (int)$pos,
347  ((substr($pos, -1) == "a") ? 1 : 0));
348  }
349  }
getAutoBlockTitle()
Get name for newly created blocks.
Create styles array
The data for the language used.
appendNewQuestionToSurvey($a_new_id, $a_duplicate=true, $a_force_duplicate=false)
Add new question to survey (database part)
+ Here is the call graph for this function:

◆ moveNext()

ilSurveyPageGUI::moveNext (   $a_id)
protected

Move question to next page.

Parameters
int$a_id

Definition at line 949 of file class.ilSurveyPageGUI.php.

References $current_page, $target, $target_id, array, and getAutoBlockTitle().

950  {
951  $pages = $this->object->getSurveyPages();
952  $source = $pages[$this->current_page-1];
953  $target = $pages[$this->current_page];
954  if(sizeof($target))
955  {
957  $target_id = array_shift($target_id);
958  $target_block_id = $target_id["questionblock_id"];
959  $target_id = $target_id["question_id"];
960 
961  // nothing to do if no block
962  if(sizeof($source) > 1)
963  {
964  $block_id = $source;
965  $block_id = array_shift($block_id);
966  $block_id = $block_id["questionblock_id"];
967 
968  // source pages block is obsolete
969  if(sizeof($source) == 2)
970  {
971  // delete block
972  $this->object->unfoldQuestionblocks(array($block_id));
973  }
974  else
975  {
976  // remove question from block
977  $this->object->removeQuestionFromBlock($a_id, $block_id);
978  }
979  }
980 
981  // move source question to target
982  $this->object->moveQuestions(array($a_id), $target_id, 0);
983 
984  // new page has no block yet
985  if(sizeof($target) < 2)
986  {
987  // create block and move target question and source into block
988  $this->object->createQuestionblock($this->getAutoBlockTitle(), true, false,
989  array($a_id, $target_id));
990  }
991  else
992  {
993  // add source question to block
994  $this->object->addQuestionToBlock($a_id, $target_block_id);
995  }
996 
997  // only if current page is not "deleted"
998  if(sizeof($source) > 1)
999  {
1000  $this->current_page++;
1001  }
1002  }
1003  }
$target_id
Definition: goto.php:51
getAutoBlockTitle()
Get name for newly created blocks.
Create styles array
The data for the language used.
+ Here is the call graph for this function:

◆ movePage()

ilSurveyPageGUI::movePage ( )
protected

Move current page to new position.

Todo:
this needs to be refactored outside of a GUI class, same with ilSurveyEditorGUI->insertQuestions

Definition at line 1225 of file class.ilSurveyPageGUI.php.

References $ilCtrl, $lng, $target, and ilUtil\sendSuccess().

1226  {
1227  global $lng, $ilCtrl;
1228 
1229  // current_page is already set to new position
1230  $target_page = $this->current_page-1;
1231  $source_page = $_REQUEST["old_pos"]-1;
1232 
1233  $pages = $this->object->getSurveyPages();
1234  foreach($pages[$source_page] as $question)
1235  {
1236  $questions[] = $question["question_id"];
1237  }
1238 
1239  // move to first position
1240  $position = 0;
1241  if($_REQUEST["pgov"] != "fst")
1242  {
1243  $position = 1;
1244  }
1245 
1246  $target = $pages[$target_page];
1247  if ($position == 0) // before
1248  {
1249  $target = array_shift($target); // ... use always the first question of the page
1250  }
1251  else // after
1252  {
1253  $target = array_pop($target); // ... use always the last question of the page
1254  }
1255  $this->object->moveQuestions($questions, $target["question_id"], $position);
1256 
1257  if($target_page < $source_page && $position)
1258  {
1259  $this->current_page++;
1260  }
1261 
1262  ilUtil::sendSuccess($lng->txt("survey_page_moved"), true);
1263  $ilCtrl->setParameter($this, "pgov", $this->current_page);
1264  $ilCtrl->redirect($this, "renderPage");
1265  }
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
global $ilCtrl
Definition: ilias.php:18
+ Here is the call graph for this function:

◆ movePageForm()

ilSurveyPageGUI::movePageForm ( )
protected

Move current page.

Definition at line 1174 of file class.ilSurveyPageGUI.php.

References $ilCtrl, $lng, $tpl, array, and ilSelectInputGUI\setOptions().

1175  {
1176  global $lng, $ilCtrl, $tpl;
1177 
1178  include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
1179  $form = new ilPropertyFormGUI();
1180  $form->setFormAction($ilCtrl->getFormAction($this, "movePage"));
1181  $form->setTitle($lng->txt("survey_move_page"));
1182 
1183  $old_pos = new ilHiddenInputGUI("old_pos");
1184  $old_pos->setValue($this->current_page);
1185  $form->addItem($old_pos);
1186 
1187  $pages = $this->object->getSurveyPages();
1188  if($pages)
1189  {
1190  $pages_drop = array();
1191  if($this->current_page != 1)
1192  {
1193  $pages_drop["fst"] = $lng->txt("survey_at_beginning");
1194  }
1195  foreach($pages as $idx => $questions)
1196  {
1197  if(($idx+1) != $this->current_page && ($idx+2) != $this->current_page)
1198  {
1199  $question = array_shift($questions);
1200  if($question["questionblock_id"])
1201  {
1202  $pages_drop[$idx+1] = $lng->txt("survey_behind_page")." ".$question["questionblock_title"];
1203  }
1204  else
1205  {
1206  $pages_drop[$idx+1] = $lng->txt("survey_behind_page")." ".strip_tags($question["title"]);
1207  }
1208  }
1209  }
1210  $pos = new ilSelectInputGUI($lng->txt("position"), "pgov");
1211  $pos->setOptions($pages_drop);
1212  $form->addItem($pos);
1213  }
1214 
1215  $form->addCommandButton("movePage", $lng->txt("submit"));
1216  $form->addCommandButton("renderPage", $lng->txt("cancel"));
1217 
1218  return $tpl->setContent($form->getHTML());
1219  }
This class represents a selection list property in a property form.
This class represents a property form user interface.
global $tpl
Definition: ilias.php:8
global $ilCtrl
Definition: ilias.php:18
This class represents a hidden form property in a property form.
setOptions($a_options)
Set Options.
Create styles array
The data for the language used.
+ Here is the call graph for this function:

◆ movePrevious()

ilSurveyPageGUI::movePrevious (   $a_id)
protected

Move question to previous page.

Parameters
int$a_id

Definition at line 1010 of file class.ilSurveyPageGUI.php.

References $target, $target_id, array, and getAutoBlockTitle().

1011  {
1012  $pages = $this->object->getSurveyPages();
1013  $source = $pages[$this->current_page-1];
1014  $target = $pages[$this->current_page-2];
1015  if(sizeof($target))
1016  {
1017  $target_id = $target;
1018  $target_id = array_pop($target_id);
1019  $target_block_id = $target_id["questionblock_id"];
1020  $target_id = $target_id["question_id"];
1021 
1022  // nothing to do if no block
1023  if(sizeof($source) > 1)
1024  {
1025  $block_id = $source;
1026  $block_id = array_shift($block_id);
1027  $block_id = $block_id["questionblock_id"];
1028 
1029  // source pages block is obsolete
1030  if(sizeof($source) == 2)
1031  {
1032  // delete block
1033  $this->object->unfoldQuestionblocks(array($block_id));
1034  }
1035  else
1036  {
1037  // remove question from block
1038  $this->object->removeQuestionFromBlock($a_id, $block_id);
1039  }
1040  }
1041 
1042  // move source question to target
1043  $this->object->moveQuestions(array($a_id), $target_id, 1);
1044 
1045  // new page has no block yet
1046  if(sizeof($target) < 2)
1047  {
1048  // create block and move target question and source into block
1049  $this->object->createQuestionblock($this->getAutoBlockTitle(), true, false,
1050  array($target_id, $a_id));
1051  }
1052  else
1053  {
1054  // add source question to block
1055  $this->object->addQuestionToBlock($a_id, $target_block_id);
1056  }
1057 
1058  $this->current_page--;
1059  }
1060  }
$target_id
Definition: goto.php:51
getAutoBlockTitle()
Get name for newly created blocks.
Create styles array
The data for the language used.
+ Here is the call graph for this function:

◆ multiCopy()

ilSurveyPageGUI::multiCopy (   $a_id)
protected

Add questions to be copied to clipboard.

Parameters
array$a_idquestion ids

Definition at line 503 of file class.ilSurveyPageGUI.php.

References $_SESSION, $lng, $ref_id, array, and ilUtil\sendSuccess().

504  {
505  global $lng;
506 
507  if (is_array($a_id))
508  {
509  ilUtil::sendSuccess($lng->txt("survey_questions_to_clipboard_copy"));
510  $this->suppress_clipboard_msg = true;
511 
512  $_SESSION["survey_page_view"][$this->ref_id]["clipboard"] = array(
513  "source" => $this->current_page,
514  "nodes" => $a_id,
515  "mode" => "copy");
516  }
517  }
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
$_SESSION["AccountId"]
Create styles array
The data for the language used.
+ Here is the call graph for this function:

◆ multiCut()

ilSurveyPageGUI::multiCut (   $a_id)
protected

Add questions to be cut to clipboard.

Parameters
array$a_idquestion ids

Definition at line 482 of file class.ilSurveyPageGUI.php.

References $_SESSION, $lng, $ref_id, array, and ilUtil\sendSuccess().

483  {
484  global $lng;
485 
486  if (is_array($a_id))
487  {
488  ilUtil::sendSuccess($lng->txt("survey_questions_to_clipboard_cut"));
489  $this->suppress_clipboard_msg = true;
490 
491  $_SESSION["survey_page_view"][$this->ref_id]["clipboard"] = array(
492  "source" => $this->current_page,
493  "nodes" => $a_id,
494  "mode" => "cut");
495  }
496  }
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
$_SESSION["AccountId"]
Create styles array
The data for the language used.
+ Here is the call graph for this function:

◆ paste()

ilSurveyPageGUI::paste (   $a_id)
protected

Paste from clipboard.

Parameters
int$a_idtarget position

Definition at line 532 of file class.ilSurveyPageGUI.php.

References $_SESSION, $data, $ref_id, $target, $title, ilObjSurvey\_instanciateQuestion(), appendNewQuestionToSurvey(), array, clearClipboard(), getAutoBlockTitle(), and object.

533  {
534  $data = $_SESSION["survey_page_view"][$this->ref_id]["clipboard"];
535  $pages = $this->object->getSurveyPages();
536  $source = $pages[$data["source"]-1];
537  $target = $pages[$this->current_page-1];
538 
539  // #12558 - use order of source page
540  $nodes = array();
541  foreach($source as $src_qst)
542  {
543  if(in_array($src_qst["question_id"], $data["nodes"]))
544  {
545  $nodes[] = $src_qst["question_id"];
546  }
547  }
548 
549  // append to last position?
550  $pos = 0;
551  if($_REQUEST["il_hform_node"] == "page_end")
552  {
553  $a_id = $target;
554  $a_id = array_pop($a_id);
555  $a_id = $a_id["question_id"];
556  $pos = 1;
557  }
558 
559  // cut
560  if($data["mode"] == "cut")
561  {
562  // special case: paste cut on same page (no block handling needed)
563  if($data["source"] == $this->current_page)
564  {
565  // re-order nodes in page
566  if(sizeof($nodes) <= sizeof($source))
567  {
568  $this->object->moveQuestions($nodes, $a_id, $pos);
569  }
570  $this->clearClipboard();
571  return;
572  }
573  else
574  {
575  // only if source has block
576  $source_block_id = false;
577  if(sizeof($source) > 1)
578  {
579  $source_block_id = $source;
580  $source_block_id = array_shift($source_block_id);
581  $source_block_id = $source_block_id["questionblock_id"];
582 
583  // remove from block
584  if(sizeof($source) > sizeof($nodes))
585  {
586  foreach($nodes as $qid)
587  {
588  $this->object->removeQuestionFromBlock($qid, $source_block_id);
589  }
590  }
591  // remove complete block
592  else
593  {
594  $this->object->unfoldQuestionblocks(array($source_block_id));
595  }
596  }
597 
598  // page will be "deleted" by operation
599  if(sizeof($source) == sizeof($nodes) && $data["source"] < $this->current_page)
600  {
601  $this->current_page--;
602  }
603  }
604  }
605 
606  // copy
607  else if($data["mode"] == "copy")
608  {
609  $titles = array();
610  foreach($this->object->getSurveyPages() as $page)
611  {
612  foreach($page as $question)
613  {
614  $titles[] = $question["title"];
615  }
616  }
617 
618  // copy questions
619  $question_pointer = array();
620  foreach($nodes as $qid)
621  {
622  // create new questions
623  $question = ilObjSurvey::_instanciateQuestion($qid);
624 
625  // handle exisiting copies
626  $title = $question->getTitle();
627  $max = 0;
628  foreach($titles as $existing_title)
629  {
630  #21278 preg_quote with delimiter
631  if(preg_match("/".preg_quote($title, "/")." \(([0-9]+)\)$/", $existing_title, $match))
632  {
633  $max = max($match[1], $max);
634  }
635  }
636  if($max)
637  {
638  $title .= " (".($max+1).")";
639  }
640  else
641  {
642  $title .= " (2)";
643  }
644  $titles[] = $title;
645  $question->setTitle($title);
646 
647  $question->id = -1;
648  $question->saveToDb();
649 
650  $question_pointer[$qid] = $question->getId();
651  $this->appendNewQuestionToSurvey($question->getId(), false);
652  }
653 
654  // copy textblocks
655  $this->object->cloneTextblocks($question_pointer);
656 
657  $this->object->loadQuestionsFromDb();
658 
659  $nodes = array_values($question_pointer);
660  }
661 
662 
663  // paste
664 
665  // create new block
666  if(sizeof($target) == 1)
667  {
668  $nodes = array_merge(array($a_id), $nodes);
669 
670  // moveQuestions() is called within
671  $this->object->createQuestionblock($this->getAutoBlockTitle(), true, false,
672  $nodes);
673  }
674  // add to existing block
675  else
676  {
677  $target_block_id = $target;
678  $target_block_id = array_shift($target_block_id);
679  $target_block_id = $target_block_id["questionblock_id"];
680 
681  foreach($nodes as $qid)
682  {
683  $this->object->addQuestionToBlock($qid, $target_block_id);
684  }
685 
686  // move to new position
687  $this->object->moveQuestions($nodes, $a_id, $pos);
688  }
689 
690  $this->clearClipboard();
691  }
static _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.
$_SESSION["AccountId"]
clearClipboard()
Empty clipboard.
getAutoBlockTitle()
Get name for newly created blocks.
Create styles array
The data for the language used.
appendNewQuestionToSurvey($a_new_id, $a_duplicate=true, $a_force_duplicate=false)
Add new question to survey (database part)
Create new PHPExcel object
obj_idprivate
+ Here is the call graph for this function:

◆ renderPage()

ilSurveyPageGUI::renderPage ( )
protected

render questions per page

Definition at line 1410 of file class.ilSurveyPageGUI.php.

References $_SESSION, $cmd, $ilCtrl, $lng, $tpl, ilObjAdvancedEditing\_getUsedHTMLTags(), ilObjSurvey\_hasDatasets(), ilGlyphGUI\ADD, array, ilGlyphGUI\DRAG, ilGlyphGUI\get(), ilUtil\getImagePath(), getPageNodes(), ilYuiUtil\initDragDrop(), object, ilTinyMCE\removeRedundantSeparators(), renderToolbar(), and ilUtil\sendInfo().

Referenced by addQuestionToolbar().

1411  {
1412  global $ilCtrl, $lng, $tpl, $rbacsystem;
1413 
1414  $pages = $this->object->getSurveyPages();
1415  $this->has_next_page = ($this->current_page < sizeof($pages));
1416  $this->has_previous_page = ($this->current_page > 1);
1417  $this->has_datasets = ilObjSurvey::_hasDatasets($this->object->getSurveyId());
1418 
1419  if($this->has_datasets)
1420  {
1421  $link = $ilCtrl->getLinkTargetByClass(array("ilobjsurveygui", "ilsurveyparticipantsgui"), "maintenance");
1422  $link = "<a href=\"".$link."\">".$lng->txt("survey_has_datasets_warning_page_view_link")."</a>";
1423  ilUtil::sendInfo($lng->txt("survey_has_datasets_warning_page_view")." ".$link);
1424  }
1425 
1426  $ilCtrl->setParameter($this, "pg", $this->current_page);
1427  $ilCtrl->setParameter($this, "pgov", "");
1428 
1429  $this->renderToolbar($pages);
1430 
1431  if($pages)
1432  {
1433  $ttpl = new ilTemplate("tpl.il_svy_svy_page_view.html", true, true, "Modules/Survey");
1434  $ttpl->setVariable("FORM_ACTION", $ilCtrl->getFormAction($this));
1435  $lng->loadLanguageModule("form");
1436 
1437  $read_only = ($this->has_datasets || !$rbacsystem->checkAccess("write", $this->ref_id));
1438 
1439  $commands = $multi_commands = array();
1440 
1441  if(!$read_only)
1442  {
1443  // clipboard is empty
1444  if(!$_SESSION["survey_page_view"][$this->ref_id]["clipboard"])
1445  {
1446  $multi_commands[] = array("cmd"=>"multiDelete", "text"=>$lng->txt("delete"));
1447  $multi_commands[] = array("cmd"=>"multiCut", "text"=>$lng->txt("cut"));
1448  $multi_commands[] = array("cmd"=>"multiCopy", "text"=>$lng->txt("copy"));
1449  $multi_commands[] = array("cmd"=>"selectAll", "text"=>$lng->txt("select_all"));
1450  }
1451  else
1452  {
1453  if(!$this->suppress_clipboard_msg)
1454  {
1455  ilUtil::sendInfo($lng->txt("survey_clipboard_notice"));
1456  }
1457  $multi_commands[] = array("cmd"=>"clearClipboard", "text"=>$lng->txt("survey_dnd_clear_clipboard"));
1458  }
1459 
1460  // help - see ilPageObjectGUI::insertHelp()
1461  $lng->loadLanguageModule("content");
1462  $ttpl->setCurrentBlock("help_section");
1463  $ttpl->setVariable("TXT_ADD_EL", $lng->txt("cont_add_elements"));
1464  include_once("./Services/UIComponent/Glyph/classes/class.ilGlyphGUI.php");
1465  $ttpl->setVariable("PLUS", ilGlyphGUI::get(ilGlyphGUI::ADD));
1466  $ttpl->setVariable("DRAG_ARROW", ilGlyphGUI::get(ilGlyphGUI::DRAG));
1467  $ttpl->setVariable("TXT_DRAG", $lng->txt("cont_drag_and_drop_elements"));
1468  $ttpl->setVariable("TXT_SEL", $lng->txt("cont_double_click_to_delete"));
1469  $ttpl->parseCurrentBlock();
1470 
1471  $ttpl->setVariable("DND_INIT_JS", "initDragElements();");
1472 
1473 
1474  // tiny mce
1475 
1476  include_once "./Services/AdvancedEditing/classes/class.ilObjAdvancedEditing.php";
1477  $tags = ilObjAdvancedEditing::_getUsedHTMLTags("survey");
1478 
1479  include_once "./Services/RTE/classes/class.ilTinyMCE.php";
1480  $tiny = new ilTinyMCE();
1481  $ttpl->setVariable("WYSIWYG_BLOCKFORMATS", $tiny->_buildAdvancedBlockformatsFromHTMLTags($tags));
1482  $ttpl->setVariable("WYSIWYG_VALID_ELEMENTS", $tiny->_getValidElementsFromHTMLTags($tags));
1483 
1484  $buttons_1 = $tiny->_buildAdvancedButtonsFromHTMLTags(1, $tags);
1485  $buttons_2 = $tiny->_buildAdvancedButtonsFromHTMLTags(2, $tags).','.
1486  $tiny->_buildAdvancedTableButtonsFromHTMLTags($tags).
1487  ($tiny->getStyleSelect() ? ',styleselect' : '');
1488  $buttons_3 = $tiny->_buildAdvancedButtonsFromHTMLTags(3, $tags);
1489  $ttpl->setVariable('WYSIWYG_BUTTONS_1', ilTinyMCE::removeRedundantSeparators($buttons_1));
1490  $ttpl->setVariable('WYSIWYG_BUTTONS_2', ilTinyMCE::removeRedundantSeparators($buttons_2));
1491  $ttpl->setVariable('WYSIWYG_BUTTONS_3', ilTinyMCE::removeRedundantSeparators($buttons_3));
1492  }
1493 
1494  // commands
1495  if (count($multi_commands) > 0)
1496  {
1497  foreach($multi_commands as $cmd)
1498  {
1499  $ttpl->setCurrentBlock("multi_cmd");
1500  $ttpl->setVariable("ORG_CMD_MULTI", "renderPage");
1501  $ttpl->setVariable("MULTI_CMD", $cmd["cmd"]);
1502  $ttpl->setVariable("MULTI_CMD_TXT", $cmd["text"]);
1503  $ttpl->parseCurrentBlock();
1504  }
1505 
1506  $ttpl->setCurrentBlock("multi_cmds");
1507  $ttpl->setVariable("MCMD_ALT", $lng->txt("commands"));
1508  $ttpl->setVariable("MCMD_IMG", ilUtil::getImagePath("arrow_downright.svg"));
1509  $ttpl->parseCurrentBlock();
1510  }
1511 
1512  // nodes
1513  $ttpl->setVariable("NODES", $this->getPageNodes($pages[$this->current_page-1],
1514  $this->has_previous_page, $this->has_next_page, $read_only));
1515 
1516  $tpl->setContent($ttpl->get());
1517 
1518  // add js to template
1519  include_once("./Services/YUI/classes/class.ilYuiUtil.php");
1521  $tpl->addJavascript("./Modules/Survey/js/SurveyPageView.js");
1522  $tpl->addJavascript("./Services/RTE/tiny_mce_3_5_11/tiny_mce_src.js");
1523  }
1524  }
$_SESSION["AccountId"]
static _hasDatasets($survey_id)
static _getUsedHTMLTags($a_module="")
Returns an array of all allowed HTML tags for text editing.
$cmd
Definition: sahs_server.php:35
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.
static removeRedundantSeparators($a_string)
Removes redundant seperators and removes ,, and , at the first or last position of the string...
global $tpl
Definition: ilias.php:8
global $ilCtrl
Definition: ilias.php:18
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
Tiny MCE editor class.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
special template class to simplify handling of ITX/PEAR
Create styles array
The data for the language used.
Create new PHPExcel object
obj_idprivate
static initDragDrop()
Init YUI Drag and Drop.
renderToolbar($a_pages)
Render toolbar form.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ renderPageNode()

ilSurveyPageGUI::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.

Parameters
ilTemplate$a_tpl
string$a_type
int$a_id
string$a_content
array$a_menu
bool$a_spacer
string$a_subtitle
string$a_heading

Definition at line 1708 of file class.ilSurveyPageGUI.php.

References $a_content, $a_type, $ilCtrl, $lng, $url, ilGlyphGUI\ADD, ilGlyphGUI\get(), ilTemplate\parseCurrentBlock(), ilTemplate\setCurrentBlock(), HTML_Template_IT\setVariable(), and ilTemplate\touchBlock().

Referenced by getPageNodes().

1709  {
1710  global $ilCtrl, $lng;
1711 
1712  $node_id = $a_type."_".$a_id;
1713 
1714  if($a_spacer)
1715  {
1716  if($a_menu)
1717  {
1718  // drop area menu
1719  foreach($a_menu as $mcnt => $menu_item)
1720  {
1721  $ilCtrl->setParameter($this, "il_hform_node", $node_id);
1722  $ilCtrl->setParameter($this, "il_hform_subcmd", $menu_item["cmd"]);
1723  $url = $ilCtrl->getLinkTarget($this, "renderPage");
1724  $ilCtrl->setParameter($this, "il_hform_subcmd", "");
1725  $ilCtrl->setParameter($this, "il_hform_node", "");
1726 
1727  $a_tpl->setCurrentBlock("menu_cmd");
1728  $a_tpl->setVariable("TXT_MENU_CMD", $menu_item["text"]);
1729  $a_tpl->setVariable("URL_MENU_CMD", $url);
1730  $a_tpl->parseCurrentBlock();
1731  }
1732  }
1733 
1734  $a_tpl->setCurrentBlock("drop_area");
1735  include_once "Services/UIComponent/Glyph/classes/class.ilGlyphGUI.php";
1736  $a_tpl->setVariable("ICON_ADD", ilGlyphGUI::get(ilGlyphGUI::ADD));
1737  $a_tpl->setVariable("DROP_ID", $a_id);
1738  $a_tpl->parseCurrentBlock();
1739  }
1740  else if($a_menu)
1741  {
1742  // question action menu
1743  foreach($a_menu as $mcnt => $menu_item)
1744  {
1745  $ilCtrl->setParameter($this, "il_hform_node", $node_id);
1746  $ilCtrl->setParameter($this, "il_hform_subcmd", $menu_item["cmd"]);
1747  $url = $ilCtrl->getLinkTarget($this, "renderPage");
1748  $ilCtrl->setParameter($this, "il_hform_subcmd", "");
1749  $ilCtrl->setParameter($this, "il_hform_node", "");
1750 
1751  $a_tpl->setCurrentBlock("action_cmd");
1752  $a_tpl->setVariable("TXT_ACTION_CMD", $menu_item["text"]);
1753  $a_tpl->setVariable("URL_ACTION_CMD", $url);
1754  $a_tpl->parseCurrentBlock();
1755  }
1756  }
1757 
1758  // add heading to content
1759  if($a_content !== null &&
1760  $a_type == "question" &&
1761  $a_heading)
1762  {
1763  $a_content = "<div class=\"questionheading\">".$a_heading."</div>".
1764  $a_content;
1765  }
1766 
1767  if($a_menu)
1768  {
1769  $a_tpl->setVariable("TXT_NODE_CONTENT_ACTIONS", $a_content);
1770  }
1771  else
1772  {
1773  $a_tpl->setVariable("TXT_NODE_CONTENT_NO_ACTIONS", $a_content);
1774  }
1775 
1776  if($a_content !== null)
1777  {
1778  $drag = "";
1779  $selectable = false;
1780  switch($a_type)
1781  {
1782  case "block":
1783  $caption = $lng->txt("questionblock");
1784  break;
1785 
1786  case "question":
1787  $caption = $lng->txt("question").": ".$a_subtitle;
1788  $drag = "_drag";
1789  $selectable = true;
1790  break;
1791 
1792  case "heading":
1793  $caption = $lng->txt("heading");
1794  break;
1795 
1796  default:
1797  return;
1798  }
1799 
1800  if($a_status)
1801  {
1802  $caption .= " (".$a_status.")";
1803  }
1804 
1805  $a_tpl->setCurrentBlock("list_item");
1806  $a_tpl->setVariable("NODE_ID", $node_id);
1807  $a_tpl->setVariable("NODE_DRAG", $drag);
1808  $a_tpl->setVariable("TXT_NODE_TYPE", $caption);
1809  if($selectable)
1810  {
1811  $a_tpl->setVariable("SELECTABLE", " selectable");
1812  }
1813  $a_tpl->parseCurrentBlock();
1814  }
1815 
1816  $a_tpl->touchBlock("element");
1817  }
static get($a_glyph, $a_text="")
Get glyph html.
$url
Definition: shib_logout.php:72
global $ilCtrl
Definition: ilias.php:18
$a_type
Definition: workflow.php:93
setVariable($variable, $value='')
Sets a variable value.
Definition: IT.php:613
$a_content
Definition: workflow.php:94
touchBlock($block)
overwrites ITX::touchBlock.
setCurrentBlock($part="DEFAULT")
Überladene Funktion, die sich hier lokal noch den aktuellen Block merkt.
parseCurrentBlock($part="DEFAULT")
Überladene Funktion, die auf den aktuelle Block vorher noch ein replace ausführt public...
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ renderToolbar()

ilSurveyPageGUI::renderToolbar (   $a_pages)
protected

Render toolbar form.

Parameters
array$a_pages

Definition at line 1272 of file class.ilSurveyPageGUI.php.

References $cmd, $ilCtrl, $ilUser, $lng, $si, $url, ilLinkButton\getInstance(), and object.

Referenced by renderPage().

1273  {
1274  global $ilToolbar, $ilCtrl, $lng, $ilUser;
1275 
1276  include_once "Services/UIComponent/Button/classes/class.ilLinkButton.php";
1277 
1278  if(!$this->has_datasets)
1279  {
1280  $button = ilLinkButton::getInstance();
1281  $button->setCaption("survey_add_new_question");
1282  $button->setUrl($ilCtrl->getLinkTarget($this, "addQuestionToolbarForm"));
1283  $ilToolbar->addStickyItem($button);
1284 
1285  if($this->object->isPoolActive())
1286  {
1287  //$ilToolbar->addSeparator();
1288 
1289  $last_on_page = 0;
1290  if($a_pages &&
1291  is_array($a_pages[$this->current_page-1]))
1292  {
1293  $last_on_page = $a_pages[$this->current_page-1];
1294  $last_on_page = array_pop($last_on_page);
1295  $last_on_page = $last_on_page["question_id"];
1296  }
1297 
1298  $ilCtrl->setParameter($this->editor_gui, "pgov", $this->current_page);
1299  $ilCtrl->setParameter($this->editor_gui, "pgov_pos", $last_on_page."c");
1300 
1301  $cmd = ($ilUser->getPref('svy_insert_type') == 1 ||
1302  strlen($ilUser->getPref('svy_insert_type')) == 0)
1303  ? 'browseForQuestions'
1304  : 'browseForQuestionblocks';
1305 
1306  $button = ilLinkButton::getInstance();
1307  $button->setCaption("browse_for_questions");
1308  $button->setUrl($ilCtrl->getLinkTarget($this->editor_gui, $cmd));
1309  $ilToolbar->addStickyItem($button);
1310 
1311  $ilCtrl->setParameter($this->editor_gui, "pgov", "");
1312  $ilCtrl->setParameter($this->editor_gui, "pgov_pos", "");
1313  }
1314 
1315  if($a_pages)
1316  {
1317  $ilToolbar->addSeparator();
1318  }
1319  }
1320 
1321  // parse data for pages drop-down
1322  if($a_pages)
1323  {
1324  // previous/next
1325 
1326  $ilCtrl->setParameter($this, "pg", $this->current_page-1);
1327  $button = ilLinkButton::getInstance();
1328  $button->setCaption("survey_prev_question");
1329  $button->setUrl($ilCtrl->getLinkTarget($this, "renderPage"));
1330  $button->setDisabled(!$this->has_previous_page);
1331  $ilToolbar->addStickyItem($button);
1332 
1333  $ilCtrl->setParameter($this, "pg", $this->current_page+1);
1334  $button = ilLinkButton::getInstance();
1335  $button->setCaption("survey_next_question");
1336  $button->setUrl($ilCtrl->getLinkTarget($this, "renderPage"));
1337  $button->setDisabled(!$this->has_next_page);
1338  $ilToolbar->addStickyItem($button);
1339 
1340  $ilCtrl->setParameter($this, "pg", $this->current_page); // #14615
1341 
1342  foreach($a_pages as $idx => $questions)
1343  {
1344  $page = $questions;
1345  $page = array_shift($page);
1346  if($page["questionblock_id"])
1347  {
1348  $pages_drop[$idx+1] = $page["questionblock_title"];
1349 
1350  if(sizeof($questions) > 1)
1351  {
1352  foreach($questions as $question)
1353  {
1354  $pages_drop[($idx+1)."__".$question["question_id"]] = "- ".$question["title"];
1355  }
1356  }
1357  }
1358  else
1359  {
1360  $pages_drop[$idx+1] = strip_tags($page["title"]);
1361  }
1362  }
1363  }
1364 
1365  // jump to page
1366  if(sizeof($pages_drop) > 1)
1367  {
1368  //$ilToolbar->addSeparator();
1369 
1370  $ilToolbar->setFormAction($ilCtrl->getFormAction($this));
1371 
1372  include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
1373  $si = new ilSelectInputGUI($lng->txt("survey_jump_to"), "jump");
1374  $si->addCustomAttribute("onChange=\"forms['ilToolbar'].submit();\"");
1375  $si->setOptions($pages_drop);
1376  $si->setValue($this->current_page);
1377  $ilToolbar->addInputItem($si, true);
1378 
1379  // we need this to have to right cmd
1380  $cmd = new ilHiddenInputGUI("cmd[renderPage]");
1381  $cmd->setValue("1");
1382  $ilToolbar->addInputItem($cmd);
1383 
1384  if(!$this->has_datasets)
1385  {
1386  $ilToolbar->addSeparator();
1387 
1388  $ilCtrl->setParameter($this, "csum", md5(print_r($a_pages[$this->current_page-1], true)));
1389  $url = $ilCtrl->getLinkTarget($this, "deleteBlock");
1390  $ilCtrl->setParameter($this, "csum", "");
1391 
1392  $button = ilLinkButton::getInstance();
1393  $button->setCaption("survey_delete_page");
1394  $button->setUrl($url);
1395  $ilToolbar->addButtonInstance($button);
1396 
1397  $ilToolbar->addSeparator();
1398 
1399  $button = ilLinkButton::getInstance();
1400  $button->setCaption("survey_move_page");
1401  $button->setUrl($ilCtrl->getLinkTarget($this, "movePageForm"));
1402  $ilToolbar->addButtonInstance($button);
1403  }
1404  }
1405  }
This class represents a selection list property in a property form.
$cmd
Definition: sahs_server.php:35
$url
Definition: shib_logout.php:72
global $ilCtrl
Definition: ilias.php:18
This class represents a hidden form property in a property form.
$ilUser
Definition: imgupload.php:18
Create new PHPExcel object
obj_idprivate
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ splitPage()

ilSurveyPageGUI::splitPage (   $a_id)
protected

Split current page in 2 pages.

Parameters
int$a_id

Definition at line 899 of file class.ilSurveyPageGUI.php.

References array, and getAutoBlockTitle().

900  {
901  $pages = $this->object->getSurveyPages();
902  $source = $pages[$this->current_page-1];
903 
904  $block_questions = array();
905  $add = $block_id = false;
906  foreach($source as $idx => $item)
907  {
908  if($item["question_id"] == $a_id)
909  {
910  $block_id = $item["questionblock_id"];
911  $add = $idx;
912  }
913  if($add)
914  {
915  $block_questions[] = $item["question_id"];
916  }
917  }
918 
919  // just 1 question left: block is obsolete
920  if($add == 1)
921  {
922  $this->object->unfoldQuestionblocks(array($block_id));
923  }
924  // remove questions from block
925  else
926  {
927  foreach($block_questions as $qid)
928  {
929  $this->object->removeQuestionFromBlock($qid, $block_id);
930  }
931  }
932 
933  // more than 1 moved?
934  if(sizeof($block_questions) > 1)
935  {
936  // create new block and move target questions
937  $this->object->createQuestionblock($this->getAutoBlockTitle(), true, false,
938  $block_questions);
939  }
940 
941  $this->current_page++;
942  }
getAutoBlockTitle()
Get name for newly created blocks.
Create styles array
The data for the language used.
+ Here is the call graph for this function:

Field Documentation

◆ $current_page

ilSurveyPageGUI::$current_page
protected

Definition at line 20 of file class.ilSurveyPageGUI.php.

Referenced by determineCurrentPage(), executeCommand(), and moveNext().

◆ $editor_gui

ilSurveyPageGUI::$editor_gui
protected

Definition at line 19 of file class.ilSurveyPageGUI.php.

◆ $has_datasets

ilSurveyPageGUI::$has_datasets
protected

Definition at line 23 of file class.ilSurveyPageGUI.php.

◆ $has_next_page

ilSurveyPageGUI::$has_next_page
protected

Definition at line 22 of file class.ilSurveyPageGUI.php.

◆ $has_previous_page

ilSurveyPageGUI::$has_previous_page
protected

Definition at line 21 of file class.ilSurveyPageGUI.php.

◆ $lng

◆ $log

ilSurveyPageGUI::$log
protected

Definition at line 29 of file class.ilSurveyPageGUI.php.

◆ $object

ilSurveyPageGUI::$object
protected

Definition at line 18 of file class.ilSurveyPageGUI.php.

◆ $ref_id

ilSurveyPageGUI::$ref_id
protected

◆ $use_pool

ilSurveyPageGUI::$use_pool
protected

Definition at line 24 of file class.ilSurveyPageGUI.php.


The documentation for this class was generated from the following file: