%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/learning/admin/ |
| Current File : /home/bitrix/www/bitrix/modules/learning/admin/learn_unilesson_edit.php |
<?php
/**
* This file is modified admin_lesson_edit.php (with added additional field for 'CODE' from admin_chapter_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($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/learning/options.php");
IncludeModuleLangFile(__FILE__);
$APPLICATION->AddHeadScript('/bitrix/js/learning/rights_edit.js');
$aContext = array();
$oAccess = CLearnAccess::GetInstance($USER->GetID());
ClearVars();
$message = null;
$bVarsFromForm = false;
$LESSON_ID = intval($LESSON_ID);
if (isset($g_learn_parentLessonId))
unset($g_learn_parentLessonId);
if (isset($g_learn_currentLessonPath))
unset($g_learn_currentLessonPath);
if (isset($g_learn_parentLessonPath))
unset($g_learn_parentLessonPath);
if (isset($_POST['LESSON_PATH']) || isset($_GET['LESSON_PATH']))
{
if (isset($_POST['LESSON_PATH']))
$g_learn_currentLessonPath = $_POST['LESSON_PATH'];
else
$g_learn_currentLessonPath = $_GET['LESSON_PATH'];
$oPath = new CLearnPath();
$oPath->ImportUrlencoded ($g_learn_currentLessonPath);
$arPath = $oPath->GetPathAsArray();
if (count($arPath) >= 2)
{
// pop current lesson id
array_pop ($arPath);
// remember parent path
$oParentPath = new CLearnPath();
$oParentPath->SetPathFromArray($arPath);
$g_learn_parentLessonPath = urldecode($oParentPath->ExportUrlencoded());
// pop parent lesson id
$g_learn_parentLessonId = array_pop ($arPath);
// If lesson was edited and unlinked from parent $g_parentLessonId
// we must cleanup LESSON_PATH. Also we must cleanup lesson path if
// it is wrong due to other reasons.
// $arEdgesToParents = CLearnLesson::ListImmediateParents($LESSON_ID);
//
// $isLinkToParentFound = true;
// foreach ($arEdgesToParents as $arEdgeToParent)
// {
// if ( (int) $arEdgeToParent['PARENT_LESSON'] === (int) $g_learn_parentLessonId )
// $isLinkToParentFound = true;
// }
//
// if ( ! $isLinkToParentFound )
// {
// if (isset($_POST['LESSON_PATH']))
// unset ($_POST['LESSON_PATH']);
//
// if (isset($_GET['LESSON_PATH']))
// unset ($_GET['LESSON_PATH']);
//
// unset ($g_learn_parentLessonId, $g_learn_parentLessonPath, $g_learn_currentLessonPath);
// }
}
unset ($oPath, $oParentPath, $arPath);
}
// This argument transmitted when pended new lesson creation
if (isset($_GET['PROPOSE_RETURN_LESSON_PATH']))
{
if (isset($g_learn_parentLessonPath))
{
throw new LearnException (
'EA_LOGIC: PROPOSE_RETURN_LESSON_PATH and '
. 'LESSON_PATH are mutually exclusive arguments.',
LearnException::EXC_ERR_ALL_LOGIC);
}
$g_learn_parentLessonPath = $_GET['PROPOSE_RETURN_LESSON_PATH'];
$oPath = new CLearnPath();
$oPath->ImportUrlencoded ($g_learn_parentLessonPath);
$g_learn_parentLessonId = $oPath->GetBottom();
if ($g_learn_parentLessonId === false)
{
throw new LearnException (
'EA_LOGIC: PROPOSE_RETURN_LESSON_PATH given, '
. 'but there is no parent lesson in path',
LearnException::EXC_ERR_ALL_LOGIC);
}
}
// Place to $topCourseLessonId lesson id of top course, if top lesson is course.
$topCourseLessonId = false;
if (isset($g_learn_parentLessonPath) && strlen($g_learn_parentLessonPath))
{
try
{
$oPath = new CLearnPath();
$oPath->ImportUrlencoded ($g_learn_parentLessonPath);
$topLessonId = $oPath->GetTop();
// Is lesson the course?
if (CLearnLesson::GetLinkedCourse($topLessonId) !== false)
$topCourseLessonId = $topLessonId;
}
catch (Exception $e)
{
$topCourseLessonId = false;
}
unset ($oPath, $topLessonId);
}
// This argument can be transmitted on POST submit of form when creating new lesson
if (isset($_GET['PARENT_LESSON_ID']))
$_POST['PARENT_LESSON_ID'] = $_GET['PARENT_LESSON_ID'];
if (isset($_POST['PARENT_LESSON_ID']))
{
$g_learn_parentLessonId = $_POST['PARENT_LESSON_ID'];
}
$createNewLesson = false;
if ($_SERVER["REQUEST_METHOD"] == "POST" && strlen($Update)>0 && check_bitrix_sessid())
{
$arEdgeProperties = array();
if ($LESSON_ID == 0)
$createNewLesson = true;
$was_errors = false;
// Block 1: params, preview_text and detail_text
if (array_key_exists('NAME', $_POST)
&& array_key_exists('DETAIL_TEXT', $_POST)
)
{
if (
(($LESSON_ID == 0) && $oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_CREATE))
|| (($LESSON_ID != 0) && $oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_WRITE))
)
{
$arPREVIEW_PICTURE = $_FILES["PREVIEW_PICTURE"];
$arPREVIEW_PICTURE["del"] = ${"PREVIEW_PICTURE_del"};
$arPREVIEW_PICTURE["MODULE_ID"] = "learning";
$arPREVIEW_PICTURE["description"] = ${"PREVIEW_PICTURE_descr"};
$arDETAIL_PICTURE = $_FILES["DETAIL_PICTURE"];
$arDETAIL_PICTURE["del"] = ${"DETAIL_PICTURE_del"};
$arDETAIL_PICTURE["MODULE_ID"] = "learning";
$arDETAIL_PICTURE["description"] = ${"DETAIL_PICTURE_descr"};
// If we are in context of parent lesson => there is edge params
if (isset($g_learn_parentLessonId))
{
$arEdgeProperties = array(
'SORT' => $_POST['EDGE_SORT']
);
}
$arFields = Array(
"ACTIVE" => ( ($ACTIVE !== 'Y') ? 'N' : 'Y'),
"NAME" => $NAME,
"KEYWORDS" => $KEYWORDS,
"CODE" => $CODE,
"DETAIL_PICTURE" => $arDETAIL_PICTURE,
"DETAIL_TEXT" => $DETAIL_TEXT,
"DETAIL_TEXT_TYPE" => $DETAIL_TEXT_TYPE,
"PREVIEW_PICTURE" => $arPREVIEW_PICTURE,
"PREVIEW_TEXT" => $PREVIEW_TEXT,
"PREVIEW_TEXT_TYPE" => $PREVIEW_TEXT_TYPE
);
if ($CONTENT_SOURCE == "file")
{
$arFields["DETAIL_TEXT_TYPE"] = "file";
$arFields["LAUNCH"] = $LAUNCH;
}
$USER_FIELD_MANAGER->EditFormAddFields('LEARNING_LESSONS', $arFields);
$res = true;
try
{
if ($LESSON_ID > 0)
{
$res = CLearnLesson::Update($LESSON_ID, $arFields);
// If we are in context of parent lesson => update edges properties
if ($res && isset($g_learn_parentLessonId) && $g_learn_parentLessonId > 0)
{
CLearnLesson::RelationUpdate (
$g_learn_parentLessonId,
$LESSON_ID,
$arEdgeProperties);
}
}
else
{
// If we are in context of parent lesson => create linked lesson
if (isset($g_learn_parentLessonId) && $g_learn_parentLessonId > 0)
{
$arNewEdgeProperties = array('SORT' => 500);
if (isset($arEdgeProperties['SORT']))
$arNewEdgeProperties['SORT'] = $arEdgeProperties['SORT'];
$LESSON_ID = CLearnLesson::Add(
$arFields,
false, // is course?
$g_learn_parentLessonId,
$arNewEdgeProperties);
}
else
{
$LESSON_ID = CLearnLesson::Add($arFields);
}
$res = ($LESSON_ID > 0);
}
// PUBLISH_PROHIBITED available in context of most parent course only
if ( ($LESSON_ID > 0) && ($topCourseLessonId !== false) )
{
$isProhibited = false;
if ($_POST['PUBLISH_PROHIBITED'] === 'Y')
$isProhibited = true;
CLearnLesson::PublishProhibitionSetTo(
$LESSON_ID, $topCourseLessonId, $isProhibited);
}
}
catch (Exception $e)
{
$res = false;
}
if(!$res)
{
if($e = $APPLICATION->GetException())
$message = new CAdminMessage(GetMessage("LEARNING_ERROR"), $e);
else
$message = new CAdminMessage(GetMessage("LEARNING_ERROR"));
$bVarsFromForm = true;
$was_errors = true;
}
}
else
{
if($e = $APPLICATION->GetException())
$message = new CAdminMessage(GetMessage("LEARNING_ERROR") . ': ' . GetMessage('LEARNING_ACCESS_D_FOR_EDIT_CONTENT'), $e);
else
$message = new CAdminMessage(GetMessage("LEARNING_ERROR") . ': ' . GetMessage('LEARNING_ACCESS_D_FOR_EDIT_CONTENT'));
$bVarsFromForm = true;
$res = false;
$was_errors = true;
}
}
// Block 2: relations (there is will be silently ignoring on insuficient permissions)
// Process relations, data submitted from CLearnRelationHelper::RenderForm()
if (
( ! $createNewLesson )
&& ($LESSON_ID > 0)
&& ( ! isset($_REQUEST['SKIP_RELATIONS_SAVING']) )
)
{
$sort = false; // default sort order will be used for new edges
if (isset($_POST['EDGE_SORT']) && ($_POST['EDGE_SORT'] > 0))
$sort = (int) $_POST['EDGE_SORT'];
CLearnRelationHelper::ProccessPOST($oAccess, $LESSON_ID, $sort);
}
// Block 3: permissions
if (
array_key_exists('LESSON_RIGHTS_marker', $_POST)
&& ($LESSON_ID > 0)
&& ( ! isset($_REQUEST['SKIP_RIGHTS_SAVING']) )
)
{
$res = true;
try
{
// Work with permissions
if ($oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_MANAGE_RIGHTS))
{
// Process permissions
$arPostedRights = array();
if (is_array($_POST['LESSON_RIGHTS']))
$arPostedRights = $_POST['LESSON_RIGHTS'];
$arAccessSymbols = array();
$arTaskIds = array();
foreach ($arPostedRights as $key => $arData)
{
if (isset($arData['GROUP_CODE']))
$arAccessSymbols[] = $arData['GROUP_CODE'];
elseif (isset($arData['TASK_ID']))
$arTaskIds[] = $arData['TASK_ID'];
}
if (count($arAccessSymbols) !== count($arTaskIds))
throw new LearnException('', LearnException::EXC_ERR_ALL_LOGIC | LearnException::EXC_ERR_ALL_GIVEUP);
$arPermPairs = array();
if (count($arAccessSymbols) > 0)
$arPermPairs = array_combine($arAccessSymbols, $arTaskIds);
if ($arPermPairs === false)
$arPermPairs = array();
// Save permissions
$oAccess->SetLessonsPermissions (array($LESSON_ID => $arPermPairs));
}
else
{
if($e = $APPLICATION->GetException())
$message = new CAdminMessage(GetMessage("LEARNING_ERROR") . ': ' . GetMessage('LEARNING_ACCESS_D_FOR_MANAGE_RIGHTS'), $e);
else
$message = new CAdminMessage(GetMessage("LEARNING_ERROR") . ': ' . GetMessage('LEARNING_ACCESS_D_FOR_MANAGE_RIGHTS'));
$bVarsFromForm = true;
$res = false;
$was_errors = true;
}
}
catch (Exception $e)
{
$res = false;
$was_errors = true;
}
}
if ( ! $was_errors )
{
$currentLessonPath = "";
if (isset($g_learn_currentLessonPath))
{
$currentLessonPath = $g_learn_currentLessonPath.($createNewLesson && $LESSON_ID > 0 ? ".".$LESSON_ID : "");
}
if (strlen($apply) <= 0)
{
if (strlen($return_url) > 0)
{
LocalRedirect(
str_replace(
array("#LESSON_ID#", "#LESSON_PATH#"),
array($LESSON_ID, $currentLessonPath),
$return_url
)
);
}
else
{
$uriParentLessonPath = "";
if (!$createNewLesson && isset($g_learn_parentLessonPath))
{
$uriParentLessonPath = '&LESSON_PATH=' . urlencode($g_learn_parentLessonPath);
}
elseif (isset($g_learn_currentLessonPath))
{
$uriParentLessonPath = '&LESSON_PATH=' . urlencode($g_learn_currentLessonPath);
}
LocalRedirect(
"/bitrix/admin/learn_unilesson_admin.php?lang=".LANG.
"&PARENT_LESSON_ID=".intval(isset($g_learn_parentLessonId) ? $g_learn_parentLessonId : 0).
$uriParentLessonPath.
GetFilterParams("filter_", false, array())
);
}
}
LocalRedirect("/bitrix/admin/learn_unilesson_edit.php?lang=" . LANG
. "&LESSON_ID=" . ($LESSON_ID + 0)
. "&LESSON_PATH=". urlencode($currentLessonPath)
. "&lessonTabControl_active_tab=" . urlencode($_REQUEST['lessonTabControl_active_tab'])
. GetFilterParams("filter_", false));
}
}
$bBadCourse = false;
$isBtnsDisabled = true;
if (($LESSON_ID > 0) && $oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_WRITE))
{
$isBtnsDisabled = false;
}
elseif ($LESSON_ID == 0)
{
if (isset($g_learn_parentLessonId) && $g_learn_parentLessonId > 0)
{
if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_LINK_DESCENDANTS | CLearnAccess::OP_LESSON_LINK_TO_PARENTS)
|| (
$oAccess->IsLessonAccessible($g_learn_parentLessonId, CLearnAccess::OP_LESSON_LINK_DESCENDANTS)
&& $oAccess->IsBaseAccessForCR(CLearnAccess::OP_LESSON_LINK_TO_PARENTS)
))
{
$isBtnsDisabled = false;
}
}
else
{
if ($oAccess->IsBaseAccess (CLearnAccess::OP_LESSON_CREATE))
{
$isBtnsDisabled = false;
}
}
}
elseif ( ($LESSON_ID > 0) && CLearnAccessMacroses::CanUserEditLessonRights (array('lesson_id' => $LESSON_ID)) )
{
$isBtnsDisabled = false;
}
elseif ( ($LESSON_ID > 0) && CLearnAccessMacroses::CanUserPerformAtLeastOneRelationAction (array('lesson_id' => $LESSON_ID)) )
{
$isBtnsDisabled = false;
}
if (($LESSON_ID > 0) && $oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_READ))
$APPLICATION->SetTitle(GetMessage("LEARNING_LESSONS").": ".GetMessage("LEARNING_EDIT_TITLE"));
elseif (($LESSON_ID == 0) && $oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_CREATE))
$APPLICATION->SetTitle(GetMessage('LEARNING_LESSONS').": ".GetMessage("LEARNING_NEW_TITLE"));
else
$bBadCourse = true;
//Defaults
$str_ACTIVE = "Y";
$str_DETAIL_TEXT_TYPE = $str_PREVIEW_TEXT_TYPE = "text";
$str_EDGE_SORT = '500';
$str_PUBLISH_PROHIBITED = 'N';
// Are we in context of parent lesson?
$result = false;
if (isset($g_learn_parentLessonId))
{
$str_PARENT_LESSON_ID = $g_learn_parentLessonId;
if ($LESSON_ID > 0)
{
// Get lesson data as immediate child of parent lesson.
// It needs for getting edges data (SORT).
$result = CLearnLesson::GetListOfImmediateChilds(
$str_PARENT_LESSON_ID, // parent of current lesson
array(), // sort order
array('LESSON_ID' => $LESSON_ID)); // get data for current lesson only
}
}
else
{
if (isset($str_PARENT_LESSON_ID))
unset ($str_PARENT_LESSON_ID);
if ($LESSON_ID > 0)
$result = CLearnLesson::GetByID($LESSON_ID);
}
// Now $str_PARENT_LESSON_ID exists only if in GET and/or POST request was PARENT_LESSON_ID
if (($topCourseLessonId !== false) && ($LESSON_ID > 0))
{
if (CLearnLesson::IsPublishProhibited($LESSON_ID, $topCourseLessonId))
$str_PUBLISH_PROHIBITED = 'Y';
}
if( ! ($result && $result->ExtractFields("str_")) )
$LESSON_ID = 0;
if ($bVarsFromForm)
{
$ACTIVE = ($ACTIVE != "Y"? "N":"Y");
/**
* Resolving dependencies for new data structure
* was:
* $DB->InitTableVarsForEdit("b_learn_lesson", "", "str_");
*/
$arVarsOnForm = array (
'TIMESTAMP_X', 'ACTIVE', 'CODE', 'NAME', 'KEYWORDS',
'PREVIEW_TEXT', 'PREVIEW_TEXT_TYPE',
'DETAIL_TEXT', 'DETAIL_TEXT_TYPE',
'LAUNCH');
// Only in context of parent lesson
if (isset($str_PARENT_LESSON_ID))
{
$arVarsOnForm[] = 'EDGE_SORT';
}
// Only in context of most top course
if ($topCourseLessonId !== false)
$arVarsOnForm[] = 'PUBLISH_PROHIBITED';
foreach ($arVarsOnForm as $k => $varName)
{
if (!is_array(${$varName}))
${'str_' . $varName} = htmlspecialcharsbx(${$varName});
else
{
$tmp = array();
foreach (${$varName} as $key => $value)
$tmp[$key] = htmlspecialcharsbx($value);
${'str_' . $varName} = $tmp;
unset ($tmp);
}
}
}
$aTabs = array(
array(
"DIV" => "edit1",
"ICON"=>"main_user_edit",
"TAB" => GetMessage("LEARNING_EDIT_PARAM_SECTION"),
"TITLE"=>GetMessage("LEARNING_EDIT_PARAM_SECTION")
),
array(
"DIV" => "edit2",
"ICON"=>"main_user_edit",
"TAB" => GetMessage("LEARNING_ADMIN_TAB2"),
"TITLE"=>GetMessage("LEARNING_ADMIN_TAB2_EX")
),
array(
"DIV" => "edit3",
"ICON"=>"main_user_edit",
"TAB" => GetMessage("LEARNING_ADMIN_TAB3"),
"TITLE"=>GetMessage("LEARNING_ADMIN_TAB3_EX")
)
);
if (($LESSON_ID > 0) && CLearnAccessMacroses::CanUserViewLessonRelations (array('lesson_id' => $LESSON_ID)))
{
$arOPathes = CLearnLesson::GetListOfParentPathes($LESSON_ID);
$tabName = GetMessage("LEARNING_ADMIN_TAB4");
$aTabs[] = array(
"DIV" => "edit4",
"ICON"=>"main_user_edit",
"TAB" => $tabName,
"TITLE"=>GetMessage("LEARNING_ADMIN_TAB4_EX")
);
}
if (($LESSON_ID > 0) && CLearnAccessMacroses::CanUserViewLessonRights (array('lesson_id' => $LESSON_ID)))
{
$aTabs[] = array(
"DIV" => "edit5",
"ICON"=>"main_user_edit",
"TAB" => GetMessage("LEARNING_PERMISSIONS"),
"TITLE"=>GetMessage("LEARNING_PERMISSIONS")
);
}
$aTabs[] = $USER_FIELD_MANAGER->EditFormTab('LEARNING_LESSONS');
//$tabControl = new CAdminTabControl("lessonTabControl", $aTabs);
$tabControl = new CAdminForm("lessonTabControl", $aTabs);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
if ($message)
echo $message->Show();
if (!$bBadCourse):
// Back to lessons list available only if there is parentLessonPath exists
if (isset($g_learn_parentLessonPath))
{
$aContext = array(
array(
"ICON" => "btn_list",
"TEXT" => GetMessage("MAIN_ADMIN_MENU_LIST"),
"LINK" => "learn_unilesson_admin.php?lang=" . LANG . "&LESSON_PATH=" . urlencode($g_learn_parentLessonPath) . GetFilterParams("filter_"),
"TITLE" => GetMessage("MAIN_ADMIN_MENU_LIST")
),
);
}
else
{
// To all lessons list
$aContext = array(
array(
'ICON' => 'btn_list',
'TEXT' => GetMessage('LEARNING_ALL_LESSONS'),
'LINK' => 'learn_unilesson_admin.php?lang=' . LANG
. '&set_filter=Y'
. '&PARENT_LESSON_ID=-2', // magic number '-2' is means 'List lessons, without relation to parent'
'TITLE' => GetMessage('LEARNING_ALL_LESSONS')
)
);
}
if ($LESSON_ID > 0)
{
$aContext[] = array(
"ICON" => "btn_delete",
"TEXT" => GetMessage("MAIN_ADMIN_MENU_DELETE"),
"LINK" => "javascript:if(confirm('"
. GetMessage("LEARNING_CONFIRM_DEL_MESSAGE")
. "'))window.location='learn_unilesson_admin.php?lang=" . LANG
. "&action=delete&ID=" . $LESSON_ID
. ''
. "&" . bitrix_sessid_get()
. urlencode(GetFilterParams("filter_", false)) . "';",
);
/*
// If we are in context of parent lesson - we can unlink current lesson from parent
if (isset($g_learn_parentLessonId))
{
$aContext[] = array(
"ICON" => "btn_delete",
"TEXT" => GetMessage("LEARNING_UNLINK_LESSON_FROM_PARENT"),
"LINK" => "javascript:if(confirm('"
. GetMessage("LEARNING_CONFIRM_UNLINK_LESSON_FROM_PARENT")
. "'))window.location='learn_unilesson_admin.php?lang=" . LANG
. '&action=unlink'
. '&ID=' . urlencode($g_learn_currentLessonPath)
. "&" . bitrix_sessid_get()
. urlencode(GetFilterParams("filter_", false)) . "';",
);
}
*/
}
$context = new CAdminContextMenu($aContext);
$context->Show();
if(COption::GetOptionString("learning", "use_htmledit", "Y")=="Y" && CModule::IncludeModule("fileman"))
{
//TODO:This dirty hack will be replaced by special method like calendar do
echo '<div style="display:none">';
CFileMan::AddHTMLEditorFrame(
"SOME_TEXT",
"",
"SOME_TEXT_TYPE",
"text",
array(
'height' => 450,
'width' => '100%'
),
"N",
0,
"",
"",
false
);
echo '</div>';
}
?>
<script type="text/javascript">
function toggleSource() {
if (document.lessonTabControl_form.CONTENT_SOURCE[0].checked)
{
document.getElementById("source_field[0]").style.display = "";
if (document.getElementById("source_field[1]"))
document.getElementById("source_field[1]").style.display = "";
document.getElementById("source_file").style.display = "none";
}
else
{
document.getElementById("source_field[0]").style.display = "none";
if (document.getElementById("source_field[1]"))
document.getElementById("source_field[1]").style.display = "none";
document.getElementById("source_file").style.display = "";
}
}
</script>
<?
CAdminFileDialog::ShowScript(Array
(
"event" => "OpenFileBrowserWindMedia",
"arResultDest" => Array("FUNCTION_NAME" => "SetUrl"),
"arPath" => Array("SITE" => $_GET["site"], "PATH" =>(strlen($str_FILENAME)>0 ? GetDirPath($str_FILENAME) : '')),
"select" => 'F',// F - file only, D - folder only,
"operation" => 'O',// O - open, S - save
"showUploadTab" => true,
"showAddToMenuTab" => false,
"fileFilter" => 'wmv,flv,mp4,wma,mp3',//'' - don't shjow select, 'image' - only images; "ext1,ext2" - Only files with ext1 and ext2 extentions;
"allowAllFiles" => true,
"SaveConfig" => true
)
);
?>
<?php
function CustomizeEditor()
{
ob_start();
?>
<div class="bxed-dialog">
<table class="bx-image-dialog-tbl">
<tr>
<td class="bx-par-title"><?echo GetMessage("LEARNING_PATH_TO_FILE")?>:</td>
<td class="bx-par-val" colspan="3">
<input type="text" size="30" id="mediaPath" />
<input type="button" value="..." id="OpenFileBrowserWindMedia_button">
</td>
</tr>
<tr>
<td class="bx-par-title"><?echo GetMessage("LEARNING_WIDTH")?>:</td>
<td width="80px"><input type="text" size="3" id="mediaWidth" /></td>
<td><?echo GetMessage("LEARNING_HEIGHT")?>:</td>
<td class="bx-par-val"><input type="text" size="3" id="mediaHeight" /></td>
</tr>
</table>
</div>
<?php $dialogHTML = ob_get_clean()?>
<script type="text/javascript">
var pEditor;
var pElement;
function SetUrl(filename, path, site)
{
if (path.substr(-1) == "/")
{
path = path.substr(0, path.length - 1);
}
var url = path+'/'+filename;
BX("mediaPath").value = url;
if(BX("mediaPath").onchange)
BX("mediaPath").onchange();
}
function _mediaParser(_str, pMainObj)
{
// **** Parse WMV ****
// b1, b3 - quotes
// b2 - id of the div
// b4 - javascript config
var ReplaceWMV = function(str, b1, b2, b3, b4)
{
var
id = b2,
JSConfig, w, h, prPath;
try {eval('JSConfig = ' + b4); } catch (e) { JSConfig = false; }
if (!id || !JSConfig)
return '';
var w = (parseInt(JSConfig.width) || 50);
var h = (parseInt(JSConfig.height) || 25);
var arTagParams = {file: JSConfig.file};
var bxTag = pMainObj.GetBxTag(id);
if (bxTag && bxTag && bxTag.tag == "media")
{
arTagParams.id = id;
}
return '<img id="' + pMainObj.SetBxTag(false, {tag: 'media', params: arTagParams}) + '" src="/bitrix/images/1.gif" style="border: 1px solid rgb(182, 182, 184); background-color: rgb(226, 223, 218); background-image: url(/bitrix/images/learning/icons/media.gif); background-position: center center; background-repeat: no-repeat; width: '+w+'px; height: '+h+'px;" width="'+w+'" height="'+h+'" />';
}
_str = _str.replace(/<script.*?silverlight\.js.*?<\/script>\s*?<script.*?wmvplayer\.js.*?<\/script>\s*?<div.*?id\s*?=\s*?("|\')(.*?)\1.*?<\/div>\s*?<script.*?jeroenwijering\.Player\(document\.getElementById\(("|\')\2\3.*?wmvplayer\.xaml.*?({.*?})\).*?<\/script>/ig, ReplaceWMV);
// **** Parse FLV ****
var ReplaceFLV = function(str, attr)
{
attr = attr.replace(/[\r\n]+/ig, ' '); attr = attr.replace(/\s+/ig, ' '); attr = jsUtils.trim(attr);
var
arParams = {},
arFlashvars = {},
w, h, id, prPath;
attr.replace(/([^\w]??)(\w+?)\s*=\s*("|\')([^\3]+?)\3/ig, function(s, b0, b1, b2, b3)
{
b1 = b1.toLowerCase();
if (b1 == 'src' || b1 == 'type' || b1 == 'allowscriptaccess' || b1 == 'allowfullscreen' || b1 == 'pluginspage' || b1 == 'wmode')
return '';
arParams[b1] = b3; return b0;
});
id = arParams.id;
if (!id || !arParams.flashvars)
return str;
arParams.flashvars.replace(/(\w+?)=((?:\s|\S)*?)&/ig, function(s, name, val) { arFlashvars[name] = val; return ''; });
var w = (parseInt(arParams.width) || 50);
var h = (parseInt(arParams.height) || 25);
var arTagParams = {file: arFlashvars["file"]};
var bxTag = pMainObj.GetBxTag(id);
if (bxTag && bxTag && bxTag.tag == "media")
{
arTagParams.id = id;
}
return '<img id="' + pMainObj.SetBxTag(false, {tag: 'media', params: arTagParams}) + '" src="/bitrix/images/1.gif" style="border: 1px solid rgb(182, 182, 184); background-color: rgb(226, 223, 218); background-image: url(/bitrix/images/learning/icons/media.gif); background-position: center center; background-repeat: no-repeat; width: '+w+'px; height: '+h+'px;" width="'+w+'" height="'+h+'" />';
}
_str = _str.replace(/<object.*?>.*?<embed((?:\s|\S)*?player\/mediaplayer\/player\.swf(?:\s|\S)*?)(?:>\s*?<\/embed)?(?:\/?)?>.*?<\/object>/ig, ReplaceFLV);
return _str;
}
arContentParsers.unshift(_mediaParser);
function _mediaUnParser(_node, pMainObj)
{
bxTag = pMainObj.GetBxTag(_node.arAttributes["id"]);
if (bxTag && bxTag.tag && bxTag.tag == "media")
{
var ext = bxTag.params.file.substr(bxTag.params.file.length - 3);
var bWM = ext == "wmv" || ext == "wma";
if (!bWM) // FL
{
var str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" ';
str += 'id="' + _node.arAttributes["id"] + '" ';
str += 'width="' + _node.arAttributes["width"] + '" ';
str += 'height="' + _node.arAttributes["height"] + '" ';
str += '>';
str += '<param name="movie" value="/bitrix/components/bitrix/player/mediaplayer/player">';
var embed = '<embed src="/bitrix/components/bitrix/player/mediaplayer/player" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" pluginspage="http:/' + '/www.macromedia.com/go/getflashplayer" ';
embed += 'id="' + _node.arAttributes["id"] + '" ';
var arParams = {
"menu": "true",
"wmode": "transparent",
"width": _node.arAttributes["width"],
"height": _node.arAttributes["height"],
"flashvars" : {
"file" : bxTag.params.file,
"logo.hide" : "true",
"skin": "/bitrix/components/bitrix/player/mediaplayer/skins/bitrix.swf",
"repeat" : "N",
"bufferlength" : "10",
"dock" : "true"
}
}
for (i in arParams)
{
if (i == 'flashvars')
{
embed += 'flashvars="';
str += '<param name="flashvars" value="';
for (k in arParams[i])
{
embed += k + '=' + arParams[i][k] + '&';
str += k + '=' + arParams[i][k] + '&';
}
embed = embed.substring(0, embed.length - 1) + '" ';
str = str.substring(0, str.length - 1) + '">';
}
else
{
embed += i + '="' + arParams[i] + '" ';
str += '<param name="' + i +'" value="' + arParams[i] +'">';
}
}
embed += '/>';
str += embed +'</object>';
}
else // WM
{
str = '<script type="text/javascript" src="/bitrix/components/bitrix/player/wmvplayer/silverlight.js" /><\/script>' +
'<script type="text/javascript" src="/bitrix/components/bitrix/player/wmvplayer/wmvplayer.js"><\/script>' +
'<div id="' + _node.arAttributes["id"] + '">WMV Player</div>' +
'<script type="text/javascript">new jeroenwijering.Player(document.getElementById("' + _node.arAttributes["id"] + '"), "/bitrix/components/bitrix/player/wmvplayer/wmvplayer.xaml", {';
var arParams = {
"file" : bxTag.params.file,
"bufferlength" : "10",
"width": _node.arAttributes["width"],
"height": _node.arAttributes["height"],
"windowless": "true"
}
for (i in arParams)
str += i + ': "' + arParams[i] + '", ';
str = str.substring(0, str.length - 2);
str += '});<\/script>';
}
return str;
}
return false;
}
oBXEditorUtils.addUnParser(_mediaUnParser);
var pSaveButton = new BX.CWindowButton({
'title': '<?echo GetMessage("LEARNING_SAVE")?>',
'action': function() {
var path = BX('mediaPath').value;
var width = BX('mediaWidth').value;
var height = BX('mediaHeight').value;
this.parentWindow.Close();
if (path.length > 0 && parseInt(width) > 0 && parseInt(height) > 0)
{
if (pElement && pElement.getAttribute && pElement.getAttribute("id"))
{
var bxTag = pEditor.GetBxTag(pElement.getAttribute("id"))
if (bxTag && bxTag.tag && bxTag.tag == "media")
{
bxTag.params.file = path;
SAttr(pElement, "width", width);
SAttr(pElement, "height", height);
pElement.style.width = width + "px";
pElement.style.height = height + "px";
}
}
else
{
var arParams = {file: path};
pEditor.insertHTML('<img id="' + pEditor.SetBxTag(false, {tag: 'media', params: arParams}) + '" src="/bitrix/images/1.gif" style="border: 1px solid rgb(182, 182, 184); background-color: rgb(226, 223, 218); background-image: url(/bitrix/images/learning/icons/media.gif); background-position: center center; background-repeat: no-repeat; width: '+width+'px; height: '+height+'px;" width="'+width+'" height="'+height+'" />');
}
}
pElement = null;
}
});
var pDialog = new BX.CDialog({
title : '<?echo GetMessage("LEARNING_VIDEO_AUDIO")?>',
content: '<?php echo CUtil::JSEscape(preg_replace("~>\s+<~", "><", trim($dialogHTML)))?>',
height: 180,
width: 520,
resizable: false,
buttons: [pSaveButton, BX.CDialog.btnClose]
});
var pMediaButton = [
'BXButton',
{
id : 'media',
src : '/bitrix/images/learning/icons/media.gif',
name : "<?echo GetMessage("LEARNING_VIDEO_AUDIO")?>",
handler : function () {
pDialog.Show();
pEditor = this.pMainObj;
BX("OpenFileBrowserWindMedia_button").onclick = OpenFileBrowserWindMedia;
pElement = pEditor.GetSelectionObject();
if (pElement && pElement.getAttribute && pElement.getAttribute("id"))
{
var bxTag = pEditor.GetBxTag(pElement.getAttribute("id"))
if (bxTag && bxTag.tag && bxTag.tag == "media")
{
BX('mediaPath').value = bxTag.params.file;
BX('mediaWidth').value = pElement.getAttribute("width");
BX('mediaHeight').value = pElement.getAttribute("height");
}
}
else
{
BX('mediaPath').value = "";
BX('mediaWidth').value = "400";
BX('mediaHeight').value = "300";
}
}
}
];
if (window.lightMode)
{
for(var i = 0, l = arGlobalToolbar.length; i < l ; i++)
{
var arButton = arGlobalToolbar[i];
if (arButton[1] && arButton[1].id == "insert_flash" && arGlobalToolbar[i+1][1].id != "media") {
arGlobalToolbar.splice(i + 1, 0, pMediaButton);
break;
}
}
}
else
{
oBXEditorUtils.appendButton("insert_media", pMediaButton, "standart");
}
</script>
<?php }?>
<?php AddEventHandler("fileman", "OnIncludeHTMLEditorScript", "CustomizeEditor"); ?>
<?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="LESSON_ID" value="<?php echo $LESSON_ID; ?>">
<?php
// PARENT_LESSON_ID transmitted only when new lesson creating pended and
if (($LESSON_ID == 0) && isset($g_learn_parentLessonId))
{
?>
<input type="hidden" name="PARENT_LESSON_ID" value="<?php echo ($g_learn_parentLessonId + 0); ?>">
<?php
}
if (isset($g_learn_currentLessonPath))
{
?>
<input type="hidden" name="LESSON_PATH" value="<?php echo htmlspecialcharsbx($g_learn_currentLessonPath); ?>">
<?php
}
$tabControl->EndEpilogContent();
if ($LESSON_ID > 0)
$bContentReadOnly = ! CLearnAccessMacroses::CanUserEditLesson (array('lesson_id' => $LESSON_ID));
else
$bContentReadOnly = ! $oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_CREATE);
$tabControl->Begin();
$tabControl->BeginNextFormTab();
?>
<!-- ID -->
<?php $tabControl->BeginCustomField("LESSON_ID", "ID", false);?>
<?if($LESSON_ID > 0):?>
<tr>
<td><?echo $tabControl->GetCustomLabelHTML()?>:</td>
<td><?=$str_LESSON_ID?></td>
</tr>
<? endif; ?>
<?php $tabControl->EndCustomField("LESSON_ID");?>
<!-- Timestamp_X -->
<?php $tabControl->BeginCustomField("TIMESTAMP_X", GetMessage("LEARNING_LAST_UPDATE"), false);?>
<?if($LESSON_ID > 0):?>
<tr>
<td><?echo $tabControl->GetCustomLabelHTML()?>:</td>
<td><?=$str_TIMESTAMP_X?></td>
</tr>
<? endif; ?>
<?php $tabControl->EndCustomField("TIMESTAMP_X");?>
<!-- Created by -->
<?php $tabControl->BeginCustomField("CREATED_BY", GetMessage("LEARNING_AUTHOR"), false);?>
<?if($LESSON_ID > 0):?>
<tr>
<td><?echo $tabControl->GetCustomLabelHTML()?>:</td>
<td>
<?php
echo '[<a href="user_edit.php?ID=' . ($str_CREATED_BY + 0)
. '&lang=' . LANG . '">'
. $str_CREATED_BY . '</a>] '
. $str_CREATED_USER_NAME;
?>
</td>
</tr>
<? endif; ?>
<?php $tabControl->EndCustomField("CREATED_BY");?>
<!-- Active -->
<?php $tabControl->BeginCustomField("ACTIVE", GetMessage("LEARNING_ACTIVE"), false);?>
<tr>
<td><?echo $tabControl->GetCustomLabelHTML()?>:</td>
<td><?php
if ($bContentReadOnly)
{
if ($str_ACTIVE == 'Y')
echo GetMessage('LEARNING_YES');
else
echo GetMessage('LEARNING_NO');
}
else
{
?><input type="checkbox" name="ACTIVE" value="Y"<?if($str_ACTIVE=="Y")echo " checked"?>><?php
}
?>
</td>
</tr>
<?php $tabControl->EndCustomField("ACTIVE", '<input type="hidden" id="ACTIVE" name="ACTIVE" value="' . $str_ACTIVE . '">');
$tabControl->BeginCustomField("NAME", GetMessage("LEARNING_NAME"), false);?>
<tr class="adm-detail-required-field">
<td><?echo $tabControl->GetCustomLabelHTML()?>:</td>
<td valign="top">
<?php
if ($bContentReadOnly)
echo $str_NAME;
else
{
?>
<input type="text" name="NAME" size="50" maxlength="255" value="<?echo $str_NAME?>">
<?php
}
?>
</td>
</tr>
<?php
$tabControl->EndCustomField("NAME", '<input type="hidden" id="NAME" name="NAME" value="' . $str_NAME . '">');
$tabControl->BeginCustomField('CODE', GetMessage('LEARNING_CODE'), false);?>
<!-- CODE -->
<tr>
<td><? echo $tabControl->GetCustomLabelHTML()?>:</td>
<td>
<?php
if ($bContentReadOnly)
echo $str_CODE;
else
{
?>
<input type="text" name="CODE" size="20" maxlength="40" value="<?php echo $str_CODE; ?>">
<?php
}
?>
</td>
</tr>
<?php
$tabControl->EndCustomField('CODE', '<input type="hidden" id="CODE" name="CODE" value="' . $str_CODE . '">');
$tabControl->BeginCustomField("KEYWORDS", GetMessage("LEARNING_KEYWORDS"), false);?>
<tr>
<td><?echo $tabControl->GetCustomLabelHTML()?>:</td>
<td valign="top">
<?php
if ($bContentReadOnly)
echo $str_KEYWORDS;
else
{
?>
<input type="text" name="KEYWORDS" size="50" maxlength="255" value="<?echo $str_KEYWORDS?>">
<?php
}
?>
</td>
</tr>
<?php
$tabControl->EndCustomField("KEYWORDS", '<input type="hidden" id="KEYWORDS" name="KEYWORDS" value="' . $str_KEYWORDS . '">');
// If we are in context of parent lesson - show EDGE_SORT property
if (isset($g_learn_parentLessonId))
{
$resParentLessonData = CLearnLesson::GetByID($g_learn_parentLessonId);
$arParentLessonData = $resParentLessonData->GetNext();
if (is_array($arParentLessonData))
{
$tabControl->BeginCustomField("ZOMBIE_CONTEXT_PARENT_NAME", GetMessage("LEARNING_PARENT_CHAPTER_ID"), false);
?>
<tr>
<td><?echo $tabControl->GetCustomLabelHTML()?>:</td>
<td><?php echo $arParentLessonData['NAME']; ?></td>
</tr>
<?php
$tabControl->EndCustomField("ZOMBIE_CONTEXT_PARENT_NAME");
$tabControl->BeginCustomField('EDGE_SORT', GetMessage('LEARNING_SORT'), false);
?>
<!-- Sort -->
<tr>
<td><? echo $tabControl->GetCustomLabelHTML()?>:</td>
<td>
<?php
if ($bContentReadOnly)
echo $str_EDGE_SORT;
else
{
?>
<input type="text" name="EDGE_SORT" size="10" maxlength="10" value="<?php echo $str_EDGE_SORT; ?>">
<?php
}
?>
</td>
</tr>
<?php
if ($bContentReadOnly)
$tabControl->EndCustomField('EDGE_SORT');
else
$tabControl->EndCustomField('EDGE_SORT', '<input type="hidden" id="EDGE_SORT" name="EDGE_SORT" value="' . $str_EDGE_SORT . '">');
}
unset ($resParentLessonData, $arParentLessonData);
}
// PUBLISH_PROHIBITED - Only in context of most top course
if ($topCourseLessonId !== false)
{
$resRootLessonData = CLearnLesson::GetByID($topCourseLessonId);
$arRootLessonData = $resRootLessonData->Fetch();
if (is_array($arRootLessonData))
{
$tabControl->BeginCustomField(
'PUBLISH_PROHIBITED',
GetMessage('LEARNING_COURSE_ADM_PUBLISH_PROHIBITED'),
false
);
?>
<!-- PUBLISH_PROHIBITED -->
<tr>
<td><? echo $tabControl->GetCustomLabelHTML()?>:</td>
<td>
<label>
<?php
if ($bContentReadOnly)
echo $str_PUBLISH_PROHIBITED;
else
{
?>
<input type="checkbox" name="PUBLISH_PROHIBITED"
value="Y" <?php if ($str_PUBLISH_PROHIBITED=="Y") echo "checked"; ?>>
<?php
}
echo ' ('
. str_replace(
'#COURSE_NAME#',
'«' . htmlspecialcharsbx($arRootLessonData['NAME']) . '»',
GetMessage('LEARNING_COURSE_ADM_PUBLISH_PROHIBITED_CONTEXT')
)
. ')';
?>
</label>
</td>
</tr>
<?php
if ($bContentReadOnly)
$tabControl->EndCustomField('PUBLISH_PROHIBITED');
else
$tabControl->EndCustomField('PUBLISH_PROHIBITED', '<input type="hidden" id="PUBLISH_PROHIBITED" name="PUBLISH_PROHIBITED" value="' . $str_PUBLISH_PROHIBITED . '">');
}
unset ($resParentLessonData, $arRootLessonData);
}
$tabControl->BeginNextFormTab();
$tabControl->BeginCustomField("PREVIEW_TEXT", GetMessage("LEARNING_PREVIEW_TEXT"), false);?>
<?if(COption::GetOptionString("learning", "use_htmledit", "Y")=="Y" && CModule::IncludeModule("fileman")):?>
<tr>
<td colspan="2" align="center">
<?php
if ($bContentReadOnly)
{
?>
<div>
<?php
echo GetMessage("LEARNING_DESC_TYPE") . ': ';
if ($str_PREVIEW_TEXT_TYPE != 'html')
echo GetMessage("LEARNING_DESC_TYPE_TEXT");
else
echo GetMessage("LEARNING_DESC_TYPE_HTML");
?>
</div>
<div id="learn_unilesson_edit_preview_text_div">
<script type="text/javascript">
var iframe = document.createElement('iframe');
iframe.style.width = '100%';
iframe.style.height = '200px';
document.getElementById('learn_unilesson_edit_preview_text_div').appendChild(iframe);
var idoc = iframe.contentWindow.document;
idoc.write('<?php echo CUtil::JSEscape(htmlspecialcharsback($str_PREVIEW_TEXT)); ?>');
</script>
</div>
<?php
}
else
{
CFileMan::AddHTMLEditorFrame(
"PREVIEW_TEXT",
$str_PREVIEW_TEXT,
"PREVIEW_TEXT_TYPE",
$str_PREVIEW_TEXT_TYPE,
array(
'width' => '100%',
'height' => '600'
),
"N",
0,
"",
"",
false,
true,
false,
array('toolbarConfig' => CFileman::GetEditorToolbarConfig("learning_".(defined('BX_PUBLIC_MODE') && BX_PUBLIC_MODE == 1 ? 'public' : 'admin')))
);
}
?>
</td>
</tr>
<?else:?>
<tr>
<td align="center"><?echo GetMessage("LEARNING_DESC_TYPE")?>:</td>
<td>
<input type="radio" <?php if ($bContentReadOnly) echo ' disabled="disabled" '; ?> name="PREVIEW_TEXT_TYPE" value="text"<?if($str_PREVIEW_TEXT_TYPE!="html")echo " checked"?>> <?echo GetMessage("LEARNING_DESC_TYPE_TEXT")?> /
<input type="radio" <?php if ($bContentReadOnly) echo ' disabled="disabled" '; ?> name="PREVIEW_TEXT_TYPE" value="html"<?if($str_PREVIEW_TEXT_TYPE=="html")echo " checked"?>> <?echo GetMessage("LEARNING_DESC_TYPE_HTML")?>
</td>
</tr>
<tr>
<td colspan="2">
<?php
if ($bContentReadOnly)
{
?>
<div id="learn_unilesson_edit_preview_text_div">
<script type="text/javascript">
var iframe = document.createElement('iframe');
iframe.style.width = '100%';
iframe.style.height = '200px';
document.getElementById('learn_unilesson_edit_preview_text_div').appendChild(iframe);
var idoc = iframe.contentWindow.document;
idoc.write('<?php echo CUtil::JSEscape(htmlspecialcharsback($str_PREVIEW_TEXT)); ?>');
</script>
</div>
<?php
}
else
{
?>
<textarea style="width:100%; height:200px;" name="PREVIEW_TEXT" wrap="virtual"><?echo $str_PREVIEW_TEXT?></textarea>
<?php
}
?>
</td>
</tr>
<?endif?>
<?php $tabControl->EndCustomField("PREVIEW_TEXT",
'<input type="hidden" id="PREVIEW_TEXT" name="PREVIEW_TEXT" value="' . $str_PREVIEW_TEXT . '">'.
'<input type="hidden" id="PREVIEW_TEXT_TYPE" name="PREVIEW_TEXT_TYPE" value="' . $str_PREVIEW_TEXT_TYPE . '">'
);?>
<?php $tabControl->BeginCustomField("PREVIEW_PICTURE", GetMessage("LEARNING_PICTURE"), false);?>
<tr>
<?php
if ( $bContentReadOnly && ! $str_PREVIEW_PICTURE)
{
?>
<td colspan="2" align="center">
<?php
echo $tabControl->GetCustomLabelHTML() . ': ' . GetMessage('LEARNING_NO');
?>
</td>
<?php
}
else
{
?>
<td valign="top" style="width:50%;"><?echo $tabControl->GetCustomLabelHTML()?></td>
<td>
<?php
if ( ! $bContentReadOnly )
echo CFile::InputFile("PREVIEW_PICTURE", 20, $str_PREVIEW_PICTURE, false, 0, "IMAGE", "", 40) . '<br>';
if ($str_PREVIEW_PICTURE)
{
echo CFile::ShowImage($str_PREVIEW_PICTURE, 200, 200, "border=0", "", true);
}
?>
</td>
<?php
}
?>
</tr>
<?php $tabControl->EndCustomField("PREVIEW_PICTURE");?>
<?$tabControl->BeginNextFormTab();?>
<?php $tabControl->BeginCustomField("DESCRIPTION", GetMessage("LEARNING_DESCRIPTION"), false);?>
<tr>
<td valign="top" width="50%" align="right"><?echo GetMessage("LEARNING_CONTENT_SOURCE")?>:</td>
<td valign="top" width="50%">
<label><input onClick="toggleSource()" <?php if ($bContentReadOnly) echo ' disabled="disabled" '; ?> type="radio" name="CONTENT_SOURCE" value="field"<?php echo $str_DETAIL_TEXT_TYPE!="file" ? " checked" : ""?>> <?echo GetMessage("LEARNING_CONTENT_SOURCE_FIELD")?></label><br />
<label><input onClick="toggleSource()" <?php if ($bContentReadOnly) echo ' disabled="disabled" '; ?> type="radio" name="CONTENT_SOURCE" value="file"<?php echo $str_DETAIL_TEXT_TYPE=="file" ? " checked" : ""?>> <?echo GetMessage("LEARNING_CONTENT_SOURCE_FILE")?> (pdf, html, text, jpg, png)</label>
</td>
</tr>
<?if(COption::GetOptionString("learning", "use_htmledit", "Y")=="Y" && CModule::IncludeModule("fileman")):
?>
<tr id="source_field[0]">
<td colspan="2" align="center">
<?php
if ($bContentReadOnly)
{
?>
<div>
<?php
echo GetMessage("LEARNING_DESC_TYPE") . ': ';
if ($str_DETAIL_TEXT_TYPE != 'html')
echo GetMessage("LEARNING_DESC_TYPE_TEXT");
else
echo GetMessage("LEARNING_DESC_TYPE_HTML");
?>
</div>
<div id="learn_unilesson_edit_detail_text_div">
<script type="text/javascript">
var iframe = document.createElement('iframe');
iframe.style.width = '100%';
iframe.style.height = '300px';
document.getElementById('learn_unilesson_edit_detail_text_div').appendChild(iframe);
var idoc = iframe.contentWindow.document;
idoc.write('<?php echo CUtil::JSEscape(htmlspecialcharsback($str_DETAIL_TEXT)); ?>');
</script>
</div>
<?php
}
else
{
CFileMan::AddHTMLEditorFrame(
"DETAIL_TEXT",
$str_DETAIL_TEXT,
"DETAIL_TEXT_TYPE",
$str_DETAIL_TEXT_TYPE,
array(
'width' => '100%',
'height' => '600'
),
"N",
0,
"",
"",
false,
true,
false,
array('toolbarConfig' => CFileman::GetEditorToolbarConfig("learning_".(defined('BX_PUBLIC_MODE') && BX_PUBLIC_MODE == 1 ? 'public' : 'admin')))
);
}
?>
</td>
</tr>
<?else:?>
<tr id="source_field[0]">
<td valign="top"><?echo GetMessage("LEARNING_DESC_TYPE")?></td>
<td valign="top">
<input type="radio" <?php if ($bContentReadOnly) echo ' disabled="disabled" '; ?> name="DETAIL_TEXT_TYPE" value="text"<?if($str_DETAIL_TEXT_TYPE!="html")echo " checked"?>> <?echo GetMessage("LEARNING_DESC_TYPE_TEXT")?> /
<input type="radio" <?php if ($bContentReadOnly) echo ' disabled="disabled" '; ?> name="DETAIL_TEXT_TYPE" value="html"<?if($str_DETAIL_TEXT_TYPE=="html")echo " checked"?>> <?echo GetMessage("LEARNING_DESC_TYPE_HTML")?>
</td>
</tr>
<tr id="source_field[1]">
<td valign="top" align="center" colspan="2">
<?php
if ($bContentReadOnly)
{
?>
<div id="learn_unilesson_edit_detail_text_div">
<script type="text/javascript">
var iframe = document.createElement('iframe');
iframe.style.width = '100%';
iframe.style.height = '200px';
document.getElementById('learn_unilesson_edit_detail_text_div').appendChild(iframe);
var idoc = iframe.contentWindow.document;
idoc.write('<?php echo CUtil::JSEscape(htmlspecialcharsback($str_DETAIL_TEXT)); ?>');
</script>
</div>
<?php
}
else
{
?>
<textarea style="width:100%; height:200px;" name="DETAIL_TEXT" wrap="virtual"><?echo $str_DETAIL_TEXT?></textarea>
<?php
}
?>
</td>
</tr>
<?endif;?>
<tr id="source_file">
<td valign="top" align="right"><?echo GetMessage("LEARNING_PATH_TO_FILE")?>:</td>
<td valign="top">
<?php
if ($bContentReadOnly)
echo $str_LAUNCH;
else
{
?>
<input type="text" name="LAUNCH" size="50" maxlength="255" value="<?echo $str_LAUNCH?>">
<?php
}
?>
</td>
</tr>
<script type="text/javascript">toggleSource()</script>
<?php $tabControl->EndCustomField("DESCRIPTION",
'<input type="hidden" id="DESCRIPTION" name="DESCRIPTION" value="' . $str_DESCRIPTION . '">'
. '<input type="hidden" id="DETAIL_TEXT_TYPE" name="DETAIL_TEXT_TYPE" value="' . $str_DETAIL_TEXT_TYPE . '">'
. '<input type="hidden" id="LAUNCH" name="LAUNCH" value="' . $str_LAUNCH . '">'
);?>
<?php $tabControl->BeginCustomField("DETAIL_PICTURE", GetMessage("LEARNING_PICTURE"), false);?>
<tr>
<?php
if ( $bContentReadOnly && ! $str_DETAIL_PICTURE)
{
?>
<td colspan="2" align="center">
<?php
echo $tabControl->GetCustomLabelHTML() . ': ' . GetMessage('LEARNING_NO');
?>
</td>
<?php
}
else
{
?>
<td valign="top" style="width:50%;"><?echo $tabControl->GetCustomLabelHTML()?></td>
<td>
<?php
if ( ! $bContentReadOnly )
echo CFile::InputFile("DETAIL_PICTURE", 20, $str_DETAIL_PICTURE, false, 0, "IMAGE", "", 40) . '<br>';
if ($str_DETAIL_PICTURE)
{
echo CFile::ShowImage($str_DETAIL_PICTURE, 200, 200, "border=0", "", true);
}
?>
</td>
<?php
}
?>
</tr>
<?php $tabControl->EndCustomField("DETAIL_PICTURE");
// Tab: Relations
if (($LESSON_ID > 0) && CLearnAccessMacroses::CanUserViewLessonRelations (array('lesson_id' => $LESSON_ID)))
{
$tabControl->BeginNextFormTab();
$tabControl->BeginCustomField("_RELATIONS", '', false);
echo '<tr><td>';
CLearnRelationHelper::RenderForm($oAccess, $LESSON_ID, $arOPathes);
echo '</td></tr>';
$tabControl->EndCustomField("_RELATIONS", '<input type="hidden" id="SKIP_RELATIONS_SAVING" name="SKIP_RELATIONS_SAVING" value="Y">');
}
else
{
/*
$tabControl->BeginNextFormTab();
$tabControl->BeginCustomField("_RELATIONS", '', false);
if ($LESSON_ID > 0)
{
echo '<tr><td>'
. GetMessage('LEARNING_ACCESS_D_FOR_EDIT_CONTENT')
. '</td></tr>';
}
else
{
echo '<tr><td>'
. GetMessage('LEARNING_EDIT_FORM_WILL_BE_AVAILABLE_AFTER_LESSON_CREATION')
. '</td></tr>';
}
$tabControl->EndCustomField("_RELATIONS", '<input type="hidden" id="SKIP_RELATIONS_SAVING" name="SKIP_RELATIONS_SAVING" value="Y">');
*/
}
if (($LESSON_ID > 0) && CLearnAccessMacroses::CanUserViewLessonRights (array('lesson_id' => $LESSON_ID)))
{
$readOnly = true;
if (CLearnAccessMacroses::CanUserEditLessonRights (array('lesson_id' => $LESSON_ID)))
$readOnly = false;
$tabControl->BeginNextFormTab();
$tabControl->BeginCustomField("__GESGSTR", '', false);
CLearnRenderRightsEdit::RenderLessonRightsTab ($USER->GetID(), 'LESSON_RIGHTS', $LESSON_ID, $readOnly);
if ($readOnly)
echo '<input type="hidden" id="SKIP_RIGHTS_SAVING" name="SKIP_RIGHTS_SAVING" value="Y">';
$tabControl->EndCustomField("__GESGSTR");
}
else
{
/*
$tabControl->BeginNextFormTab();
$tabControl->BeginCustomField("__GESGSTR", '', false);
if ($LESSON_ID > 0)
{
echo '<tr><td>'
. GetMessage('LEARNING_ACCESS_D_FOR_MANAGE_RIGHTS')
. '</td></tr>';
}
else
{
echo '<tr><td>'
. GetMessage('LEARNING_EDIT_FORM_WILL_BE_AVAILABLE_AFTER_LESSON_CREATION')
. '</td></tr>';
}
$tabControl->EndCustomField("__GESGSTR", '<input type="hidden" id="SKIP_RIGHTS_SAVING" name="SKIP_RIGHTS_SAVING" value="Y">');
*/
}
$uriParentLessonPath = "";
if ($LESSON_ID === 0 && isset($g_learn_currentLessonPath))
{
$uriParentLessonPath = '&LESSON_PATH=' . urlencode($g_learn_currentLessonPath);
}
elseif (isset($g_learn_parentLessonPath))
{
$uriParentLessonPath = '&LESSON_PATH=' . urlencode($g_learn_parentLessonPath);
}
if (isset($g_learn_currentLessonPath))
$uriCurrentLessonPath = '&LESSON_PATH=' . urlencode($g_learn_currentLessonPath);
else
$uriCurrentLessonPath = '';
$tabControl->BeginNextFormTab();
$tabControl->BeginCustomField("UFS", '', false);
$USER_FIELD_MANAGER->EditFormShowTab('LEARNING_LESSONS', $bVarsFromForm, $LESSON_ID);
$tabControl->EndCustomField("UFS");
$tabControl->Buttons(
array(
'disabled' => $isBtnsDisabled,
"back_url" => "/bitrix/admin/learn_unilesson_admin.php?lang=". LANG
. $uriParentLessonPath
. GetFilterParams("filter_", false)
)
);
$tabControl->arParams["FORM_ACTION"] = $APPLICATION->GetCurPage() . "?lang=" . LANG
. $uriCurrentLessonPath
. GetFilterParams("filter_");
$tabControl->Show();
//$tabControl->End();
$tabControl->ShowWarnings($tabControl->GetName(), $message);
else: //if (!$bBadCourse)
$aContext = array(
array(
"ICON" => "btn_list",
"TEXT"=>GetMessage("MAIN_ADMIN_MENU_LIST"),
"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"));
endif;
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");?>