diff --git a/src/applications/phriction/controller/PhrictionEditController.php b/src/applications/phriction/controller/PhrictionEditController.php --- a/src/applications/phriction/controller/PhrictionEditController.php +++ b/src/applications/phriction/controller/PhrictionEditController.php @@ -117,6 +117,19 @@ $v_cc = $request->getArr('cc'); $v_projects = $request->getArr('projects'); $v_space = $request->getStr('spacePHID'); + $file_phids_to_attach = []; + + $content_metadata = $request->getStr('content_metadata'); + if ($content_metadata) { + $content_metadata = phutil_json_decode($content_metadata); + if ( + isset($content_metadata['attachedFilePHIDs']) && + is_array($content_metadata['attachedFilePHIDs']) + ) { + $file_phids_to_attach = $content_metadata['attachedFilePHIDs']; + } + } + if ($save_as_draft) { $edit_type = PhrictionDocumentDraftTransaction::TRANSACTIONTYPE; @@ -134,9 +147,27 @@ $xactions[] = id(new PhrictionTransaction()) ->setTransactionType(PhrictionDocumentTitleTransaction::TRANSACTIONTYPE) ->setNewValue($title); - $xactions[] = id(new PhrictionTransaction()) + $content_xaction = id(new PhrictionTransaction()) ->setTransactionType($edit_type) ->setNewValue($content_text); + + if ($file_phids_to_attach) { + $attached_file_phids = []; + foreach ($file_phids_to_attach as $phid) { + $attached_file_phids[$phid] = $phid; + } + + $metadata_object = array( + 'remarkup.control' => array( + 'attachedFilePHIDs' => $attached_file_phids, + ), + ); + + $content_xaction->setMetadata($metadata_object); + } + + $xactions[] = $content_xaction; + $xactions[] = id(new PhrictionTransaction()) ->setTransactionType(PhabricatorTransactions::TYPE_VIEW_POLICY) ->setNewValue($v_view)