%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/learning/admin/ |
Current File : /home/bitrix/www/bitrix/modules/learning/admin/learn_test_result_admin.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"]."/bitrix/modules/learning/prolog.php"); Bitrix\Main\Localization\Loc::loadLanguageFile(__FILE__); Bitrix\Main\Localization\Loc::loadLanguageFile(dirname(__FILE__)."/learn_question_edit.php"); $ATTEMPT_ID = intval($ATTEMPT_ID); //$r = CTestAttempt::GetByID($ATTEMPT_ID); // was: $r = CTestAttempt::GetList(Array(), Array("ID" => $ATTEMPT_ID, "MIN_PERMISSION" => "W")); $r = CTestAttempt::GetList( array(), array( 'ID' => $ATTEMPT_ID, 'ACCESS_OPERATIONS' => CLearnAccess::OP_LESSON_READ | CLearnAccess::OP_LESSON_WRITE ) ); $arAttempt = $r->GetNext(); $sTableID = "t_test_result_admin"; $oSort = new CAdminSorting($sTableID, "ID", "desc");// sort initializing $lAdmin = new CAdminList($sTableID, $oSort);// list initializing $arFilterFields = Array( "filter_question_name", "filter_id", "filter_answered", "filter_correct", //"filter_point", ); $lAdmin->InitFilter($arFilterFields);// filter initializing $arFilter = Array( "ID" => $filter_id, //"POINT" => $filter_point, "ANSWERED" => $filter_answered, "CORRECT" => $filter_correct, "?QUESTION_NAME" => $filter_question_name, //"ATTEMPT_ID" => $ATTEMPT_ID, ); if ($ATTEMPT_ID > 0) { $arFilter["ATTEMPT_ID"] = $ATTEMPT_ID; } if($lAdmin->EditAction()) // save from the list { foreach($FIELDS as $ID=>$arFields) { if(!$lAdmin->IsUpdated($ID)) continue; $DB->StartTransaction(); $ID = IntVal($ID); $ob = new CTestResult; if(!$ob->Update($ID, $arFields)) { if($e = $APPLICATION->GetException()) { $lAdmin->AddUpdateError(GetMessage("SAVE_ERROR").$ID.": ".$e->GetString(), $ID); $DB->Rollback(); } } else { $ob->OnTestResultChange($ID); } $DB->Commit(); } } // group and single actions processing if($arID = $lAdmin->GroupAction()) { if($_REQUEST['action_target']=='selected') { $rsData = CTestResult::GetList(Array($by => $order), $arFilter); while($arRes = $rsData->Fetch()) $arID[] = $arRes['ID']; } foreach($arID as $ID) { if(strlen($ID)<=0) continue; $ID = intval($ID); switch($_REQUEST['action']) { case "delete": @set_time_limit(0); $DB->StartTransaction(); if(!CTestResult::Delete($ID)) { $DB->Rollback(); $lAdmin->AddGroupError(GetMessage("LEARNING_DELETE_ERROR"), $ID); } else { CTestAttempt::RecountQuestions($ATTEMPT_ID); CTestAttempt::OnAttemptChange($ATTEMPT_ID); } $DB->Commit(); break; } } } // fetch data $rsData = CTestResult::GetList(Array($by=>$order),$arFilter); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); // navigation string setup $lAdmin->NavText($rsData->GetNavPrint(GetMessage("LEARNING_ADMIN_RESULTS"))); // list header $lAdmin->AddHeaders(array( array("id"=>"ID", "content"=>"ID", "sort"=>"id", "default"=>true), array("id"=>"QUESTION_NAME", "content"=>GetMessage('LEARNING_ADMIN_QUESTION_NAME'), "sort" =>"question_name", "default"=>true), //array("id"=>"ANSWER_NAME", "content"=>GetMessage('LEARNING_ADMIN_ANSWER_NAME'),"sort"=>"answer_name", "default"=>true), array("id"=>"ANSWERED", "content"=>GetMessage('LEARNING_ADMIN_ANSWERED'),"sort" => "answered", "default"=>true), array("id"=>"CORRECT", "content"=>GetMessage('LEARNING_ADMIN_CORRECT'),"sort" => "correct", "default"=>true), array("id"=>"POINT", "content"=>GetMessage('LEARNING_ADMIN_POINT'),"sort"=>"point", "default"=>true), array("id"=>"RESPONSE_TEXT", "content"=>GetMessage('LEARNING_ADMIN_USER_RESPONSE_TEXT'), "default"=>true), array("id"=>"CORRECT_REQUIRED", "content"=>GetMessage('LEARNING_CORRECT_REQUIRED'), "default"=> false), )); // building list while($arRes = $rsData->NavNext(true, "f_")) { $arRes['RESPONSE_TEXT'] = ''; $result = CLQuestion::GetByID($arRes['QUESTION_ID']); $arData = $result->Fetch(); if ($arData['QUESTION_TYPE'] === 'T') $arRes['RESPONSE_TEXT'] = $arRes['RESPONSE']; elseif ( ! empty($arRes['RESPONSE']) ) { $arResponseIDs = explode(',', $arRes['RESPONSE']); foreach ($arResponseIDs as $responseID) { $rsResponse = CLAnswer::GetByID((int) $responseID); $arResponseData = $rsResponse->GetNext(); if (strlen($arRes['RESPONSE_TEXT']) > 0) $arRes['RESPONSE_TEXT'] .= '<hr>'; $arRes['RESPONSE_TEXT'] .= $arResponseData['ANSWER']; } } $row =& $lAdmin->AddRow($f_ID, $arRes); /* if (!$row->bEditMode && $f_ANSWERED=="Y" && $f_POINT == 0 ) $row->AddViewField("POINT","<div class=\"learning-wrong-answer\">".$f_POINT."</div>"); else $row->AddInputField("POINT", Array("size"=>"3")); */ $row->AddInputField("POINT", Array("size"=>"3")); //$row->AddViewField("ANSWERED",$f_ANSWERED=="Y"?GetMessage("LEARNING_YES"):GetMessage("LEARNING_NO")); $row->AddCheckField("ANSWERED"); //$row->AddViewField("CORRECT",$f_CORRECT=="Y"?GetMessage("LEARNING_YES"):GetMessage("LEARNING_NO")); $row->AddCheckField("CORRECT"); $row->AddViewField('RESPONSE_TEXT', $arRes['RESPONSE_TEXT']); $row->AddViewField("CORRECT_REQUIRED", $arData["CORRECT_REQUIRED"] === "Y" ? GetMessage("LEARNING_YES") : GetMessage("LEARNING_NO")); $arActions = Array(); $arActions[] = array( "ICON"=>"edit", "DEFAULT" => "Y", "TEXT"=>GetMessage("MAIN_ADMIN_MENU_EDIT"), "ACTION"=>$lAdmin->ActionRedirect("learn_test_result_edit.php?lang=".LANG."&ID=".$f_ID."&ATTEMPT_ID=".$ATTEMPT_ID.GetFilterParams("filter_", false)) ); $arActions[] = array("SEPARATOR"=>true); $arActions[] = array( "ICON"=>"delete", "TEXT"=>GetMessage("MAIN_ADMIN_MENU_DELETE"), "ACTION"=>"if(confirm('".GetMessageJS('LEARNING_CONFIRM_DEL_MESSAGE')."')) ".$lAdmin->ActionDoGroup($f_ID, "delete","ATTEMPT_ID=".$ATTEMPT_ID)); $row->AddActions($arActions); } // list footer $lAdmin->AddFooter( array( array("title"=>GetMessage("MAIN_ADMIN_LIST_SELECTED"), "value"=>$rsData->SelectedRowsCount()), array("counter"=>true, "title"=>GetMessage("MAIN_ADMIN_LIST_CHECKED"), "value"=>"0"), ) ); $lAdmin->AddGroupActionTable(Array( "delete"=>GetMessage("MAIN_ADMIN_LIST_DELETE"), )); $adminChain->AddItem(array("TEXT"=>GetMessage("LEARNING_ADMIN_RESULTS"), "LINK"=>"")); $lAdmin->AddAdminContextMenu(Array()); $lAdmin->CheckListMode(); $APPLICATION->SetTitle(GetMessage("LEARNING_ADMIN_TITLE").($arAttempt ? ": ".$arAttempt["~TEST_NAME"].": ".$arAttempt["~USER_NAME"] : "")); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); if (defined("LEARNING_ADMIN_ACCESS_DENIED")) $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"), false); $filter = new CAdminFilter( $sTableID."_filter", array( "ID", GetMessage("LEARNING_ADMIN_ANSWERED"), GetMessage("LEARNING_ADMIN_CORRECT"), ) ); ?> <form name="form1" method="GET" action="<?echo $APPLICATION->GetCurPage()?>" onsubmit="return this.set_filter.onclick();"> <?$filter->Begin();?> <tr> <td><b><?echo GetMessage("LEARNING_ADMIN_QUESTION_NAME")?>:</b></td> <td align="left"> <input type="text" name="filter_question_name" size="50" value="<?echo htmlspecialcharsex($filter_question_name)?>" size="30"> <?=ShowFilterLogicHelp()?> </td> </tr> <tr> <td>ID:</b></td> <td><input type="text" name="filter_id" value="<?echo htmlspecialcharsbx($filter_id)?>" size="47"></td> </tr> <tr> <td><?=GetMessage("LEARNING_ADMIN_ANSWERED")?>:</td> <td> <? $arr = array("reference"=>array(GetMessage("LEARNING_YES"), GetMessage("LEARNING_NO")), "reference_id"=>array("Y","N")); echo SelectBoxFromArray("filter_answered", $arr, htmlspecialcharsex($filter_answered), GetMessage('LEARNING_ALL')); ?> </td> </tr> <tr> <td><?=GetMessage("LEARNING_ADMIN_CORRECT")?>:</td> <td> <? $arr = array("reference"=>array(GetMessage("LEARNING_YES"), GetMessage("LEARNING_NO")), "reference_id"=>array("Y","N")); echo SelectBoxFromArray("filter_correct", $arr, htmlspecialcharsex($filter_correct), GetMessage('LEARNING_ALL')); ?> </td> </tr> <? $filter->Buttons(array( "table_id"=>$sTableID, "url"=>$APPLICATION->GetCurPage()."?ATTEMPT_ID=".$ATTEMPT_ID.GetFilterParams("filter_", false), "form"=>"form1") ); $filter->End();?> </form> <?$lAdmin->DisplayList();?> <?require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_admin.php");?>