%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/learning/admin/ |
Current File : /home/bitrix/www/bitrix/modules/learning/admin/learn_test_edit.php |
<? require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php"); if (!CModule::IncludeModule('learning')) { require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_after.php'); // second system's prolog if (IsModuleInstalled('learning') && defined('LEARNING_FAILED_TO_LOAD_REASON')) echo LEARNING_FAILED_TO_LOAD_REASON; else CAdminMessage::ShowMessage(GetMessage('LEARNING_MODULE_NOT_FOUND')); require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_admin.php'); // system's epilog exit(); } require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/learning/prolog.php"); IncludeModuleLangFile(__FILE__); ClearVars(); $message = null; $bVarsFromForm = false; $ID = intval($ID); $COURSE_ID = intval($COURSE_ID); $aTabs = array( array("DIV" => "edit1", "TAB" => GetMessage('LEARNING_TEST'), "ICON"=>"main_user_edit", "TITLE"=>GetMessage('LEARNING_TEST_TITLE')), array("DIV" => "edit2", "TAB" => GetMessage('LEARNING_DESC'), "ICON"=>"main_user_edit", "TITLE"=>GetMessage('LEARNING_DESC_TITLE')), array("DIV" => "edit3", "TAB" => GetMessage('LEARNING_MARKS'), "ICON"=>"main_user_edit", "TITLE"=>GetMessage('LEARNING_MARKS_TITLE')), ); $tabControl = new CAdminForm("testTabControl", $aTabs); $isReadAccess = false; $isCreateOrEditAccess = false; $isBtnsDisabled = true; $oAccess = CLearnAccess::GetInstance($USER->GetID()); $linkedLessonId = CCourse::CourseGetLinkedLesson ($COURSE_ID); if ($linkedLessonId !== false) { if ($oAccess->IsLessonAccessible ($linkedLessonId, CLearnAccess::OP_LESSON_READ)) $isReadAccess = true; if ($oAccess->IsLessonAccessible ($linkedLessonId, CLearnAccess::OP_LESSON_WRITE)) { $isReadAccess = true; $isCreateOrEditAccess = true; $isBtnsDisabled = false; } } if ($isReadAccess === false) { $APPLICATION->SetTitle(GetMessage('LEARNING_TESTS')); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); $aContext = array( array( "ICON" => "btn_list", "TEXT"=>GetMessage("LEARNING_BACK_TO_ADMIN"), "LINK"=>"learn_unilesson_admin.php?lang=" . LANG . '&PARENT_LESSON_ID=-1' . GetFilterParams("filter_"), "TITLE"=>GetMessage("LEARNING_BACK_TO_ADMIN") ), ); $context = new CAdminContextMenu($aContext); $context->Show(); CAdminMessage::ShowMessage(GetMessage("LEARNING_BAD_COURSE")); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php"); die(); } $arNewIDs = array(); $nextNum = 0; if ($_SERVER["REQUEST_METHOD"] == "POST" && strlen($_POST["Update"])>0 && check_bitrix_sessid() && $isCreateOrEditAccess) { $test = new CTest; foreach($_POST as $key=>$val) { if (substr($key, 0, 7) == "N_MARK_") { $arNewIDs[] = intval(substr($key, 7)); } } if (count($arNewIDs) > 0) $nextNum = max($arNewIDs); $QUESTIONS_AMOUNT = (intval(${"QUESTIONS_AMOUNT_".$QUESTIONS_FROM})>0 ? intval(${"QUESTIONS_AMOUNT_".$QUESTIONS_FROM}) : 0); $QUESTIONS_FROM_ID = (intval(${"QUESTIONS_FROM_ID_".$QUESTIONS_FROM})>0 ? intval(${"QUESTIONS_FROM_ID_".$QUESTIONS_FROM}) : 0); if ($CURRENT_INDICATION == "Y") { $CURRENT_INDICATION = ($CURRENT_INDICATION_PERCENT == "Y" ? 1 : 0) + ($CURRENT_INDICATION_MARK == "Y" ? 2 : 0); } else { $CURRENT_INDICATION = 0; } if ($FINAL_INDICATION == "Y") { $FINAL_INDICATION = ($FINAL_INDICATION_CORRECT_COUNT == "Y" ? 1 : 0) + ($FINAL_INDICATION_SCORE == "Y" ? 2 : 0) + ($FINAL_INDICATION_MARK == "Y" ? 4 : 0) + ($FINAL_INDICATION_MESSAGE == "Y" ? 8 : 0); } else { $FINAL_INDICATION = 0; } $MIN_TIME_BETWEEN_ATTEMPTS = $MIN_TIME_BETWEEN_ATTEMPTS_D * 60 * 24 + $MIN_TIME_BETWEEN_ATTEMPTS_H * 60 + $MIN_TIME_BETWEEN_ATTEMPTS_M; $NEXT_QUESTION_ON_ERROR = ($SHOW_ERRORS == "Y" && $NEXT_QUESTION_ON_ERROR == "N" && $PASSAGE_TYPE == "2") ? "N" : "Y"; $arFields = Array( "ACTIVE" => $ACTIVE, "COURSE_ID" => $COURSE_ID, "NAME" => $NAME, "CODE" => $CODE, "SORT" => $SORT, "DESCRIPTION" => $DESCRIPTION, "DESCRIPTION_TYPE" => $DESCRIPTION_TYPE, "TIME_LIMIT" => $TIME_LIMIT, "ATTEMPT_LIMIT" => $ATTEMPT_LIMIT, "COMPLETED_SCORE" => $COMPLETED_SCORE, "QUESTIONS_FROM" => $QUESTIONS_FROM, "QUESTIONS_AMOUNT" => $QUESTIONS_AMOUNT, "QUESTIONS_FROM_ID" => $QUESTIONS_FROM_ID, "RANDOM_QUESTIONS" => $RANDOM_QUESTIONS, "RANDOM_ANSWERS" => $RANDOM_ANSWERS, "APPROVED" => $APPROVED, "INCLUDE_SELF_TEST" => $INCLUDE_SELF_TEST, "PASSAGE_TYPE" => $PASSAGE_TYPE, "PREVIOUS_TEST_ID" => $PREVIOUS_TEST_ID, "PREVIOUS_TEST_SCORE" => $PREVIOUS_TEST_SCORE, "INCORRECT_CONTROL" => $INCORRECT_CONTROL, "CURRENT_INDICATION" => $CURRENT_INDICATION, "FINAL_INDICATION" => $FINAL_INDICATION, "SHOW_ERRORS" => $SHOW_ERRORS, "NEXT_QUESTION_ON_ERROR" => $NEXT_QUESTION_ON_ERROR, "MIN_TIME_BETWEEN_ATTEMPTS" => $MIN_TIME_BETWEEN_ATTEMPTS, ); if (strlen($arFields["COMPLETED_SCORE"]) <=0) { unset($arFields["COMPLETED_SCORE"]); $arFields["APPROVED"] = "N"; } if (intval($arFields["PREVIOUS_TEST_ID"]) <= 0) { $arFields["PREVIOUS_TEST_ID"] = false; } if (strlen($arFields["PREVIOUS_TEST_SCORE"]) <=0) { $arFields["PREVIOUS_TEST_SCORE"] = 0; } $DB->StartTransaction(); if($ID>0) { $actionType = "update"; $res = $test->Update($ID, $arFields); } else { $actionType = "add"; $ID = $test->Add($arFields); $res = ($ID>0); } if(!$res) { if($e = $APPLICATION->GetException()) $message = new CAdminMessage(GetMessage("LEARNING_ERROR"), $e); $bVarsFromForm = true; } else { //Marks $marks = CLTestMark::GetList(Array(),Array("TEST_ID" => $ID)); $arMarks = $arScores = array(); while ($m = $marks->GetNext()) { //delete? if (${"MARK_".$m["ID"]."_DEL"} == "Y") { if(!CLTestMark::Delete($m["ID"])) { $message = new CAdminMessage(Array("MESSAGE" => GetMessage("LEARNING_DELETE_ERROR").$m["ID"])); $bVarsFromForm = true; } } if(in_array(${"SCORE_".$m["ID"]}, $arScores)) { $message = new CAdminMessage(Array("MESSAGE" => str_replace("##SCORE##", ${"SCORE_".$m["ID"]}, GetMessage("LEARNING_SCORE_EXISTS_ERROR")))); $bVarsFromForm = true; } elseif(in_array(${"MARK_".$m["ID"]}, $arMarks)) { $message = new CAdminMessage(Array("MESSAGE" => str_replace("##MARK##", ${"MARK_".$m["ID"]}, GetMessage("LEARNING_MARK_EXISTS_ERROR")))); $bVarsFromForm = true; } else { if (${"MARK_".$m["ID"]."_DEL"} != "Y") { $arMarks[] = ${"MARK_".$m["ID"]}; $arScores[] = ${"SCORE_".$m["ID"]}; } $arFields = Array( "TEST_ID" => $ID, "SCORE" => ${"SCORE_".$m["ID"]}, "MARK" => ${"MARK_".$m["ID"]}, "DESCRIPTION" => ${"DESCRIPTION_".$m["ID"]}, ); $mrk = new CLTestMark; $res = $mrk->Update($m["ID"], $arFields); if (!$res) { $message = new CAdminMessage(Array("MESSAGE" => GetMessage("LEARNING_SAVE_ERROR").$m["ID"])); $bVarsFromForm = true; } } } //add new foreach ($arNewIDs as $i) { if (strlen(${"N_MARK_".$i})<=0 && strlen(${"N_SCORE_".$i})<=0) continue; if(in_array(${"N_SCORE_".$i}, $arScores)) { $message = new CAdminMessage(Array("MESSAGE" => str_replace("##SCORE##", ${"N_SCORE_".$i}, GetMessage("LEARNING_SCORE_EXISTS_ERROR")))); $bVarsFromForm = true; } elseif(in_array(${"N_MARK_".$i}, $arMarks)) { $message = new CAdminMessage(Array("MESSAGE" => str_replace("##MARK##", ${"N_MARK_".$i}, GetMessage("LEARNING_MARK_EXISTS_ERROR")))); $bVarsFromForm = true; } else { $arMarks[] = ${"N_MARK_".$i}; $arScores[] = ${"N_SCORE_".$i}; $arFields = Array( "SCORE" => ${"N_SCORE_".$i}, "MARK" => ${"N_MARK_".$i}, "DESCRIPTION" => ${"N_DESCRIPTION_".$i}, "TEST_ID" => $ID, ); $mark = new CLTestMark; $MarkID = $mark->Add($arFields); if (intval($MarkID)<=0) { if ($e = $APPLICATION->GetException()) $message = new CAdminMessage(GetMessage("LEARNING_ERROR"), $e); $bVarsFromForm = true; } } } if (sizeof($arScores) && !in_array(100, $arScores)) { $message = new CAdminMessage(Array("MESSAGE" => GetMessage("LEARNING_MAX_MARK_ERROR"))); $bVarsFromForm = true; } } //Redirect if (!$bVarsFromForm) { $DB->Commit(); if(strlen($apply)<=0) { if($from == "learn_admin") { LocalRedirect("/bitrix/admin/learn_unilesson_admin.php?lang=".LANG . '&PARENT_LESSON_ID=' . ($_GET['PARENT_LESSON_ID'] + 0) . '&LESSON_PATH=' . urlencode($_GET['LESSON_PATH']) ."&".GetFilterParams("filter_", false)); } elseif (strlen($return_url)>0) { if(strpos($return_url, "#TEST_ID#")!==false) { $return_url = str_replace("#TEST_ID#", $ID, $return_url); } LocalRedirect($return_url); } else { LocalRedirect("/bitrix/admin/learn_test_admin.php?lang=".LANG . "&COURSE_ID=" . $COURSE_ID . '&PARENT_LESSON_ID=' . ($_GET['PARENT_LESSON_ID'] + 0) . '&LESSON_PATH=' . urlencode($_GET['LESSON_PATH']) .GetFilterParams("filter_", false)); } } LocalRedirect("/bitrix/admin/learn_test_edit.php?lang=" . LANG . "&COURSE_ID=" . $COURSE_ID . '&PARENT_LESSON_ID=' . ($_GET['PARENT_LESSON_ID'] + 0) . '&LESSON_PATH=' . urlencode($_GET['LESSON_PATH']) . "&ID=" . $ID ."&tabControl_active_tab=".urlencode($tabControl_active_tab).GetFilterParams("filter_", false)); } else { if ($actionType == "add") { $ID = 0; } $DB->Rollback(); } } if($ID>0) $APPLICATION->SetTitle(str_replace("#ID#", $ID, GetMessage("LEARNING_EDIT_TITLE2"))); else $APPLICATION->SetTitle(GetMessage("LEARNING_EDIT_TITLE1")); //Defaults $str_ACTIVE = "Y"; $str_SORT = "500"; //$str_APPROVED = "Y"; $str_COMPLETED_SCORE = "95"; //$str_INCLUDE_SELF_TEST = "N"; $str_RANDOM_QUESTIONS = "Y"; $str_RANDOM_ANSWERS="Y"; $str_QUESTIONS_FROM="A"; $str_QUESTIONS_AMOUNT = "0"; $str_TIME_LIMIT = "0"; $str_ATTEMPT_LIMIT = "0"; $str_DESCRIPTION_TYPE = "text"; $str_SKIP_QUESTION = "N"; $str_FINAL_RESPONSE = "Y"; $str_PASSAGE_TYPE = "0"; $str_PREVIOUS_TEST_ID = "0"; $str_PREVIOUS_TEST_SCORE = "95"; $str_INCORRECT_CONTROL = "N"; $str_CURRENT_INDICATION_PERCENT = "N"; $str_CURRENT_INDICATION_MARK = "N"; $str_CURRENT_INDICATION = "N"; $str_FINAL_INDICATION_CORRECT_COUNT = "N"; $str_FINAL_INDICATION_SCORE = "N"; $str_FINAL_INDICATION_MARK = "N"; $str_FINAL_INDICATION_MESSAGE = "N"; $str_FINAL_INDICATION = "N"; $str_SHOW_ERRORS = "N"; $str_NEXT_QUESTION_ON_ERROR = "Y"; $test = new CTest; $res = $test->GetByID($ID); if(!$res->ExtractFields("str_")) { $ID = 0; } else { if ($str_CURRENT_INDICATION > 0) { $str_CURRENT_INDICATION_PERCENT = ($str_CURRENT_INDICATION & 1) ? "Y" : "N"; $str_CURRENT_INDICATION_MARK = ($str_CURRENT_INDICATION & 2) >> 1 ? "Y" : "N"; $str_CURRENT_INDICATION = "Y"; } if ($str_FINAL_INDICATION > 0) { $str_FINAL_INDICATION_CORRECT_COUNT = ($str_FINAL_INDICATION & 1) ? "Y" : "N"; $str_FINAL_INDICATION_SCORE = ($str_FINAL_INDICATION & 2) >> 1 ? "Y" : "N"; $str_FINAL_INDICATION_MARK = ($str_FINAL_INDICATION & 4) >> 2 ? "Y" : "N"; $str_FINAL_INDICATION_MESSAGE = ($str_FINAL_INDICATION & 8) >> 3 ? "Y" : "N"; $str_FINAL_INDICATION = "Y"; } $str_MIN_TIME_BETWEEN_ATTEMPTS_D = floor($str_MIN_TIME_BETWEEN_ATTEMPTS / (60 * 24)); $str_MIN_TIME_BETWEEN_ATTEMPTS_H = floor(($str_MIN_TIME_BETWEEN_ATTEMPTS - $str_MIN_TIME_BETWEEN_ATTEMPTS_D * 60 * 24) / 60); $str_MIN_TIME_BETWEEN_ATTEMPTS_M = $str_MIN_TIME_BETWEEN_ATTEMPTS - $str_MIN_TIME_BETWEEN_ATTEMPTS_D * 60 * 24 - $str_MIN_TIME_BETWEEN_ATTEMPTS_H * 60; } if($bVarsFromForm) { $ACTIVE = ($ACTIVE != "Y"? "N":"Y"); $APPROVED = ($APPROVED != "Y"? "N":"Y"); $RANDOM_QUESTIONS = ($RANDOM_QUESTIONS != "Y"? "N":"Y"); $RANDOM_ANSWERS = ($RANDOM_ANSWERS != "Y"? "N":"Y"); $INCORRECT_CONTROL = ($INCORRECT_CONTROL != "Y"? "N":"Y"); $CURRENT_INDICATION = ($CURRENT_INDICATION == 0 ? "N":"Y"); $FINAL_INDICATION = ($FINAL_INDICATION == 0 ? "N":"Y"); $SHOW_ERRORS = ($SHOW_ERRORS != "Y"? "N":"Y"); $NEXT_QUESTION_ON_ERROR = ($NEXT_QUESTION_ON_ERROR != "Y"? "N":"Y"); $DB->InitTableVarsForEdit("b_learn_test", "", "str_"); $str_CURRENT_INDICATION_PERCENT = ($CURRENT_INDICATION_PERCENT != "Y"? "N":"Y"); $str_CURRENT_INDICATION_MARK = ($CURRENT_INDICATION_MARK != "Y"? "N":"Y"); $str_FINAL_INDICATION_CORRECT_COUNT = ($FINAL_INDICATION_CORRECT_COUNT != "Y"? "N":"Y"); $str_FINAL_INDICATION_SCORE = ($FINAL_INDICATION_SCORE != "Y"? "N":"Y"); $str_FINAL_INDICATION_MARK = ($FINAL_INDICATION_MARK != "Y"? "N":"Y"); $str_FINAL_INDICATION_MESSAGE = ($FINAL_INDICATION_MESSAGE != "Y"? "N":"Y"); $str_MIN_TIME_BETWEEN_ATTEMPTS_D = intval($MIN_TIME_BETWEEN_ATTEMPTS_D); $str_MIN_TIME_BETWEEN_ATTEMPTS_H = intval($MIN_TIME_BETWEEN_ATTEMPTS_H); $str_MIN_TIME_BETWEEN_ATTEMPTS_M = intval($MIN_TIME_BETWEEN_ATTEMPTS_M); } require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_admin_after.php"); if ($message) echo $message->Show(); $aContext = array( array( "ICON" => "btn_list", "TEXT" => GetMessage("MAIN_ADMIN_MENU_LIST"), "LINK" => "learn_test_admin.php?lang=" . LANG . '&PARENT_LESSON_ID=' . ($_GET['PARENT_LESSON_ID'] + 0) . '&LESSON_PATH=' . htmlspecialcharsbx($_GET['LESSON_PATH']) . "&COURSE_ID=" . $COURSE_ID . GetFilterParams("filter_"), "TITLE" => GetMessage("MAIN_ADMIN_MENU_LIST") ), ); if ($ID > 0) { $aContext[] = array( "ICON" => "btn_new", "TEXT"=>GetMessage("MAIN_ADMIN_MENU_CREATE"), "LINK"=>"learn_test_edit.php?lang=" . LANG . "&COURSE_ID=" . $COURSE_ID . '&PARENT_LESSON_ID=' . ($_GET['PARENT_LESSON_ID'] + 0) . '&LESSON_PATH=' . htmlspecialcharsbx($_GET['LESSON_PATH']) . GetFilterParams("filter_"), "TITLE"=>GetMessage("LEARNING_ADD") ); $returnUrl = "/bitrix/admin/learn_test_admin.php?lang=" . LANG . "&COURSE_ID=" . $COURSE_ID . '&PARENT_LESSON_ID=' . ($_GET['PARENT_LESSON_ID'] + 0) . '&LESSON_PATH=' . urlencode($_GET['LESSON_PATH']) . GetFilterParams("filter_", false); $aContext[] = array( "ICON" => "btn_delete", "TEXT"=>GetMessage("MAIN_ADMIN_MENU_DELETE"), "LINK" => "javascript:if(confirm('".GetMessage("LEARNING_CONFIRM_DEL_MESSAGE")."'))window.location='learn_test_admin.php?lang=".LANG . "&COURSE_ID=" . $COURSE_ID . "&action=delete&ID=" . $ID . "&" . bitrix_sessid_get() . urlencode(GetFilterParams("filter_", false)) . '&return_url=' . urlencode(urlencode($returnUrl)) . "';", ); } $context = new CAdminContextMenu($aContext); $context->Show(); ?> <?php $tabControl->BeginEpilogContent();?> <?=bitrix_sessid_post()?> <?echo GetFilterHiddens("find_");?> <input type="hidden" name="Update" value="Y"> <input type="hidden" name="ID" value="<?echo $ID?>"> <input type="hidden" name="COURSE_ID" value="<?echo $COURSE_ID?>"> <input type="hidden" name="from" value="<?echo htmlspecialcharsbx($from)?>"> <?if(strlen($return_url)>0):?><input type="hidden" name="return_url" value="<?=htmlspecialcharsbx($return_url)?>"><?endif?> <?php $tabControl->EndEpilogContent();?> <?$tabControl->Begin();?> <?$tabControl->BeginNextFormTab();?> <!-- ID --> <?php $tabControl->BeginCustomField("ID", "ID", false);?> <?if($ID>0):?> <tr> <td><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td><?=$str_ID?></td> </tr> <? endif; ?> <?php $tabControl->EndCustomField("ID");?> <!-- Timestamp_X --> <?php $tabControl->BeginCustomField("TIMESTAMP_X", GetMessage("LEARNING_LAST_UPDATE"), false);?> <?if($ID>0):?> <tr> <td><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td><?=$str_TIMESTAMP_X?></td> </tr> <? endif; ?> <?php $tabControl->EndCustomField("TIMESTAMP_X");?> <?php $tabControl->BeginCustomField("ACTIVE", GetMessage("LEARNING_ACTIVE"), false);?> <!-- Active --> <tr> <td><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td><input type="checkbox" name="ACTIVE" value="Y"<?if($str_ACTIVE=="Y")echo " checked"?>></td> </tr> <?php $tabControl->EndCustomField("ACTIVE");?> <?php $tabControl->BeginCustomField("NAME", GetMessage("LEARNING_NAME"), false);?> <tr class="adm-detail-required-field"> <td><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td valign="top"> <input type="text" name="NAME" size="50" maxlength="255" value="<?echo $str_NAME?>"> </td> </tr> <?php $tabControl->EndCustomField("NAME");?> <?php $tabControl->BeginCustomField("SORT", GetMessage("LEARNING_SORT"), false);?> <!-- Sort --> <tr> <td><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="text" name="SORT" size="10" maxlength="10" value="<?echo $str_SORT?>"> </td> </tr> <?php $tabControl->EndCustomField("SORT");?> <?php $tabControl->BeginCustomField("QUESTIONS_FROM", GetMessage("LEARNING_QUESTIONS_FROM"), false);?> <tr> <td valign="top"><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <table> <tr> <td colspan="2"><input type="radio" name="QUESTIONS_FROM" id="QUESTIONS_FROM_A" value="A"<?if($str_QUESTIONS_FROM=="A" && intval($str_QUESTIONS_AMOUNT)==0)echo " checked"?> onClick="OnChangeAnswer('');"><label for="QUESTIONS_FROM_A"><? echo GetMessage("LEARNING_QUESTIONS_FROM_ALL")?></label></td> </tr> <?php $linkedLessonId = CCourse::CourseGetLinkedLesson ($COURSE_ID); if ($linkedLessonId === false) throw new Exception(); $oTree = CLearnLesson::GetTree ($linkedLessonId); $arSubLessons = $oTree->GetTreeAsList(); // because of some troubles with backward compatibility, some clients can have QUESTIONS_FROM === 'H' if($str_QUESTIONS_FROM=="H") { ?> <input style="display:none;" type="radio" name="QUESTIONS_FROM" value="H" checked="checked"> <input type="hidden" name="QUESTIONS_FROM_ID_H" value="<?php echo $str_QUESTIONS_FROM_ID; ?>"> <?php } ?> <tr> <td colspan="2"> <input type="radio" name="QUESTIONS_FROM" id="QUESTIONS_FROM_R" value="R" <?php if ( ($str_QUESTIONS_FROM=="R") && (intval($str_QUESTIONS_AMOUNT)==0) ) echo " checked "; ?> onclick="OnChangeAnswer('R');"><label for="QUESTIONS_FROM_R"><?php echo GetMessage("LEARNING_QUESTIONS_FROM_ALL_LESSON_WITH_SUBLESSONS"); ?></label> <select name="QUESTIONS_FROM_ID_R"> <?php foreach ($arSubLessons as $key => $arSubLesson) { if ( ($str_QUESTIONS_FROM=="R") && ($str_QUESTIONS_FROM_ID == $arSubLesson['LESSON_ID']) ) $htmlSelected = ' selected="selected" '; else $htmlSelected = ' '; ?> <option value="<?php echo $arSubLesson['LESSON_ID']; ?>" <?php echo $htmlSelected; ?>><?php echo str_repeat(' . ', $arSubLesson['#DEPTH_IN_TREE']) . htmlspecialcharsbx($arSubLesson['NAME']); ?></option> <?php } ?> </select> </td> </tr> <tr> <td colspan="2"> <input type="radio" name="QUESTIONS_FROM" id="QUESTIONS_FROM_S" value="S" <?php if ( ($str_QUESTIONS_FROM=="S") && (intval($str_QUESTIONS_AMOUNT)==0) ) echo " checked "; ?> onclick="OnChangeAnswer('S');"><label for="QUESTIONS_FROM_S"><?php echo GetMessage("LEARNING_QUESTIONS_FROM_ALL_LESSON"); ?></label> <select name="QUESTIONS_FROM_ID_S"> <?php foreach ($arSubLessons as $key => $arSubLesson) { if ( ($str_QUESTIONS_FROM=="S") && ($str_QUESTIONS_FROM_ID == $arSubLesson['LESSON_ID']) ) $htmlSelected = ' selected="selected" '; else $htmlSelected = ' '; ?> <option value="<?php echo $arSubLesson['LESSON_ID']; ?>" <?php echo $htmlSelected; ?>><?php echo str_repeat(' . ', $arSubLesson['#DEPTH_IN_TREE']) . htmlspecialcharsbx($arSubLesson['NAME']); ?></option> <?php } ?> </select> </td> </tr> <tr> <td colspan="2"><input type="radio" name="QUESTIONS_FROM" id="QUESTIONS_FROM_A2" value="A"<?if($str_QUESTIONS_FROM=="A" && intval($str_QUESTIONS_AMOUNT)!=0)echo " checked"?> onclick="OnChangeAnswer('A');"><label for="QUESTIONS_FROM_A2"><input type="text" name="QUESTIONS_AMOUNT_A" onclick="return false;" size="2" value="<?echo ($str_QUESTIONS_FROM=="A" && $str_QUESTIONS_AMOUNT!=0? $str_QUESTIONS_AMOUNT : "")?>"> <? echo GetMessage("LEARNING_QUESTIONS_FROM_COURSE")?></label></td> </tr> <tr> <td><input type="radio" name="QUESTIONS_FROM" id="QUESTIONS_FROM_C" value="C"<?if($str_QUESTIONS_FROM=="C")echo " checked"?> onclick="OnChangeAnswer('C');"><label for="QUESTIONS_FROM_C"><input type="text" name="QUESTIONS_AMOUNT_C" onclick="return false;" size="2" value="<?echo ($str_QUESTIONS_FROM=="C" ? $str_QUESTIONS_AMOUNT : "")?>"> <? echo GetMessage("LEARNING_QUESTIONS_FROM_CHAPTERS")?></label></td> </tr> <tr> <td><input type="radio" name="QUESTIONS_FROM" id="QUESTIONS_FROM_L" value="L"<?if($str_QUESTIONS_FROM=="L")echo " checked"?> onclick="OnChangeAnswer('L');"><label for="QUESTIONS_FROM_L"><input type="text" name="QUESTIONS_AMOUNT_L" onclick="return false;" size="2" value="<?echo ($str_QUESTIONS_FROM=="L" ? $str_QUESTIONS_AMOUNT : "")?>"> <? echo GetMessage("LEARNING_QUESTIONS_FROM_LESSONS")?></label></td> </tr> </table> <script type="text/javascript"> <? if ($str_QUESTIONS_AMOUNT == '0' && $str_QUESTIONS_FROM != "S" && $str_QUESTIONS_FROM != "H" && $str_QUESTIONS_FROM != "R") $str = ""; else $str = $str_QUESTIONS_FROM; ?> var QUESTIONS_FROM = '<?=$str?>'; function OnChangeAnswer(QUESTIONS_FROM) { var arFrom = new Array('A','L','C'); for (var i=0; i<arFrom.length; i++) { if (arFrom[i] != QUESTIONS_FROM) document.forms['testTabControl_form'].elements['QUESTIONS_AMOUNT_'+arFrom[i]].disabled = true; else document.forms['testTabControl_form'].elements['QUESTIONS_AMOUNT_'+arFrom[i]].disabled = false; } var arFromID = new Array('S','H', 'R'); for (var i=0; i<arFromID.length; i++) { if (document.forms['testTabControl_form'].elements['QUESTIONS_FROM_ID_'+arFromID[i]]) { if (arFromID[i] != QUESTIONS_FROM) document.forms['testTabControl_form'].elements['QUESTIONS_FROM_ID_'+arFromID[i]].disabled = true; else document.forms['testTabControl_form'].elements['QUESTIONS_FROM_ID_'+arFromID[i]].disabled = false; } } } OnChangeAnswer(QUESTIONS_FROM); </script> </td> </tr> <?php $tabControl->EndCustomField("QUESTIONS_FROM");?> <?php $tabControl->BeginCustomField("INCLUDE_SELF_TEST", GetMessage("LEARNING_INCLUDE_SELF_TEST"), false);?> <tr> <td><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="checkbox" name="INCLUDE_SELF_TEST" value="Y"<?if($str_INCLUDE_SELF_TEST=="Y")echo " checked"?>> </td> </tr> <?php $tabControl->EndCustomField("INCLUDE_SELF_TEST");?> <?php $tabControl->BeginCustomField("RANDOM_QUESTIONS", GetMessage("LEARNING_RANDOM_QUESTIONS"), false);?> <tr> <td><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="checkbox" name="RANDOM_QUESTIONS" value="Y"<?if($str_RANDOM_QUESTIONS=="Y")echo " checked"?>> </td> </tr> <?php $tabControl->EndCustomField("RANDOM_QUESTIONS");?> <?php $tabControl->BeginCustomField("RANDOM_ANSWERS", GetMessage("LEARNING_RANDOM_ANSWERS"), false);?> <tr> <td><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="checkbox" name="RANDOM_ANSWERS" value="Y"<?if($str_RANDOM_ANSWERS=="Y")echo " checked"?>> </td> </tr> <?php $tabControl->EndCustomField("RANDOM_ANSWERS");?> <?php $tabControl->BeginCustomField("ATTEMPT_LIMIT", GetMessage("LEARNING_ATTEMPT_LIMIT"), false);?> <tr> <td><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="text" name="ATTEMPT_LIMIT" value="<?echo $str_ATTEMPT_LIMIT?>" size="3"> <? echo GetMessage("LEARNING_ATTEMPT_LIMIT_HINT")?> </td> </tr> <?php $tabControl->EndCustomField("ATTEMPT_LIMIT");?> <?php $tabControl->BeginCustomField("MIN_TIME_BETWEEN_ATTEMPTS", GetMessage("LEARNING_MIN_TIME_BETWEEN_ATTEMPTS"), false);?> <tr> <td><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="text" name="MIN_TIME_BETWEEN_ATTEMPTS_D" value="<?echo $str_MIN_TIME_BETWEEN_ATTEMPTS_D?>" size="3"> <? echo GetMessage("LEARNING_MIN_TIME_BETWEEN_ATTEMPTS_D")?> <input type="text" name="MIN_TIME_BETWEEN_ATTEMPTS_H" value="<?echo $str_MIN_TIME_BETWEEN_ATTEMPTS_H?>" size="3"> <? echo GetMessage("LEARNING_MIN_TIME_BETWEEN_ATTEMPTS_H")?> <input type="text" name="MIN_TIME_BETWEEN_ATTEMPTS_M" value="<?echo $str_MIN_TIME_BETWEEN_ATTEMPTS_M?>" size="3"> <? echo GetMessage("LEARNING_MIN_TIME_BETWEEN_ATTEMPTS_M")?> </td> </tr> <?php $tabControl->EndCustomField("MIN_TIME_BETWEEN_ATTEMPTS");?> <?php $tabControl->BeginCustomField("TIME_LIMIT", GetMessage("LEARNING_TIME_LIMIT"), false);?> <tr> <td><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="text" name="TIME_LIMIT" value="<?echo $str_TIME_LIMIT?>" size="3"> <? echo GetMessage("LEARNING_TIME_LIMIT_HINT")?> </td> </tr> <?php $tabControl->EndCustomField("TIME_LIMIT");?> <?php $tabControl->BeginCustomField("APPROVED", GetMessage("LEARNING_APPROVED"), false);?> <tr> <td><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="checkbox" name="APPROVED" value="Y"<?if($str_APPROVED=="Y")echo " checked"?> onclick="OnChangeApproved(this.checked);"> </td> </tr> <?php $tabControl->EndCustomField("APPROVED");?> <?php $tabControl->BeginCustomField("COMPLETED_SCORE", GetMessage("LEARNING_COMPLETED_SCORE"), false);?> <tr> <td><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="text" name="COMPLETED_SCORE" size="3" maxlength="3" value="<?echo $str_COMPLETED_SCORE?>"> <? echo GetMessage("LEARNING_COMPLETED_SCORE2")?> </td> </tr> <script type="text/javascript"> function OnChangeApproved(val) { document.forms['testTabControl_form'].elements['COMPLETED_SCORE'].disabled = !val; } OnChangeApproved(<?=($str_APPROVED=="Y"?"true":"false")?>); </script> <?php $tabControl->EndCustomField("COMPLETED_SCORE");?> <?php $tabControl->BeginCustomField("PASSAGE_TYPE", GetMessage("LEARNING_PASSAGE_TYPE"), false);?> <tr> <td valign="top"><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <table> <tr> <td valign="top"><input type="radio" name="PASSAGE_TYPE" id="PASSAGE_TYPE_0" value="0"<?if($str_PASSAGE_TYPE=="0")echo " checked"?> onclick="toggleNextQ();"></td> <td><label for="PASSAGE_TYPE_0"><?=GetMessage("LEARNING_PASSAGE_TYPE_0")?></label></td> </tr> <tr> <td valign="top"><input type="radio" name="PASSAGE_TYPE" id="PASSAGE_TYPE_1" value="1"<?if($str_PASSAGE_TYPE=="1")echo " checked"?> onclick="toggleNextQ();"></td> <td><label for="PASSAGE_TYPE_1"><?=GetMessage("LEARNING_PASSAGE_TYPE_1")?></label></td> </tr> <tr> <td valign="top"><input type="radio" name="PASSAGE_TYPE" id="PASSAGE_TYPE_2" value="2"<?if($str_PASSAGE_TYPE=="2")echo " checked"?> onclick="toggleNextQ();"></td> <td><label for="PASSAGE_TYPE_2"><?=GetMessage("LEARNING_PASSAGE_TYPE_2")?></label></td> </tr> </table> </td> </tr> <?php $tabControl->EndCustomField("PASSAGE_TYPE");?> <?php $tabControl->BeginCustomField("PREVIOUS_TEST", GetMessage("LEARNING_PREVIOUS_TEST_ID"), false); $PREVIOUS_TEST_COURSE_ID = null; $t = CTest::GetList(array(), array("ACTIVE" => "Y", 'ID' => $str_PREVIOUS_TEST_ID)); if ($arData = $t->Fetch()) $PREVIOUS_TEST_COURSE_ID = $arData['COURSE_ID']; ?> <tr> <td><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td valign="top"> <script type="text/javascript"> function filterTests() { var course = BX("PREVIOUS_TEST_COURSE_ID"); var test = BX("PREVIOUS_TEST_ID"); var iSelectIndex = 0; var needSelectedIndex = 0; while(test.options.length > 1) { test.options.remove(1); } for(var i = 0, count = sourceList.options.length; i < count; i++) { if(sourceList.options[i].getAttribute("data-course") == course.options[course.selectedIndex].value) { iSelectIndex = iSelectIndex + 1; var tmp = sourceList.options[i].cloneNode(true); var newElem = document.createElement("option"); newElem.text = sourceList.options[i].innerHTML; newElem.value = sourceList.options[i].value; if (sourceList.options[i].index == sourceList.selectedIndex) needSelectedIndex = iSelectIndex; test.options.add(newElem); } } if (needSelectedIndex !== false) test.selectedIndex = needSelectedIndex; } </script> <select name="PREVIOUS_TEST_COURSE_ID" id="PREVIOUS_TEST_COURSE_ID" onchange="filterTests()"> <? // was: $course = CCourse::GetList(array("SORT" => "ASC"), array("MIN_PERMISSION" => "W")); $course = CCourse::GetList(array("SORT" => "ASC"), array("ACCESS_OPERATIONS" => CLearnAccess::OP_LESSON_READ)); while ($course->ExtractFields("f_")) { ?><option value="<?echo $f_ID ?>" <?if (IntVal($f_ID)==$PREVIOUS_TEST_COURSE_ID || (!isset($PREVIOUS_TEST_COURSE_ID) && IntVal($f_ID)==$COURSE_ID)) echo "selected";?>><?echo $f_NAME ?></option><? } ?> </select> <?$t = CTest::GetList(array(), array("ACTIVE" => "Y"));?> <select name="PREVIOUS_TEST_ID" id="PREVIOUS_TEST_ID" onchange="OnChangePreviousTest();"> <option value="0"><<? echo GetMessage("LEARNING_TEST_NO_DEPENDS")?>></option> <? while($t->ExtractFields("t_")): if (!isset($ID) || $ID != $t_ID): ?> <option data-course="<?php echo intval($t_COURSE_ID)?>" value="<?echo $t_ID?>"<?if($str_PREVIOUS_TEST_ID == $t_ID)echo " selected"?>><?echo $t_NAME?></option> <? endif; endwhile; ?> </select> <script type="text/javascript"> var sourceList = BX("PREVIOUS_TEST_ID").cloneNode(true); sourceList.selectedIndex = BX("PREVIOUS_TEST_ID").selectedIndex; filterTests(); </script> <? echo GetMessage("LEARNING_PREVIOUS_TEST_SCORE")?> <input type="text" name="PREVIOUS_TEST_SCORE" size="3" maxlength="3" value="<?echo $str_PREVIOUS_TEST_SCORE?>"> <? echo GetMessage("LEARNING_PREVIOUS_TEST_SCORE2")?> </td> </tr> <script type="text/javascript"> function OnChangePreviousTest() { document.forms['testTabControl_form'].elements['PREVIOUS_TEST_SCORE'].disabled = !document.forms['testTabControl_form'].elements['PREVIOUS_TEST_ID'].selectedIndex; } OnChangePreviousTest(); </script> <?php $tabControl->EndCustomField("PREVIOUS_TEST");?> <?php $tabControl->BeginCustomField("INCORRECT_CONTROL", GetMessage("LEARNING_INCORRECT_CONTROL"), false);?> <tr> <td><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="checkbox" name="INCORRECT_CONTROL" value="Y"<?if($str_INCORRECT_CONTROL=="Y")echo " checked"?>> </td> </tr> <?php $tabControl->EndCustomField("INCORRECT_CONTROL");?> <?php $tabControl->BeginCustomField("CURRENT_INDICATION", GetMessage("LEARNING_CURRENT_INDICATION"), false);?> <tr> <td valign="top"><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="checkbox" name="CURRENT_INDICATION" value="Y"<?if($str_CURRENT_INDICATION == "Y")echo " checked"?> onClick="toggleIndication(this.checked, 1);" id="indication_cb_1"> <div id="indication_1"> <label><input type="checkbox" name="CURRENT_INDICATION_PERCENT" value="Y"<?if($str_CURRENT_INDICATION_PERCENT == "Y")echo " checked"?>><? echo GetMessage("LEARNING_CURRENT_INDICATION_PERCENT")?></label><br /> <label><input type="checkbox" name="CURRENT_INDICATION_MARK" value="Y"<?if($str_CURRENT_INDICATION_MARK =="Y")echo " checked"?>><? echo GetMessage("LEARNING_CURRENT_INDICATION_MARK")?></label> </div> </td> </tr> <?php $tabControl->EndCustomField("CURRENT_INDICATION");?> <?php $tabControl->BeginCustomField("FINAL_INDICATION", GetMessage("LEARNING_FINAL_INDICATION"), false);?> <tr> <td valign="top"><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="checkbox" name="FINAL_INDICATION" value="Y"<?if($str_FINAL_INDICATION == "Y")echo " checked"?> onClick="toggleIndication(this.checked, 2);" id="indication_cb_2"> <div id="indication_2"> <label><input type="checkbox" name="FINAL_INDICATION_CORRECT_COUNT" value="Y"<?if($str_FINAL_INDICATION_CORRECT_COUNT == "Y")echo " checked"?>><? echo GetMessage("LEARNING_FINAL_INDICATION_CORRECT_COUNT")?></label><br /> <label><input type="checkbox" name="FINAL_INDICATION_SCORE" value="Y"<?if($str_FINAL_INDICATION_SCORE == "Y")echo " checked"?>><? echo GetMessage("LEARNING_FINAL_INDICATION_SCORE")?></label><br /> <label><input type="checkbox" name="FINAL_INDICATION_MARK" value="Y"<?if($str_FINAL_INDICATION_MARK == "Y")echo " checked"?>><? echo GetMessage("LEARNING_FINAL_INDICATION_MARK")?></label><br /> <label><input type="checkbox" name="FINAL_INDICATION_MESSAGE" value="Y"<?if($str_FINAL_INDICATION_MESSAGE == "Y")echo " checked"?>><? echo GetMessage("LEARNING_FINAL_INDICATION_MESSAGE")?></label> </div> </td> </tr> <script type="text/javascript"> function toggleIndication(visible, num) { if (visible) document.getElementById("indication_" + num).style.display = "block"; else document.getElementById("indication_" + num).style.display = "none"; } toggleIndication(document.getElementById("indication_cb_1").checked, 1); toggleIndication(document.getElementById("indication_cb_2").checked, 2); </script> <?php $tabControl->EndCustomField("FINAL_INDICATION");?> <?php $tabControl->BeginCustomField("SHOW_ERRORS", GetMessage("LEARNING_SHOW_ERRORS"), false);?> <tr> <td><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="checkbox" name="SHOW_ERRORS" value="Y"<?if($str_SHOW_ERRORS=="Y")echo " checked"?> onClick="toggleNextQ();" id="show_errors"> </td> </tr> <?php $tabControl->EndCustomField("SHOW_ERRORS");?> <?php $tabControl->BeginCustomField("NEXT_QUESTION_ON_ERROR", GetMessage("LEARNING_ON_ERROR"), false);?> <tr id="next_q_on_error"> <td valign="top"><? echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="radio" name="NEXT_QUESTION_ON_ERROR" value="Y"<?if($str_NEXT_QUESTION_ON_ERROR!="N")echo " checked"?>> <? echo GetMessage("LEARNING_NEXT_QUESTION_ON_ERROR")?><br /> <input type="radio" name="NEXT_QUESTION_ON_ERROR" value="N"<?if($str_NEXT_QUESTION_ON_ERROR=="N")echo " checked"?>> <? echo GetMessage("LEARNING_PREV_QUESTION_ON_ERROR")?> </td> </tr> <script type="text/javascript"> function toggleNextQ() { if (document.getElementById("show_errors").checked && document.getElementsByName("PASSAGE_TYPE")[2].checked) { document.getElementById("next_q_on_error").style.display = ""; } else { document.getElementById("next_q_on_error").style.display = "none"; } } toggleNextQ(); </script> <?php $tabControl->EndCustomField("NEXT_QUESTION_ON_ERROR");?> <?$tabControl->BeginNextFormTab();?> <?php $tabControl->BeginCustomField("DESCRIPTION", GetMessage("LEARNING_DESCRIPTION"), false);?> <?if(COption::GetOptionString("learning", "use_htmledit", "Y")=="Y" && CModule::IncludeModule("fileman")):?> <tr> <td colspan="2" align="center"> <?CFileMan::AddHTMLEditorFrame( "DESCRIPTION", $str_DESCRIPTION, "DESCRIPTION_TYPE", $str_DESCRIPTION_TYPE, array( 'height' => 450, 'width' => '100%' ), "N", 0, "", "", false, true, false, array('toolbarConfig' => CFileman::GetEditorToolbarConfig("learning_".(defined('BX_PUBLIC_MODE') && BX_PUBLIC_MODE == 1 ? 'public' : 'admin'))) );?> </td> </tr> <?else:?> <tr> <td align="center"><?echo GetMessage("LEARNING_DESC_TYPE")?>:</td> <td> <input type="radio" name="DESCRIPTION_TYPE" value="text"<?if($str_DESCRIPTION_TYPE!="html")echo " checked"?>> <?echo GetMessage("LEARNING_DESC_TYPE_TEXT")?> <input type="radio" name="DESCRIPTION_TYPE" value="html"<?if($str_DESCRIPTION_TYPE=="html")echo " checked"?>> <?echo GetMessage("LEARNING_DESC_TYPE_HTML")?> </td> </tr> <tr> <td colspan="2"> <textarea style="width:100%; height:250px;" name="DESCRIPTION" wrap="off"><?echo $str_DESCRIPTION?></textarea> </td> </tr> <?endif?> <?php $tabControl->EndCustomField("DESCRIPTION");?> <?$tabControl->BeginNextFormTab();?> <?php $tabControl->BeginCustomField("MARKS", GetMessage("LEARNING_MARKS"), false);?> <tr> <td colspan="2"> <table cellpadding="0" cellspacing="0" width="100%" class="internal" id="marks-table"> <tbody id="marks-table-tbody"> <tr class="heading"> <td align="center" width="10%">ID</td> <td align="center" width="15%"><?echo GetMessage("LEARNING_TEST_MARK_SCORE")?></td> <td align="center" width="20%"><?echo GetMessage("LEARNING_TEST_MARK")?></td> <td align="center" width="50%"><?echo GetMessage("LEARNING_TEST_MARK_MESSAGE")?></td> <td align="center" width="10%"><?echo GetMessage("LEARNING_TEST_MARK_DELETE")?></td> </tr> <?php if ($ID) { $marks = CLTestMark::GetList(Array("score" => "DESC"),Array("TEST_ID" => $ID)); while($arMarkData = $marks->Fetch()) { $s_ID = (integer) $arMarkData['ID']; $s_SCORE = (int) $arMarkData['SCORE']; $s_MARK = htmlspecialcharsbx($arMarkData['MARK']); $s_DESCRIPTION = htmlspecialcharsbx($arMarkData['DESCRIPTION']); ?> <tr> <td align="center"><?php echo $s_ID?></td> <td align="center"> <div style="white-space:nowrap;"><?php echo GetMessage("LEARNING_TEST_SCORE_TILL"); ?> <input type="text" size="4" name="SCORE_<?php echo $s_ID?>" value="<?php echo isset(${"SCORE_".$s_ID}) ? ((int) ${"SCORE_".$s_ID}) : $s_SCORE; ?>"> %</div> </td> <td align="center"> <input type="text" size="20" name="MARK_<?php echo $s_ID?>" value="<?php echo isset(${"MARK_".$s_ID}) ? htmlspecialcharsbx(${"MARK_".$s_ID}) : $s_MARK; ?>"> </td> <td align="center"> <input type="text" size="60" name="DESCRIPTION_<?php echo $s_ID?>" value="<?php echo isset(${"DESCRIPTION_".$s_ID}) ? htmlspecialcharsbx(${"DESCRIPTION_".$s_ID}) : $s_DESCRIPTION; ?>"> </td> <td align="center"><input type="checkbox" name="MARK_<?php echo $s_ID?>_DEL" value="Y"></td> </tr><?php } } foreach($arNewIDs as $i):?> <tr> <td align="center"> </td> <td align="center"> <div style="white-space:nowrap;"><?echo GetMessage("LEARNING_TEST_SCORE_TILL")?> <input type="text" size="4" name="N_SCORE_<?php echo $i?>" value="<?php echo isset(${"N_SCORE_".$i}) ? intval(${"N_SCORE_".$i}) : ""?>"> %</div> </td> <td align="center"> <input type="text" size="20" name="N_MARK_<?php echo $i?>" value="<?php echo isset(${"N_MARK_".$i}) ? htmlspecialcharsbx(${"N_MARK_".$i}) : ""?>"> </td> <td align="center"> <input type="text" size="60" name="N_DESCRIPTION_<?php echo $i?>" value="<?php echo isset(${"N_DESCRIPTION_".$i}) ? htmlspecialcharsbx(${"N_DESCRIPTION_".$i}) : ""?>"> </td> <td align="center"><a href="javascript:void(0);" onclick="BX.remove(this.parentNode.parentNode)"><img src="/bitrix/themes/.default/images/actions/delete_button.gif" border="0" width="20" height="20"/></a><input type="hidden" name="ANSWER_HIDDEN_ID[]" value="<?php echo (int) $i; ?>"></td> </tr> <?php endforeach?> </tbody> </table> <script type="text/javascript"> var nextNum = <?php echo $nextNum?>; function addMark() { var row = BX.create("tr", { children: [ BX.create('td', { html : ' ' }), BX.create('td', { html : '<div style="white-space:nowrap;"><?echo GetMessage("LEARNING_TEST_SCORE_TILL")?> <input type="text" size="4" name="N_SCORE_' + nextNum + '" value=""> %</div>', props : {align: 'center'} }), BX.create('td', { html : '<input type="text" size="20" name="N_MARK_' + nextNum + '" value="">', props : {align: 'center'} }), BX.create('td', { html : '<input type="text" size="60" name="N_DESCRIPTION_' + nextNum + '" value="">', props : {align: 'center'} }), BX.create('td', { html : '<a href="javascript:void(0);" onclick="BX.remove(this.parentNode.parentNode)"><img src="/bitrix/themes/.default/images/actions/delete_button.gif" border="0" width="20" height="20"/></a><input type="hidden" name="ANSWER_HIDDEN_ID[]" value="n' + nextNum + '">', props : {align: 'center'} }) ] }); nextNum++; BX("marks-table-tbody").appendChild(row); } <?php if ($ID == 0) { ?> addMark(); <?php } ?> </script> <br /> <a href="javascript:void(0)" class="adm-btn" onclick="addMark();"><?php echo GetMessage("LEARNING_ADD_MARK")?></a> </td> </tr> <?php $tabControl->EndCustomField("MARKS");?> <? $tabControl->Buttons( array( 'disabled' => $isBtnsDisabled, "back_url" =>"learn_test_admin.php?lang=". LANG . '&PARENT_LESSON_ID=' . ($_GET['PARENT_LESSON_ID'] + 0) . '&LESSON_PATH=' . htmlspecialcharsbx($_GET['LESSON_PATH']) . "&COURSE_ID=" . $COURSE_ID . GetFilterParams("find_", false))); $tabControl->arParams["FORM_ACTION"] = $APPLICATION->GetCurPage() . "?lang=" . LANG . "&COURSE_ID=" . $COURSE_ID . '&PARENT_LESSON_ID=' . ($_GET['PARENT_LESSON_ID'] + 0) . '&LESSON_PATH=' . htmlspecialcharsbx($_GET['LESSON_PATH']) . "&ID=" . $ID; $tabControl->Show(); $tabControl->ShowWarnings($tabControl->GetName(), $message); require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_admin.php");