1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-09-20 17:28:51 +02:00

Improve the usability of Phortune

Summary:
Ref T6881.

  - Fix dead links.
  - Let implementations provide more information.
  - Provide more information to implementations.

Test Plan: Links work, invoices show billing periods, fewer "Subscription 6" crumbs, all is well in the world.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T6881

Differential Revision: https://secure.phabricator.com/D11601
This commit is contained in:
epriestley 2015-02-01 12:32:48 -08:00
parent 77db15c47b
commit f6015dbb56
11 changed files with 91 additions and 5 deletions

View file

@ -26,10 +26,10 @@ final class PhortuneSubscriptionViewController extends PhortuneController {
$account_id = $account->getID(); $account_id = $account->getID();
$subscription_id = $subscription->getID(); $subscription_id = $subscription->getID();
$title = pht('Subscription: %s', $subscription->getSubscriptionName()); $title = $subscription->getSubscriptionFullName();
$header = id(new PHUIHeaderView()) $header = id(new PHUIHeaderView())
->setHeader($subscription->getSubscriptionName()); ->setHeader($title);
$actions = id(new PhabricatorActionListView()) $actions = id(new PhabricatorActionListView())
->setUser($viewer) ->setUser($viewer)
@ -53,7 +53,7 @@ final class PhortuneSubscriptionViewController extends PhortuneController {
} else { } else {
$this->addAccountCrumb($crumbs, $account); $this->addAccountCrumb($crumbs, $account);
} }
$crumbs->addTextCrumb(pht('Subscription %d', $subscription->getID())); $crumbs->addTextCrumb($subscription->getSubscriptionCrumbName());
$properties = id(new PHUIPropertyListView()) $properties = id(new PHUIPropertyListView())
->setUser($viewer) ->setUser($viewer)

View file

@ -31,7 +31,7 @@ final class PhortunePurchasePHIDType extends PhabricatorPHIDType {
$id = $purchase->getID(); $id = $purchase->getID();
$handle->setName($purchase->getFullDisplayName()); $handle->setName($purchase->getFullDisplayName());
$handle->setURI("/phortune/purchase/{$id}/"); $handle->setURI($purchase->getURI());
} }
} }

View file

@ -35,4 +35,10 @@ abstract class PhortuneProductImplementation {
return; return;
} }
public function getPurchaseURI(
PhortuneProduct $product,
PhortunePurchase $purchase) {
return null;
}
} }

View file

@ -62,6 +62,22 @@ final class PhortuneSubscriptionProduct
return; return;
} }
public function getPurchaseName(
PhortuneProduct $product,
PhortunePurchase $purchase) {
return $this->getSubscription()->getPurchaseName(
$product,
$purchase);
}
public function getPurchaseURI(
PhortuneProduct $product,
PhortunePurchase $purchase) {
return $this->getSubscription()->getPurchaseURI(
$product,
$purchase);
}
public function loadImplementationsForRefs( public function loadImplementationsForRefs(
PhabricatorUser $viewer, PhabricatorUser $viewer,
array $refs) { array $refs) {

View file

@ -87,6 +87,11 @@ final class PhortuneProduct extends PhortuneDAO
$amount); $amount);
} }
public function getPurchaseURI(PhortunePurchase $purchase) {
return $this->getImplementation()->getPurchaseURI(
$this,
$purchase);
}
/* -( PhabricatorPolicyInterface )----------------------------------------- */ /* -( PhabricatorPolicyInterface )----------------------------------------- */

View file

@ -87,6 +87,10 @@ final class PhortunePurchase extends PhortuneDAO
return $this->getProduct()->getPurchaseName($this); return $this->getProduct()->getPurchaseName($this);
} }
public function getURI() {
return $this->getProduct()->getPurchaseURI($this);
}
public function getTotalPriceAsCurrency() { public function getTotalPriceAsCurrency() {
return $this->getBasePriceAsCurrency(); return $this->getBasePriceAsCurrency();
} }

View file

@ -168,6 +168,14 @@ final class PhortuneSubscription extends PhortuneDAO
return $this->getImplementation()->getName($this); return $this->getImplementation()->getName($this);
} }
public function getSubscriptionFullName() {
return $this->getImplementation()->getFullName($this);
}
public function getSubscriptionCrumbName() {
return $this->getImplementation()->getCrumbName($this);
}
public function getCartName(PhortuneCart $cart) { public function getCartName(PhortuneCart $cart) {
return $this->getImplementation()->getCartName($this, $cart); return $this->getImplementation()->getCartName($this, $cart);
} }
@ -192,6 +200,24 @@ final class PhortuneSubscription extends PhortuneDAO
$end_epoch); $end_epoch);
} }
public function getPurchaseName(
PhortuneProduct $product,
PhortunePurchase $purchase) {
return $this->getImplementation()->getPurchaseName(
$this,
$product,
$purchase);
}
public function getPurchaseURI(
PhortuneProduct $product,
PhortunePurchase $purchase) {
return $this->getImplementation()->getPurchaseURI(
$this,
$product,
$purchase);
}
/* -( PhabricatorPolicyInterface )----------------------------------------- */ /* -( PhabricatorPolicyInterface )----------------------------------------- */

View file

@ -8,6 +8,15 @@ abstract class PhortuneSubscriptionImplementation {
abstract public function getRef(); abstract public function getRef();
abstract public function getName(PhortuneSubscription $subscription); abstract public function getName(PhortuneSubscription $subscription);
public function getFullName(PhortuneSubscription $subscription) {
return $this->getName($subscription);
}
public function getCrumbName(PhortuneSubscription $subscription) {
return $this->getName($subscription);
}
abstract public function getCostForBillingPeriodAsCurrency( abstract public function getCostForBillingPeriodAsCurrency(
PhortuneSubscription $subscription, PhortuneSubscription $subscription,
$start_epoch, $start_epoch,
@ -25,4 +34,17 @@ abstract class PhortuneSubscriptionImplementation {
return pht('Subscription'); return pht('Subscription');
} }
public function getPurchaseName(
PhortuneSubscription $subscription,
PhortuneProduct $product,
PhortunePurchase $purchase) {
return $product->getProductName();
}
public function getPurchaseURI(
PhortuneSubscription $subscription,
PhortuneProduct $product,
PhortunePurchase $purchase) {
return null;
}
} }

View file

@ -55,7 +55,7 @@ final class PhortuneSubscriptionTableView extends AphrontView {
array( array(
'href' => $uri, 'href' => $uri,
), ),
$subscription->getSubscriptionName()), $subscription->getSubscriptionFullName()),
phabricator_datetime($subscription->getDateCreated(), $viewer), phabricator_datetime($subscription->getDateCreated(), $viewer),
); );
} }

View file

@ -49,6 +49,8 @@ final class PhortuneSubscriptionWorker extends PhabricatorWorker {
$purchase $purchase
->setBasePriceAsCurrency($currency) ->setBasePriceAsCurrency($currency)
->setMetadataValue('subscriptionPHID', $subscription->getPHID()) ->setMetadataValue('subscriptionPHID', $subscription->getPHID())
->setMetadataValue('epoch.start', $last_epoch)
->setMetadataValue('epoch.end', $next_epoch)
->save(); ->save();
$cart->setSubscriptionPHID($subscription->getPHID()); $cart->setSubscriptionPHID($subscription->getPHID());

View file

@ -901,6 +901,11 @@ abstract class PhabricatorBaseEnglishTranslation
'Related link:', 'Related link:',
'Related links:', 'Related links:',
), ),
'You have %d unpaid invoice(s).' => array(
'You have an unpaid invoice.',
'You have unpaid invoices.',
),
); );
} }