%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/learning/admin/ |
Current File : /home/bitrix/www/bitrix/modules/learning/admin/menu.php |
<?php if ( ! CModule::IncludeModule('learning') ) return (false); if (!($USER->GetID() > 0)) return (false); IncludeModuleLangFile(__FILE__); $arSubMenu = $arSubCourse = Array(); function __learning_admin_get_menu ($THIS, $arPath = array(), $deep = 0, &$immediateChildsIds, $loadOnlySpecialEntities = false) { $immediateChildsIds = array(); // puts here ids of all immediate childs $deep = (int) $deep; // Index in path for current parentLessonId $indexInPath = $deep - 1; // Path doesn't include top root element ('all courses' or 'all unilessons') $arMenu = array(); //$urlPath = $oPath->ExportUrlencoded(); // current lesson id (not exists only for top root) if (isset($arPath[$deep])) $currentLessonIdInPath = (int) $arPath[$deep]; else $currentLessonIdInPath = false; // Path to current element $arCurrentDeepPath = array(); foreach ($arPath as $key => $value) { if ($key === $deep) break; $arCurrentDeepPath[] = $value; } if ($deep === 0) { // We are at the top level, so we must get list of all courses $CDBResult = CCourse::GetList (array('COURSE_SORT' => 'ASC')); } else { // If not parent with such indexInPath => we are deep too much. if ( ! isset($arPath[$indexInPath]) ) return ($arMenu); // no items $parentLessonId = $arPath[$indexInPath]; $oCurrentDeepPath = new CLearnPath(); $oCurrentDeepPath->SetPathFromArray(array_merge($arCurrentDeepPath)); $urlPath = $oCurrentDeepPath->ExportUrlencoded(); $arMenu[] = array( "text" => GetMessage("LEARNING_QUESTION"), "url" => "learn_question_admin.php?lang=" . LANG . '&PARENT_LESSON_ID=' . ($parentLessonId + 0) . '&LESSON_PATH=' . $urlPath . "&from=learn_menu", "icon" => "learning_icon_question", //"page_icon" => "learning_page_icon_question", "more_url" => array( "learn_question_admin.php?lang=" . LANG . '&PARENT_LESSON_ID=' . ($parentLessonId + 0) . '&LESSON_PATH=' . $urlPath . "&from=learn_menu", "learn_question_edit.php?lang=" . LANG . '&LESSON_PATH=' . $urlPath . "&from=learn_menu", "learn_question_admin.php?lang=" . LANG . '&PARENT_LESSON_ID=' . ($parentLessonId + 0) . '&LESSON_PATH=' . $urlPath, "learn_question_edit.php?lang=" . LANG . '&LESSON_PATH=' . $urlPath, "learn_question_admin.php?lang=" . LANG . '&LESSON_PATH=' . $urlPath, ), "title" => GetMessage("LEARNING_QUESTION_LIST"), ); $CDBResult = CLearnLesson::GetListOfImmediateChilds ( $parentLessonId, array('EDGE_SORT' => 'ASC') ); // determine, is parent a course (only for courses in subroot level)? if ($deep === 1) { $immediateParentCourse = CLearnLesson::GetLinkedCourse ($parentLessonId); if ($immediateParentCourse !== false) { // immediate parent is a course, so we must add entity 'Tests' $arMenu[] = array( 'text' => GetMessage('LEARNING_TESTS'), 'url' => 'learn_test_admin.php?lang=' . LANG . '&filter=Y&set_filter=Y' . '&COURSE_ID=' . ($immediateParentCourse + 0) . '&PARENT_LESSON_ID=' . ($parentLessonId + 0) . '&LESSON_PATH=' . $urlPath, 'icon' => 'learning_icon_tests', //'page_icon' => 'learning_page_icon_tests', 'more_url' => array( 'learn_test_admin.php?lang=' . LANG . '&set_filter=Y' . '&COURSE_ID=' . ($immediateParentCourse + 0) . '&PARENT_LESSON_ID=' . ($parentLessonId + 0) . '&LESSON_PATH=' . $urlPath, 'learn_test_edit.php?lang=' . LANG . '&filter=Y&set_filter=Y' . '&COURSE_ID=' . ($immediateParentCourse + 0) . '&PARENT_LESSON_ID=' . ($parentLessonId + 0) . '&LESSON_PATH=' . $urlPath ), 'title' => GetMessage('LEARNING_TESTS_LIST'), ); unset ($urlPath); unset ($oCurrentDeepPath); } } } if ($loadOnlySpecialEntities) return ($arMenu); // When listing courses, limit it's count if ($deep === 0) { $items = 0; $learning_menu_max_courses = (int) COption::GetOptionString("learning", "menu_max_courses", "10"); } while ($arData = $CDBResult->GetNext()) { // When listing courses, limit it's count if ($deep === 0) { if ($items >= $learning_menu_max_courses) { // add element 'other courses' $arMenu[] = array( 'text' => GetMessage('LEARNING_MENU_COURSES_OTHER'), 'url' => 'learn_unilesson_admin.php?lang=' . LANG . '&PARENT_LESSON_ID=-1', 'title' => GetMessage('LEARNING_MENU_COURSES_ALT'), 'more_url' => array( 'learn_test_admin.php', 'learn_test_edit.php', 'learn_unilesson_admin.php', 'learn_unilesson_edit.php', 'learn_question_admin.php', 'learn_question_edit.php' ) ); // stop adding courses to menu break; } $items++; } $arSubImmediateChildsIds = false; $arCurItemPath = $arCurrentDeepPath; $arCurItemPath[] = ($arData['LESSON_ID'] + 0); // Remember all immediate childs $immediateChildsIds[] = ($arData['LESSON_ID'] + 0); $oCurItemPath = new CLearnPath(); $oCurItemPath->SetPathFromArray ($arCurItemPath); $urlCurItemPath = $oCurItemPath->ExportUrlencoded(); $arItem = array( 'text' => $arData['NAME'], 'url' => 'learn_unilesson_admin.php?lang=' . LANG . '&PARENT_LESSON_ID=' . ($arData['LESSON_ID'] + 0) . '&LESSON_PATH=' . $oCurItemPath->ExportUrlencoded(), 'title' => $arData['NAME'], 'items_id' => 'menu_learning_courses_new_' . implode ('_', $arCurItemPath), "icon" => "learning_icon_courses", 'module_id' => 'learning', 'more_url' => array( 'learn_unilesson_admin.php?lang=' . LANG . '&set_filter=Y' . '&PARENT_LESSON_ID=' . ($arData['LESSON_ID'] + 0) . '&LESSON_PATH=' . $urlCurItemPath, 'learn_unilesson_admin.php?lang=' . LANG . '&PARENT_LESSON_ID=' . ($arData['LESSON_ID'] + 0) . '&LESSON_PATH=' . $urlCurItemPath, 'learn_unilesson_admin.php?lang=' . LANG . '&set_filter=Y' . '&LESSON_PATH=' . $urlCurItemPath, 'learn_question_admin.php?lang=' . LANG . '&filter=Y&set_filter=Y' . '&LESSON_PATH=' . $urlCurItemPath, 'learn_question_edit.php?lang=' . LANG . '&set_filter=Y' . '&LESSON_PATH=' . $urlCurItemPath, 'learn_unilesson_edit.php?lang=' . LANG . '&LESSON_ID=' . ($arData['LESSON_ID'] + 0) . '&LESSON_PATH=' . $urlCurItemPath, 'learn_unilesson_edit.php?lang=' . LANG . '&PARENT_LESSON_ID=' . ($arData['LESSON_ID'] + 0) . '&LESSON_PATH=' . $urlCurItemPath ) ); $arItem['items'] = array(); if ( ( $deep === 0) && isset($arData['LINKED_LESSON_ID']) && ($arData['LINKED_LESSON_ID'] > 0 ) ) { $arItem['page_icon'] = $arItem['icon'] = 'learning_icon_courses'; $arItem['dynamic'] = true; $loadOnlySpecialEntities = false; // Load child items only for lesson in current path if ($arData['LESSON_ID'] == $currentLessonIdInPath) $arItem['items'] = __learning_admin_get_menu ($THIS, $arPath, $deep + 1, $arSubImmediateChildsIds); } else { $loadOnlySpecialEntities = false; $childsCnt = CLearnLesson::CountImmediateChilds($arData['LESSON_ID']); $questionsCnt = CLQuestion::GetCount(array('LESSON_ID' => (int) $arData['LESSON_ID'])); if ($childsCnt > 0) $arItem['page_icon'] = $arItem['icon'] = 'learning_icon_chapters'; else $arItem['page_icon'] = $arItem['icon'] = 'learning_icon_lessons'; $arItem['dynamic'] = true; // Load child items only for lesson in current path if ($arData['LESSON_ID'] == $currentLessonIdInPath) $arItem['items'] = __learning_admin_get_menu ($THIS, $arPath, $deep + 1, $arSubImmediateChildsIds); } // now, adds items into more_url (it needs when edit form for childs opened) if (is_array($arSubImmediateChildsIds)) { $oSubItemPath = new CLearnPath(); foreach ($arSubImmediateChildsIds as $k => $v) { // determine path for every child $arSubItemPath = $arCurItemPath; $arSubItemPath[] = $v; // child id added to current path $oSubItemPath->SetPathFromArray ($arSubItemPath); $arItem['more_url'][] = 'learn_unilesson_edit.php?lang=' . LANG . '&filter=Y&set_filter=Y' . '&LESSON_ID=' . ($v + 0) . '&LESSON_PATH=' . $oSubItemPath->ExportUrlencoded(); } unset ($oSubItemPath); $arSubImmediateChildsIds = false; } $arMenu[] = $arItem; unset($oCurItemPath, $arCurItemPath, $urlCurItemPath, $arItem); } return ($arMenu); } $oAccess = CLearnAccess::GetInstance($USER->GetID()); $module_id = "learning"; if (\CLearnAccessMacroses::CanViewAdminMenu()) { // Try to determine current path $oPath = new CLearnPath(); if (isset($_GET['LESSON_PATH'])) $oPath->ImportUrlencoded ($_GET['LESSON_PATH']); elseif (isset($_GET['admin_mnu_module_id']) && isset($_GET['admin_mnu_menu_id']) && ($_GET['admin_mnu_module_id'] === 'learning') ) { $strLessonIds = substr($_GET['admin_mnu_menu_id'], strlen('menu_learning_courses_new_')); if (strlen($strLessonIds) > 0) { $arLessonIds = explode('_', $strLessonIds); if ( is_array($arLessonIds) && (count($arLessonIds) > 0) ) $oPath->SetPathFromArray($arLessonIds); } } $arPath = $oPath->GetPathAsArray(); $urlPath = $oPath->ExportUrlencoded(); $arSubImmediateChildsIds = null; $aMenu = array( "parent_menu" => "global_menu_services", "section" => "learning", "sort" => 600, "text" => GetMessage("LEARNING_MENU_LEARNING"), "title" => GetMessage("LEARNING_MENU_LEARNING_TITLE"), "icon" => "learning_menu_icon", "page_icon" => "learning_page_icon", "items_id" => "menu_learning", //"url" => "learn_index.php?lang=" . LANG, "items" => Array( // Courses in new data model array( "text" => GetMessage("LEARNING_MENU_COURSES"), "url" => "learn_unilesson_admin.php?lang=" . LANG . '&PARENT_LESSON_ID=-1', // '-1' means "List courses" "title" => GetMessage("LEARNING_MENU_COURSES_ALT"), "items_id" => "menu_learning_courses_new", "icon" => "learning_icon_courses", //"page_icon" => "learning_page_icon_courses", "dynamic" => true, "module_id" => "learning", "more_url" => Array( "learn_course_edit.php", ), "items" => __learning_admin_get_menu($this, $arPath, $deep = 0, $arSubImmediateChildsIds) // Build menu from the top ), // List any lessons array( "text" => GetMessage("LEARNING_LESSONS_LIST"), // "List of all lessons" "url" => "learn_unilesson_admin.php?lang=" . LANG . '&set_filter=Y' . '&PARENT_LESSON_ID=-2', // '-2' means "List any lessons" "title" => GetMessage("LEARNING_LESSONS_LIST"), // "List of all lessons" "items_id" => "menu_learning_any_lessons36", "icon" => "learning_icon_lessons", //"page_icon" => "learning_icon_lessons", "module_id" => "learning", "more_url" => Array( "learn_unilesson_admin.php", "learn_unilesson_edit.php", ), "dynamic" => false, "items" => array() ), //Certification array( "text" => GetMessage("LEARNING_MENU_CERTIFICATION"), "url" => "learn_certification_admin.php?lang=".LANG, "title" => GetMessage("LEARNING_MENU_CERTIFICATION_ALT"), "items_id" => "menu_learning_certification", "icon" => "learning_icon_certification", "page_icon" => "learning_page_icon_certification", "more_url" => Array( "learn_certification_edit.php", ), ), //Gradebook array( "text" => GetMessage("LEARNING_MENU_GRADEBOOK"), "url" => "learn_gradebook_admin.php?lang=".LANG, "title" => GetMessage("LEARNING_MENU_GRADEBOOK_ALT"), "items_id" => "menu_learning_gradebook", "icon" => "learning_icon_gradebook", "page_icon" => "learning_page_icon_gradebook", "more_url" => Array( "learn_gradebook_edit.php", ), ), //Attempts array( "text" => GetMessage("LEARNING_MENU_ATTEMPT"), "url" => "learn_attempt_admin.php?lang=".LANG, "title" => GetMessage("LEARNING_MENU_ATTEMPT_ALT"), "items_id" => "menu_learning_attempt", "icon" => "learning_icon_attempts", "page_icon" => "learning_page_icon_attempts", "more_url" => Array( "learn_attempt_edit.php", "learn_test_result_edit.php", "learn_test_result_admin.php", ), ) ) ); if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_MANAGE_RIGHTS)) { $aMenu['items'][] = array( 'text' => GetMessage('LEARNING_MENU_GROUPS'), 'url' => 'learn_group_admin.php?lang=' . LANG, 'title' => GetMessage('LEARNING_MENU_GROUPS_ALT'), 'items_id' => 'menu_learning_groups', 'icon' => 'learning_icon_groups', //'page_icon' => 'learning_page_icon_export', 'more_url' => array( 'learn_group_edit.php' ) ); } // Export $aMenu['items'][] = array( "text" => GetMessage("LEARNING_MENU_EXPORT"), "url" => "learn_export.php?lang=" . LANG, "title" => GetMessage("LEARNING_MENU_EXPORT_ALT"), "items_id" => "menu_learning_export", "icon" => "learning_icon_export", "page_icon" => "learning_page_icon_export", "more_url" => array() ); if ($oAccess->IsBaseAccess( CLearnAccess::OP_LESSON_CREATE | CLearnAccess::OP_LESSON_LINK_TO_PARENTS | CLearnAccess::OP_LESSON_LINK_DESCENDANTS ) || ( $oAccess->IsBaseAccess (CLearnAccess::OP_LESSON_CREATE ) && $oAccess->IsBaseAccessForCR (CLearnAccess::OP_LESSON_LINK_TO_PARENTS | CLearnAccess::OP_LESSON_LINK_DESCENDANTS) ) ) { $aMenu["items"][] = Array( "text" => GetMessage("LEARNING_MENU_IMPORT"), "url" => "learn_import.php?lang=".LANG, "title" => GetMessage("LEARNING_MENU_IMPORT_ALT"), "items_id" => "menu_learning_export", "icon" => "learning_icon_export", "page_icon" => "learning_page_icon_export", "more_url" => Array( ), ); } if ($USER->IsAdmin() && isset($_GET['easter_egg'])) { $aMenu['items'][] = array( 'text' => 'Easter Egg', 'url' => 'learn_eegg.php?lang=' . LANG, 'title' => 'Utilities', 'items_id' => 'menu_learning_eegg_utils', //'icon' => 'util_page_icon', 'page_icon' => 'util_page_icon', 'more_url' => Array( ), ); } } else { define("LEARNING_ADMIN_ACCESS_DENIED","Y"); return false; } return $aMenu;