00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00036 include_once "class.ilObjectGUI.php";
00037
00038 class ilObjAssessmentFolderGUI extends ilObjectGUI
00039 {
00044 var $conditions;
00045
00046 function ilObjAssessmentFolderGUI($a_data,$a_id,$a_call_by_reference)
00047 {
00048 global $rbacsystem;
00049
00050 $this->type = "assf";
00051 $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference,false);
00052
00053 if (!$rbacsystem->checkAccess('read',$this->object->getRefId()))
00054 {
00055 $this->ilias->raiseError($this->lng->txt("msg_no_perm_read_assf"),$this->ilias->error_obj->WARNING);
00056 }
00057 }
00058
00059 function &executeCommand()
00060 {
00061 $next_class = $this->ctrl->getNextClass($this);
00062 $cmd = $this->ctrl->getCmd();
00063 $this->prepareOutput();
00064
00065 switch($next_class)
00066 {
00067 case 'ilpermissiongui':
00068 include_once("./classes/class.ilPermissionGUI.php");
00069 $perm_gui =& new ilPermissionGUI($this);
00070 $ret =& $this->ctrl->forwardCommand($perm_gui);
00071 break;
00072
00073 default:
00074 if($cmd == "" || $cmd == "view")
00075 {
00076 $cmd = "settings";
00077 }
00078 $cmd .= "Object";
00079 $this->$cmd();
00080
00081 break;
00082 }
00083 return true;
00084 }
00085
00086
00091 function saveObject()
00092 {
00093 global $rbacadmin;
00094
00095
00096 $newObj = parent::saveObject();
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107 sendInfo($this->lng->txt("object_added"),true);
00108
00109 $this->ctrl->redirect($this);
00110 }
00111
00112
00116 function settingsObject()
00117 {
00118 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.assessment_settings.html");
00119
00120 $this->tpl->setCurrentBlock("adm_content");
00121 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
00122 $this->tpl->setVariable("TXT_ACTIVATE_ASSESSMENT_LOGGING", $this->lng->txt("activate_assessment_logging"));
00123 $this->tpl->setVariable("TXT_ASSESSMENT_SETTINGS", $this->lng->txt("assessment_settings"));
00124 $this->tpl->setVariable("TXT_REPORTING_LANGUAGE", $this->lng->txt("assessment_settings_reporting_language"));
00125 $languages = $this->lng->getInstalledLanguages();
00126 $default_language = $this->object->_getLogLanguage();
00127 if (!in_array($default_language, $languages))
00128 {
00129 $default_language = "en";
00130 }
00131 foreach ($languages as $key)
00132 {
00133 $this->tpl->setCurrentBlock("reporting_lang_row");
00134 $this->tpl->setVariable("LANG_VALUE", $key);
00135 $this->tpl->setVariable("LANG_NAME", $this->lng->txt("lang_" . $key));
00136 if (strcmp($default_language, $key) == 0)
00137 {
00138 $this->tpl->setVariable("LANG_SELECTED", " selected=\"selected\"");
00139 }
00140 $this->tpl->parseCurrentBlock();
00141 }
00142
00143 $this->tpl->setVariable("TXT_SAVE", $this->lng->txt("save"));
00144
00145 if($this->object->_enabledAssessmentLogging())
00146 {
00147 $this->tpl->setVariable("ASSESSMENT_LOGGING_CHECKED", " checked=\"checked\"");
00148 }
00149
00150 $this->tpl->parseCurrentBlock();
00151 }
00152
00156 function saveSettingsObject()
00157 {
00158 if ($_POST["chb_assessment_logging"] == 1)
00159 {
00160 $this->object->_enableAssessmentLogging(1);
00161 }
00162 else
00163 {
00164 $this->object->_enableAssessmentLogging(0);
00165 }
00166 $this->object->_setLogLanguage($_POST["reporting_language"]);
00167 sendInfo($this->lng->txt("msg_obj_modified"),true);
00168
00169 $this->ctrl->redirect($this,'settings');
00170 }
00171
00175 function showLogObject()
00176 {
00177 $this->logsObject();
00178 }
00179
00183 function exportLogObject()
00184 {
00185 $this->logsObject();
00186 }
00187
00191 function logsObject()
00192 {
00193 $this->lng->loadLanguageModule("jscalendar");
00194 $this->tpl->addBlockFile("CALENDAR_LANG_JAVASCRIPT", "calendar_javascript", "tpl.calendar.html");
00195 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.assessment_logs.html");
00196 $this->tpl->setCurrentBlock("calendar_javascript");
00197 $this->tpl->setVariable("FULL_SUNDAY", $this->lng->txt("l_su"));
00198 $this->tpl->setVariable("FULL_MONDAY", $this->lng->txt("l_mo"));
00199 $this->tpl->setVariable("FULL_TUESDAY", $this->lng->txt("l_tu"));
00200 $this->tpl->setVariable("FULL_WEDNESDAY", $this->lng->txt("l_we"));
00201 $this->tpl->setVariable("FULL_THURSDAY", $this->lng->txt("l_th"));
00202 $this->tpl->setVariable("FULL_FRIDAY", $this->lng->txt("l_fr"));
00203 $this->tpl->setVariable("FULL_SATURDAY", $this->lng->txt("l_sa"));
00204 $this->tpl->setVariable("SHORT_SUNDAY", $this->lng->txt("s_su"));
00205 $this->tpl->setVariable("SHORT_MONDAY", $this->lng->txt("s_mo"));
00206 $this->tpl->setVariable("SHORT_TUESDAY", $this->lng->txt("s_tu"));
00207 $this->tpl->setVariable("SHORT_WEDNESDAY", $this->lng->txt("s_we"));
00208 $this->tpl->setVariable("SHORT_THURSDAY", $this->lng->txt("s_th"));
00209 $this->tpl->setVariable("SHORT_FRIDAY", $this->lng->txt("s_fr"));
00210 $this->tpl->setVariable("SHORT_SATURDAY", $this->lng->txt("s_sa"));
00211 $this->tpl->setVariable("FULL_JANUARY", $this->lng->txt("l_01"));
00212 $this->tpl->setVariable("FULL_FEBRUARY", $this->lng->txt("l_02"));
00213 $this->tpl->setVariable("FULL_MARCH", $this->lng->txt("l_03"));
00214 $this->tpl->setVariable("FULL_APRIL", $this->lng->txt("l_04"));
00215 $this->tpl->setVariable("FULL_MAY", $this->lng->txt("l_05"));
00216 $this->tpl->setVariable("FULL_JUNE", $this->lng->txt("l_06"));
00217 $this->tpl->setVariable("FULL_JULY", $this->lng->txt("l_07"));
00218 $this->tpl->setVariable("FULL_AUGUST", $this->lng->txt("l_08"));
00219 $this->tpl->setVariable("FULL_SEPTEMBER", $this->lng->txt("l_09"));
00220 $this->tpl->setVariable("FULL_OCTOBER", $this->lng->txt("l_10"));
00221 $this->tpl->setVariable("FULL_NOVEMBER", $this->lng->txt("l_11"));
00222 $this->tpl->setVariable("FULL_DECEMBER", $this->lng->txt("l_12"));
00223 $this->tpl->setVariable("SHORT_JANUARY", $this->lng->txt("s_01"));
00224 $this->tpl->setVariable("SHORT_FEBRUARY", $this->lng->txt("s_02"));
00225 $this->tpl->setVariable("SHORT_MARCH", $this->lng->txt("s_03"));
00226 $this->tpl->setVariable("SHORT_APRIL", $this->lng->txt("s_04"));
00227 $this->tpl->setVariable("SHORT_MAY", $this->lng->txt("s_05"));
00228 $this->tpl->setVariable("SHORT_JUNE", $this->lng->txt("s_06"));
00229 $this->tpl->setVariable("SHORT_JULY", $this->lng->txt("s_07"));
00230 $this->tpl->setVariable("SHORT_AUGUST", $this->lng->txt("s_08"));
00231 $this->tpl->setVariable("SHORT_SEPTEMBER", $this->lng->txt("s_09"));
00232 $this->tpl->setVariable("SHORT_OCTOBER", $this->lng->txt("s_10"));
00233 $this->tpl->setVariable("SHORT_NOVEMBER", $this->lng->txt("s_11"));
00234 $this->tpl->setVariable("SHORT_DECEMBER", $this->lng->txt("s_12"));
00235 $this->tpl->setVariable("ABOUT_CALENDAR", $this->lng->txt("about_calendar"));
00236 $this->tpl->setVariable("ABOUT_CALENDAR_LONG", $this->lng->txt("about_calendar_long"));
00237 $this->tpl->setVariable("ABOUT_TIME_LONG", $this->lng->txt("about_time"));
00238 $this->tpl->setVariable("PREV_YEAR", $this->lng->txt("prev_year"));
00239 $this->tpl->setVariable("PREV_MONTH", $this->lng->txt("prev_month"));
00240 $this->tpl->setVariable("GO_TODAY", $this->lng->txt("go_today"));
00241 $this->tpl->setVariable("NEXT_MONTH", $this->lng->txt("next_month"));
00242 $this->tpl->setVariable("NEXT_YEAR", $this->lng->txt("next_year"));
00243 $this->tpl->setVariable("SEL_DATE", $this->lng->txt("select_date"));
00244 $this->tpl->setVariable("DRAG_TO_MOVE", $this->lng->txt("drag_to_move"));
00245 $this->tpl->setVariable("PART_TODAY", $this->lng->txt("part_today"));
00246 $this->tpl->setVariable("DAY_FIRST", $this->lng->txt("day_first"));
00247 $this->tpl->setVariable("CLOSE", $this->lng->txt("close"));
00248 $this->tpl->setVariable("TODAY", $this->lng->txt("today"));
00249 $this->tpl->setVariable("TIME_PART", $this->lng->txt("time_part"));
00250 $this->tpl->setVariable("DEF_DATE_FORMAT", $this->lng->txt("def_date_format"));
00251 $this->tpl->setVariable("TT_DATE_FORMAT", $this->lng->txt("tt_date_format"));
00252 $this->tpl->setVariable("WK", $this->lng->txt("wk"));
00253 $this->tpl->setVariable("TIME", $this->lng->txt("time"));
00254 $this->tpl->parseCurrentBlock();
00255 $this->tpl->setCurrentBlock("CalendarJS");
00256 $this->tpl->setVariable("LOCATION_JAVASCRIPT_CALENDAR", "./assessment/js/calendar/calendar.js");
00257 $this->tpl->setVariable("LOCATION_JAVASCRIPT_CALENDAR_SETUP", "./assessment/js/calendar/calendar-setup.js");
00258 $this->tpl->setVariable("LOCATION_JAVASCRIPT_CALENDAR_STYLESHEET", "./assessment/js/calendar/calendar.css");
00259 $this->tpl->parseCurrentBlock();
00260 $this->tpl->setCurrentBlock("javascript_call_calendar");
00261 $this->tpl->setVariable("INPUT_FIELDS_STARTING_DATE", "starting_date");
00262 $this->tpl->setVariable("INPUT_FIELDS_ENDING_DATE", "ending_date");
00263 $this->tpl->setVariable("INPUT_FIELDS_REPORTING_DATE", "reporting_date");
00264 $this->tpl->parseCurrentBlock();
00265 include_once "./assessment/classes/class.ilObjTest.php";
00266 include_once "./assessment/classes/class.assQuestion.php";
00267 $available_tests =& ilObjTest::_getAvailableTests(1);
00268 foreach ($available_tests as $key => $value)
00269 {
00270 $this->tpl->setCurrentBlock("sel_test_row");
00271 $this->tpl->setVariable("TXT_OPTION", ilUtil::prepareFormOutput($value) . " (" . $this->object->getNrOfLogEntries($key) . " " . $this->lng->txt("assessment_log_log_entries") . ")");
00272 $this->tpl->setVariable("VALUE_OPTION", $key);
00273 if (($_POST["sel_test"] > -1) && ($_POST["sel_test"] == $key))
00274 {
00275 $this->tpl->setVariable("SELECTED_OPTION", " selected=\"selected\"");
00276 }
00277 $this->tpl->parseCurrentBlock();
00278 }
00279
00280 if ((strcmp($this->ctrl->getCmd(), "showLog") == 0) ||
00281 (strcmp($this->ctrl->getCmd(), "exportLog") == 0))
00282 {
00283 include_once "./classes/class.ilUtil.php";
00284 $separator = ";";
00285 $csv = array();
00286 if (strcmp($this->ctrl->getCmd(), "exportLog") == 0)
00287 {
00288 $row = array(
00289 $this->lng->txt("assessment_log_datetime"),
00290 $this->lng->txt("user"),
00291 $this->lng->txt("assessment_log_text"),
00292 $this->lng->txt("question")
00293 );
00294 array_push($csv, ilUtil::processCSVRow($row, TRUE, $separator));
00295 }
00296 $ts_from = sprintf("%04d%02d%02d%02d%02d%02d", $_POST["log_from_date"]["y"], $_POST["log_from_date"]["m"], $_POST["log_from_date"]["d"], $_POST["log_from_time"]["h"], $_POST["log_from_time"]["m"], 0);
00297 $ts_to = sprintf("%04d%02d%02d%02d%02d%02d", $_POST["log_to_date"]["y"], $_POST["log_to_date"]["m"], $_POST["log_to_date"]["d"], $_POST["log_to_time"]["h"], $_POST["log_to_time"]["m"], 0);
00298 $log_output =& $this->object->getLog($ts_from, $ts_to, $_POST["sel_test"]);
00299 $users = array();
00300 foreach ($log_output as $key => $log)
00301 {
00302 if (array_key_exists("value1", $log))
00303 {
00304 $tblrow = array("tblrow1light", "tblrow2light");
00305 }
00306 else
00307 {
00308 $tblrow = array("tblrow1", "tblrow2");
00309 }
00310 $title = "";
00311 if (!array_key_exists($log["user_fi"], $users))
00312 {
00313 $users[$log["user_fi"]] = ilObjUser::_lookupName($log["user_fi"]);
00314 }
00315 $this->tpl->setCurrentBlock("output_row");
00316 $this->tpl->setVariable("ROW_CLASS", $tblrow[$key % 2]);
00317 $this->tpl->setVariable("TXT_DATETIME", ilFormat::formatDate(ilFormat::ftimestamp2datetimeDB($log["TIMESTAMP14"]), "datetime"));
00318 $csvrow = array();
00319 if (strcmp($this->ctrl->getCmd(), "exportLog") == 0)
00320 {
00321 array_push($csvrow, ilFormat::formatDate(ilFormat::ftimestamp2datetimeDB($log["TIMESTAMP14"]), "datetime"));
00322 }
00323 if ($log["question_fi"] || $log["original_fi"])
00324 {
00325 $title = assQuestion::_getQuestionTitle($log["question_fi"]);
00326 if (strlen($title) == 0)
00327 {
00328 $title = assQuestion::_getQuestionTitle($log["original_fi"]);
00329 }
00330 $title = $this->lng->txt("assessment_log_question") . ": " . $title;
00331 }
00332 $this->tpl->setVariable("TXT_USER", trim($users[$log["user_fi"]]["title"] . " " . $users[$log["user_fi"]]["firstname"] . " " . $users[$log["user_fi"]]["lastname"]));
00333 if (strcmp($this->ctrl->getCmd(), "exportLog") == 0)
00334 {
00335 array_push($csvrow, trim($users[$log["user_fi"]]["title"] . " " . $users[$log["user_fi"]]["firstname"] . " " . $users[$log["user_fi"]]["lastname"]));
00336 }
00337 if (array_key_exists("value1", $log))
00338 {
00339 if (strlen($title))
00340 {
00341 $this->tpl->setVariable("TXT_LOGTEXT", ilUtil::prepareFormOutput($this->lng->txt("assessment_log_user_answer") . " (" . $title . ")"));
00342 }
00343 else
00344 {
00345 $this->tpl->setVariable("TXT_LOGTEXT", ilUtil::prepareFormOutput($this->lng->txt("assessment_log_user_answer")));
00346 }
00347 if (strcmp($this->ctrl->getCmd(), "exportLog") == 0)
00348 {
00349 array_push($csvrow, $this->lng->txt("assessment_log_user_answer"));
00350 array_push($csvrow, $title);
00351 }
00352 }
00353 else
00354 {
00355 if (strlen($title))
00356 {
00357 $this->tpl->setVariable("TXT_LOGTEXT", trim(ilUtil::prepareFormOutput($log["logtext"]) . " (" . $title . ")"));
00358 }
00359 else
00360 {
00361 $this->tpl->setVariable("TXT_LOGTEXT", trim(ilUtil::prepareFormOutput($log["logtext"])));
00362 }
00363 if (strcmp($this->ctrl->getCmd(), "exportLog") == 0)
00364 {
00365 array_push($csvrow, trim($log["logtext"]));
00366 array_push($csvrow, $title);
00367 }
00368 }
00369 $this->tpl->parseCurrentBlock();
00370 if (strcmp($this->ctrl->getCmd(), "exportLog") == 0)
00371 {
00372 array_push($csv, ilUtil::processCSVRow($csvrow, TRUE, $separator));
00373 }
00374 }
00375 if (count($log_output) == 0)
00376 {
00377 $this->tpl->setCurrentBlock("empty_row");
00378 $this->tpl->setVariable("TXT_NOLOG", $this->lng->txt("assessment_log_no_log"));
00379 $this->tpl->parseCurrentBlock();
00380 }
00381 else
00382 {
00383 if (strcmp($this->ctrl->getCmd(), "exportLog") == 0)
00384 {
00385 $csvoutput = "";
00386 foreach ($csv as $row)
00387 {
00388 $csvoutput .= join($row, $separator) . "\n";
00389 }
00390 ilUtil::deliverData($csvoutput, str_replace(" ", "_", "log_" . $ts_from . "_" . $ts_to . "_" . $available_tests[$_POST["sel_test"]]).".csv");
00391 return;
00392 }
00393 }
00394 $this->tpl->setCurrentBlock("log_output");
00395 $this->tpl->setVariable("HEADER_DATETIME", $this->lng->txt("assessment_log_datetime"));
00396 $this->tpl->setVariable("HEADER_USER", $this->lng->txt("user"));
00397 $this->tpl->setVariable("HEADER_LOGTEXT", $this->lng->txt("assessment_log_text"));
00398 $this->tpl->parseCurrentBlock();
00399 }
00400
00401 $this->tpl->setCurrentBlock("adm_content");
00402 $this->tpl->setVariable("FORMACTION",
00403 $this->ctrl->getFormAction($this));
00404 $this->tpl->setVariable("TXT_ASSESSMENT_LOG", $this->lng->txt("assessment_log"));
00405 $this->tpl->setVariable("TXT_LOG_FROM", $this->lng->txt("from"));
00406 if (!is_array($_POST["log_from_date"]))
00407 {
00408 $date_input = ilUtil::makeDateSelect("log_from_date", "", "1", "1", 2004);
00409 $time_input = ilUtil::makeTimeSelect("log_from_time", TRUE, 0, 0);
00410 }
00411 else
00412 {
00413 $date_input = ilUtil::makeDateSelect("log_from_date", $_POST["log_from_date"]["y"], $_POST["log_from_date"]["m"], $_POST["log_from_date"]["d"], 2004);
00414 $time_input = ilUtil::makeTimeSelect("log_from_time", TRUE, $_POST["log_from_time"]["h"], $_POST["log_from_time"]["m"]);
00415 }
00416 $this->tpl->setVariable("INPUT_LOG_FROM", $date_input." / ".$time_input);
00417 $this->tpl->setVariable("IMG_CALENDAR", ilUtil::getImagePath("calendar.png"));
00418 $this->tpl->setVariable("TXT_LOG_FROM_CALENDAR", $this->lng->txt("assessment_log_open_calendar"));
00419 $this->tpl->setVariable("INPUT_FIELDS_LOG_FROM", "log_from_date");
00420 $this->tpl->setVariable("TXT_LOG_TO", $this->lng->txt("to"));
00421 if (!is_array($_POST["log_to_date"]))
00422 {
00423 $date_input = ilUtil::makeDateSelect("log_to_date", "", "", "", 2004);
00424 $time_input = ilUtil::makeTimeSelect("log_to_time");
00425 }
00426 else
00427 {
00428 $date_input = ilUtil::makeDateSelect("log_to_date", $_POST["log_to_date"]["y"], $_POST["log_to_date"]["m"], $_POST["log_to_date"]["d"], 2004);
00429 $time_input = ilUtil::makeTimeSelect("log_to_time", TRUE, $_POST["log_to_time"]["h"], $_POST["log_to_time"]["m"]);
00430 }
00431 $this->tpl->setVariable("INPUT_LOG_TO", $date_input." / ".$time_input);
00432 $this->tpl->setVariable("TXT_LOG_TO_CALENDAR", $this->lng->txt("assessment_log_open_calendar"));
00433 $this->tpl->setVariable("INPUT_FIELDS_LOG_TO", "log_to_date");
00434 $this->tpl->setVariable("TXT_CREATE", $this->lng->txt("show"));
00435 $this->tpl->setVariable("TXT_EXPORT", $this->lng->txt("export"));
00436 $this->tpl->setVariable("TXT_TEST", $this->lng->txt("assessment_log_for_test"));
00437 $this->tpl->setVariable("TXT_SELECT_TEST", $this->lng->txt("assessment_log_select_test"));
00438 $this->tpl->parseCurrentBlock();
00439 }
00440
00441 function getAdminTabs(&$tabs_gui)
00442 {
00443 $this->getTabs($tabs_gui);
00444 }
00445
00451 function getTabs(&$tabs_gui)
00452 {
00453 global $rbacsystem;
00454
00455 if ($rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
00456 {
00457 $tabs_gui->addTarget("settings",
00458 $this->ctrl->getLinkTarget($this, "settings"), array("settings","","view"), "", "");
00459
00460 $tabs_gui->addTarget("logs",
00461 $this->ctrl->getLinkTarget($this, "logs"), array("logs","showLog", "exportLog"), "", "");
00462 }
00463
00464 if ($rbacsystem->checkAccess('edit_permission',$this->object->getRefId()))
00465 {
00466 $tabs_gui->addTarget("perm_settings",
00467 $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"), array("perm","info","owner"), 'ilpermissiongui');
00468 }
00469 }
00470 }
00471 ?>