%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/components/bitrix/bizproc.workflow.livefeed/templates/.default/ |
| Current File : /home/bitrix/www/bitrix/components/bitrix/bizproc.workflow.livefeed/templates/.default/template.php |
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
\Bitrix\Main\Page\Asset::getInstance()->addJs('/bitrix/js/bizproc/tools.js');
$cmpId = RandString();
$jsCallback = <<<SCRIPT
function()
{
var wrapperNode = BX('{$cmpId}_wf_livefeed').parentNode;
BX.addClass(wrapperNode, 'bp-livefeed-wrapper-loading');
BX.ajax({
'method': 'POST',
'dataType': 'html',
'url': '/bitrix/components/bitrix/bizproc.workflow.livefeed/ajax.php',
'data': {WORKFLOW_ID: '{$arParams['WORKFLOW_ID']}'},
'onsuccess': function(html){
wrapperNode.innerHTML = html;
BX.removeClass(wrapperNode, 'bp-livefeed-wrapper-loading');
}
});
}
SCRIPT;
?>
<?if (!$arResult['noWrap']):?>
<div class="bp-livefeed-wrapper">
<?endif;?>
<div class="bp-post bp-lent bp-post-livefeed" id="<?=$cmpId?>_wf_livefeed">
<div id="<?=$cmpId?>_steps" class="bp-short-process-inner bp-opacity-animation bp-hidden">
<?$APPLICATION->IncludeComponent(
"bitrix:bizproc.workflow.faces",
"",
array(
"WORKFLOW_ID" => $arParams["~WORKFLOW_ID"],
'WORKFLOW_STATE_INFO' => $arResult["WORKFLOW_STATE_INFO"]
),
$component
);
?>
<span id="<?=$cmpId?>_user_status_yes" class="bp-status-ready bp-opacity-animation bp-hidden" style="display: none">
<span><?=GetMessage('BPATL_USER_STATUS_YES')?></span>
</span>
<span id="<?=$cmpId?>_user_status_no" class="bp-status-cancel bp-opacity-animation bp-hidden" style="display: none">
<span><?=GetMessage('BPATL_USER_STATUS_NO')?></span>
</span>
<span id="<?=$cmpId?>_user_status_ok" class="bp-status-ready bp-opacity-animation bp-hidden" style="display: none">
<span><?=GetMessage('BPATL_USER_STATUS_OK')?></span>
</span>
<span id="<?=$cmpId?>_wf_status" class="bp-status bp-opacity-animation bp-hidden" style="display: none">
<span class="bp-status-inner"><span><?=htmlspecialcharsbx($arResult["WORKFLOW_STATE_INFO"]['STATE_TITLE'])?></span></span>
</span>
<?foreach ($arResult['TASKS']['RUNNING'] as $task):?>
<div id="<?=$cmpId?>_task_buttons_<?=$task['ID']?>" class="bp-btn-panel bp-opacity-animation bp-hidden" style="display: none">
<span class="bp-btn-panel-inner">
<? if ($task['IS_INLINE'] == 'Y'):
foreach ($task['BUTTONS'] as $control):
$class = $control['TARGET_USER_STATUS'] == CBPTaskUserStatus::No || $control['TARGET_USER_STATUS'] == CBPTaskUserStatus::Cancel ? 'decline' : 'accept';
$props = CUtil::PhpToJSObject(array(
'TASK_ID' => $task['ID'],
$control['NAME'] => $control['VALUE']
));
?>
<a href="#" onclick="return BX.Bizproc.doInlineTask(<?=$props?>, <?=$jsCallback?>, this)"
class="bp-button bp-button bp-button-<?=$class?>">
<span class="bp-button-icon"></span>
<span class="bp-button-text"><?=$control['TEXT']?></span>
</a>
<?endforeach;
else:?>
<a href="#" class="bp-button bp-button bp-button-blue"
onclick="return BX.Bizproc.showTaskPopup(<?=$task['ID']?>, <?=$jsCallback?>, null, this, true)"><?=GetMessage("BPATL_BEGIN")?></a>
<?endif?>
</span>
</div>
<?endforeach;?>
</div>
<?foreach ($arResult['TASKS']['RUNNING'] as $task):?>
<div id="<?=$cmpId?>_task_block_<?=$task['ID']?>" class="bp-task-block bp-opacity-animation bp-hidden" style="display: none">
<span class="bp-task-block-title"><?=GetMessage("BPATL_TASK_TITLE")?>: </span>
<?=$task['NAME']?>
<? if ($task['DESCRIPTION']):?>
<p>
<?=nl2br($task['DESCRIPTION'])?>
</p>
<?endif?>
<p><a href="javascript:void(0);" onclick="return BX.Bizproc.showTaskPopup(<?=$task['ID']?>, <?=$jsCallback?>, null, this, true)"><?=GetMessage("BPATL_TASK_LINK_TITLE")?></a></p>
</div>
<?endforeach;?>
<?
$jsTasks = array('RUNNING' => array(), 'COMPLETED' => array());
foreach ($arResult['TASKS']['RUNNING'] as $task)
{
$jsTask = array(
'ID' => $task['ID'],
'USERS' => array()
);
foreach ($task['USERS'] as $u)
{
$jsTask['USERS'][] = array(
'USER_ID' => $u['USER_ID'],
'STATUS' => $u['STATUS']
);
}
$jsTasks['RUNNING'][] = $jsTask;
}
if (isset($arResult['TASKS']['COMPLETED'][0]))
{
$jsTask = array(
'ID' => $arResult['TASKS']['COMPLETED'][0]['ID'],
'USERS' => array()
);
foreach ($arResult['TASKS']['COMPLETED'][0]['USERS'] as $u)
{
$jsTask['USERS'][] = array(
'USER_ID' => $u['USER_ID'],
'STATUS' => $u['STATUS']
);
}
$jsTasks['COMPLETED'][] = $jsTask;
}
?>
<script>
BX.ready(function() {
var cmpId = '<?=$cmpId?>',
tasks = <?=CUtil::PhpToJSObject($jsTasks)?>,
userId = '<?=$arResult['USER_ID']?>',
statusWaiting = '<?=CBPTaskUserStatus::Waiting?>',
statusYes = '<?=CBPTaskUserStatus::Yes?>',
statusNo = '<?=CBPTaskUserStatus::No?>',
statusOk = '<?=CBPTaskUserStatus::Ok?>',
statusCancel = '<?=CBPTaskUserStatus::Cancel?>',
userStatus = false,
wfCompleted = <?=$arResult['WORKFLOW_STATE_INFO']['STATUS']===null?'true':'false'?>,
taskId = false;
if (BX(cmpId+'_steps'))
BX.removeClass(BX(cmpId+'_steps'), 'bp-hidden');
if (BX.message('USER_ID'))
userId = BX.message('USER_ID');
var getUserFromTask = function (task, userId)
{
for (var i = 0, l = task.USERS.length; i < l; ++i)
{
if (task.USERS[i]['USER_ID'] == userId)
return task.USERS[i];
}
return null;
};
if (tasks['RUNNING'].length)
{
for (var i = 0, l = tasks.RUNNING.length; i < l; ++i)
{
var task = tasks.RUNNING[i];
var user = getUserFromTask(task, userId);
if (user)
{
if (user.STATUS > statusWaiting)
userStatus = user.STATUS;
else
{
userStatus = false;
taskId = task.ID;
BX(cmpId+'_task_buttons_'+task.ID).style.display = '';
BX(cmpId+'_task_block_'+task.ID).style.display = '';
setTimeout(function(){
BX.removeClass(BX(cmpId+'_task_buttons_'+task.ID), 'bp-hidden');
BX.removeClass(BX(cmpId+'_task_block_'+task.ID), 'bp-hidden');
}, 10);
break;
}
}
}
}
else if (tasks['COMPLETED'].length && !wfCompleted)
{
var user = getUserFromTask(tasks['COMPLETED'][0], userId);
if (user && user.STATUS > statusWaiting)
{
userStatus = user.STATUS;
}
}
if (userStatus !== false)
{
switch (userStatus)
{
case statusYes:
BX(cmpId+'_user_status_yes').style.display = '';
setTimeout(function(){BX.removeClass(BX(cmpId+'_user_status_yes'), 'bp-hidden');}, 10);
break;
case statusNo:
case statusCancel:
BX(cmpId+'_user_status_no').style.display = '';
setTimeout(function(){BX.removeClass(BX(cmpId+'_user_status_no'), 'bp-hidden');}, 10);
break;
default:
BX(cmpId+'_user_status_ok').style.display = '';
setTimeout(function(){BX.removeClass(BX(cmpId+'_user_status_ok'), 'bp-hidden');}, 10);
break;
}
}
if (!(userStatus || taskId))
{
BX(cmpId+'_wf_status').style.display = '';
setTimeout(function(){BX.removeClass(BX(cmpId+'_wf_status'), 'bp-hidden');}, 10);
}
});
</script>
</div>
<?if (!$arResult['noWrap']):?>
</div>
<?endif;?>