@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
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Use PHUIRemarkupPreviewView in Phame

Summary: Reuse PHUIMarkupPreviewView in Phame for consistency, less custom code. Also, doesn't work (JS issue).

Test Plan: New Post, Edit Post, Save Post

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin

Differential Revision: https://secure.phabricator.com/D14552

+16 -67
+8 -8
resources/celerity/map.php
··· 402 402 'rsrc/js/application/owners/OwnersPathEditor.js' => 'aa1733d0', 403 403 'rsrc/js/application/owners/owners-path-editor.js' => '7a68dda3', 404 404 'rsrc/js/application/passphrase/passphrase-credential-control.js' => '3cb0b2fc', 405 - 'rsrc/js/application/phame/phame-post-preview.js' => 'be807912', 405 + 'rsrc/js/application/phame/phame-post-preview.js' => 'd6bba572', 406 406 'rsrc/js/application/pholio/behavior-pholio-mock-edit.js' => '246dc085', 407 407 'rsrc/js/application/pholio/behavior-pholio-mock-view.js' => 'fbe497e7', 408 408 'rsrc/js/application/phortune/behavior-stripe-payment-form.js' => '3f5d6dbf', ··· 637 637 'javelin-behavior-phabricator-transaction-comment-form' => 'b23b49e6', 638 638 'javelin-behavior-phabricator-transaction-list' => '13c739ea', 639 639 'javelin-behavior-phabricator-watch-anchor' => '9f36c42d', 640 - 'javelin-behavior-phame-post-preview' => 'be807912', 640 + 'javelin-behavior-phame-post-preview' => 'd6bba572', 641 641 'javelin-behavior-pholio-mock-edit' => '246dc085', 642 642 'javelin-behavior-pholio-mock-view' => 'fbe497e7', 643 643 'javelin-behavior-phui-dropdown-menu' => '54733475', ··· 1765 1765 'javelin-util', 1766 1766 'javelin-request', 1767 1767 ), 1768 - 'be807912' => array( 1769 - 'javelin-behavior', 1770 - 'javelin-dom', 1771 - 'javelin-util', 1772 - 'phabricator-shaped-request', 1773 - ), 1774 1768 'c1700f6f' => array( 1775 1769 'javelin-install', 1776 1770 'javelin-util', ··· 1850 1844 'javelin-behavior', 1851 1845 'javelin-dom', 1852 1846 'javelin-stratcom', 1847 + ), 1848 + 'd6bba572' => array( 1849 + 'javelin-behavior', 1850 + 'javelin-dom', 1851 + 'javelin-util', 1852 + 'phabricator-shaped-request', 1853 1853 ), 1854 1854 'd75709e6' => array( 1855 1855 'javelin-behavior',
-2
src/__phutil_library_map__.php
··· 3310 3310 'PhamePostMailReceiver' => 'applications/phame/mail/PhamePostMailReceiver.php', 3311 3311 'PhamePostNewController' => 'applications/phame/controller/post/PhamePostNewController.php', 3312 3312 'PhamePostNotLiveController' => 'applications/phame/controller/post/PhamePostNotLiveController.php', 3313 - 'PhamePostPreviewController' => 'applications/phame/controller/post/PhamePostPreviewController.php', 3314 3313 'PhamePostPublishController' => 'applications/phame/controller/post/PhamePostPublishController.php', 3315 3314 'PhamePostQuery' => 'applications/phame/query/PhamePostQuery.php', 3316 3315 'PhamePostReplyHandler' => 'applications/phame/mail/PhamePostReplyHandler.php', ··· 7627 7626 'PhamePostMailReceiver' => 'PhabricatorObjectMailReceiver', 7628 7627 'PhamePostNewController' => 'PhamePostController', 7629 7628 'PhamePostNotLiveController' => 'PhamePostController', 7630 - 'PhamePostPreviewController' => 'PhamePostController', 7631 7629 'PhamePostPublishController' => 'PhamePostController', 7632 7630 'PhamePostQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 7633 7631 'PhamePostReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler',
+1 -1
src/applications/phame/application/PhabricatorPhameApplication.php
··· 50 50 'publish/(?P<id>\d+)/' => 'PhamePostPublishController', 51 51 'unpublish/(?P<id>\d+)/' => 'PhamePostUnpublishController', 52 52 'notlive/(?P<id>\d+)/' => 'PhamePostNotLiveController', 53 - 'preview/' => 'PhamePostPreviewController', 53 + 'preview/' => 'PhabricatorMarkupPreviewController', 54 54 'framed/(?P<id>\d+)/' => 'PhamePostFramedController', 55 55 'new/' => 'PhamePostNewController', 56 56 'move/(?P<id>\d+)/' => 'PhamePostNewController',
+6 -16
src/applications/phame/controller/post/PhamePostEditController.php
··· 175 175 ->addCancelButton($cancel_uri) 176 176 ->setValue($submit_button)); 177 177 178 - $header = id(new PHUIHeaderView()) 179 - ->setHeader(pht('%s (Post Preview)', $title)); 180 - 181 - $container = id(new PHUIBoxView()) 182 - ->setID('post-preview'); 183 - 184 - $document = id(new PHUIDocumentViewPro()) 185 - ->setHeader($header) 186 - ->appendChild($container); 187 - 188 - $preview_panel = id(new PHUIObjectBoxView()) 189 - ->appendChild($document); 178 + $preview = id(new PHUIRemarkupPreviewPanel()) 179 + ->setHeader($post->getTitle()) 180 + ->setPreviewURI($this->getApplicationURI('post/preview/')) 181 + ->setControlID('post-body') 182 + ->setPreviewType(PHUIRemarkupPreviewPanel::DOCUMENT); 190 183 191 184 Javelin::initBehavior( 192 185 'phame-post-preview', 193 186 array( 194 - 'preview' => 'post-preview', 195 - 'body' => 'post-body', 196 187 'title' => 'post-title', 197 188 'phame_title' => 'post-phame-title', 198 - 'uri' => '/phame/post/preview/', 199 189 )); 200 190 201 191 $form_box = id(new PHUIObjectBoxView()) ··· 214 204 ->appendChild( 215 205 array( 216 206 $form_box, 217 - $preview_panel, 207 + $preview, 218 208 )); 219 209 } 220 210
-26
src/applications/phame/controller/post/PhamePostPreviewController.php
··· 1 - <?php 2 - 3 - final class PhamePostPreviewController extends PhamePostController { 4 - 5 - protected function getSideNavFilter() { 6 - return null; 7 - } 8 - 9 - public function handleRequest(AphrontRequest $request) { 10 - $viewer = $request->getViewer(); 11 - $body = $request->getStr('body'); 12 - 13 - $post = id(new PhamePost()) 14 - ->setBody($body); 15 - 16 - $content = PhabricatorMarkupEngine::renderOneObject( 17 - $post, 18 - PhamePost::MARKUP_FIELD_BODY, 19 - $viewer); 20 - 21 - $content = phutil_tag_div('phabricator-remarkup', $content); 22 - 23 - return id(new AphrontAjaxResponse())->setContent($content); 24 - } 25 - 26 - }
+1 -1
src/view/phui/PHUIRemarkupPreviewPanel.php
··· 103 103 104 104 } else if ($this->previewType == self::DOCUMENT) { 105 105 $header = id(new PHUIHeaderView()) 106 - ->setHeader(pht('%s (Document Preview)', $this->header)); 106 + ->setHeader(pht('%s (Preview)', $this->header)); 107 107 108 108 $content = id(new PHUIDocumentViewPro()) 109 109 ->setHeader($header)
-13
webroot/rsrc/js/application/phame/phame-post-preview.js
··· 8 8 9 9 JX.behavior('phame-post-preview', function(config) { 10 10 11 - var body = JX.$(config.body); 12 11 var title = JX.$(config.title); 13 12 var phame_title = JX.$(config.phame_title); 14 13 var sync_titles = true; ··· 54 53 return s; 55 54 }; 56 55 57 - var callback = function(r) { 58 - JX.DOM.setContent(JX.$(config.preview), JX.$H(r)); 59 - }; 60 - 61 56 var getdata = function() { 62 57 return { 63 - body : body.value, 64 58 title : title.value, 65 59 phame_title : phame_title.value 66 60 }; 67 61 }; 68 62 69 - var request = new JX.PhabricatorShapedRequest(config.uri, callback, getdata); 70 - var trigger = JX.bind(request, request.trigger); 71 - 72 - JX.DOM.listen(body, 'keydown', null, trigger); 73 - JX.DOM.listen(title, 'keydown', null, trigger); 74 63 JX.DOM.listen(title, 'keyup', null, titleCallback); 75 - JX.DOM.listen(phame_title, 'keydown', null, trigger); 76 64 JX.DOM.listen(phame_title, 'keyup', null, phameTitleKeyupCallback); 77 65 JX.DOM.listen(phame_title, 'blur', null, phameTitleBlurCallback); 78 - request.start(); 79 66 80 67 });