mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-10 00:42:41 +01:00
Add link custom field.
Summary: Ref T3868. Adds a link custom field that verifies and links to the text provided. Test Plan: Add a custom field with type "link", then enter a well-formed URL in the provided box in the edit task screen. Verify that the URL displays correctly on the task display page. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley, #blessed_reviewers Subscribers: Korvin, epriestley Maniphest Tasks: T3868 Differential Revision: https://secure.phabricator.com/D12543
This commit is contained in:
parent
7196d29c0c
commit
1ab6ad3ee8
2 changed files with 86 additions and 0 deletions
|
@ -2544,6 +2544,7 @@ phutil_register_library_map(array(
|
|||
'PhabricatorStandardCustomFieldHeader' => 'infrastructure/customfield/standard/PhabricatorStandardCustomFieldHeader.php',
|
||||
'PhabricatorStandardCustomFieldInt' => 'infrastructure/customfield/standard/PhabricatorStandardCustomFieldInt.php',
|
||||
'PhabricatorStandardCustomFieldInterface' => 'infrastructure/customfield/interface/PhabricatorStandardCustomFieldInterface.php',
|
||||
'PhabricatorStandardCustomFieldLink' => 'infrastructure/customfield/standard/PhabricatorStandardCustomFieldLink.php',
|
||||
'PhabricatorStandardCustomFieldPHIDs' => 'infrastructure/customfield/standard/PhabricatorStandardCustomFieldPHIDs.php',
|
||||
'PhabricatorStandardCustomFieldRemarkup' => 'infrastructure/customfield/standard/PhabricatorStandardCustomFieldRemarkup.php',
|
||||
'PhabricatorStandardCustomFieldSelect' => 'infrastructure/customfield/standard/PhabricatorStandardCustomFieldSelect.php',
|
||||
|
@ -5971,6 +5972,7 @@ phutil_register_library_map(array(
|
|||
'PhabricatorStandardCustomFieldDate' => 'PhabricatorStandardCustomField',
|
||||
'PhabricatorStandardCustomFieldHeader' => 'PhabricatorStandardCustomField',
|
||||
'PhabricatorStandardCustomFieldInt' => 'PhabricatorStandardCustomField',
|
||||
'PhabricatorStandardCustomFieldLink' => 'PhabricatorStandardCustomField',
|
||||
'PhabricatorStandardCustomFieldPHIDs' => 'PhabricatorStandardCustomField',
|
||||
'PhabricatorStandardCustomFieldRemarkup' => 'PhabricatorStandardCustomField',
|
||||
'PhabricatorStandardCustomFieldSelect' => 'PhabricatorStandardCustomField',
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
<?php
|
||||
|
||||
final class PhabricatorStandardCustomFieldLink
|
||||
extends PhabricatorStandardCustomField {
|
||||
|
||||
public function getFieldType() {
|
||||
return 'link';
|
||||
}
|
||||
|
||||
public function buildFieldIndexes() {
|
||||
$indexes = array();
|
||||
|
||||
$value = $this->getFieldValue();
|
||||
if (strlen($value)) {
|
||||
$indexes[] = $this->newStringIndex($value);
|
||||
}
|
||||
|
||||
return $indexes;
|
||||
}
|
||||
|
||||
public function renderPropertyViewValue(array $handles) {
|
||||
$value = $this->getFieldValue();
|
||||
|
||||
if (!strlen($value)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!PhabricatorEnv::isValidRemoteURIForLink($value)) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
return phutil_tag(
|
||||
'a',
|
||||
array('href' => $value, 'target' => '_blank'),
|
||||
$value);
|
||||
}
|
||||
|
||||
public function readApplicationSearchValueFromRequest(
|
||||
PhabricatorApplicationSearchEngine $engine,
|
||||
AphrontRequest $request) {
|
||||
|
||||
return $request->getStr($this->getFieldKey());
|
||||
}
|
||||
|
||||
public function applyApplicationSearchConstraintToQuery(
|
||||
PhabricatorApplicationSearchEngine $engine,
|
||||
PhabricatorCursorPagedPolicyAwareQuery $query,
|
||||
$value) {
|
||||
|
||||
if (strlen($value)) {
|
||||
$query->withApplicationSearchContainsConstraint(
|
||||
$this->newStringIndex(null),
|
||||
$value);
|
||||
}
|
||||
}
|
||||
|
||||
public function appendToApplicationSearchForm(
|
||||
PhabricatorApplicationSearchEngine $engine,
|
||||
AphrontFormView $form,
|
||||
$value,
|
||||
array $handles) {
|
||||
|
||||
$form->appendChild(
|
||||
id(new AphrontFormTextControl())
|
||||
->setLabel($this->getFieldName())
|
||||
->setName($this->getFieldKey())
|
||||
->setValue($value));
|
||||
}
|
||||
|
||||
public function shouldAppearInHerald() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getHeraldFieldConditions() {
|
||||
return array(
|
||||
HeraldAdapter::CONDITION_CONTAINS,
|
||||
HeraldAdapter::CONDITION_NOT_CONTAINS,
|
||||
HeraldAdapter::CONDITION_IS,
|
||||
HeraldAdapter::CONDITION_IS_NOT,
|
||||
HeraldAdapter::CONDITION_REGEXP,
|
||||
);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue