diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 4f11a0fc87..eab3d46eb7 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -1404,6 +1404,7 @@ phutil_register_library_map(array( 'PholioController' => 'applications/pholio/controller/PholioController.php', 'PholioDAO' => 'applications/pholio/storage/PholioDAO.php', 'PholioImage' => 'applications/pholio/storage/PholioImage.php', + 'PholioInlineSaveController' => 'applications/pholio/controller/PholioInlineSaveController.php', 'PholioMock' => 'applications/pholio/storage/PholioMock.php', 'PholioMockCommentController' => 'applications/pholio/controller/PholioMockCommentController.php', 'PholioMockEditController' => 'applications/pholio/controller/PholioMockEditController.php', @@ -2816,6 +2817,7 @@ phutil_register_library_map(array( 0 => 'PholioDAO', 1 => 'PhabricatorMarkupInterface', ), + 'PholioInlineSaveController' => 'PholioController', 'PholioMock' => array( 0 => 'PholioDAO', diff --git a/src/applications/pholio/application/PhabricatorApplicationPholio.php b/src/applications/pholio/application/PhabricatorApplicationPholio.php index 5948f43c3d..10e4cafb07 100644 --- a/src/applications/pholio/application/PhabricatorApplicationPholio.php +++ b/src/applications/pholio/application/PhabricatorApplicationPholio.php @@ -43,6 +43,7 @@ final class PhabricatorApplicationPholio extends PhabricatorApplication { 'new/' => 'PholioMockEditController', 'edit/(?P\d+)/' => 'PholioMockEditController', 'comment/(?P\d+)/' => 'PholioMockCommentController', + 'inline/(?P\d+)/' => 'PholioInlineSaveController', ), ); } diff --git a/src/applications/pholio/controller/PholioInlineSaveController.php b/src/applications/pholio/controller/PholioInlineSaveController.php new file mode 100644 index 0000000000..5db75f6931 --- /dev/null +++ b/src/applications/pholio/controller/PholioInlineSaveController.php @@ -0,0 +1,54 @@ +getRequest(); + $user = $request->getUser(); + + $mock = id(new PholioMockQuery()) + ->setViewer($user) + ->requireCapabilities( + array( + PhabricatorPolicyCapability::CAN_VIEW, + PhabricatorPolicyCapability::CAN_EDIT, + )) + ->withIDs(array($request->getInt('mockID'))) + ->executeOne(); + + if (!$mock) { + return new Aphront404Response(); + } + + $draft = id(new PholioTransactionComment()); + $draft->setImageID($request->getInt('imageID')); + $draft->setX($request->getInt('startX')); + $draft->setY($request->getInt('startY')); + + $draft->setCommentVersion(1); + $draft->setAuthorPHID($user->getPHID()); + $draft->setEditPolicy($user->getPHID()); + $draft->setViewPolicy(PhabricatorPolicies::POLICY_PUBLIC); + + $content_source = PhabricatorContentSource::newForSource( + PhabricatorContentSource::SOURCE_WEB, + array( + 'ip' => $request->getRemoteAddr(), + )); + + $draft->setContentSource($content_source); + + $draft->setWidth($request->getInt('endX') - $request->getInt('startX')); + $draft->setHeight($request->getInt('endY') - $request->getInt('startY')); + + $draft->setContent($request->getStr('comment')); + + $draft->save(); + + return id(new AphrontAjaxResponse())->setContent(array()); + } + +} diff --git a/src/applications/pholio/view/PholioMockImagesView.php b/src/applications/pholio/view/PholioMockImagesView.php index c6f8d1325d..1f29b39db6 100644 --- a/src/applications/pholio/view/PholioMockImagesView.php +++ b/src/applications/pholio/view/PholioMockImagesView.php @@ -15,7 +15,9 @@ final class PholioMockImagesView extends AphrontView { $main_image_id = celerity_generate_unique_node_id(); require_celerity_resource('javelin-behavior-pholio-mock-view'); - $config = array('mainID' => $main_image_id); + $config = array( + 'mainID' => $main_image_id, + 'mockID' => $this->mock->getID()); Javelin::initBehavior('pholio-mock-view', $config); $mockview = ""; 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 d9c438eb80..afeabe579a 100644 --- a/webroot/rsrc/js/application/pholio/behavior-pholio-mock-view.js +++ b/webroot/rsrc/js/application/pholio/behavior-pholio-mock-view.js @@ -113,11 +113,24 @@ JX.behavior('pholio-mock-view', function(config) { selection.title = comment; - console.log("ImageID: " + imageData['imageID'] + - ", coords: (" + Math.min(startPos.x, endPos.x) + "," + - Math.min(startPos.y, endPos.y) + ") -> (" + - Math.max(startPos.x,endPos.x) + "," + Math.max(startPos.y,endPos.y) + - "), comment: " + comment); + var saveURL = "/pholio/inline/" + imageData['imageID'] + "/"; + + var inlineComment = new JX.Request(saveURL, function(r) { + + }); + + var commentToAdd = { + mockID: config.mockID, + imageID: imageData['imageID'], + startX: Math.min(startPos.x, endPos.x), + startY: Math.min(startPos.y, endPos.y), + endX: Math.max(startPos.x,endPos.x), + endY: Math.max(startPos.y,endPos.y), + comment: comment}; + + + inlineComment.addData(commentToAdd); + inlineComment.send(); });