| Current Path : /var/www/homesaver/www/bitrix/components/bitrix/main.post.list/templates/mobile_app/ |
| Current File : /var/www/homesaver/www/bitrix/components/bitrix/main.post.list/templates/mobile_app/template.php |
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true)
{
die();
}
/**
* @var array $arResult
* @var array $arParams
* @var CMain $APPLICATION
* @var string $templateFolder
* @var CUser $USER
* @var MainPostList $this->__component
*/
use Bitrix\Main\Loader;
use \Bitrix\Main\UI\Extension;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Web\Json;
global $USER;
\Bitrix\Main\Page\Asset::getInstance()->addJs("/bitrix/components/bitrix/main.post.list/templates/.default/script.js");
\Bitrix\Main\Page\Asset::getInstance()->addJs($templateFolder."/script.js");
\Bitrix\Main\Page\Asset::getInstance()->addString('<link href="'.CUtil::GetAdditionalFileURL('/bitrix/js/ui/icons/base/ui.icons.base.css').'" type="text/css" rel="stylesheet" />');
\Bitrix\Main\Page\Asset::getInstance()->addString('<link href="'.CUtil::GetAdditionalFileURL('/bitrix/js/ui/icons/b24/ui.icons.b24.css').'" type="text/css" rel="stylesheet" />');
$extensionsList = [ 'uploader', 'date', 'fx', 'ls', 'main.core', 'ui.avatar'];
if (CModule::IncludeModule('socialnetwork'))
{
$extensionsList[] = 'comment_aux';
}
Extension::load($extensionsList); // does not work
$prefixNode = $arParams["ENTITY_XML_ID"].'-'.$arParams["EXEMPLAR_ID"];
$eventNodeId = $prefixNode."_main";
$eventNodeIdTemplate = "#ENTITY_XML_ID#-#EXEMPLAR_ID#_main";
ob_start();
?>
<!--RCRD_#FULL_ID#-->
<a id="com#ID#" name="com#ID#" bx-mpl-full-id="#FULL_ID#"></a>
<div id="record-#FULL_ID#" class="post-comment-block post-comment-block-#NEW# post-comment-block-#APPROVED# #RATING_NONEMPTY_CLASS# mobile-longtap-menu#CLASSNAME#" <?=(isset($arResult["ajax_comment"]) && isset($comment["ID"]) && $arResult["ajax_comment"] == $comment["ID"] ? ' data-send="Y"' : '')?> <?
?>bx-mpl-id="#FULL_ID#" <?
?>bx-mpl-menu-show="#SHOW_MENU#" <?
?>bx-mpl-reply-show="#SHOW_POST_FORM#" <?
?>bx-mpl-view-url="#VIEW_URL###ID#" bx-mpl-view-show="#VIEW_SHOW#" <?
?>bx-mpl-edit-url="#EDIT_URL#" bx-mpl-edit-show="#EDIT_SHOW#" <?
?>bx-mpl-moderate-url="#MODERATE_URL#" bx-mpl-moderate-show="#MODERATE_SHOW#" bx-mpl-moderate-approved="#APPROVED#" <?
?>bx-mpl-delete-url="#DELETE_URL###ID#" bx-mpl-delete-show="#DELETE_SHOW#" <?
?>bx-mpl-createtask-show="#CREATETASK_SHOW#" <?
?>bx-mpl-post-entity-type="#POST_ENTITY_TYPE#" <?
?>bx-mpl-comment-entity-type="#COMMENT_ENTITY_TYPE#" <?
?>bx-mpl-vote-id="#VOTE_ID#" <?
?>bx-longtap-menu-eventname="BX.MPL:onGetMenuItems" <?
?>bx-mpl-entity-xml-id="#ENTITY_XML_ID#" <?
?>bx-mpl-comment-id="#ID#" <?
?>>
#BEFORE_RECORD#
<script>
BX.ready(function() {
BX.MSL.viewImageBind('record-#FULL_ID#', { tag: 'IMG', attr: 'data-bx-image' });
const avatarParams = {
messageId: '#ID#',
user: {
name: '#AUTHOR_NAME#',
image: '#AUTHOR_AVATAR#',
type: '#AUTHOR_TYPE#',
},
};
if (BX?.MPL?.UIAvatar)
{
BX.MPL.UIAvatar(avatarParams);
}
else if (!window?.UIAvatars)
{
window.UIAvatars = [avatarParams];
}
else
{
window?.UIAvatars?.push(avatarParams);
}
});
</script>
<div class="ui-icon ui-icon-common-user post-comment-block-avatar"><div class="ui-post-avatar"></div><i style="#AUTHOR_AVATAR_BG#"></i></div>
<div class="post-comment-detail">
<div class="post-comment-balloon" onclick="mobileShowActions('#ENTITY_XML_ID#', '#ID#', arguments[0])">
#BEFORE_HEADER#
<!--/noindex-->
<div class="post-comment-cont">
<a href="#AUTHOR_URL#" class="post-comment-author #AUTHOR_EXTRANET_STYLE#" id="record-#FULL_ID#-author" bx-mpl-author-id="#AUTHOR_ID#">#AUTHOR_NAME#</a>
<div class="post-comment-time">#DATE#</div>
#LIKE_REACT#
</div>
<!--/noindex-->
#AFTER_HEADER#
#BEFORE#
<div class="post-comment-wrap-outer">
<div
class="post-comment-wrap"
bx-content-view-xml-id="#CONTENT_ID#"
bx-content-view-save="N" bx-mpl-block="body"
id="post-comment-wrap-#CONTENT_ID#">
<div class="post-comment-text" id="record-#FULL_ID#-text" bx-mpl-block="text">#TEXT#</div>
</div>
<div class="post-comment-more" onclick="mobileExpand(this, event)" bx-mpl-block="more-button"><div class="post-comment-more-but"></div></div>
</div>
</div>
#AFTER#
<div class="post-comment-control-box">
#BEFORE_ACTIONS#
<?
if (
!isset($arParams["SHOW_POST_FORM"])
|| $arParams["SHOW_POST_FORM"] != 'N'
|| !empty($arParams["REPLY_ACTION"])
)
{
$action = (
!isset($arParams["SHOW_POST_FORM"])
|| $arParams["SHOW_POST_FORM"] != 'N'
? "return mobileReply('#ENTITY_XML_ID#', event)"
: $arParams["REPLY_ACTION"]
);
?><div class="post-comment-control-item" id="record-#FULL_ID#-reply-action" onclick="<?=$action?>" <?
?>bx-mpl-author-id="#AUTHOR_ID#" <?
?>bx-mpl-author-name="#AUTHOR_NAME#"><?
?><?=Loc::getMessage('BLOG_C_REPLY')?><?
?></div><?
}
?>
</div>
</div>
#AFTER_RECORD#<?
?><script>BX.ready(function() { BX.onCustomEvent(BX('<?=$eventNodeIdTemplate?>'), 'OnUCCommentIsInDOM', ['#ID#', BX('<?=$eventNodeIdTemplate?>')]);});</script><?
?></div>
<!--RCRD_END_#FULL_ID#-->
<? // post-comment-block
$template = preg_replace("/[\t\n]/", "", ob_get_clean());
ob_start();
?><div class="post-comment-block">
<div class="ui-icon ui-icon-common-user post-comment-block-avatar"><div class="ui-post-avatar"></div><i style="#AUTHOR_AVATAR_BG#"></i></div>
<div class="post-comment-detail">
<div class="post-comment-balloon">
<div class="post-comment-cont">
<div class="post-comment-author #AUTHOR_EXTRANET_STYLE#">#AUTHOR_NAME#</div>
<div class="post-comment-time">#DATE#</div>
</div>
<!--/noindex-->
<div class="post-comment-wrap-outer">
<div class="post-comment-wrap">
<div class="post-comment-text" id="record-#FULL_ID#-text">#TEXT#</div>
</div>
<div class="post-comment-more" onclick="mobileExpand(this, event)"><div class="post-comment-more-but"></div></div>
</div>
<!--/noindex-->
</div>
<div class="post-comment-control-box">
<div class="post-comment-control-item"><?=Loc::getMessage('BLOG_C_REPLY')?></div>
</div>
<div class="post-comment-publication">
<div class="post-comment-publication-icon"></div>
<div class="post-comment-publication-text"><?=Loc::getMessage('MPL_MOBILE_PUBLISHING')?></div>
</div>
<div class="post-comment-error">
<div class="post-comment-error-icon"></div>
<div class="post-comment-error-text"></div>
</div>
</div>
</div><?
$avatar = \CFile::ResizeImageGet(
$USER->GetParam("PERSONAL_PHOTO"),
array(
"width" => $arParams["AVATAR_SIZE"],
"height" => $arParams["AVATAR_SIZE"]
),
BX_RESIZE_IMAGE_EXACT
);
$name = CUser::FormatName(
$arParams["NAME_TEMPLATE"],
array(
"NAME" => $USER->getFirstName(),
"LAST_NAME" => $USER->getLastName(),
"SECOND_NAME" => $USER->getSecondName(),
"LOGIN" => $USER->getLogin(),
"NAME_LIST_FORMATTED" => "",
),
($arParams["SHOW_LOGIN"] != "N"),
false
);
$userId = $USER->getId();
$avatarType = null;
if (Loader::includeModule('intranet') && Loader::includeModule('extranet'))
{
$serviceContainer = class_exists(\Bitrix\Extranet\Service\ServiceContainer::class)
? \Bitrix\Extranet\Service\ServiceContainer::getInstance()
: null;
if ($serviceContainer?->getCollaberService()?->isCollaberById($userId))
{
$avatarType = "COLLABER";
}
else if (!(new \Bitrix\Intranet\User($userId))->isIntranet())
{
$avatarType = "EXTRANET";
}
}
$author = [
'AUTHOR_ID' => $userId,
'AUTHOR_AVATAR_IS' => ($avatar ? "Y" : "N"),
'AUTHOR_AVATAR' => ($avatar ? $avatar["src"] : ''),
'AUTHOR_AVATAR_BG' => ($avatar ? "background-image:url('" . $avatar["src"] . "')" : ''),
'AUTHOR_NAME' => htmlspecialcharsbx($name),
'AUTHOR_TYPE' => $avatarType,
'AUTHOR_EXTRANET_STYLE' => $avatarType ? " feed-com-name-".strtolower($avatarType) : "",
];
$thumb = preg_replace(
[
"/[\t\n]/",
"/\\#AUTHOR_ID\\#/",
"/\\#AUTHOR_AVATAR_IS\\#/",
"/\\#AUTHOR_AVATAR\\#/",
"/\\#AUTHOR_AVATAR_BG\\#/",
"/\\#AUTHOR_NAME\\#/",
"/\\#AUTHOR_TYPE\\#/",
"/\\#AUTHOR_EXTRANET_STYLE\\#/",
],
[
"",
$author['AUTHOR_ID'],
$author['AUTHOR_AVATAR_IS'],
$author['AUTHOR_AVATAR'],
$author['AUTHOR_AVATAR_BG'],
$author['AUTHOR_NAME'],
$author['AUTHOR_TYPE'],
$author['AUTHOR_EXTRANET_STYLE'],
],
ob_get_clean()
);
?>
<div id="<?=$eventNodeId?>"><?
if (empty($arParams["RECORDS"]))
{
// For the future developing
}
else
{
if ($arParams["NAV_STRING"])
{
if ($arResult["NAV_STRING_COUNT_MORE"] > 0)
{
ob_start();
if ($arParams["PREORDER"] == "Y")
{
?><div id="record-<?=$prefixNode?>-hidden" class="feed-hidden-post" style="display:none; overflow:hidden;"></div> <?
}
?><div class="post-comments-link-cont">
<a href="<?=$arParams["NAV_STRING"]?>" id="<?=$prefixNode?>_page_nav" class="post-comments-link" bx-mpl-comments-count="<?=$arResult["NAV_STRING_COUNT_MORE"]?>"><?
?><?=Loc::getMessage("BLOG_C_VIEW")?><?
?><span class="post-comments-link-count"><?=$arResult["NAV_STRING_COUNT_MORE"]?></span><?
?></a>
<span class="post-comments-link-loader-informer" id="<?=$prefixNode?>_page_nav_loader" style='display: none;'><?=Loc::getMessage("BLOG_C_LOADING")?></span>
</div><?
if ($arParams["PREORDER"] != "Y")
{
?><div id="record-<?=$prefixNode?>-hidden" class="feed-hidden-post" style="display:none; overflow:hidden;"></div> <?
}
$arParams["NAV_STRING"] = ob_get_clean();
}
else
{
$arParams["NAV_STRING"] = "";
}
}
reset($arParams["RECORDS"]);
if ($arParams["PREORDER"] != "Y"): ?><?=$arParams["NAV_STRING"]?><? endif;
$iCount = 0;
?><!--RCRDLIST_<?=$arParams["ENTITY_XML_ID"]?>--><?
$collapsedMessages = 0;
$collapsedMessagesBlockIsCollapsed = true;
$collapsedMessagesBlock = null;
foreach ($arParams["RECORDS"] as $key => $res)
{
if (intval($res["ID"]) <= 0)
{
continue;
}
if ($res["COLLAPSED"] === "Y")
{
$collapsedMessages++;
if ($collapsedMessagesBlock === null)
{
ob_start();
?>
<div class="feed-com-collapsed" data-bx-role="collapsed-block">
<input type="checkbox" id="collapsed_switcher_<?=$arParams["ENTITY_XML_ID"]?>_<?=$res["ID"]?>" #COLLAPSED_MESSAGES_BLOCK_IS_COLLAPSED#>
<label for="collapsed_switcher_<?=$arParams["ENTITY_XML_ID"]?>_<?=$res["ID"]?>" data-bx-collapse-role="show">
<div class="post-comment-control-item">
<?=GetMessage("MPL_SHOW_COLLAPSED_COMMENTS_MSGVER_1")?>
</div>
</label>
<label for="collapsed_switcher_<?=$arParams["ENTITY_XML_ID"]?>_<?=$res["ID"]?>" data-bx-collapse-role="hide">
<div class="post-comment-control-item">
<?=GetMessage("MPL_HIDE_COLLAPSED_COMMENTS_MSGVER_1")?>
</div>
</label>
<div class="feed-com-collapsed-block">
#COLLAPSED_MESSAGES_BLOCK#
</div>
</div><?
$collapsedMessagesBlock = ob_get_clean();
ob_start();
}
}
else if ($collapsedMessagesBlock !== null)
{
?><?=str_replace([
"#COLLAPSED_MESSAGES_BLOCK_IS_COLLAPSED#",
"#COLLAPSED_MESSAGES_COUNT#",
"#COLLAPSED_MESSAGES_BLOCK#"
], [
$collapsedMessagesBlockIsCollapsed ? "" : "checked",
$collapsedMessages,
ob_get_clean()
],
$collapsedMessagesBlock
);
$collapsedMessagesBlock = null;
$collapsedMessages = 0;
$collapsedMessagesBlockIsCollapsed = true;
}
$res["AUTHOR"] = (is_array($res["AUTHOR"]) ? $res["AUTHOR"] : array());
$isMessageBlank = !(array_key_exists("POST_MESSAGE_TEXT", $res) && $res["POST_MESSAGE_TEXT"] !== null);
$collapsedMessagesBlockIsCollapsed = ($res["NEW"] == "Y" ? false : $collapsedMessagesBlockIsCollapsed);
$iCount++;
?><div id="record-<?=$arParams["ENTITY_XML_ID"]?>-<?=$res["ID"]?>-cover" <?
?>bx-mpl-xml-id="<?=$arParams["ENTITY_XML_ID"]?>" <?
?>bx-mpl-entity-id="<?=$res["ID"]?>" <?
?>bx-mpl-read-status="<?=(($res["NEW"] == "Y" ? "new" : "old"))?>" <?
?>bx-mpl-blank-status="<?=($isMessageBlank ? "blank" : "full")?>" <?
?>bx-mpl-block="main" <?
?>class="feed-com-block-cover"><?
?><?=$this->__component->parseTemplate($res, $arParams, $template)?>
</div>
<?
}
if ($collapsedMessagesBlock !== null)
{
?><?=str_replace([
"#COLLAPSED_MESSAGES_BLOCK_IS_COLLAPSED#",
"#COLLAPSED_MESSAGES_COUNT#",
"#COLLAPSED_MESSAGES_BLOCK#"
], [
$collapsedMessagesBlockIsCollapsed ? "" : "checked",
$collapsedMessages,
ob_get_clean()
],
$collapsedMessagesBlock
);
$collapsedMessagesBlock = null;
$collapsedMessages = 0;
$collapsedMessagesBlockIsCollapsed = true;
}
?><!--RCRDLIST_END_<?=$arParams["ENTITY_XML_ID"]?>--><?
if ($arParams["PREORDER"] == "Y"): ?><?=$arParams["NAV_STRING"]?><? endif;
}
?><div id="record-<?=$prefixNode?>-new"></div><?
include_once(__DIR__."/messages.php");
if ($arParams["SHOW_POST_FORM"] == "Y")
{
?><div id="record-<?=$prefixNode?>-form-holder" style="display:none;"></div><?
}
$ajaxParams = [];
if ($this->__component->__parent instanceof \Bitrix\Main\Engine\Contract\Controllerable)
{
$ajaxParams = [
"componentName" => $this->__component->__parent->getName(),
"processComment" => method_exists($this->__component->__parent, "processCommentAction"),
"navigateComment" => method_exists($this->__component->__parent, "navigateCommentAction"),
"readComment" => method_exists($this->__component->__parent, "readCommentAction"),
"params" => $this->__component->__parent->getSignedParameters()
];
}
?>
<script>
BX.ready(function(){
var collapsedblocks = document.querySelectorAll('.feed-com-collapsed-block');
for (const block of collapsedblocks) {
block.addEventListener('transitionend', function(event){
var position = BX.pos(event.target);
var input = block.parentNode.querySelector('input');
var duration;
if (block.offsetHeight < 200 )
{
duration = 1500;
}
else
{
duration = 800;
}
var easing = new BX.easing({
duration : duration,
start : { scroll : window.pageYOffset || document.documentElement.scrollTop },
finish : { scroll : position.top },
transition : BX.easing.makeEaseOut(BX.easing.transitions.quart),
step : function(state) {
window.scrollTo(0, state.scroll);
}
});
if (input.checked)
{
easing.animate();
}
if (window.FCList)
{
var FCListInstance = window.FCList.getInstance({
ENTITY_XML_ID: '<?=CUtil::JSEscape($arParams["ENTITY_XML_ID"])?>'
});
if (FCListInstance)
{
FCListInstance.registerComments();
}
}
});
}
var f = function() {
BX.MPL.createInstance({
EXEMPLAR_ID : '<?=CUtil::JSEscape(htmlspecialcharsbx($arParams["EXEMPLAR_ID"]))?>',
ENTITY_XML_ID : '<?=CUtil::JSEscape($arParams["ENTITY_XML_ID"])?>',
FORM_ID : '<?=CUtil::JSEscape($arParams["FORM_ID"])?>',
template : '<?=CUtil::JSEscape($template)?>',
mainNode : BX('<?=$eventNodeId?>'),
navigationNode : BX('<?=$prefixNode?>_page_nav'),
navigationNodeLoader : BX('<?=$prefixNode?>_page_nav_loader'),
nodeForOldMessages : BX('record-<?=$prefixNode?>-hidden'),
nodeForNewMessages : BX('record-<?=$prefixNode?>-new'),
nodeFormHolder : BX('record-<?=$prefixNode?>-form-holder'),
container : BX('record-<?=$prefixNode?>-hidden'),
nav : BX('<?=$prefixNode?>_page_nav'),
mid : <?=(!!$arParams["LAST_RECORD"] ? $arParams["LAST_RECORD"]["ID"] : 0)?>,
order : '<?=($arParams["PREORDER"] == "N" ? "DESC" : "ASC")?>',
rights : {
MODERATE : '<?=$arParams["RIGHTS"]["MODERATE"]?>',
EDIT : '<?=$arParams["RIGHTS"]["EDIT"]?>',
DELETE : '<?=$arParams["RIGHTS"]["DELETE"]?>',
CREATETASK : '<?=$arParams["RIGHTS"]["CREATETASK"]?>'
},
sign : '<?=$arParams["SIGN"]?>',
ajax : <?= Json::encode($ajaxParams)?>,
author: <?= Json::encode($author)?>,
},
{
VIEW_URL: '<?=CUtil::JSEscape($arParams["~VIEW_URL"])?>',
EDIT_URL: '<?=CUtil::JSEscape($arParams["~EDIT_URL"])?>',
MODERATE_URL: '<?=CUtil::JSEscape($arParams["~MODERATE_URL"])?>',
DELETE_URL: '<?=CUtil::JSEscape($arParams["~DELETE_URL"])?>',
AUTHOR_URL: '<?=CUtil::JSEscape($arParams["~AUTHOR_URL"])?>',
AUTHOR_URL_PARAMS: <?=(isset($arParams["AUTHOR_URL_PARAMS"]) ? Json::encode($arParams["AUTHOR_URL_PARAMS"]) : '{}') ?>,
AVATAR_SIZE: '<?=CUtil::JSEscape($arParams["AVATAR_SIZE"])?>',
NAME_TEMPLATE: '<?=CUtil::JSEscape($arParams["~NAME_TEMPLATE"])?>',
SHOW_LOGIN: '<?=CUtil::JSEscape($arParams["SHOW_LOGIN"])?>',
DATE_TIME_FORMAT: '<?=CUtil::JSEscape($arParams["~DATE_TIME_FORMAT"])?>',
LAZYLOAD: '<?=$arParams["LAZYLOAD"]?>',
SHOW_POST_FORM: '<?=CUtil::JSEscape($arParams["SHOW_POST_FORM"])?>',
BIND_VIEWER: '<?=$arParams["BIND_VIEWER"]?>',
USE_LIVE: <?=(isset($arParams["USE_LIVE"]) && !$arParams["USE_LIVE"] ? 'false' : 'true')?>,
},
{
id : '<?=CUtil::JSEscape($arParams["FORM"]["ID"])?>',
url : '<?=CUtil::JSEscape($arParams["FORM"]["URL"])?>',
fields : <?= Json::encode($arParams["FORM"]["FIELDS"] ?? null) ?>
}
);
BX.removeCustomEvent("main.post.list/mobile", f);
}, scripts = [];
BX.addCustomEvent("main.post.list/mobile", f);
if (BX.MPL)
{
f();
return;
}
if (!window["FCList"])
scripts.push('<?=\CUtil::GetAdditionalFileURL("/bitrix/components/bitrix/main.post.list/templates/.default/script.js", true)?>');
if (!BX["MPL"])
scripts.push('<?=\CUtil::GetAdditionalFileURL($templateFolder."/script.js", true)?>');
BX.loadScript(scripts);
});
</script>
</div>