GetID()); $COURSE_ID = intval($COURSE_ID); $course = CCourse::GetByID($COURSE_ID); $bBadCourse = true; try { if ($arCourse = $course->Fetch()) { $linkedLessonId = CCourse::CourseGetLinkedLesson ($COURSE_ID); if ( ( $linkedLessonId !== false) && $oAccess->IsLessonAccessible ($linkedLessonId, CLearnAccess::OP_LESSON_READ) ) { $bBadCourse = false; } else $bBadCourse = true; } else $bBadCourse = true; } catch (Exception $e) { $bBadCourse = true; } $isReadOnly = true; try { if ($oAccess->IsLessonAccessible ($linkedLessonId, CLearnAccess::OP_LESSON_WRITE)) $isReadOnly = false; } catch (Exception $e) { $isReadOnly = true; } if ($bBadCourse) { $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(); } $sTableID = "t_test_admin"; $oSort = new CAdminSorting($sTableID, "sort", "asc");// sort initializing $lAdmin = new CAdminList($sTableID, $oSort);// list initializing $arFilterFields = Array( "filter_name", "filter_active", ); $lAdmin->InitFilter($arFilterFields);// filter initializing $arFilter = Array( "ACTIVE" => $filter_active, "?NAME" => $filter_name, "COURSE_ID" => $COURSE_ID, ); if ( ! $isReadOnly && $lAdmin->EditAction()) // save from the list { foreach($FIELDS as $ID => $arFields) { $ID = intval($ID); if(!$lAdmin->IsUpdated($ID)) continue; $DB->StartTransaction(); $ob = new CTest; if(!$ob->Update($ID, $arFields)) { if($e = $APPLICATION->GetException()) { $e = $APPLICATION->GetException(); $lAdmin->AddUpdateError(GetMessage("SAVE_ERROR").$ID.": ".$e->GetString(), $ID); $DB->Rollback(); } } $DB->Commit(); } } // group and single actions processing if( ! $isReadOnly && ($arID = $lAdmin->GroupAction()) ) { if($_REQUEST['action_target']=='selected') { $rsData = CTest::GetList(Array($by=>$order), $arFilter); while($arRes = $rsData->Fetch()) $arID[] = $arRes['ID']; } foreach($arID as $ID) { if($ID == '') continue; $ID = intval($ID); switch($_REQUEST['action']) { case "delete": @set_time_limit(0); $DB->StartTransaction(); $ch = new CTest; if(!$ch->Delete($ID)) { $DB->Rollback(); $lAdmin->AddGroupError(GetMessage("LEARNING_DELETE_ERROR"), $ID); } $DB->Commit(); break; case "activate": case "deactivate": $ch = new CTest; $arFields = Array("ACTIVE"=>($_REQUEST['action']=="activate"?"Y":"N")); if(!$ch->Update($ID, $arFields)) if($e = $APPLICATION->GetException()) $lAdmin->AddGroupError(GetMessage("SAVE_ERROR").$ID.": ".$e->GetString(), $ID); break; } } if(isset($return_url) && $return_url <> '' && check_bitrix_sessid()) LocalRedirect($return_url); } // fetch data $rsData = CTest::GetList(Array($by=>$order),$arFilter); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); // navigation string setup $lAdmin->NavText($rsData->GetNavPrint(GetMessage("LEARNING_TESTS"))); // list header $lAdmin->AddHeaders(array( array("id"=>"ID", "content"=>"ID", "sort"=>"id", "default"=>true), array("id"=>"TIMESTAMP_X","content"=>GetMessage('LEARNING_COURSE_ADM_DATECH'), "sort"=>"timestamp_x", "default"=>true), array("id"=>"NAME", "content"=>GetMessage('LEARNING_NAME'), "sort"=>"name", "default"=>true), array("id"=>"SORT", "content"=>GetMessage('LEARNING_COURSE_ADM_SORT'),"sort"=>"sort", "default"=>true), array("id"=>"ACTIVE", "content"=>GetMessage('LEARNING_COURSE_ADM_ACT'),"sort"=>"active", "default"=>true), array("id"=>"TESTS_STATS", "content"=>GetMessage('LEARNING_TEST_ADM_STATS'), "default"=>true), )); // building list while($arRes = $rsData->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($f_ID, $arRes); $arStat = CTest::GetStats($f_ID); $row->AddCheckField("ACTIVE"); $row->AddInputField("NAME",Array("size"=>"35")); $row->AddInputField("SORT", Array("size"=>"3")); $index = '-'; if ($arStat["ALL_CNT"] > 0.1) { $index = 100 * ($arStat["CORRECT_CNT"] / $arStat["ALL_CNT"]); $index = round ($index, 1); $index = sprintf("%03.1f", $index) . '%'; } $attemptUrl = "learn_attempt_admin.php?lang=".LANG."&filter_test_id=".$f_ID."&set_filter=Y&&filter_status=F"; $row->AddViewField("TESTS_STATS", $index. ' ('.$arStat["CORRECT_CNT"].' / '.$arStat["ALL_CNT"].')' ); $arActions = array(); $editActionText = GetMessage("MAIN_ADMIN_MENU_OPEN"); if ( ! $isReadOnly ) $editActionText = GetMessage("MAIN_ADMIN_MENU_EDIT"); $editUrl = "learn_test_edit.php?lang=" . LANG . "&COURSE_ID=" . $COURSE_ID . '&PARENT_LESSON_ID=' . intval($_GET['PARENT_LESSON_ID']) . '&LESSON_PATH=' . htmlspecialcharsbx($_GET['LESSON_PATH']) . "&ID=" . $f_ID . "&filter=Y&set_filter=Y"; $row->AddViewField("NAME", "".$f_NAME.""); $arActions[] = array( "ICON" => "edit", "DEFAULT" => "Y", "TEXT" => $editActionText, "ACTION" => $lAdmin->ActionRedirect($editUrl) ); if ( ! $isReadOnly ) { $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",'COURSE_ID='.$COURSE_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"), ) ); if ( ! $isReadOnly ) { // group actions buttons $lAdmin->AddGroupActionTable(Array( "activate"=>GetMessage("MAIN_ADMIN_LIST_ACTIVATE"), "deactivate"=>GetMessage("MAIN_ADMIN_LIST_DEACTIVATE"), "delete"=>GetMessage("MAIN_ADMIN_LIST_DELETE"), ) ); $aContext[] = array( "ICON" => "btn_new", "TEXT"=>GetMessage("LEARNING_ADD"), "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_ALT") ); } $lAdmin->AddAdminContextMenu($aContext); $lAdmin->CheckListMode(); $APPLICATION->SetTitle($arCourse["NAME"].": ".GetMessage('LEARNING_TESTS')); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); $filter = new CAdminFilter( $sTableID."_filter", array( GetMessage("LEARNING_F_ACTIVE2"), ) ); ?>