mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-27 01:02:42 +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',
|
'PhabricatorStandardCustomFieldHeader' => 'infrastructure/customfield/standard/PhabricatorStandardCustomFieldHeader.php',
|
||||||
'PhabricatorStandardCustomFieldInt' => 'infrastructure/customfield/standard/PhabricatorStandardCustomFieldInt.php',
|
'PhabricatorStandardCustomFieldInt' => 'infrastructure/customfield/standard/PhabricatorStandardCustomFieldInt.php',
|
||||||
'PhabricatorStandardCustomFieldInterface' => 'infrastructure/customfield/interface/PhabricatorStandardCustomFieldInterface.php',
|
'PhabricatorStandardCustomFieldInterface' => 'infrastructure/customfield/interface/PhabricatorStandardCustomFieldInterface.php',
|
||||||
|
'PhabricatorStandardCustomFieldLink' => 'infrastructure/customfield/standard/PhabricatorStandardCustomFieldLink.php',
|
||||||
'PhabricatorStandardCustomFieldPHIDs' => 'infrastructure/customfield/standard/PhabricatorStandardCustomFieldPHIDs.php',
|
'PhabricatorStandardCustomFieldPHIDs' => 'infrastructure/customfield/standard/PhabricatorStandardCustomFieldPHIDs.php',
|
||||||
'PhabricatorStandardCustomFieldRemarkup' => 'infrastructure/customfield/standard/PhabricatorStandardCustomFieldRemarkup.php',
|
'PhabricatorStandardCustomFieldRemarkup' => 'infrastructure/customfield/standard/PhabricatorStandardCustomFieldRemarkup.php',
|
||||||
'PhabricatorStandardCustomFieldSelect' => 'infrastructure/customfield/standard/PhabricatorStandardCustomFieldSelect.php',
|
'PhabricatorStandardCustomFieldSelect' => 'infrastructure/customfield/standard/PhabricatorStandardCustomFieldSelect.php',
|
||||||
|
@ -5971,6 +5972,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorStandardCustomFieldDate' => 'PhabricatorStandardCustomField',
|
'PhabricatorStandardCustomFieldDate' => 'PhabricatorStandardCustomField',
|
||||||
'PhabricatorStandardCustomFieldHeader' => 'PhabricatorStandardCustomField',
|
'PhabricatorStandardCustomFieldHeader' => 'PhabricatorStandardCustomField',
|
||||||
'PhabricatorStandardCustomFieldInt' => 'PhabricatorStandardCustomField',
|
'PhabricatorStandardCustomFieldInt' => 'PhabricatorStandardCustomField',
|
||||||
|
'PhabricatorStandardCustomFieldLink' => 'PhabricatorStandardCustomField',
|
||||||
'PhabricatorStandardCustomFieldPHIDs' => 'PhabricatorStandardCustomField',
|
'PhabricatorStandardCustomFieldPHIDs' => 'PhabricatorStandardCustomField',
|
||||||
'PhabricatorStandardCustomFieldRemarkup' => 'PhabricatorStandardCustomField',
|
'PhabricatorStandardCustomFieldRemarkup' => 'PhabricatorStandardCustomField',
|
||||||
'PhabricatorStandardCustomFieldSelect' => '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