当前位置: 首页>>代码示例>>PHP>>正文


PHP PhabricatorMarkupEngine::process方法代码示例

本文整理汇总了PHP中PhabricatorMarkupEngine::process方法的典型用法代码示例。如果您正苦于以下问题:PHP PhabricatorMarkupEngine::process方法的具体用法?PHP PhabricatorMarkupEngine::process怎么用?PHP PhabricatorMarkupEngine::process使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PhabricatorMarkupEngine的用法示例。


在下文中一共展示了PhabricatorMarkupEngine::process方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: processRequest

 public function processRequest()
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     $inlines = $this->loadInlineComments();
     assert_instances_of($inlines, 'PhabricatorInlineCommentInterface');
     $engine = new PhabricatorMarkupEngine();
     $engine->setViewer($user);
     foreach ($inlines as $inline) {
         $engine->addObject($inline, PhabricatorInlineCommentInterface::MARKUP_FIELD_BODY);
     }
     $engine->process();
     $phids = array($user->getPHID());
     $handles = $this->loadViewerHandles($phids);
     $views = array();
     foreach ($inlines as $inline) {
         $view = new DifferentialInlineCommentView();
         $view->setInlineComment($inline);
         $view->setMarkupEngine($engine);
         $view->setHandles($handles);
         $view->setEditable(false);
         $view->setPreview(true);
         $views[] = $view->render();
     }
     $views = phutil_implode_html("\n", $views);
     return id(new AphrontAjaxResponse())->setContent($views);
 }
开发者ID:denghp,项目名称:phabricator,代码行数:27,代码来源:PhabricatorInlineCommentPreviewController.php

示例2: processRequest

 public function processRequest()
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     $is_show_more = false;
     if (!$this->getTransactionID()) {
         $this->setTransactionID($this->getRequest()->getStr('ref'));
         $is_show_more = true;
     }
     $transaction_id = $this->getTransactionID();
     $transaction = id(new ManiphestTransaction())->load($transaction_id);
     if (!$transaction) {
         return new Aphront404Response();
     }
     $transactions = array($transaction);
     $phids = array();
     foreach ($transactions as $xaction) {
         foreach ($xaction->extractPHIDs() as $phid) {
             $phids[$phid] = $phid;
         }
     }
     $handles = $this->loadViewerHandles($phids);
     $engine = new PhabricatorMarkupEngine();
     $engine->setViewer($user);
     $engine->addObject($transaction, ManiphestTransaction::MARKUP_FIELD_BODY);
     $engine->process();
     $view = new ManiphestTransactionDetailView();
     $view->setTransactionGroup($transactions);
     $view->setHandles($handles);
     $view->setUser($user);
     $view->setMarkupEngine($engine);
     $view->setRenderSummaryOnly(true);
     $view->setRenderFullSummary(true);
     $view->setRangeSpecification($request->getStr('range'));
     if ($is_show_more) {
         return id(new PhabricatorChangesetResponse())->setRenderedChangeset($view->render());
     } else {
         return id(new AphrontAjaxResponse())->setContent($view->render());
     }
 }
开发者ID:rudimk,项目名称:phabricator,代码行数:40,代码来源:ManiphestTaskDescriptionChangeController.php

示例3: renderPropertyViewValue

 public function renderPropertyViewValue(array $handles)
 {
     $diff = $this->getObject()->getActiveDiff();
     $ustar = DifferentialRevisionUpdateHistoryView::renderDiffUnitStar($diff);
     $umsg = DifferentialRevisionUpdateHistoryView::getDiffUnitMessage($diff);
     $rows = array();
     $rows[] = array('style' => 'star', 'name' => $ustar, 'value' => $umsg, 'show' => true);
     $excuse = $diff->getProperty('arc:unit-excuse');
     if ($excuse) {
         $rows[] = array('style' => 'excuse', 'name' => 'Excuse', 'value' => phutil_escape_html_newlines($excuse), 'show' => true);
     }
     $show_limit = 10;
     $hidden = array();
     $udata = $diff->getProperty('arc:unit');
     if ($udata) {
         $sort_map = array(ArcanistUnitTestResult::RESULT_BROKEN => 0, ArcanistUnitTestResult::RESULT_FAIL => 1, ArcanistUnitTestResult::RESULT_UNSOUND => 2, ArcanistUnitTestResult::RESULT_SKIP => 3, ArcanistUnitTestResult::RESULT_POSTPONED => 4, ArcanistUnitTestResult::RESULT_PASS => 5);
         foreach ($udata as $key => $test) {
             $udata[$key]['sort'] = idx($sort_map, idx($test, 'result'));
         }
         $udata = isort($udata, 'sort');
         $engine = new PhabricatorMarkupEngine();
         $engine->setViewer($this->getViewer());
         $markup_objects = array();
         foreach ($udata as $key => $test) {
             $userdata = idx($test, 'userdata');
             if ($userdata) {
                 if ($userdata !== false) {
                     $userdata = str_replace("", '', $userdata);
                 }
                 $markup_object = id(new PhabricatorMarkupOneOff())->setContent($userdata)->setPreserveLinebreaks(true);
                 $engine->addObject($markup_object, 'default');
                 $markup_objects[$key] = $markup_object;
             }
         }
         $engine->process();
         foreach ($udata as $key => $test) {
             $result = idx($test, 'result');
             $default_hide = false;
             switch ($result) {
                 case ArcanistUnitTestResult::RESULT_POSTPONED:
                 case ArcanistUnitTestResult::RESULT_PASS:
                     $default_hide = true;
                     break;
             }
             if ($show_limit && !$default_hide) {
                 --$show_limit;
                 $show = true;
             } else {
                 $show = false;
                 if (empty($hidden[$result])) {
                     $hidden[$result] = 0;
                 }
                 $hidden[$result]++;
             }
             $value = idx($test, 'name');
             if (!empty($test['link'])) {
                 $value = phutil_tag('a', array('href' => $test['link'], 'target' => '_blank'), $value);
             }
             $rows[] = array('style' => $this->getResultStyle($result), 'name' => ucwords($result), 'value' => $value, 'show' => $show);
             if (isset($markup_objects[$key])) {
                 $rows[] = array('style' => 'details', 'value' => $engine->getOutput($markup_objects[$key], 'default'), 'show' => false);
                 if (empty($hidden['details'])) {
                     $hidden['details'] = 0;
                 }
                 $hidden['details']++;
             }
         }
     }
     $show_string = $this->renderShowString($hidden);
     $view = new DifferentialResultsTableView();
     $view->setRows($rows);
     $view->setShowMoreString($show_string);
     return $view->render();
 }
开发者ID:denghp,项目名称:phabricator,代码行数:74,代码来源:DifferentialUnitField.php

示例4: buildRenderedCommentResponse

 private function buildRenderedCommentResponse(PhabricatorInlineCommentInterface $inline, $on_right)
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     $engine = new PhabricatorMarkupEngine();
     $engine->setViewer($user);
     $engine->addObject($inline, PhabricatorInlineCommentInterface::MARKUP_FIELD_BODY);
     $engine->process();
     $phids = array($user->getPHID());
     $handles = $this->loadViewerHandles($phids);
     $object_owner_phid = $this->loadObjectOwnerPHID($inline);
     $view = id(new PHUIDiffInlineCommentDetailView())->setUser($user)->setInlineComment($inline)->setIsOnRight($on_right)->setMarkupEngine($engine)->setHandles($handles)->setEditable(true)->setCanMarkDone(false)->setObjectOwnerPHID($object_owner_phid);
     $view = $this->buildScaffoldForView($view);
     return id(new AphrontAjaxResponse())->setContent(array('inlineCommentID' => $inline->getID(), 'markup' => $view->render()));
 }
开发者ID:rchicoli,项目名称:phabricator,代码行数:15,代码来源:PhabricatorInlineCommentController.php

示例5: processRequest

 public function processRequest()
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     $comments = $request->getStr('comments');
     $task = id(new ManiphestTaskQuery())->setViewer($user)->withIDs(array($this->id))->executeOne();
     if (!$task) {
         return new Aphront404Response();
     }
     id(new PhabricatorDraft())->setAuthorPHID($user->getPHID())->setDraftKey($task->getPHID())->setDraft($comments)->replaceOrDelete();
     $action = $request->getStr('action');
     $transaction = new ManiphestTransaction();
     $transaction->setAuthorPHID($user->getPHID());
     $transaction->setTransactionType($action);
     // This should really be split into a separate transaction, but it should
     // all come out in the wash once we fully move to modern stuff.
     $transaction->attachComment(id(new ManiphestTransactionComment())->setContent($comments));
     $value = $request->getStr('value');
     // grab phids for handles and set transaction values based on action and
     // value (empty or control-specific format) coming in from the wire
     switch ($action) {
         case ManiphestTransaction::TYPE_PRIORITY:
             $transaction->setOldValue($task->getPriority());
             $transaction->setNewValue($value);
             break;
         case ManiphestTransaction::TYPE_OWNER:
             if ($value) {
                 $value = current(json_decode($value));
                 $phids = array($value);
             } else {
                 $phids = array();
             }
             $transaction->setNewValue($value);
             break;
         case ManiphestTransaction::TYPE_CCS:
             if ($value) {
                 $value = json_decode($value);
             }
             if (!$value) {
                 $value = array();
             }
             $phids = $value;
             foreach ($task->getCCPHIDs() as $cc_phid) {
                 $phids[] = $cc_phid;
                 $value[] = $cc_phid;
             }
             $transaction->setOldValue($task->getCCPHIDs());
             $transaction->setNewValue($value);
             break;
         case ManiphestTransaction::TYPE_PROJECTS:
             if ($value) {
                 $value = json_decode($value);
             }
             if (!$value) {
                 $value = array();
             }
             $phids = array();
             $value = array_fuse($value);
             foreach ($value as $project_phid) {
                 $phids[] = $project_phid;
                 $value[$project_phid] = array('dst' => $project_phid);
             }
             $project_type = PhabricatorProjectObjectHasProjectEdgeType::EDGECONST;
             $transaction->setTransactionType(PhabricatorTransactions::TYPE_EDGE)->setMetadataValue('edge:type', $project_type)->setOldValue(array())->setNewValue($value);
             break;
         case ManiphestTransaction::TYPE_STATUS:
             $phids = array();
             $transaction->setOldValue($task->getStatus());
             $transaction->setNewValue($value);
             break;
         default:
             $phids = array();
             $transaction->setNewValue($value);
             break;
     }
     $phids[] = $user->getPHID();
     $handles = $this->loadViewerHandles($phids);
     $transactions = array();
     $transactions[] = $transaction;
     $engine = new PhabricatorMarkupEngine();
     $engine->setViewer($user);
     if ($transaction->hasComment()) {
         $engine->addObject($transaction->getComment(), PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT);
     }
     $engine->process();
     $transaction->setHandles($handles);
     $view = id(new PhabricatorApplicationTransactionView())->setUser($user)->setTransactions($transactions)->setIsPreview(true);
     return id(new AphrontAjaxResponse())->setContent((string) phutil_implode_html('', $view->buildEvents()));
 }
开发者ID:denghp,项目名称:phabricator,代码行数:89,代码来源:ManiphestTransactionPreviewController.php

示例6: buildDisplayRows


//.........这里部分代码省略.........
             list($min, $max) = explode('-', $range, 2);
             $line_arr[] = array('min' => min($min, $max), 'max' => max($min, $max));
         } else {
             if (strlen($range)) {
                 $line_arr[] = array('min' => $range, 'max' => $range);
             }
         }
     }
     // Mark the first highlighted line as the target line.
     if ($line_arr) {
         $target_line = $line_arr[0]['min'];
         if (isset($display[$target_line - 1])) {
             $display[$target_line - 1]['target'] = true;
         }
     }
     // Mark all other highlighted lines as highlighted.
     foreach ($line_arr as $range) {
         for ($ii = $range['min']; $ii <= $range['max']; $ii++) {
             if (isset($display[$ii - 1])) {
                 $display[$ii - 1]['highlighted'] = true;
             }
         }
     }
     $engine = null;
     $inlines = array();
     if ($this->getRequest()->getStr('lint') !== null && $this->lintMessages) {
         $engine = new PhabricatorMarkupEngine();
         $engine->setViewer($viewer);
         foreach ($this->lintMessages as $message) {
             $inline = id(new PhabricatorAuditInlineComment())->setSyntheticAuthor(ArcanistLintSeverity::getStringForSeverity($message['severity']) . ' ' . $message['code'] . ' (' . $message['name'] . ')')->setLineNumber($message['line'])->setContent($message['description']);
             $inlines[$message['line']][] = $inline;
             $engine->addObject($inline, PhabricatorInlineCommentInterface::MARKUP_FIELD_BODY);
         }
         $engine->process();
         require_celerity_resource('differential-changeset-view-css');
     }
     $rows = $this->renderInlines(idx($inlines, 0, array()), $show_blame, (bool) $this->coverage, $engine);
     // NOTE: We're doing this manually because rendering is otherwise
     // dominated by URI generation for very large files.
     $line_base = (string) $drequest->generateURI(array('action' => 'browse', 'stable' => true));
     require_celerity_resource('aphront-tooltip-css');
     Javelin::initBehavior('phabricator-oncopy');
     Javelin::initBehavior('phabricator-tooltips');
     Javelin::initBehavior('phabricator-line-linker');
     // Render these once, since they tend to get repeated many times in large
     // blame outputs.
     $commit_links = $this->renderCommitLinks($blame_commits, $handles);
     $revision_links = $this->renderRevisionLinks($revisions, $handles);
     $skip_text = pht('Skip Past This Commit');
     foreach ($display as $line_index => $line) {
         $row = array();
         $line_number = $line_index + 1;
         $line_href = $line_base . '$' . $line_number;
         if (isset($blame_list[$line_index])) {
             $identifier = $blame_list[$line_index];
         } else {
             $identifier = null;
         }
         $revision_link = null;
         $commit_link = null;
         $before_link = null;
         $style = 'background: ' . $line['color'] . ';';
         if ($identifier && !$line['duplicate']) {
             if (isset($commit_links[$identifier])) {
                 $commit_link = $commit_links[$identifier];
             }
开发者ID:truSense,项目名称:phabricator,代码行数:67,代码来源:DiffusionBrowseController.php

示例7: buildDisplayRows


//.........这里部分代码省略.........
     $commits = array_filter(ipull($display, 'commit'));
     if ($commits) {
         $commits = id(new DiffusionCommitQuery())->setViewer($viewer)->withRepository($drequest->getRepository())->withIdentifiers($commits)->execute();
         $commits = mpull($commits, null, 'getCommitIdentifier');
     }
     $revision_ids = id(new DifferentialRevision())->loadIDsByCommitPHIDs(mpull($commits, 'getPHID'));
     $revisions = array();
     if ($revision_ids) {
         $revisions = id(new DifferentialRevisionQuery())->setViewer($viewer)->withIDs($revision_ids)->execute();
     }
     $phids = array();
     foreach ($commits as $commit) {
         if ($commit->getAuthorPHID()) {
             $phids[] = $commit->getAuthorPHID();
         }
     }
     foreach ($revisions as $revision) {
         if ($revision->getAuthorPHID()) {
             $phids[] = $revision->getAuthorPHID();
         }
     }
     $handles = $this->loadViewerHandles($phids);
     Javelin::initBehavior('phabricator-oncopy', array());
     $engine = null;
     $inlines = array();
     if ($this->getRequest()->getStr('lint') !== null && $this->lintMessages) {
         $engine = new PhabricatorMarkupEngine();
         $engine->setViewer($viewer);
         foreach ($this->lintMessages as $message) {
             $inline = id(new PhabricatorAuditInlineComment())->setSyntheticAuthor(ArcanistLintSeverity::getStringForSeverity($message['severity']) . ' ' . $message['code'] . ' (' . $message['name'] . ')')->setLineNumber($message['line'])->setContent($message['description']);
             $inlines[$message['line']][] = $inline;
             $engine->addObject($inline, PhabricatorInlineCommentInterface::MARKUP_FIELD_BODY);
         }
         $engine->process();
         require_celerity_resource('differential-changeset-view-css');
     }
     $rows = $this->renderInlines(idx($inlines, 0, array()), $show_blame, (bool) $this->coverage, $engine);
     foreach ($display as $line) {
         $line_href = $drequest->generateURI(array('action' => 'browse', 'line' => $line['line'], 'stable' => true));
         $blame = array();
         $style = null;
         if (array_key_exists('color', $line)) {
             if ($line['color']) {
                 $style = 'background: ' . $line['color'] . ';';
             }
             $before_link = null;
             $commit_link = null;
             $revision_link = null;
             if (idx($line, 'commit')) {
                 $commit = $line['commit'];
                 if (idx($commits, $commit)) {
                     $tooltip = $this->renderCommitTooltip($commits[$commit], $handles, $line['author']);
                 } else {
                     $tooltip = null;
                 }
                 Javelin::initBehavior('phabricator-tooltips', array());
                 require_celerity_resource('aphront-tooltip-css');
                 $commit_link = javelin_tag('a', array('href' => $drequest->generateURI(array('action' => 'commit', 'commit' => $line['commit'])), 'sigil' => 'has-tooltip', 'meta' => array('tip' => $tooltip, 'align' => 'E', 'size' => 600)), id(new PhutilUTF8StringTruncator())->setMaximumGlyphs(9)->setTerminator('')->truncateString($line['commit']));
                 $revision_id = null;
                 if (idx($commits, $commit)) {
                     $revision_id = idx($revision_ids, $commits[$commit]->getPHID());
                 }
                 if ($revision_id) {
                     $revision = idx($revisions, $revision_id);
                     if ($revision) {
                         $tooltip = $this->renderRevisionTooltip($revision, $handles);
开发者ID:fengshao0907,项目名称:phabricator,代码行数:67,代码来源:DiffusionBrowseFileController.php

示例8: processRequest

 public function processRequest()
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     $e_title = null;
     $priority_map = ManiphestTaskPriority::getTaskPriorityMap();
     $task = id(new ManiphestTaskQuery())->setViewer($user)->withIDs(array($this->id))->executeOne();
     if (!$task) {
         return new Aphront404Response();
     }
     $workflow = $request->getStr('workflow');
     $parent_task = null;
     if ($workflow && is_numeric($workflow)) {
         $parent_task = id(new ManiphestTaskQuery())->setViewer($user)->withIDs(array($workflow))->executeOne();
     }
     $transactions = id(new ManiphestTransactionQuery())->setViewer($user)->withObjectPHIDs(array($task->getPHID()))->needComments(true)->execute();
     $field_list = PhabricatorCustomField::getObjectFields($task, PhabricatorCustomField::ROLE_VIEW);
     $field_list->setViewer($user)->readFieldsFromStorage($task);
     $e_commit = ManiphestTaskHasCommitEdgeType::EDGECONST;
     $e_dep_on = PhabricatorEdgeConfig::TYPE_TASK_DEPENDS_ON_TASK;
     $e_dep_by = PhabricatorEdgeConfig::TYPE_TASK_DEPENDED_ON_BY_TASK;
     $e_rev = ManiphestTaskHasRevisionEdgeType::EDGECONST;
     $e_mock = PhabricatorEdgeConfig::TYPE_TASK_HAS_MOCK;
     $phid = $task->getPHID();
     $query = id(new PhabricatorEdgeQuery())->withSourcePHIDs(array($phid))->withEdgeTypes(array($e_commit, $e_dep_on, $e_dep_by, $e_rev, $e_mock));
     $edges = idx($query->execute(), $phid);
     $phids = array_fill_keys($query->getDestinationPHIDs(), true);
     foreach ($task->getCCPHIDs() as $phid) {
         $phids[$phid] = true;
     }
     foreach ($task->getProjectPHIDs() as $phid) {
         $phids[$phid] = true;
     }
     if ($task->getOwnerPHID()) {
         $phids[$task->getOwnerPHID()] = true;
     }
     $phids[$task->getAuthorPHID()] = true;
     $attached = $task->getAttached();
     foreach ($attached as $type => $list) {
         foreach ($list as $phid => $info) {
             $phids[$phid] = true;
         }
     }
     if ($parent_task) {
         $phids[$parent_task->getPHID()] = true;
     }
     $phids = array_keys($phids);
     $this->loadHandles($phids);
     $handles = $this->getLoadedHandles();
     $context_bar = null;
     if ($parent_task) {
         $context_bar = new AphrontContextBarView();
         $context_bar->addButton(phutil_tag('a', array('href' => '/maniphest/task/create/?parent=' . $parent_task->getID(), 'class' => 'green button'), pht('Create Another Subtask')));
         $context_bar->appendChild(hsprintf('Created a subtask of <strong>%s</strong>', $this->getHandle($parent_task->getPHID())->renderLink()));
     } else {
         if ($workflow == 'create') {
             $context_bar = new AphrontContextBarView();
             $context_bar->addButton(phutil_tag('label', array(), 'Create Another'));
             $context_bar->addButton(phutil_tag('a', array('href' => '/maniphest/task/create/?template=' . $task->getID(), 'class' => 'green button'), pht('Similar Task')));
             $context_bar->addButton(phutil_tag('a', array('href' => '/maniphest/task/create/', 'class' => 'green button'), pht('Empty Task')));
             $context_bar->appendChild(pht('New task created.'));
         }
     }
     $engine = new PhabricatorMarkupEngine();
     $engine->setViewer($user);
     $engine->addObject($task, ManiphestTask::MARKUP_FIELD_DESCRIPTION);
     foreach ($transactions as $modern_xaction) {
         if ($modern_xaction->getComment()) {
             $engine->addObject($modern_xaction->getComment(), PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT);
         }
     }
     $engine->process();
     $resolution_types = ManiphestTaskStatus::getTaskStatusMap();
     $transaction_types = array(PhabricatorTransactions::TYPE_COMMENT => pht('Comment'), ManiphestTransaction::TYPE_STATUS => pht('Change Status'), ManiphestTransaction::TYPE_OWNER => pht('Reassign / Claim'), ManiphestTransaction::TYPE_CCS => pht('Add CCs'), ManiphestTransaction::TYPE_PRIORITY => pht('Change Priority'), ManiphestTransaction::TYPE_PROJECTS => pht('Associate Projects'));
     // Remove actions the user doesn't have permission to take.
     $requires = array(ManiphestTransaction::TYPE_OWNER => ManiphestEditAssignCapability::CAPABILITY, ManiphestTransaction::TYPE_PRIORITY => ManiphestEditPriorityCapability::CAPABILITY, ManiphestTransaction::TYPE_PROJECTS => ManiphestEditProjectsCapability::CAPABILITY, ManiphestTransaction::TYPE_STATUS => ManiphestEditStatusCapability::CAPABILITY);
     foreach ($transaction_types as $type => $name) {
         if (isset($requires[$type])) {
             if (!$this->hasApplicationCapability($requires[$type])) {
                 unset($transaction_types[$type]);
             }
         }
     }
     // Don't show an option to change to the current status, or to change to
     // the duplicate status explicitly.
     unset($resolution_types[$task->getStatus()]);
     unset($resolution_types[ManiphestTaskStatus::getDuplicateStatus()]);
     // Don't show owner/priority changes for closed tasks, as they don't make
     // much sense.
     if ($task->isClosed()) {
         unset($transaction_types[ManiphestTransaction::TYPE_PRIORITY]);
         unset($transaction_types[ManiphestTransaction::TYPE_OWNER]);
     }
     $default_claim = array($user->getPHID() => $user->getUsername() . ' (' . $user->getRealName() . ')');
     $draft = id(new PhabricatorDraft())->loadOneWhere('authorPHID = %s AND draftKey = %s', $user->getPHID(), $task->getPHID());
     if ($draft) {
         $draft_text = $draft->getDraft();
     } else {
         $draft_text = null;
     }
//.........这里部分代码省略.........
开发者ID:denghp,项目名称:phabricator,代码行数:101,代码来源:ManiphestTaskDetailController.php

示例9: handleRequest


//.........这里部分代码省略.........
             $right_data = $left->makeOldFile();
         }
         $engine = new PhabricatorDifferenceEngine();
         $synthetic = $engine->generateChangesetFromFileContent($left_data, $right_data);
         $choice = clone nonempty($left, $right);
         $choice->attachHunks($synthetic->getHunks());
         $changeset = $choice;
     }
     if ($left_new || $right_new) {
         $diff_map = array();
         if ($left) {
             $diff_map[] = $left->getDiff();
         }
         if ($right) {
             $diff_map[] = $right->getDiff();
         }
         $diff_map = mpull($diff_map, null, 'getPHID');
         $buildables = id(new HarbormasterBuildableQuery())->setViewer($viewer)->withBuildablePHIDs(array_keys($diff_map))->withManualBuildables(false)->needBuilds(true)->needTargets(true)->execute();
         $buildables = mpull($buildables, null, 'getBuildablePHID');
         foreach ($diff_map as $diff_phid => $changeset_diff) {
             $changeset_diff->attachBuildable(idx($buildables, $diff_phid));
         }
     }
     $coverage = null;
     if ($right_new) {
         $coverage = $this->loadCoverage($right);
     }
     $spec = $request->getStr('range');
     list($range_s, $range_e, $mask) = DifferentialChangesetParser::parseRangeSpecification($spec);
     $parser = id(new DifferentialChangesetParser())->setCoverage($coverage)->setChangeset($changeset)->setRenderingReference($rendering_reference)->setRenderCacheKey($render_cache_key)->setRightSideCommentMapping($right_source, $right_new)->setLeftSideCommentMapping($left_source, $left_new);
     $parser->readParametersFromRequest($request);
     if ($left && $right) {
         $parser->setOriginals($left, $right);
     }
     $diff = $changeset->getDiff();
     $revision_id = $diff->getRevisionID();
     $can_mark = false;
     $object_owner_phid = null;
     $revision = null;
     if ($revision_id) {
         $revision = id(new DifferentialRevisionQuery())->setViewer($viewer)->withIDs(array($revision_id))->executeOne();
         if ($revision) {
             $can_mark = $revision->getAuthorPHID() == $viewer->getPHID();
             $object_owner_phid = $revision->getAuthorPHID();
         }
     }
     // Load both left-side and right-side inline comments.
     if ($revision) {
         $query = id(new DifferentialInlineCommentQuery())->setViewer($viewer)->needHidden(true)->withRevisionPHIDs(array($revision->getPHID()));
         $inlines = $query->execute();
         $inlines = $query->adjustInlinesForChangesets($inlines, $old, $new, $revision);
     } else {
         $inlines = array();
     }
     if ($left_new) {
         $inlines = array_merge($inlines, $this->buildLintInlineComments($left));
     }
     if ($right_new) {
         $inlines = array_merge($inlines, $this->buildLintInlineComments($right));
     }
     $phids = array();
     foreach ($inlines as $inline) {
         $parser->parseInlineComment($inline);
         if ($inline->getAuthorPHID()) {
             $phids[$inline->getAuthorPHID()] = true;
         }
     }
     $phids = array_keys($phids);
     $handles = $this->loadViewerHandles($phids);
     $parser->setHandles($handles);
     $engine = new PhabricatorMarkupEngine();
     $engine->setViewer($viewer);
     foreach ($inlines as $inline) {
         $engine->addObject($inline, PhabricatorInlineCommentInterface::MARKUP_FIELD_BODY);
     }
     $engine->process();
     $parser->setUser($viewer)->setMarkupEngine($engine)->setShowEditAndReplyLinks(true)->setCanMarkDone($can_mark)->setObjectOwnerPHID($object_owner_phid)->setRange($range_s, $range_e)->setMask($mask);
     if ($request->isAjax()) {
         // NOTE: We must render the changeset before we render coverage
         // information, since it builds some caches.
         $rendered_changeset = $parser->renderChangeset();
         $mcov = $parser->renderModifiedCoverage();
         $coverage_data = array('differential-mcoverage-' . md5($changeset->getFilename()) => $mcov);
         return id(new PhabricatorChangesetResponse())->setRenderedChangeset($rendered_changeset)->setCoverage($coverage_data)->setUndoTemplates($parser->getRenderer()->renderUndoTemplates());
     }
     $detail = id(new DifferentialChangesetListView())->setUser($this->getViewer())->setChangesets(array($changeset))->setVisibleChangesets(array($changeset))->setRenderingReferences(array($rendering_reference))->setRenderURI('/differential/changeset/')->setDiff($diff)->setTitle(pht('Standalone View'))->setParser($parser);
     if ($revision_id) {
         $detail->setInlineCommentControllerURI('/differential/comment/inline/edit/' . $revision_id . '/');
     }
     $crumbs = $this->buildApplicationCrumbs();
     if ($revision_id) {
         $crumbs->addTextCrumb('D' . $revision_id, '/D' . $revision_id);
     }
     $diff_id = $diff->getID();
     if ($diff_id) {
         $crumbs->addTextCrumb(pht('Diff %d', $diff_id), $this->getApplicationURI('diff/' . $diff_id));
     }
     $crumbs->addTextCrumb($changeset->getDisplayFilename());
     return $this->buildApplicationPage(array($crumbs, $detail), array('title' => pht('Changeset View'), 'device' => false));
 }
开发者ID:truSense,项目名称:phabricator,代码行数:101,代码来源:DifferentialChangesetViewController.php

示例10: processRequest

 public function processRequest()
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     $options = PhabricatorApplicationConfigOptions::loadAllOptions();
     if (empty($options[$this->key])) {
         $ancient = PhabricatorExtraConfigSetupCheck::getAncientConfig();
         if (isset($ancient[$this->key])) {
             $desc = pht("This configuration has been removed. You can safely delete " . "it.\n\n%s", $ancient[$this->key]);
         } else {
             $desc = pht('This configuration option is unknown. It may be misspelled, ' . 'or have existed in a previous version of Phabricator.');
         }
         // This may be a dead config entry, which existed in the past but no
         // longer exists. Allow it to be edited so it can be reviewed and
         // deleted.
         $option = id(new PhabricatorConfigOption())->setKey($this->key)->setType('wild')->setDefault(null)->setDescription($desc);
         $group = null;
         $group_uri = $this->getApplicationURI();
     } else {
         $option = $options[$this->key];
         $group = $option->getGroup();
         $group_uri = $this->getApplicationURI('group/' . $group->getKey() . '/');
     }
     $issue = $request->getStr('issue');
     if ($issue) {
         // If the user came here from an open setup issue, send them back.
         $done_uri = $this->getApplicationURI('issue/' . $issue . '/');
     } else {
         $done_uri = $group_uri;
     }
     // Check if the config key is already stored in the database.
     // Grab the value if it is.
     $config_entry = id(new PhabricatorConfigEntry())->loadOneWhere('configKey = %s AND namespace = %s', $this->key, 'default');
     if (!$config_entry) {
         $config_entry = id(new PhabricatorConfigEntry())->setConfigKey($this->key)->setNamespace('default')->setIsDeleted(true);
         $config_entry->setPHID($config_entry->generatePHID());
     }
     $e_value = null;
     $errors = array();
     if ($request->isFormPost() && !$option->getLocked()) {
         $result = $this->readRequest($option, $request);
         list($e_value, $value_errors, $display_value, $xaction) = $result;
         $errors = array_merge($errors, $value_errors);
         if (!$errors) {
             $editor = id(new PhabricatorConfigEditor())->setActor($user)->setContinueOnNoEffect(true)->setContentSourceFromRequest($request);
             try {
                 $editor->applyTransactions($config_entry, array($xaction));
                 return id(new AphrontRedirectResponse())->setURI($done_uri);
             } catch (PhabricatorConfigValidationException $ex) {
                 $e_value = pht('Invalid');
                 $errors[] = $ex->getMessage();
             }
         }
     } else {
         if ($config_entry->getIsDeleted()) {
             $display_value = null;
         } else {
             $display_value = $this->getDisplayValue($option, $config_entry, $config_entry->getValue());
         }
     }
     $form = new AphrontFormView();
     $error_view = null;
     if ($errors) {
         $error_view = id(new PHUIInfoView())->setErrors($errors);
     } else {
         if ($option->getHidden()) {
             $msg = pht('This configuration is hidden and can not be edited or viewed from ' . 'the web interface.');
             $error_view = id(new PHUIInfoView())->setTitle(pht('Configuration Hidden'))->setSeverity(PHUIInfoView::SEVERITY_WARNING)->appendChild(phutil_tag('p', array(), $msg));
         } else {
             if ($option->getLocked()) {
                 $msg = $option->getLockedMessage();
                 $error_view = id(new PHUIInfoView())->setTitle(pht('Configuration Locked'))->setSeverity(PHUIInfoView::SEVERITY_NOTICE)->appendChild(phutil_tag('p', array(), $msg));
             }
         }
     }
     if ($option->getHidden()) {
         $control = null;
     } else {
         $control = $this->renderControl($option, $display_value, $e_value);
     }
     $engine = new PhabricatorMarkupEngine();
     $engine->setViewer($user);
     $engine->addObject($option, 'description');
     $engine->process();
     $description = phutil_tag('div', array('class' => 'phabricator-remarkup'), $engine->getOutput($option, 'description'));
     $form->setUser($user)->addHiddenInput('issue', $request->getStr('issue'))->appendChild(id(new AphrontFormMarkupControl())->setLabel(pht('Description'))->setValue($description));
     if ($group) {
         $extra = $group->renderContextualDescription($option, $request);
         if ($extra !== null) {
             $form->appendChild(id(new AphrontFormMarkupControl())->setValue($extra));
         }
     }
     $form->appendChild($control);
     $submit_control = id(new AphrontFormSubmitControl())->addCancelButton($done_uri);
     if (!$option->getLocked()) {
         $submit_control->setValue(pht('Save Config Entry'));
     }
     $form->appendChild($submit_control);
     $examples = $this->renderExamples($option);
     if ($examples) {
//.........这里部分代码省略.........
开发者ID:hrb518,项目名称:phabricator,代码行数:101,代码来源:PhabricatorConfigEditController.php

示例11: handleRequest

 public function handleRequest(AphrontRequest $request)
 {
     $viewer = $this->getViewer();
     $id = $request->getURIData('id');
     $revision = id(new DifferentialRevisionQuery())->setViewer($viewer)->withIDs(array($id))->executeOne();
     if (!$revision) {
         return new Aphront404Response();
     }
     $type_comment = PhabricatorTransactions::TYPE_COMMENT;
     $type_action = DifferentialTransaction::TYPE_ACTION;
     $type_edge = PhabricatorTransactions::TYPE_EDGE;
     $type_subscribers = PhabricatorTransactions::TYPE_SUBSCRIBERS;
     $xactions = array();
     $action = $request->getStr('action');
     switch ($action) {
         case DifferentialAction::ACTION_COMMENT:
         case DifferentialAction::ACTION_ADDREVIEWERS:
         case DifferentialAction::ACTION_ADDCCS:
             break;
         default:
             $xactions[] = id(new DifferentialTransaction())->setTransactionType($type_action)->setNewValue($action);
             break;
     }
     $edge_reviewer = DifferentialRevisionHasReviewerEdgeType::EDGECONST;
     $reviewers = $request->getStrList('reviewers');
     if (DifferentialAction::allowReviewers($action) && $reviewers) {
         $faux_edges = array();
         foreach ($reviewers as $phid) {
             $faux_edges[$phid] = array('src' => $revision->getPHID(), 'type' => $edge_reviewer, 'dst' => $phid);
         }
         $xactions[] = id(new DifferentialTransaction())->setTransactionType($type_edge)->setMetadataValue('edge:type', $edge_reviewer)->setOldValue(array())->setNewValue($faux_edges);
     }
     $ccs = $request->getStrList('ccs');
     if ($ccs) {
         $xactions[] = id(new DifferentialTransaction())->setTransactionType($type_subscribers)->setOldValue(array())->setNewValue(array_fuse($ccs));
     }
     // Add a comment transaction if there's nothing, so we'll generate a
     // nonempty result.
     if (strlen($request->getStr('content')) || !$xactions) {
         $xactions[] = id(new DifferentialTransaction())->setTransactionType($type_comment)->attachComment(id(new ManiphestTransactionComment())->setContent($request->getStr('content')));
     }
     foreach ($xactions as $xaction) {
         $xaction->setAuthorPHID($viewer->getPHID());
     }
     $engine = new PhabricatorMarkupEngine();
     $engine->setViewer($request->getUser());
     foreach ($xactions as $xaction) {
         if ($xaction->hasComment()) {
             $engine->addObject($xaction->getComment(), PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT);
         }
     }
     $engine->process();
     $phids = mpull($xactions, 'getRequiredHandlePHIDs');
     $phids = array_mergev($phids);
     $handles = id(new PhabricatorHandleQuery())->setViewer($viewer)->withPHIDs($phids)->execute();
     foreach ($xactions as $xaction) {
         $xaction->setHandles($handles);
     }
     $view = id(new DifferentialTransactionView())->setUser($viewer)->setTransactions($xactions)->setIsPreview(true);
     $metadata = array('reviewers' => $reviewers, 'ccs' => $ccs);
     if ($action != DifferentialAction::ACTION_COMMENT) {
         $metadata['action'] = $action;
     }
     $draft_key = 'differential-comment-' . $id;
     $draft = id(new PhabricatorDraft())->setAuthorPHID($viewer->getPHID())->setDraftKey($draft_key)->setDraft($request->getStr('content'))->setMetadata($metadata)->replaceOrDelete();
     if ($draft->isDeleted()) {
         DifferentialDraft::deleteHasDraft($viewer->getPHID(), $revision->getPHID(), $draft_key);
     } else {
         DifferentialDraft::markHasDraft($viewer->getPHID(), $revision->getPHID(), $draft_key);
     }
     return id(new AphrontAjaxResponse())->setContent((string) phutil_implode_html('', $view->buildEvents()));
 }
开发者ID:pugong,项目名称:phabricator,代码行数:72,代码来源:DifferentialCommentPreviewController.php

示例12: handleRequest

 public function handleRequest(AphrontRequest $request)
 {
     $response = $this->loadDiffusionContext();
     if ($response) {
         return $response;
     }
     $viewer = $this->getViewer();
     $drequest = $this->getDiffusionRequest();
     if (!$request->isAjax()) {
         // This request came out of the dropdown menu, either "View Standalone"
         // or "View Raw File".
         $view = $request->getStr('view');
         if ($view == 'r') {
             $uri = $drequest->generateURI(array('action' => 'browse', 'params' => array('view' => 'raw')));
         } else {
             $uri = $drequest->generateURI(array('action' => 'change'));
         }
         return id(new AphrontRedirectResponse())->setURI($uri);
     }
     $data = $this->callConduitWithDiffusionRequest('diffusion.diffquery', array('commit' => $drequest->getCommit(), 'path' => $drequest->getPath()));
     $drequest->updateSymbolicCommit($data['effectiveCommit']);
     $raw_changes = ArcanistDiffChange::newFromConduit($data['changes']);
     $diff = DifferentialDiff::newEphemeralFromRawChanges($raw_changes);
     $changesets = $diff->getChangesets();
     $changeset = reset($changesets);
     if (!$changeset) {
         return new Aphront404Response();
     }
     $parser = new DifferentialChangesetParser();
     $parser->setUser($viewer);
     $parser->setChangeset($changeset);
     $parser->setRenderingReference($drequest->generateURI(array('action' => 'rendering-ref')));
     $parser->readParametersFromRequest($request);
     $coverage = $drequest->loadCoverage();
     if ($coverage) {
         $parser->setCoverage($coverage);
     }
     $commit = $drequest->loadCommit();
     $pquery = new DiffusionPathIDQuery(array($changeset->getFilename()));
     $ids = $pquery->loadPathIDs();
     $path_id = $ids[$changeset->getFilename()];
     $parser->setLeftSideCommentMapping($path_id, false);
     $parser->setRightSideCommentMapping($path_id, true);
     $parser->setCanMarkDone($commit->getAuthorPHID() && $viewer->getPHID() == $commit->getAuthorPHID());
     $parser->setObjectOwnerPHID($commit->getAuthorPHID());
     $parser->setWhitespaceMode(DifferentialChangesetParser::WHITESPACE_SHOW_ALL);
     $inlines = PhabricatorAuditInlineComment::loadDraftAndPublishedComments($viewer, $commit->getPHID(), $path_id);
     if ($inlines) {
         foreach ($inlines as $inline) {
             $parser->parseInlineComment($inline);
         }
         $phids = mpull($inlines, 'getAuthorPHID');
         $handles = $this->loadViewerHandles($phids);
         $parser->setHandles($handles);
     }
     $engine = new PhabricatorMarkupEngine();
     $engine->setViewer($viewer);
     foreach ($inlines as $inline) {
         $engine->addObject($inline, PhabricatorInlineCommentInterface::MARKUP_FIELD_BODY);
     }
     $engine->process();
     $parser->setMarkupEngine($engine);
     $spec = $request->getStr('range');
     list($range_s, $range_e, $mask) = DifferentialChangesetParser::parseRangeSpecification($spec);
     $parser->setRange($range_s, $range_e);
     $parser->setMask($mask);
     return id(new PhabricatorChangesetResponse())->setRenderedChangeset($parser->renderChangeset())->setUndoTemplates($parser->getRenderer()->renderUndoTemplates());
 }
开发者ID:truSense,项目名称:phabricator,代码行数:68,代码来源:DiffusionDiffController.php

示例13: processRequest

 public function processRequest()
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     $e_title = null;
     $priority_map = ManiphestTaskPriority::getTaskPriorityMap();
     $task = id(new ManiphestTask())->load($this->id);
     if (!$task) {
         return new Aphront404Response();
     }
     $workflow = $request->getStr('workflow');
     $parent_task = null;
     if ($workflow && is_numeric($workflow)) {
         $parent_task = id(new ManiphestTask())->load($workflow);
     }
     $transactions = id(new ManiphestTransaction())->loadAllWhere('taskID = %d ORDER BY id ASC', $task->getID());
     $e_commit = PhabricatorEdgeConfig::TYPE_TASK_HAS_COMMIT;
     $e_dep_on = PhabricatorEdgeConfig::TYPE_TASK_DEPENDS_ON_TASK;
     $e_dep_by = PhabricatorEdgeConfig::TYPE_TASK_DEPENDED_ON_BY_TASK;
     $e_rev = PhabricatorEdgeConfig::TYPE_TASK_HAS_RELATED_DREV;
     $phid = $task->getPHID();
     $query = id(new PhabricatorEdgeQuery())->withSourcePHIDs(array($phid))->withEdgeTypes(array($e_commit, $e_dep_on, $e_dep_by, $e_rev));
     $edges = $query->execute();
     $commit_phids = array_keys($edges[$phid][$e_commit]);
     $dep_on_tasks = array_keys($edges[$phid][$e_dep_on]);
     $dep_by_tasks = array_keys($edges[$phid][$e_dep_by]);
     $revs = array_keys($edges[$phid][$e_rev]);
     $phids = array_fill_keys($query->getDestinationPHIDs(), true);
     foreach ($transactions as $transaction) {
         foreach ($transaction->extractPHIDs() as $phid) {
             $phids[$phid] = true;
         }
     }
     foreach ($task->getCCPHIDs() as $phid) {
         $phids[$phid] = true;
     }
     foreach ($task->getProjectPHIDs() as $phid) {
         $phids[$phid] = true;
     }
     if ($task->getOwnerPHID()) {
         $phids[$task->getOwnerPHID()] = true;
     }
     $phids[$task->getAuthorPHID()] = true;
     $attached = $task->getAttached();
     foreach ($attached as $type => $list) {
         foreach ($list as $phid => $info) {
             $phids[$phid] = true;
         }
     }
     if ($parent_task) {
         $phids[$parent_task->getPHID()] = true;
     }
     $phids = array_keys($phids);
     $handles = $this->loadViewerHandles($phids);
     $dict = array();
     $dict['Status'] = '<strong>' . ManiphestTaskStatus::getTaskStatusFullName($task->getStatus()) . '</strong>';
     $dict['Assigned To'] = $task->getOwnerPHID() ? $handles[$task->getOwnerPHID()]->renderLink() : '<em>None</em>';
     $dict['Priority'] = ManiphestTaskPriority::getTaskPriorityName($task->getPriority());
     $cc = $task->getCCPHIDs();
     if ($cc) {
         $cc_links = array();
         foreach ($cc as $phid) {
             $cc_links[] = $handles[$phid]->renderLink();
         }
         $dict['CC'] = implode(', ', $cc_links);
     } else {
         $dict['CC'] = '<em>None</em>';
     }
     $dict['Author'] = $handles[$task->getAuthorPHID()]->renderLink();
     $source = $task->getOriginalEmailSource();
     if ($source) {
         $subject = '[T' . $task->getID() . '] ' . $task->getTitle();
         $dict['From Email'] = phutil_render_tag('a', array('href' => 'mailto:' . $source . '?subject=' . $subject), phutil_escape_html($source));
     }
     $projects = $task->getProjectPHIDs();
     if ($projects) {
         $project_links = array();
         foreach ($projects as $phid) {
             $project_links[] = $handles[$phid]->renderLink();
         }
         $dict['Projects'] = implode(', ', $project_links);
     } else {
         $dict['Projects'] = '<em>None</em>';
     }
     $extensions = ManiphestTaskExtensions::newExtensions();
     $aux_fields = $extensions->getAuxiliaryFieldSpecifications();
     if ($aux_fields) {
         $task->loadAndAttachAuxiliaryAttributes();
         foreach ($aux_fields as $aux_field) {
             $aux_key = $aux_field->getAuxiliaryKey();
             $aux_field->setValue($task->getAuxiliaryAttribute($aux_key));
             $value = $aux_field->renderForDetailView();
             if (strlen($value)) {
                 $dict[$aux_field->getLabel()] = $value;
             }
         }
     }
     if ($dep_by_tasks) {
         $dict['Dependent Tasks'] = $this->renderHandleList(array_select_keys($handles, $dep_by_tasks));
     }
//.........这里部分代码省略.........
开发者ID:rudimk,项目名称:phabricator,代码行数:101,代码来源:ManiphestTaskDetailController.php

示例14: buildRenderedCommentResponse

 private function buildRenderedCommentResponse(PhabricatorInlineCommentInterface $inline, $on_right)
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     $engine = new PhabricatorMarkupEngine();
     $engine->setViewer($user);
     $engine->addObject($inline, PhabricatorInlineCommentInterface::MARKUP_FIELD_BODY);
     $engine->process();
     $phids = array($user->getPHID());
     $handles = $this->loadViewerHandles($phids);
     $view = new DifferentialInlineCommentView();
     $view->setInlineComment($inline);
     $view->setOnRight($on_right);
     $view->setBuildScaffolding(true);
     $view->setMarkupEngine($engine);
     $view->setHandles($handles);
     $view->setEditable(true);
     return id(new AphrontAjaxResponse())->setContent(array('inlineCommentID' => $inline->getID(), 'markup' => $view->render()));
 }
开发者ID:denghp,项目名称:phabricator,代码行数:19,代码来源:PhabricatorInlineCommentController.php

示例15: handleRequest

 public function handleRequest(AphrontRequest $request)
 {
     $viewer = $request->getViewer();
     $key = $request->getURIData('key');
     $options = PhabricatorApplicationConfigOptions::loadAllOptions();
     if (empty($options[$key])) {
         $ancient = PhabricatorExtraConfigSetupCheck::getAncientConfig();
         if (isset($ancient[$key])) {
             $desc = pht("This configuration has been removed. You can safely delete " . "it.\n\n%s", $ancient[$key]);
         } else {
             $desc = pht('This configuration option is unknown. It may be misspelled, ' . 'or have existed in a previous version of Phabricator.');
         }
         // This may be a dead config entry, which existed in the past but no
         // longer exists. Allow it to be edited so it can be reviewed and
         // deleted.
         $option = id(new PhabricatorConfigOption())->setKey($key)->setType('wild')->setDefault(null)->setDescription($desc);
         $group = null;
         $group_uri = $this->getApplicationURI();
     } else {
         $option = $options[$key];
         $group = $option->getGroup();
         $group_uri = $this->getApplicationURI('group/' . $group->getKey() . '/');
     }
     $issue = $request->getStr('issue');
     if ($issue) {
         // If the user came here from an open setup issue, send them back.
         $done_uri = $this->getApplicationURI('issue/' . $issue . '/');
     } else {
         $done_uri = $group_uri;
     }
     // Check if the config key is already stored in the database.
     // Grab the value if it is.
     $config_entry = id(new PhabricatorConfigEntry())->loadOneWhere('configKey = %s AND namespace = %s', $key, 'default');
     if (!$config_entry) {
         $config_entry = id(new PhabricatorConfigEntry())->setConfigKey($key)->setNamespace('default')->setIsDeleted(true);
         $config_entry->setPHID($config_entry->generatePHID());
     }
     $e_value = null;
     $errors = array();
     if ($request->isFormPost() && !$option->getLocked()) {
         $result = $this->readRequest($option, $request);
         list($e_value, $value_errors, $display_value, $xaction) = $result;
         $errors = array_merge($errors, $value_errors);
         if (!$errors) {
             $editor = id(new PhabricatorConfigEditor())->setActor($viewer)->setContinueOnNoEffect(true)->setContentSourceFromRequest($request);
             try {
                 $editor->applyTransactions($config_entry, array($xaction));
                 return id(new AphrontRedirectResponse())->setURI($done_uri);
             } catch (PhabricatorConfigValidationException $ex) {
                 $e_value = pht('Invalid');
                 $errors[] = $ex->getMessage();
             }
         }
     } else {
         if ($config_entry->getIsDeleted()) {
             $display_value = null;
         } else {
             $display_value = $this->getDisplayValue($option, $config_entry, $config_entry->getValue());
         }
     }
     $form = id(new AphrontFormView())->setEncType('multipart/form-data');
     $error_view = null;
     if ($errors) {
         $error_view = id(new PHUIInfoView())->setErrors($errors);
     }
     $status_items = array();
     if ($option->getHidden()) {
         $message = pht('This configuration is hidden and can not be edited or viewed from ' . 'the web interface.');
         $status_items[] = id(new PHUIStatusItemView())->setIcon('fa-eye-slash red')->setTarget(phutil_tag('strong', array(), pht('Configuration Hidden')))->setNote($message);
     } else {
         if ($option->getLocked()) {
             $message = $option->getLockedMessage();
             $status_items[] = id(new PHUIStatusItemView())->setIcon('fa-lock red')->setTarget(phutil_tag('strong', array(), pht('Configuration Locked')))->setNote($message);
         }
     }
     if ($status_items) {
         $doc_href = PhabricatorEnv::getDoclink('Configuration Guide: Locked and Hidden Configuration');
         $doc_link = phutil_tag('a', array('href' => $doc_href, 'target' => '_blank'), pht('Configuration Guide: Locked and Hidden Configuration'));
         $status_items[] = id(new PHUIStatusItemView())->setIcon('fa-book')->setTarget(phutil_tag('strong', array(), pht('Learn More')))->setNote($doc_link);
     }
     if ($option->getHidden() || $option->getLocked()) {
         $controls = array();
     } else {
         $controls = $this->renderControls($option, $display_value, $e_value);
     }
     $engine = new PhabricatorMarkupEngine();
     $engine->setViewer($viewer);
     $engine->addObject($option, 'description');
     $engine->process();
     $description = phutil_tag('div', array('class' => 'phabricator-remarkup'), $engine->getOutput($option, 'description'));
     $form->setUser($viewer)->addHiddenInput('issue', $request->getStr('issue'));
     if ($status_items) {
         $status_view = id(new PHUIStatusListView());
         foreach ($status_items as $status_item) {
             $status_view->addItem($status_item);
         }
         $form->appendControl(id(new AphrontFormMarkupControl())->setValue($status_view));
     }
     $description = $option->getDescription();
     if (strlen($description)) {
//.........这里部分代码省略.........
开发者ID:endlessm,项目名称:phabricator,代码行数:101,代码来源:PhabricatorConfigEditController.php


注:本文中的PhabricatorMarkupEngine::process方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。