headTitle()->set($this->t('Review') . ' ' . $review->getId())->setTranslatorEnabled(false); if ($project) { echo $this->projectToolbar($project); } // prepare job spec data for the 'Status' field // job status is a reserved (optional) field with code 102 try { $statusField = $jobSpec->fieldCodeToName(102); } catch (\InvalidArgumentException $e) { $statusField = null; } $status = $statusField ? $jobSpec->getField($statusField) : null; // prepare url to get jobs - we use 'project-jobs' route if under a project, otherwise standard 'jobs' route $jobsUrl = $project ? $this->url('project-jobs', array('project' => $project)) : $this->url('jobs'); ?>

te('Review')?> escapeHtml($review->getId()) ?>

avatar($review->get('author'), 256) ?>
get('description')) { echo $this->preformat($review->get('description')); } else { echo '' . $this->te('No description') . ''; } ?>
url('change', array('change' => $change->getId())); $changeLink = '' . $change->getId() . ''; $againstUrl = $against ? $this->url('change', array('change' => $against->getId())) : null; $againstLink = $against ? '' . $against->getId() . '' : null; $pathUrl = $this->url('file', array('path' => trim($basePath, '/'))); $pathLink = '' . $this->decodeFilespec($basePath) . ''; if (!$against) { echo '#' . $changeRev . ': ' . $this->te('Change') . ' '; echo $change->isSubmitted() ? $changeLink . ' ' . $this->te('committed') : $change->getId() . ' ' . $this->te('shelved'); } else { echo '#' . $againstRev . '-' . $changeRev . ':' . ' ' . $this->te('Changes between') . ' '; echo $against->isSubmitted() ? $this->te('commit') . ' ' . $againstLink : $this->te('shelf') . ' ' . $against->getId(); echo ' ' . $this->te('and') . ' '; echo $change->isSubmitted() ? $this->te('commit') . ' ' . $changeLink : $this->te('shelf') . ' ' . $change->getId(); } echo $basePath ? ' ' . $this->te('into') . ' ' . $pathLink : null; ?>
decodeFilespec(substr($file['depotFile'], strlen($basePath) + 1)); $md5 = md5($file['depotFile']); $rev = null; $url = null; if ($file['rev']) { $rev = $change->isPending() ? '@=' . $change->getId() : $file['rev']; $url = $this->url('file', array('path' => ltrim($file['depotFile'], '/'))) . '?' . http_build_query(array('v' => $rev)); } // determine simple action class of add/edit/delete. $actionClass = $file['isAdd'] ? 'add' : 'edit'; $actionClass = $file['isDelete'] ? 'delete' : $actionClass; $actionTitle = $this->t(ucfirst($file['action'])) . " (" . $this->t($file['type']) . ")"; // file info (if present) contains read-by data $fileInfoId = FileInfo::composeId($review->getId(), $file['depotFile']); $fileInfo = isset($fileInfos[$fileInfoId]) ? $fileInfos[$fileInfoId] : null; $digest = isset($file['digest']) ? $file['digest'] : null; $readBy = $fileInfo ? $fileInfo->getReadBy($changeRev, $digest) : array(); $isRead = $fileInfo && $fileInfo->isReadBy($this->user()->getId(), $changeRev, $digest); $readClass = 'file-' . ($isRead ? 'read' : 'unread'); ?>
te('Snip')?> (> te('files')?>)
te($against ? 'No modified files.' : 'No files.') ?>
te("Tip: Use %sn%s and %sp%s to cycle through the changes."), "", "", "", "" ); ?>
activity('review-' . $review->getId(), false, 'condensed'); ?>