Skip to content

Commit f5ff10f

Browse files
author
epriestley
committedDec 22, 2015
Put inline previews in remarkup textareas
Summary: Ref T3967. This gives us a reasonable baseline for doing remarkup previews inline in all contexts, and works in weird/constrained context including: - inline comments; - conpherence; and - custom fields. It would be nicer to go beyond this in contexts like Phame posts, but this is a start, at least. Test Plan: {F1040877} {F1040878} Reviewers: chad Reviewed By: chad Maniphest Tasks: T3967 Differential Revision: https://secure.phabricator.com/D14855
1 parent 551732b commit f5ff10f

File tree

7 files changed

+195
-31
lines changed

7 files changed

+195
-31
lines changed
 

‎resources/celerity/map.php

+15-15
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
*/
88
return array(
99
'names' => array(
10-
'core.pkg.css' => '4cf32aa0',
11-
'core.pkg.js' => '821768c9',
10+
'core.pkg.css' => '1a2d5480',
11+
'core.pkg.js' => 'cf262309',
1212
'darkconsole.pkg.js' => 'e7393ebb',
1313
'differential.pkg.css' => '2de124c9',
1414
'differential.pkg.js' => '64e69521',
@@ -104,7 +104,7 @@
104104
'rsrc/css/application/tokens/tokens.css' => '3d0f239e',
105105
'rsrc/css/application/uiexample/example.css' => '528b19de',
106106
'rsrc/css/core/core.css' => 'a76cefc9',
107-
'rsrc/css/core/remarkup.css' => '275e362f',
107+
'rsrc/css/core/remarkup.css' => '72024fc6',
108108
'rsrc/css/core/syntax.css' => '9fd11da8',
109109
'rsrc/css/core/z-index.css' => '57ddcaa2',
110110
'rsrc/css/diviner/diviner-shared.css' => 'aa3656aa',
@@ -487,7 +487,7 @@
487487
'rsrc/js/core/behavior-object-selector.js' => '49b73b36',
488488
'rsrc/js/core/behavior-oncopy.js' => '2926fff2',
489489
'rsrc/js/core/behavior-phabricator-nav.js' => '56a1ca03',
490-
'rsrc/js/core/behavior-phabricator-remarkup-assist.js' => '461fd61b',
490+
'rsrc/js/core/behavior-phabricator-remarkup-assist.js' => 'ecddcbe2',
491491
'rsrc/js/core/behavior-refresh-csrf.js' => 'ab2f381b',
492492
'rsrc/js/core/behavior-remarkup-preview.js' => 'f7379f45',
493493
'rsrc/js/core/behavior-reorder-applications.js' => '76b9fc3e',
@@ -640,7 +640,7 @@
640640
'javelin-behavior-phabricator-notification-example' => '8ce821c5',
641641
'javelin-behavior-phabricator-object-selector' => '49b73b36',
642642
'javelin-behavior-phabricator-oncopy' => '2926fff2',
643-
'javelin-behavior-phabricator-remarkup-assist' => '461fd61b',
643+
'javelin-behavior-phabricator-remarkup-assist' => 'ecddcbe2',
644644
'javelin-behavior-phabricator-reveal-content' => '60821bc7',
645645
'javelin-behavior-phabricator-search-typeahead' => '048330fa',
646646
'javelin-behavior-phabricator-show-older-transactions' => 'dbbf48b6',
@@ -759,7 +759,7 @@
759759
'phabricator-object-selector-css' => '85ee8ce6',
760760
'phabricator-phtize' => 'd254d646',
761761
'phabricator-prefab' => '666c80c5',
762-
'phabricator-remarkup-css' => '275e362f',
762+
'phabricator-remarkup-css' => '72024fc6',
763763
'phabricator-search-results-css' => '7dea472c',
764764
'phabricator-shaped-request' => '7cbe244b',
765765
'phabricator-side-menu-view-css' => 'bec2458e',
@@ -1100,15 +1100,6 @@
11001100
'javelin-behavior',
11011101
'javelin-dom',
11021102
),
1103-
'461fd61b' => array(
1104-
'javelin-behavior',
1105-
'javelin-stratcom',
1106-
'javelin-dom',
1107-
'phabricator-phtize',
1108-
'phabricator-textareautils',
1109-
'javelin-workflow',
1110-
'javelin-vector',
1111-
),
11121103
'469c0d9e' => array(
11131104
'javelin-behavior',
11141105
'javelin-dom',
@@ -1961,6 +1952,15 @@
19611952
'phabricator-phtize',
19621953
'javelin-dom',
19631954
),
1955+
'ecddcbe2' => array(
1956+
'javelin-behavior',
1957+
'javelin-stratcom',
1958+
'javelin-dom',
1959+
'phabricator-phtize',
1960+
'phabricator-textareautils',
1961+
'javelin-workflow',
1962+
'javelin-vector',
1963+
),
19641964
'edd1ba66' => array(
19651965
'javelin-behavior',
19661966
'javelin-stratcom',

‎src/__phutil_library_map__.php

+2
Original file line numberDiff line numberDiff line change
@@ -1644,6 +1644,7 @@
16441644
'PhabricatorApplicationTransactionNoEffectResponse' => 'applications/transactions/response/PhabricatorApplicationTransactionNoEffectResponse.php',
16451645
'PhabricatorApplicationTransactionPublishWorker' => 'applications/transactions/worker/PhabricatorApplicationTransactionPublishWorker.php',
16461646
'PhabricatorApplicationTransactionQuery' => 'applications/transactions/query/PhabricatorApplicationTransactionQuery.php',
1647+
'PhabricatorApplicationTransactionRemarkupPreviewController' => 'applications/transactions/controller/PhabricatorApplicationTransactionRemarkupPreviewController.php',
16471648
'PhabricatorApplicationTransactionReplyHandler' => 'applications/transactions/replyhandler/PhabricatorApplicationTransactionReplyHandler.php',
16481649
'PhabricatorApplicationTransactionResponse' => 'applications/transactions/response/PhabricatorApplicationTransactionResponse.php',
16491650
'PhabricatorApplicationTransactionShowOlderController' => 'applications/transactions/controller/PhabricatorApplicationTransactionShowOlderController.php',
@@ -5760,6 +5761,7 @@
57605761
'PhabricatorApplicationTransactionNoEffectResponse' => 'AphrontProxyResponse',
57615762
'PhabricatorApplicationTransactionPublishWorker' => 'PhabricatorWorker',
57625763
'PhabricatorApplicationTransactionQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
5764+
'PhabricatorApplicationTransactionRemarkupPreviewController' => 'PhabricatorApplicationTransactionController',
57635765
'PhabricatorApplicationTransactionReplyHandler' => 'PhabricatorMailReplyHandler',
57645766
'PhabricatorApplicationTransactionResponse' => 'AphrontProxyResponse',
57655767
'PhabricatorApplicationTransactionShowOlderController' => 'PhabricatorApplicationTransactionController',

‎src/applications/transactions/application/PhabricatorTransactionsApplication.php

+2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ public function getRoutes() {
3333
=> 'PhabricatorApplicationTransactionShowOlderController',
3434
'(?P<value>old|new)/(?<phid>[^/]+)/'
3535
=> 'PhabricatorApplicationTransactionValueController',
36+
'remarkuppreview/'
37+
=> 'PhabricatorApplicationTransactionRemarkupPreviewController',
3638
'editengine/' => array(
3739
$this->getQueryRoutePattern()
3840
=> 'PhabricatorEditEngineListController',
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
final class PhabricatorApplicationTransactionRemarkupPreviewController
4+
extends PhabricatorApplicationTransactionController {
5+
6+
public function shouldAllowPublic() {
7+
return true;
8+
}
9+
10+
public function handleRequest(AphrontRequest $request) {
11+
$viewer = $this->getViewer();
12+
13+
$corpus = $request->getStr('corpus');
14+
15+
$remarkup = new PHUIRemarkupView($viewer, $corpus);
16+
17+
$content = array(
18+
'content' => hsprintf('%s', $remarkup),
19+
);
20+
21+
return id(new AphrontAjaxResponse())
22+
->setContent($content);
23+
}
24+
25+
}

‎src/view/form/control/PhabricatorRemarkupControl.php

+19-4
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ protected function renderInput() {
4242
));
4343
}
4444

45+
$root_id = celerity_generate_unique_node_id();
46+
4547
Javelin::initBehavior(
4648
'phabricator-remarkup-assist',
4749
array(
@@ -56,6 +58,7 @@ protected function renderInput() {
5658
'URL' => pht('URL'),
5759
),
5860
'disabled' => $this->getDisabled(),
61+
'rootID' => $root_id,
5962
));
6063
Javelin::initBehavior('phabricator-tooltips', array());
6164

@@ -114,11 +117,22 @@ protected function renderInput() {
114117
);
115118
}
116119

120+
$actions['fa-eye'] = array(
121+
'tip' => pht('Preview'),
122+
'align' => 'right',
123+
);
124+
125+
$actions[] = array(
126+
'spacer' => true,
127+
'align' => 'right',
128+
);
129+
117130
$actions['fa-life-bouy'] = array(
118-
'tip' => pht('Help'),
119-
'align' => 'right',
120-
'href' => PhabricatorEnv::getDoclink('Remarkup Reference'),
121-
);
131+
'tip' => pht('Help'),
132+
'align' => 'right',
133+
'href' => PhabricatorEnv::getDoclink('Remarkup Reference'),
134+
);
135+
122136

123137
if (!$this->disableFullScreen) {
124138
$actions[] = array(
@@ -230,6 +244,7 @@ protected function renderInput() {
230244
array(
231245
'sigil' => 'remarkup-assist-control',
232246
'class' => $this->getDisabled() ? 'disabled-control' : null,
247+
'id' => $root_id,
233248
),
234249
array(
235250
$buttons,

‎webroot/rsrc/css/core/remarkup.css

+33
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,7 @@ var.remarkup-assist-textarea {
498498
height: auto;
499499
border-width: 1px 0 0 0;
500500
outline: none;
501+
resize: none;
501502
}
502503

503504
.phabricator-image-macro-hero {
@@ -523,3 +524,35 @@ var.remarkup-assist-textarea {
523524
background-color: {$lightviolet};
524525
padding: 0 4px;
525526
}
527+
528+
.remarkup-inline-preview {
529+
display: block;
530+
position: relative;
531+
background: #fff;
532+
overflow-y: auto;
533+
box-sizing: border-box;
534+
width: 100%;
535+
border: 1px solid {$sky};
536+
resize: vertical;
537+
padding: 4px 6px;
538+
}
539+
540+
.remarkup-control-fullscreen-mode .remarkup-inline-preview {
541+
resize: none;
542+
}
543+
544+
.remarkup-inline-preview * {
545+
resize: none;
546+
}
547+
548+
.remarkup-assist-button.preview-active {
549+
background: {$sky};
550+
}
551+
552+
.remarkup-assist-button.preview-active .phui-icon-view {
553+
color: #ffffff;
554+
}
555+
556+
.remarkup-assist-button.preview-active:hover .phui-icon-view {
557+
color: {$lightsky};
558+
}

0 commit comments

Comments
 (0)
Failed to load comments.