Page MenuHomePhabricator

D9733.id23367.diff
No OneTemporary

D9733.id23367.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -863,6 +863,7 @@
'LegalpadDocumentEditController' => 'applications/legalpad/controller/LegalpadDocumentEditController.php',
'LegalpadDocumentEditor' => 'applications/legalpad/editor/LegalpadDocumentEditor.php',
'LegalpadDocumentListController' => 'applications/legalpad/controller/LegalpadDocumentListController.php',
+ 'LegalpadDocumentManageController' => 'applications/legalpad/controller/LegalpadDocumentManageController.php',
'LegalpadDocumentQuery' => 'applications/legalpad/query/LegalpadDocumentQuery.php',
'LegalpadDocumentRemarkupRule' => 'applications/legalpad/remarkup/LegalpadDocumentRemarkupRule.php',
'LegalpadDocumentSearchEngine' => 'applications/legalpad/query/LegalpadDocumentSearchEngine.php',
@@ -871,7 +872,6 @@
'LegalpadDocumentSignatureListController' => 'applications/legalpad/controller/LegalpadDocumentSignatureListController.php',
'LegalpadDocumentSignatureQuery' => 'applications/legalpad/query/LegalpadDocumentSignatureQuery.php',
'LegalpadDocumentSignatureVerificationController' => 'applications/legalpad/controller/LegalpadDocumentSignatureVerificationController.php',
- 'LegalpadDocumentViewController' => 'applications/legalpad/controller/LegalpadDocumentViewController.php',
'LegalpadMockMailReceiver' => 'applications/legalpad/mail/LegalpadMockMailReceiver.php',
'LegalpadReplyHandler' => 'applications/legalpad/mail/LegalpadReplyHandler.php',
'LegalpadTransaction' => 'applications/legalpad/storage/LegalpadTransaction.php',
@@ -3615,6 +3615,7 @@
'LegalpadDocumentEditController' => 'LegalpadController',
'LegalpadDocumentEditor' => 'PhabricatorApplicationTransactionEditor',
'LegalpadDocumentListController' => 'LegalpadController',
+ 'LegalpadDocumentManageController' => 'LegalpadController',
'LegalpadDocumentQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'LegalpadDocumentRemarkupRule' => 'PhabricatorRemarkupRuleObject',
'LegalpadDocumentSearchEngine' => 'PhabricatorApplicationSearchEngine',
@@ -3627,7 +3628,6 @@
'LegalpadDocumentSignatureListController' => 'LegalpadController',
'LegalpadDocumentSignatureQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'LegalpadDocumentSignatureVerificationController' => 'LegalpadController',
- 'LegalpadDocumentViewController' => 'LegalpadController',
'LegalpadMockMailReceiver' => 'PhabricatorObjectMailReceiver',
'LegalpadReplyHandler' => 'PhabricatorMailReplyHandler',
'LegalpadTransaction' => 'PhabricatorApplicationTransaction',
diff --git a/src/applications/legalpad/application/PhabricatorApplicationLegalpad.php b/src/applications/legalpad/application/PhabricatorApplicationLegalpad.php
--- a/src/applications/legalpad/application/PhabricatorApplicationLegalpad.php
+++ b/src/applications/legalpad/application/PhabricatorApplicationLegalpad.php
@@ -45,7 +45,7 @@
'create/' => 'LegalpadDocumentEditController',
'edit/(?P<id>\d+)/' => 'LegalpadDocumentEditController',
'comment/(?P<id>\d+)/' => 'LegalpadDocumentCommentController',
- 'view/(?P<id>\d+)/' => 'LegalpadDocumentViewController',
+ 'view/(?P<id>\d+)/' => 'LegalpadDocumentManageController',
'verify/(?P<code>[^/]+)/' =>
'LegalpadDocumentSignatureVerificationController',
'signatures/(?P<id>\d+)/' => 'LegalpadDocumentSignatureListController',
diff --git a/src/applications/legalpad/controller/LegalpadController.php b/src/applications/legalpad/controller/LegalpadController.php
--- a/src/applications/legalpad/controller/LegalpadController.php
+++ b/src/applications/legalpad/controller/LegalpadController.php
@@ -22,18 +22,6 @@
return $nav;
}
- public function buildApplicationCrumbs() {
- $crumbs = parent::buildApplicationCrumbs();
-
- $crumbs->addAction(
- id(new PHUIListItemView())
- ->setName(pht('Create Document'))
- ->setHref($this->getApplicationURI('create/'))
- ->setIcon('fa-plus-square'));
-
- return $crumbs;
- }
-
public function buildApplicationMenu() {
return $this->buildSideNav(true)->getMenu();
}
diff --git a/src/applications/legalpad/controller/LegalpadDocumentListController.php b/src/applications/legalpad/controller/LegalpadDocumentListController.php
--- a/src/applications/legalpad/controller/LegalpadDocumentListController.php
+++ b/src/applications/legalpad/controller/LegalpadDocumentListController.php
@@ -18,4 +18,16 @@
return $this->delegateToController($controller);
}
+ public function buildApplicationCrumbs() {
+ $crumbs = parent::buildApplicationCrumbs();
+
+ $crumbs->addAction(
+ id(new PHUIListItemView())
+ ->setName(pht('Create Document'))
+ ->setHref($this->getApplicationURI('create/'))
+ ->setIcon('fa-plus-square'));
+
+ return $crumbs;
+ }
+
}
diff --git a/src/applications/legalpad/controller/LegalpadDocumentViewController.php b/src/applications/legalpad/controller/LegalpadDocumentManageController.php
rename from src/applications/legalpad/controller/LegalpadDocumentViewController.php
rename to src/applications/legalpad/controller/LegalpadDocumentManageController.php
--- a/src/applications/legalpad/controller/LegalpadDocumentViewController.php
+++ b/src/applications/legalpad/controller/LegalpadDocumentManageController.php
@@ -1,9 +1,6 @@
<?php
-/**
- * @group legalpad
- */
-final class LegalpadDocumentViewController extends LegalpadController {
+final class LegalpadDocumentManageController extends LegalpadController {
private $id;
@@ -15,13 +12,19 @@
$request = $this->getRequest();
$user = $request->getUser();
+ // NOTE: We require CAN_EDIT to view this page.
+
$document = id(new LegalpadDocumentQuery())
->setViewer($user)
->withIDs(array($this->id))
->needDocumentBodies(true)
->needContributors(true)
+ ->requireCapabilities(
+ array(
+ PhabricatorPolicyCapability::CAN_VIEW,
+ PhabricatorPolicyCapability::CAN_EDIT,
+ ))
->executeOne();
-
if (!$document) {
return new Aphront404Response();
}
@@ -83,7 +86,8 @@
$crumbs->setActionList($actions);
$crumbs->addTextCrumb(
$document->getMonogram(),
- $this->getApplicationURI('view/'.$document->getID()));
+ '/'.$document->getMonogram());
+ $crumbs->addTextCrumb(pht('Manage'));
$object_box = id(new PHUIObjectBoxView())
->setHeader($header)
@@ -136,6 +140,12 @@
$actions->addAction(
id(new PhabricatorActionView())
+ ->setIcon('fa-pencil-square')
+ ->setName(pht('View/Sign Document'))
+ ->setHref('/'.$document->getMonogram()));
+
+ $actions->addAction(
+ id(new PhabricatorActionView())
->setIcon('fa-pencil')
->setName(pht('Edit Document'))
->setHref($this->getApplicationURI('/edit/'.$doc_id.'/'))
@@ -144,12 +154,6 @@
$actions->addAction(
id(new PhabricatorActionView())
- ->setIcon('fa-pencil-square')
- ->setName(pht('Sign Document'))
- ->setHref('/'.$document->getMonogram()));
-
- $actions->addAction(
- id(new PhabricatorActionView())
->setIcon('fa-terminal')
->setName(pht('View Signatures'))
->setHref($this->getApplicationURI('/signatures/'.$doc_id.'/')));
diff --git a/src/applications/legalpad/controller/LegalpadDocumentSignController.php b/src/applications/legalpad/controller/LegalpadDocumentSignController.php
--- a/src/applications/legalpad/controller/LegalpadDocumentSignController.php
+++ b/src/applications/legalpad/controller/LegalpadDocumentSignController.php
@@ -14,10 +14,10 @@
public function processRequest() {
$request = $this->getRequest();
- $user = $request->getUser();
+ $viewer = $request->getUser();
$document = id(new LegalpadDocumentQuery())
- ->setViewer($user)
+ ->setViewer($viewer)
->withIDs(array($this->id))
->needDocumentBodies(true)
->executeOne();
@@ -29,10 +29,10 @@
$signer_phid = null;
$signature = null;
$signature_data = array();
- if ($user->isLoggedIn()) {
- $signer_phid = $user->getPHID();
+ if ($viewer->isLoggedIn()) {
+ $signer_phid = $viewer->getPHID();
$signature_data = array(
- 'email' => $user->loadPrimaryEmailAddress());
+ 'email' => $viewer->loadPrimaryEmailAddress());
} else if ($request->isFormPost()) {
$email = new PhutilEmailAddress($request->getStr('email'));
$email_obj = id(new PhabricatorUserEmail())
@@ -41,7 +41,7 @@
return $this->signInResponse();
}
$external_account = id(new PhabricatorExternalAccountQuery())
- ->setViewer($user)
+ ->setViewer($viewer)
->withAccountTypes(array('email'))
->withAccountDomains(array($email->getDomainName()))
->withAccountIDs(array($email->getAddress()))
@@ -54,7 +54,7 @@
if ($signer_phid) {
$signature = id(new LegalpadDocumentSignatureQuery())
- ->setViewer($user)
+ ->setViewer($viewer)
->withDocumentPHIDs(array($document->getPHID()))
->withSignerPHIDs(array($signer_phid))
->withDocumentVersions(array($document->getVersions()))
@@ -132,10 +132,10 @@
}
$verified = LegalpadDocumentSignature::UNVERIFIED;
- if ($user->isLoggedIn() && $addr_obj) {
+ if ($viewer->isLoggedIn() && $addr_obj) {
$email_obj = id(new PhabricatorUserEmail())
->loadOneWhere('address = %s', $addr_obj->getAddress());
- if ($email_obj && $email_obj->getUserPHID() == $user->getPHID()) {
+ if ($email_obj && $email_obj->getUserPHID() == $viewer->getPHID()) {
$verified = LegalpadDocumentSignature::VERIFIED;
}
}
@@ -165,7 +165,7 @@
$document_body = $document->getDocumentBody();
$engine = id(new PhabricatorMarkupEngine())
- ->setViewer($user);
+ ->setViewer($viewer);
$engine->addObject(
$document_body,
LegalpadDocumentBody::MARKUP_FIELD_TEXT);
@@ -173,8 +173,25 @@
$title = $document_body->getTitle();
+ $manage_uri = $this->getApplicationURI('view/'.$document->getID().'/');
+
+ $can_edit = PhabricatorPolicyFilter::hasCapability(
+ $viewer,
+ $document,
+ PhabricatorPolicyCapability::CAN_EDIT);
+
$header = id(new PHUIHeaderView())
- ->setHeader($title);
+ ->setHeader($title)
+ ->addActionLink(
+ id(new PHUIButtonView())
+ ->setTag('a')
+ ->setIcon(
+ id(new PHUIIconView())
+ ->setIconFont('fa-pencil'))
+ ->setText(pht('Manage Document'))
+ ->setHref($manage_uri)
+ ->setDisabled(!$can_edit)
+ ->setWorkflow(!$can_edit));
$content = array(
$this->buildDocument(
@@ -190,8 +207,14 @@
$e_address_1,
$error_view));
+ $crumbs = $this->buildApplicationCrumbs();
+ $crumbs->addTextCrumb($document->getMonogram());
+
return $this->buildApplicationPage(
- $content,
+ array(
+ $crumbs,
+ $content,
+ ),
array(
'title' => $title,
'pageObjects' => array($document->getPHID()),
@@ -220,7 +243,7 @@
$e_address_1 = true,
$error_view = null) {
- $user = $this->getRequest()->getUser();
+ $viewer = $this->getRequest()->getUser();
if ($has_signed) {
$instructions = pht('Thank you for signing and agreeing.');
} else {
@@ -229,7 +252,7 @@
$data = $signature->getSignatureData();
$form = id(new AphrontFormView())
- ->setUser($user)
+ ->setUser($viewer)
->appendChild(
id(new AphrontFormTextControl())
->setLabel(pht('Name'))
@@ -282,6 +305,7 @@
if ($error_view) {
$view->setErrorView($error_view);
}
+
return $view;
}
diff --git a/src/applications/legalpad/query/LegalpadDocumentSearchEngine.php b/src/applications/legalpad/query/LegalpadDocumentSearchEngine.php
--- a/src/applications/legalpad/query/LegalpadDocumentSearchEngine.php
+++ b/src/applications/legalpad/query/LegalpadDocumentSearchEngine.php
@@ -132,9 +132,9 @@
$title = $document->getTitle();
$item = id(new PHUIObjectItemView())
- ->setObjectName('L'.$document->getID())
+ ->setObjectName($document->getMonogram())
->setHeader($title)
- ->setHref($this->getApplicationURI('view/'.$document->getID()))
+ ->setHref('/'.$document->getMonogram())
->setObject($document)
->addIcon('none', pht('Last updated: %s', $last_updated))
->addByline(pht('Updated by: %s', $updater))

File Metadata

Mime Type
text/plain
Expires
Sat, Mar 15, 10:52 PM (3 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7475565
Default Alt Text
D9733.id23367.diff (12 KB)

Event Timeline