1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-15 03:12:41 +01:00
phorge-phorge/src/view/phui/PHUIRemarkupPreviewPanel.php
Chad Little fe2a96e37f Update Form Layouts
Summary:
This attempts some consistency in form layouts. Notably, they all now contain headers and are 16px off the sides and tops of pages. Also updated dialogs to the same look and feel. I think I got 98% of forms with this pass, but it's likely I missed some buried somewhere.

TODO: will take another pass as consolidating these colors and new gradients in another diff.

Test Plan: Played in my sandbox all week. Please play with it too and let me know how they feel.

Reviewers: epriestley, btrahan

Reviewed By: epriestley

CC: Korvin, aran

Differential Revision: https://secure.phabricator.com/D6806
2013-08-26 11:53:11 -07:00

134 lines
2.9 KiB
PHP

<?php
/**
* Render a simple preview panel for a bound Remarkup text control.
*/
final class PHUIRemarkupPreviewPanel extends AphrontTagView {
private $header;
private $loadingText;
private $controlID;
private $previewURI;
private $skin = 'default';
protected function canAppendChild() {
return false;
}
public function setPreviewURI($preview_uri) {
$this->previewURI = $preview_uri;
return $this;
}
public function setControlID($control_id) {
$this->controlID = $control_id;
return $this;
}
public function setHeader($header) {
$this->header = $header;
return $this;
}
public function setLoadingText($loading_text) {
$this->loadingText = $loading_text;
return $this;
}
public function setSkin($skin) {
static $skins = array(
'default' => true,
'document' => true,
);
if (empty($skins[$skin])) {
$valid = implode(', ', array_keys($skins));
throw new Exception("Invalid skin '{$skin}'. Valid skins are: {$valid}.");
}
$this->skin = $skin;
return $this;
}
public function getTagName() {
return 'div';
}
public function getTagAttributes() {
$classes = array();
$classes[] = 'phui-remarkup-preview';
if ($this->skin) {
$classes[] = 'phui-remarkup-preview-skin-'.$this->skin;
}
return array(
'class' => $classes,
);
}
protected function getTagContent() {
if ($this->previewURI === null) {
throw new Exception("Call setPreviewURI() before rendering!");
}
if ($this->controlID === null) {
throw new Exception("Call setControlID() before rendering!");
}
$preview_id = celerity_generate_unique_node_id();
require_celerity_resource('phui-remarkup-preview-css');
Javelin::initBehavior(
'remarkup-preview',
array(
'previewID' => $preview_id,
'controlID' => $this->controlID,
'uri' => $this->previewURI,
));
$loading = phutil_tag(
'div',
array(
'class' => 'phui-preview-loading-text',
),
nonempty($this->loadingText, pht('Loading preview...')));
$header = null;
if ($this->header) {
$header = phutil_tag(
'div',
array(
'class' => 'phui-preview-header',
),
$this->header);
}
$preview = phutil_tag(
'div',
array(
'id' => $preview_id,
'class' => 'phabricator-remarkup',
),
$loading);
$content = array($header, $preview);
switch ($this->skin) {
case 'document':
$content = id(new PHUIDocumentView())
->appendChild($content);
break;
default:
$content = id(new PHUIBoxView())
->appendChild($content)
->setBorder(true)
->addMargin(PHUI::MARGIN_LARGE)
->addPadding(PHUI::PADDING_LARGE)
->addClass('phui-panel-preview');
break;
}
return $content;
}
}