Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
3.5 kB · 140 lines
PHP
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141<?php
final class DiffusionBrowseTableView extends DiffusionView {
private $paths;
/** * @param array<DiffusionRepositoryPath> $paths */ public function setPaths(array $paths) { assert_instances_of($paths, DiffusionRepositoryPath::class); $this->paths = $paths; return $this; }
public function render() { $request = $this->getDiffusionRequest(); $repository = $request->getRepository(); require_celerity_resource('diffusion-css');
$base_path = trim($request->getPath(), '/'); if ($base_path) { $base_path = $base_path.'/'; }
$need_pull = array(); $rows = array(); foreach ($this->paths as $path) { $full_path = $base_path.$path->getPath();
$dir_slash = null; $file_type = $path->getFileType(); if ($file_type == DifferentialChangeType::FILE_DIRECTORY) { $browse_text = $path->getPath().'/'; $dir_slash = '/';
$browse_link = phutil_tag('strong', array(), $this->linkBrowse( $full_path.$dir_slash, array( 'type' => $file_type, 'name' => $browse_text, )));
$history_path = $full_path.'/'; } else if ($file_type == DifferentialChangeType::FILE_SUBMODULE) { $browse_text = $path->getPath().'/'; $browse_link = phutil_tag('strong', array(), $this->linkBrowse( null, array( 'type' => $file_type, 'name' => $browse_text, 'hash' => $path->getHash(), 'external' => $path->getExternalURI(), )));
$history_path = $full_path.'/'; } else { $browse_text = $path->getPath(); $browse_link = $this->linkBrowse( $full_path, array( 'type' => $file_type, 'name' => $browse_text, ));
$history_path = $full_path; }
$history_link = $this->linkHistory($history_path);
$dict = array( 'lint' => celerity_generate_unique_node_id(), 'date' => celerity_generate_unique_node_id(), 'details' => celerity_generate_unique_node_id(), );
$need_pull[$full_path.$dir_slash] = $dict; foreach ($dict as $k => $uniq) { $dict[$k] = phutil_tag('span', array('id' => $uniq), ''); }
$rows[] = array( $browse_link, idx($dict, 'lint'), $dict['details'], $dict['date'], $history_link, );
}
if ($need_pull) { Javelin::initBehavior( 'diffusion-pull-lastmodified', array( 'uri' => (string)$request->generateURI( array( 'action' => 'lastmodified', 'stable' => true, )), 'map' => $need_pull, )); }
$branch = $this->getDiffusionRequest()->loadBranch(); $show_lint = ($branch && $branch->getLintCommit()); $lint = $request->getLint();
$view = new AphrontTableView($rows); $view->setColumnClasses( array( '', '', 'wide commit-detail', 'right', 'right narrow', )); $view->setColumnVisibility( array( true, $show_lint, true, true, true, ));
$view->setDeviceVisibility( array( true, false, false, false, false, ));
return phutil_tag_div('diffusion-browse-table', $view->render()); }
}