PageRenderTime 45ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/learning/admin/learn_test_result_edit.php

https://gitlab.com/alexprowars/bitrix
PHP | 254 lines | 214 code | 38 blank | 2 comment | 27 complexity | cf51ce20184521be4cc2b660b0e9e0f1 MD5 | raw file
  1. <?
  2. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
  3. if (!CModule::IncludeModule('learning'))
  4. {
  5. require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_after.php'); // second system's prolog
  6. if (IsModuleInstalled('learning') && defined('LEARNING_FAILED_TO_LOAD_REASON'))
  7. echo LEARNING_FAILED_TO_LOAD_REASON;
  8. else
  9. CAdminMessage::ShowMessage(GetMessage('LEARNING_MODULE_NOT_FOUND'));
  10. require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_admin.php'); // system's epilog
  11. exit();
  12. }
  13. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/learning/prolog.php");
  14. IncludeModuleLangFile(__FILE__);
  15. ClearVars();
  16. $ATTEMPT_ID = intval($ATTEMPT_ID);
  17. $ID = intval($ID);
  18. $bBadResult = false;
  19. $message = null;
  20. //$r = CTestAttempt::GetByID($ATTEMPT_ID);
  21. // was: $r = CTestAttempt::GetList(Array(), Array("ID" => $ATTEMPT_ID, "MIN_PERMISSION" => "W"));
  22. $r = CTestAttempt::GetList(Array(), Array("ID" => $ATTEMPT_ID, 'ACCESS_OPERATIONS' => CLearnAccess::OP_LESSON_READ | CLearnAccess::OP_LESSON_WRITE));
  23. if(!$arAttempt = $r->GetNext())
  24. $bBadResult = true;
  25. if (!$bBadResult)
  26. {
  27. $r = CTestResult::GetByID($ID);
  28. if(!$r->ExtractFields("str_"))
  29. $bBadResult = true;
  30. }
  31. if($bBadResult)
  32. {
  33. $APPLICATION->SetTitle(GetMessage("LEARNING_ADMIN_TITLE"));
  34. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
  35. $aContext = array(
  36. array(
  37. "ICON" => "btn_list",
  38. "TEXT"=>GetMessage("LEARNING_BACK_TO_ADMIN"),
  39. "LINK"=>"learn_unilesson_admin.php?lang=" . LANG,
  40. "TITLE"=>GetMessage("LEARNING_BACK_TO_ADMIN")
  41. ),
  42. );
  43. $context = new CAdminContextMenu($aContext);
  44. $context->Show();
  45. CAdminMessage::ShowMessage(GetMessage("LEARNING_BAD_ATTEMPT_ID_EX"));
  46. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
  47. die();
  48. }
  49. $aTabs = array(
  50. array("DIV" => "edit1", "TAB" => GetMessage("LEARNING_ADMIN_TAB1"), "ICON"=>"main_user_edit", "TITLE"=>GetMessage("LEARNING_ADMIN_TAB1_EX")),
  51. );
  52. $tabControl = new CAdminForm("testResultTabControl", $aTabs);
  53. if ($_SERVER["REQUEST_METHOD"] == "POST" && $Update <> '' && check_bitrix_sessid())
  54. {
  55. if ($ANSWERED != "Y")
  56. {
  57. $ANSWERED = "N";
  58. $RESPONSE = "";
  59. $POINT = 0;
  60. }
  61. elseif ($CORRECT != "Y")
  62. {
  63. $CORRECT = "N";
  64. $POINT = 0;
  65. }
  66. $arFields = Array(
  67. "ANSWERED" => $ANSWERED,
  68. "CORRECT" => $CORRECT,
  69. "RESPONSE" => $RESPONSE,
  70. "POINT"=> $POINT,
  71. );
  72. $DB->StartTransaction();
  73. $tr = new CTestResult;
  74. $res = $tr->Update($ID, $arFields);
  75. if(!$res)
  76. {
  77. $DB->Rollback();
  78. if($e = $APPLICATION->GetException())
  79. $message = new CAdminMessage(GetMessage("LEARNING_ERROR"), $e);
  80. $bVarsFromForm = true;
  81. }
  82. else
  83. {
  84. $tr->OnTestResultChange($ID);
  85. $DB->Commit();
  86. if($apply == '')
  87. {
  88. if($return_url <> '')
  89. LocalRedirect($return_url);
  90. else
  91. LocalRedirect("/bitrix/admin/learn_test_result_admin.php?lang=".LANG."&ATTEMPT_ID=".$ATTEMPT_ID.GetFilterParams("filter_", false));
  92. }
  93. LocalRedirect("/bitrix/admin/learn_test_result_edit.php?lang=".LANG."&ID=".$ID."&ATTEMPT_ID=".$ATTEMPT_ID.GetFilterParams("filter_", false));
  94. }
  95. }
  96. if($bVarsFromForm)
  97. {
  98. $DB->InitTableVarsForEdit("b_learn_test_result", "", "str_");
  99. }
  100. $adminChain->AddItem(array("TEXT"=>GetMessage("LEARNING_ADMIN_RESULTS"), "LINK"=>"learn_test_result_admin.php?lang=". LANG."&ATTEMPT_ID=".$ATTEMPT_ID.GetFilterParams("filter_", false)));
  101. $APPLICATION->SetTitle($arAttempt["~TEST_NAME"].": ".GetMessage("LEARNING_ADMIN_TITLE"));
  102. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
  103. $aContext = array();
  104. $aContext = array(
  105. array(
  106. "ICON" => "btn_list",
  107. "TEXT"=> GetMessage("MAIN_ADMIN_MENU_LIST"),
  108. "LINK"=> "learn_test_result_admin.php?lang=". LANG."&ATTEMPT_ID=".$ATTEMPT_ID.GetFilterParams("filter_", false),
  109. ),
  110. );
  111. $context = new CAdminContextMenu($aContext);
  112. $context->Show();
  113. ?>
  114. <?
  115. if ($message)
  116. echo $message->Show();
  117. ?>
  118. <?php $tabControl->BeginEpilogContent();?>
  119. <?=bitrix_sessid_post()?>
  120. <?echo GetFilterHiddens("filter_");?>
  121. <input type="hidden" name="Update" value="Y">
  122. <input type="hidden" name="from" value="<?echo htmlspecialcharsbx($from)?>">
  123. <input type="hidden" name="return_url" value="<?echo htmlspecialcharsbx($return_url)?>">
  124. <input type="hidden" name="ID" value="<?echo $ID?>">
  125. <?php $tabControl->EndEpilogContent();?>
  126. <?$tabControl->Begin();?>
  127. <?$tabControl->BeginNextFormTab();?>
  128. <?php $tabControl->BeginCustomField("USER_NAME", GetMessage("LEARNING_ADMIN_STUDENT"), false);?>
  129. <tr>
  130. <td width="40%"><?php echo $tabControl->GetCustomLabelHTML()?>:</td>
  131. <td>
  132. <?=$arAttempt["USER_NAME"]?>
  133. </td>
  134. </tr>
  135. <?php $tabControl->EndCustomField("USER_NAME");?>
  136. <?php $tabControl->BeginCustomField("ANSWERED", GetMessage("LEARNING_ADMIN_ANSWERED"), false);?>
  137. <tr>
  138. <td><?php echo $tabControl->GetCustomLabelHTML()?>:</td>
  139. <td>
  140. <input type="checkbox" name="ANSWERED" value="Y"<?if($str_ANSWERED=="Y")echo " checked"?> onclick="OnChangeAnswered(this.checked)">
  141. </td>
  142. </tr>
  143. <?php $tabControl->EndCustomField("ANSWERED");?>
  144. <?php $tabControl->BeginCustomField("CORRECT", GetMessage("LEARNING_ADMIN_CORRECT"), false);?>
  145. <tr>
  146. <td><?php echo $tabControl->GetCustomLabelHTML()?>:</td>
  147. <td>
  148. <input type="checkbox" name="CORRECT" value="Y"<?if($str_CORRECT=="Y")echo " checked"?> onclick="OnChangeAnswered(this.checked)">
  149. </td>
  150. </tr>
  151. <?php $tabControl->EndCustomField("CORRECT");?>
  152. <?php $tabControl->BeginCustomField("POINT", GetMessage("LEARNING_ADMIN_POINT"), false);?>
  153. <tr>
  154. <td><?php echo $tabControl->GetCustomLabelHTML()?>:</td>
  155. <td>
  156. <input type="text" name="POINT" size="4" maxlength="255" value="<?echo $str_POINT?>">
  157. </td>
  158. </tr>
  159. <?php $tabControl->EndCustomField("POINT");?>
  160. <?php $tabControl->BeginCustomField("QUESTION", GetMessage("LEARNING_ADMIN_QUESTION"), false);?>
  161. <tr>
  162. <td><?php echo $tabControl->GetCustomLabelHTML()?>:</td>
  163. <td>
  164. <?=$str_QUESTION_NAME?> [<a href="learn_question_edit.php?lang=<?=LANG?>&ID=<?=$str_QUESTION_ID?>" title="<?=GetMessage("LEARNING_ADMIN_EDIT_QUESTION")?>"><?=$str_QUESTION_ID?></a>]
  165. </td>
  166. </tr>
  167. <?php $tabControl->EndCustomField("QUESTION");?>
  168. <?php $tabControl->BeginCustomField("ANSWER", GetMessage("LEARNING_ADMIN_ANSWER"), false);?>
  169. <tr valign="top">
  170. <td><?php echo $tabControl->GetCustomLabelHTML()?>:</td>
  171. <td>
  172. <table>
  173. <?php if ($str_QUESTION_TYPE == "T"):?>
  174. <tr>
  175. <td><textarea rows="5" cols="50" name="RESPONSE"><?php echo $str_RESPONSE?></textarea></td>
  176. </tr>
  177. <?php
  178. else:
  179. $arR = explode(',', $str_RESPONSE);
  180. $r = CLAnswer::GetList(Array("ID" => "ASC"),Array("QUESTION_ID"=>$str_QUESTION_ID));
  181. while($arAnswers = $r->GetNext()):
  182. ?>
  183. <tr>
  184. <td>
  185. <?if ($str_QUESTION_TYPE == "M"):?>
  186. <input type="checkbox" name="RESPONSE[]" value="<?=$arAnswers["ID"]?>" <?if(in_array($arAnswers["ID"],$arR)) echo "checked"?>>
  187. <?else:?>
  188. <input type="radio" name="RESPONSE[]" value="<?=$arAnswers["ID"]?>" <?if(in_array($arAnswers["ID"],$arR)) echo "checked"?>>
  189. <?endif?>
  190. </td>
  191. <td><?=$arAnswers["ANSWER"]?></td>
  192. </tr>
  193. <?php endwhile?>
  194. <?php endif?>
  195. </table>
  196. </td>
  197. </tr>
  198. <?php $tabControl->EndCustomField("ANSWER");?>
  199. <?
  200. $tabControl->Buttons(Array("back_url" =>"learn_test_result_admin.php?lang=". LANG."&ATTEMPT_ID=".$ATTEMPT_ID.GetFilterParams("filter_", false)));
  201. $tabControl->arParams["FORM_ACTION"] = $APPLICATION->GetCurPage()."?lang=".LANG."&ATTEMPT_ID=".$ATTEMPT_ID.GetFilterParams("filter_");
  202. $tabControl->Show();?>
  203. <script type="text/javascript">
  204. function OnChangeAnswered(val)
  205. {
  206. document.forms["testResultTabControl_form"].elements['POINT'].disabled = !val;
  207. document.forms["testResultTabControl_form"].elements['CORRECT'].disabled = !val && !document.forms["testResultTabControl_form"].elements['ANSWERED'].checked;
  208. var r = document.forms["testResultTabControl_form"].elements['RESPONSE[]'];
  209. if (!r)
  210. return;
  211. for (i=0; i < r.length; i++)
  212. r[i].disabled = !val;
  213. }
  214. OnChangeAnswered(<?=($str_ANSWERED=="Y"?"true":"false")?>);
  215. </script>
  216. <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");?>