589 lines
19 KiB
PHP
589 lines
19 KiB
PHP
<?php
|
|
IncludeModuleLangFile(__FILE__);
|
|
|
|
$GLOBALS["aSortTypes"] = array(
|
|
"reference" => array(GetMessage("FDATE_LAST_MESSAGE"), GetMessage("FMESSAGE_TOPIC"), GetMessage("FNUM_ANSWERS"), GetMessage("FNUM_VIEWS"), GetMessage("FSTART_DATE"), GetMessage("FAUTHOR_TOPIC")),
|
|
"reference_id" => array("P", "T", "N", "V", "D", "A"));
|
|
|
|
$GLOBALS["aSortDirection"] = array(
|
|
"reference" => array(GetMessage("FASC"), GetMessage("FDESC")),
|
|
"reference_id" => array("ASC", "DESC"));
|
|
|
|
// A < E < I < M < Q < U < Y
|
|
// A - NO ACCESS E - READ I - ANSWER
|
|
// M - NEW TOPIC Q - MODERATE U - EDIT Y - FULL_ACCESS
|
|
$GLOBALS["aForumPermissions"] = array(
|
|
"reference" => array(GetMessage("FNO_ACCESS"), GetMessage("FREAD_ACCESS"), GetMessage("FANSWER_ACCESS"), GetMessage("FNEW_MESSAGE_ACCESS"), GetMessage("FMODERATE_ACCESS"), GetMessage("FEDIT_ACCESS"), GetMessage("FFULL_ACCESS")),
|
|
"reference_id" => array("A", "E", "I", "M", "Q", "U", "Y"));
|
|
$GLOBALS["FORUMS_PER_PAGE"] = intVal(COption::GetOptionString("forum", "FORUMS_PER_PAGE", "10"));
|
|
$GLOBALS["FORUM_TOPICS_PER_PAGE"] = intVal(COption::GetOptionString("forum", "TOPICS_PER_PAGE", "10"));
|
|
$GLOBALS["FORUM_MESSAGES_PER_PAGE"] = intVal(COption::GetOptionString("forum", "MESSAGES_PER_PAGE", "10"));
|
|
|
|
|
|
/**
|
|
* @deprecated
|
|
*/
|
|
function ForumSetAllMessagesReaded($FID = false)
|
|
{
|
|
global $USER;
|
|
|
|
if ($FID!==false)
|
|
{
|
|
$FID = IntVal($FID);
|
|
CForumNew::SetLabelsBeRead($FID, $USER->GetUserGroupArray());
|
|
return true;
|
|
}
|
|
|
|
$arFilter = array();
|
|
if (!CForumUser::IsAdmin())
|
|
{
|
|
$arFilter["LID"] = LANG;
|
|
$arFilter["PERMS"] = array($USER->GetGroups(), 'A');
|
|
$arFilter["ACTIVE"] = "Y";
|
|
}
|
|
$db_Forum = CForumNew::GetList(array(), $arFilter);
|
|
while ($ar_Forum = $db_Forum->Fetch())
|
|
{
|
|
CForumNew::SetLabelsBeRead($ar_Forum["ID"], $USER->GetUserGroupArray());
|
|
}
|
|
|
|
return false;
|
|
}
|
|
/**
|
|
* @deprecated
|
|
*/
|
|
function ForumSetReader($FID) // DEPRECATED
|
|
{
|
|
global $USER;
|
|
$FID = intVal($FID);
|
|
$_SESSION["FORUM"]["LAST_VISIT_FORUM_".$FID] = CForumNew::GetNowTime("timestamp");
|
|
return false;
|
|
}
|
|
/**
|
|
* @deprecated
|
|
*/
|
|
function ForumSetAllMessagesRead($FID = false)
|
|
{
|
|
ForumSetReadForum($FID);
|
|
}
|
|
/**
|
|
* @deprecated
|
|
*/
|
|
function ForumDeleteSubscribe($ID, &$strErr, &$strOk)
|
|
{
|
|
global $USER;
|
|
$ID = IntVal($ID);
|
|
if (CForumSubscribe::CanUserDeleteSubscribe($ID, $USER->GetUserGroupArray(), $USER->GetID()))
|
|
{
|
|
CForumSubscribe::Delete($ID);
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
$strErr = GetMessage("FSUBSC_NO_SPERMS").". \n";
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* @deprecated
|
|
*/
|
|
function ForumInitParams()
|
|
{
|
|
// unset($_SESSION["FORUM"]);
|
|
$UserLogin = "GUEST";
|
|
$LastVisit = time() + CTimeZone::GetOffset();
|
|
if ($GLOBALS["USER"]->IsAuthorized())
|
|
{
|
|
if (!is_array($_SESSION["FORUM"]["USER"]) || $_SESSION["FORUM"]["USER"]["USER_ID"] != $GLOBALS["USER"]->GetID()):
|
|
$_SESSION["FORUM"]["USER"] = CForumUser::GetByUSER_ID($GLOBALS["USER"]->GetID());
|
|
if ($_SESSION["FORUM"]["USER"]):
|
|
$_SESSION["FORUM"]["USER"]["LAST_VISIT_TIMESTAMP"] = MakeTimeStamp($_SESSION["FORUM"]["USER"]["LAST_VISIT"]);
|
|
else:
|
|
$_SESSION["FORUM"]["USER"] = array();
|
|
$_SESSION["FORUM"]["USER"]["LAST_VISIT_TIMESTAMP"] = CForumNew::GetNowTime("timestamp");
|
|
endif;
|
|
elseif (empty($_SESSION["FORUM"]["USER"]["LAST_VISIT_TIMESTAMP"])):
|
|
$_SESSION["FORUM"]["USER"]["LAST_VISIT_TIMESTAMP"] = CForumNew::GetNowTime("timestamp");
|
|
endif;
|
|
|
|
$arUser = $_SESSION["FORUM"]["USER"];
|
|
$UserLogin = $GLOBALS["USER"]->GetLogin();
|
|
$LastVisit = $_SESSION["FORUM"]["USER"]["LAST_VISIT_TIMESTAMP"];
|
|
|
|
// if info for this user is not exist that info gets from DB
|
|
if (!isset($_SESSION["FORUM"][$UserLogin]) || !is_array($_SESSION["FORUM"][$UserLogin]) || !isset($_SESSION["FORUM"][$UserLogin][0]) || intVal($_SESSION["FORUM"][$UserLogin][0]) <= 0)
|
|
{
|
|
$_SESSION["FORUM"][$UserLogin] = array();
|
|
$db_res = CForumUser::GetListUserForumLastVisit(array(), array("USER_ID" => $GLOBALS["USER"]->GetID()));
|
|
if ($db_res && $res = $db_res->Fetch()):
|
|
do
|
|
{
|
|
$_SESSION["FORUM"][$UserLogin][intVal($res["FORUM_ID"])] = MakeTimeStamp($res["LAST_VISIT"]);
|
|
}while ($res = $db_res->Fetch());
|
|
endif;
|
|
|
|
if (!isset($_SESSION["FORUM"][$UserLogin][0]) || intVal($_SESSION["FORUM"][$UserLogin][0]) <= 0):
|
|
$_SESSION["FORUM"][$UserLogin] = array();
|
|
CForumUser::SetUserForumLastVisit($GLOBALS["USER"]->GetID(), 0, false);
|
|
$db_res = CForumUser::GetListUserForumLastVisit(array(), array("USER_ID" => $GLOBALS["USER"]->GetID(), "FORUM_ID" => 0));
|
|
if ($db_res && $res = $db_res->Fetch()):
|
|
$_SESSION["FORUM"][$UserLogin][0] = MakeTimeStamp($res["LAST_VISIT"]);
|
|
else:
|
|
$_SESSION["FORUM"][$UserLogin][0] = $LastVisit;
|
|
endif;
|
|
endif;
|
|
}
|
|
|
|
// synhronize guest session with authorized user session
|
|
if (isset($_SESSION["FORUM"]) && isset($_SESSION["FORUM"]["GUEST_TID"]) && !empty($_SESSION["FORUM"]["GUEST_TID"]))
|
|
{
|
|
foreach ($_SESSION["FORUM"]["GUEST_TID"] as $key => $val):
|
|
CForumTopic::SetReadLabelsNew($key, false, $val, array("UPDATE_TOPIC_VIEWS" => "N"));
|
|
endforeach;
|
|
}
|
|
// if (is_array($_SESSION["FORUM"]["GUEST"]) && (!empty($_SESSION["FORUM"]["GUEST"])))
|
|
// {
|
|
// foreach ($_SESSION["FORUM"]["GUEST"] as $key => $val)
|
|
// {
|
|
// if (intVal($val) > intVal($_SESSION["FORUM"][$UserLogin][intVal($key)]))
|
|
// $_SESSION["FORUM"][$UserLogin][intVal($key)] = intVal($val);
|
|
// }
|
|
// }
|
|
unset($_SESSION["FORUM"]["GUEST_TID"]);
|
|
unset($_SESSION["FORUM"]["GUEST"]);
|
|
}
|
|
else // If user is not authorized that get info from cookies only
|
|
{
|
|
if (!isset($_SESSION["FORUM"]["GUEST"]) || !is_array($_SESSION["FORUM"]["GUEST"]))
|
|
{
|
|
$forum_cookie = COption::GetOptionString("main", "cookie_name", "BITRIX_SM")."_FORUM_GUEST";
|
|
if (isset($_COOKIE[$forum_cookie]) && $_COOKIE[$forum_cookie] <> '')
|
|
{
|
|
$arForum = explode("/", $_COOKIE[$forum_cookie]);
|
|
if (is_array($arForum) && count($arForum) > 0)
|
|
{
|
|
foreach ($arForum as $forumInfo)
|
|
{
|
|
list($f, $lv) = explode("-", $forumInfo);
|
|
$_SESSION["FORUM"]["GUEST"][intVal($f)] = intVal($lv);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!isset($_SESSION["FORUM"]["GUEST"]) || !is_array($_SESSION["FORUM"]["GUEST"]) || (intVal($_SESSION["FORUM"]["GUEST"][0]) < 0))
|
|
{
|
|
$_SESSION["FORUM"]["GUEST"] = array();
|
|
$_SESSION["FORUM"]["GUEST"][0] = CForumNew::GetNowTime();
|
|
}
|
|
// All geting info put in cookies
|
|
if (COption::GetOptionString("forum", "USE_COOKIE", "N") == "Y"):
|
|
$arCookie = array();
|
|
foreach ($_SESSION["FORUM"]["GUEST"] as $key => $val):
|
|
$arCookie[] = $key."-".$val;
|
|
endforeach;
|
|
$GLOBALS["APPLICATION"]->set_cookie("FORUM_GUEST", implode("/", $arCookie), false, "/", false, false, "Y", false);
|
|
endif;
|
|
|
|
// It need to save info about visited topics for GUEST in cookies
|
|
if (!isset($_SESSION["FORUM"]["GUEST_TID"]) || !is_array($_SESSION["FORUM"]["GUEST_TID"]))
|
|
{
|
|
$_SESSION["FORUM"]["GUEST_TID"] = array();
|
|
$topic_cookie = COption::GetOptionString("main", "cookie_name", "BITRIX_SM")."_FORUM_GUEST_TID";
|
|
if (isset($_COOKIE[$topic_cookie]) && $_COOKIE[$topic_cookie] <> ''):
|
|
$arTopic = explode("/", $_COOKIE[$topic_cookie]);
|
|
if (is_array($arTopic) && count($arTopic) > 0):
|
|
foreach ($arTopic as $topicInfo):
|
|
list($f, $lv) = explode("-", $topicInfo);
|
|
$_SESSION["FORUM"]["GUEST_TID"][intVal($f)] = intVal($lv);
|
|
endforeach;
|
|
endif;
|
|
endif;
|
|
}
|
|
}
|
|
// cleaning session date.
|
|
if (is_array($_SESSION["FORUM"]))
|
|
{
|
|
foreach ($_SESSION["FORUM"] as $key => $val):
|
|
if (substr($key, 0, strLen("LAST_VISIT_FORUM_")) == "LAST_VISIT_FORUM_"):
|
|
unset($_SESSION["FORUM"][$key]);
|
|
endif;
|
|
endforeach;
|
|
}
|
|
// and put info in public variable
|
|
if (is_array($_SESSION["FORUM"][$UserLogin])):
|
|
foreach ($_SESSION["FORUM"][$UserLogin] as $key => $val):
|
|
$_SESSION["FORUM"]["LAST_VISIT_FORUM_".$key] = $val;
|
|
endforeach;
|
|
else:
|
|
$_SESSION["FORUM"]["LAST_VISIT_FORUM_0"] = CForumNew::GetNowTime();
|
|
endif;
|
|
|
|
return $_SESSION;
|
|
}
|
|
/**
|
|
* @deprecated
|
|
*/
|
|
function NewMessageForum($FID, $LAST_POST_DATE = false)
|
|
{
|
|
if (intVal($_SESSION["FORUM"]["LAST_VISIT_FORUM_0"]) <= 0)
|
|
ForumInitParams();
|
|
|
|
$FID = intVal($FID);
|
|
$LAST_VISIT = max($_SESSION["FORUM"]["LAST_VISIT_FORUM_0"], $_SESSION["FORUM"]["LAST_VISIT_FORUM_".$FID]);
|
|
$LAST_POST_DATE = MakeTimeStamp($LAST_POST_DATE);
|
|
|
|
if (intVal($LAST_POST_DATE) > 0 && $LAST_POST_DATE < $LAST_VISIT):
|
|
"";
|
|
elseif ($GLOBALS["USER"]->IsAuthorized()):
|
|
$arFilter = array("FORUM_ID" => $FID, "RENEW" => $GLOBALS["USER"]->GetID());
|
|
if (ForumCurrUserPermissions($FID) < "Q"):
|
|
$arFilter["APPROVED"] = "Y";
|
|
endif;
|
|
$db_res = CForumTopic::GetListEx(array("ID" => "DESC"), $arFilter, false, 1);
|
|
if ($db_res && $res = $db_res->Fetch()):
|
|
return true;
|
|
endif;
|
|
else:
|
|
$arFilter = array("FORUM_ID" => $FID);
|
|
if (is_array($_SESSION["FORUM"]["GUEST_TID"]) && !empty($_SESSION["FORUM"]["GUEST_TID"])):
|
|
$arFilter["RENEW_TOPIC"][0] = ConvertTimeStamp($LAST_VISIT, "FULL");
|
|
foreach ($_SESSION["FORUM"]["GUEST_TID"] as $key => $val):
|
|
$arFilter["RENEW_TOPIC"][intVal($key)] = ConvertTimeStamp($val, "FULL");
|
|
endforeach;
|
|
else:
|
|
$arFilter[">LAST_POST_DATE"] = ConvertTimeStamp($LAST_VISIT, "FULL");
|
|
endif;
|
|
if (ForumCurrUserPermissions($FID) < "Q"):
|
|
$arFilter["APPROVED"] = "Y";
|
|
endif;
|
|
$db_res = CForumTopic::GetList(array(), $arFilter, false, 1);
|
|
if ($db_res && $res = $db_res->Fetch()):
|
|
return true;
|
|
endif;
|
|
endif;
|
|
ForumInitParams();
|
|
return false;
|
|
}
|
|
/**
|
|
* @deprecated
|
|
*/
|
|
function NewMessageTopic($FID, $TID, $LAST_POST_DATE, $LAST_VISIT)
|
|
{
|
|
if (intVal($_SESSION["FORUM"]["LAST_VISIT_FORUM_0"]) <= 0)
|
|
ForumInitParams();
|
|
$TID = intVal($TID);
|
|
$LAST_POST_DATE = intVal(MakeTimeStamp($LAST_POST_DATE));
|
|
$LAST_VISIT = intVal($GLOBALS["USER"]->IsAuthorized() ? MakeTimeStamp($LAST_VISIT) : ($_SESSION["FORUM"]["GUEST_TID"][$TID] ?? null));
|
|
$LAST_VISIT = max($LAST_VISIT, $_SESSION["FORUM"]["LAST_VISIT_FORUM_0"], intVal($_SESSION["FORUM"]["LAST_VISIT_FORUM_".$FID] ?? 0));
|
|
return ($LAST_POST_DATE > $LAST_VISIT);
|
|
}
|
|
/**
|
|
* @deprecated
|
|
*/
|
|
function ForumSetReadForum($FID = false)
|
|
{
|
|
$UserLogin = "GUEST";
|
|
$timestamp = CForumNew::GetNowTime("timestamp");
|
|
$FID = intVal($FID);
|
|
|
|
if ($GLOBALS["USER"]->IsAuthorized()):
|
|
$UserLogin = $GLOBALS["USER"]->GetLogin();
|
|
CForumUser::SetUserForumLastVisit($GLOBALS["USER"]->GetID(), $FID, $timestamp);
|
|
endif;
|
|
|
|
if ($FID <= 0)
|
|
{
|
|
if (is_array($_SESSION["FORUM"])):
|
|
foreach ($_SESSION["FORUM"] as $key => $val):
|
|
if (substr($key, 0, strLen("LAST_VISIT_FORUM_")) == "LAST_VISIT_FORUM_"):
|
|
unset($_SESSION["FORUM"][$key]);
|
|
endif;
|
|
endforeach;
|
|
endif;
|
|
unset($_SESSION["FORUM"][$UserLogin]);
|
|
}
|
|
$_SESSION["FORUM"][$UserLogin][$FID] = $timestamp;
|
|
$_SESSION["FORUM"]["LAST_VISIT_FORUM_".$FID] = $timestamp;
|
|
return ForumInitParams();
|
|
}
|
|
/**
|
|
* @deprecated
|
|
*/
|
|
function ForumSetReadTopic($FID, $TID)
|
|
{
|
|
CForumTopic::SetReadLabelsNew($TID);
|
|
|
|
if (!$GLOBALS['USER']->IsAuthorized())
|
|
{
|
|
if (!isset($_SESSION["FORUM"]["GUEST_TID"]))
|
|
ForumInitParams();
|
|
$_SESSION["FORUM"]["GUEST_TID"][intVal($TID)] = CForumNew::GetNowTime();
|
|
if (COption::GetOptionString("forum", "USE_COOKIE", "N") == "Y")
|
|
{
|
|
$arCookie = array();
|
|
foreach ($_SESSION["FORUM"]["GUEST_TID"] as $key => $val):
|
|
$arCookie[] = intVal($key)."-".intVal($val);
|
|
endforeach;
|
|
$GLOBALS["APPLICATION"]->set_cookie("FORUM_GUEST_TID", implode("/", $arCookie), false, "/", false, false, "Y", false);
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* @deprecated
|
|
*/
|
|
function ForumSetLastVisit($forumId = false, $TID = false, $arAddParams = array())
|
|
{
|
|
global $USER, $FID;
|
|
// For custom components
|
|
$FID = $forumId = intval($forumId === false ? $FID : $forumId);
|
|
|
|
if ($USER->isAuthorized())
|
|
{
|
|
$GLOBALS["SHOW_FORUM_ICON"] = true; // out-of-date param
|
|
$forumUser = \Bitrix\Forum\User::getById($USER->getID());
|
|
$forumUser->setLastVisit()->setLocation($forumId, (int) $TID);
|
|
|
|
if (!isset($_SESSION['FORUM']))
|
|
{
|
|
$_SESSION['FORUM'] = [
|
|
'USER' => null
|
|
];
|
|
}
|
|
|
|
if (!isset($_SESSION["FORUM"]["USER"]) || !is_array($_SESSION["FORUM"]["USER"]) || $_SESSION["FORUM"]["USER"]["USER_ID"] != $USER->getID())
|
|
{
|
|
$_SESSION["FORUM"]["USER"] = $forumUser->getData();
|
|
$_SESSION["FORUM"]["SHOW_NAME"] = $_SESSION["FORUM"]["USER"]["SHOW_NAME"];
|
|
}
|
|
}
|
|
|
|
ForumInitParams();
|
|
|
|
if (IsModuleInstalled('statistic') && !empty($_SESSION["SESS_SEARCHER_ID"]))
|
|
{
|
|
CForumStat::RegisterUSER(array("SITE_ID" => SITE_ID, "FORUM_ID" => $forumId, "TOPIC_ID" => $TID));
|
|
}
|
|
|
|
return true;
|
|
}
|
|
/**
|
|
* @deprecated
|
|
*/
|
|
function ForumGetFirstUnreadMessage($FID, $TID)
|
|
{
|
|
global $USER, $DB;
|
|
$TID = intVal($TID);
|
|
if ($TID > 0 )
|
|
{
|
|
if (intVal($_SESSION["FORUM"]["LAST_VISIT_FORUM_0"]) <= 0)
|
|
ForumInitParams();
|
|
$LastVisit = max(intVal($_SESSION["FORUM"]["LAST_VISIT_FORUM_0"]), intVal($_SESSION["FORUM"]["LAST_VISIT_FORUM_".$FID])); // client TZ
|
|
|
|
if ($USER->IsAuthorized())
|
|
{
|
|
$db_res = CForumMessage::GetListEx(array("ID" => "ASC"),
|
|
array("TOPIC_ID" => $TID, "USER_ID" => $USER->GetId(), ">NEW_MESSAGE" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG)), $LastVisit)), 0, 1);
|
|
}
|
|
else
|
|
{
|
|
$LastVisit = max($LastVisit, intVal($_SESSION["FORUM"]["GUEST_TID"][$TID]));
|
|
$db_res = CForumMessage::GetList(array("ID" => "ASC"),
|
|
array("TOPIC_ID" => $TID, ">POST_DATE" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG)), $LastVisit)), 0, 1);
|
|
}
|
|
if ($db_res && $res = $db_res->Fetch())
|
|
return $res["ID"];
|
|
}
|
|
return false;
|
|
}
|
|
function ForumAddDeferredScript($script)
|
|
{
|
|
$url = CUtil::GetAdditionalFileURL($script);
|
|
return "<script>BX.ready(function(){BX.loadScript(\"".$url."\");});</script>\n";
|
|
}
|
|
/*
|
|
GetMessage("FORUM_NO_MODULE");
|
|
*/
|
|
|
|
function CustomizeLHEForForum()
|
|
{
|
|
?>
|
|
<script>
|
|
LHEButtons['Translit'].handler = function(pBut)
|
|
{
|
|
var but = pBut;
|
|
var translit = function(textbody)
|
|
{
|
|
if (typeof but.pLEditor.bTranslited == 'undefined')
|
|
but.pLEditor.bTranslited = false;
|
|
|
|
var arStack = new Array();
|
|
var i = 0;
|
|
|
|
function bPushTag(str, p1, offset, s)
|
|
{
|
|
arStack.push(p1);
|
|
return "\001";
|
|
}
|
|
|
|
function bPopTag(str, p1, offset, s)
|
|
{
|
|
return arStack.shift();
|
|
}
|
|
|
|
|
|
var r = new RegExp("(\\[[^\\]]*\\])", 'gi');
|
|
textbody = textbody.replace(r, bPushTag);
|
|
|
|
if ( but.pLEditor.bTranslited == false)
|
|
{
|
|
for (i=0; i<capitEngLettersReg.length; i++) textbody = textbody.replace(capitEngLettersReg[i], capitRusLetters[i]);
|
|
for (i=0; i<smallEngLettersReg.length; i++) textbody = textbody.replace(smallEngLettersReg[i], smallRusLetters[i]);
|
|
but.pLEditor.bTranslited = true;
|
|
}
|
|
else
|
|
{
|
|
for (i=0; i<capitRusLetters.length; i++) textbody = textbody.replace(capitRusLettersReg[i], capitEngLetters[i]);
|
|
for (i=0; i<smallRusLetters.length; i++) textbody = textbody.replace(smallRusLettersReg[i], smallEngLetters[i]);
|
|
but.pLEditor.bTranslited = false;
|
|
}
|
|
|
|
textbody = textbody.replace(new RegExp("\001", "g"), bPopTag);
|
|
|
|
return textbody;
|
|
}
|
|
|
|
pBut.pLEditor.SaveContent();
|
|
var content = translit(pBut.pLEditor.GetContent());
|
|
|
|
BX.defer(function()
|
|
{
|
|
if (window.oLHE.sEditorMode == 'code')
|
|
window.oLHE.SetContent(content);
|
|
else
|
|
window.oLHE.SetEditorContent(content);
|
|
})();
|
|
}
|
|
LHEButtons['SmileList']['SetSmile'] = function(k, pList)
|
|
{
|
|
//pList.pLEditor.RestoreSelectionRange();
|
|
var oSmile = pList.oSmiles[k];
|
|
|
|
if (pList.pLEditor.sEditorMode == 'code') // In BB or in HTML
|
|
pList.pLEditor.WrapWith(' ', ' ', oSmile.code);
|
|
else // WYSIWYG
|
|
pList.pLEditor.InsertHTML('<img id="' + pList.pLEditor.SetBxTag(false, {tag: "smile", params: oSmile}) + '" src="' + oSmile.path + '" title="' + oSmile.name + '"/>');
|
|
|
|
if (pList.bOpened)
|
|
pList.Close();
|
|
};
|
|
LHEButtons['SmileList']['parser']['obj']['UnParse'] = function(bxTag, pNode, pLEditor)
|
|
{
|
|
if (!bxTag.params || !bxTag.params.code)
|
|
return '';
|
|
return ' ' + bxTag.params.code + ' ';
|
|
};
|
|
LHEButtons['ForumVideo'] = {
|
|
id : 'ForumInputVideo',
|
|
src : '/bitrix/components/bitrix/forum/templates/.default/images/bbcode/font_video.gif',
|
|
name : '<?=GetMessage("FR_VIDEO")?>',
|
|
handler: function(pBut)
|
|
{
|
|
pBut.pLEditor.OpenDialog({id : 'ForumVideo', obj: false});
|
|
},
|
|
OnBeforeCreate: function(pLEditor, pBut)
|
|
{
|
|
// Disable in non BBCode mode in html
|
|
pBut.disableOnCodeView = !pLEditor.bBBCode || pLEditor.arConfig.bConvertContentFromBBCodes;
|
|
return pBut;
|
|
},
|
|
parser: {
|
|
name: 'forumvideo',
|
|
obj: {
|
|
Parse: function(sName, sContent, pLEditor)
|
|
{
|
|
sContent = sContent.replace(/\[VIDEO\s*?width=(\d+)\s*?height=(\d+)\s*\]((?:\s|\S)*?)\[\/VIDEO\]/ig, function(str, w, h, src)
|
|
{
|
|
var
|
|
w = parseInt(w) || 400,
|
|
h = parseInt(h) || 300,
|
|
src = BX.util.trim(src);
|
|
|
|
return '<img id="' + pLEditor.SetBxTag(false, {tag: "forumvideo", params: {value : src}}) + '" src="/bitrix/images/1.gif" class="bxed-video" width=' + w + ' height=' + h + ' title="' + BX.message.Video + ": " + src + '" />';
|
|
});
|
|
return sContent;
|
|
},
|
|
UnParse: function(bxTag, pNode, pLEditor)
|
|
{
|
|
if (bxTag.tag == 'forumvideo')
|
|
{
|
|
return "[VIDEO WIDTH=" + pNode.arAttributes["width"] + " HEIGHT=" + pNode.arAttributes["height"] + "]" + bxTag.params.value + "[/VIDEO]";
|
|
}
|
|
return "";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (!LHEButtons['InputVideo'])
|
|
LHEButtons['InputVideo'] = LHEButtons['ForumVideo'];
|
|
|
|
window.LHEDailogs['ForumVideo'] = function(pObj)
|
|
{
|
|
var str = '<table width="100%"><tr>' +
|
|
'<td class="lhe-dialog-label lhe-label-imp"><label for="' + pObj.pLEditor.id + 'lhed_forum_video_path"><b><?= GetMessage('FR_VIDEO_P')?>:</b></label></td>' +
|
|
'<td class="lhe-dialog-param">' +
|
|
'<input id="' + pObj.pLEditor.id + 'lhed_forum_video_path" value="" size="30"/>' +
|
|
'</td>' +
|
|
'</tr><tr>' +
|
|
'<td></td>' +
|
|
'<td style="padding: 0!important; font-size: 11px!important;"><?= GetMessageJS('FR_VIDEO_PATH_EXAMPLE')?></td>' +
|
|
'</tr><tr>' +
|
|
'<td class="lhe-dialog-label lhe-label-imp"><label for="' + pObj.pLEditor.id + 'lhed_forum_video_width">' + BX.message.ImageSizing + ':</label></td>' +
|
|
'<td class="lhe-dialog-param">' +
|
|
'<input id="' + pObj.pLEditor.id + 'lhed_forum_video_width" value="" size="4"/>' +
|
|
' x ' +
|
|
'<input id="' + pObj.pLEditor.id + 'lhed_forum_video_height" value="" size="4" />' +
|
|
'</td>' +
|
|
'</tr></table>';
|
|
|
|
return {
|
|
title: "<?= GetMessageJS('FR_VIDEO')?>",
|
|
innerHTML : str,
|
|
width: 480,
|
|
OnLoad: function()
|
|
{
|
|
pObj.pPath = BX(pObj.pLEditor.id + "lhed_forum_video_path");
|
|
pObj.pWidth = BX(pObj.pLEditor.id + "lhed_forum_video_width");
|
|
pObj.pHeight = BX(pObj.pLEditor.id + "lhed_forum_video_height");
|
|
|
|
pObj.pLEditor.focus(pObj.pPath);
|
|
},
|
|
OnSave: function()
|
|
{
|
|
pLEditor = window.oLHE;
|
|
|
|
var
|
|
src = BX.util.trim(pObj.pPath.value),
|
|
w = parseInt(pObj.pWidth.value) || 400,
|
|
h = parseInt(pObj.pHeight.value) || 300;
|
|
|
|
if (src == "")
|
|
return;
|
|
|
|
if (pLEditor.sEditorMode == 'code' && pLEditor.bBBCode) // BB Codes
|
|
{
|
|
pLEditor.WrapWith("", "", "[VIDEO WIDTH=" + w + " HEIGHT=" + h + "]" + src + "[/VIDEO]");
|
|
}
|
|
else if(pLEditor.sEditorMode == 'html') // WYSIWYG
|
|
{
|
|
pLEditor.InsertHTML('<img id="' + pLEditor.SetBxTag(false, {tag: "forumvideo", params: {value : src}}) +
|
|
'" src="/bitrix/images/1.gif" class="bxed-video" width=' + w + ' height=' + h +
|
|
' title="' + BX.message.Video + ": " + src + '" />');
|
|
}
|
|
}
|
|
};
|
|
};
|
|
</script>
|
|
<?
|
|
}
|