%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/learning/admin/ |
Current File : /home/bitrix/www/bitrix/modules/learning/admin/learn_group_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"]."/bitrix/modules/learning/prolog.php"); IncludeModuleLangFile(__FILE__); $APPLICATION->AddHeadScript('/bitrix/js/learning/learning_edit.js'); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/learning/admin_tools_user_selector.php"); ClearVars(); $ID = intval($ID); $bCopy = false; $bBadResult = false; $message = null; $arMembers = array(); if ($ID != 0) { $r = CLearningGroup::GetList(array($by => $order), array('ID' => $ID)); if(!$r->ExtractFields("str_")) $bBadResult = true; else { $rc = CLearningGroupMember::getList( array(), // arOrder array('LEARNING_GROUP_ID' => $ID), // arFilter array('USER_ID') // arSelect ); while ($arMember = $rc->fetch()) $arMembers[] = $arMember['USER_ID']; $arMembers = array_unique($arMembers); } } if($bBadResult) { $APPLICATION->SetTitle(GetMessage("LEARNING_ADMIN_TITLE")); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); $aContext = array( array( "ICON" => "btn_list", "TEXT"=>GetMessage("LEARNING_BACK_TO_LEARNING_GROUPS"), "LINK"=>"learn_group_admin.php?lang=" . LANG, "TITLE"=>GetMessage("LEARNING_BACK_TO_LEARNING_GROUPS") ), ); $context = new CAdminContextMenu($aContext); $context->Show(); CAdminMessage::ShowMessage(GetMessage("LEARNING_BAD_LEARNING_GROUP_ID_EX")); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php"); die(); } $aTabs = array( array( "DIV" => "edit1", "TAB" => GetMessage("LEARNING_ADMIN_TAB1"), "ICON"=>"main_user_edit", "TITLE"=>GetMessage("LEARNING_ADMIN_TAB1_EX") ) ); $aTabs[] = $USER_FIELD_MANAGER->EditFormTab('LEARNING_LGROUPS'); $tabControl = new CAdminForm("learningGroupResultTabControl", $aTabs); if ($_SERVER["REQUEST_METHOD"] == "POST" && strlen($Update)>0 && check_bitrix_sessid()) { if ($ACTIVE !== 'Y') $ACTIVE = 'N'; $COURSE_LESSON_ID = (int) $COURSE_LESSON_ID; $str_COURSE_LESSON_ID = (int) $COURSE_LESSON_ID; $arFields = array( "TITLE" => $TITLE, "ACTIVE" => $ACTIVE, "CODE" => $CODE, "SORT" => $SORT, "ACTIVE_FROM" => $ACTIVE_FROM, "ACTIVE_TO" => $ACTIVE_TO, "COURSE_LESSON_ID" => $COURSE_LESSON_ID ); // Process lessons' delays if ($ID && isset($PERIOD_L) && is_array($PERIOD_L)) { $arDelays = array(); foreach ($PERIOD_L as $lessonId => $delay) $arDelays[(int)$lessonId] = (int) $delay; CLearningGroupLesson::setDelays($ID, $arDelays); } // Process members $arNewMembers = array(); $arAddedMembers = array(); $arRemovedMembers = array(); if ($USER->CanDoOperation('view_subordinate_users') || $USER->CanDoOperation('view_all_users')) { if ( isset($_POST['PROP'], $_POST['SELECTPROP']) && is_array($_POST['PROP']) && is_array($_POST['SELECTPROP']) && isset($_POST['PROP'][1], $_POST['SELECTPROP'][1]) ) { foreach ($_POST['SELECTPROP'][1] as $key => $data) { if ($data['VALUE'] === 'none') continue; $value = (int) $_POST['PROP'][1][$key]['VALUE']; if ($value < 1) continue; $arNewMembers[] = $value; } } $arNewMembers = array_unique($arNewMembers); $arAddedMembers = array_diff($arNewMembers, $arMembers); $arRemovedMembers = array_diff($arMembers, $arNewMembers); } if ($USER_FIELD_MANAGER->getRights('LEARNING_LGROUPS') >= 'W') $USER_FIELD_MANAGER->EditFormAddFields('LEARNING_LGROUPS', $arFields); $res = false; $oAccess = CLearnAccess::GetInstance($USER->GetID()); $isAccessible = $oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_MANAGE_RIGHTS); $DB->StartTransaction(); if ($isAccessible) { $tr = new CLearningGroup; if ($ID == 0) { $res = $tr->add($arFields); if ($res > 0) $ID = (int) $res; } else $res = $tr->update($ID, $arFields); if ($res) { foreach($arAddedMembers as $memberId) { CLearningGroupMember::add(array( 'USER_ID' => $memberId, 'LEARNING_GROUP_ID' => $ID )); } foreach($arRemovedMembers as $memberId) CLearningGroupMember::delete($memberId, $ID); } } if(!$res) { $DB->Rollback(); if($e = $APPLICATION->GetException()) $message = new CAdminMessage(GetMessage("LEARNING_ERROR"), $e); elseif (!$isAccessible) $message = new CAdminMessage(GetMessage("LEARNING_ERROR") . ': ' . GetMessage('LEARNING_ACCESS_D_FOR_EDIT_CONTENT')); $bVarsFromForm = true; } else { $DB->Commit(); if(strlen($apply)<=0) { if(strlen($return_url)>0) LocalRedirect($return_url); else LocalRedirect("/bitrix/admin/learn_group_admin.php?lang=".LANG.GetFilterParams("filter_", false)); } LocalRedirect("/bitrix/admin/learn_group_edit.php?lang=".LANG."&ID=".$ID.GetFilterParams("filter_", false)); } } if($bVarsFromForm) { $DB->InitTableVarsForEdit("b_learn_groups", "", "str_"); } $adminChain->AddItem(array( "TEXT" => GetMessage("LEARNING_GROUPS_LIST"), "LINK"=>"learn_group_admin.php?lang=". LANG.GetFilterParams("filter_", false) )); if ($ID == 0) $APPLICATION->SetTitle(GetMessage("LEARNING_NEW_TITLE")); else $APPLICATION->SetTitle(GetMessage("LEARNING_EDIT_TITLE") . ' #' . $str_ID . ' ("' . htmlspecialcharsback($str_TITLE) . '")'); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); $aContext = array( array( "ICON" => "btn_list", "TEXT"=>GetMessage("MAIN_ADMIN_MENU_LIST"), "LINK"=>"learn_group_admin.php?lang=" . LANG . GetFilterParams("filter_"), "TITLE"=>GetMessage("LEARNING_BACK_TO_ADMIN") ), ); $context = new CAdminContextMenu($aContext); $context->Show(); ?> <? if ($message) echo $message->Show(); if (!isset($str_SORT)) $str_SORT = 500; ?> <?php $tabControl->BeginEpilogContent();?> <?=bitrix_sessid_post()?> <?echo GetFilterHiddens("filter_");?> <input type="hidden" name="Update" value="Y"> <input type="hidden" name="from" value="<?echo htmlspecialcharsbx($from)?>"> <input type="hidden" name="return_url" value="<?echo htmlspecialcharsbx($return_url)?>"> <input type="hidden" name="ID" value="<?echo $ID?>"> <?php $tabControl->EndEpilogContent();?> <?$tabControl->Begin();?> <?$tabControl->BeginNextFormTab();?> <?php $tabControl->BeginCustomField("TITLE", GetMessage("LEARNING_ADMIN_TITLE"), $required = true);?> <tr class="adm-detail-required-field"> <td width="40%"><?php echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="text" name="TITLE" size="20" maxlength="255" value="<? echo $str_TITLE; ?>"> </td> </tr> <?php $tabControl->EndCustomField("TITLE");?> <?php $tabControl->BeginCustomField("CODE", GetMessage("LEARNING_ADMIN_CODE"), false);?> <tr> <td width="40%"><?php echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="text" name="CODE" size="20" maxlength="50" value="<?echo $str_CODE;?>"> </td> </tr> <?php $tabControl->EndCustomField("CODE");?> <?php $tabControl->BeginCustomField("COURSE_LESSON_ID", GetMessage("LEARNING_ADMIN_ATTACHED_COURSE"), $required = true);?> <tr class="adm-detail-required-field"> <td><?echo $tabControl->GetCustomLabelHTML()?>:</td> <td><?php if ($str_COURSE_LESSON_ID) { $rsLesson = CLearnLesson::GetByID($str_COURSE_LESSON_ID); $arLesson = $rsLesson->Fetch(); $curDir = $APPLICATION->GetCurDir(); if (substr($curDir, -1) !== '/') $curDir .= '/'; } ?> <script> function module_learning_js_admin_function_change_attached_lesson(lesson_id, name) { BX('attached_lesson_id').value = lesson_id; BX('attached_lesson_name').textContent = name; } </script> <div style="padding:0px;"> <span id="attached_lesson_name"><?php if ($arLesson) echo htmlspecialcharsbx($arLesson['NAME']); ?></span><?php if ($ID == 0) { ?> (<a href="javascript:void(0);" class="bx-action-href" onclick="window.open('/bitrix/admin/learn_unilesson_admin.php?lang=<?php echo LANGUAGE_ID; ?>&search_retpoint=module_learning_js_admin_function_change_attached_lesson&search_mode_type=attach_question_to_lesson', 'module_learning_js_admin_window_select_lessons_for_attach', 'scrollbars=yes,resizable=yes,width=960,height=500,top='+Math.floor((screen.height - 560)/2-14)+',left='+Math.floor((screen.width - 960)/2-5));" ><?php echo GetMessage('LEARNING_ADMIN_CHANGE_ATTACHED_COURSE'); ?></a>) <?php } ?> </div> <input id="attached_lesson_id" type="hidden" name="COURSE_LESSON_ID" value="<?echo $str_COURSE_LESSON_ID; ?>"> </td> </tr> <?php $tabControl->EndCustomField("COURSE_LESSON_ID");?> <?php $tabControl->BeginCustomField("ACTIVE_PERIOD", GetMessage("LEARNING_ACTIVE_PERIOD"), false);?> <!-- Active period--> <tr> <td><?php echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <?echo CalendarPeriod("ACTIVE_FROM", $str_ACTIVE_FROM, "ACTIVE_TO", $str_ACTIVE_TO, "learningGroupResultTabControl", "N", "", "", "19")?> </td> </tr> <?php $tabControl->EndCustomField("ACTIVE_PERIOD");?> <?php $tabControl->BeginCustomField("ACTIVE", GetMessage("LEARNING_ADMIN_ACTIVE"), false);?> <tr> <td><?php 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("SORT", GetMessage("LEARNING_ADMIN_SORT"), false);?> <tr> <td><?php echo $tabControl->GetCustomLabelHTML()?>:</td> <td> <input type="text" name="SORT" size="4" maxlength="10" value="<?echo htmlspecialcharsbx($str_SORT);?>"> </td> </tr> <?php $tabControl->EndCustomField("SORT"); $tabControl->AddSection("LEARNING_ACTIVATION_SCHEDULE", GetMessage('LEARNING_ACTIVATION_SCHEDULE')); $tabControl->BeginCustomField("PROPERTY_2", GetMessage('LEARNING_ACTIVATION_SCHEDULE_TITLE'), false); $html = '<table cellpadding="0" cellspacing="0" border="0" class="nopadding" width="100%" id="tb'.md5($name).'">'; $arLessons = $arDelays = array(); if ($ID && $str_COURSE_LESSON_ID) { $rs = CLearnLesson::GetListOfImmediateChilds($str_COURSE_LESSON_ID, array('SORT' => 'ASC')); while ($ar = $rs->getNext()) $arLessons[$ar['LESSON_ID']] = $ar['NAME']; $arDelays = CLearningGroupLesson::getDelays($ID, array_keys($arLessons)); foreach ($arLessons as $lessonId => $lessonName) { $period = $arDelays[$lessonId]; $html .= '<tr><td>'; $html .= $lessonName; $html .= '</td><td>'; $html .= '<input type="text" name="PERIOD_L[' . $lessonId . ']" size="4" maxlength="5" value="' . htmlspecialcharsbx($period) . '">'; $html .= '</td></tr>'; } } else $html .= GetMessage('LEARNING_AVAILABLE_AFTER_ELEMENT_CREATION'); $html .= '</table>'; ?> <tr id="tr_PROPERTY_2"> <td class="adm-detail-valign-top" width="40%"><?echo $tabControl->GetCustomLabelHTML();?>:</td> <td width="60%"><?php echo $html; ?></td> </tr> <? $tabControl->EndCustomField("PROPERTY_2", $hidden); $tabControl->AddSection("LEARNING_ELEMENT_USERS", GetMessage('LEARNING_GROUP_MEMBERSHIP')); $prop_fields = array( 'ID' => 1, 'NAME' => GetMessage('LEARNING_GROUP_MEMBERS_LIST'), 'ACTIVE' => 'Y', 'PROPERTY_TYPE' => 'S', 'LIST_TYPE' => 'L', 'MULTIPLE' => 'Y', 'MULTIPLE_CNT' => 5, 'IS_REQUIRED' => 'N', 'USER_TYPE' => 'UserID', 'USER_TYPE_SETTINGS' => null, 'VALUE' => $bVarsFromForm ? $arNewMembers : $arMembers, '~VALUE' => array() ); if ($bVarsFromForm) { for ($i = 0; $i < 5; $i ++) $prop_fields['VALUE'][] = ''; } foreach($prop_fields['VALUE'] as $id => $value) $prop_fields['~VALUE'][$id] = array('VALUE' => $value, 'DESCRIPTION' => ''); $tabControl->BeginCustomField("PROPERTY_1".$prop_fields["ID"], $prop_fields["NAME"], $prop_fields["IS_REQUIRED"]==="Y"); ?> <tr id="tr_PROPERTY_<?echo $prop_fields["ID"];?>"<?if ($prop_fields["PROPERTY_TYPE"]=="F"):?> class="adm-detail-file-row"<?endif?>> <td class="adm-detail-valign-top" width="40%"><?if($prop_fields["HINT"]!=""): ?><span id="hint_<?echo $prop_fields["ID"];?>"></span><script>BX.hint_replace(BX('hint_<?echo $prop_fields["ID"];?>'), '<?echo CUtil::JSEscape($prop_fields["HINT"])?>');</script> <? endif;?><?echo $tabControl->GetCustomLabelHTML();?>:</td> <td width="60%"><?php if(!($USER->CanDoOperation('view_subordinate_users') || $USER->CanDoOperation('view_all_users'))) echo GetMessage('LEARNING_ACCESS_DENIED_TO_USERS'); else echo _ShowUserPropertyField('PROP['.$prop_fields["ID"].']', $prop_fields, $prop_fields["VALUE"], false, false, 50000, $tabControl->GetFormName(), $bCopy) ?></td> </tr> <? $hidden = ""; if(!is_array($prop_fields["~VALUE"])) $values = Array(); else $values = $prop_fields["~VALUE"]; $start = 1; foreach($values as $key=>$val) { if($bCopy) { $key = "n".$start; $start++; } if(is_array($val) && array_key_exists("VALUE",$val)) { $hidden .= _ShowHiddenValue('PROP['.$prop_fields["ID"].']['.$key.'][VALUE]', $val["VALUE"]); $hidden .= _ShowHiddenValue('PROP['.$prop_fields["ID"].']['.$key.'][DESCRIPTION]', $val["DESCRIPTION"]); } else { $hidden .= _ShowHiddenValue('PROP['.$prop_fields["ID"].']['.$key.'][VALUE]', $val); $hidden .= _ShowHiddenValue('PROP['.$prop_fields["ID"].']['.$key.'][DESCRIPTION]', ""); } } $tabControl->EndCustomField("PROPERTY_1".$prop_fields["ID"], $hidden); $tabControl->BeginNextFormTab(); ?><div><?php $tabControl->BeginCustomField("UFS", '', false); if ($USER_FIELD_MANAGER->getRights('LEARNING_LGROUPS') < 'W') { ?> <p style="font-weight:bold;"> <?php echo GetMessage('LEARNING_ACCESS_DENIED_TO_UF_MANAGE'); ?> </p> <?php } $USER_FIELD_MANAGER->EditFormShowTab('LEARNING_LGROUPS', $bVarsFromForm, $ID); $tabControl->EndCustomField("UFS"); ?></div><?php $tabControl->Buttons(Array("back_url" =>"learn_group_admin.php?lang=". LANG.GetFilterParams("filter_", false))); $tabControl->arParams["FORM_ACTION"] = $APPLICATION->GetCurPage()."?lang=".LANG.GetFilterParams("filter_"); $tabControl->Show(); $tabControl->ShowWarnings($tabControl->GetName(), $message); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");