Path: blob/master/src/applications/herald/value/HeraldTokenizerFieldValue.php
12256 views
<?php12final class HeraldTokenizerFieldValue3extends HeraldFieldValue {45private $key;6private $datasource;7private $valueMap;89public function setKey($key) {10$this->key = $key;11return $this;12}1314public function getKey() {15return $this->key;16}1718public function setDatasource(PhabricatorTypeaheadDatasource $datasource) {19$this->datasource = $datasource;20return $this;21}2223public function getDatasource() {24return $this->datasource;25}2627public function setValueMap(array $value_map) {28$this->valueMap = $value_map;29return $this;30}3132public function getValueMap() {33return $this->valueMap;34}3536public function getFieldValueKey() {37if ($this->getKey() === null) {38throw new PhutilInvalidStateException('setKey');39}40return 'tokenizer.'.$this->getKey();41}4243public function getControlType() {44return self::CONTROL_TOKENIZER;45}4647protected function getControlTemplate() {48if ($this->getDatasource() === null) {49throw new PhutilInvalidStateException('setDatasource');50}5152$datasource = $this->getDatasource();53$datasource->setViewer($this->getViewer());5455return array(56'tokenizer' => array(57'datasourceURI' => $datasource->getDatasourceURI(),58'browseURI' => $datasource->getBrowseURI(),59'placeholder' => $datasource->getPlaceholderText(),60'limit' => $datasource->getLimit(),61),62);63}6465public function renderFieldValue($value) {66return $this->renderValueAsList($value, $for_transcript = false);67}6869public function renderEditorValue($value) {70$viewer = $this->getViewer();71$value = (array)$value;7273$datasource = $this->getDatasource()74->setViewer($viewer);7576return $datasource->getWireTokens($value);77}7879public function renderTranscriptValue($value) {80return $this->renderValueAsList($value, $for_transcript = true);81}8283private function renderValueAsList($value, $for_transcript) {84$viewer = $this->getViewer();85$value = (array)$value;8687if (!$value) {88return phutil_tag('em', array(), pht('None'));89}9091if ($this->valueMap !== null) {92foreach ($value as $k => $v) {93$value[$k] = idx($this->valueMap, $v, $v);94}9596return implode(', ', $value);97}9899$list = $viewer->renderHandleList($value);100101if (!$for_transcript) {102$list->setAsInline(true);103}104105return $list;106}107108}109110111