1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-15 03:12:41 +01:00
phorge-phorge/src/applications/owners/controller/detail/PhabricatorOwnersDetailController.php

155 lines
4 KiB
PHP
Raw Normal View History

2011-04-03 23:48:36 +02:00
<?php
/*
* Copyright 2011 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
class PhabricatorOwnersDetailController extends PhabricatorOwnersController {
2011-04-04 04:20:47 +02:00
private $id;
public function willProcessRequest(array $data) {
2011-04-04 07:03:27 +02:00
$this->id = $data['id'];
2011-04-04 04:20:47 +02:00
}
2011-04-03 23:48:36 +02:00
public function processRequest() {
2011-04-04 04:20:47 +02:00
$request = $this->getRequest();
$user = $request->getUser();
2011-04-04 07:03:27 +02:00
$package = id(new PhabricatorOwnersPackage())->load($this->id);
if (!$package) {
return new Aphront404Response();
2011-04-04 04:20:47 +02:00
}
2011-04-04 07:03:27 +02:00
$paths = $package->loadPaths();
$owners = $package->loadOwners();
2011-04-04 04:20:47 +02:00
2011-04-04 07:03:27 +02:00
$phids = array();
foreach ($paths as $path) {
$phids[$path->getRepositoryPHID()] = true;
}
foreach ($owners as $owner) {
$phids[$owner->getUserPHID()] = true;
}
$phids = array_keys($phids);
2011-04-04 04:20:47 +02:00
2011-04-04 07:03:27 +02:00
$handles = id(new PhabricatorObjectHandleData($phids))->loadHandles();
2011-04-04 04:20:47 +02:00
2011-04-04 07:03:27 +02:00
$rows = array();
2011-04-04 04:20:47 +02:00
2011-04-04 07:03:27 +02:00
$rows[] = array(
'Name',
phutil_escape_html($package->getName()));
$rows[] = array(
'Description',
phutil_escape_html($package->getDescription()));
2011-04-04 04:20:47 +02:00
2011-04-04 07:03:27 +02:00
$primary_owner = null;
$primary_phid = $package->getPrimaryOwnerPHID();
if ($primary_phid && isset($handles[$primary_phid])) {
$primary_owner =
'<strong>'.$handles[$primary_phid]->renderLink().'</strong>';
2011-04-04 04:20:47 +02:00
}
2011-04-04 07:03:27 +02:00
$rows[] = array(
'Primary Owner',
$primary_owner,
);
$owner_links = array();
foreach ($owners as $owner) {
$owner_links[] = $handles[$owner->getUserPHID()]->renderLink();
}
$owner_links = implode('<br />', $owner_links);
$rows[] = array(
'Owners',
$owner_links);
$rows[] = array(
'Related Commits',
phutil_render_tag(
'a',
array(
'href' => '/owners/related/view/all/?phid='.$package->getPHID(),
),
phutil_escape_html('Related Commits'))
);
2011-04-04 07:03:27 +02:00
$path_links = array();
foreach ($paths as $path) {
$callsign = $handles[$path->getRepositoryPHID()]->getName();
$repo = phutil_escape_html('r'.$callsign);
$path_link = phutil_render_tag(
'a',
array(
'href' => '/diffusion/'.$callsign.'/browse/:'.$path->getPath(),
),
phutil_escape_html($path->getPath()));
$path_links[] = $repo.' '.$path_link;
}
$path_links = implode('<br />', $path_links);
$rows[] = array(
'Paths',
$path_links);
2011-04-04 04:20:47 +02:00
2011-04-04 07:03:27 +02:00
$table = new AphrontTableView($rows);
$table->setColumnClasses(
2011-04-04 04:20:47 +02:00
array(
2011-04-04 07:03:27 +02:00
'header',
'wide',
2011-04-04 04:20:47 +02:00
));
$panel = new AphrontPanelView();
2011-04-04 07:03:27 +02:00
$panel->setHeader(
'Package Details for "'.phutil_escape_html($package->getName()).'"');
$panel->addButton(
javelin_render_tag(
'a',
array(
'href' => '/owners/delete/'.$package->getID().'/',
'class' => 'button grey',
'sigil' => 'workflow',
),
'Delete Package'));
$panel->addButton(
phutil_render_tag(
'a',
array(
'href' => '/owners/edit/'.$package->getID().'/',
'class' => 'button',
),
'Edit Package'));
$panel->appendChild($table);
$nav = new AphrontSideNavView();
$nav->appendChild($panel);
$nav->addNavItem(
phutil_render_tag(
'a',
array(
'href' => '/owners/package/'.$package->getID().'/',
'class' => 'aphront-side-nav-selected',
),
'Package Details'));
2011-04-04 04:20:47 +02:00
2011-04-03 23:48:36 +02:00
return $this->buildStandardPageResponse(
2011-04-04 07:03:27 +02:00
$nav,
2011-04-03 23:48:36 +02:00
array(
2011-04-04 07:03:27 +02:00
'title' => "Package '".$package->getName()."'",
2011-04-03 23:48:36 +02:00
));
}
}