Page MenuHomePhabricator

D14399.diff
No OneTemporary

D14399.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -7,7 +7,7 @@
*/
return array(
'names' => array(
- 'core.pkg.css' => 'e4f1ea81',
+ 'core.pkg.css' => '0689cd7e',
'core.pkg.js' => '47dc9ebb',
'darkconsole.pkg.js' => 'e7393ebb',
'differential.pkg.css' => '2de124c9',
@@ -104,7 +104,7 @@
'rsrc/css/application/tokens/tokens.css' => '3d0f239e',
'rsrc/css/application/uiexample/example.css' => '528b19de',
'rsrc/css/core/core.css' => '78e8d7ea',
- 'rsrc/css/core/remarkup.css' => '2193fc05',
+ 'rsrc/css/core/remarkup.css' => 'ab2396c1',
'rsrc/css/core/syntax.css' => '9fd11da8',
'rsrc/css/core/z-index.css' => '57ddcaa2',
'rsrc/css/diviner/diviner-shared.css' => 'aa3656aa',
@@ -126,10 +126,10 @@
'rsrc/css/phui/phui-box.css' => 'a5bb366d',
'rsrc/css/phui/phui-button.css' => '16020a60',
'rsrc/css/phui/phui-crumbs-view.css' => '414406b5',
- 'rsrc/css/phui/phui-document-pro.css' => '7f3009ce',
- 'rsrc/css/phui/phui-document.css' => 'f841ad0a',
+ 'rsrc/css/phui/phui-document-pro.css' => '5f75ed99',
+ 'rsrc/css/phui/phui-document.css' => '765a9dac',
'rsrc/css/phui/phui-feed-story.css' => 'b7b26d23',
- 'rsrc/css/phui/phui-fontkit.css' => 'c9d63950',
+ 'rsrc/css/phui/phui-fontkit.css' => '9cda225e',
'rsrc/css/phui/phui-form-view.css' => '621b21c5',
'rsrc/css/phui/phui-form.css' => 'afdb2c6e',
'rsrc/css/phui/phui-header-view.css' => '55bb32dd',
@@ -747,7 +747,7 @@
'phabricator-object-selector-css' => '85ee8ce6',
'phabricator-phtize' => 'd254d646',
'phabricator-prefab' => '6920d200',
- 'phabricator-remarkup-css' => '2193fc05',
+ 'phabricator-remarkup-css' => 'ab2396c1',
'phabricator-search-results-css' => '7dea472c',
'phabricator-shaped-request' => '7cbe244b',
'phabricator-side-menu-view-css' => 'bec2458e',
@@ -787,11 +787,11 @@
'phui-calendar-list-css' => 'c1c7f338',
'phui-calendar-month-css' => '476be7e0',
'phui-crumbs-view-css' => '414406b5',
- 'phui-document-view-css' => 'f841ad0a',
- 'phui-document-view-pro-css' => '7f3009ce',
+ 'phui-document-view-css' => '765a9dac',
+ 'phui-document-view-pro-css' => '5f75ed99',
'phui-feed-story-css' => 'b7b26d23',
'phui-font-icon-base-css' => 'ecbbb4c2',
- 'phui-fontkit-css' => 'c9d63950',
+ 'phui-fontkit-css' => '9cda225e',
'phui-form-css' => 'afdb2c6e',
'phui-form-view-css' => '621b21c5',
'phui-header-view-css' => '55bb32dd',
diff --git a/src/applications/phriction/controller/PhrictionDocumentController.php b/src/applications/phriction/controller/PhrictionDocumentController.php
--- a/src/applications/phriction/controller/PhrictionDocumentController.php
+++ b/src/applications/phriction/controller/PhrictionDocumentController.php
@@ -32,6 +32,7 @@
$move_notice = '';
$properties = null;
$content = null;
+ $toc = null;
if (!$document) {
@@ -53,6 +54,7 @@
$page_title = pht('Page Not Found');
} else {
$version = $request->getInt('v');
+
if ($version) {
$content = id(new PhrictionContent())->loadOneWhere(
'documentID = %d AND version = %d',
@@ -74,7 +76,6 @@
$content = id(new PhrictionContent())->load($document->getContentID());
}
$page_title = $content->getTitle();
-
$properties = $this
->buildPropertyListView($document, $content, $slug);
@@ -84,6 +85,8 @@
$current_status == PhrictionChangeType::CHANGE_MOVE_HERE) {
$core_content = $content->renderContent($viewer);
+ $toc = $this->getToc($content);
+
} else if ($current_status == PhrictionChangeType::CHANGE_DELETE) {
$notice = new PHUIInfoView();
$notice->setSeverity(PHUIInfoView::SEVERITY_NOTICE);
@@ -102,7 +105,6 @@
$core_content = $notice->render();
} else if ($current_status == PhrictionChangeType::CHANGE_MOVE_AWAY) {
$new_doc_id = $content->getChangeRef();
-
$slug_uri = null;
// If the new document exists and the viewer can see it, provide a link
@@ -212,11 +214,12 @@
$prop_list->addPropertyList($properties);
}
- $page_content = id(new PHUIDocumentView())
+ $page_content = id(new PHUIDocumentViewPro())
->setHeader($header)
+ ->setPropertyList($prop_list)
+ ->setToc($toc)
->appendChild(
array(
- $prop_list,
$version_note,
$move_notice,
$core_content,
@@ -230,7 +233,8 @@
),
array(
'pageObjects' => array($document->getPHID()),
- 'title' => $page_title,
+ 'title' => $page_title,
+ 'class' => 'pro-white-background',
));
}
@@ -278,6 +282,7 @@
$action_view->addAction(
id(new PhabricatorActionView())
->setName(pht('Edit Document'))
+ ->setDisabled(!$can_edit)
->setIcon('fa-pencil')
->setHref('/phriction/edit/'.$document->getID().'/'));
@@ -285,6 +290,7 @@
$action_view->addAction(
id(new PhabricatorActionView())
->setName(pht('Move Document'))
+ ->setDisabled(!$can_edit)
->setIcon('fa-arrows')
->setHref('/phriction/move/'.$document->getID().'/')
->setWorkflow(true));
@@ -292,6 +298,7 @@
$action_view->addAction(
id(new PhabricatorActionView())
->setName(pht('Delete Document'))
+ ->setDisabled(!$can_edit)
->setIcon('fa-times')
->setHref('/phriction/delete/'.$document->getID().'/')
->setWorkflow(true));
@@ -431,7 +438,7 @@
),
$list)));
- return phutil_tag_div('phui-document-box', $box);
+ return phutil_tag_div('phui-document-view-pro-box', $box);
}
private function renderChildDocumentLink(array $info) {
@@ -454,4 +461,17 @@
return $this->slug;
}
+ protected function getToc(PhrictionContent $content) {
+ $toc = $content->getRenderedTableOfContents();
+ if ($toc) {
+ $toc = phutil_tag_div('phui-document-toc-content', array(
+ phutil_tag_div(
+ 'phui-document-toc-header',
+ pht('Contents')),
+ $toc,
+ ));
+ }
+ return $toc;
+ }
+
}
diff --git a/src/applications/phriction/controller/PhrictionEditController.php b/src/applications/phriction/controller/PhrictionEditController.php
--- a/src/applications/phriction/controller/PhrictionEditController.php
+++ b/src/applications/phriction/controller/PhrictionEditController.php
@@ -268,10 +268,10 @@
->setForm($form);
$preview = id(new PHUIRemarkupPreviewPanel())
- ->setHeader(pht('Document Preview'))
+ ->setHeader($content->getTitle())
->setPreviewURI('/phriction/preview/')
->setControlID('document-textarea')
- ->addClass('phui-document-view');
+ ->setPreviewType(PHUIRemarkupPreviewPanel::DOCUMENT);
$crumbs = $this->buildApplicationCrumbs();
if ($document->getID()) {
diff --git a/src/applications/phriction/storage/PhrictionContent.php b/src/applications/phriction/storage/PhrictionContent.php
--- a/src/applications/phriction/storage/PhrictionContent.php
+++ b/src/applications/phriction/storage/PhrictionContent.php
@@ -17,6 +17,7 @@
protected $slug;
protected $content;
protected $description;
+ protected $renderedTableOfContents;
protected $changeType;
protected $changeRef;
@@ -98,27 +99,25 @@
$output,
PhutilMarkupEngine $engine) {
- $classes = array();
- $classes[] = 'phabricator-remarkup';
- $toc = PhutilRemarkupHeaderBlockRule::renderTableOfContents(
- $engine);
-
- if ($toc) {
- $classes[] = 'remarkup-has-toc';
- $toc = phutil_tag_div('phabricator-remarkup-toc', array(
- phutil_tag_div(
- 'phabricator-remarkup-toc-header',
- pht('Table of Contents')),
- $toc,
- ));
- }
+ $this->renderedTableOfContents =
+ PhutilRemarkupHeaderBlockRule::renderTableOfContents($engine);
return phutil_tag(
'div',
array(
- 'class' => implode(' ', $classes),
+ 'class' => 'phabricator-remarkup',
),
- array($toc, $output));
+ $output);
+ }
+
+ /**
+ * @task markup
+ */
+ public function getRenderedTableOfContents() {
+ if ($this->renderedTableOfContents === null) {
+ throw new PhutilInvalidStateException('didMarkupText');
+ }
+ return $this->renderedTableOfContents;
}
diff --git a/src/view/phui/PHUIDocumentViewPro.php b/src/view/phui/PHUIDocumentViewPro.php
--- a/src/view/phui/PHUIDocumentViewPro.php
+++ b/src/view/phui/PHUIDocumentViewPro.php
@@ -31,7 +31,7 @@
return $this;
}
- public function setToc(PHUIListView $toc) {
+ public function setToc($toc) {
$this->toc = $toc;
return $this;
}
diff --git a/src/view/phui/PHUIRemarkupPreviewPanel.php b/src/view/phui/PHUIRemarkupPreviewPanel.php
--- a/src/view/phui/PHUIRemarkupPreviewPanel.php
+++ b/src/view/phui/PHUIRemarkupPreviewPanel.php
@@ -9,6 +9,9 @@
private $loadingText;
private $controlID;
private $previewURI;
+ private $previewType;
+
+ const DOCUMENT = 'document';
protected function canAppendChild() {
return false;
@@ -34,6 +37,11 @@
return $this;
}
+ public function setPreviewType($type) {
+ $this->previewType = $type;
+ return $this;
+ }
+
protected function getTagName() {
return 'div';
}
@@ -73,16 +81,6 @@
),
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(
@@ -91,7 +89,26 @@
),
$loading);
- $content = array($header, $preview);
+ if (!$this->previewType) {
+ $header = null;
+ if ($this->header) {
+ $header = phutil_tag(
+ 'div',
+ array(
+ 'class' => 'phui-preview-header',
+ ),
+ $this->header);
+ }
+ $content = array($header, $preview);
+
+ } else if ($this->previewType == self::DOCUMENT) {
+ $header = id(new PHUIHeaderView())
+ ->setHeader(pht('%s (Document Preview)', $this->header));
+
+ $content = id(new PHUIDocumentViewPro())
+ ->setHeader($header)
+ ->appendChild($preview);
+ }
return id(new PHUIObjectBoxView())
->appendChild($content)
diff --git a/webroot/rsrc/css/core/remarkup.css b/webroot/rsrc/css/core/remarkup.css
--- a/webroot/rsrc/css/core/remarkup.css
+++ b/webroot/rsrc/css/core/remarkup.css
@@ -155,8 +155,11 @@
margin: 4px 0;
}
-.phabricator-remarkup .remarkup-header + .remarkup-header {
- margin-top: 0px;
+.phabricator-remarkup h3.remarkup-header + h4.remarkup-header {
+ color: {$bluetext};
+ font-weight: normal;
+ margin-bottom: 16px;
+ margin-top: -4px;
}
.phabricator-remarkup blockquote {
@@ -363,12 +366,12 @@
padding-top: 0;
}
-body .phabricator-remarkup > *:first-child,
-body .phabricator-remarkup .remarkup-header + * {
+body .phabricator-standard-page div.phabricator-remarkup *:first-child,
+body .phabricator-standard-page div.phabricator-remarkup .remarkup-header + * {
margin-top: 0;
}
-body .phabricator-remarkup *:last-child {
+body div.phabricator-remarkup *:last-child {
margin-bottom: 0;
}
diff --git a/webroot/rsrc/css/phui/phui-document-pro.css b/webroot/rsrc/css/phui/phui-document-pro.css
--- a/webroot/rsrc/css/phui/phui-document-pro.css
+++ b/webroot/rsrc/css/phui/phui-document-pro.css
@@ -73,6 +73,20 @@
color: #fff;
}
+.phui-document-view-pro .phui-document-toc-content {
+ margin: 4px 12px;
+}
+
+.phui-document-view-pro .phui-document-toc-header {
+ font-weight: bold;
+ color: {$bluetext};
+ margin-bottom: 8px;
+}
+
+.phui-document-view-pro .phui-document-toc-content li {
+ margin: 4px 8px;
+}
+
.phui-document-view-pro .phui-document-content .phabricator-remarkup {
padding: 16px 0;
line-height: 1.7em;
diff --git a/webroot/rsrc/css/phui/phui-document.css b/webroot/rsrc/css/phui/phui-document.css
--- a/webroot/rsrc/css/phui/phui-document.css
+++ b/webroot/rsrc/css/phui/phui-document.css
@@ -122,10 +122,6 @@
display: none;
}
-.device-phone .phui-document-content .phabricator-remarkup-toc {
- width: 120px;
-}
-
.phui-document-content .phabricator-remarkup .remarkup-code-block {
clear: both;
margin: 16px 0;
@@ -139,30 +135,6 @@
background-color: {$lightgreybackground};
}
-.phui-document-view .phabricator-remarkup.remarkup-has-toc {
- position: relative;
- margin-right: 192px;
-}
-
-.phui-document-view .remarkup-has-toc .phabricator-remarkup-toc {
- position: absolute;
- top: 0;
- right: -186px;
- bottom: 0;
- border-left: 1px solid {$thinblueborder};
- padding: 16px 12px;
- margin: 0;
- font-size: 12px;
-}
-
-.device-phone .phui-document-view .phabricator-remarkup.remarkup-has-toc {
- margin-right: 0;
-}
-
-.device-phone .phui-document-view .remarkup-has-toc .phabricator-remarkup-toc {
- display: none;
-}
-
body .phui-document-view .phui-header-shell.phui-bleed-header {
padding: 0;
}
diff --git a/webroot/rsrc/css/phui/phui-fontkit.css b/webroot/rsrc/css/phui/phui-fontkit.css
--- a/webroot/rsrc/css/phui/phui-fontkit.css
+++ b/webroot/rsrc/css/phui/phui-fontkit.css
@@ -26,8 +26,11 @@
font-family: 'Aleo', {$fontfamily};
}
+.phui-document-view .phabricator-remarkup .remarkup-header {
+ margin-bottom: 8px;
+}
+
.phui-document-view .phabricator-remarkup h2.remarkup-header {
padding: 0 24px 8px 0;
- border-bottom: 1px solid {$thinblueborder};
- margin: 32px 0 16px;
+ margin: 32px 0 4px;
}

File Metadata

Mime Type
text/plain
Expires
Mon, May 13, 9:57 PM (3 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6276004
Default Alt Text
D14399.diff (13 KB)

Event Timeline