From bed728f23e8e2a45d40f3a8f14ca8c914bd5798c Mon Sep 17 00:00:00 2001 From: Lauri-Henrik Jalonen Date: Fri, 8 Feb 2013 07:24:17 -0800 Subject: [PATCH] Show saved inline comments Summary: Saved inline comments are now shown for images. Test Plan: Verified that inline comments are loaded and shown. Reviewers: epriestley CC: aran, Korvin Maniphest Tasks: T2446 Differential Revision: https://secure.phabricator.com/D4866 --- src/__phutil_library_map__.php | 2 + .../PhabricatorApplicationPholio.php | 3 +- .../controller/PholioInlineController.php | 38 +++++++++++++++++++ .../pholio/view/PholioMockImagesView.php | 2 +- .../pholio/behavior-pholio-mock-view.js | 33 +++++++++++++++- 5 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 src/applications/pholio/controller/PholioInlineController.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index add675ee98..49650e27dd 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -1410,6 +1410,7 @@ phutil_register_library_map(array( 'PholioController' => 'applications/pholio/controller/PholioController.php', 'PholioDAO' => 'applications/pholio/storage/PholioDAO.php', 'PholioImage' => 'applications/pholio/storage/PholioImage.php', + 'PholioInlineController' => 'applications/pholio/controller/PholioInlineController.php', 'PholioInlineSaveController' => 'applications/pholio/controller/PholioInlineSaveController.php', 'PholioMock' => 'applications/pholio/storage/PholioMock.php', 'PholioMockCommentController' => 'applications/pholio/controller/PholioMockCommentController.php', @@ -2829,6 +2830,7 @@ phutil_register_library_map(array( 0 => 'PholioDAO', 1 => 'PhabricatorMarkupInterface', ), + 'PholioInlineController' => 'PholioController', 'PholioInlineSaveController' => 'PholioController', 'PholioMock' => array( diff --git a/src/applications/pholio/application/PhabricatorApplicationPholio.php b/src/applications/pholio/application/PhabricatorApplicationPholio.php index 10e4cafb07..f341b427dc 100644 --- a/src/applications/pholio/application/PhabricatorApplicationPholio.php +++ b/src/applications/pholio/application/PhabricatorApplicationPholio.php @@ -43,7 +43,8 @@ final class PhabricatorApplicationPholio extends PhabricatorApplication { 'new/' => 'PholioMockEditController', 'edit/(?P\d+)/' => 'PholioMockEditController', 'comment/(?P\d+)/' => 'PholioMockCommentController', - 'inline/(?P\d+)/' => 'PholioInlineSaveController', + 'inline/(?P\d+)/' => 'PholioInlineController', + 'inline/save/' => 'PholioInlineSaveController', ), ); } diff --git a/src/applications/pholio/controller/PholioInlineController.php b/src/applications/pholio/controller/PholioInlineController.php new file mode 100644 index 0000000000..618ff863ee --- /dev/null +++ b/src/applications/pholio/controller/PholioInlineController.php @@ -0,0 +1,38 @@ +id = $data['id']; + } + + public function processRequest() { + $request = $this->getRequest(); + $user = $request->getUser(); + + $inline_comments = id(new PholioTransactionComment())->loadAllWhere( + 'imageid = %d AND transactionphid IS NOT NULL', + $this->id + ); + + $inlines = array(); + foreach ($inline_comments as $inline_comment) { + $inlines[] = array( + 'phid' => $inline_comment->getPHID(), + 'imageID' => $inline_comment->getImageID(), + 'x' => $inline_comment->getX(), + 'y' => $inline_comment->getY(), + 'width' => $inline_comment->getWidth(), + 'height' => $inline_comment->getHeight(), + 'content' => $inline_comment->getContent()); + } + + return id(new AphrontAjaxResponse())->setContent($inlines); + } + +} diff --git a/src/applications/pholio/view/PholioMockImagesView.php b/src/applications/pholio/view/PholioMockImagesView.php index 1f29b39db6..6500a8e78a 100644 --- a/src/applications/pholio/view/PholioMockImagesView.php +++ b/src/applications/pholio/view/PholioMockImagesView.php @@ -24,7 +24,7 @@ final class PholioMockImagesView extends AphrontView { $main_image = head($this->mock->getImages()); - $main_image_tag = javelin_render_tag( + $main_image_tag = javelin_render_tag( 'img', array( 'id' => $main_image_id, diff --git a/webroot/rsrc/js/application/pholio/behavior-pholio-mock-view.js b/webroot/rsrc/js/application/pholio/behavior-pholio-mock-view.js index 7b0e0fb1d1..22ea7ab763 100644 --- a/webroot/rsrc/js/application/pholio/behavior-pholio-mock-view.js +++ b/webroot/rsrc/js/application/pholio/behavior-pholio-mock-view.js @@ -35,6 +35,7 @@ JX.behavior('pholio-mock-view', function(config) { main.src = data.fullSizeURI; JX.DOM.setContent(wrapper,main); + load_inline_comments(); }); @@ -123,7 +124,7 @@ JX.behavior('pholio-mock-view', function(config) { selection_fill.title = comment; - var saveURL = "/pholio/inline/" + imageData['imageID'] + "/"; + var saveURL = "/pholio/inline/save/"; var inlineComment = new JX.Request(saveURL, function(r) { @@ -144,6 +145,36 @@ JX.behavior('pholio-mock-view', function(config) { }); + function load_inline_comments() { + var data = JX.Stratcom.getData(JX.$(config.mainID)); + + var inline_comments_url = "/pholio/inline/" + data['imageID'] + "/"; + var inline_comments = new JX.Request(inline_comments_url, function(r) { + + if (r.length > 0) { + for(i=0; i < r.length; i++) { + var inlineSelection = JX.$N( + 'div', + { + id: r[i].phid, + className: 'pholio-mock-select-border', + title: r[i].content + }); + + JX.DOM.appendContent(wrapper, inlineSelection); + + JX.$V(r[i].x, r[i].y).setPos(inlineSelection); + JX.$V(r[i].width, r[i].height) + .setDim(inlineSelection); + } + } + }); + + inline_comments.send(); + } + + load_inline_comments(); + });