Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
PHP
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181<?php
final class AphrontFormView extends AphrontView {
private $action; private $method = 'POST'; private $header; private $data = array(); private $encType; private $workflow; private $id; private $sigils = array(); private $metadata; private $controls = array(); private $fullWidth = false; private $classes = array();
public function setMetadata($metadata) { $this->metadata = $metadata; return $this; }
public function getMetadata() { return $this->metadata; }
public function setID($id) { $this->id = $id; return $this; }
public function setAction($action) { $this->action = $action; return $this; }
public function setMethod($method) { $this->method = $method; return $this; }
public function setEncType($enc_type) { $this->encType = $enc_type; return $this; }
public function addHiddenInput($key, $value) { $this->data[$key] = $value; return $this; }
public function setWorkflow($workflow) { $this->workflow = $workflow; return $this; }
public function addSigil($sigil) { $this->sigils[] = $sigil; return $this; }
public function addClass($class) { $this->classes[] = $class; return $this; }
public function setFullWidth($full_width) { $this->fullWidth = $full_width; return $this; }
public function getFullWidth() { return $this->fullWidth; }
public function appendInstructions($text) { return $this->appendChild( phutil_tag( 'div', array( 'class' => 'aphront-form-instructions', ), $text)); }
public function appendRemarkupInstructions($remarkup) { $view = $this->newInstructionsRemarkupView($remarkup); return $this->appendInstructions($view); }
public function newInstructionsRemarkupView($remarkup) { $viewer = $this->getViewer(); $view = new PHUIRemarkupView($viewer, $remarkup);
$view->setRemarkupOptions( array( PHUIRemarkupView::OPTION_PRESERVE_LINEBREAKS => false, ));
return $view; }
public function buildLayoutView() { foreach ($this->controls as $control) { $control->setViewer($this->getViewer()); $control->willRender(); }
return id(new PHUIFormLayoutView()) ->setFullWidth($this->getFullWidth()) ->appendChild($this->renderDataInputs()) ->appendChild($this->renderChildren()); }
/** * Append a control to the form. * * This method behaves like @{method:appendChild}, but it only takes * controls. It will propagate some information from the form to the * control to simplify rendering. * * @param AphrontFormControl $control Control to append. * @return $this */ public function appendControl(AphrontFormControl $control) { $this->controls[] = $control; return $this->appendChild($control); }
public function render() { require_celerity_resource('phui-form-view-css');
$layout = $this->buildLayoutView();
if (!$this->hasViewer()) { throw new Exception( pht( 'You must pass the user to %s.', self::class)); }
$sigils = $this->sigils; if ($this->workflow) { $sigils[] = 'workflow'; }
return phabricator_form( $this->getViewer(), array( 'class' => implode(' ', $this->classes), 'action' => $this->action, 'method' => $this->method, 'enctype' => $this->encType, 'sigil' => $sigils ? implode(' ', $sigils) : null, 'meta' => $this->metadata, 'id' => $this->id, ), $layout->render()); }
private function renderDataInputs() { $inputs = array(); foreach ($this->data as $key => $value) { if ($value === null) { continue; } $inputs[] = phutil_tag( 'input', array( 'type' => 'hidden', 'name' => $key, 'value' => $value, )); } return $inputs; }
}