Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15463579
D11788.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
12 KB
Referenced Files
None
Subscribers
None
D11788.diff
View Options
diff --git a/src/applications/legalpad/controller/LegalpadDocumentEditController.php b/src/applications/legalpad/controller/LegalpadDocumentEditController.php
--- a/src/applications/legalpad/controller/LegalpadDocumentEditController.php
+++ b/src/applications/legalpad/controller/LegalpadDocumentEditController.php
@@ -97,8 +97,8 @@
if (!$user->getIsAdmin()) {
$errors[] = pht('Only admins may require signature.');
}
- $corp = LegalpadDocument::SIGNATURE_TYPE_CORPORATION;
- if ($v_signature_type == $corp) {
+ $individual = LegalpadDocument::SIGNATURE_TYPE_INDIVIDUAL;
+ if ($v_signature_type != $individual) {
$errors[] = pht(
'Only documents with signature type "individual" may require '.
'signing to use Phabricator.');
@@ -147,6 +147,7 @@
->setValue($v_signature_type)
->setOptions(LegalpadDocument::getSignatureTypeMap()));
$show_require = true;
+ $caption = pht('Applies only to documents individuals sign.');
} else {
$form->appendChild(
id(new AphrontFormMarkupControl())
@@ -154,6 +155,7 @@
->setValue($document->getSignatureTypeName()));
$individual = LegalpadDocument::SIGNATURE_TYPE_INDIVIDUAL;
$show_require = $document->getSignatureType() == $individual;
+ $caption = null;
}
if ($show_require) {
@@ -166,9 +168,9 @@
'requireSignature',
'requireSignature',
pht(
- 'Should signing this document be required to use Phabricator? '.
- 'Applies to invidivuals only.'),
- $v_require_signature));
+ 'Should signing this document be required to use Phabricator?'),
+ $v_require_signature)
+ ->setCaption($caption));
}
$form
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
@@ -26,109 +26,120 @@
$type_individual = LegalpadDocument::SIGNATURE_TYPE_INDIVIDUAL;
$is_individual = ($document->getSignatureType() == $type_individual);
- if ($is_individual) {
- if ($signer_phid) {
- // TODO: This is odd and should probably be adjusted after grey/external
- // accounts work better, but use the omnipotent viewer to check for a
- // signature so we can pick up anonymous/grey signatures.
-
- $signature = id(new LegalpadDocumentSignatureQuery())
- ->setViewer(PhabricatorUser::getOmnipotentUser())
- ->withDocumentPHIDs(array($document->getPHID()))
- ->withSignerPHIDs(array($signer_phid))
- ->executeOne();
-
- if ($signature && !$viewer->isLoggedIn()) {
+ switch ($document->getSignatureType()) {
+ case LegalpadDocument::SIGNATURE_TYPE_NONE:
+ // nothing to sign means this should be true
+ $has_signed = true;
+ // this is a status UI element
+ $signed_status = null;
+ break;
+ case LegalpadDocument::SIGNATURE_TYPE_INDIVIDUAL:
+ if ($signer_phid) {
+ // TODO: This is odd and should probably be adjusted after
+ // grey/external accounts work better, but use the omnipotent
+ // viewer to check for a signature so we can pick up
+ // anonymous/grey signatures.
+
+ $signature = id(new LegalpadDocumentSignatureQuery())
+ ->setViewer(PhabricatorUser::getOmnipotentUser())
+ ->withDocumentPHIDs(array($document->getPHID()))
+ ->withSignerPHIDs(array($signer_phid))
+ ->executeOne();
+
+ if ($signature && !$viewer->isLoggedIn()) {
return $this->newDialog()
->setTitle(pht('Already Signed'))
->appendParagraph(pht('You have already signed this document!'))
->addCancelButton('/'.$document->getMonogram(), pht('Okay'));
+ }
}
- }
- $signed_status = null;
- if (!$signature) {
- $has_signed = false;
- $signature = id(new LegalpadDocumentSignature())
- ->setSignerPHID($signer_phid)
- ->setDocumentPHID($document->getPHID())
- ->setDocumentVersion($document->getVersions());
+ $signed_status = null;
+ if (!$signature) {
+ $has_signed = false;
+ $signature = id(new LegalpadDocumentSignature())
+ ->setSignerPHID($signer_phid)
+ ->setDocumentPHID($document->getPHID())
+ ->setDocumentVersion($document->getVersions());
+
+ // If the user is logged in, show a notice that they haven't signed.
+ // If they aren't logged in, we can't be as sure, so don't show
+ // anything.
+ if ($viewer->isLoggedIn()) {
+ $signed_status = id(new PHUIErrorView())
+ ->setSeverity(PHUIErrorView::SEVERITY_WARNING)
+ ->setErrors(
+ array(
+ pht('You have not signed this document yet.'),
+ ));
+ }
+ } else {
+ $has_signed = true;
+ $signature_data = $signature->getSignatureData();
+
+ // In this case, we know they've signed.
+ $signed_at = $signature->getDateCreated();
+
+ if ($signature->getIsExemption()) {
+ $exemption_phid = $signature->getExemptionPHID();
+ $handles = $this->loadViewerHandles(array($exemption_phid));
+ $exemption_handle = $handles[$exemption_phid];
+
+ $signed_text = pht(
+ 'You do not need to sign this document. '.
+ '%s added a signature exemption for you on %s.',
+ $exemption_handle->renderLink(),
+ phabricator_datetime($signed_at, $viewer));
+ } else {
+ $signed_text = pht(
+ 'You signed this document on %s.',
+ phabricator_datetime($signed_at, $viewer));
+ }
- // If the user is logged in, show a notice that they haven't signed.
- // If they aren't logged in, we can't be as sure, so don't show
- // anything.
- if ($viewer->isLoggedIn()) {
$signed_status = id(new PHUIErrorView())
- ->setSeverity(PHUIErrorView::SEVERITY_WARNING)
- ->setErrors(
- array(
- pht('You have not signed this document yet.'),
- ));
+ ->setSeverity(PHUIErrorView::SEVERITY_NOTICE)
+ ->setErrors(array($signed_text));
}
- } else {
- $has_signed = true;
- $signature_data = $signature->getSignatureData();
-
- // In this case, we know they've signed.
- $signed_at = $signature->getDateCreated();
-
- if ($signature->getIsExemption()) {
- $exemption_phid = $signature->getExemptionPHID();
- $handles = $this->loadViewerHandles(array($exemption_phid));
- $exemption_handle = $handles[$exemption_phid];
- $signed_text = pht(
- 'You do not need to sign this document. '.
- '%s added a signature exemption for you on %s.',
- $exemption_handle->renderLink(),
- phabricator_datetime($signed_at, $viewer));
- } else {
- $signed_text = pht(
- 'You signed this document on %s.',
- phabricator_datetime($signed_at, $viewer));
- }
-
- $signed_status = id(new PHUIErrorView())
- ->setSeverity(PHUIErrorView::SEVERITY_NOTICE)
- ->setErrors(array($signed_text));
- }
+ $field_errors = array(
+ 'name' => true,
+ 'email' => true,
+ 'agree' => true,
+ );
+ $signature->setSignatureData($signature_data);
+ break;
- $field_errors = array(
- 'name' => true,
- 'email' => true,
- 'agree' => true,
- );
- } else {
- $signature = id(new LegalpadDocumentSignature())
- ->setDocumentPHID($document->getPHID())
- ->setDocumentVersion($document->getVersions());
+ case LegalpadDocument::SIGNATURE_TYPE_CORPORATION:
+ $signature = id(new LegalpadDocumentSignature())
+ ->setDocumentPHID($document->getPHID())
+ ->setDocumentVersion($document->getVersions());
- if ($viewer->isLoggedIn()) {
- $has_signed = false;
+ if ($viewer->isLoggedIn()) {
+ $has_signed = false;
- $signed_status = null;
- } else {
- // This just hides the form.
- $has_signed = true;
+ $signed_status = null;
+ } else {
+ // This just hides the form.
+ $has_signed = true;
- $login_text = pht(
- 'This document requires a corporate signatory. You must log in to '.
- 'accept this document on behalf of a company you represent.');
- $signed_status = id(new PHUIErrorView())
- ->setSeverity(PHUIErrorView::SEVERITY_WARNING)
- ->setErrors(array($login_text));
- }
+ $login_text = pht(
+ 'This document requires a corporate signatory. You must log in to '.
+ 'accept this document on behalf of a company you represent.');
+ $signed_status = id(new PHUIErrorView())
+ ->setSeverity(PHUIErrorView::SEVERITY_WARNING)
+ ->setErrors(array($login_text));
+ }
- $field_errors = array(
- 'name' => true,
- 'address' => true,
- 'contact.name' => true,
- 'email' => true,
- );
+ $field_errors = array(
+ 'name' => true,
+ 'address' => true,
+ 'contact.name' => true,
+ 'email' => true,
+ );
+ $signature->setSignatureData($signature_data);
+ break;
}
- $signature->setSignatureData($signature_data);
-
$errors = array();
if ($request->isFormOrHisecPost() && !$has_signed) {
@@ -256,9 +267,17 @@
$signature,
$field_errors);
- $subheader = id(new PHUIHeaderView())
- ->setHeader(pht('Agree and Sign Document'))
- ->setBleedHeader(true);
+ switch ($document->getSignatureType()) {
+ case LegalpadDocument::SIGNATURE_TYPE_NONE:
+ $subheader = null;
+ break;
+ case LegalpadDocument::SIGNATURE_TYPE_INDIVIDUAL:
+ case LegalpadDocument::SIGNATURE_TYPE_CORPORATION:
+ $subheader = id(new PHUIHeaderView())
+ ->setHeader(pht('Agree and Sign Document'))
+ ->setBleedHeader(true);
+ break;
+ }
$content->appendChild(
array(
@@ -292,6 +311,8 @@
$signature_data = array();
switch ($document->getSignatureType()) {
+ case LegalpadDocument::SIGNATURE_TYPE_NONE:
+ break;
case LegalpadDocument::SIGNATURE_TYPE_INDIVIDUAL:
if ($viewer->isLoggedIn()) {
$signer_phid = $viewer->getPHID();
@@ -348,6 +369,9 @@
$signature_type = $document->getSignatureType();
switch ($signature_type) {
+ case LegalpadDocument::SIGNATURE_TYPE_NONE:
+ // bail out of here quick
+ return;
case LegalpadDocument::SIGNATURE_TYPE_INDIVIDUAL:
$this->buildIndividualSignatureForm(
$form,
diff --git a/src/applications/legalpad/storage/LegalpadDocument.php b/src/applications/legalpad/storage/LegalpadDocument.php
--- a/src/applications/legalpad/storage/LegalpadDocument.php
+++ b/src/applications/legalpad/storage/LegalpadDocument.php
@@ -20,7 +20,8 @@
protected $preamble;
protected $requireSignature;
- const SIGNATURE_TYPE_INDIVIDUAL = 'user';
+ const SIGNATURE_TYPE_NONE = 'none';
+ const SIGNATURE_TYPE_INDIVIDUAL = 'user';
const SIGNATURE_TYPE_CORPORATION = 'corp';
private $documentBody = self::ATTACHABLE;
@@ -134,6 +135,7 @@
return array(
self::SIGNATURE_TYPE_INDIVIDUAL => pht('Individuals'),
self::SIGNATURE_TYPE_CORPORATION => pht('Corporations'),
+ self::SIGNATURE_TYPE_NONE => pht('No One'),
);
}
@@ -145,6 +147,7 @@
public function getSignatureTypeIcon() {
$type = $this->getSignatureType();
$map = array(
+ self::SIGNATURE_TYPE_NONE => '',
self::SIGNATURE_TYPE_INDIVIDUAL => 'fa-user grey',
self::SIGNATURE_TYPE_CORPORATION => 'fa-building-o grey',
);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Apr 3, 1:03 AM (3 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7701561
Default Alt Text
D11788.diff (12 KB)
Attached To
Mode
D11788: Legalpad - add "no one" signature type
Attached
Detach File
Event Timeline
Log In to Comment