mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-25 08:12:40 +01:00
b2f3001ec4
Summary: The removes the sprite sheet 'icons' and replaces it with FontAwesome fonts. Test Plan: - Grep for SPRITE_ICONS and replace - Grep for sprite-icons and replace - Grep for PhabricatorActionList and choose all new icons - Grep for Crumbs and fix icons - Test/Replace PHUIList Icon support - Test/Replace ObjectList Icon support (foot, epoch, etc) - Browse as many pages as I could get to - Remove sprite-icons and move remarkup to own sheet - Review this diff in Differential Reviewers: btrahan, epriestley Reviewed By: epriestley Subscribers: epriestley, Korvin, hach-que Differential Revision: https://secure.phabricator.com/D9052
249 lines
6.8 KiB
PHP
249 lines
6.8 KiB
PHP
<?php
|
|
|
|
final class ReleephRequestView extends AphrontView {
|
|
|
|
private $pullRequest;
|
|
private $customFields;
|
|
private $isListView;
|
|
|
|
public function setIsListView($is_list_view) {
|
|
$this->isListView = $is_list_view;
|
|
return $this;
|
|
}
|
|
|
|
public function getIsListView() {
|
|
return $this->isListView;
|
|
}
|
|
|
|
public function setCustomFields(PhabricatorCustomFieldList $custom_fields) {
|
|
$this->customFields = $custom_fields;
|
|
return $this;
|
|
}
|
|
|
|
public function getCustomFields() {
|
|
return $this->customFields;
|
|
}
|
|
|
|
public function setPullRequest(ReleephRequest $pull_request) {
|
|
$this->pullRequest = $pull_request;
|
|
return $this;
|
|
}
|
|
|
|
public function getPullRequest() {
|
|
return $this->pullRequest;
|
|
}
|
|
|
|
public function render() {
|
|
$viewer = $this->getUser();
|
|
|
|
$field_list = $this->getCustomFields();
|
|
$pull = $this->getPullRequest();
|
|
|
|
$header = $this->buildHeader($pull);
|
|
|
|
$action_list = $this->buildActionList($pull);
|
|
|
|
$property_list = id(new PHUIPropertyListView())
|
|
->setUser($viewer)
|
|
->setActionList($action_list);
|
|
|
|
$field_list->appendFieldsToPropertyList(
|
|
$pull,
|
|
$viewer,
|
|
$property_list);
|
|
|
|
$warnings = $this->getWarnings($pull);
|
|
|
|
if ($this->getIsListView()) {
|
|
Javelin::initBehavior('releeph-request-state-change');
|
|
}
|
|
|
|
return id(new PHUIObjectBoxView())
|
|
->setHeader($header)
|
|
->setFormErrors($warnings)
|
|
->addSigil('releeph-request-box')
|
|
->setMetadata(array('uri' => '/'.$pull->getMonogram()))
|
|
->appendChild($property_list);
|
|
}
|
|
|
|
private function buildHeader(ReleephRequest $pull) {
|
|
$header_text = $pull->getSummaryForDisplay();
|
|
if ($this->getIsListView()) {
|
|
$header_text = phutil_tag(
|
|
'a',
|
|
array(
|
|
'href' => '/'.$pull->getMonogram(),
|
|
),
|
|
$header_text);
|
|
}
|
|
|
|
$header = id(new PHUIHeaderView())
|
|
->setHeader($header_text)
|
|
->setUser($this->getUser())
|
|
->setPolicyObject($pull);
|
|
|
|
switch ($pull->getStatus()) {
|
|
case ReleephRequestStatus::STATUS_REQUESTED:
|
|
$icon = 'open';
|
|
$color = null;
|
|
break;
|
|
case ReleephRequestStatus::STATUS_REJECTED:
|
|
$icon = 'reject';
|
|
$color = 'red';
|
|
break;
|
|
case ReleephRequestStatus::STATUS_PICKED:
|
|
$icon = 'accept';
|
|
$color = 'green';
|
|
break;
|
|
case ReleephRequestStatus::STATUS_REVERTED:
|
|
case ReleephRequestStatus::STATUS_ABANDONED:
|
|
$icon = 'reject';
|
|
$color = 'dark';
|
|
break;
|
|
case ReleephRequestStatus::STATUS_NEEDS_PICK:
|
|
$icon = 'warning';
|
|
$color = 'green';
|
|
break;
|
|
case ReleephRequestStatus::STATUS_NEEDS_REVERT:
|
|
$icon = 'warning';
|
|
$color = 'red';
|
|
break;
|
|
default:
|
|
$icon = 'question';
|
|
$color = null;
|
|
break;
|
|
}
|
|
$text = ReleephRequestStatus::getStatusDescriptionFor($pull->getStatus());
|
|
$header->setStatus($icon, $color, $text);
|
|
|
|
if ($this->getIsListView()) {
|
|
$header->setObjectName($pull->getMonogram());
|
|
}
|
|
|
|
return $header;
|
|
}
|
|
|
|
private function buildActionList(ReleephRequest $pull) {
|
|
$viewer = $this->getUser();
|
|
$id = $pull->getID();
|
|
|
|
$edit_uri = '/releeph/request/edit/'.$id.'/';
|
|
|
|
$view = id(new PhabricatorActionListView())
|
|
->setUser($viewer);
|
|
|
|
$product = $pull->getBranch()->getProduct();
|
|
$viewer_is_pusher = $product->isAuthoritativePHID($viewer->getPHID());
|
|
$viewer_is_requestor = ($pull->getRequestUserPHID() == $viewer->getPHID());
|
|
|
|
if ($viewer_is_pusher) {
|
|
$yes_text = pht('Approve Pull');
|
|
$no_text = pht('Reject Pull');
|
|
$yes_icon = 'fa-check';
|
|
$no_icon = 'fa-times';
|
|
} else if ($viewer_is_requestor) {
|
|
$yes_text = pht('Request Pull');
|
|
$no_text = pht('Cancel Pull');
|
|
$yes_icon = 'fa-check';
|
|
$no_icon = 'fa-times';
|
|
} else {
|
|
$yes_text = pht('Support Pull');
|
|
$no_text = pht('Discourage Pull');
|
|
$yes_icon = 'fa-thumbs-o-up';
|
|
$no_icon = 'fa-thumbs-o-down';
|
|
}
|
|
|
|
$yes_href = '/releeph/request/action/want/'.$id.'/';
|
|
$no_href = '/releeph/request/action/pass/'.$id.'/';
|
|
|
|
$intents = $pull->getUserIntents();
|
|
$current_intent = idx($intents, $viewer->getPHID());
|
|
|
|
$yes_disabled = ($current_intent == ReleephRequest::INTENT_WANT);
|
|
$no_disabled = ($current_intent == ReleephRequest::INTENT_PASS);
|
|
|
|
$use_workflow = (!$this->getIsListView());
|
|
|
|
$view->addAction(
|
|
id(new PhabricatorActionView())
|
|
->setName($yes_text)
|
|
->setHref($yes_href)
|
|
->setWorkflow($use_workflow)
|
|
->setRenderAsForm($use_workflow)
|
|
->setDisabled($yes_disabled)
|
|
->addSigil('releeph-request-state-change')
|
|
->addSigil('want')
|
|
->setIcon($yes_icon));
|
|
|
|
$view->addAction(
|
|
id(new PhabricatorActionView())
|
|
->setName($no_text)
|
|
->setHref($no_href)
|
|
->setWorkflow($use_workflow)
|
|
->setRenderAsForm($use_workflow)
|
|
->setDisabled($no_disabled)
|
|
->addSigil('releeph-request-state-change')
|
|
->addSigil('pass')
|
|
->setIcon($no_icon));
|
|
|
|
|
|
if ($viewer_is_pusher || $viewer_is_requestor) {
|
|
|
|
$pulled_href = '/releeph/request/action/mark-manually-picked/'.$id.'/';
|
|
$revert_href = '/releeph/request/action/mark-manually-reverted/'.$id.'/';
|
|
|
|
if ($pull->getInBranch()) {
|
|
$view->addAction(
|
|
id(new PhabricatorActionView())
|
|
->setName(pht('Mark as Reverted'))
|
|
->setHref($revert_href)
|
|
->setWorkflow($use_workflow)
|
|
->setRenderAsForm($use_workflow)
|
|
->addSigil('releeph-request-state-change')
|
|
->addSigil('mark-manually-reverted')
|
|
->setIcon($no_icon));
|
|
} else {
|
|
$view->addAction(
|
|
id(new PhabricatorActionView())
|
|
->setName(pht('Mark as Pulled'))
|
|
->setHref($pulled_href)
|
|
->setWorkflow($use_workflow)
|
|
->setRenderAsForm($use_workflow)
|
|
->addSigil('releeph-request-state-change')
|
|
->addSigil('mark-manually-picked')
|
|
->setIcon('fa-exclamation-triangle'));
|
|
}
|
|
}
|
|
|
|
|
|
if (!$this->getIsListView()) {
|
|
$view->addAction(
|
|
id(new PhabricatorActionView())
|
|
->setName(pht('Edit Pull Request'))
|
|
->setIcon('fa-pencil')
|
|
->setHref($edit_uri));
|
|
}
|
|
|
|
return $view;
|
|
}
|
|
|
|
private function getWarnings(ReleephRequest $pull) {
|
|
$warnings = array();
|
|
|
|
switch ($pull->getStatus()) {
|
|
case ReleephRequestStatus::STATUS_NEEDS_PICK:
|
|
if ($pull->getPickStatus() == ReleephRequest::PICK_FAILED) {
|
|
$warnings[] = pht('Last pull failed!');
|
|
}
|
|
break;
|
|
case ReleephRequestStatus::STATUS_NEEDS_REVERT:
|
|
if ($pull->getPickStatus() == ReleephRequest::REVERT_FAILED) {
|
|
$warnings[] = pht('Last revert failed!');
|
|
}
|
|
break;
|
|
}
|
|
|
|
return $warnings;
|
|
}
|
|
|
|
}
|