operation; } public function processRequest() { $request = $this->getRequest(); $user = $request->getUser(); $mock = id(new PholioMockQuery()) ->setViewer($user) ->withIDs(array($request->getInt('mockID'))) ->executeOne(); if (!$mock) { return new Aphront404Response(); } $this->operation = $request->getBool('op'); if ($this->getOperation() == 'save') { $new_content = $request->getStr('comment'); if (strlen(trim($new_content)) == 0) { return id(new AphrontAjaxResponse()) ->setContent(array('success' => false)); } $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($new_content); $draft->save(); $inline_view = id(new PholioInlineCommentView()) ->setInlineComment($draft) ->setEditable(true) ->setHandle( PhabricatorObjectHandleData::loadOneHandle( $user->getPHID(), $user)); return id(new AphrontAjaxResponse()) ->setContent( $draft->toDictionary() + array( 'contentHTML' => $inline_view->render(), )); } else { $dialog = new PholioInlineCommentSaveView(); $dialog->setUser($user); $dialog->setSubmitURI($request->getRequestURI()); $dialog->setTitle(pht('Make inline comment')); $dialog->addHiddenInput('op', 'save'); $dialog->appendChild($this->renderTextArea('')); return id(new AphrontAjaxResponse())->setContent($dialog->render()); } } private function renderTextArea($text) { return javelin_tag( 'textarea', array( 'class' => 'pholio-inline-comment-dialog-textarea', 'name' => 'text', ), $text); } }