function tasksRenderJSON($arTask, $childrenCount, $arPaths, $bParent = false, $bGant = false, $top = false, $nameTemplate = "", $arAdditionalFields = array(), $bSkipJsMenu = false) { global $USER; $arAllowedTaskActions = array(); if (isset($arTask['META:ALLOWED_ACTIONS'])) { $arAllowedTaskActions = $arTask['META:ALLOWED_ACTIONS']; } elseif ($arTask['ID']) { $oTask = CTaskItem::getInstanceFromPool($arTask['ID'], $USER->getId()); $arAllowedTaskActions = $oTask->getAllowedTaskActionsAsStrings(); $arTask['META:ALLOWED_ACTIONS'] = $arAllowedTaskActions; } $runningTaskId = $runningTaskTimer = null; if ($arTask['ALLOW_TIME_TRACKING'] === 'Y') { $oTimer = CTaskTimerManager::getInstance($USER->getId()); $runningTaskData = $oTimer->getRunningTask(false); $runningTaskId = $runningTaskData['TASK_ID']; $runningTaskTimer = time() - $runningTaskData['TIMER_STARTED_AT']; } ?> { id : <?php echo $arTask["ID"]; ?> , name : "<?php echo CUtil::JSEscape($arTask["TITLE"]); ?> ", <?php if ($arTask["GROUP_ID"]) { ?> projectId : <?php echo $arTask["GROUP_ID"]; ?> , projectName : '<?php echo CUtil::JSEscape($arTask['GROUP_NAME']); ?> ', <?php } ?> status : "<?php echo tasksStatus2String($arTask["STATUS"]); ?> ", realStatus : "<?php echo $arTask["REAL_STATUS"]; ?> ", url: '<?php echo CUtil::JSEscape(CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_TASKS_TASK"], array("task_id" => $arTask["ID"], "action" => "view"))); ?> ', details: window.top.onDetails, priority : <?php echo $arTask["PRIORITY"]; ?> , mark : <?php echo !$arTask["MARK"] ? "null" : "'" . $arTask["MARK"] . "'"; ?> , responsible: '<?php echo CUtil::JSEscape(tasksFormatNameShort($arTask["RESPONSIBLE_NAME"], $arTask["RESPONSIBLE_LAST_NAME"], $arTask["RESPONSIBLE_LOGIN"], $arTask["RESPONSIBLE_SECOND_NAME"], $nameTemplate)); ?> ', director: '<?php echo CUtil::JSEscape(tasksFormatNameShort($arTask["CREATED_BY_NAME"], $arTask["CREATED_BY_LAST_NAME"], $arTask["CREATED_BY_LOGIN"], $arTask["CREATED_BY_SECOND_NAME"], $nameTemplate)); ?> ', responsibleId : <?php echo $arTask["RESPONSIBLE_ID"]; ?> , directorId : <?php echo $arTask["CREATED_BY"]; ?> , responsible_name: '<?php echo CUtil::JSEscape($arTask["RESPONSIBLE_NAME"]); ?> ', responsible_second_name: '<?php echo CUtil::JSEscape($arTask["RESPONSIBLE_SECOND_NAME"]); ?> ', responsible_last_name: '<?php echo CUtil::JSEscape($arTask["RESPONSIBLE_LAST_NAME"]); ?> ', responsible_login: '******', director_name: '<?php echo CUtil::JSEscape($arTask["CREATED_BY_NAME"]); ?> ', director_second_name: '<?php echo CUtil::JSEscape($arTask["CREATED_BY_SECOND_NAME"]); ?> ', director_last_name: '<?php echo CUtil::JSEscape($arTask["CREATED_BY_LAST_NAME"]); ?> ', director_login: '******', dateCreated : <?php tasksJSDateObject($arTask["CREATED_DATE"], $top); ?> , <?php if ($arTask["START_DATE_PLAN"]) { ?> dateStart : <?php tasksJSDateObject($arTask["START_DATE_PLAN"], $top); ?> ,<?php } else { ?> dateStart: null,<?php } ?> <?php if ($arTask["END_DATE_PLAN"]) { ?> dateEnd : <?php tasksJSDateObject($arTask["END_DATE_PLAN"], $top); ?> ,<?php } else { ?> dateEnd: null,<?php } ?> <?php if ($arTask["DATE_START"]) { ?> dateStarted: <?php tasksJSDateObject($arTask["DATE_START"], $top); ?> ,<?php } ?> dateCompleted : <?php if ($arTask["CLOSED_DATE"]) { tasksJSDateObject($arTask["CLOSED_DATE"], $top); } else { ?> null<?php } ?> , <?php if ($arTask["DEADLINE"]) { ?> dateDeadline : <?php tasksJSDateObject($arTask["DEADLINE"], $top); ?> ,<?php } else { ?> dateDeadline: null,<?php } ?> canEditPlanDates : <?php if ($arAllowedTaskActions['ACTION_EDIT']) { ?> true<?php } else { ?> false<?php } ?> , <?php if ($arTask["PARENT_ID"] && $bParent) { ?> parentTaskId : <?php echo $arTask["PARENT_ID"]; ?> , <?php } ?> <?php if (sizeof($arTask["FILES"])) { $i = 0; ?> files: [ <?php foreach ($arTask["FILES"] as $file) { $i++; ?> { name : '<?php echo CUtil::JSEscape($file["ORIGINAL_NAME"]); ?> ', url : '/bitrix/components/bitrix/tasks.task.detail/show_file.php?fid=<?php echo $file["ID"]; ?> ', size : '<?php echo CUtil::JSEscape(CFile::FormatSize($file["FILE_SIZE"])); ?> ' }<?php if ($i != sizeof($arTask["FILES"])) { ?> ,<?php } ?> <?php } ?> ], <?php } ?> <?php if (count($arTask['ACCOMPLICES']) > 0) { $i = 0; echo 'accomplices: ['; foreach ($arTask['ACCOMPLICES'] as $ACCOMPLICE_ID) { if ($i++) { echo ','; } echo '{ id: ' . (int) $ACCOMPLICE_ID . ' }'; } echo '], '; } ?> <?php if (count($arTask['AUDITORS']) > 0) { $i = 0; echo 'auditors: ['; foreach ($arTask['AUDITORS'] as $AUDITOR_ID) { if ($i++) { echo ','; } echo '{ id: ' . (int) $AUDITOR_ID . ' }'; } echo '], '; } ?> isSubordinate: <?php echo $arTask["SUBORDINATE"] == "Y" ? "true" : "false"; ?> , isInReport: <?php echo $arTask["ADD_IN_REPORT"] == "Y" ? "true" : "false"; ?> , hasChildren : <?php if ((int) $childrenCount > 0) { echo 'true'; } else { echo 'false'; } ?> , childrenCount : <?php echo (int) $childrenCount; ?> , canEditDealine : <?php if ($arAllowedTaskActions['ACTION_EDIT'] || $arAllowedTaskActions['ACTION_CHANGE_DEADLINE']) { echo 'true'; } else { echo 'false'; } ?> , canStartTimeTracking : <?php if ($arAllowedTaskActions['ACTION_START_TIME_TRACKING']) { ?> true<?php } else { ?> false<?php } ?> , ALLOW_TIME_TRACKING : <?php if (isset($arTask['ALLOW_TIME_TRACKING']) && $arTask['ALLOW_TIME_TRACKING'] === 'Y') { echo 'true'; } else { echo 'false'; } ?> , TIMER_RUN_TIME : <?php if ($runningTaskId == $arTask['ID']) { echo (int) $runningTaskTimer; } else { echo 'false'; } ?> , TIME_SPENT_IN_LOGS : <?php echo (int) $arTask['TIME_SPENT_IN_LOGS']; ?> , TIME_ESTIMATE : <?php echo (int) $arTask['TIME_ESTIMATE']; ?> , IS_TASK_TRACKING_NOW : <?php if ($runningTaskId == $arTask['ID']) { echo 'true'; } else { echo 'false'; } ?> , menuItems: [<?php tasksGetItemMenu($arTask, $arPaths, SITE_ID, $bGant, $top, $bSkipJsMenu); ?> ] <?php foreach ($arAdditionalFields as $key => $value) { echo ', ' . $key . ' : ' . $value . "\n"; } ?> } <?php }
$nameFormat = $arParams["NAME_TEMPLATE"] ? $arParams["NAME_TEMPLATE"] : CSite::GetNameFormat(); $anchor_id = RandString(8); $viewUrl = CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_TASKS_TASK"], array("task_id" => $task["ID"], "action" => "view")); $editUrl = CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_TASKS_TASK"], array("task_id" => $task["ID"], "action" => "edit")); $copyUrl = CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_TASKS_TASK"], array("task_id" => 0, "action" => "edit")); $createUrl = CComponentEngine::MakePathFromTemplate($arPaths["PATH_TO_TASKS_TASK"], array("task_id" => 0, "action" => "edit")); $createUrl = $createUrl . (strpos($createUrl, "?") === false ? "?" : "&") . "PARENT_ID=" . $task["ID"]; if ($arResult['IFRAME'] === 'Y') { $viewUrl = $viewUrl . (strpos($viewUrl, "?") === false ? "?" : "&") . "IFRAME=Y"; } ?> <tr class="task-list-item task-depth-<?php echo $depth; ?> task-status-<?php echo tasksStatus2String($task["STATUS"]); ?> " id="task-<?php echo $task["ID"]; ?> " oncontextmenu="return ShowMenuPopupContext(<?php echo $task["ID"]; ?> , event);" ondblclick="window.location = '<?php echo CUtil::JSEscape($viewUrl); ?> '; return (false);" title="<?php