Path: blob/master/src/infrastructure/diff/view/PHUIDiffInlineCommentEditView.php
12242 views
<?php12final class PHUIDiffInlineCommentEditView3extends PHUIDiffInlineCommentView {45private $title;67public function setTitle($title) {8$this->title = $title;9return $this;10}1112public function render() {13$viewer = $this->getViewer();14$inline = $this->getInlineComment();1516$content = phabricator_form(17$viewer,18array(19'action' => $inline->getControllerURI(),20'method' => 'POST',21'sigil' => 'inline-edit-form',22),23array(24$this->renderBody(),25));2627return $content;28}2930private function renderBody() {31$buttons = array();3233$buttons[] = id(new PHUIButtonView())34->setText(pht('Save Draft'));3536$buttons[] = id(new PHUIButtonView())37->setText(pht('Cancel'))38->setColor(PHUIButtonView::GREY)39->addSigil('inline-edit-cancel');4041$title = phutil_tag(42'div',43array(44'class' => 'differential-inline-comment-edit-title',45),46$this->title);4748$corpus_view = $this->newCorpusView();4950$body = phutil_tag(51'div',52array(53'class' => 'differential-inline-comment-edit-body',54),55array(56$corpus_view,57$this->newTextarea(),58));5960$edit = javelin_tag(61'div',62array(63'class' => 'differential-inline-comment-edit-buttons grouped',64'sigil' => 'inline-edit-buttons',65),66array(67$buttons,68));6970$inline = $this->getInlineComment();7172return javelin_tag(73'div',74array(75'class' => 'differential-inline-comment-edit',76'sigil' => 'differential-inline-comment',77'meta' => $this->getInlineCommentMetadata(),78),79array(80$title,81$body,82$edit,83));84}8586private function newTextarea() {87$viewer = $this->getViewer();88$inline = $this->getInlineComment();8990$state = $inline->getContentStateForEdit($viewer);9192return id(new PhabricatorRemarkupControl())93->setViewer($viewer)94->setSigil('inline-content-text')95->setValue($state->getContentText())96->setDisableFullScreen(true);97}9899private function newCorpusView() {100$viewer = $this->getViewer();101$inline = $this->getInlineComment();102103$context = $inline->getInlineContext();104if ($context === null) {105return null;106}107108$head = $context->getHeadLines();109$head = $this->newContextView($head);110111$state = $inline->getContentStateForEdit($viewer);112113$main = $state->getContentSuggestionText();114$main_count = count(phutil_split_lines($main));115116// Browsers ignore one leading newline in text areas. Add one so that117// any actual leading newlines in the content are preserved.118$main = "\n".$main;119120$textarea = javelin_tag(121'textarea',122array(123'class' => 'inline-suggestion-input PhabricatorMonospaced',124'rows' => max(3, $main_count + 1),125'sigil' => 'inline-content-suggestion',126),127$main);128129$main = phutil_tag(130'tr',131array(132'class' => 'inline-suggestion-input-row',133),134array(135phutil_tag(136'td',137array(138'class' => 'inline-suggestion-line-cell',139),140null),141phutil_tag(142'td',143array(144'class' => 'inline-suggestion-input-cell',145),146$textarea),147));148149$tail = $context->getTailLines();150$tail = $this->newContextView($tail);151152$body = phutil_tag(153'tbody',154array(),155array(156$head,157$main,158$tail,159));160161$table = phutil_tag(162'table',163array(164'class' => 'inline-suggestion-table',165),166$body);167168$container = phutil_tag(169'div',170array(171'class' => 'inline-suggestion',172),173$table);174175return $container;176}177178private function newContextView(array $lines) {179if (!$lines) {180return array();181}182183$rows = array();184foreach ($lines as $index => $line) {185$line_cell = phutil_tag(186'td',187array(188'class' => 'inline-suggestion-line-cell PhabricatorMonospaced',189),190$index + 1);191192$text_cell = phutil_tag(193'td',194array(195'class' => 'inline-suggestion-text-cell PhabricatorMonospaced',196),197$line);198199$cells = array(200$line_cell,201$text_cell,202);203204$rows[] = phutil_tag('tr', array(), $cells);205}206207return $rows;208}209210}211212213